:root{--paper:#f5f4ee;--ground:#e9e8df;--ink:#303c35;--muted:#8a8e82;--line:#dcded3;--accent:#58795b;--accent-light:#e5ebdf;--orange:#c7784a;--font:"Segoe UI","Microsoft YaHei",sans-serif}
*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font);font-size:13px;overflow:hidden}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;color:inherit;border:0;background:none}button:disabled{opacity:.4;cursor:default}button:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:4px}a{color:inherit;text-decoration:none}button{transition:background .18s,transform .18s,color .18s}button:active:not(:disabled){transform:translateY(1px)}[hidden]{display:none!important}.topbar{height:86px;padding:0 30px;display:flex;align-items:center;border-bottom:1px solid var(--line);gap:30px;position:relative;z-index:5;background:var(--paper)}.brand{display:flex;gap:12px;align-items:center;min-width:245px}.brand svg{width:32px;height:38px;color:var(--accent)}.brand>span{font-size:23px;font-weight:750;letter-spacing:3px}.brand small{display:block;font-size:8px;font-weight:500;letter-spacing:2.7px;margin-top:3px}.run-status{display:flex;align-items:center;gap:10px;font-size:11px;color:#7c8476;white-space:nowrap;flex:1}.live-dot{width:6px;height:6px;border-radius:50%;background:#7e9770;box-shadow:0 0 0 4px #e5e9df}.divider{height:12px;width:1px;background:var(--line);margin:0 4px}.toolbar{display:flex;align-items:center;gap:22px}.icon-btn{font-size:22px;width:30px;height:34px;color:var(--muted)}.icon-btn.active{color:var(--accent)}.text-btn{font-size:12px;white-space:nowrap;padding:8px 0}.text-btn span{font-size:10px;margin-left:5px;color:var(--muted)}.outline-btn{border:1px solid #cdd2c4;border-radius:5px;padding:10px 15px;font-size:12px;white-space:nowrap}.outline-btn:hover:not(:disabled){background:var(--accent-light)}.workspace{display:grid;grid-template-columns:minmax(0,1fr) 292px;height:calc(100dvh - 86px)}.arena{position:relative;overflow:hidden;min-height:0;background:var(--ground)}#game-canvas{width:100%;height:100%;display:block;outline:none;touch-action:none}.battle-hud{position:absolute;top:27px;left:31px;right:31px;display:flex;justify-content:space-between;pointer-events:none;transition:opacity .3s}.eyebrow{font-size:9px;letter-spacing:1.8px;color:var(--muted);font-weight:600}.wave-readout>div{display:flex;align-items:baseline;gap:9px}.wave-readout strong{font-size:43px;font-weight:350;line-height:1.3;letter-spacing:-2px;font-variant-numeric:tabular-nums}.wave-readout>div>span{font-size:13px;color:#929888}.wave-readout small{color:#89917f;font-size:10px}.core-readout{width:210px;padding-top:4px}.core-readout>div:first-child{display:flex;justify-content:space-between;align-items:center;font-size:11px}.core-readout strong{font-size:14px;font-weight:600;font-variant-numeric:tabular-nums}.core-readout em{font-style:normal;font-size:10px;color:var(--muted)}.core-readout i{display:inline-block;width:5px;height:5px;background:var(--accent);border-radius:50%;margin-right:4px}.hp-track{height:4px;background:#d4d9cb;margin-top:12px;overflow:hidden}.hp-track span{display:block;height:100%;background:#729568;transition:width .25s,background .25s}.core-meta{display:flex;justify-content:space-between;margin-top:8px;font-size:9px;color:#828c7b}.intro{position:absolute;left:4.3%;top:18%;width:355px;animation:intro-in .7s both}.intro-kicker{display:flex;align-items:center;gap:9px;color:#6e8465;letter-spacing:1.2px}.intro-kicker>span{width:20px;height:1px;background:#7c9670}.intro h1{font-size:clamp(36px,4.2vw,62px);line-height:1.35;font-weight:600;letter-spacing:-2px;margin:22px 0 16px}.intro h1>span{color:var(--accent)}.intro p{font-size:13px;line-height:1.95;color:#7d8777;margin-bottom:29px}.primary-btn{display:flex;align-items:center;justify-content:space-between;gap:65px;min-width:210px;padding:16px 21px;background:var(--accent);color:#fff;border-radius:4px;font-size:13px;letter-spacing:1px;box-shadow:0 4px 12px #405a3c15}.primary-btn:hover{background:#456549}.primary-btn>span{font-size:21px;font-weight:300;line-height:15px}.lab-link{padding:17px 0;font-size:11px;color:#798370}.lab-link span{margin-left:10px}.lab-link:hover{color:var(--accent)}.intro-foot{font-size:9px;color:#949a8c;margin-top:14px;letter-spacing:.3px}.intro-foot b{font-weight:400;margin:0 9px}.field-note{position:absolute;left:31px;bottom:205px;display:flex;gap:9px;align-items:center;color:#909786;font-size:10px;pointer-events:none}.tiny-cross{color:#8b9b80;font-size:18px;font-weight:200}.view-tools{position:absolute;bottom:204px;right:27px;display:flex;gap:2px;align-items:center;color:#7d8976}.view-tools button{height:29px;min-width:29px;font-size:18px;border-radius:4px}.view-tools button:hover{background:#ffffff65}.view-tools>span{font-size:9px;margin:0 2px}.view-tools i{width:1px;height:13px;background:#cbd1c0;margin:0 8px}.supply-dock{position:absolute;bottom:0;left:0;right:0;padding:18px 30px 15px;background:linear-gradient(0deg,#f0f0e8 90%,#f0f0e800);border-top:1px solid #ffffff55}.supply-head{display:flex;justify-content:space-between;align-items:center;font-size:11px;margin-bottom:12px}.supply-head>span:first-child{display:flex;align-items:center;gap:7px}.supply-head small{color:#8e9685;font-size:9px;margin-left:7px}.supply-dot{display:block;width:5px;height:5px;background:var(--orange);border-radius:50%}.next-drop{font-size:9px;color:#8a9480;display:flex;align-items:center;gap:7px}.next-drop b{font-weight:500;color:#64765c;font-variant-numeric:tabular-nums}.next-drop>i{width:46px;height:3px;background:#d8ddce}.next-drop em{display:block;width:100%;height:100%;background:#809774;transition:width .15s linear}.supply-slots{display:grid;grid-template-columns:repeat(3,1fr);gap:11px}.supply-slot{position:relative;border:1px solid #d5daca;border-radius:6px;background:#f8f8f1ba;text-align:left;height:92px;display:flex;align-items:center;padding:12px;gap:12px;overflow:hidden}.supply-slot:hover{background:#fffef8;border-color:#9aaa8a;transform:translateY(-3px)}.supply-slot.selected{background:#fffef8;border:1.5px solid #6f8964;box-shadow:0 2px 0 #6f8964}.slot-key{position:absolute;right:9px;top:7px;font-size:9px;color:#a2aa95}.block-icon{width:42px;height:43px;flex-shrink:0;position:relative;display:grid;place-items:center;font-family:"Segoe UI Symbol",var(--font);font-size:24px;background:var(--block-color);color:#fffff1;border:1px solid #00000012;border-radius:6px;box-shadow:inset 0 -6px 0 #0000000f,0 5px 0 -2px color-mix(in srgb,var(--block-color),#324134 20%);transform:rotate(-4deg)}.block-icon:before{content:"";position:absolute;left:4px;top:4px;right:4px;height:1px;background:#ffffff4d}.block-icon.large{width:65px;height:67px;font-size:36px;border-radius:9px;box-shadow:inset 0 -9px 0 #0000000d,0 7px 0 -2px color-mix(in srgb,var(--block-color),#324134 20%)}.slot-name{font-size:13px;letter-spacing:.5px;margin-bottom:5px;font-weight:600}.slot-type{font-size:9px;color:#8b947f}.slot-tags{display:block;margin-top:6px;font-size:8px;color:#9aa38f;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px}.empty-slot{cursor:default;background:transparent;border:1px dashed #cfd6c4;justify-content:center;color:#a2ad95;font-size:10px;gap:7px}.empty-slot:hover{transform:none;background:transparent;border-color:#cfd6c4}.empty-slot>span{font-size:18px;font-weight:200}.dock-foot{display:flex;justify-content:space-between;gap:10px;margin-top:12px;font-size:8px;color:#929c87;align-items:center}.dock-foot b{margin:0 7px;font-weight:400}kbd{display:inline-block;min-width:14px;text-align:center;font-family:var(--font);font-size:8px;font-weight:400;border:1px solid #d0d7c5;border-radius:3px;padding:1px 3px;margin-right:3px;color:#81916f;background:#f7f8f0}#lab-wave{color:var(--accent);border:1px solid #b8c5aa;border-radius:4px;padding:4px 8px;font-size:10px}.inspector{border-left:1px solid var(--line);padding:26px 25px 17px;display:flex;flex-direction:column;background:#f5f4ee;overflow-y:auto;scrollbar-width:thin;scrollbar-color:#d2d7ca transparent}.inventory-summary{padding-bottom:23px;border-bottom:1px solid var(--line)}.inventory-summary>div{display:flex;align-items:baseline;gap:8px;margin-top:9px}.resource-glyph{font-size:22px;color:#aa8d4d}.inventory-summary strong{font-size:32px;font-weight:400;font-variant-numeric:tabular-nums;letter-spacing:-1px}.inventory-summary>div>span:not(.resource-glyph){font-size:10px;color:#9b9e90}.kills{margin-left:auto}.kills b{font-weight:500;color:#66715f;margin-right:3px}#inspector-body{padding:25px 0 20px;min-height:325px}.section-heading{display:flex;justify-content:space-between;align-items:center;font-size:11px;letter-spacing:.5px;margin-bottom:18px}.subtle{font-size:9px;color:#a1a595;font-weight:400;letter-spacing:.8px}.inspect-title{display:flex;align-items:center;gap:18px;margin:22px 0 21px}.inspect-title h2{font-size:20px;font-weight:600;margin:0 0 5px;letter-spacing:1px}.inspect-title p{margin:0;font-size:10px;color:#8c9581}.description{color:#7f8976;font-size:11px;line-height:1.9;margin:0 0 19px}.stat-row{display:flex;justify-content:space-between;padding:7px 0;font-size:10px;color:#8c9483}.stat-row strong{color:#5e7055;font-weight:500;font-variant-numeric:tabular-nums}.inspect-separator{height:1px;background:var(--line);margin:14px 0 18px}.effects-label{font-size:10px;margin-bottom:12px;color:#67765d}.effect-chain{display:flex;gap:6px;flex-wrap:wrap}.effect-tag{padding:5px 7px;background:#e9eee3;color:#6c805e;font-size:9px;border-radius:3px}.effect-tag:before{content:"＋";margin-right:3px}.empty-hint{font-size:10px;color:#a0a78f;line-height:1.8}.inspect-actions{display:flex;gap:8px;margin-top:20px}.inspect-actions button{flex:1;padding:9px 5px;border:1px solid #d6dcca;border-radius:4px;font-size:10px;color:#7c8a6e}.inspect-actions button:hover{background:#e9eee0}.synergy-example{position:relative;display:flex;align-items:center;justify-content:center;gap:13px;padding:19px 0 28px}.synergy-example .block-icon{width:43px;height:44px;font-size:25px}.synergy-example>span{font-size:13px;color:#b1b99f}.inspector-tip-title{font-size:20px;line-height:1.55;font-weight:500;margin:5px 0 13px;letter-spacing:1px}.micro-line{display:flex;gap:9px;font-size:10px;line-height:1.8;color:#939c86;margin-top:13px}.micro-line b{color:#729363;font-size:12px;font-weight:400}.activity{border-top:1px solid var(--line);padding-top:22px;margin-top:auto}.activity .section-heading{margin-bottom:15px}.log-entry{display:flex;gap:10px;margin:0 0 13px;font-size:9px;line-height:1.7;color:#939c87}.log-entry:before{content:"";width:4px;height:4px;flex-shrink:0;background:#9dac8e;border-radius:50%;margin-top:6px}.log-entry:first-child{color:#738266}.side-footer{display:flex;justify-content:space-between;color:#a7ad9c;font-size:8px;margin-top:21px;border-top:1px solid var(--line);padding-top:15px}.hover-tip{position:absolute;pointer-events:none;z-index:5;background:#344332e8;color:#f4f8ed;border-radius:5px;padding:9px 12px;max-width:230px;font-size:10px;line-height:1.7;box-shadow:0 4px 15px #1f30151a}.hover-tip.invalid{background:#8f625bec}.toast{position:absolute;left:50%;bottom:222px;transform:translate(-50%,10px);padding:11px 19px;background:#344332e8;color:#f4f6ed;font-size:11px;border-radius:5px;pointer-events:none;opacity:0;transition:opacity .2s,transform .2s;white-space:nowrap;max-width:95%}.toast.show{opacity:1;transform:translate(-50%,0)}.paused-banner{position:absolute;top:24px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:10px;padding:9px 15px;border:1px solid #bcc9ad;background:#f5f8ecee;border-radius:5px;color:#69875a;font-size:12px;white-space:nowrap}.paused-banner>span{font-size:16px}.paused-banner small{font-size:9px;color:#94a185}.modal{border:1px solid #dce1d2;border-radius:11px;padding:32px;background:#f7f7ef;color:var(--ink);box-shadow:0 25px 100px #28332035;max-height:86dvh;overflow:auto}.modal::backdrop{background:#27342140;backdrop-filter:blur(7px)}.modal[open]{animation:modal-in .22s ease-out}.modal-heading{display:flex;justify-content:space-between;align-items:center}.modal-heading h2{font-size:28px;font-weight:500;letter-spacing:1px;margin:10px 0}.modal-heading h2>span{font-size:13px;vertical-align:super;color:#8b9981;margin-left:6px}.close-btn{font-size:25px;color:#8e9b83;width:33px;height:33px;border-radius:50%}.close-btn:hover{background:#e5eadd}.modal-intro{font-size:11px;color:#8a9680;line-height:1.8;margin:9px 0 22px}.codex-modal{width:min(980px,92vw)}.codex-filters{display:flex;gap:6px;flex-wrap:wrap;border-bottom:1px solid var(--line);padding-bottom:15px;margin-bottom:18px}.codex-filters button{font-size:10px;padding:6px 12px;color:#859476;border-radius:4px}.codex-filters button.active{background:#dfe8d5;color:#526c44}.codex-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:0 22px}.codex-item{text-align:left;padding:18px 0;border-bottom:1px solid var(--line);display:flex;gap:13px;align-items:flex-start;min-height:120px}.codex-item h3{font-size:13px;margin:0 0 5px;font-weight:600}.codex-item small{font-size:8px;color:#98a08b}.codex-item p{font-size:10px;line-height:1.75;color:#829175;margin:6px 0 0}.codex-item .block-icon{width:33px;height:36px;font-size:20px}.codex-item:hover h3{color:var(--accent)}.help-modal{width:min(580px,92vw)}.instructions{list-style:none;counter-reset:steps;padding:0;margin:20px 0}.instructions li{counter-increment:steps;position:relative;padding:6px 0 9px 39px}.instructions li:before{content:"0" counter(steps);position:absolute;left:0;top:6px;font-size:15px;color:#91a080;font-weight:300}.instructions b{font-size:12px;font-weight:600}.instructions p{font-size:11px;line-height:1.9;color:#859379;margin:7px 0 5px}.manual-shortcuts{border-top:1px solid var(--line);display:flex;justify-content:space-between;padding-top:18px;font-size:10px;color:#7c8d70}.smallprint{font-size:9px;color:#9ba48e;margin-top:20px}.reward-modal{width:min(760px,94vw)}.reward-mark{font-size:50px;color:#b29763}#reward-options{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.reward-option{text-align:left;padding:25px 18px;background:#eeeee2;border:1px solid #dce2d0;border-radius:7px;display:flex;flex-direction:column;gap:14px}.reward-option:hover{border-color:#82976a;background:#e7ecd9;transform:translateY(-4px)}.reward-option h3{font-size:17px;font-weight:500;margin:6px 0 0}.reward-option p{font-size:11px;line-height:1.8;color:#7e8b70;margin:0}.reward-option>span:last-child{font-size:10px;margin-top:auto;padding-top:10px;color:#5c7750}.end-modal{width:min(500px,92vw);text-align:center;padding:40px}.end-modal>h2{font-size:35px;font-weight:500;margin:18px 0 13px}.end-modal>p{font-size:12px;color:#8e9b7e}#end-stats{display:flex;justify-content:space-around;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:24px 0;margin:27px 0 20px}#end-stats strong{display:block;font-size:27px;font-weight:400}#end-stats small{font-size:10px;color:#91a17e;display:block;margin-top:5px}#end-contributions{font-size:11px;color:#829571;line-height:1.9;margin-bottom:25px}.end-modal .primary-btn{margin:auto;width:100%}.end-modal .outline-btn{margin-top:12px;width:100%}body[data-mode="ready"] .battle-hud{opacity:.28}body[data-mode="ready"] .supply-dock{opacity:.7;pointer-events:none}body[data-mode="ready"] .field-note{opacity:0}body[data-mode="ready"] .view-tools{bottom:207px}body[data-mode="ready"] .activity{opacity:.7}
@keyframes intro-in{from{opacity:0;transform:translateY(15px)}to{opacity:1;transform:translateY(0)}}@keyframes modal-in{from{opacity:0;transform:translateY(8px) scale(.985)}to{opacity:1;transform:translateY(0) scale(1)}}
@media(min-width:1600px){.workspace{grid-template-columns:minmax(0,1fr) 330px}.inspector{padding:30px}.topbar{padding:0 35px}.supply-slot{height:102px}.supply-dock{padding:20px 38px 18px}.field-note,.view-tools{bottom:225px}.intro{top:22%}}
@media(max-height:790px) and (min-width:1000px){.topbar{height:70px}.workspace{height:calc(100dvh - 70px)}.inspector{padding-top:19px}.inventory-summary{padding-bottom:15px}#inspector-body{padding-top:18px;min-height:285px}.inspect-title{margin:15px 0}.activity{padding-top:15px}.log-entry:nth-child(n+4){display:none}.intro{top:17%}.intro h1{font-size:45px;margin:17px 0 10px}.intro p{margin-bottom:18px}.intro-foot{margin-top:0}.supply-slot{height:80px}.supply-dock{padding-top:15px}.field-note,.view-tools{bottom:189px}.side-footer{margin-top:13px}.battle-hud{top:19px}}
@media(max-width:1100px){.workspace{grid-template-columns:minmax(0,1fr) 245px}.inspector{padding:23px 18px 16px}.topbar{gap:16px;padding:0 22px}.brand{min-width:215px}.run-status{font-size:9px}.toolbar{gap:16px}.supply-dock{padding-left:20px;padding-right:20px}.supply-slot{padding:10px;gap:9px}.supply-slot .block-icon{width:32px;height:36px;font-size:20px}.slot-name{font-size:11px}.slot-tags{max-width:104px}.dock-foot #placement-mode{display:none}.supply-head small{display:none}.intro{width:310px;left:5%}.intro h1{font-size:44px}.core-readout{width:164px}.battle-hud{left:24px;right:24px}}
@media(max-width:850px){.topbar{height:69px;padding:0 18px}.brand{min-width:0;flex:1}.brand>span{font-size:20px}.brand svg{width:27px}.brand small{font-size:7px;letter-spacing:2px}.run-status{display:none}.toolbar{gap:16px}.workspace{height:calc(100dvh - 69px);grid-template-columns:1fr}.inspector{display:none}.intro{top:17%;left:7%}.intro h1{font-size:50px}.core-readout{width:180px}.supply-slot{height:88px}.supply-slot .block-icon{width:40px;height:43px;font-size:25px}.slot-name{font-size:13px}.supply-head small{display:inline}.field-note,.view-tools{bottom:196px}.codex-grid{grid-template-columns:repeat(2,1fr)}.modal{padding:25px}}
@media(max-width:520px){.topbar{padding:0 14px;gap:10px;height:65px}.brand>span{font-size:18px;letter-spacing:2px}.brand small{font-size:6px;letter-spacing:1.7px}.brand svg{width:24px;height:29px}.brand{gap:8px}.toolbar{gap:13px}.toolbar .text-btn{font-size:10px}.toolbar .text-btn>span{display:none}#sound-btn,#help-btn{display:none}.outline-btn{font-size:10px;padding:8px 10px}.workspace{height:calc(100dvh - 65px)}.battle-hud{top:20px;left:20px;right:20px}.wave-readout strong{font-size:32px}.eyebrow{font-size:8px;letter-spacing:1.2px}.core-readout{width:143px}.core-readout>div:first-child{font-size:9px}.core-readout strong{font-size:12px}.intro{top:20%;left:7%;width:260px}.intro h1{font-size:43px}.intro p{font-size:12px}.intro-kicker{font-size:8px}.intro-foot{font-size:8px}.primary-btn{padding:14px 18px;min-width:185px}.supply-dock{padding:15px 12px 11px}.supply-slots{gap:6px}.supply-slot{height:100px;flex-direction:column;gap:8px;padding:10px 5px;justify-content:center}.supply-slot .block-icon{width:31px;height:33px;font-size:20px}.slot-name{font-size:10px;margin:0}.slot-type,.slot-tags{display:none}.slot-key{font-size:8px;right:6px;top:5px}.supply-head{font-size:10px;margin-bottom:10px}.supply-head small{display:none}.dock-foot{font-size:8px;margin-top:10px}.dock-foot>span:first-child{font-size:0}.dock-foot kbd{font-size:8px}.dock-foot b{margin:0 3px}.field-note{left:15px;bottom:199px;font-size:9px;max-width:180px}.view-tools{right:11px;bottom:198px;gap:0}.view-tools button{min-width:25px;font-size:16px}.view-tools>span{display:none}.view-tools i{margin:0 4px}.toast{bottom:236px;font-size:10px;white-space:normal;text-align:center;min-width:220px}.paused-banner{top:100px;font-size:11px}.paused-banner small{font-size:8px}.modal{padding:22px 18px}.modal-heading h2{font-size:23px}.codex-grid{grid-template-columns:1fr}.codex-item{min-height:95px}.codex-filters{gap:3px}.codex-filters button{padding:6px 9px}.instructions li{padding-left:29px}#reward-options{grid-template-columns:1fr;gap:9px}.reward-option{display:grid;grid-template-columns:48px 1fr;padding:16px;gap:8px 15px}.reward-option .block-icon{grid-row:span 3;width:43px;height:45px;font-size:25px}.reward-option h3{font-size:15px;margin:0}.reward-option p{font-size:10px}.reward-option>span:last-child{padding:0}.end-modal{padding:32px 25px}.end-modal>h2{font-size:29px}.manual-shortcuts{flex-wrap:wrap;gap:12px}}
.view-tools button[aria-pressed="true"]{background:#cfdcbd;color:#4a6f3b}.mobile-inspector-toggle,.mobile-inspector-close{display:none}
@media(max-width:850px){.mobile-inspector-toggle{display:block;position:absolute;top:120px;right:20px;padding:9px 12px;background:#f5f7ecdc;border:1px solid #c9d5bd;border-radius:4px;font-size:10px;color:#6b855b}.inspect-open .inspector{display:flex;position:fixed;right:12px;top:90px;bottom:190px;width:270px;z-index:12;border:1px solid #d6decb;border-radius:8px;box-shadow:0 10px 40px #394e2933;padding-top:25px}.inspect-open .inspector .activity,.inspect-open .inspector .side-footer,.inspect-open .inspector .inventory-summary{display:none}.mobile-inspector-close{display:block;position:absolute;top:6px;right:10px;font-size:22px;color:#91a183}.inspect-open #inspector-body{padding:12px 0;min-height:0}.mobile-inspector-toggle[hidden]{display:none}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}

/* v0.2: deliberate construction, unlimited stash, compact whole-tower inspector. */
.phase-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.phase-actions strong{display:block;font-size:13px;color:#536e4c;font-weight:600}.phase-actions small{display:block;margin-top:5px;font-size:10px;color:#8b967e}.phase-buttons{display:flex;gap:7px;align-items:center}.phase-buttons .primary-btn{padding:12px 16px;min-width:165px;justify-content:center;letter-spacing:0;font-size:12px}.phase-buttons .outline-btn{padding:10px;font-size:11px}.supply-slots{display:flex;overflow-x:auto;padding-bottom:6px;scrollbar-width:thin;scrollbar-color:#bdc9af transparent;gap:10px}.supply-slot{min-width:186px;flex:0 0 186px;height:83px}.supply-slot:disabled{opacity:.6;cursor:default}.supply-slot:disabled:hover{transform:none}.empty-slot{flex:1}.supply-dock{padding-top:15px}.field-note,.view-tools{bottom:218px}.weapon-form{background:#e8eddf;border-left:3px solid #7c9665;color:#59734d;padding:11px 12px;font-size:11px;line-height:1.85;margin:12px 0 16px}.module-stack{display:flex;flex-direction:column;gap:4px}.module-stack>div{display:flex;justify-content:space-between;align-items:center;background:#eeeeE4;border-radius:4px}.module-stack button{display:flex;align-items:center;gap:9px;padding:6px 8px;font-size:10px}.module-stack [data-module]{flex:1;text-align:left}.module-stack [data-uninstall]{font-size:18px;color:#8b927f}.module-stack .block-icon{width:21px;height:21px;font-size:14px;border-radius:3px;box-shadow:none;transform:none}.starter-options{display:flex;gap:6px;margin:0 0 18px}.starter-options button{display:flex;flex-direction:column;gap:5px;padding:10px 12px;min-width:90px;background:#f6f7edb3;border:1px solid #c9d0bf;border-radius:4px;text-align:left}.starter-options b{font-size:12px;font-weight:500}.starter-options small{font-size:9px;color:#86947a}.starter-options button.selected{border-color:#6c8b5b;background:#e5ebda;box-shadow:inset 0 -2px #779564}.intro{top:12%}.intro h1{margin-top:15px}.intro p{margin-bottom:15px}.intro-foot{margin-top:0}.intro .lab-link{padding:13px 0}#reward-options{grid-template-columns:repeat(4,1fr);gap:10px}.reward-option{padding:20px 14px}.reward-option h3{font-size:16px}.reward-option.picked{border-color:#789163;background:#dce6cc;opacity:.6}.reward-option.picked:hover{transform:none}.reward-modal{width:min(960px,95vw)}body[data-mode="ready"] .phase-actions{opacity:.5}button:disabled{cursor:default}
@media(max-width:1100px){.phase-actions strong{font-size:11px}.phase-buttons .primary-btn{min-width:135px;padding:12px}.phase-buttons .outline-btn{padding:10px 7px}.phase-actions{gap:7px}.intro h1{font-size:42px}.starter-options button{min-width:82px;padding:10px}}
@media(max-width:520px){.phase-actions{flex-wrap:wrap;gap:10px;margin-bottom:10px}.phase-actions>div:first-child{display:flex;align-items:center;justify-content:space-between;width:100%}.phase-actions small{margin:0}.phase-buttons{width:100%}.phase-buttons .primary-btn{flex:1;min-width:120px}.phase-buttons .outline-btn{padding:10px 13px}.supply-slot{height:78px;min-width:106px;flex-basis:106px}.supply-dock{padding-top:12px}.field-note{display:none}.view-tools{bottom:242px}.intro{top:12%;width:290px}.intro h1{font-size:39px;margin-top:13px}.intro p{font-size:11px}.starter-options button{min-width:81px}.intro .primary-btn{min-width:185px}.intro-foot{font-size:8px}.intro .lab-link{padding:10px 0}.toast{bottom:278px}.supply-slot .block-icon{width:27px;height:28px;font-size:18px}.inspect-open .inspector{bottom:248px}.reward-option{padding:14px 12px}#reward-options{grid-template-columns:1fr}.module-stack button{padding:8px}.battle-hud{top:14px}.intro-foot{display:none}}
@media(max-height:780px) and (min-width:521px){.intro{top:9%;}.intro h1{font-size:39px;margin:12px 0}.intro p{font-size:11px;margin-bottom:12px}.starter-options button{padding:8px 10px}.intro-foot{display:none}.intro .lab-link{padding:10px 0}.field-note,.view-tools{bottom:212px}}

/* Long tower recipes must scroll, never overlap the battle log. */
.inspector>.inventory-summary,.inspector>#inspector-body,.inspector>.activity,.inspector>.side-footer{flex-shrink:0}

/* v0.3: permanent run information, without taking construction space away. */
body[data-mode="ready"] .battle-hud{visibility:hidden}.family-tag{color:#779568!important;font-size:9px!important}.family-tag:empty{display:none}
.journey-info{position:absolute;top:132px;left:31px;max-width:470px;pointer-events:none}.journey-info>div:first-child{display:flex;gap:14px;align-items:center;font-size:13px;font-weight:600;color:#5a7356}.journey-info small{font-size:9px;font-weight:400;color:#8a9680}.journey-info p{font-size:10px;color:#7f8a76;line-height:1.7;margin:7px 0 10px;max-width:400px}#journey-track{display:flex;gap:8px}#journey-track>span{display:flex;align-items:center;gap:5px;font-size:9px;color:#9ba190;border-bottom:2px solid #d0d7c6;padding:0 0 5px}#journey-track b{font-weight:400;font-size:8px}#journey-track .current{border-color:#788f68;color:#537446}#journey-track .done{border-color:#a1b48c;color:#8b9d78}body[data-mode="ready"] .journey-info{display:none}
.run-kit{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 12px;padding-top:8px;border-top:1px solid #d9dfd0}.relic-area{min-width:0;flex:1}#relic-strip{display:flex;gap:8px;align-items:center;overflow-x:auto;min-height:26px}#relic-strip button{padding:2px 1px 4px;flex-shrink:0}#relic-strip .block-icon{width:23px;height:24px;font-size:15px;border-radius:3px;box-shadow:none}.relic-empty{font-size:9px;color:#8f9b82;white-space:nowrap}.relic-area>small{font-size:8px;display:block;margin-top:5px;color:#899780}#active-btn{position:relative;display:flex;gap:8px;align-items:center;white-space:nowrap;padding:10px 12px;border:1px solid #a3b9a1;border-radius:5px;overflow:hidden;background:linear-gradient(90deg,#dae8d4 var(--charge),#eef2e8 var(--charge));font-size:11px}#active-btn>span{font-size:20px}#active-btn small{font-size:9px}#active-btn kbd{margin:0}#active-btn:disabled{opacity:.7}#active-btn b{font-weight:500}.field-note,.view-tools{bottom:287px}.save-state{font-size:8px;color:#87977c}body[data-mode="ready"] .run-kit,body[data-mode="ready"] .save-state{visibility:hidden}
.unlock-starters{display:flex;gap:8px;margin:-8px 0 16px}.unlock-starters button{font-size:10px;border-bottom:1px solid #c9d4bb;text-align:left;padding:6px 0}.unlock-starters small{display:block;color:#8c987e;font-size:8px;margin-top:4px}.unlock-starters button.selected{color:#477238;border-bottom:2px solid #6d8e5a}.save-note{font-size:9px!important;line-height:1.6!important;color:#8b9680!important;margin:7px 0!important}#resume-btn{margin-bottom:8px;background:#a1784c}#resume-btn:not([hidden])+#start-btn{background:transparent;border:1px solid #b7c4a9;color:#637b54;padding:9px 15px;min-width:210px}.intro{top:8%;width:365px}.intro h1{font-size:48px;margin:12px 0 8px}.intro p{margin:10px 0 20px}.intro .lab-link{padding:9px 0}
.journey-modal{width:min(960px,95vw)}#event-options{display:grid;grid-template-columns:repeat(auto-fit,minmax(175px,1fr));gap:12px;margin:20px 0}.route-card{display:flex;align-items:flex-start;flex-direction:column;text-align:left;gap:10px;border:1px solid #cbd4c1;background:#f7f8f0;padding:23px 18px;border-radius:7px;min-height:225px}.route-card:hover:not(:disabled){background:#edf2e4;border-color:#7f9a6b}.route-card>span:not(.block-icon){font-size:32px;color:#729360}.route-card h3{font-size:16px;margin:12px 0 0}.route-card p{font-size:11px;line-height:1.9;color:#7d8b72;margin:0;flex:1}.route-card small{font-size:10px;color:#668652;margin-top:8px}.route-card.bought{opacity:.45;background:#dfe8d5}.route-card.expansion{background:#e7eddc}#event-leave{display:block;margin-left:auto}#new-run-dialog>p{line-height:1.9;color:#859179;margin:16px 0 24px}
@media(max-height:800px) and (min-width:521px){.intro{top:5%}.intro h1{font-size:38px}.intro p{margin:6px 0 12px}.starter-options{margin-bottom:13px}.unlock-starters{margin-bottom:10px}.journey-info{top:115px}.journey-info p{max-width:300px}.field-note,.view-tools{bottom:275px}}
@media(max-width:1100px){#journey-track b{display:none}.journey-info{left:24px;max-width:310px}.journey-info p{max-width:310px}.relic-empty{max-width:170px;overflow:hidden;text-overflow:ellipsis}.field-note{display:none}}
@media(max-width:520px){.journey-info{left:20px;right:20px;top:105px;max-width:none}.journey-info>div:first-child{font-size:11px}.journey-info p{font-size:9px;margin:5px 0}.journey-info small{font-size:8px}#journey-track{position:absolute;right:0;top:0;gap:6px}#journey-track>span{padding:0 3px 3px}.journey-info>div:first-child{gap:8px}.run-kit{gap:6px;margin-bottom:8px;padding-top:7px}#active-btn{padding:7px 8px;gap:6px;font-size:10px}#active-btn kbd{display:none}#active-btn small{font-size:8px}.relic-empty{max-width:135px;font-size:8px}.relic-area>small{font-size:7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#relic-strip{gap:6px}.view-tools{bottom:306px}.toast{bottom:336px}.inspect-open .inspector{bottom:312px}.intro{width:285px;top:5%}.intro h1{font-size:35px;margin:8px 0}.intro p{font-size:10px;margin:7px 0 12px}.intro-kicker{display:none}.intro .primary-btn{padding:12px 16px}.starter-options button{padding:8px;min-width:80px}.starter-options{margin-bottom:14px}.unlock-starters{margin-bottom:12px}.save-note{max-width:270px;font-size:8px!important}.save-state{display:none}.supply-dock{padding-bottom:9px}#event-options{grid-template-columns:1fr}.route-card{min-height:150px;padding:17px}.route-card .block-icon{width:42px;height:44px;font-size:27px}.route-card h3{margin:0}.route-card p{font-size:11px}.route-card>span:not(.block-icon){font-size:26px}}

/* v0.4 survival: calm HUD, visible XP and a continuous boss clock. */
.wave-readout .xp-track{display:block;width:185px;height:5px;background:#d4ded3;margin:9px 0 4px;overflow:hidden;border-radius:4px}
.xp-track #xp-fill{display:block;height:100%;width:0;background:#4aada0;transition:width .18s}
#xp-text{font-variant-numeric:tabular-nums;letter-spacing:.5px;color:#60938c}
.journey-info{top:170px}.journey-info p{max-width:390px}
.boss-health{margin-top:9px;max-width:260px}.boss-health>div{height:4px;margin-top:4px;background:#ddcdc7;border-radius:4px;overflow:hidden}.boss-health #boss-fill{display:block;height:100%;background:#bc6e73}.boss-health #boss-name{color:#ae6670}
#reward-options{grid-template-columns:repeat(3,minmax(0,1fr))}.reward-option h3{margin-top:20px}
@media(max-height:800px) and (min-width:521px){.journey-info{top:155px}}
@media(max-width:1100px){#journey-track b{display:inline}.journey-info p{max-width:310px}}
@media(max-width:520px){.wave-readout .xp-track{width:153px;margin:6px 0 2px}.wave-readout small{font-size:8px}.journey-info{top:143px}.journey-info p{max-width:330px}#journey-track{position:static;margin-top:6px;gap:12px}#journey-track>span{padding:0 0 3px}#reward-options{grid-template-columns:1fr}.reward-option{min-height:0;display:grid;grid-template-columns:44px 1fr;column-gap:15px;text-align:left}.reward-option>.block-icon{grid-column:1;grid-row:1/5;width:40px;height:42px;font-size:25px;margin-top:3px}.reward-option h3{grid-column:2;margin:0 0 5px}.reward-option p,.reward-option small,.reward-option>span:not(.block-icon){grid-column:2;margin:0;font-size:10px}.reward-option>span:not(.block-icon){margin-top:6px}.reward-modal{padding:22px}.reward-modal h2{font-size:22px}.boss-health{max-width:220px}}

.reward-option p{color:#66745e}.reward-option h3{color:#384c39}.reward-option .family-tag{color:#75876a}#reward-count{color:#66795d}

/* Functional pictograms: dark readable silhouettes, softly tinted ceramic plates. */
.block-icon{background:color-mix(in srgb,var(--block-color),#fffaf0 86%);color:#415448;--icon-ink:#415448;--icon-accent:var(--block-color);border-color:color-mix(in srgb,var(--block-color),#fffaf0 58%);box-shadow:inset 0 -4px 0 #243b2310,0 3px 0 -1px color-mix(in srgb,var(--block-color),#fffaf0 45%);transform:rotate(0deg);overflow:hidden}
.block-icon svg{display:block;width:80%;height:80%;flex:none}.block-icon.large svg{width:78%;height:78%}.block-icon.large{box-shadow:inset 0 -6px 0 #243b2310,0 5px 0 -1px color-mix(in srgb,var(--block-color),#fffaf0 40%)}
.block-icon:before{height:2px;left:6px;right:6px;top:4px;background:#ffffffb0}
.codex-item:hover .block-icon,.reward-option:hover .block-icon{transform:translateY(-2px);transition:transform .16s}
#active-btn .block-icon{width:30px;height:30px;box-shadow:none;border-radius:5px}#active-btn .block-icon svg{width:83%;height:83%}
.fx-toggle{color:#537967;font-size:10px}.toolbar{gap:17px}.codex-item small{color:#6e8066}
@media(max-width:520px){.toolbar{gap:10px}#fx-btn{font-size:9px;padding:8px 0}#active-btn .block-icon{width:25px;height:25px}.reward-option p{font-size:11px;line-height:1.7}.reward-option h3{font-size:15px}.block-icon svg{width:84%;height:84%}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.001ms!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}

/* Shared mouse / keyboard descriptions, including above modal dialogs. */
.item-tooltip{position:fixed;inset:auto;margin:0;box-sizing:border-box;width:min(320px,calc(100vw - 24px));max-height:calc(100dvh - 24px);overflow:hidden;padding:16px;z-index:1000;pointer-events:none;border:1px solid #ced7c5;border-left:3px solid var(--item-color,#729568);border-radius:8px;background:#fffdf5;color:#344b3c;box-shadow:0 12px 34px #263d282b;font-family:var(--font);text-align:left}
.item-tooltip[hidden]{display:none!important}.item-tooltip::backdrop{background:transparent;pointer-events:none}
.item-tooltip-heading{display:flex;gap:12px;align-items:center}.item-tooltip-heading strong{display:block;font-size:16px;font-weight:600;letter-spacing:.4px;line-height:1.4}.item-tooltip-heading small{display:block;font-size:10px;color:#78866f;line-height:1.6;margin-top:4px}.item-tooltip-heading .block-icon{width:39px;height:40px;box-shadow:none}
.item-tooltip p{font-size:12px;line-height:1.85;margin:14px 0 12px;color:#465d4a}.item-tooltip footer{font-size:10px;line-height:1.7;color:#7b8972;border-top:1px solid #e1e6d9;padding-top:9px}

/* Hold to pick up; the warehouse is a non-destructive return target. */
#game-canvas,[data-module]{touch-action:none;-webkit-touch-callout:none;user-select:none}.module-dragging,.module-dragging *{cursor:grabbing!important;user-select:none}
.module-drag-chip{position:fixed;z-index:1002;pointer-events:none;box-sizing:border-box;display:flex;align-items:center;gap:12px;width:min(260px,calc(100vw - 20px));padding:13px 15px;background:#fffdf5;border:1px solid #85a486;border-radius:8px;box-shadow:0 10px 28px #243a302b;color:#365942;font-family:var(--font);overflow:hidden}.module-drag-chip[hidden],.module-return-target[hidden]{display:none!important}.module-drag-chip strong{font-size:14px;display:block}.module-drag-caption{font-size:11px;line-height:1.65;display:block;margin-top:5px}.module-drag-chip .block-icon{width:33px;height:35px;box-shadow:none}.module-drag-chip.invalid{border-color:#bc8977;color:#895b4d}.module-drag-chip.is-pending{width:195px;padding:10px 13px}.module-drag-chip.is-pending:after{content:"";position:absolute;left:0;bottom:0;height:3px;background:#719976;animation:module-hold .36s linear forwards}@keyframes module-hold{from{width:0}to{width:100%}}
.module-return-target{position:fixed;z-index:1001;pointer-events:none;box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;border:2px dashed #8aa780;border-radius:7px;background:#f2f6e9f5;color:#506f4c;font-family:var(--font)}.module-return-target strong{font-size:14px;font-weight:600}.module-return-target span{font-size:11px}.module-return-target.is-over{border-style:solid;border-color:#567f57;background:#deedd9;color:#365d3b}

/* Quality uses trim, leaving functional icon/category colors intact. */
.block-icon[data-rarity]{box-shadow:inset 0 -3px 0 var(--quality);position:relative}
.quality-badge{color:var(--quality);font-size:10px;font-weight:700;letter-spacing:.02em;display:inline-block}
.reward-option>.quality-badge{display:block;margin:12px 0 0}
@media(max-width:800px){.phase-buttons{flex-wrap:wrap;justify-content:flex-end}}

.codex-search{display:block;width:100%;padding:12px 14px;margin:18px 0 12px;border:1px solid #cbd3c3;border-radius:4px;background:#fafaf4;color:#3a5140;font:inherit}.codex-search:focus{outline:2px solid #6f9073;outline-offset:2px}

/* Moving bastion: supporting information stays away from the build dock. */
#travel-hud{position:absolute;right:18px;top:110px;width:142px;pointer-events:none;color:#526753;background:#f4f4e8dd;border:1px solid #c9d1bd;border-radius:10px;padding:10px;backdrop-filter:blur(5px)}
#travel-hud[hidden],#move-pad[hidden]{display:none}#world-map{display:block;width:100%;height:104px}#travel-hud strong{display:block;font-size:11px;line-height:1.6;margin-top:5px}#travel-hud small{font-size:10px;line-height:1.5;opacity:.8}
.core-modal{max-width:760px}.core-items{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0 24px}.core-items button{display:flex;align-items:center;gap:10px;text-align:left;border:1px solid #c5cebb;background:#f7f6ed;padding:12px;border-radius:8px;cursor:pointer}.core-items button:disabled{cursor:default}.core-items button>span:nth-child(2){flex:1;min-width:0}.core-items strong{display:block;font-size:13px}.core-items small{display:block;font-size:11px;line-height:1.5;margin-top:5px;color:#647262}.core-items b{font-size:11px;color:#428a75}.core-items .block-icon{flex-shrink:0}.core-modal h3{font-size:13px;margin-top:16px}
#move-pad{display:none;position:absolute;bottom:160px;left:18px;width:116px;height:116px;border-radius:50%;place-items:center;background:#10241c55;border:2px solid #a8b79f88;touch-action:none;user-select:none;-webkit-user-select:none}#move-pad .stick-knob{width:48px;height:48px;border-radius:50%;background:#f0f1dfdd;border:1px solid #a8b79f;pointer-events:none}
@media(pointer:coarse){#move-pad{display:grid}}@media(max-width:700px){#travel-hud{right:9px;top:98px;width:94px;padding:6px}#world-map{height:64px}#travel-hud small{display:none}#travel-hud strong{font-size:9px}.core-items{grid-template-columns:1fr}.phase-buttons{flex-wrap:wrap;gap:5px}.phase-buttons #core-btn{font-size:11px;padding:7px}}

/* Expedition opening: guarantees stay readable without another modal. */
.opening-note{font-size:11px!important;line-height:1.6!important;margin:8px auto 10px!important;max-width:330px;color:#617268!important}

.active-control{display:flex;flex-direction:column;align-items:flex-end;gap:4px;flex-shrink:0}.auto-active-toggle{padding:3px 6px;font-size:10px;color:inherit;border:1px solid #8fa98c;border-radius:4px;background:transparent}.auto-active-toggle[aria-pressed=true]{background:#405d47;color:#e8f1d9}.auto-active-toggle:focus-visible{outline:2px solid #d9bd74;outline-offset:2px}
