/* Midnight arcade. Quiet interface, dimensional objects, crisp instruments. */
:root{--paper:#090b10;--ink:#f6f8fb;--lime:#b0ffda;--blue:#8ba9ff;--green:#61e3b0;--muted:#9ba5b6;--line:#ffffff18;--display:'DM Sans',Arial,sans-serif;--body:'DM Sans',Arial,sans-serif}
body{background:radial-gradient(ellipse at 95% 0,#182131 0,transparent 48%),#090b10;color:#f3f6fc}
.topbar{height:76px;background:#090c12e8;border-bottom:1px solid #ffffff0f;padding-inline:max(20px,calc((100vw - 1080px)/2))}.brand-number{font:800 1.3rem var(--body);letter-spacing:-.05em;color:#f8fafc}.logo{box-shadow:none;border-radius:7px}.roster-button{background:#1a202c;border:1px solid #ffffff20;box-shadow:none;font-size:.8rem;border-radius:10px}.roster-button span{background:#b0ffda;color:#14261f}.sound{color:#b0bacb}
.shell{max-width:1080px}.hero{display:block!important;min-height:235px;padding:32px!important;background:radial-gradient(ellipse at 90% 50%,#25345288,transparent 60%),linear-gradient(120deg,#171c27,#10151f);border:1px solid #ffffff12;border-radius:26px;box-shadow:0 18px 50px #0003;overflow:hidden}
.hero:before{background:none}.hero:after{border:1px solid #9fb8ff16;box-shadow:0 0 0 28px #9fb8ff04;width:300px;height:300px;right:10%;top:-80px}
.hero .eyebrow{font:700 .7rem var(--body);letter-spacing:.18em;color:#a8b7d0}.hero h1{font:800 clamp(2.8rem,5.5vw,4.7rem)/.97 var(--body);letter-spacing:-.075em;max-width:70%;text-shadow:none;margin:22px 0 0}.hero h1 span{display:block;color:#b0ffda;text-shadow:none}.hero-bottom{display:block;max-width:65%;margin-top:20px}.hero-bottom p{font-size:.95rem;color:#acb7c9;line-height:1.5}.hero-badge{display:none}.hero-pint,.hero-chip,.scene-orbit,.scene-plinth{display:none}.hero-scene{right:25px;bottom:34px;transform:none;width:180px;height:180px;z-index:0}.hero-dice{right:35px;bottom:40px;transform:rotate(-10deg)}.hero-dice .dice-scene{--size:102px;--half:51px}
.selection-heading h2{font:700 1.2rem var(--body);letter-spacing:-.035em}.selection-heading .text-button{font-size:.8rem;border:0;color:#a5b3ce}.selection-heading{margin:28px 0 18px}
.game-grid{gap:16px}.game-tile,.game-tile:nth-child(even){background:linear-gradient(150deg,#1b212d,#111720);border:1px solid #ffffff11;box-shadow:0 10px 28px #0002;border-radius:22px;min-height:225px;padding:24px;grid-template-rows:62px minmax(2.4em,auto) 1fr;gap:13px;transition:transform .25s,border-color .25s,background .25s}
.game-tile:before{display:none}.game-tile:after{color:#8090a7;font-size:.6rem;font-weight:700;letter-spacing:.15em;right:22px;bottom:18px}.game-tile h3{font:700 1.3rem/1.2 var(--body);letter-spacing:-.035em;color:#f5f8ff}.game-tile p{color:#9daabd;font-size:.85rem;line-height:1.5}.tile-index{color:#78869c;font-size:.65rem;letter-spacing:.12em}
.tile-icon,.game-tile:nth-child(even) .tile-icon{width:60px;height:60px;border:1px solid #a4c5ff2b;border-radius:18px;background:radial-gradient(ellipse at 20% 0,#405575,#1f2c42 75%);box-shadow:0 6px 12px #0004,inset 0 1px #e1eaff22;transform:perspective(400px) rotateX(9deg) rotateY(-12deg);font-size:2.1rem;color:#b5d6ff;text-shadow:0 4px 5px #0006}
.game-tile:nth-child(3n+2) .tile-icon{background:radial-gradient(ellipse at 20% 0,#45695f,#193830 75%);border-color:#afffd32b}.game-tile:nth-child(3n) .tile-icon{background:radial-gradient(ellipse at 20% 0,#6b5677,#352642 75%);border-color:#d3b4ff2b}
@media(hover:hover){.game-tile:hover{transform:translateY(-4px);border-color:#c5deff40;box-shadow:0 14px 35px #0005}.game-tile:hover .tile-icon{transform:perspective(400px) rotateX(0) rotateY(0)}}
.home-note,footer{color:#7c899d;border-color:#ffffff0f}.home-note{font-weight:500;letter-spacing:.02em}
body.playing #game{background:radial-gradient(ellipse at 50% 38%,#1f293b 0,#101622 45%,#090d15 90%);gap:8px}
body.playing .game-nav .text-button{background:#ffffff06;border-color:#ffffff14;color:#ccd5e6;box-shadow:none;font:600 .8rem var(--body);padding:9px 13px;border-radius:11px}
.nav-club{box-shadow:none;border:0;border-radius:5px;opacity:.95}
body.playing .game-heading{margin:5px 0}body.playing .game-heading h1{font:750 clamp(1.45rem,5.5vw,2.15rem)/1.15 var(--body);letter-spacing:-.045em;text-shadow:none;text-transform:none}
body.playing .turnbar{background:#ffffff04;border:1px solid #ffffff0c;box-shadow:none;border-radius:13px;padding:8px 12px}.turn-info span{color:#8b9bb3!important;font-size:.65rem!important;letter-spacing:.07em!important}.turn-info b{color:#e5ecf8;font-size:.875rem!important;line-height:1.35}.round{font-size:.65rem!important;color:#8d9eb7!important}body.playing .avatar{background:#243649;color:#b0ffda;border:1px solid #bbffe026;box-shadow:none;font-size:.75rem}
body.playing .direction-badge{font:650 .75rem/1.45 var(--body);color:#b0ffda;letter-spacing:.025em;padding-block:2px 6px}
body.playing .arena,body[data-game] .arena{background:radial-gradient(ellipse at 50% 45%,#26304422,transparent 70%);border:1px solid #b9d2ff10;box-shadow:inset 0 1px #ffffff04;border-radius:28px;overflow:hidden}
body.playing .arena:before{display:none}body.playing .arena:after{left:10%;right:10%;bottom:12%;height:18%;background:radial-gradient(ellipse,#77b6bd0c,transparent 65%);opacity:.8}
body.playing .stage-intro,body.playing .game-note{font:400 1rem/1.5 var(--body);color:#c8d3e3}.stage-foot{color:#7e91ab!important;font-size:.72rem!important;letter-spacing:.02em!important}
body.playing .control,.primary{font:750 .92rem/1.3 var(--body);letter-spacing:0;min-height:54px;border-radius:15px;background:linear-gradient(160deg,#caffdf,#98f3c6);border:1px solid #dcffec;color:#133329;box-shadow:0 2px 0 #418968,0 9px 28px #68e6b514,inset 0 1px #fff8;transition:scale .15s,filter .15s}
body.playing .control.secondary{background:linear-gradient(#263345,#1d2837);color:#dce8f8;box-shadow:0 2px 0 #0a1019;border:1px solid #9db9e829}
body.playing .control:active:not(:disabled){scale:.975;translate:0 1px;box-shadow:0 1px #38654f}body.playing .control:disabled{opacity:.42;box-shadow:none}.dock-meta{color:#8492a8!important}.skip{color:#9dabc0!important}
.stake-row,.thirty-score>div{background:linear-gradient(135deg,#242e3e,#192331);border:1px solid #ffffff0c;box-shadow:inset 0 1px #ffffff07;border-radius:15px}.stake-row{padding:14px 17px}.stake-row span{font-size:.75rem;color:#a6b4c8}.stake-row>b{font:750 1.1rem var(--body);color:#cbffe5}
.thirty-score b{font:750 2rem/1.1 var(--body);letter-spacing:-.06em;color:#e7fff4;text-shadow:none}.thirty-score span{font-size:.65rem;color:#9dacc2}.thirty-score>div{padding:13px 3px}.selection-summary{color:#a8eccd;font-size:.8rem;font-weight:500}.kept-row{background:#080e1855;border:1px solid #c3daff13;box-shadow:inset 0 2px 9px #0002}.locked-die small{color:#9fb4cb;font-size:.6rem;letter-spacing:.1em}
.thirty-die{border:1px solid #ffffff08;background:#ffffff02;border-radius:19px}.thirty-die.selected{border-color:#a2f7ce88;background:#94f2c70c;box-shadow:0 0 24px #81eeba0e,inset 0 0 0 1px #bcffe51a;translate:0 -3px}.thirty-die.selected:after{background:#bbffdf;box-shadow:0 0 12px #b0ffda33}.six-dice{gap:20px 12px;padding-block:28px 20px}
body.playing .dice-duel>div{background:#ffffff03;border:1px solid #d2e4ff0c;border-radius:21px}.dice-duel>div>span{font-size:.85rem}.versus{font:600 .75rem var(--body);letter-spacing:.1em}
/* Local WebGL output replaces only presentation, never interactive targets. */
.object-canvas{position:absolute;display:none;pointer-events:none;max-width:none!important}.gpu-ready>.object-canvas{display:block}
.dice-scene>.object-canvas{inset:-35%;width:170%;height:170%;z-index:2}
.dice-scene.gpu-ready>.dice-cube{visibility:hidden}.dice-scene.gpu-ready:after{background:#000a;filter:blur(7px);bottom:-20px;height:12px;left:-15%;right:-15%}
.dice-scene.gpu-ready.is-rolling{animation:none}.dice-scene.gpu-ready.is-rolling:after{animation:dice-shadow 1.1s ease-out both}
.bomb-sculpture>.object-canvas{left:-15%;top:-8%;width:130%;height:130%;filter:drop-shadow(0 18px 13px #0006)}
.bomb-sculpture.gpu-ready>i{visibility:hidden}#stage-passbomb .bomb-sculpture.gpu-ready{filter:none;animation:none}
.traffic-light.gpu-ready{background:none;border-color:transparent;box-shadow:none;transform:none;isolation:isolate;width:130px;padding:17px;margin:10px auto 20px}
.traffic-light.gpu-ready>i{visibility:hidden}.traffic-light>.object-canvas{inset:-10%;width:120%;height:120%;filter:drop-shadow(9px 16px 12px #0007)}
.vault-door{isolation:isolate}.vault-door.gpu-ready{background:none;border-color:transparent;box-shadow:none;transform:none}.vault-door.gpu-ready:before,.vault-door.gpu-ready:after{display:none}.vault-door>.object-canvas{inset:-20%;width:140%;height:140%;z-index:-1;filter:drop-shadow(7px 12px 8px #0007)}
.vault-door.gpu-ready>b{background:none;box-shadow:none;border-color:transparent;color:transparent;rotate:0}.vault-door.gpu-ready.opening>b{color:#c4ffe0;font:800 1.1rem var(--body)}.vault-door.gpu-ready>span:not(.club-mark){font:650 .65rem var(--body);letter-spacing:.08em;color:#dbeef0;text-shadow:0 1px #0008}.vault-door.gpu-ready>.club-mark{width:45px;height:20px;bottom:24px;opacity:.8}
.vault-door.gpu-ready.opening{transform:perspective(600px) rotateY(-32deg)}
.tile-icon.rendered-icon,.game-tile:nth-child(even) .tile-icon.rendered-icon{background:none;border:0;box-shadow:none;transform:none;overflow:visible}
.rendered-icon .dice-scene{--size:43px;--half:21.5px}.rendered-icon>.bomb-sculpture{position:relative;display:block;width:47px;height:51px}.rendered-icon>.traffic-light{display:block;position:relative;width:29px!important;height:59px;min-height:0;margin:0!important;padding:0!important;border:0;background:none;box-shadow:none;transform:none}
.rendered-icon>.vault-door{position:relative;display:block;min-height:0!important;width:43px;height:55px;margin:0;padding:0!important;pointer-events:none}.rendered-icon>.vault-door:before,.rendered-icon>.vault-door:after{display:none}
.icon-fallback{position:absolute;inset:0;display:grid;place-items:center}.rendered-icon:has(>.gpu-ready)>.icon-fallback{display:none}.rendered-icon>.vault-door:not(.gpu-ready){visibility:hidden}
.grolsch-crate.gpu-ready{overflow:visible;background:none;border-color:transparent;box-shadow:none}.grolsch-crate>.object-canvas{inset:-20%;width:140%;height:140%;z-index:-1}.grolsch-crate{isolation:isolate}.grolsch-crate.gpu-ready b{font-size:17px;text-shadow:0 1px 2px #002c18}.grolsch-crate.gpu-ready span{font-size:5px;color:#d5ebd5}
.grolsch-cap.gpu-ready{background:none;border-color:transparent;box-shadow:none;isolation:isolate}.grolsch-cap>.object-canvas{inset:-20%;width:140%;height:140%;z-index:-1;filter:drop-shadow(2px 6px 3px #0007)}
.lift-shaft.gpu-ready{position:relative;isolation:isolate;overflow:visible;background:none;border-color:transparent;box-shadow:none}.lift-shaft>.object-canvas{inset:-15%;width:130%;height:130%;z-index:-1;filter:drop-shadow(7px 13px 9px #0006)}.lift-shaft.gpu-ready .lift-cabin{background:none;border-color:transparent;box-shadow:none}.lift-shaft.gpu-ready .lift-cabin b{font-size:.6rem;max-width:90%;background:#0c1829e8}
.playing-card,.table-card{box-shadow:0 1px 0 #e2e8e1,1px 3px 0 #8a9c9a,3px 10px 16px #0005;border-color:#f1f2ed;border-radius:13px;background:linear-gradient(120deg,#fff,#e9efef);color:#162535}.playing-card.red,.table-card.red{color:#e65369}.playing-card #card-rank{font:750 4rem var(--body);letter-spacing:-.08em}.table-card>b{font:750 2.8rem var(--body);letter-spacing:-.07em}.table-card.small>b{font-size:2.3rem}.club-card-back{background:repeating-linear-gradient(45deg,#ffffff05 0 1px,transparent 1px 7px),linear-gradient(120deg,#314263,#16273c);border-color:#d4dfed;box-shadow:2px 4px #697b94,4px 10px 18px #0006}
.wheel-wrap{border-color:#202d43;box-shadow:0 0 0 1px #729bb755,0 7px 0 2px #080e18,0 20px 38px #0006,inset 0 1px #e9f7ff80}.wheel-wrap:before{filter:drop-shadow(0 0 5px #b0ffe488)}.club-hub{box-shadow:0 3px #172438,0 8px 18px #0007}
.bomb-cell{background:linear-gradient(140deg,#34465d,#1d2d43);border:1px solid #c2d9fc30;box-shadow:0 4px #0b1424,0 8px 14px #0004,inset 0 1px #ffffff14;color:#d6e8ff;font:650 1rem var(--body)}.bomb-cell.safe{background:linear-gradient(#45816c,#245643);color:#d2ffec}.bomb-cell.bomb{background:radial-gradient(circle at 35% 20%,#e49e91,#a54757);box-shadow:0 4px #3e1c2c,0 0 30px #e55d6422}
.bomb-config label{background:#ffffff04;border-color:#ffffff0c;color:#a4b5cc}.bomb-config select{background:#202e41;border:1px solid #ffffff10;color:#e4efff;border-radius:9px}
.signal-status{font:750 1.3rem/1.3 var(--body);letter-spacing:-.03em;color:#b9ffe0}#stage-passbomb .bomb-object b{font:650 .875rem var(--body);color:#c8d5e8;letter-spacing:.12em}.bomb-progress i{background:#172435;border-color:#2e415c}.bomb-progress i.lit{background:#b0ffda;border-color:#d2ffe9;box-shadow:0 0 15px #87edbd55}.bomb-passes{color:#8fa4bc}
.risk-score b{font:750 5rem/1 var(--body);color:#baffdf;text-shadow:0 12px 30px #86ffd422;letter-spacing:-.075em}.risk-score>span,.risk-score small{font-size:.7rem;color:#9caec5}
.lift-display{border:1px solid #c4ddff20;background:linear-gradient(#1f2c3f,#101b2b);box-shadow:inset 0 3px 10px #0004;border-radius:16px}.lift-display b{font:650 4rem/1 var(--body);letter-spacing:-.075em;color:#baffde;text-shadow:0 0 25px #a2ffd42b}.lift-display>span,.lift-display small{font-size:.65rem}.lift-shaft{border:3px solid #60748c;box-shadow:6px 9px #090f19,12px 19px 25px #0005}.lift-cabin{border-color:#c8d3df;background:linear-gradient(100deg,#364b63,#a6b8c8 47%,#152b42 49% 51%,#b4c5d2 54%,#40556c)}
.race-banner{background:linear-gradient(130deg,#c8ffe4,#9ddabd);border:1px solid #e0fff0;box-shadow:none;color:#19372c;padding:12px!important}.race-banner b{font:750 .9rem/1.3 var(--body)}.race-banner span{font-size:.65rem}.race-lane{background:linear-gradient(#1d2c36,#18252d);border-color:#92c4b622;box-shadow:none}.race-label{font:600 .8rem var(--body);color:#d9e7ed}.track{background:repeating-linear-gradient(90deg,#244b3d 0 40px,#2b5343 40px 80px);border-color:#b4d1bd40;box-shadow:0 3px #10251f}
.tower-scene{background:radial-gradient(ellipse at top,#243c46,#111d27);border-color:#bdd7ee1a;box-shadow:inset 0 0 40px #0004}.arcade-score b{font:750 2rem var(--body);letter-spacing:-.05em}.arcade-score span{font-size:.65rem}.arcade-status{font:700 1rem var(--body);letter-spacing:0}.power-label{font-size:.75rem}.caps-meter{background:#0a1420;border-color:#3b5068}.caps-meter i{background:linear-gradient(90deg,#709fff,#b3ffda)}
body.playing .result-number{font:750 6rem/1.15 var(--body);letter-spacing:-.085em;color:#c3ffe4;text-shadow:0 15px 45px #91ffd52b;margin-block:8px!important}body.playing .result-number.special,body.playing .result-number.free{font-size:3.3rem;letter-spacing:-.055em}.result-stage h2{font:650 1rem var(--body);letter-spacing:.12em;color:#9ac2b4}.result-who{font:650 .8rem var(--body);letter-spacing:.08em}.result-direction{font:650 .8rem var(--body);background:#e5b7900a;border-color:#e5b79026;box-shadow:none;border-radius:10px}.give-result .result-direction{background:#b0ffda0b;border-color:#b0ffda26;box-shadow:none}body.playing .result-stage h3{font:700 1.2rem/1.35 var(--body);letter-spacing:-.03em}.club-seal{opacity:.85}#result-detail{font-size:.9rem;color:#afc0d7}.score-list li{background:#ffffff04;border-color:#ffffff0c}
dialog{background:linear-gradient(145deg,#202b3d,#101b2c);border:1px solid #b1cdff26;border-radius:24px;color:#f3f7ff}dialog h2{font:750 2.2rem/1.05 var(--body);letter-spacing:-.06em;color:#c4ffe4}dialog p{color:#aebdd2}.player-list li{background:#ffffff04;border-color:#ffffff10}.player-list li span{color:#b0ffda}.player-list li button{color:#acbdd3}.close{background:#ffffff0c!important}.club-handoff{background:#102033f5;border-color:#b0ffda30}.club-handoff b{font:750 1.7rem var(--body);letter-spacing:-.04em}
@media(max-width:600px){.topbar{height:64px;padding-inline:14px}.brand-number{font-size:1.05rem}.hero{padding:25px 22px!important;min-height:230px;margin-top:18px}.hero h1{font-size:2.8rem;max-width:74%}.hero-bottom{max-width:70%;margin-top:16px}.hero-bottom p{font-size:.85rem}.hero-scene{right:0;bottom:23px;width:100px;height:120px}.hero-dice{right:23px;bottom:25px}.hero-dice .dice-scene{--size:64px;--half:32px}.hero .eyebrow{font-size:.6rem}.game-grid{gap:13px}.game-tile,.game-tile:nth-child(even){padding:18px 15px;min-height:216px;border-radius:19px;grid-template-rows:53px minmax(2.4em,auto) 1fr;gap:13px}.game-tile h3{font-size:1.04rem;line-height:1.2}.game-tile p{font-size:.78rem;line-height:1.5}.game-tile:after{bottom:13px;right:15px}.tile-icon,.game-tile:nth-child(even) .tile-icon{width:51px;height:51px;border-radius:15px;font-size:1.8rem}.selection-heading h2{font-size:1.1rem}.selection-heading .text-button{font-size:.72rem}.tile-index{font-size:.6rem}body.playing #game{gap:6px}body.playing .game-heading h1{font-size:1.55rem}body.playing .game-nav .text-button{font-size:.75rem}.thirty-score b{font-size:1.8rem}.thirty-score span{font-size:.6rem}.thirty-score>div{padding:11px 3px}body.playing .control{font-size:.85rem;padding:12px 8px}.six-dice{gap:17px 10px}}
@media(max-width:350px){.hero h1{font-size:2.45rem}.hero-bottom p{font-size:.78rem}.hero-dice .dice-scene{--size:53px;--half:26.5px}.hero-scene{right:-8px}.game-tile h3{font-size:.96rem}.game-tile p{font-size:.75rem}.game-tile,.game-tile:nth-child(even){padding:16px 12px}.top-actions{gap:3px}.brand{gap:6px}}
@media(max-height:650px){body.playing #game{gap:4px}body.playing .game-heading{margin:0}body.playing .game-heading h1{font-size:1.3rem}body.playing .control{min-height:45px}.traffic-light.gpu-ready{width:110px}.six-dice{gap:12px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
