: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}}:root{--ground: #12131a;--panel: #1c2030;--panel-hi: #28304a;--edge: #3a4260;--sheet: #ede4d0;--cell-empty: #e1d6be;--cell-live: #fbf3e0;--amber: #8a5a00;--teal: #0b6068;--rust: #9c2b18;--violet: #4c3391;--ink: #1a1b24;--ink-muted: #5c5648;--bonus: #7a3e00;--die: #f7f4ec;--die-pip: #14151c;--text: #f4f6fb;--muted: #a6b0c6;--gold: #f0b429;--font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--shake: 3px;--cell: 30px;--dice: 46px}[hidden]{display:none!important}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--ground);color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;overflow-x:hidden}#app{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column}.main-content{flex:1 0 auto;display:flex;flex-direction:column}.site-footer{flex-shrink:0;padding:14px 16px calc(14px + env(safe-area-inset-bottom));text-align:center;color:var(--muted);font-size:13px}.site-footer a{color:var(--muted)}body.playing .site-footer{display:none!important}a{color:var(--gold)}.screen{width:100%;max-width:560px;margin:0 auto;padding:12px 8px calc(12px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:8px;flex:1 0 auto}.btn,.lobby-btn,.re-go,.re-create{min-height:48px;padding:12px 18px;border-radius:14px;border:1px solid var(--edge);background:var(--panel);color:var(--text);font:600 16px/1.2 var(--font);cursor:pointer;transition:transform .12s ease,background .12s ease}.btn:active,.lobby-btn:active{transform:translateY(1px)}.btn.primary,.lobby-btn.primary,.re-create{background:var(--gold);border-color:var(--gold);color:#201704}.btn.ghost,.lobby-btn.ghost{background:transparent}.btn:disabled{opacity:.55;cursor:default}.linkbtn{background:none;border:0;color:var(--muted);font:600 15px/1 var(--font);padding:12px 10px;min-height:44px;cursor:pointer;text-decoration:underline}.iconbtn{min-width:44px;min-height:44px;border-radius:12px;border:1px solid var(--edge);background:var(--panel);color:var(--text);font-size:15px;cursor:pointer}:focus-visible{outline:3px solid var(--ground);outline-offset:2px;box-shadow:0 0 0 5px var(--gold)}.menu{justify-content:center;text-align:center;gap:18px;padding:16px 12px calc(16px + env(safe-area-inset-bottom))}.brand h1{margin:8px 0 4px;font-size:42px;letter-spacing:.02em}.tagline{margin:0;color:var(--muted);font-size:15px}.logo{display:flex;align-items:center;justify-content:center;height:62px;gap:8px}.logo svg{width:56px;height:56px}.chips{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}.chip{min-height:44px;padding:10px 16px;border-radius:999px;border:1px solid var(--edge);background:var(--panel);color:var(--text);font:600 15px/1 var(--font);cursor:pointer}.chip.on{background:var(--panel-hi);border-color:var(--gold);color:var(--gold)}.mode-blurb{margin:10px 4px 0;color:var(--muted);font-size:14px;min-height:34px}.mode-best{margin:4px 0 0;color:var(--muted);font-size:13px}.menu-actions{display:flex;flex-direction:column;gap:10px}.menu-links{display:flex;justify-content:center;gap:6px;flex-wrap:wrap}.field-label{color:var(--muted);font-size:13px;margin:0}.overlay{position:fixed;inset:0;background:#03060cbd;display:flex;align-items:flex-end;justify-content:center;z-index:50}.sheet-panel{position:relative;width:100%;max-width:560px;max-height:86vh;overflow-y:auto;background:var(--panel);border:1px solid var(--edge);border-radius:20px 20px 0 0;padding:20px 18px calc(24px + env(safe-area-inset-bottom))}.sheet-panel h2{margin:0 0 12px;padding-right:44px}.sheet-panel h3{margin:18px 0 8px;font-size:16px}.sheet-close.x{position:absolute;right:12px;top:12px;min-width:44px;min-height:44px;border-radius:12px;border:1px solid var(--edge);background:var(--panel-hi);color:var(--text);font-size:16px;cursor:pointer}.help-list{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:10px;line-height:1.5}.help-list.small{font-size:14px;gap:8px}.help-note{color:var(--muted);font-size:14px}.about-attrib{color:var(--muted);font-size:13px}.toast{position:fixed;left:50%;bottom:26px;transform:translate(-50%,20px);background:var(--panel);border:1px solid var(--edge);color:var(--text);padding:10px 18px;border-radius:999px;font-weight:600;opacity:0;transition:opacity .2s ease,transform .2s ease;z-index:60}.toast.show{opacity:1;transform:translate(-50%)}.countdown{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font:800 18vmin/1 var(--font);color:var(--gold);text-shadow:0 6px 24px rgba(0,0,0,.6);pointer-events:none;z-index:5}.countdown.pop{animation:pop .5s ease}@keyframes pop{0%{transform:scale(.6);opacity:0}40%{transform:scale(1.08);opacity:1}to{transform:scale(1);opacity:.9}}.pause-ov{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#040810db;border-radius:16px;z-index:6}.pause-card{display:flex;flex-direction:column;gap:10px;padding:18px;text-align:center}.lobby-searching{display:flex;align-items:center;justify-content:center;gap:10px;color:var(--muted);padding:40px 0;font-weight:600}.spinner{width:20px;height:20px;border:3px solid var(--edge);border-top-color:var(--gold);border-radius:50%;animation:spin .8s linear infinite;flex:none}.spinner.sm{width:14px;height:14px;border-width:2px}@keyframes spin{to{transform:rotate(360deg)}}.room-entry,.lobby{display:flex;flex-direction:column;gap:12px}.re-field,.lobby-link,.re-input{width:100%;min-width:0;padding:13px 14px;border-radius:12px;border:1px solid var(--edge);background:var(--ground);color:var(--text);font:600 16px/1 var(--font)}.re-row,.re-join,.lobby-invite,.lobby-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.lobby-invite>*{min-width:0}.re-title,.lobby h2,.lobby h3,.lobby-title{text-align:center}.re-sub,.lobby-sub,.re-note,.lobby-wait{color:var(--muted);text-align:center;font-size:14px}.lobby-code{text-align:center;font:800 30px/1 var(--font);letter-spacing:.16em;color:var(--gold)}.lobby-players,.lobby-roster{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.lobby-players li{background:var(--panel);border:1px solid var(--edge);border-radius:12px;padding:10px 12px;display:flex;gap:8px;align-items:center}.lobby-badge{font-size:12px;color:var(--muted)}.lobby-badge.ok{color:var(--gold)}.lobby-qr{display:flex;justify-content:center;padding:8px 0}.lobby-qr svg{width:190px;height:190px;max-width:70%}.lobby-modes{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}.mode-btn{min-height:44px}.host-pick{text-align:center;color:var(--muted)}.host-pick strong{color:var(--gold)}.lobby-flash{text-align:center;color:var(--gold);font-weight:700}.game{gap:6px;max-width:100%}.hud{display:flex;align-items:center;gap:8px;min-height:44px;width:100%}.hud-turn{flex:1;display:flex;align-items:center;gap:8px;font-weight:700;font-size:15px;min-width:0}.hud-mode{color:var(--muted);font-size:13px;font-weight:600}.clockbar{height:4px;width:100%;background:var(--panel);border-radius:999px;overflow:hidden;flex:none}.clockbar i{display:block;height:100%;background:var(--gold);transition:width .3s linear}.clockbar.low i{background:#e2603f}.strip{display:flex;gap:6px;width:100%}.pchip{flex:1 1 0;min-width:0;display:flex;align-items:center;justify-content:center;gap:6px;min-height:40px;padding:6px 8px;border-radius:12px;border:1px solid var(--edge);background:var(--panel);color:var(--text);font:600 13px/1 var(--font);cursor:pointer}.pchip .pn{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.pchip .pv{font-weight:800;color:var(--gold);flex:none}.pchip.me{border-color:var(--gold)}.pchip.waiting{opacity:.75}.rtok,.pchip:before{content:"";width:10px;height:10px;border-radius:50%;flex:none}.pchip.s0:before,.rtok.s0{background:#f0b429}.pchip.s1:before,.rtok.s1{background:#5fd3c4;border-radius:2px}.pchip.s2:before,.rtok.s2{background:#ff8a6b;clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%)}.pchip.s3:before,.rtok.s3{background:#b79cff;clip-path:polygon(50% 0,100% 100%,0 100%)}.rtok{display:inline-block}.tray-host{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"label side" "tray tray";align-items:center;gap:4px 8px;width:100%;background:var(--panel);border:1px solid var(--edge);border-radius:16px;padding:8px 10px;flex:none}.tray-label{grid-area:label;margin:0;color:var(--muted);font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;min-height:15px}.tray{grid-area:tray;display:flex;gap:6px;min-height:52px;align-items:center;min-width:0;flex-wrap:wrap}.tray-side{grid-area:side;justify-self:end}.tray-empty{margin:0;color:var(--muted);font-size:13px}.die{display:inline-block;vertical-align:middle;width:46px;height:46px;flex:none;border-radius:11px;border:1px solid rgba(0,0,0,.25);background:var(--die);padding:5px;cursor:default;box-shadow:0 2px 4px #00000073;transition:transform .14s ease,opacity .14s ease,box-shadow .14s ease}button.die{cursor:pointer}.die .pips{display:grid;grid-template:repeat(3,1fr) / repeat(3,1fr);width:100%;height:100%;gap:2px}.die .pips i{background:var(--die-pip);border-radius:50%;align-self:center;justify-self:center;width:78%;height:78%}.die.sm{width:22px;height:22px;border-radius:6px;padding:2px;box-shadow:none}.die.sm .pips{gap:1px}.die.on{outline:3px solid var(--gold);outline-offset:2px;transform:translateY(-4px)}.die.shifted{background:var(--gold)}.die.spilling{opacity:.5;transform:translateY(5px) rotate(-6deg)}.die:disabled{opacity:.34}.shims{display:flex;align-items:center;gap:4px}.shim-pips{display:flex;gap:3px;margin-right:2px}.shim-pips i{width:8px;height:8px;transform:rotate(45deg);background:transparent;border:1.5px solid var(--muted)}.shim-pips i.on{background:var(--gold);border-color:var(--gold)}.shimbtn{min-width:36px;min-height:44px;border-radius:10px;border:1px solid var(--edge);background:var(--ground);color:var(--text);font:700 15px/1 var(--font);cursor:pointer}.shimbtn.on{background:var(--gold);border-color:var(--gold);color:#201704}.shimbtn:disabled{opacity:.35}.sheet-host{position:relative;width:100%;flex:0 1 auto}.sheet{display:flex;flex-direction:column;gap:6px;background:var(--sheet);border-radius:16px;padding:8px;color:var(--ink)}.sheet.flash,.sheet-host.flash .sheet{outline:3px solid var(--gold)}.sheet-host.shaking{animation:shake .3s ease}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(var(--shake))}75%{transform:translate(calc(-1 * var(--shake)))}}.track{display:block;width:100%;text-align:left;border:2px solid transparent;border-radius:12px;background:transparent;padding:2px 4px 4px;font:inherit;color:inherit}button.track{cursor:pointer}.track.live{border-color:var(--tc);background:#ffffff73}.t0{--tc: var(--amber);color:var(--tc)}.t1{--tc: var(--teal);color:var(--tc)}.t2{--tc: var(--rust);color:var(--tc)}.t3{--tc: var(--violet);color:var(--tc)}.thead{display:flex;align-items:baseline;gap:6px;font-size:12px;font-weight:700;min-height:16px}.thead .tg{font-size:13px}.thead .trule{color:var(--ink-muted);font-weight:500;font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}.thead .tsc{font-size:14px;font-weight:800;flex:none}.cells{display:grid;gap:4px;margin-top:3px}.ladder-cells{grid-template-columns:repeat(5,minmax(0,1fr))}.run-cells{grid-template-columns:repeat(7,minmax(0,1fr))}.tally-cells{grid-template-columns:repeat(6,minmax(0,1fr))}.weight-cells{grid-template-columns:repeat(4,minmax(0,1fr))}.cell,.box,.pair{position:relative;background:var(--cell-empty);border:1.5px solid var(--tc);border-radius:7px;display:flex;align-items:center;justify-content:center;min-width:0;font-weight:800}.cell{height:38px;font-size:17px}.cell.done{background:var(--tc);color:var(--sheet)}.cell.done b,.cell.done .plus{color:var(--sheet)}.cell.next{background:var(--cell-live)}.run-cells .cell b{font-size:14px}.run-cells .plus{font-size:10px;vertical-align:super}.cell.fresh,.box.fresh,.pair.fresh{animation:popmark .45s ease}@keyframes popmark{0%{transform:scale(.55)}55%{transform:scale(1.14)}to{transform:scale(1)}}.tcol{display:flex;flex-direction:column;align-items:center;gap:3px;min-width:0}.tcol .stack{display:flex;flex-direction:column;gap:2px;width:100%}.box{height:16px}.box.done{background:var(--tc)}.tcol .die.sm{border-color:#0000004d}.pair{height:40px;gap:2px;padding:0 2px;font-size:13px;background:var(--cell-empty)}button.pair{cursor:pointer}.pair .pan{flex:1;min-width:0;height:26px;border-radius:5px;background:var(--sheet);display:flex;align-items:center;justify-content:center;font-size:15px}.pair .pan.want{border:1.5px dashed var(--tc);opacity:.85}.pair em{font-size:9px;font-style:normal;opacity:.75;flex:none}.pair.done{background:var(--tc);color:var(--sheet)}.pair.done .pan{background:#ffffffd9;color:var(--ink)}.pair.live,.track.live .pair{box-shadow:0 0 0 2px var(--tc)}.bpip{position:absolute;top:-5px;right:-3px;font-style:normal;font-size:9px;font-weight:800;line-height:1;padding:2px 3px;border-radius:5px;background:var(--bonus);color:var(--sheet)}.cell.done .bpip,.box.done .bpip,.pair.done .bpip{opacity:.55}.sheet.compact .cell{height:30px;font-size:15px}.sheet.compact .pair{height:32px}.prompt{text-align:center;color:var(--muted);font-size:14px;margin:0;min-height:20px;flex:none}.turn-actions{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;flex:none}.results-head{text-align:center}.results-head h2{margin:0 0 6px;font-size:26px}.results-sub,.results-tally,.results-missed{margin:0 0 4px;color:var(--muted);font-size:14px}.results-missed{color:var(--gold)}.rrows{display:flex;flex-direction:column;gap:10px}.rrow{background:var(--panel);border:1px solid var(--edge);border-radius:16px;padding:12px 14px}.rrow.won{border-color:var(--gold)}.rname{display:flex;align-items:center;gap:8px;font-weight:700}.rname em{font-style:normal;color:var(--muted);font-weight:500;font-size:13px}.rtotal{margin-left:auto;font-size:22px;font-weight:800;color:var(--gold)}.rverdict{color:var(--muted);font-size:13px;margin:2px 0 8px}.rstats{display:grid;grid-template-columns:repeat(auto-fit,minmax(72px,1fr));gap:6px;margin:0}.rstats div{background:var(--panel-hi);border-radius:10px;padding:7px 4px;text-align:center}.rstats div.dropped{opacity:.45}.rstats dt{color:var(--muted);font-size:11px}.rstats dd{margin:2px 0 0;font-weight:700;font-size:16px}.waiting-note{color:var(--muted);font-size:13px;text-align:center;margin:0}.fault-note{color:#ff8a6b;font-weight:600}@media(max-width:359px){.die{width:40px;height:40px}.cell{height:34px;font-size:15px}.thead .trule{display:none}}@media(max-height:719px)and (orientation:portrait){.cell{height:32px}.pair{height:34px}.pair .pan{height:22px}.box{height:14px}.die{width:42px;height:42px}}@media(min-width:720px)and (max-width:999px)and (min-height:560px){.screen{max-width:680px}.cell{height:46px;font-size:20px}.pair{height:48px}.box{height:20px}}@media(min-width:1000px){.screen{max-width:720px}.screen.game{max-width:780px;padding:20px 16px;gap:10px}.die{width:54px;height:54px;border-radius:13px}.cell{height:50px;font-size:22px}.run-cells .cell b{font-size:17px}.pair{height:54px;font-size:15px}.pair .pan{height:34px;font-size:19px}.box{height:22px}.die.sm{width:26px;height:26px}.thead{font-size:13px}.bpip{font-size:10px}.menu{max-width:620px}.results-screen{max-width:860px}}@media(orientation:landscape)and (max-height:559px){.screen.game{display:grid;grid-template-columns:minmax(0,260px) minmax(0,1fr);grid-template-areas:"hud hud" "clock clock" "strip sheet" "tray sheet" "prompt sheet" "act sheet";align-content:start;gap:4px 12px;padding:6px 10px;max-width:100%}.game .hud{grid-area:hud;min-height:34px}.game .clockbar{grid-area:clock}.game .strip-host{grid-area:strip}.game .tray-host{grid-area:tray}.game .prompt{grid-area:prompt;font-size:12px;min-height:16px}.game .sheet-host{grid-area:sheet}.game .turn-actions{grid-area:act;justify-content:flex-start}.cell{height:28px;font-size:14px}.pair{height:30px}.pair .pan{height:20px;font-size:14px}.box{height:12px}.die{width:38px;height:38px}.thead .trule{display:none}}@media(prefers-reduced-motion:reduce){.spinner{animation-duration:1ms}.countdown.pop,.cell.fresh,.box.fresh,.pair.fresh,.sheet-host.shaking{animation:none}.btn,.chip,.die,.clockbar i{transition:none}}
