:root{--bg:#07090c;--bg-2:#0c1015;--surface:#11161d;--surface-2:#171d26;--line:#ffffff14;--line-strong:#ffffff29;--text:#f2f5f8;--text-dim:#9aa6b4;--text-faint:#5c6875;--accent:#dcff4f;--accent-ink:#0a0c05;--hot:#ff4d3d;--cool:#3ce0f0;--warm:#ffb020;--good:#4ade80;--pro:#dcff4f;--open:#3ce0f0;--doubles:#c084fc;--radius:10px;--radius-lg:16px;--font:"SF Pro Display", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif;--mono:"SF Mono", ui-monospace, "Roboto Mono", Menlo, monospace}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;overflow:hidden}.num{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1;letter-spacing:-.01em}.eyebrow{text-transform:uppercase;letter-spacing:.16em;color:var(--text-faint);font-weight:700}.tv{background:radial-gradient(120% 80% at 12% -10%, #dcff4f12, transparent 60%), radial-gradient(90% 70% at 100% 110%, #3ce0f00f, transparent 55%), var(--bg);grid-template-rows:auto 1fr;width:100vw;height:100vh;font-size:clamp(15px,1.42vh,40px);display:grid;overflow:hidden}.tv-head{border-bottom:1px solid var(--line);background:linear-gradient(#ffffff09,#0000);align-items:center;gap:1.4rem;padding:.9rem 1.6rem;display:flex}.brand{align-items:baseline;gap:.6rem;display:flex}.brand-mark{letter-spacing:-.03em;color:var(--accent);font-size:1.75rem;font-weight:900;line-height:1}.brand-sub{text-transform:uppercase;letter-spacing:.22em;color:var(--text-faint);font-size:.72rem;font-weight:700}.head-event{flex:1;min-width:0}.head-event h1{letter-spacing:-.01em;white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:1.05rem;font-weight:700;overflow:hidden}.head-event p{color:var(--text-faint);text-transform:uppercase;letter-spacing:.12em;margin:.12rem 0 0;font-size:.72rem}.head-stats{align-items:center;gap:1.5rem;display:flex}.stat{text-align:right}.stat-value{letter-spacing:-.02em;font-size:1.5rem;font-weight:800;line-height:1}.stat-label{text-transform:uppercase;letter-spacing:.16em;color:var(--text-faint);margin-top:.22rem;font-size:.62rem;font-weight:700}.race-clock{letter-spacing:-.03em;color:var(--text);font-size:2.1rem;font-weight:800;line-height:1}.conn{text-transform:uppercase;letter-spacing:.14em;color:var(--text-faint);white-space:nowrap;align-items:center;gap:.45rem;font-size:.66rem;font-weight:700;display:flex}.conn-dot{background:var(--good);border-radius:50%;width:.6rem;height:.6rem;box-shadow:0 0 0 .22rem #4ade8029}.conn.warn .conn-dot{background:var(--warm);box-shadow:0 0 0 .22rem #ffb02029}.conn.down .conn-dot{background:var(--hot);animation:1.1s infinite pulse;box-shadow:0 0 0 .22rem #ff4d3d2e}@keyframes pulse{50%{opacity:.35}}.tv-body{grid-template-columns:1fr clamp(260px,21vw,460px);min-height:0;display:grid}.tv-stage{flex-direction:column;min-height:0;padding:1.1rem 1.4rem .85rem;display:flex;position:relative}.stage-head{justify-content:space-between;align-items:flex-end;gap:1rem;margin-bottom:.75rem;display:flex}.stage-title{letter-spacing:-.035em;margin:0;font-size:1.9rem;font-weight:900;line-height:1}.stage-title .accent{color:var(--accent)}.stage-meta{color:var(--text-faint);text-transform:uppercase;letter-spacing:.14em;font-size:.74rem;font-weight:700}.rotator-bar{background:#ffffff14;border-radius:2px;height:3px;margin-bottom:.9rem;overflow:hidden}.rotator-fill{background:var(--accent);border-radius:2px;height:100%;transition:width .1s linear}.stage-view{flex:1;min-height:0;position:relative}.board{flex-direction:column;gap:.25rem;height:100%;display:flex;overflow:hidden}.board-row{border-radius:var(--radius);background:var(--surface);border:1px solid #0000;flex:1 1 0;grid-template-columns:3.1rem 4.2rem 1fr 7.5rem 6.6rem 5rem;align-items:center;gap:.8rem;min-height:0;padding:.3rem .9rem;display:grid;overflow:hidden}.board-row.head{text-transform:uppercase;letter-spacing:.16em;color:var(--text-faint);background:0 0;flex:none;padding-top:0;padding-bottom:.3rem;font-size:.64rem;font-weight:700}.board-row.lead{background:linear-gradient(90deg,#dcff4f29,#dcff4f08 60%,#0000);border-color:#dcff4f66}.board-row.podium{background:var(--surface-2)}.rank{letter-spacing:-.04em;color:var(--text-dim);text-align:right;font-size:1.45rem;font-weight:900}.board-row.lead .rank{color:var(--accent)}.board-row.podium .rank{color:var(--text)}.bib{color:var(--text-faint);letter-spacing:-.01em;font-size:.98rem;font-weight:800}.who{min-width:0}.who-name{letter-spacing:-.02em;white-space:nowrap;text-overflow:ellipsis;font-size:1.24rem;font-weight:700;line-height:1.15;overflow:hidden}.who-sub{color:var(--text-faint);text-transform:uppercase;letter-spacing:.1em;white-space:nowrap;text-overflow:ellipsis;font-size:.68rem;font-weight:600;overflow:hidden}.cat-chip{letter-spacing:.1em;text-transform:uppercase;border:1px solid var(--line-strong);color:var(--text-dim);border-radius:4px;padding:.1rem .42rem;font-size:.6rem;font-weight:800;display:inline-block}.cat-chip.PRO{color:var(--pro);border-color:#dcff4f59}.cat-chip.OPEN{color:var(--cool);border-color:#3ce0f059}.cat-chip.DOUBLES{color:var(--doubles);border-color:#c084fc59}.segment{color:var(--text-dim);white-space:nowrap;text-overflow:ellipsis;font-size:.82rem;font-weight:700;overflow:hidden}.segment.done{color:var(--good)}.time{letter-spacing:-.035em;text-align:right;font-size:1.5rem;font-weight:800}.time.fin{color:var(--accent)}.gap{color:var(--text-faint);text-align:right;letter-spacing:-.02em;font-size:.95rem;font-weight:700}.progress-pips{gap:2px;margin-top:.2rem;display:flex}.pip{background:#ffffff1f;border-radius:1px;flex:1;height:3px}.pip.on{background:var(--cool)}.pip.on.fin{background:var(--accent)}.station-grid{grid-template-rows:repeat(2,1fr);grid-template-columns:repeat(4,1fr);gap:.7rem;height:100%;display:grid}.station-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);flex-direction:column;min-height:0;padding:.85rem .95rem;display:flex;position:relative;overflow:hidden}.station-card:before{content:"";background:var(--accent);opacity:.55;width:3px;position:absolute;inset:0 auto 0 0}.station-num{color:#ffffff0d;letter-spacing:-.06em;font-size:2.6rem;font-weight:900;line-height:1;position:absolute;top:.35rem;right:.7rem}.station-name{letter-spacing:-.02em;font-size:1.02rem;font-weight:800;line-height:1.1}.station-detail{color:var(--text-faint);text-transform:uppercase;letter-spacing:.14em;margin-top:.1rem;font-size:.62rem;font-weight:700}.station-best{margin:auto 0;padding:.5rem 0}.station-time{letter-spacing:-.045em;color:var(--accent);font-size:3rem;font-weight:900;line-height:1}.station-holder{white-space:nowrap;text-overflow:ellipsis;margin-top:.22rem;font-size:1rem;font-weight:700;overflow:hidden}.station-runners{border-top:1px solid var(--line);flex-direction:column;gap:.15rem;margin-top:0;padding-top:.35rem;display:flex}.station-runner{color:var(--text-faint);justify-content:space-between;gap:.5rem;font-size:.72rem;font-weight:600;display:flex}.station-empty{color:var(--text-faint);text-transform:uppercase;letter-spacing:.12em;margin-top:auto;font-size:.85rem;font-weight:700}.course{flex-direction:column;gap:.35rem;height:100%;display:flex}.course-row{background:var(--surface);border-radius:var(--radius);flex:1;grid-template-columns:2.4rem 1fr 4.5rem;align-items:center;gap:.8rem;min-height:0;padding:.3rem .85rem;display:grid}.course-row.station{background:var(--surface-2)}.course-idx{color:var(--text-faint);font-size:.78rem;font-weight:800}.course-label{letter-spacing:-.015em;align-items:center;gap:.55rem;font-size:1.05rem;font-weight:700;display:flex}.course-kind{letter-spacing:.14em;text-transform:uppercase;border:1px solid var(--line-strong);color:var(--text-faint);border-radius:3px;padding:.08rem .34rem;font-size:.58rem;font-weight:800}.course-kind.RUN{color:var(--cool);border-color:#3ce0f04d}.course-kind.STATION{color:var(--accent);border-color:#dcff4f4d}.course-bar{background:#ffffff12;border-radius:4px;flex:1;height:.75rem;margin-left:.6rem;overflow:hidden}.course-fill{background:var(--cool);border-radius:4px;height:100%;transition:width .4s}.course-count{text-align:right;letter-spacing:-.03em;font-size:1.3rem;font-weight:800}.course-count.zero{color:var(--text-faint)}.feed{border-left:1px solid var(--line);background:linear-gradient(#ffffff05,#0000);flex-direction:column;min-height:0;padding:1.1rem 1rem .8rem;display:flex}.feed-head{justify-content:space-between;align-items:center;margin-bottom:.7rem;display:flex}.feed-title{text-transform:uppercase;letter-spacing:.2em;color:var(--text-dim);font-size:.78rem;font-weight:800}.live-dot{background:var(--hot);border-radius:50%;width:.5rem;height:.5rem;animation:1.4s infinite pulse}.feed-list{flex-direction:column;flex:1;gap:.4rem;min-height:0;display:flex;overflow:hidden}.feed-item{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);grid-template-columns:1fr auto;align-items:baseline;gap:.2rem .6rem;padding:.5rem .7rem;display:grid}.feed-name{letter-spacing:-.02em;white-space:nowrap;text-overflow:ellipsis;font-size:1.02rem;font-weight:700;overflow:hidden}.feed-split{color:var(--accent);letter-spacing:-.03em;font-size:1.05rem;font-weight:800}.feed-seg{color:var(--text-faint);text-transform:uppercase;letter-spacing:.1em;white-space:nowrap;text-overflow:ellipsis;grid-column:1/2;font-size:.68rem;font-weight:700;overflow:hidden}.feed-pos{color:var(--text-faint);text-align:right;letter-spacing:.06em;grid-column:2/3;font-size:.66rem;font-weight:700}.feed-item.finish{background:linear-gradient(90deg, #dcff4f24, var(--surface));border-color:#dcff4f73}.est{color:var(--warm);margin-left:.25rem;font-size:.62rem;font-weight:800}.with-record{padding-bottom:3.9rem;transition:padding-bottom .22s}.record-flash{background:linear-gradient(90deg, var(--hot), #ff8a3d);color:#12060a;border-radius:var(--radius-lg);z-index:20;align-items:center;gap:1rem;padding:.75rem 1.2rem;display:flex;position:absolute;bottom:1.1rem;left:1.4rem;right:1.4rem;box-shadow:0 18px 50px #ff4d3d59}.record-flash .rf-tag{letter-spacing:.22em;text-transform:uppercase;white-space:nowrap;background:#00000047;border-radius:5px;padding:.24rem .55rem;font-size:.7rem;font-weight:900}.record-flash .rf-main{letter-spacing:-.02em;white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:1.35rem;font-weight:900;overflow:hidden}.record-flash .rf-time{letter-spacing:-.04em;font-size:1.7rem;font-weight:900}.offline-banner{color:#ffb3ab;letter-spacing:.14em;text-transform:uppercase;z-index:25;background:#ff4d3d24;border:1px solid #ff4d3d73;border-radius:999px;padding:.3rem .85rem;font-size:.68rem;font-weight:800;position:absolute;top:1.1rem;right:1.4rem}.empty-state{height:100%;color:var(--text-faint);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:.7rem;display:flex}.empty-state h2{color:var(--text-dim);letter-spacing:-.02em;margin:0;font-size:1.6rem;font-weight:800}.empty-state p{max-width:30rem;margin:0;font-size:.95rem;line-height:1.5}.empty-state code{font-family:var(--mono);background:var(--surface);color:var(--accent);border-radius:4px;padding:.15rem .4rem}.app{grid-template-rows:auto 1fr;height:100vh;font-size:15px;display:grid;overflow:hidden}.nav{border-bottom:1px solid var(--line);background:var(--bg-2);align-items:center;gap:1.2rem;padding:.7rem 1.3rem;display:flex}.nav .brand-mark{font-size:1.15rem}.nav a{color:var(--text-dim);text-transform:uppercase;letter-spacing:.12em;border-radius:6px;padding:.35rem .7rem;font-size:.78rem;font-weight:700;text-decoration:none}.nav a:hover{color:var(--text);background:var(--surface)}.nav a.active{color:var(--accent-ink);background:var(--accent)}.nav-spacer{flex:1}.page{padding:1.3rem;overflow:auto}.page h2{letter-spacing:-.02em;margin:0 0 .2rem;font-size:1.35rem}.page .sub{color:var(--text-faint);margin:0 0 1.1rem;font-size:.82rem}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);margin-bottom:1rem;padding:1rem 1.1rem}.panel h3{text-transform:uppercase;letter-spacing:.18em;color:var(--text-faint);margin:0 0 .8rem;font-size:.72rem;font-weight:800}.row{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}button,.btn{background:var(--surface-2);color:var(--text);border:1px solid var(--line-strong);cursor:pointer;letter-spacing:.02em;border-radius:7px;padding:.45rem .85rem;font-family:inherit;font-size:.8rem;font-weight:700}button:hover{border-color:var(--text-faint)}button.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}button.danger{color:#ffb3ab;background:#ff4d3d24;border-color:#ff4d3d80}button:disabled{opacity:.45;cursor:not-allowed}input,select{background:var(--bg);color:var(--text);border:1px solid var(--line-strong);border-radius:7px;padding:.45rem .6rem;font-family:inherit;font-size:.8rem}input:focus,select:focus{outline-offset:1px;outline:2px solid #dcff4f66}table{border-collapse:collapse;width:100%;font-size:.82rem}th{text-align:left;text-transform:uppercase;letter-spacing:.14em;color:var(--text-faint);border-bottom:1px solid var(--line);background:var(--surface);padding:.4rem .55rem;font-size:.64rem;font-weight:800;position:sticky;top:0}td{border-bottom:1px solid #ffffff0b;padding:.4rem .55rem}tr:hover td{background:#ffffff06}td.r,th.r{text-align:right}.kpis{grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:.7rem;display:grid}.kpi{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:.7rem .85rem}.kpi-v{letter-spacing:-.03em;font-size:1.55rem;font-weight:800;line-height:1}.kpi-l{text-transform:uppercase;letter-spacing:.14em;color:var(--text-faint);margin-top:.3rem;font-size:.6rem;font-weight:800}.tag{letter-spacing:.1em;text-transform:uppercase;border-radius:4px;padding:.1rem .4rem;font-size:.6rem;font-weight:800;display:inline-block}.tag.ACCEPTED,.tag.FINISHED{color:var(--good);background:#4ade8026}.tag.DEBOUNCED,.tag.REGISTERED{color:var(--warm);background:#ffb02026}.tag.UNKNOWN_TAG,.tag.DNF,.tag.DNS{color:#ff9186;background:#ff4d3d26}.tag.MANUAL{color:var(--doubles);background:#c084fc26}.tag.RACING{color:var(--cool);background:#3ce0f026}.tag.EXTRA{color:var(--text-dim);background:#ffffff14}.split-bar{background:#ffffff14;border-radius:3px;min-width:60px;height:.55rem;overflow:hidden}.split-fill{background:var(--cool);height:100%}.split-fill.station{background:var(--accent)}.two-col{grid-template-columns:1.4fr 1fr;align-items:start;gap:1rem;display:grid}@media (width<=1000px){.two-col{grid-template-columns:1fr}}.notice{border-radius:var(--radius);border:1px solid var(--line-strong);background:var(--surface-2);margin-bottom:.8rem;padding:.55rem .8rem;font-size:.8rem}.notice.ok{color:var(--good);border-color:#4ade8066}.notice.err{color:#ff9186;border-color:#ff4d3d66}@keyframes fadeUp{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}.fade-up{animation:.32s cubic-bezier(.22,1,.36,1) both fadeUp}@media (prefers-reduced-motion:reduce){.fade-up{animation:none}}.stage-slide{animation:.3s cubic-bezier(.22,1,.36,1) both slideIn;position:absolute;inset:0}@keyframes slideIn{0%{opacity:0;transform:translate(26px)}to{opacity:1;transform:none}}.drop-in{animation:.28s cubic-bezier(.22,1,.36,1) both dropIn}@keyframes dropIn{0%{opacity:0;transform:translateY(-18px)scale(.98)}to{opacity:1;transform:none}}.rise-in{animation:.32s cubic-bezier(.22,1,.36,1) both riseIn}@keyframes riseIn{0%{opacity:0;transform:translateY(38px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.stage-slide,.drop-in,.rise-in{animation:none}}.stage-panes{gap:1rem;display:grid}.stage-panes.panes-1{grid-template-columns:1fr}.stage-panes.panes-2{grid-template-columns:1fr 1fr}.pane{flex-direction:column;min-width:0;min-height:0;display:flex}.pane-head{border-bottom:2px solid var(--accent);justify-content:space-between;align-items:baseline;gap:.6rem;margin-bottom:.5rem;padding-bottom:.45rem;display:flex}.pane-title{letter-spacing:-.03em;white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:1.25rem;font-weight:900;line-height:1;overflow:hidden}.pane-sub{text-transform:uppercase;letter-spacing:.14em;color:var(--text-faint);white-space:nowrap;font-size:.62rem;font-weight:700}.pane-body{flex-direction:column;flex:1;min-height:0;display:flex}.pane-body>*{flex:1;min-height:0}.stage-head.split{justify-content:flex-end;margin-bottom:.4rem}.panes-2 .board-row{grid-template-columns:2.3rem 3.6rem 1fr 5.6rem;gap:.55rem;padding:.26rem .7rem}.panes-2 .board-row>:nth-child(4),.panes-2 .board-row>:nth-child(6){display:none}.panes-2 .rank{font-size:1.2rem}.panes-2 .bib{font-size:.8rem}.panes-2 .who-name{font-size:1.05rem}.panes-2 .who-sub{font-size:.6rem}.panes-2 .time{font-size:1.2rem}.panes-2 .station-grid{grid-template-rows:repeat(4,1fr);grid-template-columns:repeat(2,1fr);gap:.5rem}.panes-2 .station-card{padding:.55rem .7rem}.panes-2 .station-num{font-size:1.7rem;right:.5rem}.panes-2 .station-name{font-size:.9rem}.panes-2 .station-detail{font-size:.56rem}.panes-2 .station-time{font-size:1.9rem}.panes-2 .station-holder{font-size:.82rem}.panes-2 .station-runners{display:none}.panes-2 .course-row{grid-template-columns:1.9rem 1fr 3rem;padding:.2rem .6rem}.panes-2 .course-bar{display:none}.panes-2 .course-label{font-size:.92rem}.panes-2 .course-count{font-size:1.05rem}.panes-2 .empty-state h2{font-size:1.1rem}.panes-2 .empty-state p{font-size:.8rem}.snd{text-transform:uppercase;letter-spacing:.14em;white-space:nowrap;border:1px solid var(--line-strong);color:var(--text-faint);border-radius:999px;padding:.2rem .5rem;font-size:.62rem;font-weight:800}.snd.on{color:var(--text-dim)}.snd.off{color:var(--text-faint);opacity:.55}.snd.blocked{color:var(--warm);border-color:#ffb02073}tr.derived td{color:var(--text-dim);background:#ffffff04}tr.derived td:first-child{color:var(--text-faint)}tr.derived td:nth-child(2){padding-left:1.4rem}
