:root{color-scheme:dark;--glass:#131d23ed;--line:#c6d6d81b;--text:#eef1e9;--muted:#a2b2b4;--accent:#e7b66a;--blue:#85d7e1;--red:#ef9a82;--mono:'Courier New',monospace}*{box-sizing:border-box}body{margin:0;background:#152126;color:var(--text);font:14px Arial,sans-serif}button,input,select{font:inherit}button{cursor:pointer;color:inherit;background:none;border:0;transition:background .15s,transform .15s}button:hover:not(:disabled){filter:brightness(1.15)}button:active:not(:disabled){transform:translateY(1px)}button:disabled{opacity:.38;cursor:not-allowed}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:3px}a{color:inherit;text-decoration:none}.hidden{display:none!important}.primary{background:var(--accent);color:#172329;font-weight:800;letter-spacing:1px;height:52px;padding:0 20px;display:flex;align-items:center;justify-content:space-between;font-size:12px;width:100%}.secondary{background:#c5d3ca0c;border:1px solid #c5d3ca40;padding:12px 18px;font-size:13px}.quiet{font-size:12px;color:var(--muted);padding:8px 0}.eyebrow{font:11px var(--mono);letter-spacing:2px;color:var(--accent)}.brand{display:flex;align-items:center;gap:13px;letter-spacing:3px;font-size:21px;font-weight:800}.brand>b{font:28px Georgia,serif;border:1px solid #b7c7c270;padding:6px}.brand small{display:block;font:10px var(--mono);color:var(--accent);letter-spacing:5px;margin-top:6px}#menu{min-height:100svh;position:relative;display:grid;grid-template-columns:1fr 420px;align-items:center;gap:80px;padding:120px 7% 100px;overflow:hidden}.menu-art{position:absolute;inset:0;background:url('/cover.png') center 52%/cover}.menu-vignette{position:absolute;inset:0;background:linear-gradient(90deg,#101c25c0,#15212d18 60%,#0b141cee),linear-gradient(0deg,#14212bec,transparent 70%)}.menu-header{position:absolute;top:35px;left:7%;right:7%;display:flex;align-items:center;gap:40px}.menu-header .version{font:10px var(--mono);letter-spacing:2px;color:#d3d9cc85;border-left:1px solid #cbd7c62a;padding-left:30px}.menu-header>.quiet{margin-left:auto}.menu-title{position:relative;margin-top:5vh}.menu-title h1{font-family:Impact,'Arial Narrow',sans-serif;font-size:clamp(65px,7.7vw,130px);letter-spacing:1px;font-weight:400;line-height:1;margin:25px 0 23px;color:#f1efdf}.menu-title p{font-size:19px;line-height:1.6;color:#c3cec8}.menu-tags{display:flex;gap:20px;margin-top:32px;font:11px var(--mono);color:#b4c5bd}.menu-tags span{border-bottom:1px solid #adc5b83b;padding-bottom:11px}.menu-panel{position:relative;background:#172229ee;border:1px solid #b3c1b337;padding:31px;backdrop-filter:blur(16px);box-shadow:0 20px 100px #0004}.menu-panel h2{font-size:29px;letter-spacing:-1px;font-weight:500;margin:13px 0 25px}.mode-switch{display:flex;background:#0f191e;padding:4px;margin-bottom:24px}.mode-switch button{flex:1;padding:12px 8px;font-size:12px;color:#adbdbd}.mode-switch button.active{background:#364448;color:#f3efdf}.menu-panel label{display:block;color:#b6c5c5;font-size:12px;margin:18px 0 8px}input:not([type=checkbox]):not([type=range]),select{width:100%;height:43px;background:#0f191ecc;border:1px solid #b6caca30;color:#e1e7df;padding:0 12px;border-radius:0;font-size:14px}input::placeholder{color:#778d90}.setup-options label{font-size:12px}.setup-options select{font-size:13px;display:block;margin-top:8px}.menu-panel .primary{margin-top:26px}.simple-promise{font-size:12px;line-height:1.7;color:#9badae;margin:15px 0 0}.join-row{display:grid;grid-template-columns:1fr 100px;gap:10px}.join-row input{font-family:var(--mono);letter-spacing:5px;text-transform:uppercase}.menu-footer{position:absolute;bottom:29px;left:7%;right:7%;display:flex;justify-content:space-between;font:10px var(--mono);letter-spacing:1px;color:#a5b7af}.menu-footer i,.live-dot{display:inline-block;width:5px;height:5px;background:#b6d898;border-radius:50%;margin-right:7px}.room-code{padding:20px 0;text-align:center;background:#0c161b;border:1px dashed #a6bcaa45;margin:22px 0}.room-code small{font:10px var(--mono);letter-spacing:2px;color:#a4b9b6}.room-code strong{display:block;font:34px var(--mono);letter-spacing:7px;color:var(--accent);margin:12px 0}.player-row{display:flex;align-items:center;gap:12px;padding:16px 0;border-bottom:1px solid var(--line)}.player-avatar{width:39px;height:40px;display:grid;place-items:center;border:1px solid currentColor;color:var(--blue);font:17px Georgia,serif}.player-row strong{display:block;font-size:14px}.player-row small{display:block;font-size:11px;color:var(--muted);margin-top:5px}.player-state{margin-left:auto;font:11px var(--mono);color:#b1c990}.lobby-link{font-size:12px;line-height:1.8;color:#adbfbc;overflow-wrap:anywhere}.lobby-link code{color:var(--accent)}.lobby-buttons{display:flex;gap:10px;margin:18px 0}.lobby-buttons button{flex:1;margin:0!important;font-size:11px}.lobby-buttons .primary{padding:0 10px}
#battle{position:relative;width:100%;height:100svh;min-height:600px;overflow:hidden;background:#abb8ae}#world{display:block;width:100%;height:100%;touch-action:none;outline-offset:-3px}.battle-top{position:absolute;top:0;left:0;right:0;height:75px;background:linear-gradient(#142028fa,#142028cf);border-bottom:1px solid #d3e1d321;display:flex;align-items:center;justify-content:space-between;padding:0 26px;z-index:12}.battle-brand{display:flex;align-items:center;gap:13px;width:220px}.battle-brand>b{font:24px Georgia,serif;border:1px solid #bdc8b363;padding:4px}.battle-brand>span{font-size:18px;letter-spacing:2px;font-weight:700}.battle-brand small{display:block;font:9px var(--mono);letter-spacing:1px;color:#b4c2b4;margin-top:6px}.battle-score{display:flex;align-items:center;gap:24px}.score{font:36px Impact,sans-serif;min-width:45px}.blue{color:var(--blue)}.red{color:var(--red)}.score-middle{text-align:center}#zone-status{display:flex;gap:8px;justify-content:center}#zone-status>button{display:grid;place-items:center;width:31px;height:27px;font-weight:700;background:#87918428;border-bottom:2px solid #e5cb97;color:#ead39c;font-size:13px}#victory-target{display:block;font:9px var(--mono);color:#c2caba;letter-spacing:1px;margin-top:7px}.battle-time{display:flex;align-items:center;gap:11px;width:220px;justify-content:flex-end}.battle-time>span{font:17px var(--mono);color:#d4dfd3}.battle-time>button{width:30px;font-size:21px;color:#b4c6c1}.mission-pill{position:absolute;top:91px;left:50%;transform:translateX(-50%);background:#15252bdc;border:1px solid #cbdbc52b;padding:12px 40px 12px 17px;white-space:nowrap;backdrop-filter:blur(8px);z-index:10}.mission-pill b{font-size:10px;letter-spacing:1.4px;color:#e0c58f;display:block;margin-bottom:5px}.mission-pill>span{font-size:12px;color:#d2ded2}.mission-pill>button{position:absolute;right:10px;top:21px;border:1px solid #a6b6a652;border-radius:50%;width:19px;height:19px;font-size:11px}.roster{position:absolute;left:17px;top:94px;width:216px;background:var(--glass);border:1px solid #bbd1c32c;backdrop-filter:blur(12px);max-height:calc(100% - 415px);display:flex;flex-direction:column;z-index:11}.panel-caption{font:9px var(--mono);letter-spacing:1px;color:#becfc4;display:flex;justify-content:space-between;padding:13px}.panel-caption>span{font-size:9px;color:#90a89d}#roster-list{overflow:auto;min-height:0}.roster-card{width:100%;text-align:left;display:flex;align-items:center;gap:10px;padding:11px 10px;border-top:1px solid var(--line);border-left:2px solid transparent}.roster-card:hover{background:#c7ddba0c}.roster-card.selected{background:#b3d5c520;border-left-color:var(--blue)}.roster-card img{width:49px;height:33px;object-fit:contain}.roster-card>span{min-width:0;flex:1}.roster-card strong{font-size:12px;font-weight:500;display:block;white-space:nowrap}.roster-card small{font-size:10px;color:#9eb5a8;display:block;margin-top:4px}.roster-card .health{margin-top:6px;background:#778c782a;height:2px;width:100%;display:block}.health>i{display:block;height:2px;background:#b1cc93}.roster-all{font-size:10px;color:#bccdc1;border-top:1px solid var(--line);padding:12px 8px;white-space:nowrap}.roster-all kbd{font-size:8px;margin-left:5px}.field-feed{position:absolute;right:18px;top:94px;width:245px;pointer-events:none;z-index:10}.field-feed>div{font-size:11px;line-height:1.6;background:#142329d9;border-left:2px solid #e6ba77;margin-bottom:7px;padding:9px 12px;color:#dfebd9;box-shadow:0 5px 20px #0002;animation:notice .3s}.field-feed small{font:9px var(--mono);color:#d3c29a;display:block;margin-bottom:3px}.selection-info{position:absolute;left:17px;bottom:194px;width:256px;min-height:151px;background:var(--glass);border:1px solid #bbd1c32c;padding:17px;z-index:11;backdrop-filter:blur(10px)}.selection-empty>span,.selection-detail>small{font:9px var(--mono);color:#bdd1ba;letter-spacing:1px}.selection-empty>strong{display:block;font-size:22px;font-weight:500;margin:10px 0}.selection-empty p{font-size:12px;line-height:1.8;color:#a6bdb1;margin:0}.selection-detail>img{width:100px;height:65px;object-fit:contain;float:right;margin-top:5px}.selection-detail h3{font-size:18px;line-height:1.2;font-weight:500;margin:10px 0 8px}.selection-detail p{font-size:11px;line-height:1.6;color:#adc3b8;margin:8px 0}.selection-detail .detail-health{font:10px var(--mono);color:#bdd69a}.unit-commands{display:flex;gap:7px;margin-top:13px;clear:both}.unit-commands button{border:1px solid #c2d3ba3c;padding:8px 9px;font-size:11px;flex:1}.unit-commands button:last-child{color:#e6c694}.camera-tools{position:absolute;bottom:194px;left:50%;transform:translateX(-50%);display:flex;background:#142229ed;border:1px solid #b2cbb535;z-index:10}.camera-tools button{height:34px;min-width:33px;padding:0 10px;font-size:18px;border-right:1px solid var(--line);color:#d4e1d1}.camera-tools span{font-size:11px;margin-left:5px}.minimap-wrap{position:absolute;right:17px;bottom:194px;width:236px;background:#142229ef;border:1px solid #b8ceb637;z-index:11}.minimap-wrap>.panel-caption{font-size:9px;padding:10px 12px}#minimap{width:100%;display:block;cursor:crosshair;touch-action:none}.minimap-key{display:flex;justify-content:space-around;padding:8px 3px;font-size:8px;color:#b9d4be}.minimap-key>span:first-child{color:var(--blue)}.minimap-key>span:nth-child(2){color:var(--red)}.reinforcements{position:absolute;bottom:31px;left:0;right:0;height:146px;background:linear-gradient(#17272feb,#132028fa);border-top:1px solid #d0e1bc3c;display:flex;align-items:stretch;gap:18px;padding:17px 20px;z-index:12;backdrop-filter:blur(10px)}.budget{width:131px;flex-shrink:0;border-right:1px solid #afc5b329;padding-right:15px;display:flex;flex-direction:column;justify-content:center}.budget>span{font:9px var(--mono);letter-spacing:1px;color:#b4c6bc}.budget strong{font:37px var(--mono);color:var(--accent);margin:7px 0}.budget small{font-size:10px;color:#a9bcb0}.reinforcement-cards{display:flex;gap:7px;flex:1;min-width:0;overflow-x:auto;scrollbar-width:thin}.reinforcement-card{position:relative;min-width:95px;flex:1;border:1px solid #a9c3ad30;background:#b8d1bd06;text-align:left;padding:8px 9px 7px;max-width:150px;overflow:hidden}.reinforcement-card:hover{background:#b6d1b31c;border-color:#bcdaa55c}.reinforcement-card img{position:absolute;left:0;top:2px;width:100%;height:74px;object-fit:contain;pointer-events:none}.reinforcement-card .hotkey{font:9px var(--mono);color:#b7cabc;position:absolute;top:6px;left:7px;border:1px solid #b4c7b328;padding:2px 4px}.reinforcement-card>strong{position:absolute;bottom:24px;left:9px;font-size:9px;letter-spacing:.4px;white-space:nowrap;color:#d8e5d7}.reinforcement-card>.price{position:absolute;bottom:7px;left:9px;right:9px;font:11px var(--mono);color:#e7c188;display:flex;justify-content:space-between}.support-controls{display:flex;gap:7px;width:177px;flex-shrink:0}.support-controls button{flex:1;background:#b8d1bd06;border:1px solid #a9c3ad30;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:7px}.support-controls button.active{border-color:var(--accent);background:#e7b66a24}.support-controls button>span{font-size:28px;color:#d6dfcc;margin-bottom:7px}.support-controls b{font-size:10px;font-weight:500;white-space:nowrap}.support-controls small{font:9px var(--mono);color:#e7c188;margin-top:7px}.battle-bottom{position:absolute;bottom:0;left:0;right:0;height:31px;background:#0d1b22;display:flex;align-items:center;justify-content:space-between;padding:0 22px;font-size:10px;color:#a8bdb3;z-index:12}.battle-bottom>span:last-child{font:9px var(--mono);color:#819f92}.unit-label{position:absolute;transform:translate(-50%,-100%);pointer-events:none;display:flex;flex-direction:column;align-items:center;z-index:5;will-change:left,top}.unit-label>span{font:8px var(--mono);padding:3px 6px;background:#13252ade;color:var(--blue);border-top:1px solid #9ed7d752;white-space:nowrap}.unit-label.enemy>span{color:#f7b29d;border-color:#dc8b7760;background:#332d2ade}.unit-label.selected>span{background:#d4e6bb;color:#182b27}.unit-label>i{height:3px;width:43px;background:#18241dc2;display:block;margin-top:3px}.unit-label>i>b{height:3px;display:block;background:#aeca93}.unit-label.enemy>i>b{background:#e0917b}.unit-label .heal{color:#c0e295;font-size:12px}.zone-label{position:absolute;transform:translate(-50%,-100%);display:flex;flex-direction:column;align-items:center;z-index:6;pointer-events:auto;background:none;padding:0}.zone-label>b{width:29px;height:31px;display:grid;place-items:center;background:#1e2c2ee6;border:1px solid #ead090c9;color:#ebd29a;font:18px Impact,sans-serif}.zone-label>small{font:9px var(--mono);text-transform:uppercase;letter-spacing:.3px;color:#e5dfbc;background:#18262ccc;padding:4px 7px;white-space:nowrap;margin-top:4px}.zone-label>i{height:3px;width:50px;background:#203033d9;margin-top:4px}.zone-label>i>span{height:3px;display:block;background:#e3c793}#unit-labels,#zone-labels{position:absolute;inset:0;pointer-events:none;overflow:hidden}#selection-box{position:absolute;border:1px solid #cfedc8;background:#c6eac91c;z-index:8;pointer-events:none}.onboarding{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:360px;background:#14232bf5;border:1px solid #d4c78c80;box-shadow:0 20px 80px #0005;padding:26px;z-index:20;backdrop-filter:blur(15px)}.onboarding>span{font:10px var(--mono);letter-spacing:1.4px;color:var(--accent)}.onboarding h2{font-size:26px;font-weight:500;margin:12px 0 24px}.onboarding ol{padding:0;list-style:none}.onboarding li{font-size:13px;line-height:1.7;margin:16px 0;color:#c4d7c9}.onboarding li>b:first-child{display:inline-flex;justify-content:center;align-items:center;width:24px;height:24px;border:1px solid #b8c89943;margin-right:8px;font:11px var(--mono);color:#dfc188}.onboarding p{font-size:12px;color:#a8c1b1;line-height:1.8;margin:20px 0}.onboarding .primary{font-size:11px;height:46px}.paused-overlay{position:absolute;inset:75px 0 177px;background:#13212977;backdrop-filter:blur(3px);z-index:19;display:flex;align-items:center;justify-content:center;flex-direction:column}.paused-overlay>span{font:11px var(--mono);color:var(--accent);letter-spacing:3px}.paused-overlay>strong{font:42px Impact,sans-serif;letter-spacing:2px;margin:15px 0}.paused-overlay p{font-size:14px;color:#d7e5d8}.paused-overlay button{margin-top:10px}
 dialog{background:#182931;color:var(--text);border:1px solid #bdd3ba45;width:650px;max-width:94vw;max-height:90svh;padding:32px;box-shadow:0 25px 120px #0008}dialog::backdrop{background:#0a151bc4;backdrop-filter:blur(7px)}dialog h2{font-size:29px;letter-spacing:-.6px;font-weight:500;margin:15px 0 23px}.close{position:absolute;right:15px;top:10px;font-size:28px;color:#c1cfc3}.help-steps>article{display:flex;gap:20px;margin:26px 0}.help-steps>article>b{color:var(--accent);font:17px var(--mono);padding-top:4px}.help-steps h3{margin:0 0 8px;font-size:18px;font-weight:500}.help-steps p{color:#b3c9bf;font-size:14px;line-height:1.8;margin:0}.help-extra{border-top:1px solid var(--line);padding-top:12px}.help-extra h3{font-size:14px;font-weight:500}.help-extra p{font-size:12px;line-height:1.8;color:#a5bdb0}.key-list{display:flex;flex-wrap:wrap;gap:18px;font-size:11px;margin-top:23px;color:#bbcdbc}kbd{font:9px var(--mono);background:#b8d0b514;color:#d5dfc8;padding:3px 4px;border:1px solid #a8bdb320}#settings,#surrender-confirm{width:430px}.setting{display:flex;align-items:center;justify-content:space-between;padding:20px 0;border-bottom:1px solid var(--line);font-size:14px}.setting input{accent-color:var(--accent)}.setting input[type=checkbox]{width:17px;height:17px}.setting input[type=range]{width:125px}.setting-note{font-size:11px;color:#9cb8aa;line-height:1.8}.danger{border:1px solid #cc98846b;color:#e9b19b;padding:12px 18px;font-size:12px}#settings>.secondary,#settings>.danger{width:100%;margin-top:14px}#address{font-size:12px;color:#b6c8bc;line-height:1.8;overflow-wrap:anywhere}#address code{display:block;color:var(--accent);margin-top:4px}#surrender-confirm p{font-size:14px;line-height:1.8;color:#b7c9bd}.dialog-actions{display:flex;gap:15px;margin-top:24px}#result{text-align:center;width:460px}#result h2{font:64px Impact,sans-serif;letter-spacing:3px;color:#e8dfbc}#result p{font-size:14px;line-height:1.8;color:#b9cbbd}#result-stats{display:flex;justify-content:space-around;padding:24px 0;margin:23px 0;border-block:1px solid var(--line)}#result-stats strong{display:block;font:27px var(--mono);color:var(--accent);margin-bottom:7px}#result-stats span{font-size:10px;color:#a3bcb0}#result .quiet{display:block;margin:13px auto 0}#toasts{position:fixed;left:50%;top:155px;transform:translateX(-50%);z-index:60;pointer-events:none;max-width:90vw}.toast{font-size:13px;line-height:1.6;color:#e2ead9;background:#15292ffa;border:1px solid #c9d6ac65;border-left:3px solid #d6c58f;padding:12px 20px;box-shadow:0 8px 35px #0004;margin-bottom:8px;animation:notice .25s}.toast.error{border-left-color:#e8a386;color:#efc0a9}.reduced *{transition:none!important;animation:none!important}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-thumb{background:#607365}::-webkit-scrollbar-track{background:#17262c}@keyframes notice{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:1250px){#menu{padding:115px 5% 90px;gap:35px;grid-template-columns:1fr 380px}.menu-header,.menu-footer{left:5%;right:5%}.menu-title h1{font-size:85px}.menu-panel{padding:26px}.roster{width:184px}.roster-card{gap:5px;padding:9px 8px}.roster-card img{width:38px}.roster-card strong{font-size:11px}.selection-info{width:228px;padding:15px}.field-feed{width:210px}.mission-pill{padding:11px 32px 11px 13px}.mission-pill>span{font-size:11px}.reinforcements{gap:11px;padding:15px 14px;height:140px}.budget{width:112px}.budget>span{font-size:8px}.reinforcement-card{min-width:85px;padding:6px}.reinforcement-card>strong{font-size:8px;left:7px}.reinforcement-card img{height:67px}.support-controls{width:146px}.support-controls b{font-size:9px}.support-controls small{font-size:8px}.minimap-wrap{width:204px;bottom:185px}.selection-info,.camera-tools{bottom:185px}.battle-bottom{font-size:9px}.battle-bottom>span:last-child{font-size:8px}}
@media(max-width:980px){.menu-title h1{font-size:69px}.menu-title p{font-size:16px}.menu-header .version{display:none}.menu-tags{gap:12px;font-size:10px}.battle-brand{width:170px}.battle-brand>span{font-size:15px}.battle-brand small{font-size:8px}.battle-time{width:155px}.battle-top{height:65px;padding:0 15px}.battle-score{gap:10px}.score{font-size:30px;min-width:35px}.roster{top:150px;width:172px;left:10px;max-height:calc(100% - 460px)}.mission-pill{top:78px}.field-feed{top:150px;right:10px;width:190px}.field-feed>div{font-size:10px}.selection-info{left:10px;width:218px}.minimap-wrap{right:10px;width:184px}.reinforcement-cards{gap:5px}.reinforcement-card{min-width:87px;flex:none;width:87px}.support-controls{width:116px;gap:5px;flex-direction:column}.support-controls button{flex-direction:row;gap:5px;position:relative;min-height:48px}.support-controls button>span{font-size:24px;margin:0}.support-controls b{font-size:9px;margin-bottom:10px}.support-controls small{position:absolute;bottom:5px;right:7px;font-size:8px}.budget{width:104px}.battle-bottom>span:last-child{display:none}.camera-tools{left:53%}}
@media(max-width:700px){#menu{display:flex;flex-direction:column;align-items:stretch;padding:115px 20px 85px;gap:26px}.menu-header{top:25px;left:20px;right:20px}.brand{font-size:18px}.brand>b{font-size:23px}.menu-title{margin:0;max-width:450px;align-self:center;width:100%}.menu-title h1{font-size:62px;line-height:.97;margin:18px 0}.menu-title p{font-size:15px}.menu-title .eyebrow{font-size:9px}.menu-art{background-position:58% top;background-size:auto 950px;background-repeat:no-repeat}.menu-vignette{background:linear-gradient(0deg,#14212b 15%,#14212b55 75%,#14212b38)}.menu-tags{margin-top:17px}.menu-panel{padding:24px;max-width:450px;width:100%;align-self:center}.menu-panel h2{font-size:27px}.menu-footer{left:20px;right:20px;bottom:24px;font-size:8px}.menu-footer>span:nth-child(2){display:none}#battle{min-height:670px}.battle-top{height:59px;padding:0 10px}.battle-brand{width:44px}.battle-brand>span{display:none}.battle-brand>b{font-size:20px}.battle-time{width:86px;gap:4px}.battle-time>span{font-size:12px}.battle-time>.live-dot{display:none}.battle-time>button{width:23px;font-size:18px}.battle-score{gap:9px}.score{font-size:27px;min-width:27px}.score-middle #zone-status>button{width:25px;height:23px;font-size:11px}#victory-target{font-size:7px;letter-spacing:0}.mission-pill{top:71px;left:10px;right:10px;transform:none;padding:10px 30px 10px 12px}.mission-pill>span{font-size:10px;white-space:normal;line-height:1.5}.mission-pill b{font-size:9px}.roster{top:132px;left:10px;width:137px;max-height:calc(100% - 431px)}.panel-caption{padding:10px 8px;font-size:8px;letter-spacing:0}.panel-caption>span{font-size:8px}.roster-card{padding:8px 5px;gap:4px}.roster-card img{width:32px;height:27px}.roster-card strong{font-size:9px}.roster-card small{font-size:8px}.roster-all{font-size:9px}.roster-all kbd{display:none}.field-feed{top:132px;width:175px}.field-feed>div{font-size:9px;line-height:1.6;padding:7px 9px}.field-feed small{font-size:8px}.selection-info{width:170px;bottom:152px;padding:11px;min-height:105px}.selection-empty>strong{font-size:17px;margin:8px 0}.selection-empty>span{font-size:7px}.selection-empty p{font-size:10px;line-height:1.6}.selection-detail>img{width:67px;height:46px}.selection-detail>small{font-size:7px}.selection-detail h3{font-size:15px;margin:6px 0}.selection-detail p{font-size:9px;line-height:1.55;margin:5px 0}.selection-detail .detail-health{font-size:8px}.unit-commands{gap:4px;margin-top:9px}.unit-commands button{font-size:9px;padding:7px 4px}.minimap-wrap{width:140px;bottom:152px}.minimap-wrap .panel-caption{font-size:7px;padding:7px}.minimap-key{font-size:6px;padding:6px 0}.camera-tools{bottom:283px;left:auto;right:10px;transform:none}.camera-tools button{height:27px;min-width:27px;padding:0 7px;font-size:16px}.camera-tools span{display:none}.reinforcements{height:115px;bottom:26px;padding:10px 8px;gap:7px}.budget{width:65px;padding-right:7px}.budget>span{font-size:6px;letter-spacing:0}.budget strong{font-size:26px;margin:6px 0}.budget small{font-size:7px;line-height:1.6}.reinforcement-card{min-width:78px;width:78px}.reinforcement-card img{height:59px;top:0}.reinforcement-card>strong{font-size:7px;bottom:24px;left:6px}.reinforcement-card>.price{font-size:10px;bottom:8px;left:6px}.reinforcement-card .hotkey{display:none}.support-controls{width:45px}.support-controls b{display:none}.support-controls button{min-height:40px;flex-direction:column;gap:0}.support-controls button>span{font-size:23px;margin-bottom:5px}.support-controls small{font-size:7px;bottom:3px;right:auto}.battle-bottom{height:26px;font-size:8px;padding:0 10px;white-space:nowrap}.unit-label>span{font-size:7px;padding:2px 4px}.unit-label>i{width:34px}.zone-label>b{font-size:16px;width:25px;height:26px}.zone-label>small{font-size:7px}.onboarding{width:calc(100% - 40px);max-width:350px;padding:23px;top:46%}.onboarding h2{font-size:24px}.onboarding li{font-size:12px;line-height:1.8}.onboarding p{font-size:12px}.paused-overlay{inset:59px 0 141px}.paused-overlay>strong{font-size:35px}.paused-overlay p{font-size:12px;text-align:center;max-width:85%}dialog{padding:26px 22px}dialog h2{font-size:25px}.help-steps>article{gap:13px}.help-steps h3{font-size:16px}.help-steps p{font-size:12px}.help-extra p{font-size:11px}.key-list{gap:13px;font-size:10px}.toast{font-size:12px;padding:10px 14px}#toasts{top:130px}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* Expanded reinforcement catalog: categories keep nineteen choices readable. */
.unit-catalog{display:flex;flex:1;min-width:0;flex-direction:column;gap:7px}#unit-categories{display:flex;gap:6px;flex-shrink:0}#unit-categories button{padding:5px 12px;font:10px var(--mono);color:#a6bcb2;border:1px solid #a9c3ad30}#unit-categories button.active{background:#dac090;color:#182931;border-color:#dac090}#unit-categories small{font-size:8px;margin-left:8px;opacity:.65}.unit-catalog .reinforcement-cards{min-height:104px}.reinforcements{height:178px;padding-top:12px;padding-bottom:12px}.selection-info,.camera-tools,.minimap-wrap{bottom:223px}.roster{max-height:calc(100% - 450px)}.paused-overlay{bottom:209px}.mission-pill{max-width:calc(100% - 510px);white-space:normal}.mission-pill>span{display:block;line-height:1.5}.reinforcement-card>strong{font-size:8px}.roster-card strong{overflow:hidden;text-overflow:ellipsis}
@media(max-width:1250px){.selection-info,.camera-tools,.minimap-wrap{bottom:220px}.mission-pill{max-width:calc(100% - 425px)}#unit-categories button{padding:5px 9px}}
@media(max-width:980px){.mission-pill{max-width:94%;width:490px}.camera-tools span{display:none}.roster,.field-feed{top:155px}}
@media(max-width:700px){.reinforcements{height:151px;padding:8px;gap:6px}.unit-catalog{gap:5px}.unit-catalog .reinforcement-cards{min-height:98px}#unit-categories{gap:3px;overflow-x:auto}#unit-categories button{font-size:8px;padding:5px 6px}#unit-categories small{display:none}.selection-info,.minimap-wrap{bottom:188px}.camera-tools{bottom:319px}.roster{max-height:calc(100% - 467px);top:141px}.field-feed{top:141px}.mission-pill{max-width:none;width:auto;left:10px;right:10px}.paused-overlay{bottom:177px}.score-middle #zone-status{gap:4px}.battle-score{gap:5px}}

/* Division command, persistent team identities, and spoken-radio captions. */
:root{--blue:#58c5ff;--red:#ff705f}.score-side{min-width:68px;text-align:center;display:flex;flex-direction:column;gap:2px}.score-side>small{font:8px var(--mono);letter-spacing:.4px;white-space:nowrap}.score-side>.score{line-height:1.05}.battle-score{gap:16px}.battle-brand{width:190px}.roster{bottom:435px;max-height:none}.roster-team{font:9px var(--mono);letter-spacing:.5px;padding:10px 10px 0}.roster-tabs{display:flex;border-block:1px solid var(--line)}.roster-tabs>button{padding:9px 4px;flex:1;font:10px var(--mono);color:#a4bdb5}.roster-tabs>button.active{background:#b8d1bd18;color:#e5d3a7}#division-open{font:10px var(--mono);padding:10px;text-align:left;color:var(--accent);border-bottom:1px solid var(--line)}#division-list{min-height:0;overflow-y:auto}.division-empty{padding:17px 12px;font-size:11px;line-height:1.7;color:#a8beb4}.division-card{position:relative;border-bottom:1px solid var(--line);padding:0;border-left:2px solid transparent}.division-card.selected{border-left-color:var(--accent);background:#bad4b519}.division-card>button:first-child{display:flex;flex-direction:column;gap:7px;text-align:left;padding:12px 30px 14px 10px;width:100%}.division-card small{font:8px var(--mono);color:#9fb4ad}.division-card strong{font-size:13px;font-weight:500;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.division-card span{font-size:10px;color:#a8c6b3}.division-card i{display:block;height:2px;background:#b8cf98}.division-edit{position:absolute;right:4px;top:28px;padding:5px;color:var(--accent)}.selection-info{max-height:200px;overflow-y:auto}.unit-commands{display:grid;grid-template-columns:1fr 1fr}.unit-commands button{padding:7px 4px;font-size:10px}.unit-label>span,.unit-label.enemy>span{color:var(--unit-color);border-color:var(--unit-color);background:#152228ed}.unit-label.selected>span{background:#dce9bd;color:#182b27}.unit-label.enemy>i>b{background:#d9aa86}.radio-caption{position:absolute;left:50%;bottom:270px;transform:translateX(-50%);max-width:410px;width:36%;background:#10232bee;border:1px solid #d3c29355;border-left:3px solid var(--accent);padding:12px 16px;z-index:12;pointer-events:none;box-shadow:0 6px 30px #0003}.radio-caption small{display:block;font:9px var(--mono);color:var(--accent);letter-spacing:1px;margin-bottom:7px}.radio-caption span{font-size:13px;line-height:1.6;color:#e0e8d7}#division-dialog{width:730px}.division-name-label{font-size:11px;color:#bed1c7;display:block;margin-bottom:7px}.division-mode{display:flex;gap:8px;margin-top:16px}.division-mode button{padding:11px 12px;font-size:12px;flex:1;background:#102027;border:1px solid var(--line)}.division-mode button.active{color:var(--accent);border-color:#d3b6787a;background:#e7b66a10}#division-presets{display:flex;flex-wrap:wrap;gap:7px;align-items:center;margin:13px 0}#division-presets>span{font:8px var(--mono);color:#abc1b4;margin-right:5px}#division-presets>button{font-size:10px;border:1px solid #aac4b036;padding:7px 9px}#division-explainer{font-size:12px;line-height:1.6;color:#a9c3b5}#division-builder{display:grid;grid-template-columns:1fr 1fr;gap:6px;max-height:310px;overflow-y:auto;margin:13px 0;padding-right:4px}.division-member{display:flex;align-items:center;gap:8px;background:#a9c3ad07;border:1px solid #a9c3ad26;padding:9px 8px;min-width:0;cursor:pointer}.division-member>img{width:42px;height:30px;object-fit:contain}.division-member>span{flex:1;min-width:0}.division-member strong{font-size:11px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.division-member small{font-size:9px;display:block;color:#a3bcaf;margin-top:5px;line-height:1.4}.division-member input[type=number]{width:51px!important;height:34px!important;padding:0 5px!important;font-size:13px!important}.division-member input[type=checkbox]{accent-color:var(--accent);flex-shrink:0}#division-total{font:11px var(--mono);padding:12px 0 15px;color:#dec590}#division-disband{margin-top:13px}.minimap-key{font-size:8px}.unit-catalog #unit-categories{gap:4px}.unit-catalog #unit-categories button{padding:5px 8px}.battle-brand small{font-size:8px}
@media(max-width:1100px){.battle-brand{width:155px}.battle-time{width:155px}.battle-score{gap:9px}.score-side{min-width:60px}.score-side>small{font-size:7px}.radio-caption{width:35%;font-size:11px}#unit-categories small{display:none}.roster{bottom:435px}}
@media(max-width:700px){.battle-brand{width:35px}.battle-time{width:80px}.battle-score{gap:3px}.score-side{min-width:46px}.score-side>small{font-size:5px;letter-spacing:0}.score-middle #zone-status>button{width:19px;height:21px;font-size:10px}.score-middle #zone-status{gap:2px}.roster{bottom:398px;max-height:none;top:141px}.roster-team{font-size:7px;padding:7px 5px 0}.roster-tabs>button{font-size:8px;padding:7px 2px}#division-open{font-size:8px;padding:8px 5px}.division-card strong{font-size:10px}.division-card small{font-size:6px}.division-card span{font-size:8px}.division-card>button:first-child{padding:9px 22px 9px 7px;gap:5px}.division-edit{right:0;top:20px}.division-empty{font-size:9px;padding:10px}.selection-info{max-height:195px}.radio-caption{left:auto;right:10px;top:190px;bottom:auto;transform:none;width:calc(100% - 166px);max-width:245px;padding:9px}.radio-caption span{font-size:10px}.radio-caption small{font-size:7px}.unit-commands button{font-size:9px}.unit-catalog #unit-categories{gap:3px}.unit-catalog #unit-categories button{font-size:7px;padding:5px}#division-builder{grid-template-columns:1fr;max-height:260px}.division-mode button{padding:9px 7px;font-size:10px}.minimap-key{font-size:6px}}

.roster-card.selected{border-left-color:var(--friendly,var(--blue))}

/* Field operations: one type family, legible map assets, and direct flight. */
:root{--font:Arial,Helvetica,sans-serif;--mono:var(--font)}body,body *{font-family:var(--font)!important}.menu-title h1{font-weight:900;font-size:clamp(58px,7vw,110px);letter-spacing:-4px}.score,#result h2,.paused-overlay>strong{font-weight:800}.air-status{display:block;font-size:10px;color:var(--accent);margin-top:8px}.unit-commands .pilot-button{background:#d8be82;color:#13262d;font-weight:800;grid-column:1/-1}.unit-commands{padding-bottom:2px}#resource-labels,#building-labels{position:absolute;inset:0;overflow:hidden;pointer-events:none}.resource-label>b{border-color:#c6bb82;font-size:19px;width:25px;height:26px}.resource-label>small{font-size:8px}.building-label>b{width:24px;height:24px;border-color:#aacbc066;font-size:18px}.building-label>small{font-size:8px}#resource-summary{border-top:1px solid var(--line);padding:6px 10px;display:grid;gap:5px;font-size:9px;color:#b4c8bc}#resource-summary>div{display:flex;justify-content:space-between;gap:5px}#resource-summary b{font-weight:500}.mobile-nav,.mobile-only{display:none}
#fpv-hud{position:absolute;inset:0;z-index:30;pointer-events:none;color:#dcf8dd;text-shadow:0 1px 5px #000;background:radial-gradient(ellipse at center,transparent 45%,#0e1c2270 100%);border:10px solid #07131638}#fpv-hud button{pointer-events:auto;background:#10232de8;border:1px solid #b8dbab70;border-radius:8px;padding:13px 18px;min-height:46px;color:#e3f7d5;font-size:12px;text-shadow:none}.fpv-active #battle>:not(#world):not(#fpv-hud){display:none!important}.fpv-top{position:absolute;top:max(18px,env(safe-area-inset-top));left:20px;right:20px;display:flex;justify-content:space-between;align-items:start;gap:12px}.fpv-top strong{display:block;font-size:11px;letter-spacing:1.5px;margin-top:10px}.fpv-top .eyebrow{color:#e0e3bb}.fpv-actions{display:flex;gap:8px}.fpv-heading{position:absolute;top:17%;left:50%;transform:translateX(-50%);font-size:12px;letter-spacing:3px;text-align:center}.fpv-heading strong{display:block;font-size:26px;margin:7px}.fpv-heading>div{font-size:24px}.fpv-flight{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;align-items:center;gap:40px;text-align:center}.fpv-flight small{display:block;font-size:9px;letter-spacing:1.5px;margin-bottom:8px}.fpv-flight strong{font-size:25px;white-space:nowrap;font-weight:500}.fpv-reticle{width:180px;height:130px;position:relative;overflow:hidden;display:grid;place-items:center}.fpv-reticle>b{font-size:30px;font-weight:400}#fpv-horizon{position:absolute;inset:50% 0 auto;display:flex;justify-content:space-between;will-change:transform}#fpv-horizon i{width:58px;height:7px;border-top:1px solid #d7f6d4;border-left:1px solid #d7f6d4}#fpv-horizon i:last-child{border-left:0;border-right:1px solid #d7f6d4}.fpv-bottom{position:absolute;bottom:max(40px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);display:flex;align-items:center;flex-direction:column;gap:14px;white-space:nowrap}.fpv-bottom>span{font-size:11px;letter-spacing:1px}.fpv-bottom strong{font-size:19px;margin-left:9px}.fpv-bottom small{font-size:10px;color:#e3dfc1}#fpv-arm.armed{background:#73362ced;border-color:#f79b84;color:#ffe1d3}.fpv-keys{position:absolute;bottom:30px;left:25px;font-size:11px;line-height:1.9;color:#d2dcbf}.jammed{color:#ff9a7f}.fpv-touch{display:none}.fpv-stick{width:122px;height:122px;border-radius:50%;border:1px solid #d7ecc66b;background:#10232f75;position:relative;display:grid;place-items:center;touch-action:none;pointer-events:auto;user-select:none}.fpv-stick>i{position:absolute;width:43px;height:43px;border-radius:50%;border:1px solid #e2ecc8;background:#b9d3ab36;pointer-events:none}.fpv-stick>span{position:absolute;top:100%;margin-top:9px;font-size:9px;line-height:1.5;color:#d7e9ce;text-align:center;pointer-events:none}
@media(pointer:coarse){.fpv-touch{display:block;position:absolute;bottom:max(55px,calc(env(safe-area-inset-bottom) + 35px))}.fpv-touch-left{left:24px}.fpv-touch-right{right:24px}.fpv-keys{display:none}#fpv-arm{font-size:11px;padding:12px}.fpv-bottom small{max-width:140px;white-space:normal;text-align:center;line-height:1.5}}
/* Phone command shell: one sheet at a time, with the battlefield always a tap away. */
@media(max-width:900px) and (pointer:coarse),(max-width:700px){
 body.in-battle{overflow:hidden;overscroll-behavior:none}#battle{height:100dvh;min-height:0;--nav-height:calc(58px + env(safe-area-inset-bottom));--sheet-bottom:calc(var(--nav-height) + 8px)}
 .battle-top{height:calc(118px + env(safe-area-inset-top));padding:calc(8px + env(safe-area-inset-top)) 12px 0;align-items:flex-start;background:linear-gradient(#10212afa,#14242fe8);gap:8px}.battle-brand{display:none}.battle-score{display:grid;grid-template-columns:1fr 1fr;flex:1;gap:7px;align-items:center}.score-side{flex-direction:row;gap:8px;justify-content:flex-start;min-width:0}.score-side:last-child{justify-content:flex-end}.score-side>small{font-size:9px;max-width:95px;white-space:normal;text-align:left;line-height:1.3}.score-side>.score{font-size:25px;min-width:28px}.score-middle{position:absolute;top:calc(52px + env(safe-area-inset-top));left:12px;right:12px}.score-middle #zone-status{gap:5px;overflow-x:auto;justify-content:center}.score-middle #zone-status>button{height:42px;width:42px;min-width:34px;flex:1;max-width:58px;font-size:14px;border-radius:5px 5px 0 0}#victory-target{font-size:8px;margin-top:6px}.battle-time{width:auto;gap:2px;flex-wrap:nowrap;padding-top:0}.battle-time>span{font-size:11px}.battle-time>button{height:36px;width:32px;font-size:20px}.battle-time .live-dot{display:none}
 .mission-pill,.field-feed,.battle-bottom{display:none}.camera-tools{top:calc(128px + env(safe-area-inset-top));bottom:auto;right:12px;left:auto;transform:none;border-radius:9px;overflow:hidden}.camera-tools button{width:38px;height:40px;padding:0;font-size:19px}.camera-tools span{display:none}
 .mobile-nav{position:absolute;bottom:0;left:0;right:0;display:flex;height:var(--nav-height);padding:4px max(8px,env(safe-area-inset-right)) calc(4px + env(safe-area-inset-bottom)) max(8px,env(safe-area-inset-left));z-index:25;background:#101f29fa;border-top:1px solid #b5cdbc36;backdrop-filter:blur(15px)}.mobile-nav button{flex:1;min-width:44px;min-height:44px;font-size:10px;color:#95aaa8;border-radius:9px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px}.mobile-nav b{font-size:20px;font-weight:400;line-height:20px}.mobile-nav button.active{color:#e8c58b;background:#d4c09014}
 .roster,.reinforcements,.minimap-wrap,.selection-info{display:none;left:8px;right:8px;width:auto;bottom:var(--sheet-bottom);top:auto;max-height:calc(100dvh - 235px - env(safe-area-inset-top) - env(safe-area-inset-bottom));min-height:0;border:1px solid #b1c9b342;border-radius:14px;padding:0;background:#142630f5;box-shadow:0 -12px 50px #09131742;overflow-y:auto;overscroll-behavior:contain;z-index:22}
 [data-mobile-panel=army] .roster{display:flex;height:55dvh;max-height:calc(100dvh - 235px - env(safe-area-inset-top) - env(safe-area-inset-bottom))}[data-mobile-panel=deploy] .reinforcements{display:flex;height:auto;flex-direction:column;gap:12px;padding:14px}[data-mobile-panel=map] .minimap-wrap{display:block;padding:5px 10px 10px}.has-selection[data-mobile-panel=battle] .selection-info{display:block;max-height:34dvh;padding:12px 14px}
 .mobile-only{display:block}#mobile-close{position:absolute;bottom:calc(var(--nav-height) + 55dvh + 16px);left:50%;transform:translateX(-50%);white-space:nowrap;padding:11px 16px;border-radius:25px;background:#152730f5;z-index:24;font-size:12px;border:1px solid #b5cbb440}#mobile-multi{padding:12px;color:#c4d0b9;text-align:left;border-bottom:1px solid var(--line);font-size:12px;min-height:44px}#mobile-multi.active{background:#d4bc7d2b;color:var(--accent)}.roster-team{font-size:10px;padding:14px 13px 0}.panel-caption{font-size:10px;padding:12px 13px}.panel-caption>span{font-size:10px}.roster-tabs>button,#division-open,.roster-all{min-height:44px;font-size:12px;padding:12px}.roster-card{padding:12px;gap:12px;min-height:65px}.roster-card img{width:56px;height:38px}.roster-card strong{font-size:14px}.roster-card small{font-size:11px}.division-card>button:first-child{padding:14px;gap:8px;min-height:80px}.division-card strong{font-size:15px}.division-card small{font-size:10px}.division-card span{font-size:12px}.division-edit{right:8px;top:20px;min-width:44px;min-height:44px}.division-empty{font-size:13px;padding:18px}
 .selection-detail>small,.selection-detail>p{display:none}.selection-detail h3{font-size:17px;margin:0 0 7px}.selection-detail>img{width:64px;height:44px;margin:0}.selection-detail .detail-health,.air-status{font-size:11px}.unit-commands{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin-top:11px}.unit-commands button{font-size:11px;min-height:44px;padding:8px 5px;border-radius:7px}.unit-commands kbd{display:none}
 .budget{width:auto;display:flex;align-items:center;gap:12px;padding:0 0 9px;border-right:0;border-bottom:1px solid var(--line)}.budget>span{font-size:9px;max-width:95px;letter-spacing:.6px}.budget strong{font-size:29px;margin:0}.budget small{margin-left:auto;max-width:115px;font-size:10px;text-align:right}.unit-catalog{overflow:visible;flex:none}.unit-catalog #unit-categories{overflow-x:auto;gap:6px;flex-shrink:0}.unit-catalog #unit-categories button{min-height:44px;flex:1;font-size:11px;padding:7px 9px;border-radius:7px;white-space:nowrap}.unit-catalog .reinforcement-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;overflow:visible;min-height:0}.reinforcement-card{min-width:0;width:auto;height:110px;min-height:110px;border-radius:8px}.reinforcement-card img{height:75px;width:100%;top:0}.reinforcement-card>strong{font-size:9px;bottom:25px;left:8px}.reinforcement-card>.price{font-size:13px;bottom:7px;left:8px}.reinforcement-card .hotkey{display:none}.support-controls{display:flex;flex-direction:row;width:auto;gap:8px}.support-controls>button{flex:1;min-height:52px;flex-direction:row;align-items:center;justify-content:center;gap:9px;border-radius:8px}.support-controls b{display:block;font-size:11px;margin:0}.support-controls small{position:static;font-size:10px}.support-controls button>span{font-size:23px;margin:0}
 #minimap{max-height:38dvh;object-fit:contain}.minimap-key{font-size:10px;padding:10px 0}#resource-summary{font-size:11px;padding:8px 4px;gap:9px}.minimap-wrap>.panel-caption{font-size:11px;padding:10px 2px}.radio-caption{top:calc(178px + env(safe-area-inset-top));left:12px;right:auto;bottom:auto;width:230px;max-width:calc(100% - 24px);padding:9px 12px;transform:none;z-index:13}.radio-caption span{font-size:11px}.radio-caption small{font-size:8px}.resource-label>small{display:none}.building-label>small{font-size:8px}.resource-label>b,.building-label>b{min-width:32px;height:32px}.zone-label>b{width:32px;height:32px}.zone-label>small{font-size:8px}
 .onboarding{max-height:calc(100dvh - 160px);overflow-y:auto;top:48%;padding:20px}.onboarding h2{margin:12px 0}.onboarding p{margin:12px 0}.onboarding li{margin:10px 0}.paused-overlay{inset:calc(118px + env(safe-area-inset-top)) 0 var(--nav-height)}#toasts{top:calc(174px + env(safe-area-inset-top));width:max-content;max-width:90vw}dialog{border-radius:16px;max-height:90dvh}input:not([type=checkbox]):not([type=range]),select{font-size:16px}dialog button{min-height:44px}.menu-title h1{font-size:60px}.menu-tags{flex-wrap:wrap}.menu-panel{border-radius:14px}.primary,.mode-switch{border-radius:8px}
 .fpv-top{left:8px;right:8px;top:max(8px,env(safe-area-inset-top));gap:5px}.fpv-top .eyebrow{font-size:9px;letter-spacing:.7px}.fpv-top strong{font-size:8px;letter-spacing:.5px;max-width:145px;line-height:1.5}.fpv-actions{gap:5px}#fpv-hud button{padding:10px 12px;min-height:44px}.fpv-heading{top:20%;font-size:10px}.fpv-heading strong{font-size:21px}.fpv-flight{gap:10px;top:43%}.fpv-flight strong{font-size:18px}.fpv-flight small{font-size:8px}.fpv-reticle{width:105px;height:90px}#fpv-horizon i{width:32px}.fpv-bottom{bottom:max(36px,calc(env(safe-area-inset-bottom) + 20px));gap:9px}.fpv-bottom>span{font-size:9px}.fpv-bottom strong{font-size:15px;margin-left:4px}.fpv-bottom small{font-size:8px;max-width:100px;white-space:normal;line-height:1.5;text-align:center}.fpv-keys{display:none}.fpv-touch{display:block;position:absolute;bottom:max(60px,calc(env(safe-area-inset-bottom) + 45px))}.fpv-touch-left{left:10px}.fpv-touch-right{right:10px}.fpv-stick{width:100px;height:100px}#fpv-arm{max-width:110px;font-size:10px;padding:10px 7px}
}
@media(max-height:500px) and (pointer:coarse){.battle-top{height:100px}.score-middle{top:43px}.score-middle #zone-status>button{height:34px}.camera-tools{top:110px}.radio-caption{display:none}.roster,.reinforcements,.minimap-wrap{max-height:calc(100dvh - 170px)}#mobile-close{display:none}.has-selection[data-mobile-panel=battle] .selection-info{max-height:42dvh;max-width:410px}.fpv-heading{top:18%}.fpv-flight{top:50%}.fpv-bottom{bottom:12px}.fpv-bottom small{display:none}.fpv-touch{bottom:45px}.fpv-stick{width:94px;height:94px}}

#resource-summary>button{display:flex;justify-content:space-between;gap:8px;text-align:left;border-left:2px solid var(--accent);padding:7px 8px;border-radius:3px;background:#b2caa507;font-size:10px}#resource-summary>button>span{color:#d6c595}
@media(max-width:900px) and (pointer:coarse),(max-width:700px){#resource-summary{grid-template-columns:1fr 1fr}#resource-summary>button{min-height:44px;font-size:10px;align-items:center;flex-wrap:wrap}#mobile-close{top:calc(174px + env(safe-area-inset-top));bottom:auto}.mobile-nav button,#mobile-multi,#fpv-hud{user-select:none;-webkit-user-select:none}.reinforcement-card,.roster-card{touch-action:manipulation}}

@media(max-width:900px) and (pointer:coarse),(max-width:700px){#mobile-close{top:calc(128px + env(safe-area-inset-top));left:12px;transform:none;width:138px;max-width:calc(100% - 226px);height:40px;padding:8px 6px;overflow:hidden;text-overflow:ellipsis;font-size:11px}}

/* Release identity and whole-app fullscreen keep menus, dialogs, and FPV together. */
html:fullscreen{width:100%;height:100%;background:#14212b}html:-webkit-full-screen{width:100%;height:100%;background:#14212b}.is-fullscreen #battle{height:100dvh}.fullscreen-hud span{display:none}.menu-header .fullscreen-menu{margin-left:auto;white-space:nowrap}.menu-header>.quiet[data-help]{margin-left:0}.battle-version{position:absolute;right:26px;bottom:5px;font-size:9px;letter-spacing:.5px;color:#a7bbae}.release-detail{font-size:11px;line-height:1.7;color:#b3c7bc;overflow-wrap:anywhere;margin:-10px 0 18px}.fullscreen-setting{width:100%;border-radius:6px;margin-bottom:8px}.update-notice{position:fixed;top:max(10px,env(safe-area-inset-top));left:50%;transform:translateX(-50%);z-index:100;max-width:calc(100% - 24px);width:440px;display:flex;align-items:center;gap:12px;background:#172c34;border:1px solid #cfb684;border-radius:10px;padding:12px 14px;box-shadow:0 10px 45px #0007;font-size:12px;line-height:1.5}.update-notice button{padding:10px 14px;background:var(--accent);color:#14232a;border-radius:6px;min-height:44px;margin-left:auto}.battle-time{gap:8px}#fpv-hud .fullscreen-hud{font-size:19px;padding:8px 11px}
@media(max-width:900px) and (pointer:coarse),(max-width:700px){.battle-version{right:12px;bottom:4px;font-size:8px}.battle-time{gap:1px}.battle-time>button{width:29px;min-height:36px}.battle-time>span{font-size:10px}.menu-header{gap:12px}.menu-header .fullscreen-menu{min-width:40px;min-height:44px;font-size:23px}.fullscreen-menu span{display:none}.menu-footer>span.menu-release:nth-child(2){display:inline;font-size:10px}.fpv-actions{gap:4px}#fpv-hud .fullscreen-hud{padding:8px;min-width:36px}.fpv-top .eyebrow{font-size:8px}.battle-time>.live-dot{display:none}}

.fpv-version{display:block;font-size:9px;color:#bdcfb5;margin-top:6px;letter-spacing:1px}

/* Keep orders on the battlefield and long descriptions in the intel drawer. */
.panel-close{font-size:22px;line-height:18px;min-width:25px;color:var(--accent);margin:-4px -5px -4px 2px}.panel-tab{position:absolute;z-index:14;background:#142630f5;border:1px solid #b7c9b445;padding:11px 9px;font-size:11px;color:var(--accent);writing-mode:vertical-rl;letter-spacing:1px}.panel-tab-army{left:0;top:190px;border-radius:0 8px 8px 0}.panel-tab-map{right:0;bottom:300px;border-radius:8px 0 0 8px}.roster,.minimap-wrap{transition:transform .2s,opacity .2s}.roster{left:35px}.minimap-wrap{right:35px}.selection-info{left:35px}.army-collapsed .roster{transform:translateX(calc(-100% - 45px));opacity:0;pointer-events:none}.army-collapsed .selection-info{display:none}.map-collapsed .minimap-wrap{transform:translateX(calc(100% + 45px));opacity:0;pointer-events:none}.selection-info{min-height:0;max-height:215px}.selection-detail h3{margin:3px 0 9px}.selection-empty strong{font-size:18px}.fire-button{grid-column:1/-1;color:#f5ca8e!important;border-color:#d5ac6570!important;background:#e7b66a12}.ai-adversary .player-avatar{color:var(--red)}#unit-intel{width:520px}#intel-copy{font-size:14px;line-height:1.8;color:#b8cdbe}#intel-stats{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:22px}#intel-stats>div{padding:12px;background:#0e2028;border:1px solid var(--line);display:flex;flex-direction:column;gap:6px}#intel-stats small{font-size:10px;color:#91b2a4}#intel-stats strong{font-size:14px;font-weight:500}.mode-switch button{font-size:11px}.range-hint{color:var(--accent)}
@media(max-width:900px) and (pointer:coarse),(max-width:700px){.panel-tab{display:none}.army-collapsed .roster,.map-collapsed .minimap-wrap{transform:none;opacity:1;pointer-events:auto}.army-collapsed.has-selection[data-mobile-panel=battle] .selection-info{display:block}.roster,.minimap-wrap,.selection-info{left:8px;right:8px}.panel-close{min-width:40px;min-height:40px;margin:-8px -3px}.roster .panel-caption{align-items:center}.selection-info{max-height:34dvh}.mode-switch button{font-size:10px}.selection-detail>p{display:none}}

/* Keep projected labels anchored while pressed, including on touchscreens. */
.zone-label,.zone-label:active:not(:disabled){transform:translate(-50%,-100%);transition:background .15s;touch-action:manipulation;user-select:none}

/* Context actions live with their units; no trip to the side panel. */
.unit-label.selected{z-index:9}.unit-quick{display:flex;gap:4px;margin-top:5px;max-width:250px;justify-content:center;flex-wrap:wrap;pointer-events:auto}.unit-quick button{border:1px solid #a8dcd66b;border-radius:4px;padding:6px 8px;background:#142932f5;color:#deeee7;font:10px var(--mono);white-space:nowrap;box-shadow:0 3px 12px #0004;touch-action:manipulation}.unit-quick button:first-child{background:#cce0b9;color:#172b2b;font-weight:bold}.unit-quick button:active:not(:disabled){transform:none;background:#e7b66a}.fpv-active .unit-quick{display:none}.map-tool-switch{display:flex!important;align-items:stretch}.map-tool-switch.hidden{display:none!important}.camera-tools .map-tool-switch button.active{background:#cce0b9;color:#172b2b}.grab-tool #world{cursor:grab}.grab-tool #world:active{cursor:grabbing}.grab-tool .zone-label{pointer-events:none}.control-setting{gap:16px;flex-wrap:wrap}.control-setting select{max-width:240px}.camera-tools{max-width:calc(100% - 30px);overflow-x:auto}.camera-tools>button{flex-shrink:0}
@media(pointer:coarse){.unit-quick button{min-height:38px;font-size:11px;padding:8px 10px}.camera-tools .map-tool-switch button{min-width:54px;height:40px}.camera-tools .map-tool-switch button span{display:inline;font-size:10px}.unit-quick{max-width:220px}}

/* FPV power and link gauges stay above the flight sticks on every screen. */
.fpv-telemetry{position:absolute;top:max(105px,calc(env(safe-area-inset-top) + 88px));left:20px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;width:300px;font-family:var(--mono)}.fpv-gauge{--gauge:#bce4b1;padding:12px;background:#10232de8;border:1px solid #bce4b14d;border-radius:6px;color:var(--gauge);text-shadow:none}.fpv-gauge[data-level=warning]{--gauge:#f2cd7c;border-color:#f2cd7c88}.fpv-gauge[data-level=critical]{--gauge:#ff977e;border-color:#ff977eaa;background:#3d2323eb}.fpv-gauge-heading{display:flex;align-items:center;justify-content:space-between;gap:8px}.fpv-gauge-heading>span{font-size:10px;letter-spacing:1px}.fpv-gauge-heading>strong{font-size:23px;font-weight:bold}.fpv-gauge>small{display:block;margin-top:8px;font-size:9px;white-space:nowrap}.fpv-battery-meter{height:14px;margin:9px 3px 0 0;border:1px solid currentColor;padding:2px;position:relative}.fpv-battery-meter:after{content:'';position:absolute;right:-4px;top:3px;width:3px;height:6px;background:var(--gauge)}.fpv-battery-meter>i{display:block;height:100%;width:0;background:var(--gauge);transition:width .2s}.fpv-signal-meter{height:14px;display:flex;align-items:flex-end;gap:5px;margin-top:9px}.fpv-signal-meter>i{height:20%;flex:1;background:currentColor;opacity:.15}.fpv-signal-meter>i:nth-child(2){height:40%}.fpv-signal-meter>i:nth-child(3){height:60%}.fpv-signal-meter>i:nth-child(4){height:80%}.fpv-signal-meter>i:nth-child(5){height:100%}.fpv-signal-meter>i.lit{opacity:1}
@media(max-width:600px){.fpv-telemetry{top:max(95px,calc(env(safe-area-inset-top) + 82px));left:8px;right:8px;width:auto;max-width:360px;gap:8px}.fpv-gauge{padding:9px 10px}.fpv-gauge-heading>strong{font-size:21px}.fpv-gauge>small{font-size:8px}.fpv-heading{top:31%}.fpv-flight{top:52%}}
@media(max-height:500px) and (min-width:601px){.fpv-telemetry{top:85px;left:8px;width:240px;gap:6px}.fpv-gauge{padding:8px}.fpv-gauge-heading>strong{font-size:18px}.fpv-gauge-heading>span{font-size:9px}.fpv-gauge>small{font-size:8px}.fpv-keys{display:none}}

/* Team coordination and progression stay legible without opening unit intel. */
#rally-labels{position:absolute;inset:0;pointer-events:none;overflow:hidden}.rally-label{position:absolute;transform:translate(-50%,-100%);display:flex;flex-direction:column;align-items:center;color:#ffda80;text-shadow:0 2px 5px #101d22;pointer-events:none}.rally-label>b{font:42px var(--mono);line-height:1;animation:rally-beacon 1.5s ease-in-out infinite}.rally-label>span{background:#142630ec;border:1px solid #ffda8070;padding:4px 8px;font:10px var(--mono);letter-spacing:2px}.rally-label>small{padding:3px;background:#142630ec;font:10px var(--mono)}.veterancy-badge{display:block;color:#edce8f;font:10px var(--mono);padding:3px 0 8px}.camera-tools button.active{background:#e7b66a;color:#142630}.reduced .rally-label>b{animation:none}@keyframes rally-beacon{50%{opacity:.45;transform:translateY(-5px)}}

#hq-labels{position:absolute;inset:0;pointer-events:none;overflow:hidden}.hq-label>b{width:40px;height:32px;font:16px var(--mono);border-color:currentColor}.hq-label>em{font:8px var(--mono);font-style:normal;background:#142630ed;color:#c0cdc4;padding:4px 7px;white-space:nowrap}.hq-label.exposed>em{background:#6a3e25ed;color:#ffe1a4}.hq-label.exposed>b{box-shadow:0 0 15px #f7b96160}.hq-label>i{width:90px;height:5px}.hq-label>i>span{height:5px;background:#f7ba72}

/* The flight view is a floating drag stick; HUD buttons remain separate touch targets. */
#fpv-steering{display:none;position:absolute;inset:0;pointer-events:auto;touch-action:none;user-select:none;-webkit-user-select:none;cursor:grab;color:#def8d8}
#fpv-hud[data-controls=cursor] #fpv-steering{display:block}
#fpv-steering.steering{cursor:grabbing}
#fpv-steering svg{display:none;position:absolute;pointer-events:none;left:var(--steer-x);top:var(--steer-y);filter:drop-shadow(0 1px 4px #000)}
#fpv-steering.steering svg{display:block}
.steer-origin{width:100px;height:100px;transform:translate(-50%,-50%);opacity:.6}
.steer-cursor{width:28px;height:28px;transform:translate(calc(-50% + var(--steer-dx)),calc(-50% + var(--steer-dy)))}
#fpv-hud[data-controls=cursor] .fpv-touch-right{display:none}
.fpv-control-hint{display:none;position:absolute;left:15px;right:15px;bottom:max(200px,calc(env(safe-area-inset-bottom) + 180px));text-align:center;font-size:9px;letter-spacing:.5px;pointer-events:none}
#fpv-hud #fpv-settings{font-size:18px;min-width:44px;padding:8px}
#fpv-sensitivity-setting{flex-wrap:wrap;gap:10px}#fpv-sensitivity{min-height:44px;max-width:100%}
@media(pointer:coarse),(max-width:700px){#fpv-hud[data-controls=cursor] .fpv-control-hint{display:block}.fpv-actions{flex-wrap:wrap;justify-content:flex-end;max-width:none}#fpv-hud #fpv-settings{min-width:44px;min-height:44px}}
@media(max-height:500px){.fpv-control-hint{bottom:160px;left:160px;right:160px;font-size:8px}}

@media(max-width:600px){.fpv-top{display:block}.fpv-top strong{display:inline-block;margin:5px 8px 0 0;max-width:none}.fpv-top .fpv-version{display:inline-block}.fpv-actions{justify-content:flex-start;margin-top:8px}.fpv-telemetry{top:max(112px,calc(env(safe-area-inset-top) + 104px))}}
.theater-preview{border:1px solid #a8c0b438;border-radius:8px;overflow:hidden;background:#102029b8;margin:12px 0 18px}.theater-sketch{display:block;width:100%;height:135px;background:#10202a}.theater-preview>div{padding:13px 15px}.theater-preview strong{font-size:14px;font-weight:500;color:#ead09c}.theater-preview p{font-size:11px;line-height:1.7;color:#b4c9c7;margin:7px 0}.theater-preview small{display:block;font-size:10px;line-height:1.6;color:#dabd89}.lobby-map-label{display:block;font-size:10px;letter-spacing:1px;margin:20px 0 10px;color:#bed0c5}.lobby-theater .theater-sketch{height:110px}#map-select,#lobby-map{min-height:44px;width:100%}
.offline-menu{width:100%;margin-top:18px;min-height:44px}.lobby-link+.offline-menu{margin-top:0}#offline{width:700px;overflow-y:auto}#offline h2{margin-bottom:13px}.offline-intro,.offline-steps,.offline-details,.offline-performance p{color:#b7c9c6;line-height:1.75;font-size:13px}.offline-intro{margin-top:0}.offline-steps{padding-left:22px;margin:22px 0}.offline-steps li{padding-left:5px;margin:14px 0}.offline-steps strong{color:#e9e8d8}.lan-check{border-top:1px solid var(--line);padding:8px 0 20px}.lan-check p{font-size:12px;line-height:1.7;color:#c4d6bd}.lan-check button{min-height:44px}.lan-address-field{border:1px solid #bdd3ba35;margin:0 0 20px;padding:0 14px 14px;min-width:0}.lan-address-field legend{padding:0 7px;font-size:13px;color:var(--accent)}.lan-choice{display:flex;align-items:center;gap:13px;padding:13px 8px;min-height:58px;border-bottom:1px solid var(--line);cursor:pointer}.lan-choice:last-child{border-bottom:0}.lan-choice:has(input:checked){background:#e7b66a0c}.lan-choice input[type=radio]{flex:0 0 17px;width:17px;height:17px;padding:0;margin:0;accent-color:var(--accent)}.lan-choice span{min-width:0}.lan-choice strong{display:block;font-size:12px;font-weight:500;color:#d3dfd4}.lan-choice code{display:block;font:12px var(--mono);color:var(--accent);overflow-wrap:anywhere;margin-top:7px}.lan-invite-label{display:block;font-size:12px;margin-bottom:9px;color:#d3dfd4}.lan-copy-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px}#lan-invite{min-width:0;font:12px var(--mono);height:44px}#lan-copy{min-height:44px}#lan-copy-status{min-height:20px}.offline-details{border-block:1px solid var(--line);margin:20px 0;padding:0 0 2px}.offline-details summary{cursor:pointer;color:#e4d5b7;min-height:44px;padding:12px 0;line-height:1.6}.offline-details summary:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.offline-details p,.offline-details ul{margin:10px 0 15px}.offline-details code{color:var(--accent)}.offline-performance h3{font-size:16px;font-weight:500;margin:20px 0 10px}.offline-performance p{margin:9px 0}.offline-performance .setting-note{font-size:11px;overflow-wrap:anywhere}#lan-settings{padding:0;color:var(--accent);font-size:inherit;text-decoration:underline;text-underline-offset:3px}@media(max-width:540px){#offline{padding:26px 18px;max-height:92svh}.lan-copy-row{grid-template-columns:1fr}.lan-check button{width:100%}.lan-address-field{padding-inline:9px}.lan-choice{padding-inline:5px}.offline-steps{padding-left:19px}}
#offline>.eyebrow{display:block;padding-right:32px;line-height:1.6}
@media(max-width:700px){.theater-sketch{height:115px}.theater-preview>div{padding:11px 12px}.theater-preview p{font-size:12px}.theater-preview small{font-size:11px}}
