:root{--bg:#0d141a;--pane:#131e26;--pane2:#17252c;--line:#2a3c46;--text:#e8efe9;--muted:#9aabb0;--accent:#a9d2b7;--amber:#e0b76f;--red:#f08472;--cyan:#7ec7cf}*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:-apple-system,BlinkMacSystemFont,"Hiragino Kaku Gothic ProN","Yu Gothic",Meiryo,sans-serif;background:var(--bg);color:var(--text);font-size:14px}button,select{font:inherit}button{cursor:pointer}button:disabled{opacity:.42;cursor:not-allowed}.topbar{height:82px;display:flex;align-items:center;gap:30px;padding:0 30px;border-bottom:1px solid var(--line);background:#101a21}.brand{display:flex;align-items:center;gap:13px;min-width:247px}.brand-mark{font-size:35px;color:var(--accent);line-height:1}.brand strong{font-size:14px;letter-spacing:.12em;display:block}.brand small{display:block;color:var(--muted);font-size:10px;letter-spacing:.18em;margin-top:6px}.lab-tag{color:var(--accent);letter-spacing:0;margin-left:3px}.top-metrics{display:flex;flex:1;gap:38px;justify-content:flex-end}.top-metrics>div{min-width:67px}.top-metrics span,.top-metrics strong{display:block}.top-metrics span{color:var(--muted);font-size:11px;margin-bottom:6px}.top-metrics strong{font-size:17px;font-variant-numeric:tabular-nums}.primary{background:#a9d2b7;color:#0b2224;border:1px solid #b7ddc5;padding:12px 16px;border-radius:4px;font-weight:800;white-space:nowrap}.primary:hover{background:#c8ebd4}.shortcut{opacity:.62;font-size:11px;margin-left:8px}.page{display:grid;grid-template-columns:minmax(0,1fr) 362px;max-width:1800px;margin:auto;min-height:calc(100dvh - 132px)}.battle-zone{padding:26px 27px 18px;min-width:0;display:flex;flex-direction:column}.battle-head,.battle-foot{display:flex;justify-content:space-between;align-items:center;gap:12px}.battle-head{padding:0 0 15px;color:var(--muted)}.chapter{display:flex;align-items:center;gap:13px;flex-wrap:wrap}.chapter b{color:var(--text);letter-spacing:.14em;font-size:11px}.chapter>span:last-child{font-size:12px}.pulse{width:7px;height:7px;background:var(--accent);box-shadow:0 0 0 4px #a9d2b71c;border-radius:50%}.field-time{white-space:nowrap;font-size:12px}.field-time b{color:var(--text);font-size:14px}.dot-sep{padding:0 9px;color:#547079}#field-wrap{position:relative;flex-shrink:0;overflow:hidden;border:1px solid #38515a;background:#253135;box-shadow:0 0 0 1px #102027 inset}#field{display:block;width:100%;height:auto;aspect-ratio:900 / 560;touch-action:manipulation;cursor:crosshair}.world-label{position:absolute;pointer-events:none;background:#0c191ed9;color:#deede7;padding:6px 10px;border:1px solid #48605e;font-size:11px;box-shadow:0 3px 12px #0003}.label-gate{left:52.2%;top:44%;transform:translate(-50%,-130%)}.label-gate b{color:#e4bc73;margin-left:7px}.label-unit{left:45.6%;top:60%;transform:translate(-50%,18px);white-space:nowrap}.label-unit span{color:#8fc2ce}.field-tip{position:absolute;bottom:14px;left:15px;background:#0e1d23e5;border:1px solid #344e52;padding:9px 13px;color:#d5e4df;font-size:12px;pointer-events:none}.pause-stamp{position:absolute;inset:0;background:#0c1a21b8;display:grid;place-items:center;color:#e6f3ea;letter-spacing:.2em;font-size:27px;font-weight:bold}.pause-stamp[hidden]{display:none}.battle-foot{padding:12px 1px 17px;font-size:12px}.battle-foot p{margin:0;color:#c7d4d0}.legend{display:flex;gap:12px;white-space:nowrap;flex-wrap:wrap;color:#9cafb4;font-size:11px}.legend span{display:inline-flex;align-items:center;gap:5px}.swatch{display:inline-block;width:9px;height:9px}.swatch.friendly{background:#9bccb5}.swatch.hostile{background:#d98271}.swatch.detection{border:1px solid #67b8bd;border-radius:50%}.swatch.weapon{border:1px solid #e4c47f;border-radius:50%}.event-line{border-top:1px solid var(--line);display:flex;align-items:baseline;gap:17px;padding-top:14px}.event-line span{color:var(--muted);font-size:11px;white-space:nowrap}.event-line p{margin:0;font-size:12px;color:#c4d6d2;line-height:1.5}.control-zone{border-left:1px solid var(--line);padding:28px 23px 20px;background:#111c23}.section-heading{display:flex;justify-content:space-between;align-items:end;gap:9px}.section-heading small,.hangar-head small{display:block;color:#88b0b1;font-size:10px;letter-spacing:.17em;margin-bottom:8px}.section-heading h1{font-size:20px;margin:0;line-height:1.3}.capacity{font-size:12px;color:var(--amber);background:#4e47332e;padding:6px 8px;white-space:nowrap}.intro{font-size:12px;color:var(--muted);line-height:1.7;margin:13px 0 21px}.commands{display:grid;gap:10px}.command-row{border:1px solid #344650;background:#19272f;padding:14px;transition:border-color .15s}.command-row.running{border-color:#7abf9a;background:#1c332d}.command-row.invalid-row{border-color:#b57866}.command-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;font-size:12px;color:#e6edf0}.command-head>span:first-child{font-weight:bold;letter-spacing:.1em}.command-head b{font-size:10px;color:#e4c289;font-weight:500;background:#66563936;padding:3px 5px;letter-spacing:0;margin-left:6px}.run-status{font-size:11px;color:#a1b2b6}.running .run-status{color:#9bd7b7;font-weight:bold}.command-row label{display:flex;align-items:center;justify-content:space-between;gap:15px;margin:8px 0;color:#b7c7c9;font-size:12px}.command-row select{background:#0c181f;color:#ecf4f2;border:1px solid #364d59;border-radius:3px;padding:9px 30px 9px 9px;min-width:0;width:72%;outline:none}.command-row select:focus{border-color:var(--accent)}.invalid{font-size:11px;color:#f1a38f;margin-top:11px;line-height:1.45}.explanation{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:17px 0;margin:21px 0}.explanation-title{color:#b0d5ce;font-size:12px;font-weight:bold}.explanation p{color:#9fb0b6;line-height:1.7;font-size:12px;margin:8px 0 13px}.explanation b{color:#d7e6df}.device-readout{display:flex;gap:10px}.device-readout span{background:#23323a;padding:9px 12px;color:#9fb5b7;font-size:11px;flex:1}.device-readout b{color:#e2f1e8;margin-left:5px;font-size:12px}.stats-block h2{font-size:13px;letter-spacing:.03em;margin:0 0 10px}.stats-block h2 small{font-size:11px;font-weight:400;color:var(--muted);margin-left:6px}.stat-rows{display:grid;grid-template-columns:1fr 1fr;gap:0 17px}.stat-rows>div{padding:10px 0;border-bottom:1px solid #293b43;display:flex;align-items:center;justify-content:space-between;gap:6px}.stat-rows span{color:#a2b3b9;font-size:11px}.stat-rows b{font-size:12px;color:#e5eee9}.quick-help{color:#7e969c;font-size:11px;line-height:2;margin-top:24px}.keycap{display:inline-block;padding:0 5px;border:1px solid #47616b;color:#b5c6c7;margin-right:3px}footer{display:flex;justify-content:space-between;gap:12px;padding:14px 28px;color:#748a91;border-top:1px solid #22333b;font-size:11px;line-height:1.5}.overlay{position:fixed;inset:0;background:#050c10dc;z-index:50;display:flex;align-items:center;justify-content:center;padding:20px}.overlay[hidden]{display:none}.hangar{width:min(990px,100%);max-height:min(830px,92dvh);background:#121e25;border:1px solid #4b6468;box-shadow:0 30px 100px #000a;display:flex;flex-direction:column}.hangar-head{display:flex;justify-content:space-between;align-items:center;gap:12px;border-bottom:1px solid var(--line);padding:23px 26px}.hangar-head h2{font-size:24px;margin:0}.hangar-head h2 span{font-size:14px;color:#a6cdb9;font-weight:normal}.hangar-tabs{display:flex;padding:0 26px;gap:22px;border-bottom:1px solid #2e424b}.hangar-tabs button{border:0;background:transparent;padding:16px 0;color:#92a7ad;font-weight:bold;border-bottom:2px solid transparent}.hangar-tabs button.on{color:#dceee3;border-bottom-color:#accfb9}.hangar-body{padding:22px 26px 35px;overflow:auto;min-height:290px;flex:1}.hangar-foot{border-top:1px solid var(--line);display:flex;gap:14px;justify-content:space-between;padding:15px 26px;color:#92abb0;font-size:11px}.hangar-foot span:first-child{color:#d3e8d6}.hangar h3{font-size:15px;margin:0 0 12px}.hangar p{font-size:12px;line-height:1.7;color:#a8b8bb}.parts-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px 24px}.parts-group{border:1px solid #344952;padding:15px 15px 8px}.part-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 0;border-top:1px solid #2b3f48}.part-row strong{display:block;font-size:13px}.part-row small{display:block;color:#9ab0b4;font-size:11px;margin-top:5px;line-height:1.4}.part-row button,.facility-row button,.research-row button,.tab-story button,.save-home button{padding:8px 12px;border:1px solid #6d918d;border-radius:2px;background:transparent;color:#c5e3d2;white-space:nowrap;font-weight:bold;font-size:12px}.part-row button.equipped{background:#25463a;color:#a9d2b7;border-color:#4b7e66;cursor:default}.part-row button:hover:not(:disabled),.facility-row button:hover:not(:disabled),.research-row button:hover:not(:disabled){background:#2e4f44}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:25px}.facility-row,.research-row{display:flex;justify-content:space-between;align-items:center;gap:16px;border-bottom:1px solid #31434d;padding:15px 0}.facility-row strong,.research-row strong{display:block}.facility-row small,.research-row small{display:block;margin-top:6px;font-size:11px;color:#97aeb2;line-height:1.55}.home-map{border:1px solid #3b5257;padding:16px;background:#17262d}.home-map button{margin-top:12px}.home-map p{margin-bottom:0}.research-list{border-top:1px solid #31434d}.tab-story{margin-top:24px;border-top:1px solid #345053;padding-top:20px}.tab-story h3{margin-bottom:7px}.story-ready{color:#d1b97b!important}.defeat-box{background:#152127;border:1px solid #986b61;width:min(520px,100%);padding:32px;text-align:center}.red-eyebrow{color:#ec9687;font-size:12px;letter-spacing:.2em}.defeat-box h2{font-size:25px}.defeat-box p{font-size:13px;color:#b1c4c4;line-height:1.7}.result-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin:25px 0}.result-metrics div{background:#203039;padding:15px 5px}.result-metrics span,.result-metrics b{display:block}.result-metrics span{font-size:11px;color:#9cb1b7}.result-metrics b{font-size:22px;margin-top:9px}.defeat-box>.primary{display:block;width:100%;margin-bottom:13px}.defeat-box>small{color:#9bafb6}@media(max-width:1150px){.page{grid-template-columns:minmax(0,1fr) 325px}.battle-zone{padding:20px 17px}.control-zone{padding:22px 16px}.topbar{gap:16px;padding:0 16px}.top-metrics{gap:16px}.brand{min-width:220px}}@media(max-width:880px){.page{display:flex;flex-direction:column}.control-zone{border-left:0;border-top:1px solid var(--line)}.topbar{height:auto;min-height:76px;flex-wrap:wrap;justify-content:space-between;padding:12px 16px}.top-metrics{order:3;width:100%;justify-content:space-between;flex:auto;border-top:1px solid #34454b;padding-top:11px}.brand{min-width:auto}.battle-zone{padding:15px 12px}.control-zone{padding:20px 17px}.commands{grid-template-columns:1fr 1fr}.quick-help{margin-top:14px}.stat-rows{grid-template-columns:repeat(4,1fr)}.stat-rows>div{display:block}.stat-rows b{display:block;margin-top:5px}.world-label{font-size:9px;padding:3px 6px}.field-tip{font-size:10px;bottom:8px;left:8px;padding:6px 8px}.hangar-head,.hangar-body{padding:16px}.hangar-tabs{padding:0 16px}.hangar{max-height:95dvh}.parts-grid{gap:10px}}@media(max-width:540px){.top-metrics{gap:4px}.top-metrics span{font-size:10px}.top-metrics strong{font-size:14px}.topbar>.primary{padding:9px}.brand strong{font-size:12px}.brand small{font-size:9px}.battle-head{align-items:start;gap:7px}.chapter{gap:8px}.chapter b{font-size:10px}.battle-foot{display:block}.legend{margin-top:9px}.commands,.parts-grid,.two-col{grid-template-columns:1fr}.control-zone{padding:19px 14px}.stat-rows{grid-template-columns:repeat(2,1fr)}.hangar-head h2{font-size:17px}.hangar-head h2 span{display:block;font-size:11px}.hangar-head .primary{padding:8px}.hangar-tabs{gap:18px}.hangar-foot{display:block;padding:12px 16px}.hangar-foot span{display:block;margin:4px}.hangar-body{min-height:180px}.field-tip{font-size:9px}.label-unit{white-space:normal;max-width:110px}footer{display:block;padding:14px}footer span{display:block}}

/* Progressive feature discovery: compact, never obscures the battlefield. */
.unlock-track{margin:-6px 0 17px;padding:11px 12px 10px;border:1px solid #365047;background:#193028}
.unlock-track-top{display:flex;gap:9px;justify-content:space-between;align-items:baseline;font-size:11px}
.unlock-track-top strong{color:#c6e4d2;font-size:12px;font-weight:700}
.unlock-track-top span{white-space:nowrap;color:#a8c8ad;font-variant-numeric:tabular-nums}
.unlock-progress{height:3px;background:#3a5047;margin-top:10px;overflow:hidden}
.unlock-progress span{display:block;height:100%;width:0;background:#b5dfb7;transition:width .3s ease}
.unlock-notice{border:1px solid #81b28e;background:#1d362c;color:#e8f5e7;display:flex;align-items:center;gap:12px;padding:11px 13px;margin-bottom:13px}
.unlock-notice[hidden]{display:none}
.unlock-notice div{display:flex;flex-direction:column;flex:1;min-width:0;gap:4px}
.unlock-notice strong{font-size:13px}
.unlock-notice span{font-size:11px;color:#b9dac3;line-height:1.5}
.unlock-notice button{background:#b4d9b6;border:1px solid #b4d9b6;color:#11261a;border-radius:3px;padding:7px 11px;font-weight:bold;font-size:11px;white-space:nowrap}
.unlock-notice #unlock-dismiss{background:transparent;color:#d6eed8;border-color:transparent;font-size:18px;padding:2px 5px}
.locked-feature{opacity:.78;border-style:dashed}
.locked-feature p,.locked-message{color:#abbdb9;font-size:12px;line-height:1.65;margin:10px 0}
.locked-message{border-left:2px solid #607c67;padding-left:11px}
.reset-progress{margin-top:20px;border-top:1px solid #32434b;padding-top:15px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.reset-progress button{background:transparent;border:1px solid #62737a;color:#adc1c1;padding:8px 12px;font-size:11px;border-radius:3px;cursor:pointer}
.reset-progress button.armed{border-color:#dc8b76;color:#f4aaa0}
.reset-progress small{color:#a8b8ba;line-height:1.5}
@media(max-width:540px){.unlock-notice{padding:8px;gap:7px}.unlock-notice button{padding:7px 8px}.unlock-track{margin:0 0 17px}}
/* Desktop notification must be visible without scrolling the battlefield. */
@media(min-width:881px){
  .battle-zone{position:relative}
  .battle-zone .unlock-notice{
    position:absolute;z-index:4;right:43px;top:80px;
    width:min(430px,calc(100% - 70px));
    box-shadow:0 10px 28px #07140dcc;
  }
}

/* Explicit first-command lesson and expandable command program. */
.tutorial{border:1px solid #b08f53;background:#332d20;padding:13px 14px;margin:0 0 19px;color:#eed7a3}
.tutorial[hidden]{display:none}
.tutorial strong{font-size:12px;letter-spacing:.03em}
.tutorial p{font-size:12px;color:#d8c7a6;line-height:1.65;margin:7px 0 0}
.commands{grid-template-columns:1fr}
@media(min-width:630px) and (max-width:880px){.commands{grid-template-columns:repeat(2,minmax(0,1fr))}}

.tactic-hint{font-size:11px;line-height:1.65;color:#aadbd8;background:#12323a;border-left:3px solid #61afb4;padding:10px 11px;margin:13px 0 2px}
.tactic-hint[hidden]{display:none}

/* Live simulation-speed controls: 40px touch targets, readable in landscape. */
.battle-head{flex-wrap:wrap}
.speed-control{display:flex;align-items:center;gap:4px;white-space:nowrap}
.speed-control>span{color:#9aabb0;font-size:11px;margin-right:5px}
.speed-control button{min-width:40px;min-height:40px;border:1px solid #405960;
  background:#172930;color:#d5e3dd;border-radius:4px;font-size:13px;font-weight:700;
  padding:7px 9px;touch-action:manipulation}
.speed-control button.on{border-color:#aad5bb;background:#b1dcc2;color:#102d28}
.speed-control button:focus-visible{outline:2px solid #e4c47f;outline-offset:2px}
@media(max-width:540px){.speed-control{width:100%;justify-content:flex-end}}
