* { box-sizing:border-box; }


body { margin:0;background:var(--color-page);color:var(--color-ink);font:14px/1.5 var(--font-body); }
button,input,select { font:inherit; }button { cursor:pointer; }a { color:var(--color-accent-ink); }[hidden] { display:none!important; }:focus-visible { outline:2px solid var(--color-focus);outline-offset:3px; }.sr-only { position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap; }
.skip-link { position:fixed;top:10px;left:10px;z-index:10;padding:12px;background:var(--color-surface);transform:translateY(-200%); }.skip-link:focus { transform:none; }
.page { max-width:1920px;margin:auto;padding:24px 16px 28px; }h1,h2,h3,p { margin-top:0; }h1 { font-size:clamp(28px,3vw,36px);margin:0;letter-spacing:-.045em;line-height:1.2; }h2 { margin:0;font-size:15px; }.page-header { display:flex;flex-direction:column;gap:20px;margin-bottom:24px; }.eyebrow { margin:0 0 7px;color:var(--color-accent-ink);font-size:12px;font-weight:650; }.title-row { display:flex;align-items:center;gap:11px; }.title-row img,.footer-brand img { object-fit:contain;flex-shrink:0; }.top-tools,.action-row { display:flex;align-items:center;flex-wrap:wrap;gap:10px; }
.button { display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:44px;padding:10px 16px;border:1px solid var(--color-border);border-radius:8px;background:var(--color-surface);color:var(--color-ink);text-decoration:none;font-weight:600;white-space:nowrap; }.button.primary { background:var(--color-accent);border-color:var(--color-accent);color:var(--color-on-accent); }.text-button { min-height:44px;padding:8px 4px;border:0;background:transparent;color:var(--color-muted);font-weight:550; }.theme-switch { display:flex;padding:3px;border:1px solid var(--color-border);border-radius:10px;background:var(--color-surface); }.theme-switch button { display:grid;place-items:center;width:40px;min-height:38px;border:0;border-radius:7px;background:transparent;color:var(--color-muted);font-size:20px; }.theme-switch button[aria-pressed='true'] { color:var(--color-accent-ink);background:var(--color-accent-soft); }
.preview-notice { margin:12px 0 18px;font-size:12px;color:var(--color-muted); }.status-message { margin:0 0 16px;padding:10px 14px;border:1px solid var(--color-border);border-radius:8px;background:var(--color-surface);color:var(--color-success);font-size:13px; }.status-message[data-kind='error'] { color:var(--color-error); }
input,select { width:100%;min-width:0;height:44px;padding:10px 12px;border:1px solid var(--color-border);border-radius:8px;background:var(--color-surface);color:var(--color-ink); }input::placeholder { color:var(--color-muted); }input[aria-invalid='true'] { border-color:var(--color-error); }
.search-panel,.table-panel { min-width:0;border:1px solid var(--color-border);border-radius:16px;background:var(--color-surface); }.search-panel { padding:16px;margin-bottom:20px; }.search-form { display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:end;gap:10px; }.search-form>select { grid-column:1/-1;width:150px;font-weight:650;color:var(--color-accent-ink);background:var(--color-accent-soft);border-color:transparent; }.search-field { grid-column:1/-1;position:relative; }.search-field>span[aria-hidden] { position:absolute;left:14px;top:6px;color:var(--color-muted);font-size:25px; }.search-field input { padding-left:42px; }
.table-panel { overflow:hidden; }.filter-toolbar { display:flex;flex-direction:column;gap:15px;padding:18px 16px; }.table-heading { display:flex;align-items:baseline;gap:9px;flex-shrink:0; }.table-heading #result-count { color:var(--color-accent-ink);font-size:11px; }.filters { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px; }.filter-label { min-width:0;display:grid;gap:4px;font-size:11px;color:var(--color-muted); }.filter-label select { font-size:12px;height:40px;padding:8px; }
.table-scroll { width:100%;overflow:auto;overscroll-behavior-x:contain;scrollbar-width:thin; }.school-table { width:100%;min-width:1060px;border-collapse:collapse;table-layout:fixed;font-size:12px; }.school-column { width:160px; }.district-column { width:65px; }.grade-column { width:55px; }.subject-column { width:100px; }.book-column { width:115px; }.print-column { width:110px; }.source-column { width:100px; }.exam-column { width:60px; }.score-column { width:60px; }.action-column { width:65px; }
th { background:var(--color-soft);color:var(--color-muted);font-size:11px;font-weight:550;text-align:center;padding:13px 8px;border-top:1px solid var(--color-border);border-bottom:1px solid var(--color-border);white-space:nowrap; }td { padding:12px 8px;border-bottom:1px solid var(--color-border);text-align:center;vertical-align:middle;overflow-wrap:anywhere; }.school-group-start td { border-top:1px solid var(--color-border); }.school-table th:first-child,.school-cell { text-align:left;padding-left:16px; }.school-cell { vertical-align:top;padding-top:15px; }.school-cell>strong { display:block;font-size:12px;font-weight:650;white-space:normal; }.school-info { color:var(--color-muted);font-size:10px;margin-top:6px; }.school-info summary,.row-details summary { cursor:pointer; }.school-info p { margin:6px 0; }.school-info a { display:block;margin-top:5px; }.annual-link { display:block;border:0;padding:5px 0;background:transparent;color:var(--color-accent-ink);font-size:10px;text-align:left; }.district-cell { vertical-align:top;padding-top:15px; }.subject-tag { display:inline-block;padding:3px 7px;border-radius:5px;background:var(--color-accent-soft);color:var(--color-accent-ink);font-size:11px; }.muted,.book-note { color:var(--color-muted); }.book-note,.local-note { display:block;font-size:10px;margin-top:5px; }.local-note { color:var(--color-accent-ink); }.row-details { text-align:left;font-size:10px;margin-top:7px;color:var(--color-muted); }.row-details p { margin:8px 0;white-space:pre-line;overflow-wrap:anywhere; }.row-details a { display:block;margin-top:7px;overflow-wrap:anywhere; }.assessment-note { display:block;font-size:10px;margin-top:5px;color:var(--color-accent-ink); }.exam-values { display:grid;gap:9px;font-variant-numeric:tabular-nums; }.exam-values>span { min-height:18px; }.row-edit { min-height:38px;border:1px solid var(--color-border);border-radius:6px;padding:6px 10px;background:var(--color-surface);color:var(--color-muted);font-size:11px; }.table-bottom { display:flex;flex-direction:column;gap:6px;padding:14px 16px;color:var(--color-muted);font-size:11px; }.table-bottom p { margin:0; }.table-bottom>span { white-space:nowrap; }.empty-state { text-align:center;padding:48px 16px; }.empty-state h3 { font-size:17px;margin-bottom:6px; }.empty-state p { color:var(--color-muted);font-size:13px; }
.page-footer { display:flex;align-items:center;flex-wrap:wrap;gap:18px;margin-top:24px;color:var(--color-muted);font-size:11px; }.footer-brand { display:flex;align-items:center;gap:8px;font-size:13px;color:var(--color-ink); }.page-footer p { margin:0; }.page-footer .text-button { margin-left:auto;font-size:11px; }
dialog { width:min(680px,calc(100% - 24px));max-height:calc(100dvh - 32px);margin:auto;padding:24px 18px;color:var(--color-ink);background:var(--color-surface);border:1px solid var(--color-border);border-radius:14px;box-shadow:var(--shadow-dialog);overflow:auto; }dialog::backdrop { background:var(--color-backdrop); }.dialog-heading { display:flex;align-items:center;justify-content:space-between;gap:10px; }.dialog-heading h2 { font-size:23px; }.close-button { border:0;background:transparent;color:var(--color-muted);min-width:44px;min-height:44px;font-size:27px; }.dialog-note { color:var(--color-muted);font-size:12px;margin:15px 0 20px; }.form-grid { display:grid;grid-template-columns:minmax(0,1fr);gap:13px; }.form-grid label { display:flex;align-items:baseline;flex-wrap:wrap;gap:6px;font-size:12px;font-weight:550; }.form-grid input,.form-grid select { flex-basis:100%;font-size:14px;font-weight:400; }.required { color:var(--color-accent-ink);font-size:10px; }.score-fields { min-width:0;border:0;padding:0;margin:22px 0; }.score-fields legend { margin-bottom:12px;font-size:12px;font-weight:550; }.score-fields legend span { font-size:11px;color:var(--color-muted);font-weight:400; }.score-grid { display:grid;grid-template-columns:30px repeat(3,minmax(0,1fr));gap:7px;align-items:center;text-align:center;font-size:11px;color:var(--color-muted); }.score-grid input { text-align:center;padding:6px; }.form-error { color:var(--color-error);font-size:12px;padding:10px;border:1px solid var(--color-error);border-radius:8px; }.dialog-actions { padding-top:18px;border-top:1px solid var(--color-border);display:flex;align-items:center;flex-wrap:wrap;justify-content:flex-end;gap:8px; }.dialog-actions>span { width:100%;font-size:11px;color:var(--color-muted); }.help-content { color:var(--color-muted); }.help-content p { margin:20px 0; }.source-list { font-size:13px;padding-left:20px; }.source-list li { padding:8px 0; }.source-list a { overflow-wrap:anywhere; }
@media(hover:hover) { .button:hover,.row-edit:hover { background:var(--color-soft); }.button.primary:hover { background:var(--color-accent-hover); } }
@media(min-width:640px) { .page { padding:28px 24px; }.page-header { flex-direction:row;align-items:center;justify-content:space-between; }.search-panel { padding:20px; }.search-form { grid-template-columns:150px minmax(0,1fr) auto auto; }.search-form>select,.search-field { grid-column:auto; }.search-form>select { width:100%; }.filters { display:flex;flex-wrap:wrap;gap:8px; }.filter-label { min-width:95px; }.filter-label select { max-width:150px; }.form-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }.span-two { grid-column:1/-1; }dialog { padding:26px; }.dialog-actions>span { width:auto;margin-right:auto; }.table-bottom { flex-direction:row;justify-content:space-between;gap:20px; } }
@media(min-width:1100px) { .filter-toolbar { flex-direction:row;align-items:center;justify-content:space-between;padding:18px 20px; }.filter-label { display:block;font-size:0; }.filter-label select { font-size:12px; }.filters { justify-content:flex-end; } }
@media(max-width:359px) { .page { padding-inline:10px; }.top-tools { gap:6px; } }
@media(prefers-reduced-motion:reduce) { *,*::before,*::after { scroll-behavior:auto!important;transition:none!important; } }
.semester-badge { display:block;color:var(--color-muted);font-size:10px;margin-bottom:4px; }.lookup-panel { padding:12px;border:1px solid var(--color-border);border-radius:8px;background:var(--color-soft); }.lookup-heading { display:flex;justify-content:space-between;align-items:center;gap:10px;font-size:12px; }.lookup-status { margin-top:8px;color:var(--color-muted);font-size:12px;overflow-wrap:anywhere; }.lookup-source { margin-top:6px;font-size:11px; }
.lookup-counts,.lookup-receipt { margin-top:8px;color:var(--color-muted);font-size:11px;overflow-wrap:anywhere; }.lookup-history { margin-top:8px;font-size:11px; }.lookup-history summary { cursor:pointer; }.lookup-history p { margin:6px 0; }



.is-public .action-column,.is-public .school-table th:last-child,.is-public .action-cell { display:none; }
.is-admin .action-column { width:185px; }.is-admin .school-table { min-width:1400px; }
.action-cell { white-space:normal; }.action-cell .row-edit { margin:3px;padding:5px 7px;min-height:34px; }.publish-button { color:var(--color-accent-ink); }
.review-badge { display:block;margin-top:5px;font-size:10px; }.review-badge.verified { color:var(--color-success); }.review-badge.pending { color:var(--color-muted); }
.published-filter { display:flex;align-items:center;gap:6px;font-size:11px;color:var(--color-muted);white-space:nowrap; }.published-filter input { width:15px;height:15px;accent-color:var(--color-accent); }
.semester-start td { border-top:2px solid var(--color-border); }.semester-start .semester-badge { font-weight:650;color:var(--color-accent-ink); }
.table-scroll { max-height:74dvh; }.school-table th { position:sticky;top:0;z-index:3; }.school-cell { position:sticky;left:0;z-index:2;background:var(--color-surface); }.school-table th:first-child { left:0;z-index:4; }
.history-entry,.ocr-candidate { padding:14px 0;border-bottom:1px solid var(--color-border); }.history-entry p,.ocr-candidate p { margin:7px 0;font-size:12px; }.history-entry strong { font-size:12px; }.ocr-panel { padding:12px;border:1px solid var(--color-border);border-radius:8px; }.ocr-text { font:12px/1.6 var(--font-body);white-space:pre-wrap;max-height:300px;overflow:auto; }.remote-ocr-button { display:block;margin-top:8px;white-space:normal;text-align:left; }.range-text { white-space:pre-line; }
.status-message { overflow-wrap:anywhere; }
.score-sync-status { display:flex;flex-wrap:wrap;gap:4px 14px;margin:-6px 0 18px;color:var(--color-accent-ink);font-size:11px; }
.score-sync-status[data-state='stale'],.score-sync-status[data-state='unavailable'] { color:var(--color-muted); }
.exam-values:has(.linked-score) { grid-auto-rows:minmax(31px,auto);gap:9px; }
.school-table tr:has(.linked-score) .exam-values { grid-auto-rows:minmax(31px,auto); }
.linked-score { display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:2px; }
.score-link-marker { color:var(--color-accent-ink);font-size:9px;line-height:1.2;white-space:nowrap;cursor:help; }
.score-form-note { margin:12px 0 0;font-size:11px;color:var(--color-muted); }
.school-type,.source-date { display:block;margin-top:5px;color:var(--color-muted);font-size:10px; }.source-entry { margin:8px 0; }.source-entry a { overflow-wrap:anywhere; }
@media(max-width:639px) { .school-column { width:142px; }.school-table { min-width:1130px; }.school-cell>strong { white-space:normal; }.page-header { gap:14px; }.top-tools { gap:7px; }.top-tools .button { font-size:12px;padding:8px 10px; }.table-scroll { max-height:68dvh; }.filters { grid-template-columns:repeat(2,minmax(0,1fr)); }.published-filter { grid-column:1/-1; } }
.updates-form { display:flex;align-items:end;gap:10px;flex-wrap:wrap; }.updates-form label { display:grid;gap:5px;flex:1;min-width:150px;font-size:12px; }.updates-form .button { flex-shrink:0; }
@media(pointer:coarse) { .row-edit,.theme-switch button { min-height:44px;min-width:44px; } }
.editor-tools { margin-bottom:10px; }.access-state { color:var(--color-muted);font-size:12px; }.teacher-login-panel { max-width:680px;padding:20px;margin:0 0 20px;border:1px solid var(--color-border);border-radius:12px;background:var(--color-surface); }.teacher-login-panel h2 { font-size:20px;text-wrap:balance; }.teacher-login-panel p { margin:12px 0;color:var(--color-muted);font-size:13px;text-wrap:pretty; }.teacher-login-form { display:flex;align-items:end;gap:12px;flex-wrap:wrap; }.teacher-login-form label { display:grid;gap:6px;flex:1;min-width:180px;font-size:12px; }.teacher-login-form .button { flex-shrink:0; }.teacher-login-panel .form-error { color:var(--color-error); }.school-picker-label { display:grid;gap:7px;margin-bottom:18px;font-size:12px; }.archived-school-list { margin-top:22px;color:var(--color-muted);font-size:13px; }.archived-school-list summary { cursor:pointer; }.is-teacher .action-column { width:80px; }.is-teacher .school-table { min-width:1080px; }

.date-original { flex-basis:100%;color:var(--color-muted);font-size:11px;font-weight:400; }
.filter-label input { font-size:12px;height:40px;padding:8px; }
.exam-period-field { min-width:0;display:grid;align-content:start;gap:6px;font-size:12px;font-weight:550; }.exam-period-inputs { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px; }.exam-period-inputs label { color:var(--color-muted);font-size:11px; }.exam-period-inputs input { padding:10px 7px; }
.exam-column { width:190px; }.school-table,.is-teacher .school-table { min-width:1200px; }.exam-entry { min-height:45px;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:4px; }.exam-heading { font-size:11px;line-height:1.6; }.exam-range { width:100%;text-align:left;font-size:10px;color:var(--color-muted); }.exam-range summary { cursor:pointer;text-align:center; }.exam-range p { margin:8px 0 0;overflow-wrap:anywhere; }.exam-cell .exam-values { grid-auto-rows:auto; }
.quick-guide,.favorites-panel,.review-inbox { margin:18px 0;padding:18px 20px;border:1px solid var(--color-border);border-radius:var(--radius-panel);background:var(--color-surface); }
.quick-guide summary { cursor:pointer;font-size:13px;font-weight:650;color:var(--color-accent-ink);min-height:24px; }
.quick-guide-body { max-width:850px;font-size:13px;line-height:1.8; }.quick-guide-body ol,.help-content ol { padding-left:22px; }.quick-guide-body li,.help-content li { margin:9px 0; }.quick-guide-body p { margin:12px 0; }
.workspace-heading { display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap; }.workspace-heading h2 { margin:0;font-size:16px; }.workspace-heading p { margin:6px 0 0;font-size:12px;color:var(--color-muted);line-height:1.7; }
.favorite-schools { display:flex;flex-wrap:wrap;gap:8px;margin-top:12px; }.favorite-schools p { margin:0;font-size:12px; }.favorite-chip { border:1px solid var(--color-border);border-radius:8px;background:var(--color-accent-soft);color:var(--color-accent-ink);padding:8px 12px;min-height:40px;font:inherit;font-size:12px; }
.school-name { display:flex;align-items:flex-start;gap:5px; }.school-name strong { padding-top:10px;font-size:12px; }.favorite-toggle { flex-shrink:0;border:0;background:transparent;color:var(--color-muted);font-size:21px;min-width:36px;min-height:40px;padding:3px; }.favorite-toggle[aria-pressed='true'] { color:var(--color-accent-ink); }
#review-count { margin-left:6px;color:var(--color-accent-ink);font-size:13px; }#review-list { max-height:380px;overflow:auto;margin-top:12px; }.review-item { display:flex;align-items:center;justify-content:space-between;gap:16px;border-top:1px solid var(--color-border);padding:13px 0; }.review-item strong { font-size:12px; }.review-item p { font-size:11px;margin:6px 0 0; }.review-item .button { flex-shrink:0; }
.review-comparison-scroll { overflow:auto; }.review-comparison { width:100%;border-collapse:collapse;font-size:12px;table-layout:fixed; }.review-comparison th { position:static;white-space:normal; }.review-comparison td { white-space:pre-line;text-align:left;vertical-align:top; }.review-comparison th:first-child { width:24%; }.publisher-confirm { display:flex;align-items:center;gap:8px;margin-top:18px;font-size:13px; }.publisher-confirm input { width:18px;height:18px;flex-shrink:0; }.help-content h3 { color:var(--color-ink);font-size:16px;margin:24px 0 10px; }.help-content p { margin:10px 0 18px; }
.contributor-fields { margin:20px 0 0;padding:14px;border:1px solid var(--color-border);border-radius:8px;min-width:0; }.contributor-fields legend { font-size:13px;font-weight:650;padding:0 5px; }.contributor-fields legend span { font-size:11px;font-weight:400;color:var(--color-muted);margin-left:6px; }.contributor-fields .dialog-note { margin:10px 0 0;font-size:11px; }.contributor-record { color:var(--color-accent-ink);overflow-wrap:anywhere; }
@media(max-width:639px) { .quick-guide,.favorites-panel,.review-inbox { padding:15px; }.school-name { gap:2px; }.favorite-toggle { min-width:30px; }.review-item { gap:8px; }.workspace-heading { align-items:flex-start; } }
.help-steps { color:var(--color-ink);line-height:1.75; }.help-steps li { margin:14px 0; }.help-more { margin:20px 0; }.help-more>summary { cursor:pointer;color:var(--color-accent-ink);font-size:13px;font-weight:600;padding:10px 0; }
