:root{--bg:#151d19;--panel:#171f1b;--border:#344039;--text:#e5e9de;--muted:#9da99e;--gold:#dbc38a;--wp:#dd816f;--nato:#85b6d2;color-scheme:dark;font-family:"Segoe UI","Microsoft YaHei",sans-serif;font-size:12px}
.rules-dialog{width:min(950px,94vw);max-height:92vh}.rules-content{padding:20px;overflow:auto;max-height:76vh;line-height:1.9}.rules-content label{display:block;margin:14px 0}.rules-content select{display:block;width:100%;padding:8px;background:#17261d;color:#e4dcc3;border:1px solid #5e6d50}.rules-content pre{white-space:pre-wrap;font:12px/1.9 "Microsoft YaHei",sans-serif}.rules-content details{margin-top:20px}.rules-content p{margin:10px 0;color:#b6bda7}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}html,body,#app{height:100%;overflow:hidden}button{font:inherit;color:var(--text);background:#243029;border:1px solid #465449;border-radius:3px;padding:7px 10px;cursor:pointer;transition:background .15s}button:hover{background:#354237}button:disabled{opacity:.45;cursor:not-allowed}button:focus-visible{outline:2px solid #e5cc8d;outline-offset:2px}button.selected{background:#394335;border-color:#ad9a65;color:#f1ddb0}h2,h3,p{margin:0}h2{font-size:16px;font-weight:600;margin:4px 0 15px}h2 small{font-size:10px;font-weight:400;color:var(--muted);float:right;padding-top:5px}h3{font-size:16px;font-weight:600}small{font-size:10px}b{font-weight:600}.wp{color:var(--wp)}.nato{color:var(--nato)}.gold{color:var(--gold)}.eyebrow{font-size:9px;color:#94aaa1;margin-bottom:4px}.empty{color:var(--muted);line-height:1.8;padding:20px 0}.empty.compact{padding:12px 0}
#app{display:grid;grid-template-columns:286px minmax(0,1fr) 310px;grid-template-rows:64px minmax(0,1fr) 72px}#topbar{grid-column:1/-1;display:flex;align-items:center;gap:17px;border-bottom:1px solid var(--border);padding:0 18px;background:#101a15;z-index:2}.brand{min-width:164px}.brand strong{display:block;font-family:"Microsoft YaHei",sans-serif;font-size:22px;font-weight:700}.brand small{display:block;font-size:9px;color:#9ba98e;margin-top:2px}.turn{display:flex;align-items:center;gap:5px;border-left:1px solid var(--border);padding-left:15px;white-space:nowrap}.turn b{font-family:Georgia,serif;font-size:29px;color:var(--gold)}.turn span{font-size:10px;color:var(--muted)}.phase-track{display:flex;align-self:stretch;flex:1;min-width:0}.phase-track span{display:flex;align-items:center;justify-content:center;color:#8f9b91;font-size:10px;text-align:center;line-height:1.4;padding:0 8px;flex:1;border-bottom:2px solid transparent}.phase-track .active{color:#e4cd97;border-bottom-color:#c6af78;background:linear-gradient(#273a3033,#34413766)}.tools{display:flex;gap:5px}.tools button{font-size:10px;white-space:nowrap;padding:7px 8px;background:#1d2a22}.tools button.selected{border-color:#9c9069}
#stage{grid-column:2;grid-row:2;width:100%;height:100%;display:block;touch-action:none}#status{grid-column:2;grid-row:2;pointer-events:none;position:relative;z-index:1}.score{position:absolute;top:16px;left:50%;transform:translateX(-50%);display:flex;gap:22px;align-items:center;background:#101c17e6;border:1px solid #4e5b4c;border-radius:3px;padding:8px 19px;box-shadow:0 6px 20px #0005}.score span{display:flex;align-items:center;gap:10px;font-size:10px;white-space:nowrap}.score b{font:26px Georgia,serif}.score i{font-style:normal;font-size:9px;color:#8d9a8d}.map-controls{position:absolute;bottom:42px;left:16px;display:flex;gap:12px;background:#111d17c9;padding:8px 10px;border:1px solid #425044aa}.key{font-size:10px;display:flex;align-items:center;gap:5px}.key:before{content:"";display:inline-block;width:9px;height:9px;border:1px solid currentColor;background:currentColor;opacity:.7}.key.overlap{color:#bc9dcf}.key.reach{color:#e0c56b}.map-caption{position:absolute;left:17px;right:17px;bottom:17px;display:flex;justify-content:space-between;color:#b4bda9;font-size:9px;text-shadow:0 1px 3px #000}.map-caption span{color:#a6b3a3}
.panel{grid-row:2;overflow:auto;background:var(--panel);padding:16px 13px;scrollbar-width:thin;scrollbar-color:#4b5a4a transparent}#left{grid-column:1;border-right:1px solid var(--border)}#right{grid-column:3;border-left:1px solid var(--border)}.tabs{display:flex;gap:5px;margin-bottom:12px}.tabs button{flex:1;font-size:10px;padding:8px 4px}.section-label{display:flex;justify-content:space-between;align-items:center;font-size:11px;padding:10px 0 7px;border-bottom:1px solid var(--border);margin-top:6px;color:#d1d9c9}.section-label span{font-size:9px;color:var(--muted)}.units{list-style:none;margin:0;padding:0}.units li{display:flex;gap:8px;align-items:center;min-height:54px;border-bottom:1px solid #31403477;padding:7px 5px;cursor:pointer;border-left:2px solid transparent}.units li:hover{background:#28382d}.units li.selected{background:#344135;border-left-color:#d5b979}.branch{font-size:22px;line-height:1;flex:none;width:25px}.air-icon{font-size:25px;width:25px;flex:none}.unit-title{flex:1;min-width:0}.unit-title b{display:block;font-size:12px;font-family:Consolas,"Segoe UI",sans-serif}.unit-title span{display:block;font-size:10px;color:#a8b3a5;line-height:1.4;margin-top:3px}.unit-values{text-align:right;flex:none}.unit-values b{display:block;color:#d8cca7;font:11px Consolas,monospace}.unit-values small{display:block;color:#92a18e;margin-top:5px;font-size:9px}.units.air li{min-height:48px}.sidebar-note{font-size:10px;color:#8e9f90;border-top:1px solid #415040;margin-top:14px;padding-top:12px;line-height:1.7}
.terrain-card{border:1px solid #475441;padding:12px;background:linear-gradient(130deg,#2d3829,#1b271e);margin-bottom:14px}.terrain-title{display:flex;justify-content:space-between;margin-bottom:14px;font-size:15px}.terrain-title b{color:#d7c596;font:14px Consolas}dl{display:grid;grid-template-columns:68px 1fr;gap:9px 7px;margin:0;font-size:11px}dt{color:#98a58f}dd{margin:0;color:#d7ddce;line-height:1.5}.unit-card{border:1px solid #3c4b3e;border-top:2px solid currentColor;padding:12px;margin:12px 0;color:var(--wp);background:#202a22}.unit-card.nato{color:var(--nato)}.card-heading{display:flex;justify-content:space-between;gap:8px}.card-heading small{color:#a4b09f}.card-heading h3{color:#e5eadd;font-family:Consolas,"Segoe UI",sans-serif;margin-top:4px}.card-heading p{color:#b5c0ae;font-size:11px;margin-top:4px}.condition{align-self:flex-start;font-size:9px;border:1px solid #64705b;padding:3px 5px;color:#c6d4b8;white-space:nowrap}.condition.damaged{color:#ffac93;border-color:#b0755d}.stats{display:flex;gap:8px;margin:13px 0}.stats>div{flex:1;text-align:center;border:1px solid #465340;padding:7px 0;background:#131d16}.stats b{display:block;font:25px Georgia,serif;color:#e5cfa1}.stats small{display:block;color:#a5b19b;margin-top:3px}.card-meta{font-size:10px;color:#b1bea6;margin:9px 0;line-height:1.6}.unit-card button{width:100%;font-size:10px}.faces{color:#b3bfaa;font-size:10px;line-height:1.7}.faces summary{cursor:pointer}.faces p{margin-top:6px}.battle-card{padding:14px;border:1px solid #b09b67;background:#363a27;margin-top:13px;position:sticky;top:0;z-index:5;box-shadow:0 6px 18px #0006}.battle-card h3{font-size:16px;margin-top:7px}.battle-card p{font-size:10px;line-height:1.6;color:#c4c9ae;margin:8px 0}.odds{font-size:28px;font-family:Georgia,serif;color:#efd598;margin-top:10px}.battle-card button{width:100%;background:#5a5537;border-color:#c6b879}.fx-tests{border-top:1px solid #415040;margin-top:18px;padding-top:12px;color:#b4c1ae;font-size:10px}.fx-tests summary{cursor:pointer}.fx-tests p{color:#93a28d;line-height:1.7;margin-top:8px}.fx-buttons{display:flex;gap:6px;margin-top:9px}.fx-buttons button{font-size:10px;flex:1}.audit-note{font-size:10px;line-height:1.7;color:#a9a58a;background:#2c3022;border:1px solid #55563c;padding:10px;margin-top:15px}.audit-note b{color:#d4c489}
#bottom{grid-row:3;grid-column:1/-1;display:flex;align-items:center;gap:22px;padding:12px 18px;background:#101a14;border-top:1px solid #46513e;z-index:2}.phase{min-width:240px;display:flex;align-items:center;gap:12px;border-left:3px solid #c7ab70;padding-left:12px}.phase small{font-size:8px;max-width:65px;color:#9ead98}.phase b{font-size:13px;color:#e1ca98}.order{flex:1;min-width:0}.order span{display:block;font-size:12px;color:#d5dec9;line-height:1.5}.order small{display:block;font-size:10px;color:#849780;margin-top:4px}#bottom>button{background:#c6b27d;color:#182115;font-weight:700;white-space:nowrap;padding:10px 19px;border-color:#e1c893}.tip{position:fixed;display:none;pointer-events:none;z-index:30;min-width:200px;max-width:340px;background:#101c16f5;border:1px solid #718168;padding:11px 13px;box-shadow:0 8px 25px #0008;font-size:11px}.tip>b{color:#e7d8ae;font-size:12px}.tip p{border-top:1px solid #374a38;padding-top:7px;margin-top:7px;line-height:1.65}.tip small{color:#b4c2a8}
dialog{border:1px solid #667657;background:#19221b;color:var(--text);padding:0;box-shadow:0 20px 90px #000a}dialog::backdrop{background:#07100bd9;backdrop-filter:blur(4px)}dialog header{display:flex;align-items:center;justify-content:space-between;padding:18px 22px;border-bottom:1px solid #46513c}dialog header small{color:#a4b697;font-size:10px}dialog header h2{margin:5px 0 0}.model-dialog{width:min(900px,90vw)}.model-dialog canvas{display:block;width:100%;height:min(540px,58vh)}.model-dialog p{padding:14px 22px;font-size:11px;color:#a4b298;line-height:1.8;border-top:1px solid #46513c}.source-dialog{width:min(1200px,94vw);height:92vh}.source-dialog>p{padding:15px 22px;color:#b7c6aa;font-size:12px;line-height:1.8}.source-dialog strong{color:#e1cda0}.source-images{display:grid;grid-template-columns:1fr 1fr;gap:15px;padding:10px 22px}.source-images figure{margin:0}.source-images img{width:100%;height:auto}.source-images figcaption{color:#dbc88e;margin-bottom:8px}
@media(max-width:1350px){#app{grid-template-columns:255px minmax(0,1fr) 280px}.phase-track span{font-size:9px;padding:0 4px}.brand{min-width:135px}.brand strong{font-size:19px}#topbar{gap:10px;padding:0 12px}.tools button{padding:6px}.turn{padding-left:9px}.phase{min-width:210px}.unit-title span{font-size:9px}.map-controls{gap:8px;font-size:9px}}
@media(max-width:1100px){#app{grid-template-columns:225px minmax(0,1fr) 250px}.phase-track span:nth-child(n+5){display:none}.tools button[data-action="quality"]{display:none}.brand{min-width:124px}.map-controls{left:8px;gap:6px;padding:7px}.key{font-size:9px}.phase{min-width:180px}.order small{font-size:9px}.units li{gap:5px}.unit-title b{font-size:11px}}
.operations{border:1px solid #a29568;background:#303727;padding:12px;margin:12px 0}.operations h3{font-size:14px;color:#e8d29b;margin:7px 0}.operations p{font-size:11px;color:#c2ceb4;line-height:1.8;margin:8px 0}.operations button{display:block;width:100%;margin:6px 0;font-size:11px;white-space:normal}.operations select{width:100%;padding:8px;background:#152219;color:#e5d5ad;border:1px solid #788064}.score i{font-size:9px;max-width:60px;text-align:center}.audit-note{max-height:140px;overflow:auto}
@media(max-width:850px){html,body{overflow:auto}#app{height:auto;min-height:100vh;overflow:visible;grid-template-columns:1fr;grid-template-rows:auto 58vh auto auto auto}#topbar{grid-column:1;grid-row:1;flex-wrap:wrap;padding:10px;gap:8px}.phase-track{display:none}.brand{min-width:100px}.brand strong{font-size:18px}.tools{margin-left:auto}#stage,#status{grid-column:1;grid-row:2}#left{grid-column:1;grid-row:4}#right{grid-column:1;grid-row:3}.panel{overflow:visible}#bottom{grid-row:5;grid-column:1;flex-wrap:wrap;gap:12px;position:sticky;bottom:0}.phase{min-width:0}.order{min-width:200px}.score{top:10px;gap:12px;padding:6px 12px}.map-caption{font-size:8px}.map-controls{bottom:35px}.units li{min-height:48px}.source-images{grid-template-columns:1fr}}
.journal{margin:16px 0;padding-top:12px;border-top:1px solid #47543c;color:#acbba2;font-size:11px}.journal p{line-height:1.8;margin:8px 0}#boot{position:fixed;inset:0;display:grid;place-items:center;background:#142019;color:#dfcfa8;z-index:100}#boot-error{position:fixed;top:20px;left:20px;right:20px;padding:18px;background:#492d24;color:#ffe2c9;z-index:200;border:1px solid #d59673}
.units li{min-height:72px;padding:8px 7px;gap:9px}
.unit-title b{font-size:13px;line-height:1.35}
.unit-title span{font-size:11px;line-height:1.4}
.unit-values b{font-size:17px}
.unit-values small{font-size:10px;line-height:1.35;max-width:96px;white-space:normal;text-align:right}
.stats>div{min-height:64px;display:grid;place-items:center}
.stats b{font-size:38px}
.stats.air-stats{max-width:70%;margin-inline:auto}
.battle-result{position:absolute;z-index:4;top:84px;left:50%;transform:translateX(-50%);width:min(760px,82%);display:grid;gap:8px;padding:18px 22px;background:#101814f5;border:2px solid #d6b56e;box-shadow:0 12px 44px #000b;text-align:center;pointer-events:none}
.battle-result small{font-size:11px;color:#dfca91;text-transform:uppercase}
.battle-result strong{font-size:27px;line-height:1.3;color:#fff1c6}
.battle-result span{font-size:16px;line-height:1.5;color:#e1e8da}
.combat-guide{border:1px solid #b69c62;background:#2b3126;padding:13px;margin:0 0 12px}
.combat-guide h3{font-size:17px;color:#f0d99e;margin:6px 0}
.combat-guide p{font-size:11px;line-height:1.65;color:#d0d5c5;margin:6px 0}
.combat-guide .combat-selection{color:#edcf81;font-weight:700}
.combat-guide button{display:block;width:100%;margin-top:5px;text-align:left;font-size:11px}
.key.forbidden{color:#d18f70}
#bottom>button:disabled{background:#4a5149;color:#acb3a8;border-color:#687065;filter:grayscale(1)}
@media(max-width:850px){.battle-result{top:60px;width:92%;padding:13px}.battle-result strong{font-size:21px}.battle-result span{font-size:13px}.units li{min-height:66px}}
