:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--brand-top:#9045ff;--brand-bottom:#370189;--surface:#faf7ff;--card:#fff;--text:#211538;--muted:#5c4f70;--primary:#6323c4;--on-primary:#fff;--accent-surface:#f0e5ff;--on-accent:#6323c4;--border:#e1d4f0;--focus:#6323c4;--success:#135b44;--error:#8c1d36;color:var(--text);background:var(--surface);font-family:Inter,system-ui,sans-serif}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}:root:not([data-theme]){--surface:#171023;--card:#241936;--text:#f5efff;--muted:#c9b9dc;--primary:#d6bcff;--on-primary:#291145;--accent-surface:#382258;--on-accent:#e3d2ff;--border:#493960;--focus:#d6bcff;--success:#92e0be;--error:#ffb3c4}}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--surface:#171023;--card:#241936;--text:#f5efff;--muted:#c9b9dc;--primary:#d6bcff;--on-primary:#291145;--accent-surface:#382258;--on-accent:#e3d2ff;--border:#493960;--focus:#d6bcff;--success:#92e0be;--error:#ffb3c4}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}body{margin:0}:focus-visible{outline:3px solid var(--focus);outline-offset:4px}.skip-link{z-index:1;background:var(--primary);color:var(--on-primary);border-radius:.5rem;padding:.75rem;position:fixed;top:1rem;left:1rem;transform:translateY(-200%)}.skip-link:focus{transform:translateY(0)}.portal-header{border-bottom:1px solid var(--border);background:var(--card);flex-wrap:wrap;align-items:center;gap:.75rem 1.5rem;padding:1rem max(1rem,50vw - 37rem);display:flex}.portal-brand{min-height:2.75rem;color:var(--text);letter-spacing:-.02em;align-items:center;gap:.65rem;font-weight:750;text-decoration:none;display:inline-flex}.portal-brand img{border-radius:.65rem}.theme-picker{color:var(--muted);flex-wrap:wrap;align-items:center;gap:.4rem .55rem;margin-inline-start:auto;display:inline-flex}.theme-picker select,.form-field input{box-sizing:border-box;border:1px solid var(--border);background:var(--card);min-height:2.75rem;color:var(--text);font:inherit;border-radius:.6rem;padding:.5rem .75rem}.portal-main{max-width:74rem;min-height:45vh;margin-inline:auto;padding:clamp(2.5rem,8vw,6rem) 1rem}.portal-main h1{letter-spacing:-.035em;margin:0 0 .6rem;font-size:clamp(2rem,6vw,3.5rem);line-height:1.1}.portal-description{max-width:40ch;color:var(--muted);margin:0}.form-field{gap:.4rem;display:grid}.form-field label{font-weight:650}.form-field input[aria-invalid=true]{border-color:var(--error)}.form-error{color:var(--error);margin:0}@media (max-width:44rem){.theme-picker{margin-inline-start:0}}.portal-form{box-sizing:border-box;border:1px solid var(--border);background:var(--card);border-radius:1rem;gap:1rem;width:min(100%,27rem);margin-block:1.5rem;padding:1.25rem;display:grid}.portal-form h3{margin:0}.primary-button,.secondary-button,.staff-groups select{border:1px solid var(--border);background:var(--card);min-height:2.75rem;color:var(--text);font:inherit;border-radius:.65rem;padding:.5rem .85rem}.primary-button{background:var(--primary);border-color:var(--primary);color:var(--on-primary);font-weight:700}button:disabled{opacity:.65}.portal-account{flex-wrap:wrap;align-items:center;gap:1rem;margin-block:1.25rem;display:flex}.staff-groups>.form-field{max-width:27rem}.table-scroll{margin-block:1rem;overflow:auto}.table-scroll table{border-collapse:collapse;background:var(--card);width:100%;min-width:30rem}.table-scroll th,.table-scroll td{border-bottom:1px solid var(--border);text-align:start;padding:.75rem}.dashboard-card{border:1px solid var(--border);background:var(--card);border-radius:1rem;max-width:32rem;padding:1.25rem}.dashboard-card h2,.dashboard-card p{margin:0}.dashboard-card p{color:var(--muted);margin-top:.5rem}.portal-form>*,.form-field input,.theme-picker select{min-width:0;max-width:100%}.portal-form{grid-template-columns:minmax(0,1fr)}.portal-main{overflow-wrap:anywhere}.live-class{min-width:0;margin-block:1rem}.live-class-heading,.live-class-controls{flex-wrap:wrap;align-items:center;gap:1rem;display:flex}.live-class-heading{justify-content:space-between}.live-class-heading h2{margin:.2rem 0}.live-class-label{letter-spacing:.075em;color:var(--primary);margin:0;font-size:.78rem;font-weight:750}.live-class-badge{background:var(--accent-surface);color:var(--on-accent);border-radius:999px;padding:.35rem .75rem;font-weight:650}.live-class-badge[data-live=true]{color:var(--success)}.live-class-controls label{flex-wrap:wrap;align-items:center;gap:.55rem;max-width:100%;display:inline-flex}.live-class-controls select{max-width:100%;color:var(--text);background:var(--card);border:1px solid var(--border);min-height:44px;font:inherit;border-radius:.6rem;padding:.55rem}.live-stage{color:#fff;background:#160f23;border-radius:.7rem;margin-top:.85rem;padding:.5rem}.live-stage p{margin:1rem}.live-stage video{object-fit:contain;background:#160f23;width:100%;max-height:72vh;display:block}.live-stage video[hidden]{display:none}.live-stage:fullscreen{align-content:center;display:grid}.live-stage:fullscreen video{max-height:90vh}.typing-page{grid-template-columns:minmax(0,1fr);gap:1rem;display:grid}.typing-card{min-width:0;max-width:65rem;margin-block:1rem}.typing-controls,.typing-metrics{flex-wrap:wrap;align-items:end;gap:.7rem;margin-block:.8rem;display:flex}.typing-controls label{flex:0 13rem;gap:.2rem;min-width:0;max-width:100%;display:grid}.typing-controls select,.typing-controls input,.typing-entry textarea{box-sizing:border-box;border:1px solid var(--border);background:var(--card);max-width:100%;min-height:44px;color:var(--text);font:inherit;border-radius:.55rem;padding:.5rem}.typing-controls select{width:100%;min-width:0}.typing-controls input[type=number]{width:6rem}.typing-metrics span,.typing-metrics strong{background:var(--accent-surface);color:var(--on-accent);border-radius:1rem;padding:.35rem .7rem}.typing-target,.typing-echo{white-space:pre-wrap;overflow-wrap:anywhere;background:var(--surface);border:1px solid var(--border);border-radius:.55rem;min-width:0;padding:.75rem;font:1rem/1.55 ui-monospace,monospace}.typing-correct{color:var(--success);font-weight:750}.typing-error{color:var(--danger,#c62828);border-bottom:2px solid;font-weight:750;-webkit-text-decoration:underline wavy;text-decoration:underline wavy}.typing-current{background:var(--accent-surface);color:var(--on-accent);outline:1px solid var(--primary);border-radius:.2rem;padding-inline:.1rem}.typing-hero-header{border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.75rem;padding-bottom:.65rem;display:flex}.typing-hero-header h2{margin:.15rem 0 0}.typing-kicker{letter-spacing:.06em;color:var(--primary);font-size:.75rem;font-weight:800;display:inline-block}.typing-class-strip,.typing-hand-guide,.typing-result-screen,.typing-class-config,.solo-speedway,.race-cockpit,.race-lobby-banner{box-sizing:border-box;border:1px solid var(--border);background:var(--surface);overflow-wrap:anywhere;border-radius:.75rem;min-width:0;max-width:100%;margin-block:.65rem;padding:.75rem}.typing-phase-pill{background:var(--accent-surface);color:var(--on-accent);border-radius:.9rem;margin:.2rem .3rem .2rem 0;padding:.2rem .55rem;font-size:.9rem;display:inline-block}.qwerty-board{background:var(--card);border:1px solid var(--border);box-sizing:border-box;border-radius:.65rem;gap:.3rem;max-width:100%;margin-block:.55rem;padding:.55rem;display:grid}.qwerty-row{flex-wrap:wrap;justify-content:center;gap:.25rem;display:flex}.qwerty-key,.typing-next-hint kbd{border:1px solid var(--border);background:var(--surface);min-width:1.85rem;min-height:2rem;color:var(--text);box-sizing:border-box;border-bottom-width:3px;border-radius:.4rem;flex-direction:column;justify-content:center;align-items:center;padding:.15rem .35rem;font-family:ui-monospace,monospace;font-size:.82rem;font-weight:700;line-height:1.1;display:inline-flex}.qwerty-key small{opacity:.75;font-size:.65rem}.qwerty-key-wide{padding-inline:.55rem}.qwerty-key-space{width:min(100%,16rem);padding-inline:.75rem}.qwerty-key-landmark{border-bottom-color:var(--primary)}.qwerty-key.typing-key-active,.typing-home-row kbd.typing-key-active{border-color:var(--primary);background:var(--primary);color:var(--on-primary);box-shadow:0 0 0 2px var(--accent-surface)}.typing-camera-note,.typing-stage-criteria{color:var(--muted);margin-block:.35rem;font-size:.92rem}.typing-progress-track{background:var(--surface);border:1px solid var(--border);border-radius:999px;width:100%;height:.6rem;margin-block:.45rem;overflow:hidden}.typing-progress-fill{background:linear-gradient(90deg, var(--brand-bottom), var(--brand-top));height:100%;transition:width .12s ease-out}.typing-error-banner{border-left:4px solid var(--danger,#c62828);background:var(--surface);border-radius:.5rem;padding:.55rem .75rem;font-weight:650}.typing-entry label,.typing-entry textarea{width:100%;display:block}.typing-entry label{margin-bottom:.35rem;font-weight:650}.typing-help{color:var(--muted)}.race-stadium{gap:.75rem;min-width:0;max-width:100%;display:grid}.race-hud-bar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.6rem;display:flex}.race-lights{border:1px solid var(--border);background:#171023;border-radius:999px;align-items:center;gap:.35rem;padding:.35rem .55rem;display:inline-flex}.race-light{opacity:.28;border-radius:50%;width:.75rem;height:.75rem}.race-light.active{opacity:1}.race-light-red{background:#ef4444;box-shadow:0 0 8px #ef4444}.race-light-amber{background:#f59e0b;box-shadow:0 0 8px #f59e0b}.race-light-green{background:#10b981;box-shadow:0 0 8px #10b981}.race-podium{flex-wrap:wrap;gap:.6rem;display:flex}.race-podium-card{border:1px solid var(--primary);background:var(--accent-surface);min-width:0;color:var(--on-accent);border-radius:.65rem;flex:10rem;gap:.2rem;padding:.6rem .75rem;display:grid}.race-medal{font-size:.85rem;font-weight:800}.race-lanes{gap:.65rem;margin:0;padding:0;list-style:none;display:grid}.race-lanes li{border:1px solid var(--border);background:var(--card);border-radius:.75rem;min-width:0;padding:.55rem .65rem}.race-lanes li.race-own{border-color:var(--primary);background:var(--accent-surface)}.race-lane-label{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.45rem;display:flex}.race-lane-badge{background:var(--surface);color:var(--text);border-radius:.4rem;padding:.1rem .4rem;font-size:.8rem;display:inline-block}.race-telemetry{flex-wrap:wrap;align-items:center;gap:.35rem;display:inline-flex}.race-speed-pill,.race-streak-pill{background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:999px;padding:.15rem .45rem;font-size:.8rem;font-style:normal;font-weight:700}.race-road{background:linear-gradient(#1d152b 0%,#2a1f3d 50%,#1d152b 100%);border:1px solid #493960;border-right:.75rem solid #9045ff;border-radius:.5rem;height:2.35rem;margin-top:.35rem;position:relative;overflow:hidden}.race-road:after{content:"";border-top:1px dashed #e3d2ff73;position:absolute;inset:50% 0 auto}.race-boost-trail{background:linear-gradient(90deg,#9045ff14,#9045ff61);transition:width .16s ease-out;position:absolute;top:0;bottom:0;left:0}.race-car-runner{z-index:1;align-items:center;transition:left .16s ease-out;display:inline-flex;position:absolute;top:.22rem}.race-car-svg{filter:drop-shadow(0 2px 4px #00000073);display:block}@media (prefers-reduced-motion:reduce){.race-car-runner,.race-boost-trail,.typing-progress-fill{transition:none}}
