*{box-sizing:border-box}body{margin:0;background:#f5f6f7;color:#25344a;font:16px/1.6 system-ui,sans-serif}header{padding:18px 5vw;background:#fff;border-bottom:1px solid #dfe5e9;display:flex;justify-content:space-between;align-items:center;gap:20px}header a{text-decoration:none;font-weight:750;color:#25344a}header span{font-weight:400;font-size:14px}main{max-width:1100px;margin:36px auto;padding:0 24px}.card{background:#fff;border:1px solid #dfe5e9;border-radius:12px;padding:28px;max-width:540px;margin:0 auto}.card.wide{max-width:none}h1{line-height:1.2;font-size:28px;margin-top:0}h2{font-size:21px}label{display:block;margin:16px 0 5px}input,select,textarea{font:inherit;padding:10px 12px;width:100%;border:1px solid #9baab6;border-radius:6px;background:#fff}button,.button{font:inherit;background:#225b65;color:#fff;padding:10px 18px;border:0;border-radius:6px;cursor:pointer;display:inline-block;text-decoration:none}form button{margin-top:18px}header form button{margin:0}a{color:#225b65}.notice{background:#e6f2ec;padding:16px;border-radius:6px}.error{background:#ffeded;border:1px solid #cf5d5d;padding:12px;border-radius:6px}.error:empty{display:none}.muted{color:#596875}table{border-collapse:collapse;width:100%;margin:20px 0}td,th{padding:12px;border-bottom:1px solid #e2e7eb;text-align:left}code{overflow-wrap:anywhere}svg{max-width:100%}.qr svg{width:220px;height:220px}.actions{display:flex;gap:12px;flex-wrap:wrap}.small{font-size:14px}nav{margin-bottom:24px}.codes{columns:2}iframe.report{width:100%;height:78vh;border:1px solid #cbd5dc;background:white}.report-tools{background:white;padding:20px;margin:16px 0;border-radius:8px}.report-tools input{width:auto}button:disabled{opacity:.5;cursor:default}@media(max-width:650px){header span{display:none}main{padding:0 14px}.card{padding:20px}table{font-size:14px}td,th{padding:8px}.codes{columns:1}}

.eyebrow{font-size:13px;letter-spacing:.12em;font-weight:750;color:#315d9c}.portal-nav{display:flex;gap:24px;flex-wrap:wrap;border-bottom:1px solid #dfe5e9;padding:16px 0}.portal-nav .active{font-weight:700}.portal-nav span{color:#657389}.filters{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.filters label{margin:0;font-size:14px}.filters .actions{align-items:center}.status-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:20px 0}.status-cards .card{margin:0;background:#eef4ff;width:100%}.status-cards strong{display:block;font-size:32px;color:#20467d}.status-cards span{font-size:14px}.card.wide{margin-bottom:20px}.contribution-list{padding-left:20px}.contribution-list li{margin:12px 0}.contribution-list form{display:inline}.contribution-list button{margin:0 0 0 12px;padding:7px 12px}.subject-tabs{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0}.subject-tabs button[aria-pressed=true]{background:#ed742a}@media(max-width:750px){.filters,.status-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}
.sidebar{display:none}.portal-shell{background:#f4f7fa;color:#183553}.portal-shell>header{margin-left:236px;padding:20px 36px;font-size:14px}.portal-shell>main{margin:32px 32px 40px 268px;max-width:1400px;padding:0}.portal-shell .sidebar{display:flex;flex-direction:column;position:fixed;inset:0 auto 0 0;width:236px;background:#102540;color:#e2edf7;padding:28px 18px}.brand img{width:200px;height:auto}.sidebar-label{font-size:11px;letter-spacing:.13em;color:#8caccc;margin:40px 10px 10px;font-weight:700}.sidebar nav{display:grid;gap:8px}.sidebar nav a,.sidebar nav>span{display:block;color:#d4e3f1;text-decoration:none;padding:11px 12px;border-radius:9px;font-size:14px;font-weight:600}.sidebar nav a:hover,.sidebar nav a[aria-current]{background:#234664}.sidebar nav>span{color:#9db3c9}.sidebar small{display:block;font-weight:400;font-size:11px}.sidebar-account{margin-top:auto;border-top:1px solid #37506b;padding:18px 8px;font-size:13px}.sidebar-account p{margin:4px 0;color:#9db3c9}.portal-shell .card{border-color:#dfe8f0;box-shadow:0 3px 10px #18355308}.portal-shell button,.portal-shell .button{background:#2267aa}.portal-shell .eyebrow{color:#008d80}.status-cards .card{background:#fff}.portal-shell .subject-tabs button[aria-pressed=true]{background:#234664}.portal-shell header button{background:white;color:#183553;border:1px solid #cfdce8;font-size:13px}.portal-shell .filters{padding:20px}.portal-shell main>.card{overflow-x:auto}
@media(max-width:1000px){.portal-shell>main{margin-left:226px;margin-right:20px}.portal-shell .sidebar{width:206px}.brand img{width:170px}.portal-shell>header{margin-left:206px;padding:16px 20px}.filters{grid-template-columns:repeat(2,minmax(0,1fr))}.status-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){.portal-shell .sidebar{position:static;width:auto;padding:16px;gap:10px}.brand img{width:160px}.sidebar-label,.sidebar-account{display:none}.sidebar nav{display:flex;flex-wrap:wrap;margin:0;gap:2px}.sidebar nav a,.sidebar nav>span{padding:6px 8px;font-size:12px}.portal-shell>header{margin:0;padding:12px 16px}.portal-shell>main{margin:24px 14px}.filters{grid-template-columns:1fr}.portal-shell main h1{font-size:25px}}
.class-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px}.class-card{border:1px solid #dfe8f0;border-radius:10px;padding:16px}.class-card h3{margin:6px 0}.class-card p{margin:4px 0;font-size:14px}.coverage-warning{color:#8a4b13;background:#fff5e4;padding:8px;border-radius:6px}

.home-intro{margin-bottom:24px}.home-intro h1{font-size:30px;letter-spacing:-.025em;margin-bottom:8px}.home-intro p{margin:6px 0}.home-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin:20px 0 24px}.home-metric.card{width:100%;margin:0;padding:20px}.home-metric h2{font-size:12px;font-weight:650;color:#60748c;margin:0}.home-metric strong{display:block;font-size:30px;line-height:1.2;margin:10px 0;color:#173555}.home-metric p{font-size:12px;margin:0;color:#60748c}.home-modules{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-bottom:24px}.home-modules.single-module{grid-template-columns:1fr}.home-module.card{max-width:none;width:100%;margin:0;padding:26px}.module-pedagogy{background:linear-gradient(110deg,#f0f7ff,#fff)}.module-crm{background:linear-gradient(110deg,#edf8f5,#fff)}.module-symbol{font-size:30px;line-height:1;color:#2267aa}.home-module h2{font-size:22px;margin:12px 0 6px}.home-module p{color:#60748c;max-width:600px}.home-module-links{display:flex;flex-wrap:wrap;gap:16px;margin:18px 0 0}.home-module-links a{display:inline-block;border:1px solid #ccdce9;background:white;border-radius:8px;padding:8px 14px;text-decoration:none;font-weight:650}.home-module-links span{color:#60748c}.home-module-links small{display:block}.home-columns{display:grid;grid-template-columns:1.2fr 1fr;gap:18px;margin-bottom:24px}.home-columns>.card{width:100%;max-width:none;margin:0}.home-columns h2{font-size:17px;margin:0 0 20px}.home-workflow.card{padding:22px 0 0}.home-workflow h2{padding:0 22px}.home-workflow ol{list-style:none;counter-reset:workflow;padding:0;margin:0}.home-workflow li{counter-increment:workflow;position:relative;padding:16px 20px 16px 56px;border-top:1px solid #dfe8f0}.home-workflow li:before{content:counter(workflow);position:absolute;left:18px;top:18px;border-radius:50%;width:26px;height:26px;display:grid;place-items:center;background:#e8f3ff;color:#2267aa;font-weight:700}.home-workflow strong{font-size:14px;display:block}.home-workflow span{display:block;font-size:13px;color:#60748c;line-height:1.5;margin-top:4px}.home-priorities .actions{align-items:center;margin-bottom:18px}.home-priorities h3{font-size:16px;margin-top:28px}.portal-shell a:focus-visible,.portal-shell button:focus-visible{outline:3px solid #bf7b13;outline-offset:3px}.home-schools h2{margin-top:0}#pupil-directory,#review-queue,#worklist{scroll-margin-top:20px}
@media(max-width:1100px){.home-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.home-columns{grid-template-columns:1fr}.home-module.card{padding:22px}}
@media(max-width:750px){.home-modules{grid-template-columns:1fr}.home-metrics{gap:10px}.home-metric.card{padding:16px}.home-intro h1{font-size:26px}}
@media(max-width:420px){.home-metrics{grid-template-columns:1fr}}

.portal-shell{font-family:Inter,"Segoe UI",Arial,sans-serif}

.report-presentation{min-width:0}.report-toolbar{position:sticky;top:0;z-index:20;background:#fff;border:1px solid #cfdce8;border-radius:10px;padding:10px 14px;box-shadow:0 3px 12px #18355314;margin:14px 0}.report-toolbar .report-tools{margin:0;padding:0}.report-toolbar .actions{gap:8px}.report-toolbar button{font-size:13px;padding:8px 12px}.report-toolbar .subject-tabs{margin:8px 0 0;gap:6px}.report-toolbar .subject-tabs button{padding:5px 9px;font-size:12px}.report-decisions{margin-top:8px}.report-decisions>summary,.report-details>summary{cursor:pointer;font-weight:650;padding:6px 0}.report-decision-panel{max-height:45vh;overflow:auto;padding:4px 10px 12px 0}.report-decision-panel form{margin:10px 0}.report-decision-panel form button{margin-top:8px}.report-decision-panel label,.report-decision-panel p{font-size:13px}.report-document-viewport{max-width:100%;overflow-x:auto;margin:0 0 20px;border:1px solid #cbd5dc;background:#eee}.report-presentation iframe.report{display:block;border:0;width:100%;min-width:calc(210mm + 40px);height:78vh}.report-details.card{max-width:none;margin:16px 0;padding:16px 20px}.report-details[open]>summary{margin-bottom:12px}.report-details:focus-within,.report-document-viewport:focus-visible{outline:3px solid #bf7b13;outline-offset:3px}.report-presentation details>summary:focus-visible{outline:3px solid #bf7b13;outline-offset:3px}@media(max-width:700px){.report-toolbar{padding:8px;top:0}.report-toolbar .actions{gap:5px}.report-toolbar .actions button{padding:7px 8px;font-size:12px}.report-toolbar .subject-tabs{flex-wrap:nowrap;overflow-x:auto;padding:3px 0 5px}.report-toolbar .subject-tabs button{white-space:nowrap;flex:none}.report-decision-panel{max-height:40vh}}

/* Editor toolbar (12 Nov): one row of buttons, save indicator, team confirmations on one line. */
.report-heading-line{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px}.report-heading-line .dossier-selection{margin:0}.report-progress{display:flex;flex-wrap:wrap;gap:6px;list-style:none;margin:0;padding:0;font-size:13px}.report-progress li{margin:0;padding:3px 10px;border-radius:999px;border:1px solid #e0b25c;background:#fff6e5;color:#7a4b00}.report-progress li.is-done{border-color:#8cc79f;background:#e7f4ea;color:#1b5e31}.report-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.report-actions form{margin:0;display:inline-flex}.report-toolbar button.finish-part{background:#1b7f3b;border-color:#1b7f3b;color:#fff;font-weight:700}.report-toolbar button.finish-part:hover{background:#14612d}.save-indicator{margin-left:auto;font-size:13px;padding:5px 12px;border-radius:999px;background:#eef1f4;color:#4a5560;overflow-wrap:anywhere}.save-indicator.is-saved{background:#e7f4ea;color:#1b5e31}.save-indicator.is-error{background:#fdecec;color:#9b1c1c;font-weight:600}.report-toolbar button.retry-save{background:#9b1c1c;border-color:#9b1c1c;color:#fff}.report-message{margin:0 0 8px;font-size:13px}.report-decisions{margin-top:10px;padding-top:8px;border-top:1px solid #e1e8ef}.report-pdf{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;font-size:13px}.report-pdf p{flex-basis:100%;margin:0}@media(max-width:700px){.save-indicator{margin-left:0}}
/* Sticky wrapper is transparent: a white card for the buttons, the subject tabs below it, as in the demo. */
.report-toolbar{background:#f5f6f7;border:0;border-radius:0;box-shadow:none;padding:8px 0 10px}.report-toolbar .report-tools{background:#fff;border:1px solid #cfdce8;border-radius:10px;padding:10px 14px;box-shadow:0 3px 12px #18355314}.report-toolbar .subject-tabs{margin:10px 0 0;gap:8px}.report-toolbar .subject-tabs button{padding:7px 14px;font-size:14px}.dossier-editor>.report-toolbar{padding:8px 0 10px}@media(max-width:700px){.report-toolbar .report-tools{padding:8px}.report-toolbar .subject-tabs button{padding:5px 9px;font-size:12px}}
.report-toolbar [hidden]{display:none!important}.report-actions form button,.report-actions button{margin:0}.dossier-editor>.report-toolbar{background:#fff}
.report-toolbar .subject-tabs{margin:0;padding:12px 0 6px}.portal-shell .report-toolbar .subject-tabs button{background:#eaf3fc;color:#1f5f99;border:1px solid #8fb5da;box-shadow:none}.portal-shell .report-toolbar .subject-tabs button:hover{background:#cfe2f5}.portal-shell .report-toolbar .subject-tabs button[aria-pressed=true]{background:#1f5f99;color:#fff;border-color:#1f5f99}.report-actions .step{font-weight:700;opacity:.85;margin-right:2px}
.pdf-pending{display:inline-flex;align-items:center;gap:8px;color:#1f5f99;font-weight:600}.pdf-pending .spinner{width:14px;height:14px;border:2px solid #b9d3ea;border-top-color:#1f5f99;border-radius:50%;animation:cube-spin .8s linear infinite}@keyframes cube-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.pdf-pending .spinner{animation:none}}
.account-ok{color:#1b5e31;font-weight:600}.account-pending{color:#7a4b00;font-weight:600}
.doc-progress{display:block;margin-top:3px;font-size:12px;line-height:1.5}.doc-progress .is-done{color:#1b5e31;font-weight:600}.doc-progress .is-pending{color:#9a5b00;font-weight:600}.doc-progress .is-editing{display:block;color:#1f5f99}
.sidebar-account .sidebar-security{display:block;margin-top:6px;font-size:13px;color:#cfe2f5}.card label.checkbox{display:flex;gap:8px;align-items:flex-start;font-weight:400;margin:10px 0}.card label.checkbox input{width:auto;margin-top:4px}.card form+form{margin-top:10px}button.secondary{background:#fff;color:#1f5f99;border:1px solid #8fb5da}
.staff-card .staff-head{margin:0 0 4px}.staff-card p{margin:4px 0}.staff-card.is-inactive{opacity:.75}.staff-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:10px}.staff-actions form,.staff-card .inline-form{margin:0;display:inline-flex}.staff-actions button,.staff-card .inline-form button{margin:0}.staff-card .inline-form{margin-left:10px;vertical-align:middle}.small-button{padding:3px 10px;font-size:12px}.account-suspended{color:#9b1c1c;font-weight:600}.staff-reset{margin-top:12px}.staff-reset summary{cursor:pointer;font-size:14px;color:#1f5f99}.staff-reset form{max-width:520px}
.staff-actions{align-items:stretch}.staff-actions form{align-items:stretch}.staff-actions button{border:1px solid #2267aa;line-height:1.3;padding:10px 16px;margin:0!important}.staff-actions button.secondary{border-color:#8fb5da}
.card .staff-actions form+form{margin-top:0}.staff-actions{align-items:center}
