:root{font-family:"PingFang SC","Noto Sans SC",sans-serif;color:#1a1a0e;background:#eeeade;font-synthesis:none}*{box-sizing:border-box}body{margin:0}button{font:inherit;cursor:pointer;border:0;color:inherit;-webkit-tap-highlight-color:transparent;touch-action:manipulation}button:focus-visible{outline:3px solid #a8390d;outline-offset:3px}button:disabled{cursor:default}p,h2{margin:0}img{display:block;pointer-events:none;user-select:none}button{padding:0;background:none}#viewport{position:relative;margin:0 auto;overflow:hidden}#game{position:relative;width:414px;height:896px;transform-origin:top left;overflow:hidden;background:radial-gradient(ellipse at 50% 43%,#fff8ca,#fff6b5 60%,#fff9d5);border:1px solid #ffdf6870;isolation:isolate}.background{position:absolute;inset:0 0 auto;height:716px;background:linear-gradient(#fffad2,#fff6c2 40%,#efcc91 67%,#fff6d2)}header{position:absolute;left:-1px;top:-1px;width:414px;height:200px}.status{position:absolute;left:34px;top:19px;width:347px;height:23px;display:flex;align-items:center;justify-content:space-between;font-size:16px;color:#080a02}.status>div{display:flex;gap:5px;align-items:center}.battery{display:block;width:24px;height:13px;border:1px solid #080a0280;border-radius:3px;position:relative;margin-right:2px}.battery:before{content:"";position:absolute;inset:1px;background:#080a02;border-radius:2px}.battery:after{content:"";position:absolute;right:-3px;top:3px;width:1.5px;height:5px;background:#080a0280}.icon-button{position:absolute;width:44px;height:44px;top:62px}.back{left:6px}.brand{position:absolute;left:166.5px;top:59px}.rules{left:364px}.rules img{position:absolute;left:8px;top:8px}.rules span{position:absolute;inset:15px 0 auto;color:#fff;font-size:10px;line-height:14px}.title{position:absolute;left:28px;top:78px;width:358px;height:98px}.subtitle{position:absolute;top:178px;width:100%;text-align:center;color:#665624;font-size:14px;line-height:20px}.stage{position:absolute;top:201px;left:-1px;width:414px;height:368px}#scenery{position:absolute;inset:0;transform-origin:207px 178px;transition:transform .65s cubic-bezier(.2,.75,.2,1)}.rays{position:absolute;left:0;top:67px}.backing{position:absolute;left:47px;top:71px}.star{position:absolute}.star-r{left:367px;top:222px}.star-l{left:29px;top:231px}.floor{position:absolute;left:52px;top:264px}.shadow{position:absolute;left:107px;top:267px}.contact{position:absolute;left:107.5px;top:271.5px}#chest{position:absolute;left:25px;top:6px;width:364px;height:364px;filter:drop-shadow(-2px -2px 1.5px #fffcd9d9);touch-action:none;user-select:none}.chest-sprite{position:absolute;inset:0;transform-origin:50% 76%;will-change:transform}.closed{position:absolute;inset:-.52px;width:364.524px;height:364.524px}.closed img{position:absolute;width:100%;height:100%;object-fit:cover}.overlay-texture{mix-blend-mode:hard-light;opacity:.3}.opened{position:absolute;left:.52px;top:.52px;width:363.48px;height:363.48px;opacity:0}.bolt{position:absolute}.bolt-l{left:35px;top:162px}.bolt-r{left:351px;top:149px}.progress-panel{position:absolute;left:18px;top:0;width:378px;height:72px;border-radius:12px;background:#ffffffd9;padding:8px 16px;display:flex;flex-direction:column;gap:5px}.progress-panel>div:not(.track){display:flex;justify-content:space-between;align-items:center;height:18px;font-size:13px;color:#52543b}.progress-panel strong,.progress-panel span b{font-size:15px;color:#1a1a0e}.progress-panel span b{margin:0 3px}.progress-panel #progress-label{color:#a8390d}.track{height:8px;border-radius:4px;background:#e5dbb8;overflow:hidden;margin-top:0}.track i{display:block;width:0;height:100%;background:linear-gradient(90deg,#ffc72e,#ff9516);border-radius:inherit;transition:width .12s ease-out;position:relative}.track i:after{content:"";position:absolute;right:0;width:30px;height:100%;background:linear-gradient(90deg,transparent,#fff5a6)}.actions{position:absolute;left:16px;top:302px;display:flex;gap:8px;width:382px;height:64px;transition:opacity .22s,transform .4s cubic-bezier(.2,.7,.2,1)}.actions button{height:64px;border-radius:8px;position:relative;box-shadow:0 6px 8px #8c4d0524,0 4px 0 #8c570abf;transition:transform .1s,box-shadow .1s}.actions button:active{transform:translateY(3px) scale(.97);box-shadow:0 1px 0 #8c570a}.side-button{width:64px;background:#000;color:white;flex-shrink:0}.side-button>img:not(.hammer){position:absolute;left:19px;top:10px}.side-button>b{position:absolute;left:0;right:0;top:40px;font-size:14px;line-height:21px}.side-button em{position:absolute;left:25px;top:-6px;width:41px;height:17px;background:#ffec42;border:1px solid white;border-radius:7px 7px 7px 2px;color:#11120d;font-size:10px;font-style:normal;line-height:15px;font-weight:700}.hammer{position:absolute;left:16px;top:5px;transform:rotate(28deg);width:32px;height:32px}#start{width:238px;flex-shrink:0;background:#ffec42;overflow:hidden}#start .start-label{position:absolute;left:49px;top:12px;width:126px;height:auto}#start .arrow{position:absolute;left:174.5px;top:15px}#start span{position:absolute;top:36px;left:0;right:0;font-size:13px;color:#332e0c;line-height:19px}.prizes{position:absolute;left:15px;top:585px;width:382px;height:116px;border-radius:14px;background:#ffe49a;border:1px solid #ffffff99;padding:10px 12px}.prize-heading{display:flex;align-items:center;gap:6px;height:18px;white-space:nowrap}.prize-heading strong{font-size:16px}.prize-heading span,.prize-heading button{font-size:12px;color:#52543b}.prize-heading button{margin-left:auto}.prize-cards{display:flex;gap:8px;margin-top:8px}.prize-card{height:70px;flex:1;background:#fff;border-radius:5px;position:relative;overflow:hidden;text-align:center}.prize-card strong{height:43px;display:block;font-size:28px;color:#ff3434;line-height:40px}.prize-card strong span{font-size:14px}.prize-card small{font-size:11px;font-weight:700;display:block;line-height:27px;color:#737783}.notch{position:absolute;top:39px}.notch.left{left:-4px}.notch.right{right:-4px}.perforation{position:absolute;left:8px;top:42px}.feed{position:absolute;top:715px;left:-1px;width:414px;height:180px;background:#fff;border-radius:24px 24px 0 0;overflow:hidden}.feed nav{display:flex;height:52px;padding:7px 4px 0;gap:0}.feed nav button{height:37px;padding:0 12px;font-size:16px;color:#5c6880;position:relative}.feed nav button.active{color:#1a1f28;font-weight:600}.feed nav button.active:after{content:"";position:absolute;bottom:2px;left:calc(50% - 10px);width:20px;height:2px;background:#1a1f28}.products{display:flex;gap:4px;margin:0 4px}.products img{width:201px;height:201px;object-fit:cover;border-radius:12px 12px 0 0}#particles{position:absolute;inset:0;width:414px;height:896px;pointer-events:none;z-index:9}.flash{position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at 50% 48%,#fffbd8,#fff6a000 65%);opacity:0;z-index:8}.hit-label{position:absolute;left:0;right:0;top:85px;text-align:center;color:#ed6a00;font-weight:900;font-style:italic;font-size:26px;pointer-events:none;opacity:0;text-shadow:0 2px #fff7b7;z-index:5}.tap-hint{position:absolute;left:0;right:0;top:338px;text-align:center;font-size:14px;color:#7a4f18;opacity:0;transition:opacity .3s;pointer-events:none}.opening-light{position:absolute;left:35px;top:110px;width:344px;height:240px;background:radial-gradient(ellipse,#fffbd6,#ffd84f99 35%,transparent 68%);opacity:0;mix-blend-mode:screen}.flying-ticket{position:absolute;left:142px;top:166px;width:130px;height:80px;border-radius:8px;background:#fff9df;border:3px solid #ffdd77;box-shadow:0 6px 15px #b76a2a44;opacity:0;text-align:center;color:#ff193c;padding:8px;z-index:3}.flying-ticket small{font-size:10px;color:#5a321a}.flying-ticket strong{display:block;font-size:34px;line-height:40px}.flying-ticket strong span{font-size:13px}#game:not([data-state=ready]) .actions{opacity:0;transform:translateY(25px) scale(.94);pointer-events:none}#game:not([data-state=ready]) #scenery{transform:translateY(12px) scale(1.16)}#game[data-state=playing] .tap-hint{opacity:1}#game[data-state=playing] .bolt{animation:glimmer 1.2s infinite alternate}#game[data-state=opening] .opening-light,#game[data-state=reward] .opening-light,#game[data-state=done] .opening-light{opacity:1}#game[data-state=reward] .closed,#game[data-state=done] .closed{opacity:0}#game[data-state=reward] .opened,#game[data-state=done] .opened{opacity:1}.modal{position:absolute;inset:0;z-index:20;background:#0009;backdrop-filter:blur(2px)}[hidden]{display:none!important}.reward-card{position:absolute;top:250px;left:57px;width:300px;height:360px;border-radius:10px;background:linear-gradient(#e40224 6.87%,#de001e 62.748%);transform-origin:50% 70%;box-shadow:0 24px 60px #41120230}.pattern{position:absolute;top:0;left:0;width:300px;height:254px;overflow:hidden;border-radius:10px;opacity:.9}.pattern img{position:absolute;left:-166px;mask-image:url(assets/99f78.svg);mask-size:486px 302.169px;mask-repeat:no-repeat}.coupon-back{position:absolute;left:12px;top:38px;transform:rotate(-3deg)}.coupon-paper{position:absolute;left:17px;top:44px}.coupon-front{position:absolute;left:0;top:216.59px}.coupon-brand{position:absolute;top:0;left:87px}.reward-card h2{position:absolute;top:63px;width:100%;text-align:center;font-size:25px;letter-spacing:-1px;line-height:35px;color:#1a1f28;font-weight:600}.amount{position:absolute;left:52px;top:88.8px;color:#ff193c;font-size:100px;font-weight:600;line-height:140px;letter-spacing:-4px}.amount span{font-size:26px;letter-spacing:0;margin-left:1px;font-weight:700}.reward-note{position:absolute;top:254px;width:100%;text-align:center;font-size:18px;line-height:27px;color:#fef3e5}#claim{position:absolute;left:16px;top:296px;width:268px;height:48px;border-radius:6px;background:#fef3e5;color:#2f1d0f;font-size:19px;font-weight:600;transition:transform .1s}#claim:active{transform:scale(.96)}.silver-star{position:absolute}.silver-l{left:-21px;top:164px;width:35.562px;height:35.562px;transform:rotate(171.91deg) scaleY(-1)}.silver-r{left:278px;top:53px;width:52.344px;height:52.344px;transform:rotate(7.01deg)}#close-reward{position:absolute;left:187px;top:634px;width:40px;height:40px;border:1.5px solid #fff9;border-radius:50%;color:#fff;font-size:30px;font-weight:200;line-height:36px}.info-card{position:absolute;left:37px;top:300px;width:340px;padding:28px;background:#fffbed;border-radius:20px;box-shadow:0 15px 50px #43210a33}.info-card h2{font-size:23px;margin-bottom:15px}.info-card p{font-size:15px;line-height:1.8;white-space:pre-line;color:#665624}.info-card button{width:100%;margin-top:22px;background:#ffec42;border-radius:8px;padding:13px;font-weight:700}.toast{position:absolute;z-index:40;left:50%;top:700px;transform:translate(-50%,12px);background:#21180ee8;color:#fff;padding:12px 18px;border-radius:12px;max-width:360px;width:max-content;font-size:14px;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s}.toast.visible{opacity:1;transform:translate(-50%,0)}#replay{position:absolute;top:530px;left:137px;width:140px;height:38px;border-radius:8px;background:#ffec42;font-size:15px;font-weight:700;box-shadow:0 3px #ad7618;z-index:10}@keyframes glimmer{from{opacity:.55}to{opacity:1}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}} 
@font-face{font-family:ChestTitle;src:url(assets/title-font.otf) format('opentype');font-display:block}
.title span{position:absolute;width:74.054px;height:99.707px;display:flex;align-items:center;justify-content:center;font-family:ChestTitle,sans-serif;font-size:64.891px;line-height:90.847px;transform:rotate(-4deg) scale(.94,1.04) skewX(-11.92deg);color:#11120d;white-space:nowrap}
.title-arc{position:absolute;left:4px;top:58px}.title-star{position:absolute}.title-star.left{left:18px;top:40px}.title-star.right{left:322px;top:30px}.title-white{position:absolute}.title-white.left{left:4px;top:29px}.title-white.right{left:343px;top:59px}
.actions{z-index:6}.progress-panel{z-index:7}.icon-button{z-index:2}#start .start-label{left:56px;top:18px;width:112px;height:17px;mix-blend-mode:multiply}.hammer{width:26px;height:27px;left:19px;top:8px}
.flying-ticket,.opening-light,.title{pointer-events:none}
body{background:#fff6d2;min-width:0;overflow-x:hidden}#viewport{margin:0 auto}#game{border:0}.background{left:-1px;right:-1px}
@font-face{font-family:ChestFont;src:url(assets/chest-yuanhei-v3.otf) format('opentype');font-display:swap}
.title span{font-family:ChestFont,sans-serif}.game-font{font-family:ChestFont,"PingFang SC",sans-serif;font-weight:400;white-space:nowrap}
#start .game-font{position:absolute;left:0;right:0;top:11px;font-size:19px;line-height:27px;letter-spacing:.1px;text-align:center}#start .arrow{left:178px;top:18px}#replay,.info-card #retry{font-family:ChestTitle,"PingFang SC",sans-serif;font-weight:400}#replay{width:158px;left:128px}
.timer{position:absolute;top:86px;left:146px;min-width:122px;height:48px;border-radius:24px;background:#201705e8;border:2px solid #fff0a5;box-shadow:0 5px 15px #994c2759;color:#fff;display:flex;align-items:center;justify-content:center;gap:2px;opacity:0;transform:translateY(-8px);transition:opacity .2s,transform .2s;z-index:7;pointer-events:none}.timer span{font-size:10px;width:32px;line-height:12px}.timer strong{font-size:26px;line-height:1;font-variant-numeric:tabular-nums}.timer small{font-size:12px;align-self:end;margin-bottom:10px}.urgency{position:absolute;top:137px;left:55px;width:304px;color:#e33900;font-family:ChestFont,"PingFang SC",sans-serif;font-size:20px;text-align:center;text-shadow:0 2px #fff1ac;opacity:0;pointer-events:none;z-index:7}
#game[data-state=starting] .timer,#game[data-state=playing] .timer{opacity:1;transform:none}#game.urgent .timer{background:#db2f08;border-color:#ffe94d;animation:timer-pulse .55s infinite alternate}#game.urgent .urgency{opacity:1;animation:urgent-pop .55s infinite alternate}#game.urgent .progress-panel{box-shadow:0 0 0 3px #ff642155}#game.urgent .tap-hint{opacity:0}
@keyframes timer-pulse{to{transform:scale(1.12);box-shadow:0 0 20px #ff4a00}}@keyframes urgent-pop{to{transform:scale(1.06)}}
.cracks{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;filter:drop-shadow(0 1px 1px #fff5ae)}.cracks g{opacity:0;transition:opacity .2s}.cracks path{fill:none;stroke:#a83f00;stroke-width:2.3;stroke-linecap:round;stroke-linejoin:round;paint-order:stroke;filter:drop-shadow(0 1px 0 #fff4ba)}#game[data-crack="1"] .crack-one,#game[data-crack="2"] .crack-one,#game[data-crack="2"] .crack-two,#game[data-crack="3"] .cracks g{opacity:.9}#game[data-state=reward] .cracks,#game[data-state=done] .cracks{opacity:0}
#reward{background:transparent;backdrop-filter:none;transition:background .45s,backdrop-filter .45s}#reward.revealed{background:#0009;backdrop-filter:blur(2px)}#reward .reward-card{will-change:transform,opacity}#reward #close-reward{opacity:0;transition:opacity .3s}#reward.revealed #close-reward{opacity:1}.info-card #retry,#replay{font-family:ChestFont,"PingFang SC",sans-serif}
/* V10: the title gives way to a clear play HUD; the timer never overlaps the chest. */
#game[data-state=starting] .title,#game[data-state=playing] .title,#game[data-state=starting] .subtitle,#game[data-state=playing] .subtitle{opacity:0;transition:opacity .18s}
.timer{top:118px;left:137px;width:140px;height:66px;border:0;border-radius:0;background:transparent;box-shadow:none;color:#f04b07;display:block;text-align:center;transform:none;text-shadow:2px 3px 0 #fff5a5,-1px -1px 0 #fff;z-index:12}
.timer span{display:block;width:auto;font-size:13px;line-height:18px;color:#5c3e13;font-weight:800;text-shadow:none}.timer strong{display:inline-block;font-family:ChestFont,"PingFang SC",sans-serif;font-size:36px;line-height:43px;transform:scale(var(--timer-growth,1));transform-origin:center;white-space:nowrap;transition:transform .08s linear}.timer small{font-size:15px;font-weight:800;vertical-align:baseline;margin-left:3px}
#game.urgent .timer{background:transparent;border:0;animation:none;box-shadow:none}#game.urgent .timer strong{color:#e12b07}#game.urgent .urgency{opacity:0;animation:none}#game.urgent .progress-panel{box-shadow:none}#game.urgent .tap-hint{opacity:1}
.edge-urgency{position:absolute;inset:0;pointer-events:none;z-index:11;opacity:0;box-shadow:inset 0 0 0 3px #ffb52f,inset 0 0 34px 13px #ff450080,inset 0 0 68px 22px #ffbb2d77}
#game.urgent[data-state=playing] .edge-urgency{opacity:1;animation:edge-breathe .9s ease-in-out infinite alternate}@keyframes edge-breathe{from{opacity:.25}to{opacity:.8}}
.speed-lines{position:absolute;left:0;top:209px;width:414px;height:325px;pointer-events:none;z-index:2;opacity:0;transform-origin:50% 55%;background:repeating-conic-gradient(from 6deg at 50% 57%,transparent 0deg 9deg,#fffde4c9 9.5deg 10.8deg,transparent 11.5deg 21deg);mask-image:radial-gradient(circle at 50% 57%,transparent 0 106px,#000 145px,#000 210px,transparent 245px)}
.tap-pulse{position:absolute;width:48px;height:48px;border:4px solid #fff9b4;border-radius:50%;box-shadow:0 0 20px #ffdc25,0 0 10px #fff inset;opacity:0;pointer-events:none;z-index:8}
.tap-hand{position:absolute;left:272px;top:386px;width:70px;height:84px;z-index:8;pointer-events:none;filter:drop-shadow(1px 3px 2px #6b310050);transform:rotate(-10deg);opacity:0}.tap-hand.hidden{opacity:0!important}#game[data-state=playing] .tap-hand{opacity:1;animation:hand-tap .82s ease-in-out infinite}@keyframes hand-tap{0%,100%{transform:rotate(-10deg) translate(0,0)}48%{transform:rotate(-10deg) translate(-8px,-12px)}65%{transform:rotate(-10deg) translate(-10px,-15px) scale(.95)}}
.combo{position:absolute;right:15px;top:254px;width:120px;height:78px;z-index:8;pointer-events:none;opacity:0;text-align:center;filter:drop-shadow(0 2px 0 #fff8d7)}#game[data-state=playing] .combo{opacity:1}.combo strong{font-family:ChestFont,"PingFang SC",sans-serif;font-style:italic;font-size:54px;line-height:62px;color:#ef4708;text-shadow:2px 2px #fff4a0}.combo b{font-family:ChestFont,"PingFang SC",sans-serif;font-size:22px;color:#161000;margin-left:2px}.combo small{display:block;font-size:11px;font-weight:800;color:#7f4d14;line-height:10px}
.break-bubble{position:absolute;left:225px;top:350px;width:156px;padding:10px 12px;background:#fffde9;color:#ef510a;border:2px solid #ffd564;border-radius:50px;box-shadow:0 5px 10px #ae590039;z-index:8;text-align:center;font-family:ChestFont,"PingFang SC",sans-serif;font-size:22px;opacity:0;pointer-events:none;transform:rotate(-8deg)}.break-bubble b{color:#231500;font-size:18px;font-weight:400}.break-bubble:after{content:"";position:absolute;bottom:-10px;left:28px;width:16px;height:16px;background:#fffde9;border-right:2px solid #ffd564;border-bottom:2px solid #ffd564;transform:rotate(45deg)}
.hit-label{z-index:9;top:132px;font-family:ChestFont,"PingFang SC",sans-serif}.tap-hint{top:345px;font-family:ChestFont,"PingFang SC",sans-serif;font-size:18px;font-weight:400;text-shadow:0 2px #fff8c2}
#game[data-state=playing] .progress-panel{background:#fffdf0ec;box-shadow:0 3px 14px #cc8b283b}
#game[data-state=opening] .combo,#game[data-state=reward] .combo,#game[data-state=opening] .tap-hand,#game[data-state=reward] .tap-hand{opacity:0}
/* All play feedback lives inside .stage (top: 201px), so these coordinates are stage-relative. */
.timer{top:-84px}.speed-lines{top:0}.tap-hand{top:188px;left:274px}.combo{top:65px;right:15px}.break-bubble{top:145px;left:223px}

/* Consistent YuanHei glyph coverage and shared primary button sizing. */
.combo,.combo strong,.combo b,.combo small,.break-bubble,.break-bubble b{font-family:ChestFont,"PingFang SC",sans-serif;font-weight:400;font-style:normal}
.tap-hint{font-family:"PingFang SC","Noto Sans SC",sans-serif;font-weight:500;text-shadow:none}
#replay,.info-card #retry{font-size:19px;line-height:27px}
.start-title{position:absolute;top:9px;left:10px;right:10px;height:28px;display:flex;align-items:center;justify-content:center;gap:7px}
#start .start-title .game-font{position:static;width:auto;font-size:19px;line-height:27px;letter-spacing:.1px}
#start .start-title .arrow{position:static;width:8px;height:12px;object-fit:contain;flex:none}
.combo{top:62px;right:13px;width:125px;height:auto;padding:5px 8px 6px;border:3px solid #fff;border-radius:20px;background:#fffdf2f2;filter:none;box-shadow:0 3px 0 #e4b95740}
.combo-title{display:flex;align-items:baseline;justify-content:center;gap:4px;height:53px}
.combo strong{font-size:46px;line-height:53px;text-shadow:none;color:#e94b13}
.combo b{font-size:22px;line-height:29px;margin:0}
.combo small{font-size:12px;line-height:18px;letter-spacing:.3px;color:#654014}
.cracks{mask-image:url(assets/chest-closed.webp);mask-size:100% 100%;mask-repeat:no-repeat;filter:none}
.cracks path{stroke-width:1.6;filter:drop-shadow(0 1px 0 #ffe9a7);stroke:#a35b17}
.combo{top:76px}.break-bubble{top:170px}
.combo{width:146px}
.combo-title{white-space:nowrap;flex-wrap:nowrap;gap:5px}
.combo strong{flex:0 0 auto;min-width:58px;text-align:center;font-size:42px;letter-spacing:-1px}
.combo b{flex:0 0 auto;white-space:nowrap}
.combo small{white-space:nowrap}
