/* =========================================================
   Dashboard Executive School Management System — Style
   Premium SaaS, Navy/Blue + status accents, mobile-first
   ========================================================= */

:root{
  --navy:#0f2a4a;
  --navy-2:#132e52;
  --blue:#1e56a0;
  --blue-light:#eaf2fb;
  --emerald:#10b981;
  --emerald-light:#ecfdf5;
  --orange:#f59e0b;
  --orange-light:#fffbeb;
  --red:#ef4444;
  --red-light:#fef2f2;
  --bg:#f5f7fa;
  --card:#ffffff;
  --border:#e8ecf1;
  --text:#1f2937;
  --muted:#6b7280;
  --radius-lg:16px;
  --radius-md:12px;
  --shadow:0 4px 20px rgba(15,42,74,.05);
}

*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{
  font-family:'Inter',-apple-system,sans-serif;
  background:var(--bg);
  color:var(--text);
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3{font-family:'Poppins',sans-serif;}
button,input,select{font-family:inherit;}
a{text-decoration:none;color:inherit;}

/* ---------- Login Page ---------- */
.login-body{display:flex;align-items:center;min-height:100vh;background:linear-gradient(160deg,var(--navy) 0%,var(--blue) 100%);}
.login-wrap{width:100%;max-width:400px;margin:0 auto;padding:24px;}
.login-brand{text-align:center;color:#fff;margin-bottom:24px;}
.logo-dot{width:52px;height:52px;border-radius:14px;background:rgba(255,255,255,.15);display:flex;align-items:center;justify-content:center;font-family:'Poppins',sans-serif;font-weight:700;font-size:18px;margin:0 auto 12px;color:#fff;border:1px solid rgba(255,255,255,.25);}
.login-brand h1{font-size:18px;margin:0 0 4px;}
.login-brand p{font-size:13px;opacity:.8;margin:0;}
.login-card{background:#fff;border-radius:var(--radius-lg);padding:28px 24px;box-shadow:0 20px 50px rgba(0,0,0,.25);}
.login-card h2{font-size:18px;margin:0 0 18px;}
.login-card label{display:block;font-size:13px;font-weight:600;margin:14px 0 6px;color:#374151;}
.login-card input{width:100%;padding:13px 14px;border:1px solid var(--border);border-radius:var(--radius-md);font-size:14px;}
.login-card input:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px rgba(30,86,160,.12);}
.btn-primary{width:100%;background:var(--navy);color:#fff;border:none;padding:14px;border-radius:var(--radius-md);font-weight:600;font-size:15px;margin-top:20px;cursor:pointer;transition:.15s;}
.btn-primary:hover{background:var(--navy-2);}
.alert-box{background:var(--red-light);color:#b91c1c;padding:10px 14px;border-radius:10px;font-size:13px;margin-bottom:8px;}
.login-footer{text-align:center;color:rgba(255,255,255,.7);font-size:12px;margin-top:20px;}

/* ---------- App Shell ---------- */
.app-shell{display:flex;min-height:100vh;}

.sidebar{
  width:260px;flex-shrink:0;background:var(--navy);color:#fff;
  display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;
  overflow-y:auto;z-index:40;transition:transform .25s ease;
}
.sidebar-brand{display:flex;align-items:center;gap:10px;padding:20px 18px;border-bottom:1px solid rgba(255,255,255,.08);}
.sb-title{font-family:'Poppins',sans-serif;font-weight:600;font-size:14px;}
.sb-sub{font-size:11px;opacity:.6;}
.sidebar-nav{padding:12px 10px;flex:1;}
.nav-group-label{font-size:11px;text-transform:uppercase;letter-spacing:.06em;opacity:.5;padding:14px 10px 6px;}
.nav-link{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;font-size:13.5px;color:rgba(255,255,255,.85);margin-bottom:2px;}
.nav-link:hover{background:rgba(255,255,255,.08);}
.nav-link.active{background:var(--blue);color:#fff;}
.nav-link.sub{padding-left:16px;font-size:13px;opacity:.85;}
.nav-icon{font-size:15px;}
.nav-dot{width:5px;height:5px;border-radius:50%;background:rgba(255,255,255,.4);display:inline-block;}
.sidebar-footer{padding:14px 10px;border-top:1px solid rgba(255,255,255,.08);}
.nav-link.logout{color:#fca5a5;}
.sidebar-overlay{display:none;}

.main{flex:1;margin-left:260px;display:flex;flex-direction:column;min-height:100vh;}

/* ---------- Topbar ---------- */
.topbar{
  background:#fff;border-bottom:1px solid var(--border);
  display:flex;align-items:center;gap:16px;padding:12px 24px;
  position:sticky;top:0;z-index:20;flex-wrap:wrap;
}
.hamburger{display:none;background:none;border:none;font-size:20px;cursor:pointer;}
.topbar-school{margin-right:auto;}
.school-name{font-weight:700;font-size:14.5px;}
.school-meta{font-size:12px;color:var(--muted);}
.topbar-filters{display:flex;gap:6px;}
.chip{background:var(--blue-light);color:var(--blue);border:none;padding:7px 13px;border-radius:99px;font-size:12.5px;font-weight:600;cursor:pointer;}
.chip.active{background:var(--navy);color:#fff;}
.chip.small{padding:6px 11px;font-size:12px;}
.topbar-right{display:flex;align-items:center;gap:10px;}
.icon-btn{background:var(--bg);border:1px solid var(--border);width:36px;height:36px;border-radius:10px;cursor:pointer;position:relative;}
.dot-badge{position:absolute;top:6px;right:7px;width:7px;height:7px;background:var(--red);border-radius:50%;}
.profile-chip{display:flex;align-items:center;gap:8px;padding:4px 10px 4px 4px;border-radius:99px;background:var(--bg);border:1px solid var(--border);}
.avatar{width:30px;height:30px;border-radius:50%;background:var(--navy);color:#fff;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;}
.p-name{font-size:12.5px;font-weight:600;}
.p-role{font-size:11px;color:var(--muted);}

/* ---------- Content ---------- */
.content{padding:22px 24px 8px;max-width:1400px;width:100%;margin:0 auto;}
.page-head{display:flex;justify-content:space-between;align-items:flex-end;flex-wrap:wrap;gap:12px;margin-bottom:20px;}
.page-head h1{font-size:22px;margin:0 0 4px;}
.muted{color:var(--muted);font-size:13.5px;margin:0;}
.muted.small{font-size:12px;}
.page-head-right{display:flex;align-items:center;gap:14px;flex-wrap:wrap;}
.btn-dark{background:var(--navy);color:#fff;border:none;padding:11px 18px;border-radius:var(--radius-md);font-weight:600;font-size:13.5px;cursor:pointer;white-space:nowrap;}
.btn-dark:hover{background:var(--navy-2);}
.btn-outline{background:#fff;border:1px solid var(--border);color:var(--navy);padding:10px 16px;border-radius:var(--radius-md);font-weight:600;font-size:13px;cursor:pointer;margin-top:12px;}
.btn-outline.full{width:100%;}

/* ---------- Cards & Grid ---------- */
.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:20px;margin-bottom:20px;}
.card-head{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px;margin-bottom:14px;}
.section-title{font-size:15.5px;font-weight:600;margin:0 0 14px;}
.grid-2{display:grid;grid-template-columns:2fr 1fr;gap:20px;}
.grid-2 .card{margin-bottom:0;}

/* ---------- KPI ---------- */
.kpi-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:16px;margin-bottom:20px;}
.kpi-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:16px;cursor:pointer;transition:.15s;}
.kpi-card:hover{transform:translateY(-2px);box-shadow:0 10px 24px rgba(15,42,74,.1);}
.kpi-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;}
.kpi-icon{width:34px;height:34px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:16px;}
.kpi-icon.blue{background:var(--blue-light);}
.kpi-icon.navy{background:#e6edf5;}
.kpi-icon.emerald{background:var(--emerald-light);}
.kpi-icon.orange{background:var(--orange-light);}
.trend{font-size:11.5px;font-weight:700;padding:3px 8px;border-radius:99px;}
.trend.up{color:var(--emerald);background:var(--emerald-light);}
.trend.neutral{color:var(--blue);background:var(--blue-light);}
.kpi-value{font-size:24px;font-weight:700;font-family:'Poppins',sans-serif;color:var(--navy);}
.kpi-label{font-size:12.5px;font-weight:600;color:#374151;margin-top:2px;}
.kpi-foot{font-size:11px;color:var(--muted);margin-top:2px;}

/* ---------- Health Overview ---------- */
.health-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;}
.health-item{text-align:center;}
.ring{
  width:88px;height:88px;border-radius:50%;margin:0 auto 10px;
  background:conic-gradient(var(--blue) 0deg, var(--blue) calc(var(--pct,0) * 3.6deg), #eef1f5 0deg);
  display:flex;align-items:center;justify-content:center;position:relative;
}
.ring::before{content:'';position:absolute;width:66px;height:66px;background:#fff;border-radius:50%;}
.ring span{position:relative;font-weight:700;font-size:14px;color:var(--navy);}
.health-label{font-size:12.5px;color:var(--muted);margin-bottom:6px;}
.status-pill{display:inline-block;padding:4px 11px;border-radius:99px;font-size:11px;font-weight:700;}
.status-pill.excellent{background:var(--emerald-light);color:#059669;}
.status-pill.good{background:var(--blue-light);color:var(--blue);}
.status-pill.attention{background:var(--orange-light);color:#b45309;}
.status-pill.critical{background:var(--red-light);color:#b91c1c;}

/* ---------- Attendance / Stats ---------- */
.mini-table-title{font-size:12px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:8px;}
.stat-row{display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px dashed var(--border);font-size:13.5px;}
.stat-row:last-child{border-bottom:none;}
.text-emerald{color:var(--emerald);}
.text-red{color:var(--red);}
.text-orange{color:var(--orange);}

/* ---------- Insight / Alerts ---------- */
.insight-box{margin-top:14px;display:flex;flex-direction:column;gap:8px;}
.insight{font-size:13px;padding:10px 12px;border-radius:10px;background:var(--bg);}
.alert-item{display:flex;align-items:flex-start;gap:10px;padding:12px;border-radius:12px;margin-bottom:10px;}
.alert-item.critical{background:var(--red-light);}
.alert-item.attention{background:var(--orange-light);}
.alert-item.good{background:var(--emerald-light);}
.alert-item p{margin:2px 0 0;font-size:13px;color:#374151;}
.alert-item div{flex:1;}
.link-btn{background:none;border:none;color:var(--blue);font-weight:600;font-size:12.5px;cursor:pointer;}

/* ---------- Financial ---------- */
.finance-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;margin-bottom:16px;}
.fin-item{background:var(--bg);border-radius:12px;padding:14px;}
.fin-label{font-size:12px;color:var(--muted);margin-bottom:4px;}
.fin-value{font-size:15px;font-weight:700;font-family:'Poppins',sans-serif;}
.status-line{margin-top:14px;font-size:13.5px;}

/* ---------- Tables ---------- */
.table-scroll{overflow-x:auto;}
.data-table{width:100%;border-collapse:collapse;font-size:13.5px;min-width:520px;}
.data-table th{text-align:left;color:var(--muted);font-weight:600;font-size:12px;text-transform:uppercase;padding:10px;border-bottom:1px solid var(--border);}
.data-table td{padding:12px 10px;border-bottom:1px solid var(--border);}
.risk{padding:4px 10px;border-radius:99px;font-size:11px;font-weight:700;}
.risk.high{background:var(--red-light);color:#b91c1c;}
.risk.medium{background:var(--orange-light);color:#b45309;}
.risk.low{background:var(--emerald-light);color:#059669;}
.progress{background:#eef1f5;border-radius:99px;height:8px;width:100px;overflow:hidden;}
.progress div{background:var(--emerald);height:100%;}

.teacher-stats{display:flex;gap:28px;margin-bottom:16px;flex-wrap:wrap;}
.teacher-stats div{display:flex;flex-direction:column;}
.ts-num{font-size:20px;font-weight:700;font-family:'Poppins',sans-serif;color:var(--navy);}
.ts-label{font-size:12px;color:var(--muted);}

/* ---------- Timeline ---------- */
.timeline{display:flex;flex-direction:column;gap:14px;}
.tl-item{display:flex;gap:12px;align-items:flex-start;}
.tl-icon{font-size:16px;}
.tl-time{font-size:11.5px;color:var(--muted);}
.tl-text{font-size:13.5px;}

/* ---------- Achievement ---------- */
.achv-list{display:flex;flex-direction:column;gap:10px;margin-bottom:6px;}
.achv-item{background:var(--bg);padding:12px 14px;border-radius:12px;font-size:13.5px;}

/* ---------- Quick Actions ---------- */
.quick-actions{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;}
.quick-actions button{background:var(--bg);border:1px solid var(--border);padding:14px 10px;border-radius:12px;font-size:12.5px;font-weight:600;cursor:pointer;text-align:left;}
.quick-actions button:hover{background:var(--blue-light);border-color:var(--blue);}

/* ---------- AI Assistant ---------- */
.ai-card{background:linear-gradient(135deg,#0f2a4a 0%,#1e56a0 100%);color:#fff;}
.ai-card .section-title{color:#fff;}
.ai-card .muted{color:rgba(255,255,255,.75);}
.ai-input-row{display:flex;gap:10px;margin:14px 0;}
.ai-input-row input{flex:1;padding:13px 14px;border-radius:12px;border:none;font-size:13.5px;}
.ai-input-row .btn-dark{background:#fff;color:var(--navy);}
.ai-quick-prompts{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px;}
.ai-quick-prompts .chip{background:rgba(255,255,255,.15);color:#fff;}
.ai-answer{background:rgba(255,255,255,.1);border-radius:12px;padding:14px;font-size:13.5px;line-height:1.6;margin-bottom:14px;}
.ai-card .btn-outline{background:#fff;color:var(--navy);border:none;}

/* ---------- Empty state ---------- */
.empty-state{text-align:center;padding:60px 20px;}
.empty-icon{font-size:40px;margin-bottom:12px;}
.empty-state h2{font-size:17px;margin-bottom:8px;}
.empty-state .btn-dark{display:inline-block;margin-top:16px;}

/* ---------- Modal / Toast ---------- */
.modal-backdrop{display:none;position:fixed;inset:0;background:rgba(15,23,42,.5);z-index:100;align-items:center;justify-content:center;padding:20px;}
.modal-backdrop.show{display:flex;}
.modal-box{background:#fff;border-radius:var(--radius-lg);max-width:420px;width:100%;padding:20px;}
.modal-head{display:flex;justify-content:space-between;align-items:center;font-weight:700;margin-bottom:12px;}
.modal-head button{background:none;border:none;font-size:16px;cursor:pointer;}
.modal-body{font-size:13.5px;color:#374151;line-height:1.6;}
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(20px);background:var(--navy);color:#fff;padding:12px 20px;border-radius:12px;font-size:13.5px;opacity:0;pointer-events:none;transition:.25s;z-index:200;}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0);}

.app-footer{text-align:center;font-size:12px;color:var(--muted);padding:20px;}

/* ---------- Module summary cards (SPP, etc.) ---------- */
.finance-summary-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:20px;}
.fin-summary-card{margin-bottom:0;}

/* ---------- Attendance checklist (Presensi Harian) ---------- */
.date-picker-form input[type="date"]{padding:9px 12px;border:1px solid var(--border);border-radius:var(--radius-md);font-size:13px;}
.attendance-checklist{display:flex;flex-direction:column;gap:2px;max-height:480px;overflow-y:auto;border:1px solid var(--border);border-radius:var(--radius-md);}
.attendance-row{display:flex;justify-content:space-between;align-items:center;padding:12px 14px;border-bottom:1px solid var(--border);gap:12px;flex-wrap:wrap;}
.attendance-row:last-child{border-bottom:none;}
.ar-name{display:flex;flex-direction:column;font-size:13.5px;}
.ar-options{display:flex;gap:6px;flex-wrap:wrap;}
.radio-pill{display:flex;align-items:center;gap:5px;padding:6px 12px;border-radius:99px;font-size:12px;font-weight:600;cursor:pointer;background:var(--bg);border:1px solid var(--border);color:var(--muted);}
.radio-pill input{accent-color:var(--navy);}
.radio-pill.present:has(input:checked){background:var(--emerald-light);color:#059669;border-color:#a7f3d0;}
.radio-pill.absent:has(input:checked){background:var(--red-light);color:#b91c1c;border-color:#fecaca;}
.radio-pill.permission:has(input:checked){background:var(--orange-light);color:#b45309;border-color:#fde68a;}

/* ---------- Filter form (module lists) ---------- */
.student-filter-form{display:flex;gap:10px;flex-wrap:wrap;align-items:center;}
.student-filter-form input[type="text"],.student-filter-form input[type="date"]{flex:1;min-width:140px;padding:11px 14px;border:1px solid var(--border);border-radius:var(--radius-md);font-size:13.5px;}
.student-filter-form select{padding:11px 14px;border:1px solid var(--border);border-radius:var(--radius-md);font-size:13.5px;background:#fff;}
.student-filter-form input:focus,.student-filter-form select:focus{outline:none;border-color:var(--blue);}

/* ---------- Drawer (slide-in form panel) ---------- */
.drawer-backdrop{display:none;position:fixed;inset:0;background:rgba(15,23,42,.45);z-index:110;}
.drawer-backdrop.show{display:block;}
.drawer-box{
  position:fixed;top:0;right:0;bottom:0;width:100%;max-width:400px;background:#fff;
  padding:20px;overflow-y:auto;box-shadow:-10px 0 30px rgba(0,0,0,.15);
  transform:translateX(100%);transition:transform .25s ease;
}
.drawer-backdrop.show .drawer-box{transform:translateX(0);}
.drawer-box label{display:block;font-size:13px;font-weight:600;margin:14px 0 6px;color:#374151;}
.drawer-box input,.drawer-box select{width:100%;padding:12px 14px;border:1px solid var(--border);border-radius:var(--radius-md);font-size:14px;}
.drawer-box input:focus,.drawer-box select:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px rgba(30,86,160,.12);}

@media (max-width:640px){
  .student-filter-form{flex-direction:column;align-items:stretch;}
  .student-filter-form input,.student-filter-form select,.student-filter-form .btn-outline,.student-filter-form a.btn-outline{width:100%;}
}

/* =========================================================
   RESPONSIVE
   ========================================================= */
@media (max-width:1200px){
  .kpi-grid{grid-template-columns:repeat(3,1fr);}
  .health-grid{grid-template-columns:repeat(2,1fr);}
  .finance-grid{grid-template-columns:repeat(2,1fr);}
}

@media (max-width:1024px){
  .sidebar{transform:translateX(-100%);}
  .sidebar.open{transform:translateX(0);}
  .main{margin-left:0;}
  .hamburger{display:block;}
  .sidebar-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:30;}
  .sidebar-overlay.show{display:block;}
  .grid-2{grid-template-columns:1fr;}
}

@media (max-width:640px){
  .kpi-grid{grid-template-columns:repeat(2,1fr);}
  .quick-actions{grid-template-columns:repeat(2,1fr);}
  .content{padding:16px 14px 8px;}
  .topbar{padding:10px 14px;}
  .topbar-filters{order:3;width:100%;overflow-x:auto;}
  .page-head-right{width:100%;justify-content:space-between;}
  .btn-dark{width:100%;}
  .finance-grid{grid-template-columns:1fr 1fr;}
  .finance-summary-grid{grid-template-columns:1fr;}
  .teacher-stats{gap:18px;}
}
