:root{--bg:#0b0d16;--panel:#141829;--panel-2:#1c2138;--line:#2a3050;--text:#f2f3f8;--muted:#9aa3c7;--gold:#ffd166;--fire:#ff7a1a;--green:#2fbf71;--red:#ff5f5f;--sky:#7fd8ff;--ctl-scale:1;--display:"Arial Black", "Avenir Next Condensed", "Helvetica Neue", Impact, system-ui, sans-serif;--body:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--sat:env(safe-area-inset-top,0px);--sab:env(safe-area-inset-bottom,0px);--sal:env(safe-area-inset-left,0px);--sar:env(safe-area-inset-right,0px)}*{box-sizing:border-box}html,body{background:var(--bg);height:100%;color:var(--text);font-family:var(--body);overscroll-behavior:none;margin:0}body{-webkit-text-size-adjust:100%}#app{width:100%;height:100dvh;position:fixed;inset:0;overflow:hidden}button{font:inherit;color:inherit}.sr-only{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.screen{flex-direction:column;display:flex;position:absolute;inset:0;overflow:hidden}.screen.menu{-webkit-overflow-scrolling:touch;padding:calc(12px + var(--sat)) calc(16px + var(--sar)) calc(16px + var(--sab)) calc(16px + var(--sal));overflow-y:auto}.screen.menu::-webkit-scrollbar{display:none}.topbar{justify-content:space-between;align-items:center;gap:12px;min-height:44px;margin-bottom:10px;display:flex}.topbar .heading{align-items:center;gap:10px;display:flex}.topbar canvas{image-rendering:pixelated}.subtitle{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;font-size:13px}.content{flex-direction:column;flex:1;gap:12px;min-height:0;display:flex}.row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.row.end{justify-content:flex-end}.row.between{justify-content:space-between}.foot{bottom:calc(-16px - var(--sab));margin:0 calc(-16px - var(--sar)) calc(-16px - var(--sab)) calc(-16px - var(--sal));padding:12px calc(16px + var(--sar)) calc(12px + var(--sab)) calc(16px + var(--sal));background:linear-gradient(180deg, #0b0d1600, var(--bg) 35%);z-index:2;position:sticky}.spacer{flex:1}.btn{appearance:none;cursor:pointer;min-width:48px;min-height:48px;font-family:var(--display);letter-spacing:.08em;text-transform:uppercase;background:var(--panel-2);color:var(--text);box-shadow:0 4px 0 #090b14, inset 0 0 0 2px var(--line);touch-action:manipulation;-webkit-user-select:none;user-select:none;border:0;border-radius:4px;padding:10px 18px;font-size:15px;font-weight:900;transition:transform 80ms,box-shadow 80ms,filter .12s}.btn:active{box-shadow:0 1px 0 #090b14, inset 0 0 0 2px var(--line);transform:translateY(3px)}.btn:focus-visible{outline:3px solid var(--sky);outline-offset:2px}.btn.primary{color:#1a1200;background:linear-gradient(#ffe08a,#ffb830);min-height:56px;font-size:18px;box-shadow:0 5px #8a5a00,inset 0 0 0 2px #ffe9ad}.btn.primary:active{box-shadow:0 1px #8a5a00,inset 0 0 0 2px #ffe9ad}.btn.fire{color:#fff;background:linear-gradient(#ff9a2e,#ff3b1a);box-shadow:0 5px #6b1200,inset 0 0 0 2px #ffc08a}.btn.ghost{box-shadow:inset 0 0 0 2px var(--line);background:0 0}.btn.small{min-height:40px;padding:6px 12px;font-size:13px}.btn[disabled]{opacity:.45;cursor:default;transform:none}.btn.icon{width:48px;padding:0;font-size:20px}.title-screen{background:radial-gradient(1200px 600px at 50% 110%, #1d2342 0%, var(--bg) 70%)}.title-screen .attract{z-index:0;opacity:0;transition:opacity 1.6s;position:absolute;inset:0}.title-screen.show-demo .attract{opacity:1}.title-screen .keyart{z-index:0;image-rendering:pixelated;background:50%/cover no-repeat;position:absolute;inset:0}.title-screen .keyart:after{content:"";background:linear-gradient(#0b0d161a,#0b0d16cc 78%);position:absolute;inset:0}.trophy{width:96px;height:96px;image-rendering:pixelated;margin:0 auto;display:block}.title-screen .attract canvas{object-fit:cover;width:100%;height:100%;image-rendering:pixelated;filter:saturate(.9)brightness(.55)}.title-screen .attract:after{content:"";background:linear-gradient(#0b0d1633,#0b0d16d9 75%);position:absolute;inset:0}.title-screen .front{z-index:1;padding:calc(10px + var(--sat)) calc(16px + var(--sar)) calc(28px + var(--sab)) calc(16px + var(--sal));flex:1;grid-template-rows:1fr auto;min-height:0;display:grid;position:relative}.logo-wrap{flex-direction:column;justify-content:center;align-items:center;gap:8px;min-height:0;display:flex}.logo-wrap canvas{image-rendering:pixelated;filter:drop-shadow(0 6px #0009);max-width:92vw;height:auto}.logo-wrap .tag{font-family:var(--display);letter-spacing:.3em;color:var(--gold);text-transform:uppercase;font-size:12px}.title-menu{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;width:100%;max-width:760px;margin:0 auto;display:grid}.title-menu .btn.primary{grid-column:1/-1}.title-foot{left:0;right:0;bottom:calc(4px + var(--sab));text-align:center;color:var(--muted);letter-spacing:.1em;z-index:1;font-size:11px;position:absolute}@media (min-height:500px){.title-menu{grid-template-columns:1fr 1fr 1fr}.title-menu .btn.primary{grid-column:1/-1}}.city-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;display:grid}.city{text-align:left;cursor:pointer;color:var(--text);background:var(--panel);box-shadow:inset 0 0 0 2px var(--line);border:0;border-radius:6px;grid-template-columns:44px 1fr;align-items:start;gap:8px;min-height:104px;padding:10px 10px 8px;transition:transform 80ms,box-shadow .12s;display:grid;position:relative}.city:hover{transform:translateY(-2px)}.city:focus-visible{outline:3px solid var(--sky);outline-offset:2px}.city.selected{box-shadow:inset 0 0 0 3px var(--gold), 0 0 0 2px var(--gold)}.city.dim{opacity:.35;pointer-events:none}.crest-img{width:100%;height:100%;image-rendering:pixelated;border-radius:50%;display:block}.city .crest{width:44px;height:44px;font-family:var(--display);letter-spacing:.04em;border-radius:50%;grid-row:span 2;place-items:center;font-size:12px;display:grid;box-shadow:inset 0 0 0 3px #ffffff40,0 2px #00000080}.city .name{font-family:var(--display);font-size:15px;line-height:1.05}.city .mascot{color:var(--muted);margin-top:2px;font-size:12px}.city .roster{grid-column:1/-1;align-items:flex-end;gap:2px;margin-top:6px;display:flex}.city .roster canvas{image-rendering:pixelated;width:28px;height:36px}.city .region{letter-spacing:.1em;color:var(--muted);text-transform:uppercase;font-size:10px;position:absolute;top:6px;right:8px}.pick-bar{background:linear-gradient(180deg, transparent, var(--bg) 30%);align-items:center;gap:10px;padding-top:14px;display:flex;position:sticky;bottom:0}.pick-bar .chosen{font-family:var(--display);align-items:center;gap:8px;font-size:14px;display:flex}.pick-bar .chosen .crest{border-radius:50%;place-items:center;width:32px;height:32px;font-size:10px;display:grid}.vs{flex:none;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:start;gap:12px;display:grid}.vs .team{background:var(--panel);box-shadow:inset 0 0 0 2px var(--line);border-radius:6px;flex-direction:column;gap:8px;min-width:0;padding:12px;display:flex}.vs .team header{align-items:center;gap:10px;display:flex}.vs .team h2{font-family:var(--display);margin:0;font-size:18px;line-height:1}.vs .team .school{color:var(--muted);font-size:12px}.vs .team .style{color:var(--text);opacity:.85;font-size:12px;font-style:italic}.vs .mid{font-family:var(--display);color:var(--gold);flex-direction:column;justify-content:center;align-self:center;align-items:center;gap:10px;max-width:200px;font-size:28px;display:flex}.vs .mid .row{flex-direction:column}.vs .mid small{color:var(--muted);letter-spacing:.1em;text-align:center;font-size:11px;font-family:var(--body)}.athlete-row{background:var(--panel-2);border-radius:4px;grid-template-columns:36px 1fr auto;align-items:center;gap:8px;padding:4px 8px 4px 4px;display:grid}.athlete-row canvas{image-rendering:pixelated;width:36px;height:46px}.athlete-row .n{font-family:var(--display);font-size:13px}.athlete-row .r{color:var(--muted);font-size:11px}.athlete-row .bars{grid-template-columns:repeat(4,20px);gap:3px;display:grid}.athlete-row .bar{background:var(--line);border-radius:2px;height:22px;position:relative;overflow:hidden}.athlete-row .bar i{background:var(--gold);position:absolute;bottom:0;left:0;right:0}.athlete-row .bar b{text-align:center;color:#000;font-size:8px;font-weight:700;position:absolute;bottom:-1px;left:0;right:0}.athlete-row .bar.spd i{background:var(--sky)}.athlete-row .bar.dnk i{background:var(--fire)}.athlete-row .bar.def i{background:var(--green)}@media (max-width:700px){.vs{grid-template-columns:1fr}.vs .mid{flex-direction:row;max-width:none}.vs .mid .row{flex-direction:row}}.match-screen{touch-action:none;background:#000}.stage{aspect-ratio:16/9;background:#000;width:min(100vw,177.778dvh);height:min(100dvh,56.25vw);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.stage canvas{width:100%;height:100%;image-rendering:pixelated;image-rendering:crisp-edges;display:block}.touch{pointer-events:none;z-index:2;position:absolute;inset:0}.touch-zone{pointer-events:auto;touch-action:none;position:absolute;inset:0}.stick{width:calc(96px * var(--ctl-scale));height:calc(96px * var(--ctl-scale));margin:calc(-48px * var(--ctl-scale)) 0 0 calc(-48px * var(--ctl-scale));pointer-events:none;background:#ffffff14;border:2px solid #ffffff59;border-radius:50%;display:none;position:absolute}.stick.active{display:block}.stick .knob{background:#ffffffb3;border-radius:50%;width:40%;height:40%;margin:-20% 0 0 -20%;position:absolute;top:50%;left:50%}.cluster{right:calc(14px + var(--sar));bottom:calc(18px + var(--sab));width:calc(190px * var(--ctl-scale));height:calc(150px * var(--ctl-scale));position:absolute}.left-handed .cluster{right:auto;left:calc(14px + var(--sal))}.tbtn{font-family:var(--display);font-size:calc(11px * var(--ctl-scale));letter-spacing:.05em;color:#fff;-webkit-user-select:none;user-select:none;touch-action:none;background:#1418298c;border:2px solid #ffffff73;border-radius:50%;place-items:center;display:grid;position:absolute}.tbtn span{pointer-events:none}.tbtn.down{background:#fff6;border-color:#fff}.tbtn.a{width:calc(74px * var(--ctl-scale));height:calc(74px * var(--ctl-scale));right:0;bottom:calc(38px * var(--ctl-scale));border-color:#ffd166cc}.tbtn.b{width:calc(60px * var(--ctl-scale));height:calc(60px * var(--ctl-scale));right:calc(88px * var(--ctl-scale));bottom:calc(8px * var(--ctl-scale));border-color:#7fd8ffcc}.tbtn.turbo{width:calc(60px * var(--ctl-scale));height:calc(60px * var(--ctl-scale));right:calc(104px * var(--ctl-scale));bottom:calc(82px * var(--ctl-scale));background:#78280080;border-color:#ff7a1ae6}.tbtn.turbo.down{background:#ff7a1abf}.left-handed .tbtn.a{left:0;right:auto}.left-handed .tbtn.b{right:auto;left:calc(88px * var(--ctl-scale))}.left-handed .tbtn.turbo{right:auto;left:calc(104px * var(--ctl-scale))}.pause-btn{top:calc(6px + var(--sat));right:calc(8px + var(--sar));z-index:3;opacity:.85;width:44px;min-width:44px;height:36px;min-height:36px;padding:0;font-size:14px;position:absolute}.overlay{z-index:5;background:#05060cb8;justify-content:center;align-items:center;padding:16px;display:flex;position:absolute;inset:0}.overlay .card{background:var(--panel);box-shadow:inset 0 0 0 2px var(--line), 0 20px 60px #0009;border-radius:8px;flex-direction:column;gap:10px;min-width:min(360px,92vw);max-height:92dvh;padding:18px;display:flex;overflow:auto}.overlay .card h2{font-family:var(--display);letter-spacing:.06em;text-transform:uppercase;margin:0 0 4px;font-size:20px}.overlay .card .score{font-family:var(--display);text-align:center;font-size:34px}.overlay .card .btns{grid-template-columns:1fr 1fr;gap:8px;display:grid}.overlay .card .btns .wide{grid-column:1/-1}.rotate{z-index:9;background:var(--bg);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:14px;padding:24px;display:none;position:absolute;inset:0}.rotate .phone{border:4px solid var(--gold);border-radius:10px;width:46px;height:80px;animation:1.6s ease-in-out infinite rot}@media (prefers-reduced-motion:reduce){.rotate .phone{animation:none;transform:rotate(90deg)}}@keyframes rot{0%,20%{transform:rotate(0)}60%,to{transform:rotate(90deg)}}.rotate h2{font-family:var(--display);letter-spacing:.08em;margin:0}.rotate p{color:var(--muted);max-width:320px;margin:0}@media (orientation:portrait){.match-screen .rotate{display:flex}}.final{background:var(--panel);box-shadow:inset 0 0 0 2px var(--line);border-radius:8px;grid-template-columns:1fr auto 1fr;align-items:center;gap:12px;padding:12px 16px;display:grid}.final .t{font-family:var(--display);align-items:center;gap:10px;min-width:0;font-size:16px;display:flex}.final .t.right{text-align:right;justify-content:flex-end}.final .s{font-family:var(--display);letter-spacing:.06em;font-size:40px}.final .s .w{color:var(--gold)}.winner-line{text-align:center;font-family:var(--display);letter-spacing:.1em;color:var(--gold);text-transform:uppercase;font-size:18px}table.box{border-collapse:collapse;background:var(--panel);border-radius:6px;width:100%;font-size:12px;overflow:hidden}table.box th,table.box td{text-align:right;border-bottom:1px solid var(--line);white-space:nowrap;padding:5px 6px}table.box th{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;font-size:10px;font-weight:600}table.box td:first-child,table.box th:first-child{text-align:left}table.box tr.team td{font-family:var(--display);background:var(--panel-2)}table.box td.fire{color:var(--gold)}.box-wrap{grid-template-columns:1fr 1fr;gap:10px;display:grid}@media (max-width:700px){.box-wrap{grid-template-columns:1fr}}.bracket{grid-template-columns:repeat(4,minmax(140px,1fr));gap:10px;padding-bottom:8px;display:grid;overflow-x:auto}.bracket .col{flex-direction:column;justify-content:space-around;gap:6px;display:flex}.bracket .col h3{letter-spacing:.1em;color:var(--muted);text-transform:uppercase;text-align:center;margin:0 0 4px;font-size:11px}.bm{background:var(--panel);box-shadow:inset 0 0 0 2px var(--line);border-radius:4px;gap:2px;padding:4px;font-size:12px;display:grid}.bm .side{background:var(--panel-2);border-radius:3px;grid-template-columns:10px 1fr auto;align-items:center;gap:6px;padding:3px 6px;display:grid}.bm .side i{border-radius:50%;width:10px;height:10px;display:inline-block}.bm .side.win{font-weight:700}.bm .side.lose{opacity:.5}.bm .side.me,.bm.next{box-shadow:inset 0 0 0 2px var(--gold)}.champ{text-align:center;font-family:var(--display);color:var(--gold);letter-spacing:.1em;font-size:22px}.settings{gap:10px;max-width:720px;display:grid}.setting{background:var(--panel);box-shadow:inset 0 0 0 2px var(--line);border-radius:6px;grid-template-columns:1fr auto;align-items:center;gap:10px;padding:10px 12px;display:grid}.setting label,.setting .lbl{font-family:var(--display);letter-spacing:.06em;text-transform:uppercase;font-size:13px}.setting .hint{color:var(--muted);font-size:12px;font-family:var(--body);text-transform:none;letter-spacing:0;margin-top:2px}.seg{background:var(--panel-2);border-radius:4px;gap:3px;padding:3px;display:inline-flex}.seg button{color:var(--muted);min-width:48px;min-height:40px;font-family:var(--display);letter-spacing:.06em;cursor:pointer;background:0 0;border:0;border-radius:3px;padding:0 12px;font-size:12px}.seg button[aria-pressed=true]{background:var(--gold);color:#1a1200}.seg button:focus-visible{outline:3px solid var(--sky)}input[type=range]{width:160px;accent-color:var(--gold);min-height:44px}.toggle{background:var(--line);cursor:pointer;border:0;border-radius:16px;width:60px;height:32px;position:relative}.toggle:after{content:"";background:#fff;border-radius:50%;width:24px;height:24px;transition:left .12s;position:absolute;top:4px;left:4px}.toggle[aria-checked=true]{background:var(--green)}.toggle[aria-checked=true]:after{left:32px}.toggle:focus-visible{outline:3px solid var(--sky)}.howto{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:10px;display:grid}.howto .card{background:var(--panel);box-shadow:inset 0 0 0 2px var(--line);border-radius:6px;padding:12px}.howto h3{font-family:var(--display);letter-spacing:.08em;text-transform:uppercase;color:var(--gold);margin:0 0 6px;font-size:14px}.howto ul{margin:0;padding-left:18px;font-size:13px;line-height:1.5}.howto kbd{font-family:var(--display);background:var(--panel-2);box-shadow:inset 0 0 0 1px var(--line);border-radius:3px;padding:1px 6px;font-size:11px}.notice{color:var(--muted);font-size:12px}.toast{left:50%;bottom:calc(16px + var(--sab));background:var(--panel-2);color:var(--text);box-shadow:0 10px 30px #00000080, inset 0 0 0 2px var(--line);z-index:50;border-radius:6px;padding:10px 14px;font-size:13px;position:fixed;transform:translate(-50%)}.athlete-row.pickable{cursor:pointer}.athlete-row.pickable:focus-visible{outline:2px solid var(--accent,#ffd166);outline-offset:2px}.athlete-row.bench{opacity:.45}.athlete-row .tag{font-family:var(--display);letter-spacing:.08em;color:var(--muted);white-space:nowrap;background:#ffffff14;border-radius:3px;padding:2px 6px;font-size:10px}.athlete-row.bench .tag{background:0 0}.team .lineup-hint{color:var(--muted);font-size:11px}.ladder-rungs{grid-template-columns:repeat(6,minmax(0,1fr));gap:6px;display:grid}.rung{background:var(--panel);text-align:center;box-shadow:inset 0 0 0 2px var(--line);border-radius:4px;padding:6px 4px}.rung .n{font-family:var(--display);letter-spacing:.04em;font-size:11px}.rung .l{color:var(--muted);margin-top:2px;font-size:10px}.rung.done{opacity:.55}.rung.done .n:before{content:"✓ "}.rung.now{background:var(--panel-2);box-shadow:inset 0 0 0 2px #ffd166}.rung.now .l{color:#ffd166}.groups{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px;display:grid}.grp{background:var(--panel);box-shadow:inset 0 0 0 2px var(--line);border-radius:6px;min-width:0;padding:8px}.grp.mine{box-shadow:inset 0 0 0 2px #ffd166}.grp h3,.groups-title{letter-spacing:.08em;color:var(--muted);text-transform:uppercase;margin:0 0 6px;font-size:11px}.grp table{border-collapse:collapse;width:100%;font-size:12px}.grp td{white-space:nowrap;padding:2px 3px}.grp td:first-child{text-overflow:ellipsis;align-items:center;gap:5px;display:flex;overflow:hidden}.grp td:not(:first-child){text-align:right;font-variant-numeric:tabular-nums;width:1%}.grp td i{border-radius:2px;flex:none;width:8px;height:8px;display:inline-block}.grp tr.me{color:#ffd166;font-weight:700}.grp tr.q td:first-child span:after{content:" ·Q";color:#2fbf71;font-weight:700}.bracket.ko{grid-template-columns:repeat(3,minmax(130px,1fr))}.ladder-rungs,.groups,.bracket.ko,.groups-title{flex:none}.rank-up{font-family:var(--display);color:#ffd166;text-align:center;letter-spacing:.06em;font-size:16px}@media (max-width:520px){.rung .l{display:none}}
