@import url('https://fonts.googleapis.com/css2?family=Cinzel:wght@400;600;700;900&family=DM+Sans:wght@400;500;600;700&display=swap');
:root{color-scheme:dark;--gold:#dcb970;--cream:#f9eaca;--muted:#b4a38b;--wine:#610f26}*{box-sizing:border-box}body{margin:0;background:#130d0d;color:var(--cream);font-family:'DM Sans',sans-serif;min-width:320px}.ambience{position:fixed;inset:0;background:linear-gradient(180deg,#120b0c80,#160a10dc 70%,#130d0d),url('assets/heidi_ho_1.png') center/cover;z-index:-1;filter:blur(3px)}main{max-width:1600px;margin:auto;padding:0 4%}button{font:inherit;color:var(--cream);cursor:pointer;border:1px solid #b18a4b63;background:#25171a;padding:10px 18px;border-radius:5px;transition:filter .2s,background .2s}button:hover{background:#543024;filter:brightness(1.15)}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #ffe2a0;outline-offset:4px}button:disabled{opacity:.45;cursor:not-allowed}header{height:84px;border-bottom:1px solid #dcb97026;display:flex;align-items:center;justify-content:space-between;gap:12px}.wordmark{text-decoration:none;color:var(--gold);font:900 30px 'Cinzel',Georgia,serif;display:flex;align-items:center;gap:15px}.wordmark span{font:600 11px 'DM Sans',sans-serif;letter-spacing:3px}.edition{font-size:10px;letter-spacing:2px;color:var(--muted)}.edition i{color:var(--gold);margin:0 15px}header button{font-size:11px;border:0;background:transparent}.title{text-align:center;padding:34px 0 26px}.eyebrow{color:var(--gold);font-size:10px;font-weight:700;letter-spacing:3px}h1{font:900 clamp(40px,5vw,72px)/1.1 'Cinzel',Georgia,serif;margin:10px 0 5px;background:linear-gradient(#fff6d9,#d0a057);background-clip:text;color:transparent;text-shadow:0 5px 25px #e2ac4320}.title p{color:var(--muted);font-size:13px;letter-spacing:1px;margin:8px}.saloon{display:grid;grid-template-columns:minmax(100px,1fr) minmax(0,830px) minmax(100px,1fr);align-items:center;gap:24px}.portrait{text-align:center;position:relative;align-self:stretch;padding-top:15px}.portrait-image{height:250px;max-height:29vw;mask-image:linear-gradient(#000 70%,transparent);background-repeat:no-repeat;filter:drop-shadow(0 0 20px #c0792d30)}.portrait .gambler{background-image:url('assets/the_gambler_1.png');background-size:auto 112%;background-position:53% 0}.portrait .heidi{background-image:url('assets/heidi_ho_1.png');background-size:auto 110%;background-position:34% 0}.portrait span{font-size:8px;color:var(--gold);letter-spacing:2px}.portrait h2{font:600 25px 'Cinzel',Georgia,serif;margin:7px 0}.portrait p{font-size:11px;line-height:1.8;color:var(--muted)}.machine{padding:6px;border:1px solid #bb8d4b;border-radius:16px;background:linear-gradient(135deg,#6b4729,#211410 25%,#4b281d 75%,#b58b45);box-shadow:0 25px 70px #000a,0 0 0 4px #1c1010,0 0 0 5px #b18a4b44}.machine-top{display:flex;justify-content:space-between;align-items:center;padding:13px 16px;color:var(--gold);font:600 12px 'Cinzel',Georgia,serif;letter-spacing:2px;background:linear-gradient(90deg,#260c14,#5d1c2a,#260c14);border-radius:10px 10px 0 0}.machine-top span:last-child{font:8px 'DM Sans',sans-serif;letter-spacing:1px}.reel-frame{padding:8px;position:relative;background:linear-gradient(#c29c55,#66421b,#d8bb76);box-shadow:inset 0 0 10px #000}.reels{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:4px;background:#140a09;overflow:hidden;padding:4px;border:2px solid #2b1712}.reel{display:grid;grid-template-rows:repeat(3,1fr);gap:4px;min-width:0}.symbol{height:clamp(70px,7.8vw,113px);display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;border:1px solid #b9914f38;border-radius:4px;background:radial-gradient(ellipse at 50% 35%,#443025,#211713 80%);text-shadow:0 3px 0 #000,0 0 18px #c98f3b33}.symbol.card{font:900 clamp(30px,4vw,58px) 'Cinzel',Georgia,serif;color:#e6c88b}.symbol.card[data-symbol="Q"],.symbol.card[data-symbol="9"]{color:#d48985}.symbol.card[data-symbol="K"],.symbol.card[data-symbol="10"]{color:#b1bdab}.symbol img{width:100%;height:100%;object-fit:cover;object-position:52% 20%;position:absolute}.symbol[data-symbol="gambler"] img{object-position:53% 23%;width:260%;height:155%;max-width:none;left:-80%;top:-9%}.symbol[data-symbol="lou"] img{object-position:50% 30%;width:240%;height:170%;max-width:none;left:-75%;top:-15%}.symbol[data-symbol="heidi"] img{width:210%;height:160%;max-width:none;left:-23%;top:-5%}.symbol .name{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(transparent,#140a0a);font:700 clamp(7px,.8vw,11px) 'Cinzel',Georgia,serif;text-align:center;padding:13px 0 5px;color:#ffe1a4;letter-spacing:1px}.wild{flex-direction:column;color:#f3d490;font:700 clamp(14px,1.9vw,26px) 'Cinzel',Georgia,serif}.wild b{font-size:1.5em}.scatter{flex-direction:column;color:#e5cda2;background:repeating-linear-gradient(45deg,#402f25,#402f25 7px,#34271f 7px,#34271f 14px);font-size:clamp(7px,.9vw,12px);letter-spacing:1px;gap:4px}.scatter b{border:1px dashed #d4b67b;padding:7px 3px}.scatter small{font-size:7px}.symbol.winning{box-shadow:inset 0 0 0 2px #ffe09c,inset 0 0 25px #d8a84980;animation:glow .8s ease-in-out infinite alternate}.symbol.winning:after{content:'';position:absolute;inset:0;border:2px solid #ffe09c;border-radius:4px;pointer-events:none}.payline-label{position:absolute;left:-6px;top:48%;background:var(--gold);color:#2c1b12;border-radius:50%;width:18px;height:18px;font-size:10px;display:grid;place-items:center}@keyframes glow{to{filter:brightness(1.35)}}.status{background:#270c15;text-align:center;color:#e6c89d;padding:13px 8px;font-size:12px;min-height:44px;border-bottom:1px solid #af84492b}.console{display:grid;grid-template-columns:1fr 1fr 1.25fr .8fr;align-items:center;gap:10px;background:linear-gradient(#381c1b,#241314);padding:20px 18px}.console label{display:block;font-size:8px;letter-spacing:1.5px;color:var(--muted);margin-bottom:8px}.meter strong{font-size:25px;font-weight:500;display:block;font-variant-numeric:tabular-nums}.console small{font-size:7px;letter-spacing:1px;color:#a7957e;display:block;margin-top:6px}.wager{text-align:center}.wager>div{display:flex;align-items:center;justify-content:center;gap:12px}.wager button{padding:2px 8px;background:#160d0c}.wager strong{font-size:20px}.spin{background:linear-gradient(#d94450,#9a1a35 55%,#691226);border:1px solid #e9ab78;box-shadow:inset 0 0 0 3px #efca7c38,0 5px 0 #150b0c,0 8px 20px #0006;font:900 28px 'Cinzel',Georgia,serif;padding:16px 10px;letter-spacing:3px;border-radius:9px}.spin span{display:block;font:600 7px 'DM Sans',sans-serif;letter-spacing:1.5px;margin-top:5px}.win-meter{text-align:right}.win-meter strong{color:var(--gold)}.machine-bottom{display:flex;justify-content:space-between;align-items:center;padding:6px 8px;background:#201213;border-radius:0 0 10px 10px}.machine-bottom button,.skip{font-size:9px;color:#bead94}.machine-bottom button{border:0;background:transparent;padding:8px}.skip{display:flex;align-items:center;gap:5px}.skip input{accent-color:#d8b370}.features{display:flex;justify-content:center;gap:50px;margin:35px auto 28px}.features>div{display:flex;align-items:center;gap:13px}.features b{font:30px Georgia;color:var(--gold)}.features span{font-size:9px;letter-spacing:1px;color:#ddc79f}.features small{display:block;font-size:10px;letter-spacing:0;color:#988773;margin-top:7px}footer{border-top:1px solid #c9a25b22;padding:20px 0;font-size:8px;color:#998b7c;letter-spacing:1px;display:flex;justify-content:space-between;align-items:center}footer button{font-size:9px;padding:5px 8px}.dev{background:#21191b;padding:20px;margin:10px 0 25px;border:1px dashed #9c8157}.dev p,.dev span{font-size:12px}.dev button{font-size:11px;margin:4px}dialog{width:min(660px,92vw);max-height:90dvh;overflow:auto;background:linear-gradient(145deg,#421c24,#1b1112);color:var(--cream);border:1px solid #c9a25b;border-radius:15px;padding:35px;box-shadow:0 20px 100px #000c}dialog::backdrop{background:#080406d9;backdrop-filter:blur(6px)}dialog h2{font:700 30px 'Cinzel',Georgia,serif;color:var(--gold);margin:13px 0}dialog p{font-size:13px;line-height:1.8;color:#c9bda9}.close{position:absolute;right:12px;top:10px;border:0;background:transparent;font-size:24px}table{border-collapse:collapse;width:100%;font-size:12px}th,td{text-align:left;border-bottom:1px solid #ba965337;padding:9px}th{color:var(--gold)}#lines{display:grid;grid-template-columns:repeat(5,1fr);gap:7px}.line-diagram{font-size:9px;color:#c9b38d}.line-diagram pre{font-size:9px;line-height:1.2;color:var(--gold);margin:6px 0}.bonus-choices{display:grid;grid-template-columns:1fr 1fr;gap:12px}.bonus-choices button{min-height:130px;font:600 18px 'Cinzel',Georgia,serif;background:#511b29}.bonus-choices small{display:block;font:11px 'DM Sans',sans-serif;margin-top:12px;color:#cfb997}.cards{display:flex;gap:8px;margin:22px 0}.cards button{flex:1;height:110px;font:700 20px Georgia;background:repeating-linear-gradient(45deg,#641d2e,#641d2e 4px,#7d293b 4px,#7d293b 6px);border:3px double #c5a565}.cards button.revealed{background:#f3e2c2;color:#33101a}#celebration{text-align:center;overflow:hidden}#celebration h2{font-size:60px;margin:25px 0 10px}#bigAmount{font-size:55px;color:#ffe6a7;display:block;margin-bottom:30px;position:relative;z-index:2}#celebration button{position:relative;z-index:2;background:#701f34}#coins{position:absolute;inset:0;pointer-events:none}.coin{position:absolute;top:-40px;color:#f1c568;font-size:26px;animation:fall 2s linear infinite;text-shadow:0 2px 4px #000}.coin:nth-child(even){color:#bb4150}@keyframes fall{to{transform:translateY(500px) rotate(540deg)}}@media(min-width:1500px){.title{padding-top:50px}.portrait-image{height:310px}}@media(max-width:1050px){main{padding:0 3%}.saloon{grid-template-columns:1fr;max-width:850px;margin:auto}.portrait{display:none}.symbol{height:clamp(75px,12vw,115px)}.features{gap:25px}.title{padding:25px 0}.edition{font-size:8px}}@media(max-width:600px){header{height:65px}.wordmark{font-size:26px}.wordmark span{font-size:8px;letter-spacing:2px}.edition{display:none}.title{padding:22px 0}.title p{font-size:11px}.eyebrow{font-size:8px;letter-spacing:2px}.machine-top{font-size:9px;letter-spacing:1px;padding:12px 8px}.machine-top span:last-child{font-size:7px}.reel-frame{padding:4px}.reels{gap:2px;padding:2px}.reel{gap:2px}.symbol{height:83px}.symbol.card{font-size:36px}.symbol .name{font-size:7px}.console{grid-template-columns:1fr 1fr 1.2fr;padding:15px 8px;gap:7px}.win-meter{grid-column:1/-1;display:flex;align-items:center;justify-content:center;gap:12px}.win-meter label,.win-meter small{margin:0}.win-meter strong{font-size:20px}.meter strong{font-size:23px}.spin{font-size:25px;padding:15px 8px}.features{gap:18px;margin:25px 0;flex-wrap:wrap;justify-content:flex-start}.features>div{flex:1;min-width:140px}.features span{font-size:8px}.features small{font-size:9px}.features b{font-size:24px}footer{font-size:7px;gap:15px;line-height:1.7}.machine-bottom{padding:5px 0}.machine-bottom button,.skip{font-size:8px}.wager>div{gap:8px}dialog{padding:27px 20px}.bonus-choices{grid-template-columns:1fr}.cards{gap:4px}.cards button{padding:5px;height:85px;font-size:16px}#lines{grid-template-columns:repeat(5,1fr)}}@media(max-height:550px) and (orientation:landscape){header{height:45px}.title{padding:12px 0}.title h1{font-size:35px}.title p{display:none}.saloon{max-width:680px}.symbol{height:64px}.console{padding:12px}.features{margin:18px 0}.portrait{display:none}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition:none!important}}
/* Each reel is a stationary three-row window over a downward-moving strip. */
.reel{position:relative;overflow:hidden;isolation:isolate}
.reel-moving>.symbol{visibility:hidden}
.reel-strip{position:absolute;top:0;left:0;right:0;display:flex;flex-direction:column;pointer-events:none;will-change:transform,filter}
.reel-strip>.symbol{height:var(--cell-height);min-height:var(--cell-height);flex:0 0 var(--cell-height)}
.reel-moving:after{content:'';position:absolute;inset:0;pointer-events:none;z-index:1;background:linear-gradient(#12080788,transparent 15%,transparent 85%,#12080788)}
/* Engraved ivory card faces; fixed tile dimensions preserve reel alignment. */
.symbol.card{background:radial-gradient(ellipse at 50% 40%,#573b2a,#241611 85%);text-shadow:none}
.rank-art{display:block;width:94%;height:94%;overflow:visible;filter:drop-shadow(0 2px 2px #0009);flex:none}
.card-paper{fill:#f2e3be;stroke:#6c4426;stroke-width:1.5}
/* Approved artwork uses the same SVG footprint and fixed reel tiles. */
.rank-art.premium-card{filter:drop-shadow(0 2px 2px #000b) drop-shadow(0 0 2px #d9a64b55)}

.machine-bottom{flex-wrap:wrap;gap:8px}.machine-bottom .speed{min-height:36px;min-width:78px;color:var(--gold);border:1px solid #b18a4b63;padding:7px 10px;white-space:nowrap}.speed[aria-pressed="true"]{background:#610f26;box-shadow:inset 0 0 12px #dcb97020}.speed span{font-size:8px;letter-spacing:1px}
/* Premium victory presentation; independent of settlement and reel geometry. */
.winning-lines{position:absolute;inset:12px;width:calc(100% - 24px);height:calc(100% - 24px);pointer-events:none;z-index:4}.winning-lines polyline{fill:none;stroke:#ffe5a0;stroke-width:3;vector-effect:non-scaling-stroke;filter:drop-shadow(0 0 4px #f8ba46);stroke-linecap:round;stroke-linejoin:round;opacity:.75}
#winShow{width:min(880px,94vw);height:min(570px,85dvh);padding:25px;overflow:hidden;text-align:center;background:radial-gradient(ellipse at center,#684820,#2b1712 65%,#100b09);border:3px double #dcb970;isolation:isolate}#winShow::backdrop{background:#100907a8}.victory-copy{position:relative;z-index:3;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center}.victory h2{font:900 clamp(28px,7vw,74px)/1.12 'Cinzel',Georgia,serif;background:linear-gradient(#fff5ce,#ebc46c 45%,#95621c 52%,#ffe1a0);background-clip:text;color:transparent;filter:drop-shadow(0 4px 2px #000);animation:letter-arrival .75s ease-out both;margin:22px 0 10px}.victory-amount{font:700 clamp(36px,8vw,78px) 'Cinzel',Georgia,serif;color:#ffe6aa;font-variant-numeric:tabular-nums;text-shadow:0 0 25px #dcb97066}.victory-detail{max-width:90%;margin:5px 0 10px}.victory-unit{font-size:10px;letter-spacing:3px;color:#dcb970;margin:12px}.victory-skip{margin-top:18px;min-height:44px;background:#361b16}.victory-glow{position:absolute;inset:-30%;background:conic-gradient(from 0deg,transparent,#dcb97028,transparent,#dcb97020,transparent);animation:gold-aura 14s linear infinite}.victory-particles{position:absolute;inset:0;pointer-events:none;z-index:2}.gold-coin{position:absolute;left:var(--x);top:-30px;width:22px;height:22px;border-radius:50%;border:3px double #ffe8ac;background:radial-gradient(circle at 30% 25%,#fff2bb,#c48b28 65%,#775019);box-shadow:0 2px 4px #0008;animation:coin-shower 2s var(--delay) linear infinite}.gold-coin:after{content:'$';color:#825b24;font:bold 12px Georgia}.gold-spark{position:absolute;left:50%;top:50%;width:4px;height:4px;border-radius:50%;background:#fff2bb;box-shadow:0 0 9px #e6ab42;animation:gold-burst 1.4s var(--delay) ease-out infinite}.victory-small{max-width:490px;max-height:300px}.victory-small h2{font-size:30px}.victory-small .victory-amount{font-size:44px}.victory-small .gold-spark{animation-duration:2.5s}.saloon-door{display:none}.victory-mega .saloon-door{display:block;position:absolute;top:0;bottom:0;width:50%;z-index:4;background:repeating-linear-gradient(90deg,#29170c,#654021 15%,#33200f 17%,#53351b 32%);border:6px double #bf9555;box-shadow:0 0 30px #000;animation:doors-open 1.1s .15s ease-in-out both}.door-left{left:0;transform-origin:left}.door-right{right:0;transform-origin:right}.victory-art{position:absolute;inset:0;background-position:left bottom;background-size:auto 90%;background-repeat:no-repeat;opacity:.22;mask-image:linear-gradient(90deg,#000,transparent 70%)}.victory-showdown .victory-art{background-image:url('assets/the_gambler_1.png')}.victory-activation .victory-art,.victory-complete .victory-art{background-image:url('assets/heidi_ho_1.png')}.victory-shake{animation:western-shake .4s ease-out}.victory-static *{animation:none!important}.victory-static .saloon-door{display:none}
@keyframes letter-arrival{from{opacity:0;transform:scale(.85) translateY(12px)}to{opacity:1;transform:none}}@keyframes coin-shower{to{transform:translateY(650px) rotate(400deg)}}@keyframes gold-burst{from{opacity:0;transform:scale(.3)}20%{opacity:1}to{opacity:0;transform:translate(var(--dx),var(--dy)) scale(.4)}}@keyframes doors-open{to{transform:perspective(800px) rotateY(100deg);opacity:0}}@keyframes gold-aura{to{transform:rotate(360deg)}}@keyframes western-shake{20%,60%{transform:translateX(2px)}40%,80%{transform:translateX(-2px)}}
@media(max-width:600px){#winShow{height:min(460px,82dvh);padding:18px}.victory h2{font-size:38px}.victory-small h2{font-size:25px}.winning-lines{inset:8px;width:calc(100% - 16px);height:calc(100% - 16px)}}
@media(prefers-reduced-motion:reduce){.saloon-door,.victory-particles,.victory-glow{display:none!important}.symbol.winning{animation:none;filter:none}.victory-shake{animation:none}}
.victory-mute{margin-top:8px;font-size:11px;padding:7px 14px;min-height:36px}
.reel-coin-burst{animation:reel-coin-burst 1.8s var(--delay) ease-out infinite}@keyframes reel-coin-burst{from{opacity:0;transform:scale(.3)}15%{opacity:1}to{opacity:0;transform:translate(var(--dx),var(--dy)) rotate(320deg)}}
.winning-lines{inset:0;width:100%;height:100%}
#winShow.victory-small,#winShow.victory-medium{position:fixed;inset:auto 0 12px;margin:0 auto;height:auto;max-height:42dvh;max-width:560px;padding:12px 20px;z-index:20;overflow:auto;background:linear-gradient(135deg,#342113f5,#170e0bf5)}
.victory-small .victory-copy,.victory-medium .victory-copy{height:auto}
.victory-small h2,.victory-medium h2{font-size:28px;margin:5px}
.victory-small .victory-amount,.victory-medium .victory-amount{font-size:36px}
.victory-small .victory-unit,.victory-medium .victory-unit{margin:4px}
.victory-small .victory-skip,.victory-medium .victory-skip{margin-top:4px}
.victory-small .victory-mute,.victory-medium .victory-mute{position:absolute;right:0;bottom:0}
.victory-showdown .victory-art{opacity:.45;animation:showdown-reveal 1.2s ease-out both}
@keyframes showdown-reveal{from{opacity:0;transform:translateX(-35px)}to{opacity:.45;transform:none}}
@media(max-height:500px){#winShow{height:94dvh;max-height:94dvh;padding:8px}.victory h2{font-size:30px;margin:6px}.victory-amount{font-size:36px}.victory-unit{margin:4px}.victory-skip{margin-top:4px}.victory-detail{margin:0}}
.reel-victory-particles{z-index:5;overflow:hidden}.reel-victory-particles .gold-spark{left:var(--x)}

/* Casino cabinet themes. Card artwork, reel frames and victory effects retain their original styling. */
:root{--casino-bg:#4A0F1E;--casino-panel:#250A12;--casino-raised:#3b0d19;--casino-button:#080709;--casino-hover:#201219;--casino-gold:#D4AF37}
:root[data-theme="midnight"]{--casino-bg:#101A35;--casino-panel:#080E20;--casino-raised:#142448;--casino-button:#183c88;--casino-hover:#224fa8}
body{background:var(--casino-bg)}
.ambience{background:radial-gradient(ellipse at 50% 20%,transparent,var(--casino-panel)),linear-gradient(180deg,var(--casino-bg),var(--casino-panel));filter:none}
header{border-bottom-color:#D4AF3755}
.wordmark,.portrait h2,.portrait span{color:var(--casino-gold)}
.machine{background:linear-gradient(135deg,var(--casino-raised),var(--casino-panel) 35%,var(--casino-raised));box-shadow:0 25px 70px #0009,0 0 0 4px var(--casino-panel),0 0 0 5px #D4AF3755}
.machine-top{background:linear-gradient(90deg,var(--casino-panel),var(--casino-raised),var(--casino-panel));color:var(--casino-gold)}
.reels{background:var(--casino-panel)}
.symbol:not(.scatter){background:radial-gradient(ellipse at 50% 35%,var(--casino-raised),var(--casino-panel) 80%)}
.status,.machine-bottom{background:var(--casino-panel)}
.console{background:linear-gradient(var(--casino-raised),var(--casino-panel))}
body button:not(.victory-skip):not(.victory-mute):not(.revealed){background:var(--casino-button);color:var(--casino-gold);border-color:#D4AF3780}
body button:not(.victory-skip):not(.victory-mute):not(.revealed):hover{background:var(--casino-hover)}
body .spin{background:linear-gradient(var(--casino-button),#050508);color:var(--casino-gold);border-color:var(--casino-gold)}
:root[data-theme="midnight"] body .spin{background:linear-gradient(#224fa8,#10275f)}
#rules,#bonus,.dev{background:linear-gradient(145deg,var(--casino-raised),var(--casino-panel));border-color:var(--casino-gold)}
#themeToggle{font-size:11px;min-height:44px;padding:8px 12px;letter-spacing:.3px}
header #sound{margin-left:auto;min-height:44px}
@media(max-width:720px){header{height:auto;min-height:75px;flex-wrap:wrap;padding:12px 0;gap:8px}header .edition{display:none}#themeToggle{font-size:10px;padding:8px}header .wordmark{font-size:24px}header .wordmark span{font-size:8px;letter-spacing:1px}}


/* Vintage brass instrument console; presentation only. */
.console{position:relative;padding:24px 20px;background:linear-gradient(90deg,#0005,transparent 20%,#ffffff06 50%,transparent 80%,#0005),repeating-linear-gradient(0deg,#ffffff02 0 1px,transparent 1px 4px),linear-gradient(var(--casino-raised),var(--casino-panel));border-top:4px ridge #b39352;border-bottom:4px groove #b39352;box-shadow:inset 0 3px 14px #000b,inset 0 -2px 8px #0009}
.console:before,.console:after{content:'−';position:absolute;top:7px;width:10px;height:10px;border-radius:50%;background:linear-gradient(135deg,#e1c783,#705325);box-shadow:0 1px 2px #000,inset 0 0 0 1px #e8cb8266;color:#3b2c16;font:10px/9px Georgia;text-align:center;pointer-events:none}
.console:before{left:7px}.console:after{right:7px}
.console .meter,.console .wager{padding:12px 10px;border:3px double #aa8749;border-radius:4px;background:linear-gradient(#080807,#171713);box-shadow:inset 0 3px 9px #000,0 1px 0 #f5d69d30;text-align:center}
.console label{font:700 9px Georgia,serif;letter-spacing:1.6px;color:#d4b879;text-shadow:0 1px #000;margin-bottom:9px}
.console .meter strong,.console .wager strong{font-family:Georgia,'Times New Roman',serif;color:#f2dfaa;font-variant-numeric:tabular-nums;text-shadow:0 0 8px #edc86a30}
.console small{font:8px Georgia,serif;letter-spacing:1px;color:#a99670}
body .console .spin{position:relative;border:5px double #c4a15b;border-radius:12px;background:radial-gradient(ellipse at 50% 15%,#34312a,#11110f 65%);box-shadow:inset 0 2px 0 #fff3,inset 0 -6px 8px #0009,0 5px 0 #080707,0 7px 0 #967340,0 10px 15px #0009;color:#ecd38d;font:900 27px Georgia,serif;letter-spacing:3px;padding:22px 8px;text-shadow:0 2px 2px #000}
:root[data-theme="midnight"] body .console .spin{background:radial-gradient(ellipse at 50% 15%,#354b76,#101c34 65%)}
body .console .spin:hover{filter:brightness(1.14)}
body .console .spin:active:not(:disabled){transform:translateY(3px);box-shadow:inset 0 2px 6px #0008,0 2px 0 #080707,0 4px 0 #967340,0 6px 9px #0008}
.console .spin span{font:8px Georgia,serif;letter-spacing:1px;margin-top:10px}
body .console .wager button{border:2px outset #b49454;background:#171510;color:#e4cb90;border-radius:50%;width:27px;height:27px;padding:0;box-shadow:0 2px 3px #000;font:20px Georgia,serif}
.machine-bottom{border-top:1px solid #d1af6655;box-shadow:inset 0 1px 0 #000}
@media(max-width:600px){.console{padding:21px 8px 14px;gap:7px}.console .meter,.console .wager{padding:10px 5px}.console label{font-size:8px;letter-spacing:1px}.console .meter strong{font-size:23px}body .console .spin{font-size:23px;padding:23px 5px}.console .spin span{font-size:7px;letter-spacing:.3px}.console .wager>div{gap:5px}.console .win-meter{padding:8px;gap:10px}.console .win-meter label{margin:0}}

/* Sculpted antique cabinet, inspired by early mechanical saloon machines. */
.antique-cabinet{position:relative;margin-top:72px;padding:23px 31px 25px;border:3px solid #b08b48;border-radius:44px 44px 22px 22px;background:linear-gradient(90deg,#100d0d,#44382c 3%,#d6b66e 4%,#5a4630 5%,var(--casino-panel) 7%,var(--casino-raised) 50%,var(--casino-panel) 93%,#5a4630 95%,#d6b66e 96%,#44382c 97%,#100d0d);box-shadow:inset 0 0 0 3px #241a15,inset 0 0 0 5px #bda16a,inset 0 0 0 8px #30251e,0 18px 40px #0009,0 3px 0 3px #4a3929}
.antique-cabinet:before,.antique-cabinet:after{content:'';position:absolute;top:47px;bottom:35px;width:15px;border-top:5px double #e3c78a;border-bottom:5px double #e3c78a;background:repeating-linear-gradient(90deg,#4f3b22 0 2px,#d5b575 2px 4px,#7b6035 4px 6px);box-shadow:0 0 0 1px #211b15;pointer-events:none}
.antique-cabinet:before{left:9px}.antique-cabinet:after{right:9px}
.cabinet-crown{position:absolute;z-index:1;top:-78px;left:50%;transform:translateX(-50%);width:190px;height:100px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;border:5px double #d5b77a;border-radius:60px 60px 8px 8px;background:linear-gradient(90deg,#181510,#5d4830 7%,#c4a466 9%,#302319 12%,var(--casino-panel) 25%,var(--casino-raised) 50%,var(--casino-panel) 75%,#302319 88%,#c4a466 91%,#5d4830 93%,#181510);box-shadow:inset 0 0 0 3px #211912,0 -5px 0 #453422,0 2px 8px #0007;color:#edcf8e}
.cabinet-crown span{display:grid;place-items:center;width:33px;height:36px;border:2px solid #b69759;border-radius:50%;font:27px Georgia;background:#151112;box-shadow:0 0 0 3px #392a1c}
.cabinet-crown b{font:700 10px Georgia;letter-spacing:2px;margin-top:3px}.cabinet-crown i{font:8px Georgia;letter-spacing:3px;color:#ba9754}
.antique-cabinet .machine-top{position:relative;z-index:2;border:3px double #bb985b;border-radius:15px 15px 3px 3px;padding:13px 12px;background:linear-gradient(#151111,var(--casino-panel));text-shadow:0 1px #000}
.antique-cabinet .reel-frame{margin:9px 0;border-radius:12px;padding:8px;outline:1px solid #e0c27f;outline-offset:3px;box-shadow:inset 0 0 0 2px #4c361d,0 5px 9px #0008}
.antique-cabinet .status{border:1px solid #9b7b43;border-bottom:0;font-family:Georgia,serif}
.antique-cabinet .console{border:4px double #c8a561;border-radius:0 0 12px 12px;padding:24px 12px 20px;background:linear-gradient(90deg,#080b10cc,transparent 40%,#0004),linear-gradient(var(--casino-raised),#101115);box-shadow:inset 0 0 0 3px #33291f,inset 0 0 24px #0008}
.antique-cabinet .machine-bottom{margin-top:12px;border-radius:3px 3px 10px 10px;padding:6px 3px;border-bottom:4px double #a98a51}
@media(max-width:600px){.antique-cabinet{margin-top:67px;padding:16px 18px 18px;border-radius:28px 28px 18px 18px}.antique-cabinet:before,.antique-cabinet:after{width:7px;top:38px;bottom:28px;background-size:6px auto}.antique-cabinet:before{left:5px}.antique-cabinet:after{right:5px}.cabinet-crown{width:150px;height:87px;top:-69px}.cabinet-crown b{font-size:9px;letter-spacing:1px}.antique-cabinet .machine-top{font-size:8px;padding:11px 5px}.antique-cabinet .reel-frame{padding:4px}.antique-cabinet .console{padding:20px 5px 12px;gap:5px}.antique-cabinet .console label{font-size:7px;letter-spacing:.6px}.antique-cabinet .console small{font-size:7px;letter-spacing:.4px}.antique-cabinet .console .meter strong{font-size:20px}.antique-cabinet .console .wager strong{font-size:18px}.antique-cabinet .console .wager>div{gap:3px}.antique-cabinet .console .wager button{width:23px;height:25px}.antique-cabinet .console .spin{font-size:21px;letter-spacing:2px}.antique-cabinet .machine-bottom button,.antique-cabinet .skip{font-size:7px}.antique-cabinet .machine-bottom button{padding:8px 3px}}

/* Approved Luna Moon scatter: retain the entire original composition. */
.symbol.scatter{background:radial-gradient(ellipse at 50% 35%,#6a2436,#250a12 85%);border-color:#c9a45d88;gap:0}
.symbol.scatter .luna-art{position:absolute;inset:0 0 16px;width:100%;height:calc(100% - 16px);object-fit:contain;object-position:center;filter:drop-shadow(0 0 4px #e8b95633)}
.luna-label{position:absolute;bottom:0;left:0;right:0;height:16px;display:grid;place-items:center;background:linear-gradient(#3b1120,#15090d);border-top:1px solid #c5a35c88;color:#ffe6ac;font:700 clamp(8px,.85vw,12px) Georgia,serif;letter-spacing:1.5px;text-shadow:0 1px 2px #000}
.symbol.luna-unlocked{box-shadow:inset 0 0 0 2px #ffe4a1,inset 0 0 17px #efba5866;border-color:#ffe4a1}
.symbol.luna-sparkling{animation:luna-gold-pulse .75s ease-in-out 2 alternate}
.symbol.luna-sparkling:after{content:'✦';position:absolute;top:10%;left:12%;color:#fff0bd;font-size:15px;text-shadow:0 0 8px #ffd566,45px 35px 2px #f5cf79,12px 65px 3px #fff0bd;animation:luna-sparkle .8s ease-in-out 2;pointer-events:none}
.luna-announcement{padding:14px 10px;background:linear-gradient(100deg,#230b13,#5b1b2a,#230b13);border:2px double #d9b568;text-align:center;color:#ffe3a3}
.luna-announcement[hidden]{display:none}
.luna-announcement strong{display:block;font:700 clamp(12px,1.4vw,19px)/1.5 Georgia,serif;letter-spacing:1px}
.luna-announcement button{margin-top:7px;min-height:44px;font-size:11px}
@keyframes luna-gold-pulse{to{box-shadow:inset 0 0 0 2px #fff1c3,inset 0 0 26px #efba58aa;filter:brightness(1.15)}}
@keyframes luna-sparkle{0%,100%{opacity:.1;transform:scale(.7)}50%{opacity:1;transform:scale(1)}}
@media(prefers-reduced-motion:reduce){.symbol.luna-sparkling{animation:none}.symbol.luna-sparkling:after{display:none}}

/* Bonus invitations illustrated with existing approved artwork. */
#bonus{padding:22px;width:min(760px,94vw)}
#bonus>h2{font-size:clamp(23px,4vw,34px);line-height:1.15;margin:10px 0 12px}
#bonusContent>p{font-size:12px;line-height:1.5;margin:0 0 15px}
.bonus-choices{gap:14px}
body #bonus .bonus-art-choice{position:relative;isolation:isolate;overflow:hidden;min-height:290px;padding:0;border:4px double #dbbb73;border-radius:9px;background:#1e0d12;box-shadow:inset 0 0 0 2px #24110c,0 6px 16px #0007;text-align:left;color:#ffe8b3}
.bonus-art-choice>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 20%;z-index:-2}
.bonus-art-choice:before{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,transparent 15%,#17080d44 42%,#19080eeb 68%,#10070a)}
.bonus-choice-copy{display:flex;flex-direction:column;justify-content:flex-end;min-height:290px;padding:18px 16px;font:700 clamp(21px,3vw,27px)/1.15 'Cinzel',Georgia,serif;text-shadow:0 2px 4px #000}
.bonus-choices .bonus-choice-copy small{font:12px/1.45 'DM Sans',sans-serif;color:#f4e6cb;margin:9px 0 0;max-width:260px}
body #bonus .bonus-art-choice:hover{filter:brightness(1.1);border-color:#ffe9b8}
@media(max-width:600px){#bonus{padding:18px;max-height:calc(100dvh - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px) - 20px)}#bonus>.eyebrow{font-size:8px}#bonus>h2{font-size:23px;line-height:1.12;margin:8px 0}#bonusContent>p{font-size:11px;margin-bottom:10px}.bonus-choices{gap:10px}body #bonus .bonus-art-choice{min-height:150px}.bonus-choice-copy{min-height:150px;padding:13px 12px 13px 43%;font-size:21px}.bonus-art-choice>img{object-position:40% 25%}.bonus-art-choice:before{background:linear-gradient(90deg,transparent,#19080d77 28%,#19080ee6 48%,#10070af2)}.bonus-choices .bonus-choice-copy small{font-size:10px;margin-top:7px}}
@media(max-width:600px){.bonus-art-choice>img{width:66%;object-position:50% 20%}.bonus-art-choice:before{background:linear-gradient(90deg,transparent 20%,#19080d55 38%,#19080ee6 62%,#10070af2)}}
.portrait .lou{background-image:url("assets/lucky_lou_slim_v2.png");background-size:auto 112%;background-position:52% 0}
/* The Gambler appears as the elusive opponent during major victories. */
.victory-big .victory-art,.victory-mega .victory-art{background-image:url('assets/the_gambler_1.png');opacity:.2;mask-image:linear-gradient(90deg,#000,transparent 75%)}
/* Ace-blue header controls and warm title-gold character lettering. */
body header #sound,body header #themeToggle{background:linear-gradient(145deg,#174c9c,#0c2c67 65%,#081d48);color:#f3dfaf;border:1px solid #c9ae6b99;box-shadow:inset 0 1px 0 #8cb4ed33,0 2px 5px #0005}
body header #sound:hover,body header #themeToggle:hover{background:linear-gradient(145deg,#225eae,#123b80);color:#fff0c9}
.portrait h2{color:#ecd49e;text-shadow:0 1px 2px #0005}
.portrait>span{color:#dcc394}
body header #sound{position:relative;flex:0 0 44px;width:44px;height:44px;padding:10px;font-size:0}
body header #sound:before{content:'';display:block;width:22px;height:22px;background:currentColor;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M3 9h4l5-4v14l-5-4H3z'/%3E%3Cpath d='M16 8q5 4 0 8' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E") center/contain no-repeat}
body header #sound[aria-pressed="false"]:after{content:'';position:absolute;left:10px;top:21px;width:25px;height:2px;transform:rotate(-48deg);background:#f3dfaf;box-shadow:0 0 0 2px #0c2c67}
.portrait p{color:#ecd49e}
.wordmark,.edition i{color:#ecd49e}
/* Clear speaker silhouette, with a dedicated mute mark rather than a mask. */
body header #sound{display:grid;place-items:center;padding:7px}
body header #sound:before{width:28px;height:28px;mask:none;background:transparent url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23f3dfaf' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 9h4l5-4v14l-5-4H3z'/%3E%3Cpath d='M16 8a6 6 0 0 1 0 8M19 5a10 10 0 0 1 0 14'/%3E%3C/svg%3E") center/contain no-repeat}
body header #sound[aria-pressed="false"]:before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23f3dfaf' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 9h4l5-4v14l-5-4H3z'/%3E%3Cpath d='m16 9 6 6m0-6-6 6'/%3E%3C/svg%3E")}
body header #sound[aria-pressed="false"]:after{display:none}
.rank-art.premium-card{filter:drop-shadow(0 2px 2px #0008)}

.rank-art.gem-slot-art{width:96%;height:96%;filter:drop-shadow(0 2px 3px #0009)}
@media(max-width:760px){.winning-lines polyline{stroke:rgba(255,225,151,.42);stroke-width:2;opacity:1;filter:none}}

/* Direct-tap celebrations and a restrained casino-chip payout shower. */
#winShow .victory-close{position:absolute;top:-10px;right:-10px;margin:0;padding:0;width:44px;height:44px;min-height:44px;border:0;background:transparent;color:#f6e2b1;font:30px/1 Georgia,serif;z-index:6}
#winShow .victory-copy{cursor:pointer}
#winShow .victory-mute{cursor:pointer}
.victory-big .victory-amount,.victory-mega .victory-amount,.victory-showdown .victory-amount,.victory-complete .victory-amount{font-size:clamp(50px,11vw,112px);line-height:1.05;animation:payout-pop .7s cubic-bezier(.2,.8,.3,1) both}
.victory-amount.victory-amount-long{font-size:clamp(34px,7vw,64px)}
.poker-chip{position:absolute;left:50%;top:48%;width:32px;height:32px;border-radius:50%;border:2px solid #efdbab;box-shadow:inset 0 0 0 2px #0005,0 3px 2px #0009;background:radial-gradient(circle,var(--chip) 0 51%,transparent 53%),repeating-conic-gradient(var(--chip) 0deg 22deg,#f5e8cd 22deg 33deg,var(--chip) 33deg 45deg);animation:chip-pour 2.2s var(--delay) cubic-bezier(.25,.65,.5,1) infinite;will-change:transform,opacity}
.poker-chip:before{content:'';position:absolute;inset:5px;border:1px dashed #f6e2bcaa;border-radius:50%}
.poker-chip:after{content:'♠';position:absolute;inset:0;display:grid;place-items:center;color:var(--ink);font:16px Georgia,serif;text-shadow:0 1px #0005}
@keyframes chip-pour{0%{opacity:0;transform:translate(0,0) scale(.4) rotate(0)}12%{opacity:1}35%{opacity:1;transform:translate(var(--dx),-75px) scale(1) rotate(140deg)}100%{opacity:0;transform:translate(var(--dx),490px) scale(.85) rotate(650deg)}}
@keyframes payout-pop{0%{opacity:0;transform:scale(.7)}65%{opacity:1;transform:scale(1.07)}100%{opacity:1;transform:scale(1)}}
.luna-announcement{position:relative;cursor:pointer;padding-right:44px}
.luna-announcement button{position:absolute;right:0;top:0;min-width:44px;min-height:44px;margin:0;font-size:24px;background:transparent;border:0}
@media(max-width:600px){.poker-chip{width:25px;height:25px}.poker-chip:after{font-size:12px}.victory-big h2,.victory-mega h2{font-size:clamp(32px,10vw,48px)}}
@media(prefers-reduced-motion:reduce){.poker-chip{display:none}.victory-amount{animation:none!important}}
