:root{color-scheme:dark;font-family:Avenir Next,Trebuchet MS,system-ui,sans-serif;background:#111313;color:#f4f1e8;--panel: #181b1a;--panel-strong: #202523;--line: #41443e;--muted: #a9ada3;--danger: #ff5b79;--ok: #21d4a8;--warning: #f5c542}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:linear-gradient(90deg,rgba(255,255,255,.025) 1px,transparent 1px) 0 0 / 36px 36px,radial-gradient(circle at 50% 0%,rgba(245,197,66,.08),transparent 32rem),#101211}button,a{font:inherit}button{min-height:44px}.screen-page{min-height:100vh;padding:22px}.screen-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:16px}.eyebrow,.status-label{margin:0 0 5px;color:var(--warning);font-size:.76rem;font-weight:800;letter-spacing:0;text-transform:uppercase}h1{margin:0;max-width:900px;font-size:clamp(2.1rem,5vw,5.7rem);line-height:.92;letter-spacing:0}.connection-pill{display:inline-flex;align-items:center;justify-content:center;min-width:126px;border:1px solid var(--line);padding:9px 12px;color:var(--muted);font-size:.78rem;font-weight:800;text-transform:uppercase;background:#151716}.connection-pill.online{border-color:#21d4a8b3;color:var(--ok)}.connection-pill.offline{border-color:#ff5b79b3;color:var(--danger)}.screen-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,380px);gap:16px;min-height:calc(100vh - 150px)}.race-stage,.control-column,.join-panel,.event-log,.race-controls{border:1px solid var(--line);background:linear-gradient(180deg,#ffffff09,#ffffff03),var(--panel);box-shadow:inset 0 1px #ffffff0f}.race-stage{display:flex;flex-direction:column;min-width:0}.race-topline{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;border-bottom:1px solid var(--line);background:var(--line)}.race-topline>div{min-width:0;padding:14px;background:#171a19}.race-topline strong{display:block;overflow-wrap:anywhere;font-size:clamp(1rem,2vw,1.8rem);text-transform:uppercase}.machine{position:relative;display:grid;gap:12px;padding:18px;flex:1}.finish-column{position:absolute;top:18px;right:28px;bottom:18px;z-index:0;display:flex;flex-direction:column;align-items:center;justify-content:space-between;width:72px;border:1px dashed rgba(244,241,232,.2);color:#f4f1e875;text-transform:uppercase;font-size:.72rem;pointer-events:none}.finish-column strong{writing-mode:vertical-rl;padding-bottom:12px}.machine-lane{position:relative;z-index:1;display:grid;grid-template-columns:minmax(150px,220px) minmax(0,1fr) minmax(120px,190px);align-items:center;min-height:128px;border:1px solid color-mix(in srgb,var(--lane-color) 35%,var(--line));background:linear-gradient(90deg,color-mix(in srgb,var(--lane-color) 14%,transparent),transparent 42%),#141615;overflow:hidden}.machine-lane.winner{outline:3px solid var(--lane-color);box-shadow:0 0 34px color-mix(in srgb,var(--lane-color) 26%,transparent)}.machine-lane.failed,.machine-lane.running{animation:machinePulse 1.1s ease-in-out infinite alternate}.lane-meta{padding:16px;min-width:0}.lane-meta strong{display:block;margin-bottom:10px;color:var(--lane-accent);font-size:clamp(1.05rem,1.7vw,1.55rem)}.lane-meta span,.event-chip,.progress-readout{color:var(--muted);font-size:.83rem;overflow-wrap:anywhere;text-transform:uppercase}.track-shell{position:relative;min-width:0;padding:10px 0}.track-svg{display:block;width:100%;height:108px}.track-rail,.track-energy{fill:none;stroke-width:8;stroke-linecap:round}.track-rail{stroke:#f4f1e833}.track-energy{stroke:var(--lane-color);stroke-dasharray:1000;transition:stroke-dashoffset .45s ease;filter:drop-shadow(0 0 8px var(--lane-color))}.marble{fill:var(--lane-accent);stroke:#111;stroke-width:5;transition:cx .45s ease,cy .45s ease}.gate{fill:#111313;stroke:var(--lane-color);stroke-width:4}.bell{fill:color-mix(in srgb,var(--lane-color) 26%,#111313);stroke:var(--lane-accent);stroke-width:5}.progress-readout{position:absolute;right:12px;bottom:0;display:flex;gap:10px}.event-chip{margin-right:14px;border-left:3px solid var(--lane-color);padding:10px 12px;background:#00000038}.control-column{display:grid;grid-template-rows:auto auto minmax(0,1fr);gap:12px;min-height:0;border:none;background:transparent;box-shadow:none}.race-controls{display:grid;grid-template-columns:1fr;gap:10px;padding:12px}.control-button,.phone-test,.lane-choice{border:1px solid var(--line);color:#f4f1e8;font-weight:900;text-transform:uppercase;background:#181b1a;cursor:pointer}.control-button:hover,.phone-test:hover,.lane-choice:hover{border-color:var(--warning)}.control-button:disabled{color:#74786f;cursor:not-allowed}.control-button.primary,.phone-test{border-color:var(--ok);background:linear-gradient(180deg,#21d4a838,#21d4a814)}.control-button.danger{border-color:#ff5b798c}.join-panel,.lamp-panel,.event-log{padding:12px}.lamp-panel{border:1px solid var(--line);background:linear-gradient(180deg,#f5c54214,#ffffff03),var(--panel)}.lamp-panel p{margin:10px 0 0;color:var(--muted);font-size:.86rem;line-height:1.35}.lamp-bulb{width:76px;aspect-ratio:1;margin:2px auto 8px;border:2px solid rgba(245,197,66,.55);border-radius:50%;background:radial-gradient(circle at 50% 42%,rgba(245,197,66,.22),rgba(245,197,66,.04) 55%,transparent 58%);box-shadow:inset 0 -12px 18px #00000059}.lamp-panel.fired .lamp-bulb{background:radial-gradient(circle at 50% 40%,#fff8c9 0,#fff8c9 22%,#f5c542 40%,#f5c54233 68%);box-shadow:0 0 34px #f5c54294,inset 0 -8px 16px #ffffff47}.panel-header{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px;color:var(--muted);font-size:.82rem;font-weight:900;text-transform:uppercase}.panel-header strong{color:var(--warning);overflow-wrap:anywhere}.qr-code,.qr-placeholder{display:block;width:min(100%,220px);aspect-ratio:1;margin:0 auto 12px;background:#f8fbff}.phone-link{display:block;color:#f4f1e8;font-size:.78rem;overflow-wrap:anywhere}.event-log{min-height:0;overflow:hidden}.log-list{display:grid;gap:7px;max-height:100%;overflow:auto}.log-row{display:grid;grid-template-columns:52px minmax(120px,.75fr) minmax(0,1fr);gap:8px;align-items:center;border-left:3px solid var(--line);padding:8px;background:#ffffff09;font-size:.76rem}.log-row.success{border-left-color:var(--ok)}.log-row.warning{border-left-color:var(--warning)}.log-row.error{border-left-color:var(--danger)}.log-id{color:var(--warning);font-weight:900}.log-type{color:#f4f1e8;font-weight:800;overflow-wrap:anywhere}.log-label{color:var(--muted);overflow-wrap:anywhere}.phone-page{--lane-color: #21d4a8;--lane-accent: #a4ffe9;min-height:100vh;padding:18px;background:linear-gradient(180deg,color-mix(in srgb,var(--lane-color) 26%,transparent),transparent 55%),#101211;transition:background .18s ease}.phone-page.pulse-1{background:linear-gradient(180deg,color-mix(in srgb,var(--lane-color) 52%,transparent),transparent 65%),#171a19}.phone-hero{display:grid;gap:16px;min-height:58vh;align-content:center}.phone-hero h1{color:var(--lane-accent);font-size:clamp(3rem,18vw,7rem)}.phone-event{margin:0;color:#f4f1e8;font-size:clamp(1.15rem,5vw,2rem);line-height:1.18}.phone-status-grid{display:grid;grid-template-columns:auto minmax(0,1fr);gap:8px 14px;border:1px solid color-mix(in srgb,var(--lane-color) 45%,var(--line));padding:12px;background:#0000003d}.phone-status-grid span{color:var(--muted);text-transform:uppercase;font-size:.78rem}.phone-status-grid strong{overflow-wrap:anywhere}.phone-test{width:100%}.lane-picker{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-bottom:14px}.lane-choice{border-color:color-mix(in srgb,var(--lane-color) 52%,var(--line));padding:10px;min-height:54px}.lane-choice.auto{grid-column:1 / -1}.lane-choice.selected{background:color-mix(in srgb,var(--lane-color) 24%,#111313)}@keyframes machinePulse{0%{box-shadow:inset 0 0 #fff0}to{box-shadow:inset 0 0 24px color-mix(in srgb,var(--lane-color) 16%,transparent)}}@media(max-width:1020px){.screen-grid,.control-column{grid-template-columns:1fr}}@media(max-width:760px){.screen-page{padding:12px}.screen-header,.race-topline{grid-template-columns:1fr;display:grid}.machine{padding:10px}.machine-lane{grid-template-columns:1fr;gap:0;min-height:190px}.event-chip{margin:0 12px 12px}.log-row{grid-template-columns:48px minmax(0,1fr)}.log-label{grid-column:1 / -1}.finish-column{display:none}}
