/* finesse · register=h5 · A=blue-coral-oat · B=rounded-system-weight-contrast · C=single-screen-game · D=Canvas2D-simulation · E=paper-toys · SOUL=7 SPECTACLE=5 DENSITY=5 */
:root{font-family:ui-rounded,"PingFang SC","Microsoft YaHei",sans-serif;color:#303b46;background:#e9e8e0;--blue:#477cdb;--red:#de7565;--paper:#fcfaf3;--line:#deded3}*{box-sizing:border-box}body{margin:0;display:flex;align-items:center;justify-content:center;gap:6vw;min-height:100dvh}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;color:inherit;border:0;touch-action:manipulation}button:disabled{opacity:.42;cursor:default}button:focus-visible,a:focus-visible{outline:3px solid #477cdb;outline-offset:3px}button:active:not(:disabled){transform:translateY(2px)}[hidden]{display:none!important}#app{width:100%;max-width:480px;height:100dvh;max-height:940px;position:relative;display:flex;flex-direction:column;background:var(--paper);overflow:hidden;box-shadow:0 18px 70px #34423518}header{height:72px;flex-shrink:0;padding:14px 20px 9px;display:flex;align-items:center;justify-content:space-between}.brand{text-decoration:none;color:inherit;font-size:20px;font-weight:850;letter-spacing:1px;position:relative;padding-left:38px}.brand small{display:block;font-size:8px;letter-spacing:2.2px;margin-top:2px;color:#899185}.brandmark{position:absolute;left:0;top:1px;font-size:30px;color:var(--blue)}.header-actions{display:flex;gap:7px}.icon{width:44px;height:44px;border:1px solid var(--line);background:transparent;border-radius:50%;font-weight:bold;font-size:19px}.mode{display:flex;margin:0 20px;background:#eeeee5;padding:4px;border-radius:12px;flex-shrink:0}.mode button{flex:1;border-radius:9px;padding:9px 0;font-size:13px;font-weight:700;background:transparent;color:#8b9189}.mode .active{background:var(--paper);color:#34434e;box-shadow:0 2px 4px #313b4510}.brief{display:flex;justify-content:space-between;align-items:center;margin:16px 22px 12px;flex-shrink:0}.brief button{background:transparent;text-align:left;padding:0;min-height:44px}.brief small{display:block;font-size:9px;letter-spacing:1.6px;color:#8a9187;margin-bottom:5px}.brief strong{display:block;font-size:20px}.brief strong span:not(#budget){font-size:15px;color:#8f988a;margin-left:8px}.budget{text-align:right}.budget strong{font-variant-numeric:tabular-nums;font-size:27px;color:var(--blue)}.budget em{font-size:13px;font-style:normal;color:#9aa092;margin-left:4px}.arena-wrap{position:relative;flex:1;min-height:180px;margin:0 12px;border:1px solid #d9ddcd;border-radius:20px;overflow:hidden;background:#f0f1df}canvas#arena{display:block;width:100%;height:100%;touch-action:none}.battle-top{position:absolute;top:14px;left:15px;right:15px;display:flex;align-items:center;justify-content:space-between;pointer-events:none;font-size:11px}.team{display:flex;gap:6px;align-items:center;padding:6px 9px;border-radius:20px;background:#fcfaf3de}.team i{width:6px;height:6px;border-radius:50%;background:currentColor}.blue{color:var(--blue)}.red{color:var(--red)}#timer{font-size:10px;color:#858d7a;background:#fcfaf3b5;padding:5px 8px;border-radius:12px;font-variant-numeric:tabular-nums}#hint{position:absolute;bottom:16px;left:0;right:0;text-align:center;font-size:11px;color:#70859a;pointer-events:none}#autofill{position:absolute;left:50%;top:72%;transform:translate(-50%,-50%);padding:11px 18px;border:1px dashed #8caad1;border-radius:24px;background:#fcfaf3df;color:#5579a8;font-size:12px;white-space:nowrap}#autofill:active{transform:translate(-50%,-48%)}#toast{position:absolute;top:44%;left:50%;transform:translate(-50%,-50%);white-space:nowrap;background:#303b46e8;color:#faf8ef;padding:10px 18px;border-radius:30px;font-size:12px;opacity:0;transition:opacity .2s;pointer-events:none}#toast.visible{opacity:1}.toolbar{padding:10px 16px 8px;flex-shrink:0}.tools-caption{display:flex;justify-content:space-between;align-items:center;font-size:11px;margin:0 2px 4px;height:40px}.tools-caption button{font-size:11px;background:transparent;padding:6px;color:#8b9386;min-height:44px}.tools-caption button.on{color:var(--blue);background:#e6edf8;border-radius:8px}#roster{display:flex;gap:7px}.unit{flex:1;min-width:0;height:83px;position:relative;background:#f0f0e7;border:1.5px solid transparent;border-radius:13px;padding:0 1px 5px;display:flex;flex-direction:column;align-items:center;justify-content:flex-end}.unit.selected{background:#eaf0fc;border-color:#7297d9;box-shadow:0 2px 0 #b2c6e6}.unit canvas{width:42px;height:42px;display:block}.unit strong{font-size:11px;line-height:16px}.unit small{font-size:9px;color:#8a9385;line-height:13px}.unit.selected small{color:#527cbd}footer{display:flex;gap:10px;padding:4px 18px 0;flex-shrink:0}.primary{background:#f4cb66;border:1px solid #d9b458;box-shadow:0 3px 0 #d4b467;min-height:48px;border-radius:13px;font-size:15px;font-weight:800;flex:1}.primary span{margin-left:18px}.secondary{min-height:48px;min-width:72px;border-radius:13px;background:#eeeee5;border:1px solid var(--line);font-size:12px}.footnote{text-align:center;color:#a0a68f;font-size:9px;letter-spacing:1px;padding:11px 0 max(10px,env(safe-area-inset-bottom));flex-shrink:0}.intro,.notes{width:230px}.eyebrow{font-size:10px;color:#818c7c;letter-spacing:2px}.intro h1{font-size:50px;line-height:1.25;letter-spacing:-2px;margin:25px 0}.intro p{font-size:15px;line-height:1.9;color:#899080}.sketch{margin:45px 0;display:flex;align-items:center;gap:18px;font-size:60px;color:#7896bc;transform:rotate(-7deg)}.sketch span{font-size:12px;line-height:1.8;letter-spacing:2px}.intro>small{font-size:10px;color:#949a8a}.notes h2{font-size:25px;line-height:1.5;margin:24px 0 35px}.notes ol{padding:0;list-style:none}.notes li{display:flex;gap:15px;margin:28px 0;font-size:13px}.notes b{font-size:11px;color:#9aa38d;padding-top:3px}.notes small{display:block;color:#929b88;font-size:11px;margin-top:8px}.notes p{font-size:10px;color:#8b9680;margin-top:45px}#overlay{position:absolute;inset:0;background:#2934426b;z-index:20;display:flex;align-items:flex-end;backdrop-filter:blur(5px)}.sheet{position:relative;width:100%;max-height:88%;overflow:auto;background:var(--paper);border-radius:25px 25px 0 0;padding:32px 26px max(28px,env(safe-area-inset-bottom));box-shadow:0 -5px 40px #29344222}.close{position:absolute;right:16px;top:16px;width:44px;height:44px}.sheet h2{font-size:26px;margin:8px 0 12px}.sheet p{color:#7b8779;font-size:13px;line-height:1.9}.sheet .primary{width:100%;margin-top:12px}.result-icon{font-size:48px;color:#d3aa45}.stars{font-size:32px;letter-spacing:9px;color:#d7b14e;margin:15px 0}.stats{display:flex;justify-content:space-around;background:#eeeee5;border-radius:15px;padding:20px 8px;margin:20px 0}.stats strong,.stats small{display:block;text-align:center}.stats strong{font-size:23px}.stats small{font-size:10px;color:#8a9282;margin-top:6px}.sheet-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin:20px 0}.stage{padding:15px 10px;text-align:left;background:#eeeee5;border-radius:12px;min-height:65px}.stage strong{display:block;font-size:13px}.stage small{color:#959d89;display:block;margin-top:6px}.stage.current{box-shadow:inset 0 0 0 2px #7297d9}.help-row{padding:14px 0;border-bottom:1px solid var(--line);font-size:13px;line-height:1.8}.help-row b{color:#477cdb}@media(max-width:1100px){.intro,.notes{display:none}}@media(min-width:600px){#app{border-radius:26px;border:6px solid #d5d7c9;height:calc(100dvh - 40px);min-height:600px}}@media(max-height:730px){header{height:57px;padding-top:8px}.brief{margin:9px 20px}.mode button{padding:7px}.unit{height:72px}.unit canvas{height:34px;width:34px}.toolbar{padding:5px 14px}.footnote{padding-top:8px;padding-bottom:max(5px,env(safe-area-inset-bottom))}.tools-caption{margin-bottom:4px}.primary,.secondary{min-height:44px}}@media(prefers-reduced-motion:reduce){*{transition:none!important}}

/* 布阵拖动与配额：手机与鼠标共享 Pointer Events，不依赖 hover。 */
.unit{height:96px;touch-action:none;user-select:none;-webkit-user-select:none;position:relative;padding-top:14px}
.unit .quota{position:absolute;right:5px;top:4px;padding:2px 4px;border-radius:5px;background:#d8e2d15e;color:#65765f;font-size:9px;font-variant-numeric:tabular-nums;line-height:12px}
.unit.full .quota{background:#f0d8d0;color:#a75d52}.unit.full{border-style:dashed}.unit strong{margin-top:1px}.unit small{font-size:9px}
#recycle{position:absolute;bottom:14px;left:50%;transform:translateX(-50%);padding:12px 16px;border-radius:14px;border:1.5px dashed #8da193;color:#667f75;background:#f5f7e8ef;white-space:nowrap;font-size:12px;pointer-events:none;visibility:hidden;z-index:5}
.dragging-unit #recycle{visibility:visible}.dragging-unit #hint{visibility:hidden}#recycle.over{background:#dcebd7;border-color:#5e936d;color:#356346}
#dragstatus{position:absolute;top:47px;left:10px;right:10px;text-align:center;font-size:11px;line-height:1.5;padding:7px 5px;background:#fcfaf3ed;border-radius:10px;z-index:4;pointer-events:none;color:#637966}
.drag-ghost{position:fixed;width:72px;height:90px;transform:translate(-50%,-85.55%);z-index:100;pointer-events:none;filter:drop-shadow(0 7px 6px #34465532);opacity:.9}
.drag-ghost.invalid{filter:drop-shadow(0 0 4px #c76754);opacity:.6}.drag-ghost.recycling{opacity:.45;filter:grayscale(.7)}
.review{border:1px solid #dce0d1;background:#f0f2e7;border-radius:14px;padding:15px 16px;margin:18px 0}.review h3{font-size:13px;margin:0 0 8px}.review p{font-size:12px;margin:5px 0;line-height:1.7}.review .tip{padding-top:9px;border-top:1px solid #dce0d1;margin-top:10px;color:#536d5d}.comparison{color:#477cdb!important;font-weight:600}
@media(max-height:730px){.unit{height:83px}.unit .quota{top:3px;font-size:8px}.unit canvas{height:30px;width:30px}}

.campaign-strip{display:flex;justify-content:space-between;align-items:center;flex-shrink:0;margin:0 14px 7px;padding:8px 12px;min-height:44px;border-radius:12px;background:#e9eee0;text-align:left;font-size:11px;color:#536d5d;gap:8px}.campaign-strip b{font-size:10px;font-weight:500;margin-left:8px;color:#788574}.campaign-strip>span:last-child{color:#a28237;white-space:nowrap}.stage-tip{font-size:10px;line-height:1.6;margin:0 19px 9px;color:#7d8773;flex-shrink:0}.campaign-summary{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:#7b8775;margin-top:20px}.campaign-summary b{font-size:17px;color:#536d5d;margin-left:6px}.star-count{color:#af8b38}.campaign-track{display:flex;gap:5px;margin:12px 0}.campaign-track i{height:5px;flex:1;border-radius:3px;background:#e0e4d5}.campaign-track i.done{background:#8dac83}.sheet .map-intro{font-size:11px;line-height:1.6;margin:10px 0 15px}.level-map{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}.map-node{min-height:59px;border-radius:12px;background:#eeeee5;border:1.5px solid transparent;color:#71806c;padding:8px 2px}.map-node b,.map-node small{display:block}.map-node b{font-size:17px}.map-node small{font-size:9px;margin-top:4px;color:#98a185}.map-node.chosen{border-color:#7297d9;background:#eaf0fc;color:#477cdb}.map-node.cleared small{color:#b09549}.map-node.locked{background:#f0f0e8;color:#a2a795}.map-node.locked small{color:#a9ae9d}.stage-preview{margin-top:18px;padding:16px;border:1px solid #dce0d1;border-radius:16px;background:#f1f3e9}.stage-kicker{font-size:10px;color:#86947b;letter-spacing:1px}.stage-preview h3{font-size:19px;margin:9px 0 14px}.stage-resources{display:flex;justify-content:space-between;gap:6px;font-size:10px;color:#859078}.stage-resources b{color:#526b60}.enemy-lineup{display:flex;flex-wrap:wrap;gap:5px;margin:13px 0 10px}.enemy-lineup span{padding:5px 8px;border-radius:7px;background:#e8e2d4;color:#8d705e;font-size:10px}.enemy-lineup b{font-weight:500}.sheet .stage-preview p{font-size:11px;line-height:1.7;margin:8px 0;color:#73816e}.stage-preview p>b{color:#536d5d}.stage-preview .primary{font-size:13px;margin-top:10px}.sheet .campaign-foot{font-size:10px;line-height:1.8;margin-bottom:0}.unlock-note{color:#a28237!important}.next-stage{padding:12px 15px;background:#e9eee0;border-radius:12px;font-size:12px;margin:15px 0}.next-stage strong{display:block;color:#536d5d}.next-stage small{display:block;color:#7b8775;line-height:1.7;margin-top:5px}.result-secondary{display:block;background:transparent;color:#71826c;width:100%;min-height:44px;font-size:12px;margin-top:12px}.sheet .result-primary{margin-top:5px}.sheet .review+.primary{margin-top:5px}
@media(max-height:730px){.stage-tip{display:none}.campaign-strip{min-height:36px;padding:6px 10px;margin-bottom:6px}.campaign-strip b{margin-left:4px}.brief{margin-top:6px;margin-bottom:6px}.sheet .stage-preview{padding:12px}.level-map{gap:6px}.map-node{min-height:53px}}

#heal{min-width:94px;max-width:112px;padding:5px 7px;font-size:11px;background:#e3ebdc;border-color:#b7c8ac}#heal b,#heal small{display:block}#heal b{font-size:12px}#heal small{font-size:8px;margin-top:4px;color:#819277}.item-options{display:grid;gap:12px;margin:20px 0}.item-option{display:flex;align-items:center;gap:15px;padding:17px 14px;border:1.5px solid #dce0d1;border-radius:16px;text-align:left;background:#f0f2e7;min-height:103px}.item-option.equipped{border-color:#7297d9;background:#eaf0fc}.item-art{font-size:32px;display:grid;place-items:center;flex-shrink:0;width:54px;height:58px;border-radius:14px;background:#e1e7cf;color:#788957}.item-option b{font-size:15px}.item-option small{display:block;font-size:11px;line-height:1.8;color:#7b8775;margin-top:7px}.stage-rule{font-size:10px;color:#8e805c;background:#eae5d2;padding:7px 9px;border-radius:7px;margin-top:12px}.stage-tip{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sheet .item-recommend{color:#8e805c}.campaign-foot{overflow-wrap:anywhere}
@media(max-width:360px){footer .primary span{display:none}#heal{min-width:88px;font-size:10px}}

#inspection-info{position:absolute;left:10px;right:10px;top:47px;z-index:4;display:flex;align-items:center;gap:5px;background:#fcfaf3ed;border:1px solid #d3dfcb;border-radius:12px;padding:6px 5px 6px 10px;pointer-events:auto;color:#5b7768}#inspection-info>div{min-width:0;flex:1}#inspection-info b{display:block;font-size:11px}#inspection-info small{display:block;font-size:9px;line-height:1.6;margin-top:3px;color:#8a927b}#clear-inspection{background:transparent;width:44px;height:44px;flex-shrink:0;font-size:20px;color:#8a927b}#combat-alert{position:absolute;top:48px;left:50%;transform:translateX(-50%);border-radius:14px;padding:8px 12px;max-width:95%;white-space:nowrap;background:#e6eddbec;color:#68805b;border:1px solid #c6d4ba;font-size:11px;pointer-events:none;z-index:4}#combat-alert.rear{background:#f7e6d9ed;color:#a36454;border-color:#e5c0aa}#combat-alert.item-end{color:#87917d;background:#f1f0e6eb}.item-timer{display:inline-grid;place-items:center;width:26px;height:26px;border-radius:50%;background:conic-gradient(#86a77a var(--remaining),#d3ddc9 0);position:relative;vertical-align:middle;margin-right:3px;font-size:13px}.item-timer::before{content:'';position:absolute;inset:3px;border-radius:50%;background:#eff3e6;z-index:-1}#heal:has(.item-timer){opacity:.85}.unit-stats{width:100%;border-collapse:collapse;font-size:11px;margin-top:16px;text-align:right;font-variant-numeric:tabular-nums}.unit-stats caption{text-align:left;color:#687c60;font-size:11px;padding-bottom:8px}.unit-stats th{font-weight:500}.unit-stats td,.unit-stats th{padding:9px 4px;border-bottom:1px solid #dce0d1}.unit-stats th:first-child{text-align:left}.unit-stats thead{color:#88927c;font-size:10px}
.item-timer{isolation:isolate}
#inspection-info{top:auto;bottom:8px}

/* 小规模试玩：可跳过的操作引导、兵种手册、本机反馈。 */
#coach{display:flex;align-items:center;flex-shrink:0;gap:8px;margin:0 14px 8px;padding:9px 6px 9px 12px;background:#f2e9cb;border:1px solid #dfd1a6;border-radius:12px}#coach>div{flex:1;min-width:0}#coach b{display:block;font-size:10px;color:#95834f}#coach p{font-size:11px;line-height:1.65;margin:4px 0 0;color:#6a7055}#skip-coach{background:transparent;min-width:44px;min-height:44px;color:#a19370;font-size:11px}.coach-focus{outline:2px dashed #ccad62;outline-offset:3px}.unit-info-trigger{padding:0 3px!important;text-align:left;color:#536d5d!important;min-height:44px!important;font-size:11px!important;max-width:54%;line-height:1.5}.unit-info-trigger::after{content:' ⓘ';font-size:11px;color:#9aab90}.help-menu{display:grid;gap:9px;margin:20px 0}.help-menu button{background:#eef0e4;text-align:left;border:1px solid #dce0d1;padding:15px 13px;border-radius:12px;min-height:50px;font-size:13px;display:flex;justify-content:space-between}.help-menu span{color:#9aaa8c}.codex-tabs{display:flex;gap:5px;margin:20px 0 10px}.codex-tabs button{flex:1;min-width:0;min-height:44px;font-size:11px;background:#eeeee5;border:1px solid transparent;border-radius:10px;padding:5px}.codex-tabs .chosen{color:#477cdb;background:#eaf0fc;border-color:#7297d9}.unit-profile{display:flex;align-items:center;gap:15px;background:#eaf0e2;border-radius:18px;margin:16px 0}.unit-profile canvas{width:120px;height:110px;flex-shrink:0}.unit-profile h3{font-size:23px;margin:0 0 5px}.unit-profile p{margin:3px 0;font-size:12px}.unit-profile small{font-size:10px;color:#91a082}.profile-numbers{display:flex;justify-content:space-between;padding:10px 4px;color:#87967e;font-size:11px}.profile-numbers b{display:block;margin-top:6px;font-size:19px;color:#526c5e}.profile-note{background:#f0f2e7;border-radius:13px;padding:16px;margin:14px 0}.profile-note b{font-size:12px;color:#607a60}.sheet .profile-note p{font-size:12px;margin:5px 0 12px}.sheet .profile-note p:last-child{margin-bottom:0}#feedback-form label{display:block;font-size:12px;color:#6c7e65;margin:14px 0}#feedback-form select,#feedback-form textarea{display:block;width:100%;font:inherit;margin-top:7px;border:1px solid #ccd4bd;border-radius:10px;padding:11px;color:#536d5d;background:#f2f3e8;min-height:44px}#feedback-form textarea{resize:vertical;line-height:1.7}.sheet #feedback-status{font-size:11px;color:#6f8d64}.local-records{border-top:1px solid #dce0d1;margin-top:20px;padding-top:20px}.local-records label{display:flex;gap:8px;align-items:center;font-size:12px;min-height:44px}.local-records input{width:20px;height:20px;accent-color:#87a579}.sheet .local-records p{font-size:11px}.local-records .secondary{padding:10px 15px}.text-action{background:transparent;color:#a57b65;min-height:44px;font-size:11px;display:block}.local-records small{display:block;color:#9aa18c;font-size:10px}.optional-goal,.challenge-result{border:1px solid #ddd4af;background:#f1edda;padding:12px;border-radius:12px;margin:12px 0}.optional-goal b,.challenge-result b{font-size:11px;color:#958146}.optional-goal small,.challenge-result small{display:block;font-size:10px;color:#8b9177;line-height:1.7;margin-top:6px}.challenge-result.earned{border-color:#b8cfa9;background:#e8efdc}.challenge-result.earned b{color:#63825e}
@media(max-width:360px){.brand{font-size:17px;padding-left:30px;letter-spacing:0}.brandmark{font-size:24px}.brand small{font-size:7px;letter-spacing:1px}.header-actions{gap:4px}.unit-profile{gap:6px}.unit-profile canvas{width:96px;height:100px}.unit-profile h3{font-size:20px}.unit-profile small{font-size:9px}}
@media(max-height:730px){#app.coached .arena-wrap{min-height:120px}#coach{margin-bottom:6px;padding-top:6px;padding-bottom:6px}.unit{height:80px}.unit-info-trigger{font-size:10px!important}}

#loading-splash{position:absolute;inset:0;background:#fcfaf3;z-index:100;display:flex;flex-direction:column;justify-content:center;align-items:center;color:#536d5d;gap:10px}#loading-splash strong{font-size:26px;letter-spacing:2px}#loading-splash p{font-size:12px;color:#92a084}.loading-flag{font-size:62px;color:#7297d9;margin-bottom:10px}#retry-loading{min-height:44px;padding:10px 24px;background:#f4cb66;border-radius:12px}.loading #app>header{visibility:hidden}
.clock{display:flex;gap:6px;align-items:center}
#speed{pointer-events:auto;min-width:42px;min-height:32px;padding:0 10px;border-radius:16px;border:1px solid #d9ddcd;background:#fcfaf3e6;color:#6d7a66;font-size:12px;font-weight:800;font-variant-numeric:tabular-nums}
#speed[aria-pressed="true"]{background:#f4cb66;border-color:#d9b458;color:#4a3d1c}
.help-menu button[aria-pressed] span{font-weight:700;color:#5b7d5a}
.help-menu button[aria-pressed="false"] span{color:#9a9c8e}
