:root{font-family:Inter,system-ui,-apple-system,Segoe UI,Arial,sans-serif;color:#20304b;background:#f3f7fc;font-synthesis:none}*{box-sizing:border-box}[hidden]{display:none!important}body{margin:0}button,input,select,textarea{font:inherit}a{color:#226cb6}.btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;padding:12px 18px;border:1px solid transparent;border-radius:9px;cursor:pointer;font-weight:650;text-decoration:none;line-height:1.3}.btn.primary{background:#286ab3;color:white}.btn.muted{background:#eaf1fb;color:#28528d}.btn:hover{filter:brightness(.95)}input:not([type=checkbox]),select,textarea{padding:12px 13px;border:1px solid #cbd8ea;border-radius:8px;background:#fff;max-width:100%;min-width:0}form{display:flex;gap:12px;flex-wrap:wrap;margin-top:14px;align-items:center}form label{display:flex;gap:8px;flex-direction:column;font-size:13px}form label:has([type=checkbox]){display:flex;flex-direction:row}.formgrid{display:grid;grid-template-columns:repeat(2,minmax(150px,1fr));gap:10px}.formgrid>*{min-width:0}.toast{opacity:0;pointer-events:none;position:fixed;right:24px;bottom:22px;background:#174c89;color:#fff;padding:12px 16px;border-radius:10px;transition:opacity .2s;z-index:99}.toast.show{opacity:1}.toast.bad{background:#a82f35}.sidebar{background:#112b4f;color:#fff;min-width:230px;width:230px;padding:25px 14px;display:flex;flex-direction:column;gap:18px;min-height:100vh}.brand{font-size:23px;font-weight:800;display:flex;gap:10px;align-items:center;padding:3px 11px}.brand small{font-weight:400;font-size:11px;color:#9fb9de;display:block}.mark{font-size:32px;color:#5caff9}.nav{display:flex;flex-direction:column;gap:2px}.navitem{border:0;background:transparent;text-align:left;cursor:pointer;color:#cad9ec;padding:12px 14px;border-radius:8px}.navitem:hover,.navitem.active{background:#285381;color:white}.sidebottom{margin-top:auto;display:flex;flex-direction:column;gap:10px;word-break:break-word;font-size:12px;color:#d4e1f5;padding:14px 8px}#app{display:flex;min-height:100vh}.main{flex:1;min-width:0}.topbar{background:white;display:flex;gap:20px;align-items:center;justify-content:space-between;padding:17px 27px;border-bottom:1px solid #dfe9f6}.topbar>div{display:flex;flex-direction:column}.hint{color:#69809b;font-size:13px}.pill{background:#e9f2fb;color:#205b97;padding:7px 12px;border-radius:80px;font-size:12px}.hero{background:linear-gradient(110deg,#173b6e,#3385c7);color:white;padding:25px 30px;margin:24px 28px;border-radius:16px}.hero h1{margin:10px 0;font-size:28px}.hero p{margin:0;color:#e7f2ff}.tag{display:inline-block;color:#ffe3a7;font-size:12px;letter-spacing:.4px;font-weight:700}.workspace{padding:0 28px 34px}.metrics{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:14px;margin-bottom:20px}.metric{background:white;border:1px solid #dfebf7;border-radius:13px;padding:18px;color:#58718d}.metric strong{display:block;font-size:30px;color:#223b58;margin-top:9px}.panel{background:white;border:1px solid #dfebf7;border-radius:14px;padding:22px;margin:15px 0;overflow-x:auto}.panel h2{margin:0 0 18px;font-size:18px}.tiles{display:flex;gap:12px;flex-wrap:wrap}.tile{background:#f0f5fc;padding:16px;border-radius:11px;min-width:210px}.tile p{font-size:12px}table{border-collapse:collapse;width:100%;margin-top:14px}th,td{padding:12px;border-bottom:1px solid #e8eef7;text-align:left;font-size:13px}th{font-weight:700;color:#647e9b}td{white-space:nowrap}#auth{min-height:100vh;background:linear-gradient(130deg,#102a50,#245f9e);display:flex;align-items:center;justify-content:center;padding:28px}.authcard{background:white;max-width:500px;width:100%;padding:35px;border-radius:20px;box-shadow:0 30px 80px #051a3733}.authcard .logo{font-size:29px;color:#235dab}.authcard h1{margin:12px 0}.authcard form{flex-direction:column;align-items:stretch}.authcard form label input{width:100%}.authcard form button{width:100%}.authcard p,.small{font-size:13px;color:#6c7f95;line-height:1.6}.split{margin:24px 0 9px;padding-top:15px;border-top:1px solid #e1e9f4;color:#63758c;font-size:13px}.kicker{font-size:12px;text-transform:uppercase;letter-spacing:1px;color:#6b8bae}.policy{background:white;max-width:750px;padding:38px;margin:55px auto;border-radius:16px}.policy form{display:flex;align-items:stretch;flex-direction:column}.policy form label{font-size:15px}@media(max-width:980px){.sidebar{min-width:170px;width:170px}.metrics{grid-template-columns:repeat(2,minmax(120px,1fr))}.topbar{flex-wrap:wrap}}@media(max-width:650px){#app{display:block}.sidebar{min-height:unset;width:auto;min-width:unset}.nav{display:grid;grid-template-columns:repeat(3,minmax(80px,1fr))}.brand small{display:none}.sidebottom{margin-top:2px}.hero{margin:12px;padding:18px}.workspace{padding:0 12px}.metrics{grid-template-columns:repeat(2,minmax(80px,1fr))}.topbar{padding:12px}.formgrid{grid-template-columns:1fr}}
/* Public legal pages and link accessibility */
.navlink{display:block;text-decoration:none}.navlink:focus-visible,.btn:focus-visible,.legal-toc a:focus-visible{outline:3px solid #ffbd45;outline-offset:2px}
.legal-body{background:#f3f7fc;line-height:1.66}.legal-top{background:#122f58;color:#fff;display:flex;align-items:center;gap:18px;justify-content:space-between;padding:15px clamp(18px,4vw,65px)}.legal-top a{color:#fff}.legal-top .btn{color:#174b85}.legal-brand{text-decoration:none;font-size:22px}.legal-layout{display:grid;grid-template-columns:225px minmax(0,850px);gap:26px;max-width:1180px;margin:38px auto;padding:0 20px}.legal-toc{align-self:start;position:sticky;top:20px;padding:20px 17px;background:#fff;border:1px solid #dfe8f4;border-radius:13px;display:flex;flex-direction:column;gap:10px;font-size:14px}.legal-toc a{text-decoration:none}.legal-toc a:hover{text-decoration:underline}.legal-main{min-width:0}.legal-intro{padding:32px 36px;background:linear-gradient(115deg,#133965,#2771ae);color:#fff;border-radius:16px}.legal-intro .kicker{color:#c9e7ff}.legal-intro h1{font-size:33px;line-height:1.1;margin:13px 0}.legal-intro p{color:#edf6ff;max-width:680px}.legal-meta{display:flex;gap:18px;flex-wrap:wrap;font-size:13px;color:#d5e9ff}.legal-notice{background:#fff4df;color:#61470c;border:1px solid #efd398;padding:20px;margin:20px 0;border-radius:12px}.legal-section{background:white;border:1px solid #dfe8f4;border-radius:13px;padding:24px 32px;margin-bottom:17px;scroll-margin-top:20px}.legal-section h2{margin:4px 0 16px;color:#173861;font-size:23px}.legal-section p{margin:0 0 16px;color:#385069}.legal-section p:last-child{margin-bottom:0}.legal-section-label{font-size:12px;font-weight:800;letter-spacing:.6px;text-transform:uppercase;color:#3d7cad}.legal-footer{padding:20px 7px 35px;color:#6a829c;font-size:13px}.legal-hint{font-size:13px}.legal-table{border-collapse:collapse;width:100%;table-layout:auto}.legal-table td{white-space:normal}.policy label:has([type=checkbox]){align-items:start;flex-wrap:wrap}.policy label a{margin-left:4px}#agreement-status{background:#eef5ff;color:#265282;padding:12px 14px;border-radius:8px;margin-bottom:15px}
@media(max-width:760px){.legal-layout{display:block;margin:16px auto;padding:0 12px}.legal-toc{position:static;margin-bottom:15px}.legal-toc a{display:inline-block}.legal-intro,.legal-section{padding:21px}.legal-top{flex-wrap:wrap}.legal-intro h1{font-size:27px}}
@media print{.legal-top,.legal-toc,#printLegal,.legal-footer,#history{display:none!important}.legal-layout{display:block;margin:0;padding:0;max-width:none}.legal-section,.legal-intro{border:0;box-shadow:none;break-inside:avoid;print-color-adjust:exact}.legal-notice{break-inside:avoid}body{background:#fff}}
/* School-style universal search, responsive gradebook and transcript tools */
.quicksearch{position:relative;flex:1;min-width:190px;max-width:420px}.quicksearch>input{width:100%;border-radius:999px;background:#f6f9fe;padding-left:18px;border:1px solid #d8e6f4}.quickresults{position:absolute;top:calc(100% + 8px);left:0;right:0;z-index:15;background:#fff;border:1px solid #d5e2f1;box-shadow:0 18px 45px #1131522e;padding:12px;border-radius:12px;max-height:370px;overflow-y:auto}.quickresults strong{font-size:11px;text-transform:uppercase;letter-spacing:.7px;color:#657e97;display:block;margin:11px 5px 5px}.quickresults button,.result-list button{display:block;text-align:left;cursor:pointer;background:white;border:0;border-bottom:1px solid #edf2f8;width:100%;padding:12px;color:#1d4b7d;border-radius:6px}.quickresults button:hover,.result-list button:hover{background:#eaf3fc}.table-scroll{overflow-x:auto;max-width:100%}.table-scroll td{white-space:normal;min-width:75px}.result-list{border:1px solid #e4ecf7;border-radius:10px;max-height:520px;overflow:auto}.record-heading{display:flex;flex-wrap:wrap;align-items:center;gap:12px;padding-bottom:9px}.record-heading h3{margin:0}.record-heading p{margin:2px 0}.record-heading .btn:first-of-type{margin-left:auto}details{margin:8px 0;border:1px solid #dbe7f5;border-radius:10px;padding:12px 15px}details summary{cursor:pointer;color:#195c9d;font-weight:650}details[open]{background:#f9fcff}.term-block{padding:12px 4px;border-top:1px solid #e4edf8}.term-block ul{margin:8px 0 0;padding-left:24px}.year-card{padding:13px 0;border-bottom:1px solid #e4ebf5}.year-card h3{color:#294f79;margin:12px 0}.status-locked{display:inline-flex;align-items:center;padding:5px 8px;border-radius:8px;color:#285a47;background:#e4f5e9;font-size:12px;font-weight:700}.checkbox-row{display:flex!important;align-items:center;gap:8px;grid-column:1/-1}.hero h1{letter-spacing:-.5px}@media(max-width:1000px){.quicksearch{order:3;max-width:none;min-width:180px}}@media(max-width:650px){.quicksearch{width:100%;order:3}.topbar{gap:9px}}
@media print{.sidebar,.topbar,.hero,.btn,.toast,.legal-top,.legal-footer{display:none!important}.workspace{padding:0!important}.main{width:100%}.panel{padding:10px;border:none;box-shadow:none}.panel:not(:first-child){display:none}}

/* v2.4: immediate route feedback, low layout shift */
.loading-card{background:#fff;border:1px solid #dfebf7;border-radius:14px;padding:30px;margin:15px 0;color:#607c98;min-height:140px}.loading-bar{height:13px;background:linear-gradient(90deg,#eff4fa,#dceaf8,#eff4fa);background-size:240% 100%;animation:gfShimmer 1.25s linear infinite;border-radius:8px;margin-bottom:14px;width:65%}.loading-bar.short{width:37%}@keyframes gfShimmer{to{background-position-x:-240%}}.loading-card span{font-size:13px}.btn:disabled{opacity:.55;cursor:progress}