h1,h2,h3,p{margin:0}#app{flex-direction:column;height:100dvh;min-height:580px;display:flex;overflow:hidden}.header-shell{z-index:6;flex:none;position:relative}.header-toggle{background:var(--background);width:44px;height:30px;min-height:30px;color:var(--muted);border-top:0;border-radius:0 0 6px 6px;position:absolute;top:100%;left:50%;transform:translate(-50%);box-shadow:0 3px 8px #0003}.header-toggle[aria-expanded=false]{color:var(--gold)}.header-toggle[aria-expanded=false] .ui-icon{transform:rotate(180deg)}.topbar{border-bottom:1px solid var(--border);background:var(--background);z-index:3;flex:none;align-items:center;gap:28px;height:88px;padding:0 26px;display:flex}.topbar .site-nav{margin-right:auto}.session{letter-spacing:.1em;flex-direction:column;align-items:flex-start;gap:7px;font-size:10px;display:flex}.session-status{color:var(--foreground);white-space:nowrap;align-items:center;gap:7px;display:flex}.status-dot,.small-indicator{background:var(--green);border-radius:50%;flex:none;width:6px;height:6px;display:inline-block}.topbar[data-state=paused] .status-dot{background:var(--gold)}.topbar[data-state=loading] .status-dot{background:var(--muted)}.topbar[data-state=error] .status-dot{background:var(--red)}.topbar[data-state=frozen] .status-dot{background:var(--ice)}.topbar[data-state=frozen] .session-status{color:var(--ice)}.feed-badge{border:1px solid var(--border-light);color:var(--muted);font:9px var(--font-mono);letter-spacing:.04em;white-space:nowrap;border-radius:3px;padding:2px 6px;display:inline-block}.playback{align-items:center;gap:8px;display:flex}.clock{text-align:right;padding-right:12px;line-height:1.1}.clock>span{font:25px var(--font-mono);font-variant-numeric:tabular-nums}.clock small{color:var(--muted);letter-spacing:.13em;margin-top:5px;font-size:9px;display:block}.clock b{font:9px var(--font-mono);color:var(--foreground)}.playback .primary{min-width:100px}#play-icon{width:14px;font-size:14px}.workspace{flex:1;grid-template-columns:minmax(0,1fr) 360px;min-height:0;display:grid}.city-panel{background:#070e19;min-width:0;position:relative;overflow:hidden}#viewport{touch-action:none;position:absolute;inset:0}#viewport canvas{outline:none;width:100%;height:100%;display:block}.sidebar{border-left:1px solid var(--border);background:var(--background);flex-direction:column;gap:16px;padding:16px;display:flex;overflow:auto}.sidebar>section{flex:none;min-width:0}.dashboard-details{gap:inherit;flex-direction:column;display:flex}.dashboard-details>section{flex:none;min-width:0}#app.touring{height:100dvh;min-height:0;overflow:hidden}.touring .sidebar{min-height:0;overflow:hidden}.touring .dashboard-details{min-height:0;overflow:auto}.touring .tour-summary{max-height:100%;overflow:auto}.tour-summary-body{padding:16px 14px}.tour-context{justify-content:space-between;align-items:center;gap:8px;margin-bottom:18px;display:flex}#tour-phase{color:var(--cyan);font:9px var(--font-mono);letter-spacing:.06em}#tour-identity{align-items:flex-start;gap:12px;display:flex}#tour-identity>div{min-width:0}#tour-identity .team-flag{width:36px;height:27px;margin-top:4px}#tour-identity h3{overflow-wrap:anywhere;font-size:21px;line-height:1.25}#tour-identity p{color:var(--muted);letter-spacing:.06em;margin-top:8px;font-size:10px}#tour-stats{border-top:1px solid var(--border);grid-template-columns:repeat(6,minmax(0,1fr));gap:18px 10px;margin:20px 0 0;padding-top:16px;display:grid}#tour-stats>div{grid-column:span 2;min-width:0;container-type:inline-size}#tour-stats>div:nth-child(n+4){grid-column:span 3}#tour-stats dt{color:var(--muted);letter-spacing:.06em;text-transform:uppercase;font-size:9px}#tour-stats dd{font:600 clamp(10px,calc(160cqi / var(--stat-length)),20px) var(--font-mono);overflow-wrap:anywhere;margin:4px 0 0}#tour-stats>div:nth-child(2) dd{color:var(--gold)}#tour-stats>div:nth-child(n+4) dd{font-size:15px}.section-title{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:10px;min-height:44px;padding:12px 14px;display:flex}.section-title h2{letter-spacing:.08em;text-transform:uppercase;align-items:center;gap:8px;font-size:12px;font-weight:600;display:flex}.section-title h2:before{content:"";background:var(--gold);border-radius:1px;flex:none;width:6px;height:6px}.section-caption{color:var(--muted);padding:12px 14px;font-size:11px;line-height:1.5}.count{border:1px solid var(--border-light);color:var(--muted);font:10px var(--font-mono);border-radius:3px;padding:2px 6px}.table-labels{color:var(--muted);letter-spacing:.12em;justify-content:space-between;padding:0 14px 9px;font-size:9px;display:flex}#teams{padding:0 7px 7px}.team-entry+.team-entry{border-top:1px solid var(--border)}.team-row{text-align:left;background:0 0;border:1px solid #0000;border-radius:3px;align-items:center;gap:9px;width:100%;min-height:46px;padding:7px;transition:background .15s,border-color .15s;display:flex}.team-row:hover:not(:disabled){background:var(--elevated)}.team-row[aria-pressed=true]{border-color:var(--cyan);background:#00b4d80d}.team-row:focus-visible{outline-offset:-2px}.rank{width:27px;height:27px;color:var(--muted);font:11px var(--font-mono);border:1px solid #0000;border-radius:3px;flex:none;justify-content:center;align-items:center;display:inline-flex}.team-row[data-rank="1"] .rank{color:var(--gold);background:#f5c5181a;border-color:#f5c51899}.team-row[data-rank="2"] .rank{color:var(--silver);background:#c3c9d41a;border-color:#c3c9d466}.team-row[data-rank="3"] .rank{color:var(--bronze);background:#cd7f4d1a;border-color:#cd7f4d80}.team-flag{object-fit:contain;border-radius:2px;flex:none;width:28px;height:21px;display:block;box-shadow:0 0 0 1px #ffffff24}.team-name{letter-spacing:.025em;overflow-wrap:anywhere;flex:1;min-width:0;font-size:12px;font-weight:600}.team-score{flex-direction:column;flex:none;align-items:flex-end;gap:5px;min-width:58px;display:flex}.score{color:var(--foreground);font:600 12px var(--font-mono);font-variant-numeric:tabular-nums}.team-row[data-rank="1"] .score{color:var(--gold)}.score-track{background:var(--border-light);border-radius:2px;width:100%;height:3px;overflow:hidden}.score-fill{width:var(--score-share,0%);background:var(--cyan);border-radius:inherit;height:100%;display:block}.team-row[data-rank="1"] .score-fill{background:var(--gold)}.team-row:disabled{opacity:1;cursor:default}.activity .section-title h2:before{background:var(--cyan)}.small-indicator{background:var(--cyan);width:5px;height:5px}#events{padding:0 14px}.event{border-bottom:1px solid var(--border);grid-template-columns:20px minmax(0,1fr) auto;align-items:start;gap:8px;padding:13px 0;display:grid}.event:last-child{border:0}.event-icon{height:20px;color:var(--green);background:#3ccf3c0d;border:1px solid #3ccf3c4d;border-radius:3px;justify-content:center;align-items:center;font-size:12px;display:flex}.event.blocked .event-icon{color:var(--red);background:#e639460d;border-color:#e639464d}.event-route{overflow-wrap:anywhere;font-size:11px;font-weight:600;line-height:1.6}.event-route .arrow{color:var(--muted);padding:0 4px}.event-detail{color:var(--muted);letter-spacing:.05em;flex-wrap:wrap;align-items:center;gap:6px;margin-top:4px;font-size:9px;display:flex}.event-outcome{color:var(--green);letter-spacing:.03em;font-size:8px}.blocked .event-outcome{color:#ff7c85}.event time{font:9px var(--font-mono);color:var(--muted);padding-top:4px}.empty{color:var(--muted);padding:16px 0;font-size:12px;line-height:1.6}.inspection .section-title h2:before{background:var(--cyan)}.inspection .section-title .icon-button{background:0 0;width:26px;height:26px;min-height:26px;margin:-4px 0}.inspection-body{padding:15px 14px}#selected-id{color:var(--cyan);font:9px var(--font-mono);letter-spacing:.08em;margin-bottom:12px}#selected-team{align-items:center;gap:10px;display:flex}#selected-team>div{min-width:0}#selected-team .team-flag{width:36px;height:27px}#selected-team h2{overflow-wrap:anywhere;font-size:19px}#selected-team p{color:var(--muted);text-transform:capitalize;margin-top:4px;font-size:11px}.selected-stats{border-top:1px solid var(--border);grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:18px;padding-top:15px;display:grid}.selected-stats strong{font:600 19px var(--font-mono);overflow-wrap:anywhere;display:block}.selected-stats>div:nth-child(2) strong{color:var(--gold)}.selected-stats span{color:var(--muted);font:9px var(--font-sans);letter-spacing:.07em}.selected-stats strong span{font:10px var(--font-mono);letter-spacing:0}body.inspecting .team-row{min-height:39px;padding-top:5px;padding-bottom:5px}.frozen .standings{border-color:#bfe9ff66;box-shadow:0 0 24px #bfe9ff0a,inset 0 0 40px #bfe9ff05}.frozen .standings:before,.frozen .standings:after{border-color:var(--ice)}.frozen .standings .section-title h2,.frozen .team-row[data-rank="1"] .score{color:var(--ice)}.frozen .standings .section-title h2:before,.frozen .team-row .score-fill{background:var(--ice)}.frozen .team-row .rank{color:var(--ice);background:#bfe9ff0d;border-color:#bfe9ff4d}.frozen .team-row{cursor:default}#freeze-note{border:1px solid #bfe9ff4d;border-left:2px solid var(--ice);color:var(--ice);background:#bfe9ff0a;border-radius:3px;margin:0 14px 14px;padding:10px 12px;font-size:11px}.statusbar{border-top:1px solid var(--border);background:var(--background);height:36px;color:var(--muted);flex:none;justify-content:space-between;align-items:center;gap:16px;padding:0 22px;font-size:10px;display:flex}.control-hint{letter-spacing:.07em;font-size:9px}.footer-links{align-items:center;gap:20px;display:flex}.footer-links a,.statusbar button{color:var(--muted);font-size:10px;text-decoration:none}.statusbar button{background:0 0;border:0;padding:4px 0}.footer-links a:hover,.statusbar button:hover{color:var(--gold)}.canvas-fullscreen{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#1a1d23eb;position:absolute;top:22px;right:22px;box-shadow:0 2px 8px #0003}.header-actions{align-items:center;gap:8px;display:flex}.header-actions .button{white-space:nowrap;flex:none}.header-tour{min-width:120px;color:var(--cyan);border-color:#00b4d880}.header-tour[aria-pressed=true]{color:var(--gold);border-color:var(--gold)}.header-freeze{min-width:156px;color:var(--ice);border-color:#bfe9ff80}.header-freeze[aria-pressed=true]{opacity:1;color:var(--ice);border-color:var(--ice);background:#bfe9ff0d}.canvas-fullscreen[aria-pressed=true]{color:var(--gold);border-color:var(--gold)}.loading-screen{z-index:5;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);text-align:center;background:#1a1d23f5;flex-direction:column;justify-content:center;align-items:center;padding:30px;display:flex;position:absolute;inset:0}.loading-mark{flex-direction:column;align-items:center;gap:18px;margin-bottom:24px;display:flex}.loading-mark img{width:105px;height:auto}.loading-screen h2{font-size:27px;font-weight:600}.loading-screen p{color:var(--muted);max-width:440px;margin-top:12px;font-size:14px;line-height:1.6}.progress-track{background:var(--border-light);width:min(260px,100%);height:3px;margin-top:27px;overflow:hidden}#progress{background:var(--gold);width:2%;height:100%;transition:width .3s}.loading-footnote{color:var(--muted);margin-top:15px;font-size:11px}.error .progress-track{display:none}.retry{margin-top:22px}dialog{color:var(--foreground);background:var(--surface);border:1px solid var(--border-light);border-top:2px solid var(--gold);border-radius:5px;width:min(610px,100% - 32px);max-height:85dvh;padding:32px;box-shadow:0 24px 100px #0008}dialog::backdrop{-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px);background:#0b0d12bb}dialog h2{margin:13px 0;font-size:27px;font-weight:600}dialog h3{color:var(--gold);margin:24px 0 8px;font-size:14px}dialog p{color:#bbc0c8;margin:12px 0;font-size:14px;line-height:1.65}.dialog-close{background:0 0;border:0;width:30px;height:30px;min-height:30px;position:absolute;top:10px;right:10px}.credit-link{font-size:12px}body.canvas-only{overflow:hidden}#app.canvas-only{z-index:10;height:100dvh;min-height:0;position:fixed;inset:0}#app.canvas-only .sidebar,#app.canvas-only .statusbar{display:none}#app.canvas-only .workspace{flex:1;display:flex}#app.canvas-only .city-panel{width:100%;height:100%;min-height:0}#app.canvas-only.touring .workspace{display:grid}#app.canvas-only.touring .sidebar{display:flex}@media (min-width:1700px){.workspace{grid-template-columns:minmax(0,1fr) 400px}.sidebar{gap:18px;padding:20px}.topbar{gap:34px;height:92px;padding:0 30px}.team-row{min-height:46px}.team-name{font-size:13px}.score{font-size:14px}.event{padding:11px 0}.event-route{font-size:12px}.event-detail{font-size:10px}}@media (max-width:1280px){.topbar{gap:20px;padding:0 20px}.topbar .site-nav{display:none}.topbar .brand{margin-right:auto}.brand-name{font-size:19px}.workspace{grid-template-columns:minmax(0,1fr) 330px}.sidebar{gap:12px;padding:12px}.team-row{gap:7px}.team-name{font-size:11px}}@media (max-width:1100px){.topbar{grid-template-columns:minmax(0,1fr) auto;gap:10px 16px;height:auto;min-height:108px;padding:12px 20px;display:grid}.topbar .brand{grid-area:1/1}.playback{grid-area:1/2}.session{flex-direction:row;grid-area:2/1;align-items:center}.header-actions{grid-area:2/2;justify-self:end}.header-actions .button{min-height:34px;padding:7px 12px;font-size:11px}}@media (max-width:740px){#app{height:auto;min-height:100dvh;overflow:visible}.header-shell{position:sticky;top:0}.topbar{gap:10px 12px;padding:14px 16px 12px}.brand{gap:8px}.brand img{width:36px;height:33px}.brand-name{letter-spacing:0;font-size:15px}.brand small{letter-spacing:.07em;margin-top:5px;font-size:7px}.session{letter-spacing:.07em;flex-direction:row;grid-column:1/-1;align-items:center;gap:8px;font-size:9px}.header-actions{grid-area:3/1/auto/-1;grid-template-columns:repeat(2,minmax(0,1fr));justify-self:stretch;display:grid}.header-actions .button{min-width:0}.feed-badge{font-size:8px}.playback{gap:5px}.clock{padding-right:4px}.clock>span{font-size:18px}.clock small,.clock b{font-size:8px}.playback .primary{width:36px;min-width:36px;padding:0}.playback #play-label{display:none}.playback .icon-button{width:32px}.workspace{flex-direction:column;flex:initial;min-height:0;display:flex}.city-panel{height:60dvh;min-height:370px}.sidebar{border-left:0;border-top:1px solid var(--border);gap:16px;padding:16px;overflow:visible}.team-row,body.inspecting .team-row{gap:10px;min-height:48px}.team-name,.score{font-size:13px}.event-route{font-size:12px}.event-detail{font-size:10px}.event{padding:14px 0}.event time{font-size:10px}.statusbar{justify-content:center;height:auto;min-height:44px;padding:10px 16px}.control-hint{display:none}.canvas-fullscreen{top:14px;right:14px}dialog{padding:28px 22px}.loading-screen h2{font-size:22px}.loading-screen p{font-size:12px}}@media (max-width:380px){.topbar{gap:10px;padding-left:12px;padding-right:12px}.topbar .brand img{display:none}.brand-name{font-size:14px}}@media (max-width:740px),(max-height:620px){.tour-summary .section-title{min-height:32px;padding:8px 12px}.tour-summary-body{padding:10px 12px}.tour-context{margin-bottom:10px}#tour-identity{gap:8px}#tour-identity .team-flag{width:28px;height:21px;margin-top:1px}#tour-identity h3{font-size:16px}#tour-identity p{margin-top:4px;font-size:9px}#tour-stats{gap:8px;margin-top:10px;padding-top:10px}#tour-stats dd{font-size:clamp(10px,calc(160cqi / var(--stat-length)),16px);margin-top:2px}#tour-stats>div:nth-child(n+4){align-items:baseline;gap:6px;display:flex}#tour-stats>div:nth-child(n+4) dd{font-size:12px}}@media (max-width:740px){#app.touring .workspace,#app.canvas-only.touring .workspace{flex-direction:column;flex:1;min-height:0;display:flex}#app.touring .city-panel{flex:1;height:auto;min-height:0}#app.touring .sidebar{overscroll-behavior:contain;background:var(--background);flex:0 0 50%;padding:10px 12px;display:flex;overflow:auto}#app.touring .dashboard-details{flex:none;overflow:visible}#app.touring .tour-summary{max-height:none;overflow:visible}}@media (max-height:620px) and (min-width:741px){.touring .sidebar{overscroll-behavior:contain;overflow:auto}.touring .dashboard-details{flex:none;overflow:visible}.touring .tour-summary{max-height:none;overflow:visible}.tour-summary .section-title{min-height:28px;padding-block:6px}.tour-summary-body{padding-block:8px}.tour-context{margin-bottom:8px}#tour-identity h3{font-size:14px}#tour-stats{gap:6px;margin-top:8px;padding-top:8px}}
