/* ═══════════════════════════════════════════════
   styles.css — Record Wise Design System
   ITDA Eturunagaram · School Monitoring Platform
═══════════════════════════════════════════════ */

/* ── 1. Tokens ── */
:root {
  --bg:#f4f6f9; --surface:#ffffff; --surface2:#f8fafc;
  --border:#e2e8f0; --border2:#edf0f5;
  --sidebar:#0f1f3d; --sidebar-hover:rgba(255,255,255,0.06);
  --text-primary:#0f172a; --text-secondary:#475569; --text-muted:#94a3b8;
  --blue:#1d4ed8; --blue-light:#dbeafe; --blue-mid:#3b82f6;
  --green:#059669; --green-light:#d1fae5;
  --amber:#d97706; --amber-light:#fef3c7;
  --red:#dc2626;   --red-light:#fee2e2;
  --purple:#7c3aed;--purple-light:#ede9fe;
  --teal:#0d9488;  --teal-light:#ccfbf1;
  --shadow-sm:0 1px 3px rgba(0,0,0,.06),0 1px 2px rgba(0,0,0,.04);
  --shadow:0 4px 12px rgba(0,0,0,.07);
  --shadow-md:0 10px 30px rgba(0,0,0,.1);
  --radius:12px; --radius-sm:8px; --radius-lg:16px;
  --sidebar-w:252px; --topbar-h:58px;
}

/* ── 2. Reset ── */
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box;}
html,body{height:100%;}
body{font-family:'DM Sans',sans-serif;background:var(--bg);color:var(--text-primary);font-size:14px;line-height:1.5;}
::-webkit-scrollbar{width:5px;height:5px;}
::-webkit-scrollbar-thumb{background:var(--border);border-radius:99px;}
button,input,select,textarea{font-family:inherit;}
a{text-decoration:none;color:inherit;}

/* ── 3. Animations ── */
@keyframes fadeUp  {from{opacity:0;transform:translateY(8px)} to{opacity:1;transform:none}}
@keyframes fadeIn  {from{opacity:0} to{opacity:1}}
@keyframes slideIn {from{opacity:0;transform:translateY(4px)} to{opacity:1;transform:none}}
@keyframes toastIn {from{opacity:0;transform:translateX(20px)} to{opacity:1;transform:none}}
@keyframes spin    {to{transform:rotate(360deg)}}

/* ── 4. Login ── */
#login-screen{min-height:100vh;background:linear-gradient(150deg,#0c1a36 0%,#162d5e 55%,#0d2448 100%);display:flex;align-items:center;justify-content:center;flex-direction:column;gap:32px;padding:40px 20px;}
.login-brand{text-align:center;}
.login-logo{display:inline-flex;align-items:center;gap:12px;margin-bottom:10px;}
.login-logo-icon{width:46px;height:46px;background:var(--blue);border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:21px;}
.login-logo-text{font-family:'DM Serif Display',serif;font-size:27px;color:#fff;letter-spacing:-.4px;}
.login-tagline{color:rgba(255,255,255,.42);font-size:11.5px;letter-spacing:1.8px;text-transform:uppercase;}
.login-state{color:rgba(255,255,255,.28);font-size:12px;margin-top:6px;}
.role-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;max-width:860px;width:100%;}
.role-card{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.10);border-radius:var(--radius);padding:22px 16px 18px;cursor:pointer;text-align:center;transition:all .18s;backdrop-filter:blur(8px);}
.role-card:hover{background:rgba(255,255,255,.11);transform:translateY(-2px);border-color:rgba(255,255,255,.22);}
.role-card.selected{background:rgba(29,78,216,.35);border-color:rgba(59,130,246,.7);}
.role-icon{font-size:28px;margin-bottom:10px;display:block;}
.role-name{color:#fff;font-size:12.5px;font-weight:600;line-height:1.35;}
.role-desc{color:rgba(255,255,255,.38);font-size:11px;margin-top:4px;}
.login-form-panel{background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.12);border-radius:var(--radius-lg);padding:28px;max-width:400px;width:100%;backdrop-filter:blur(20px);display:none;}
.login-form-panel.show{display:block;animation:fadeUp .2s ease;}
.login-form-title{color:#fff;font-size:15.5px;font-weight:700;margin-bottom:3px;}
.login-role-label{color:rgba(255,255,255,.45);font-size:12px;margin-bottom:20px;}
.login-field{margin-bottom:14px;}
.login-field label{display:block;color:rgba(255,255,255,.6);font-size:12px;font-weight:500;margin-bottom:6px;}
.login-field input{width:100%;padding:10px 13px;background:rgba(255,255,255,.09);border:1px solid rgba(255,255,255,.14);border-radius:var(--radius-sm);color:#fff;font-size:13.5px;outline:none;transition:border-color .18s;}
.login-field input::placeholder{color:rgba(255,255,255,.28);}
.login-field input:focus{border-color:rgba(59,130,246,.8);}
.btn-login{width:100%;padding:11px;background:var(--blue);border:none;border-radius:var(--radius-sm);color:#fff;font-size:13.5px;font-weight:600;cursor:pointer;transition:all .18s;margin-top:6px;display:flex;align-items:center;justify-content:center;gap:8px;}
.btn-login:hover{background:#1e40af;transform:translateY(-1px);}
.btn-login:disabled{opacity:.7;cursor:not-allowed;transform:none;}
.login-hint{color:rgba(255,255,255,.28);font-size:11px;text-align:center;margin-top:10px;}
.login-error{color:#fca5a5;font-size:12px;margin-top:8px;text-align:center;display:none;}
.btn-spinner{width:14px;height:14px;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:spin .6s linear infinite;display:inline-block;}

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

/* ── 6. Sidebar ── */
.sidebar{width:var(--sidebar-w);min-height:100vh;background:var(--sidebar);position:fixed;left:0;top:0;bottom:0;z-index:100;display:flex;flex-direction:column;overflow-y:auto;transition:transform .28s cubic-bezier(.4,0,.2,1);}
.sidebar-brand{padding:18px 17px 16px;border-bottom:1px solid rgba(255,255,255,.07);display:flex;align-items:center;gap:10px;flex-shrink:0;}
.sidebar-brand-icon{width:33px;height:33px;background:var(--blue);border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:15px;flex-shrink:0;}
.sidebar-brand-name{font-family:'DM Serif Display',serif;color:#fff;font-size:17px;letter-spacing:-.2px;}
.sidebar-brand-sub{display:block;color:rgba(255,255,255,.3);font-size:9px;letter-spacing:1px;text-transform:uppercase;margin-top:1px;}
.sidebar-role-badge{margin:12px 14px;padding:8px 12px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.08);border-radius:var(--radius-sm);}
.sidebar-role-badge-role{color:rgba(255,255,255,.85);font-size:12px;font-weight:600;}
.sidebar-role-badge-info{color:rgba(255,255,255,.4);font-size:10.5px;margin-top:1px;line-height:1.4;}
.nav-section-label{padding:14px 17px 5px;font-size:9.5px;letter-spacing:1.3px;text-transform:uppercase;color:rgba(255,255,255,.22);font-weight:600;}
.nav-item{display:flex;align-items:center;gap:10px;padding:9px 17px;color:rgba(255,255,255,.52);cursor:pointer;transition:all .15s;font-size:13.5px;border-left:3px solid transparent;margin:1px 0;text-decoration:none;}
.nav-item:hover{background:var(--sidebar-hover);color:rgba(255,255,255,.88);}
.nav-item.active{background:rgba(29,78,216,.22);color:#fff;border-left-color:#3b82f6;font-weight:500;}
.nav-item.hidden{display:none!important;}
.nav-section-label.hidden{display:none!important;}
.nav-icon{font-size:15px;flex-shrink:0;width:19px;text-align:center;}
.nav-badge{margin-left:auto;background:var(--red);color:#fff;font-size:10px;padding:1px 6px;border-radius:99px;font-weight:700;}
.sidebar-footer{margin-top:auto;padding:14px 17px;border-top:1px solid rgba(255,255,255,.07);}
.sidebar-user{display:flex;align-items:center;gap:10px;}
.sidebar-avatar{width:30px;height:30px;border-radius:50%;background:var(--blue);display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:11px;flex-shrink:0;}
.sidebar-user-name{color:rgba(255,255,255,.82);font-size:12.5px;font-weight:500;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.sidebar-user-role{color:rgba(255,255,255,.32);font-size:10.5px;}
.sidebar-logout{color:rgba(255,255,255,.3);font-size:18px;cursor:pointer;transition:color .15s;background:none;border:none;padding:4px;}
.sidebar-logout:hover{color:var(--red);}

/* ── 7. Main Content ── */
.main-content{margin-left:var(--sidebar-w);flex:1;display:flex;flex-direction:column;min-height:100vh;}

/* ── 8. Topbar ── */
.topbar{background:var(--surface);border-bottom:1px solid var(--border);height:var(--topbar-h);padding:0 26px;display:flex;align-items:center;gap:14px;position:sticky;top:0;z-index:50;}
.topbar-title{font-size:14.5px;font-weight:600;flex:1;}
.topbar-search{display:flex;align-items:center;gap:8px;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);padding:6px 12px;width:230px;}
.topbar-search input{border:none;background:transparent;outline:none;font-size:13px;color:var(--text-primary);width:100%;}
.topbar-search input::placeholder{color:var(--text-muted);}
.topbar-icon-btn{width:34px;height:34px;border-radius:var(--radius-sm);background:var(--bg);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:15px;position:relative;transition:all .15s;color:var(--text-secondary);}
.topbar-icon-btn:hover{background:var(--border2);}
.notif-dot{position:absolute;top:6px;right:6px;width:6px;height:6px;background:var(--red);border-radius:50%;border:1.5px solid var(--surface);}
.mobile-menu-btn{display:none;background:none;border:none;font-size:22px;cursor:pointer;color:var(--text-primary);padding:4px;}

/* ── 9. Page Body ── */
.page-body{padding:22px 26px;flex:1;}
.page-hd{margin-bottom:20px;display:flex;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;gap:12px;}
.page-title{font-family:'DM Serif Display',serif;font-size:21px;margin-bottom:2px;}
.page-crumb{font-size:12px;color:var(--text-muted);}
.page-hd-actions{display:flex;gap:8px;flex-wrap:wrap;}

/* ── 10. Stat Cards ── */
.stat-row{display:grid;gap:14px;margin-bottom:20px;}
.stat-row-4{grid-template-columns:repeat(4,1fr);}
.stat-row-3{grid-template-columns:repeat(3,1fr);}
.stat-row-2{grid-template-columns:repeat(2,1fr);}
.stat-card{background:var(--surface);border:1px solid var(--border2);border-radius:var(--radius);padding:16px 18px;box-shadow:var(--shadow-sm);display:flex;align-items:flex-start;gap:13px;transition:all .18s;}
.stat-card:hover{box-shadow:var(--shadow);transform:translateY(-1px);}
.stat-icon{width:42px;height:42px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:19px;flex-shrink:0;}
.si-blue{background:var(--blue-light);}
.si-green{background:var(--green-light);}
.si-amber{background:var(--amber-light);}
.si-red{background:var(--red-light);}
.si-purple{background:var(--purple-light);}
.si-teal{background:var(--teal-light);}
.stat-info{flex:1;min-width:0;}
.stat-val{font-size:21px;font-weight:800;letter-spacing:-.4px;line-height:1.1;margin-bottom:3px;}
.stat-lbl{font-size:12px;color:var(--text-muted);}

/* ── 11. Cards ── */
.card{background:var(--surface);border:1px solid var(--border2);border-radius:var(--radius);box-shadow:var(--shadow-sm);overflow:hidden;}
.card-hd{padding:14px 18px 12px;border-bottom:1px solid var(--border2);display:flex;align-items:center;gap:10px;}
.card-title{font-size:13.5px;font-weight:600;flex:1;}
.card-sub{font-size:11.5px;color:var(--text-muted);}
.card-body{padding:16px 18px;}
.card-action{font-size:12px;color:var(--blue);cursor:pointer;font-weight:500;white-space:nowrap;text-decoration:none;}
.card-action:hover{text-decoration:underline;}
.mb18{margin-bottom:18px;}

/* ── 12. Tables ── */
.tbl-wrap{overflow-x:auto;}
table{width:100%;border-collapse:collapse;}
th,td{padding:10px 14px;text-align:left;border-bottom:1px solid var(--border2);}
th{font-size:11.5px;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.6px;background:var(--surface2);white-space:nowrap;}
td{font-size:13px;}
tr:last-child td{border-bottom:none;}
tbody tr:hover td{background:var(--bg);}

/* ── 13. Badges ── */
.badge{display:inline-flex;align-items:center;padding:3px 9px;border-radius:99px;font-size:11px;font-weight:700;white-space:nowrap;}
.b-green{background:var(--green-light);color:var(--green);}
.b-blue{background:var(--blue-light);color:var(--blue);}
.b-amber{background:var(--amber-light);color:var(--amber);}
.b-red{background:var(--red-light);color:var(--red);}
.b-purple{background:var(--purple-light);color:var(--purple);}
.b-teal{background:var(--teal-light);color:var(--teal);}
.b-grey{background:var(--border2);color:var(--text-secondary);}

/* ── 14. Progress ── */
.prog-wrap{background:var(--border2);border-radius:99px;overflow:hidden;}
.prog-sm{height:5px;}
.prog-md{height:7px;}
.prog-fill{height:100%;border-radius:99px;transition:width .6s ease;}

/* ── 15. Buttons ── */
.btn{padding:9px 18px;border-radius:var(--radius-sm);font-size:13px;font-weight:600;cursor:pointer;border:1px solid transparent;transition:all .15s;display:inline-flex;align-items:center;gap:7px;text-decoration:none;}
.btn:hover{transform:translateY(-1px);}
.btn-primary{background:var(--blue);color:#fff;border-color:var(--blue);}
.btn-primary:hover{background:#1e40af;}
.btn-secondary{background:var(--surface);color:var(--text-secondary);border-color:var(--border);}
.btn-secondary:hover{background:var(--bg);}
.btn-success{background:var(--green);color:#fff;border-color:var(--green);}
.btn-danger{background:var(--red-light);color:var(--red);border-color:var(--red);}
.btn-teal{background:var(--teal);color:#fff;border-color:var(--teal);}
.btn-purple{background:var(--purple);color:#fff;border-color:var(--purple);}
.btn-sm{padding:6px 13px;font-size:12px;}
.btn-full{width:100%;justify-content:center;}

/* ── 16. Forms ── */
.f-row{display:grid;grid-template-columns:1fr 1fr;gap:13px;margin-bottom:13px;}
.f-row-3{grid-template-columns:1fr 1fr 1fr;}
.f-group{display:flex;flex-direction:column;gap:5px;}
.f-label{font-size:12px;font-weight:500;color:var(--text-secondary);}
.f-input,.f-select,.f-textarea{padding:9px 11px;border:1px solid var(--border);border-radius:var(--radius-sm);font-size:13px;color:var(--text-primary);background:var(--surface);outline:none;transition:border-color .15s;width:100%;}
.f-input:focus,.f-select:focus,.f-textarea:focus{border-color:var(--blue-mid);box-shadow:0 0 0 3px rgba(59,130,246,.1);}
.f-section-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.8px;color:var(--text-muted);margin:14px 0 10px;}

/* ── 17. Tabs ── */
.tab-bar{display:flex;gap:2px;border-bottom:1px solid var(--border);margin-bottom:18px;overflow-x:auto;}
.tab-btn{padding:9px 17px;font-size:13px;font-weight:500;color:var(--text-muted);border:none;background:transparent;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;transition:all .15s;white-space:nowrap;}
.tab-btn:hover{color:var(--text-primary);}
.tab-btn.active{color:var(--blue);border-bottom-color:var(--blue);font-weight:600;}
.tab-panel{display:none;}
.tab-panel.active{display:block;animation:slideIn .15s ease;}

/* ── 18. Toast ── */
.toast-container{position:fixed;bottom:22px;right:22px;z-index:999;display:flex;flex-direction:column;gap:8px;pointer-events:none;}
.toast{display:flex;align-items:center;gap:10px;background:var(--sidebar);color:#fff;padding:12px 16px;border-radius:var(--radius);box-shadow:var(--shadow-md);font-size:13px;animation:toastIn .25s ease;min-width:260px;max-width:340px;border-left:3px solid;pointer-events:all;}
.toast.success{border-left-color:var(--green);}
.toast.error{border-left-color:var(--red);}
.toast.info{border-left-color:var(--blue);}
.toast.warning{border-left-color:var(--amber);}
.toast-icon{font-size:16px;flex-shrink:0;}
.toast-body{flex:1;}
.toast-title{font-weight:600;font-size:13px;}
.toast-sub{font-size:11.5px;color:rgba(255,255,255,.55);margin-top:1px;}
.toast-close{color:rgba(255,255,255,.4);cursor:pointer;font-size:16px;flex-shrink:0;background:none;border:none;color:rgba(255,255,255,.6);}

/* ── 19. Modal ── */
.modal-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:400;display:flex;align-items:center;justify-content:center;padding:20px;animation:fadeIn .15s ease;}
.modal{background:var(--surface);border-radius:var(--radius-lg);width:100%;max-height:90vh;overflow-y:auto;box-shadow:var(--shadow-md);animation:fadeUp .18s ease;}
.modal-sm{max-width:420px;}
.modal-md{max-width:580px;}
.modal-lg{max-width:760px;}
.modal-hd{padding:18px 22px;border-bottom:1px solid var(--border2);display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;background:var(--surface);z-index:1;}
.modal-title{font-family:'DM Serif Display',serif;font-size:18px;}
.modal-close{width:30px;height:30px;border-radius:7px;background:var(--bg);border:none;cursor:pointer;font-size:16px;color:var(--text-muted);display:flex;align-items:center;justify-content:center;transition:all .15s;}
.modal-close:hover{background:var(--red-light);color:var(--red);}
.modal-body{padding:22px;}
.modal-footer{padding:14px 22px;border-top:1px solid var(--border2);display:flex;gap:10px;justify-content:flex-end;}

/* ── 20. Risk Cards ── */
.risk-card{background:var(--surface);border:1px solid var(--border2);border-radius:var(--radius);padding:15px 17px;margin-bottom:11px;border-left:4px solid;box-shadow:var(--shadow-sm);}
.risk-card:hover{box-shadow:var(--shadow);}
.rc-high{border-left-color:var(--red);}
.rc-med{border-left-color:var(--amber);}
.rc-low{border-left-color:var(--blue);}
.rc-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px;}
.rc-title{font-size:13px;font-weight:600;}
.rc-desc{font-size:12px;color:var(--text-muted);}

/* ── 21. Student rows ── */
.stu-row{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--border2);}
.stu-row:last-child{border-bottom:none;}
.stu-av{width:34px;height:34px;border-radius:50%;background:var(--blue-light);color:var(--blue);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:12px;flex-shrink:0;}
.stu-av.alert{background:var(--red-light);color:var(--red);}
.stu-info{flex:1;min-width:0;}
.stu-name{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.stu-sub{font-size:11px;color:var(--text-muted);}

/* ── 22. Info Banners ── */
.info-banner{display:flex;gap:10px;align-items:flex-start;padding:11px 14px;border-radius:var(--radius-sm);margin-bottom:14px;font-size:12.5px;border:1px solid;}
.ib-teal{background:var(--teal-light);border-color:var(--teal);color:var(--teal);}
.ib-amber{background:var(--amber-light);border-color:var(--amber);color:var(--amber);}
.ib-red{background:var(--red-light);border-color:var(--red);color:var(--red);}
.ib-blue{background:var(--blue-light);border-color:var(--blue);color:var(--blue);}

/* ── 23. Helpers ── */
.data-hc{background:var(--bg);border-radius:var(--radius-sm);padding:12px 14px;margin-bottom:10px;display:flex;align-items:center;justify-content:space-between;}
.data-hc-label{font-size:12.5px;color:var(--text-secondary);}
.data-hc-val{font-size:14px;font-weight:700;}
.settings-row{display:flex;align-items:center;justify-content:space-between;padding:12px 0;border-bottom:1px solid var(--border2);}
.settings-row:last-child{border-bottom:none;}
.settings-label{font-size:13px;font-weight:500;}
.settings-sub{font-size:12px;color:var(--text-muted);margin-top:2px;}
.toggle{position:relative;width:38px;height:21px;flex-shrink:0;}
.toggle input{opacity:0;width:0;height:0;}
.toggle-slider{position:absolute;inset:0;background:#cbd5e1;border-radius:99px;cursor:pointer;transition:.2s;}
.toggle-slider::before{content:'';position:absolute;width:15px;height:15px;border-radius:50%;background:#fff;left:3px;top:3px;transition:.2s;}
.toggle input:checked+.toggle-slider{background:var(--green);}
.toggle input:checked+.toggle-slider::before{transform:translateX(17px);}
.loader-wrap{display:flex;align-items:center;justify-content:center;padding:48px;}
.loader{width:36px;height:36px;border:3px solid var(--border);border-top-color:var(--blue);border-radius:50%;animation:spin .7s linear infinite;}
.page-loading{min-height:300px;display:flex;align-items:center;justify-content:center;}
.empty-state{padding:48px;text-align:center;color:var(--text-muted);}
.empty-state-icon{font-size:40px;margin-bottom:12px;}
.empty-state-title{font-size:14px;font-weight:600;color:var(--text-secondary);margin-bottom:4px;}
.empty-state-sub{font-size:12.5px;}
.divider{border:none;border-top:1px solid var(--border2);margin:14px 0;}
.g2{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
.g3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px;}
.g2-1{display:grid;grid-template-columns:2fr 1fr;gap:16px;}
.fw-600{font-weight:600;}
.fw-700{font-weight:700;}
.c-blue{color:var(--blue);}
.c-green{color:var(--green);}
.c-red{color:var(--red);}
.c-amber{color:var(--amber);}
.c-teal{color:var(--teal);}
.text-muted{color:var(--text-muted);}
.mt8{margin-top:8px;}
.mt12{margin-top:12px;}
.mt16{margin-top:16px;}
.f-section-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.8px;color:var(--text-muted);margin:14px 0 10px;}
.pag-btn{padding:5px 10px;border:1px solid var(--border);border-radius:6px;background:var(--surface);font-family:inherit;font-size:12px;cursor:pointer;color:var(--text-secondary);transition:all .15s;}
.pag-btn:hover:not([disabled]){background:var(--blue-light);color:var(--blue);border-color:var(--blue);}
.pag-active{background:var(--blue)!important;color:#fff!important;border-color:var(--blue)!important;font-weight:600;}
.pag-btn[disabled]{opacity:.4;cursor:not-allowed;}

/* ── 24. Dark Mode ── */
body.dark{
  --bg:#0f172a;--surface:#1e293b;--surface2:#1a2840;
  --border:#334155;--border2:#2d3f55;
  --text-primary:#f1f5f9;--text-secondary:#94a3b8;--text-muted:#64748b;
  --sidebar:#0a1628;
}

/* ── 25. Responsive ── */
@media(max-width:1100px){
  .stat-row-4{grid-template-columns:repeat(2,1fr);}
  .g3{grid-template-columns:1fr 1fr;}
  .g2-1{grid-template-columns:1fr;}
}
@media(max-width:768px){
  :root{--sidebar-w:0px;}
  .sidebar{transform:translateX(-252px);width:252px;}
  .sidebar.open{transform:translateX(0);box-shadow:var(--shadow-md);}
  .main-content{margin-left:0;}
  .mobile-menu-btn{display:flex;}
  .topbar-search{display:none;}
  .stat-row-4{grid-template-columns:repeat(2,1fr);}
  .g2,.g2-1{grid-template-columns:1fr;}
  .f-row{grid-template-columns:1fr;}
  .page-body{padding:16px;}
  .role-grid{grid-template-columns:repeat(2,1fr);}
}
