*,*::before,*::after{box-sizing:border-box}
@font-face{font-family:'Ark Pixel';src:url('../../assets/fonts/ArkPixel-12px-Proportional-zh_Hans.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
[hidden]{display:none!important}
html,body{margin:0;padding:0;width:100%;height:100%;overflow:hidden}
/* 当成 App 而不是网页：不让长按选中文字、不弹 iOS 长按气泡、不触发下拉刷新。
   input/textarea 在下面单独放开，否则排行榜改名输入框没法选字改字。 */
html,body{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;overscroll-behavior:none;touch-action:manipulation}
input,textarea,[contenteditable]{-webkit-user-select:text;user-select:text;-webkit-touch-callout:default}
body{background:#e9edf2;color:var(--ink);font-family:var(--font-text);-webkit-font-smoothing:antialiased;display:flex;align-items:center;justify-content:center}
button,input{font:inherit;color:inherit}button{cursor:pointer;padding:0}button:disabled{cursor:default}
p,h1,h2,figure{margin:0}img{display:block}strong,b{font-weight:700}
#app{position:relative;background:white;overflow:hidden;isolation:isolate;width:390px;height:844px;border-radius:0}
.screen{position:absolute;top:0;left:0;width:390px;height:844px;transform:scale(var(--ui-scale,1));transform-origin:top left;background:white;overflow:hidden;padding:0}
.page-header{width:342px;height:28px;display:flex;align-items:center;justify-content:space-between;font-size:18px;line-height:23px;flex:none}
.page-header>span{font-size:16px;line-height:19px}
.btn{width:100%;display:flex;align-items:center;justify-content:center;background:white;border:2px solid var(--ink);border-radius:6px;font-size:34px;font-weight:900;line-height:41px;white-space:nowrap}
.btn.primary{background:var(--green);color:#fff}
.btn:disabled{opacity:.4}.btn:focus-visible,button:focus-visible,input:focus-visible{outline:3px solid var(--green);outline-offset:3px}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.number,.big{font-family:var(--font-num);font-variant-numeric:tabular-nums;font-optical-sizing:none}
.back-link{height:36px;display:flex;align-items:center;gap:10px;background:none;border:0;white-space:nowrap;font-size:18px;font-weight:700;line-height:25px}
.back-circle{border:1.5px solid var(--ink);border-radius:50%;width:36px;height:36px;display:grid;place-items:center;flex:none}
.back-arrow{width:24px;height:24px}.back-link img{width:24px;height:24px}
.character-art{position:relative;display:block;flex:none;overflow:hidden}.character-art img{display:block}
.home-layout,.craft-layout,.detail-layout,.loading-layout{height:844px;padding:24px;display:flex;flex-direction:column;justify-content:space-between}
.home-header b{font-family:'Ark Pixel',var(--font-text);font-size:22px;font-weight:400;line-height:28px;letter-spacing:.04em}.home-header span{font-size:16px}
.home-title{height:47px;font-size:40px;font-weight:900;line-height:47px}
.home-hero{position:relative;height:190px;flex:none}.home-character{position:absolute;top:5px;left:0}
.home-record{position:absolute;left:126px;top:36px;width:216px;height:118px;display:flex;flex-direction:column;gap:8px;align-items:flex-start}
.home-record p{font-size:20px;line-height:24px}.home-record strong{font-size:48px;font-weight:900;line-height:56px;white-space:nowrap}.home-record b{font-size:18px;line-height:21px;white-space:pre-wrap}
.home-start{height:82px;border-radius:7px;font-size:44px;line-height:53px;flex:none}
.home-ball{height:136px;border:2px solid var(--ink);border-radius:7px;background:#fff;position:relative;text-align:left;flex:none}
.home-ball strong{position:absolute;left:16px;top:14px;font-size:40px;font-weight:900;line-height:47px}.home-ball img{position:absolute;right:16px;top:9px;width:32px;height:32px}.home-ball span,.home-ball b{position:absolute;top:74px;font-size:21px;font-weight:700;line-height:32px;white-space:nowrap}.home-ball span{left:16px}.home-ball b{right:12px}
.home-nav{height:68px;flex:none}.home-visits{height:20px;text-align:center;font-size:17px;line-height:20px}
.craft-title{height:72px;font-size:58px;font-weight:900;line-height:72px}
.collection-entry{height:36px;width:104px;display:flex;align-items:center;justify-content:center;gap:8px;background:#fff;border:1.5px solid var(--line);border-radius:6px}.collection-entry span{font-size:14px;font-weight:700;color:var(--ink-2)}.collection-entry b{font-size:24px;line-height:28px;font-weight:600}
.craft-balance{height:108px;flex:none}.craft-balance>p{font-size:20px;line-height:24px;margin-bottom:4px}.craft-balance>div{height:78px;display:flex;align-items:baseline;gap:10px}.craft-balance strong{width:270px;font-size:66px;line-height:74px;font-weight:900;white-space:nowrap}.craft-balance b{font-size:26px;line-height:40px}
.craft-art{width:342px;height:252px;display:flex;justify-content:center}.craft-art img{width:190px;height:240px}
.craft-rule{height:38px;text-align:center;display:flex;align-items:center;justify-content:center}.craft-rule b{font-size:26px;line-height:31px}.craft-rule p{font-size:18px;line-height:21px;color:var(--ink-2);margin-top:7px}
.craft-action{height:84px;font-size:38px;line-height:46px;border-radius:7px;flex:none}
.craft-inventory{height:58px;border:2px solid var(--ink);border-radius:7px;padding:0 16px;display:flex;align-items:center;justify-content:space-between}.craft-inventory b{font-size:24px;line-height:28px}.craft-inventory strong{font-size:32px;font-weight:900;line-height:38px}
.craft-note{height:21px;text-align:center;font-size:18px;line-height:21px}
.collection-layout{height:844px;padding:24px;display:flex;flex-direction:column;gap:16px}
.collection-header{height:40px}.hear{height:36px;width:90px;border:0;background:transparent;color:var(--ink-2);display:flex;align-items:center;justify-content:center;gap:6px;font:600 14px/20px var(--font-num)}.hear>span{font-size:20px}.hear i{width:5px;height:5px;border-radius:50%;background:var(--green);opacity:0}.hear[aria-pressed=true] i{opacity:1}
.collection-count{height:206px;flex:none}.collection-count h1{font-size:56px;font-weight:900;line-height:70px;white-space:nowrap}.collection-count p{font-size:16px;line-height:24px;color:var(--ink-2)}.collection-count>div{height:104px;margin-top:8px;display:flex;align-items:baseline;gap:14px}.collection-count strong{font-size:96px;line-height:104px;font-weight:900}.collection-count b{font-size:20px;line-height:28px}
.collection-art{height:314px;flex:none;position:relative}.collection-empty{position:absolute;left:0;top:145px;width:100%;text-align:center;color:var(--ink-2);font-size:16px}
.balloon{position:absolute;animation:balloon-float 7s ease-in-out infinite}.balloon-left{left:10px;top:127px;width:111.6px;height:141.36px;animation-delay:-2s}.balloon-right{left:220px;top:116px;width:111.6px;height:141.36px;animation-delay:-4s}.balloon-center{left:92px;top:38px;width:162px;height:205.2px}
@keyframes balloon-float{0%,100%{transform:translateY(0) rotate(0deg)}50%{transform:translateY(-6px) rotate(1.5deg)}}
.collection-records{height:72px;border-top:1px solid var(--line);padding-top:12px;display:grid;grid-template-columns:1fr 1fr;gap:12px;flex:none}.collection-records p{font-size:14px;line-height:20px;color:var(--ink-2)}.collection-records strong{display:block;font-size:28px;font-weight:600;line-height:34px;margin-top:2px}
.collection-action{height:64px;font-size:30px;font-weight:700;line-height:38px;flex:none}.collection-note{height:20px;text-align:center;font-size:14px;line-height:20px;color:var(--ink-2)}
.gallery-layout{height:844px;padding:24px;display:flex;flex-direction:column;gap:16px}.gallery-layout .back-link{font-size:20px}.gallery-heading{width:342px;height:70px;flex:none;display:flex;align-items:center;justify-content:space-between}.gallery-heading h1{font-size:56px;font-weight:900;line-height:70px;white-space:nowrap}.wallet{width:82px;height:40px;border:1.5px solid var(--outline);border-radius:6px;background:#fff;display:flex;align-items:center;justify-content:center;gap:5px}.wallet span{font-size:14px;font-weight:700;color:var(--ink-2)}.wallet b{font-size:24px;line-height:28px;font-weight:600}.gallery-subtitle{height:26px;display:flex;justify-content:space-between;align-items:center;flex:none}.gallery-subtitle b:first-child{font-size:21px;line-height:26px}.gallery-subtitle b:last-child{font-size:18px;line-height:23px}
.gallery-scroll{height:624px;overflow-y:auto;overflow-x:hidden;scrollbar-width:none;overscroll-behavior:contain}.gallery-scroll::-webkit-scrollbar{display:none}.grid{display:grid;grid-template-columns:165px 165px;column-gap:12px;row-gap:16px;padding-bottom:1px}
.card{height:276px;border:2px solid var(--ink);border-radius:6px;background:#fff;padding:12px;display:flex;flex-direction:column;text-align:left;color:var(--ink);flex:none;overflow:hidden;gap:6px}.card.is-using{border-color:var(--green)}.card__art{height:150px;display:flex;align-items:center;justify-content:center;flex:none;margin-bottom:0}.card__name{font-size:26px;font-weight:700;line-height:33px;white-space:nowrap}.card__name--long{font-size:20px}.card__sub{font-size:18px;font-weight:700;line-height:23px}.card__hint{font-size:16px;font-weight:700;line-height:20px}
.detail-layout .back-link{font-size:20px;line-height:25px}.detail-heading{height:91px}.detail-heading h1{font-size:54px;font-weight:900;line-height:68px;white-space:nowrap}.detail-heading p{font-size:18px;font-weight:700;line-height:23px}.detail-art{height:268px;display:flex;justify-content:center;align-items:center}.stats{height:104px;display:grid;grid-template-columns:repeat(3,106px);gap:12px}.stats>div{display:flex;align-items:center;flex-direction:column;gap:4px;padding:8px 0;white-space:nowrap}.stats b{font-size:18px;line-height:23px}.stats strong{font-size:30px;font-weight:700;line-height:38px}.stats b.stats__unit{font-size:14px;line-height:18px}
.detail-wallet{height:23px;font-size:18px;font-weight:700;line-height:23px}.detail-action{height:102px;display:flex;align-items:center}.detail-action .btn{height:82px;font-size:34px;font-weight:900;line-height:43px}.detail-foot{height:20px;text-align:center;font-size:16px;font-weight:700;line-height:20px}
.loading-sign{display:flex;gap:8px;align-items:center}.loading-sign img{height:28px;width:28px}.loading-title{height:206px;font-weight:900}.loading-title span{display:block;white-space:nowrap}.loading-title span:first-child{font-size:104px;line-height:116px;letter-spacing:8px}.loading-title span:last-child{font-size:80px;line-height:90px}.loading-art{height:274px;display:flex;align-items:flex-end;justify-content:center;gap:32px}.loading-art>img{height:230px;width:158px;object-fit:contain}.loading-slogan{height:30px;text-align:center;font-size:25px;font-weight:700;line-height:30px}.loading-progress{height:84px;padding:10px 0;display:flex;flex-direction:column;gap:8px}.loading-progress>div:first-child{display:flex;justify-content:space-between;align-items:center;height:32px;font-size:24px;line-height:32px}.loading-progress #load-pct{font-size:28px}.loading-track{height:24px;border:2px solid var(--ink);border-radius:4px;padding:2px;overflow:hidden}.loading-track i{display:block;height:16px;background:var(--green);width:0%;border-radius:2px}.loading-note{height:21px;text-align:center;font-size:18px;line-height:21px}
.note{font-size:13px;color:var(--ink-2);text-align:center}.modal{position:absolute;inset:0;z-index:20;background:rgba(15,23,42,.78);display:grid;place-items:center}.modal__card{width:358px;background:#fafbf7;border-radius:6px;padding:18px}.rank-dialog{position:absolute;left:16px;top:6%;width:358px;height:88%;background:#fafbf7;border-radius:6px;padding:16px 18px;color:var(--ink);display:flex;flex-direction:column;gap:8px}.rank-head{height:34px;flex:none;display:flex;align-items:center;justify-content:space-between}.rank-head h2{font-size:24px;line-height:28px;font-weight:500;color:#234a3b}.rank-visits{font:600 12px/18px var(--font-num);color:var(--ink-2);white-space:nowrap;margin-left:auto;margin-right:10px}.rank-close{flex:none;border:0;border-radius:14px;background:#f1f5f9;width:32px;height:32px;font:600 20px var(--font-num)}.rank-name-row{flex:none;display:flex;flex-direction:column;gap:5px}.rank-form{display:flex;gap:8px;height:40px}.rank-form input{flex:1;min-width:0;height:40px;border:1px solid var(--line);border-radius:14px;background:white;text-align:center;font-size:16px;line-height:22px}.rank-form button{width:80px;flex:none;height:40px;border:0;border-radius:14px;background:var(--green);color:white;font-size:14px;font-weight:500}.rank-save-note{flex:none;height:14px;font-size:11px;line-height:14px;color:var(--ink-2)}.rank-empty{flex:none;font-size:16px;line-height:22px;color:var(--ink-2)}.rank-mine{flex:none;font-size:13px;line-height:18px;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.rank-background{position:absolute;inset:0;pointer-events:none}
.screen--game { padding: 10px 16px 9px; overflow: hidden; background:#fbfdff; }
.game-topbar { height:38px; display:grid; grid-template-columns:42px 1fr 54px; align-items:center; flex:none; }
.game-round { width:34px;height:34px;border:2px solid var(--ink);border-radius:50%;background:#fff;color:var(--ink);font:700 19px var(--font-text); }
.game-topbar__title { text-align:center;font:700 15px var(--font-title);letter-spacing:.08em; }
.game-ball-count { justify-self:end;display:grid;grid-template-columns:auto auto;align-items:end;gap:5px;border:1.5px solid var(--line);border-radius:9px;padding:4px 7px;background:#fff;line-height:1; }
.game-ball-count small{font-size:10px;color:var(--ink-2)} .game-ball-count b{font:700 17px var(--font-num)}
.game-wave { height:29px;border:2px solid #d5e0ec;border-radius:10px;display:flex;align-items:center;justify-content:center;gap:4px;background:#f8fbff;flex:none;margin-top:3px; }
.game-wave i { width:7px;height:5px;border-radius:4px;background:#d7e1ed;animation:game-wave 1.6s ease-in-out infinite; }
.game-wave i:nth-child(3n){animation-delay:-.4s}.game-wave i:nth-child(4n){animation-delay:-.8s}
@keyframes game-wave { 0%,100%{transform:scaleY(.8)}50%{transform:scaleY(1.7)} }
.game-meters { display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:8px;flex:none; }
.game-meter { border:2px solid #d5e0ec;border-radius:9px;background:#f8fbff;padding:7px 9px 8px; }
.game-meter>div{display:flex;justify-content:space-between;align-items:baseline;color:#6b778a;font-size:13px;font-weight:700}.game-meter>div b{font:700 21px var(--font-num)}
.game-meter--gas>div b{color:#10b981}.game-meter--alert>div b{color:#9b6a13}
.game-meter__bars{display:grid;grid-template-columns:repeat(5,1fr);gap:4px;margin-top:5px}.game-meter__bars i{height:8px;border-radius:3px;background:#dce5ef}.game-meter__bars i.is-on{background:#10b981}.game-meter__bars i.is-alert-1{background:#85c52f}.game-meter__bars i.is-alert-2{background:#f2ba31}.game-meter__bars i.is-alert-3{background:#f28b38}.game-meter__bars i.is-alert-4{background:#ef4d4f}
.game-score { height:48px;margin:8px 14px 0;border:2px solid var(--ink);border-radius:8px;background:#fff;display:flex;align-items:center;justify-content:center;gap:8px;flex:none;box-shadow:0 8px 18px rgba(51,65,85,.06); }
.game-score span{font:700 15px var(--font-title)}.game-score b{font:700 31px/1 var(--font-num);letter-spacing:.04em}.game-score small{font:700 13px var(--font-num);color:var(--ink-2)}
.game-stage { position:relative;height:354px;min-height:0;margin:7px -16px 0;overflow:hidden;background:linear-gradient(180deg,#fff 0%,#fff 76%,#fbfdff 100%);border-bottom:2px solid #e1e8f0;flex:1; }
.game-floor{position:absolute;left:18px;right:18px;bottom:94px;height:2px;background:#d9e2eb;z-index:1}
.game-actor{position:absolute;margin:0;z-index:4}.game-actor img,.game-bystander img{width:100%;height:100%;object-fit:contain;display:block;filter:drop-shadow(0 7px 4px rgba(51,65,85,.10))}
.game-actor--player{left:30px;bottom:95px;width:143px;height:220px}.game-actor--egg{right:24px;bottom:95px;width:150px;height:215px}.game-bystander{position:absolute;z-index:6;left:50%;bottom:3px;transform:translateX(-50%);width:105px;height:124px}
.game-shadow{position:absolute;z-index:-1;left:12%;right:12%;bottom:1px;height:12px;border-radius:50%;background:rgba(51,65,85,.14);filter:blur(1px)}
.game-status{position:absolute;z-index:8;top:10px;left:50%;transform:translateX(-50%);display:flex;gap:7px;align-items:center;border:1.5px solid #d4dfeb;border-radius:8px;background:rgba(248,251,255,.94);padding:6px 12px;font-size:13px;font-weight:700;white-space:nowrap}.game-status b{font:700 18px var(--font-num);color:#9b6a13}.game-status.is-cover{background:#e4f8ee;border-color:#b8ead2;color:#078b61}.game-status.is-cover b{color:#078b61}
.game-stage[data-npc="turning"] .game-actor--egg{animation:egg-turn .28s ease-out}.game-stage[data-npc="watching"] .game-actor--egg{transform:translateX(-8px)}
@keyframes egg-turn{0%{transform:rotateY(70deg)}100%{transform:rotateY(0)}}
.game-scan{--scan-core:#d89a1d;position:absolute;z-index:6;inset:0;width:100%;height:100%;opacity:0;pointer-events:none;transition:opacity .18s ease}.game-stage[data-npc="watching"] .game-scan{opacity:1}#g-scan-beam{filter:blur(4px)}.game-scan ellipse{filter:blur(5px)}.game-scan__core{stroke:var(--scan-core);stroke-width:2;stroke-linecap:round;opacity:.65;filter:blur(.7px)}.game-scan__eye{fill:#fff6c1;stroke:var(--scan-core);stroke-width:1.5;filter:drop-shadow(0 0 5px #ffd25a)}.game-stage[data-tier="4"] .game-scan{--scan-core:#de7924}.game-stage[data-tier="5"] .game-scan{--scan-core:#e84e36}.scan-color{stop-color:#ffe066}.game-stage[data-tier="4"] .scan-color{stop-color:#ffae50}.game-stage[data-tier="5"] .scan-color{stop-color:#ff7650}
.game-fog{--fog:0;position:absolute;inset:50px 0 0;z-index:2;opacity:var(--fog);transition:opacity .4s ease;pointer-events:none;background:radial-gradient(circle at 43% 64%,rgba(112,201,61,.62),transparent 33%),radial-gradient(circle at 68% 58%,rgba(176,225,67,.46),transparent 40%),linear-gradient(90deg,rgba(89,190,124,.23),rgba(199,232,94,.23));filter:blur(13px)}.game-fog i{position:absolute;width:90px;height:90px;border-radius:50%;background:rgba(139,211,77,.22);animation:fog-float 3.2s ease-in-out infinite}.game-fog i:nth-child(1){left:12%;bottom:28%}.game-fog i:nth-child(2){left:48%;bottom:42%;animation-delay:-1s}.game-fog i:nth-child(3){right:8%;bottom:18%;animation-delay:-2s}@keyframes fog-float{50%{transform:translate(12px,-18px) scale(1.16)}}
.game-stage.is-cover .game-fog{opacity:calc(var(--fog) * .32)}
.game-puffs{position:absolute;left:-5px;bottom:48px;opacity:0}.game-puffs i{position:absolute;width:16px;height:12px;border-radius:50%;background:rgba(80,184,86,.45);filter:blur(2px);animation:puff 1s ease-out infinite}.game-puffs i:nth-child(2){animation-delay:.24s}.game-puffs i:nth-child(3){animation-delay:.48s}.game-stage.is-venting .game-puffs{opacity:1}@keyframes puff{to{transform:translate(-45px,-20px) scale(2);opacity:0}}
.game-hint{margin:5px 0 3px;text-align:center;font-size:12px;color:var(--ink-2);height:16px;flex:none}.game-stats{display:flex;justify-content:center;gap:6px;flex:none}.game-stats span{display:flex;align-items:baseline;gap:3px;border:1px solid #d7e1ed;border-radius:99px;padding:3px 8px;background:#f8fbff}.game-stats b{font:700 11px var(--font-num)}.game-stats small{font-size:9px;color:var(--ink-2)}
.game-fart{height:58px;margin-top:7px;border:0;border-radius:17px;background:#10b981;color:#fff;font:800 22px var(--font-title);box-shadow:0 8px 18px rgba(16,185,129,.25),inset 0 0 0 2px rgba(255,255,255,.25);touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;flex:none;transition:transform .1s,background .2s}.game-fart.is-held{transform:translateY(2px) scale(.99);background:#079d70}.game-fart.is-cover{background:#079d70;box-shadow:0 8px 22px rgba(7,157,112,.38)}.game-fart__wind{font:700 27px sans-serif;margin-right:7px}
.game-nav{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:7px;flex:none}.game-nav button{height:42px;border:2px solid var(--ink);border-radius:7px;background:#fff;color:var(--ink);font:800 18px var(--font-title)}
.game-help{margin:5px 0 0;text-align:center;font-size:10px;color:var(--ink-3);flex:none}.game-rule{position:absolute;right:6px;bottom:3px;font:9px var(--font-num);color:#bdc4ce}
.game-rank-card{border-radius:18px;box-shadow:0 24px 60px rgba(15,23,42,.28)}.game-rank-head{display:flex;align-items:center;justify-content:space-between}.game-rank-head h2{margin:0;font:800 22px var(--font-title)}.game-rank-head+p{margin:8px 0 10px;font-size:12px;color:var(--ink-2)}.game-close{width:34px;height:34px;border:0;border-radius:50%;background:#f1f5f9;color:var(--ink);font-size:21px}.game-rank-mine{margin-top:10px;padding-left:8px;padding-right:8px;background:var(--green-wash);border-radius:8px}.game-over-card{text-align:center}.game-over-card__eyebrow{font-size:12px;color:var(--ink-2)}.game-over-card h2{margin:4px 0 8px;font:800 28px var(--font-title)}.game-over-card p{margin:6px 0;color:var(--ink-2);font-size:13px}.game-over-score{display:flex;align-items:baseline;justify-content:center;gap:7px;margin:14px 0}.game-over-score b{font:800 50px var(--font-num)}.game-over-score span{font:700 15px var(--font-num)}
@media (max-height:760px){.game-stage{height:290px}.game-actor--player{height:185px}.game-actor--egg{height:180px}.game-floor{bottom:79px}.game-bystander{height:103px}.game-hint{display:none}.game-help{display:none}}

/* Exact mainflow geometry supersedes the provisional game skin above. */
.screen--game{padding:0;background:#fff}
.game-topbar,.game-hint,.game-stats,.game-help,.game-rule,.game-status{display:none}
.game-wave{position:absolute;left:24px;top:12px;width:342px;height:52px;border:1.5px solid var(--outline);border-radius:6px;background:white;padding:0 12px;margin:0;justify-content:space-between;gap:0}
.game-wave i{width:9.5px;height:5px;background:var(--line);animation:none}.game-wave i:nth-child(4n+1){height:7px}
.game-fx{position:absolute;inset:0;z-index:2;width:100%;height:100%;pointer-events:none}
.game-stage.is-shaking{animation:game-mega-shake .075s linear infinite}@keyframes game-mega-shake{0%,100%{transform:translate3d(0,0,0)}25%{transform:translate3d(-5px,2px,0)}50%{transform:translate3d(3px,-3px,0)}75%{transform:translate3d(5px,1px,0)}}
.game-meters{position:absolute;left:24px;top:74px;width:342px;height:62px;gap:12px;margin:0}
.game-meter{width:165px;height:62px;border:1.5px solid var(--outline);border-radius:6px;background:white;padding:8px 11px;position:relative}
.game-meter>div{font-size:15px;font-weight:500;line-height:20px;color:var(--ink-2);height:32px;align-items:center}
.game-meter>div b{font:600 30px/32px var(--font-num)}.game-meter--alert>div b{color:var(--ink)}
.game-meter__bars{position:absolute;left:11px;top:44px;width:141px;height:8px;margin:0;gap:4px}.game-meter__bars i{border-radius:2px;background:var(--line)}
.game-score{position:absolute;z-index:10;left:24px;top:152px;width:342px;height:64px;margin:0;border:2px solid var(--ink);border-radius:6px;box-shadow:none;background:white;gap:8px}
.game-score span{font:700 20px/26px var(--font-text)}.game-score b{font:600 42px/50px var(--font-num);letter-spacing:0}.game-score small{font:700 20px/26px var(--font-text);color:var(--ink)}
.game-stage{position:absolute;left:0;top:146px;width:390px;height:488px;margin:0;background:#fff;border:0;flex:none}
.game-floor{left:0;right:0;top:348.48px;bottom:auto;height:2px;background:var(--line)}
.game-actor--player{left:62.37px;top:90.48px;bottom:auto;width:125.268px;height:244px}.game-actor--egg{left:216.41px;right:auto;top:104.48px;bottom:auto;width:159.178px;height:232px}
.game-actor img,.game-bystander img{filter:none}.game-bystander{left:134.04px;top:329.16px;bottom:auto;transform:none;width:101.912px;height:150px}
/* T-010：放屁长按换用 player_fart 姿势，松手淡回待机/换装图；胀气让奶蛙脚底向上逐步放大。 */
.game-actor--player{transform-origin:50% 100%;transform:scale(var(--gas-scale,1));transition:transform .25s ease}
.game-role{opacity:1;transition:opacity .18s ease}
.game-pose-rig{position:absolute;left:-75px;bottom:0;width:218.24px;height:244px;transform-origin:72% 100%;pointer-events:none;z-index:2}
.game-actor--player .game-pose{position:absolute;inset:0;width:218.24px;height:244px;max-width:none;object-fit:contain;opacity:0;pointer-events:none;transition:opacity .16s ease}
.game-vent-anchor{position:absolute;left:38%;top:68%;width:0;height:0}
.game-puff-fx{position:absolute;inset:0;z-index:9;width:100%;height:100%;pointer-events:none}
.game-stage.is-venting .game-role{opacity:0}
.game-stage.is-venting .game-pose{opacity:1}
.game-stage.is-venting .game-pose-rig{animation:player-fart-turn .34s ease-out both}
@keyframes player-fart-turn{0%{transform:perspective(500px) rotateY(-42deg) rotate(5deg) translateX(12px)}55%{transform:perspective(500px) rotateY(8deg) rotate(-3deg) translateY(-4px)}100%{transform:none}}
/* T-010：震晕时奶蛋左右晃动，头顶三颗星星转圈，结束后 data-npc 变化即恢复。 */
.game-stage[data-npc="stunned"] .game-actor--egg{transform-origin:50% 95%;animation:egg-stun-shake .52s ease-in-out infinite}
@keyframes egg-stun-shake{0%,100%{transform:translate3d(-8px,1px,0) rotate(-9deg)}50%{transform:translate3d(8px,-3px,0) rotate(9deg)}}
.game-stun-stars{position:absolute;left:50%;top:-24px;width:0;height:0;opacity:0;pointer-events:none;transition:opacity .15s ease}
.game-stun-stars i{position:absolute;left:0;top:0;color:#f5c518;font-size:26px;line-height:1;text-shadow:0 0 6px rgba(245,197,24,.75)}
.game-stun-stars i:nth-child(1){animation:stun-orbit 1.1s linear infinite}
.game-stun-stars i:nth-child(2){animation:stun-orbit 1.1s linear infinite;animation-delay:-.37s}
.game-stun-stars i:nth-child(3){animation:stun-orbit 1.1s linear infinite;animation-delay:-.74s}
.game-stage[data-npc="stunned"] .game-stun-stars{opacity:1}
@keyframes stun-orbit{from{transform:rotate(0) translateX(32px) rotate(0)}to{transform:rotate(360deg) translateX(32px) rotate(-360deg)}}
.game-shadow{border-radius:0;background:none;filter:none;left:0;right:auto;bottom:-8px;width:120px;height:22px}.game-shadow img{width:100%;height:100%}.game-actor--egg .game-shadow{left:23.59px;bottom:-7px;width:112px;height:20px}
.game-fart{position:absolute;left:24px;top:646px;width:342px;height:82px;margin:0;display:flex;align-items:center;justify-content:center;gap:9px;border:2px solid var(--ink);border-radius:6px;box-shadow:none;background:var(--green);font:700 36px/47px var(--font-text)}
.game-fart__wind{width:26px;height:26px;margin:0;display:block}.game-fart__wind img{width:26px;height:26px}.game-fart.is-held{transform:none;background:#079d70}.game-fart.is-cover{box-shadow:none}
.game-nav{position:absolute;left:24px;top:740px;width:342px;height:68px;margin:0;gap:12px}.game-nav button{height:68px;border-radius:6px;font:900 34px/41px var(--font-text)}
.game-over-card{border-radius:10px;padding:30px 22px 22px;display:flex;flex-direction:column;gap:14px}.game-over-card h2{margin:0;font-size:34px;line-height:1.3}.game-over-card .game-over-score{margin:12px 0 22px;gap:9px}.game-over-card .game-over-score b{font-size:72px;line-height:1.1}.game-over-card .game-over-score span{font-size:22px}.game-over-card .btn{font-size:24px;height:58px}.game-over-card #g-again{height:68px}.game-over-status{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}

.rank-head h2{font-family:"LXGW Marker Gothic",var(--font-text);font-weight:400}

.detail-heading h1.detail-name-long{font-size:40px}

/* Unlock reveal: the muted character pops into color, with a short pixel burst. */
.detail-art{position:relative}
.detail-art>.character-art{position:relative;z-index:1}
.detail-art.is-locked>.character-art img{filter:grayscale(1) brightness(.42);opacity:.72}
.detail-art.is-unlocking::before{content:"";position:absolute;z-index:0;inset:28px 34px;background:radial-gradient(circle,#fff5bb 0 8%,rgba(255,208,80,.72) 20%,rgba(16,185,129,.32) 45%,rgba(16,185,129,0) 74%);filter:blur(3px);animation:unlock-aura 1.16s ease-out both}
.unlock-fx{position:absolute;inset:0;z-index:2;display:none;pointer-events:none}
.detail-art.is-unlocking .unlock-fx{display:block}
.unlock-fx::before,.unlock-fx::after{content:"";position:absolute;left:50%;top:50%;border-radius:50%;opacity:0;pointer-events:none}
.unlock-fx::before{width:108px;height:108px;transform:translate(-50%,-50%) scale(.15);background:radial-gradient(circle,#fff9c9 0 12%,#ffd760 19%,rgba(16,185,129,.68) 43%,rgba(16,185,129,0) 72%);animation:unlock-flare 1.08s ease-out both}
.unlock-fx::after{width:72px;height:72px;transform:translate(-50%,-50%) scale(.2);border:4px solid #27c994;box-shadow:0 0 0 6px rgba(39,201,148,.25),0 0 26px rgba(255,205,76,.9);animation:unlock-ring 1.12s cubic-bezier(.16,.75,.25,1) both}
.unlock-fx i{position:absolute;left:50%;top:50%;width:9px;height:9px;margin:-4.5px 0 0 -4.5px;background:#f6c94a;box-shadow:0 0 0 2px rgba(39,201,148,.28),0 0 9px rgba(255,208,80,.8);opacity:0;animation:unlock-pixel 1.08s cubic-bezier(.12,.72,.2,1) both}
.unlock-fx i:nth-of-type(3n){background:#36c996;width:6px;height:6px}
.unlock-fx i:nth-of-type(3n + 1){animation-delay:.04s}
.detail-art.is-unlocking>.character-art img{animation:unlock-reveal 1.28s cubic-bezier(.18,.8,.24,1) both}
.detail-art.is-unlocking>.character-art{z-index:1}
@keyframes unlock-aura{0%{opacity:0;transform:scale(.35)}25%{opacity:1}100%{opacity:0;transform:scale(1.35)}}
@keyframes unlock-flare{0%{opacity:0;transform:translate(-50%,-50%) scale(.12)}20%{opacity:1}100%{opacity:0;transform:translate(-50%,-50%) scale(3.25)}}
@keyframes unlock-ring{0%{opacity:0;transform:translate(-50%,-50%) scale(.25)}22%{opacity:1}100%{opacity:0;transform:translate(-50%,-50%) scale(3.2)}}
@keyframes unlock-pixel{0%{opacity:0;transform:translate(0,0) scale(.25) rotate(0)}16%{opacity:1}100%{opacity:0;transform:translate(var(--dx),var(--dy)) scale(1) rotate(100deg)}}
@keyframes unlock-reveal{0%{opacity:.7;filter:grayscale(1) brightness(.58);transform:scale(.62) translateY(10px)}40%{opacity:1;filter:grayscale(.35) brightness(1.14);transform:scale(1.08) translateY(-8px)}63%{filter:grayscale(0) brightness(1.04);transform:scale(.96) translateY(2px)}82%{transform:scale(1.025)}100%{opacity:1;filter:grayscale(0) brightness(1);transform:scale(1)}}

/* T-010：排行榜前二十名。弹窗占可视高度约 85%，20 行一次看全，无列表内部滚动。 */
.rank-list{flex:1;min-height:0;margin:0;padding:0;list-style:none;display:grid;grid-template-rows:repeat(20,minmax(0,1fr));gap:3px;overflow:hidden}
.rank-list[hidden]{display:none}
.rank-row{display:grid;grid-template-columns:26px 1fr auto;align-items:center;gap:6px;min-height:0;padding:0 8px;border-radius:6px;background:#fff;font-size:13px;line-height:16px;color:var(--ink)}
.rank-row__rank{font:700 13px var(--font-num);color:#234a3b;text-align:center}
.rank-row__name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rank-row__score{font:600 12px var(--font-num);color:var(--ink-2);white-space:nowrap}

/* 制作时先充气、弹一下，再飞向右上角收藏；页面不重建。 */
.craft-art{position:relative;overflow:visible}
.craft-layout.is-crafting .craft-art img{transform-origin:50% 100%;animation:craft-inflate 1.59s ease-in-out both}
.craft-layout.is-crafting .craft-inventory{animation:craft-count-pop 1.59s ease-in-out both}
@keyframes craft-inflate{0%{transform:scale(.64);opacity:.7}42%{transform:scale(1.12) translateY(-6px);opacity:1}58%{transform:scale(1) translateY(-3px);opacity:1}90%{transform:translate(125px,-453px) scale(.2);opacity:0}100%{transform:scale(1);opacity:1}}
@keyframes craft-count-pop{0%,70%,100%{transform:scale(1)}84%{transform:scale(1.045)}}

.home-header [data-field="title"]{font-family:'Ma Shan Zheng',var(--font-text);font-size:24px;line-height:30px;font-weight:400;letter-spacing:1px}

/* 本地审查：角色计数、续玩与屁球碰撞。 */
.game-view{position:absolute;inset:0}
.page-header .character-count{font:700 26px/32px var(--font-num);white-space:nowrap}
.collection-art{touch-action:none;overflow:hidden}
.balloon.is-physical{animation:none;will-change:transform;pointer-events:none;transform-origin:50% 40%}

.rank-mine{display:flex;align-items:center;justify-content:space-between;gap:8px}.rank-mine__player{min-width:0;overflow:hidden;text-overflow:ellipsis}.rank-mine__position{flex:none}
