:root{--vh: 1vh}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;overscroll-behavior:none;background-color:var(--bg, #0b1220)}html,body{touch-action:manipulation;overflow-x:hidden;max-width:100%}body{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;user-select:none;-webkit-user-select:none;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);box-sizing:border-box}input,textarea,[contenteditable],.selectable{user-select:text;-webkit-user-select:text;-webkit-touch-callout:default}button,[role=button],a,label,summary{touch-action:manipulation}button,input,select,textarea{font-family:inherit;font-size:inherit}input,textarea,select{font-size:max(16px,1em)}button,[role=button]{min-height:44px;min-width:44px;cursor:pointer}.board,.field,canvas,.drag-surface{touch-action:none}.control-layer{position:fixed;inset:0;z-index:30;pointer-events:none;touch-action:none}.control-layer>*{pointer-events:auto}.safe-inset{padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}[hidden]{display:none!important}:root{--ground: #12161c;--card: #1e242e;--tariff: #262e3a;--panel: #1a202a;--ink: #0b0e12;--text: #e8edf4;--dim: #a6b2c4;--edge: #6b7a90;--w-copper: #e8863c;--w-glass: #4fb6e8;--w-resin: #c879e8;--w-tin: #58c98a;--w-salt: #c9d2de;--last: #ffc857;--dry: #ff6b5e;--chit: #ffc857;--you: #9fe8d6;--them: #d9718f;--pad: 8px;--gap: 6px;--tracks: 5;--max-col: 420px;--rowgap: 8px;--r-hud: 44px;--r-rival: 52px;--r-tariffs: 96px;--r-trestle: 122px;--r-gang: 40px;--r-satchel: 122px;--r-ticker: 30px;--r-action: 64px;--zlabel: 18px;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--ground);color:var(--text);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;-webkit-font-smoothing:antialiased}#app{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column}.main-content{flex:1 0 auto;width:100%;max-width:var(--max-col);margin:0 auto;padding:var(--pad)}.site-footer{flex-shrink:0;padding:14px var(--pad) calc(14px + env(safe-area-inset-bottom));text-align:center;font-size:12px;color:var(--dim)}.site-footer a{color:var(--dim)}body.playing .site-footer{display:none!important}h1,h2,h3{margin:0 0 8px;font-weight:700;letter-spacing:-.01em}button{font:inherit;color:inherit;border:0;background:none;cursor:pointer;touch-action:manipulation}.brand{text-align:center;padding:20px 0 6px}.brand h1{font-size:40px;letter-spacing:.06em;margin:0}.brand p{color:var(--dim);margin:6px 0 0;font-size:14px;line-height:1.45}.menu{display:flex;flex-direction:column;gap:10px;margin-top:14px}.btn{min-height:52px;border-radius:12px;background:var(--card);border:1px solid var(--edge);color:var(--text);font-size:16px;font-weight:600;padding:0 16px}.btn.primary{background:var(--you);color:var(--ink);border-color:var(--you)}.btn.ghost{background:transparent}.btn[disabled]{opacity:.45}.field{margin-top:12px}.field>.label{font-size:12px;text-transform:uppercase;letter-spacing:.09em;color:var(--dim);margin-bottom:6px}.segmented{display:flex;gap:6px}.seg{flex:1 1 0;min-width:0;min-height:46px;border-radius:10px;border:1px solid var(--edge);background:var(--card);font-size:14px;font-weight:600}.seg.on{background:var(--you);color:var(--ink);border-color:var(--you)}.fine{color:var(--dim);font-size:13px;line-height:1.5;margin:8px 0 0}.stage{flex:1 0 auto;width:100%;max-width:var(--max-col);margin:0 auto;padding:var(--pad);padding-top:calc(var(--pad) + env(safe-area-inset-top));padding-bottom:calc(var(--pad) + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:var(--rowgap);justify-content:space-between;touch-action:manipulation}.grid5{display:grid;grid-template-columns:repeat(var(--tracks),minmax(0,1fr));gap:var(--gap)}.hud{min-height:var(--r-hud);display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:13px;color:var(--dim)}.hud .scores{font-size:17px;font-weight:700;color:var(--text);font-variant-numeric:tabular-nums}.hud .you{color:var(--you)}.hud .them{color:var(--them)}.pips{letter-spacing:2px;color:var(--chit)}.hud .meta{text-align:right;line-height:1.35;font-variant-numeric:tabular-nums}.hud .dryline{color:var(--last);font-weight:700}.hud .hudticker{display:none}.rival{min-height:var(--r-rival);background:var(--card);border:1px solid var(--edge);border-radius:10px;padding:6px 8px;display:flex;flex-direction:column;justify-content:center;gap:3px}.rival .who{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600}.rival .backs{display:flex;gap:3px}.rival .back{width:12px;height:17px;border-radius:2px;background:var(--tariff);border:1px solid var(--edge)}.rival .read{font-size:11px;color:var(--dim)}.turnflag{margin-left:auto;font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:var(--dim)}.turnflag.live{color:var(--last);font-weight:700}.tariffs{min-height:var(--r-tariffs)}.tcol{background:var(--tariff);border:1px solid var(--edge);border-radius:10px;padding:4px 2px 5px;display:flex;flex-direction:column;align-items:center;gap:1px;min-width:0;overflow:hidden}.tcol .glyph{font-size:15px;line-height:1.1}.tcol .price{font-size:22px;font-weight:800;line-height:1.1;font-variant-numeric:tabular-nums;border-radius:6px;padding:0 7px;color:var(--ink)}.tcol .rest{font-size:11px;color:var(--dim);font-variant-numeric:tabular-nums;letter-spacing:1px;min-height:13px}.tcol .wname{font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--dim)}.tcol.last{border-color:var(--last);border-style:dashed}.tcol.last .wname{color:var(--last)}.tcol.dry{border-color:var(--dry);background-image:repeating-linear-gradient(45deg,transparent 0 5px,rgba(255,107,94,.22) 5px 10px)}.tcol.dry .price{background:transparent!important;color:var(--dry);font-size:15px}.tcol.doomed .price{outline:2px dashed var(--dry);outline-offset:1px;animation:doom 1.1s ease-in-out infinite}@keyframes doom{0%,to{opacity:1}50%{opacity:.55}}.zone{display:flex;flex-direction:column;gap:3px;min-height:var(--r-trestle);flex:1 1 auto;max-height:158px}.zone .zlabel{height:var(--zlabel);font-size:11px;text-transform:uppercase;letter-spacing:.09em;color:var(--dim);display:flex;justify-content:space-between;align-items:center}.zone .grid5{flex:1 1 auto}.zone.satchel{min-height:var(--r-satchel)}.slot{border-radius:10px;border:1px solid var(--edge);background:var(--card);min-width:0;padding:4px 2px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;position:relative;overflow:hidden}.slot.empty{border-style:dashed;opacity:.4}.slot .cglyph{font-size:24px;line-height:1}.slot .cname{font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:var(--dim);text-align:center}.slot .cprice{font-size:12px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--chit)}.slot .count{position:absolute;top:3px;right:4px;font-size:12px;font-weight:800;font-variant-numeric:tabular-nums;color:var(--text)}.slot .mark{position:absolute;top:3px;left:4px;font-size:12px;font-weight:800}.slot.in{border-color:var(--you);box-shadow:inset 0 0 0 2px var(--you)}.slot.in .mark{color:var(--you)}.slot.out{border-color:var(--last);box-shadow:inset 0 0 0 2px var(--last)}.slot.out .mark{color:var(--last)}.slot.porter .cglyph{color:var(--text)}.gangbar{min-height:var(--r-gang);display:flex;align-items:center;gap:8px;background:var(--card);border:1px solid var(--edge);border-radius:10px;padding:0 8px;font-size:13px;width:100%;text-align:left}.gangbar .n{font-size:17px;font-weight:800;font-variant-numeric:tabular-nums}.gangbar .hint{margin-left:auto;color:var(--dim);font-size:11px}.gangbar.out{border-color:var(--last);box-shadow:inset 0 0 0 2px var(--last)}.ticker{min-height:var(--r-ticker);display:flex;align-items:center;font-size:12px;color:var(--dim);line-height:1.35}.actionbar{min-height:var(--r-action);display:flex;align-items:center;gap:8px}.quote{flex:1 1 auto;min-width:0;min-height:52px;border-radius:12px;background:var(--you);color:var(--ink);font-weight:800;font-size:15px;padding:0 10px;font-variant-numeric:tabular-nums}.quote.advisory{background:var(--card);color:var(--dim);border:1px dashed var(--edge);font-weight:600}.quote.waiting{background:var(--card);color:var(--dim);border:1px solid var(--edge)}.iconbtn{width:52px;height:52px;border-radius:12px;background:var(--card);border:1px solid var(--edge);font-size:17px}.flychit{position:fixed;z-index:40;font-size:16px;font-weight:800;color:var(--ink);background:var(--chit);border-radius:999px;padding:1px 8px;pointer-events:none;transition:transform .26s cubic-bezier(.3,.9,.4,1),opacity .26s ease-out}.shake{animation:shake .32s ease-in-out}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-4px)}75%{transform:translate(4px)}}.countwrap{flex:1 0 auto;display:flex;align-items:center;justify-content:center}.countdown{font-size:56px;font-weight:800;letter-spacing:.04em;color:var(--chit)}.countdown.pop{animation:pop .38s ease-out}@keyframes pop{0%{transform:scale(.6);opacity:0}to{transform:scale(1);opacity:1}}.backdrop{position:fixed;inset:0;z-index:60;background:#06090db8;display:flex;align-items:center;justify-content:center;padding:16px}.sheet{background:var(--panel);border:1px solid var(--edge);border-radius:16px;padding:18px;max-width:420px;width:100%;max-height:84vh;overflow-y:auto;position:relative}.sheet h2{padding-right:48px}.sheet p,.sheet li{color:var(--dim);font-size:14px;line-height:1.55}.sheet ol{padding-left:20px;margin:0}.sheet li{margin-bottom:8px}.sheet strong{color:var(--text)}.closex{position:absolute;top:8px;right:8px;width:44px;height:44px;border-radius:10px;font-size:20px;color:var(--dim)}.results h2{font-size:26px}.res-sub{color:var(--dim);font-size:14px;margin:0 0 14px}.plines{display:flex;flex-direction:column;gap:10px}.pline{background:var(--card);border:1px solid var(--edge);border-radius:12px;padding:10px 12px}.pline.win{border-color:var(--chit)}.pline .top{display:flex;align-items:baseline;gap:8px}.pline .nm{font-weight:700}.pline .tot{margin-left:auto;font-size:22px;font-weight:800;font-variant-numeric:tabular-nums}.pline .parts{font-size:12px;color:var(--dim);margin-top:2px;font-variant-numeric:tabular-nums}.pline .sales{margin-top:6px;display:flex;flex-wrap:wrap;gap:4px}.sc{font-size:11px;border-radius:999px;padding:2px 7px;color:var(--ink);font-weight:700;font-variant-numeric:tabular-nums}.missed{margin-top:12px;padding:10px 12px;border-radius:12px;border:1px dashed var(--edge);font-size:13px;color:var(--dim);line-height:1.5}.res-actions{display:flex;flex-direction:column;gap:10px;margin-top:16px}.res-wait{color:var(--dim);font-size:13px;text-align:center}.results-feedback{color:var(--dim);font-size:13px;text-decoration:underline;padding:10px}.room-entry,.lobby{display:flex;flex-direction:column;gap:10px}.re-title,.lobby-title{font-size:22px}.re-sub,.lobby-sub,.re-note,.lobby-hint{color:var(--dim);font-size:13px;line-height:1.5;margin:0}.lobby-btn{min-height:52px;border-radius:12px;background:var(--card);border:1px solid var(--edge);color:var(--text);font-weight:600;font-size:15px;padding:0 14px;width:100%}.lobby-btn.primary{background:var(--you);color:var(--ink);border-color:var(--you)}.lobby-btn.ghost{background:transparent}.lobby-btn[disabled]{opacity:.45}.re-join{display:flex;gap:8px}.re-input,.lobby-link{flex:1 1 auto;min-width:0;min-height:52px;border-radius:12px;background:var(--ground);border:1px solid var(--edge);color:var(--text);padding:0 12px;font-size:16px;letter-spacing:.08em}.re-go{width:auto;padding:0 18px}.re-divider{text-align:center;color:var(--dim);font-size:12px;text-transform:uppercase;letter-spacing:.09em}.re-error{color:var(--dry);font-size:13px;min-height:18px;margin:0}.lobby-code{font-size:34px;font-weight:800;letter-spacing:.2em;text-align:center;color:var(--chit)}.lobby-invite{display:flex;gap:8px;flex-wrap:wrap}.lobby-invite>*{min-width:0}.lobby-players{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:6px}.lobby-players li{background:var(--card);border:1px solid var(--edge);border-radius:10px;padding:10px 12px;display:flex;align-items:center;gap:8px;font-size:14px}.lobby-players .tag{margin-left:auto;font-size:11px;color:var(--dim);text-transform:uppercase;letter-spacing:.07em}.lobby-players .ready .tag{color:var(--you)}.lobby-searching{display:flex;align-items:center;gap:10px;color:var(--dim);font-size:13px}.spinner{width:18px;height:18px;border-radius:999px;border:2px solid var(--edge);border-top-color:var(--you);animation:spin .8s linear infinite;flex:0 0 auto}@keyframes spin{to{transform:rotate(360deg)}}.lobby-qr{background:#fff;border-radius:12px;padding:12px;display:flex;flex-direction:column;align-items:center;gap:6px;max-width:100%}.lobby-qr svg{width:190px;height:190px;max-width:100%;display:block}.lobby-qr figcaption,.lobby-qr .qr-cap{color:#12161c;font-size:12px;font-weight:700;letter-spacing:.06em}.modeslot{background:var(--card);border:1px solid var(--edge);border-radius:12px;padding:10px}.modeslot-label{font-size:11px;text-transform:uppercase;letter-spacing:.09em;color:var(--dim);display:block;margin-bottom:6px}.segmented.small .seg{min-height:42px;font-size:13px}.netdebug{font-size:11px;color:var(--dim);white-space:pre-wrap;word-break:break-all}@media(min-width:720px){.brand h1{font-size:48px}}@media(min-width:1000px){:root{--max-col: 460px;--r-tariffs: 112px;--r-trestle: 150px;--r-satchel: 150px}.tcol .price{font-size:26px}.slot .cglyph{font-size:30px}}@media(max-height:640px){:root{--rowgap: 6px;--r-hud: 56px;--r-rival: 48px;--r-tariffs: 84px;--r-trestle: 104px;--r-gang: 34px;--r-satchel: 104px;--r-ticker: 0px;--r-action: 56px;--zlabel: 16px}.ticker{display:none}.hud .hudticker{display:block;font-size:11px;color:var(--dim);max-width:58%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hud{flex-wrap:wrap}.tcol .price{font-size:19px}.slot .cglyph{font-size:20px}.quote,.iconbtn{min-height:46px;height:46px}.brand h1{font-size:30px}}@media(max-height:480px)and (orientation:landscape){:root{--max-col: 760px}.stage{display:grid;grid-template-columns:1fr 1fr;grid-template-areas:"tariffs hud" "tariffs rival" "trestle satchel" "gang    action";align-content:start}.hud{grid-area:hud}.rival{grid-area:rival}.tariffs{grid-area:tariffs}.zone.trestle{grid-area:trestle}.gangbar{grid-area:gang}.zone.satchel{grid-area:satchel}.actionbar{grid-area:action}.zone{flex:0 0 auto}.ticker{display:none}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:1ms!important;animation-iteration-count:1!important;transition-duration:1ms!important}}
