*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%;background:#05070d;overflow:hidden;touch-action:none;user-select:none;-webkit-user-select:none}
body{font-family:"Microsoft JhengHei","Noto Sans TC","PingFang TC",system-ui,sans-serif;color:#fff}
#stage{position:absolute;left:50%;top:50%;width:1600px;height:900px;transform-origin:50% 50%;overflow:hidden;background:#111;box-shadow:0 0 80px #000}
#scene{position:absolute;inset:0;width:1600px;height:900px;display:block;cursor:crosshair}
.ui{position:absolute;z-index:5}
button{font:inherit;color:inherit;border:0;background:none;padding:0;cursor:pointer;outline:none}
.num,.jv,#dist,#speed,#balance,#win,#betv,#perShot,.wm{font-family:"Arial Black",Impact,"Segoe UI Black",sans-serif;font-style:italic}

/* top-left */
.mascot{left:6px;top:2px;width:172px;pointer-events:none;filter:drop-shadow(0 4px 6px #0008)}
.topbtns{left:164px;top:62px;display:flex;gap:9px}
.sq{width:72px;height:74px;background:url(assets/ui/btn_square.png) center/100% 100% no-repeat;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;filter:drop-shadow(0 3px 4px #0007);transition:transform .08s}
.sq:active{transform:scale(.92)}
.sq img{height:30px;max-width:40px;object-fit:contain}
.sq span{font-size:15px;font-weight:800;letter-spacing:1px;text-shadow:0 2px 2px #000a}
#soundBtn .offi{display:none}#soundBtn.off .on{display:none}#soundBtn.off .offi{display:block}

/* jackpot */
.jackpot{left:50%;top:0;width:590px;height:133px;margin-left:-295px;background:url(assets/ui/jackpot_frame.png) center/100% 100% no-repeat;pointer-events:none;filter:drop-shadow(0 5px 8px #0009)}
.jackpot .jl{position:absolute;left:128px;top:70px;font:900 italic 29px "Arial Black",Impact,sans-serif;color:#fff;-webkit-text-stroke:1.5px #5a0d00;text-shadow:0 2px 0 #5a0d00}
.jackpot .jv{position:absolute;right:112px;top:55px;font-size:50px;font-weight:900;line-height:1.1;background:linear-gradient(#fffbd0 20%,#ffd21e 55%,#ff8a00);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 2px 0 #6a1500) drop-shadow(0 0 1px #6a1500)}

/* top-right */
.distpill{right:268px;top:58px;height:50px;padding:0 20px 0 12px;display:flex;align-items:center;gap:8px;background:linear-gradient(#123e4c,#0b2732);border:2px solid #e9c46a;border-radius:14px;box-shadow:0 4px 8px #0008,inset 0 2px 0 #ffffff30;font-weight:800;font-size:20px}
.distpill img{height:32px}.distpill b{font-size:27px;color:#7ff0ff;margin-left:4px}.distpill i{font:900 italic 18px "Arial Black",sans-serif;color:#7ff0ff}
.fever{right:16px;top:8px;width:258px;height:66px}
.fever .fl{position:absolute;left:14px;top:-4px;font:900 italic 32px "Arial Black",Impact,sans-serif;color:#fff;-webkit-text-stroke:1.5px #c2186b;text-shadow:0 0 10px #ff4fa3,0 2px 0 #7a0d43;transform:rotate(-9deg);z-index:2}
#feverFill{position:absolute;left:20px;right:0;top:22px;height:44px;background:url(assets/ui/fever_frame.png) center/100% 100% no-repeat;display:flex;align-items:center;justify-content:center;gap:4px;padding:0 14px}
#feverFill i{width:38px;height:36px;background:url(assets/ui/icon_banana_off.png) center/contain no-repeat;opacity:.75;transform:rotate(-20deg);transition:transform .2s}
#feverFill i.lit{background-image:url(assets/ui/icon_banana.png);opacity:1;transform:rotate(-20deg) scale(1.18);filter:drop-shadow(0 0 6px #ffd84a)}
.fever.active .fl{animation:fv .3s infinite alternate}.fever.active #feverFill{filter:drop-shadow(0 0 12px #ff4fa3)}
@keyframes fv{from{transform:rotate(-9deg) scale(1)}to{transform:rotate(-9deg) scale(1.15)}}
.speedo{right:22px;top:96px;width:150px;height:147px;background:url(assets/ui/speedo.png) center/contain no-repeat;pointer-events:none;filter:drop-shadow(0 4px 6px #0009)}
.speedo b{position:absolute;left:0;right:0;top:66px;text-align:center;font-size:40px;font-weight:900;background:linear-gradient(#fff6c0,#ffc21e);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 2px 0 #000) drop-shadow(0 0 2px #000)}
.speedo i{position:absolute;left:0;right:0;top:110px;text-align:center;font:900 italic 15px "Arial Black",sans-serif;color:#fff;text-shadow:0 1px 2px #000}

/* side */
.arrow{top:590px;width:138px;height:141px;background:url(assets/ui/btn_arrow.png) center/contain no-repeat;filter:drop-shadow(0 5px 6px #0009);transition:transform .08s}
.arrow.left{left:22px}.arrow.right{right:22px;transform:scaleX(-1)}
.arrow.left.down{transform:scale(.9)}.arrow.right.down{transform:scaleX(-1) scale(.9)}
.weapon{right:14px;top:372px;width:140px;height:196px;background:url(assets/ui/panel_weapon.png) center/100% 100% no-repeat;filter:drop-shadow(0 5px 6px #0009);transition:transform .08s}
.weapon:active{transform:scale(.94)}
.weapon .wt{position:absolute;left:0;right:0;top:5px;text-align:center;font-size:21px;font-weight:900;letter-spacing:3px;text-shadow:0 2px 2px #000}
.weapon img{position:absolute;left:28px;top:46px;width:84px;height:74px;object-fit:contain;filter:drop-shadow(0 3px 3px #0008)}
.weapon .wn{position:absolute;left:0;right:0;top:116px;text-align:center;font-size:24px;font-weight:900;text-shadow:0 2px 2px #000}
.weapon .wm{position:absolute;left:0;right:0;top:144px;text-align:center;font-size:30px;font-weight:900;color:#ffd84a;text-shadow:0 2px 0 #5a2a00}

/* bottom-left */
.pill{left:16px;width:252px;height:60px;background:linear-gradient(#17242c,#0b1218);border:2.5px solid #e9c46a;border-radius:18px;box-shadow:0 4px 8px #0009,inset 0 2px 0 #ffffff25;overflow:hidden}
.pill::after{content:"";position:absolute;right:0;top:0;bottom:0;width:16px;background:conic-gradient(#fff 25%,#111 0 50%,#fff 0 75%,#111 0) 0 0/16px 16px}
.pill.bal{top:762px}.pill.won{top:828px}
.pill img{position:absolute;left:8px;top:6px;height:44px;width:48px;object-fit:contain}
.pill span{position:absolute;left:70px;top:1px;font-size:18px;font-weight:800;color:#e6edf0;text-shadow:0 1px 2px #000}
.pill b{position:absolute;right:26px;bottom:-1px;font-size:33px;font-weight:900;background:linear-gradient(#fff6b8,#ffc81e 60%,#ff9a00);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 2px 0 #3a1a00);transform-origin:100% 80%}

/* bottom-right */
.betpanel{right:190px;top:748px;width:346px;height:140px;background:linear-gradient(#f7edd6,#e2d1ae);border:3px solid #e2b24a;border-radius:18px;box-shadow:0 5px 10px #000a,inset 0 0 0 3px #5b3a16,inset 0 3px 0 3px #fff8}
.betpanel .per{position:absolute;left:150px;top:-30px;height:36px;padding:0 14px 0 8px;display:flex;align-items:center;gap:5px;background:linear-gradient(#ffe27a,#f5b21e);border:2px solid #7a4a00;border-radius:12px;color:#4a2600;font-weight:900;font-size:19px;box-shadow:0 3px 5px #0008}
.betpanel .per img{height:26px}.betpanel .per b{font-size:22px}
.betpanel .bt{position:absolute;left:14px;top:9px;width:168px;text-align:center;font-size:21px;font-weight:900;color:#2b1c0c;letter-spacing:2px}
.betrow{position:absolute;left:12px;top:40px;width:172px;height:46px;background:#1a1410;border-radius:12px;border:2px solid #5b3a16;display:flex;align-items:center;justify-content:space-between;padding:0 3px}
.betrow b{font-size:29px;font-weight:900;color:#fff;text-shadow:0 2px 0 #000}
.pm{width:40px;height:40px;background:center/contain no-repeat;transition:transform .08s}.pm:active{transform:scale(.85)}
.pm.minus{background-image:url(assets/ui/icon_minus.png)}.pm.plus{background-image:url(assets/ui/icon_plus.png)}
.minmax{position:absolute;left:12px;top:93px;width:172px;display:flex;gap:6px}
.minmax button{flex:1;height:34px;border-radius:10px;background:linear-gradient(#3a4a52,#1c272d);border:2px solid #0d1418;font-weight:900;font-size:18px;box-shadow:inset 0 2px 0 #ffffff30}
.minmax button:active{transform:scale(.94)}
.auto{position:absolute;left:192px;top:9px;width:70px;height:120px;background:linear-gradient(#fff,#e9e2d0);border:2px solid #5b3a16;border-radius:12px;color:#2b1c0c;font-weight:900;font-size:20px}
.auto span{position:absolute;left:0;right:0;top:8px}
.auto i{position:absolute;left:7px;right:7px;top:52px;height:34px;border-radius:17px;background:#9aa3a8;box-shadow:inset 0 2px 4px #0007;transition:background .15s}
.auto i::after{content:"OFF";position:absolute;left:3px;top:3px;width:28px;height:28px;border-radius:50%;background:#fff;box-shadow:0 2px 3px #0007;font:900 9px Arial;line-height:28px;text-align:center;color:#666;transition:left .15s}
.auto.on i{background:#2ecf6a}.auto.on i::after{left:25px;content:"ON";color:#12813c}
.lock{position:absolute;left:268px;top:9px;width:66px;height:120px;background:linear-gradient(#1b6b78,#0e3f4a);border:2px solid #e9c46a;border-radius:12px;font-weight:900;font-size:19px;box-shadow:inset 0 2px 0 #ffffff40}
.lock img{position:absolute;left:14px;top:14px;width:38px;height:52px;object-fit:contain}.lock span{position:absolute;left:0;right:0;bottom:12px}
.lock .l1{display:none}.lock.on .l1{display:block}.lock.on .l0{display:none}.lock.on{background:linear-gradient(#e0483a,#8f1d14);box-shadow:0 0 14px #ff6a5a,inset 0 2px 0 #ffffff40}
.fire{right:-6px;top:706px;width:206px;height:188px;background:url(assets/ui/btn_fire.png) center/contain no-repeat;filter:drop-shadow(0 6px 8px #000a);transform-origin:50% 55%}
.fire span{position:absolute;left:0;right:0;top:42px;text-align:center;font-size:47px;font-weight:900;font-style:italic;letter-spacing:2px;color:#fff;-webkit-text-stroke:2px #7a0a00;text-shadow:0 3px 0 #7a0a00,0 0 12px #ffb0a0}

/* overlays */
#help{position:absolute;inset:0;z-index:40;background:#04101ae6;backdrop-filter:blur(6px);padding:44px 230px;font-size:22px;line-height:1.6;overflow-y:auto}
#help[hidden],#title[hidden],#loading[hidden],#startBtn[hidden]{display:none}
#help h2{font-size:52px;margin:0 0 10px;color:#ffd84a;text-shadow:0 3px 0 #5a2a00}
#help b{color:#ffd84a}#help .tip{text-align:center;opacity:.6;margin-top:30px}
#title{position:absolute;inset:0;z-index:15;display:flex;flex-direction:column;align-items:center;justify-content:center;background:radial-gradient(ellipse at 50% 45%,#1a0a2a66,#05060fcc 75%);text-align:center}
#title .logo{width:430px;margin-bottom:-36px;filter:drop-shadow(0 8px 14px #000a);animation:bob 2.4s ease-in-out infinite}
@keyframes bob{50%{transform:translateY(-10px)}}
#title h1{margin:0;font-size:120px;font-weight:900;font-style:italic;letter-spacing:4px;line-height:1.1;background:linear-gradient(#fffbd0 15%,#ffd21e 50%,#ff7a00);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 5px 0 #6a1500) drop-shadow(0 0 22px #ff7a3c)}
#title h1 span{display:block;font-size:76px;letter-spacing:14px;background:linear-gradient(#fff 15%,#ffd0e6 50%,#ff5fa8);-webkit-background-clip:text;background-clip:text;filter:none}
#title .sub{margin:6px 0 30px;font:900 italic 26px "Arial Black",sans-serif;letter-spacing:6px;color:#ffe9c8;text-shadow:0 2px 6px #000}
#startBtn{width:380px;height:96px;border-radius:50px;background:linear-gradient(#ff6a4a,#d81e12 55%,#9c0d08);border:5px solid #ffd84a;font-size:46px;font-weight:900;font-style:italic;letter-spacing:6px;text-shadow:0 3px 0 #6a0a00;box-shadow:0 8px 0 #6a0a00,0 14px 30px #000a,inset 0 4px 0 #ffffff70;animation:pulse 1s ease-in-out infinite alternate}
#startBtn:active{transform:translateY(6px);box-shadow:0 2px 0 #6a0a00}
@keyframes pulse{to{filter:brightness(1.18);transform:scale(1.04)}}
#loading{width:420px;font-size:18px;color:#ffe9c8}
#loading .bar{height:16px;border-radius:8px;background:#0008;border:2px solid #ffd84a;overflow:hidden;margin-bottom:8px}
#loadBar{height:100%;width:0;background:linear-gradient(90deg,#ff7a00,#ffd21e)}
#title .keys{margin-top:34px;font-size:20px;color:#fff;opacity:.85;text-shadow:0 2px 4px #000}

/* ================= bonus layer ================= */
.mascot{display:none}
.topbtns{left:186px}
#bonusLayer{position:absolute;inset:0;z-index:8;pointer-events:none}
#bonusLayer>*{pointer-events:auto}
#avatarBox{position:absolute;left:4px;top:0;width:176px;height:228px;pointer-events:none}
#avatarImg{position:absolute;left:20px;top:16px;width:136px;height:136px;border-radius:50%;pointer-events:auto;cursor:pointer;transition:transform .2s}
#avatarBox.happy #avatarImg{animation:avBounce .5s ease-in-out infinite alternate}
@keyframes avBounce{to{transform:translateY(-4px) scale(1.04)}}
#avatarFrame{position:absolute;left:0;top:-6px;width:176px;pointer-events:none;filter:drop-shadow(0 4px 6px #000a)}
#badges{position:absolute;left:18px;top:184px;display:flex;gap:4px}
#badges i{width:40px;height:40px;background:center/contain no-repeat;filter:grayscale(1) brightness(.45);opacity:.75;transition:all .25s}
#badges i.lit{filter:drop-shadow(0 0 8px #ff6ab0);opacity:1;transform:scale(1.12)}
#bubble{position:absolute;left:170px;top:120px;white-space:nowrap;background:#fff;color:#c2185b;font-weight:900;font-size:22px;padding:8px 16px;border-radius:18px;border:3px solid #ff7ab8;box-shadow:0 4px 10px #0007}
#bubble::before{content:"";position:absolute;left:-14px;top:14px;border:8px solid transparent;border-right:12px solid #ff7ab8}
#bubble.pop{animation:bubPop .3s ease-out}
@keyframes bubPop{from{transform:scale(.4);opacity:0}to{transform:scale(1);opacity:1}}
#bubble[hidden],#freePanel[hidden],#cut[hidden],#wheel[hidden],#gift[hidden]{display:none}
#freePanel{position:absolute;left:50%;top:128px;transform:translateX(-50%);text-align:center;pointer-events:none;filter:drop-shadow(0 4px 8px #000a)}
#freePanel img{width:380px;display:block;margin:0 auto -14px;animation:freePulse .6s ease-in-out infinite alternate}
@keyframes freePulse{to{transform:scale(1.05)}}
#freePanel .row{display:inline-flex;align-items:baseline;gap:8px;background:linear-gradient(#5a0a3a,#2a0420);border:3px solid #ff7ab8;border-radius:20px;padding:4px 22px;font-weight:900;font-size:22px;color:#ffd6ec}
#freePanel b{font:900 italic 38px "Arial Black",Impact,sans-serif;color:#fff36a;text-shadow:0 2px 0 #7a1a00}
#freePanel .sep{opacity:.5}
/* cut-scenes */
#cut{position:absolute;inset:0;z-index:30;background:#000;cursor:pointer;animation:cutIn .45s ease-out}
@keyframes cutIn{from{opacity:0}to{opacity:1}}
#cutCv{position:absolute;inset:0;width:1600px;height:900px}
#cut .bar{position:absolute;left:0;right:0;height:64px;background:#000}
#cut .bar.top{top:0;animation:barT .5s ease-out}#cut .bar.bot{bottom:0;animation:barB .5s ease-out}
@keyframes barT{from{transform:translateY(-64px)}}@keyframes barB{from{transform:translateY(64px)}}
#cutDlg{position:absolute;left:200px;right:200px;bottom:92px;min-height:132px;padding:30px 44px 22px;background:linear-gradient(180deg,rgba(40,8,32,.82),rgba(20,4,18,.92));border:3px solid #ff8cc4;border-radius:22px;box-shadow:0 0 30px #ff4fa366,0 10px 30px #000c}
#cutDlg .nm{position:absolute;left:28px;top:-26px;padding:6px 26px;background:linear-gradient(#ff7ab8,#d81b74);border:3px solid #ffe0f0;border-radius:16px;font-weight:900;font-size:24px;letter-spacing:2px;color:#fff;text-shadow:0 2px 0 #7a0a3a}
#cutDlg .tx{font-size:36px;font-weight:700;line-height:1.5;color:#fff;text-shadow:0 2px 4px #000}
#cutDlg i{position:absolute;right:24px;bottom:12px;color:#ff9ad0;font-style:normal;font-size:22px;opacity:0}
#cutDlg.full i{opacity:1;animation:blink .7s infinite alternate}
@keyframes blink{to{opacity:.2;transform:translateY(4px)}}
#cutSkip{position:absolute;right:26px;top:84px;padding:8px 18px;border-radius:14px;background:#0008;border:2px solid #fff6;color:#fff;font-weight:900;font-size:18px;letter-spacing:2px}
/* wheel */
#wheel{position:absolute;inset:0;z-index:25;background:radial-gradient(circle at 50% 52%,#3a0a3acc,#05020af2 70%);animation:cutIn .4s}
#wheel .logo{position:absolute;left:70px;top:70px;width:440px;transform:rotate(-7deg);z-index:2;filter:drop-shadow(0 6px 10px #000);animation:freePulse .8s ease-in-out infinite alternate}
#wheelCv{position:absolute;left:50%;top:10px;width:880px;height:880px;transform:translateX(-50%);cursor:pointer}
#spinBtn{position:absolute;right:170px;bottom:120px;width:230px;height:110px;border-radius:55px;background:linear-gradient(#ff6a4a,#d81e12 55%,#9c0d08);border:5px solid #ffd84a;font:900 italic 46px "Arial Black",Impact,sans-serif;color:#fff;text-shadow:0 3px 0 #6a0a00;box-shadow:0 8px 0 #6a0a00,0 12px 30px #000a;animation:pulse 1s infinite alternate}
#spinBtn:disabled{filter:grayscale(.7) brightness(.7);animation:none}
#wheelRes{position:absolute;left:0;right:0;bottom:60px;text-align:center;font:900 italic 64px "Arial Black",Impact,"Microsoft JhengHei",sans-serif;color:#ffe45c;-webkit-text-stroke:3px #5a0a00;opacity:0;transform:scale(.4)}
#wheelRes.show{opacity:1;transform:scale(1);transition:all .35s cubic-bezier(.3,1.6,.5,1)}
/* gift pick */
#gift{position:absolute;inset:0;z-index:25;background:radial-gradient(circle at 50% 55%,#5a1040dd,#120214f5 72%);animation:cutIn .4s}
#gift .logo{position:absolute;left:50%;top:20px;width:640px;transform:translateX(-50%);filter:drop-shadow(0 6px 10px #000)}
#gift .hint{position:absolute;left:0;right:0;top:250px;text-align:center;font-weight:900;font-size:40px;color:#fff;text-shadow:0 3px 0 #a0105a,0 0 18px #ff6ab0}
#gift .boxes{position:absolute;left:0;right:0;top:330px;display:flex;justify-content:center;gap:90px}
#gift .boxes button{width:300px;height:320px;background:center bottom/contain no-repeat;position:relative;transition:transform .2s,filter .3s;filter:drop-shadow(0 10px 14px #000a)}
#gift .boxes button:not(:disabled):hover{transform:translateY(-14px) scale(1.05)}
#gift .boxes button:not(:disabled){animation:giftIdle 1.2s ease-in-out infinite alternate}
#gift .boxes button:nth-child(2){animation-delay:.3s}#gift .boxes button:nth-child(3){animation-delay:.6s}
@keyframes giftIdle{to{transform:translateY(-10px)}}
#gift .boxes button.shake{animation:giftShake .12s linear infinite}
@keyframes giftShake{0%{transform:rotate(-6deg)}50%{transform:rotate(6deg)}100%{transform:rotate(-6deg)}}
#gift .boxes button.open{transform:scale(1.18);filter:drop-shadow(0 0 30px #ffd84a)}
#gift .boxes button.other{filter:grayscale(.8) brightness(.55)}
#gift .boxes b{position:absolute;left:0;right:0;top:-40px;font:900 italic 64px "Arial Black",Impact,sans-serif;color:#ffe45c;-webkit-text-stroke:3px #5a0a00;text-shadow:0 0 16px #ff9a1a}
#gift .boxes button.other b{font-size:44px;color:#ddd;text-shadow:none}
/* ===== bonus 2 ===== */
#title{background:center/cover no-repeat}
#splash{position:absolute;inset:0;z-index:20;pointer-events:none;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .3s}
#splash[hidden]{display:none}
#splash.show{opacity:1}
#splash img{max-width:880px;max-height:420px;filter:drop-shadow(0 8px 16px #000a);transform:scale(.4);transition:transform .45s cubic-bezier(.3,1.7,.5,1)}
#splash.show img{transform:scale(1)}
#splash.warn{background:linear-gradient(180deg,transparent 22%,rgba(120,0,0,.55) 22%,rgba(120,0,0,.55) 78%,transparent 78%);animation:warnFlash .35s steps(2) infinite}
#splash.warn img{max-width:1040px;max-height:470px;border:6px solid #ff3a2a;border-radius:10px;box-shadow:0 0 40px #ff2a1a}
#splash.warn .wtxt{position:absolute;top:150px;font:900 italic 96px "Arial Black",Impact,sans-serif;color:#ffe45c;-webkit-text-stroke:4px #7a0000;letter-spacing:10px;text-shadow:0 0 24px #ff2a1a}
@keyframes warnFlash{50%{filter:brightness(1.35)}}
#albumBtn img{height:28px}
/* card reveal */
#cardRev{position:absolute;inset:0;z-index:35;background:radial-gradient(circle at 50% 48%,rgba(40,10,40,.85),rgba(4,2,8,.96) 70%);display:flex;align-items:center;justify-content:center;cursor:pointer}
#cardRev[hidden]{display:none}
#cardRev .rays{position:absolute;left:50%;top:48%;width:1400px;height:1400px;margin:-700px 0 0 -700px;background:repeating-conic-gradient(from 0deg,color-mix(in srgb,var(--rc) 35%,transparent) 0 8deg,transparent 8deg 22deg);border-radius:50%;mask:radial-gradient(circle,#000 20%,transparent 65%);-webkit-mask:radial-gradient(circle,#000 20%,transparent 65%);animation:spin 14s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
#cardRev .card{position:relative;width:420px;height:560px;border-radius:22px;padding:10px;background:linear-gradient(135deg,var(--rc),#fff 45%,var(--rc));box-shadow:0 0 50px var(--rc),0 20px 50px #000;transform:rotateY(90deg) scale(.6)}
#cardRev.show .card{animation:cardIn .8s cubic-bezier(.3,1.4,.5,1) forwards}
@keyframes cardIn{0%{transform:rotateY(90deg) scale(.6)}60%{transform:rotateY(-12deg) scale(1.05)}100%{transform:rotateY(0) scale(1)}}
#cardRev[data-rar=SSR] .card{background:linear-gradient(135deg,#ff6ab0,#ffd84a,#7af,#c77dff,#ffd84a);background-size:300% 300%;animation:cardIn .8s cubic-bezier(.3,1.4,.5,1) forwards,holo 3s linear infinite}
@keyframes holo{to{background-position:300% 0}}
#cardRev .card img{width:100%;height:100%;object-fit:cover;border-radius:14px;display:block}
#cardRev .rar{position:absolute;left:-20px;top:-24px;padding:4px 18px;border-radius:14px;background:#140818;border:3px solid var(--rc);font:900 italic 44px "Arial Black",Impact,sans-serif;color:var(--rc);text-shadow:0 0 12px var(--rc)}
#cardRev .ttl{position:absolute;left:10px;right:10px;bottom:10px;padding:14px 10px 12px;border-radius:0 0 14px 14px;background:linear-gradient(transparent,rgba(0,0,0,.8));font-weight:900;font-size:30px;text-align:center;color:#fff;text-shadow:0 2px 4px #000}
#cardRev .new{position:absolute;right:-26px;top:-20px;padding:4px 14px;border-radius:12px;background:#ff2a6a;font:900 italic 30px "Arial Black",sans-serif;color:#fff;transform:rotate(12deg);box-shadow:0 4px 10px #0008;animation:blink .5s infinite alternate}
#cardRev .new[hidden]{display:none}
#cardRev .dup{position:absolute;bottom:92px;left:0;right:0;text-align:center;font-weight:900;font-size:28px;color:#ffe9a8;text-shadow:0 2px 4px #000}
#cardRev .tip{position:absolute;bottom:50px;left:0;right:0;text-align:center;font-size:18px;color:#fff9;letter-spacing:2px}
/* album */
#album{position:absolute;inset:40px 80px;z-index:36;border-radius:26px;background:linear-gradient(180deg,#2a0a2aee,#120414f5);border:3px solid #ff8cc4;box-shadow:0 0 40px #ff4fa366,0 20px 60px #000;display:flex;flex-direction:column}
#album[hidden]{display:none}
#album .head{display:flex;align-items:center;gap:20px;padding:18px 28px;border-bottom:2px solid #ff8cc455}
#album .head b{font-size:38px;font-weight:900;color:#fff;text-shadow:0 0 12px #ff6ab0}
#album .head .cnt{font:900 italic 28px "Arial Black",sans-serif;color:#ffd84a}
#album .x{margin-left:auto;width:54px;height:54px;border-radius:50%;background:#ff4f9a;border:3px solid #fff;font-size:28px;font-weight:900;color:#fff}
#album .grid{flex:1;overflow-y:auto;display:grid;grid-template-columns:repeat(8,1fr);gap:16px;padding:22px 28px}
#album .cell{position:relative;aspect-ratio:3/4;border-radius:12px;overflow:hidden;border:3px solid var(--rc);background:#1a0a1e;box-shadow:0 0 12px color-mix(in srgb,var(--rc) 50%,transparent)}
#album .cell img{width:100%;height:100%;object-fit:cover;display:block}
#album .cell.locked span{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font:900 64px "Arial Black",sans-serif;color:#ffffff22}
#album .cell i{position:absolute;left:4px;top:4px;padding:1px 8px;border-radius:8px;background:#000a;font:900 italic 16px "Arial Black",sans-serif;color:var(--rc);font-style:normal}
#album .cell em{position:absolute;right:6px;bottom:4px;font:900 16px "Arial Black",sans-serif;color:#fff;font-style:normal;text-shadow:0 1px 3px #000}
#album .view{position:absolute;inset:0;border-radius:24px;background:#000e;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;cursor:pointer}
#album .view[hidden]{display:none}
#album .view img{max-height:86%;max-width:90%;border-radius:16px;box-shadow:0 0 40px #ff6ab088}
#album .view .cap{font-size:30px;font-weight:900;color:#fff}
#ticker{position:absolute;left:290px;right:560px;top:862px;height:32px;display:flex;align-items:center;gap:8px;padding:0 12px;border-radius:16px;background:linear-gradient(90deg,#1a0820e6,#2a0a30e6);border:2px solid #ff8cc4aa;pointer-events:none}
#ticker i{font-style:normal;font-size:18px}
#ticker .win{flex:1;overflow:hidden;white-space:nowrap;height:100%;position:relative}
#ticker span{position:absolute;top:3px;left:100%;font-size:19px;font-weight:800;color:#ffe9f4;text-shadow:0 1px 2px #000}
#ticker span.hot{color:#ffe45c}
@keyframes tickMove{from{left:100%;transform:translateX(0)}to{left:0;transform:translateX(-100%)}}
.topbtns{gap:5px}
.sq{width:58px;height:66px}
.sq img{height:26px;max-width:34px}
.sq span{font-size:13px;letter-spacing:0}
/* wardrobe */
#album .wardBtn{margin-left:auto;padding:10px 20px;border-radius:16px;background:linear-gradient(#ff7ab8,#d81b74);border:3px solid #ffe0f0;font-weight:900;font-size:22px;color:#fff;box-shadow:0 4px 10px #0008}
#album .head .x{margin-left:14px}
#wardrobe{position:absolute;inset:40px 80px;z-index:37;border-radius:26px;background:linear-gradient(180deg,#2a0a2aee,#120414f5);border:3px solid #ff8cc4;box-shadow:0 0 40px #ff4fa366,0 20px 60px #000;display:flex;flex-direction:column}
#wardrobe[hidden]{display:none}
#wardrobe .head{display:flex;align-items:center;gap:20px;padding:18px 28px;border-bottom:2px solid #ff8cc455}
#wardrobe .head b{font-size:38px;font-weight:900;color:#fff;text-shadow:0 0 12px #ff6ab0}
#wardrobe .head .hint{font-size:18px;color:#ffd6ec}
#wardrobe .x{margin-left:auto;width:54px;height:54px;border-radius:50%;background:#ff4f9a;border:3px solid #fff;font-size:28px;font-weight:900;color:#fff}
#wardrobe .row{flex:1;display:flex;gap:26px;justify-content:center;align-items:stretch;padding:30px}
#wardrobe .suit{width:300px;border-radius:20px;background:linear-gradient(180deg,#3a1240,#1a0820);border:3px solid #ff8cc488;display:flex;flex-direction:column;align-items:center;padding:16px;gap:8px;text-align:center}
#wardrobe .suit.on{border-color:#ffd84a;box-shadow:0 0 30px #ffd84a88}
#wardrobe .suit .pv{height:400px;width:100%;display:flex;align-items:flex-end;justify-content:center;background:radial-gradient(circle at 50% 60%,#ff8cc455,transparent 65%)}
#wardrobe .suit .pv img{max-height:390px;max-width:100%;filter:drop-shadow(0 10px 14px #000a)}
#wardrobe .suit.suitlock .pv img{filter:brightness(.35) drop-shadow(0 10px 14px #000a)}
#wardrobe .suit b{font-size:28px;font-weight:900;color:#fff}
#wardrobe .suit p{margin:0;font-size:17px;color:#ffd6ec;min-height:46px}
#wardrobe .suit button{margin-top:auto;width:100%;padding:12px;border-radius:14px;background:linear-gradient(#ffd84a,#f5a01e);border:3px solid #7a4a00;font-weight:900;font-size:24px;color:#4a2600}
#wardrobe .suit button.poor{filter:grayscale(.6) brightness(.8)}
#wardrobe .suit button:disabled{background:#555;color:#ddd;border-color:#333}
/* phone: ask for landscape */
#rotateHint{display:none;position:fixed;inset:0;z-index:999;background:radial-gradient(circle at 50% 40%,#3a1240,#08030c);color:#fff;flex-direction:column;align-items:center;justify-content:center;gap:14px;text-align:center;font-family:"Microsoft JhengHei","Noto Sans TC",sans-serif}
#rotateHint .ph{font-size:72px;animation:rot 1.6s ease-in-out infinite}
#rotateHint b{font-size:26px;color:#ffd84a}
#rotateHint span{font-size:16px;color:#ffd6ec}
@keyframes rot{0%,20%{transform:rotate(0)}50%,80%{transform:rotate(-90deg)}100%{transform:rotate(0)}}
@media (orientation: portrait) and (pointer: coarse){#rotateHint{display:flex}}
