:root{font-family:'PingFang SC','Microsoft YaHei',sans-serif;color:#544631;background:#f2eddf;font-synthesis:none;--cream:#fffdf1;--ink:#544631;--muted:#928d77;--mint:#bddbc0;--green:#46765b;--yellow:#eed58b;--line:#d9d6bf}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 18% 10%,#fffaf0 0,transparent 50%),#f2eddf}button,a,select{-webkit-tap-highlight-color:transparent}button,select{font:inherit;color:inherit}button,a{touch-action:manipulation}button{cursor:pointer;border:0;background:none}button:disabled{cursor:default;opacity:.55}button:focus-visible,a:focus-visible,select:focus-visible,canvas:focus-visible{outline:3px solid #d7b853;outline-offset:4px}button:hover:not(:disabled){filter:brightness(1.025)}a{color:inherit;text-decoration:none}.app{max-width:1200px;margin:auto;padding:0 38px 24px}.topbar{height:94px;display:flex;align-items:center;gap:17px;border-bottom:1px solid #d9d6c4}.back,.icon-button{height:40px;min-width:40px;display:grid;place-items:center;border:1px solid #d3d1bd;border-radius:50%;font-size:22px;background:#fffaf0}.brand{font-weight:850;font-size:23px;letter-spacing:3px}.brand span{font-size:11px;font-weight:500;letter-spacing:2px;margin-left:13px;color:var(--muted)}.top-actions{margin-left:auto;display:flex;gap:10px}.icon-button{font-size:20px}.layout{display:grid;grid-template-columns:300px minmax(0,1fr);gap:64px;padding-top:35px;align-items:start}.sidebar{padding-top:20px}.eyebrow{font-size:10px;color:#94937a;letter-spacing:2.7px;font-weight:750}h1{position:relative;margin:20px 0 25px;font-size:65px;line-height:1.16;letter-spacing:7px;font-weight:950}h1>span{display:block}h1>i{position:absolute;left:172px;top:72px;font-size:13px;font-style:normal;font-weight:600;letter-spacing:2px;line-height:1.8;border-left:2px solid #baa876;padding-left:12px}.intro{font-size:13px;line-height:2.1;color:#8a836e}.tags{display:flex;gap:8px;margin:20px 0 28px}.tags span{border:1px solid #d2d2b7;border-radius:20px;padding:6px 9px;font-size:10px;white-space:nowrap}.guide-card{background:#fffcef;border:1px solid #e0dcc5;padding:23px 25px;border-radius:90px 90px 14px 14px;text-align:center;box-shadow:0 7px 0 #eae5d4}.card-index{font-size:9px;letter-spacing:3px;color:#a5a084}.guide-card h2{font-size:20px;line-height:1.5;margin:16px 0 12px;letter-spacing:2px}.guide-card p{font-size:11px;color:#99917b;line-height:1.9}.keycaps{font-size:10px;line-height:28px}kbd{display:inline-grid;place-items:center;background:#f0efdf;border:1px solid #d7d7bf;border-bottom-width:3px;width:25px;height:25px;margin:2px;border-radius:5px;font-family:inherit}.keycaps small{display:block;font-size:9px;color:#9a927e;margin-top:8px}.outline-button{display:block;width:100%;text-align:left;margin-top:21px;padding:17px 0;border-bottom:1px solid #d9d6c4;font-size:14px;font-weight:750}.outline-button span{display:block;font-size:10px;color:#98917c;font-weight:400;margin:7px 0 0 21px}.local-note{font-size:10px;color:#9c9683;line-height:1.8;margin:23px 0}.game-column{min-width:0;max-width:604px;width:100%;margin:auto}.game-top{display:flex;justify-content:space-between;align-items:center;margin:0 3px 12px;gap:8px;font-size:10px;color:#898977;letter-spacing:1px}.game-label{font-weight:650}.game-label i{display:inline-block;width:6px;height:6px;background:#8bad7b;border-radius:50%;margin-right:6px}.pond-frame{position:relative;overflow:hidden;border-radius:180px 180px 23px 23px;border:7px solid #fffdf2;background:#7cae9f;box-shadow:0 2px 0 2px #dedbc4,0 16px 32px #77836816;width:100%;aspect-ratio:28/36;isolation:isolate}canvas{display:block;width:100%;height:100%;touch-action:none}.ready{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:space-between;padding:68px 30px 28px;pointer-events:none}.pond-seal{border:1px solid #f9f5daaa;border-radius:80px 80px 4px 4px;color:#faf8dc;padding:24px 12px;writing-mode:vertical-rl;letter-spacing:7px;font-size:12px;line-height:2;text-shadow:0 1px 4px #34685933}.pond-seal b{font-size:15px;letter-spacing:5px;font-weight:650}.ready-bottom{background:#fffcebeb;border:1px solid #fff9df;border-radius:28px 28px 18px 18px;padding:23px 25px 12px;width:100%;max-width:360px;text-align:center;backdrop-filter:blur(7px);box-shadow:0 8px 24px #315d4c16;pointer-events:auto}.mini-title{font-size:10px;letter-spacing:3px;color:#9e9471}.ready-bottom h2{font-size:23px;letter-spacing:2px;margin:11px 0 12px}.control-select{font-size:10px;color:#938d76;margin-bottom:13px}.control-select select{background:transparent;border:0;color:#5b7755;font-size:11px;padding:4px 10px}.primary-button{background:repeating-linear-gradient(125deg,#bddabe 0,#bddabe 9px,#b8d6b9 9px,#b8d6b9 11px);border:1px solid #9ab69b;box-shadow:0 4px 0 #8fac91;border-radius:14px;min-height:52px;width:100%;font-size:17px;font-weight:800;letter-spacing:2px;padding:12px 20px}.primary-button span{float:right}.quiet-button{font-size:11px;min-height:44px;color:#8a886f;padding:10px}.hud{position:absolute;top:22px;left:24px;right:24px;pointer-events:none;color:#fffbe7}.hud-row{display:flex;align-items:center;justify-content:space-between;margin:22px 12px 12px}.hud-row button{pointer-events:auto;background:#fff9dfeb;color:#617252;border:1px solid #fff4cf;border-radius:50%;width:40px;height:40px;font-weight:900;font-size:17px}.timer{text-align:center;background:#fffbeae8;color:#5a6a50;padding:8px 20px;border-radius:30px;min-width:108px}.timer strong{display:block;font-size:23px;line-height:1.2;font-variant-numeric:tabular-nums}.timer small,.kill-count small{font-size:8px;letter-spacing:2px}.kill-count{text-align:center;min-width:40px}.kill-count strong{display:block;font-size:22px}.health{width:73%;margin:auto}.health>div:first-child{display:flex;justify-content:space-between;font-size:9px;padding:0 2px 4px}.bar{height:7px;background:#35695475;border:1px solid #f1f5c244;border-radius:6px;overflow:hidden}.bar>span{display:block;height:100%;background:#d8e1a8;width:100%;border-radius:6px;transition:width .16s}.experience{display:flex;align-items:center;gap:8px;width:73%;margin:7px auto;font-size:8px}.experience .bar{flex:1;height:4px}.experience .bar>span{background:#efce76;width:0}.experience b{font-size:8px;white-space:nowrap}.boss-hud{margin:15px auto 0;text-align:center;width:75%;font-size:11px;color:#fff0c3}.boss-hud .bar{margin-top:6px;height:7px}.boss-hud .bar>span{background:#eaa878}.loadout{margin-top:17px;border:1px solid #dddac3;background:#fffdf1;padding:15px 18px 12px;border-radius:18px}.slot-label{font-size:10px;letter-spacing:2px;font-weight:700}.slot-label>span{font-size:9px;font-weight:400;color:#aaa38c;letter-spacing:1px;margin-left:8px}.slots{display:flex;gap:9px}.active-slots{margin-top:10px;margin-bottom:12px}.slot{border:1px solid #d6d8bd;background:#f2f3e3;border-radius:10px;display:flex;align-items:center;gap:8px;min-height:44px;padding:7px;flex:1;min-width:0;text-align:left}.slot .glyph{font-size:23px;color:#738d69;min-width:25px;text-align:center}.slot .slot-copy{display:block;font-size:10px;font-weight:650;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.slot .slot-copy small{display:block;font-size:8px;letter-spacing:1px;font-weight:400;color:#a2a283;margin-top:4px}.slot.empty{border-style:dashed;background:transparent;color:#c9c9ac;justify-content:center;font-size:19px}.slot.evolved{background:#f6e6b5;border-color:#d6bc71}.passive-line{display:flex;align-items:center;gap:14px}.passive-line .slots{gap:7px}.passive-line .slot{width:35px;height:35px;min-height:35px;padding:4px;position:relative}.passive-line .slot .glyph{font-size:18px}.passive-line .slot .slot-copy{font-size:7px;position:absolute;right:3px;bottom:2px}.passive-line .slot .slot-copy small{display:none}.loadout-note{font-size:9px;color:#a5a084;margin-left:auto}.game-footer{display:flex;justify-content:space-between;font-size:9px;color:#aca48d;margin:14px 4px;gap:8px}.play-hint{position:absolute;bottom:16px;left:12px;right:12px;text-align:center;pointer-events:none;color:#fff9dfa8;font-size:10px;letter-spacing:1px}.toast{position:absolute;left:15%;right:15%;top:47%;background:#fffae8ed;padding:13px;text-align:center;font-size:14px;font-weight:750;border-radius:14px;pointer-events:none;box-shadow:0 4px 16px #334c3422}dialog{border:1px solid #ded5b8;border-radius:100px 100px 23px 23px;background:#fffcef;color:#5c4d37;padding:38px 30px 25px;max-width:460px;width:calc(100% - 32px);max-height:90dvh;box-shadow:0 24px 80px #1c342c40}dialog::backdrop{background:#274d4666;backdrop-filter:blur(5px)}dialog h2{text-align:center;font-size:27px;letter-spacing:3px;margin:8px 0 15px}dialog .dialog-kicker{text-align:center;font-size:10px;letter-spacing:3px;color:#a29777;margin:9px 0}dialog p{font-size:12px;color:#92866b;line-height:1.9}dialog .dialog-close{display:block;margin-left:auto;border:1px solid #ddd6bc;border-radius:50%;width:32px;height:32px;font-size:21px}dialog .secondary-button{display:block;border:1px solid #d9d7bd;background:#f2f2df;width:100%;min-height:49px;border-radius:13px;font-size:14px;font-weight:700;margin-top:13px}dialog .primary-button{margin-top:14px}dialog .small-note{font-size:10px;color:#a29c86;text-align:center;margin-top:17px}.upgrade-card{display:block;width:100%;border:1px solid #d1d5b9;background:#eff2dc;padding:15px;margin:12px 0;border-radius:15px;text-align:left;position:relative}.upgrade-card b{display:block;font-size:17px;margin-bottom:5px}.upgrade-card p{margin:0;font-size:11px}.upgrade-card .badge{font-size:9px;color:#8e9870;position:absolute;right:12px;top:13px}.upgrade-card:first-of-type{background:#f5e8b9;border-color:#dcc47f}.upgrade-card .route{font-size:9px;color:#a69562;margin-top:7px}.result-score{text-align:center;font-size:63px;font-weight:900;color:#708660;line-height:1.2;margin:15px 0 4px}.result-caption{text-align:center;font-size:11px;color:#9f9476;letter-spacing:2px}.score-lines{border-top:1px solid #e0d9bf;border-bottom:1px solid #e0d9bf;margin:18px 0;padding:8px 0}.score-lines>div{display:flex;justify-content:space-between;font-size:12px;padding:7px 0}.score-lines b{font-size:14px}.tabs{display:flex;gap:7px;margin:15px 0}.tabs button{flex:1;padding:11px 7px;border-radius:10px;background:#eeefdb;font-size:12px}.tabs button.selected{background:#bdd9bc;font-weight:750}.catalog{display:grid;grid-template-columns:1fr 1fr;gap:10px}.catalog button{text-align:left;padding:13px;border-radius:12px;background:#f0f1df;border:1px solid #daddc4}.catalog button b{font-size:14px;display:block}.catalog button p{font-size:10px;line-height:1.6;margin-bottom:0}.rank-row{display:flex;gap:12px;align-items:center;border:1px solid #d4d7ba;background:#edf2dc;padding:16px;border-radius:14px}.rank-row b{font-size:14px}.rank-row small{display:block;font-size:9px;color:#949174;margin-top:6px}.rank-row>strong{margin-left:auto;font-size:27px;color:#718762}.mode-options{display:grid;gap:10px;margin:20px 0}.mode-options label{font-size:12px;color:#8a8167}.mode-options select{width:100%;padding:12px;background:#eff1dd;border:1px solid #d7d7bb;border-radius:10px;margin-top:7px}.settings-row{display:flex;justify-content:space-between;align-items:center;padding:9px 0;font-size:12px}.settings-row button{background:#e6edcd;border:1px solid #d1d6b7;padding:7px 14px;border-radius:9px;min-height:36px}.playing .pond-frame{border-radius:16px}.playing .sidebar{opacity:.8}.playing .game-top{margin-bottom:12px}[hidden]{display:none!important}
@media(min-width:1000px){.game-column{max-width:540px}.layout{gap:76px}.pond-frame{max-height:695px}}@media(max-width:800px){.app{padding:0 18px 16px}.topbar{height:68px}.layout{grid-template-columns:minmax(0,1fr);gap:18px;padding-top:20px}.sidebar{padding:0;display:flex;flex-wrap:wrap;align-items:center;gap:9px 12px}.eyebrow{width:100%;font-size:8px}.sidebar h1{font-size:32px;margin:0;line-height:1.2;letter-spacing:3px}.sidebar h1>span{display:inline}.sidebar h1>i,.intro,.tags,.guide-card,.local-note{display:none}.sidebar .outline-button{display:inline;width:auto;margin:0;padding:8px;font-size:11px;border:1px solid #d6d4bf;border-radius:9px;min-height:36px}.sidebar .outline-button span{display:none}.game-column{max-width:520px}.playing .sidebar{display:none}.game-top{font-size:9px}.pond-frame{border-width:5px}.playing .pond-frame{border-radius:12px}.loadout{padding:12px; margin-top:12px}.slot{gap:3px}.slot .glyph{font-size:20px;min-width:20px}.slot .slot-copy{font-size:9px}.loadout-note{font-size:8px}.game-footer{font-size:8px}.brand{font-size:19px}.brand span{font-size:8px;margin-left:7px;letter-spacing:1px}.hud{top:0;left:12px;right:12px}.hud-row{margin:16px 7px 9px}.ready{padding:46px 20px 20px}.ready-bottom{padding:19px 20px 10px}.ready-bottom h2{font-size:20px}.pond-seal{padding:15px 10px;font-size:10px}.pond-seal b{font-size:13px}.playing .topbar{height:55px}.playing .layout{padding-top:12px}.playing .pond-frame{max-height:calc(100dvh - 245px);min-height:350px;width:100%;max-width:100%;aspect-ratio:28/36;margin:auto}.playing .loadout{max-width:520px;margin:12px auto 0}.active-slots{gap:5px}.slot-label{font-size:8px}.playing .game-footer{display:flex;justify-content:flex-end;margin:5px 4px}.playing .game-footer>span:first-child{display:none}}@media(max-width:370px){.app{padding-left:10px;padding-right:10px}.brand span{display:none}.sidebar .outline-button{padding:8px 6px;font-size:10px}.sidebar h1{font-size:28px}.slot{padding:5px}.slot .glyph{font-size:18px}.loadout-note{display:none}.game-top{letter-spacing:0}.ready-bottom{padding:16px 13px 8px}dialog{padding:29px 20px 20px}.catalog{gap:7px}.playing .pond-frame{min-height:320px}.passive-line{gap:9px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
/* Playtest quality pass: clear field, tactile cards, legible compact HUD. */
.asset-status{font-size:10px;letter-spacing:1px;color:#8b927d;margin:6px 0 12px}.asset-status.is-ready{color:#547d60}.asset-status.is-ready::before{content:'●';font-size:7px;margin-right:6px}
.hud{position:relative;inset:auto;color:#526447;margin:0 0 10px;padding:10px 15px 9px;background:#fffcf0;border:1px solid #e1ddc8;border-radius:20px;box-shadow:0 3px 0 #e4e1cf;display:grid;grid-template-columns:105px minmax(0,1fr);column-gap:12px;align-items:center;pointer-events:auto}
.hud-row{grid-row:1/3;margin:0;justify-content:flex-start;gap:8px}.hud-row button{width:31px;height:31px;min-width:31px;background:#e5eedc;border-color:#c2d1b4;font-size:13px;box-shadow:0 2px 0 #bcc8a8}.timer{padding:0;min-width:0;background:none;border-radius:0}.timer strong{font-size:20px;letter-spacing:1px}.timer small{font-size:7px;letter-spacing:1px}.kill-count{display:none}.health,.experience{width:100%;margin:0}.health>div:first-child{font-size:8px;padding-bottom:3px}.health .bar{height:7px;background:#e4e5d6;border:0}.health .bar>span{background:linear-gradient(90deg,#86af83,#bdcf8d)!important}.experience{margin-top:7px;font-size:8px;gap:6px}.experience .bar{height:4px;border:0;background:#e7e6d5}.experience .bar>span{background:#d9b35c}.experience b{font-size:7px}.boss-hud{grid-column:1/-1;width:100%;margin:10px 0 0;text-align:left;color:#9a624e;display:flex;align-items:center;gap:10px;font-size:9px}.boss-hud .bar{flex:1;margin:0;height:5px;background:#eedacf;border:0}.boss-hud .bar>span{background:linear-gradient(90deg,#b57559,#dfa878)}.timer .last-minute{color:#ae7756}
.playing .pond-frame{max-height:none;min-height:0;border-radius:22px;aspect-ratio:28/36;box-shadow:0 3px 0 #c5c6a8,0 12px 30px #47645417}
.damage-flash{position:absolute;inset:0;pointer-events:none;opacity:0;box-shadow:inset 0 0 65px 12px #cb684488;background:#f2b47708}.damage-flash.hurt{animation:damage-feedback .5s ease-out}@keyframes damage-feedback{0%{opacity:.9}100%{opacity:0}}
.toast{top:42%;font-size:13px;letter-spacing:1px;border:1px solid #eee1b0;border-bottom-width:4px;border-radius:20px;padding:14px 12px;background:#fff9e8;box-shadow:0 8px 25px #234f3e25}
.play-hint{bottom:12px;margin:0 auto;width:max-content;max-width:90%;font-size:9px;letter-spacing:.4px;background:#294f4633;padding:7px 12px;border-radius:20px;color:#fff9e7;backdrop-filter:blur(3px)}
.glyph svg,.upgrade-icon svg,.catalog-icon svg{width:100%;height:100%;display:block}.slot .glyph{display:grid;place-items:center;width:29px;height:29px;min-width:29px;padding:4px;background:#dce8cf;border-radius:8px;color:#5e8062}.slot.evolved .glyph{background:#f0d997;color:#97763d}.slot{transition:transform .14s,box-shadow .14s;border-bottom-width:3px}.slot:active{transform:translateY(2px);border-bottom-width:1px}.slot .slot-copy{font-size:10px;line-height:1.25}.slot .slot-copy small{font-size:7px;letter-spacing:.4px;color:#89927b}.passive-line .slot .glyph{min-width:22px;width:22px;height:22px;padding:3px}.passive-line .slot{border-bottom-width:2px}.loadout{padding:13px 15px 12px;border-radius:20px}.upgrade-card{padding:18px;border-bottom-width:4px;background:#f0f2e1;transition:transform .15s}.upgrade-card:active{transform:translateY(2px);border-bottom-width:2px}.upgrade-card b{display:flex;align-items:center;gap:12px;font-size:17px;margin:0 0 10px}.upgrade-icon{display:inline-block;width:42px;height:42px;padding:8px;border-radius:13px;background:#dbe8cf;color:#688365}.upgrade-card:first-of-type .upgrade-icon{background:#e7d29a;color:#8a7342}.upgrade-card .badge{top:16px;right:15px;font-size:8px}.upgrade-card .route{margin-top:12px;padding-top:9px;border-top:1px solid #cbd6b955}.catalog-icon{display:block;width:30px;height:30px;margin-bottom:9px;color:#72916b}.catalog button b{font-size:13px}.primary-button:active{transform:translateY(3px);box-shadow:0 1px 0 #8fac91}.ready-bottom{background:#fffdf0f5;box-shadow:0 10px 30px #264d3e25;border-bottom:4px solid #e2dab7}
@media(max-width:800px){.playing .game-column{max-width:min(100%,calc((100dvh - 248px)*.7777778))}.playing .pond-frame{width:100%;max-width:100%;max-height:none;min-height:0}.playing .game-top{font-size:8px;letter-spacing:0;margin-bottom:8px}.playing .layout{padding-top:10px}.playing .hud{border-radius:15px;padding:8px 10px;column-gap:9px;grid-template-columns:96px minmax(0,1fr);margin-bottom:9px}.playing .loadout{margin-top:10px;padding:10px}.playing .active-slots{margin-top:7px;margin-bottom:8px;gap:4px}.slot .glyph{width:25px;height:25px;min-width:25px;padding:4px}.active-slots .slot{display:flex;flex-direction:column;gap:4px;text-align:center;padding:5px 3px;min-height:55px}.slot .slot-copy{font-size:8px;max-width:100%}.slot .slot-copy small{font-size:6px;margin-top:2px}.passive-line .slot{width:29px;height:29px;min-height:29px}.playing .topbar{height:53px}.playing .game-footer{font-size:7px;margin-top:6px}.play-hint{font-size:8px;padding:5px 8px}.boss-hud{font-size:8px;margin-top:7px}.game-label{max-width:50%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}
@media(max-width:370px){.hud .health>div:first-child{font-size:7px}.playing .game-column{max-width:100%}.playing .pond-frame{min-height:0}.playing .loadout-note{display:none}.brand span{display:none}.ready{padding:30px 15px 15px}.ready-bottom h2{font-size:18px}.ready-bottom{padding:15px 16px 7px}}
@media(prefers-reduced-motion:reduce){.damage-flash.hurt{animation:none}.damage-flash{box-shadow:none}.slot,.upgrade-card,.primary-button{transition:none}}
.pond-frame canvas{height:auto;aspect-ratio:28/36}.playing .pond-frame{aspect-ratio:auto}.active-slots .slot:not(.empty){position:relative;overflow:hidden}.active-slots .slot:not(.empty)::after{content:'';position:absolute;left:0;bottom:0;width:var(--charge,100%);height:2px;background:#85ab75}.active-slots .slot.evolved::after{background:#d1a856}

/* The asset state is a normal-flow message, not the .ready scene overlay. */
.asset-status{position:static;inset:auto;display:block;padding:0;line-height:1.65;overflow-wrap:anywhere;pointer-events:auto}.asset-status.is-error{color:#985c43}.asset-retry{display:block;width:100%;margin:0 0 12px;padding:10px;border:1px solid #c6cbae;border-radius:10px;background:#e7edd6;font-size:12px;font-weight:700}.ready-bottom{flex-shrink:0}.ready-bottom .quiet-button{display:block;width:100%;line-height:1.5}.ready-bottom .control-select{line-height:1.5}.ready .pond-seal{flex-shrink:0}@media(max-width:370px){.ready>.pond-seal{display:none}.ready{justify-content:flex-end}.ready-bottom{padding-top:14px}.asset-status{font-size:9px;margin:5px 0 9px}.ready-bottom .control-select{margin-bottom:10px}}

.ready.has-error{justify-content:flex-end}.ready.has-error>.pond-seal{display:none}
