:root{--c-bg:#fff;--c-surface:#fff;--c-surface-sunk:#f1f3f5;--c-surface-pressed:#e3e7eb;--c-text:#1f2328;--c-text-muted:#4e5761;--c-text-disabled:#646d78;--c-border:#c9ced4;--c-border-strong:#5c6670;--c-primary:#234a7a;--c-primary-pressed:#1a3961;--c-on-primary:#fff;--c-focus:#1f2328;--c-correct:#2f6b4f;--c-correct-surface:#ebf3ee;--c-incorrect:#a2412f;--c-incorrect-surface:#f8ece9;--c-info:#234a7a;--c-info-surface:#ebf0f6;--c-heat0:#f1f3f5;--c-heat1:#d3ddea;--c-heat2:#9fb5d1;--c-heat3:#4a6f9f;--c-heat4:#234a7a;--c-on-heat0:#1f2328;--c-on-heat1:#1f2328;--c-on-heat2:#1f2328;--c-on-heat3:#fff;--c-on-heat4:#fff;--c-stage0:#f1f3f5;--c-stage1:#bfcfe4;--c-stage2:#7d9cc4;--c-stage3:#234a7a;--c-on-stage0:#1f2328;--c-on-stage1:#1f2328;--c-on-stage2:#1f2328;--c-on-stage3:#fff;--space-none:0px;--space-xxs:4px;--space-xs:8px;--space-sm:12px;--space-md:16px;--space-lg:24px;--space-xl:32px;--space-xxl:48px;--space-xxxl:64px;--radius-xs:2px;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--radius-full:9999px;--type-caption-size:.875rem;--type-caption-leading:1.45;--type-caption-weight:400;--type-body-size:1.125rem;--type-body-leading:1.5;--type-body-weight:400;--type-body-strong-size:1.125rem;--type-body-strong-leading:1.5;--type-body-strong-weight:500;--type-title-size:1.5rem;--type-title-leading:1.3;--type-title-weight:500;--type-heading-size:1.875rem;--type-heading-leading:1.2;--type-heading-weight:600;--type-display-size:2.5rem;--type-display-leading:1.15;--type-display-weight:600;--type-keypad-size:2rem;--type-keypad-leading:1.1;--type-keypad-weight:500;--type-question-size:3.5rem;--type-question-leading:1.1;--type-question-weight:500;--border-hairline:1px;--border-control:2px;--border-focus:3px;--tap-min:48px;--tap-comfortable:56px;--tap-practice:72px;--layout-max:640px;--layout-wide:1280px;--duration-instant:0s;--duration-fast:.12s;--duration-base:.2s;--duration-slow:.32s;--ease-out:cubic-bezier(.2, 0, 0, 1);--large-font-scale:1.25;--dyslexia-leading-boost:1.15;--font-body:"Lexend", system-ui, sans-serif;--font-dyslexic:"OpenDyslexic", "Lexend", sans-serif}@media (prefers-reduced-motion:reduce){:root{--duration-instant:0s;--duration-fast:0s;--duration-base:0s;--duration-slow:0s}}[data-colour-set=default]{--c-bg:#fff;--c-surface:#fff;--c-surface-sunk:#f1f3f5;--c-surface-pressed:#e3e7eb;--c-text:#1f2328;--c-text-muted:#4e5761;--c-text-disabled:#646d78;--c-border:#c9ced4;--c-border-strong:#5c6670;--c-primary:#234a7a;--c-primary-pressed:#1a3961;--c-on-primary:#fff;--c-focus:#1f2328;--c-correct:#2f6b4f;--c-correct-surface:#ebf3ee;--c-incorrect:#a2412f;--c-incorrect-surface:#f8ece9;--c-info:#234a7a;--c-info-surface:#ebf0f6;--c-heat0:#f1f3f5;--c-heat1:#d3ddea;--c-heat2:#9fb5d1;--c-heat3:#4a6f9f;--c-heat4:#234a7a;--c-on-heat0:#1f2328;--c-on-heat1:#1f2328;--c-on-heat2:#1f2328;--c-on-heat3:#fff;--c-on-heat4:#fff;--c-stage0:#f1f3f5;--c-stage1:#bfcfe4;--c-stage2:#7d9cc4;--c-stage3:#234a7a;--c-on-stage0:#1f2328;--c-on-stage1:#1f2328;--c-on-stage2:#1f2328;--c-on-stage3:#fff}[data-colour-set=deuteranopia]{--c-bg:#fff;--c-surface:#fff;--c-surface-sunk:#f1f3f5;--c-surface-pressed:#e3e7eb;--c-text:#1f2328;--c-text-muted:#4e5761;--c-text-disabled:#646d78;--c-border:#c9ced4;--c-border-strong:#5c6670;--c-primary:#234a7a;--c-primary-pressed:#1a3961;--c-on-primary:#fff;--c-focus:#1f2328;--c-correct:#1d6584;--c-correct-surface:#e8f1f5;--c-incorrect:#8f560d;--c-incorrect-surface:#f6efe4;--c-info:#234a7a;--c-info-surface:#ebf0f6;--c-heat0:#f1f3f5;--c-heat1:#d3ddea;--c-heat2:#9fb5d1;--c-heat3:#4a6f9f;--c-heat4:#234a7a;--c-on-heat0:#1f2328;--c-on-heat1:#1f2328;--c-on-heat2:#1f2328;--c-on-heat3:#fff;--c-on-heat4:#fff;--c-stage0:#f1f3f5;--c-stage1:#bfcfe4;--c-stage2:#7d9cc4;--c-stage3:#234a7a;--c-on-stage0:#1f2328;--c-on-stage1:#1f2328;--c-on-stage2:#1f2328;--c-on-stage3:#fff}[data-colour-set=protanopia]{--c-bg:#fff;--c-surface:#fff;--c-surface-sunk:#f1f3f5;--c-surface-pressed:#e3e7eb;--c-text:#1f2328;--c-text-muted:#4e5761;--c-text-disabled:#646d78;--c-border:#c9ced4;--c-border-strong:#5c6670;--c-primary:#234a7a;--c-primary-pressed:#1a3961;--c-on-primary:#fff;--c-focus:#1f2328;--c-correct:#1d6584;--c-correct-surface:#e8f1f5;--c-incorrect:#865a12;--c-incorrect-surface:#f6efe4;--c-info:#234a7a;--c-info-surface:#ebf0f6;--c-heat0:#f1f3f5;--c-heat1:#d3ddea;--c-heat2:#9fb5d1;--c-heat3:#4a6f9f;--c-heat4:#234a7a;--c-on-heat0:#1f2328;--c-on-heat1:#1f2328;--c-on-heat2:#1f2328;--c-on-heat3:#fff;--c-on-heat4:#fff;--c-stage0:#f1f3f5;--c-stage1:#bfcfe4;--c-stage2:#7d9cc4;--c-stage3:#234a7a;--c-on-stage0:#1f2328;--c-on-stage1:#1f2328;--c-on-stage2:#1f2328;--c-on-stage3:#fff}[data-colour-set=tritanopia]{--c-bg:#fff;--c-surface:#fff;--c-surface-sunk:#f1f3f5;--c-surface-pressed:#e3e7eb;--c-text:#1f2328;--c-text-muted:#4e5761;--c-text-disabled:#646d78;--c-border:#c9ced4;--c-border-strong:#5c6670;--c-primary:#234a7a;--c-primary-pressed:#1a3961;--c-on-primary:#fff;--c-focus:#1f2328;--c-correct:#1e6658;--c-correct-surface:#e8f2ef;--c-incorrect:#a3324a;--c-incorrect-surface:#f8eaed;--c-info:#234a7a;--c-info-surface:#ebf0f6;--c-heat0:#f1f3f5;--c-heat1:#edd8dd;--c-heat2:#d6a3af;--c-heat3:#a85a6e;--c-heat4:#6e2a3e;--c-on-heat0:#1f2328;--c-on-heat1:#1f2328;--c-on-heat2:#1f2328;--c-on-heat3:#fff;--c-on-heat4:#fff;--c-stage0:#f1f3f5;--c-stage1:#ebcfd6;--c-stage2:#c98597;--c-stage3:#6e2a3e;--c-on-stage0:#1f2328;--c-on-stage1:#1f2328;--c-on-stage2:#1f2328;--c-on-stage3:#fff}[data-colour-set=highContrast]{--c-bg:#fff;--c-surface:#fff;--c-surface-sunk:#fff;--c-surface-pressed:#e6e6e6;--c-text:#000;--c-text-muted:#1a1a1a;--c-text-disabled:#575757;--c-border:#000;--c-border-strong:#000;--c-primary:#0a2650;--c-primary-pressed:#000;--c-on-primary:#fff;--c-focus:#000;--c-correct:#003f7d;--c-correct-surface:#fff;--c-incorrect:#8a2e00;--c-incorrect-surface:#fff;--c-info:#0a2650;--c-info-surface:#fff;--c-heat0:#fff;--c-heat1:#d9d9d9;--c-heat2:#9c9c9c;--c-heat3:#4a4a4a;--c-heat4:#000;--c-on-heat0:#000;--c-on-heat1:#000;--c-on-heat2:#000;--c-on-heat3:#fff;--c-on-heat4:#fff;--c-stage0:#fff;--c-stage1:#d4d4d4;--c-stage2:#9c9c9c;--c-stage3:#000;--c-on-stage0:#000;--c-on-stage1:#000;--c-on-stage2:#000;--c-on-stage3:#fff;--border-hairline:2px;--border-control:3px;--border-focus:3px}@font-face{font-family:Lexend;font-weight:400;font-display:swap;src:url(/assets/Lexend_400Regular-peUU6jwM.ttf)format("truetype")}@font-face{font-family:Lexend;font-weight:500;font-display:swap;src:url(/assets/Lexend_500Medium-B4Ng5Mcm.ttf)format("truetype")}@font-face{font-family:Lexend;font-weight:600;font-display:swap;src:url(/assets/Lexend_600SemiBold-B1FI2Xqt.ttf)format("truetype")}@font-face{font-family:OpenDyslexic;font-weight:400;font-display:swap;src:url(/assets/OpenDyslexic-Regular-BEQaFHtg.otf)format("opentype")}@font-face{font-family:OpenDyslexic;font-weight:600;font-display:swap;src:url(/assets/OpenDyslexic-Bold-CSD7QPOS.otf)format("opentype")}*,:before,:after{box-sizing:border-box}html{font-family:var(--font-body);color:var(--c-text);background:var(--c-bg);font-size:100%}body{font-size:var(--type-body-size);line-height:var(--type-body-leading);font-weight:var(--type-body-weight);background:var(--c-bg);margin:0}h1,h2,h3{margin:0 0 var(--space-md);color:var(--c-text)}h1{font-size:var(--type-heading-size);line-height:var(--type-heading-leading);font-weight:var(--type-heading-weight)}h2{font-size:var(--type-title-size);line-height:var(--type-title-leading);font-weight:var(--type-title-weight)}h3{font-size:var(--type-body-strong-size);font-weight:var(--type-body-strong-weight)}p{margin:0 0 var(--space-md);max-width:70ch}a{color:var(--c-primary);text-underline-offset:.2em}a:hover{color:var(--c-primary-pressed);text-decoration-thickness:var(--border-control)}:focus-visible{outline:var(--border-focus) solid var(--c-focus);outline-offset:var(--border-control)}.muted{color:var(--c-text-muted)}.caption{font-size:var(--type-caption-size);line-height:var(--type-caption-leading)}.tabular{font-variant-numeric:tabular-nums}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{left:var(--space-md);padding:var(--space-xs) var(--space-md);background:var(--c-surface);border:var(--border-control) solid var(--c-focus);z-index:10;position:absolute;top:0;transform:translateY(-120%)}.skip-link:focus{transform:translateY(var(--space-md))}.topbar{border-bottom:var(--border-hairline) solid var(--c-border);background:var(--c-surface)}.topbar__inner,.page{max-width:var(--layout-wide);padding:0 var(--space-lg);margin:0 auto}.topbar__inner{justify-content:space-between;align-items:center;gap:var(--space-md);min-height:var(--tap-practice);flex-wrap:wrap;display:flex}.topbar__school{font-size:var(--type-body-strong-size);font-weight:var(--type-body-strong-weight);margin:0}.topbar__nav{align-items:center;gap:var(--space-lg);flex-wrap:wrap;display:flex}.topbar__nav a[aria-current=page]{font-weight:var(--type-body-strong-weight);text-decoration-thickness:var(--border-focus)}.topbar__who{color:var(--c-text-muted);font-size:var(--type-caption-size)}.page{padding-top:var(--space-lg);padding-bottom:var(--space-xxxl)}.narrow{max-width:var(--layout-max)}.crumbs ol{gap:var(--space-xs);margin:0 0 var(--space-lg);font-size:var(--type-caption-size);flex-wrap:wrap;padding:0;list-style:none;display:flex}.crumbs li+li:before{content:"/";margin-right:var(--space-xs);color:var(--c-text-muted)}.page-head{justify-content:space-between;align-items:flex-end;gap:var(--space-md);margin-bottom:var(--space-lg);flex-wrap:wrap;display:flex}.page-head h1{margin:0}.section{margin-top:var(--space-xxl)}.button{justify-content:center;align-items:center;gap:var(--space-xs);min-height:var(--tap-min);padding:0 var(--space-lg);border:var(--border-control) solid var(--c-primary);border-radius:var(--radius-sm);background:var(--c-surface);color:var(--c-primary);font:inherit;font-weight:var(--type-body-strong-weight);cursor:pointer;text-decoration:none;display:inline-flex}.button:hover{background:var(--c-surface-sunk)}.button--primary{background:var(--c-primary);color:var(--c-on-primary)}.button--primary:hover{background:var(--c-primary-pressed);border-color:var(--c-primary-pressed)}.button--danger{border-color:var(--c-incorrect);color:var(--c-incorrect)}.button--danger.button--primary{background:var(--c-incorrect);color:var(--c-on-primary)}.button--link{padding:0 var(--space-xs);text-underline-offset:.2em;background:0 0;border-color:#0000;text-decoration:underline}.button:disabled,.button[aria-disabled=true]{border-style:dashed;border-color:var(--c-border-strong);background:var(--c-surface-sunk);color:var(--c-text-disabled);cursor:not-allowed}.actions{align-items:center;gap:var(--space-md);margin-top:var(--space-lg);flex-wrap:wrap;display:flex}.field{margin-bottom:var(--space-lg)}.field>label,.field legend{font-weight:var(--type-body-strong-weight);margin-bottom:var(--space-xxs);display:block}.field__hint{color:var(--c-text-muted);font-size:var(--type-caption-size);margin-bottom:var(--space-xs);display:block}.field__error{color:var(--c-incorrect);font-weight:var(--type-body-strong-weight);margin-bottom:var(--space-xs);display:block}.field__warning{border-left:var(--border-focus) solid var(--c-info);padding-left:var(--space-sm);margin-bottom:var(--space-xs);display:block}.field--error{border-left:var(--border-focus) solid var(--c-incorrect);padding-left:var(--space-md)}input[type=text],input[type=email],input[type=password],input[type=search],textarea,select{font:inherit;min-height:var(--tap-min);width:100%;max-width:var(--layout-max);padding:var(--space-xs) var(--space-sm);border:var(--border-control) solid var(--c-border-strong);border-radius:var(--radius-sm);background:var(--c-surface);color:var(--c-text)}textarea{min-height:calc(var(--tap-practice) * 3);line-height:var(--type-body-leading)}.input--masked{-webkit-text-security:disc}.input--short{max-width:calc(var(--space-xxxl) * 3)}fieldset{border:0;margin:0;padding:0}.choice{align-items:flex-start;gap:var(--space-sm);margin-bottom:var(--space-sm);display:flex}.choice input{width:var(--space-lg);height:var(--space-lg);margin:var(--space-xxs) 0 0;accent-color:var(--c-primary);flex:none}.choice label{font-weight:var(--type-body-weight)}.banner{justify-content:space-between;align-items:center;gap:var(--space-md);padding:var(--space-md) var(--space-lg);margin-bottom:var(--space-lg);border-left:var(--border-focus) solid var(--c-info);background:var(--c-info-surface);flex-wrap:wrap;display:flex}.banner__text{margin:0}.banner--error{border-left-color:var(--c-incorrect);background:var(--c-incorrect-surface)}.banner--success{border-left-color:var(--c-correct);background:var(--c-correct-surface)}.table-wrap{padding-inline:var(--border-focus);overflow-x:auto}table{border-collapse:collapse;width:100%}caption{text-align:left;font-size:var(--type-title-size);font-weight:var(--type-title-weight);margin-bottom:var(--space-sm)}th,td{text-align:left;padding:var(--space-sm) var(--space-md) var(--space-sm) 0;border-bottom:var(--border-hairline) solid var(--c-border);vertical-align:middle}thead th{border-bottom:var(--border-control) solid var(--c-border-strong);font-weight:var(--type-body-strong-weight);white-space:nowrap}th[aria-sort=ascending] button:after{content:" ▲"}th[aria-sort=descending] button:after{content:" ▼"}th[aria-sort] button{font:inherit;font-weight:inherit;color:var(--c-primary);text-underline-offset:.2em;cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}td.num,th.num{font-variant-numeric:tabular-nums}tbody tr:hover{background:var(--c-surface-sunk)}.check-cell{width:var(--tap-min)}.check-cell input{width:var(--space-lg);height:var(--space-lg);accent-color:var(--c-primary)}.presence{align-items:center;gap:var(--space-xs);font-size:var(--type-caption-size);color:var(--c-text-muted);display:inline-flex}.presence:before{content:"";width:var(--space-sm);height:var(--space-sm);border-radius:var(--radius-full);border:var(--border-control) solid var(--c-border-strong)}.presence--online{color:var(--c-correct);font-weight:var(--type-body-strong-weight)}.presence--online:before{background:var(--c-correct);border-color:var(--c-correct)}.tag{padding:0 var(--space-xs);border:var(--border-hairline) solid var(--c-border-strong);border-radius:var(--radius-sm);font-size:var(--type-caption-size);display:inline-block}.class-list{border-top:var(--border-control) solid var(--c-border-strong);margin:0;padding:0;list-style:none}.class-list li{justify-content:space-between;align-items:center;gap:var(--space-md);padding:var(--space-md) 0;border-bottom:var(--border-hairline) solid var(--c-border);flex-wrap:wrap;display:flex}.class-list li>*{min-width:0}.class-list__name{overflow-wrap:anywhere;font-size:var(--type-title-size);font-weight:var(--type-title-weight)}.class-list__meta{align-items:center;gap:var(--space-xs) var(--space-lg);flex-wrap:wrap;display:flex}.toolbar label{font-weight:var(--type-body-strong-weight)}.toolbar select{width:auto}.toolbar{align-items:center;gap:var(--space-md);padding:var(--space-sm) 0;margin-bottom:var(--space-md);flex-wrap:wrap;display:flex}.dialog{width:min(100% - var(--space-xl), var(--layout-max));max-height:calc(100% - var(--space-xl));padding:clamp(var(--space-md), 5vw, var(--space-xl));border:var(--border-control) solid var(--c-border-strong);border-radius:var(--radius-md);background:var(--c-surface);color:var(--c-text)}.dialog--wide{width:min(100% - var(--space-xl), var(--layout-wide))}.dialog::backdrop{background:var(--c-text);opacity:.4}.dialog__title{margin-bottom:var(--space-lg)}.code{overflow-wrap:anywhere;max-width:100%;font-size:clamp(var(--type-title-size), 9vw, var(--type-display-size));line-height:var(--type-display-leading);font-weight:var(--type-display-weight);font-variant-numeric:tabular-nums;letter-spacing:.18em;padding:var(--space-xs) var(--space-md);border:var(--border-control) dashed var(--c-border-strong);border-radius:var(--radius-sm);display:inline-block}.preview{padding:var(--space-lg);border:var(--border-control) solid var(--c-border);border-radius:var(--radius-md);background:var(--c-bg);color:var(--c-text)}.preview__question{font-size:var(--type-question-size);line-height:var(--type-question-leading);font-weight:var(--type-question-weight);font-variant-numeric:tabular-nums;margin:0}.preview__button{margin-top:var(--space-md);padding:var(--space-sm) var(--space-lg);border-radius:var(--radius-md);background:var(--c-primary);color:var(--c-on-primary);border:var(--border-control) solid var(--c-primary);display:inline-block}.preview--large{font-size:calc(var(--type-body-size) * var(--large-font-scale))}.preview--large .preview__question{font-size:calc(var(--type-question-size) * var(--large-font-scale))}.preview--dyslexic{font-family:var(--font-dyslexic);line-height:calc(var(--type-body-leading) * var(--dyslexia-leading-boost))}.basis-text{border-left:var(--border-focus) solid var(--c-border-strong);padding-left:var(--space-md);margin:var(--space-xs) 0 var(--space-md);color:var(--c-text)}.pin-cards{grid-template-columns:repeat(auto-fill, minmax(min(100%, calc(var(--space-xxxl) * 4.5)), 1fr));gap:var(--space-md);margin:0;padding:0;list-style:none;display:grid}.pin-card{padding:var(--space-md) var(--space-lg);border:var(--border-control) dashed var(--c-border-strong);border-radius:var(--radius-sm);break-inside:avoid;page-break-inside:avoid}.pin-card p{margin:0}.pin-card__school{font-size:var(--type-caption-size);color:var(--c-text-muted)}.pin-card__name{font-size:var(--type-title-size);font-weight:var(--type-title-weight);margin:var(--space-xxs) 0 var(--space-sm)}.pin-card__facts{gap:var(--space-xs) var(--space-lg);margin:0 0 var(--space-sm);flex-wrap:wrap;display:flex}.pin-card__facts dt{font-size:var(--type-caption-size);color:var(--c-text-muted)}.pin-card__facts dd{font-weight:var(--type-body-strong-weight);letter-spacing:.08em;margin:0}.pin-card__pin{font-size:var(--type-display-size);line-height:var(--type-display-leading);font-weight:var(--type-display-weight);letter-spacing:.12em}.pin-card__steps{font-size:var(--type-caption-size)}.code--small{font-size:var(--type-body-strong-size);padding:0 var(--space-xs);letter-spacing:.12em}.pin-sheet-print{display:none}@media print{@page{margin:1.2cm}body.printing-pins #root,body.printing-pins dialog{display:none}body.printing-pins .pin-sheet-print{display:block}.pin-sheet-print .pin-cards{grid-template-columns:1fr 1fr;gap:0}.pin-sheet-print .pin-card{border-radius:0;margin:-1px 0 0 -1px}}
