:root{color-scheme:dark;--ink:#eefaff;--cyan:#32edff;--gold:#ffda58;--deep:#00152e;--board-size:min(680px,calc(100svh - 225px),calc(100vw - 70px));font-family:Arial,Helvetica,sans-serif}
*{box-sizing:border-box}
html{min-height:100%;background:#020b1c}
body.arctic-player{margin:0;min-width:300px;min-height:100svh;color:var(--ink);background:#052244 url("/slot-bang/assets/background.png") center center/cover fixed no-repeat;overflow-x:hidden;-webkit-tap-highlight-color:transparent}
body.arctic-player:before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(ellipse at 50% 35%,transparent 30%,#0011264d 80%)}
button,output{font:inherit}button{cursor:pointer;touch-action:manipulation;-webkit-user-select:none;user-select:none}button:disabled{cursor:default}button:focus-visible,canvas:focus-visible{outline:3px solid #ffea77;outline-offset:5px}button:disabled:not(#spin){opacity:.62}button svg{width:65%;height:65%;overflow:visible;filter:drop-shadow(0 0 3px #4ddcff)}button:active:not(:disabled){transform:translateY(2px) scale(.97)}button[aria-pressed=true]{box-shadow:0 0 0 2px #a4faff,0 0 16px #0bdcff,inset 0 0 16px #229eff}
.icon-library{position:absolute;width:0;height:0;overflow:hidden}.player{position:relative;isolation:isolate;min-height:100svh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:91px 16px 25px;gap:17px}.player-header{position:absolute;z-index:8;left:25px;right:25px;top:19px;height:62px;display:flex;align-items:center;gap:15px}.theme-name{position:absolute;top:-5px;left:0;transform:translateY(-50%);color:#2be8ff;text-shadow:1px 2px 3px #000,0 0 8px #0033bb;font-size:14px;font-weight:900;letter-spacing:.7px;white-space:nowrap}.top-button{width:60px;height:60px;border-radius:17px!important}.top-button#back{margin-right:auto}.top-button#history-button{margin-left:auto}.ice-button{position:relative;display:grid;place-items:center;flex:none;padding:0;color:#f4fcff;border:2px solid #c5f8ff;border-radius:20px;background:radial-gradient(ellipse at 45% 10%,#15d7ffbf 0,transparent 41%),linear-gradient(165deg,#092a91 0,#002874 45%,#000b43 65%,#003f97 100%);box-shadow:0 0 0 2px #064d91,0 0 0 3px #c7e5ff,0 0 12px #0099ff,inset 0 0 0 2px #002267,inset 0 0 0 4px #338bff,inset 0 -4px 7px #00abff;transition:filter .16s,transform .12s,box-shadow .16s;text-shadow:0 0 6px #84cfff}.ice-button:before{content:"";pointer-events:none;position:absolute;inset:3px;border:1px solid #93e7ffc9;border-radius:inherit;background:linear-gradient(125deg,#ffffff83,transparent 12%,transparent 88%,#d6ffffbf);box-shadow:inset 0 2px 3px #e7ffff5c}.ice-button:hover:not(:disabled){filter:brightness(1.18)}.info-symbol{display:grid;place-items:center;width:35px;height:35px;border:3px solid #edfaff;border-radius:50%;font-size:32px;line-height:1;font-weight:800;box-shadow:0 0 5px #5fdcff}
.game-stage{position:relative;width:var(--board-size);flex:none;margin:0 auto;z-index:2}.board-frame{position:relative;width:100%;aspect-ratio:1;padding:7px;border:3px solid #bdeeff;border-radius:8px;background:linear-gradient(130deg,#f6fdff 0%,#507cad 8%,#0c4c86 15%,#bceaff 24%,#eafaff 28%,#106dbe 34%,#021647 39%,#74c9e7 48%,#f6feff 53%,#16558b 61%,#cce9fc 77%,#3e87b5 86%,#d9faff 100%);box-shadow:0 0 0 2px #034b7d,0 0 0 4px #b1e9ff,0 0 0 6px #125b94,0 0 24px #00aaffb3,0 18px 40px #000a,inset 0 0 0 3px #0c3663;transform:translateZ(0)}.board-window{position:relative;z-index:1;aspect-ratio:1;width:100%;background:#001326;border:1px solid #9bddff;box-shadow:inset 0 0 30px #000,0 0 7px #087dff;overflow:hidden}.board-window:after{content:"";position:absolute;inset:0;pointer-events:none;box-shadow:inset 0 0 26px #00101d}.board-window canvas{display:block;width:100%;height:100%;aspect-ratio:1;touch-action:manipulation}.frame-art{position:absolute;z-index:3;pointer-events:none;inset:-4%;width:108%;height:108%;object-fit:fill;filter:drop-shadow(0 0 5px #007bff)}.brand-mark{position:absolute;z-index:5;left:50%;top:-92px;transform:translateX(-50%);width:58%;height:110px;display:grid;place-items:center;pointer-events:none;filter:drop-shadow(0 0 8px #028aff)}.brand-mark img{position:relative;z-index:2;display:block;max-width:100%;width:100%;height:100%;object-fit:contain}.brand-fallback{position:absolute;z-index:1;top:19%;font-size:clamp(38px,5.5vw,66px);font-weight:1000;letter-spacing:-4px;line-height:1;color:#e7faff;text-shadow:-2px -2px #90e1ff,2px 3px #053c79,0 5px #061d41,0 0 12px #13c2ff}.brand-fallback span{color:#ffcd50;text-shadow:-1px -1px #ffffce,2px 3px #9c3c00,0 5px #061d41}.brand-mark:has(img[src]) .brand-fallback{visibility:hidden}.ice-corner{position:absolute;width:42px;height:42px;z-index:4;background:linear-gradient(135deg,#e6ffff 0,#286fd0 25%,#b9f7ff 29%,#0652a6 46%,#071840 51%,#2cb3ff 75%,#e4ffff);clip-path:polygon(0 0,100% 12%,75% 38%,100% 62%,43% 57%,12% 100%);filter:drop-shadow(0 0 4px #28bbff)}.ice-corner--tl{top:-17px;left:-15px}.ice-corner--tr{top:-17px;right:-15px;transform:rotate(90deg)}.ice-corner--bl{bottom:-17px;left:-15px;transform:rotate(-90deg)}.ice-corner--br{bottom:-17px;right:-15px;transform:rotate(180deg)}.frame-gem{position:absolute;z-index:5;top:47%;width:27px;height:36px;border-radius:50%;border:2px solid #d1ffff;background:radial-gradient(circle at 35% 25%,#edffff 0,#5affff 8%,#007bff 30%,#0716ab 62%,#003d8f 85%);box-shadow:0 0 0 3px #337dc3,0 0 0 5px #a5eaff,0 0 15px #00a2ff}.frame-gem--left{left:-17px}.frame-gem--right{right:-17px}.game-badges{position:absolute;left:16px;bottom:13px;z-index:6;pointer-events:none}.free-badge{display:flex;align-items:center;gap:4px;padding:3px 7px;border:1px solid #7ad9fb80;border-radius:12px;font-size:11px;font-weight:700;color:#ffe58c;background:#001629d9;box-shadow:0 0 8px #0e59bf66}.free-badge:has(#free:empty){display:none}.status{position:absolute;z-index:6;top:100%;margin-top:7px;width:100%;min-height:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center;font-size:11px;font-weight:600;line-height:1.3;color:#bcecff;text-shadow:0 1px 4px #000,0 0 4px #000;pointer-events:none}
.control-dock{position:relative;z-index:6;display:grid;grid-template-columns:minmax(130px,1.2fr) minmax(140px,1.12fr) 116px minmax(130px,1.12fr) 90px 60px 56px 56px;grid-template-areas:"balance bet spin win fast auto sound help";align-items:center;gap:10px;width:min(1200px,calc(100vw - 34px));height:87px;margin-top:17px;padding:9px 12px;border:2px solid #c1efff;border-radius:45px;background:linear-gradient(167deg,#e9faff 0%,#639cc5 7%,#0b497e 12%,#d2edfd 18%,#438bb4 30%,#0e4b84 40%,#07417e 62%,#80bdde 84%,#eafaff 92%,#276ba0 100%);box-shadow:0 0 0 2px #104679,0 0 18px #17b4ff88,inset 0 0 0 3px #1a5c8a,inset 0 0 16px #e3ffff99}.control-dock:before{content:"";position:absolute;z-index:-1;inset:8px;border:1px solid #3ac2ff;background:linear-gradient(180deg,#002348,#052441 70%,#001630);border-radius:32px;box-shadow:inset 0 0 16px #00101c}.value-panel{position:relative;display:flex;align-items:center;gap:6px;height:62px;min-width:0;padding:7px 11px;border:2px solid #9ccff4;border-radius:23px;background:linear-gradient(150deg,#071f43 0,#00111f 45%,#041d39 85%,#0b3e65 100%);box-shadow:0 0 0 1px #00182c,inset 0 2px 3px #000,0 1px 4px #2cd0ff}.balance-panel{grid-area:balance}.bet-panel{grid-area:bet;padding-inline:7px;gap:5px}.win-panel{grid-area:win}.shell-icon{flex:none;width:30px;height:33px;filter:drop-shadow(0 0 5px #8583ff)}.bet-shell{display:none}.value{display:block;min-width:0;margin:auto;font-family:Arial,Helvetica,sans-serif;font-stretch:condensed;font-weight:900;font-size:clamp(21px,2.2vw,30px);letter-spacing:-1px;line-height:1;white-space:nowrap;text-shadow:0 2px 1px #000,0 0 9px #000}.balance-value{color:#2eeaff}.bet-value{color:#f6f6f2;font-size:25px}.win-value{color:#ffdb61}.small-button{position:relative;display:grid;place-items:center;flex:none;width:31px;height:31px;padding:0;border:1px solid #c6efff;border-radius:50%;color:white;background:radial-gradient(ellipse at 40% 0,#2dd7ff,#004eaf 40%,#001a57 70%);box-shadow:0 0 0 2px #031326,inset 0 0 0 2px #125bcb,0 2px 3px #000;font-size:25px;font-weight:700;line-height:1}.spin-button{grid-area:spin;position:relative;isolation:isolate;align-self:center;justify-self:center;display:grid;place-items:center;width:120px;height:120px;margin:0;border:3px solid #deffff;border-radius:50%;color:#fff;background:radial-gradient(ellipse at 50% 15%,#22edff 0,#007ae4 18%,#092ca1 50%,#00146c 72%,#0063cb 90%,#77efff 100%);box-shadow:0 0 0 3px #1877db,0 0 0 5px #b9f3ff,0 0 0 8px #075099,0 0 24px #00b7ff,inset 0 0 0 3px #0068d1,inset 0 0 20px #16c9ff;font-size:clamp(25px,2.5vw,34px);font-weight:800;line-height:1;letter-spacing:.8px;text-shadow:0 2px 3px #06196d,0 0 9px #a9d9ff;transition:filter .15s,transform .12s}.spin-button:before{content:"";position:absolute;z-index:-2;inset:-17px;border:7px solid #85dcff;background:linear-gradient(25deg,transparent 35%,#d8ffff 36%,#1063b5 39%,transparent 42%,transparent 65%,#bcfaff 68%,transparent 72%);clip-path:polygon(50% 0,55% 8%,63% 3%,66% 12%,77% 8%,78% 19%,90% 17%,86% 29%,98% 30%,91% 40%,100% 50%,91% 57%,98% 69%,86% 73%,90% 84%,77% 82%,76% 94%,64% 88%,58% 99%,49% 92%,40% 100%,35% 90%,23% 94%,23% 81%,10% 84%,14% 71%,2% 68%,10% 58%,0 50%,9% 41%,3% 29%,15% 27%,11% 16%,24% 18%,24% 7%,35% 12%,40% 2%,45% 8%);filter:drop-shadow(0 0 6px #20c6ff);pointer-events:none}.spin-button:after{content:"";position:absolute;inset:6px;pointer-events:none;border:1px solid #6beeff;border-radius:50%;box-shadow:0 0 8px #54dfff,inset 0 0 6px #5ef2ff}.spin-button:hover:not(:disabled){filter:brightness(1.18)}.spin-button:disabled{color:#d2e9ff;filter:saturate(.75)}.fast-button{grid-area:fast;width:100%;height:57px;border-radius:29px}.fast-button svg{width:39px;height:48px;filter:drop-shadow(0 0 4px #f8c94380)}.round-button{width:54px;height:54px;border-radius:50%}.auto-button{grid-area:auto;width:58px;height:58px}.sound-button{grid-area:sound}.help-button{grid-area:help;font-size:36px;font-weight:800}.auto-letter{display:grid;place-items:center;width:38px;height:38px;border:2px solid #e8faff;border-radius:50%;font-size:29px;font-weight:500;line-height:1;padding-bottom:1px;box-shadow:0 0 4px #99d8ff}.demo-note{position:absolute;bottom:4px;left:0;right:0;text-align:center;margin:0;color:#97c9e3a6;font-size:8px;letter-spacing:1.5px;text-shadow:0 1px 3px #000;pointer-events:none}
.player-dialog{position:fixed;max-width:min(620px,calc(100vw - 30px));width:620px;max-height:80svh;margin:auto;padding:20px;color:#e8faff;border:2px solid #9bdfff;border-radius:20px;background:linear-gradient(145deg,#073b61,#00162d 65%);box-shadow:0 0 0 4px #155c99,0 0 36px #048fff77}.player-dialog::backdrop{background:#000d22be;backdrop-filter:blur(6px)}.dialog-heading{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:16px}.dialog-heading h2{font-size:22px;color:#6bebff;margin:0}.dialog-close{width:38px;height:38px;border-radius:50%;font-size:29px;line-height:1}.dialog-body{font-size:14px;line-height:1.65;overflow:auto;max-height:calc(80svh - 100px)}.dialog-body p{margin:0 0 13px}.dialog-body button,.dialog-body select,.dialog-body input{font:inherit}.dialog-body input,.dialog-body select{color:#effaff;background:#062c48;border:1px solid #3d88b1;border-radius:6px;padding:7px}.dialog-body fieldset{border:1px solid #27688d;border-radius:10px}.dialog-body label{display:block;margin:9px 0}.dialog-body button:not(.ice-button){color:#effaff;background:#075887;border:1px solid #75c9ec;border-radius:7px;padding:8px 12px}.dialog-body .count-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.dialog-body .count-grid input{width:100%;min-width:0}.dialog-body .tests{display:flex;flex-wrap:wrap;gap:6px}.dialog-body .history{white-space:pre-wrap}.sr-only,.technical-controls{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
@media(min-width:1300px){.player-header{left:35px;right:35px}.top-button{width:64px;height:64px}.control-dock{gap:13px;padding-inline:17px}}
@media(min-width:761px) and (max-width:1050px){.control-dock{grid-template-columns:minmax(105px,1.1fr) minmax(120px,1fr) 98px minmax(105px,1fr) 69px 48px 46px 46px;gap:7px;padding:9px;height:80px}.value-panel{height:57px;padding-inline:6px;gap:4px}.shell-icon{width:23px}.bet-panel{gap:4px}.value{font-size:22px}.bet-value{font-size:20px}.small-button{width:26px;height:26px;font-size:22px}.spin-button{width:101px;height:101px;font-size:28px}.round-button,.auto-button{width:44px;height:44px}.auto-letter{width:31px;height:31px;font-size:25px}.fast-button{height:48px}.help-button{font-size:29px}.player-header{left:21px;right:21px}.top-button{width:54px;height:54px}.game-stage{--board-size:min(660px,calc(100svh - 217px),calc(100vw - 70px))}}
@media(max-width:760px){:root{--board-size:min(calc(100vw - 30px),calc(100svh - 301px),590px)}body.arctic-player{background-position:center top;background-attachment:scroll}.player{min-height:100svh;justify-content:center;padding:115px 10px 33px;gap:9px}.player-header{top:18px;left:22px;right:22px;height:51px;justify-content:space-between;gap:0}.theme-name{display:none}.top-button{width:51px;height:51px;border-radius:15px!important}.top-button#back,.top-button#history-button{margin:0}.info-symbol{width:31px;height:31px;font-size:29px}.game-stage{margin:0 auto}.board-frame{padding:3px;border-width:2px;border-radius:5px;box-shadow:0 0 0 2px #07518d,0 0 0 3px #b1e9ff,0 0 18px #00aaffb3,0 12px 25px #0008}.brand-mark{top:-65px;width:65%;height:83px}.brand-fallback{font-size:46px}.frame-art{inset:-3.3%;width:106.6%;height:106.6%}.ice-corner{width:27px;height:27px}.ice-corner--tl{top:-11px;left:-9px}.ice-corner--tr{top:-11px;right:-9px}.ice-corner--bl{bottom:-11px;left:-9px}.ice-corner--br{bottom:-11px;right:-9px}.frame-gem{width:17px;height:25px;border-width:1px;box-shadow:0 0 0 2px #337dc3,0 0 0 3px #a5eaff,0 0 10px #00a2ff}.frame-gem--left{left:-10px}.frame-gem--right{right:-10px}.game-badges{left:7px;bottom:7px}.free-badge{font-size:9px;padding:2px 5px}.status{margin-top:5px;font-size:9px;min-height:11px}.control-dock{width:min(calc(100vw - 27px),560px);height:165px;margin-top:7px;padding:0;grid-template-columns:1fr 1fr 1fr 1fr;grid-template-rows:49px 55px 43px;grid-template-areas:"balance balance bet bet" "win spin spin sound" "help fast auto sound";gap:8px 9px;border:0;border-radius:0;background:none;box-shadow:none}.control-dock:before{display:none}.value-panel{height:49px;gap:5px;padding:6px 10px;border-width:2px;border-radius:21px;box-shadow:0 0 0 2px #1b5988,0 0 0 3px #8fc9eb,inset 0 2px 3px #000,0 0 9px #41caff}.value{font-size:25px;letter-spacing:-.8px}.shell-icon{width:27px;height:30px}.bet-panel{padding:5px 8px;gap:5px}.bet-shell{display:block;width:23px}.bet-value{font-size:19px;letter-spacing:-.6px}.small-button{width:25px;height:25px;font-size:22px}.win-panel{align-self:start;grid-column:1/span 2;width:76%;height:47px;border-radius:18px;padding-inline:7px}.win-value{font-size:23px}.win-panel .shell-icon{width:25px}.spin-button{grid-column:2/span 2;grid-row:2/span 1;align-self:start;width:96px;height:96px;margin-top:-2px;font-size:29px}.spin-button:before{inset:-12px;border-width:5px}.fast-button{grid-row:3;grid-column:2;justify-self:end;align-self:end;width:91px;height:43px;transform:translateX(8px);z-index:2}.fast-button:active:not(:disabled){transform:translateX(8px) translateY(2px) scale(.97)}.fast-button svg{width:30px;height:40px}.auto-button{grid-row:3;grid-column:3;justify-self:start;align-self:end;width:58px;height:43px;border-radius:25px;transform:translateX(10px);z-index:2}.auto-button:active:not(:disabled){transform:translateX(10px) translateY(2px) scale(.97)}.auto-letter{width:32px;height:32px;font-size:26px;border-width:2px}.help-button{grid-row:3;grid-column:1;justify-self:start;align-self:start;width:44px;height:44px;font-size:30px;margin-left:5px;margin-top:-6px}.sound-button{grid-row:3;grid-column:4;justify-self:end;align-self:start;width:44px;height:44px;margin-right:5px;margin-top:-6px}.demo-note{bottom:8px;font-size:7px;letter-spacing:1px}.player-dialog{padding:15px}.dialog-heading h2{font-size:19px}}
@media(max-width:380px){:root{--board-size:min(calc(100vw - 26px),calc(100svh - 292px),590px)}.player{padding-top:106px;padding-bottom:30px}.player-header{top:14px;left:18px;right:18px}.top-button{width:45px;height:45px}.brand-mark{top:-58px;height:75px}.control-dock{gap:7px;width:calc(100vw - 24px);grid-template-rows:44px 51px 42px;height:151px}.value-panel{height:44px;padding-inline:6px}.value{font-size:22px}.bet-value{font-size:17px}.bet-panel{gap:4px}.bet-shell{width:19px}.small-button{width:23px;height:23px;font-size:20px}.shell-icon{width:23px}.win-panel{height:44px}.win-value{font-size:20px}.spin-button{width:89px;height:89px;font-size:26px}.fast-button{width:80px;height:40px}.auto-button{width:53px;height:40px}.help-button,.sound-button{width:40px;height:40px;font-size:27px}.auto-letter{width:30px;height:30px;font-size:24px}}
@media(max-width:760px) and (min-height:850px){.player{justify-content:center;padding-top:128px;padding-bottom:35px}.control-dock{margin-top:11px}.brand-mark{top:-76px;height:94px}}
@media(max-height:570px) and (min-width:761px){:root{--board-size:min(calc(100svh - 158px),calc(100vw - 300px))}.player{padding-top:55px;padding-bottom:20px;gap:10px}.brand-mark{top:-52px;height:69px;width:52%}.control-dock{height:65px;margin-top:14px;max-width:1000px;grid-template-columns:minmax(110px,1fr) minmax(120px,1fr) 88px minmax(110px,1fr) 75px 46px 44px 44px;gap:8px}.value-panel{height:49px}.value{font-size:23px}.bet-value{font-size:22px}.spin-button{width:87px;height:87px;font-size:26px}.round-button,.auto-button{width:42px;height:42px}.fast-button{height:44px}.auto-letter{width:30px;height:30px;font-size:24px}.help-button{font-size:28px}.top-button{width:45px;height:45px}.player-header{top:20px}.theme-name{font-size:11px}.game-stage{--board-size:min(calc(100svh - 158px),calc(100vw - 300px))}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
/* Production ice frame includes its own XD68 crest. Its transparent opening is
   x112–1140 / y258–1124 in the 1254px square source. A 1:1.19 outer
   presentation makes the opening square without obscuring any playable cell. */
:root{--board-size:min(780px,calc((100svh - 146px)/1.19),calc(100vw - 50px))}
.player{padding-top:15px;padding-bottom:27px;gap:0}
.game-stage{width:var(--board-size)}
.board-frame{aspect-ratio:1/1.19;padding:0;border:0;border-radius:0;background:none;box-shadow:none}
.board-window{position:absolute;left:8.9%;top:20.6%;width:82%;height:69%;aspect-ratio:auto;border:0;box-shadow:0 0 10px #077fd1}
.frame-art{inset:0;width:100%;height:100%;object-fit:fill;filter:drop-shadow(0 0 5px #007bff)}
.game-badges{left:10.5%;bottom:11%;}
.status{top:auto;bottom:5px;font-size:10px;margin:0;padding-inline:13%;}
.control-dock{margin-top:2px}
.particle-layer{position:absolute;z-index:8;inset:0;overflow:hidden;pointer-events:none}
.ice-particle,.bubble-particle{position:absolute;display:block;width:7px;height:11px;background:#a4f5ff;box-shadow:0 0 7px #4cdeff;transform-origin:center;pointer-events:none}.ice-particle{clip-path:polygon(50% 0,100% 45%,65% 100%,0 60%)}.bubble-particle{width:6px;height:6px;background:#c0f9ff88;border:1px solid #d7ffff;border-radius:50%}
.dialog-body{white-space:pre-line}
[hidden]{display:none!important}
@media(min-width:761px) and (max-width:1050px){.game-stage{--board-size:min(780px,calc((100svh - 140px)/1.19),calc(100vw - 50px))}}
@media(max-width:760px){:root{--board-size:min(calc(100vw + 8px),calc((100svh - 240px)/1.19),650px)}.player{justify-content:center;padding:72px 0 27px;gap:0}.game-stage{margin:0 auto;flex:none}.board-frame{padding:0;border:0;border-radius:0;box-shadow:none}.frame-art{inset:0;width:100%;height:100%}.status{bottom:4px;font-size:8px;padding-inline:14%}.game-badges{left:11%;bottom:12%}.control-dock{width:calc(100vw - 30px);max-width:520px;margin-top:-8px}.player-header{top:16px}.demo-note{bottom:5px}}
@media(max-width:380px){:root{--board-size:min(calc(100vw + 8px),calc((100svh - 227px)/1.19),650px)}.player{padding-top:67px;padding-bottom:25px}.control-dock{margin-top:-7px}}
@media(max-width:760px) and (min-height:850px){.player{padding-top:80px;padding-bottom:30px}.control-dock{margin-top:-7px}}
@media(max-height:570px) and (min-width:761px){:root{--board-size:min(calc((100svh - 110px)/1.19),calc(100vw - 300px))}.player{padding-top:5px;padding-bottom:18px;gap:0}.game-stage{--board-size:min(calc((100svh - 110px)/1.19),calc(100vw - 300px))}.control-dock{margin-top:0}.status{bottom:0}}
[hidden]{display:none!important}#admin-panel{max-width:1000px;margin:24px auto;padding:24px;background:#03182cf5;border:1px solid #5acaff;border-radius:18px;color:#def5ff}.admin-view{overflow-y:auto}.admin-view .player{min-height:100svh}#admin-panel .panel{padding:18px;margin:15px 0;border:1px solid #2b6380;border-radius:14px}#admin-panel input,#admin-panel select{font:16px system-ui;max-width:100%;background:#092f48;color:white;border:1px solid #52a5c6;border-radius:6px;padding:8px}#admin-panel label{display:block;margin:8px 0}#admin-panel fieldset{border:1px solid #2b6380;margin:12px 0;padding:12px;border-radius:10px}#admin-panel .count-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}#admin-panel .count-grid input{width:100%;min-width:0}#admin-panel .tests{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}#admin-panel button{background:#0d3c60;border:1px solid #69cafa;border-radius:8px;color:white;padding:9px;font:inherit}#admin-panel p,#admin-panel li{line-height:1.6}#admin-panel .history{max-height:220px;overflow:auto}#admin-panel .legend{display:flex;gap:8px;flex-wrap:wrap}#admin-panel .intro,#admin-panel .step,#admin-panel h1,#admin-panel>.eyebrow{display:none}#admin-panel .notice{font-size:12px}#admin-panel button:disabled,#admin-panel fieldset:disabled{opacity:.55}#admin-panel .count-grid label{min-width:0}@media(max-width:600px){#admin-panel{margin:12px 6px;padding:12px}#admin-panel .panel{padding:10px}.admin-view .player{min-height:100svh}}
/* Reserve the full spin-circle height so mobile lower-row controls never cover it. */
@media(max-width:760px){:root{--board-size:min(calc(100vw + 8px),calc((100svh - 295px)/1.19),650px)}.control-dock{height:199px;grid-template-rows:49px 91px 43px}}
@media(max-width:380px){:root{--board-size:min(calc(100vw + 8px),calc((100svh - 279px)/1.19),650px)}.control-dock{height:182px;grid-template-rows:44px 82px 42px}}
/* Whole raster buttons: border, face, icon and text are baked into each image. */
.player .ice-button,.player .spin-button,.player .small-button,#dialog-close{padding:0!important;border:0!important;background:none!important;box-shadow:none!important;overflow:visible;display:grid;place-items:center;isolation:isolate}
.player .ice-button:before,.player .ice-button:after,.player .spin-button:before,.player .spin-button:after,.player .small-button:before,.player .small-button:after,#dialog-close:before,#dialog-close:after{display:none!important;content:none!important}
.player button>img,#dialog-close>img{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none;max-width:100%;max-height:100%;filter:drop-shadow(0 2px 4px #001c3c)}
.player button.active>img{filter:drop-shadow(0 0 7px #52f7ff) brightness(1.18)}
.player button:disabled>img{filter:saturate(.6) brightness(.7)}
.player .top-button svg,.player .round-button svg{display:none}
.board-window{background:#06324d url('/slot-bang/assets/inner-ocean.png') center/cover!important}.board-window:after{box-shadow:inset 0 0 22px #00101d80}

/* Free rounds only: translucent red cells preserve the ocean beneath. */
.free-spin-mode .board-stage{isolation:isolate}.free-spin-mode .board-stage::before{content:"";position:absolute;inset:13% 0 0;z-index:-1;pointer-events:none;border-radius:22%;background:linear-gradient(135deg,rgba(255,35,70,.5),rgba(235,50,95,.35) 45%,rgba(155,220,255,.4));filter:blur(24px);transform:scale(1.08)}

/* Approved PC composition: wide full-height slot and a separate right rail.
   Desktop-only aperture variables let production frame art change independently.
   The canvas backing store remains controlled by the game, not this stylesheet. */
@media (min-width:900px) and (min-height:500px),
       (min-width:761px) and (min-aspect-ratio:6/5) {
  body.arctic-player .player {
    /* A 300 × 784 design-unit group scales as one, without per-control caps.
       Keep 14% clear on each rail side and 7.9% / 8.6% above / below. */
    --pc-rail-width:max(260px,25vw);
    --pc-rail-art:url("/slot-bang/assets/pc-rail-frame.png");
    --pc-column-gap:clamp(10px,1.2vw,20px);
    --pc-unit:min(calc(var(--pc-rail-width)*.72/300),calc((100svh - 20px)*.835/784));
    --pc-group-width:calc(var(--pc-unit)*300);
    --pc-group-height:calc(var(--pc-unit)*784);
    --pc-group-top:calc((100svh - 20px)*.067 + ((100svh - 20px)*.859 - var(--pc-group-height))/2);
    --pc-rail-padding:calc((var(--pc-rail-width) - var(--pc-group-width))/2);
    --pc-panel-height:calc(var(--pc-unit)*80);
    --pc-spin-size:calc(var(--pc-unit)*220);
    --pc-aux-height:calc(var(--pc-unit)*84);
    --pc-aux-width:calc(var(--pc-unit)*140);
    --pc-row-gap:calc(var(--pc-unit)*12);
    --pc-nav-size:calc(var(--pc-unit)*84);
    --pc-nav-gap:calc(var(--pc-unit)*24);
    --pc-aux-gap:calc(var(--pc-unit)*20);
    --pc-opening-left:6.93%;
    --pc-opening-top:18.57%;
    --pc-opening-width:86.14%;
    --pc-opening-height:70.79%;
    display:grid;
    grid-template-columns:minmax(0,1fr) var(--pc-rail-width);
    grid-template-rows:calc(var(--pc-group-top) + var(--pc-nav-size) + var(--pc-row-gap)) minmax(0,1fr);
    column-gap:var(--pc-column-gap);
    row-gap:0;
    align-items:center;
    align-content:stretch;
    justify-content:stretch;
    width:100vw;
    height:100svh;
    min-height:100svh;
    margin:0;
    padding:10px;
  }
  body.arctic-player .player::before {
    content:"";
    position:absolute;
    z-index:0;
    top:calc(10px + 5svh);
    right:calc(10px + var(--pc-rail-width)*.1);
    bottom:calc(10px + 5svh);
    width:calc(var(--pc-rail-width)*.8);
    background:#05243b url("/slot-bang/assets/inner-ocean.png") center/cover no-repeat;
    opacity:.85;
    pointer-events:none;
  }
  body.arctic-player .player::after {
    content:"";
    position:absolute;
    z-index:1;
    top:10px;
    right:10px;
    bottom:10px;
    width:var(--pc-rail-width);
    background-image:var(--pc-rail-art,none);
    background-position:center;
    background-repeat:no-repeat;
    background-size:100% 100%;
    pointer-events:none;
  }
  body.arctic-player .player > .game-stage {
    grid-column:1;
    grid-row:1 / 3;
    width:100%;
    height:calc(100svh - 20px);
    min-width:0;
    max-width:none;
    margin:0;
    align-self:stretch;
    justify-self:stretch;
  }
  body.arctic-player .game-stage .board-frame {
    width:100%;
    height:100%;
    aspect-ratio:auto;
  }
  body.arctic-player .game-stage .board-window {
    left:var(--pc-opening-left);
    top:var(--pc-opening-top);
    width:var(--pc-opening-width);
    height:var(--pc-opening-height);
    aspect-ratio:auto;
  }
  body.arctic-player .game-stage #board {
    display:block;
    width:100%;
    height:100%;
    aspect-ratio:auto;
  }
  body.arctic-player .player > .player-header {
    grid-column:2;
    grid-row:1;
    position:relative;
    inset:auto;
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    grid-template-rows:var(--pc-nav-size);
    gap:var(--pc-nav-gap);
    align-content:start;
    align-items:center;
    justify-items:center;
    width:100%;
    height:100%;
    min-width:0;
    margin:0;
    padding:var(--pc-group-top) var(--pc-rail-padding) var(--pc-row-gap);
    align-self:stretch;
  }
  body.arctic-player .player-header .theme-name {display:none}
  body.arctic-player .player-header #back,
  body.arctic-player .player-header #history-button,
  body.arctic-player .player-header #fullscreen {
    grid-row:1;
    width:var(--pc-nav-size);
    height:var(--pc-nav-size);
    min-width:0;
    margin:0;
    border-radius:0!important;
  }
  body.arctic-player .player-header #back {grid-column:1}
  body.arctic-player .player-header #history-button {grid-column:2}
  body.arctic-player .player-header #fullscreen {grid-column:3}
  body.arctic-player .player > .control-dock {
    grid-column:2;
    grid-row:2;
    position:relative;
    inset:auto;
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    grid-template-rows:repeat(3,var(--pc-panel-height)) var(--pc-spin-size) repeat(2,var(--pc-aux-height));
    grid-template-areas:"balance balance" "bet bet" "win win" "spin spin" "fast auto" "help sound";
    gap:var(--pc-row-gap) var(--pc-aux-gap);
    align-items:center;
    justify-items:center;
    align-content:start;
    width:100%;
    max-width:none;
    height:100%;
    margin:0;
    padding:0 var(--pc-rail-padding);
    border:0;
    border-radius:0;
    background:none;
    box-shadow:none;
    align-self:stretch;
  }
  body.arctic-player .player > .control-dock::before,
  body.arctic-player .player > .control-dock::after {display:none;content:none}
  body.arctic-player .control-dock > .value-panel {
    width:100%;
    height:var(--pc-panel-height);
    min-width:0;
    margin:0;
    padding:calc(var(--pc-unit)*8) calc(var(--pc-unit)*12);
    gap:calc(var(--pc-unit)*8);
    border-width:calc(var(--pc-unit)*2);
    border-radius:calc(var(--pc-unit)*22);
    align-self:center;
    justify-self:stretch;
  }
  body.arctic-player .control-dock > .balance-panel {grid-area:balance}
  body.arctic-player .control-dock > .bet-panel {grid-area:bet;padding-inline:calc(var(--pc-unit)*12);gap:calc(var(--pc-unit)*6)}
  body.arctic-player .control-dock > .win-panel {grid-area:win}
  body.arctic-player .control-dock .shell-icon {width:calc(var(--pc-unit)*36);height:calc(var(--pc-unit)*40)}
  body.arctic-player .control-dock .bet-shell {display:block;width:calc(var(--pc-unit)*28)}
  body.arctic-player .control-dock .value {
    font-size:calc(var(--pc-unit)*42);
    line-height:1;
    letter-spacing:calc(var(--pc-unit)*-.5);
  }
  body.arctic-player .control-dock .bet-value {font-size:calc(var(--pc-unit)*28)}
  body.arctic-player .control-dock #bet-minus,
  body.arctic-player .control-dock #bet-plus {
    width:calc(var(--pc-unit)*40);
    height:calc(var(--pc-unit)*40);
    flex:none;
    margin:0;
    border-radius:0!important;
  }
  body.arctic-player .control-dock #spin {
    grid-area:spin;
    width:var(--pc-spin-size);
    height:var(--pc-spin-size);
    margin:0;
    transform:none;
    border-radius:0!important;
    align-self:center;
    justify-self:center;
  }
  body.arctic-player .control-dock #fast,
  body.arctic-player .control-dock #auto,
  body.arctic-player .control-dock #help,
  body.arctic-player .control-dock #sound {
    width:var(--pc-aux-width);
    height:var(--pc-aux-height);
    margin:0;
    transform:none;
    border-radius:0!important;
    align-self:center;
    justify-self:center;
  }
  body.arctic-player .control-dock #fast {grid-area:fast}
  body.arctic-player .control-dock #auto {grid-area:auto}
  body.arctic-player .control-dock #help {grid-area:help}
  body.arctic-player .control-dock #sound {grid-area:sound}
  body.arctic-player .player-header button,
  body.arctic-player .control-dock button {
    padding:0!important;
    border:0!important;
    background:none!important;
    box-shadow:none!important;
    border-radius:0!important;
    overflow:visible;
    clip-path:none;
  }
  body.arctic-player .player-header button::before,
  body.arctic-player .player-header button::after,
  body.arctic-player .control-dock button::before,
  body.arctic-player .control-dock button::after {display:none!important;content:none!important}
  body.arctic-player .player-header button > img,
  body.arctic-player .control-dock button > img {
    display:block;
    width:100%;
    height:100%;
    max-width:100%;
    max-height:100%;
    object-fit:contain;
    object-position:center;
    border-radius:0;
    clip-path:none;
  }
  body.arctic-player .control-dock button:active:not(:disabled) {transform:translateY(2px) scale(.97)}
  body.arctic-player .game-stage .status {
    bottom:0;
    font-size:clamp(9px,1.2svh,12px);
    padding-inline:10%;
  }
  body.arctic-player .player > .demo-note {
    grid-column:2;
    grid-row:2;
    position:relative;
    inset:auto;
    z-index:7;
    align-self:end;
    justify-self:center;
    width:100%;
    margin:0;
    padding:0;
    font-size:7px;
    letter-spacing:1px;
  }
}
