:root{--bad-bg:#fdebec;--bad-line:#f2b1b7;--border-dg:#727272;--brand:var(--primary-color);--brand-strong:#8f1620;--card:#fff;--card-soft:#f5f9ff;--err:#9e1d1d;--hub-theme-accent:#2f5be3;--hub-theme-accent-soft:rgba(47,91,227,.1);--hub-theme-accent-strong:#17329a;--hub-theme-banner-bg:var(--primary-color);--hub-theme-banner-border:hsla(0,0%,100%,.18);--hub-theme-banner-text:var(--secondary-color);--hub-theme-card-admin-border:#b50010;--hub-theme-card-admin-border-soft:rgba(255,219,223,.9);--hub-theme-card-admin-icon:#b50010;--hub-theme-card-admin-tone:var(--primary-color);--hub-theme-card-admin-tone-border:rgba(181,0,16,.96);--hub-theme-card-admin-tone-soft:rgba(181,0,16,.22);--hub-theme-card-parent-border:#303030;--hub-theme-card-parent-border-soft:#ededed;--hub-theme-card-parent-icon:#404040;--hub-theme-card-parent-tone:hsla(0,0%,44.3%,.95);--hub-theme-card-parent-tone-border:rgba(50,50,50,.92);--hub-theme-card-parent-tone-soft:rgba(95,94,93,.16);--hub-theme-card-student-border:#002786;--hub-theme-card-student-border-soft:rgba(220,228,245,.9);--hub-theme-card-student-icon:rgba(0,39,134,.8);--hub-theme-card-student-tone:rgba(0,39,134,.6);--hub-theme-card-student-tone-border:rgba(0,39,134,.96);--hub-theme-card-student-tone-soft:rgba(0,39,134,.16);--hub-theme-card-subtitle:#3f4f66;--hub-theme-card-title:#152033;--hub-theme-footer-bg:var(--tertiary-color);--hub-theme-footer-text:var(--secondary-color);--hub-theme-link:var(--brand-2);--hub-theme-page-bg-body:linear-gradient(180deg,#577284,#edf1f6);--hub-theme-page-bg-end:#edf1f6;--hub-theme-page-bg-glow:rgba(87,114,132,.2);--hub-theme-page-bg-mid:rgba(87,114,132,.44);--hub-theme-page-bg-start:#577284;--hub-theme-panel-bg:var(--secondary-color);--hub-theme-panel-bg-footer:var(--secondary-color);--hub-theme-panel-bg-hero:var(--secondary-color);--hub-theme-panel-bg-section:var(--secondary-color);--hub-theme-panel-bg-soft:#f7faff;--hub-theme-panel-bg-support:#edf3fa;--hub-theme-panel-border:rgba(6,11,20,.67);--hub-theme-panel-shadow:none;--hub-theme-text:#212121;--hub-theme-text-soft:#414141;--ink:#212121;--ink-soft:#414141;--line:#7388a3;--line-strong:#5f7391;--menu-bg:#f7faff;--menu-border:#d7dfea;--menu-header-bg:#eef3ff;--menu-link-active-bg:#edf4ff;--menu-link-bg:#fff;--ok:#1f7a4f;--ok-bg:#e8f8ef;--ok-line:#90d3ad;--open-bg:#fff7e6;--open-line:#f5cc85;--portal-action-blue-border:#13346f;--portal-action-blue-bottom:#183f89;--portal-action-blue-text:#fdfefe;--portal-action-blue-top:#2d66cb;--portal-action-green-border:#185433;--portal-action-green-bottom:#1f6e43;--portal-action-green-text:#f7fff9;--portal-action-green-top:#349f61;--portal-action-red-border:#75131b;--portal-action-red-bottom:#8f1620;--portal-action-red-text:#fff8f8;--portal-action-red-top:#cc4452;--portal-border:rgba(115,136,163,.96);--portal-border-strong:#5f7391;--portal-chart-axis-label:var(--portal-text-soft);--portal-chart-surface:var(--portal-surface-card);--portal-chart-surface-soft:var(--portal-surface-support);--portal-dark-bg:#1a1c1f;--portal-dark-border:hsla(0,0%,100%,.42);--portal-dark-border-strong:hsla(0,0%,100%,.36);--portal-dark-card:#3c4248;--portal-dark-card-deep:#25292c;--portal-dark-card-soft:#484f56;--portal-dark-field-bg:#272c2f;--portal-dark-field-border:#aeb7c5;--portal-dark-field-active-bg:#4b5157;--portal-dark-field-active-border:#c8d0da;--portal-dark-field-placeholder:#58657a;--portal-dark-field-text:var(--secondary-color);--portal-dark-page-bg:linear-gradient(180deg,#1a1c1f,#25292c);--portal-dark-panel:#25292c;--portal-dark-panel-soft:#31363a;--portal-dark-radius:var(--radius-3);--portal-dark-surface-card:linear-gradient(180deg,rgba(60,66,72,.98),rgba(49,54,58,.98));--portal-dark-surface-panel:linear-gradient(180deg,rgba(46,46,48,.98),rgba(49,49,49,.99));--portal-dark-surface-soft:#3c4248;--portal-dark-surface-support:#484f56;--portal-dark-text:#f2f4f7;--portal-dark-text-soft:#c9ced4;--portal-dark-theme-toggle-icon-bg:hsla(0,0%,100%,.12);--portal-dark-theme-toggle-ink:#ffd76a;--portal-data-label:var(--portal-text-soft);--portal-field-placeholder:#6b7f97;--portal-login-form-max-width:430px;--portal-login-link:var(--brand-2);--portal-login-link-dark:#d7e4ff;--portal-login-panel-max-width:550px;--portal-page-bg-base:#577284;--portal-page-bg:linear-gradient(180deg,#577284,#7c909d 18%,#dbe3ea 62%,#edf1f6);--portal-status-bad-bg:#fde4e2;--portal-status-bad-border:#e7b6b2;--portal-status-bad-text:#8a1f1c;--portal-status-good-bg:#e7f8ee;--portal-status-good-border:#90d3ad;--portal-status-good-text:#155f3f;--portal-status-amber-bg:#fff1d0;--portal-status-amber-border:#d68a00;--portal-status-amber-text:#744300;--portal-status-info-bg:#eaf2ff;--portal-status-info-border:#9ab9e0;--portal-status-info-text:#18436f;--portal-status-neutral-bg:#f5f9ff;--portal-status-neutral-border:#c8d5e8;--portal-status-neutral-text:#345777;--portal-status-peer-bg:#f1f5ff;--portal-status-peer-border:#b3c3dd;--portal-status-peer-text:#214072;--portal-status-revise-bg:#55389f;--portal-status-revise-border:#3f2977;--portal-status-revise-text:#fff;--portal-status-warn-bg:#fff3d8;--portal-status-warn-border:#e5cb66;--portal-status-warn-text:#6a4a00;--portal-support-message:var(--portal-text-soft);--portal-button-surface:#f5f9ff;--portal-button-surface-hover:#f3f8ff;--portal-button-border:#b8cce4;--portal-button-border-hover:#7fa4d4;--portal-assignment-head-bg:linear-gradient(180deg,color-mix(in srgb,var(--portal-surface-card) 92%,var(--brand) 8%),var(--portal-surface-card));--portal-calendar-status-bad-bg:#d92d20;--portal-calendar-status-good-bg:#2e7d32;--portal-calendar-status-open-bg:#0f4a73;--portal-calendar-status-revise-bg:#7a59cc;--portal-calendar-status-submitted-bg:#f6a609;--portal-calendar-status-text-strong:#fff;--portal-calendar-status-text-soft:#173b78;--portal-control-border:#9bb5df;--portal-control-surface:#f1f5ff;--portal-control-surface-hover:#f3f8ff;--portal-control-text:#214072;--portal-control-shadow-hover:0 8px 16px rgba(19,35,61,.12);--portal-field-state-info:#5774a5;--portal-field-state-locked:#8f3939;--portal-field-state-edited:#124990;--portal-field-state-muted:#5f6d7b;--portal-field-invalid-shadow:0 0 0 1px rgba(242,138,149,.22);--portal-homework-link:#174f92;--portal-homework-link-hover:#0f3c70;--portal-homework-square-border:#b7c8dd;--portal-homework-square-text:#264868;--portal-metric-border:#8ea3c1;--portal-modal-backdrop-strong:rgba(8,22,40,.56);--portal-modal-backdrop:rgba(8,22,40,.52);--portal-panel-shadow:0 8px 22px rgba(17,38,63,.08);--portal-panel-shadow-strong:0 26px 60px rgba(8,22,40,.26);--portal-panel-shadow-soft:0 8px 22px rgba(10,28,48,.18);--portal-pill-bg:#eff6ff;--portal-pill-border:#cde0fb;--portal-pill-text:#184372;--portal-primary-text-strong:#fff;--portal-quick-link-hover-border:#6f97cb;--portal-quarter-button-current-shadow:0 0 0 1px rgba(0,39,134,.1);--portal-quarter-button-hover-bg:color-mix(in srgb,var(--portal-surface-support) 82%,#fff 18%);--portal-quarter-button-hover-border:color-mix(in srgb,var(--line) 72%,var(--brand) 28%);--portal-quarter-button-active-bg:linear-gradient(180deg,color-mix(in srgb,var(--brand) 92%,#fff 8%),var(--brand));--portal-quarter-button-active-border:var(--brand);--portal-quarter-button-active-text:#fff;--portal-quarter-button-active-shadow:0 12px 24px rgba(0,39,134,.22),inset 0 0 0 1px hsla(0,0%,100%,.14);--portal-quarter-card-current-bg:linear-gradient(180deg,color-mix(in srgb,var(--portal-surface-card) 88%,var(--brand) 12%),var(--portal-surface-card));--portal-quarter-card-current-shadow:0 0 0 1px rgba(0,39,134,.1),0 12px 26px rgba(0,39,134,.07);--portal-quarter-meta-quarter-bg:color-mix(in srgb,var(--brand) 12%,#fff 88%);--portal-quarter-current-pill-bg:var(--brand);--portal-quarter-current-pill-border:var(--brand);--portal-quarter-current-pill-text:#fff;--portal-quarter-current-pill-shadow:0 10px 20px rgba(0,39,134,.18);--portal-quarter-open-text:var(--warn);--portal-radio-control-bg:#fff;--portal-radio-control-border:#9db0cc;--portal-score-bar-fill:linear-gradient(90deg,#f39c12,#3ba853);--portal-svg-accent-soft-fill:rgba(62,123,192,.15);--portal-table-dark-border:hsla(0,0%,100%,.14);--portal-theme-toggle-focus-ring:0 0 0 3px rgba(47,91,227,.2);--portal-theme-toggle-hover-border:#0f1629;--portal-theme-toggle-hover-border-dark:rgba(255,215,106,.42);--portal-role-panel-bg:var(--portal-surface-panel);--portal-role-card-bg:var(--portal-surface-card);--portal-role-soft-bg:var(--portal-surface-soft);--portal-role-support-bg:var(--portal-surface-support);--portal-role-border:var(--portal-border);--portal-role-text:var(--portal-text);--portal-role-shadow:var(--portal-panel-shadow);--portal-role-shadow-strong:var(--portal-panel-shadow-strong);--portal-role-shadow-soft:var(--portal-panel-shadow-soft);--portal-surface-card:linear-gradient(180deg,hsla(0,0%,100%,.96),rgba(247,250,255,.99));--portal-surface-panel:linear-gradient(180deg,rgba(249,250,255,.96),rgba(235,237,247,.99));--portal-surface-soft:#f5f9ff;--portal-surface-support:#edf3fa;--portal-text:#212121;--portal-text-soft:#414141;--portal-text-zoom:1;--portal-theme-toggle-icon-bg:hsla(0,0%,100%,.78);--portal-theme-toggle-icon-bg-dark:hsla(0,0%,100%,.12);--portal-theme-toggle-ink:#172033;--portal-theme-toggle-ink-dark:#ffd76a;--footer-background:#366db1;--primary-color:#b50010;--radius-base:3.667px;--radius-pill:999px;--secondary-color:#f9faff;--shadow:0 10px 26px rgba(19,35,61,.1);--side-width:min(86vw,320px);--tertiary-color:#002786;--warn:#a46000;--portal-page-bg-wash:radial-gradient(920px 420px at -15% -20%,rgba(87,114,132,.24) 0%,transparent 62%),radial-gradient(980px 520px at 110% -25%,rgba(87,114,132,.14) 0%,transparent 55%),linear-gradient(180deg,rgba(249,250,255,.42),rgba(235,237,247,.88));--bg-0:var(--secondary-color);--bg-1:#ebedf7;--brand-2:var(--tertiary-color);--hub-theme-wash:radial-gradient(860px 400px at 12% 8%,hsla(0,0%,100%,.68),transparent 58%),radial-gradient(640px 320px at 92% 0%,rgba(255,244,211,.18),transparent 56%),linear-gradient(180deg,hsla(0,0%,100%,.1),rgba(237,243,252,.48));--portal-dark-page-bg-wash:radial-gradient(920px 420px at -15% -20%,rgba(72,79,86,.18) 0%,transparent 62%),radial-gradient(980px 520px at 110% -25%,rgba(60,66,72,.12) 0%,transparent 55%),linear-gradient(180deg,#1a1c1f,#25292c);--surface-2:#f7f9fc;--radius-1:var(--radius-base);--radius-2:calc(var(--radius-base)*2);--radius-3:calc(var(--radius-base)*3)}html[data-theme="dark"] body.portal-hub-page{--hub-panel-bg:var(--portal-dark-panel);--hub-panel-bg-footer:var(--portal-dark-panel-soft);--hub-panel-bg-hero:var(--portal-dark-panel);--hub-panel-bg-section:var(--portal-dark-panel);--hub-panel-bg-support:var(--portal-dark-panel-soft);--hub-theme-banner-border:hsla(0,0%,100%,.1);--hub-theme-banner-text:var(--secondary-color);--hub-theme-card-admin-border-soft:rgba(181,0,16,.26);--hub-theme-card-parent-border-soft:rgba(249,250,255,.34);--hub-theme-card-student-border-soft:rgba(123,153,214,.6);--hub-theme-card-subtitle:#c4c8ce;--hub-theme-card-title:#f7f8fa;--hub-theme-footer-bg:inherit;--hub-theme-footer-text:#eef1f5;--hub-theme-link:#b4c4ea;--hub-theme-page-bg-body:#1a1c1f;--hub-theme-page-bg-end:#25292c;--hub-theme-page-bg-glow:rgba(72,79,86,.2);--hub-theme-page-bg-mid:#31363a;--hub-theme-page-bg-start:#25292c;--hub-theme-panel-bg:#31363a;--hub-theme-panel-bg-footer:#25292c;--hub-theme-panel-bg-hero:#3c4248;--hub-theme-panel-bg-section:#31363a;--hub-theme-panel-bg-soft:#3c4248;--hub-theme-panel-bg-support:#484f56;--hub-theme-panel-border:hsla(0,0%,100%,.2);--hub-theme-panel-shadow:none;--hub-theme-text:#f2f4f7;--hub-theme-text-soft:#c9ced4;--hub-theme-wash:radial-gradient(860px 400px at 12% 8%,rgba(181,0,16,.14),transparent 58%),radial-gradient(640px 320px at 92% 0%,rgba(109,135,191,.18),transparent 56%),radial-gradient(520px 240px at 56% 100%,hsla(0,0%,100%,.08),transparent 60%),linear-gradient(180deg,hsla(0,0%,100%,.03),rgba(16,18,22,.24))}*{box-sizing:border-box}
body,html{color:var(--ink);font-family:system-ui,-apple-system,blinkmacsystemfont,Segoe UI Variable,Segoe UI,roboto,Noto Sans,ubuntu,cantarell,Liberation Sans,DejaVu Sans,Apple Color Emoji,Segoe UI Emoji,Noto Color Emoji,sans-serif;margin:0;min-height:100%}body{-webkit-tap-highlight-color:transparent;background:var(--portal-page-bg);color:var(--portal-text);position:relative}html[data-theme="dark"]{--portal-chart-axis-label:var(--portal-dark-text-soft);--portal-chart-surface:var(--portal-dark-surface-card);--portal-chart-surface-soft:var(--portal-dark-surface-support);--portal-data-label:var(--portal-dark-text-soft);--portal-status-bad-bg:rgba(242,138,149,.12);--portal-status-bad-border:rgba(242,138,149,.34);--portal-status-bad-text:#ffd8dd;--portal-status-good-bg:rgba(124,214,164,.14);--portal-status-good-border:rgba(124,214,164,.34);--portal-status-good-text:#dff7e9;--portal-status-amber-bg:rgba(240,176,95,.16);--portal-status-amber-border:rgba(240,176,95,.72);--portal-status-amber-text:#ffe0b6;--portal-status-info-bg:rgba(106,164,255,.14);--portal-status-info-border:rgba(106,164,255,.34);--portal-status-info-text:#eaf2ff;--portal-status-neutral-bg:linear-gradient(180deg,rgba(58,61,68,.96),rgba(49,52,58,.98));--portal-status-neutral-border:var(--portal-dark-border);--portal-status-neutral-text:var(--portal-dark-text-soft);--portal-status-peer-bg:rgba(106,164,255,.14);--portal-status-peer-border:rgba(106,164,255,.34);--portal-status-peer-text:#eaf2ff;--portal-status-revise-bg:#55389f;--portal-status-revise-border:#3f2977;--portal-status-revise-text:#fff;--portal-status-warn-bg:rgba(240,176,95,.14);--portal-status-warn-border:rgba(240,176,95,.34);--portal-status-warn-text:#ffe0b6;--portal-support-message:var(--portal-dark-text-soft);--portal-button-surface:var(--portal-dark-surface-support);--portal-button-surface-hover:var(--portal-dark-surface-soft);--portal-button-border:var(--portal-dark-border);--portal-button-border-hover:var(--portal-status-info-border);--portal-assignment-head-bg:linear-gradient(180deg,color-mix(in srgb,var(--portal-dark-card) 88%,var(--portal-status-good-border) 12%),var(--portal-dark-card));--portal-calendar-status-bad-bg:#d92d20;--portal-calendar-status-good-bg:#2e7d32;--portal-calendar-status-open-bg:#0f4a73;--portal-calendar-status-revise-bg:#7a59cc;--portal-calendar-status-submitted-bg:#f6a609;--portal-calendar-status-text-strong:#fff;--portal-calendar-status-text-soft:#173b78;--portal-control-border:var(--portal-dark-border);--portal-control-surface:var(--portal-dark-surface-support);--portal-control-surface-hover:var(--portal-dark-surface-soft);--portal-control-text:var(--portal-dark-text);--portal-control-shadow-hover:0 8px 16px rgba(19,35,61,.12);--portal-field-state-info:#b4c4ea;--portal-field-state-locked:#f28a95;--portal-field-state-edited:#9ab9e0;--portal-field-state-muted:var(--portal-dark-text-soft);--portal-field-invalid-shadow:0 0 0 1px rgba(242,138,149,.22);--portal-homework-link:#b4c4ea;--portal-homework-link-hover:#d7e4ff;--portal-homework-square-border:var(--portal-dark-border);--portal-homework-square-text:var(--portal-dark-text);--portal-metric-border:var(--portal-dark-border);--portal-modal-backdrop-strong:rgba(8,22,40,.56);--portal-modal-backdrop:rgba(8,22,40,.52);--portal-panel-shadow:0 8px 22px rgba(17,38,63,.08);--portal-panel-shadow-strong:0 26px 60px rgba(8,22,40,.26);--portal-panel-shadow-soft:0 8px 22px rgba(10,28,48,.18);--portal-pill-bg:rgba(106,164,255,.14);--portal-pill-border:rgba(106,164,255,.34);--portal-pill-text:#eaf2ff;--portal-primary-text-strong:#fff;--portal-quick-link-hover-border:var(--portal-status-info-border);--portal-quarter-button-current-shadow:0 0 0 1px rgba(0,39,134,.1);--portal-quarter-button-hover-bg:color-mix(in srgb,var(--portal-dark-surface-support) 82%,#fff 18%);--portal-quarter-button-hover-border:color-mix(in srgb,var(--portal-dark-border) 72%,var(--portal-status-good-border) 28%);--portal-quarter-button-active-bg:var(--portal-status-good-bg);--portal-quarter-button-active-border:var(--portal-status-good-border);--portal-quarter-button-active-text:var(--portal-status-good-text);--portal-quarter-button-active-shadow:0 12px 24px rgba(0,39,134,.22),inset 0 0 0 1px hsla(0,0%,100%,.14);--portal-quarter-card-current-bg:linear-gradient(180deg,color-mix(in srgb,var(--portal-dark-panel-soft) 88%,var(--portal-status-good-border) 12%),var(--portal-dark-panel));--portal-quarter-card-current-shadow:0 0 0 1px rgba(0,39,134,.1),0 12px 26px rgba(0,39,134,.07);--portal-quarter-meta-quarter-bg:color-mix(in srgb,var(--portal-status-good-bg) 20%,var(--portal-dark-surface-support) 80%);--portal-quarter-current-pill-bg:var(--portal-status-good-bg);--portal-quarter-current-pill-border:var(--portal-status-good-border);--portal-quarter-current-pill-text:var(--portal-status-good-text);--portal-quarter-current-pill-shadow:0 10px 20px rgba(0,39,134,.18);--portal-quarter-open-text:#f0b05f;--portal-radio-control-bg:var(--portal-dark-field-bg);--portal-radio-control-border:var(--portal-dark-field-border);--portal-score-bar-fill:linear-gradient(90deg,#f39c12,#3ba853);--portal-svg-accent-soft-fill:rgba(62,123,192,.15);--portal-table-dark-border:hsla(0,0%,100%,.14);--portal-theme-toggle-focus-ring:0 0 0 3px rgba(47,91,227,.2);--portal-theme-toggle-hover-border:#0f1629;--portal-theme-toggle-hover-border-dark:rgba(255,215,106,.42);--portal-role-panel-bg:var(--portal-dark-surface-panel);--portal-role-card-bg:var(--portal-dark-surface-card);--portal-role-soft-bg:var(--portal-dark-surface-soft);--portal-role-support-bg:var(--portal-dark-surface-support);--portal-role-border:var(--portal-dark-border);--portal-role-text:var(--portal-dark-text);--portal-role-shadow:var(--portal-panel-shadow);--portal-role-shadow-strong:var(--portal-panel-shadow-strong);--portal-role-shadow-soft:var(--portal-panel-shadow-soft);background:var(--portal-dark-page-bg);color-scheme:dark}html[data-theme="dark"] body{color:var(--portal-dark-text)}body.portal-hub-page{--hub-accent:var(--hub-theme-accent);--hub-accent-soft:var(--hub-theme-accent-soft);--hub-accent-strong:var(--hub-theme-accent-strong);--hub-panel-bg:var(--hub-theme-panel-bg);--hub-panel-bg-soft:var(--hub-theme-panel-bg-soft);--hub-panel-border:var(--hub-theme-panel-border);--hub-panel-shadow:var(--hub-theme-panel-shadow);--hub-wash:var(--hub-theme-wash);background:var(--portal-page-bg);isolation:isolate}body::before{background:transparent;background-repeat:no-repeat,no-repeat,no-repeat;background-size:1080px 500px,800px 420px,100% 100%;content:"";inset:0;pointer-events:none;position:fixed;z-index:-1}
body.admin-portal-page,
body.parent-portal-page,
body.portal-hub-page,body.student-portal-page{background:var(--portal-page-bg);color:var(--portal-text);min-height:100vh;padding-block:24px}
body.admin-portal-page #authBootPanel,
body.admin-portal-page #authPanel,
body.parent-portal-page #loginCard,body.student-portal-page #loginPanel{background:var(--portal-surface-card);border:1px solid var(--portal-border-strong);border-radius:var(--radius-2);box-sizing:border-box;font-size:1.02rem;line-height:1.48;margin-inline:auto;margin-top:clamp(3rem,5vw,4rem);padding:clamp(28px,3.6vw,40px);width:min(100%,var(--portal-login-panel-max-width))}html[data-theme="dark"] body.admin-portal-page #authBootPanel,html[data-theme="dark"] body.admin-portal-page #authPanel{background:var(--portal-dark-surface-card);border-color:var(--portal-dark-border-strong);color:var(--portal-dark-text)}
body.admin-portal-page.admin-auth-booting #authBootPanel,
body.admin-portal-page.admin-auth-booting .wrap,html[data-admin-auth-state="unauthenticated"] body.admin-portal-page .wrap{background:transparent!important;background-image:none!important}
body.admin-portal-page #authPanel #loginForm,
body.parent-portal-page #loginCard .login-form,body.student-portal-page #loginPanel #loginForm{gap:0;margin-inline:auto;width:min(100%,var(--portal-login-form-max-width))}body.admin-portal-page #authPanel .row{grid-template-columns:1fr}
body.admin-portal-page #authPanel .row>[class*=" col-"],body.admin-portal-page #authPanel .row>[class^="col-"]{grid-column:span 12}body.admin-portal-page #authBootPanel{align-content:center;display:grid;gap:12px;justify-items:center;min-height:180px;text-align:center}body.admin-portal-page #authBootPanel .small{margin:0}
body.admin-portal-page #authPanel :is(input, select, textarea),
body.parent-portal-page #loginCard :is(input, select, textarea),body.student-portal-page #loginPanel :is(input, select, textarea){font-size:.98rem;min-height:48px;padding:12px 14px}
body.admin-portal-page #authPanel button,
body.parent-portal-page #loginCard button,body.student-portal-page #loginPanel button{font-size:1rem;margin:.75rem 0 .125rem;min-height:50px;padding:13px 16px}
body.admin-portal-page #authPanel .login-links,
body.parent-portal-page #loginCard .login-links,body.student-portal-page #loginPanel .login-links{display:flex;flex-wrap:wrap;gap:14px 22px;margin-top:14px}
body.admin-portal-page #authPanel .login-link,
body.parent-portal-page #loginCard .login-link,body.student-portal-page #loginPanel .login-link{color:var(--portal-login-link);font-size:1.02rem;font-weight:700;line-height:1.35;margin-top:1rem;text-decoration:none}
body.admin-portal-page #authPanel .login-link:focus-visible,
body.admin-portal-page #authPanel .login-link:hover,
body.parent-portal-page #loginCard .login-link:focus-visible,
body.parent-portal-page #loginCard .login-link:hover,
body.student-portal-page #loginPanel .login-link:focus-visible,body.student-portal-page #loginPanel .login-link:hover{text-decoration:underline}
body.parent-portal-page .security-badge,body.student-portal-page .security-badge{align-items:center;display:grid;gap:4px;justify-items:center;margin-inline-start:auto;max-width:min(100%,180px)}
body.parent-portal-page .security-badge__icon,body.student-portal-page .security-badge__icon{display:block;height:auto;inline-size:clamp(44px,6vw,56px)}
body.parent-portal-page .security-badge__caption,body.student-portal-page .security-badge__caption{color:var(--portal-text-soft);font-size:11px;font-weight:700;line-height:1.2;max-width:100%;text-align:center}
html[data-parent-auth-state="unauthenticated"] body.parent-portal-page #portalCard,
html[data-parent-auth-state="unauthenticated"] body.parent-portal-page .hero,
html[data-parent-auth-state="unauthenticated"] body.parent-portal-page .nav-scrim,
html[data-parent-auth-state="unauthenticated"] body.parent-portal-page .side-nav,
html[data-student-auth-state="unauthenticated"] body.student-portal-page .nav-overlay,
html[data-student-auth-state="unauthenticated"] body.student-portal-page .side-nav,
html[data-student-auth-state="unauthenticated"] body.student-portal-page .status-strip,html[data-student-auth-state="unauthenticated"] body.student-portal-page .topbar{display:none!important}
html[data-parent-auth-state="unauthenticated"] body.parent-portal-page .portal-layout,html[data-student-auth-state="unauthenticated"] body.student-portal-page .portal-shell{padding-top:clamp(3rem,5vw,4rem)}
body.admin-portal-page.admin-auth-booting .wrap,html[data-admin-auth-state="unauthenticated"] body.admin-portal-page .wrap,
html[data-parent-auth-state="unauthenticated"] body.parent-portal-page .main-col,
html[data-student-auth-state="unauthenticated"] body.student-portal-page .main-col{box-sizing:border-box;gap:1rem;margin-inline:auto;max-inline-size:calc(var(--portal-login-panel-max-width) + 32px);width:min(100%,calc(var(--portal-login-panel-max-width) + 32px))}
body.admin-portal-page.admin-auth-booting #authBootPanel,html[data-admin-auth-state="unauthenticated"] body.admin-portal-page #authPanel,
html[data-parent-auth-state="unauthenticated"] body.parent-portal-page #loginCard,
html[data-student-auth-state="unauthenticated"] body.student-portal-page #loginPanel{margin-top:0}
html[data-theme="dark"] body.admin-portal-page input,
html[data-theme="dark"] body.admin-portal-page select,
html[data-theme="dark"] body.admin-portal-page textarea,
html[data-theme="dark"] body.parent-portal-page input,
html[data-theme="dark"] body.parent-portal-page select,
html[data-theme="dark"] body.parent-portal-page textarea,html[data-theme="dark"] body.student-portal-page input,
html[data-theme="dark"] body.student-portal-page select,
html[data-theme="dark"] body.student-portal-page textarea{background:var(--portal-dark-field-bg);border-color:var(--portal-dark-field-border);border-radius:var(--radius-base);color:var(--portal-dark-field-text)}
html[data-theme="dark"] body.admin-portal-page input:focus,
html[data-theme="dark"] body.admin-portal-page input:focus-visible,
html[data-theme="dark"] body.admin-portal-page select:focus,
html[data-theme="dark"] body.admin-portal-page select:focus-visible,
html[data-theme="dark"] body.admin-portal-page textarea:focus,
html[data-theme="dark"] body.admin-portal-page textarea:focus-visible,
html[data-theme="dark"] body.parent-portal-page input:focus,
html[data-theme="dark"] body.parent-portal-page input:focus-visible,
html[data-theme="dark"] body.parent-portal-page select:focus,
html[data-theme="dark"] body.parent-portal-page select:focus-visible,
html[data-theme="dark"] body.parent-portal-page textarea:focus,
html[data-theme="dark"] body.parent-portal-page textarea:focus-visible,html[data-theme="dark"] body.student-portal-page input:focus,
html[data-theme="dark"] body.student-portal-page input:focus-visible,
html[data-theme="dark"] body.student-portal-page select:focus,
html[data-theme="dark"] body.student-portal-page select:focus-visible,
html[data-theme="dark"] body.student-portal-page textarea:focus,
html[data-theme="dark"] body.student-portal-page textarea:focus-visible{background:var(--portal-dark-field-active-bg);border-color:var(--portal-dark-field-active-border);color:var(--portal-dark-field-text)}
html[data-theme="dark"] body.admin-portal-page input::placeholder,
html[data-theme="dark"] body.admin-portal-page select::placeholder,
html[data-theme="dark"] body.admin-portal-page textarea::placeholder,
html[data-theme="dark"] body.parent-portal-page input::placeholder,
html[data-theme="dark"] body.parent-portal-page select::placeholder,
html[data-theme="dark"] body.parent-portal-page textarea::placeholder,html[data-theme="dark"] body.student-portal-page input::placeholder,
html[data-theme="dark"] body.student-portal-page select::placeholder,
html[data-theme="dark"] body.student-portal-page textarea::placeholder{color:var(--portal-dark-field-placeholder)}
body.admin-portal-page .wrap,
body.parent-portal-page .portal-layout,body.student-portal-page .portal-shell{color:var(--portal-text)}
html[data-theme="dark"] body.parent-portal-page .card,
html[data-theme="dark"] body.parent-portal-page .panel,
html[data-theme="dark"] body.parent-portal-page .portal-layout,
html[data-theme="dark"] body.student-portal-page .card,
html[data-theme="dark"] body.student-portal-page .panel,html[data-theme="dark"] body.student-portal-page .portal-shell{color:var(--portal-dark-text)}.portal-text{color:var(--portal-text)}.portal-text-soft{color:var(--portal-text-soft)}.portal-surface-card{background:var(--portal-surface-card);border-color:var(--portal-border)}.portal-surface-panel{background:var(--portal-surface-panel);border-color:var(--portal-border)}.portal-surface-soft{background:var(--portal-surface-soft);border-color:var(--portal-border)}.portal-surface-support{background:var(--portal-surface-support);border-color:var(--portal-border)}.portal-center-column{margin-inline:auto;min-width:0;width:min(var(--portal-center-column-max,1040px),100%)}
.portal-theme-card,
.portal-theme-chart-shell,
.portal-theme-dialog,.portal-theme-panel,
.portal-theme-soft-card,
.portal-theme-table-shell,
.portal-theme-tooltip{border:1px solid var(--portal-role-border);color:var(--portal-role-text)}
.portal-theme-card,
.portal-theme-chart-shell,
.portal-theme-dialog,.portal-theme-panel,
.portal-theme-soft-card,
.portal-theme-table-shell{box-sizing:border-box}.portal-theme-panel{background:var(--portal-role-panel-bg);box-shadow:var(--portal-role-shadow)}.portal-theme-card,
.portal-theme-dialog,
.portal-theme-table-shell,
.portal-theme-tooltip{background:var(--portal-role-card-bg)}.portal-theme-card,
.portal-theme-dialog,
.portal-theme-panel{box-shadow:var(--portal-role-shadow)}
.portal-theme-chart-shell,.portal-theme-soft-card{background:var(--portal-role-support-bg)}.portal-theme-dialog{box-shadow:var(--portal-role-shadow-strong)}.portal-theme-tooltip{box-shadow:var(--portal-role-shadow-soft)}.portal-theme-overlay{background:var(--portal-modal-backdrop)}.portal-theme-overlay-strong{background:var(--portal-modal-backdrop-strong)}body.parent-portal-page .card,body.parent-portal-page .panel,body.student-portal-page .card,body.student-portal-page .panel{background:var(--portal-surface-card);border-color:var(--portal-border);color:var(--portal-text)}
body.parent-portal-page .panel,body.student-portal-page .panel{margin-top:10px;min-width:0;padding:14px}
body.admin-portal-page .card > :not(:first-child),
body.admin-portal-page .panel > :not(:first-child),
body.parent-portal-page .card > :not(:first-child),
body.parent-portal-page .panel > :not(:first-child),body.student-portal-page .card > :not(:first-child),
body.student-portal-page .panel > :not(:first-child){margin-top:12px}
body.parent-portal-page .panel.homework-card,body.student-portal-page .panel.homework-card{background:var(--portal-surface-card);border-color:var(--portal-border)}
body.parent-portal-page .hero,
body.parent-portal-page .topbar,
body.student-portal-page .hero,body.student-portal-page .topbar{background:linear-gradient(180deg,#f4f8ff,#eef3fb);border-color:#98adca;color:#102f5f}body.admin-portal-page .panel,
body.admin-portal-page .wrap .panel{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-3);color:var(--ink);min-width:0;padding:12px}body.student-points-page{background:var(--portal-page-bg);color:var(--portal-text)}
body.student-points-page .field label,
body.student-points-page .mini,
body.student-points-page .status,body.student-points-page .sub{color:var(--portal-text-soft)}body.student-points-page #loginPanel .login-link{color:var(--primary-color);font-size:.92rem;font-weight:700;text-decoration:none}
body.student-points-page #loginPanel .login-link:focus-visible,body.student-points-page #loginPanel .login-link:hover{text-decoration:underline}body.student-points-page :is(input, select, button){background:var(--portal-surface-card);border:1px solid var(--portal-button-border);border-radius:10px;color:var(--portal-text)}body.student-points-page button{background:var(--portal-button-surface)}body.student-points-page button:hover{border-color:var(--portal-button-border-hover)}body.student-points-page .primary{background:linear-gradient(160deg,var(--portal-action-blue-top),var(--portal-action-blue-bottom));border-color:transparent;color:var(--portal-primary-text-strong)}body.student-points-page .status.bad{color:var(--portal-status-bad-text)}body.student-points-page .status.ok{color:var(--portal-status-good-text)}
body.student-points-page td,body.student-points-page th{border-bottom:1px solid var(--portal-border)}body.student-points-page th button{background:transparent;border:0;color:inherit}body.student-points-page .pill{background:var(--portal-pill-bg);border:1px solid var(--portal-pill-border);color:var(--portal-pill-text)}body.admin-portal-page .system-health-loading-pulse{color:var(--primary-color)}
body.parent-portal-page .side-nav,body.student-portal-page .side-nav{background:var(--portal-surface-panel);border-color:var(--portal-border)}
body.parent-portal-page .homework-card,body.student-portal-page .homework-card{background:transparent;border:0;margin-top:10px;padding:0}
body.parent-portal-page .homework-square,body.student-portal-page .homework-square{align-content:center;background:var(--portal-surface-card);border:1px solid #b7c8dd;border-radius:8px;box-sizing:border-box;color:#264868;display:grid;font-weight:800;gap:4px;justify-items:center;line-height:1.1;min-height:96px;padding:8px;place-items:center;text-align:center}
body.parent-portal-page .homework-square.is-complete,body.student-portal-page .homework-square.is-complete{background:var(--portal-status-good-bg);border-color:var(--portal-status-good-border);color:var(--portal-status-good-text)}
body.parent-portal-page .homework-square.is-pending,body.student-portal-page .homework-square.is-pending{background:var(--portal-status-info-bg);border-color:var(--portal-status-info-border);color:var(--portal-status-info-text)}
body.parent-portal-page .homework-square.is-none,body.student-portal-page .homework-square.is-none{background:var(--portal-status-neutral-bg);border-color:var(--portal-status-neutral-border);color:var(--portal-status-neutral-text)}
body.parent-portal-page .homework-square.is-clear,body.student-portal-page .homework-square.is-clear{background:var(--portal-status-good-bg);border-color:var(--portal-status-good-border);color:var(--portal-status-good-text)}
body.parent-portal-page .homework-square.is-arrears,body.student-portal-page .homework-square.is-arrears{background:var(--portal-status-bad-bg);border-color:var(--portal-status-bad-border);color:var(--portal-status-bad-text)}
body.parent-portal-page .homework-card-content,body.student-portal-page .homework-card-content{align-content:center;display:grid;gap:8px;min-width:0}
body.parent-portal-page .queue-panel details summary,body.student-portal-page .queue-panel details summary{cursor:pointer;display:grid;gap:4px;list-style:none}
body.parent-portal-page .queue-panel details summary::-webkit-details-marker,body.student-portal-page .queue-panel details summary::-webkit-details-marker{display:none}
body.parent-portal-page .queue-summary-head,body.student-portal-page .queue-summary-head{align-items:flex-start;display:flex;flex-wrap:wrap;gap:10px;justify-content:space-between}
body.parent-portal-page .queue-summary-stack,body.student-portal-page .queue-summary-stack{display:grid;gap:8px;min-width:0}
body.parent-portal-page .queue-summary-chips,body.student-portal-page .queue-summary-chips{display:grid;gap:6px 8px;grid-template-columns:repeat(2,minmax(0,1fr));min-width:0}
body.parent-portal-page .queue-summary-chip,body.student-portal-page .queue-summary-chip{inline-size:100%;justify-content:space-between;min-width:0}
body.parent-portal-page .queue-summary-chip-label,body.student-portal-page .queue-summary-chip-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
body.parent-portal-page .queue-summary-chip-count,body.student-portal-page .queue-summary-chip-count{font-variant-numeric:tabular-nums;min-width:1.5em;text-align:right}
body.parent-portal-page .summary-title,body.student-portal-page .summary-title{display:block;font-size:1rem;font-weight:800;line-height:1.2}
body.parent-portal-page .queue-summary-head,body.student-portal-page .queue-summary-head{margin-bottom:12px}
body.parent-portal-page .queue-compact-datetime,body.student-portal-page .queue-compact-datetime{align-items:flex-start;display:inline-flex;flex-direction:column;font-variant-numeric:tabular-nums;gap:1px;line-height:1.1;white-space:nowrap}
body.parent-portal-page .queue-compact-datetime-date,body.student-portal-page .queue-compact-datetime-date{font-weight:700}
body.parent-portal-page .queue-compact-datetime-time,body.student-portal-page .queue-compact-datetime-time{color:var(--ink-soft);font-size:11px}
body.parent-portal-page .queue-table-wrap,body.student-portal-page .queue-table-wrap{background:var(--portal-surface-card);border:1px solid var(--line);border-radius:var(--radius-2);box-sizing:border-box;max-height:260px;min-width:0;overflow:auto;padding:6px}
body.parent-portal-page .queue-table-wrap table,body.student-portal-page .queue-table-wrap table{border-collapse:collapse;font-size:13px;min-width:100%;table-layout:fixed;width:100%}
body.parent-portal-page .queue-table-wrap table.news-queue-table,body.student-portal-page .queue-table-wrap table.news-queue-table{table-layout:auto}body.parent-portal-page .queue-table-wrap table.news-queue-table{min-height:47px}
body.parent-portal-page .queue-table-wrap table.news-queue-table td,
body.parent-portal-page .queue-table-wrap table.news-queue-table th,
body.student-portal-page .queue-table-wrap table.news-queue-table td,body.student-portal-page .queue-table-wrap table.news-queue-table th{border-bottom:1px solid var(--line)}
body.parent-portal-page .queue-table-wrap table.news-queue-table tr:last-child td,body.student-portal-page .queue-table-wrap table.news-queue-table tr:last-child td{border-bottom:none}
body.parent-portal-page #performanceReportAttendanceMetrics,
body.parent-portal-page .attendance-overview-grid,body.student-portal-page .attendance-overview-grid{display:grid;gap:8px;grid-template-columns:repeat(3,minmax(0,1fr))}
body.parent-portal-page .attendance-square,body.student-portal-page .attendance-square{align-content:start;background:var(--portal-surface-card);border:1px solid var(--portal-border);border-radius:var(--radius-2);box-sizing:border-box;display:grid;gap:6px;min-height:84px;padding:10px}
body.parent-portal-page .attendance-square.is-good,body.student-portal-page .attendance-square.is-good{border-color:var(--portal-status-good-border)}
body.parent-portal-page .attendance-square.is-warn,body.student-portal-page .attendance-square.is-warn{border-color:var(--portal-status-info-border)}
body.parent-portal-page .attendance-square.is-risk,body.student-portal-page .attendance-square.is-risk{border-color:var(--portal-status-bad-border)}
body.parent-portal-page .attendance-square-v,body.student-portal-page .attendance-square-v{color:var(--portal-text);font-weight:700;line-height:.95}body.student-portal-page .attendance-square-v{font-size:clamp(28px,5.5vw,36px)}body.parent-portal-page .attendance-square-v{font-size:clamp(26px,4.8vw,42px)}
body.parent-portal-page .field.is-invalid label,body.student-portal-page .field.is-invalid label{color:var(--portal-status-bad-text)}
body.parent-portal-page .field.is-invalid input,
body.parent-portal-page .field.is-invalid textarea,body.student-portal-page .field.is-invalid input,
body.student-portal-page .field.is-invalid textarea{background:var(--portal-status-bad-bg);border-color:var(--portal-status-bad-border);box-shadow:var(--portal-field-invalid-shadow)}
body.parent-portal-page .field-validation-message,body.student-portal-page .field-validation-message{color:var(--portal-status-bad-text);font-size:12px;line-height:1.35;margin:2px 0 0}
body.parent-portal-page .queue-table-wrap table.news-queue-table td,
body.parent-portal-page .queue-table-wrap table.news-queue-table th,
body.student-portal-page .queue-table-wrap table.news-queue-table td,body.student-portal-page .queue-table-wrap table.news-queue-table th{padding:4px 6px}
body.parent-portal-page .queue-table-wrap table.news-queue-table td:nth-child(2),
body.parent-portal-page .queue-table-wrap table.news-queue-table td:nth-child(3),
body.parent-portal-page .queue-table-wrap table.news-queue-table td:nth-child(5),
body.parent-portal-page .queue-table-wrap table.news-queue-table th:nth-child(2),
body.parent-portal-page .queue-table-wrap table.news-queue-table th:nth-child(3),
body.parent-portal-page .queue-table-wrap table.news-queue-table th:nth-child(5),
body.student-portal-page .queue-table-wrap table.news-queue-table td:nth-child(2),
body.student-portal-page .queue-table-wrap table.news-queue-table td:nth-child(3),
body.student-portal-page .queue-table-wrap table.news-queue-table td:nth-child(5),body.student-portal-page .queue-table-wrap table.news-queue-table th:nth-child(2),
body.student-portal-page .queue-table-wrap table.news-queue-table th:nth-child(3),
body.student-portal-page .queue-table-wrap table.news-queue-table th:nth-child(5){white-space:nowrap}
body.parent-portal-page .queue-table-wrap table.news-queue-table td:nth-child(3) .chip,
body.parent-portal-page table.news-queue-table td:nth-child(3) .chip,body.student-portal-page .queue-table-wrap table.news-queue-table td:nth-child(3) .chip,
body.student-portal-page table.news-queue-table td:nth-child(3) .chip{--chip-height:24px;--chip-min-ar:0;border-width:1px 1px 2px;font-size:11px;min-inline-size:0;padding:0 8px}
body.parent-portal-page .queue-table-wrap table.news-queue-table .queue-row-btn,
body.parent-portal-page table.news-queue-table .queue-row-btn,body.student-portal-page .queue-table-wrap table.news-queue-table .queue-row-btn,
body.student-portal-page table.news-queue-table .queue-row-btn{background:linear-gradient(180deg,var(--portal-action-blue-top),var(--portal-action-blue-bottom));border-color:var(--portal-action-blue-border);box-sizing:border-box;color:var(--secondary-color);font-size:11px;line-height:1.1;min-height:28px;padding:3px 8px;white-space:nowrap}
body.parent-portal-page .queue-table-wrap table.news-queue-table .queue-row-btn:focus-visible,
body.parent-portal-page .queue-table-wrap table.news-queue-table .queue-row-btn:hover:not(:disabled),
body.parent-portal-page table.news-queue-table .queue-row-btn:focus-visible,
body.parent-portal-page table.news-queue-table .queue-row-btn:hover:not(:disabled),
body.student-portal-page .queue-table-wrap table.news-queue-table .queue-row-btn:focus-visible,body.student-portal-page .queue-table-wrap table.news-queue-table .queue-row-btn:hover:not(:disabled),
body.student-portal-page table.news-queue-table .queue-row-btn:focus-visible,
body.student-portal-page table.news-queue-table .queue-row-btn:hover:not(:disabled){color:var(--secondary-color)}
body.parent-portal-page .homework-link,body.student-portal-page .homework-link{color:#174f92;font-size:clamp(12px,2.8vw,14px);font-weight:700;line-height:1.35;min-width:0;overflow-wrap:anywhere;text-decoration:underline;text-decoration-thickness:1.2px;text-underline-offset:2px}
body.parent-portal-page .homework-link:focus-visible,
body.parent-portal-page .homework-link:hover,
body.student-portal-page .homework-link:focus-visible,body.student-portal-page .homework-link:hover{color:#0f3c70}
body.parent-portal-page .side-brand,body.student-portal-page .side-brand{background:var(--portal-surface-soft);border-color:var(--portal-border)}
body.parent-portal-page .side-link,body.student-portal-page .side-link{background:var(--portal-surface-card);border-color:var(--portal-border);color:var(--portal-text)}
body.parent-portal-page .side-link.active,body.student-portal-page .side-link.active{border-color:var(--portal-border-strong);color:#0f2545}
body.parent-portal-page .calendar-shell,
body.parent-portal-page .detail-item,
body.parent-portal-page .homework-card-shell,
body.parent-portal-page .identity-item,
body.parent-portal-page .metric,
body.parent-portal-page .portal-modal-body,
body.parent-portal-page .portal-modal-dialog,
body.parent-portal-page .queue-table-wrap,
body.student-portal-page .calendar-shell,
body.student-portal-page .detail-item,
body.student-portal-page .homework-card-shell,body.student-portal-page .identity-item,
body.student-portal-page .metric,
body.student-portal-page .portal-modal-body,
body.student-portal-page .portal-modal-dialog,
body.student-portal-page .queue-table-wrap{--fc-event-bg-color:#edf4ff;--fc-event-border-color:#83a8de;--fc-event-text-color:#173b78;background:var(--portal-surface-card);border-color:var(--portal-border);color:var(--portal-text)}
body.parent-portal-page .identity-list,body.student-portal-page .identity-list{display:grid;gap:8px;grid-template-columns:repeat(2,minmax(0,1fr))}
body.parent-portal-page,body.student-portal-page{--portal-grade-table-shell-bg:var(--portal-surface-card);--portal-grade-table-border:var(--line);--portal-grade-table-current-row-accent:var(--brand);--portal-grade-table-current-row-bg:color-mix(in srgb,var(--portal-status-good-bg) 84%,#fff 16%);--portal-grade-table-header-bg:var(--portal-surface-support);--portal-grade-table-row-bg:var(--portal-surface-card);--portal-grade-table-row-completed-bg:#e2f5e9;--portal-grade-table-row-completed-hover-bg:#d3ecd9;--portal-grade-table-row-even-bg:color-mix(in srgb,var(--portal-surface-card) 92%,#fff 8%);--portal-grade-table-row-hover-bg:color-mix(in srgb,var(--portal-surface-support) 82%,#fff 18%);--portal-grade-table-row-late-bg:#f3ecff;--portal-grade-table-row-late-hover-bg:#ede3ff;--portal-grade-table-row-missed-bg:#ffd7d4;--portal-grade-table-row-missed-hover-bg:#ffc9c4;--portal-grade-table-row-open-bg:#fff0cc;--portal-grade-table-row-open-hover-bg:#ffe4a3;--portal-grade-table-text:var(--ink)}
body.parent-portal-page .grade-tabulator-shell,body.student-portal-page .grade-tabulator-shell{background:var(--portal-grade-table-shell-bg);border:1px solid var(--portal-grade-table-border);border-radius:12px;box-sizing:border-box;overflow:hidden;width:100%}
body.parent-portal-page .grade-tabulator,body.student-portal-page .grade-tabulator{width:100%}
body.parent-portal-page .grade-tabulator-shell .tabulator,body.student-portal-page .grade-tabulator-shell .tabulator{background:transparent;border:none;color:var(--portal-grade-table-text);font-size:.92rem;width:100%}
body.parent-portal-page .grade-tabulator-shell .tabulator .tabulator-cell,
body.parent-portal-page .grade-tabulator-shell .tabulator .tabulator-col,
body.parent-portal-page .grade-tabulator-shell .tabulator .tabulator-footer,
body.parent-portal-page .grade-tabulator-shell .tabulator .tabulator-header,
body.parent-portal-page .grade-tabulator-shell .tabulator .tabulator-responsive-collapse,
body.parent-portal-page .grade-tabulator-shell .tabulator .tabulator-responsive-collapse table,
body.parent-portal-page .grade-tabulator-shell .tabulator .tabulator-row,
body.student-portal-page .grade-tabulator-shell .tabulator .tabulator-cell,
body.student-portal-page .grade-tabulator-shell .tabulator .tabulator-col,
body.student-portal-page .grade-tabulator-shell .tabulator .tabulator-footer,body.student-portal-page .grade-tabulator-shell .tabulator .tabulator-header,
body.student-portal-page .grade-tabulator-shell .tabulator .tabulator-responsive-collapse,
body.student-portal-page .grade-tabulator-shell .tabulator .tabulator-responsive-collapse table,
body.student-portal-page .grade-tabulator-shell .tabulator .tabulator-row{color:var(--portal-grade-table-text)}
body.parent-portal-page .grade-tabulator-shell .tabulator .tabulator-col,
body.parent-portal-page .grade-tabulator-shell .tabulator .tabulator-footer,
body.parent-portal-page .grade-tabulator-shell .tabulator .tabulator-header,
body.student-portal-page .grade-tabulator-shell .tabulator .tabulator-col,
body.student-portal-page .grade-tabulator-shell .tabulator .tabulator-footer,body.student-portal-page .grade-tabulator-shell .tabulator .tabulator-header{background:var(--portal-grade-table-header-bg);border-color:var(--portal-grade-table-border)}
body.parent-portal-page .grade-tabulator-shell .tabulator .tabulator-row,body.student-portal-page .grade-tabulator-shell .tabulator .tabulator-row{background:var(--portal-grade-table-row-bg);border-bottom:1px solid var(--portal-grade-table-border)}
body.parent-portal-page .grade-tabulator-shell .tabulator .tabulator-row.tabulator-row-even,body.student-portal-page .grade-tabulator-shell .tabulator .tabulator-row.tabulator-row-even{background:var(--portal-grade-table-row-even-bg)}
body.parent-portal-page .grade-tabulator-shell .tabulator .tabulator-row:hover,body.student-portal-page .grade-tabulator-shell .tabulator .tabulator-row:hover{background:var(--portal-grade-table-row-hover-bg)}
body.parent-portal-page .grade-tabulator-shell .tabulator .tabulator-row.is-current-quarter,body.student-portal-page .grade-tabulator-shell .tabulator .tabulator-row.is-current-quarter{background:var(--portal-grade-table-current-row-bg);box-shadow:inset 4px 0 0 var(--portal-grade-table-current-row-accent)}
body.parent-portal-page .grade-tabulator-shell .tabulator .tabulator-row.is-open,body.student-portal-page .grade-tabulator-shell .tabulator .tabulator-row.is-open{background:var(--portal-grade-table-row-open-bg);box-shadow:inset 4px 0 0 #a86400}
body.parent-portal-page .grade-tabulator-shell .tabulator .tabulator-row.is-open:hover,body.student-portal-page .grade-tabulator-shell .tabulator .tabulator-row.is-open:hover{background:var(--portal-grade-table-row-open-hover-bg)}
body.parent-portal-page .grade-tabulator-shell .tabulator .tabulator-row.is-completed,body.student-portal-page .grade-tabulator-shell .tabulator .tabulator-row.is-completed{background:var(--portal-grade-table-row-completed-bg);box-shadow:inset 4px 0 0 #1f7a47}
body.parent-portal-page .grade-tabulator-shell .tabulator .tabulator-row.is-completed:hover,body.student-portal-page .grade-tabulator-shell .tabulator .tabulator-row.is-completed:hover{background:var(--portal-grade-table-row-completed-hover-bg)}
body.parent-portal-page .grade-tabulator-shell .tabulator .tabulator-row.is-late,body.student-portal-page .grade-tabulator-shell .tabulator .tabulator-row.is-late{background:var(--portal-grade-table-row-late-bg);box-shadow:inset 4px 0 0 #55389f}
body.parent-portal-page .grade-tabulator-shell .tabulator .tabulator-row.is-late:hover,body.student-portal-page .grade-tabulator-shell .tabulator .tabulator-row.is-late:hover{background:var(--portal-grade-table-row-late-hover-bg)}
body.parent-portal-page .grade-tabulator-shell .tabulator .tabulator-row.is-missed,body.student-portal-page .grade-tabulator-shell .tabulator .tabulator-row.is-missed{background:var(--portal-grade-table-row-missed-bg);box-shadow:inset 4px 0 0 #b23a2e}
body.parent-portal-page .grade-tabulator-shell .tabulator .tabulator-row.is-missed:hover,body.student-portal-page .grade-tabulator-shell .tabulator .tabulator-row.is-missed:hover{background:var(--portal-grade-table-row-missed-hover-bg)}
body.parent-portal-page .grade-tabulator-shell .tabulator .tabulator-cell,body.student-portal-page .grade-tabulator-shell .tabulator .tabulator-cell{border-right-color:var(--portal-grade-table-border);box-sizing:border-box;line-height:1.2;padding:.28rem .36rem;vertical-align:top;white-space:normal}
body.parent-portal-page .grade-tabulator-shell .tabulator .tabulator-cell:last-child,body.student-portal-page .grade-tabulator-shell .tabulator .tabulator-cell:last-child{border-right-color:var(--portal-grade-table-border)}
body.parent-portal-page .grade-tabulator-shell .tabulator .tabulator-col .tabulator-col-content,body.student-portal-page .grade-tabulator-shell .tabulator .tabulator-col .tabulator-col-content{box-sizing:border-box;min-height:100%;padding:.24rem .36rem}
body.parent-portal-page .grade-tabulator-shell .tabulator .tabulator-col .tabulator-col-title,body.student-portal-page .grade-tabulator-shell .tabulator .tabulator-col .tabulator-col-title{color:var(--portal-grade-table-text);font-size:.92rem;font-weight:800;line-height:1.2}
body.parent-portal-page .grade-tabulator-shell .tabulator .tabulator-col.grade-class-col .tabulator-col-content,
body.parent-portal-page .grade-tabulator-shell .tabulator .tabulator-col.grade-comment-col .tabulator-col-content,
body.parent-portal-page .grade-tabulator-shell .tabulator .tabulator-col.grade-date-col .tabulator-col-content,
body.parent-portal-page .grade-tabulator-shell .tabulator .tabulator-col.grade-exercise-col .tabulator-col-content,
body.parent-portal-page .grade-tabulator-shell .tabulator .tabulator-col.grade-quarter-col .tabulator-col-content,
body.parent-portal-page .grade-tabulator-shell .tabulator .tabulator-col.grade-score-col .tabulator-col-content,
body.parent-portal-page .grade-tabulator-shell .tabulator .tabulator-col.grade-status-col .tabulator-col-content,
body.parent-portal-page .grade-tabulator-shell .tabulator .tabulator-col.grade-summary-col .tabulator-col-content,
body.student-portal-page .grade-tabulator-shell .tabulator .tabulator-col.grade-class-col .tabulator-col-content,
body.student-portal-page .grade-tabulator-shell .tabulator .tabulator-col.grade-comment-col .tabulator-col-content,
body.student-portal-page .grade-tabulator-shell .tabulator .tabulator-col.grade-date-col .tabulator-col-content,
body.student-portal-page .grade-tabulator-shell .tabulator .tabulator-col.grade-exercise-col .tabulator-col-content,body.student-portal-page .grade-tabulator-shell .tabulator .tabulator-col.grade-quarter-col .tabulator-col-content,
body.student-portal-page .grade-tabulator-shell .tabulator .tabulator-col.grade-score-col .tabulator-col-content,
body.student-portal-page .grade-tabulator-shell .tabulator .tabulator-col.grade-status-col .tabulator-col-content,
body.student-portal-page .grade-tabulator-shell .tabulator .tabulator-col.grade-summary-col .tabulator-col-content{box-sizing:border-box;padding:.1rem .16rem .08rem}
body.parent-portal-page .grade-tabulator-shell .tabulator .tabulator-col.grade-class-col .tabulator-col-title,
body.parent-portal-page .grade-tabulator-shell .tabulator .tabulator-col.grade-comment-col .tabulator-col-title,
body.parent-portal-page .grade-tabulator-shell .tabulator .tabulator-col.grade-date-col .tabulator-col-title,
body.parent-portal-page .grade-tabulator-shell .tabulator .tabulator-col.grade-exercise-col .tabulator-col-title,
body.parent-portal-page .grade-tabulator-shell .tabulator .tabulator-col.grade-quarter-col .tabulator-col-title,
body.parent-portal-page .grade-tabulator-shell .tabulator .tabulator-col.grade-score-col .tabulator-col-title,
body.parent-portal-page .grade-tabulator-shell .tabulator .tabulator-col.grade-status-col .tabulator-col-title,
body.parent-portal-page .grade-tabulator-shell .tabulator .tabulator-col.grade-summary-col .tabulator-col-title,
body.student-portal-page .grade-tabulator-shell .tabulator .tabulator-col.grade-class-col .tabulator-col-title,
body.student-portal-page .grade-tabulator-shell .tabulator .tabulator-col.grade-comment-col .tabulator-col-title,
body.student-portal-page .grade-tabulator-shell .tabulator .tabulator-col.grade-date-col .tabulator-col-title,
body.student-portal-page .grade-tabulator-shell .tabulator .tabulator-col.grade-exercise-col .tabulator-col-title,body.student-portal-page .grade-tabulator-shell .tabulator .tabulator-col.grade-quarter-col .tabulator-col-title,
body.student-portal-page .grade-tabulator-shell .tabulator .tabulator-col.grade-score-col .tabulator-col-title,
body.student-portal-page .grade-tabulator-shell .tabulator .tabulator-col.grade-status-col .tabulator-col-title,
body.student-portal-page .grade-tabulator-shell .tabulator .tabulator-col.grade-summary-col .tabulator-col-title{align-items:stretch;box-sizing:border-box;display:flex;flex-direction:column;gap:0;height:100%;justify-content:stretch;min-height:4.8rem;padding:.02rem 0}
body.parent-portal-page .grade-exercise-comment,
body.parent-portal-page .grade-exercise-meta,
body.parent-portal-page .grade-exercise-score-sub,
body.student-portal-page .grade-exercise-comment,body.student-portal-page .grade-exercise-meta,
body.student-portal-page .grade-exercise-score-sub{color:var(--ink-soft);font-size:.72rem}
body.parent-portal-page .grade-exercise-meta,body.student-portal-page .grade-exercise-meta{line-height:1.18;overflow-wrap:anywhere}
body.parent-portal-page .grade-exercise-score-sub,body.student-portal-page .grade-exercise-score-sub{font-weight:700;line-height:1.1}
body.parent-portal-page .grade-exercise-comment,body.student-portal-page .grade-exercise-comment{line-height:1.2;overflow-wrap:anywhere}
body.parent-portal-page .grade-status-pill,body.student-portal-page .grade-status-pill{align-items:center;border-radius:999px;box-sizing:border-box;display:inline-flex;font-size:.74rem;font-weight:800;gap:.28rem;justify-content:center;line-height:1;padding:.22rem .52rem;text-transform:uppercase;width:fit-content}
body.parent-portal-page .grade-status-pill,
body.parent-portal-page .grade-status-pill.is-late,body.student-portal-page .grade-status-pill,
body.student-portal-page .grade-status-pill.is-late{background:var(--portal-status-revise-bg);border:1px solid var(--portal-status-revise-border);color:var(--portal-status-revise-text)}
body.parent-portal-page .grade-status-pill.is-good,body.student-portal-page .grade-status-pill.is-good{background:var(--ok);border:1px solid var(--ok);color:var(--portal-primary-text-strong)}
body.parent-portal-page .grade-status-pill.is-warn,body.student-portal-page .grade-status-pill.is-warn{background:var(--warn);border:1px solid var(--warn);color:var(--portal-primary-text-strong)}
body.parent-portal-page .grade-status-pill.is-bad,body.student-portal-page .grade-status-pill.is-bad{background:var(--err);border:1px solid var(--err);color:var(--portal-primary-text-strong)}
body.parent-portal-page .grade-status-stack,body.student-portal-page .grade-status-stack{align-items:center;display:flex;flex-wrap:wrap;gap:.28rem;justify-content:flex-start}
body.parent-portal-page .grade-exercise-score,body.student-portal-page .grade-exercise-score{align-items:center;background:var(--portal-status-good-bg);border:1px solid var(--portal-status-good-border);border-radius:14px;box-sizing:border-box;color:var(--portal-status-good-text);display:grid;gap:.08rem;justify-items:center;min-width:5rem;padding:.32rem .42rem;text-align:center}
body.parent-portal-page .grade-exercise-score.is-open,body.student-portal-page .grade-exercise-score.is-open{background:var(--portal-surface-support);border-color:var(--line);color:var(--portal-grade-table-text)}
body.parent-portal-page .grade-exercise-score-main,body.student-portal-page .grade-exercise-score-main{font-size:.94rem;font-weight:800;line-height:1.1}
body.parent-portal-page .metrics,body.student-portal-page .metrics{display:grid;gap:8px;grid-template-columns:repeat(2,minmax(0,1fr));margin-top:10px}
body.parent-portal-page .report-metrics,body.student-portal-page .detail-metrics{display:grid;gap:8px}
body.parent-portal-page .portal-grid,body.student-portal-page .portal-grid{align-items:start;display:grid;gap:12px;grid-template-columns:minmax(0,1fr);min-width:0}
body.parent-portal-page .portal-col,body.student-portal-page .portal-col{align-content:start;display:grid;gap:10px;grid-column:1/-1;grid-template-columns:minmax(0,1fr);min-width:0}body.parent-portal-page #portalCard{min-height:1116px}body.parent-portal-page #portalCard>.portal-grid{min-height:1032px}
body.parent-portal-page .identity-item,body.student-portal-page .identity-item{align-content:start;background:var(--portal-surface-card)!important;border:1px solid var(--portal-border)!important;border-radius:var(--radius-2);display:grid;gap:5px;min-height:70px;padding:10px}
body.parent-portal-page .detail-list,body.student-portal-page .detail-list{display:grid;gap:10px}
body.parent-portal-page .detail-item,body.student-portal-page .detail-item{background:var(--portal-surface-card)!important;border:1px solid var(--portal-border)!important;display:grid;gap:6px;padding:10px}
body.parent-portal-page .detail-item.warn,body.student-portal-page .detail-item.warn{background:var(--portal-status-info-bg)!important;border-color:var(--portal-status-info-border)!important}
body.parent-portal-page .detail-item.bad,body.student-portal-page .detail-item.bad{background:var(--portal-status-bad-bg)!important;border-color:var(--portal-status-bad-border)!important}
body.parent-portal-page .detail-item.good,body.student-portal-page .detail-item.good{background:var(--portal-status-good-bg)!important;border-color:var(--portal-status-good-border)!important}
body.parent-portal-page .detail-copy,body.student-portal-page .detail-copy{color:var(--ink-soft);font-size:.92rem;line-height:1.45;margin:0}
body.parent-portal-page .detail-hint,body.student-portal-page .detail-hint{color:var(--ink-soft);font-size:.82rem;line-height:1.35;margin:4px 0 0}
body.parent-portal-page .detail-link,body.student-portal-page .detail-link{align-items:center;background:var(--portal-surface-support);border:1px solid var(--line);border-radius:999px;color:inherit;display:inline-flex;font-size:.78rem;gap:4px;line-height:1.2;padding:4px 8px;text-decoration:none;word-break:break-word}
body.parent-portal-page .detail-link:focus-visible,
body.parent-portal-page .detail-link:hover,
body.student-portal-page .detail-link:focus-visible,body.student-portal-page .detail-link:hover{border-color:var(--portal-border-strong);text-decoration:none}
body.parent-portal-page .status,body.student-portal-page .status{color:var(--ink-soft);font-size:13px;margin:0;min-height:20px}
body.parent-portal-page .status.ok,body.student-portal-page .status.ok{color:var(--ok)}
body.parent-portal-page .status.warn,body.student-portal-page .status.warn{color:var(--warn)}
body.parent-portal-page .status.bad,
body.parent-portal-page .status.err,
body.student-portal-page .status.bad,body.student-portal-page .status.err{color:var(--err)}
body.parent-portal-page .hint,body.student-portal-page .hint{color:var(--ink-soft);font-size:12px;margin:0}
body.parent-portal-page .chip,body.student-portal-page .chip{--chip-height:30px;--chip-min-ar:0;align-items:center;background:#e2edff;border:solid #5f7ca6;border-radius:999px;border-width:2px 2px 3px;box-shadow:0 1px 0 rgba(11,32,60,.22);box-sizing:border-box;color:#173962;display:inline-flex;flex:0 0 auto;font-size:12px;font-weight:800;gap:6px;height:var(--chip-height);inline-size:auto;justify-content:center;line-height:1;max-inline-size:100%;min-height:0;min-inline-size:0;overflow:hidden;padding:0 10px;text-align:center;text-overflow:ellipsis;text-transform:none;white-space:nowrap}
body.parent-portal-page .chip-neutral,body.student-portal-page .chip-neutral{background:#dfeaff;border-color:#5877a3;color:#12345b}
body.parent-portal-page .chip-ok,body.student-portal-page .chip-ok{background:#d8f2e3;border-color:#287a4f;color:#0f452c}
body.parent-portal-page .chip-warn,body.student-portal-page .chip-warn{background:#ffe9c7;border-color:#b16d00;color:#5b3500}
body.parent-portal-page .chip-open,body.student-portal-page .chip-open{background:#d8edff;border-color:#2d78b4;color:#093a63}
body.parent-portal-page .chip-revise,body.student-portal-page .chip-revise{background:#eadcff;border-color:#7348b5;color:#351267}
body.parent-portal-page .chip-bad,body.student-portal-page .chip-bad{background:#ffd8dd;border-color:#ad2c3c;color:#67101d}
body.parent-portal-page .chip-checked,body.student-portal-page .chip-checked{background:#cef4ef;border-color:#1d8b82;color:#044e48}
body.parent-portal-page .chip-lock,body.student-portal-page .chip-lock{background:#ffe1e1;border-color:#b24949;color:#661717}
body.parent-portal-page .chip-edited,body.student-portal-page .chip-edited{background:#d7e8ff;border-color:#2f67b8;color:#0c3c7a}
body.parent-portal-page .chip-link,body.student-portal-page .chip-link{cursor:pointer;display:inline-flex}
body.parent-portal-page .chip-link:focus-visible,
body.parent-portal-page .chip-link:hover,
body.student-portal-page .chip-link:focus-visible,body.student-portal-page .chip-link:hover{cursor:pointer}
body.parent-portal-page .queue-table-wrap,body.student-portal-page .queue-table-wrap{background:var(--portal-surface-card)!important;border:1px solid var(--portal-border)!important}
body.parent-portal-page .detail-empty,body.student-portal-page .detail-empty{border:1px dashed var(--portal-border)!important;border-radius:var(--radius-2);color:var(--portal-text-soft)!important;font-size:13px;line-height:1.45;padding:12px}
body.parent-portal-page .choice-group,body.student-portal-page .choice-group{background:var(--portal-surface-support)!important;border:1px solid var(--portal-border)!important;border-radius:10px;display:grid;gap:6px;margin:0;padding:8px 10px}
body.parent-portal-page .choice-group:disabled,body.student-portal-page .choice-group:disabled{background:var(--portal-surface-support)!important;border-color:var(--portal-border)!important;color:var(--portal-text-soft)!important}
body.parent-portal-page .choice-option,body.student-portal-page .choice-option{align-items:center;color:var(--portal-text)!important;cursor:pointer;display:flex;font-size:14px;font-weight:500;gap:8px;letter-spacing:0;margin:0;text-transform:none}
body.parent-portal-page .choice-option input[type="checkbox"],
body.parent-portal-page .choice-option input[type="radio"],body.student-portal-page .choice-option input[type="checkbox"],
body.student-portal-page .choice-option input[type="radio"]{accent-color:var(--brand-2);background:var(--portal-surface-card)!important;border:1px solid var(--portal-border)!important;border-radius:4px;box-sizing:border-box;height:18px;margin:0;min-height:18px;padding:0;width:18px}
body.parent-portal-page .choice-option input[type="radio"],body.student-portal-page .choice-option input[type="radio"]{border-radius:50%}
body.admin-portal-page .school-map-preview-shell,body.student-portal-page .school-map-preview-shell{background:var(--portal-surface-card)!important;border:1px solid var(--portal-border)!important;border-radius:var(--radius-2);overflow:hidden}
body.admin-portal-page .school-map-preview-shell iframe,body.student-portal-page .school-map-preview-shell iframe{border:0;display:block;min-height:320px;width:100%}
body.parent-portal-page .homework-card-shell,body.student-portal-page .homework-card-shell{align-items:stretch;background:var(--portal-surface-card);border:1px solid var(--line);border-radius:var(--radius-3);box-sizing:border-box;display:grid;gap:10px;grid-template-columns:96px minmax(0,1fr);padding:10px}
body.parent-portal-page .assignment-head,body.student-portal-page .assignment-head{align-items:center;background:var(--portal-assignment-head-bg);border:1px solid var(--line);border-radius:6px;box-sizing:border-box;display:flex;flex:1 1 auto;flex-direction:column;gap:.1rem;height:auto;justify-content:space-between;padding:.18rem .2rem;width:100%}
body.parent-portal-page .assignment-head.core,body.student-portal-page .assignment-head.core{border:1px solid var(--line);justify-content:space-between}
body.parent-portal-page .header-action-row,body.student-portal-page .header-action-row{align-items:center;display:inline-flex;gap:.18rem;justify-content:flex-start;width:100%}
body.parent-portal-page .header-action-btn,body.student-portal-page .header-action-btn{align-items:center;border:1px solid var(--line);border-radius:6px;box-sizing:border-box;color:var(--portal-primary-text-strong);display:inline-flex;flex:0 0 auto;font-size:.76rem;font-weight:900;height:1.18rem;justify-content:center;line-height:1;min-width:1.18rem;padding:0 .2rem;text-align:center}
body.parent-portal-page .header-action-btn.plus,body.student-portal-page .header-action-btn.plus{background:var(--portal-status-good-text);border-color:var(--portal-status-good-text)}
body.parent-portal-page .header-action-btn.minus,body.student-portal-page .header-action-btn.minus{background:var(--ink-soft);border-color:var(--ink-soft)}
body.parent-portal-page .assignment-title-text,body.student-portal-page .assignment-title-text{align-self:center;color:var(--ink);display:block;font-size:.96rem;font-weight:800;line-height:1.18;overflow:hidden;text-align:center;text-overflow:ellipsis;white-space:nowrap;width:100%}
body.parent-portal-page .assignment-head.core .assignment-title-text,body.student-portal-page .assignment-head.core .assignment-title-text{font-size:.93rem;font-weight:800;line-height:1.15}
body.parent-portal-page .assignment-sub,body.student-portal-page .assignment-sub{color:var(--ink-soft);display:block;font-size:.82rem;font-weight:700;line-height:1.08;margin-top:0;max-width:100%;overflow:hidden;text-align:center;text-overflow:ellipsis;text-transform:none;white-space:nowrap}
body.parent-portal-page .assignment-sub.core-sub,body.student-portal-page .assignment-sub.core-sub{color:var(--ink-soft);font-size:.76rem;font-weight:700}
body.parent-portal-page .grade-quarter-cell,body.student-portal-page .grade-quarter-cell{display:grid;gap:.1rem;min-width:0}
body.parent-portal-page .grade-quarter-title,body.student-portal-page .grade-quarter-title{font-size:.93rem;font-weight:800;line-height:1.15;overflow-wrap:anywhere}
body.parent-portal-page .grade-quarter-pill,body.student-portal-page .grade-quarter-pill{align-items:center;border:1px solid var(--brand);border-radius:999px;box-sizing:border-box;color:var(--brand);display:inline-flex;font-size:.68rem;font-weight:800;letter-spacing:.03em;line-height:1;padding:.18rem .5rem;text-transform:uppercase;width:fit-content}
body.parent-portal-page .grade-quarter-meta,
body.parent-portal-page .grade-quarter-range,body.student-portal-page .grade-quarter-meta,
body.student-portal-page .grade-quarter-range{color:var(--ink-soft);font-size:.76rem;line-height:1.2;overflow-wrap:anywhere}
body.parent-portal-page .grade-quarter-summary,body.student-portal-page .grade-quarter-summary{display:grid;gap:.45rem;min-width:0}
body.parent-portal-page .grade-quarter-stats,body.student-portal-page .grade-quarter-stats{display:grid;gap:.3rem;grid-template-columns:repeat(2,minmax(0,1fr));min-width:0}
body.parent-portal-page .grade-quarter-stat,body.student-portal-page .grade-quarter-stat{background:var(--portal-surface-support);border:1px solid var(--line);border-radius:10px;box-sizing:border-box;display:grid;gap:.06rem;min-width:0;padding:.32rem .42rem}
body.parent-portal-page .grade-quarter-stat-label,body.student-portal-page .grade-quarter-stat-label{color:var(--ink-soft);font-size:.66rem;font-weight:800;letter-spacing:.04em;line-height:1.1;text-transform:uppercase}
body.parent-portal-page .grade-quarter-stat-value,body.student-portal-page .grade-quarter-stat-value{font-size:.88rem;font-weight:800;line-height:1.2;overflow-wrap:anywhere}
body.parent-portal-page .quarter-board-copy,body.student-portal-page .quarter-board-copy{display:grid;gap:2px;min-width:0}
body.parent-portal-page .quarter-board-actions,body.student-portal-page .quarter-board-actions{align-items:flex-end;display:grid;gap:8px;justify-items:end;min-width:0}
body.parent-portal-page .grade-quarter-picker,body.student-portal-page .grade-quarter-picker{display:flex;flex-wrap:wrap;gap:8px;min-width:0}
body.parent-portal-page .grade-quarter-picker-btn,body.student-portal-page .grade-quarter-picker-btn{align-items:center;background:var(--portal-surface-support);border:1px solid var(--line);border-radius:999px;color:var(--ink);cursor:pointer;display:inline-flex;flex-direction:column;font-size:.82rem;font-weight:900;gap:.06rem;justify-content:center;line-height:1.05;min-width:4.2rem;padding:.34rem .68rem;transition:background-color .15s ease,border-color .15s ease,color .15s ease,box-shadow .15s ease,transform .15s ease}
body.parent-portal-page .grade-quarter-picker-btn:hover,body.student-portal-page .grade-quarter-picker-btn:hover{background:var(--portal-quarter-button-hover-bg);border-color:var(--portal-quarter-button-hover-border);transform:translateY(-1px)}
body.parent-portal-page .grade-quarter-picker-btn.is-current,body.student-portal-page .grade-quarter-picker-btn.is-current{border-color:var(--brand);box-shadow:var(--portal-quarter-button-current-shadow)}
body.parent-portal-page .grade-quarter-picker-btn.is-active,
body.parent-portal-page .grade-quarter-picker-btn[aria-pressed="true"],body.student-portal-page .grade-quarter-picker-btn.is-active,
body.student-portal-page .grade-quarter-picker-btn[aria-pressed="true"]{background:var(--portal-quarter-button-active-bg);border-color:var(--portal-quarter-button-active-border);box-shadow:var(--portal-quarter-button-active-shadow);color:var(--portal-quarter-button-active-text);transform:translateY(-1px)}
body.parent-portal-page .grade-quarter-picker-btn:focus-visible,body.student-portal-page .grade-quarter-picker-btn:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
body.parent-portal-page .grade-quarter-picker-btn-label,body.student-portal-page .grade-quarter-picker-btn-label{display:block;font-size:.84rem;font-weight:900;line-height:1.05;text-align:center}
body.parent-portal-page .grade-quarter-picker-btn-sub,body.student-portal-page .grade-quarter-picker-btn-sub{display:block;font-size:.62rem;font-weight:800;line-height:1.05;opacity:.8;text-align:center;text-transform:none}
body.parent-portal-page .grade-quarter-picked-summary,body.student-portal-page .grade-quarter-picked-summary{display:grid;gap:6px;width:100%}
body.parent-portal-page .grade-exercise-cell,body.student-portal-page .grade-exercise-cell{display:grid;gap:.08rem;min-width:0}
body.parent-portal-page .grade-exercise-title,body.student-portal-page .grade-exercise-title{font-size:.88rem;font-weight:800;line-height:1.12;overflow-wrap:anywhere}
body.parent-portal-page .quarter-board,
body.parent-portal-page .quarter-board-shell,body.student-portal-page .quarter-board,
body.student-portal-page .quarter-board-shell{align-content:start;display:grid;gap:12px;min-width:0}
body.parent-portal-page .quarter-board-card,body.student-portal-page .quarter-board-card{background:var(--portal-surface-card);border:1px solid var(--line);border-radius:12px;box-sizing:border-box;display:grid;gap:12px;min-width:0;padding:14px}
body.parent-portal-page .quarter-board-maintenance-card,body.student-portal-page .quarter-board-maintenance-card{min-width:0}
body.parent-portal-page .quarter-board-card.is-current,body.student-portal-page .quarter-board-card.is-current{background:var(--portal-quarter-card-current-bg);border-color:var(--brand);box-shadow:var(--portal-quarter-card-current-shadow)}
body.parent-portal-page .quarter-board-head,body.student-portal-page .quarter-board-head{align-items:flex-start;display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between}
body.parent-portal-page .quarter-board-title,body.student-portal-page .quarter-board-title{font-size:1.16rem;font-weight:800;letter-spacing:.01em;margin:0}
body.parent-portal-page .quarter-board-meta,body.student-portal-page .quarter-board-meta{align-items:center;color:var(--ink);display:flex;flex-wrap:wrap;font-size:1rem;font-weight:800;gap:.45rem;line-height:1.25;margin:4px 0 0}
body.parent-portal-page .quarter-board-meta-chip,body.student-portal-page .quarter-board-meta-chip{align-items:center;border:1px solid var(--line);border-radius:999px;box-sizing:border-box;display:inline-flex;line-height:1;padding:.34rem .7rem;white-space:nowrap}
body.parent-portal-page .quarter-board-meta-quarter,body.student-portal-page .quarter-board-meta-quarter{background:var(--portal-quarter-meta-quarter-bg);border-color:var(--brand);color:var(--brand);font-size:1.08rem;font-weight:900;letter-spacing:.02em}
body.parent-portal-page .quarter-board-meta-range,body.student-portal-page .quarter-board-meta-range{background:var(--portal-surface-support);color:var(--ink);font-size:.94rem;font-weight:800}
body.parent-portal-page .quarter-board-meta-count,body.student-portal-page .quarter-board-meta-count{background:var(--portal-status-good-bg);border-color:var(--portal-status-good-border);color:var(--portal-status-good-text);font-size:.92rem;font-weight:900}
body.parent-portal-page .quarter-board-current-pill,body.student-portal-page .quarter-board-current-pill{align-items:center;background:var(--brand);border:1px solid var(--brand);border-radius:999px;box-shadow:var(--portal-quarter-current-pill-shadow);color:var(--portal-quarter-current-pill-text);display:inline-flex;font-size:.86rem;font-weight:900;letter-spacing:.03em;padding:.34rem .82rem;text-transform:uppercase;white-space:nowrap}
body.parent-portal-page .quarter-board-stats,body.student-portal-page .quarter-board-stats{display:grid;gap:8px;grid-template-columns:repeat(2,minmax(0,1fr))}
body.parent-portal-page .quarter-board-entries,body.student-portal-page .quarter-board-entries{display:grid;gap:8px}
body.parent-portal-page .quarter-board-empty,body.student-portal-page .quarter-board-empty{border:1px dashed var(--line);border-radius:10px;color:var(--ink-soft);font-size:.92rem;line-height:1.4;padding:10px 12px}
body.parent-portal-page .quarter-board-entry,body.student-portal-page .quarter-board-entry{background:var(--portal-surface-support);border:1px solid var(--line);border-radius:10px;display:grid;gap:8px;grid-template-columns:minmax(0,1fr);padding:10px 12px}
body.parent-portal-page .quarter-board-entry-main,body.student-portal-page .quarter-board-entry-main{display:grid;gap:3px;min-width:0}
body.parent-portal-page .quarter-board-entry-title,body.student-portal-page .quarter-board-entry-title{font-size:.98rem;font-weight:800;line-height:1.22;margin:0;overflow-wrap:anywhere}
body.parent-portal-page .quarter-board-entry-meta,
body.parent-portal-page .quarter-board-entry-score-sub,
body.parent-portal-page .quarter-board-maintenance-lead,
body.parent-portal-page .quarter-board-maintenance-note,body.student-portal-page .quarter-board-entry-meta,
body.student-portal-page .quarter-board-entry-score-sub,
body.student-portal-page .quarter-board-maintenance-lead,
body.student-portal-page .quarter-board-maintenance-note{color:var(--ink-soft)}
body.parent-portal-page .quarter-board-entry-meta,body.student-portal-page .quarter-board-entry-meta{font-size:.84rem;line-height:1.35}
body.parent-portal-page .quarter-board-entry-score,body.student-portal-page .quarter-board-entry-score{align-items:flex-start;display:inline-flex;flex-direction:column;gap:.14rem;justify-content:center;min-width:4.8rem;text-align:right}
body.parent-portal-page .quarter-board-entry-score-main,body.student-portal-page .quarter-board-entry-score-main{font-size:1rem;font-weight:800;line-height:1.1}
body.parent-portal-page .quarter-board-entry-score-sub,body.student-portal-page .quarter-board-entry-score-sub{font-size:.8rem;font-weight:700;line-height:1.1}
body.parent-portal-page .quarter-board-entry.is-open .quarter-board-entry-score-main,body.student-portal-page .quarter-board-entry.is-open .quarter-board-entry-score-main{color:var(--portal-quarter-open-text)}body.student-portal-page .legend{color:var(--ink-soft);display:flex;flex-wrap:wrap;font-size:.8rem;gap:10px;margin:0 0 8px}body.student-portal-page .dot{border-radius:50%;display:inline-block;height:10px;margin-right:5px;vertical-align:middle;width:10px}body.student-portal-page .dot.good{background:var(--portal-status-good-border)}body.student-portal-page .dot.bad{background:var(--portal-status-bad-border)}body.student-portal-page .dot.open{background:var(--portal-status-info-border)}body.student-portal-page .dot.submitted{background:var(--portal-status-warn-border)}
body.student-portal-page .dot.revise,body.student-portal-page .dot.waiting{background:var(--portal-status-revise-bg)}
body.parent-portal-page .quarter-board-maintenance,body.student-portal-page .quarter-board-maintenance{align-items:start;display:grid;gap:.9rem;justify-items:stretch;padding:1.25rem;text-align:left}
body.parent-portal-page .quarter-board-maintenance-figure,body.student-portal-page .quarter-board-maintenance-figure{margin:0;width:100%}
body.parent-portal-page .quarter-board-maintenance-figure img,body.student-portal-page .quarter-board-maintenance-figure img{display:block;height:auto;max-width:100%;width:100%}
body.parent-portal-page .quarter-board-maintenance-copy,body.student-portal-page .quarter-board-maintenance-copy{display:grid;gap:.6rem;justify-items:start;max-width:46rem}
body.parent-portal-page .quarter-board-maintenance-title,body.student-portal-page .quarter-board-maintenance-title{font-size:1.12rem;font-weight:800;letter-spacing:-.01em;margin:0}
body.parent-portal-page .quarter-board-maintenance-lead,
body.parent-portal-page .quarter-board-maintenance-note,body.student-portal-page .quarter-board-maintenance-lead,
body.student-portal-page .quarter-board-maintenance-note{margin:0}body.parent-portal-page .profile-group{background:var(--portal-surface-card);border:1px solid var(--portal-border);border-radius:12px;padding:10px}body.parent-portal-page .profile-group p{color:var(--ink-soft);font-size:12px;line-height:1.35;margin:3px 0 0}body.parent-portal-page .field-row{border-top:1px solid var(--line);display:grid;gap:8px;padding:10px 0}body.parent-portal-page .field-row:first-of-type{border-top:none;padding-top:8px}
body.parent-portal-page .field-row.edited,body.parent-portal-page .field-row.locked{background:var(--portal-surface-card);border:1px solid var(--portal-border);border-radius:10px;border-top:none;margin-top:8px;padding:10px}body.parent-portal-page .field-row.locked{background:var(--portal-surface-support)}body.parent-portal-page .field-row.edited input,
body.parent-portal-page .field-row.edited textarea{background:var(--portal-surface-card);border-color:var(--portal-border-strong)}body.parent-portal-page .field-label,
body.parent-portal-page .field-meta{color:var(--ink-soft)}body.parent-portal-page .required-marker{color:var(--brand);font-weight:800}body.parent-portal-page .field-label{font-size:1.1rem;font-weight:700;line-height:1.2;margin:0}body.parent-portal-page .field-meta,
body.parent-portal-page .field-state{font-size:11px;line-height:1.35;margin:0}body.parent-portal-page .field-state{color:var(--portal-field-state-info);font-weight:600}body.parent-portal-page .field-state:empty{display:none}body.parent-portal-page .field-row.locked .field-state{color:var(--portal-field-state-locked)}body.parent-portal-page .field-row.edited .field-state{color:var(--portal-field-state-edited)}body.parent-portal-page .field-row.signature-muted .field-label{color:var(--portal-field-state-muted);font-size:.75rem;font-weight:600}body.parent-portal-page .field-row.signature-muted input,
body.parent-portal-page .field-row.signature-muted textarea{background:var(--portal-surface-card);color:var(--portal-text-soft);font-size:13px}body.parent-portal-page .draft-actions{backdrop-filter:blur(6px);background:var(--portal-surface-card);border:1px solid var(--portal-border);border-radius:12px;bottom:8px;display:grid;gap:8px;margin-top:12px;padding:10px;position:sticky}body.parent-portal-page :is(#backToDashboardBtn, #saveDraftBtn, #parentTextZoomDownBtn, #parentTextZoomUpBtn, #parentTextZoomResetBtn){background:var(--portal-control-surface)!important;background-image:none!important;border:1px solid var(--portal-control-border)!important;color:var(--portal-control-text)!important}body.parent-portal-page :is(#backToDashboardBtn, #saveDraftBtn, #parentTextZoomDownBtn, #parentTextZoomUpBtn, #parentTextZoomResetBtn):is(:hover:not(:disabled), :focus-visible){background:var(--portal-control-surface-hover)!important;background-image:none!important;border-color:var(--portal-control-border)!important;box-shadow:var(--portal-control-shadow-hover);outline:none;transform:translateY(-1px)}body.parent-portal-page :where(.portal-modal, #newsWeekSetModal, #performanceReportModal) :where(input, textarea, select)::placeholder{color:var(--portal-field-placeholder);opacity:1}
html[data-theme="dark"] body.admin-portal-page,
html[data-theme="dark"] body.parent-portal-page,html[data-theme="dark"] body.student-portal-page{--card:var(--portal-dark-surface-card);--card-soft:var(--portal-dark-surface-support);--ink:var(--portal-dark-text);--ink-muted:var(--portal-dark-text-soft);--ink-soft:var(--portal-dark-text-soft);--line:var(--portal-dark-border);--text-muted:var(--portal-dark-text-soft);background:var(--portal-dark-page-bg);color:var(--portal-dark-text);--surface-2:var(--portal-dark-surface-support)}
html[data-theme="dark"] body.parent-portal-page,html[data-theme="dark"] body.student-portal-page{--portal-grade-table-shell-bg:var(--portal-dark-surface-card);--portal-grade-table-border:var(--portal-dark-border);--portal-grade-table-current-row-accent:var(--portal-status-good-border);--portal-grade-table-current-row-bg:color-mix(in srgb,var(--portal-dark-surface-support) 72%,#fff 28%);--portal-grade-table-header-bg:var(--portal-dark-surface-support);--portal-grade-table-row-bg:var(--portal-dark-card);--portal-grade-table-row-completed-bg:color-mix(in srgb,#1f7a47 18%,var(--portal-dark-card) 82%);--portal-grade-table-row-completed-hover-bg:color-mix(in srgb,#1f7a47 24%,var(--portal-dark-surface-support) 76%);--portal-grade-table-row-even-bg:color-mix(in srgb,var(--portal-dark-card) 88%,#fff 12%);--portal-grade-table-row-hover-bg:color-mix(in srgb,var(--portal-dark-surface-support) 82%,#fff 18%);--portal-grade-table-row-late-bg:color-mix(in srgb,var(--portal-dark-surface-support) 72%,#55389f 28%);--portal-grade-table-row-late-hover-bg:color-mix(in srgb,var(--portal-dark-surface-support) 62%,#55389f 38%);--portal-grade-table-row-missed-bg:color-mix(in srgb,#b23a2e 18%,var(--portal-dark-card) 82%);--portal-grade-table-row-missed-hover-bg:color-mix(in srgb,#b23a2e 24%,var(--portal-dark-surface-support) 76%);--portal-grade-table-row-open-bg:color-mix(in srgb,var(--portal-dark-surface-support) 74%,#a86400 26%);--portal-grade-table-row-open-hover-bg:color-mix(in srgb,var(--portal-dark-surface-support) 64%,#a86400 36%);--portal-grade-table-text:var(--portal-dark-text)}
html[data-theme="dark"] body.admin-portal-page .panel,
html[data-theme="dark"] body.parent-portal-page .calendar-shell,
html[data-theme="dark"] body.parent-portal-page .card,
html[data-theme="dark"] body.parent-portal-page .detail-item,
html[data-theme="dark"] body.parent-portal-page .field-row.edited,
html[data-theme="dark"] body.parent-portal-page .field-row.locked,
html[data-theme="dark"] body.parent-portal-page .hero,
html[data-theme="dark"] body.parent-portal-page .homework-card-shell,
html[data-theme="dark"] body.parent-portal-page .identity-item,
html[data-theme="dark"] body.parent-portal-page .metric,
html[data-theme="dark"] body.parent-portal-page .panel,
html[data-theme="dark"] body.parent-portal-page .portal-modal-body,
html[data-theme="dark"] body.parent-portal-page .portal-modal-dialog,
html[data-theme="dark"] body.parent-portal-page .profile-group,
html[data-theme="dark"] body.parent-portal-page .queue-table-wrap,
html[data-theme="dark"] body.parent-portal-page .report-card,
html[data-theme="dark"] body.parent-portal-page .report-modal-body,
html[data-theme="dark"] body.parent-portal-page .report-section,
html[data-theme="dark"] body.parent-portal-page .side-brand,
html[data-theme="dark"] body.parent-portal-page .side-link,
html[data-theme="dark"] body.parent-portal-page .side-nav,
html[data-theme="dark"] body.parent-portal-page .student-profile-card,
html[data-theme="dark"] body.parent-portal-page .topbar,
html[data-theme="dark"] body.student-portal-page .calendar-shell,html[data-theme="dark"] body.student-portal-page .card,
html[data-theme="dark"] body.student-portal-page .detail-calendar-panel,
html[data-theme="dark"] body.student-portal-page .detail-calendar-shell,
html[data-theme="dark"] body.student-portal-page .detail-item,
html[data-theme="dark"] body.student-portal-page .hero,
html[data-theme="dark"] body.student-portal-page .homework-card-shell,
html[data-theme="dark"] body.student-portal-page .identity-item,
html[data-theme="dark"] body.student-portal-page .metric,
html[data-theme="dark"] body.student-portal-page .panel,
html[data-theme="dark"] body.student-portal-page .portal-modal-body,
html[data-theme="dark"] body.student-portal-page .portal-modal-dialog,
html[data-theme="dark"] body.student-portal-page .queue-panel,
html[data-theme="dark"] body.student-portal-page .queue-table-wrap,
html[data-theme="dark"] body.student-portal-page .side-brand,
html[data-theme="dark"] body.student-portal-page .side-link,
html[data-theme="dark"] body.student-portal-page .side-nav,
html[data-theme="dark"] body.student-portal-page .topbar{background:var(--portal-dark-surface-card)!important;border-color:var(--portal-dark-border)!important;color:var(--portal-dark-text)!important}
html[data-theme="dark"] body.parent-portal-page .panel.homework-card,html[data-theme="dark"] body.student-portal-page .panel.homework-card{background:var(--portal-dark-surface-card);border-color:var(--portal-dark-border)}html[data-theme="dark"] body.parent-portal-page .homework-card-shell{background:var(--portal-dark-surface-card)}
html[data-theme="dark"] body.admin-portal-page .wrap .panel,
html[data-theme="dark"] body.parent-portal-page .hero,
html[data-theme="dark"] body.parent-portal-page .side-brand,
html[data-theme="dark"] body.parent-portal-page .side-nav,
html[data-theme="dark"] body.parent-portal-page .topbar,
html[data-theme="dark"] body.student-portal-page .hero,
html[data-theme="dark"] body.student-portal-page .side-brand,html[data-theme="dark"] body.student-portal-page .side-nav,
html[data-theme="dark"] body.student-portal-page .topbar{background:var(--portal-dark-surface-panel);border-color:var(--portal-dark-border)}
body.parent-portal-page .detail-item.good,
body.parent-portal-page .homework-card-shell,
body.student-portal-page .detail-item.good,body.student-portal-page .homework-card-shell{box-shadow:inset 0 0 0 1px rgba(31,122,78,.1),0 10px 20px rgba(31,45,74,.05)}
body.parent-portal-page .detail-item.bad,
body.parent-portal-page .detail-item.warn,
body.student-portal-page .detail-item.bad,body.student-portal-page .detail-item.warn{box-shadow:inset 0 0 0 1px rgba(93,88,168,.1),0 10px 20px rgba(31,45,74,.05)}body.parent-portal-page #parentOverviewSummary,body.student-portal-page .student-overview-title{color:var(--portal-text);font-size:1.25rem;font-weight:800;letter-spacing:.01em;line-height:1.12;margin:.9rem 0}body.parent-portal-page #parentOverviewSummary{background:none;background-color:transparent;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}html[data-theme="dark"] body.parent-portal-page #parentOverviewSummary{color:var(--portal-dark-text)}body.parent-portal-page .parent-overview-title-head{color:var(--portal-text);font-size:1.125rem;font-weight:800;letter-spacing:.01em;line-height:1.12;margin:.9rem 0}
body.parent-portal-page .homework-card-label,body.student-portal-page .homework-card-label{color:var(--portal-text);font-size:clamp(11px,2.7vw,13px);font-weight:800;letter-spacing:.04em;line-height:1.15;margin:0 0 6px;padding-left:2px;text-transform:uppercase}
body.parent-portal-page .attendance-square-k,
body.parent-portal-page .dashboard-card-subtitle,
body.parent-portal-page .detail-meta,
body.parent-portal-page .detail-note,
body.parent-portal-page .homework-square-k,
body.parent-portal-page .identity-label,
body.parent-portal-page .metric .k,
body.parent-portal-page .report-archive-meta,
body.parent-portal-page .report-archive-status,
body.parent-portal-page .report-grade-block h5,
body.parent-portal-page .report-head-card h5,
body.student-portal-page .detail-meta,
body.student-portal-page .detail-note,
body.student-portal-page .homework-square-k,
body.student-portal-page .identity-label,body.student-portal-page .metric .k{color:var(--portal-text-soft)}
body.parent-portal-page .identity-label,
body.parent-portal-page .metric .k,
body.parent-portal-page .report-grade-block h5,
body.parent-portal-page .report-head-card h5,
body.student-portal-page .identity-label,body.student-portal-page .metric .k{font-size:11px;font-weight:700;letter-spacing:.35px;text-transform:uppercase}
body.parent-portal-page .attendance-square-k,
body.parent-portal-page .homework-square-k,body.student-portal-page .homework-square-k{font-size:10px;letter-spacing:.04em;opacity:.88;text-transform:uppercase}
body.parent-portal-page .attendance-square-v,
body.parent-portal-page .homework-square-v,
body.parent-portal-page .metric .v,
body.parent-portal-page .report-head-value,
body.student-portal-page .homework-square-v,body.student-portal-page .metric .v{color:var(--portal-text);font-weight:700}
body.parent-portal-page .metric .v,body.student-portal-page .metric .v{font-size:clamp(17px,3.8vw,22px);line-height:1.1}
body.parent-portal-page .homework-square-v,body.student-portal-page .homework-square-v{font-size:clamp(14px,3.4vw,18px)}
body.parent-portal-page .homework-square-v.is-count,body.student-portal-page .homework-square-v.is-count{font-size:clamp(28px,5.5vw,36px);line-height:.95}
body.parent-portal-page .homework-content-title,body.student-portal-page .homework-content-title{color:#18395d;font-size:clamp(14px,3vw,17px);font-weight:800;line-height:1.15;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
body.parent-portal-page .form-row,
body.parent-portal-page .login-form,body.student-portal-page .form-row,
body.student-portal-page .login-form{display:grid;gap:6px}
body.parent-portal-page .field label,body.student-portal-page .field label{color:var(--ink-soft);display:block;font-size:.8rem;font-weight:700;letter-spacing:.02em;text-transform:none}
body.parent-portal-page .login-form,body.student-portal-page .login-form{gap:10px;margin-inline:auto;width:min(100%,var(--portal-login-form-max-width))}
body.parent-portal-page .link-btn,
body.parent-portal-page button:not(.floating-menu-btn):not(.nav-overlay):not(.nav-scrim):not(.btn-refresh):not(.primary):not(.alt):not(.portal-action-btn):not(.portal-theme-toggle):not(.theme-toggle),
body.parent-portal-page input,
body.parent-portal-page select,
body.parent-portal-page textarea,
body.student-portal-page .link-btn,
body.student-portal-page button:not(.floating-menu-btn):not(.nav-overlay):not(.nav-scrim):not(.btn-refresh):not(.primary):not(.alt):not(.portal-action-btn):not(.portal-theme-toggle):not(.theme-toggle),body.student-portal-page input,
body.student-portal-page select,
body.student-portal-page textarea{background:#fff;border:1px solid var(--line);border-radius:var(--radius-2);box-sizing:border-box;color:#172033;font:inherit}
body.admin-portal-page :where(input, select, textarea)::placeholder,
body.parent-portal-page :where(input, select, textarea)::placeholder,body.student-portal-page :where(input, select, textarea)::placeholder{color:var(--portal-field-placeholder);opacity:1}
body.parent-portal-page input,
body.parent-portal-page select,
body.parent-portal-page textarea,body.student-portal-page input,
body.student-portal-page select,
body.student-portal-page textarea{box-sizing:border-box;min-height:44px;padding:10px 12px;width:100%}
body.parent-portal-page textarea,body.student-portal-page textarea{line-height:1.35;min-height:98px;resize:vertical}
body.parent-portal-page button:not(.floating-menu-btn):not(.nav-overlay):not(.nav-scrim):not(.btn-refresh):not(.primary):not(.alt):not(.portal-action-btn):not(.portal-theme-toggle):not(.theme-toggle):focus-visible,
body.parent-portal-page input:focus,
body.parent-portal-page select:focus,
body.parent-portal-page textarea:focus,
body.student-portal-page button:not(.floating-menu-btn):not(.nav-overlay):not(.nav-scrim):not(.btn-refresh):not(.primary):not(.alt):not(.portal-action-btn):not(.portal-theme-toggle):not(.theme-toggle):focus-visible,body.student-portal-page input:focus,
body.student-portal-page select:focus,
body.student-portal-page textarea:focus{background:#f1f5ff;border-color:#4f78bb;box-shadow:0 0 0 3px rgba(79,120,187,.18);outline:none}
body.parent-portal-page input:disabled,
body.parent-portal-page textarea:disabled,body.student-portal-page input:disabled,
body.student-portal-page textarea:disabled{background:#f1f3f8;border-color:#d7dfec;color:#667792;cursor:not-allowed}
body.parent-portal-page .link-btn,
body.parent-portal-page button:not(.floating-menu-btn):not(.nav-scrim):not(.btn-refresh):not(.primary):not(.alt):not(.portal-action-btn):not(.portal-theme-toggle):not(.theme-toggle),
body.student-portal-page .link-btn,body.student-portal-page button:not(.floating-menu-btn):not(.nav-overlay):not(.nav-scrim):not(.btn-refresh):not(.primary):not(.alt):not(.portal-action-btn):not(.portal-theme-toggle):not(.theme-toggle){align-items:center;background:#f1f5ff;border-color:#9bb5df;color:#214072;cursor:pointer;display:inline-flex;justify-content:center;min-height:42px;text-align:center;text-decoration:none}
body.admin-portal-page .link-btn,body.admin-portal-page button:not(.floating-menu-btn):not(.nav-overlay):not(.nav-scrim):not(.btn-refresh):not(.primary):not(.alt):not(.btn-edit):not(.btn-delete):not(.danger):not(.ghost):not(.portal-action-btn):not(.portal-theme-toggle):not(.menu-group-btn):not(.menu-toggle-btn):not(.app-header-menu-toggle):not(.tabulator-entry-btn):not(.grade-chart-period-btn):not(.pt-score-legend-btn):not(.bar-detail-action-btn){align-items:center;background:#f1f5ff;border:1px solid #9bb5df;border-radius:var(--radius-2);box-sizing:border-box;color:#214072;cursor:pointer;display:inline-flex;justify-content:center;min-height:42px;text-align:center;text-decoration:none}
body.admin-portal-page .link-btn:focus-visible,
body.admin-portal-page .link-btn:hover:not(:disabled),
body.admin-portal-page button:not(.floating-menu-btn):not(.nav-overlay):not(.nav-scrim):not(.btn-refresh):not(.primary):not(.alt):not(.btn-edit):not(.btn-delete):not(.danger):not(.ghost):not(.portal-action-btn):not(.portal-theme-toggle):not(.menu-group-btn):not(.menu-toggle-btn):not(.app-header-menu-toggle):not(.tabulator-entry-btn):not(.grade-chart-period-btn):not(.pt-score-legend-btn):not(.bar-detail-action-btn):focus-visible,body.admin-portal-page button:not(.floating-menu-btn):not(.nav-overlay):not(.nav-scrim):not(.btn-refresh):not(.primary):not(.alt):not(.btn-edit):not(.btn-delete):not(.danger):not(.ghost):not(.portal-action-btn):not(.portal-theme-toggle):not(.menu-group-btn):not(.menu-toggle-btn):not(.app-header-menu-toggle):not(.tabulator-entry-btn):not(.grade-chart-period-btn):not(.pt-score-legend-btn):not(.bar-detail-action-btn):hover:not(:disabled){background:#f3f8ff;border-color:#9bb5df;box-shadow:0 8px 16px rgba(19,35,61,.12);outline:none;transform:translateY(-1px)}
body.admin-portal-page .link-btn:disabled,body.admin-portal-page button:not(.floating-menu-btn):not(.nav-overlay):not(.nav-scrim):not(.btn-refresh):not(.primary):not(.alt):not(.btn-edit):not(.btn-delete):not(.danger):not(.ghost):not(.portal-action-btn):not(.portal-theme-toggle):not(.menu-group-btn):not(.menu-toggle-btn):not(.app-header-menu-toggle):not(.tabulator-entry-btn):not(.grade-chart-period-btn):not(.pt-score-legend-btn):not(.bar-detail-action-btn):disabled{box-shadow:none;cursor:not-allowed;opacity:.64;transform:none}
body.parent-portal-page button:not(.floating-menu-btn):not(.nav-overlay):not(.nav-scrim):not(.btn-refresh):not(.primary):not(.alt):not(.portal-action-btn):not(.portal-theme-toggle):not(.theme-toggle):hover:not(:disabled),body.student-portal-page button:not(.floating-menu-btn):not(.nav-overlay):not(.nav-scrim):not(.btn-refresh):not(.primary):not(.alt):not(.portal-action-btn):not(.portal-theme-toggle):not(.theme-toggle):hover:not(:disabled){box-shadow:0 8px 16px rgba(19,35,61,.12);transform:translateY(-1px)}
body.parent-portal-page .link-btn,
body.parent-portal-page button:not(.floating-menu-btn):not(.nav-overlay):not(.nav-scrim):not(.btn-refresh):not(.primary):not(.alt):not(.portal-action-btn):not(.portal-theme-toggle):not(.theme-toggle),
body.student-portal-page .link-btn,body.student-portal-page button:not(.floating-menu-btn):not(.nav-overlay):not(.nav-scrim):not(.btn-refresh):not(.primary):not(.alt):not(.portal-action-btn):not(.portal-theme-toggle):not(.theme-toggle){color:#214072}
body.parent-portal-page button:not(.floating-menu-btn):not(.nav-overlay):not(.nav-scrim):not(.btn-refresh):not(.primary):not(.alt):not(.portal-action-btn):not(.portal-theme-toggle):not(.theme-toggle):disabled,body.student-portal-page button:not(.floating-menu-btn):not(.nav-overlay):not(.nav-scrim):not(.btn-refresh):not(.primary):not(.alt):not(.portal-action-btn):not(.portal-theme-toggle):not(.theme-toggle):disabled{box-shadow:none;cursor:not-allowed;opacity:.6;transform:none}
body.parent-portal-page .actions,body.student-portal-page .actions{align-items:center;display:flex;flex-wrap:wrap;gap:10px 12px;margin-top:10px}
body.parent-portal-page .actions-2>*,body.student-portal-page .actions-2>*{flex:1 1 calc(50% - 6px)}
body.parent-portal-page .actions-3>*,body.student-portal-page .actions-3>*{flex:1 1 calc(33.333% - 8px)}
body.parent-portal-page .toolbar,body.student-portal-page .toolbar{display:grid;gap:10px;margin-bottom:12px;min-width:0}
body.parent-portal-page .toolbar-actions,body.student-portal-page .toolbar-actions{align-items:center;display:grid;gap:8px}body.student-portal-page .toolbar-actions{grid-template-columns:repeat(2,minmax(0,1fr))}body.parent-portal-page .toolbar-actions{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}
body.parent-portal-page .identity-value,body.student-portal-page .identity-value{font-size:14px;font-weight:700;line-height:1.25;word-break:break-word}
body.parent-portal-page :is(#loginCard, #portalCard, #portalDetailCard, #childPageCard),body.student-portal-page :is(#loginPanel, #appPanel){zoom:var(--portal-text-zoom)}body.student-portal-page #appPanel{align-content:start;display:grid;gap:12px;min-width:0}body.parent-portal-page .panel{margin-top:10px;min-width:0}
html[data-theme="light"] body.parent-portal-page .metric,html[data-theme="light"] body.student-portal-page .metric{align-content:center;background:linear-gradient(180deg,var(--metric-bg-start,var(--portal-status-neutral-bg)) 0,var(--metric-bg-end,#fbfdff) 100%);border:solid var(--metric-border,var(--portal-status-neutral-border));border-radius:10px;border-width:2px 2px 5px;box-shadow:inset 0 0 0 1px hsla(0,0%,100%,.5),0 8px 18px rgba(19,35,61,.08);box-sizing:border-box;display:grid;gap:4px;min-height:72px;min-width:0;overflow:hidden;padding:8px;place-items:center;position:relative;text-align:center}
html[data-theme="light"] body.parent-portal-page .metric::before,html[data-theme="light"] body.student-portal-page .metric::before{background:linear-gradient(135deg,var(--metric-accent-soft,rgba(128,152,190,.12)),transparent 72%);content:"";inset:0;pointer-events:none;position:absolute}
html[data-theme="light"] body.parent-portal-page .metric::after,html[data-theme="light"] body.student-portal-page .metric::after{background:var(--metric-accent,var(--portal-border-strong));content:"";height:3px;inset-block-start:0;inset-inline:0;pointer-events:none;position:absolute}
html[data-theme="light"] body.parent-portal-page .metric > *,html[data-theme="light"] body.student-portal-page .metric > *{position:relative;z-index:1}
html[data-theme="light"] body.parent-portal-page .metric .k,
html[data-theme="light"] body.parent-portal-page .metric .v,html[data-theme="light"] body.student-portal-page .metric .k,
html[data-theme="light"] body.student-portal-page .metric .v{color:var(--metric-text,var(--portal-text))}
html[data-theme="light"] body.parent-portal-page .metric.good,
html[data-theme="light"] body.parent-portal-page .metric.green,
html[data-theme="light"] body.parent-portal-page .metric.metric-green,html[data-theme="light"] body.student-portal-page .metric.good,
html[data-theme="light"] body.student-portal-page .metric.green{--metric-accent:#349f61;--metric-accent-soft:rgba(144,211,173,.18);--metric-bg-start:var(--portal-status-good-bg);--metric-bg-end:#fbfffc;--metric-border:#349f61;--metric-text:var(--portal-status-good-text)}
html[data-theme="light"] body.parent-portal-page .metric.blue,
html[data-theme="light"] body.parent-portal-page .metric.metric-blue,
html[data-theme="light"] body.parent-portal-page .metric.warn,
html[data-theme="light"] body.student-portal-page .metric.blue,html[data-theme="light"] body.student-portal-page .metric.warn{--metric-accent:#2d66cb;--metric-accent-soft:rgba(106,164,255,.16);--metric-bg-start:var(--portal-status-info-bg);--metric-bg-end:#f8fbff;--metric-border:#2d66cb;--metric-text:var(--portal-status-info-text)}
html[data-theme="light"] body.parent-portal-page .metric.bad,
html[data-theme="light"] body.parent-portal-page .metric.metric-red,
html[data-theme="light"] body.parent-portal-page .metric.red,html[data-theme="light"] body.student-portal-page .metric.bad,
html[data-theme="light"] body.student-portal-page .metric.red{--metric-accent:#cc4452;--metric-accent-soft:rgba(242,138,149,.16);--metric-bg-start:var(--portal-status-bad-bg);--metric-bg-end:#fff7f7;--metric-border:#cc4452;--metric-text:var(--portal-status-bad-text)}
html[data-theme="light"] body.parent-portal-page .metric.metric-purple,
html[data-theme="light"] body.parent-portal-page .metric.purple,html[data-theme="light"] body.student-portal-page .metric.purple{--metric-accent:#7d62d5;--metric-accent-soft:rgba(122,126,255,.16);--metric-bg-start:var(--portal-status-peer-bg);--metric-bg-end:#f8f7ff;--metric-border:#7d62d5;--metric-text:var(--portal-status-peer-text)}
html[data-theme="light"] body.parent-portal-page .metric.amber,
html[data-theme="light"] body.parent-portal-page .metric.metric-amber,html[data-theme="light"] body.student-portal-page .metric.amber{--metric-accent:#d68a00;--metric-accent-soft:rgba(240,176,95,.18);--metric-bg-start:var(--portal-status-amber-bg);--metric-bg-end:#fff8e6;--metric-border:#d68a00;--metric-text:var(--portal-status-amber-text)}body.parent-portal-page .homework-card{background:transparent;border:0;margin-top:10px}
body.parent-portal-page .quick-links,body.student-portal-page .quick-links{display:grid;gap:8px;grid-template-columns:1fr;margin-top:8px}
body.admin-portal-page a.btn-refresh,
body.admin-portal-page button.btn-refresh,
body.parent-portal-page a.alt,
body.parent-portal-page a.btn-refresh,
body.parent-portal-page a.primary,
body.parent-portal-page button.alt,
body.parent-portal-page button.btn-refresh,
body.parent-portal-page button.primary,
body.student-portal-page #newsQueueOpenBtn,
body.student-portal-page #openNewsPageBtn,
body.student-portal-page a.alt,
body.student-portal-page a.btn-refresh,
body.student-portal-page a.primary,
body.student-portal-page button.alt,body.student-portal-page button.btn-refresh,
body.student-portal-page button.primary{appearance:none;transition:box-shadow .14s ease,transform .14s ease,border-color .14s ease,filter .14s ease,background .14s ease}
body.admin-portal-page a.btn-refresh,
body.admin-portal-page button.btn-refresh,
body.parent-portal-page a.alt,
body.parent-portal-page a.btn-refresh,
body.parent-portal-page a.primary,
body.parent-portal-page button.alt,
body.parent-portal-page button.btn-refresh,
body.parent-portal-page button.primary,
body.student-portal-page a.alt,
body.student-portal-page a.btn-refresh,
body.student-portal-page a.primary,
body.student-portal-page button.alt,body.student-portal-page button.btn-refresh,
body.student-portal-page button.primary{align-items:center;border-radius:var(--radius-2);box-sizing:border-box;display:inline-flex;font-size:13px;font-weight:700;justify-content:center;line-height:1;min-height:42px;min-width:0;padding:10px 12px;text-align:center;text-decoration:none}
body.parent-portal-page a.alt,
body.parent-portal-page a.btn-refresh,
body.parent-portal-page a.primary,
body.parent-portal-page button.alt,
body.parent-portal-page button.btn-refresh,body.parent-portal-page button.primary{box-sizing:border-box;display:inline-flex;line-height:1;min-width:0;white-space:nowrap}body.parent-portal-page a.alt,body.parent-portal-page a.btn-refresh,body.parent-portal-page a.primary,body.parent-portal-page button.alt,body.parent-portal-page button.btn-refresh,body.parent-portal-page button.primary{min-height:42px;padding:10px 12px}
body.admin-portal-page a.btn-refresh,
body.admin-portal-page button.btn-refresh,
body.parent-portal-page a.btn-refresh,
body.parent-portal-page button.btn-refresh,
body.student-portal-page a.btn-refresh,body.student-portal-page button.btn-refresh{background:linear-gradient(180deg,#2d66cb,#173f89);border-color:#163b80;color:#fff}
body.parent-portal-page a.primary,
body.parent-portal-page button.primary,
body.student-portal-page #newsQueueOpenBtn,
body.student-portal-page #openNewsPageBtn,
body.student-portal-page a.primary,body.student-portal-page button.primary{background:linear-gradient(180deg,var(--brand),var(--brand-strong));border-color:#7f1520;color:#fff}
body.parent-portal-page a.alt,
body.parent-portal-page button.alt,
body.student-portal-page a.alt,body.student-portal-page button.alt{background:linear-gradient(180deg,#2756ab,#173f89);border-color:#163b80;color:#fff}
body.admin-portal-page a.btn-refresh:focus-visible,
body.admin-portal-page a.btn-refresh:hover,
body.admin-portal-page button.btn-refresh:focus-visible,
body.admin-portal-page button.btn-refresh:hover:not(:disabled),
body.parent-portal-page a.alt:focus-visible,
body.parent-portal-page a.alt:hover,
body.parent-portal-page a.btn-refresh:focus-visible,
body.parent-portal-page a.btn-refresh:hover,
body.parent-portal-page a.primary:focus-visible,
body.parent-portal-page a.primary:hover,
body.parent-portal-page button.alt:focus-visible,
body.parent-portal-page button.alt:hover:not(:disabled),
body.parent-portal-page button.btn-refresh:focus-visible,
body.parent-portal-page button.btn-refresh:hover:not(:disabled),
body.parent-portal-page button.primary:focus-visible,
body.parent-portal-page button.primary:hover:not(:disabled),
body.student-portal-page #newsQueueOpenBtn:focus-visible,
body.student-portal-page #newsQueueOpenBtn:hover:not(:disabled),
body.student-portal-page #openNewsPageBtn:focus-visible,
body.student-portal-page #openNewsPageBtn:hover:not(:disabled),
body.student-portal-page a.alt:focus-visible,
body.student-portal-page a.alt:hover,
body.student-portal-page a.btn-refresh:focus-visible,
body.student-portal-page a.btn-refresh:hover,
body.student-portal-page a.primary:focus-visible,
body.student-portal-page a.primary:hover,
body.student-portal-page button.alt:focus-visible,
body.student-portal-page button.alt:hover:not(:disabled),
body.student-portal-page button.btn-refresh:focus-visible,body.student-portal-page button.btn-refresh:hover:not(:disabled),
body.student-portal-page button.primary:focus-visible,
body.student-portal-page button.primary:hover:not(:disabled){box-shadow:0 8px 16px rgba(19,35,61,.12);filter:saturate(1.04);outline:none;transform:translateY(-1px)}
body.parent-portal-page a.primary:focus-visible,
body.parent-portal-page a.primary:hover,
body.parent-portal-page button.primary:focus-visible,
body.parent-portal-page button.primary:hover:not(:disabled),
body.student-portal-page #newsQueueOpenBtn:focus-visible,
body.student-portal-page #newsQueueOpenBtn:hover:not(:disabled),
body.student-portal-page #openNewsPageBtn:focus-visible,
body.student-portal-page #openNewsPageBtn:hover:not(:disabled),
body.student-portal-page a.primary:focus-visible,
body.student-portal-page a.primary:hover,
body.student-portal-page button.primary:focus-visible,body.student-portal-page button.primary:hover:not(:disabled){background:linear-gradient(180deg,#8f1220,#780f1b);color:#fff}
body.admin-portal-page button.btn-refresh:disabled,
body.parent-portal-page button.alt:disabled,
body.parent-portal-page button.btn-refresh:disabled,
body.parent-portal-page button.primary:disabled,
body.student-portal-page #newsQueueOpenBtn:disabled,
body.student-portal-page #openNewsPageBtn:disabled,
body.student-portal-page button.alt:disabled,body.student-portal-page button.btn-refresh:disabled,
body.student-portal-page button.primary:disabled{box-shadow:none;cursor:not-allowed;opacity:.6;transform:none}
body.parent-portal-page .queue-table-wrap table.news-queue-table .queue-row-btn,
body.parent-portal-page table.news-queue-table .queue-row-btn,body.student-portal-page .queue-table-wrap table.news-queue-table .queue-row-btn,
body.student-portal-page table.news-queue-table .queue-row-btn{background:linear-gradient(180deg,var(--portal-action-blue-top),var(--portal-action-blue-bottom))!important;background-image:linear-gradient(180deg,var(--portal-action-blue-top),var(--portal-action-blue-bottom))!important;border-color:var(--portal-action-blue-border)!important;color:var(--secondary-color)!important}
body.parent-portal-page .queue-table-wrap table.news-queue-table .queue-row-btn:focus-visible,
body.parent-portal-page .queue-table-wrap table.news-queue-table .queue-row-btn:hover:not(:disabled),
body.parent-portal-page table.news-queue-table .queue-row-btn:focus-visible,
body.parent-portal-page table.news-queue-table .queue-row-btn:hover:not(:disabled),
body.student-portal-page .queue-table-wrap table.news-queue-table .queue-row-btn:focus-visible,body.student-portal-page .queue-table-wrap table.news-queue-table .queue-row-btn:hover:not(:disabled),
body.student-portal-page table.news-queue-table .queue-row-btn:focus-visible,
body.student-portal-page table.news-queue-table .queue-row-btn:hover:not(:disabled){box-shadow:0 8px 16px rgba(19,35,61,.12);color:var(--secondary-color)!important;filter:saturate(1.04);outline:none;transform:translateY(-1px)}
body.parent-portal-page .homework-modal-btn,body.student-portal-page .homework-modal-btn{background:#f1f5ff!important;background-image:none!important;border:1px solid #9bb5df;border-radius:8px;color:#214072;cursor:pointer;font-size:12px;font-weight:700;justify-self:start;min-height:36px;padding:7px 11px}
body.parent-portal-page .homework-modal-btn:focus-visible,
body.parent-portal-page .homework-modal-btn:hover:not(:disabled),
body.student-portal-page .homework-modal-btn:focus-visible,body.student-portal-page .homework-modal-btn:hover:not(:disabled){background:#f3f8ff!important;background-image:none!important;border-color:#9bb5df;box-shadow:0 8px 16px rgba(19,35,61,.1);outline:none;transform:translateY(-1px)}
body.parent-portal-page .homework-modal-btn:disabled,body.student-portal-page .homework-modal-btn:disabled{cursor:not-allowed;opacity:.6}
body.parent-portal-page .quick-link-select,body.student-portal-page .quick-link-select{background:var(--portal-surface-support);border:1px solid var(--portal-border);border-radius:var(--radius-2);box-sizing:border-box;display:grid;font-size:13px;gap:6px;min-height:46px;padding:10px 12px}
body.parent-portal-page .quick-link-select__label,body.student-portal-page .quick-link-select__label{color:var(--portal-text-soft);font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}
body.parent-portal-page .quick-link-select select,body.student-portal-page .quick-link-select select{background:transparent;border:0;border-radius:0;color:inherit;font-size:inherit;line-height:1.25;min-height:0;padding:0;width:100%}
body.parent-portal-page .portal-action-strip,body.student-portal-page .portal-action-strip{align-items:center;display:grid;gap:10px;margin-top:10px}body.parent-portal-page #quickLinksPanel{margin-bottom:2px;margin-top:0;padding:4px 8px}
body.parent-portal-page .portal-action-strip__actions,body.student-portal-page .portal-action-strip__actions{display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end}body.parent-portal-page .portal-action-strip__actions{display:grid;gap:8px;grid-template-columns:repeat(3,minmax(0,1fr));justify-content:stretch;margin-bottom:1.25rem;width:100%}@media (min-width:1000px){body.parent-portal-page .portal-action-strip__actions{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (max-width:999px){body.parent-portal-page .portal-action-strip__actions{grid-template-columns:1fr}}
body.parent-portal-page :is(button, a).portal-action-btn,body.student-portal-page :is(button, a).portal-action-btn{align-items:center;border-radius:11px;border-style:solid;border-width:1px;box-shadow:0 10px 22px rgba(19,35,61,.14);color:#fff;display:inline-flex;flex:0 1 clamp(136px,12vw,172px);font-size:13px;font-weight:800;justify-content:center;letter-spacing:.01em;min-height:46px;padding:10px 16px;text-align:center;text-decoration:none;transition:box-shadow .14s ease,transform .14s ease,border-color .14s ease,filter .14s ease}body.parent-portal-page :is(button, a).portal-action-btn{flex:0 1 clamp(136px,12vw,172px)}
body.parent-portal-page :is(button, a).portal-action-btn:focus-visible,
body.parent-portal-page :is(button, a).portal-action-btn:hover:not(:disabled),
body.student-portal-page :is(button, a).portal-action-btn:focus-visible,body.student-portal-page :is(button, a).portal-action-btn:hover:not(:disabled){box-shadow:0 12px 24px rgba(17,29,51,.2);filter:saturate(1.06);outline:none;transform:translateY(-1px)}
body.parent-portal-page :is(button, a).portal-action-btn:disabled,body.student-portal-page :is(button, a).portal-action-btn:disabled{box-shadow:none;cursor:not-allowed;opacity:.64;transform:none}
body.parent-portal-page :is(button, a).portal-action-btn.portal-action-btn--brand,body.student-portal-page :is(button, a).portal-action-btn.portal-action-btn--brand{background:linear-gradient(180deg,var(--portal-action-blue-top) 0,var(--portal-action-blue-bottom) 100%);border-color:var(--portal-action-blue-border);color:var(--portal-action-blue-text)}
body.parent-portal-page :is(button, a).portal-action-btn.portal-action-btn--success,body.student-portal-page :is(button, a).portal-action-btn.portal-action-btn--success{background:linear-gradient(180deg,var(--portal-action-green-top) 0,var(--portal-action-green-bottom) 100%);border-color:var(--portal-action-green-border);color:var(--portal-action-green-text)}
body.parent-portal-page :is(button, a).portal-action-btn.portal-action-btn--danger,body.student-portal-page :is(button, a).portal-action-btn.portal-action-btn--danger{background:linear-gradient(180deg,var(--portal-action-red-top) 0,var(--portal-action-red-bottom) 100%);border-color:var(--portal-action-red-border);color:var(--portal-action-red-text)}body.parent-portal-page .homework-card-shell{align-items:stretch}body.parent-portal-page .homework-link{color:#174f92;font-size:clamp(12px,2.8vw,14px);font-weight:700;line-height:1.35;min-width:0;overflow-wrap:anywhere;text-decoration:underline;text-decoration-thickness:1.2px;text-underline-offset:2px}
body.parent-portal-page .quick-link,body.student-portal-page .quick-link{align-items:center;background:var(--portal-control-surface);border:1px solid var(--portal-control-border);border-radius:var(--radius-2);color:var(--portal-control-text);display:inline-flex;font-size:13px;font-weight:700;justify-content:center;min-height:42px;padding:9px 12px;text-align:center;text-decoration:none}
body.parent-portal-page .quick-link:focus-visible,
body.parent-portal-page .quick-link:hover,
body.student-portal-page .quick-link:focus-visible,body.student-portal-page .quick-link:hover{background:var(--portal-control-surface-hover);border-color:var(--portal-quick-link-hover-border);outline:none}
body.parent-portal-page button.quick-link:hover:not(:disabled),body.student-portal-page button.quick-link:hover:not(:disabled){box-shadow:none;transform:none}body.parent-portal-page .detail-item{background:var(--portal-surface-card);border:1px solid var(--portal-border);border-radius:var(--radius-2);display:grid;gap:6px;padding:10px}body.parent-portal-page .detail-empty{background:#f8fbff;border:1px dashed var(--line);border-radius:10px;color:var(--ink-soft);font-size:13px;line-height:1.45;padding:12px}html[data-theme="dark"] body.parent-portal-page .calendar-empty,
html[data-theme="dark"] body.parent-portal-page .detail-empty,
html[data-theme="dark"] body.student-portal-page .calendar-empty,
html[data-theme="dark"] body.student-portal-page .detail-empty{background:var(--portal-dark-surface-support);border-color:var(--portal-dark-border-strong);color:var(--portal-dark-text-soft)}@media (max-width:399px){
  body.parent-portal-page .identity-list,
  body.parent-portal-page .metrics,
  body.student-portal-page .identity-list,body.student-portal-page .metrics{grid-template-columns:1fr}}@media (min-width:720px){
  body.parent-portal-page .identity-list,body.student-portal-page .identity-list{grid-template-columns:repeat(4,minmax(0,1fr))}body.parent-portal-page .metrics,body.parent-portal-page .report-metrics,body.student-portal-page .detail-metrics,body.student-portal-page .metrics{grid-template-columns:repeat(3,minmax(0,1fr))}body.parent-portal-page #overviewPanel{align-items:end;grid-template-columns:minmax(0,1fr) auto}body.parent-portal-page #overviewPanel .toolbar-actions{display:flex}
  body.parent-portal-page .portal-action-strip,body.student-portal-page .portal-action-strip{grid-template-columns:minmax(260px,420px) minmax(0,1fr)}}@media (min-width:1000px){
  body.parent-portal-page .quick-links,body.student-portal-page .quick-links{grid-template-columns:repeat(2,minmax(0,1fr))}
  body.parent-portal-page .metrics,body.student-portal-page .metrics{grid-template-columns:repeat(3,minmax(0,1fr))}
  body.parent-portal-page .portal-col,body.student-portal-page .portal-col{grid-template-columns:repeat(2,minmax(0,1fr))}body.parent-portal-page #identityPanel{position:relative}body.parent-portal-page #identityPanel>.section-head{min-width:0;padding-right:0}body.parent-portal-page #identityPanel>#studentIdentity{margin-bottom:0}body.parent-portal-page #identityPanel>.identity-list{margin-top:10px}body.parent-portal-page #identityPanel>#quickLinksPanel{align-items:stretch;box-sizing:border-box;display:flex;flex-direction:column;gap:12px;margin:12px 0;padding:10px 12px;width:100%}body.parent-portal-page #identityPanel>#quickLinksPanel .quick-link-select{width:100%}body.parent-portal-page #overviewPanel,
  body.parent-portal-page #portalStatus{grid-column:1/-1}
  body.parent-portal-page #currentHomeworkCard,body.parent-portal-page #identityPanel,
  body.parent-portal-page #pastDueHomeworkCard,
  body.parent-portal-page #performanceReportsCard,
  body.parent-portal-page #recommendationsCard{grid-column:1}
  body.parent-portal-page #attendanceCalendarCard,
  body.parent-portal-page #gradesYtdCard,body.parent-portal-page #metricsPanel,
  body.parent-portal-page #newsQueueCard{grid-column:2}}body.parent-portal-page .report-head-card{background:var(--portal-surface-card)!important;border:1px solid var(--portal-border)!important;border-inline-start:4px solid var(--portal-border-strong)!important}body.parent-portal-page .report-archive-item,body.parent-portal-page .report-grade-card{background:var(--portal-surface-card)!important;border:1px solid var(--portal-border)!important}body.parent-portal-page .report-archive-item{border-inline-start:4px solid var(--brand-2)!important}body.parent-portal-page .report-archive-link{color:var(--portal-login-link)!important}
body.parent-portal-page .report-band h5,
body.parent-portal-page .report-block h5,
body.parent-portal-page .report-grade-block h5,body.parent-portal-page .report-head-card h5{color:var(--portal-text-soft)!important;font-size:11px;font-weight:800;letter-spacing:.04em;margin:0;text-transform:uppercase}body.parent-portal-page .report-band{background:var(--portal-surface-panel)!important;border:1px solid var(--portal-border)!important;border-inline-start:5px solid var(--portal-border-strong)!important}
body.parent-portal-page .report-band-table td,body.parent-portal-page .report-band-table th{border-top:1px solid var(--portal-border)!important}body.parent-portal-page .report-band-table th{color:var(--portal-text-soft)!important}body.parent-portal-page .report-band-table td,body.parent-portal-page .report-band-table td:nth-child(2){color:var(--portal-text)!important}body.parent-portal-page .report-grade-block{background:var(--portal-surface-card)!important;border:1px solid var(--portal-border)!important}body.parent-portal-page .report-band.is-ok{border-inline-start-color:var(--portal-status-good-border)}body.parent-portal-page .report-band.is-watch{border-inline-start-color:var(--portal-status-warn-border)}body.parent-portal-page .report-band.is-alert{border-inline-start-color:var(--portal-status-bad-border)}body.parent-portal-page .report-head-card{background:linear-gradient(180deg,#f9fcff,#eef4fb);border:1px solid #c9d7ea;border-left:4px solid #6f94be;border-radius:10px;box-sizing:border-box;display:grid;gap:6px;padding:10px 12px}body.parent-portal-page .report-head-grid{display:grid;gap:10px;grid-template-columns:repeat(2,minmax(0,1fr))}body.parent-portal-page .report-modal-nav{display:inline-flex;flex-wrap:wrap;gap:10px;justify-content:flex-end}@media (max-width:900px){body.parent-portal-page .report-modal-body{grid-template-columns:1fr}}body.parent-portal-page .report-grade-card{background:linear-gradient(180deg,#fcfeff,#f2f7fe);border:1px solid #d4dfeb;border-radius:10px;box-sizing:border-box;overflow:auto;padding:10px}body.parent-portal-page .report-homework-cards{display:grid;gap:10px;grid-template-columns:repeat(2,minmax(0,1fr))}body.parent-portal-page .report-homework-cards .homework-card{margin-top:0}body.parent-portal-page #performanceReportHomeworkBlock .homework-card-shell{grid-template-columns:92px minmax(0,1fr);padding:10px}body.parent-portal-page #performanceReportHomeworkBlock .homework-square{min-height:92px}body.parent-portal-page #performanceReportAttendanceMetrics{grid-template-columns:repeat(3,minmax(0,1fr))}body.parent-portal-page #performanceReportAttendanceMetrics .attendance-square{aspect-ratio:auto;min-height:84px}body.parent-portal-page #performanceReportAttendanceMetrics .attendance-square-v{font-size:clamp(26px,4.8vw,42px)}body.parent-portal-page .report-modal-body{align-items:start;display:grid;gap:12px;grid-template-columns:repeat(2,minmax(0,1fr))}body.parent-portal-page .report-modal-nav button{background:#f1f5ff!important;background-image:none!important;border-color:#9bb5df;color:#214072;min-height:32px;min-width:54px;padding:4px 10px}
body.parent-portal-page #newsWeekSetModalNextBtn,body.parent-portal-page #newsWeekSetModalPrevBtn{background:#f1f5ff!important;background-image:none!important;border:1px solid #9bb5df;color:#214072}
body.parent-portal-page #newsWeekSetModalNextBtn:focus-visible,
body.parent-portal-page #newsWeekSetModalNextBtn:hover:not(:disabled),
body.parent-portal-page #newsWeekSetModalPrevBtn:focus-visible,body.parent-portal-page #newsWeekSetModalPrevBtn:hover:not(:disabled){background:#f3f8ff!important;background-image:none!important;border-color:#9bb5df;box-shadow:0 8px 16px rgba(19,35,61,.12);outline:none;transform:translateY(-1px)}body.parent-portal-page #newsWeekSetModal :where(input, textarea)[readonly]{background:#fff;border-color:#b7c8df;color:var(--ink);cursor:default}html[data-theme="dark"] body.parent-portal-page #newsWeekSetModal :where(input, textarea)[readonly]{background:var(--portal-dark-field-bg);border-color:var(--portal-dark-field-border);color:var(--portal-dark-field-text)}body.parent-portal-page .report-archive-list{display:grid;gap:10px;margin:0}body.parent-portal-page .report-archive-item{align-items:start;background:#f8fbff;border:1px solid #c8d5e8;border-inline-start:4px solid var(--brand-2);border-radius:10px;display:grid;gap:8px;min-height:96px;padding:12px 14px}body.parent-portal-page .report-archive-link{background:none;border:0;color:#154b8a;cursor:pointer;font-size:14px;font-weight:inherit;justify-self:start;padding:0;text-align:left;text-decoration:underline;text-underline-offset:2px}
html[data-theme="dark"] body.parent-portal-page .detail-item,
html[data-theme="dark"] body.parent-portal-page .homework-card-shell,
html[data-theme="dark"] body.parent-portal-page .metric,
html[data-theme="dark"] body.parent-portal-page .panel,
html[data-theme="dark"] body.parent-portal-page .report-archive-item,
html[data-theme="dark"] body.parent-portal-page .report-grade-card,
html[data-theme="dark"] body.parent-portal-page .report-head-card,html[data-theme="dark"] body.parent-portal-page .toolbar{background:var(--portal-dark-surface-card);border-color:var(--portal-dark-border);color:var(--portal-dark-text)}
html[data-theme="dark"] body.parent-portal-page .metric.bad,html[data-theme="dark"] body.parent-portal-page .metric.good,
html[data-theme="dark"] body.parent-portal-page .metric.warn{color:var(--portal-dark-text)}html[data-theme="dark"] body.parent-portal-page .report-archive-link{color:#b4c4ea}body.parent-portal-page .report-head-value{font-size:13px;line-height:1.4;margin:0;word-break:break-word}body.parent-portal-page .report-head-card h5{color:#1c436d;font-size:11px;font-weight:800;letter-spacing:.04em;margin:0;text-transform:uppercase}body.parent-portal-page .report-block h5{color:#1d446f;font-size:11px;letter-spacing:.04em;margin:0;text-transform:uppercase}body.parent-portal-page .report-grade-block h5{color:#1a436f;font-size:12px;font-weight:800;letter-spacing:.03em;margin:0;text-transform:uppercase}body.parent-portal-page .report-bands{display:grid;gap:10px}body.parent-portal-page .report-band{background:linear-gradient(180deg,#f8fbff,#eef4fb);border:1px solid #c8d5e8;border-left:5px solid #7f99bc;border-radius:10px;display:grid;gap:8px;padding:10px 12px}body.parent-portal-page .report-band h5{color:#1a436f;font-size:12px;font-weight:800;letter-spacing:.03em;margin:0;text-transform:uppercase}body.parent-portal-page .report-band-table{border-collapse:collapse;table-layout:fixed;width:100%}
body.parent-portal-page .report-band-table td,body.parent-portal-page .report-band-table th{border-top:1px solid #d8e3f1;padding:7px 8px;text-align:left;vertical-align:top}body.parent-portal-page .report-band-table th{color:#2b4f76;font-size:11px;font-weight:800;letter-spacing:.03em;margin:0;text-transform:uppercase}body.parent-portal-page .report-band-table td{color:#21496f;font-size:12px;line-height:1.35}body.parent-portal-page .report-band-table td:nth-child(2){color:#173f69;font-weight:800;white-space:nowrap;width:18%}body.parent-portal-page .report-band-table td:nth-child(1){width:46%}body.parent-portal-page .report-band-table td:nth-child(3){width:36%}body.parent-portal-page .report-grade-block{background:linear-gradient(180deg,#fcfeff,#f2f7fe);border:1px solid #ccd9eb;border-radius:10px;display:grid;gap:8px;padding:10px}body.parent-portal-page #performanceReportModal .portal-modal-dialog{box-sizing:border-box;max-height:calc(100vh - 20px);padding:14px;width:min(1120px,calc(100vw - 20px))}body.parent-portal-page .report-band.is-ok{border-left-color:var(--portal-status-good-border)}body.parent-portal-page .report-band.is-watch{border-left-color:var(--portal-status-warn-border)}body.parent-portal-page .report-band.is-alert{border-left-color:var(--portal-status-bad-border)}
body.parent-portal-page .dashboard-card-subtitle,body.parent-portal-page .report-archive-meta,
body.parent-portal-page .report-archive-status{color:var(--portal-text-soft);font-size:12px}body.parent-portal-page .dashboard-card-subtitle{margin:-2px 0 0}body.parent-portal-page .report-grades-table{min-height:170px}
body.parent-portal-page #performanceReportGradesTable table,body.parent-portal-page .report-grades-table table{background:#fff}body.parent-portal-page .report-grades-hint{color:#48698f;font-size:12px;margin:0}body.parent-portal-page .report-modal-ack{align-items:center;display:grid;gap:10px;grid-column:1/-1;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}body.parent-portal-page .report-modal-ack button{min-height:42px;padding:10px 12px}body.parent-portal-page .report-modal-ack-status{color:var(--portal-status-good-text);font-size:13px;font-weight:700}body.parent-portal-page .report-modal-ack-status.is-reviewed{color:var(--portal-status-warn-text)}@media (max-width:520px){
  body.parent-portal-page #performanceReportAttendanceMetrics,body.parent-portal-page .report-head-grid,
  body.parent-portal-page .report-homework-cards{grid-template-columns:1fr}body.parent-portal-page .report-band-table,
  body.parent-portal-page .report-band-table tbody,
  body.parent-portal-page .report-band-table td,
  body.parent-portal-page .report-band-table tr{display:block;width:100%}body.parent-portal-page .report-band-table thead{display:none}body.parent-portal-page .report-band-table tr{border-top:1px solid #d8e3f1;padding-top:4px}body.parent-portal-page .report-band-table td{border-top:0;padding:4px 0}
  body.parent-portal-page .choice-group,body.student-portal-page .choice-group{gap:10px;padding:10px 12px}
  body.parent-portal-page .choice-option,body.student-portal-page .choice-option{gap:12px;min-height:44px;padding-block:6px;touch-action:manipulation}
  body.parent-portal-page .choice-option input[type="checkbox"],
  body.parent-portal-page .choice-option input[type="radio"],body.student-portal-page .choice-option input[type="checkbox"],
  body.student-portal-page .choice-option input[type="radio"]{height:22px;min-height:22px;width:22px}
  body.parent-portal-page select,body.student-portal-page select{min-height:48px;padding-block:12px;touch-action:manipulation}
  body.parent-portal-page .quick-link-select,body.student-portal-page .quick-link-select{gap:8px;min-height:52px;padding:12px 14px}
  body.parent-portal-page .quick-link-select select,body.student-portal-page .quick-link-select select{min-height:44px}}
html[data-theme="dark"] body.parent-portal-page .calendar-shell,html[data-theme="dark"] body.student-portal-page .calendar-shell{--fc-border-color:hsla(0,0%,100%,.16);--fc-event-bg-color:var(--portal-dark-surface-support);--fc-event-border-color:var(--portal-dark-border-strong);--fc-event-text-color:var(--portal-dark-text);--fc-neutral-bg-color:hsla(0,0%,100%,.02);--fc-page-bg-color:transparent;--fc-today-bg-color:rgba(106,164,255,.12);background:var(--portal-dark-surface-card);background-color:var(--portal-dark-panel-soft);border:1px solid var(--portal-dark-border-strong);border-radius:var(--portal-dark-radius);box-shadow:inset 0 1px 0 hsla(0,0%,100%,.04);color:var(--portal-dark-text)}html[data-theme="dark"] body.parent-portal-page .calendar-shell .fc-col-header-cell-cushion,html[data-theme="dark"] body.parent-portal-page .calendar-shell .fc-daygrid-day-number,html[data-theme="dark"] body.parent-portal-page .calendar-shell .fc-toolbar-title,html[data-theme="dark"] body.student-portal-page .calendar-shell .fc-col-header-cell-cushion,html[data-theme="dark"] body.student-portal-page .calendar-shell .fc-daygrid-day-number,html[data-theme="dark"] body.student-portal-page .calendar-shell .fc-toolbar-title{color:var(--portal-dark-text)}
html[data-theme="dark"] body.parent-portal-page .calendar-shell .fc-col-header-cell-cushion,html[data-theme="dark"] body.student-portal-page .calendar-shell .fc-col-header-cell-cushion{color:rgba(242,244,247,.84)}
html[data-theme="dark"] body.parent-portal-page .calendar-shell .fc-daygrid-day-number,html[data-theme="dark"] body.student-portal-page .calendar-shell .fc-daygrid-day-number{font-weight:700}
html[data-theme="dark"] body.parent-portal-page .calendar-shell .fc-daygrid-day.fc-day-other .fc-daygrid-day-number,html[data-theme="dark"] body.student-portal-page .calendar-shell .fc-daygrid-day.fc-day-other .fc-daygrid-day-number{color:rgba(242,244,247,.58)}
html[data-theme="dark"] body.parent-portal-page .calendar-shell .fc-daygrid-day-frame,html[data-theme="dark"] body.student-portal-page .calendar-shell .fc-daygrid-day-frame{min-height:108px}
html[data-theme="dark"] body.parent-portal-page .calendar-shell .fc-daygrid-day,html[data-theme="dark"] body.student-portal-page .calendar-shell .fc-daygrid-day{background:hsla(0,0%,100%,.015)}
html[data-theme="dark"] body.parent-portal-page .calendar-shell .fc-daygrid-day.fc-day-today,html[data-theme="dark"] body.student-portal-page .calendar-shell .fc-daygrid-day.fc-day-today{background:rgba(106,164,255,.1)}
body.parent-portal-page .calendar-shell,body.student-portal-page .calendar-shell{--fc-border-color:#c9d6e6;--fc-button-active-bg-color:#7f1520;--fc-button-active-border-color:#6b1019;--fc-button-bg-color:#b50010;--fc-button-border-color:#8d0010;--fc-button-hover-bg-color:#92000d;--fc-button-hover-border-color:#76000a;--fc-event-text-color:#173b78;--fc-neutral-bg-color:#f6f9ff;--fc-page-bg-color:#fff;--fc-today-bg-color:rgba(24,67,135,.08)}
body.parent-portal-page .calendar-shell .fc-toolbar.fc-header-toolbar,body.student-portal-page .calendar-shell .fc-toolbar.fc-header-toolbar{gap:8px;margin-bottom:12px}
body.parent-portal-page .calendar-shell .fc-toolbar-title,body.student-portal-page .calendar-shell .fc-toolbar-title{color:#163767;font-size:clamp(1rem,3vw,1.2rem);line-height:1.2}
body.parent-portal-page .calendar-shell .fc-button-primary,body.student-portal-page .calendar-shell .fc-button-primary{border-radius:var(--radius-2);box-shadow:none;font-weight:700;letter-spacing:.01em;text-transform:none}
body.parent-portal-page .calendar-shell .fc-col-header-cell-cushion,
body.parent-portal-page .calendar-shell .fc-daygrid-day-number,
body.student-portal-page .calendar-shell .fc-col-header-cell-cushion,body.student-portal-page .calendar-shell .fc-daygrid-day-number{color:#163767;font-weight:700;text-decoration:none}
body.parent-portal-page .calendar-shell .fc-daygrid-day-number,body.student-portal-page .calendar-shell .fc-daygrid-day-number{font-size:clamp(1rem,1.7vw,1.14rem);line-height:1.1;padding:6px 8px 0}
body.parent-portal-page .calendar-shell .fc-col-header-cell-cushion,body.student-portal-page .calendar-shell .fc-col-header-cell-cushion{font-size:clamp(.82rem,1.3vw,.94rem);letter-spacing:.05em;line-height:1.15;padding:8px 4px;text-transform:uppercase}
body.parent-portal-page .calendar-shell .fc-daygrid-day-frame,body.student-portal-page .calendar-shell .fc-daygrid-day-frame{min-height:108px}
body.parent-portal-page .calendar-shell .fc-daygrid-day,body.student-portal-page .calendar-shell .fc-daygrid-day{background:hsla(0,0%,100%,.015)}
body.parent-portal-page .calendar-shell .fc-daygrid-day.fc-day-today,body.student-portal-page .calendar-shell .fc-daygrid-day.fc-day-today{background:rgba(24,67,135,.08)}body.student-portal-page .calendar-shell .fc-daygrid-day.calendar-day-completed{background:#eefaf3;border-color:#8ccba9}body.student-portal-page .calendar-shell .fc-daygrid-day.calendar-day-blue,body.student-portal-page .calendar-shell .fc-daygrid-day.calendar-day-open{background:#e6f3ff;border-color:#4093d2}body.student-portal-page .calendar-shell .fc-daygrid-day.calendar-day-turquoise{background:#e1fbf9;border-color:#2ba39a}body.student-portal-page .calendar-shell .fc-daygrid-day.calendar-day-missed{background:#fff1f1;border-color:#e1a8a8}body.student-portal-page .calendar-shell .fc-daygrid-day.calendar-day-revise{background:#f3ecff;border-color:#a48ad8}body.student-portal-page .calendar-shell .fc-daygrid-day.calendar-day-alert{background:#fff5df;border-color:#e5ab34}
body.parent-portal-page .fc .fc-daygrid-event,body.student-portal-page .fc .fc-daygrid-event{border-radius:10px;margin-top:4px;padding:4px 6px;white-space:normal}
body.parent-portal-page .fc .fc-event-main,body.student-portal-page .fc .fc-event-main{font-size:.9rem;font-weight:700;line-height:1.2;white-space:normal}
body.parent-portal-page .fc .fc-event.fc-event-news-completed,body.student-portal-page .fc .fc-event.fc-event-news-completed{background:#eefaf3!important;border-color:#8ccba9!important;color:#195d3d!important}
body.parent-portal-page .fc .fc-event.fc-event-news-open,body.student-portal-page .fc .fc-event.fc-event-news-open{background:#e6f3ff!important;border-color:#4093d2!important;color:#0f4a73!important}
body.parent-portal-page .fc .fc-event.fc-event-news-open .fc-event-main,
body.parent-portal-page .fc .fc-event.fc-event-news-open .fc-event-time,
body.parent-portal-page .fc .fc-event.fc-event-news-open .fc-event-title,body.student-portal-page .fc .fc-event.fc-event-news-open .fc-event-main,
body.student-portal-page .fc .fc-event.fc-event-news-open .fc-event-time,
body.student-portal-page .fc .fc-event.fc-event-news-open .fc-event-title{color:#0f4a73!important}
body.parent-portal-page .fc .fc-event.fc-event-news-status-green,body.student-portal-page .fc .fc-event.fc-event-news-status-green{background:#e7f8ef!important;border-color:#36a66a!important;color:#0f4f30!important}
body.parent-portal-page .fc .fc-event.fc-event-news-status-green .fc-event-main,
body.parent-portal-page .fc .fc-event.fc-event-news-status-green .fc-event-time,
body.parent-portal-page .fc .fc-event.fc-event-news-status-green .fc-event-title,body.student-portal-page .fc .fc-event.fc-event-news-status-green .fc-event-main,
body.student-portal-page .fc .fc-event.fc-event-news-status-green .fc-event-time,
body.student-portal-page .fc .fc-event.fc-event-news-status-green .fc-event-title{color:#0f4f30!important}
body.parent-portal-page .fc .fc-event.fc-event-news-status-amber,body.student-portal-page .fc .fc-event.fc-event-news-status-amber{background:#fff4da!important;border-color:#d89d28!important;color:#5b3b00!important}
body.parent-portal-page .fc .fc-event.fc-event-news-status-purple,body.student-portal-page .fc .fc-event.fc-event-news-status-purple{background:#f3ecff!important;border-color:#a48ad8!important;color:#422b7a!important}
body.parent-portal-page .fc .fc-event.fc-event-news-status-red,body.student-portal-page .fc .fc-event.fc-event-news-status-red{background:#ffe1e5!important;border-color:#d43b4e!important;color:#6d0d1a!important}
body.parent-portal-page .fc .fc-event.fc-event-news-status-red .fc-event-main,
body.parent-portal-page .fc .fc-event.fc-event-news-status-red .fc-event-time,
body.parent-portal-page .fc .fc-event.fc-event-news-status-red .fc-event-title,body.student-portal-page .fc .fc-event.fc-event-news-status-red .fc-event-main,
body.student-portal-page .fc .fc-event.fc-event-news-status-red .fc-event-time,
body.student-portal-page .fc .fc-event.fc-event-news-status-red .fc-event-title{color:#6d0d1a!important}body.parent-portal-page .fc .fc-event.fc-event-news-status-blue,body.parent-portal-page .fc .fc-event.fc-event-today,body.student-portal-page .fc .fc-event.fc-event-news-status-blue,body.student-portal-page .fc .fc-event.fc-event-today{background:#e6f3ff!important;border-color:#4093d2!important;color:#0f4a73!important}
body.parent-portal-page .fc .fc-event.fc-event-today .fc-event-main,
body.parent-portal-page .fc .fc-event.fc-event-today .fc-event-time,
body.parent-portal-page .fc .fc-event.fc-event-today .fc-event-title,body.student-portal-page .fc .fc-event.fc-event-today .fc-event-main,
body.student-portal-page .fc .fc-event.fc-event-today .fc-event-time,
body.student-portal-page .fc .fc-event.fc-event-today .fc-event-title{color:#0f4a73!important}
body.parent-portal-page .fc .fc-event.fc-event-news-status-turquoise,body.student-portal-page .fc .fc-event.fc-event-news-status-turquoise{background:#e1fbf9!important;border-color:#2ba39a!important;color:#085852!important}
body.parent-portal-page .fc .fc-event.fc-event-news-status-revise,body.student-portal-page .fc .fc-event.fc-event-news-status-revise{background:#f3ecff!important;border-color:#a48ad8!important;color:#422b7a!important}body.parent-portal-page .fc .fc-event.fc-event-news-missed,body.parent-portal-page .fc .fc-event.fc-event-news-missed .fc-event-main,body.parent-portal-page .fc .fc-event.fc-event-news-missed .fc-event-time,body.parent-portal-page .fc .fc-event.fc-event-news-missed .fc-event-title,body.student-portal-page .fc .fc-event.fc-event-news-missed,body.student-portal-page .fc .fc-event.fc-event-news-missed .fc-event-main,body.student-portal-page .fc .fc-event.fc-event-news-missed .fc-event-time,body.student-portal-page .fc .fc-event.fc-event-news-missed .fc-event-title{color:#6d0d1a!important}
html[data-theme="dark"] body.parent-portal-page .fc .fc-event.fc-event-news-missed,html[data-theme="dark"] body.student-portal-page .fc .fc-event.fc-event-news-missed{background:rgba(255,107,129,.14)!important;border-color:rgba(255,107,129,.34)!important;color:#ffe3e6!important}
html[data-theme="dark"] body.parent-portal-page .fc .fc-event.fc-event-news-missed .fc-event-main,
html[data-theme="dark"] body.parent-portal-page .fc .fc-event.fc-event-news-missed .fc-event-time,
html[data-theme="dark"] body.parent-portal-page .fc .fc-event.fc-event-news-missed .fc-event-title,html[data-theme="dark"] body.student-portal-page .fc .fc-event.fc-event-news-missed .fc-event-main,
html[data-theme="dark"] body.student-portal-page .fc .fc-event.fc-event-news-missed .fc-event-time,
html[data-theme="dark"] body.student-portal-page .fc .fc-event.fc-event-news-missed .fc-event-title{color:#ffe3e6!important}
body.parent-portal-page .fc .fc-event.fc-event-review-track,body.student-portal-page .fc .fc-event.fc-event-review-track{background:#f1efff!important;border-color:#9a8cdc!important;color:#45317d!important}
body.parent-portal-page .fc .fc-event.fc-event-homework-track,body.student-portal-page .fc .fc-event.fc-event-homework-track{background:#edf4ff!important;border-color:#83a8de!important;color:#173b78!important}
body.parent-portal-page .fc .fc-event.fc-event-homework-overdue,body.student-portal-page .fc .fc-event.fc-event-homework-overdue{background:#ffdbe0!important;border-color:#ff2338!important;color:#7d0010!important}
body.parent-portal-page .fc .fc-event.fc-event-attendance-present,body.student-portal-page .fc .fc-event.fc-event-attendance-present{background:#eefaf3!important;border-color:#8ccba9!important;color:#195d3d!important}
body.parent-portal-page .fc .fc-event.fc-event-attendance-absent,body.student-portal-page .fc .fc-event.fc-event-attendance-absent{background:#fff1f1!important;border-color:#e1a8a8!important;color:#7d0010!important}
body.parent-portal-page .fc .fc-event.fc-event-attendance-late,body.student-portal-page .fc .fc-event.fc-event-attendance-late{background:#fff5df!important;border-color:#e5ab34!important;color:#8a5600!important}
body.parent-portal-page .fc .fc-event.fc-event-attendance-excused,body.student-portal-page .fc .fc-event.fc-event-attendance-excused{background:#eef3ff!important;border-color:#91a3d5!important;color:#2b4278!important}
body.parent-portal-page .fc .fc-event.fc-event-report,body.student-portal-page .fc .fc-event.fc-event-report{background:#f1efff!important;border-color:#9a8cdc!important;color:#45317d!important}
body.parent-portal-page .fc .fc-event.fc-event-grade,body.student-portal-page .fc .fc-event.fc-event-grade{background:#edf4ff!important;border-color:#83a8de!important;color:#173b78!important}
body.parent-portal-page .fc .fc-event.fc-obtrusive-alert,body.student-portal-page .fc .fc-event.fc-obtrusive-alert{animation:overdueBlink 1.6s ease-in-out infinite;background:#ff2338!important;border-color:#ff2338!important;border-width:2px;box-shadow:inset 0 0 0 1px rgba(125,0,16,.16);color:#0b1220!important}
body.parent-portal-page .fc .fc-event.fc-obtrusive-alert .fc-event-main,body.student-portal-page .fc .fc-event.fc-obtrusive-alert .fc-event-main{color:inherit!important}
body.parent-portal-page .fc .fc-event.fc-obtrusive-alert .fc-event-time,
body.parent-portal-page .fc .fc-event.fc-obtrusive-alert .fc-event-title,
body.parent-portal-page .fc .fc-event.fc-obtrusive-alert .fc-event-title-container,
body.student-portal-page .fc .fc-event.fc-obtrusive-alert .fc-event-time,body.student-portal-page .fc .fc-event.fc-obtrusive-alert .fc-event-title,
body.student-portal-page .fc .fc-event.fc-obtrusive-alert .fc-event-title-container{color:#0b1220!important}
body.parent-portal-page .calendar-empty,body.student-portal-page .calendar-empty{border:1px dashed var(--line);border-radius:10px;color:var(--ink-soft);font-size:.82rem;padding:10px;text-align:center}
body.parent-portal-page .calendar-shell .fc-daygrid-day.calendar-day-alert,body.student-portal-page .calendar-shell .fc-daygrid-day.calendar-day-alert{animation:dayAlertPulse 2.4s ease-in-out infinite}@keyframes overdueBlink{0%,
  49%{filter:saturate(1);transform:scale(1)}
  100%,50%{filter:saturate(1.35) brightness(1.06);transform:scale(1.015)}}@keyframes dayAlertPulse{0%,
  100%{box-shadow:inset 0 0 0 2px rgba(255,35,56,.32)}50%{box-shadow:inset 0 0 0 3px rgba(255,35,56,.62)}}
html[data-theme="dark"] body.parent-portal-page .fc .fc-event.fc-event-attendance-present,html[data-theme="dark"] body.student-portal-page .fc .fc-event.fc-event-attendance-present{--fc-event-text-color:#dff7e9;background:rgba(124,214,164,.14)!important;border-color:rgba(124,214,164,.34)!important;color:#dff7e9!important}
html[data-theme="dark"] body.parent-portal-page .fc .fc-event.fc-event-attendance-absent,html[data-theme="dark"] body.student-portal-page .fc .fc-event.fc-event-attendance-absent{--fc-event-text-color:#ffe3e6;background:rgba(255,107,129,.14)!important;border-color:rgba(255,107,129,.34)!important;color:#ffe3e6!important}
html[data-theme="dark"] body.parent-portal-page .fc .fc-event.fc-event-attendance-late,html[data-theme="dark"] body.student-portal-page .fc .fc-event.fc-event-attendance-late{--fc-event-text-color:#fff1d0;background:rgba(240,176,95,.16)!important;border-color:rgba(240,176,95,.36)!important;color:#fff1d0!important}
html[data-theme="dark"] body.parent-portal-page .fc .fc-event.fc-event-attendance-excused,html[data-theme="dark"] body.student-portal-page .fc .fc-event.fc-event-attendance-excused{--fc-event-text-color:#eaf2ff;background:rgba(106,164,255,.14)!important;border-color:rgba(106,164,255,.34)!important;color:#eaf2ff!important}
html[data-theme="dark"] body.parent-portal-page .fc .fc-event.fc-event-report,html[data-theme="dark"] body.student-portal-page .fc .fc-event.fc-event-report{--fc-event-text-color:#45317d;background:#f1efff!important;border-color:#9a8cdc!important;color:#45317d!important}
html[data-theme="dark"] body.parent-portal-page .fc .fc-event.fc-event-report .fc-event-main,
html[data-theme="dark"] body.parent-portal-page .fc .fc-event.fc-event-report .fc-event-time,
html[data-theme="dark"] body.parent-portal-page .fc .fc-event.fc-event-report .fc-event-title,html[data-theme="dark"] body.student-portal-page .fc .fc-event.fc-event-report .fc-event-main,
html[data-theme="dark"] body.student-portal-page .fc .fc-event.fc-event-report .fc-event-time,
html[data-theme="dark"] body.student-portal-page .fc .fc-event.fc-event-report .fc-event-title{color:#45317d!important}
html[data-theme="dark"] body.parent-portal-page .calendar-empty,
html[data-theme="dark"] body.parent-portal-page .detail-empty,
html[data-theme="dark"] body.student-portal-page .calendar-empty,html[data-theme="dark"] body.student-portal-page .detail-empty{background:var(--portal-dark-surface-support)!important;border-color:var(--portal-dark-border-strong)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.04);color:var(--portal-dark-text-soft)!important}
html[data-theme="dark"] body.parent-portal-page .choice-group,html[data-theme="dark"] body.student-portal-page .choice-group{background:var(--portal-dark-surface-support)!important;border-color:var(--portal-dark-border-strong)!important;color:var(--portal-dark-text)!important}
html[data-theme="dark"] body.parent-portal-page .choice-option,html[data-theme="dark"] body.student-portal-page .choice-option{color:var(--portal-dark-text)!important}
html[data-theme="dark"] body.parent-portal-page .choice-option input[type="checkbox"],
html[data-theme="dark"] body.parent-portal-page .choice-option input[type="radio"],html[data-theme="dark"] body.student-portal-page .choice-option input[type="checkbox"],
html[data-theme="dark"] body.student-portal-page .choice-option input[type="radio"]{background:var(--portal-dark-surface-card)!important;border-color:var(--portal-dark-border-strong)!important;color:var(--portal-dark-text)!important}
html[data-theme="dark"] body.parent-portal-page .grade-quarter-pill,html[data-theme="dark"] body.student-portal-page .grade-quarter-pill{border-color:var(--portal-status-good-border);color:var(--portal-status-good-text)}
html[data-theme="dark"] body.parent-portal-page .grade-quarter-stat,
html[data-theme="dark"] body.parent-portal-page .quarter-board-meta-chip,html[data-theme="dark"] body.student-portal-page .grade-quarter-stat,
html[data-theme="dark"] body.student-portal-page .quarter-board-meta-chip{background:var(--portal-dark-surface-support);border-color:var(--portal-dark-border)}
html[data-theme="dark"] body.parent-portal-page .quarter-board-card,html[data-theme="dark"] body.student-portal-page .quarter-board-card{background:var(--portal-dark-surface-panel)}
html[data-theme="dark"] body.parent-portal-page .quarter-board-card.is-current,html[data-theme="dark"] body.student-portal-page .quarter-board-card.is-current{background:var(--portal-quarter-card-current-bg)}
html[data-theme="dark"] body.parent-portal-page .quarter-board-meta-quarter,html[data-theme="dark"] body.student-portal-page .quarter-board-meta-quarter{background:var(--portal-quarter-meta-quarter-bg);border-color:var(--portal-status-good-border);color:var(--portal-status-good-text)}
html[data-theme="dark"] body.parent-portal-page .quarter-board-meta-range,html[data-theme="dark"] body.student-portal-page .quarter-board-meta-range{background:var(--portal-dark-surface-support);color:var(--portal-dark-text)}
html[data-theme="dark"] body.parent-portal-page .quarter-board-current-pill,
html[data-theme="dark"] body.parent-portal-page .quarter-board-meta-count,
html[data-theme="dark"] body.student-portal-page .quarter-board-current-pill,html[data-theme="dark"] body.student-portal-page .quarter-board-meta-count{background:var(--portal-quarter-current-pill-bg);border-color:var(--portal-quarter-current-pill-border);color:var(--portal-quarter-current-pill-text)}
html[data-theme="dark"] body.parent-portal-page .header-action-btn.plus,html[data-theme="dark"] body.student-portal-page .header-action-btn.plus{background:var(--portal-status-good-bg);border-color:var(--portal-status-good-border);color:var(--portal-status-good-text)}
html[data-theme="dark"] body.parent-portal-page .header-action-btn.minus,html[data-theme="dark"] body.student-portal-page .header-action-btn.minus{background:var(--portal-dark-border);border-color:var(--portal-dark-border);color:var(--portal-dark-text)}
html[data-theme="dark"] body.parent-portal-page .grade-quarter-picker-btn,html[data-theme="dark"] body.student-portal-page .grade-quarter-picker-btn{background:var(--portal-control-surface);border-color:var(--portal-control-border);color:var(--portal-control-text)}
html[data-theme="dark"] body.parent-portal-page .grade-quarter-picker-btn:hover,html[data-theme="dark"] body.student-portal-page .grade-quarter-picker-btn:hover{background:var(--portal-quarter-button-hover-bg);border-color:var(--portal-quarter-button-hover-border)}
html[data-theme="dark"] body.parent-portal-page .grade-quarter-picker-btn.is-active,
html[data-theme="dark"] body.parent-portal-page .grade-quarter-picker-btn[aria-pressed="true"],html[data-theme="dark"] body.student-portal-page .grade-quarter-picker-btn.is-active,
html[data-theme="dark"] body.student-portal-page .grade-quarter-picker-btn[aria-pressed="true"]{background:var(--portal-quarter-button-active-bg);border-color:var(--portal-quarter-button-active-border);color:var(--portal-quarter-button-active-text)}
html[data-theme="dark"] body.admin-portal-page .school-map-preview-shell,html[data-theme="dark"] body.student-portal-page .school-map-preview-shell{background:var(--portal-dark-surface-card)!important;border-color:var(--portal-dark-border-strong)!important}
html[data-theme="dark"] body.parent-portal-page :where(.homework-square, .attendance-square),html[data-theme="dark"] body.student-portal-page :where(.homework-square, .attendance-square){background:var(--portal-dark-surface-support);border-color:var(--portal-dark-border-strong);color:var(--portal-dark-text)}
html[data-theme="dark"] body.parent-portal-page .attendance-square.is-good,
html[data-theme="dark"] body.parent-portal-page .homework-square.is-complete,html[data-theme="dark"] body.student-portal-page .homework-square.is-complete{background:var(--portal-status-good-bg);border-color:var(--portal-status-good-border);color:var(--portal-status-good-text)}
html[data-theme="dark"] body.parent-portal-page .homework-square.is-pending,html[data-theme="dark"] body.student-portal-page .homework-square.is-pending{background:var(--portal-status-info-bg);border-color:var(--portal-status-info-border);color:var(--portal-status-info-text)}
html[data-theme="dark"] body.parent-portal-page .attendance-square.is-warn,
html[data-theme="dark"] body.parent-portal-page .homework-square.is-none,html[data-theme="dark"] body.student-portal-page .homework-square.is-none{background:var(--portal-status-neutral-bg);border-color:var(--portal-status-neutral-border);color:var(--portal-status-neutral-text)}
html[data-theme="dark"] body.parent-portal-page .homework-square.is-clear,html[data-theme="dark"] body.student-portal-page .homework-square.is-clear{background:var(--portal-status-good-bg);border-color:var(--portal-status-good-border);color:var(--portal-status-good-text)}
html[data-theme="dark"] body.parent-portal-page .attendance-square.is-risk,
html[data-theme="dark"] body.parent-portal-page .homework-square.is-arrears,html[data-theme="dark"] body.student-portal-page .homework-square.is-arrears{background:var(--portal-status-bad-bg);border-color:var(--portal-status-bad-border);color:var(--portal-status-bad-text)}
html[data-theme="dark"] body.parent-portal-page :where(.homework-square-k, .homework-square-v, .attendance-square-k, .attendance-square-v),html[data-theme="dark"] body.student-portal-page :where(.homework-square-k, .homework-square-v){color:inherit}html[data-theme="dark"] body.student-portal-page .attendance-square-v{color:var(--secondary-color)}
html[data-theme="dark"] body.parent-portal-page .metric,html[data-theme="dark"] body.student-portal-page .metric{align-content:center;background:linear-gradient(180deg,var(--metric-bg-start,var(--portal-dark-surface-card)) 0,var(--metric-bg-end,var(--portal-dark-surface-card)) 100%);border:solid var(--metric-border,var(--portal-dark-border-strong));border-radius:10px;border-width:2px 2px 5px;box-shadow:inset 0 0 0 1px hsla(0,0%,100%,.08),0 10px 20px rgba(31,45,74,.05);box-sizing:border-box;color:var(--portal-dark-text);display:grid;gap:4px;min-height:72px;min-width:0;overflow:hidden;padding:8px;place-items:center;position:relative;text-align:center}
html[data-theme="dark"] body.parent-portal-page .metric::before,html[data-theme="dark"] body.student-portal-page .metric::before{background:linear-gradient(135deg,var(--metric-accent-soft,rgba(128,152,190,.12)),transparent 72%);content:"";inset:0;pointer-events:none;position:absolute}
html[data-theme="dark"] body.parent-portal-page .metric::after,html[data-theme="dark"] body.student-portal-page .metric::after{background:var(--metric-accent,var(--portal-border-strong));content:"";height:3px;inset-block-start:0;inset-inline:0;pointer-events:none;position:absolute}
html[data-theme="dark"] body.parent-portal-page .metric > *,html[data-theme="dark"] body.student-portal-page .metric > *{position:relative;z-index:1}
html[data-theme="dark"] body.parent-portal-page .metric :is(.k, .v),html[data-theme="dark"] body.student-portal-page .metric :is(.k, .v){color:var(--portal-dark-text)}
html[data-theme="dark"] body.parent-portal-page .metric.good,
html[data-theme="dark"] body.parent-portal-page .metric.green,
html[data-theme="dark"] body.parent-portal-page .metric.metric-green,html[data-theme="dark"] body.student-portal-page .metric.good,
html[data-theme="dark"] body.student-portal-page .metric.green{--metric-accent:rgba(124,214,164,.92);--metric-accent-soft:rgba(124,214,164,.18);--metric-bg-start:rgba(43,74,56,.98);--metric-bg-end:rgba(49,54,58,.98);--metric-border:rgba(124,214,164,.72);--metric-text:var(--portal-dark-text)}
html[data-theme="dark"] body.parent-portal-page .metric.metric-blue,
html[data-theme="dark"] body.student-portal-page .metric.blue,html[data-theme="dark"] body.student-portal-page .metric.warn{--metric-accent:rgba(106,164,255,.92);--metric-accent-soft:rgba(106,164,255,.18);--metric-bg-start:rgba(35,58,90,.98);--metric-bg-end:rgba(49,54,58,.98);--metric-border:rgba(106,164,255,.72);--metric-text:var(--portal-dark-text)}
html[data-theme="dark"] body.parent-portal-page .metric.metric-purple,html[data-theme="dark"] body.student-portal-page .metric.purple{--metric-accent:rgba(122,126,255,.92);--metric-accent-soft:rgba(122,126,255,.18);--metric-bg-start:rgba(60,49,92,.98);--metric-bg-end:rgba(49,54,58,.98);--metric-border:rgba(122,126,255,.72);--metric-text:var(--portal-dark-text)}
html[data-theme="dark"] body.parent-portal-page .metric.metric-red,html[data-theme="dark"] body.student-portal-page .metric.bad,
html[data-theme="dark"] body.student-portal-page .metric.red{--metric-accent:rgba(242,138,149,.92);--metric-accent-soft:rgba(242,138,149,.18);--metric-bg-start:rgba(82,45,49,.98);--metric-bg-end:rgba(49,54,58,.98);--metric-border:rgba(242,138,149,.72);--metric-text:var(--portal-dark-text)}
html[data-theme="dark"] body.parent-portal-page .metric.metric-amber,html[data-theme="dark"] body.student-portal-page .metric.amber{--metric-accent:rgba(240,176,95,.98);--metric-accent-soft:rgba(240,176,95,.2);--metric-bg-start:rgba(84,59,28,.98);--metric-bg-end:rgba(49,54,58,.98);--metric-border:rgba(240,176,95,.82);--metric-text:var(--portal-dark-text);box-shadow:inset 0 0 0 1px rgba(240,176,95,.16),0 10px 20px rgba(31,45,74,.05)}
html[data-theme="dark"] body.admin-portal-page #authBootPanel,
html[data-theme="dark"] body.admin-portal-page #authPanel,
html[data-theme="dark"] body.parent-portal-page #loginCard,html[data-theme="dark"] body.student-portal-page #loginPanel{background:var(--portal-dark-surface-card);border-color:var(--portal-dark-border-strong);color:var(--portal-dark-text)}
html[data-theme="dark"] body.parent-portal-page #loginCard .login-form,html[data-theme="dark"] body.student-portal-page #loginPanel #loginForm{grid-template-columns:1fr;margin-inline:auto}
html[data-theme="dark"] body.parent-portal-page #loginCard .login-form>.field,html[data-theme="dark"] body.student-portal-page #loginPanel #loginForm>.field{grid-column:1}
html[data-theme="dark"] body.admin-portal-page :where(#authPanel, #authPanel input, #authPanel select, #authPanel textarea),
html[data-theme="dark"] body.parent-portal-page :where(#loginCard, #loginCard .login-form, #loginCard input, #loginCard select, #loginCard textarea),html[data-theme="dark"] body.student-portal-page :where(#loginPanel, #loginPanel #loginForm, #loginPanel input, #loginPanel select, #loginPanel textarea){color:var(--portal-dark-text)}
html[data-theme="dark"] body.admin-portal-page #authPanel,
html[data-theme="dark"] body.parent-portal-page #loginCard,html[data-theme="dark"] body.student-portal-page #loginPanel{font-size:1.05rem;line-height:1.52}
html[data-theme="dark"] body.admin-portal-page :where(#authPanel input, #authPanel select, #authPanel textarea),
html[data-theme="dark"] body.parent-portal-page :where(#loginCard input, #loginCard select, #loginCard textarea),html[data-theme="dark"] body.student-portal-page :where(#loginPanel input, #loginPanel select, #loginPanel textarea){background:var(--portal-dark-field-bg);border-color:var(--portal-dark-field-border);color:var(--portal-dark-field-text)}
html[data-theme="dark"] body.admin-portal-page :where(#authPanel input, #authPanel select, #authPanel textarea)::placeholder,
html[data-theme="dark"] body.parent-portal-page :where(#loginCard input, #loginCard select, #loginCard textarea)::placeholder,html[data-theme="dark"] body.student-portal-page :where(#loginPanel input, #loginPanel select, #loginPanel textarea)::placeholder{color:var(--portal-dark-field-placeholder)}
html[data-theme="dark"] body.admin-portal-page #authPanel .login-link,
html[data-theme="dark"] body.parent-portal-page #loginCard .login-link,html[data-theme="dark"] body.student-portal-page #loginPanel .login-link{color:var(--portal-login-link-dark)}
html[data-theme="dark"] body.admin-portal-page #authPanel button.primary,
html[data-theme="dark"] body.parent-portal-page #loginCard button.primary,html[data-theme="dark"] body.student-portal-page #loginPanel button.primary{border:1px solid rgba(249,250,255,.45)}
body.admin-portal-page #authPanel :is(h1, h2),
body.parent-portal-page #loginCard :is(h1, h2),body.student-portal-page #loginPanel :is(h1, h2){font-size:clamp(1.5rem,1.2rem + 1vw,1.95rem);line-height:1.12;margin-bottom:18px}
body.admin-portal-page #authPanel :is(label, .small, .muted, .login-link),
body.parent-portal-page #loginCard :is(label, .small, .muted, .login-link),body.student-portal-page #loginPanel :is(label, .small, .muted, .login-link){line-height:1.4}
body.admin-portal-page #authPanel label,
body.parent-portal-page #loginCard label,body.student-portal-page #loginPanel label{font-size:.98rem;margin-bottom:8px;margin-top:1rem}
body.admin-portal-page #authBootPanel .small,
body.admin-portal-page #authPanel .muted,
body.admin-portal-page #authPanel .small,
body.parent-portal-page #loginCard .muted,
body.parent-portal-page #loginCard .small,
body.student-portal-page #loginPanel .muted,body.student-portal-page #loginPanel .small{font-size:.98rem;line-height:1.5}
body.parent-portal-page #loginCard .field-hint,body.student-portal-page #loginPanel .field-hint{color:var(--portal-text-soft);font-size:.95rem;line-height:1.45;margin:0}
body.admin-portal-page #authBootPanel p,
body.admin-portal-page #authPanel p,
body.parent-portal-page #loginCard p,body.student-portal-page #loginPanel p{margin:0 0 12px}
body.admin-portal-page #authPanel .login-links,
body.parent-portal-page #loginCard .login-links,body.student-portal-page #loginPanel .login-links{margin-bottom:4px}html[data-theme="dark"] .brand-logo-wrap{background:var(--portal-dark-surface-support);border-color:var(--portal-dark-border)}html[data-theme="dark"] .env-badge{background:rgba(49,54,58,.96);border-color:hsla(0,0%,100%,.18);color:var(--portal-dark-text)}html[data-theme="dark"] .env-badge[data-env="development"]{background:rgba(49,54,58,.96);border-color:rgba(124,214,164,.34);color:#cbeeda}html[data-theme="dark"] .env-badge[data-env="production"]{background:rgba(49,54,58,.96);border-color:rgba(240,176,95,.34);color:#ffe0b6}
html[data-theme="dark"] body.parent-portal-page .homework-link,html[data-theme="dark"] body.student-portal-page .homework-link{color:#b4c4ea}
html[data-theme="dark"] body.parent-portal-page .homework-link:focus-visible,
html[data-theme="dark"] body.parent-portal-page .homework-link:hover,
html[data-theme="dark"] body.student-portal-page .homework-link:focus-visible,html[data-theme="dark"] body.student-portal-page .homework-link:hover{color:#eef4ff}html[data-theme="dark"] body.parent-portal-page .metric.metric-blue,html[data-theme="dark"] body.parent-portal-page .metric.metric-purple,html[data-theme="dark"] body.student-portal-page .metric.warn{box-shadow:inset 0 0 0 1px rgba(106,164,255,.16),0 10px 20px rgba(31,45,74,.05)}
html[data-theme="dark"] body.parent-portal-page .metric.metric-red,html[data-theme="dark"] body.student-portal-page .metric.bad{box-shadow:inset 0 0 0 1px rgba(242,138,149,.16),0 10px 20px rgba(31,45,74,.05)}
html[data-theme="dark"] body.parent-portal-page .portal-modal-head h4,html[data-theme="dark"] body.student-portal-page .portal-modal-head h4{color:var(--portal-dark-text)}html[data-theme="dark"] body.student-points-page{background:var(--portal-dark-page-bg);color:var(--portal-dark-text)}html[data-theme="dark"] body.student-points-page .card{background:var(--portal-dark-surface-card);border-color:var(--portal-dark-border);color:var(--portal-dark-text)}
html[data-theme="dark"] body.student-points-page .field label,
html[data-theme="dark"] body.student-points-page .mini,
html[data-theme="dark"] body.student-points-page .status,html[data-theme="dark"] body.student-points-page .sub{color:var(--portal-dark-text-soft)}
html[data-theme="dark"] body.student-points-page td,html[data-theme="dark"] body.student-points-page th{border-bottom-color:var(--portal-table-dark-border)}html[data-theme="dark"] body.student-points-page #loginPanel .login-link{color:var(--portal-login-link-dark)}html[data-theme="dark"] body.parent-portal-page .detail-item-head strong,html[data-theme="dark"] body.parent-portal-page .homework-card-label,html[data-theme="dark"] body.parent-portal-page .homework-content-title,html[data-theme="dark"] body.parent-portal-page .identity-label,html[data-theme="dark"] body.parent-portal-page .parent-overview-title,html[data-theme="dark"] body.student-points-page .link-btn,html[data-theme="dark"] body.student-points-page button:not(.primary),html[data-theme="dark"] body.student-points-page button[data-open-ledger],html[data-theme="dark"] body.student-portal-page .detail-item-head strong,html[data-theme="dark"] body.student-portal-page .homework-card-label,html[data-theme="dark"] body.student-portal-page .homework-content-title,html[data-theme="dark"] body.student-portal-page .identity-label,html[data-theme="dark"] body.student-portal-page .student-overview-title{color:var(--portal-dark-text)}
html[data-theme="dark"] body.parent-portal-page .detail-meta,
html[data-theme="dark"] body.parent-portal-page .detail-note,html[data-theme="dark"] body.student-portal-page .detail-meta,
html[data-theme="dark"] body.student-portal-page .detail-note{color:var(--portal-dark-text-soft)}
html[data-theme="dark"] body.parent-portal-page .report-block,html[data-theme="dark"] body.parent-portal-page .report-head-card{background:var(--portal-dark-surface-support)!important;border-color:var(--portal-dark-border-strong)!important;color:var(--portal-dark-text)!important}html[data-theme="dark"] body.parent-portal-page .report-archive-item{--report-archive-accent:rgba(242,138,149,.72);--report-archive-border:var(--portal-dark-border-strong);background:var(--portal-dark-surface-support)!important;border-color:var(--report-archive-border)!important;color:var(--portal-dark-text)!important}html[data-theme="dark"] body.parent-portal-page .report-archive-item.is-outstanding{--report-archive-border:rgba(242,138,149,.34);background:var(--portal-dark-surface-support)!important;border-color:var(--report-archive-border)!important;border-inline-start-color:var(--report-archive-accent)!important}html[data-theme="dark"] body.parent-portal-page .report-archive-link{background:transparent!important;border-color:transparent!important;color:#b4c4ea!important}
html[data-theme="dark"] body.parent-portal-page .report-archive-link:focus-visible,html[data-theme="dark"] body.parent-portal-page .report-archive-link:hover{color:#eef4ff!important}
html[data-theme="dark"] body.parent-portal-page .report-block h5,
html[data-theme="dark"] body.parent-portal-page .report-grade-block h5,html[data-theme="dark"] body.parent-portal-page .report-head-card h5,
html[data-theme="dark"] body.parent-portal-page .report-head-value{color:var(--portal-dark-text)!important}html[data-theme="dark"] body.parent-portal-page .report-band{background:var(--portal-dark-surface-support)!important;border-color:var(--portal-dark-border-strong)!important;color:var(--portal-dark-text)!important}html[data-theme="dark"] body.parent-portal-page .report-band h5,
html[data-theme="dark"] body.parent-portal-page .report-band-table td,
html[data-theme="dark"] body.parent-portal-page .report-band-table th{color:var(--portal-dark-text)!important}html[data-theme="dark"] body.parent-portal-page .report-band-table th{color:rgba(242,244,247,.84)!important}html[data-theme="dark"] body.parent-portal-page .report-band-table td{color:var(--portal-dark-text-soft)!important}html[data-theme="dark"] body.parent-portal-page .report-band-table td:nth-child(2),html[data-theme="dark"] body.parent-portal-page .report-metrics,html[data-theme="dark"] body.parent-portal-page .report-modal-ack{color:var(--portal-dark-text)!important}html[data-theme="dark"] body.parent-portal-page .report-grades-hint{color:var(--portal-dark-text-soft)!important}
html[data-theme="dark"] body.parent-portal-page #performanceReportGradesTable table,html[data-theme="dark"] body.parent-portal-page .report-grades-table table{background:var(--portal-dark-surface-support)!important;color:var(--portal-dark-text)!important}
html[data-theme="dark"] body.parent-portal-page #performanceReportGradesTable table tbody tr,
html[data-theme="dark"] body.parent-portal-page #performanceReportGradesTable table thead tr,html[data-theme="dark"] body.parent-portal-page .report-grades-table table tbody tr,
html[data-theme="dark"] body.parent-portal-page .report-grades-table table thead tr{background:var(--portal-dark-surface-support)!important}
html[data-theme="dark"] body.parent-portal-page #performanceReportGradesTable table td,
html[data-theme="dark"] body.parent-portal-page #performanceReportGradesTable table th,
html[data-theme="dark"] body.parent-portal-page .report-grades-table table td,html[data-theme="dark"] body.parent-portal-page .report-grades-table table th{background:transparent!important;color:var(--portal-dark-text)!important}html[data-theme="dark"] body.parent-portal-page .report-modal-ack-status{color:var(--portal-status-good-text)!important}html[data-theme="dark"] body.parent-portal-page .report-modal-ack-status.is-reviewed{color:var(--portal-status-warn-text)!important}
html[data-theme="dark"] body.parent-portal-page .dashboard-card-subtitle,html[data-theme="dark"] body.parent-portal-page .report-archive-meta,
html[data-theme="dark"] body.parent-portal-page .report-archive-status{color:var(--portal-dark-text-soft)!important}html[data-theme="dark"] body.parent-portal-page .draft-actions{background:var(--portal-dark-surface-panel)!important;border-color:var(--portal-dark-border)!important;color:var(--portal-dark-text)!important}html[data-theme="dark"] body.parent-portal-page .field-row.edited,
html[data-theme="dark"] body.parent-portal-page .field-row.signature-muted{background:transparent}html[data-theme="dark"] body.parent-portal-page .field-row.edited input,
html[data-theme="dark"] body.parent-portal-page .field-row.edited textarea,
html[data-theme="dark"] body.parent-portal-page .field-row.signature-muted input,
html[data-theme="dark"] body.parent-portal-page .field-row.signature-muted textarea{background:var(--portal-dark-field-bg);border-color:var(--portal-dark-field-border);color:var(--portal-dark-field-text)}
html[data-theme="dark"] body.parent-portal-page #newsWeekSetModal :where(input, textarea, select),html[data-theme="dark"] body.student-portal-page #newsWeekSetModal :where(input, textarea, select){background:var(--portal-dark-field-bg);border-color:var(--portal-dark-field-border);color:var(--portal-dark-field-text)}
html[data-theme="dark"] body.parent-portal-page #newsWeekSetModal :where(input, textarea, select)::placeholder,html[data-theme="dark"] body.student-portal-page #newsWeekSetModal :where(input, textarea, select)::placeholder{color:var(--portal-dark-field-placeholder)}
html[data-theme="dark"] body.student-portal-page .field-validation-message,html[data-theme="dark"] body.student-portal-page .field.is-invalid label{color:#ffb8bf}html[data-theme="dark"] body.student-portal-page .field.is-invalid input,
html[data-theme="dark"] body.student-portal-page .field.is-invalid textarea{background:#2b3037;border-color:rgba(242,138,149,.48);box-shadow:0 0 0 1px rgba(242,138,149,.18);color:var(--portal-dark-text)}html[data-theme="dark"] body.student-portal-page .status.bad{color:#ffb8bf}html[data-theme="dark"] body.student-portal-page .status.ok{color:#a7e8c0}body.portal-hub-page::before{background:transparent;opacity:0}a{color:inherit}.portal-layout,
.portal-shell{display:block}.main-col,.shell{box-sizing:border-box;display:grid;gap:12px;margin:0 auto;max-width:1440px;padding:16px;width:100%}.card,
.panel{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-3);box-shadow:var(--shadow);min-width:0;padding:14px}body.portal-hub-page .portal-layout{position:relative;z-index:1}
body.admin-portal-page .app-page-header .app-header-actions .portal-theme-toggle,
body.admin-portal-page .portal-theme-toggle,
body.parent-portal-page .hero .hero-actions .portal-theme-toggle,
body.parent-portal-page .portal-theme-toggle,body.student-portal-page .portal-theme-toggle,
body.student-portal-page .topbar .header-actions .portal-theme-toggle{align-items:center;appearance:none;background:transparent;border:1px solid transparent;border-radius:999px;color:var(--portal-theme-toggle-ink);cursor:pointer;display:inline-flex;inline-size:auto;justify-content:center;justify-self:end;min-height:44px;padding:7px;position:relative;transition:background-color .18s ease,border-color .18s ease,color .18s ease,transform .18s ease}
body.admin-portal-page .app-page-header .app-header-actions .portal-theme-toggle:hover,
body.admin-portal-page .portal-theme-toggle:hover,
body.parent-portal-page .hero .hero-actions .portal-theme-toggle:hover,
body.parent-portal-page .portal-theme-toggle:hover,body.student-portal-page .portal-theme-toggle:hover,
body.student-portal-page .topbar .header-actions .portal-theme-toggle:hover{border-color:#0f1629;transform:translateY(-1px)}
body.admin-portal-page .app-page-header .app-header-actions .portal-theme-toggle:focus-visible,
body.admin-portal-page .portal-theme-toggle:focus-visible,
body.parent-portal-page .hero .hero-actions .portal-theme-toggle:focus-visible,
body.parent-portal-page .portal-theme-toggle:focus-visible,body.student-portal-page .portal-theme-toggle:focus-visible,
body.student-portal-page .topbar .header-actions .portal-theme-toggle:focus-visible{box-shadow:0 0 0 3px rgba(47,91,227,.2);outline:none}
body.admin-portal-page .app-page-header .app-header-actions .portal-theme-toggle__icon,
body.admin-portal-page .portal-theme-toggle__icon,
body.parent-portal-page .hero .hero-actions .portal-theme-toggle__icon,
body.parent-portal-page .portal-theme-toggle__icon,body.student-portal-page .portal-theme-toggle__icon,
body.student-portal-page .topbar .header-actions .portal-theme-toggle__icon{align-items:center;background:var(--portal-theme-toggle-icon-bg);border-radius:999px;color:var(--portal-theme-toggle-ink);display:inline-flex;flex:0 0 auto;height:36px;justify-content:center;width:36px}
body.admin-portal-page .app-page-header .app-header-actions .portal-theme-toggle__icon svg-icon,
body.admin-portal-page .portal-theme-toggle__icon svg-icon,
body.parent-portal-page .hero .hero-actions .portal-theme-toggle__icon svg-icon,
body.parent-portal-page .portal-theme-toggle__icon svg-icon,body.student-portal-page .portal-theme-toggle__icon svg-icon,
body.student-portal-page .topbar .header-actions .portal-theme-toggle__icon svg-icon{color:inherit}body.admin-portal-page .portal-theme-toggle__icon svg{color:inherit;display:none}body.admin-portal-page .portal-theme-toggle__icon[data-theme-icon="moon"] .portal-theme-toggle__icon-moon,
body.admin-portal-page .portal-theme-toggle__icon[data-theme-icon="sun"] .portal-theme-toggle__icon-sun{display:block}
body.admin-portal-page .app-page-header .app-header-actions .portal-theme-toggle__label,
body.parent-portal-page .hero .hero-actions .portal-theme-toggle__label,body.student-portal-page .topbar .header-actions .portal-theme-toggle__label{display:none}
html[data-theme="dark"] body.admin-portal-page .app-page-header .app-header-actions .portal-theme-toggle,
html[data-theme="dark"] body.admin-portal-page .portal-theme-toggle,
html[data-theme="dark"] body.parent-portal-page .hero .hero-actions .portal-theme-toggle,
html[data-theme="dark"] body.parent-portal-page .portal-theme-toggle,html[data-theme="dark"] body.student-portal-page .portal-theme-toggle,
html[data-theme="dark"] body.student-portal-page .topbar .header-actions .portal-theme-toggle{background:transparent;border-color:transparent;color:var(--portal-theme-toggle-ink-dark)}
html[data-theme="dark"] body.admin-portal-page .app-page-header .app-header-actions .portal-theme-toggle:hover,
html[data-theme="dark"] body.admin-portal-page .portal-theme-toggle:hover,
html[data-theme="dark"] body.parent-portal-page .hero .hero-actions .portal-theme-toggle:hover,
html[data-theme="dark"] body.parent-portal-page .portal-theme-toggle:hover,html[data-theme="dark"] body.student-portal-page .portal-theme-toggle:hover,
html[data-theme="dark"] body.student-portal-page .topbar .header-actions .portal-theme-toggle:hover{border-color:rgba(255,215,106,.42)}
html[data-theme="dark"] body.admin-portal-page .app-page-header .app-header-actions .portal-theme-toggle__icon,
html[data-theme="dark"] body.admin-portal-page .portal-theme-toggle__icon,
html[data-theme="dark"] body.parent-portal-page .hero .hero-actions .portal-theme-toggle__icon,
html[data-theme="dark"] body.parent-portal-page .portal-theme-toggle__icon,html[data-theme="dark"] body.student-portal-page .portal-theme-toggle__icon,
html[data-theme="dark"] body.student-portal-page .topbar .header-actions .portal-theme-toggle__icon{background:var(--portal-theme-toggle-icon-bg-dark);color:var(--portal-theme-toggle-ink-dark)}
html[data-theme="dark"] body.parent-portal-page .portal-modal :where(input, textarea, select),html[data-theme="dark"] body.student-portal-page .portal-modal :where(input, textarea, select){background:var(--portal-dark-field-bg);border-color:var(--portal-dark-field-border);color:var(--portal-dark-field-text)}
html[data-theme="dark"] body.parent-portal-page .quick-link-select,html[data-theme="dark"] body.student-portal-page .quick-link-select{background:hsla(0,0%,100%,.08);border-color:hsla(0,0%,100%,.22)}
html[data-theme="dark"] body.parent-portal-page .quick-link-select__label,html[data-theme="dark"] body.student-portal-page .quick-link-select__label{color:rgba(243,247,255,.82)}html[data-theme="dark"] body.parent-portal-page #newsWeekSetModal :where(input, textarea, select){background:var(--portal-dark-field-bg);border-color:var(--portal-dark-field-border);color:var(--portal-dark-field-text)}html[data-theme="dark"] body.parent-portal-page #newsWeekSetModal :where(input, textarea, select)::placeholder{color:var(--portal-dark-field-placeholder)}
html[data-theme="dark"] body.parent-portal-page .portal-modal :where(input, textarea, select)::placeholder,html[data-theme="dark"] body.student-portal-page .portal-modal :where(input, textarea, select)::placeholder{color:var(--portal-dark-field-placeholder)}
html[data-theme="dark"] body.parent-portal-page .portal-modal .field-validation-message,
html[data-theme="dark"] body.parent-portal-page .portal-modal .field.is-invalid label,
html[data-theme="dark"] body.student-portal-page .portal-modal .field-validation-message,html[data-theme="dark"] body.student-portal-page .portal-modal .field.is-invalid label{color:#ffb8bf}
html[data-theme="dark"] body.parent-portal-page .portal-modal .field.is-invalid input,
html[data-theme="dark"] body.parent-portal-page .portal-modal .field.is-invalid textarea,html[data-theme="dark"] body.student-portal-page .portal-modal .field.is-invalid input,
html[data-theme="dark"] body.student-portal-page .portal-modal .field.is-invalid textarea{background:var(--portal-dark-field-bg);border-color:rgba(242,138,149,.48);box-shadow:0 0 0 1px rgba(242,138,149,.18);color:var(--portal-dark-field-text)}
body.parent-portal-page .portal-modal.hidden,body.student-portal-page .portal-modal.hidden{display:none}
body.parent-portal-page .portal-modal,body.student-portal-page .portal-modal{box-sizing:border-box;display:grid;inset:0;padding:18px;place-items:center;position:fixed;z-index:95}
body.parent-portal-page .portal-modal-backdrop,body.student-portal-page .portal-modal-backdrop{background:rgba(13,22,34,.58);inset:0;position:absolute}
body.parent-portal-page .portal-modal-dialog,body.student-portal-page .portal-modal-dialog{background:#fff;border:1px solid #cad7ea;border-radius:12px;box-sizing:border-box;display:grid;gap:12px;max-height:calc(100vh - 36px);overflow:auto;padding:16px;position:relative;width:min(760px,calc(100vw - 36px))}
body.parent-portal-page .portal-modal-head,body.student-portal-page .portal-modal-head{align-items:center;display:flex;gap:10px;justify-content:space-between}
body.parent-portal-page .portal-modal-body,body.student-portal-page .portal-modal-body{display:grid;gap:12px}
body.parent-portal-page .portal-modal-head h4,body.student-portal-page .portal-modal-head h4{color:#1f3f63;font-size:clamp(16px,3.6vw,19px);line-height:1.2;margin:0}
body.parent-portal-page .portal-modal-actions,body.student-portal-page .portal-modal-actions{display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end}
body.parent-portal-page .portal-modal-actions>button:not(.primary):not(.alt):not(.btn-refresh):not(.portal-action-btn),body.student-portal-page .portal-modal-actions>button:not(.primary):not(.alt):not(.btn-refresh):not(.portal-action-btn){background:#f1f5ff!important;background-image:none!important;border:1px solid #9bb5df;border-radius:8px;color:#214072;cursor:pointer;font-size:12px;font-weight:700;min-height:34px;padding:6px 10px}
body.parent-portal-page .portal-modal-actions>button:not(.primary):not(.alt):not(.btn-refresh):not(.portal-action-btn):focus-visible,
body.parent-portal-page .portal-modal-actions>button:not(.primary):not(.alt):not(.btn-refresh):not(.portal-action-btn):hover:not(:disabled),
body.student-portal-page .portal-modal-actions>button:not(.primary):not(.alt):not(.btn-refresh):not(.portal-action-btn):focus-visible,body.student-portal-page .portal-modal-actions>button:not(.primary):not(.alt):not(.btn-refresh):not(.portal-action-btn):hover:not(:disabled){background:#f3f8ff!important;background-image:none!important;border-color:#9bb5df;box-shadow:0 8px 16px rgba(19,35,61,.12);outline:none;transform:translateY(-1px)}
body.parent-portal-page #newsWeekSetModal .portal-modal-close,
body.parent-portal-page .portal-modal-close,body.student-portal-page .portal-modal-close{background:#f1f5ff!important;background-image:none!important;border:1px solid #9bb5df;border-radius:8px;color:#214072;cursor:pointer;font-size:12px;font-weight:700;min-height:34px;padding:6px 10px}
body.parent-portal-page .portal-modal-close:focus-visible,
body.parent-portal-page .portal-modal-close:hover:not(:disabled),
body.parent-portal-page .report-modal-nav button:focus-visible,
body.parent-portal-page .report-modal-nav button:hover:not(:disabled),
body.student-portal-page .portal-modal-close:focus-visible,body.student-portal-page .portal-modal-close:hover:not(:disabled){background:#f3f8ff!important;background-image:none!important;border-color:#9bb5df;box-shadow:0 8px 16px rgba(19,35,61,.12);outline:none;transform:translateY(-1px)}body.admin-portal-page .queue-modal{align-items:center;background:rgba(8,18,40,.58);display:flex;inset:0;justify-content:center;padding:12px;position:fixed;z-index:1200}body.admin-portal-page .queue-modal-card{background:#fff;border:1px solid var(--border-strong);border-radius:var(--radius-3);box-shadow:0 22px 50px rgba(8,18,40,.22);display:grid;gap:10px;inline-size:100%;max-height:92vh;max-inline-size:980px;overflow:auto;padding:12px}body.admin-portal-page .queue-modal-header{align-items:center;display:flex;gap:8px;justify-content:space-between}body.admin-portal-page .queue-modal-nav{align-items:center;color:var(--ink);display:inline-flex;font-weight:700;gap:8px}body.admin-portal-page .queue-modal-nav button{min-width:42px;padding:6px 8px}body.admin-portal-page .queue-modal-body textarea{min-height:68px}body.admin-portal-page .queue-modal-actions{display:grid;gap:8px;grid-template-columns:repeat(4,minmax(0,1fr))}body.admin-portal-page .news-review-viewer-grid{display:grid;gap:8px;grid-template-columns:repeat(2,minmax(0,1fr))}body.admin-portal-page .news-review-viewer-block{background:#fafcff;border:1px solid var(--border-subtle);border-radius:var(--radius-2);box-sizing:border-box;display:grid;gap:4px;padding:8px}body.admin-portal-page .news-review-viewer-block strong{color:var(--ink)}body.admin-portal-page .news-review-viewer-block a{color:var(--link-color);overflow-wrap:anywhere;text-decoration:underline;text-underline-offset:2px}body.admin-portal-page .news-review-viewer-long{line-height:1.4;overflow-wrap:anywhere;white-space:pre-wrap}body.admin-portal-page .news-review-note-line{display:block;margin-bottom:2px}body.admin-portal-page .news-review-note-line.pending{color:#7c121d;font-weight:600}body.admin-portal-page .news-review-note-line.fixed{color:#0b6f3b;font-weight:600}body.admin-portal-page .news-review-viewer-review{display:grid;gap:6px;margin-top:8px}body.admin-portal-page .news-review-viewer-review textarea{min-height:72px}body.admin-portal-page .news-review-viewer-actions{display:grid;gap:10px;grid-template-columns:repeat(2,minmax(180px,1fr))}body.admin-portal-page .news-review-viewer-actions button{font-size:14px;font-weight:700;min-height:42px;padding:10px 12px}html[data-theme="dark"] body.admin-portal-page .queue-modal{background:rgba(6,9,16,.72)}html[data-theme="dark"] body.admin-portal-page .queue-modal-card{background:var(--portal-dark-surface-card);border-color:var(--portal-dark-border-strong);color:var(--portal-dark-text)}html[data-theme="dark"] body.admin-portal-page .overview-group,
html[data-theme="dark"] body.admin-portal-page .system-health-shell{background:var(--portal-dark-surface-support);border-color:var(--portal-dark-border-strong);color:var(--portal-dark-text)}
html[data-theme="dark"] body.admin-portal-page .stat-card,html[data-theme="dark"] body.admin-portal-page .system-health-item{background:var(--portal-dark-surface-card);border-color:var(--portal-dark-border);color:var(--portal-dark-text)}html[data-theme="dark"] body.admin-portal-page .overview-group>details,
html[data-theme="dark"] body.admin-portal-page .system-health-grid-content,
html[data-theme="dark"] body.admin-portal-page .system-health-summary{background:transparent;color:var(--portal-dark-text)}html[data-theme="dark"] body.admin-portal-page .system-health-item.ok{background:linear-gradient(180deg,var(--portal-dark-card-soft),var(--portal-dark-card));border-color:rgba(124,214,164,.42);box-shadow:inset 0 0 0 1px rgba(124,214,164,.12)}html[data-theme="dark"] body.admin-portal-page .system-health-item.warn{background:linear-gradient(180deg,var(--portal-dark-card-soft),var(--portal-dark-card));border-color:rgba(240,176,95,.42);box-shadow:inset 0 0 0 1px rgba(240,176,95,.12)}html[data-theme="dark"] body.admin-portal-page .system-health-item.error{background:linear-gradient(180deg,var(--portal-dark-card-soft),var(--portal-dark-card));border-color:rgba(242,138,149,.42);box-shadow:inset 0 0 0 1px rgba(242,138,149,.12)}html[data-theme="dark"] body.admin-portal-page .system-health-item.pending{background:linear-gradient(180deg,var(--portal-dark-card-soft),var(--portal-dark-card));border-color:rgba(106,164,255,.42);box-shadow:inset 0 0 0 1px rgba(106,164,255,.12)}
html[data-theme="dark"] body.admin-portal-page .news-review-viewer-review,
html[data-theme="dark"] body.admin-portal-page .queue-modal-actions,
html[data-theme="dark"] body.admin-portal-page .queue-modal-body,html[data-theme="dark"] body.admin-portal-page .queue-modal-header,
html[data-theme="dark"] body.admin-portal-page .queue-modal-nav{color:var(--portal-dark-text)}
html[data-theme="dark"] body.admin-portal-page .news-review-viewer-review textarea,html[data-theme="dark"] body.admin-portal-page .queue-modal-body textarea{background:var(--portal-dark-field-bg);border-color:hsla(0,0%,100%,.12);color:var(--portal-dark-field-text)}
html[data-theme="dark"] body.admin-portal-page .news-review-viewer-review textarea::placeholder,html[data-theme="dark"] body.admin-portal-page .queue-modal-body textarea::placeholder{color:var(--portal-dark-field-placeholder)}html[data-theme="dark"] body.admin-portal-page .news-review-viewer-block{background:var(--portal-dark-surface-support);border-color:var(--portal-dark-border-strong);color:var(--portal-dark-text)}html[data-theme="dark"] body.admin-portal-page .news-review-viewer-block strong{color:var(--portal-dark-text)}html[data-theme="dark"] body.admin-portal-page .news-review-viewer-block a{color:#cfe0ff}html[data-theme="dark"] body.admin-portal-page .grade-chart-modal-card{background:var(--portal-dark-surface-card);border-color:var(--portal-dark-border-strong);color:var(--portal-dark-text)}html[data-theme="dark"] body.admin-portal-page .grade-chart-modal-body,html[data-theme="dark"] body.admin-portal-page .grade-chart-modal-header,html[data-theme="dark"] body.admin-portal-page .grade-chart-modal-title{color:var(--portal-dark-text)}html[data-theme="dark"] body.admin-portal-page .grade-chart-modal-meta{color:var(--portal-dark-text-soft)}html[data-theme="dark"] body.admin-portal-page .grade-chart-modal-svg-wrap{background:var(--portal-dark-surface-support);border-color:var(--portal-dark-border-strong);color:var(--portal-dark-text)}html[data-theme="dark"] body.admin-portal-page .grade-chart-empty{background:var(--portal-dark-surface-support);border-color:var(--portal-dark-border-strong);color:var(--portal-dark-text-soft)}html[data-theme="dark"] body.admin-portal-page .grade-chart-lane{background:linear-gradient(180deg,var(--portal-dark-card-soft),var(--portal-dark-card-deep));border-color:var(--portal-dark-border);box-shadow:inset 0 0 0 1px hsla(0,0%,100%,.05)}html[data-theme="dark"] body.admin-portal-page .grade-chart-lane-title{color:var(--portal-dark-text)}html[data-theme="dark"] body.admin-portal-page .grade-chart-svg .grade-chart-axis-label{fill:var(--portal-dark-text-soft)}html[data-theme="dark"] body.admin-portal-page .news-review-note-line.pending{color:#ffb8bf}html[data-theme="dark"] body.admin-portal-page .news-review-note-line.fixed{color:#a7e8c0}
html[data-theme="dark"] body.admin-portal-page #newsReviewViewerStatus,
html[data-theme="dark"] body.admin-portal-page .news-review-viewer-review .small,html[data-theme="dark"] body.admin-portal-page .news-review-viewer-review label,
html[data-theme="dark"] body.admin-portal-page .news-review-viewer-review textarea{color:var(--portal-dark-text)}body.portal-hub-page .portal-hub-bg{inset:0;pointer-events:none;position:fixed;z-index:0}body.portal-hub-page .portal-hub-bg__layer,
body.portal-hub-page .portal-hub-bg__wash{inset:0;position:absolute}body.portal-hub-page .portal-hub-bg__layer{background-repeat:no-repeat;filter:saturate(1.02) contrast(.98);opacity:0;transform:scale(1.04);transition:opacity .9s ease,transform 1.4s ease}body.portal-hub-page .portal-hub-bg__layer,body.portal-hub-page .portal-hub-bg__layer--a,body.portal-hub-page .portal-hub-bg__layer--b{background-position:50%;background-size:cover}body.portal-hub-page .portal-hub-bg__layer.is-active{opacity:1;transform:scale(1.01)}body.portal-hub-page .portal-hub-bg__wash{background:var(--hub-wash);mix-blend-mode:screen;opacity:.82}.side-nav{align-content:start;background:var(--menu-bg);border:1px solid var(--menu-border);border-radius:var(--radius-3);box-shadow:0 22px 48px rgba(12,21,40,.32);box-sizing:border-box;display:grid;gap:14px;inset-block-start:12px;inset-inline-start:12px;max-height:calc(100dvh - 24px);overflow-y:auto;overscroll-behavior:contain;padding:12px;position:fixed;transform:translateX(calc(-100% - 14px));transition:transform .18s ease;width:var(--side-width);z-index:82}.side-nav.open{transform:translateX(0)}.side-brand{background:var(--menu-header-bg);border:1px solid var(--menu-border);border-radius:var(--radius-2);display:grid;gap:4px;padding:10px}.side-brand strong{font-size:14px}.side-brand span{color:var(--ink-soft);font-size:12px}.side-links{display:grid;gap:6px}.side-actions{border-top:1px solid var(--menu-border);margin-top:4px;padding:8px 4px 0}.side-actions button{box-sizing:border-box;width:100%}.side-link{align-items:center;background:var(--menu-link-bg);border:1px solid var(--menu-border);border-radius:var(--radius-2);color:var(--ink);display:inline-flex;font-size:12px;font-weight:700;min-height:36px;padding:8px 10px;text-decoration:none}
.side-link:focus-visible,.side-link:hover{background:var(--menu-link-active-bg);border-color:#b7cae3;outline:none}.side-link.active{background:var(--menu-link-active-bg);border-color:#90acd4;color:#0f2545}
.nav-overlay,.nav-scrim{backdrop-filter:blur(1px);background:rgba(12,22,39,.4);border:none;cursor:pointer;inset:0;margin:0;opacity:0;padding:0;pointer-events:none;position:fixed;transition:opacity .18s ease;z-index:81}
body.menu-open .nav-overlay,body.menu-open .nav-scrim{opacity:1;pointer-events:auto}body.menu-open,
body.modal-open{overflow:hidden}.hero,
.topbar{align-items:center;background:linear-gradient(180deg,#f4f8ff,#eef3fb);border-color:var(--border-dg);display:grid;gap:8px;padding:6px 64px 6px 12px}body.portal-hub-page .hero,
body.portal-hub-page .section-card{background:linear-gradient(180deg,var(--hub-panel-bg) 0,var(--hub-panel-bg-soft) 100%);border-color:var(--hub-panel-border);box-shadow:var(--hub-panel-shadow);overflow:hidden;position:relative}body.portal-hub-page .hero::before,
body.portal-hub-page .section-card::before{background:linear-gradient(90deg,var(--hub-accent-soft),transparent 72%);content:"";inset:0;opacity:.9;pointer-events:none;position:absolute}body.portal-hub-page .hero>*,
body.portal-hub-page .section-card>*{position:relative;z-index:1}.hero-line,
.topbar-head{align-items:center;display:grid;gap:10px;grid-template-columns:minmax(0,1fr) auto}
.brand-head,.hero-brand{align-items:center;display:flex;gap:10px;min-width:0}.hero-copy{min-width:0}.hero-kicker,
.portal-card__eyebrow,
.section-kicker{color:var(--brand);font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.hero-kicker,
.section-kicker{margin:0 0 2px}.section-kicker{color:var(--brand-2)}.hero h1,
.topbar h1,
h1{font-size:clamp(1.05rem,2.6vw,1.2rem);line-height:1.2;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hero p,
.hero-copy p,
.section-lede,
.status,
.sub,
.topbar p{color:var(--ink-soft);font-size:.91rem;line-height:1.35}.hero p,
.hero-copy p,
.section-lede,
.topbar p{margin:4px 0 0}.section-lede{font-size:.9rem}
.app-header-actions,
.header-actions,.hero-actions{align-items:center;display:inline-flex;flex-wrap:nowrap;gap:8px;justify-content:flex-end}.hero-link{align-items:center;background:linear-gradient(180deg,rgba(240,245,255,.95),rgba(227,236,255,.86));border:1px solid var(--hub-panel-border);border-radius:var(--radius-2);color:var(--hub-accent-strong);display:inline-flex;font-size:12px;font-weight:700;min-height:36px;padding:8px 12px;text-decoration:none}
.hero-link:focus-visible,.hero-link:hover{background:linear-gradient(180deg,hsla(0,0%,100%,.98),rgba(236,243,255,.92));border-color:#8ea7c9;outline:none}.section-head{align-items:center;display:flex;flex-wrap:wrap;gap:8px;justify-content:space-between;margin-bottom:0}.section-head h2,
.section-head h3,
.section-title{font-size:clamp(17px,3.3vw,21px);line-height:1.2;margin:0}.text-zoom-controls{align-items:center;display:inline-flex;flex-wrap:nowrap;gap:6px;justify-content:flex-end;margin:0}.text-zoom-controls button,
.text-zoom-controls button:not(.floating-menu-btn){font-size:12px;inline-size:auto;min-height:36px;min-width:44px;padding:6px 8px;white-space:nowrap}.zoom-label{color:#244165;font-family:ui-monospace,SF Mono,menlo,consolas,monospace;font-size:11px}.floating-menu-btn{align-items:center;background:var(--primary-color);block-size:44px;border:1px solid #8d0010;border-radius:var(--radius-pill);box-shadow:0 12px 24px rgba(14,24,42,.32);color:#fff;cursor:pointer;display:inline-flex;inline-size:44px;inset-block-start:12px;inset-inline-end:12px;justify-content:center;padding:0;position:fixed;z-index:90}.floating-menu-btn:hover{background:#92000d;border-color:#76000a}.floating-menu-btn:focus-visible{outline:2px solid #fff;outline-offset:2px}.floating-menu-icon,
.floating-menu-icon::after,
.floating-menu-icon::before{background:#fff;border-radius:2px;content:"";display:block;height:2px;transition:transform .16s ease,opacity .16s ease;width:18px}.floating-menu-icon{position:relative}.floating-menu-icon::before{left:0;position:absolute;top:-6px}.floating-menu-icon::after{left:0;position:absolute;top:6px}body.menu-open .floating-menu-icon{background:transparent}body.menu-open .floating-menu-icon::before{transform:translateY(6px) rotate(45deg)}body.menu-open .floating-menu-icon::after{transform:translateY(-6px) rotate(-45deg)}.brand-logo-wrap{align-items:center;background:#fff;border:1px solid #90a4c3;border-radius:var(--radius-3);display:inline-flex;flex:0 0 auto;justify-content:center;overflow:hidden}.brand-logo-wrap--sm{height:38px;width:38px}.brand-logo-wrap--lg{height:48px;width:48px}.brand-logo{display:block;height:100%;object-fit:cover;width:100%}.env-badge{align-items:center;background:#eef3ff;border:1px solid #b7cae3;border-radius:var(--radius-pill);color:#1d2e4f;display:inline-flex;font-size:11px;font-weight:700;letter-spacing:.02em;max-width:360px;overflow:hidden;padding:4px 10px;text-overflow:ellipsis;white-space:nowrap}.env-badge[data-env="development"]{background:#e8f8ef;border-color:#9dd5b3;color:#0f4f30}.env-badge[data-env="production"]{background:#fff4da;border-color:#d8b228;color:#5b3b00}
.portal-col,.portal-grid,
.resource-list{display:grid;gap:10px}.portal-grid>.portal-col{grid-column:1/-1}.portal-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.portal-card,
.resource-card{align-items:center;background:linear-gradient(180deg,hsla(0,0%,100%,.94),rgba(247,250,255,.98));border:1px solid var(--card-border,rgba(128,152,190,.7));border-radius:var(--radius-3);box-shadow:inset 0 0 0 1px var(--card-border-soft,hsla(0,0%,100%,.72)),0 10px 20px rgba(31,45,74,.05);color:inherit;display:grid;gap:12px;min-height:76px;overflow:hidden;padding:14px;position:relative;text-decoration:none}.portal-card{align-content:center;grid-template-columns:auto minmax(0,1fr) auto;transition:transform .12s ease,border-color .12s ease,background-color .12s ease,box-shadow .12s ease}
.portal-card:focus-visible,.portal-card:hover{background:linear-gradient(180deg,hsla(0,0%,100%,.98),rgba(244,247,255,.98));border-color:rgba(111,134,173,.92);outline:none;transform:translateY(-1px)}.portal-card__icon{display:inline-flex;grid-area:icon}.portal-card__body{grid-area:body}.portal-card__chev{grid-area:chev}.portal-card::before,
.resource-card::before{background:linear-gradient(135deg,var(--tone-soft,rgba(94,118,171,.12)),transparent 70%),linear-gradient(90deg,transparent,var(--card-border-soft,hsla(0,0%,100%,.2)),transparent);content:"";inset:0;pointer-events:none;position:absolute}html[data-theme="dark"] body.portal-hub-page .portal-card::before,
html[data-theme="dark"] body.portal-hub-page .resource-card::before{background:linear-gradient(90deg,transparent,transparent 58%,rgba(249,250,255,.14) 82%,rgba(249,250,255,.28)),radial-gradient(120% 96% at 100% 50%,rgba(249,250,255,.16) 0,transparent 60%)}.portal-card__body,
.resource-card__body{display:grid;gap:3px;min-width:0}.portal-card__title,
.resource-card__title{font-size:clamp(1.02rem,1.8vw,1.14rem);font-weight:800;line-height:1.15;margin:0}.portal-card__subtitle,
.resource-card__subtitle{color:var(--ink-soft);font-size:.9rem;line-height:1.3}.portal-card__icon,
.resource-card__icon{align-items:center;aspect-ratio:1/1;background:linear-gradient(180deg,hsla(0,0%,100%,.95),rgba(247,250,255,.82));border:1px solid var(--tone-border,rgba(128,152,190,.35));border-radius:calc(var(--radius-3) + 2px);box-shadow:inset 0 1px 0 hsla(0,0%,100%,.82),0 8px 18px rgba(25,37,62,.08);color:var(--tone,var(--brand-2));display:inline-flex;inline-size:clamp(46px,6vw,68px);justify-content:center}.portal-card__icon-mark,
.resource-card__icon-mark{display:inline-block;font-size:clamp(.82rem,1.4vw,1rem);font-weight:900;letter-spacing:.06em;line-height:1}.portal-card--admin{--card-border:rgba(137,19,31,.94);--card-border-soft:rgba(255,219,223,.9);--tone:#b50010;--tone-border:rgba(137,19,31,.94);--tone-soft:rgba(181,0,16,.18);background:linear-gradient(180deg,#ffdee2,#fff7f8);border-color:rgba(137,19,31,.94)}.portal-card--admin .portal-card__icon{background:linear-gradient(180deg,#ffdfe3,rgba(255,248,249,.92))}.portal-card--admin .portal-card__icon-mark{font-size:clamp(1rem,1.8vw,1.24rem)}.portal-card--admin .portal-card__body{align-content:center}.portal-card--admin .portal-card__eyebrow{letter-spacing:.12em}.portal-card--admin .portal-card__chev{font-family:inherit}.portal-card--parent{--card-border:rgba(111,89,58,.94);--card-border-soft:rgba(248,240,225,.92);--tone:#7b6240;--tone-border:rgba(111,89,58,.94);--tone-soft:rgba(123,98,64,.15);background:linear-gradient(180deg,#fffcf5,#fcf8ef);border-color:rgba(111,89,58,.94)}.portal-card--student{--card-border:rgba(18,49,140,.94);--card-border-soft:rgba(226,233,255,.9);--tone:#002786;--tone-border:rgba(18,49,140,.94);--tone-soft:rgba(0,39,134,.17);background:linear-gradient(180deg,#e2ebff,#f8fbff);border-color:rgba(18,49,140,.94)}.portal-card__chev{color:var(--tone,var(--brand-2));font-size:clamp(1.1rem,2.2vw,1.4rem);line-height:1;margin-left:auto}.resource-card{background:linear-gradient(180deg,rgba(249,251,255,.96),rgba(241,245,252,.98));border-radius:var(--radius-2);grid-template-areas:"icon body meta";grid-template-columns:auto minmax(0,1fr) auto;min-height:60px;padding:11px 12px}
.resource-card[href]:focus-visible,.resource-card[href]:hover{background:linear-gradient(180deg,hsla(0,0%,100%,.98),rgba(243,247,255,.98));border-color:rgba(120,144,186,.92);outline:none}.resource-card--disabled{opacity:.72}.resource-card__icon{display:inline-flex;grid-area:icon}.resource-card__body{align-content:center;grid-area:body}.resource-card__meta{color:var(--tone,var(--brand-2));font-size:clamp(.82rem,1.4vw,.92rem);font-weight:700;grid-area:meta;margin-left:auto;white-space:nowrap}.portal-card__eyebrow{color:var(--tone,var(--brand))}.section-card{display:grid;gap:12px}html:not([data-theme="dark"]) body.portal-hub-page .section-card--primary{--hub-accent:var(--secondary-color);--hub-accent-soft:#fff}html:not([data-theme="dark"]) body.portal-hub-page .section-card--resources{--hub-accent:#256a7b;--hub-accent-soft:rgba(37,106,123,.11)}
html[data-theme="dark"] body.portal-hub-page .portal-card__chev,
html[data-theme="dark"] body.portal-hub-page .portal-card__eyebrow,
html[data-theme="dark"] body.portal-hub-page .portal-card__subtitle,html[data-theme="dark"] body.portal-hub-page .portal-card__title,
html[data-theme="dark"] body.portal-hub-page .resource-card__meta,
html[data-theme="dark"] body.portal-hub-page .resource-card__subtitle,
html[data-theme="dark"] body.portal-hub-page .resource-card__title{color:var(--secondary-color)}html[data-theme="dark"] body.portal-hub-page .portal-card__icon,
html[data-theme="dark"] body.portal-hub-page .resource-card__icon{color:var(--tone,var(--hub-accent-strong))}html[data-theme="dark"] body.portal-hub-page .portal-card--admin{--admin-card-bg-end:rgba(57,22,27,.98);--admin-card-bg-start:rgba(74,32,38,.98);--card-border:rgba(181,0,16,.96);--card-border-soft:rgba(181,0,16,.3);--tone:#b50010;--tone-border:rgba(181,0,16,.96);--tone-soft:rgba(181,0,16,.22);background:linear-gradient(180deg,var(--admin-card-bg-start),var(--admin-card-bg-end));border-color:rgba(181,0,16,.96)}html[data-theme="dark"] body.portal-hub-page .portal-card.portal-card--parent{--card-border:var(--secondary-color);--card-border-soft:rgba(249,250,255,.32);--parent-card-bg-end:rgba(57,60,66,.98);--parent-card-bg-start:rgba(67,70,76,.98);--tone:var(--hub-theme-card-parent-icon);--tone-border:var(--secondary-color);--tone-soft:rgba(158,161,72,.22);background:linear-gradient(180deg,var(--parent-card-bg-start),var(--parent-card-bg-end));border:solid var(--secondary-color);border-width:2px 2px 6px;box-shadow:inset 0 0 0 1px rgba(249,250,255,.28),0 12px 24px rgba(0,0,0,.32)}html[data-theme="dark"] body.portal-hub-page .portal-card.portal-card--parent::before{background:radial-gradient(120% 96% at 100% 52%,rgba(249,250,255,.18) 0,transparent 60%),linear-gradient(90deg,transparent,transparent 60%,rgba(249,250,255,.22) 84%,transparent);opacity:.75}html[data-theme="dark"] body.portal-hub-page .portal-card--student{--student-border:#06f;--tone:var(--tertiary-color);background:linear-gradient(180deg,#4a5877,#384864);border:solid var(--student-border);border-width:2px 2px 6px;box-shadow:inset 0 0 0 1px var(--student-border),0 12px 24px rgba(0,0,0,.32)}html:not([data-theme="dark"]) body.portal-hub-page .resource-card--english{--card-border:rgba(127,158,224,.88);--card-border-soft:rgba(127,158,224,.28);--tone:#7f9ee0;--tone-border:rgba(127,158,224,.84);--tone-soft:rgba(127,158,224,.22);background:linear-gradient(180deg,#46536f,#35415a);border-color:rgba(127,158,224,.88)}html:not([data-theme="dark"]) body.portal-hub-page .resource-card--english .resource-card__icon{background:linear-gradient(180deg,#8aa7e4,#2a3243)}html:not([data-theme="dark"]) body.portal-hub-page .resource-card--ielts{--card-border:rgba(181,0,16,.88);--card-border-soft:rgba(181,0,16,.28);--tone:#b50010;--tone-border:rgba(181,0,16,.84);--tone-soft:rgba(181,0,16,.22);background:linear-gradient(180deg,#4c3c40,#382b2e);border-color:rgba(181,0,16,.88)}html:not([data-theme="dark"]) body.portal-hub-page .resource-card--ielts .resource-card__icon{background:linear-gradient(180deg,#df6a76,#3b2227)}@media (min-width:960px){.resource-list{grid-template-columns:repeat(2,minmax(0,1fr))}.resource-card{min-height:72px}.resource-card__title{font-size:clamp(.96rem,1.35vw,1.08rem)}.resource-card__subtitle{font-size:clamp(.82rem,1.15vw,.92rem)}.resource-card__meta{font-size:clamp(.8rem,1.1vw,.9rem)}}.hidden{display:none!important}.brand-logo-wrap:focus-visible,
.floating-menu-btn:focus-visible,
.hero-link:focus-visible,
.portal-card:focus-visible,
.resource-card:focus-visible{outline:2px solid #fff;outline-offset:2px}@media (min-width:640px){.main-col,.shell{padding:16px}}@media (min-width:960px){.portal-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.portal-card{aspect-ratio:1/1;grid-template-rows:minmax(72px,auto) 1fr minmax(24px,auto)}.portal-card__body{align-self:center;gap:6px}.portal-card--admin .portal-card__body{padding-top:4px}.portal-card--parent .portal-card__body{padding-left:2px}.portal-card--student .portal-card__body{padding-right:2px}.portal-card__subtitle{max-width:24ch}}@media (max-width:639px){.shell{margin:12px auto}.main-col,.shell{padding:12px}.hero,
  .topbar{padding-right:12px}.hero-line,
  .topbar-head{grid-template-columns:1fr}
  .app-header-actions,
  .header-actions,.hero-actions{justify-content:flex-start}.portal-grid{grid-template-columns:1fr}.portal-card,
  .resource-card{gap:10px;padding:12px}.portal-card__icon,
  .resource-card__icon{width:48px}}@media (max-width:820px){.main-col,.shell{padding:12px}.hero,
  .topbar{padding:5px 60px 5px 10px}.brand-logo-wrap--sm{height:34px;width:34px}.brand-logo-wrap--lg{height:38px;width:38px}.floating-menu-btn{block-size:40px;inline-size:40px}}@media (max-width:560px){
  .text-zoom-controls .zoom-label,.text-zoom-controls>span:first-child{display:none}}@media (max-width:430px){.portal-card__subtitle,
  .resource-card__subtitle{font-size:.84rem}.app-header-actions,.header-actions,.hero-actions,.text-zoom-controls{gap:4px}
  .text-zoom-controls button:not(.floating-menu-btn):not(.nav-overlay),.text-zoom-controls button:not(.floating-menu-btn):not(.nav-scrim){min-height:26px;min-width:40px;padding:3px 6px}}.footer{background:var(--footer-background);border-top:1px solid var(--paper-border);margin-top:auto;padding:20px;position:relative;text-align:center;z-index:50}.footer-text{color:var(--text-tertiary);font-family:var(--font-body);font-size:.95rem}.footer-tagline{color:var(--phoenix-orange);font-family:var(--font-brand);font-size:.95rem;font-weight:500}.footer-separator{color:var(--paper-border);margin:0 12px}.footer-copyright{font-size:.85rem;letter-spacing:1px;text-transform:uppercase}.container2{margin:0 auto;max-width:1085px;padding:0 18px}.footer .inner-footer{background-color:var(--footer-background);border-radius:6px;color:var(--secondary-color);min-height:inherit;padding-left:18px;padding-right:18px}.footer .inner-footer a,
.footer .inner-footer a:active,
.footer .inner-footer a:focus,
.footer .inner-footer a:hover,
.footer .inner-footer a:visited{color:inherit}.hub-footer{align-items:center;background:var(--hub-footer-bg,var(--tertiary-color));border:1px solid var(--hub-panel-border,var(--paper-border));border-radius:clamp(4.5px,.9cqi,12px);color:var(--hub-footer-text,var(--secondary-color));display:flex;flex-wrap:wrap;font-size:var(--hub-label-size,.95rem);gap:calc(var(--hub-space-1, 12px)/2) var(--hub-space-1,12px);justify-content:space-between;margin-top:calc(var(--hub-space-1, 12px)/2);padding:var(--hub-space-2,12px) var(--hub-space-3,16px)}
.hub-footer__action,.hub-footer__copy{margin:0}.hub-footer__action{margin-inline-start:auto}.hub-footer a,
.hub-footer a:active,
.hub-footer a:focus,
.hub-footer a:hover,
.hub-footer a:visited{color:inherit;font-weight:700;text-decoration:none}
.hub-footer a:focus-visible,.hub-footer a:hover{outline:none;text-decoration:underline}.mar10{margin:.625rem}.prefooter{background-color:var(--info-bg);height:60px;margin-bottom:0;width:100%}.footer{min-height:80px}.pull-left,
.pull-right{display:inline-block;vertical-align:middle}.pull-left{margin-right:auto;text-align:left}.pull-right{margin-left:auto;text-align:right}@supports (display:flex){.pull-left{margin-right:auto}.pull-right{margin-left:auto}}.noborder{border:none}
body.admin-portal-page div.header-bar,
body.parent-portal-page div.header-bar,body.portal-hub-page div.header-bar,
body.student-portal-page div.header-bar{background:var(--primary-color);border-radius:clamp(4px,.9cqi,8px);box-sizing:border-box;color:var(--secondary-color);display:flex;font-size:calc(.72rem*var(--hub-phi));font-weight:700;inline-size:100%;justify-content:space-between;letter-spacing:.08em;line-height:1;margin:0;min-block-size:20px;padding:.75rem 1.66rem}
body.admin-portal-page.admin-auth-booting div.header-bar,html[data-admin-auth-state="unauthenticated"] body.admin-portal-page div.header-bar,
html[data-parent-auth-state="unauthenticated"] body.parent-portal-page div.header-bar,
html[data-student-auth-state="unauthenticated"] body.student-portal-page div.header-bar{inline-size:100%}
body.admin-portal-page .header-bar a,
body.parent-portal-page .header-bar a,body.portal-hub-page .header-bar a,
body.student-portal-page .header-bar a{color:inherit;text-decoration:none}
body.admin-portal-page .header-bar a:hover,
body.parent-portal-page .header-bar a:hover,body.portal-hub-page .header-bar a:hover,
body.student-portal-page .header-bar a:hover{cursor:pointer;text-decoration-line:underline;text-decoration-thickness:2px;text-underline-offset:3px}:root{--portal-color-000d003e64:#f3f4f6;--portal-color-0077beaeb3:color-mix(in srgb,#b23a2e 24%,#484f56 76%);--portal-color-01768eaf2d:rgba(240,176,95,.42);--portal-color-0288ae9c5c:#dde5f2;--portal-color-039996725e:#fbe9ea;--portal-color-03b5721e8c:#fcab15;--portal-color-05477e89d0:rgba(12,22,39,.4);--portal-color-069bc807ea:rgba(240,176,95,.18);--portal-color-08145c4aa5:#3a87ad;--portal-color-0a4767016c:#3c4248;--portal-color-0b88d7b8bd:#66008e;--portal-color-0c609735cb:#849ec4;--portal-color-0c79f2d461:#0f6d2a;--portal-color-106784249d:#90a4c3;--portal-color-107a42fd77:#7a43cc;--portal-color-10fe7b83d5:#a86400;--portal-color-11a8da3fa1:rgba(0,39,134,.32);--portal-color-1239e09212:#175a35;--portal-color-155b35e0df:#76000a;--portal-color-157650bcd0:rgba(31,107,58,.2);--portal-color-194b2d925e:#9ee0b9;--portal-color-1a725bdb9a:rgba(181,0,16,.35);--portal-color-1ae8f85b9b:#3f2977;--portal-color-1b2ad6543d:#e6f7ee;--portal-color-1b4f759bcf:rgba(0,0,0,.35);--portal-color-1b8d818ad2:#143157;--portal-color-1c5b3b4180:#1f7a47;--portal-color-1c77cc184c:color-mix(in srgb,#484f56 64%,#a86400 36%);--portal-color-1d89e3bf1e:#516991;--portal-color-1f6f13263d:#bbb;--portal-color-1fafc2b5c0:#8ea9cc;--portal-color-21fe6cd7d5:#edf4ff;--portal-color-22aee4e14f:rgba(20,36,62,.24);--portal-color-23882d0d91:#fbecec;--portal-color-243de7efde:#86ade4;--portal-color-24f3dafd18:#fbfcff;--portal-color-2526d46483:color-mix(in srgb,#484f56 72%,#fff 28%);--portal-color-254f75671f:hsla(0,0%,100%,0);--portal-color-25a7b86435:#19406d;--portal-color-25d88c9a84:#2a9361;--portal-color-27470381e4:#8ea4c7;--portal-color-2774a5c299:rgba(18,70,133,.28);--portal-color-27bfe87810:rgba(14,24,42,.32);--portal-color-28b516db10:hsla(0,0%,100%,.45);--portal-color-293711fbb6:#a8bbda;--portal-color-2a05c02cf9:rgba(11,32,60,.22);--portal-color-2affe7a39e:#364f74;--portal-color-2c68c614a2:#163a72;--portal-color-2cdb084429:#f3f8ff;--portal-color-2d8370cc89:#f2f7ff;--portal-color-2e75310a87:#5c7fc4;--portal-color-2ff174e8be:rgba(0,39,134,.16);--portal-color-312c8e26c3:#980001;--portal-color-31b5e68729:#e2f5e9;--portal-color-323093c4da:#9b1520;--portal-color-33ade86742:hsla(0,0%,100%,.05);--portal-color-344889c9c5:rgba(106,164,255,.18);--portal-color-3505c4ac4c:rgba(9,46,92,.3);--portal-color-367774f22d:#fcfdff;--portal-color-373f0ec52e:#2f4f7f;--portal-color-375613b652:#fff6f6;--portal-color-37b99f5bd9:#102f59;--portal-color-3adead38cc:rgba(128,152,190,.12);--portal-color-3b79014ba0:#f7faff;--portal-color-3c48a6d95d:#eaf1ff;--portal-color-3c582210ea:#0a2f66;--portal-color-3d608aab85:#e7f5ec;--portal-color-3e7fb9eac4:#d99494;--portal-color-41b1689b86:rgba(31,107,58,.28);--portal-color-4222bb2d34:#e8f0fd;--portal-color-422e89e498:#f3ecff;--portal-color-426a2e5cc8:rgba(15,36,68,.2);--portal-color-42f0808f83:#203656;--portal-color-437c03ed17:#e8f1ff;--portal-color-4453415d9e:#212121;--portal-color-45756b2b73:#002786;--portal-color-4643f99d7f:#124685;--portal-color-46586438f4:#913198;--portal-color-469978e86b:#f5f8ff;--portal-color-47fb0fc0c1:#e5e7eb;--portal-color-4809f882c5:#4f5968;--portal-color-48cd3a6648:#304f7a;--portal-color-48d9abbb8e:#b5c4da;--portal-color-4961d06ce2:rgba(0,39,134,.26);--portal-color-4a1e07fc47:#ffd7d4;--portal-color-4a291f7155:rgba(106,164,255,.42);--portal-color-4a4eba674d:rgba(0,39,134,.22);--portal-color-4ae9a1f7c6:#f8fbff;--portal-color-4b343826a8:hsla(0,0%,100%,.36);--portal-color-4b848cb5df:#6cad85;--portal-color-4c58cd2153:#eee;--portal-color-4d6f92dfee:#0b2a67;--portal-color-515a32c043:rgba(18,70,133,.22);--portal-color-51f08e7078:#f0f0ee;--portal-color-53432a348e:#f4f8ff;--portal-color-54b560c774:#c7d4e8;--portal-color-5526919828:#d3ecd9;--portal-color-55773a19e5:#e8efff;--portal-color-55a7dc028b:#fce9e9;--portal-color-5647dd626d:#0b3f86;--portal-color-568e8455f1:rgba(106,164,255,.22);--portal-color-56fcea51d1:rgba(180,196,234,.46);--portal-color-57b962ee7c:hsla(0,0%,100%,.14);--portal-color-57be6b39f7:#7f291f;--portal-color-588c301c36:#8d0010;--portal-color-597d622954:rgba(124,214,164,.42);--portal-color-5987913019:#8ea3c1;--portal-color-5bdf769798:#244165;--portal-color-5ce4c7c743:#e1e8f4;--portal-color-5f0caed72f:#9fb8d8;--portal-color-5ff93edc43:color-mix(in srgb,#b23a2e 18%,#3c4248 82%);--portal-color-628daaa478:color-mix(in srgb,#1f7a47 24%,#484f56 76%);--portal-color-64f144942a:#b6c8e4;--portal-color-66a08ca4d4:#415b84;--portal-color-6773f1a111:#e18825;--portal-color-6861024013:#1f2d48;--portal-color-69fd3cb4e6:#8f2026;--portal-color-6b2342831b:#abc0de;--portal-color-6f258c7bd7:#0e3156;--portal-color-6fcde86d35:rgba(231,182,178,.2);--portal-color-709e6795a7:#038e9f;--portal-color-7133576b43:#d9edf7;--portal-color-719541c06a:#6aa4ff;--portal-color-75e50d3433:#870200;--portal-color-75f461b553:#7f4b00;--portal-color-763bbb26ad:#e58a92;--portal-color-7801470977:#1f6b3a;--portal-color-7a02302f0b:#b3262d;--portal-color-7a33f242ff:#2d5ea6;--portal-color-7e4f1499c9:#ffd76a;--portal-color-7f8784021f:#1f5b9f;--portal-color-7f8b941c53:hsla(0,0%,100%,.32);--portal-color-80f5b9512c:#0034a1;--portal-color-81a116a7df:#6330da;--portal-color-81aacf4ad5:hsla(0,0%,100%,.04);--portal-color-82f80f783f:#55389f;--portal-color-87159a30a0:#fafcff;--portal-color-8749aa0320:#dfeafd;--portal-color-87bbb79e2e:#9eb7dd;--portal-color-8aa2dbb5d9:#eef4ff;--portal-color-8e5456173c:#96abc9;--portal-color-8e84576524:color-mix(in srgb,#1f7a47 18%,#3c4248 82%);--portal-color-8f0ff52e0d:rgba(20,35,68,.2);--portal-color-8ff5c44654:#d8dee9;--portal-color-90f12f5115:#445f89;--portal-color-9121bb2e26:rgba(7,32,73,.22);--portal-color-91d2ea6cfe:#92000d;--portal-color-9203fef560:hsla(0,0%,100%,.95);--portal-color-9548739191:#e3efff;--portal-color-95bd928787:#a8bbd7;--portal-color-972749c27e:#122f58;--portal-color-9783dee77b:hsla(0,0%,100%,.34);--portal-color-97f9ffca77:#163a6d;--portal-color-991ebe2c3a:rgba(17,70,37,.3);--portal-color-997324aabe:#eaf2ff;--portal-color-9a49c7aede:#8ab0e6;--portal-color-9b98859584:#7fa6e2;--portal-color-9bc0b93906:#e3ecff;--portal-color-9bd5813b2b:rgba(31,107,58,.23);--portal-color-9c1eaddb49:#cd1637;--portal-color-9d851aa3c8:#b9cbe4;--portal-color-9e200f76d6:#f9fbff;--portal-color-9f5af08a94:#4c6489;--portal-color-9fc7feb5f0:#90a6c8;--portal-color-a0cebdc6af:#12385f;--portal-color-a28e5c5618:#eef3ff;--portal-color-a3a68d90c8:#e8eef8;--portal-color-a48f0535e6:#fffaeb;--portal-color-a4aa943622:rgba(18,28,45,.64);--portal-color-a5b5be78d6:rgba(18,70,133,.2);--portal-color-a5d9717d79:#b8c8e0;--portal-color-a6f8278158:#e2ebff;--portal-color-a747dbf759:rgba(229,203,102,.2);--portal-color-a85bd9ef7f:#17345c;--portal-color-a8c93a3767:rgba(181,0,16,.26);--portal-color-ab255e34c0:#7e98be;--portal-color-acba0a17f6:#1a2235;--portal-color-ad9368f436:#143a64;--portal-color-b0a854d782:rgba(144,211,173,.18);--portal-color-b0e4f2e1c7:rgba(12,21,40,.32);--portal-color-b204248b5d:#ddd;--portal-color-b245852d50:#1d2f4a;--portal-color-b514a5be40:color-mix(in srgb,#484f56 72%,#55389f 28%);--portal-color-b52559cb1c:rgba(242,138,149,.42);--portal-color-b6a2764085:#c1d0e4;--portal-color-b7090b879b:#7a8ca9;--portal-color-b710eadc9f:#2a6e45;--portal-color-b72cf2de92:#ffc9c4;--portal-color-b75eb09de7:#2f7d51;--portal-color-ba0cc5c38a:rgba(0,39,134,.18);--portal-color-bd73054f6d:#113a67;--portal-color-bd827b1b26:#b50010;--portal-color-be559484b4:#536b92;--portal-color-be77b3b86a:#f9faff;--portal-color-bf36793f67:#d4ddeb;--portal-color-bf48c79991:#cad4e3;--portal-color-c1ea88f252:#875115;--portal-color-c26311f0ba:#9ab0d0;--portal-color-c2efe9c01a:#b3c3dd;--portal-color-c3656bda4a:#0f1d33;--portal-color-c559054d76:rgba(120,0,12,.35);--portal-color-c659d630ce:#fff;--portal-color-c684a558ca:color-mix(in srgb,#484f56 74%,#a86400 26%);--portal-color-c7238605a6:rgba(0,0,0,.1);--portal-color-c736538b33:#7bc48f;--portal-color-c82f339b4e:#f8fbff;--portal-color-c899a97281:#ede3ff;--portal-color-c8b4c9efb7:#005e8d;--portal-color-ca3c517be2:rgba(20,35,68,.12);--portal-color-cb48e6e5d4:#333;--portal-color-cbc1cfa6cf:#f7fbff;--portal-color-cbfc8005b4:#e0162b;--portal-color-ccf3801810:#3e5679;--portal-color-ccfa40c9d0:#6e8eb8;--portal-color-cd39781015:#bfd0ea;--portal-color-cd5fad86be:#f0f2f5;--portal-color-cebb176820:#143463;--portal-color-cf16fd64c5:#e9eef7;--portal-color-cf801561d7:#edf3fa;--portal-color-d03a38f50d:#366db1;--portal-color-d07e7e7d52:#b23a2e;--portal-color-d14f901611:#fff;--portal-color-d22a529744:#d6dfec;--portal-color-d2900205b2:#f8fffb;--portal-color-d2d30945b7:#d5deec;--portal-color-da467d2b4a:#7ea4df;--portal-color-dbb4046a12:#d8edff;--portal-color-dcaac7c975:#630094;--portal-color-ddbaa7561b:rgba(20,35,68,.22);--portal-color-ddfd1638e3:rgba(71,53,27,.96);--portal-color-df9c1d2dba:#666;--portal-color-dfd1c124aa:#5f7599;--portal-color-e273abe831:#fff0cc;--portal-color-e32e5ac3d5:#0f4a9f;--portal-color-e337dcad67:#1e8b52;--portal-color-e45f66b6fc:#001d62;--portal-color-e4eca72dfb:#8a94a8;--portal-color-e59910651a:#e8f6ed;--portal-color-e794d5c0c8:#f2f6ff;--portal-color-e826bd6aa5:rgba(106,164,255,.16);--portal-color-e83556da4c:#edf3ff;--portal-color-ea68f7072c:#d7dfea;--portal-color-eb22a8aca6:rgba(0,0,0,.24);--portal-color-ec28aed7ca:#f6f9ff;--portal-color-ec630fca03:#0f5c2b;--portal-color-edb7fe91a8:#b5d570;--portal-color-efc4ce6dd0:#0f452c;--portal-color-f0163600e1:rgba(181,0,16,.2);--portal-color-f145d41978:#8ea4c0;--portal-color-f18c37b592:color-mix(in srgb,#484f56 62%,#55389f 38%);--portal-color-f549e07556:#1f2d45;--portal-color-f5531c30a5:#123866;--portal-color-f6cf2589bd:#ffe4a3;--portal-color-f8af596fb2:color-mix(in srgb,#484f56 82%,#fff 18%);--portal-color-f8f09f4f88:rgba(12,31,63,.08);--portal-color-f901fae8ae:#f0b05f;--portal-color-fac29d76ac:#d0d7e2;--portal-color-fbe71060c6:#2d78b4;--portal-color-fd15f49e34:#b10128;--portal-color-ff3f35cedc:rgba(47,57,76,.95);--portal-color-ff50535d27:hsla(0,0%,100%,.62)}