:root{
  --cpu-blue:#1a237e;
  --cpu-blue-light:#3949ab;
  --cpu-gold:#f5b301;
  --cpu-gold-dark:#c98f00;
  --cpu-red:#c62828;
  --bg:#f4f6fb;
  --card:#ffffff;
  --text:#1f2333;
  --muted:#6b7280;
  --radius:14px;
  --shadow:0 6px 20px rgba(26,35,126,0.08);
}
*{box-sizing:border-box;}
body{
  margin:0;
  font-family:'Sarabun','Prompt',-apple-system,'Segoe UI',sans-serif;
  background:var(--bg);
  color:var(--text);
}
a{text-decoration:none;color:inherit;}

/* ---------- Top bar ---------- */
.topbar{
  background:linear-gradient(120deg,var(--cpu-blue) 0%,var(--cpu-blue-light) 100%);
  color:#fff;
  padding:14px 24px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  box-shadow:0 2px 12px rgba(0,0,0,0.15);
  position:sticky;
  top:0;
  z-index:50;
}
.topbar .brand{display:flex;align-items:center;gap:12px;}
.topbar .brand img{height:44px;width:44px;border-radius:50%;background:#fff;padding:2px;}
.topbar .brand .titles{line-height:1.2;}
.topbar .brand .titles .th{font-weight:700;font-size:17px;}
.topbar .brand .titles .en{font-size:12px;opacity:0.85;letter-spacing:1px;}
.topbar .user-info{display:flex;align-items:center;gap:14px;font-size:14px;}
.topbar .badge-gold{
  background:var(--cpu-gold);
  color:#3a2a00;
  padding:4px 12px;
  border-radius:20px;
  font-weight:600;
  font-size:12px;
}
.topbar .btn-logout{
  background:rgba(255,255,255,0.15);
  padding:8px 16px;
  border-radius:8px;
  transition:.2s;
  font-size:14px;
}
.topbar .btn-logout:hover{background:rgba(255,255,255,0.28);}

/* ---------- Layout ---------- */
.container{max-width:1080px;margin:0 auto;padding:28px 20px 60px;}
.page-title{font-size:22px;font-weight:700;color:var(--cpu-blue);margin-bottom:4px;}
.page-sub{color:var(--muted);margin-bottom:24px;font-size:14px;}

.card{
  background:var(--card);
  border-radius:var(--radius);
  box-shadow:var(--shadow);
  padding:24px;
  margin-bottom:22px;
  border-top:4px solid var(--cpu-gold);
}

/* ---------- Hours summary ---------- */
.hours-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:8px;}
.hours-box{
  background:linear-gradient(145deg,#fff,#f7f8fc);
  border:1px solid #e7e9f3;
  border-radius:12px;
  padding:18px;
  text-align:center;
}
.hours-box .num{font-size:30px;font-weight:800;color:var(--cpu-blue);}
.hours-box.remaining .num{color:var(--cpu-red);}
.hours-box.done .num{color:#2e7d32;}
.hours-box .label{font-size:13px;color:var(--muted);margin-top:4px;}
.progress-wrap{background:#eceef7;border-radius:20px;height:14px;overflow:hidden;margin-top:16px;}
.progress-bar{
  height:100%;
  background:linear-gradient(90deg,var(--cpu-gold-dark),var(--cpu-gold));
  border-radius:20px;
  transition:width .4s ease;
}

/* ---------- Forms ---------- */
label{display:block;font-size:14px;font-weight:600;margin-bottom:6px;color:var(--text);}
input[type=text],input[type=date],input[type=number],input[type=password],textarea,select{
  width:100%;
  padding:11px 14px;
  border:1.5px solid #dfe2ee;
  border-radius:10px;
  font-size:14px;
  font-family:inherit;
  background:#fbfbfe;
  transition:.2s;
}
input:focus,textarea:focus,select:focus{
  outline:none;border-color:var(--cpu-blue-light);
  box-shadow:0 0 0 3px rgba(57,73,171,0.12);
  background:#fff;
}
textarea{resize:vertical;min-height:110px;}
.form-group{margin-bottom:18px;}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px;}

.btn{
  display:inline-flex;align-items:center;gap:8px;justify-content:center;
  padding:11px 22px;
  border-radius:10px;
  border:none;
  font-size:14px;
  font-weight:600;
  cursor:pointer;
  transition:.2s;
}
.btn-primary{background:var(--cpu-blue);color:#fff;}
.btn-primary:hover{background:var(--cpu-blue-light);}
.btn-gold{background:var(--cpu-gold);color:#3a2a00;}
.btn-gold:hover{background:var(--cpu-gold-dark);color:#fff;}
.btn-outline{background:#fff;color:var(--cpu-blue);border:1.5px solid var(--cpu-blue);}
.btn-outline:hover{background:var(--cpu-blue);color:#fff;}
.btn-danger{background:#fdecea;color:var(--cpu-red);}
.btn-danger:hover{background:var(--cpu-red);color:#fff;}
.btn-sm{padding:6px 14px;font-size:13px;border-radius:8px;}

/* ---------- File drop ---------- */
.file-drop{
  border:2px dashed #c9cee6;
  border-radius:12px;
  padding:22px;
  text-align:center;
  color:var(--muted);
  background:#fafbff;
  cursor:pointer;
  font-size:14px;
}
.file-drop:hover{border-color:var(--cpu-blue-light);}
#preview-list{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px;}
#preview-list img{width:90px;height:90px;object-fit:cover;border-radius:8px;border:1px solid #e2e5f0;}

/* ---------- Table / list ---------- */
table{width:100%;border-collapse:collapse;font-size:14px;}
th,td{padding:12px 10px;text-align:left;border-bottom:1px solid #eef0f7;}
th{color:var(--muted);font-weight:600;font-size:13px;text-transform:uppercase;letter-spacing:.4px;}
tr:hover td{background:#fafbff;}

.activity-card{
  border:1px solid #eef0f7;
  border-radius:12px;
  padding:16px 18px;
  margin-bottom:14px;
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:14px;
  flex-wrap:wrap;
  transition:.2s;
}
.activity-card:hover{box-shadow:var(--shadow);border-color:#dfe2f5;}
.activity-card .title{font-weight:700;color:var(--cpu-blue);font-size:15px;}
.activity-card .meta{color:var(--muted);font-size:13px;margin-top:3px;}
.activity-card .hours-tag{
  background:#eef1fb;color:var(--cpu-blue);
  padding:5px 12px;border-radius:20px;font-weight:700;font-size:13px;white-space:nowrap;
}
.thumbs{display:flex;gap:6px;margin-top:8px;}
.thumbs img{width:46px;height:46px;object-fit:cover;border-radius:6px;border:1px solid #eee;}

/* ---------- Alerts ---------- */
.alert{padding:13px 16px;border-radius:10px;margin-bottom:18px;font-size:14px;}
.alert-success{background:#e8f5e9;color:#2e7d32;border:1px solid #c8e6c9;}
.alert-error{background:#fdecea;color:var(--cpu-red);border:1px solid #f5c6cb;}
.alert-warn{background:#fff8e1;color:#8a6100;border:1px solid #ffe082;}

/* ---------- Login ---------- */
.login-wrap{
  min-height:100vh;
  display:flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,var(--cpu-blue) 0%,#0d1440 100%);
  padding:20px;
}
.login-card{
  background:#fff;border-radius:18px;padding:38px 34px;
  width:100%;max-width:400px;box-shadow:0 20px 60px rgba(0,0,0,0.35);
  text-align:center;
}
.login-card img{height:90px;margin-bottom:10px;}
.login-card h1{font-size:19px;color:var(--cpu-blue);margin:6px 0 2px;}
.login-card .en-name{font-size:12px;color:var(--muted);letter-spacing:1px;margin-bottom:22px;}
.login-card .form-group{text-align:left;}
.tab-switch{display:flex;background:#f0f1f8;border-radius:10px;padding:4px;margin-bottom:22px;}
.tab-switch a{flex:1;text-align:center;padding:9px 0;border-radius:8px;font-size:14px;font-weight:600;color:var(--muted);}
.tab-switch a.active{background:var(--cpu-blue);color:#fff;}

/* ---------- Badges / years ---------- */
.year-pill{
  display:inline-block;padding:6px 14px;border-radius:20px;
  background:#eef1fb;color:var(--cpu-blue);font-weight:600;font-size:13px;margin:4px 6px 4px 0;
}
.year-pill.inactive{background:#f4f4f4;color:#9aa;text-decoration:line-through;}

.empty-state{text-align:center;padding:40px 20px;color:var(--muted);}
.empty-state .emoji{font-size:40px;margin-bottom:10px;}

@media(max-width:640px){
  .hours-grid{grid-template-columns:1fr;}
  .form-row{grid-template-columns:1fr;}
  .topbar .brand .titles .en{display:none;}
}
