:root{--bg: #0b0c09;--off-white: #d9d4c3;--faded-red: #b0574a;--sickly-yellow: #c8b45a;--stage-aspect: 2752 / 1536;font-family:Courier New,ui-monospace,Cascadia Mono,monospace}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{background:var(--bg);color:var(--off-white);overflow:hidden;-webkit-font-smoothing:antialiased}.app{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;overflow:hidden;background:radial-gradient(120% 90% at 50% 40%,#14160f 0%,var(--bg) 70%)}.stage{position:relative;width:min(100vw,calc(100dvh * var(--stage-aspect)));aspect-ratio:var(--stage-aspect);overflow:hidden;background:#000}.stage-inner{position:absolute;top:0;right:0;bottom:0;left:0;will-change:transform}.frame{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:fill;-webkit-user-select:none;user-select:none;transition:opacity .18s ease}.frame-spin,.frame-jackpot{opacity:0}[data-phase=activate] .frame-spin,[data-phase=spin] .frame-spin{opacity:1;transition-duration:.16s}[data-phase=return] .frame-spin{opacity:0;transition-duration:.26s}[data-outcome=jackpot][data-phase=react] .frame-idle{opacity:0;transition-duration:.12s}[data-outcome=jackpot][data-phase=react] .frame-jackpot{opacity:1;transition-duration:.12s;animation:jackpot-rise .46s cubic-bezier(.22,.68,.31,1.12) both}@keyframes jackpot-rise{0%{transform:translateY(2.4%)}to{transform:translateY(0)}}.reels{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;transition:opacity .22s ease}.reels.live{opacity:1}.reel{position:absolute;overflow:hidden;border-radius:clamp(2px,.3vw,7px);box-shadow:inset 0 -7px 14px #14120a80,inset 0 6px 12px #14120a66}.strip{position:absolute;top:0;left:0;width:100%;will-change:transform}.tile{width:100%;overflow:hidden}.tile img{display:block;width:100%;height:100%;object-fit:cover;-webkit-user-select:none;user-select:none}[data-phase=activate] .stage-inner{animation:jolt .15s ease-out}[data-phase=spin] .stage-inner{animation:rummage-shake .13s linear infinite}[data-phase=react][data-outcome=loss] .stage-inner{animation:settle .32s ease-in-out}[data-phase=react][data-outcome=match] .stage-inner{animation:machine-bounce 1.15s ease-in-out}[data-phase=react][data-outcome=jackpot] .stage-inner{animation:hard-shake .42s ease-out}@keyframes jolt{0%{transform:translate(0)}35%{transform:translate(.35%,.5%)}70%{transform:translate(-.25%,-.2%)}to{transform:translate(0)}}@keyframes rummage-shake{0%{transform:translate(.12%,.05%) rotate(.04deg)}50%{transform:translate(-.12%,-.07%) rotate(-.04deg)}to{transform:translate(.12%,.05%) rotate(.04deg)}}@keyframes settle{0%{transform:translateY(.15%)}60%{transform:translateY(-.1%)}to{transform:translate(0)}}@keyframes machine-bounce{0%{transform:translateY(0)}9%{transform:translateY(-1.5%)}17%{transform:translateY(0)}30%{transform:translateY(0)}39%{transform:translateY(-1.2%)}48%{transform:translateY(0)}60%{transform:translateY(0)}68%{transform:translateY(-.8%)}76%{transform:translateY(0)}to{transform:translateY(0)}}@keyframes hard-shake{0%{transform:translate(0)}15%{transform:translate(-.55%,.4%)}30%{transform:translate(.5%,-.45%)}45%{transform:translate(-.4%,.3%)}60%{transform:translate(.3%,-.2%)}75%{transform:translate(-.15%,.1%)}to{transform:translate(0)}}.reel-flash{position:absolute;left:36.5%;top:63.5%;width:27%;height:25%;pointer-events:none;opacity:0;background:radial-gradient(60% 55% at 50% 50%,rgba(255,214,140,.75) 0%,rgba(255,190,110,.35) 55%,transparent 100%);filter:blur(2px)}[data-phase=react][data-outcome=match] .reel-flash{animation:reel-flash .9s ease-out}@keyframes reel-flash{0%{opacity:0}12%{opacity:1}35%{opacity:.55}45%{opacity:.85}to{opacity:0}}.flash{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;opacity:0;background:radial-gradient(70% 60% at 50% 42%,rgba(255,244,214,.85),transparent 75%)}[data-phase=react][data-outcome=match] .flash{animation:flash-soft .7s ease-out}[data-phase=react][data-outcome=jackpot] .flash{animation:flash-hard .55s ease-out}@keyframes flash-soft{0%{opacity:0}10%{opacity:.45}to{opacity:0}}@keyframes flash-hard{0%{opacity:0}8%{opacity:.9}to{opacity:0}}.jackpot-message{position:absolute;left:50%;top:20%;transform:translate(-50%);pointer-events:none;opacity:0;color:var(--sickly-yellow);font-size:clamp(14px,2.6vw,40px);font-weight:700;letter-spacing:.42em;text-indent:.42em;white-space:nowrap;text-shadow:0 2px 0 rgba(0,0,0,.8),0 0 24px rgba(200,180,90,.35)}[data-phase=react][data-outcome=jackpot] .jackpot-message{animation:message-in .48s ease-out .18s forwards}@keyframes message-in{0%{opacity:0;transform:translate(-50%) translateY(.8%)}to{opacity:1;transform:translate(-50%) translateY(0)}}.lever-hotspot{position:absolute;background:transparent;border:none;cursor:grab;outline-offset:-3px;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.lever-hotspot:active{cursor:grabbing}.lever-hotspot:focus-visible{outline:2px dashed var(--sickly-yellow);border-radius:8px}.lever-hotspot:disabled{cursor:default}.vignette{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:radial-gradient(115% 100% at 50% 45%,transparent 52%,rgba(0,0,0,.34) 82%,rgba(0,0,0,.55) 100%)}.grain{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;opacity:.07;mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E");background-size:160px 160px}.boot-screen{position:absolute;top:0;right:0;bottom:0;left:0;z-index:5;display:grid;place-items:center;background:var(--bg)}.boot-cursor{width:clamp(8px,1vw,13px);height:clamp(14px,1.8vw,24px);background:var(--sickly-yellow);opacity:.55;animation:boot-blink 1s steps(2,jump-none) infinite}@keyframes boot-blink{0%{opacity:.55}50%{opacity:.08}to{opacity:.55}}.boot-flicker{animation:lamp-boot .56s linear both}@keyframes lamp-boot{0%{opacity:0}16%{opacity:.42}24%{opacity:.1}38%{opacity:.78}48%{opacity:.3}64%{opacity:1}to{opacity:1}}.ui-top,.ui-bottom{position:absolute;left:0;right:0;display:flex;align-items:center;justify-content:space-between;padding:14px 20px;pointer-events:none;z-index:2;opacity:0;transition:opacity .32s ease .12s}.ui-top.on,.ui-bottom.on{opacity:1}.ui-top{top:0}.ui-bottom{bottom:0}.ui-top h1{font-size:clamp(11px,1.4vw,18px);font-weight:700;letter-spacing:.34em;color:var(--off-white);text-shadow:0 2px 4px rgba(0,0,0,.9)}.ui-top nav{display:flex;gap:14px;pointer-events:auto}.ui-top nav a{font-size:clamp(9px,1vw,12px);letter-spacing:.22em;color:var(--sickly-yellow);text-decoration:none;border-bottom:1px solid rgba(200,180,90,.4);text-shadow:0 2px 4px rgba(0,0,0,.9)}.ui-top nav a:hover{color:var(--off-white)}.status{position:absolute;left:50%;transform:translate(-50%);font-size:clamp(11px,1.3vw,17px);font-weight:700;letter-spacing:.4em;text-indent:.4em;color:var(--off-white);text-shadow:0 2px 5px rgba(0,0,0,.95);white-space:nowrap}.sound-toggle{margin-left:auto;pointer-events:auto;background:transparent;border:1px solid rgba(217,212,195,.25);color:#d9d4c3bf;font:inherit;font-size:clamp(8px,.9vw,11px);letter-spacing:.2em;padding:4px 10px;cursor:pointer}.sound-toggle:hover{border-color:#d9d4c380;color:var(--off-white)}@media(max-width:640px){.ui-bottom{flex-direction:column;justify-content:flex-end;gap:6px}.status{position:static;transform:none;font-size:10px;letter-spacing:.28em;text-indent:.28em}}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}@media(prefers-reduced-motion:reduce){.stage-inner,.frame-jackpot,.flash,.reel-flash,.jackpot-message{animation:none!important}.boot-flicker{animation:boot-fade .25s ease both!important}@keyframes boot-fade{0%{opacity:0}to{opacity:1}}.frame,.reels{transition-duration:.3s}[data-phase=react][data-outcome=jackpot] .jackpot-message{opacity:1;transition:opacity .3s ease}}
