/* Full-screen play surface. Browser controls remain available on every phone. */
body.playing{background:#061d2c;color:#edf6fc;overscroll-behavior-y:contain}
body.playing .topbar,body.playing footer{display:none}
body.playing .shell{width:100%;max-width:none;margin:0}
body.playing #game{width:100%;max-width:none;min-height:100dvh;margin:0;padding:12px max(16px,env(safe-area-inset-left)) 132px;display:flex;flex-direction:column;background:radial-gradient(ellipse at 50% 40%,#164d59 0,#092d3d 42%,#051925 100%)}
body.playing .game-nav{margin:0;gap:15px;position:relative;z-index:2}
body.playing .game-nav .text-button{color:#e8f4f9;font-size:.9rem;padding:9px 12px;border-radius:10px;background:#ffffff0c;border:1px solid #ffffff1d}
body.playing .game-heading{margin:8px 0 12px;justify-content:center;text-align:center;gap:0}
body.playing .game-heading h1{font-size:clamp(2rem,7vw,3.8rem);margin:0;color:#fff}
body.playing .game-heading .eyebrow,body.playing .game-number{display:none}
body.playing .turnbar{width:min(100%,760px);align-self:center;background:#061c2a80;border-color:#ffffff12;color:#edf6fc;box-shadow:none;margin-bottom:10px}
body.playing .turn-info span,body.playing .round{color:#a5c7cc}
body.playing .arena{width:100%;max-width:1000px;align-self:center;flex:1;display:flex;flex-direction:column;border-radius:0;background:transparent;box-shadow:none;overflow:visible}
body.playing #play-stage{flex:1;display:flex;flex-direction:column}
body.playing .stage{flex:1;min-height:340px;padding:18px 0;display:flex;flex-direction:column;justify-content:center;align-items:center;width:100%}
body.playing .stage>div,body.playing .stage>p{max-width:100%}
body.playing .stage .stake-row,body.playing .stage .thirty-score{width:min(100%,440px)}
body.playing .stage-intro,body.playing .game-note{font-size:1rem;line-height:1.5;max-width:620px;margin-inline:auto}
body.playing .stage-foot{color:#c1d6dd;font-size:.8rem;letter-spacing:0}
body.playing .arena-bottom{background:none;border:0;justify-content:center;gap:18px;color:#9ec0c9;padding:15px 0 0}
body.playing .dock{width:100%;max-width:none;background:#071c2cf7;border-color:#355565;padding:14px max(16px,calc((100vw - 740px)/2)) max(12px,env(safe-area-inset-bottom));box-shadow:0 -12px 30px #00101855}
body.playing .dock-meta,body.playing .skip{color:#c4d9e3}
body.playing .controls{width:100%;margin:auto}.controls button{touch-action:manipulation}
.direction-badge{align-self:center;padding:6px 12px;text-align:center;font-size:.75rem;font-weight:800;letter-spacing:.06em;color:#d7ff72;background:#d7ff7210;border:1px solid #d7ff7220;border-radius:99px;margin:0 0 5px}
.result-direction{font-size:1rem;font-weight:800;letter-spacing:.1em;padding:10px 15px;border-radius:10px;background:#ffcf7130;color:#ffe4a6;margin:0 auto 18px;max-width:420px}.give-result .result-direction{color:#d5ff63;background:#a5dc4330}
body.playing .result-stage{padding:24px 8px;flex:1;min-height:360px;display:flex;flex-direction:column;justify-content:center}
body.playing .wheel-wrap{width:clamp(240px,65vw,410px);max-width:80vw;flex-shrink:0}
body.playing .pitch{width:100%;max-width:470px;min-height:260px}
body.playing .reaction-pads{width:min(100%,600px)}body.playing .reaction-pad{min-height:220px}
body.playing .bomb-grid{width:min(100%,430px)}
body.playing .bomb-config{width:min(100%,430px)}
body.playing .dice-duel{width:min(100%,570px);gap:clamp(20px,7vw,90px);margin:48px auto}
/* Sculpted dice: ivory enamel, shaded edges, inset pips and a table shadow. */
.dice-scene{--size:66px;--half:33px;isolation:isolate;perspective:850px}
.dice-scene:after{content:'';position:absolute;left:-8%;right:-14%;bottom:-27px;height:18px;border-radius:50%;background:#0009;filter:blur(6px);z-index:-1;transform:rotate(-12deg)}
.cube-face{border-radius:11px;border:1px solid #f7ecd8;background:linear-gradient(145deg,#fffef9 5%,#fff6de 50%,#d8c9a8 100%);padding:11px;gap:4px;box-shadow:inset 0 0 0 2px #fff9,inset 3px 4px 7px #fff,inset -3px -4px 7px #b5a37a55}
.cube-face.face-2,.cube-face.face-3{background:linear-gradient(145deg,#eaddc0,#bba57a)}
.cube-face.face-4{background:linear-gradient(145deg,#fff,#fff3d4)}
.cube-face .pip{background:radial-gradient(circle at 62% 70%,#315069,#0c2335 70%);box-shadow:inset 2px 3px 3px #020e1a,0 1px 1px #fff;border:1px solid #b9ad98}
.die .dice-scene{--size:82px;--half:41px}.die{width:132px;height:145px}
.six-dice{grid-template-columns:repeat(3,96px);gap:26px 18px;min-height:260px;padding:24px 8px}
.thirty-die,.dice-placeholder{width:96px;height:100px;border-radius:18px}
.thirty-die.selected{background:linear-gradient(130deg,#c4fa5830,#7aac1d18);border-color:#d5ff63;box-shadow:0 0 0 3px #d5ff6310,0 8px 22px #0004;transform:translateY(-8px)}
.kept-row{gap:14px;min-height:0;margin:4px auto 14px;padding:13px 12px;border-radius:15px;background:#021a2599;border:1px solid #47748055}
.kept-row:empty{display:none}.locked-die{width:36px;display:flex;flex-direction:column;align-items:center;gap:14px;padding-top:7px}.locked-die small{font-size:.65rem;font-weight:800;letter-spacing:.07em;color:#ccf884}.locked-die .dice-scene{--size:28px;--half:14px}.locked-die .cube-face{padding:4px;gap:1px;border-radius:5px}.locked-die .dice-scene:after{bottom:-8px;height:7px;filter:blur(2px)}
.thirty-score{margin-bottom:10px}.thirty-score>div{background:#062532;border-color:#477986}.thirty-score b{font-size:2.2rem}.thirty-score span{font-size:.75rem}.selection-summary{font-size:.95rem}.thirty-note{min-height:48px}
.result-dice .dice-scene:after{display:none}.result-dice .cube-face{padding:5px;gap:2px;border-radius:6px}
/* Race broadcast: running horses, turf lanes and a live finish board. */
.race-banner{display:flex;justify-content:space-between;align-items:center;gap:10px;width:100%;padding:13px 15px;border-radius:12px;background:#d5ff63;color:#102b23;margin:0 0 14px;box-shadow:0 4px 0 #638c35}.race-banner b{font:800 1.5rem/1.15 var(--display);overflow-wrap:anywhere}.race-banner span{font-size:.8rem;font-weight:700;white-space:nowrap}
body.playing #stage-race{justify-content:flex-start;padding-top:15px}
body.playing .race-tracks{width:100%;max-height:none;overflow:visible;gap:14px;padding:0 0 15px}
.race-lane{position:relative;background:linear-gradient(130deg,#143d36,#092b29);padding:10px 12px 6px;border:1px solid #42796480;box-shadow:0 5px 0 #021b20;border-left:4px solid var(--lane-color)}
.race-label{font-size:.95rem;color:#e5f4e7;margin-bottom:8px}
.track{height:55px;border-top:2px solid #ddedcd44;border-bottom:4px solid #799b6b;background:repeating-linear-gradient(90deg,#28613c 0 39px,#2e6942 40px 79px);box-shadow:0 4px 0 #133821;transform:perspective(700px) rotateX(12deg)}
.horse{font-size:3rem;filter:drop-shadow(0 7px 2px #001a1880);text-shadow:none;transition:left .68s cubic-bezier(.16,.5,.45,1);bottom:4px}
.finish-flag{width:13px;bottom:0;top:0;background:repeating-conic-gradient(#fff 0 25%,#12262e 0 50%) 0 0/12px 12px;color:transparent;border-left:2px solid #fff6}
.horse.gallop{animation:race-stride .22s ease-in-out infinite alternate}
@keyframes race-stride{to{transform:translateY(-7px) rotate(-4deg)}}
@media(min-width:850px){body.playing #game{padding-top:18px}body.playing .game-nav{width:min(100%,1000px);align-self:center}body.playing .stage{min-height:420px}.six-dice{grid-template-columns:repeat(3,116px);gap:25px 30px}.thirty-die,.dice-placeholder{width:116px;height:112px}.dice-scene{--size:78px;--half:39px}}
@media(max-width:380px){body.playing #game{padding-inline:12px}.six-dice{grid-template-columns:repeat(3,80px);gap:22px 14px}.thirty-die,.dice-placeholder{width:80px;height:86px}.dice-scene{--size:56px;--half:28px}.die .dice-scene{--size:67px;--half:33.5px}.cube-face{padding:9px;gap:3px}.direction-badge{font-size:.68rem}.kept-row{gap:10px}.thirty-score b{font-size:1.8rem}}
@media(max-height:730px){body.playing .game-heading h1{font-size:2rem}body.playing .stage{min-height:290px;padding-top:12px}.six-dice{padding-top:16px;padding-bottom:16px;min-height:220px;gap:14px}.thirty-note{margin-bottom:0;min-height:42px}body.playing .turnbar{padding:8px 12px}body.playing .wheel-wrap{width:240px}}
/* Sculpted bomb: fixed geometry, hidden countdown and separate handoff state. */
#stage-passbomb .stage-intro{max-width:360px;min-height:44px;margin:0 auto 12px}
#stage-passbomb .bomb-object{width:250px;height:245px;min-height:0;position:relative;background:radial-gradient(ellipse at 50% 65%,#ff642023,transparent 67%);border:0;margin:10px auto 0;padding:0;overflow:visible}
#stage-passbomb .bomb-sculpture{position:relative;display:block;width:210px;height:200px;font-size:inherit;line-height:1;filter:drop-shadow(8px 14px 10px #0008);transform:none;animation:none}
.bomb-shell{position:absolute;display:grid;place-items:center;width:172px;height:172px;bottom:0;left:15px;border-radius:50%;background:radial-gradient(ellipse at 32% 22%,#99acb9 0,#455e72 15%,#192e41 40%,#040d19 76%);box-shadow:inset -12px -16px 20px #000b,inset 3px 4px 5px #e7faff7a,0 3px 0 #020914;border:1px solid #667f91;transform:rotate(-12deg)}
.bomb-shell:after{content:'';position:absolute;inset:15px;border-radius:50%;border:1px dashed #c9e1ef26}
.bomb-shell em{font:900 normal 1.6rem/1.1 var(--display);text-align:center;color:#cbd4cb99;letter-spacing:.06em;transform:rotate(-5deg)}
.bomb-cap{position:absolute;z-index:1;top:15px;right:42px;width:45px;height:33px;transform:rotate(28deg);border-radius:7px;background:repeating-linear-gradient(0deg,#243240 0 5px,#69808a 6px 8px);box-shadow:3px 1px 5px #000}
.bomb-fuse{position:absolute;top:-12px;right:22px;width:46px;height:55px;border:7px solid #b49764;border-bottom:0;border-right:0;border-radius:35px 0 0 0;transform:rotate(24deg)}
.bomb-fuse:after{content:'';position:absolute;right:-5px;top:-10px;width:13px;height:13px;border-radius:50%;background:#a59a74}
.running .bomb-fuse:after,.handoff .bomb-fuse:after{background:#fff6b1;box-shadow:0 0 9px 5px #ffb22f,0 0 28px 9px #ff5b1f;animation:fuse-spark .24s infinite alternate}
#stage-passbomb .bomb-object b{position:absolute;bottom:0;left:0;right:0;font:800 1.1rem var(--display);letter-spacing:.12em;color:#ebf4f9}
#stage-passbomb .bomb-object.handoff{background:radial-gradient(ellipse,#baf36c30,transparent 68%)}
#stage-passbomb .handoff .bomb-shell{box-shadow:inset -12px -16px 20px #000b,inset 3px 4px 5px #e7faff7a,0 0 28px #bcf36c35}
#stage-passbomb .paused .bomb-sculpture{filter:grayscale(1) drop-shadow(8px 14px 10px #0008)}
.bomb-progress{display:flex;justify-content:center;gap:10px;margin:14px 0 4px}
.bomb-progress i{width:17px;height:17px;border-radius:50%;background:#142a38;border:2px solid #476071;box-shadow:inset 0 2px 5px #0008}
.bomb-progress i.lit{background:var(--lime);border-color:#d8ffa4;box-shadow:0 0 12px #baf76b70}
#stage-passbomb .signal-status{font-size:.9rem;min-height:20px;margin:12px 0 3px}
.bomb-passes{font-size:.85rem;color:#8eabbc;margin:4px 0 12px}
#stage-passbomb .tap-pop .bomb-sculpture{animation:bomb-tap .17s ease-out}
.bomb-result:before{content:'BOEM';display:block;font:900 italic 2rem var(--display);letter-spacing:.14em;color:#ffab66;text-shadow:0 0 28px #ff552e;animation:bomb-burst .55s ease-out}
@keyframes fuse-spark{to{transform:scale(.7) rotate(45deg);box-shadow:0 0 5px 4px #ffd96d,5px -7px 0 -4px #ffdb7d,-7px 4px 0 -4px #ffa53e}}
@keyframes bomb-tap{50%{transform:scale(.94) rotate(-4deg)}}
@keyframes bomb-burst{from{opacity:0;transform:scale(.6)}60%{transform:scale(1.12)}to{opacity:1;transform:scale(1)}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}

/* Fixed viewport: gameplay never scrolls; stage scales uniformly into its space. */
body.playing{position:fixed;inset:0;width:100%;height:100%;overflow:hidden;overscroll-behavior:none}
body.playing #game{position:fixed;inset:0;width:100%;height:100dvh;min-height:0;max-height:100dvh;overflow:hidden;display:grid;grid-template-rows:auto auto auto auto minmax(0,1fr) auto;padding:8px max(12px,env(safe-area-inset-left)) max(8px,env(safe-area-inset-bottom));gap:4px}
body.playing .game-nav{width:100%;align-self:auto;max-width:none;margin:0}
body.playing .game-heading{margin:2px 0}.game-heading h1{line-height:1.1}
body.playing .turnbar{justify-self:center;width:min(100%,680px);padding:7px 11px;margin:0}
body.playing .turn-info span{font-size:.7rem}body.playing .turn-info b{font-size:.9rem}body.playing .avatar{width:29px;height:29px}
body.playing .direction-badge{justify-self:center;margin:0;font-size:.7rem;padding:4px 10px}
body.playing .arena{position:relative;display:block;min-height:0;height:100%;width:100%;justify-self:center;overflow:hidden}
body.playing #play-stage{position:absolute;inset:0;display:block;min-height:0}
body.playing .stage,body.playing .result-stage{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);transform-origin:center;width:min(100%,680px);height:max-content;min-height:0;max-height:none;flex:none;padding:12px 8px;overflow:visible;box-sizing:border-box}
body.playing .result-stage{display:block}body.playing .result-stage.pop{animation:none}
body.playing .arena-bottom{display:none}
body.playing .dock{position:static;left:auto;bottom:auto;transform:none;width:100%;padding:9px 0 0;background:transparent;backdrop-filter:none;border-top:1px solid #47758255;box-shadow:none;z-index:3}
body.playing .controls{max-width:740px}body.playing .dock-meta{max-width:740px;margin:5px auto 0;font-size:.7rem;min-height:22px}body.playing .skip{font-size:.75rem;padding:2px 0}
body.playing .primary,body.playing .control{min-height:48px;font-size:1.1rem;padding:10px}
body.playing .score-list,body.playing .race-tracks{overflow:visible;max-height:none}
body.playing .result-number{font-size:5rem;line-height:1;margin:7px 0}body.playing .result-number.free,body.playing .result-number.special{font-size:3.7rem;margin:8px 0}
body.playing .result-direction{margin-bottom:10px;padding:7px;font-size:.85rem}body.playing .result-stage h3{margin:13px 0 8px;font-size:1.55rem}body.playing .result-extra{margin-top:10px}
body.playing .beer-row{margin-top:8px}.pager{display:flex;justify-content:center;align-items:center;gap:10px;margin:10px auto 0;width:min(100%,340px)}.pager:empty{display:none}.pager .control{width:100px;min-height:38px!important;font-size:.9rem!important;padding:6px!important}.pager>span{font-size:.8rem;white-space:nowrap;color:#c5e3e7}
body.playing .race-label{font-size:.9rem;margin-bottom:4px}body.playing .race-tracks{gap:9px;padding-bottom:0}body.playing .race-lane{padding:6px 9px 5px}body.playing .track{height:44px}body.playing .race-banner{padding:8px 12px;margin-bottom:8px}.race-banner b{font-size:1.25rem}
.risk-score{display:flex;flex-direction:column;align-items:center;gap:0;margin:0 0 18px}.risk-score>span,.risk-score small{font-size:.8rem;color:#a6c8d3;letter-spacing:.15em}.risk-score b{font:900 italic 5rem/1 var(--display);color:var(--lime);text-shadow:0 4px 0 #396038}
.vault-doors{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px;width:min(100%,430px);padding:24px 6px 15px;perspective:800px}
.vault-door{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:15px;min-height:153px;border-radius:12px;border:3px solid #7c9daa;color:#d4e7ed;background:linear-gradient(135deg,#688595,#294453 55%,#162b39);box-shadow:4px 5px 0 #061926,inset 0 0 0 4px #ffffff15,0 12px 17px #001622aa;transform-origin:left center;transition:transform .8s,background .5s;touch-action:manipulation}
.vault-door>span{font-size:.8rem;font-weight:800;letter-spacing:.07em}.vault-door>b{display:grid;place-items:center;width:60px;height:60px;border-radius:50%;background:linear-gradient(135deg,#d6e8ee,#78949d);color:#163245;box-shadow:3px 4px 0 #18323d;font-size:2.1rem}.vault-door.opening{transform:rotateY(-32deg);background:linear-gradient(135deg,#406151,#173d3c);opacity:1}.vault-door.opening>b{background:var(--lime)}
.lift-display{display:flex;flex-direction:column;align-items:center;margin-bottom:16px;gap:5px;padding:12px 26px;background:#021621;border:2px solid #385664;border-radius:12px;box-shadow:inset 0 3px 15px #0008}.lift-display>span,.lift-display small{font-size:.8rem;letter-spacing:.14em;color:#93aebc}.lift-display b{font:800 4.5rem/1 var(--display);color:var(--lime);text-shadow:0 0 18px #bcf06460}
.lift-shaft{width:min(70%,250px);height:200px;border-radius:12px;padding:12px;background:repeating-linear-gradient(0deg,#071722 0 38px,#315568 39px 42px);border:3px solid #658896;box-shadow:7px 8px 0 #011722;margin:0 auto 22px;overflow:hidden;perspective:800px}
.lift-cabin{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:15px;text-align:center;color:#e4eef0;border-radius:5px;background:linear-gradient(90deg,#354e5f 0%,#aac2cc 48%,#102d3d 49%,#102d3d 51%,#a4bac4 52%,#304a5c 100%);border:2px solid #ccdde3;box-shadow:inset 0 3px 15px #001c3970;transform:rotateY(-4deg)}.lift-cabin>span{font:900 italic 2rem var(--display);text-shadow:1px 2px #193442}.lift-cabin b{font-size:.7rem;background:#061d2c;padding:8px;border-radius:5px;color:var(--lime)}
.lift-shaft.moving{animation:lift-travel 1.5s ease-in-out}.lift-shaft.moving .lift-cabin{animation:lift-shake .16s infinite alternate}.lift-shaft.stuck .lift-cabin b{color:#ff917e}
@keyframes lift-travel{50%{background-position:0 150px;box-shadow:7px 8px 0 #011722,0 0 30px #b0f44e20}100%{background-position:0 300px}}
@keyframes lift-shake{to{transform:translateY(2px) rotateY(4deg)}}
@media(max-height:650px){body.playing .game-heading h1{font-size:1.7rem}body.playing .turnbar{display:none}body.playing #game{grid-template-rows:auto auto auto minmax(0,1fr) auto}body.playing .game-nav .text-button{padding:5px 10px}body.playing .direction-badge{font-size:.65rem}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
