:root{color-scheme:light;--bg: #f4efe1;--bg-alt: #e6f2f5;--ink: #213547;--muted: #5c6c74;--panel: rgba(255, 255, 255, .82);--stroke: rgba(33, 53, 71, .1);--primary: #ff7a18;--primary-dark: #d65f06;--secondary: #fff3da;--track: #d8ecf1;--track-line: rgba(255, 255, 255, .7);--success: #17a34a;--danger: #dc2626;--current: #f59e0b;font-family:Trebuchet MS,Segoe UI,sans-serif}*{box-sizing:border-box}body{margin:0;min-height:100vh;color:var(--ink);background:radial-gradient(circle at top left,rgba(255,122,24,.25),transparent 20%),linear-gradient(180deg,var(--bg-alt),var(--bg))}button,input,select{font:inherit}button{cursor:pointer;border:0;border-radius:999px;transition:transform .15s ease,opacity .15s ease,background .15s ease}button:hover{transform:translateY(-1px)}input,select{width:100%;border:1px solid var(--stroke);border-radius:16px;padding:.9rem 1rem;background:#ffffffe6}.page{width:min(1200px,calc(100vw - 2rem));margin:0 auto;padding:2rem 0 3rem}.hero{min-height:100vh;display:grid;place-items:center}.hero-panel,.panel{background:var(--panel);border:1px solid var(--stroke);border-radius:28px;box-shadow:0 20px 60px #2135471f;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.hero-panel{width:min(820px,100%);padding:2.5rem}.eyebrow{text-transform:uppercase;letter-spacing:.18em;font-size:.78rem;color:var(--muted)}h1,h2,p{margin-top:0}h1{font-size:clamp(2.6rem,5vw,4.8rem);line-height:.95;max-width:10ch;margin-bottom:1rem}.lede{max-width:58ch;color:var(--muted);margin-bottom:1.8rem}.identity-card{display:grid;gap:1rem}.label-text,label span{display:block;margin-bottom:.45rem;font-size:.95rem;font-weight:700}.avatar-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(96px,1fr));gap:.7rem}.avatar-option{border-radius:22px;padding:.9rem .7rem;border:1px solid var(--stroke);background:#ffffffeb;display:grid;gap:.35rem;place-items:center}.avatar-option.selected{background:#fff1d8;border-color:#ff7a1873}.avatar-emoji{font-size:2rem}.home-actions,.join-inline,.panel-header,.lobby-actions,.race-banner,.race-top-actions,.results-actions{display:flex;gap:1rem;align-items:center}.home-actions{margin-top:1.5rem;flex-wrap:wrap}.join-inline{flex:1}.primary,.secondary,.status-pill{padding:.95rem 1.3rem;font-weight:800}.primary{background:var(--primary);color:#fff}.primary:hover{background:var(--primary-dark)}.secondary{background:var(--secondary);color:var(--ink)}.status-pill{background:#17a34a24;color:var(--success);border-radius:999px}.error-banner{margin-top:1rem;background:#dc26261f;color:var(--danger);padding:.85rem 1rem;border-radius:18px}.lobby-layout,.race-layout{display:grid;grid-template-columns:1.6fr 1fr;gap:1rem}.results-layout{padding-top:6rem}.celebration-screen{position:relative;overflow:hidden;padding-top:3rem}.winner-hero{position:relative;z-index:1;display:grid;place-items:center;text-align:center;gap:.8rem;padding:2rem 0 1rem}.winner-hero h1{max-width:none;margin:0;font-size:clamp(3rem,8vw,5.6rem);color:#143d6b}.winner-hero p{margin:0;color:var(--muted);font-size:1.05rem}.winner-avatar{width:144px;height:144px;border-radius:50%;display:grid;place-items:center;font-size:4.5rem;background:radial-gradient(circle at 30% 30%,#ffd86b,#ffba08);box-shadow:0 18px 40px #ffba0852}.confetti-layer{position:absolute;inset:0;pointer-events:none;overflow:hidden}.confetti-piece{position:absolute;top:-5%;width:12px;height:28px;border-radius:999px;background:hsl(var(--hue),88%,58%);opacity:.88;animation:confetti-fall var(--duration) linear infinite;animation-delay:var(--delay)}.confetti-piece:nth-child(3n){width:10px;height:10px;border-radius:50%}.confetti-piece:nth-child(4n){width:16px;height:8px}.confetti-piece:nth-child(5n){border-radius:40% 60% 60% 40%}.podium-wrap{position:relative;z-index:1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;align-items:end;margin:2rem auto 2.2rem;width:min(980px,100%)}.podium-card{display:grid;justify-items:center;gap:.55rem;padding:1.2rem 1rem 0;border-radius:28px 28px 0 0;background:#ffffffe0;border:1px solid rgba(33,53,71,.08);text-align:center;min-height:250px;box-shadow:0 18px 35px #2135471f}.podium-first{min-height:330px;background:linear-gradient(180deg,#fff6d4,#ffd86b)}.podium-second{min-height:270px;background:linear-gradient(180deg,#f5f7fb,#d9e3f2)}.podium-third{min-height:235px;background:linear-gradient(180deg,#ffe6ca,#f3b979)}.podium-avatar{width:86px;height:86px;margin-top:-34px;border-radius:50%;display:grid;place-items:center;background:#fffffff2;box-shadow:0 12px 24px #21354726;font-size:2.6rem}.podium-metrics{display:grid;gap:.2rem;color:var(--muted);font-size:.92rem}.podium-step{width:100%;margin-top:auto;padding:.8rem 0;font-size:2.4rem;font-weight:900;color:#143d6b;background:#ffffff52;border-radius:18px 18px 0 0}.results-panel{position:relative;z-index:1}.panel{padding:1.5rem}.muted{color:var(--muted)}.settings-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin:1rem 0 1.2rem}.text-preview{padding:1rem 1.1rem;border-radius:22px;background:#e6f2f5cc;margin-bottom:1rem}.preview-head{display:flex;justify-content:space-between;gap:1rem;margin-bottom:.6rem}.player-list,.ranking-list{list-style:none;padding:0;margin:0;display:grid;gap:.75rem}.player-row,.ranking-row{display:grid;grid-template-columns:auto 1fr auto;gap:.8rem;align-items:center;padding:.9rem 1rem;border-radius:18px;background:#fffc;border:1px solid var(--stroke)}.avatar-badge{display:grid;place-items:center;width:42px;height:42px;border-radius:50%;background:#fff4d6;font-size:1.35rem}.role-badge{border-radius:999px;background:#ff7a181f;color:var(--primary-dark);padding:.25rem .7rem;font-size:.84rem}.race-main{display:grid;gap:1.1rem}.countdown-pill{width:78px;height:78px;display:grid;place-items:center;border-radius:50%;background:linear-gradient(135deg,var(--primary),#ffb703);color:#fff;font-size:1.8rem;font-weight:900}.leave-button{white-space:nowrap}.race-track{display:grid;gap:.8rem;padding:1rem;border-radius:26px;background:linear-gradient(90deg,#ffffffa6 0,#ffffff1a),linear-gradient(180deg,#c8e7ee,#deeff5)}.lane{display:grid;gap:.4rem}.lane-info{display:flex;gap:.6rem;align-items:center;font-weight:700}.lane-rank{color:var(--muted)}.lane-track{position:relative;height:58px;border-radius:999px;background:repeating-linear-gradient(90deg,transparent,transparent 78px,var(--track-line) 78px,var(--track-line) 82px),var(--track);overflow:hidden}.lane-progress{position:absolute;inset:0 auto 0 0;background:linear-gradient(90deg,#ff7a1829,#ff7a1880)}.lane-avatar{position:absolute;top:8px;width:42px;height:42px;display:grid;place-items:center;border-radius:50%;background:#ffffffeb;font-size:1.6rem;box-shadow:0 8px 20px #21354729;transition:left .18s linear}.typing-panel{display:grid;gap:1rem}.text-board{padding:1.3rem;border-radius:24px;background:#fffdf7;min-height:170px;font-size:1.45rem;line-height:1.7;border:1px solid rgba(33,53,71,.08)}.char.correct{color:var(--success)}.char.error{color:#fff;background:var(--danger);border-radius:6px}.char.current{text-decoration:underline;text-decoration-color:var(--current);text-decoration-thickness:.2rem}#typing-input{font-size:1.1rem;padding:1rem 1.1rem}.results-table{width:100%;border-collapse:collapse}.results-table th,.results-table td{text-align:left;padding:.95rem .8rem;border-bottom:1px solid rgba(33,53,71,.08)}@media(max-width:960px){.lobby-layout,.race-layout{grid-template-columns:1fr}.preview-head,.panel-header,.race-banner,.lobby-actions,.race-top-actions,.results-actions{align-items:flex-start;flex-direction:column}.podium-wrap{grid-template-columns:1fr;align-items:stretch}.podium-card,.podium-first,.podium-second,.podium-third{min-height:auto}}@keyframes confetti-fall{0%{transform:translate3d(0,-10%,0) rotate(0)}to{transform:translate3d(20px,115vh,0) rotate(540deg)}}
