:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--ink:#24190f;--muted:#6f6257;--paper:#f7f1e6;--panel:#fffaf0;--line:#d6b36d;--gold:#c99120;--green:#214c38;--blue:#2a6f83;--red:#9e342a;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{min-width:320px;min-height:100vh;color:var(--ink);background:linear-gradient(90deg,#214c3814,#2a6f8314),#ead8b7;margin:0}button,input,select{font:inherit}button{cursor:pointer}.shell{width:min(1500px,100vw - 28px);margin:0 auto;padding:18px 0 32px}.topbar{justify-content:space-between;align-items:center;gap:16px;padding:14px 0 12px;display:flex}.topbar-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:flex}.eyebrow{color:var(--green);text-transform:uppercase;margin:0 0 4px;font-size:.78rem;font-weight:800}h1,h2{letter-spacing:0;margin:0}h1{font-size:clamp(1.6rem,3vw,2.7rem)}h2{align-items:center;gap:8px;font-size:1rem;display:flex}.status-pill,.tabs button,.primary,.secondary,.compact,.danger,.segmented button{border:1px solid #24190f33;justify-content:center;align-items:center;gap:8px;display:inline-flex}.status-pill{background:var(--panel);border-radius:999px;min-width:96px;padding:9px 12px;font-weight:800}.status-pill.devices{min-width:170px;color:var(--green)}.status-pill.live{color:#fff;background:var(--green)}.topbar-button{border-radius:999px;min-height:40px;padding-inline:14px}.tabs{flex-wrap:wrap;gap:8px;margin-bottom:14px;display:flex}.tabs button,.segmented button{min-height:40px;color:var(--ink);background:#fffaf0c7;border-radius:8px;padding:9px 12px}.tabs button.active,.segmented button.active{color:#fff;background:var(--green)}.notice,.empty-state,.panel{background:#fffaf0eb;border:1px solid #24190f29;border-radius:8px;box-shadow:0 14px 34px #24190f1a}.notice{color:#fff;background:var(--red);align-items:center;gap:10px;margin-bottom:12px;padding:12px;display:flex}.panel{padding:16px}.control-grid{grid-template-columns:minmax(260px,380px) 1fr;gap:16px;display:grid}.setup-stack,.setup-form,.admin-panel,.team-list{align-content:start;gap:12px;display:grid}.setup-stack{gap:18px}.join-form{border-top:1px solid #24190f29;padding-top:14px}label{gap:5px;font-weight:800;display:grid}label span{color:var(--muted);font-size:.78rem}input,select{width:100%;min-height:40px;color:var(--ink);background:#fff;border:1px solid #24190f38;border-radius:8px;padding:8px 10px}.primary,.secondary,.compact,.danger{border-radius:8px;min-height:40px;padding:8px 12px;font-weight:900}.primary{color:#fff;background:var(--green)}.secondary{color:var(--green);background:#f4e6c6}.compact{background:#f2ddac}.danger{color:#fff;background:var(--red)}button:disabled{cursor:not-allowed;opacity:.55}.event-summary{gap:12px;display:grid}.event-summary img{object-fit:contain;background:#fff;border-radius:8px;width:100%;max-height:380px}.summary-strip{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.summary-strip strong{font-size:1.05rem}.map-wrap{gap:10px;display:grid}.map-caption{color:var(--green);flex-wrap:wrap;align-items:center;gap:12px;display:flex}.map-stage{background:#f8f5eb;border:2px solid #24190f38;border-radius:8px;width:100%;min-height:68vh;position:relative;overflow:hidden}.map-stage img{width:100%;height:auto;display:block}.map-readability-layer{z-index:1;pointer-events:none;background:linear-gradient(#fffaf038,#fffaf038),radial-gradient(circle,#ffffff2e,#ffffff0a);position:absolute;inset:0}.map-marker{z-index:2;color:#fff;text-shadow:0 1px 1px #000c,0 0 4px #0000008c;border:3px solid #fff;border-radius:7px 7px 4px 4px;outline:2px solid #24190f6b;font-weight:950;line-height:1;transition:left .42s,top .42s,transform .18s;position:absolute;transform:translate(-50%,-50%);box-shadow:0 8px 18px #0000005c}.car-marker{aspect-ratio:1.38;clip-path:polygon(8% 43%,24% 20%,64% 20%,84% 43%,94% 45%,94% 76%,86% 76%,82% 88%,70% 88%,66% 76%,31% 76%,27% 88%,15% 88%,11% 76%,6% 76%,6% 45%);width:auto}.car-marker:before,.car-marker:after{content:"";background:#1c1610;border:2px solid #fff;border-radius:50%;width:24%;height:24%;position:absolute;bottom:-4px}.car-marker:before{left:14%}.car-marker:after{right:14%}.map-marker:hover{z-index:5;transform:translate(-50%,-50%)scale(1.12)}.ranking-screen{background:linear-gradient(90deg,#214c3814,#c991201f),#fffaf0f5;gap:18px;min-height:72vh;display:grid}.ranking-header{justify-content:space-between;align-items:end;gap:18px;display:flex}.ranking-header h2{font-size:clamp(1.8rem,4vw,3.6rem)}.ranking-header>span{color:var(--green);font-size:clamp(1.1rem,2vw,1.8rem);font-weight:950}.podium-grid{grid-template-columns:1.35fr 1fr 1fr;align-items:stretch;gap:14px;display:grid}.podium-card{text-align:center;background:#ffffffeb;border:2px solid #24190f24;border-radius:8px;align-content:center;justify-items:center;gap:8px;min-height:210px;padding:18px;display:grid;box-shadow:0 16px 34px #24190f1f}.podium-card.champion{background:linear-gradient(#fff4b8eb,#fffffff2),#fff;border-color:#c99120b3;min-height:300px}.podium-rank{color:var(--green);font-size:clamp(1.3rem,3vw,2.4rem);font-weight:950}.podium-team{text-shadow:0 2px #fff,0 10px 24px #24190f29;font-size:clamp(4rem,10vw,9rem);font-weight:950;line-height:.9}.podium-card:not(.champion) .podium-team{font-size:clamp(3rem,6vw,5.5rem)}.podium-card strong{font-size:clamp(1.8rem,4vw,3.4rem)}.podium-card>span:last-child{color:var(--muted);font-size:clamp(1.2rem,2.5vw,2rem);font-weight:900}.ranking-list{gap:8px;display:grid}.ranking-row{background:#ffffffd1;border:1px solid #24190f1f;border-radius:8px;grid-template-columns:90px 1.2fr 1fr 1fr;align-items:center;gap:12px;min-height:68px;padding:10px 14px;font-size:clamp(1.2rem,2.2vw,2rem);font-weight:850;display:grid}.rank-cell{color:#fff;background:var(--blue);border-radius:999px;justify-content:center;min-width:44px;padding:5px 8px;font-weight:900;display:inline-flex}.trader-layout{gap:14px;display:grid}.segmented{flex-wrap:wrap;gap:8px;display:flex}.team-row{background:#fff;border:1px solid #24190f1f;border-radius:8px;grid-template-columns:70px 70px minmax(110px,1fr) minmax(110px,1fr) minmax(110px,1fr) minmax(120px,160px) 110px;align-items:center;gap:10px;padding:10px;display:grid}.team-token{color:#fff;border-radius:50%;justify-content:center;align-items:center;width:48px;height:48px;font-weight:950;display:inline-flex}.admin-grid{grid-template-columns:minmax(260px,420px) 1fr;gap:16px;display:grid}.admin-grid.single{grid-template-columns:minmax(280px,720px)}.beacon-readout{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.beacon-readout span{background:#f4e6c6;border-radius:8px;padding:10px;font-weight:850}.calibration-panel{gap:10px;display:grid}.calibration-toolbar{grid-template-columns:minmax(180px,1fr) auto auto auto auto;align-items:end;gap:10px;display:grid}.save-status{color:var(--green);align-self:center;font-weight:900}.calibration-map{aspect-ratio:1600/1138;touch-action:none;-webkit-user-select:none;user-select:none;background:#fff;border:1px solid #24190f38;border-radius:8px;justify-self:center;width:min(100%,980px);position:relative;overflow:hidden}.calibration-map img{object-fit:fill;pointer-events:none;width:100%;height:100%;max-height:none;display:block}.calibration-overlay{z-index:1;pointer-events:none;width:100%;height:100%;display:block;position:absolute;inset:0}.cell-shape{fill:#2a6f8314;stroke:#214c3894;stroke-width:1.5px;vector-effect:non-scaling-stroke}.cell-shape.selected{fill:#9e342a14;stroke:var(--red);stroke-width:1.5px}.draft-line{fill:none;stroke:var(--red);stroke-width:1.5px;vector-effect:non-scaling-stroke}.draft-line.closed{fill:#9e342a0f}.cell-label{z-index:3;color:#fff;pointer-events:none;z-index:2;background:#24190fb3;border-radius:999px;justify-content:center;align-items:center;min-width:26px;min-height:22px;padding:3px 6px;font-size:.75rem;font-weight:950;display:inline-flex;position:absolute;transform:translate(-50%,-50%)}.cell-label.selected{background:var(--red)}.empty-state{min-height:320px;color:var(--muted);align-content:center;place-items:center;gap:10px;display:grid}@media (width<=980px){.control-grid,.admin-grid{grid-template-columns:1fr}.team-row{grid-template-columns:56px 1fr 1fr}.podium-grid,.ranking-row{grid-template-columns:1fr}.team-row label,.team-row button{grid-column:span 3}.beacon-readout{grid-template-columns:1fr}}@media (width<=680px){.shell{width:min(100vw - 16px,1500px)}.topbar{flex-direction:column;align-items:flex-start}.tabs button span{display:none}}
