:root{font-family:system-ui,-apple-system,"Segoe UI",sans-serif;color:#172a45;background:#f4f7fb}*{box-sizing:border-box}body{margin:0}a{color:#1657aa}h1{font-size:1.8rem;margin:.2rem 0}h2{font-size:1.1rem;margin:.2rem 0 1rem}.topbar{background:#112a4d;color:white;display:flex;justify-content:space-between;align-items:center;padding:1rem max(1rem,calc((100vw - 1080px)/2))}.topbar a{color:white}.container{max-width:1080px;margin:2rem auto;padding:0 1rem}.narrow{max-width:800px}.heading{display:flex;justify-content:space-between;gap:1rem;align-items:center}.heading p,.meta,.hint{color:#66778b}.card,.auth-card{background:white;border:1px solid #dce4ed;border-radius:14px;padding:1.4rem;margin:1rem 0;box-shadow:0 2px 10px #17355c09}.two{display:grid;grid-template-columns:1fr 1fr;gap:1rem}label{display:block;font-weight:600;margin:.8rem 0}input,select,textarea{display:block;width:100%;margin-top:.4rem;padding:.72rem;border:1px solid #aab9cb;border-radius:8px;background:white;font:inherit;color:#172a45}textarea{resize:vertical}button,.button{display:inline-block;background:#1262bf;border:1px solid #1262bf;color:white;padding:.7rem 1.15rem;border-radius:8px;text-decoration:none;font:inherit;font-weight:600;cursor:pointer}.secondary{background:white;color:#17355c;border-color:#b4c3d3}.actions{display:flex;justify-content:flex-end;gap:.8rem;flex-wrap:wrap}.filters{display:flex;gap:1rem;align-items:end;flex-wrap:wrap}.filters label{margin:0}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1rem}.cards .card{margin:0}.tag{border-radius:20px;padding:.3rem .6rem;background:#e7f1ff;font-size:.75rem}.alert{background:#fff1f0;border:1px solid #e5b1ab;padding:1rem;border-radius:9px}.success{background:#e6f8ee;padding:1rem;border-radius:9px}.auth-card{max-width:420px;margin:10vh auto}.auth-card button{width:100%}.inline{display:inline}.inline button{margin-left:.5rem}@media(max-width:650px){.two{grid-template-columns:1fr}.heading{align-items:start;flex-direction:column}.container{margin:1rem auto}.topbar{padding:1rem}}


/* Phase 9 — shared staff portal UI. Scoped to avoid changing classroom PIN attendance. */
:root{--portal-navy:#10233f;--portal-blue:#2563eb;--portal-bg:#f3f6fb;--portal-border:#e2e8f0;--portal-text:#18283f}
body.school-portal{background:var(--portal-bg);color:var(--portal-text);min-height:100vh;padding-left:248px;font-family:system-ui,-apple-system,"Segoe UI",sans-serif}
.school-portal .portal-sidebar{position:fixed;inset:0 auto 0 0;width:248px;background:var(--portal-navy);color:#e5eefb;z-index:50;display:flex;flex-direction:column;box-shadow:4px 0 22px #0f234015}
.school-portal .portal-brand{padding:28px 20px 32px;display:flex;align-items:center;gap:12px;border-bottom:1px solid #ffffff17}
.school-portal .portal-brand strong{display:block;font-size:1.08rem;letter-spacing:-.02em;color:#fff}.school-portal .portal-brand small{display:block;font-size:.7rem;color:#9eb1cc;margin-top:3px}
.school-portal .portal-brand-mark{width:42px;height:42px;display:grid;place-items:center;background:#2e65d3;border-radius:12px;font-weight:800;color:white;font-size:1.25rem}
.school-portal .portal-menu-caption{font-size:.68rem;letter-spacing:.13em;color:#8196b3;padding:27px 24px 11px;font-weight:800}
.school-portal .portal-side-links{display:grid;gap:5px;padding:0 12px;overflow:auto}
.school-portal .portal-side-link{display:flex;align-items:center;gap:12px;padding:12px 14px;color:#c2d1e7;text-decoration:none;border-radius:10px;font-weight:600;font-size:.88rem;transition:background .15s}
.school-portal .portal-side-link:hover,.school-portal .portal-side-link.is-active{background:#284567;color:#fff}
.school-portal .portal-side-link.is-active{box-shadow:inset 3px 0 0 #70a9ff}
.school-portal .portal-side-icon{font-size:1.12rem;min-width:20px;text-align:center}
.school-portal .portal-side-bottom{margin-top:auto;padding:20px 16px;border-top:1px solid #ffffff19}
.school-portal .portal-user{display:flex;align-items:center;gap:10px;margin-bottom:13px;min-width:0}
.school-portal .portal-user strong{display:block;color:#fff;font-size:.83rem;overflow-wrap:anywhere}.school-portal .portal-user small{font-size:.67rem;color:#9fb2cc;letter-spacing:.08em}
.school-portal .portal-avatar{background:#315f9a;width:38px;height:38px;border-radius:50%;display:grid;place-items:center;font-weight:800;color:#fff;flex-shrink:0}
.school-portal .portal-logout{width:100%;background:#ffffff10;border:1px solid #ffffff30;color:#f1f6ff;padding:10px;border-radius:9px;font-size:.85rem}
.school-portal .portal-menu-toggle,.school-portal .portal-mobile-toggle,.school-portal .portal-backdrop{display:none}
.school-portal>.topbar{display:none}
.school-portal main,.school-portal main.container,.school-portal main.admin-wrap{width:auto;max-width:1400px;margin:0 auto;padding:34px clamp(18px,3vw,48px);box-sizing:border-box}
.school-portal h1{font-size:clamp(1.55rem,2.1vw,2rem);font-weight:750;letter-spacing:-.035em;color:#10233f;margin:0 0 12px}
.school-portal h2{color:#1b3150}.school-portal .card,.school-portal .admin-panel{border:1px solid var(--portal-border);box-shadow:0 5px 22px #10233f09;border-radius:16px;background:#fff}
.school-portal .card{padding:22px}.school-portal .admin-panel{padding:24px}
.school-portal .admin-nav{gap:9px;margin:20px 0}.school-portal .admin-nav a{background:white;border:1px solid var(--portal-border);border-radius:10px;padding:10px 14px;color:#26466d;font-weight:600}
.school-portal .admin-nav a:hover{border-color:#a4bee6;background:#eef5ff}
.school-portal table{width:100%;border-collapse:collapse;background:white;border-radius:12px;overflow:hidden}
.school-portal th{background:#f2f6fc;color:#415672;font-size:.8rem;font-weight:750;text-transform:none}
.school-portal th,.school-portal td{padding:12px 14px;border-bottom:1px solid #e8edf4;text-align:left;vertical-align:middle}
.school-portal tr:hover td{background:#fafcff}
.school-portal input,.school-portal select,.school-portal textarea{border:1px solid #cbd6e4;border-radius:10px;background:#fff;min-height:43px}
.school-portal input:focus,.school-portal select:focus,.school-portal textarea:focus{outline:2px solid #9bc4ff;outline-offset:1px}
.school-portal button,.school-portal .button{border-radius:10px;box-shadow:none}
.school-portal .heading{gap:20px}.school-portal .cards{gap:18px}.school-portal .cards .card{min-width:0}
.school-portal .meta,.school-portal .hint{color:#61738c}.school-portal .stats{gap:12px!important}.school-portal .stats div{background:white!important;border:1px solid #e2e8f0;border-radius:14px!important;padding:18px 24px!important;min-width:145px}
.school-portal .filters{background:#fff;border:1px solid var(--portal-border);border-radius:14px;padding:16px;margin:18px 0}
.school-portal .auth-card{margin:8vh auto}
@media(max-width:900px){body.school-portal{padding-left:0;padding-top:54px}.school-portal .portal-mobile-toggle{display:flex;position:fixed;top:0;left:0;right:0;height:54px;z-index:49;align-items:center;gap:12px;background:#10233f;color:#fff;padding:0 18px;font-weight:700;cursor:pointer}.school-portal .portal-sidebar{transform:translateX(-102%);transition:transform .2s}.school-portal .portal-menu-toggle:checked~.portal-sidebar{transform:translateX(0)}.school-portal .portal-menu-toggle:checked~.portal-backdrop{display:block;position:fixed;inset:0;background:#0008;z-index:40}.school-portal main,.school-portal main.container,.school-portal main.admin-wrap{padding:20px 14px}.school-portal .heading{align-items:flex-start}.school-portal .admin-panel{padding:16px}}
@media(max-width:600px){.school-portal .cards{grid-template-columns:1fr}.school-portal .filters{align-items:stretch}.school-portal .filters label{width:100%}.school-portal table{font-size:.83rem}}

/* Phase 11 — unified responsive interface. Scoped to authenticated portal pages. */
:root{--portal-navy:#101f38;--portal-blue:#2563eb;--portal-bg:#f5f7fc;--portal-border:#e4eaf3;--portal-text:#152a45}
body.school-portal{padding-left:264px;background:var(--portal-bg);font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;color:#182a42}
.school-portal .portal-sidebar{width:264px;background:linear-gradient(165deg,#122540,#0b1a31);box-shadow:8px 0 28px #0f234008}
.school-portal .portal-brand{text-decoration:none;padding:25px 22px;min-height:96px}
.school-portal .portal-brand-mark{background:#3778e9;box-shadow:0 5px 16px #1e63d744}
.school-portal .portal-side-scroll{overflow-y:auto;min-height:0;padding-bottom:16px;flex:1}
.school-portal .portal-menu-caption{padding:22px 24px 8px;color:#8ea3c1;font-size:.66rem}
.school-portal .portal-side-links{gap:3px;padding:0 12px;overflow:visible}
.school-portal .portal-side-link{min-height:42px;padding:10px 14px;font-size:.84rem;border:1px solid transparent}
.school-portal .portal-side-link:hover{background:#ffffff15}
.school-portal .portal-side-link.is-active{background:#2b4b76;border-color:#ffffff18;box-shadow:inset 3px 0 #77aeff}
.school-portal .portal-side-icon{font-size:1.08rem;color:#a8c7f5}
.school-portal .portal-side-bottom{background:#0b1a30;padding:16px}
.school-portal main,.school-portal main.container,.school-portal main.admin-wrap,.school-portal main[style]{max-width:1530px!important;width:100%!important;margin:0 auto!important;padding:28px clamp(20px,3.5vw,54px)!important;min-width:0}
.school-portal .portal-page-top{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:26px;padding-bottom:16px;border-bottom:1px solid var(--portal-border)}
.school-portal .portal-page-kicker{color:#72829b;font-size:.71rem;letter-spacing:.11em;font-weight:800}
.school-portal .portal-page-kicker span{color:#b2bfd1;margin:0 9px}
.school-portal .portal-page-actions{color:#6b7b91;font-size:.78rem;white-space:nowrap}
.school-portal .portal-live-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#20b987;margin-right:7px}
.school-portal h1{font-size:clamp(1.65rem,2.2vw,2.25rem);font-weight:780;letter-spacing:-.04em;line-height:1.15;margin-bottom:10px}
.school-portal h2{font-size:1.1rem;font-weight:730;margin-bottom:16px}
.school-portal .portal-subtitle{color:#6c7d96;margin:0 0 24px;line-height:1.6}
.school-portal p{line-height:1.6}
.school-portal .card,.school-portal .admin-panel,.school-portal .filters,.school-portal section[style]{border-radius:17px;border-color:#e2e9f2;box-shadow:0 8px 28px #19365b08}
.school-portal .admin-panel{margin:22px 0;padding:clamp(18px,2.4vw,30px)}
.school-portal .admin-panel form.portal-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 22px;align-items:end}
.school-portal .admin-panel form.portal-form-grid>input[type=hidden]{display:none}
.school-portal .admin-panel form.portal-form-grid>label{margin:0;min-width:0}
.school-portal .admin-panel form.portal-form-grid>button{justify-self:start;align-self:end}
.school-portal .admin-panel input,.school-portal .admin-panel select{max-width:none!important}
.school-portal label{font-size:.88rem;color:#344963}
.school-portal input,.school-portal select,.school-portal textarea{border:1px solid #ccd7e6;border-radius:11px;padding:11px 13px;min-height:45px;max-width:100%}
.school-portal input:focus,.school-portal select:focus,.school-portal textarea:focus{outline:3px solid #d9e9ff;border-color:#4a89e8}
.school-portal button,.school-portal .button{background:#1764cf;border:1px solid #1764cf;color:white;border-radius:11px;padding:11px 17px;font-weight:700;transition:filter .15s,transform .15s}
.school-portal button:hover,.school-portal .button:hover{filter:brightness(1.07)}
.school-portal .secondary,.school-portal button.secondary{background:#fff;color:#23446f;border-color:#ccd8e8}
.school-portal .filters{display:flex;flex-wrap:wrap;gap:14px;align-items:end;padding:20px;background:#fff;margin:20px 0 24px}
.school-portal .filters label{flex:1 1 170px;max-width:290px}
.school-portal .filters button{margin-bottom:0}
.school-portal .cards{grid-template-columns:repeat(auto-fit,minmax(min(100%,310px),1fr));gap:20px}
.school-portal .cards .card{padding:24px;min-height:190px;display:flex;flex-direction:column;gap:12px}
.school-portal .cards .card>.meta:last-of-type{margin-top:auto}
.school-portal .tag{background:#e9f1ff;color:#245c9c;font-weight:700;padding:6px 12px}
.school-portal .meta,.school-portal .hint,.school-portal .admin-note{color:#667a94}
.school-portal table{width:100%;border-collapse:separate;border-spacing:0;overflow:hidden;border:1px solid #e6ebf2;border-radius:12px}
.school-portal th{background:#f3f6fb;color:#50647e;font-size:.76rem;letter-spacing:.02em}
.school-portal th,.school-portal td{padding:13px 15px;border-left:0;border-right:0;border-top:0;border-bottom:1px solid #e8edf4}
.school-portal td{font-size:.87rem}.school-portal tr:last-child td{border-bottom:0}
.school-portal .scroll{overflow-x:auto;max-width:100%}
.school-portal .stats{display:grid!important;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:14px!important;margin:22px 0}
.school-portal .stats div{background:#fff!important;padding:20px!important;border:1px solid #e4eaf3!important;min-width:0!important;box-shadow:0 5px 18px #19365b08}
.school-portal .portal-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:15px;margin:25px 0}
.school-portal .portal-kpi{background:#f7f9fe;border:1px solid #e5ebf6;border-radius:15px;padding:20px;display:flex;flex-direction:column;gap:6px}
.school-portal .portal-kpi span{color:#5d718e;font-size:.78rem;font-weight:650}.school-portal .portal-kpi strong{font-size:2.05rem;color:#163963;line-height:1.1}.school-portal .portal-kpi small{color:#8191a8;font-size:.73rem}
.school-portal .portal-quicklinks{display:flex;gap:10px;flex-wrap:wrap;margin-top:20px}.school-portal .portal-quicklinks a{padding:12px 15px;border:1px solid #d9e5f4;border-radius:10px;text-decoration:none;background:white;font-weight:650}
.school-portal details{border-radius:11px;padding:12px!important;margin:8px 0;background:#f8fafd;border:1px solid #e7edf5}
.school-portal details summary{cursor:pointer}
.school-portal .heading{flex-wrap:wrap}.school-portal .heading>.button{flex-shrink:0}
.school-portal .admin-nav{display:none}
@media(max-width:1100px){.school-portal .portal-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:900px){body.school-portal{padding-left:0;padding-top:58px}.school-portal .portal-mobile-toggle{height:58px;display:flex;align-items:center;gap:13px}.school-portal .portal-sidebar{width:min(290px,86vw)}.school-portal main,.school-portal main.container,.school-portal main.admin-wrap,.school-portal main[style]{padding:24px 18px!important}.school-portal .portal-page-top{margin-bottom:20px}}
@media(max-width:620px){.school-portal .portal-page-actions{display:none}.school-portal .portal-kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.school-portal .portal-kpi{padding:15px}.school-portal .admin-panel form.portal-form-grid{grid-template-columns:1fr}.school-portal .filters label{max-width:none}.school-portal .cards{grid-template-columns:1fr}.school-portal .heading{align-items:start}.school-portal .portal-page-top{padding-bottom:12px}.school-portal .admin-panel{padding:18px}.school-portal table{min-width:580px}.school-portal .scroll,.school-portal main{overflow-x:auto}}
@media(prefers-reduced-motion:reduce){.school-portal *{transition:none!important}}

/* Mobile reliability patch: ensure navigation remains hidden without active drawer */
html{overflow-x:hidden}body{overflow-x:hidden}
.school-portal .portal-menu-toggle{position:absolute!important;width:1px!important;height:1px!important;opacity:0!important;pointer-events:none!important}
.school-portal .portal-sidebar{overflow-y:auto}
.school-portal .portal-side-links{min-height:0}
@media(max-width:900px){
 body.school-portal{padding-left:0!important;padding-top:60px!important}
 .school-portal .portal-mobile-toggle{display:flex!important;position:fixed!important;top:0!important;left:0!important;right:0!important;z-index:90!important;background:#10233f!important;color:#fff!important;min-height:60px!important;padding:0 18px!important;align-items:center!important;text-decoration:none!important}
 .school-portal .portal-sidebar{display:flex!important;position:fixed!important;top:0!important;bottom:0!important;left:0!important;right:auto!important;width:min(300px,86vw)!important;z-index:101!important;transform:translateX(-105%)!important;transition:transform .22s ease!important;background:#10233f!important}
 .school-portal #portal-menu-toggle:checked~.portal-sidebar{transform:translateX(0)!important}
 .school-portal #portal-menu-toggle:checked~.portal-backdrop{display:block!important;position:fixed!important;inset:0!important;z-index:100!important;background:rgba(0,0,0,.55)!important}
 .school-portal main,.school-portal main.container,.school-portal main.admin-wrap{width:100%!important;max-width:100%!important;margin:0!important;padding:22px 16px!important;overflow:visible!important}
 .school-portal .portal-page-top{flex-wrap:wrap}
 .school-portal .heading{flex-direction:column;align-items:stretch!important;gap:12px}
 .school-portal .heading>.button{align-self:flex-start}
 .school-portal .filters{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px!important;padding:14px!important}
 .school-portal .filters label{min-width:0!important;width:auto!important;margin:0!important;max-width:none!important}
 .school-portal .filters input{width:100%;min-width:0}
 .school-portal .filters button{grid-column:1/-1;justify-self:start}
 .school-portal .cards{grid-template-columns:minmax(0,1fr)!important;gap:12px!important}
 .school-portal .cards .card{min-height:0!important;padding:18px!important;gap:8px!important;margin:0!important}
 .school-portal .cards .card .heading{flex-direction:row;align-items:center!important;flex-wrap:wrap;gap:8px}
 .school-portal .cards .card h2{margin:0}
 .school-portal .cards .card p{margin:6px 0}
 .school-portal .meta{overflow-wrap:anywhere}
 .school-portal .scroll{overflow-x:auto!important;max-width:100%!important}
 .school-portal table{display:table}
}
@media(max-width:380px){.school-portal .filters{grid-template-columns:1fr}.school-portal .filters button{grid-column:auto}}
