:root{
 --bg:#f4f7fb;--surface:#fff;--surface-soft:#f8fafc;--text:#172033;--muted:#6b778c;--line:#e4e9f0;
 --primary:#123b5d;--primary-2:#1d587f;--primary-soft:#eaf2f8;--success:#087443;--success-soft:#e8f7ef;--danger:#b42318;--danger-soft:#fff0ee;--warning:#9a6700;--warning-soft:#fff7df;
 --shadow:0 8px 28px rgba(18,59,93,.06);--radius:16px;
}
*{box-sizing:border-box}
html{font-size:15px;scroll-behavior:smooth}
body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;background:var(--bg);color:var(--text);line-height:1.55;-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button{cursor:pointer}
.app-shell{min-height:100vh;display:flex}
.sidebar{position:fixed;z-index:100;left:0;top:0;bottom:0;width:280px;padding:20px 14px 14px;background:linear-gradient(180deg,#0f2c47 0%,#102a43 100%);color:#eaf2f8;display:flex;flex-direction:column;overflow-y:auto;box-shadow:10px 0 30px rgba(10,31,50,.08)}
.brand-wrap{display:flex;align-items:center;justify-content:space-between;padding:2px 7px 18px}.brand{display:flex;align-items:center;gap:11px}.brand-mark{width:42px;height:42px;border-radius:13px;display:grid;place-items:center;background:#fff;color:var(--primary);font-weight:800;font-size:18px;box-shadow:0 5px 18px rgba(0,0,0,.12)}.brand-copy{display:flex;flex-direction:column;line-height:1.15}.brand-copy strong{font-size:14px;letter-spacing:.13em}.brand-copy small{margin-top:5px;color:#a9bdce;font-size:10px;letter-spacing:.02em}.sidebar-close{display:none;border:0;background:transparent;color:#fff;font-size:27px;line-height:1;padding:4px 8px}
.profile-mini{display:flex;align-items:center;gap:10px;padding:12px 11px;margin:2px 2px 15px;border:1px solid rgba(255,255,255,.09);background:rgba(255,255,255,.055);border-radius:13px}.avatar,.top-avatar{display:grid;place-items:center;flex:none;border-radius:50%;font-weight:700}.avatar{width:34px;height:34px;background:#dceaf4;color:var(--primary);font-size:13px}.profile-mini-text{min-width:0;display:flex;flex-direction:column}.profile-mini-text strong{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.profile-mini-text span{font-size:10px;color:#a9bdce;margin-top:2px}
.sidebar-nav{display:flex;flex-direction:column;gap:3px}.nav-label{padding:15px 11px 6px;color:#7692a9;font-size:9px;font-weight:800;letter-spacing:.16em}.nav-item{min-height:41px;display:flex;align-items:center;gap:11px;padding:9px 11px;border-radius:10px;color:#c7d6e3;font-size:12.5px;font-weight:500;transition:.18s ease}.nav-item:hover{background:rgba(255,255,255,.075);color:#fff;transform:translateX(1px)}.nav-item.active{background:linear-gradient(90deg,rgba(255,255,255,.15),rgba(255,255,255,.07));color:#fff;box-shadow:inset 3px 0 0 #fff}.nav-icon{width:22px;display:inline-grid;place-items:center;color:#9eb6c9;font-size:13px;font-weight:700}.nav-item.active .nav-icon{color:#fff}
.sidebar-footer{margin-top:auto;border-top:1px solid rgba(255,255,255,.09);padding:12px 5px 0;display:grid;gap:3px}.sidebar-footer a{display:flex;gap:9px;align-items:center;padding:8px 7px;border-radius:9px;color:#b7c9d8;font-size:11.5px}.sidebar-footer a:hover{background:rgba(255,255,255,.06);color:#fff}.sidebar-footer small{padding:9px 7px 2px;color:#6f8aa0;font-size:9px}
.main-area{width:auto;flex:1;min-width:0;margin-left:280px;min-height:100vh;display:flex;flex-direction:column}.topbar{position:sticky;z-index:50;top:0;height:82px;padding:15px 30px;background:rgba(255,255,255,.94);backdrop-filter:blur(12px);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:20px}.topbar-title{min-width:0}.eyebrow{display:block;color:#8190a4;font-size:9px;font-weight:800;letter-spacing:.15em}.topbar h1{margin:3px 0 0;font-size:21px;line-height:1.25;letter-spacing:-.02em}.topbar-right{display:flex;align-items:center;gap:13px}.school-context{padding:6px 9px;border-radius:999px;background:var(--success-soft);color:var(--success);font-size:10px;font-weight:700}.top-profile{display:flex;align-items:center;gap:9px}.top-avatar{width:35px;height:35px;background:var(--primary-soft);color:var(--primary);font-size:12px}.top-profile-copy{display:flex;flex-direction:column;line-height:1.15}.top-profile-copy strong{font-size:11.5px}.top-profile-copy small{font-size:9.5px;color:var(--muted);margin-top:4px}.menu-toggle{display:none;width:40px;height:40px;border:1px solid var(--line);border-radius:10px;background:#fff;padding:9px}.menu-toggle span{display:block;height:2px;margin:4px 0;background:var(--primary);border-radius:3px}
.page-content{width:100%;max-width:none;min-width:0;padding:28px 30px 34px;flex:1}.app-footer{padding:0 30px 22px;display:flex;justify-content:space-between;gap:15px;color:#98a3b3;font-size:10px}
.pagehead{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin:0 0 18px}.pagehead h1{margin:0;font-size:24px;letter-spacing:-.025em}.pagehead .muted{margin-top:4px}.muted{color:var(--muted);font-size:12px}
.grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow)}.card h2,.card h3{margin-top:0}.card h2{font-size:18px}.card h3{font-size:15px}.label{font-size:11px;color:var(--muted);font-weight:600}.value{font-size:27px;font-weight:800;margin-top:6px;letter-spacing:-.025em}.section{margin-top:20px}.section-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.section-head h2{font-size:16px;margin:0}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.field{display:grid;gap:7px;min-width:0}.field.full{grid-column:1/-1}.field label{font-size:11px;font-weight:700;color:#435066}.field input,.field select,.field textarea{width:100%;min-height:42px;padding:10px 12px;border:1px solid #d7dee8;border-radius:10px;outline:none;background:#fff;color:var(--text);font-size:12.5px;transition:.16s}.field textarea{resize:vertical;min-height:90px}.field input:focus,.field select:focus,.field textarea:focus{border-color:#6d9bb9;box-shadow:0 0 0 3px rgba(29,88,127,.1)}
.actions{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-top:3px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:40px;padding:9px 14px;border:1px solid transparent;border-radius:10px;background:var(--primary);color:#fff;font-size:11.5px;font-weight:700;box-shadow:0 4px 12px rgba(18,59,93,.12)}.btn:hover{filter:brightness(1.05);transform:translateY(-1px)}.btn.secondary{background:#edf2f7;color:#243b53;box-shadow:none}.btn.danger{background:var(--danger);color:#fff}.btn.success{background:var(--success);color:#fff}
.table-wrap{overflow:auto;background:#fff;border:1px solid var(--line);border-radius:14px}.table{width:100%;border-collapse:separate;border-spacing:0;min-width:720px}.table th,.table td,table th,table td{padding:12px 14px;border-bottom:1px solid var(--line);text-align:left;font-size:11.5px;vertical-align:middle}.table th,table th{background:#f8fafc;color:#6d788b;font-size:9.5px;text-transform:uppercase;letter-spacing:.055em;font-weight:800;white-space:nowrap}.table tr:last-child td,table tr:last-child td{border-bottom:0}.table tbody tr:hover td,table tbody tr:hover td{background:#fbfdff}.badge{display:inline-flex;align-items:center;padding:5px 8px;border-radius:999px;background:#edf2f7;color:#536174;font-size:9.5px;font-weight:700}.badge.ok{background:var(--success-soft);color:var(--success)}.badge.bad{background:var(--danger-soft);color:var(--danger)}
.alert{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border:1px solid #ffd5d0;border-radius:11px;margin-bottom:17px;background:var(--danger-soft);color:var(--danger);font-size:12px;font-weight:600}.alert.success{background:var(--success-soft);border-color:#c9ecd9;color:var(--success)}.alert.warning{background:var(--warning-soft);border-color:#f2dfa3;color:var(--warning)}.alert button{border:0;background:transparent;color:inherit;font-size:20px;line-height:1;padding:0 2px}.empty{padding:38px 20px;text-align:center;color:var(--muted)}
.login-page{min-height:100vh;display:grid;place-items:center;padding:20px;background:radial-gradient(circle at top,#edf5fa 0,#f5f8fb 42%,#eef3f7 100%)}.login-box{width:min(440px,94vw);background:#fff;border:1px solid var(--line);border-radius:20px;padding:32px;box-shadow:0 25px 70px rgba(18,59,93,.1)}.login-box h1{margin:0 0 6px;font-size:25px}.login-box p{color:var(--muted);font-size:12.5px}.login-box form{display:grid;gap:14px;margin-top:24px}.login-box input{width:100%;min-height:44px;padding:11px 13px;border:1px solid #d8dee7;border-radius:10px;font:inherit;outline:none}.login-box input:focus{border-color:#6d9bb9;box-shadow:0 0 0 3px rgba(29,88,127,.1)}
.mobile-overlay{display:none}
@media(max-width:1180px){.sidebar{width:250px}.main-area{width:auto;flex:1;min-width:0;margin-left:250px}.page-content{padding:24px}.topbar{padding:14px 24px}.app-footer{padding-left:24px;padding-right:24px}.grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:980px){.sidebar{transform:translateX(-102%);transition:transform .22s ease;width:285px;box-shadow:18px 0 45px rgba(5,22,37,.18)}body.menu-open .sidebar{transform:translateX(0)}.sidebar-close{display:block}.mobile-overlay{position:fixed;z-index:90;inset:0;background:rgba(9,25,39,.42);backdrop-filter:blur(2px)}body.menu-open .mobile-overlay{display:block}.main-area{width:100%;margin-left:0}.menu-toggle{display:block}.topbar{height:72px;padding:12px 18px;justify-content:flex-start}.topbar-title{flex:1}.topbar h1{font-size:18px}.top-profile-copy,.school-context{display:none}.page-content{padding:20px 18px 28px}.app-footer{padding:0 18px 18px}}
@media(max-width:680px){html{font-size:14px}.grid{grid-template-columns:1fr 1fr;gap:10px}.card{padding:15px;border-radius:13px}.value{font-size:22px}.pagehead{align-items:flex-start;flex-direction:column;gap:10px}.pagehead h1{font-size:20px}.form-grid{grid-template-columns:1fr;gap:12px}.field.full{grid-column:auto}.actions .btn{width:100%}.actions{width:100%}.app-footer{flex-direction:column;gap:3px}.topbar-title .eyebrow{font-size:8px}.table-wrap{margin-left:-1px;margin-right:-1px}.table th,.table td,table th,table td{padding:10px 11px;font-size:10.5px}}
@media(max-width:430px){.grid{grid-template-columns:1fr}.page-content{padding:16px 12px 24px}.topbar{padding:10px 12px}.menu-toggle{width:38px;height:38px}.topbar h1{font-size:16px}.eyebrow{display:none}.card{padding:14px}.login-box{padding:25px 20px}}
@media print{.sidebar,.topbar,.app-footer,.actions,.menu-toggle{display:none!important}.main-area{margin:0;width:100%}.page-content{padding:0}.card{box-shadow:none}.table-wrap{overflow:visible}}

/* ===== V3.1 LAYOUT & SIDEBAR POLISH ===== */
.sidebar-nav{padding:0 2px 8px}.nav-item{position:relative;min-height:42px;padding:10px 12px;gap:12px;white-space:nowrap}.nav-item span:last-child{overflow:hidden;text-overflow:ellipsis}.nav-icon{width:24px;height:24px;flex:0 0 24px;border-radius:7px;background:rgba(255,255,255,.055);font-size:11px}.nav-item:hover .nav-icon,.nav-item.active .nav-icon{background:rgba(255,255,255,.13)}.nav-label{margin-top:5px}.page-content{overflow-x:hidden}.card,.table-wrap,.section{min-width:0}.form-grid>*{min-width:0}.table-wrap{max-width:100%}.table{max-width:none}.topbar{min-width:0}.topbar-title{overflow:hidden}.topbar h1{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.app-footer{min-width:0}.sidebar::-webkit-scrollbar{width:5px}.sidebar::-webkit-scrollbar-thumb{background:rgba(255,255,255,.16);border-radius:10px}
@media(max-width:980px){.main-area{width:100%;margin-left:0}.page-content{width:100%;max-width:none}.sidebar{width:min(310px,88vw)}}

/* =========================================================
   V3.4 — DEFINITIVE APP LAYOUT
   Desktop: CSS Grid, sidebar occupies a real column.
   Mobile: sidebar becomes an overlay drawer.
   ========================================================= */
html,body{width:100%;min-width:0;overflow-x:hidden}
.app-shell{display:grid;grid-template-columns:280px minmax(0,1fr);align-items:stretch;width:100%;min-height:100vh}
.sidebar{position:sticky;left:auto;top:0;bottom:auto;width:280px;height:100vh;grid-column:1;grid-row:1;z-index:100;overflow-y:auto;overflow-x:hidden}
.main-area{grid-column:2;grid-row:1;width:100%;min-width:0;margin-left:0!important;display:flex;flex-direction:column;min-height:100vh;overflow-x:hidden}
.topbar{width:100%;min-width:0}
.page-content{width:100%;min-width:0;max-width:none;overflow-x:hidden}
.card{width:100%;min-width:0;overflow:hidden}
.card:has(.table),.card:has(table){overflow-x:auto;overflow-y:hidden}
.card .table,.card table{min-width:700px}
.section,.grid,.form-grid,.pagehead,.section-head{min-width:0;max-width:100%}

/* Clean desktop proportions */
@media(min-width:1201px){
 .page-content{padding:30px 36px 38px}
 .topbar{padding:15px 36px}
 .app-footer{padding-left:36px;padding-right:36px}
}
@media(min-width:981px) and (max-width:1200px){
 .app-shell{grid-template-columns:250px minmax(0,1fr)}
 .sidebar{width:250px}
 .main-area{grid-column:2;margin-left:0!important}
 .page-content{padding:24px}
 .topbar{padding:14px 24px}
 .app-footer{padding-left:24px;padding-right:24px}
}

/* Tablet / phone: drawer, content always 100% */
@media(max-width:980px){
 .app-shell{display:block;width:100%;min-height:100vh}
 .sidebar{position:fixed;left:0;top:0;bottom:0;width:min(300px,88vw);height:100vh;transform:translate3d(-105%,0,0);transition:transform .24s cubic-bezier(.22,.61,.36,1);z-index:1000}
 body.menu-open .sidebar{transform:translate3d(0,0,0)}
 .main-area{display:flex;width:100%;min-width:0;margin-left:0!important;overflow-x:hidden}
 .topbar{width:100%;padding:12px 18px}
 .page-content{width:100%;padding:20px 18px 28px}
 .app-footer{padding-left:18px;padding-right:18px}
}
@media(max-width:680px){
 .page-content{padding:16px 14px 24px}
 .topbar{padding:10px 14px}
 .card{border-radius:13px}
 .card .table,.card table{min-width:680px}
 .table-wrap{width:100%;max-width:100%;overflow-x:auto}
}
@media(max-width:430px){
 .page-content{padding:14px 10px 22px}
 .topbar{padding:9px 10px}
 .card{border-radius:12px}
}

/* Never allow an inner element to create a page-wide horizontal overflow */
img,svg,video,canvas{max-width:100%;height:auto}
input,select,textarea,button{max-width:100%}
.page-content>*{max-width:100%}

/* V3.5 DEFINITIVE - layout isolation */
html,body{margin:0!important;padding:0!important;width:100%!important;min-width:0!important;overflow-x:hidden!important;}
body{box-sizing:border-box!important;}
body *,body *::before,body *::after{box-sizing:border-box;}
.app-shell{display:grid!important;grid-template-columns:280px minmax(0,1fr)!important;width:100%!important;min-height:100vh!important;margin:0!important;padding:0!important;align-items:stretch!important;}
.app-shell>.sidebar{grid-column:1!important;grid-row:1!important;position:sticky!important;left:auto!important;top:0!important;width:280px!important;height:100vh!important;margin:0!important;transform:none!important;z-index:100!important;}
.app-shell>.main-area{grid-column:2!important;grid-row:1!important;width:100%!important;min-width:0!important;max-width:none!important;margin:0!important;padding:0!important;display:flex!important;flex-direction:column!important;overflow:hidden!important;}
.main-area>.topbar{width:100%!important;min-width:0!important;margin:0!important;}
.main-area>.page-content{width:100%!important;min-width:0!important;max-width:none!important;margin:0!important;overflow-x:auto!important;}
@media(max-width:980px){.app-shell{display:block!important;min-height:100vh!important}.app-shell>.sidebar{position:fixed!important;left:0!important;top:0!important;width:min(310px,88vw)!important;height:100vh!important;transform:translate3d(-105%,0,0)!important;z-index:1000!important;margin:0!important}.app-shell>.sidebar-open,.app-shell>.sidebar.open{transform:translate3d(0,0,0)!important}body.menu-open .app-shell>.sidebar{transform:translate3d(0,0,0)!important}.app-shell>.main-area{display:flex!important;width:100%!important;margin:0!important;min-width:0!important}.main-area>.page-content{width:100%!important;min-width:0!important;padding:18px 14px 28px!important;overflow-x:auto!important}.topbar{width:100%!important}.mobile-overlay{z-index:900!important}}
@media(max-width:600px){.app-shell>.main-area{width:100vw!important;max-width:100vw!important}.main-area>.page-content{padding:14px 12px 24px!important}.grid{grid-template-columns:1fr!important}.form-grid{grid-template-columns:1fr!important}.pagehead{display:flex!important;flex-direction:column!important;align-items:flex-start!important}.actions .btn{max-width:100%!important}.card{width:100%!important;max-width:100%!important}.table-wrap{width:100%!important;max-width:100%!important;overflow-x:auto!important}}
