.admin-nav{display:flex;gap:1rem;margin:.5rem 0 1.5rem;flex-wrap:wrap}.admin-nav a{display:inline-flex;align-items:center;min-height:44px;text-decoration:none;font-weight:600;color:var(--th-link)}.admin-nav a[aria-current=page]{text-decoration:underline}.admin-table{width:100%;border-collapse:collapse;margin-top:.75rem}.admin-table th,.admin-table td{text-align:left;padding:.5rem;border-bottom:1px solid var(--th-border);vertical-align:top}.admin-form{display:grid;gap:.75rem;max-width:32rem}.admin-form label{display:grid;gap:.25rem;font-weight:600}.admin-form input,.admin-form select{font:inherit;padding:.5rem}.admin-table a{display:inline-block;padding-block:.25rem;min-height:24px}.admin-roles{display:flex;flex-wrap:wrap;gap:.5rem 1rem}.admin-roles label{display:inline-flex;gap:.35rem;align-items:center;font-weight:400}.admin-actions{display:flex;gap:.5rem;flex-wrap:wrap}.admin-error{color:var(--th-critical);font-weight:600}.admin-success{color:var(--th-success)}button.admin-link{background:none;border:none;padding:0;color:inherit;text-decoration:underline;cursor:pointer;font:inherit}.admin-header{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem 1rem}button.admin-link.admin-logout{min-height:44px;min-width:44px;padding:0 .75rem;border:2px solid var(--th-border);border-radius:var(--th-radius-md);text-decoration:none;font-weight:600;color:var(--th-link)}.classroom-code-panel{display:grid;gap:.75rem;justify-items:center;margin-top:1rem;text-align:center}.classroom-code{margin:0;font-size:clamp(3rem,14vw,7rem);font-weight:800;letter-spacing:.15em;font-family:ui-monospace,Cascadia Mono,Consolas,monospace;color:var(--brand-primary)}.classroom-qr{width:min(18rem,70vw);height:auto;background:#fff;border-radius:8px}.classroom-button{min-height:44px;padding:0 16px;font:inherit;font-weight:700;border:0;border-radius:8px;background:var(--brand-button);color:var(--brand-on-button)}.classroom-button:disabled{opacity:.45}.classroom-link{min-height:44px;background:none;border:0;font:inherit;color:var(--th-link);text-decoration:underline}.classroom-scenarios{border:1px solid var(--th-border-strong);padding:.5rem .75rem}.admin-form .classroom-scenarios__item{display:flex;align-items:center;gap:.5rem;min-height:24px;font-weight:400}.admin-form .classroom-scenarios__item input{width:1.25rem;height:1.25rem;padding:0}.scenario-header{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap}.badge{display:inline-block;margin-left:.4rem;padding:.1rem .5rem;border-radius:999px;border:1px solid currentcolor;font-size:.8rem;font-weight:600;white-space:nowrap}.badge--platform{background:var(--th-info-bg);color:var(--th-info);border-color:var(--th-info)}.scenario-form{max-width:40rem}.scenario-form textarea{font:inherit;padding:.5rem}.scenario-fieldset{border:1px solid var(--th-border-strong);padding:.5rem .75rem}.scenario-progress{margin:.75rem 0;padding:.75rem;border:1px solid var(--th-border);border-radius:.5rem}.scenario-version-picker{display:grid;gap:.25rem;max-width:24rem;font-weight:600}.viewer-tabs{display:flex;flex-wrap:wrap;gap:.25rem;border-bottom:1px solid var(--th-border-strong);margin:1rem 0}.viewer-tab{background:none;border:1px solid transparent;border-bottom:none;padding:.5rem .9rem;cursor:pointer;font:inherit}.viewer-tab--active{border-color:var(--th-border-strong);font-weight:700}.viewer-field{margin-bottom:.75rem}.viewer-field dt{font-weight:700}.viewer-field dd{margin:.15rem 0 0}.viewer-rubric h3{margin-bottom:.25rem}a.button{display:inline-block;padding:.5rem 1rem;border:1px solid currentcolor;border-radius:.4rem;text-decoration:none;font-weight:600}.call-screen{gap:12px}.call-header{text-align:center}.call-title{margin:8px 0 4px;font-size:1.4rem}.call-status{margin:0;font-weight:600}.call-timer{margin:4px 0;font-variant-numeric:tabular-nums;font-size:1.25rem}.call-progress{width:100%;height:6px}.call-warning,.call-alert{color:var(--th-critical);font-weight:600}.transcript{list-style:none;margin:0;padding:0;max-height:40vh;overflow-y:auto;display:flex;flex-direction:column;gap:6px}.transcript__line{display:flex;flex-direction:column;padding:6px 10px;border-radius:var(--radius);max-width:85%}.transcript__line--operator{align-self:flex-start;background:var(--bg)}.transcript__line--trainee{align-self:flex-end;background:var(--brand-primary);color:var(--brand-on-primary)}.transcript__line--partial{font-style:italic}.transcript__who{font-size:.8125rem;font-weight:600}.call-controls{display:flex;flex-direction:column;align-items:center;gap:10px}.call-button{border:none;border-radius:999px;font-size:1.1rem;font-weight:700;cursor:pointer;padding:14px 28px;min-height:48px}.call-button:disabled{opacity:.5;cursor:default}.call-button--start{width:100%;min-height:64px;background:var(--th-success);color:var(--th-surface);font-size:1.3rem}.call-button--ptt{width:160px;height:160px;border-radius:50%;background:var(--brand-primary);color:var(--brand-on-primary);touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.call-button--ptt.is-talking{background:var(--brand-accent);color:var(--brand-on-accent);transform:scale(1.05)}.call-button--hangup{background:var(--brand-accent);color:var(--brand-on-accent)}.call-openmic{display:flex;align-items:center;justify-content:center;gap:.5rem;font-weight:600}.call-openmic__dot{flex:none;width:.875rem;height:.875rem;border-radius:50%;border:2px solid var(--brand-primary);background:transparent;transition:background-color .15s ease}.call-openmic.is-heard .call-openmic__dot{background:var(--brand-primary)}.call-safeword{text-align:center}:root{--score-good: var(--th-success);--score-ok: var(--th-warning);--score-low: var(--th-critical)}.review{display:flex;flex-direction:column;gap:var(--gutter)}.score{display:inline-block;font-weight:700;font-variant-numeric:tabular-nums}.score--good{color:var(--score-good)}.score--ok{color:var(--score-ok)}.score--low{color:var(--score-low)}.review-overall{display:flex;flex-wrap:wrap;gap:var(--gutter);align-items:center}.review-overall .score{font-size:2.5rem;line-height:1.1}.review-summary{flex:1 1 14rem;margin:0}.review-adjusted{background:var(--brand-primary);color:var(--brand-on-primary);margin:8px 0 0}.review-dimensions{display:grid;grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));gap:12px}.review-dimension__head{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.review-dimension__head h3{margin:0;font-size:1rem}.review-dimension .score{font-size:1.4rem}.review-list{margin:8px 0 0;padding-left:1.2rem;display:flex;flex-direction:column;gap:4px}.review-link{color:var(--th-link);font-weight:600}.review-attempts{list-style:none;margin:0 0 8px;padding:0;display:flex;flex-direction:column;gap:4px}.review-attempts li{display:flex;justify-content:space-between}.review-attempts li[aria-current=true]{font-weight:700}.review-transcript{max-height:none}.review-turn--pos{outline:2px solid var(--score-good)}.review-turn--neg{outline:2px solid var(--score-low)}.review-turn__note{font-size:.8rem;font-style:italic}.review-turn__note--trainer{font-weight:600}.review-pending{display:flex;align-items:center;gap:12px}.review-pending p{margin:0}.spinner{width:1.5rem;height:1.5rem;border:3px solid var(--muted);border-top-color:var(--brand-primary);border-radius:50%;animation:review-spin .9s linear infinite}@keyframes review-spin{to{transform:rotate(360deg)}}.score__level{margin-left:.4em;font-size:var(--th-text-small-size);font-weight:600}.join-form{display:grid;gap:var(--gutter);min-width:0}.join-field{display:grid;gap:6px;font-weight:600;min-width:0}.join-input{width:100%;min-width:0;min-height:48px;padding:10px 12px;font:inherit;font-size:1rem;border:1px solid var(--muted);border-radius:8px;background:var(--bg);color:var(--fg)}.join-input--code{font-size:1.5rem;letter-spacing:.2em;text-transform:uppercase;text-align:center}.join-notice{background:var(--bg);border-radius:8px;padding:12px;overflow-wrap:anywhere}.join-notice ul{margin:0 0 8px;padding-left:1.2rem;display:grid;gap:6px}.join-consent{display:flex;gap:12px;align-items:flex-start;min-height:44px}.join-consent input{width:24px;height:24px;flex:none;margin-top:2px}.join-button{min-height:48px;padding:0 16px;font:inherit;font-weight:700;border:0;border-radius:8px;background:var(--brand-button);color:var(--brand-on-button)}.join-button:disabled{opacity:.45}.join-link{min-height:44px;background:none;border:0;font:inherit;color:var(--th-link);text-decoration:underline}.join-error,.join-notice-ended{margin:0;color:var(--th-critical);font-weight:600}.join-validated{margin:0;font-weight:600}.join-scenarios{list-style:none;margin:0 0 8px;padding:0;display:grid;gap:8px}.join-scenario{background:var(--bg);border-radius:8px;padding:0}.join-scenario a{display:block;padding:14px 12px;font-weight:600;overflow-wrap:anywhere}.join-facts{list-style:none;margin:0;padding:0;display:grid;gap:4px}.branding__colour{display:flex;gap:1rem;align-items:end}.branding__colour input[type=color]{width:4rem;height:2.5rem;padding:0}.branding__logo{display:block;max-height:80px;max-width:240px;object-fit:contain;margin:.5rem 0;background:var(--card);border:2px solid var(--brand-accent);border-radius:6px}.branding__logo-actions{display:grid;gap:.75rem;max-width:32rem}.report-button{min-height:44px;padding:0 16px;font:inherit;font-weight:700;border:0;border-radius:8px;background:var(--brand-button);color:var(--brand-on-button)}.report-button:disabled{opacity:.45}.admin-form .report-check{display:flex;flex-direction:row;align-items:center;gap:.5rem;font-weight:400}.brand-bar{display:flex;align-items:center;gap:12px;padding:8px var(--gutter);background:var(--brand-accent);color:var(--brand-on-accent);font-weight:700}.brand-bar__logo{height:32px;width:auto;max-width:160px;object-fit:contain}@font-face{font-family:Lexend;src:url(/fonts/lexend/Lexend-Variable.woff2) format("woff2");font-weight:100 900;font-style:normal;font-display:swap}@font-face{font-family:Atkinson Hyperlegible Next;src:url(/fonts/atkinson-hyperlegible-next/AtkinsonHyperlegibleNext-Variable.woff2) format("woff2");font-weight:200 800;font-style:normal;font-display:swap}:root{--th-bg: #f8fbfb;--th-surface: #ffffff;--th-surface-sunken: #edf3f3;--th-border: #d2dede;--th-border-strong: #6c8283;--th-ink: #101820;--th-ink-muted: #42545a;--th-primary: #00797a;--th-primary-hover: #005f60;--th-on-primary: #ffffff;--th-primary-tint: #e0f1f1;--th-on-primary-tint: #005a5b;--th-link: #006b6c;--th-accent: #00797a;--th-on-accent: #ffffff;--th-focus: #005f60;--th-success: #2d6a0f;--th-success-bg: #e9f4df;--th-warning: #7a4a00;--th-warning-bg: #fff0cf;--th-critical: #a3192a;--th-critical-bg: #fde7ea;--th-info: #1f4fa3;--th-info-bg: #e6edfa;--th-inverse-surface: #101820;--th-on-inverse: #eaf3f3;--th-on-inverse-muted: #a7bcbd;--th-inverse-accent: #4dc2c2;--th-shadow-1: 0 1px 2px rgba(14, 22, 38, .1);--th-shadow-2: 0 6px 20px rgba(14, 22, 38, .16);--th-space-1: 4px;--th-space-2: 8px;--th-space-3: 12px;--th-space-4: 16px;--th-space-5: 24px;--th-space-6: 32px;--th-space-7: 48px;--th-space-8: 64px;--th-radius-sm: 4px;--th-radius-md: 8px;--th-radius-lg: 12px;--th-radius-pill: 999px;--th-font-display: "Lexend", "Segoe UI", system-ui, -apple-system, Roboto, sans-serif;--th-font-sans: "Atkinson Hyperlegible Next", "Segoe UI", system-ui, -apple-system, Roboto, sans-serif;--th-font-print-display: "TH Print Display", "Lexend", Arial, sans-serif;--th-font-print-sans: "TH Print Sans", "Atkinson Hyperlegible Next", Arial, sans-serif;--th-font-email: Arial, Helvetica, sans-serif;--th-text-display-size: 2.75rem;--th-text-display-line: 1.1;--th-text-display-weight: 600;--th-text-h1-size: 2.125rem;--th-text-h1-line: 1.15;--th-text-h1-weight: 600;--th-text-h2-size: 1.625rem;--th-text-h2-line: 1.25;--th-text-h2-weight: 600;--th-text-h3-size: 1.25rem;--th-text-h3-line: 1.3;--th-text-h3-weight: 600;--th-text-score-numeral-size: 3rem;--th-text-score-numeral-line: 1;--th-text-score-numeral-weight: 700;--th-text-lead-size: 1.1875rem;--th-text-lead-line: 1.55;--th-text-lead-weight: 400;--th-text-body-size: 1rem;--th-text-body-line: 1.55;--th-text-body-weight: 400;--th-text-body-strong-size: 1rem;--th-text-body-strong-line: 1.55;--th-text-body-strong-weight: 700;--th-text-button-size: 1rem;--th-text-button-line: 1.2;--th-text-button-weight: 600;--th-text-label-size: 1rem;--th-text-label-line: 1.4;--th-text-label-weight: 600;--th-text-small-size: .875rem;--th-text-small-line: 1.5;--th-text-small-weight: 400;--th-text-caption-size: .8125rem;--th-text-caption-line: 1.4;--th-text-caption-weight: 600;--th-text-print-title-size: 24px;--th-text-print-title-line: 1.15;--th-text-print-title-weight: 700;--th-text-print-body-size: 12.5px;--th-text-print-body-line: 1.4;--th-text-print-body-weight: 400;--th-text-print-small-size: 11px;--th-text-print-small-line: 1.4;--th-text-print-small-weight: 400}@media(prefers-color-scheme:dark){:root{--th-bg: #0a1415;--th-surface: #101e20;--th-surface-sunken: #070f10;--th-border: #243a3c;--th-border-strong: #6f9091;--th-ink: #eaf3f3;--th-ink-muted: #a7bcbd;--th-primary: #4dc2c2;--th-primary-hover: #7ad5d5;--th-on-primary: #04181a;--th-primary-tint: #12373a;--th-on-primary-tint: #a9e4e4;--th-link: #66cfcf;--th-accent: #4dc2c2;--th-on-accent: #04181a;--th-focus: #66cfcf;--th-success: #a6d86b;--th-success-bg: #1c2a10;--th-warning: #f0c25a;--th-warning-bg: #2f2410;--th-critical: #ff9ba6;--th-critical-bg: #351219;--th-info: #8db2f4;--th-info-bg: #14203d;--th-inverse-surface: #070f10;--th-on-inverse: #eaf3f3;--th-on-inverse-muted: #a7bcbd;--th-inverse-accent: #4dc2c2;--th-shadow-1: 0 1px 2px rgba(0, 0, 0, .5);--th-shadow-2: 0 6px 20px rgba(0, 0, 0, .6)}}:root{--brand-primary: var(--th-primary);--brand-on-primary: var(--th-on-primary);--brand-accent: var(--th-accent);--brand-on-accent: var(--th-on-accent);--brand-button: var(--brand-accent);--brand-on-button: var(--brand-on-accent);--bg: var(--th-bg);--fg: var(--th-ink);--muted: var(--th-ink-muted);--card: var(--th-surface);--radius: var(--th-radius-lg);--gutter: var(--th-space-4);color-scheme:light dark;font-family:var(--th-font-sans);line-height:var(--th-text-body-line)}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%;background:var(--bg);color:var(--fg)}:focus-visible{outline:3px solid var(--th-focus);outline-offset:2px}html{scroll-padding:var(--th-space-6)}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}button,select,input:not([type=checkbox]):not([type=radio]):not([type=color]),a.button{min-height:44px}input[type=checkbox],input[type=radio]{width:24px;height:24px;accent-color:var(--brand-primary)}button.admin-link{min-height:24px;min-width:24px}.button{display:inline-flex;align-items:center;justify-content:center;padding:0 var(--th-space-4);font:inherit;font-weight:700;border:2px solid var(--brand-button);border-radius:var(--th-radius-md);background:var(--brand-button);color:var(--brand-on-button);text-decoration:none;cursor:pointer}.button--secondary{background:transparent;color:var(--th-link)}.button:disabled{opacity:.45;cursor:default}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}.screen{max-width:480px;margin:0 auto;padding:calc(var(--gutter) + env(safe-area-inset-top)) var(--gutter) calc(var(--gutter) + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:var(--gutter);min-height:100dvh}.screen--wide{max-width:1100px}.screen__header h1{margin:0 0 4px;font-family:var(--th-font-display);font-size:1.75rem;font-weight:var(--th-text-h1-weight);color:var(--brand-primary)}.muted{color:var(--muted)}.card{background:var(--card);border:1px solid var(--th-border);border-radius:var(--radius);padding:var(--gutter)}.screen__footer{margin-top:auto;display:flex;justify-content:center}.badge{display:inline-block;padding:4px 10px;border-radius:var(--th-radius-pill);font-size:var(--th-text-caption-size);font-weight:var(--th-text-caption-weight)}.badge--warning{background:var(--th-warning-bg);color:var(--th-warning);border:1px solid var(--th-warning)}.card__title{margin:0 0 8px;font-family:var(--th-font-display);font-size:var(--th-text-h3-size);font-weight:var(--th-text-h3-weight)}.small{font-size:var(--th-text-small-size)}.status-list{display:grid;grid-template-columns:auto 1fr;gap:6px 12px;margin:0}.status-list dt{color:var(--muted)}.status-list dd{margin:0;font-weight:600}.status--ok{color:var(--th-success)}.status--error{color:var(--th-critical)}.status--pending{color:var(--muted)}
