:root{--bg:#071426;--bg2:#0b1a30;--card:#10223b;--card2:#142944;--line:#263b59;--text:#f4f7ff;--muted:#9fb2d0;--primary:#6157ff;--primary2:#8377ff;--success:#20d49a;--danger:#ff5f6d;--warning:#f7a23b;--info:#4ea2ff;--shadow:0 16px 45px rgba(0,0,0,.22);--radius:16px}
:root[data-theme="light"]{--bg:#eef2f7;--bg2:#f8fafc;--card:#ffffff;--card2:#f5f7fb;--line:#dbe3ef;--text:#182237;--muted:#64748b;--shadow:0 14px 35px rgba(15,23,42,.08)}
*{box-sizing:border-box}html,body{min-height:100%;background:var(--bg);color:var(--text)}body{font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;margin:0;transition:background .2s,color .2s}a{color:inherit;text-decoration:none}.text-muted{color:var(--muted)!important}.app-card,.card{background:linear-gradient(180deg,var(--card),rgba(16,34,59,.93));border:1px solid var(--line);color:var(--text);border-radius:var(--radius);box-shadow:var(--shadow)}:root[data-theme="light"] .app-card,:root[data-theme="light"] .card{background:var(--card)}
.btn{border-radius:11px;font-weight:700}.btn-primary{background:linear-gradient(135deg,var(--primary),#704cff);border-color:transparent}.btn-success{background:var(--success);border-color:transparent;color:#061b17}.btn-outline-light{border-color:var(--line);color:var(--text)}.form-control,.form-select{background:var(--card2);border:1px solid var(--line);color:var(--text);border-radius:10px}.form-control:focus,.form-select:focus{background:var(--card2);color:var(--text);border-color:var(--primary);box-shadow:0 0 0 .2rem rgba(97,87,255,.18)}.form-control::placeholder{color:var(--muted)}.form-select option{background:var(--card);color:var(--text)}.table{--bs-table-color:var(--text);--bs-table-bg:transparent;--bs-table-border-color:var(--line);margin-bottom:0}.table thead th{background:rgba(97,87,255,.08);color:#cbd8ef;border-bottom:1px solid var(--line);font-size:.82rem;white-space:nowrap}.table td{vertical-align:middle}.table-hover>tbody>tr:hover>*{--bs-table-accent-bg:rgba(97,87,255,.05);color:var(--text)}
.public-shell{min-height:100vh;background:radial-gradient(circle at 65% 20%,rgba(97,87,255,.16),transparent 30%),linear-gradient(180deg,#071426,#09182b 65%,#06101f)}.public-nav{position:sticky;top:0;z-index:20;background:rgba(7,20,38,.9);backdrop-filter:blur(16px);border-bottom:1px solid var(--line)}.brand-mark{width:44px;height:44px;border-radius:13px;background:linear-gradient(135deg,#4558ff,#7258ff);display:grid;place-items:center;color:white;font-weight:900}.hero{padding:64px 0 30px}.hero-title{font-size:clamp(2.3rem,5vw,5rem);line-height:.98;font-weight:900;letter-spacing:-.04em}.gradient-text{background:linear-gradient(90deg,#586bff,#a16bff);-webkit-background-clip:text;background-clip:text;color:transparent}.hero-img{width:100%;aspect-ratio:16/9;object-fit:cover;border-radius:24px;border:1px solid var(--line);box-shadow:0 26px 80px rgba(0,0,0,.38)}
.stat-card{padding:20px;height:100%}.stat-icon{width:48px;height:48px;border-radius:14px;display:grid;place-items:center;font-size:1.35rem;background:rgba(97,87,255,.2);color:#9da7ff}.stat-icon.success{background:rgba(32,212,154,.16);color:var(--success)}.stat-icon.danger{background:rgba(255,95,109,.16);color:var(--danger)}.stat-icon.warning{background:rgba(247,162,59,.16);color:var(--warning)}.stat-value{font-size:1.65rem;font-weight:900;letter-spacing:-.03em}
.app-layout{display:flex;min-height:100vh;background:radial-gradient(circle at 65% 5%,rgba(97,87,255,.08),transparent 30%),var(--bg)}.sidebar{width:260px;position:fixed;inset:0 auto 0 0;background:#09182c;border-right:1px solid var(--line);padding:18px 14px;overflow-y:auto;z-index:1040;transition:transform .25s,width .25s}.sidebar-brand{display:flex;align-items:center;gap:12px;padding:0 8px 20px}.sidebar .nav-link{color:#c1cee2;padding:11px 12px;border-radius:10px;margin:3px 0;display:flex;align-items:center;gap:11px;font-size:.92rem}.sidebar .nav-link:hover{background:rgba(97,87,255,.08);color:#fff}.sidebar .nav-link.active{background:linear-gradient(135deg,#4c4ce5,#4b31b8);color:#fff;box-shadow:0 8px 24px rgba(75,49,184,.3)}.sidebar .section-label{font-size:.68rem;text-transform:uppercase;letter-spacing:.12em;color:#7185a6;margin:18px 12px 7px}.main{margin-left:260px;min-width:0;width:calc(100% - 260px);transition:margin .25s,width .25s}.topbar{height:68px;display:flex;align-items:center;justify-content:space-between;padding:0 28px;border-bottom:1px solid var(--line);background:rgba(7,20,38,.72);backdrop-filter:blur(16px);position:sticky;top:0;z-index:1030}.content{padding:28px}.sidebar-collapsed .sidebar{width:82px}.sidebar-collapsed .sidebar .nav-label,.sidebar-collapsed .sidebar .brand-copy,.sidebar-collapsed .sidebar .section-label{display:none}.sidebar-collapsed .sidebar .nav-link{justify-content:center}.sidebar-collapsed .main{margin-left:82px;width:calc(100% - 82px)}
.teacher-banner{background:rgba(78,162,255,.12);border:1px solid rgba(78,162,255,.3);color:#aad2ff;padding:10px 14px;border-radius:11px;margin-bottom:18px}.status-pill{display:inline-flex;align-items:center;gap:6px;padding:6px 9px;border-radius:999px;font-size:.77rem;font-weight:800}.status-paid{background:rgba(32,212,154,.13);color:var(--success)}.status-due{background:rgba(255,95,109,.13);color:var(--danger)}.status-future{background:rgba(159,178,208,.12);color:var(--muted)}.status-exempt{background:rgba(78,162,255,.12);color:#8cc6ff}.week-toggle{min-width:106px;border:1px solid var(--line);border-radius:12px;padding:9px 8px;text-align:center;background:var(--card2)}.week-toggle input{width:20px;height:20px;cursor:pointer}.week-toggle.paid{border-color:rgba(32,212,154,.35);background:rgba(32,212,154,.07)}.week-toggle.due{border-color:rgba(255,95,109,.35);background:rgba(255,95,109,.07)}.icon-toggle{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-width:132px;padding:8px 10px;border-radius:12px;border:1px solid rgba(255,95,109,.35);background:rgba(255,95,109,.07);cursor:pointer;user-select:none;transition:all .18s ease;text-align:left}.icon-toggle:hover{transform:translateY(-1px);box-shadow:0 8px 18px rgba(0,0,0,.16)}.icon-toggle-input{position:absolute;opacity:0;pointer-events:none}.icon-toggle-badge{width:28px;height:28px;border-radius:50%;border:4px solid var(--danger);display:grid;place-items:center;flex:0 0 28px;background:transparent;color:var(--danger);font-weight:900;line-height:1}.icon-toggle-cross{font-size:22px;line-height:1;transform:translateY(-1px)}.icon-toggle-check{display:none;font-size:18px;line-height:1}.icon-toggle-label{font-size:.78rem;font-weight:800;color:var(--danger);white-space:nowrap}.icon-toggle.is-checked{border-color:rgba(32,212,154,.35);background:rgba(32,212,154,.08)}.icon-toggle.is-checked .icon-toggle-badge{border-color:var(--success);color:var(--success)}.icon-toggle.is-checked .icon-toggle-cross{display:none}.icon-toggle.is-checked .icon-toggle-check{display:block}.icon-toggle.is-checked .icon-toggle-label{color:var(--success)}
.mobile-cards{display:none}.sticky-name{position:sticky;left:0;background:var(--card);z-index:2}.table-responsive{border-radius:12px}.avatar{width:38px;height:38px;border-radius:50%;object-fit:cover;background:linear-gradient(135deg,#91a7ff,#dbe3ff);color:#10213a;display:grid;place-items:center;font-weight:800}.badge-soft{background:rgba(97,87,255,.13);color:#aca7ff;border:1px solid rgba(97,87,255,.2)}.empty-state{padding:50px 20px;text-align:center;color:var(--muted)}.chart-box{height:300px}.footer{border-top:1px solid var(--line);padding:28px 0;color:var(--muted)}
@media(max-width:991.98px){.sidebar{transform:translateX(-100%);width:270px}.sidebar.open{transform:translateX(0)}.main,.sidebar-collapsed .main{margin-left:0;width:100%}.topbar{padding:0 16px}.content{padding:18px}.sidebar-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:1035}.sidebar-overlay.show{display:block}.hero{padding-top:35px}.hero-title{font-size:clamp(2.2rem,9vw,4rem)}}
@media(max-width:575.98px){.content{padding:14px}.stat-value{font-size:1.35rem}.desktop-only{display:none!important}.mobile-cards{display:block}.hero-img{border-radius:18px}.table{font-size:.84rem}.btn{min-height:42px}}
@media print{.sidebar,.topbar,.no-print,.public-nav{display:none!important}.main{margin:0;width:100%}.content{padding:0}.app-card,.card{box-shadow:none;border:1px solid #bbb}.app-layout,body{background:#fff!important;color:#000!important}.table{color:#000!important}.table thead th{color:#000!important;background:#eee!important}}
:root[data-theme="light"] .public-shell{background:linear-gradient(180deg,#f8fafc,#eef2f7)}
:root[data-theme="light"] .public-nav,:root[data-theme="light"] .topbar{background:rgba(248,250,252,.9)}
:root[data-theme="light"] .sidebar{background:#ffffff}
:root[data-theme="light"] .sidebar .nav-link{color:#52627a}
:root[data-theme="light"] .sidebar .nav-link:hover{color:#182237;background:rgba(97,87,255,.08)}
:root[data-theme="light"] .sidebar .nav-link.active{color:#fff}
:root[data-theme="light"] .btn-outline-light{color:#26344d;border-color:#cbd5e1}
:root[data-theme="light"] .btn-outline-light:hover{background:#e8edf5;color:#182237}
:root[data-theme="light"] .sticky-name{background:#fff}
