/* Steel Ops — modern industrial interface. One shared system for every screen. */
:root{color-scheme:dark;--text:#eef0f1;--muted:#a4aaa7;--accent:#dcd9c4;--line:#c0c5ba30;--panel:#242729f2;--orange:#c45b38;--red:#e49b87;font-family:"DIN Alternate","Arial Narrow","PingFang SC","Microsoft YaHei",sans-serif}
*{box-sizing:border-box}body{margin:0;background:#18222d;color:var(--text);overflow:hidden;font-size:14px}button,input,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;color:inherit;border:0}button:disabled{opacity:.45;cursor:default}button:focus-visible,input:focus-visible,a:focus-visible,summary:focus-visible{outline:2px solid #d0e3ed;outline-offset:3px}button:active:not(:disabled){transform:translateY(1px)}small{font-size:11px}h1,h2,h3,p{margin:0}h3{font-size:15px;font-weight:500}a{color:#d0dce5}kbd{font:11px ui-monospace,monospace;border:1px solid #b8c9d14d;padding:2px 5px;color:#d7e0e6;background:#15202a70}.hidden{display:none!important}
.battlefield{position:relative;width:100vw;height:100dvh;overflow:hidden;background:#a0aca3}#game{display:block;width:100%;height:100%;outline:0;cursor:none}.scene-vignette{position:absolute;inset:0;pointer-events:none;box-shadow:inset 0 0 150px #08111d80;z-index:1}.battle-header{position:absolute;top:24px;left:35px;right:35px;display:flex;justify-content:space-between;align-items:start;pointer-events:none;z-index:2;text-shadow:0 1px 7px #000}.operation{display:flex;flex-direction:column;gap:7px}.operation>span{font-size:15px;font-weight:700;letter-spacing:4px}.operation small{font-size:10px;letter-spacing:1.5px;color:#c5d0da}.compass{position:absolute;left:50%;transform:translateX(-50%);top:0;width:285px;text-align:center}.compass-labels{display:flex;justify-content:space-between;font:10px ui-monospace,monospace;color:#d1dce5}.compass-labels span:nth-child(2){font-weight:700}.compass-ticks{height:12px;margin-top:8px;background:repeating-linear-gradient(90deg,#d7ded780 0,#d7ded780 1px,transparent 1px,transparent 10px);mask-image:linear-gradient(90deg,transparent,#000 25%,#000 75%,transparent)}.compass strong{display:inline-block;margin-top:5px;padding:3px 8px;border-bottom:2px solid var(--accent);font:11px ui-monospace,monospace;background:#1b27205e}.operation-status{display:flex;gap:20px;font:10px ui-monospace,monospace;color:#cdd9e2}.mission-hud{position:absolute;top:105px;left:35px;max-width:365px;z-index:2;pointer-events:none;text-shadow:0 1px 5px #000,0 2px 10px #0009}.mission-hud>small{font-size:10px;letter-spacing:2px;display:block;color:#9fb7c9;margin-bottom:10px}.objective-line{display:flex;gap:12px;align-items:center}.objective-mark{display:block;width:11px;height:11px;transform:rotate(45deg);border:2px solid var(--accent);flex-shrink:0}.objective-line strong{font-weight:500;font-size:14px;line-height:1.8}.world-labels{position:absolute;inset:0;pointer-events:none;z-index:2}.world-label{position:absolute;transform:translate(-50%,-100%);text-align:center;white-space:nowrap;font-size:11px;text-shadow:0 1px 5px #000}.world-label b{font-weight:500}.world-label small{display:block;font:9px ui-monospace,monospace;margin-top:7px}.world-label.hostile{color:#efa48c}.world-label.friendly{color:#c6e0ed}.world-label>i{display:block;height:3px;width:62px;background:#412e29bd;margin:5px auto}.world-label em{display:block;height:100%;background:#db9a83}.reticle{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:44px;height:44px;z-index:3;pointer-events:none;filter:drop-shadow(0 1px 2px #000)}.reticle i{position:absolute;background:#e4ebdcaa}.reticle i:nth-child(1){width:10px;height:1px;left:0;top:22px}.reticle i:nth-child(2){width:10px;height:1px;right:0;top:22px}.reticle i:nth-child(3){width:1px;height:10px;left:22px;top:0}.reticle i:nth-child(4){width:1px;height:10px;left:22px;bottom:0}.reticle b{position:absolute;width:3px;height:3px;left:21px;top:21px;background:#fff}.reticle small{position:absolute;top:56px;left:50%;transform:translateX(-50%);font:10px ui-monospace,monospace;white-space:nowrap;color:#e1e9da}.vehicle-hud{position:absolute;left:35px;bottom:38px;width:230px;z-index:2;text-shadow:0 1px 5px #000}.vehicle-name{display:flex;align-items:baseline;gap:12px;margin-bottom:10px}.vehicle-name strong{font-size:23px;font-weight:600;letter-spacing:1px}.vehicle-name span{font-size:10px;color:#a9c0d1;letter-spacing:2px}.health-numbers{font:14px ui-monospace,monospace;margin-bottom:8px}.health-numbers span{font-size:11px;color:#95adbf}.health-track{height:5px;background:#253849b5}.health-track>div{height:100%;background:#b9c8cf;transition:width .2s}.driving-info{display:flex;justify-content:space-between;margin-top:10px;font:9px ui-monospace,monospace;color:#b1c3d0}.driving-info b{font-size:12px;font-weight:500;color:#e8edf2}.weapon-hud{position:absolute;left:50%;transform:translateX(-50%);bottom:38px;text-align:center;width:190px;z-index:2;text-shadow:0 1px 5px #000}.weapon-hud>small{font:11px ui-monospace,monospace;letter-spacing:2px;color:#c4d6e4}.weapon-hud>div:nth-child(2){font:21px ui-monospace,monospace;margin-top:8px}.reload-track{height:3px;background:#132230b0;margin-top:10px}.reload-track i{display:block;height:100%;background:#b6cbdc}.weapon-hud>span{display:block;font-size:9px;color:#a6bed1;margin-top:10px}.weapon-hud>span i{font-style:normal;padding:0 9px}.map-hud{position:absolute;right:30px;bottom:26px;z-index:2;width:200px}.map-hud>div{display:flex;justify-content:space-between;font-size:9px;letter-spacing:1px;text-shadow:0 1px 5px #000;margin-bottom:7px}.map-hud small{font:8px ui-monospace,monospace;color:#a4b9cb}#minimap{width:200px;height:160px;border:1px solid #e2e8dc55;box-shadow:0 2px 10px #0004;display:block}#pause-button{display:block;background:none;font:10px ui-monospace,monospace;color:#c5d5e1;margin:10px 0 0 auto;padding:0;text-shadow:0 1px 4px #000}#pause-button span{font:10px inherit;margin-left:6px}.radio-strip{position:absolute;left:35px;bottom:174px;display:flex;align-items:center;gap:13px;width:min(500px,46vw);z-index:3;text-shadow:0 1px 5px #000}.radio-id{padding-right:12px;border-right:1px solid #b4c7d777;white-space:nowrap}.radio-id strong{display:block;font-size:10px;font-weight:500;margin-bottom:4px;color:#bdcfde}.radio-id small{font:8px ui-monospace,monospace;color:#90a8bc}.radio-strip p{font-size:12px;line-height:1.9;color:#e5ecf1}.radio-strip>button{font-size:9px;white-space:nowrap;background:#152637a3;color:#bdd0df;padding:5px 8px}.control-hint{position:absolute;bottom:10px;left:35px;z-index:2;color:#b9cbd8;font-size:9px;text-shadow:0 1px 5px #000}.control-hint kbd{font-size:8px;margin-right:5px;padding:1px 3px}.control-hint kbd:not(:first-child){margin-left:10px}.interaction{position:absolute;top:65%;left:50%;transform:translateX(-50%);z-index:4;background:#141e28ed;padding:12px 17px;font-size:12px;border:1px solid #b8cedca0}.interaction kbd{background:#c2d5e4;color:#1c2e3d;margin-right:8px;border:0}.toast{position:absolute;top:22%;left:50%;transform:translateX(-50%);max-width:65%;z-index:4;font-size:12px;color:#e3edf4;background:#141e28df;padding:9px 17px;border-top:1px solid #adc6d980;text-align:center}.menu-utilities{display:none;position:absolute;top:90px;right:35px;z-index:20;gap:12px}.menu-utilities button{background:#18241cda;border:1px solid #82958170;font-size:11px;padding:10px 14px}.save-status{position:absolute;right:32px;bottom:6px;z-index:3;font-size:8px;color:#9fb7cba0}
/* Shared windows and controls */
.overlay{position:absolute;inset:0;z-index:8;display:flex;align-items:center;justify-content:center;padding:28px;pointer-events:none}
.overlay:empty{display:none}.modal{position:relative;width:min(580px,calc(100vw - 56px));max-height:calc(100dvh - 56px);overflow:auto;pointer-events:auto;padding:32px 36px;background:var(--panel);border:1px solid var(--line);box-shadow:0 16px 80px #0006;backdrop-filter:blur(14px);scrollbar-width:thin;scrollbar-color:#6b7c88 #222726}
.modal h2{font-size:28px;font-weight:500;line-height:1.35;letter-spacing:1px}.eyebrow{display:block;font:10px ui-monospace,monospace;letter-spacing:2px;color:#a5b6c2;margin-bottom:14px}.lead{color:#b8c4cd;line-height:1.9;font-size:13px;margin:14px 0 18px}.modal-note{font-size:11px;line-height:1.85;color:var(--muted);margin-top:20px}.button-row{display:flex;gap:12px;margin-top:24px}.button-row>*{flex:1}.primary,.secondary{min-height:44px;padding:11px 22px;font-size:13px;font-weight:500;letter-spacing:1px;transition:background .15s,border-color .15s}.primary{background:#98361f;border:1px solid #bf8058;color:#fff3e9;box-shadow:inset 0 1px #ffffff14}.primary:hover{background:#b84528;border-color:#daa278}.secondary{background:#8ca1b40e;border:1px solid #a8bdcc3d;color:#e0e7ed}.secondary:hover{background:#9aaebb20;border-color:#b6c9d28c}.text-button,.listen-button,.back-link{background:transparent;color:#b9c9d5;padding:7px 0;font-size:12px}.text-button:hover,.back-link:hover{color:#fff}.listen-button{border:1px solid #9ab4c34d;padding:7px 12px;margin-top:8px}.listen-button:hover{background:#9bb0c51a}.helper-row{display:flex;align-items:center;gap:20px;margin-top:14px}.section-label{display:flex;justify-content:space-between;gap:16px;color:#d4dee5;font-size:11px;letter-spacing:1px}.section-label>span{color:var(--muted);font-size:10px}.window-header{display:flex;justify-content:space-between;align-items:center;gap:20px;border-bottom:1px solid var(--line);padding:25px 30px}.window-header h2{font-size:24px}.window-close{font-size:11px;background:none;color:#a4b2bd;padding:5px}.window-close:hover{color:#fff}.window-close kbd{margin-left:10px}.window-footer{display:flex;align-items:center;justify-content:space-between;gap:20px;border-top:1px solid var(--line);padding:18px 30px}.window-footer>span{font-size:11px;color:var(--muted)}
/* Garage: source-aligned environment and live controls. */
.game-icon{display:inline-block;width:22px;height:22px;fill:currentColor;flex-shrink:0;vertical-align:middle}
.garage-backdrop{display:none;position:absolute;inset:0;z-index:0;background:#1e2a34 url('./assets/garage-reference-plate.png') center/cover no-repeat;pointer-events:none}body[data-scene="garage"] .garage-backdrop{display:block}#game{position:relative;z-index:1}body[data-scene="garage"] #game{filter:none!important}
body[data-dialog="home"] .overlay,body[data-dialog="results"] .overlay{padding:0}body[data-dialog="home"] .modal,body[data-dialog="results"] .modal{width:100%;height:100%;max-height:none;border:0;background:transparent;backdrop-filter:none;box-shadow:none;overflow:hidden}
body[data-dialog="home"] .modal{padding:0;pointer-events:none;text-shadow:0 1px 3px #000b}body[data-dialog="home"] .modal :is(button,a,details){pointer-events:auto}
.garage-header{position:absolute;inset:5px 30px auto;height:45px;display:flex;justify-content:space-between;align-items:center;gap:20px}.garage-player{display:flex;align-items:center;gap:10px;font-size:15px;color:#c6cac6}.garage-player>button{background:none;color:#c8b78c;padding:0;font-size:14px}.garage-player>button:disabled{opacity:.6}.garage-player>small{font-size:11px;color:#a4aba9;margin-left:8px}.profile-divider{height:16px;border-right:1px solid #aaa6}.deploy-button{position:absolute;left:50%;top:0;transform:translateX(-50%);width:124px;min-height:45px;padding:4px 10px;font-size:24px;font-weight:650;letter-spacing:0;background:#ac341e;border:1px solid #db8c5e;box-shadow:inset 0 0 0 2px #eabd7f22,0 0 0 3px #181a19a3,0 2px 12px #0008;text-shadow:0 1px 3px #43140a}.deploy-button:hover{background:#c14724;border-color:#edb078}.deploy-button:active:not(:disabled){transform:translate(-50%,1px)}.deploy-button:focus-visible{outline:1px solid #eed4a3;outline-offset:3px}.garage-resources{display:flex;align-items:center;gap:24px;font-size:15px;color:#c1c6c2}.garage-resources>span{display:flex;align-items:center;gap:7px;white-space:nowrap}.garage-resources>span+span{border-left:1px solid #c5cdc522;padding-left:18px}.garage-resources .game-icon{width:20px;height:20px;color:#b9c0bc}.garage-resources small{font-size:10px;color:#9fa8a2}.garage-resources b{font-weight:500;color:#d5c8a6}.garage-vehicle{position:absolute;left:50%;top:72px;transform:translateX(-50%);text-align:center;color:#cacbc1}.garage-vehicle h2{font-size:23px!important;font-weight:600;letter-spacing:1px;margin:0}.garage-vehicle h2>span{font-size:18px;color:#b5b9b6;font-weight:400}.garage-vehicle .game-icon{width:27px;height:27px;color:#b9a771;margin:0 6px}.garage-vehicle p{font:10px ui-monospace,monospace;color:#9fa7a5;letter-spacing:.5px;margin-top:12px}.garage-nav{position:absolute;left:30px;top:135px;display:flex;flex-direction:column;align-items:start;gap:4px;min-width:150px}.garage-nav :is(button,.nav-active){position:relative;background:none;color:#bfc4bf;font-size:20px;font-weight:550;letter-spacing:0;line-height:1.25;min-height:26px;padding:1px 0;text-shadow:0 1px 3px #000}.garage-nav button:hover{color:#fff0c9}.garage-nav button:disabled{color:#8e9793;opacity:.65}.garage-nav .nav-active{color:#eee6ca}.nav-active:before{content:"";position:absolute;left:-30px;top:0;width:154px;height:28px;background:linear-gradient(90deg,#c3a77924,transparent);border-left:2px solid #c2aa73;z-index:-1}.battle-mode{padding-bottom:11px;margin-bottom:0;min-width:140px}.battle-mode>strong{font-size:20px;font-weight:550;color:#c9cdc7}.battle-mode>small{display:block;color:#a3aaa4;font-size:11px;margin-top:4px}.operation-brief{position:absolute;top:83px;right:30px;width:238px;color:#c6cac6;pointer-events:auto;max-height:calc(100dvh - 275px);overflow:auto;scrollbar-width:thin;scrollbar-color:#717b7a transparent}.mission-banner,.training-banner{position:relative;display:flex;flex-direction:column;align-items:start;justify-content:center;width:100%;height:70px;padding:10px 13px;border:1px solid #bec9c58c;background:#243239;text-align:left;overflow:hidden;isolation:isolate}.mission-banner:before,.training-banner:before{content:"";position:absolute;inset:0;z-index:-1;background:url('./assets/garage-reference-plate.png') 76% 25%/290% auto;opacity:.5}.mission-banner strong,.training-banner strong{font-size:23px;font-weight:650;letter-spacing:0;line-height:1.1;color:#e0e0cf}.mission-banner>span,.training-banner>span{font-size:12px;color:#d0d3c7;margin-top:6px}.training-banner{margin-top:6px;margin-bottom:6px;background:#1c3834;border-color:#abbdb58c}.training-banner:before{background-position:97% 28%;background-size:250% auto;opacity:.55}.training-banner>b{position:absolute;right:13px;top:12px;color:#8de1bc;font:36px "Arial Narrow",sans-serif;text-shadow:0 0 9px #3aa17d}.mission-banner:hover,.training-banner:hover{border-color:#e5d3a2}.garage-mission{display:flex;align-items:center;text-align:left;gap:14px;padding:18px 10px;min-height:80px;width:100%;border:1px solid #c9d0ca45;border-bottom:0;background:#1b242775;color:#c4cbc4}.garage-mission:last-child{border-bottom:1px solid #c9d0ca45}.garage-mission>.game-icon{width:29px;height:29px;color:#bcc3bc}.garage-mission>strong{font-weight:550;font-size:16px;line-height:1.55;color:#ced3c9}.garage-mission small{display:block;font-weight:400;font-size:9px;color:#9eaaa3;white-space:nowrap}.garage-mission>span{font:11px ui-monospace,monospace;color:#b7c0b4;white-space:nowrap;margin-left:auto}.garage-mission:hover{background:#34403c99}.garage-service{position:absolute;left:49%;bottom:273px;transform:translateX(-50%);display:flex;gap:10px}.garage-service button{position:relative;background:#222b2ed6;border:1px solid #b1b6ad82;width:47px;height:47px;box-shadow:inset 0 0 0 3px #10151566,0 1px 5px #0005;display:grid;place-items:center;color:#bfc8c1;clip-path:polygon(22% 0,78% 0,100% 25%,100% 75%,78% 100%,22% 100%,0 75%,0 25%)}.garage-service button>.game-icon{width:27px;height:27px}.garage-service button>span{display:none}.garage-service button:hover{background:#3c423ae6;color:#f0e1ba;border-color:#d1ba7d}.garage-bottom{position:absolute;left:30px;right:30px;bottom:0}.garage-fitout{display:flex;align-items:center;justify-content:flex-start;gap:22px;height:79px;max-width:930px;margin:0 auto 14px;background:transparent}.crew-strip,.module-strip,.ammo-strip{display:flex;align-items:start;gap:4px}.crew-strip{gap:3px;margin-right:3px}.crew-avatar{position:relative;width:40px;height:51px;padding:0;border:1px solid #acb7b35e;background-image:url('./assets/crew-portraits.png');background-size:400% auto;background-color:#26302c;background-position-y:28%;box-shadow:inset 0 0 8px #0005}.crew-0{background-position-x:0}.crew-1{background-position-x:33.3333%}.crew-2{background-position-x:66.6667%}.crew-3{background-position-x:100%}.crew-avatar>span{display:block;position:absolute;top:56px;left:50%;transform:translateX(-50%);font-size:9px;font-weight:400;white-space:nowrap;color:#aeb9ac}.crew-avatar:hover{border-color:#e3cd99}.module-strip{border-right:1px solid #b7bfb252;padding-right:22px}.module-slot,.ammo-slot{position:relative;width:46px;height:49px;display:flex;align-items:center;justify-content:center;padding:5px;background:#26313068;border:1px solid #a4b5ac69;color:#aebda8;box-shadow:inset 0 0 8px #0f181599}.module-slot>.game-icon{width:34px;height:34px;filter:drop-shadow(0 1px 3px #0009)}.module-slot>small{position:absolute;top:54px;left:50%;transform:translateX(-50%);font:10px ui-monospace,monospace;color:#bdc5b3;white-space:nowrap}.module-slot:hover,.ammo-slot:hover{border-color:#dac492;background:#53604c88}.ammo-strip{gap:5px}.ammo-slot{width:46px;background:#222d2780;color:#c9c2a0}.ammo-slot>.game-icon{width:30px;height:30px}.ammo-slot>span{font:9px ui-monospace,monospace;position:absolute;bottom:1px;right:3px;color:#d3d2ad}.ammo-slot>small{position:absolute;top:55px;left:50%;transform:translateX(-50%);font-size:9px;white-space:nowrap;color:#aebba7}.ammo-slot[aria-pressed="true"]{border-color:#c7c78f}.garage-filter{display:flex;align-items:center;gap:17px;height:27px;padding-bottom:5px;color:#b2bfb3;font-size:10px}.garage-filter>span{display:flex;align-items:center;gap:9px}.garage-filter .game-icon{width:15px;height:15px}.garage-filter>button{background:#27342d85;padding:3px 8px;border:1px solid #a7b8a54d;font-size:10px;line-height:1.1;display:flex;align-items:center;gap:5px}.vehicle-carousel{display:flex;align-items:center;gap:6px;width:100%;height:94px;overflow-x:auto;scrollbar-width:none;border-top:1px solid #becdc36e;border-bottom:1px solid #becdc32b;padding:5px 0;background:#12201a25}.vehicle-carousel::-webkit-scrollbar{display:none}.vehicle-slot,.vocabulary-slot,.archive-slot,.crew-slot,.training-slot{width:calc((100% - 42px)/8);min-width:145px;height:84px;position:relative;overflow:hidden;flex-shrink:0;border:1px solid #a5b3a95e;padding:0;background:#25332ac4;text-align:left;color:#d6ded0;text-shadow:0 1px 5px #000}.vehicle-slot.selected{border-color:#d1c092;box-shadow:inset 0 0 0 1px #a78b4352}.vehicle-slot canvas{display:block;width:100%;height:100%;opacity:.9;object-fit:cover}.vehicle-slot>span,.vocabulary-slot>span,.crew-slot>span,.training-slot>span{position:absolute;left:7px;top:6px;color:#b1bfb4;font-size:9px}.vehicle-slot>strong,.vocabulary-slot>strong,.crew-slot>strong,.training-slot>strong{position:absolute;right:8px;bottom:7px;font-size:15px;color:#e0e3d4;font-weight:500}.vocabulary-slot{background-image:linear-gradient(0deg,#101e15dc,transparent 75%),url('./assets/garage-reference-plate.png');background-size:auto,520% auto}.vocab-0{background-position:center,5% 23%}.vocab-1{background-position:center,43% 37%}.vocab-2{background-position:center,26% 20%}.vocab-3{background-position:center,85% 25%}.vocabulary-slot>strong{font:18px "Arial Narrow",sans-serif;bottom:22px;letter-spacing:0}.vocabulary-slot>small{position:absolute;right:8px;bottom:7px;font-size:10px;color:#c2cbb8}.vocabulary-slot:hover,.archive-slot:hover,.crew-slot:hover,.training-slot:hover{border-color:#dccda2;filter:brightness(1.16)}.crew-slot{background-image:linear-gradient(0deg,#112019,transparent 85%),url('./assets/crew-portraits.png');background-size:auto,100% auto;background-position:center,center 40%}.training-slot{background-image:linear-gradient(0deg,#112019,transparent 85%),url('./assets/garage-reference-plate.png');background-size:auto,250% auto;background-position:center,90% 25%}.archive-slot{display:flex;align-items:center;justify-content:center;gap:10px;background:#2c3833a6}.archive-slot>.game-icon{width:34px;height:34px;color:#9db4a4}.archive-slot>span{font-size:10px;color:#a5b7a7;position:absolute;left:7px;top:6px}.archive-slot>strong{font-size:18px;color:#d4cfaa;font-weight:400}.garage-footer{height:34px;display:flex;align-items:center;gap:20px;color:#9daaa2;font-size:10px}.garage-footer>button{padding:0;background:none;color:#a3ada5;margin-left:0}.garage-footer .game-icon{width:19px;height:19px}.garage-camera-hint{font-size:9px;color:#8f9a92;margin-left:auto}.source-credit{position:relative;font-size:10px;color:#9ca89c}.source-credit summary{cursor:pointer;list-style:none}.source-credit p{position:absolute;bottom:24px;left:0;width:340px;padding:16px;background:#222824f5;border:1px solid #b4c1ad42;line-height:1.9;z-index:10}
body[data-dialog="garage-detail"] .overlay{background:#09131a55}body[data-dialog="garage-detail"] .modal{width:780px;padding:0;background:#202a2ef2}.garage-detail-content{padding:30px}.crew-roster{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}.crew-roster h3{margin-top:17px;font-size:15px}.crew-roster p{margin-top:10px;color:#a3b5b8;font-size:11px;line-height:1.8}.crew-picture{height:210px;background-image:url('./assets/crew-portraits.png');background-size:400% auto;background-position-y:25%;background-color:#1e272a;border:1px solid #80928a5e}.vehicle-sheet{display:grid;grid-template-columns:1fr 1.2fr;gap:40px}.vehicle-sheet small{color:#bcb59b;letter-spacing:2px}.vehicle-sheet h3{font-size:28px;line-height:1.4;margin:15px 0}.vehicle-sheet p{font-size:12px;color:#99aea9;line-height:1.8}.vehicle-sheet dl{margin:0}.vehicle-sheet dl>div{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:15px 0;border-bottom:1px solid #9cb0aa33}.vehicle-sheet dt{font-size:12px;color:#97aba6}.vehicle-sheet dd{margin:0;font-size:15px;color:#d3d8ca}.mission-orders{list-style:decimal-leading-zero;padding-left:28px;display:grid;gap:24px;color:#9daea9}.mission-orders li{padding-left:6px}.mission-orders strong{display:block;color:#ced6c9;font-size:15px;font-weight:500}.mission-orders span{display:block;font-size:12px;color:#93aaa1;line-height:1.8;margin-top:8px}
/* Pause, settings and confirmation */
body[data-dialog="pause"] .overlay,body[data-dialog="settings"] .overlay,body[data-dialog="confirm"] .overlay{background:#101514b8;backdrop-filter:blur(4px)}body[data-dialog="pause"] .modal{width:340px;padding:22px;background:transparent;border:0;box-shadow:none;backdrop-filter:none}body[data-dialog="pause"] .modal h2{text-align:center;font-size:28px;font-weight:400;letter-spacing:1px}body[data-dialog="pause"] .overlay{background:#0b100cd1;backdrop-filter:none}.menu-session{text-align:center;margin:14px 0 29px;color:#a4ada7;font-size:12px}.menu-session small{display:block;color:#7e8983;margin-top:7px;font-size:10px}.pause-stack{display:grid;gap:18px}.menu-group{display:grid;gap:8px}.menu-group .secondary,.menu-group .primary{width:100%;min-height:52px;text-align:center;padding-left:18px;background:#090e0ba8;color:#d0d1bf;border:1px solid #a0a28a61;box-shadow:inset 0 0 0 2px #03080687;font-weight:400;font-size:14px}.menu-group .secondary:hover{background:#2a3021b0;border-color:#c0b8979e}.menu-group-return .primary{border-color:#a08a576e}.menu-group-return .primary:hover{background:#3a3420b5;border-color:#c1a66aa3}.menu-group button:focus-visible{outline:1px solid #d1b378;outline-offset:2px}.menu-group-return{padding-top:0;border:0}.menu-group-return .primary{margin-top:6px}.menu-footer{margin-top:24px;color:#87928a;font-size:10px;text-align:center}.menu-footer>span{margin:0 8px}.menu-footer kbd{font-size:9px;margin-right:4px}body[data-dialog="settings"] .modal{width:780px;padding:0}body[data-dialog="confirm"] .modal{width:570px;padding:0}.settings-tabs{display:flex;border-bottom:1px solid var(--line);padding:0 30px;gap:26px}.settings-tabs button{background:none;border-bottom:2px solid transparent;padding:16px 10px 14px;color:#93a6b4;font-size:13px;position:relative}.settings-tabs button[aria-selected="true"]{color:#eef1f3;border-color:#c6895f}.settings-tabs button:hover{color:#fff}.settings-content{padding:25px 40px;min-height:340px}.settings-content h3{margin-bottom:17px;color:#d1dce4}.binding-table{display:grid;grid-template-columns:1fr 1fr;column-gap:36px}.binding-table>div{display:flex;justify-content:space-between;align-items:center;gap:12px;min-height:47px;border-bottom:1px solid #9db5c31c;font-size:12px;color:#aebbca}.binding-table kbd{font-size:10px;white-space:nowrap;background:#0c16204d}.settings-help{font-size:11px;color:#7f95a4;line-height:1.9;margin-top:24px}.audio-setting{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);padding:22px 0}.audio-setting strong{font-weight:500;font-size:13px}.audio-setting p{margin-top:9px;color:#8298a9;font-size:11px}.audio-setting button{min-width:86px;padding:9px 18px;border:1px solid #9eb5c354;background:#71889916}.audio-setting button[aria-checked="true"]{color:#e6e0d4;border-color:#c6895f;background:#a46c3e26}.confirmation-content{padding:34px 30px 40px}.confirmation-content h3{font-size:18px;margin-bottom:17px}.confirmation-content p{color:#aabbc7;font-size:13px}.confirmation-content small{display:block;margin-top:12px;color:#7e96a7;font-size:11px}.confirm-actions{justify-content:flex-end;background:#0d17212e}.confirm-actions button{min-width:128px}
/* Field communications and active recall */
body[data-dialog="station"] .overlay,body[data-dialog="route"] .overlay,body[data-dialog="warehouse"] .overlay,body[data-dialog="speed"] .overlay,body[data-dialog="connector"] .overlay,body[data-dialog="drill"] .overlay{justify-content:flex-start;padding-left:4vw;background:#0c182326}
body[data-dialog="drill"] .modal,body[data-dialog="review"] .modal{width:560px}.terminal-header{display:flex;align-items:start;justify-content:space-between;gap:15px}.terminal-header .eyebrow{font-size:10px}.terminal-state{color:#b4c2cc;font-size:10px;white-space:nowrap}.terminal-state:before{content:"";display:inline-block;width:4px;height:4px;background:#bbccc5;margin-right:7px;vertical-align:2px}.transmission-meta{display:flex;justify-content:space-between;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:12px 0;margin-top:22px;font:9px ui-monospace,monospace;letter-spacing:1px;color:#7d95a8}.exercise-context{font-size:15px;line-height:1.9;color:#c7d4df;margin:22px 0 0}.cipher-word{font:44px ui-monospace,monospace;letter-spacing:5px;margin:24px 0 5px;color:#f1f3f4}.cipher-word.chinese-prompt{font:28px "PingFang SC",sans-serif;letter-spacing:3px}.input-label{display:block;font-size:11px;color:#9aafbe;margin-top:24px}.review-input{width:100%;display:block;background:#09141f80;border:1px solid #6e899d80;color:#eff4f7;padding:13px 16px;font:23px ui-monospace,monospace;min-height:54px;margin-top:9px;border-radius:0;outline-offset:2px}.review-input::placeholder{font:12px "PingFang SC",sans-serif;color:#5f7b90;letter-spacing:1px}.error-message{color:#e9ab95;font-size:11px;margin-top:8px;min-height:12px;line-height:1.7}.attempt-label{font-size:10px;color:#718c9e;margin-left:auto}.word-card{padding:18px 0;margin:16px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.word-card .word{font:36px ui-monospace,monospace}.word-meaning{font-size:13px;color:#b4c4d0;margin-top:10px}.example{font-size:22px;line-height:1.7;margin:20px 0 10px}.example mark,.english-line mark{color:#f0cfad;background:transparent;border-bottom:1px solid #c78d5d75;padding-bottom:4px}.translation{font-size:12px;color:#8fa4b4;line-height:1.9}.english-line{font-size:26px;line-height:1.7;margin:28px 0 16px}.translation-hint{font-size:12px;color:#c3d0d9;line-height:1.9;margin-top:14px}.options{display:grid;gap:8px;margin-top:24px}.option{display:flex;align-items:center;gap:14px;background:#5e7b9512;border:1px solid #8ba4b52e;text-align:left;padding:14px 16px}.option:hover{background:#748ea129;border-color:#b5c9d475}.option-key{border:1px solid #b0c4d24d;width:25px;height:25px;flex-shrink:0;display:grid;place-items:center;font:12px ui-monospace,monospace;color:#afc1ce}.option strong{font-size:13px;font-weight:500}.option small{display:block;color:#879eae;font-size:11px;margin-top:6px}.feedback{padding:14px 16px;margin-top:18px;border-left:2px solid #a7c4c4;background:#8cb5bd12;color:#d0e0e6;font-size:13px;line-height:1.8}.feedback small{display:block;color:#94adbc;font-size:11px;line-height:1.9;margin-top:6px}.feedback.error{border-color:#bf8058;color:#edc3b4;background:#bd755019}.feedback.error small{color:#c0aaa0}body[data-dialog="intel"] .modal{width:850px}.intel-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 35px;margin-top:20px}.intel-word{padding:16px 0;border-bottom:1px solid var(--line)}.intel-word strong{font:21px ui-monospace,monospace}.intel-word p{color:#b6c6d2;font-size:13px;line-height:1.8;margin:10px 0}.intel-word small{color:#8da3b4;line-height:1.8;font-size:11px}
/* Full screen after action report */
body[data-dialog="results"] .modal{background:linear-gradient(90deg,#171a183d 30%,#1b201ece 54%,#1b201ef2 100%);padding:0}.report-header{position:absolute;left:34px;right:34px;top:25px;display:flex;align-items:center;gap:32px;font-size:13px;color:#c3d2dd}.back-link{font-size:23px;padding:0}.back-link>span{font-size:13px;vertical-align:3px;margin-left:8px}.report-header>span{padding-left:24px;border-left:1px solid var(--line)}.report-header small{font-size:11px;color:#8ca1b2;margin-left:8px}.report-header time{margin-left:auto;color:#7f97ab;font:11px ui-monospace,monospace}.report-hero{position:absolute;left:6%;top:18%;text-shadow:0 3px 12px #07121c}.report-hero .eyebrow{font-size:10px;letter-spacing:3px;color:#c4ad8b}.report-hero h2{font-size:52px;font-weight:400;letter-spacing:8px}.report-hero>p{font-size:12px;color:#a7bccc;margin-top:20px}.report-vehicle-label{position:fixed;left:6%;bottom:13%;border-left:2px solid #a4b6c454;padding-left:18px}.report-vehicle-label strong{display:block;font-size:18px;font-weight:400;letter-spacing:2px}.report-vehicle-label span{font:10px ui-monospace,monospace;color:#7d97aa;display:block;margin-top:9px}.report-panel{position:absolute;left:50%;right:4%;top:15%;bottom:7%;display:flex;flex-direction:column;background:#222827c9;backdrop-filter:blur(12px);border-top:1px solid #abc1d133;border-bottom:1px solid #abc1d133}.report-tabs{padding:0 26px;gap:18px;flex-shrink:0}.report-tabs button{padding:19px 7px 17px;font-size:12px}.report-content{flex:1;min-height:0;overflow:auto;padding:28px 32px;scrollbar-width:thin}.report-content h3{font-size:13px;color:#b1c4d2;font-weight:400}.results-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin:28px 0 38px}.result-item{border-right:1px solid var(--line);padding-right:10px}.result-item:last-child{border:0}.result-item>strong{font:37px ui-monospace,monospace;letter-spacing:-1px;display:block;color:#e8eff4}.result-item strong small{font-size:15px;color:#7d95a8;letter-spacing:0}.result-item>small{display:block;font-size:10px;color:#869eaf;margin-top:10px}.word-results{display:grid;margin-top:14px}.word-result{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:16px 0;border-bottom:1px solid #8aa7bd1f}.word-result strong{font:17px ui-monospace,monospace;font-weight:400}.word-result span{font-size:11px;color:#b4c7d5}.word-result span i{font-style:normal;font-size:12px;margin-right:9px;color:#aac6c4}.word-result.assisted span{color:#cfab87}.word-result.assisted span i{color:#b9926e}.report-footer{display:flex;justify-content:flex-end;gap:12px;padding:20px 28px;border-top:1px solid var(--line);flex-shrink:0}.report-footer button{font-size:12px;padding:11px 17px}.learning-report{margin-bottom:30px}.learning-report h3{margin-bottom:18px}.learning-row{display:grid;grid-template-columns:1.1fr 1fr 1fr 1fr;gap:8px;align-items:center;min-height:50px;border-bottom:1px solid var(--line)}.learning-row.header{min-height:32px;color:#728da2;font-size:10px}.learning-row strong{font:13px ui-monospace,monospace}.learning-row>span{font-size:10px;color:#94acbc}.learning-row>span.passed{color:#b5cece}.learning-row>span.helped{color:#bc9879}.recall-heading{margin-top:20px}.equipment-heading{margin:25px 0 20px}.reward-options{display:grid;grid-template-columns:1fr 1fr;gap:12px}.reward-card{padding:20px 18px;background:#6d8da512;border:1px solid #9ab4c331;text-align:left}.reward-card.selected{border-color:#d29a66;background:#bb865b14}.reward-card:hover{background:#9ab4c31b}.equipment-icon{width:40px;height:40px;color:#b7bca9;margin-bottom:24px}.equipment-value{display:block;font:35px ui-monospace,monospace;color:#b7cbd9;margin-bottom:24px}.equipment-value>small{display:inline;font-size:12px;margin:0;color:#7f99ac}.reward-card strong{font-size:14px;font-weight:500;display:block}.reward-card small{display:block;font-size:10px;line-height:1.9;margin-top:12px;color:#889fad}.equipment-selected{display:block;font-size:10px;border-top:1px solid var(--line);margin-top:20px;padding-top:12px;color:#9eb2c0}.selected .equipment-selected{color:#ddae81}
/* Scene presentation and smaller desktop viewports */
body[data-dialog="home"] :is(.battle-header,.mission-hud,.vehicle-hud,.weapon-hud,.map-hud,.radio-strip,.control-hint,.reticle,.save-status),body[data-dialog="results"] :is(.battle-header,.mission-hud,.vehicle-hud,.weapon-hud,.map-hud,.radio-strip,.control-hint,.reticle,.save-status){display:none}
body[data-dialog]:not([data-dialog=""]) .reticle,body[data-dialog]:not([data-dialog=""]) #toast{display:none}body[data-dialog="home"] #game,body[data-dialog="results"] #game{cursor:grab;filter:saturate(.58)}body[data-dialog="home"] #game:active{cursor:grabbing}body[data-dialog="review"] .overlay{background:#0b18266e}body[data-dialog="loading"] .overlay{padding:0;align-items:center;justify-content:center;background:#17232f}.loading-panel{width:380px;max-width:85vw;padding:30px;pointer-events:auto}.loading-panel>small{font:11px ui-monospace,monospace;color:#7895aa;letter-spacing:4px}.loading-panel h1{font-size:25px;font-weight:400;margin:22px 0}.loading-panel p{color:#869eaf;font-size:12px;line-height:1.8}.loading-track{height:2px;background:#526d8259;margin-top:28px;overflow:hidden}.loading-track:after{content:"";display:block;width:35%;height:100%;background:#b88761;animation:loading 1.8s infinite ease-in-out}@keyframes loading{from{transform:translateX(-100%)}to{transform:translateX(400%)}}.modal :is(.compact-list){padding:0;list-style:none;display:grid;gap:15px;color:#afc1ce}
@media(max-height:700px){.modal{padding:24px 28px}.garage-nav{top:112px;gap:2px}.garage-nav :is(button,.nav-active){font-size:17px;min-height:23px}.battle-mode>strong{font-size:18px}.operation-brief{top:74px;max-height:calc(100dvh - 245px)}.mission-banner,.training-banner{height:58px}.mission-banner strong,.training-banner strong{font-size:20px}.garage-mission{min-height:68px;padding:12px 9px}.garage-mission>strong{font-size:14px}.garage-fitout{height:70px;margin-bottom:10px}.vehicle-carousel{height:85px}.vehicle-slot,.vocabulary-slot,.archive-slot,.crew-slot,.training-slot{height:75px}.garage-footer{height:31px}.garage-service{bottom:244px}.report-content{padding:22px 25px}.results-grid{margin:20px 0 24px}.word-result{padding:11px 0}.report-footer{padding:15px 22px}.settings-content{min-height:300px;padding-top:20px;padding-bottom:20px}.binding-table>div{min-height:42px}}
@media(max-width:1050px){.garage-header{left:24px;right:24px}.garage-resources{gap:13px}.garage-resources>span+span{padding-left:13px}.garage-player>small{display:none}.garage-nav{left:24px;min-width:120px}.garage-nav :is(button,.nav-active){font-size:18px}.nav-active:before{left:-24px;width:135px}.operation-brief{right:24px;width:218px}.garage-bottom{left:24px;right:24px}.garage-fitout{gap:16px}.garage-service{left:47%}.vehicle-slot,.vocabulary-slot,.archive-slot,.crew-slot,.training-slot{min-width:140px}.report-panel{left:43%;right:3%}.report-content{padding:23px}.report-hero{left:4%}.report-hero h2{font-size:40px}.report-vehicle-label{left:4%}.report-tabs{gap:14px;padding:0 18px}.report-footer{padding:16px 18px;gap:9px}.report-footer button{font-size:11px;padding:10px 13px}.results-grid{gap:6px}.result-item>strong{font-size:29px}.learning-row{gap:5px}.learning-row strong{font-size:12px}}
@media(max-width:700px){.overlay{padding:16px}.modal{width:calc(100vw - 32px);max-height:calc(100dvh - 32px);padding:24px}.garage-header{left:18px;right:18px}.garage-player>button,.profile-divider{display:none}.garage-player{font-size:12px;gap:6px}.garage-resources>span:not(:first-child){display:none}.deploy-button{width:124px;font-size:20px;min-height:41px}.garage-vehicle{top:62px}.garage-vehicle h2{font-size:20px!important}.garage-vehicle h2>span{font-size:14px}.garage-nav{left:18px;top:117px;gap:3px}.garage-nav :is(button,.nav-active){font-size:14px;min-height:23px}.battle-mode>strong{font-size:14px}.battle-mode{min-width:100px;padding-bottom:9px}.operation-brief{right:18px;width:170px;top:117px;max-height:calc(100dvh - 370px)}.mission-banner,.training-banner{padding:9px;height:57px}.mission-banner strong,.training-banner strong{font-size:18px}.mission-banner>span,.training-banner>span{font-size:10px}.training-banner>b{font-size:25px;right:9px;top:11px}.garage-mission{padding:12px 9px;gap:9px;min-height:62px}.garage-mission>.game-icon{width:20px;height:20px}.garage-mission>strong{font-size:11px}.garage-mission small{font-size:8px}.garage-mission>span{display:none}.garage-service{left:46%;bottom:231px;gap:9px}.garage-service button{width:38px;height:38px}.garage-service button>.game-icon{width:23px;height:23px}.garage-bottom{left:18px;right:18px}.garage-fitout{gap:13px;justify-content:start;margin-bottom:9px;height:74px}.crew-avatar{width:30px;height:42px}.crew-avatar>span{top:46px;font-size:8px}.module-strip{padding-right:9px}.module-slot{width:36px;height:42px}.module-slot .game-icon{width:27px}.module-slot>small{top:47px;font-size:8px}.ammo-strip{display:none}.garage-filter{height:24px}.vehicle-carousel{height:86px}.vehicle-slot,.vocabulary-slot,.archive-slot,.crew-slot,.training-slot{min-width:130px;height:75px}.garage-camera-hint{font-size:8px}.garage-footer{gap:13px}.source-credit p{left:-80px;width:280px}.crew-roster{grid-template-columns:1fr 1fr}.crew-picture{height:210px}.vehicle-sheet{grid-template-columns:1fr;gap:25px}.binding-table{grid-template-columns:1fr}.settings-content{padding:20px 25px;min-height:0}.binding-table>div{min-height:38px}.window-header,.window-footer{padding:20px 24px}.window-footer>span{max-width:140px;line-height:1.7}.window-header h2{font-size:21px}.intel-grid{grid-template-columns:1fr}.report-hero{top:100px}.report-hero h2{font-size:30px}.report-hero .eyebrow{font-size:8px}.report-hero>p{margin-top:10px}.report-vehicle-label{display:none}.report-panel{left:4%;right:4%;top:230px;bottom:4%}.report-content{padding:20px}.report-header{left:22px;right:22px;gap:20px}.report-header>span{padding-left:18px;font-size:11px}.report-header time{font-size:9px}.report-header small{display:none}.results-grid{margin:20px 0}.report-content .modal-note{font-size:10px}.report-footer button{min-height:40px}.cipher-word{font-size:36px}.cipher-word.chinese-prompt{font-size:24px}.mission-hud{left:20px;max-width:250px}.battle-header{left:20px;right:20px}.compass{width:175px}.operation-status{gap:10px}.vehicle-hud{left:20px;width:170px}.map-hud{right:18px;width:145px}#minimap{width:145px;height:116px}.weapon-hud{width:130px}.weapon-hud>span{display:none}.radio-strip{left:20px;width:65vw;bottom:185px}.control-hint{left:20px;font-size:8px}.save-status{display:none}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

.equipment-art{display:block;width:42px;height:42px;flex-shrink:0;background-image:url('./assets/garage-equipment-atlas.png');background-size:600% 200%;background-position:var(--equipment-x) var(--equipment-y);filter:drop-shadow(0 2px 2px #000b)}.module-slot,.ammo-slot{padding:1px;flex-shrink:0}.module-slot>small{font-weight:400}.garage-fitout{overflow-x:auto;overflow-y:hidden;scrollbar-width:none;padding-bottom:15px}.garage-fitout::-webkit-scrollbar{display:none}@media(max-width:1050px){.garage-fitout{gap:12px}.module-strip{padding-right:12px}.module-slot,.ammo-slot{width:43px}.equipment-art{width:40px;height:40px}}@media(max-width:700px){.module-slot{width:34px}.equipment-art{width:32px;height:32px}.garage-fitout{gap:10px}.module-strip{padding-right:0;border-right:0}}

body[data-scene="garage"] :is(.battle-header,.mission-hud,.vehicle-hud,.weapon-hud,.map-hud,.radio-strip,.control-hint,.reticle,.save-status){display:none}

/* Functional garage: vehicle selection, research, loadouts and crew. */
.tank-carousel .vehicle-slot{width:calc((100% - 18px)/4);min-width:220px}
.tank-carousel .vehicle-slot canvas{width:100%;height:100%;object-fit:contain}
.tank-carousel .vehicle-slot strong{bottom:25px;right:12px;font-size:18px}
.tank-carousel .vehicle-slot>small{position:absolute;right:12px;bottom:7px;font-size:10px;color:#c2c5b3}
.tank-carousel .locked-vehicle canvas{filter:saturate(.6) brightness(.73)}
.tank-carousel .locked-vehicle:not(.selected){border-color:#828f8860}
.tank-carousel .vehicle-slot:hover{border-color:#d3bb7f}
.garage-fitout{justify-content:center}
.loadout-strip{display:flex;gap:9px;align-items:start}
.fitout-slot{width:58px;height:49px;position:relative;display:grid;place-items:center;padding:1px;background:#27332b8c;border:1px solid #abb8a76b}
.fitout-slot>small{position:absolute;top:54px;left:50%;transform:translateX(-50%);white-space:nowrap;font-size:9px;color:#bcc6b3}
.fitout-slot>.game-icon{width:25px;height:25px;color:#98a297}
.fitout-slot:hover{border-color:#dfc68a}.locked-slot{background:#21272688;border-color:#717b7855}
.locked-slot>.game-icon{opacity:.35}.return-owned{margin-top:10px;padding:8px 12px;background:#28332dd9;border:1px solid #b3bba266;font-size:12px;color:#d3d2ba;width:100%}
.crew-avatar.elite-portrait,.crew-picture.elite-portrait{background-image:url('./assets/elite-crew-portraits.png')}
body[data-dialog="garage-panel"] .overlay{background:#0c111766}
body[data-dialog="garage-panel"] .modal{width:min(1030px,calc(100vw - 56px));padding:0;background:#20292ef5;border:1px solid #a2b0ac55;box-shadow:0 15px 80px #0008}
.garage-panel-content{padding:25px 30px;overflow:auto;max-height:calc(100dvh - 205px);scrollbar-width:thin;scrollbar-color:#748178 #20292e}
.garage-panel-content h3{font-size:19px;font-weight:550;color:#e3e4d8;letter-spacing:0;margin:0 0 10px}
.garage-panel-content p{font-size:12px;line-height:1.85;color:#aebcb8}
.garage-panel-content button{font-size:12px}.garage-panel-content .secondary{border:1px solid #aeb3a759;padding:10px 14px;background:#252e2c}
.panel-intro{margin:0 0 24px;max-width:870px}.garage-panel-content small{line-height:1.7;color:#a6b6b1}
.garage-panel-content .vehicle-sheet h3{font-size:32px;margin-top:15px}.garage-panel-content .vehicle-sheet p{margin-bottom:18px}
.vehicle-sheet dd small{display:block;font-size:10px;text-align:right;color:#93a29a}
.research-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:13px}
.research-card{border:1px solid #b3bbae40;background:#18222580;padding:12px;display:flex;flex-direction:column}
.research-card canvas{width:100%;height:105px;object-fit:contain}.research-card h3{margin:5px 0;font-size:20px}
.research-card p{margin:4px 0 10px;font-size:11px;min-height:25px}.research-card p:nth-of-type(2){min-height:68px}
.research-card dl{margin:0 0 7px;font-size:11px}.research-card dl>div{display:flex;justify-content:space-between;margin:6px 0}.research-card dt{color:#a2b0ab}.research-card dd{margin:0;color:#d3d7c8}
.research-card button{margin-top:14px;padding:10px}.research-card.unlocked{border-color:#c8ba8580}
.unlock-meter{height:3px;background:#0c1317;margin:10px 0 8px}.unlock-meter i{display:block;height:100%;background:#b7b790;max-width:100%}
.research-card>small{font-size:10px}.armory-top,.radio-heading{display:flex;align-items:center;justify-content:space-between;gap:30px;margin-bottom:25px}
.armory-top h3,.radio-heading h3{font-size:25px;margin:8px 0}.armory-top p,.radio-heading p{margin:0;max-width:640px}
.armory-numbers{display:flex;gap:20px;flex-shrink:0}.armory-numbers span{font-size:11px;color:#9caea5}.armory-numbers b{display:block;font:18px ui-monospace,monospace;margin-top:8px;color:#dddcc7}
.armory-slots{display:flex;gap:12px;margin-bottom:23px}.armory-slots>button{flex:1;text-align:left;padding:14px 17px;border:1px solid #abb5aa4d;background:#1a252780;color:#c8d1c4}.armory-slots strong{font-size:12px;font-weight:500;display:block;margin-bottom:8px}.armory-slots span{font-size:11px;color:#9eafa5}.armory-slots .selected{border-color:#d0bc83;background:#5557433d}
.parts-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:17px}.part-card{border-top:1px solid #a9b6a55e;padding:12px 12px 0;display:flex;flex-direction:column;align-items:start;gap:9px}.part-card>.equipment-art{width:85px;height:85px}.part-card>h3{margin:0}.part-card>strong{font-size:13px;color:#d5d9b8;font-weight:500}.part-card p{font-size:11px;margin:0}.part-card>small{display:block;margin-top:auto}.part-card button{width:100%;margin-top:8px}
.reward-notice{padding:12px 14px;border-left:2px solid #b9aa73;background:#8d845017;color:#d5cfb0!important;font-size:12px}
.garage-action-feedback{min-height:20px;margin:18px 0 0;color:#ccd6a8!important;font-size:12px}.garage-action-feedback.error{color:#e2aa92!important}
.crew-development{display:grid;grid-template-columns:repeat(4,1fr);gap:19px}.crew-development>article{border-right:1px solid #acb5a733;padding-right:18px;min-width:0}.crew-development>article:last-child{border:0;padding:0}.crew-development .crew-picture{height:190px;background-size:400% auto;background-position-y:20%}.crew-development h3{font-size:17px;margin:16px 0 9px}.crew-development h3 small{font-size:11px;margin-left:5px}.crew-development>article>strong{font-size:11px;font-weight:500;color:#c7c9a9}.crew-development p{font-size:11px;min-height:42px;margin:10px 0}.crew-development>article>small{display:block;font-size:10px}.crew-development button{width:100%;margin:10px 0 0;font-size:11px;padding:10px 7px}
.elite-recruit{display:flex;gap:9px;align-items:center;margin-top:23px}.elite-head{width:38px;height:47px;flex-shrink:0;background-image:url('./assets/elite-crew-portraits.png');background-size:400% auto;background-position-y:28%;border:1px solid #a0aa9655}.elite-recruit>span{font-size:12px;color:#c2c9b4}.elite-recruit small{display:block;font-size:9px;margin-top:5px}
.campaign-map{display:grid;grid-template-columns:1fr 1fr;gap:45px}.campaign-sector{background:url('./assets/garage-reference-plate.png') 80% 25%/300% auto;padding:25px;border:1px solid #acb8ac55;box-shadow:inset 0 0 120px #09131ae8}.campaign-sector>span{font-size:11px;color:#c7c6a7}.campaign-sector h3{font-size:32px;margin:18px 0}.campaign-sector p{color:#d2d8cb}.campaign-sector strong{display:block;font-size:13px;color:#d3c99f;margin:22px 0}.campaign-sector button{min-width:190px}.campaign-map .mission-orders{margin:8px 0}.campaign-rewards{display:flex;gap:25px;padding:20px 0;border-bottom:1px solid #a1b09b44;font-size:12px;color:#aebbad}.campaign-rewards b{color:#d6d3ae;font-weight:500}
.radio-heading button{white-space:nowrap}.radio-word-list article{display:grid;grid-template-columns:1fr 1fr 110px;gap:18px;align-items:center;padding:18px 4px;border-top:1px solid #a6b5a044}.radio-word-list strong{font-size:20px;font-weight:500;color:#e0e4d4}.radio-word-list span{font-size:12px;color:#b7c5ba}.radio-word-list div:first-child>span{margin-left:18px}.radio-word-list b{font-size:12px;font-weight:500;color:#bbc6af}.radio-word-list small{display:block;font-size:10px;margin-top:5px}.radio-due{text-align:right}
.panel-actions{display:flex;gap:12px;margin-top:22px}.reward-breakdown p{font-size:12px;line-height:1.9;color:#b8c3b3}
.archive-list{display:grid}.archive-list>button{display:grid;grid-template-columns:1.4fr 1fr 1fr 90px;align-items:center;gap:15px;padding:19px 8px;text-align:left;background:transparent;border-bottom:1px solid #a8b5a340;font-size:12px}.archive-list>button:hover{background:#8a967315}.archive-list small{display:block;font-size:10px;margin-top:5px;color:#98aaa0}.archive-list strong{font:20px ui-monospace,monospace;color:#d5d8bd}.archive-list strong small{font:10px sans-serif}.empty-archive{text-align:center;padding:30px}.empty-archive>.game-icon{width:45px;height:45px;color:#adbaab;margin-bottom:23px}.empty-archive p{margin:17px 0 25px}
@media(max-width:1050px){.research-grid,.crew-development{grid-template-columns:repeat(2,1fr)}.crew-development>article:nth-child(2){border:0}.crew-development>article{padding-bottom:20px}.research-card p:nth-of-type(2){min-height:45px}.armory-numbers{gap:12px}.garage-panel-content{padding:22px}.garage-fitout{gap:16px}}
@media(max-width:700px){.tank-carousel .vehicle-slot{min-width:205px}.vehicle-core{display:none}.garage-fitout{gap:18px}.fitout-slot{width:43px}.fitout-slot .equipment-art{width:36px;height:36px}.fitout-slot>small{font-size:8px}.armory-top,.radio-heading{align-items:start;flex-direction:column;gap:16px}.parts-grid{grid-template-columns:1fr}.part-card{display:grid;grid-template-columns:80px 1fr;column-gap:18px}.part-card>.equipment-art{grid-row:1/5}.part-card>button{grid-column:1/-1}.campaign-map{grid-template-columns:1fr;gap:25px}.campaign-rewards{flex-wrap:wrap;gap:15px}.radio-word-list article{grid-template-columns:1fr 1fr}.radio-word-list div:first-child>span{display:block;margin:5px 0 0}.radio-due{grid-column:1/-1;text-align:left}.archive-list>button{grid-template-columns:1fr 1fr}.research-grid,.crew-development{gap:14px}.crew-development .crew-picture{height:160px}body[data-dialog="garage-panel"] .modal{width:calc(100vw - 24px)}.garage-panel-content{padding:18px;max-height:calc(100dvh - 185px)}}

.tank-carousel .vehicle-slot canvas{object-fit:cover}.crew-avatar>span{top:54px;font-size:9px;line-height:11px}.crew-avatar>span small{display:block;font-size:8px;line-height:10px;color:#8fa397}.vehicle-core .module-slot>small{font-size:9px}.world-label.navigation{color:#d4c48f;opacity:.85}

.crew-avatar>.crew-level{position:absolute;top:1px;right:1px;display:block;padding:1px 3px;font:8px ui-monospace,monospace;color:#e2dfc2;background:#172021db}.crew-avatar>span{top:55px;line-height:11px}

.crew-development .crew-picture{width:min(140px,100%);height:175px;margin:0 auto;background-position-y:20%}.crew-development p b{font-size:11px;font-weight:500;color:#c2cdb5}
.crew-development h3{margin:12px 0 7px}.crew-development p{margin:8px 0}.crew-development button{margin-top:8px;padding:8px 7px}.crew-development .elite-recruit{margin-top:14px}

.garage-panel-content:focus-visible{outline:1px solid #a6b9a77a;outline-offset:-2px}
/* Campaign map, new vocabulary and equipment generations share the industrial frame. */
.campaign-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.campaign-card{position:relative;overflow:hidden;padding:23px 20px;background:linear-gradient(150deg,#303b40e0,#171e22f0);border:1px solid #69777b66}.campaign-card.theme-valley{background:linear-gradient(145deg,#4c5045b0,#1d2626)}.campaign-card.theme-harbor{background:linear-gradient(145deg,#2c4656c0,#151f2b)}.campaign-number{position:absolute;right:12px;top:-10px;font:100px var(--font-display);color:#bdc2b313;pointer-events:none}.campaign-card>small{font-size:12px;color:#b4b99d}.campaign-card h3{font-size:27px;margin:12px 0}.campaign-card p{line-height:1.6;font-size:14px;color:#bdc6c9}.campaign-card ol{padding-left:19px;min-height:126px;font-size:13px;line-height:1.65;color:#b4bfc4}.campaign-card li{margin-bottom:9px}.campaign-card .campaign-rewards{display:block;min-height:88px;padding:12px 0;border-top:1px solid #91a6ae30}.campaign-card .campaign-rewards small{display:block;color:#aab9a3;line-height:1.6;margin-top:8px}.campaign-card button{width:100%;font-size:13px}.mission-word-tags{color:#d4caa4!important;font-family:var(--font-ui)}.radio-missions{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:18px}.radio-missions .selected{border-color:#c7b57b}.part-card{position:relative}.part-grade{position:absolute;right:16px;top:16px;color:#aeb5a4;font-weight:700;font-size:13px;letter-spacing:1px}.part-tier-2{border-color:#8f9c78aa;background:linear-gradient(130deg,#343d3580,#20282b)}.part-tier-3{border-color:#95b4c2aa;background:linear-gradient(130deg,#34495580,#20272b)}.part-tier-2>.equipment-art{filter:sepia(.3) brightness(1.1);transform:scale(1.07)}.part-tier-3>.equipment-art{filter:saturate(.6) brightness(1.25);transform:scale(1.15)}.lesson-words{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:22px 0}.lesson-words>div{padding:18px;background:#182027;border:1px solid #5d717b66}.lesson-words strong{display:block;font-size:28px;color:#e0e5df}.lesson-words span{display:block;margin:8px 0;color:#d4c79f}.lesson-words small{color:#a5b3bb}.reward-unlocks{color:#d8ce9f!important}#minimap{cursor:crosshair}.world-label.hostile b{white-space:nowrap}
@media(max-width:1050px){.campaign-grid{grid-template-columns:1fr}.campaign-card ol{min-height:0}.campaign-card .campaign-rewards{min-height:0}.campaign-card button{max-width:380px}.campaign-card{padding:18px}.campaign-number{font-size:90px}.lesson-words{grid-template-columns:1fr 1fr}}
.part-preview{display:block;width:100%;height:140px;object-fit:contain;background:radial-gradient(ellipse at 50% 65%,#687b8255,transparent 70%);margin:6px 0 12px}.part-card .part-grade{z-index:1}.garage-action-feedback:empty{display:none}
/* Unit 1: transmission records belong to the existing field terminal, not a new dashboard. */
.crew-transmission{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:#62716a42;border-top:1px solid #75807766;border-bottom:1px solid #75807766;margin:20px 0}
.crew-transmission article{padding:13px 16px;background:#222b2d}
.crew-transmission strong{font-family:Consolas,monospace;color:#e5d6b2;font-size:21px;display:block}
.crew-transmission span{display:block;color:#d2d6ce;font-size:14px;margin:5px 0}
.crew-transmission p{font-size:13px;line-height:1.5;margin:8px 0 4px;color:#d4dbd7}
.crew-transmission small{display:block;font-size:12px;color:#a2afab;line-height:1.5}
.crew-transmission .listen-button{font-size:12px;margin-top:8px;padding:4px 8px}
.grammar-note{border-left:2px solid #ae9c71;background:#b7a06a0e;padding:12px 16px;font-size:14px;line-height:1.6}
.chapter-progress{display:block!important;color:#c0c8bb!important;margin:10px 0 0 15px!important;font-size:12px!important;letter-spacing:.02em!important}
.chapter-progress.hidden{display:none!important}
.chapter-completion{display:flex;flex-wrap:wrap;gap:12px 24px;border-block:1px solid #78827866;padding:18px 0;color:#d1c5a6}
.chapter-resume{border-left:3px solid #d4b977!important}
.chapter-resume small{display:block;color:#a9b3ac;font-size:11px;margin-top:8px}
body[data-dialog="unit-briefing"] .modal{width:min(760px,94vw);max-height:90vh;overflow:auto}
body[data-dialog="unit-report"] .modal{width:min(760px,94vw)}
@media(max-width:650px){.crew-transmission{grid-template-columns:1fr}.chapter-progress{max-width:55vw;line-height:1.6}}
/* One atlas, eight stable identities. Each portrait cell keeps its native 1:2 ratio. */
.crew-avatar,.crew-development .crew-picture,.elite-head{background-image:none!important;position:relative;overflow:hidden}
.portrait-surface{display:block;height:100%;aspect-ratio:1/2;background-image:url('./assets/crew-eight-portraits.png');background-size:400% 200%;background-position-y:0;background-repeat:no-repeat;margin:0 auto}
.portrait-surface.crew-0{background-position-x:0}.portrait-surface.crew-1{background-position-x:33.333333%}.portrait-surface.crew-2{background-position-x:66.666667%}.portrait-surface.crew-3{background-position-x:100%}
.portrait-surface.elite-portrait{background-image:url('./assets/crew-eight-portraits.png');background-position-y:100%}
.crew-avatar{overflow:visible}.crew-avatar>.portrait-surface{position:absolute;inset:0;z-index:0;height:100%;width:100%;aspect-ratio:1/2}.crew-avatar>.crew-level,.crew-avatar>span:not(.portrait-surface){z-index:1}
.crew-roster-pair{display:grid;grid-template-columns:1fr 1fr;gap:8px}.crew-roster-pair figure{margin:0;min-width:0;border:1px solid #8d9a9c33;background:#141b1e}.crew-roster-pair figure.active-member{border-color:#b99a59;box-shadow:inset 0 -2px #b99a59}.crew-development .crew-roster-pair .crew-picture{height:auto;width:100%;aspect-ratio:1/2;max-height:185px}.crew-roster-pair figcaption{font-size:10px;text-align:center;padding:7px 2px;color:#b9c4c9}.elite-head>.portrait-surface{width:100%;height:100%}
.evolution-route{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:24px 0}.evolution-route article{border-top:2px solid #89949255;background:#182126;padding:12px;display:flex;flex-direction:column;gap:8px}.evolution-route article.preview-stage{border-top-color:#c5a56b}.evolution-route canvas{width:100%;height:auto}.evolution-route strong{font-size:14px;color:#d4d8d4}.evolution-route p{font-size:11px;line-height:1.6;min-height:36px;margin:0}.evolution-route small{font-size:10px;color:#b6ac8e}.evolution-route button{margin-top:auto;padding:8px}.narrative-note{border-left:2px solid #8e9a91;padding:8px 14px;background:#a4b5bc08;color:#bdc7c9;font-size:13px;line-height:1.8}
.theme-engineering{border-top-color:#c1a56b}.theme-digital{border-top-color:#7fabc1}.theme-city{border-top-color:#a3aa80}.theme-storm{border-top-color:#8a9ca8}
@media(max-width:700px){.evolution-route{grid-template-columns:1fr}.crew-roster-pair .crew-picture{max-height:160px}.crew-development{grid-template-columns:repeat(2,1fr)}}

.crew-avatar>.portrait-crop{position:absolute;inset:0;overflow:hidden;font-style:normal}.crew-avatar>.portrait-crop>.portrait-surface,.elite-head>.portrait-surface{width:100%;height:auto;aspect-ratio:1/2}

/* Second chapter: functional gunnery and field orders, kept out of the garage. */
.bore-reticle{display:none;position:absolute;width:10px;height:10px;border:1px solid #d2d7bc;border-radius:50%;transform:translate(-50%,-50%);pointer-events:none;box-shadow:0 0 0 1px #17211bc0;z-index:9}
body[data-valley="true"] .reticle::after{content:"";position:absolute;left:50%;top:50%;width:var(--dispersion,45px);height:var(--dispersion,45px);border:1px solid #c4c9aa80;border-radius:50%;transform:translate(-50%,-50%);transition:width .15s,height .15s}
.hit-detail{position:absolute;top:59%;left:50%;transform:translateX(-50%);font-size:12px;letter-spacing:1px;color:#ece4c2;text-shadow:0 2px 3px #000;pointer-events:none}
.mechanical-status{position:absolute;left:38px;bottom:112px;font-size:10px;letter-spacing:1px;color:#bcc7b8;text-shadow:0 1px 2px #000;pointer-events:none}
.field-order{position:absolute;left:38px;top:235px;width:min(335px,32vw);padding:13px 15px;background:linear-gradient(90deg,#141e20e8,#141e2070);border-left:2px solid #acac82;color:#e3e2d1;z-index:10}
.field-order>small{color:#b6b89f;font-size:9px;letter-spacing:2px}.field-order>p{font-size:13px;line-height:1.55;margin:7px 0 9px}.field-order>button{border:0;background:none;color:#c0cab6;font-size:11px;margin-right:16px;padding:3px 0;cursor:pointer}
.field-dispatch{margin:22px 0;padding:16px 19px;border-left:2px solid #b3ac87;background:#10181970}.field-dispatch>small{font-size:10px;letter-spacing:1px;color:#aeb69e}.field-dispatch>p{font-size:18px;line-height:1.55;color:#e2e2d3;margin:7px 0 13px}.field-dispatch .translation-hint{font-size:13px;color:#b5c0b4}.field-dispatch button{margin-right:16px}
.field-action-report{margin:20px 0;border-top:1px solid #6e7e7540;padding-top:12px}.field-action-report>div{display:flex;justify-content:space-between;gap:20px;padding:9px 0;border-bottom:1px solid #6e7e7528;font-size:12px}.field-action-report strong{font-weight:400}.field-action-report span{color:#bac6a2}
body[data-scene="garage"] :is(.field-order,.mechanical-status,.hit-detail,.bore-reticle),body:not([data-dialog=""]) :is(.field-order,.hit-detail,.mechanical-status){display:none!important}
@media(max-width:900px){.field-order{top:225px;left:20px;width:260px}.field-order>p{font-size:12px}.mechanical-status{left:20px;bottom:108px}}

/* Session handoff and source-based learning tiers use the existing field terminal. */
.session-meta{font-size:13px;line-height:1.8;color:#b7c2c7;border-left:2px solid #b49b67;padding:8px 12px;background:#ffffff05}.vocab-tier{display:block;color:#bda977;font-size:11px;letter-spacing:.08em;margin-bottom:5px}
/* Complete campaign: compact chapter selection, an actual tactical map and a fixed deployment rail. */
body[data-dialog="garage-panel"] .modal:has(.campaign-layout){width:min(1220px,96vw)}
.modal:has(.campaign-layout) .garage-panel-content{padding:20px 24px;max-height:calc(100dvh - 190px)}
.campaign-intro{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:18px}.campaign-intro p{font-size:12px;color:#b7c0c2;margin:7px 0 0;line-height:1.7}.campaign-intro>span{white-space:nowrap;color:#c9bb96;font-size:12px}
.campaign-layout{display:grid;grid-template-columns:270px minmax(0,1fr);gap:20px;align-items:start}.chapter-selector{display:grid;gap:5px}.chapter-option{display:flex;align-items:center;gap:12px;text-align:left;min-height:76px;padding:13px 12px;background:#182124;color:#ccd2ce;border:1px solid #606d7140;border-left:2px solid transparent;cursor:pointer}.chapter-option:hover{background:#303a3d;border-color:#92978a80}.chapter-option.selected{border-left-color:#cfac6a;background:linear-gradient(90deg,#554d37aa,#303838);border-color:#a3956f70}.chapter-number{font:24px var(--font-display);color:#8b9797;min-width:26px}.chapter-option.selected .chapter-number{color:#d8c391}.chapter-option>span:nth-child(2){min-width:0;flex:1}.chapter-option strong{display:block;font-size:13px;font-weight:600;line-height:1.4}.chapter-option small{display:block;color:#9eacad;font-size:10px;line-height:1.5;margin-top:5px}.chapter-option em{font-style:normal;font-size:9px;color:#babda8;white-space:nowrap}
.chapter-detail{border:1px solid #7d8a8c50;background:#20292cf2;min-width:0;border-top:2px solid #b1a17b}.chapter-detail-top{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:20px 23px;border-bottom:1px solid #a3b0ae20}.chapter-detail-top h3{font-size:29px;line-height:1.3;margin:9px 0 5px}.chapter-detail-top p{font-size:12px;color:#aebbbd;margin:0}.chapter-size{font:17px ui-monospace,monospace;white-space:nowrap;color:#c9c8b4}.chapter-size small{display:block;font-size:9px;text-align:right;color:#91a1a3;margin-top:6px}.chapter-operation{display:grid;grid-template-columns:1.05fr 1fr;gap:18px;padding:18px 23px}.chapter-map-wrap{align-self:start;border:1px solid #71858b50;background:#172428}.campaign-map{display:block;width:100%;height:auto;max-height:240px}.map-caption{display:flex;justify-content:space-between;padding:9px 10px;color:#a4b5b5;font-size:9px;border-top:1px solid #82949530}.chapter-brief>p:first-child{font-size:12px;line-height:1.9;color:#c1c9c7;margin:0 0 14px}.chapter-vocab{display:flex;gap:18px;color:#a8b3ad;font-size:10px}.chapter-vocab b{font:23px var(--font-display);color:#d6cfb7;display:block;margin-bottom:3px}.chapter-unlock{font-size:11px;line-height:1.7;color:#c7c0a2;margin:15px 0 0;border-top:1px solid #8e9a9430;padding-top:10px}.chapter-unlock small{display:block;color:#8e9d9c;font-size:9px}.chapter-save-info{font-size:11px;color:#d1bd86;line-height:1.8}.chapter-save-info small{color:#9aa9a8;font-size:9px}.chapter-segments{list-style:none;padding:0 23px;margin:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 18px}.chapter-segments li{display:flex;gap:11px;align-items:center;border-top:1px solid #86959430;padding:10px 0}.chapter-segments li>span{color:#9a9e88;font:12px ui-monospace,monospace}.chapter-segments strong{font-size:12px;font-weight:500;display:block}.chapter-segments small{display:block;font-size:9px;color:#90a19e;margin-top:4px}.chapter-deploy{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 23px;border-top:1px solid #89999440;background:#172023;margin-top:8px}.chapter-deploy>small{font-size:10px;line-height:1.8;color:#aab5b1}.chapter-deploy button{min-width:180px;padding:12px 20px;font-size:14px}.chapter-deploy button span{margin-left:18px}.campaign-source-note{font-size:10px;color:#879996;line-height:1.7;margin:15px 0 0}
/* Briefings use a readable dossier with an always reachable action footer. */
body[data-dialog="unit-briefing"] .modal{width:min(1080px,96vw);padding:0;max-height:calc(100dvh - 40px);overflow:hidden;display:flex;flex-direction:column;background:#222b2ef5;backdrop-filter:blur(6px)}
.briefing-header{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:22px 27px 18px;border-bottom:1px solid #82918e40}.briefing-header h2{font-size:28px;line-height:1.3;margin:8px 0 0}.briefing-index{font:20px var(--font-display);color:#d1bd8b;white-space:nowrap}.briefing-index small{color:#718482;font-size:13px}.briefing-header+.session-meta{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:11px;line-height:1.6;padding:10px 27px;margin:0;border-left:0;border-bottom:1px solid #7f8e8740;background:#111c2050;color:#b8c0b2}.briefing-layout{display:grid;grid-template-columns:minmax(240px,.72fr) minmax(0,1.3fr);min-height:0;overflow:auto;scrollbar-width:thin}.briefing-story{padding:24px 25px;border-right:1px solid #74868430;background:#14202350}.briefing-story .lead{font-size:14px;line-height:1.95;margin:12px 0 20px}.briefing-story .field-dispatch{padding:12px 13px;margin:18px 0}.briefing-story .field-dispatch p{font-size:15px;line-height:1.65}.briefing-story .modal-note{font-size:11px;line-height:1.9}.briefing-words{min-width:0;padding:14px 18px}.briefing-words .crew-transmission{margin:0;border:0;gap:10px;background:none}.briefing-words .crew-transmission article{border:1px solid #78878440;background:linear-gradient(140deg,#303a3a80,#1d282980);padding:12px 14px}.briefing-words .crew-transmission strong{font-size:23px;letter-spacing:.02em;overflow-wrap:anywhere}.word-card-top{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:9px}.word-card-top .vocab-tier{margin:0;font-size:10px;color:#b6aa83}.word-card-top .listen-button{margin:0!important;padding:2px 5px!important;border:0;font-size:10px!important;color:#abbab7;background:transparent}.reading-notes{border-top:1px solid #748a843d;padding:13px 0;color:#b8c3ba;font-size:11px;line-height:1.9}.reading-notes summary{cursor:pointer;color:#c7bd9b}.briefing-footer{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:16px 25px;border-top:1px solid #84948a50;background:#172125;flex-shrink:0}.briefing-footer>small{font-size:9px;line-height:1.8;color:#8b9d99}.briefing-footer>div{display:flex;gap:10px;flex-shrink:0}.briefing-footer button{padding:12px 20px;font-size:13px}
body[data-dialog="drill"] .modal,body[data-dialog="review"] .modal{width:min(580px,94vw);padding:25px 30px;background:#202a2ef5;backdrop-filter:blur(6px)}.terminal-header{padding-bottom:12px;border-bottom:1px solid #7b8b8650}.transmission-meta{margin-top:14px;padding:8px 0}.exercise-context{font-size:14px;line-height:1.8;margin-top:16px}.cipher-word{font-size:40px;line-height:1.3;overflow-wrap:anywhere;letter-spacing:3px;margin:18px 0 4px}.cipher-word.chinese-prompt{font-size:27px;letter-spacing:1px}.input-label{margin-top:15px}.helper-row{margin-top:10px}.review-input{min-height:48px;font-size:22px}.feedback{padding:10px 13px;margin-top:12px}.error-message:empty{min-height:0}.transmission-meta+.exercise-context{min-height:44px}#drill-form .button-row{display:flex;gap:10px;margin-top:18px}#drill-form .button-row>.primary{flex:1}#drill-form .button-row>.secondary{font-size:11px;flex:0 0 auto;padding-inline:14px}
body[data-dialog="session"] .modal{width:min(650px,94vw);max-height:calc(100dvh - 40px)}body[data-dialog="unit-report"] .modal{max-height:calc(100dvh - 40px);overflow:auto}body[data-dialog="unit-report"] .button-row{position:sticky;bottom:-32px;background:#202a2ef5;padding:15px 0 4px;z-index:1}
/* Keep the aiming area clear: active objectives at left, orders in a compact radio panel. */
body[data-scene="battle"] .mission-hud{max-width:350px}.mission-hud #objective{font-size:14px;line-height:1.6}.chapter-progress{font-size:10px!important;line-height:1.65!important;max-width:330px;color:#c2c8b7!important}.field-order{top:220px;left:35px;width:290px;padding:10px 13px;background:linear-gradient(90deg,#142022df,#14202270)}.field-order>p{font-size:12px;line-height:1.6;margin:6px 0}.radio-strip{max-width:390px;width:min(390px,38vw)}.radio-strip>p{font-size:11px;line-height:1.6;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.mechanical-status{font-size:9px;letter-spacing:.5px}.save-status{max-width:48vw;font-size:9px}
@media(max-width:1000px){.campaign-layout{grid-template-columns:225px minmax(0,1fr);gap:12px}.chapter-detail-top,.chapter-operation,.chapter-deploy{padding-inline:16px}.chapter-segments{padding-inline:16px}.chapter-operation{grid-template-columns:1fr}.chapter-map-wrap{max-height:180px;overflow:hidden}.campaign-map{max-height:155px}.chapter-brief{display:grid;grid-template-columns:1fr 1fr;gap:10px}.chapter-brief>p:first-child{grid-column:1/-1}.chapter-unlock{margin:0}.chapter-detail-top h3{font-size:25px}.briefing-layout{grid-template-columns:260px 1fr}.briefing-story{padding:18px}.briefing-words{padding:12px}.briefing-words .crew-transmission{gap:7px}.briefing-words .crew-transmission article{padding:10px}.briefing-header+.session-meta{align-items:start;font-size:10px}}
@media(max-width:720px){.campaign-layout{display:block}.chapter-selector{grid-template-columns:repeat(3,1fr);gap:5px;margin-bottom:12px}.chapter-option{display:block;min-height:90px;padding:10px}.chapter-option strong{font-size:10px}.chapter-option small{display:none}.chapter-number{font-size:18px;display:block;margin-bottom:5px}.chapter-option em{font-size:8px;display:block;margin-top:6px}.chapter-size{font-size:13px}.chapter-operation{grid-template-columns:1fr}.chapter-brief{display:block}.chapter-segments{grid-template-columns:1fr 1fr}.chapter-deploy{position:sticky;bottom:-21px;z-index:1}.chapter-deploy button{min-width:135px;padding:12px}.chapter-deploy>small{font-size:9px}.briefing-layout{grid-template-columns:1fr;overflow:auto}.briefing-story{border-right:0;border-bottom:1px solid #74868430}.briefing-story .lead{font-size:13px}.briefing-header{padding:17px 18px}.briefing-header h2{font-size:23px}.briefing-header+.session-meta{display:block;padding:9px 18px}.briefing-header+.session-meta span{display:block}.briefing-footer{padding:12px 16px;display:block}.briefing-footer>small{display:none}.briefing-footer>div{display:flex}.briefing-footer button{flex:1;padding:12px 8px;font-size:12px}.briefing-words .crew-transmission{grid-template-columns:1fr 1fr}.field-order{top:210px;width:240px;left:20px}.mission-hud{left:20px;max-width:280px}.radio-strip{left:20px;max-width:260px;width:42vw}.map-hud{width:160px;right:16px}.map-hud canvas{width:160px;height:128px}body[data-dialog="drill"] .overlay{padding-left:0;justify-content:center}.cipher-word{font-size:32px}.terminal-header .eyebrow{font-size:9px}.terminal-state{font-size:9px}}
/* Keep deployment reachable even on a 720px-high game window. */
.modal:has(.campaign-layout) .garage-panel-content{padding:14px 24px}.campaign-layout{grid-template-columns:244px minmax(0,1fr);gap:16px}.campaign-intro{margin-bottom:12px}.chapter-option{min-height:61px;padding:10px 11px}.chapter-option small{margin-top:3px}.chapter-detail{display:flex;flex-direction:column;max-height:calc(100dvh - 285px);overflow:hidden}.chapter-detail-top{padding:14px 20px;flex-shrink:0}.chapter-detail-top h3{font-size:26px;margin:6px 0 3px}.chapter-dossier{min-height:0;overflow:auto;scrollbar-width:thin;scrollbar-color:#737f73 #1b272a}.chapter-operation{padding:14px 20px;gap:15px}.campaign-map{height:165px;max-height:165px}.chapter-segments li{padding:9px 0}.chapter-deploy{padding:12px 20px;flex-shrink:0;margin-top:0}.chapter-deploy button{padding:11px 18px}.campaign-source-note{margin:10px 0 0}
@media(max-width:1000px){.campaign-layout{grid-template-columns:215px minmax(0,1fr);gap:12px}.chapter-operation{grid-template-columns:1fr 1fr}.chapter-map-wrap{max-height:none}.campaign-map{height:145px}.chapter-brief{display:block}.chapter-brief>p:first-child{font-size:11px}.chapter-brief .chapter-unlock{margin-top:10px}}
@media(max-width:720px){.campaign-layout{display:block}.chapter-option{min-height:86px}.chapter-detail{max-height:580px}.chapter-operation{grid-template-columns:1fr}.chapter-deploy{position:static}.chapter-dossier{max-height:400px}.chapter-selector{margin-bottom:12px}}
.chapter-detail-top .eyebrow{margin:0;font-size:9px;line-height:1.4;letter-spacing:1.4px}.chapter-detail-top p{line-height:1.4}.chapter-segments{display:grid;grid-template-columns:repeat(var(--segment-count,5),minmax(0,1fr));gap:10px;padding:8px 20px;flex-shrink:0;border-top:1px solid #81918b30}.chapter-segments li{display:block;padding:4px 0;border-top:0}.chapter-segments li>span{font-size:9px;display:block;margin-bottom:4px}.chapter-segments strong{font-size:10px;line-height:1.5;font-weight:500}.chapter-segments small{font-size:8px;line-height:1.6}.chapter-dossier{flex:1}.chapter-deploy .primary{letter-spacing:.02em}
@media(max-width:720px){.chapter-segments{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.chapter-detail{max-height:660px}}
/* Original-quality streaming: menus are usable before the 3D scene is ready. */
.garage-render-pending #game{visibility:hidden}
.resource-status{position:fixed;z-index:90;left:50%;bottom:172px;transform:translateX(-50%);width:min(430px,88vw);padding:13px 16px;background:#192326f2;border:1px solid #77827766;box-shadow:0 5px 24px #0005;color:#c9cfca;font-size:12px;pointer-events:auto}
.download-numbers{display:flex;align-items:center;justify-content:space-between;gap:12px;line-height:1.6}.download-numbers strong{font-weight:500}.download-numbers b{color:#d5c393;font:15px ui-monospace,monospace}.download-numbers span{color:#9faeaa;font-size:11px}.download-track{height:4px;background:#53635b4d;margin:9px 0;overflow:hidden}.download-track>i{display:block;height:100%;width:0;background:#c5b07d;transition:width .12s linear}.resource-status small,.resource-gate>small{display:block;margin-top:5px;font-size:10px;color:#83948e;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.resource-status button{padding:2px 8px;min-height:24px;font-size:11px;background:#88351f;color:#efe1c5}.resource-gate{padding:18px 0}.resource-gate .lead{margin-bottom:22px}.resource-gate .download-numbers b{font-size:24px}.resource-gate .download-track{height:5px;margin:13px 0}.resource-gate .download-numbers span{font-size:12px}
body[data-dialog="resources"] .resource-status{display:none}
body[data-scene="field"] .resource-status{left:auto;right:24px;bottom:258px;transform:none;width:270px;opacity:.88}
@media(max-width:720px){.resource-status{bottom:148px}body[data-scene="field"] .resource-status{right:12px;bottom:238px;width:230px}}
