/* Second-pass art direction: directional sprites, procedural rooms and physical roulette. */
.map{isolation:isolate;transition:background-color .7s}.map.room-vault{background-color:#171d1a;filter:saturate(.9)}.map.room-crimson{background-color:#21151b}.map.room-abyss{background-color:#101322}.map.room-gilded{background-color:#211d16}.map:after,.map:before{z-index:0}.path,.map-glow,.room-lights,.fog-layer,.generated-decor{pointer-events:none}.room-lights{position:absolute;inset:0;z-index:1;background:radial-gradient(circle at 18% 28%,#d9a44824 0 3%,transparent 17%),radial-gradient(circle at 81% 71%,#a9273324 0 3%,transparent 18%);mix-blend-mode:screen}.room-lights:before,.room-lights:after{content:"";position:absolute;top:-12px;width:12px;height:12px;background:#f0b94e;border-radius:50%;box-shadow:0 0 12px 5px #e59d35,0 0 55px 24px #a56c2835}.room-lights:before{left:20%}.room-lights:after{right:19%;background:#d84b46;box-shadow:0 0 12px 5px #d84b46,0 0 55px 24px #a3233035}.fog-layer{position:absolute;inset:0;z-index:3;opacity:.28;background:radial-gradient(ellipse at 20% 90%,#aab2c522,transparent 43%),radial-gradient(ellipse at 80% 10%,#aab2c518,transparent 38%);animation:fogDrift 9s ease-in-out infinite alternate}.generated-decor{position:absolute;inset:0;z-index:2}.floor-rune{position:absolute;width:36px;height:36px;border:1px solid #c29b4e38;transform:rotate(45deg);box-shadow:inset 0 0 0 6px #0c0f1544}.floor-rune:after{content:"";position:absolute;inset:9px;border:1px solid #b5313266;border-radius:50%}.coin-pile{position:absolute;width:28px;height:12px;border-radius:50%;background:#a57831;box-shadow:5px -4px #d2a445,-4px -2px #735220,0 3px 7px #000}.candle{position:absolute;width:5px;height:19px;background:#c6b98f;box-shadow:0 4px 7px #000}.candle:before{content:"";position:absolute;width:7px;height:9px;left:-1px;top:-8px;background:#f3a43d;clip-path:polygon(50% 0,100% 75%,50% 100%,0 75%);filter:drop-shadow(0 0 5px #ff8c31)}.card-debris{position:absolute;width:15px;height:20px;border:1px solid #9b8b72;background:#ddd0b9;transform:rotate(var(--rot,12deg));box-shadow:7px 4px 0 -1px #8e2830,7px 4px 0 0 #bda17d}.room-banner{position:absolute;top:0;width:54px;height:92px;background:linear-gradient(90deg,#501c25,#8b2833,#501c25);border-inline:3px solid #2a1419;clip-path:polygon(0 0,100% 0,100% 82%,50% 100%,0 82%)}.room-banner:after{content:"◆";position:absolute;inset:24px 0;text-align:center;color:#d7aa54;font:13px var(--pixel)}
.player-sprite{width:76px;height:96px;margin:-48px -38px;background-image:url('assets/roulette-wanderer-sprites-v2.png');background-size:400% 400%;background-position:var(--frame-x,0%) var(--row-y,0%);mix-blend-mode:normal;filter:drop-shadow(0 10px 4px #000b);transform:scaleX(var(--face,1));transform-origin:center bottom;transition:left .085s linear,top .085s linear,filter .2s;will-change:left,top,background-position,transform}.player-sprite.idle{animation:idleBob 1.35s steps(2) infinite}.player-sprite.walking{animation:walkBob .16s steps(2) infinite}.player-sprite.hit{--row-y:100%;--frame-x:66.666%;animation:heroHitV2 .35s steps(2)}.player-shadow{mix-blend-mode:multiply}.relic-belt{position:absolute;left:20px;top:18px;z-index:12;display:flex;gap:7px;pointer-events:none}.relic-belt>span{font:7px var(--pixel);color:#626a76;background:#080b10c9;border:1px solid #29303c;padding:8px}.relic-token{width:33px;height:33px;display:grid;place-items:center;background:#141a25;border:1px solid #a9803c;box-shadow:0 3px 8px #000;color:var(--gold);font-size:16px;position:relative}.relic-token:hover:after{content:attr(data-name);position:absolute;top:38px;left:0;white-space:nowrap;background:#080b11;border:1px solid #414958;padding:7px;font:7px var(--pixel)}.world-caption{gap:18px}.run-route{display:flex;align-items:center;gap:5px;flex:1;justify-content:center}.route-node{width:17px;height:17px;transform:rotate(45deg);border:1px solid #46505f;background:#161c27;position:relative}.route-node:before{content:"";position:absolute;width:13px;height:1px;background:#414957;right:15px;top:7px;transform:rotate(-45deg);transform-origin:right}.route-node:first-child:before{display:none}.route-node.done{background:#735427;border-color:#d8a94b}.route-node.current{background:#9c2e33;border-color:#ff6d63;box-shadow:0 0 12px #ef5350}.route-node.boss{border-color:#b53132}.room-enter{animation:roomReveal .65s ease both}
.wheel-wrap{padding:8px}.wheel{background:#0a0d13!important;border-width:12px;width:250px;height:250px;overflow:visible}.wheel:after{inset:30px;border:1px solid #dcc07f88;z-index:3}.wheel-rotor{position:absolute;inset:8px;border-radius:50%;z-index:1;background:conic-gradient(from -4.86deg,#277653 0 9.72deg,#a52831 9.72deg 19.44deg,#10131a 19.44deg 29.16deg,#a52831 29.16deg 38.88deg,#10131a 38.88deg 48.6deg,#a52831 48.6deg 58.32deg,#10131a 58.32deg 68.04deg,#a52831 68.04deg 77.76deg,#10131a 77.76deg 87.48deg,#a52831 87.48deg 97.2deg,#10131a 97.2deg 106.92deg,#a52831 106.92deg 116.64deg,#10131a 116.64deg 126.36deg,#a52831 126.36deg 136.08deg,#10131a 136.08deg 145.8deg,#a52831 145.8deg 155.52deg,#10131a 155.52deg 165.24deg,#a52831 165.24deg 174.96deg,#10131a 174.96deg 184.68deg,#a52831 184.68deg 194.4deg,#10131a 194.4deg 204.12deg,#a52831 204.12deg 213.84deg,#10131a 213.84deg 223.56deg,#a52831 223.56deg 233.28deg,#10131a 233.28deg 243deg,#a52831 243deg 252.72deg,#10131a 252.72deg 262.44deg,#a52831 262.44deg 272.16deg,#10131a 272.16deg 281.88deg,#a52831 281.88deg 291.6deg,#10131a 291.6deg 301.32deg,#a52831 301.32deg 311.04deg,#10131a 311.04deg 320.76deg,#a52831 320.76deg 330.48deg,#10131a 330.48deg 340.2deg,#a52831 340.2deg 349.92deg,#10131a 349.92deg 360deg);box-shadow:inset 0 0 0 10px #7a5a2e,inset 0 0 0 13px #1b1510,inset 0 0 30px #000;transition:transform 3.45s cubic-bezier(.08,.68,.07,1);will-change:transform}.wheel-numbers{position:absolute;inset:0}.wheel-numbers span{position:absolute;left:50%;top:50%;width:18px;height:18px;margin:-9px;color:#f2e5cb;font:5px var(--pixel);text-align:center;line-height:18px;transform:rotate(var(--a)) translateY(-103px) rotate(calc(var(--a) * -1));text-shadow:1px 1px #000}.ball-track{position:absolute;inset:15px;border-radius:50%;z-index:6;pointer-events:none;will-change:transform}.roulette-ball{position:absolute;left:50%;top:0;width:10px;height:10px;margin-left:-5px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff,#d8d5c8 45%,#76766f);box-shadow:0 2px 4px #000,0 0 4px #fff}.ball-track.spinning{animation:ballOrbit 3.45s cubic-bezier(.12,.44,.18,1) both}.wheel-inner{inset:66px;z-index:8;border:5px double #8c6c38;background:radial-gradient(circle,#1c2330,#090c12 72%);box-shadow:0 0 0 5px #080a0e,inset 0 0 28px #000}.wheel-inner:before{content:"◆";position:absolute;top:10px;color:#8f6a33;font-size:8px}.wheel-inner span{font-size:34px}.history{margin-top:20px;border-top:1px solid #2b323e;padding-top:11px}.history small{font-size:6px}.history>div{display:flex;gap:4px;margin-top:8px;flex-wrap:wrap}.history i{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;background:#151923;border:1px solid #343b48;color:#ddd;font:7px var(--pixel);font-style:normal}.history i.red{background:#9b2b31}.history i.green{background:#28704f}
.reward-choices{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin:22px 0}.reward-card{min-height:132px;background:#151b25;border:1px solid #3b4350;color:var(--bone);padding:15px 10px;cursor:pointer;transition:.16s}.reward-card:hover{transform:translateY(-4px);border-color:var(--gold);background:#1c2330}.reward-card i{display:block;font-style:normal;font-size:27px;color:var(--gold);margin-bottom:12px}.reward-card b{display:block;font:7px var(--pixel);line-height:1.5}.reward-card small{display:block;color:#89909b;font-size:9px;line-height:1.4;margin-top:8px}.modal-card:has(.reward-choices:not(:empty)){width:min(650px,100%)}.modal-card:has(.reward-choices:not(:empty)) #modalButton{display:none}
.fortune-cache{position:absolute;width:42px;height:36px;margin:-18px -21px;z-index:6;background:linear-gradient(#6c4b22 0 38%,#3b2818 39%);border:3px solid #1b130d;box-shadow:inset 0 0 0 2px #a47a3b,0 9px 11px #000;animation:cacheGlow 1.4s steps(2) infinite}.fortune-cache:before{content:"";position:absolute;left:-3px;right:-3px;top:13px;height:5px;background:#c49a4b;border:1px solid #35240f}.fortune-cache span{position:absolute;z-index:2;left:15px;top:11px;color:#24170d;font:7px var(--pixel)}.monster-token.elite{transform:scale(1.25);box-shadow:0 0 8px #fff,0 0 32px #e6b44d}.monster-token.elite span{color:var(--gold)}.hero-fighter .sprite-sheet{background-image:url('assets/roulette-wanderer-sprites-v2.png');background-size:400% 400%;background-position:0 100%;mix-blend-mode:normal}.hero-fighter.attack .sprite-sheet{background-position:33.333% 100%}.hero-fighter.hit .sprite-sheet{background-position:66.666% 100%}.exit{z-index:5}.exit:after{content:"";position:absolute;inset:-7px;border:1px solid #d8a94b33;animation:exitPulse 1.8s ease-in-out infinite}.roulette-panel{background-image:linear-gradient(90deg,transparent 0 49.9%,#1c222d 50%,transparent 50.1%),radial-gradient(circle at 22% 50%,#b88c3520,transparent 30%)}
@keyframes idleBob{50%{translate:0 -2px}}@keyframes walkBob{50%{translate:0 -4px;filter:drop-shadow(0 14px 3px #0008)}}@keyframes heroHitV2{50%{translate:-8px 0;filter:brightness(3) sepia(1) drop-shadow(0 0 9px #f33)}}@keyframes fogDrift{to{transform:translate(3%,-2%) scale(1.08)}}@keyframes roomReveal{from{filter:brightness(0);transform:scale(1.03)}to{filter:brightness(1);transform:scale(1)}}@keyframes ballOrbit{0%{transform:rotate(0deg)}75%{transform:rotate(-1760deg)}100%{transform:rotate(-1890deg)}}@keyframes cacheGlow{50%{filter:brightness(1.35) drop-shadow(0 0 7px #d8a94b)}}@keyframes exitPulse{50%{inset:-12px;opacity:.2}}
@media(max-width:850px){.wheel{width:205px;height:205px}.wheel-numbers span{transform:rotate(var(--a)) translateY(-82px) rotate(calc(var(--a) * -1));font-size:4px}.wheel-inner{inset:54px}.run-route{display:none}.relic-belt{top:10px;left:10px}.relic-token{width:27px;height:27px}.reward-choices{grid-template-columns:1fr}.reward-card{min-height:80px}.modal-card{max-height:92vh;overflow:auto}}@media(max-width:520px){.run-stats span:nth-child(3){display:none}.wheel{width:180px;height:180px}.wheel-numbers span{transform:rotate(var(--a)) translateY(-70px) rotate(calc(var(--a) * -1))}.wheel-inner{inset:48px}.player-sprite{width:66px;height:84px;margin:-42px -33px}}
.wheel-numbers span{transform:rotate(var(--a)) translateY(-103px) rotate(var(--na))}
@media(max-width:850px){.wheel-numbers span{transform:rotate(var(--a)) translateY(-82px) rotate(var(--na))}}
@media(max-width:520px){.wheel-numbers span{transform:rotate(var(--a)) translateY(-70px) rotate(var(--na))}}

/* Atmospheric room art */
.game-shell{background:#080a0f url('assets/haunted-casino-background.png') center/cover fixed}.map{background-image:linear-gradient(#05070b35,#05070b72),url('assets/haunted-casino-background.png')!important;background-size:cover!important;background-position:center!important}.map>.path{display:none}.map>.prop{opacity:.32;filter:saturate(.65)}.map:before,.map:after{opacity:.1}.battle-stage{background-image:radial-gradient(ellipse at center,#2b1720d9 0,#11141deb 48%,#080a0ff5 76%),url('assets/haunted-casino-background.png');background-size:cover;background-position:center 58%}.world-frame{box-shadow:0 24px 65px #000,0 0 0 1px #6a4c2738}.world-caption{background:#090c12ee;backdrop-filter:blur(8px)}

/* Rules and economy */
.help-button{width:34px;height:34px;border-radius:50%;border:1px solid #a17b3d;background:#171c26;color:var(--gold);font:10px var(--pixel);cursor:pointer;box-shadow:0 0 12px #d8a94b18}.help-button:hover{background:var(--gold);color:#10131a}.token-stat{position:relative}.token-stat:after{content:"PAIE CHAQUE LANCER";position:absolute;left:16px;top:22px;color:#686f7a;font:5px var(--pixel);white-space:nowrap}.chip-explainer{display:flex;align-items:center;gap:12px;background:#0c121be8;border:1px solid #3a4352;border-left:3px solid var(--gold);padding:10px 12px;margin:12px 0}.chip-explainer>i{font-style:normal;color:var(--gold);font-size:20px}.chip-explainer b{display:block;font:7px var(--pixel);color:#d9c18d}.chip-explainer span{display:block;margin-top:5px;color:#7d8591;font-size:9px;line-height:1.35}.guide-overlay{position:fixed;inset:0;z-index:60;background:#03050aeF;display:none;place-items:center;padding:18px;overflow:auto}.guide-overlay.show{display:grid}.guide-card{position:relative;width:min(890px,100%);max-height:94vh;overflow:auto;background:linear-gradient(145deg,#151b25,#090d14);border:1px solid #6b5636;box-shadow:0 30px 100px #000;padding:40px}.guide-card:before{content:"";position:absolute;inset:7px;border:1px solid #2f3642;pointer-events:none}.guide-close{position:absolute;right:17px;top:15px;background:transparent;border:0;color:#8c929c;font-size:28px;cursor:pointer;z-index:2}.guide-kicker{font:8px var(--pixel);color:var(--gold)}.guide-card h2{font:18px var(--pixel);line-height:1.65;margin:17px 0 25px}.rule-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.rule-steps article{position:relative;background:#111721;border:1px solid #303846;padding:18px;min-height:145px}.rule-steps article>i{font:8px var(--pixel);font-style:normal;color:#9a753a}.rule-steps article>b{display:block;font:8px var(--pixel);margin:15px 0 10px}.rule-steps p,.guide-token p{font-size:10px;color:#8b929d;line-height:1.55;margin:0}.guide-economy{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:10px 0}.guide-token{display:flex;gap:15px;background:#181923;border:1px solid #5a482d;padding:17px}.guide-token>i{font-style:normal;font-size:25px;color:var(--gold)}.guide-token b{font:7px var(--pixel);color:#e0c47e}.guide-token p{margin-top:9px}.guide-token strong{color:#d9c18d}.guide-token.relic{border-color:#56313c}.guide-token.relic>i{color:#dc5960}.relic-codex{border-top:1px solid #303744;padding-top:14px}.relic-codex>small{font:7px var(--pixel);color:#727b88}.relic-codex>div{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:10px}.codex-relic{display:flex;gap:9px;align-items:center;padding:8px;background:#0c1017;border:1px solid #262d38}.codex-relic>i{width:25px;color:var(--gold);font-style:normal;text-align:center;font-size:17px}.codex-relic b{font:6px var(--pixel);display:block;line-height:1.4}.codex-relic span{font-size:8px;color:#777f8a;display:block;margin-top:3px}.guide-play{display:block;margin:22px auto 0;background:linear-gradient(#b53a38,#8d262b);border:1px solid #ef6b61;border-bottom:4px solid #58171c;color:#fff;padding:15px 24px;font:8px var(--pixel);cursor:pointer}

/* Continuous roulette physics: transforms are controlled frame-by-frame in JS. */
.wheel-rotor{transition:none!important}.ball-track,.ball-track.spinning{animation:none!important;transition:none;inset:10px}.roulette-ball{width:11px;height:11px;margin-left:-5.5px;box-shadow:0 2px 4px #000,0 0 5px #fff,0 0 12px #ffffff55}.ball-track.is-moving .roulette-ball:after{content:"";position:absolute;width:18px;height:5px;right:5px;top:3px;border-radius:50%;background:linear-gradient(90deg,transparent,#ffffff88);filter:blur(2px)}.ball-track.is-bouncing .roulette-ball{animation:ballRattle .09s steps(2) infinite}.physics-status{position:absolute;left:50%;bottom:-31px;transform:translateX(-50%);display:flex;gap:7px;align-items:center;white-space:nowrap;color:#68717e;font:6px var(--pixel)}.physics-status i{width:6px;height:6px;border-radius:50%;background:#46505e}.physics-status.active{color:#d8b86e}.physics-status.active i{background:#efb94f;box-shadow:0 0 8px #efb94f}.wheel-wrap{margin-bottom:25px}
.wheel-numbers span.landed{color:#fff;background:#d8a94b;border-radius:50%;box-shadow:0 0 10px 4px #f0bf57;text-shadow:1px 1px #5f4217}.relic-token{pointer-events:auto}.relic-belt{pointer-events:none}.relic-belt .relic-token{pointer-events:auto}
@keyframes ballRattle{50%{scale:1.3;filter:brightness(1.8)}}
@media(max-width:850px){.guide-card{padding:30px 22px}.guide-economy{grid-template-columns:1fr}.relic-codex>div{grid-template-columns:repeat(2,1fr)}.token-stat:after{display:none}}
@media(max-width:600px){.rule-steps{grid-template-columns:1fr}.rule-steps article{min-height:0}.relic-codex>div{grid-template-columns:1fr}.guide-card h2{font-size:13px}.guide-card{padding:28px 17px}.run-stats .token-stat{display:block}}
