:root{--page:#1b1140;--accent:#ffcf33;--accent2:#ff4fa0;--text:#fff;--panel:#140a32d1;--app-h:100vh}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}[hidden]{display:none!important}html,body{background:var(--page);height:100%;color:var(--text);overscroll-behavior:none;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;margin:0;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,PingFang HK,Noto Sans HK,Microsoft JhengHei,sans-serif;overflow:hidden}#app{width:100%;max-width:520px;height:var(--app-h);background:radial-gradient(120% 60% at 50% 20%, #3b1e8f 0%, #3b1e8f00 70%), linear-gradient(180deg, #24135a 0%, var(--page) 60%);grid-template-rows:6% 27% 17% 50%;margin:0 auto;display:grid;position:relative;overflow:hidden}#topbar{z-index:5;position:relative}#stage{z-index:2;position:relative;overflow:hidden}#reels{z-index:3;position:relative}#field{z-index:1;position:relative;overflow:hidden}#field-canvas{touch-action:none;width:100%;height:100%;display:block;position:absolute;top:0;bottom:0;left:0;right:0}#overlay{z-index:20;pointer-events:none;position:absolute;top:0;bottom:0;left:0;right:0}#overlay>*{pointer-events:auto}#boot{z-index:100;background:var(--page);justify-content:center;align-items:center;transition:opacity .3s;display:flex;position:fixed;top:0;bottom:0;left:0;right:0}#boot.hidden{opacity:0;pointer-events:none}.boot-inner{text-align:center}.boot-title{color:var(--accent);letter-spacing:2px;margin-bottom:12px;font-size:28px;font-weight:900}.boot-status{opacity:.8;font-size:14px}.boot-start{color:#2a0c55;background:linear-gradient(180deg, #fff3a8, var(--accent));border:0;border-radius:999px;margin-top:18px;padding:12px 28px;font-size:18px;font-weight:800;box-shadow:0 4px #b57d00}#topbar{padding:0 8px;padding-top:env(safe-area-inset-top);background:linear-gradient(#0a041ee6,#0a041e8c);border-bottom:1px solid #ffffff14;align-items:center;gap:6px;font-size:13px;display:flex}.tb-wallet{font-variant-numeric:tabular-nums;align-items:center;gap:4px;min-width:76px;font-size:16px;font-weight:900;display:flex}.tb-coin{background:radial-gradient(circle at 35% 30%,#fff6c0 0 18%,#ffd23f 35%,#c98a00 100%);border-radius:50%;width:18px;height:18px;display:inline-block;box-shadow:inset 0 0 0 2px #e0a400,0 1px #7a4300}.tb-pity{background:#ffffff1f;border-radius:9px;flex:1;min-width:0;height:18px;position:relative;overflow:hidden}.tb-pity-fill{background:linear-gradient(90deg,#ff4fa0,#ffcf33);width:0;transition:width .4s;position:absolute;top:0;bottom:0;left:0;right:auto}.tb-pity-text{text-align:center;white-space:nowrap;text-overflow:ellipsis;text-shadow:0 1px 2px #0009;padding:0 4px;font-size:10.5px;font-weight:700;line-height:18px;display:block;position:relative;overflow:hidden}.tb-col,.tb-mute{color:#2a0c55;background:linear-gradient(180deg, #fff3a8, var(--accent));border:0;border-radius:999px;padding:5px 10px;font-family:inherit;font-size:13px;font-weight:800;position:relative;box-shadow:0 2px #b57d00}.tb-mute{box-shadow:none;color:#fff;background:#ffffff26;padding:5px 7px}.tb-badge{background:var(--accent2);color:#fff;text-align:center;border-radius:50%;width:16px;height:16px;font-size:11px;line-height:16px;position:absolute;top:-5px;right:-4px}.toasts{pointer-events:none;z-index:15;flex-direction:column;align-items:center;gap:4px;display:flex;position:absolute;top:52%;left:0;right:0}.toast{background:var(--panel);text-align:center;border:1px solid #ffffff26;border-radius:999px;max-width:90%;padding:6px 14px;font-size:13px;font-weight:800}.toast-good{color:var(--accent)}.toast-special{background:linear-gradient(90deg,#ff4fa0,#9a6bff);border-color:#fff8}.toast-warn{color:#ffb4b4}#reels{justify-content:center;align-items:center;padding:4px 10px;display:flex}.reel-frame{background:linear-gradient(#ffe066,#ff9a1f 45%,#c55a00);border-radius:14px;flex-direction:column;width:100%;height:100%;padding:6px 8px 16px;display:flex;position:relative;box-shadow:0 0 0 2px #2a0c55,0 4px 12px #0006,inset 0 2px #fff9}.reel-frame.active{animation:.6s infinite alternate framePulse}.reel-frame.reach{background:linear-gradient(#ff9ad0,#ff4fa0 45%,#9a1060);animation:.18s infinite alternate framePulse}.reel-frame.win{background:linear-gradient(#fff,#ffe066 40%,#ffb31f);animation:.12s infinite alternate framePulse}@keyframes framePulse{0%{filter:brightness()}to{filter:brightness(1.25)}}.reel-row{flex:1;grid-template-columns:repeat(3,1fr);gap:6px;min-height:0;display:grid}.reel{background:linear-gradient(#d9d2ff 0%,#fff 30% 70%,#d9d2ff 100%);border-radius:8px;position:relative;overflow:hidden;box-shadow:inset 0 0 0 2px #2a0c55,inset 0 6px 10px #00000040,inset 0 -6px 10px #00000040}.reel-strip{will-change:transform;position:absolute;top:0;left:0;right:0}.reel-cell{height:var(--cell,40px);font-size:calc(var(--cell,40px) * .68);filter:drop-shadow(0 2px #0003);justify-content:center;align-items:center;line-height:1;display:flex}.reel.spinning .reel-strip{filter:blur(1.5px)}.reel.hit{animation:.3s infinite alternate reelHit}@keyframes reelHit{0%{box-shadow:inset 0 0 0 2px #2a0c55,0 0 #fff}to{box-shadow:inset 0 0 0 3px #ff4fa0,0 0 14px 4px #fff}}.reel-held{color:#2a0c55;align-items:center;gap:4px;font-size:9px;font-weight:800;display:flex;position:absolute;bottom:2px;left:10px}.held-lamp{background:#2a0c5559;border-radius:50%;width:8px;height:8px}.held-lamp.on{background:#fff;box-shadow:0 0 6px 2px #ff4fa0}.held-more{font-size:10px}.reel-label{color:#2a0c55;letter-spacing:1px;font-size:12px;font-weight:900;position:absolute;bottom:0;right:10px}.reel-label.big{transform-origin:50%;text-align:center;color:#fff;-webkit-text-stroke:2px #2a0c55;text-shadow:0 3px #2a0c55;pointer-events:none;margin-top:-24px;font-size:34px;top:50%;bottom:auto;left:0;right:0}#stage{align-items:flex-end;display:flex}.stage-bg{pointer-events:none;background:repeating-conic-gradient(from 0deg at 30% 100%, #ffffff0d 0 8deg, #fff0 8deg 16deg);position:absolute;top:0;bottom:0;left:0;right:0}.mascot{pointer-events:none;width:100%;height:100%;position:absolute;bottom:0;left:2%}.mascot-body{aspect-ratio:1;transform-origin:50% 100%;height:104%;position:absolute;bottom:-4%;left:0}.mascot-body img{object-fit:contain;filter:drop-shadow(0 4px 6px #0006);width:100%;height:100%}.bubble{color:#2a0c55;text-align:center;opacity:0;transform-origin:0 100%;background:#fff;border:3px solid #2a0c55;border-radius:18px;min-width:30%;max-width:46%;padding:10px 14px;font-size:16px;font-weight:900;line-height:1.25;position:absolute;top:10%;left:50%;box-shadow:0 4px #2a0c55}.bubble:after{content:"";border:10px solid #0000;border-right:16px solid #2a0c55;position:absolute;bottom:14px;left:-16px}.bubble.bubble-on{opacity:1}.bubble.loud{background:#ffe066;font-size:19px;transform:rotate(-3deg)}.tapstage{z-index:30;touch-action:none;cursor:pointer;position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.speedlines{background:repeating-conic-gradient(from 0deg, #fff0 0 5deg, #ffffff8c 5deg 6deg, #fff0 6deg 11deg);background-color:#28003c59;animation:1.2s linear infinite spinLines;position:absolute;top:-40%;bottom:-40%;left:-40%;right:-40%;-webkit-mask-image:radial-gradient(circle,#0000 0 22%,#000 46%);mask-image:radial-gradient(circle,#0000 0 22%,#000 46%)}@keyframes spinLines{to{transform:rotate(11deg)}}.tap-prompt{text-align:center;color:#ffe066;white-space:nowrap;-webkit-text-stroke:3px #2a0c55;text-shadow:0 5px #2a0c55,0 0 24px #ff4fa0;font-size:clamp(28px,10vw,48px);font-style:italic;font-weight:900;position:absolute;top:34%;left:0;right:0;transform:rotate(-4deg)}.tap-meter{background:#0000008c;border:3px solid #fff;border-radius:11px;height:22px;position:absolute;top:50%;left:12%;right:12%;overflow:hidden}.tap-fill{background:linear-gradient(90deg,#4ff0ff,#ffe066,#ff4fa0);width:0;height:100%;transition:width 80ms}.tap-bonus{text-align:center;color:#fff;text-shadow:0 2px #2a0c55;font-size:18px;font-weight:900;position:absolute;top:calc(50% + 32px);left:0;right:0}.tap-timer{background:#ffe066;width:100%;height:6px;position:absolute;bottom:0;left:0}.tap-spark{pointer-events:none;background:radial-gradient(circle,#fff 0 20%,#ffe066e6 35%,#ff4fa000 70%);border-radius:50%;width:40px;height:40px;margin:-20px 0 0 -20px;position:absolute}.fx-canvas{pointer-events:none;z-index:26;width:100%;height:100%;position:absolute;top:0;bottom:0;left:0;right:0}.show-flash{opacity:0;pointer-events:none;z-index:40;background:#fff;position:absolute;top:0;bottom:0;left:0;right:0}.show{z-index:25;pointer-events:none;height:44%;position:absolute;top:6%;left:0;right:0;overflow:hidden}.show-big{background:radial-gradient(circle at 50% 55%,#ff4fa08c,#280050d9 70%);height:50%}.show-mid{background:radial-gradient(circle at 50% 60%,#ffd23f59,#0000 70%)}.show-burst{aspect-ratio:1;opacity:0;background:repeating-conic-gradient(from 0deg, #fff0a08c 0 10deg, #fff0 10deg 20deg);width:200%;margin-top:-100%;margin-left:-100%;animation:4s linear infinite spinLines;position:absolute;top:55%;left:50%;-webkit-mask-image:radial-gradient(circle,#000 0 30%,#0000 60%);mask-image:radial-gradient(circle,#000 0 30%,#0000 60%)}.show-cutin{display:none;position:absolute;top:8%;bottom:8%;left:-10%;right:-10%}.cutin-band{background:repeating-linear-gradient(110deg,#ffd23f 0 24px,#ff9a1f 24px 48px);position:absolute;top:18%;bottom:18%;left:0;right:0;transform:skewY(-8deg);box-shadow:0 0 0 4px #fff,0 0 0 8px #2a0c55}.show-cutin img{transform-origin:50% 80%;filter:drop-shadow(0 6px #2a0c55);height:112%;position:absolute;top:-6%;left:50%;translate:-50%}.show-banner{text-align:center;color:#fff;-webkit-text-stroke:3px #2a0c55;text-shadow:0 5px #2a0c55;font-size:48px;font-style:italic;font-weight:900;position:absolute;top:30%;left:0;right:0}.show-banner.tier-small{color:#7dff6a;font-size:40px}.show-banner.tier-mid{color:#ffe066;font-size:48px}.show-banner.tier-big{color:#ffe066;text-shadow:0 5px #2a0c55,0 0 30px #ff4fa0;font-size:clamp(40px,14vw,60px)}.show-payout{text-align:center;color:#ffe066;-webkit-text-stroke:2px #2a0c55;text-shadow:0 3px #2a0c55;font-variant-numeric:tabular-nums;font-size:34px;font-weight:900;position:absolute;top:58%;left:0;right:0}#app.fever:after{content:"";pointer-events:none;z-index:24;animation:.15s infinite alternate framePulse;position:absolute;top:0;bottom:0;left:0;right:0;box-shadow:inset 0 0 40px 10px #ff4fa0cc}.collection{z-index:50;background:#0a041eb3;justify-content:center;align-items:center;padding:12px;display:flex;position:absolute;top:0;bottom:0;left:0;right:0}.col-panel{background:linear-gradient(#3b1e8f,#24135a);border:2px solid #fff3;border-radius:18px;width:100%;max-height:100%;padding:14px;overflow:auto;box-shadow:0 10px 30px #00000080}.col-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.col-title{color:var(--accent);font-size:19px;font-weight:900}.col-close{color:#fff;background:#ffffff26;border:0;border-radius:999px;padding:6px 14px;font-family:inherit;font-size:14px;font-weight:800}.col-hint{opacity:.8;margin:2px 0 10px;font-size:12px}.col-pick{text-align:center;background:linear-gradient(90deg,#ff4fa0,#9a6bff);border-radius:10px;margin-bottom:10px;padding:8px 10px;font-size:13px;font-weight:800;animation:.6s infinite alternate framePulse}.col-grid{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.card{aspect-ratio:2/3;background:linear-gradient(160deg, var(--c2), var(--c1));border:3px solid #fff;border-radius:10px;flex-direction:column;justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden;box-shadow:0 3px #00000059}.card:before{content:"";background:repeating-conic-gradient(from 0deg at 50% 45%, #ffffff2e 0 10deg, #fff0 10deg 20deg);position:absolute;top:0;bottom:0;left:0;right:0}.card-no{color:#fff;text-shadow:0 1px 2px #00000080;font-size:10px;font-weight:900;position:absolute;top:4px;left:6px}.card-glyph{filter:drop-shadow(0 3px #00000040);font-size:40px;line-height:1;position:relative}.card-name{text-align:center;color:#fff;background:#00000059;padding:4px 2px;font-size:12px;font-weight:900;position:absolute;bottom:0;left:0;right:0}.card.missing{background:#2c2350;border-color:#ffffff40}.card.missing:before{display:none}.card.missing .card-glyph{color:#ffffff59;font-weight:900}.col-grid.picking .card.missing{border-color:var(--accent);cursor:pointer;animation:.5s infinite alternate framePulse}.card.chosen{border-color:#fff;transform:scale(1.06)}.col-info{margin-top:12px}.col-progress{background:#ffffff1f;border-radius:11px;height:22px;position:relative;overflow:hidden}.col-progress-fill{background:linear-gradient(90deg,#ff4fa0,#ffcf33);position:absolute;top:0;bottom:0;left:0;right:auto}.col-progress span{text-align:center;text-shadow:0 1px 2px #0009;font-size:12px;font-weight:800;line-height:22px;display:block;position:relative}.col-line{opacity:.9;margin-top:6px;font-size:12px}.col-complete{text-align:center;color:var(--accent);padding:8px;font-size:18px;font-weight:900}.col-rules{opacity:.65;margin-top:10px;font-size:11px}.col-credit,.boot-credit{opacity:.45;margin-top:6px;font-size:10px}.boot-credit{margin-top:18px}.reveal{z-index:45;pointer-events:none;perspective:600px;flex-direction:column;justify-content:center;align-items:center;display:flex;position:absolute;top:0;bottom:0;left:0;right:0}.reveal .card{width:42%}.reveal .card-glyph{font-size:64px}.reveal .card-name{font-size:16px}.reveal-rays{aspect-ratio:1;background:repeating-conic-gradient(from 0deg, #fff0a059 0 8deg, #fff0 8deg 16deg);width:160%;margin:-80% 0 0 -80%;animation:5s linear infinite spinLines;position:absolute;top:50%;left:50%;-webkit-mask-image:radial-gradient(circle,#000 0 20%,#0000 55%);mask-image:radial-gradient(circle,#000 0 20%,#0000 55%)}.reveal-tag{z-index:1;background:var(--accent2);border-radius:999px;margin-top:-8px;padding:2px 12px;font-size:14px;font-weight:900}.reveal-tag.dup{background:#6b5aa8}.reveal-label{text-align:center;background:var(--panel);border-radius:12px;max-width:86%;margin-top:10px;padding:6px 14px;font-size:14px;font-weight:900}.refill{z-index:22;background:var(--panel);text-align:center;border:2px solid #fff3;border-radius:16px;padding:12px 18px;font-weight:800;position:absolute;top:72%;left:50%;transform:translate(-50%,-50%)}.refill button{color:#2a0c55;background:linear-gradient(180deg, #fff3a8, var(--accent));border:0;border-radius:999px;margin-top:8px;padding:8px 18px;font-family:inherit;font-size:15px;font-weight:900;box-shadow:0 3px #b57d00}
