:root{color-scheme:dark;--bg:#181b16;--panel:#20251d;--ink:#e6e6d2;--muted:#868e7b;--line:#353c2e;--gold:#e1bd59;--mono:'Courier New',Courier,monospace;--sans:'PingFang SC','Microsoft YaHei',system-ui,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);-webkit-tap-highlight-color:transparent}button,a,select{touch-action:manipulation}button,select{font:inherit}button{cursor:pointer}button:focus-visible,a:focus-visible,select:focus-visible,canvas:focus-visible{outline:2px solid var(--gold);outline-offset:4px}button{color:inherit}button:disabled{opacity:.35;cursor:default}a{color:inherit;text-decoration:none}.hidden{display:none!important}.page-grain{pointer-events:none;position:fixed;inset:0;opacity:.25;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 150 150' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.72' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23fff' opacity='.08' filter='url(%23n)' d='M0 0h150v150H0z'/%3E%3C/svg%3E");z-index:5}.site-header{max-width:1180px;margin:0 auto;height:94px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 12px}.brand{display:flex;align-items:center;gap:16px;letter-spacing:2px;font-size:24px;font-weight:800}.brand svg{width:29px;height:29px;color:var(--gold);shape-rendering:crispEdges}.brand-year{color:var(--gold);font:13px var(--mono);letter-spacing:1px;margin-left:13px;vertical-align:middle;display:inline-block;border:1px solid #73643d;padding:4px 6px}.header-right{display:flex;gap:13px;align-items:center}.edition{font-size:11px;color:#a1aa93;letter-spacing:2px;margin-right:17px}.edition i,.power-light,.status-dot{width:6px;height:6px;background:#b2c17f;display:inline-block;margin-right:9px}.icon-btn{background:transparent;border:1px solid var(--line);width:33px;height:33px;color:#c2c9b2;font:19px var(--mono)}.icon-btn:hover{border-color:var(--gold);color:var(--gold)}main{max-width:1180px;margin:auto;padding:30px 12px 0}.intro-line{display:flex;align-items:center;justify-content:space-between;margin-bottom:21px}.tiny-label{font:10px var(--mono);letter-spacing:2px;color:#9da68c}.intro-cn{font-size:12px;letter-spacing:2px;color:var(--muted)}.game-layout{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:30px;align-items:start}.console{min-width:0;background:#2b3027;border:1px solid #454c3c;box-shadow:0 10px 0 #10140e,0 16px 35px #0003;padding:0 17px;position:relative}.console-top{height:46px;display:flex;align-items:center;justify-content:space-between;color:#a9af98;font:10px var(--mono);letter-spacing:1.8px}.power-light{background:#dd5f44;box-shadow:0 0 7px #e057344f;width:5px;height:5px;margin-right:8px}.console-actions{display:flex;gap:16px;align-items:center}.console-actions button{background:none;border:0;font:17px var(--mono);padding:3px 0;color:#aeb69c;letter-spacing:0}.console-actions button span{font:10px var(--sans);margin-left:3px;vertical-align:2px}.console-actions button:hover{color:var(--gold)}.screen-bezel{padding:10px;background:#14180f;border:1px solid #11150e;box-shadow:inset 0 2px 6px #0009,0 1px #666b54}.screen{width:100%;aspect-ratio:8/7;position:relative;overflow:hidden;background:#080a08}#game{display:block;width:100%;height:100%;image-rendering:pixelated;outline-offset:-2px;touch-action:none}.scanlines{position:absolute;inset:0;pointer-events:none;z-index:3;background:repeating-linear-gradient(0deg,#0000 0px,#0000 3px,#0002 3px,#0002 4px);box-shadow:inset 0 0 36px #0005;opacity:.45}.console-bottom{height:38px;display:flex;align-items:center;justify-content:space-between;font:9px var(--mono);letter-spacing:1.5px;color:#a4ac94}.console-bottom #game-status{color:#b6be9f;font-size:9px}.slot{display:flex;gap:4px}.slot i{height:4px;width:27px;display:block;background:#151b11;border-bottom:1px solid #4e5543}.console-model{color:#778269;font-size:8px}.overlay{position:absolute;inset:0;z-index:2}.title-screen{background:#080a08;display:flex;flex-direction:column;align-items:center;padding:6% 6% 3%;font-family:var(--mono)}.title-score{align-self:stretch;display:flex;justify-content:space-between;color:#c7c7b3;font-size:clamp(9px,1.2vw,14px);letter-spacing:1px;white-space:nowrap}.title-score b{font-weight:400;color:#eee8ca}#title-art{width:85%;height:auto;image-rendering:pixelated;margin-top:2%;margin-bottom:-1%}.title-screen h1{font-size:clamp(13px,1.75vw,21px);margin:1% 0 4%;font-weight:500;letter-spacing:7px;color:#b6b6a0;padding-left:7px}.menu-options{width:64%;display:flex;flex-direction:column;gap:5px}.menu-item{display:flex;align-items:center;border:0;background:transparent;padding:8px 0;text-align:left;width:100%;font:clamp(12px,1.45vw,18px) var(--mono);color:#d5d4bc;letter-spacing:1px;position:relative;gap:13px}.menu-item small{font:10px var(--sans);color:#7e8872;margin-left:auto;white-space:nowrap;letter-spacing:1px}.menu-cursor{width:13px;visibility:hidden;color:var(--gold);font-size:13px}.menu-item.selected,.menu-item:hover{color:var(--gold)}.menu-item.selected .menu-cursor,.menu-item:hover .menu-cursor{visibility:visible}.menu-item:hover small,.menu-item.selected small{color:#a1a48b}.stage-select{margin-top:auto;display:flex;align-items:center;gap:18px;color:#838e75;font-size:10px;letter-spacing:1px}.stage-select label span{font:9px var(--sans);margin-left:6px}.stage-select>div{display:flex;align-items:center;gap:3px}.stage-select button{border:1px solid #2a3323;background:none;color:#b6bd9c;width:23px;height:23px;padding:0}.stage-select select{appearance:none;background:transparent;color:#d7d8be;border:none;padding:4px 5px;font:13px var(--mono);text-align:center;cursor:pointer;outline-offset:0}.stage-select option{background:#1a2117}.title-bottom{margin:4% 0 0;font:10px var(--mono);letter-spacing:1px;color:#b7bea1;text-align:center}.title-bottom>span{animation:blink 1.6s steps(2,end) infinite}.title-bottom small{display:block;font:9px var(--sans);color:#5e6b54;letter-spacing:2px;margin-top:13px}@keyframes blink{50%{opacity:.3}}.state-overlay{background:#070b08ec;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:20px;font-family:var(--mono)}.overlay-eyebrow{font-size:11px;letter-spacing:3px;color:#a6b18b;margin:0 0 18px}.state-overlay h2{font-size:clamp(25px,3vw,41px);letter-spacing:3px;color:var(--gold);font-weight:700;margin:0 0 11px}.overlay-description{font:12px var(--sans);color:#a2ad91;line-height:1.8;white-space:pre-line;margin:0 0 20px}.pixel-button{border:0;border-bottom:4px solid #8c6e2e;background:var(--gold);color:#202416;font-size:12px;font-weight:700;padding:12px 23px;box-shadow:inset 0 1px #f7dda1;letter-spacing:1px}.pixel-button:hover{background:#efd077}.pixel-button:active{transform:translateY(2px);border-bottom-width:2px}.pixel-button span{margin-left:20px;font:16px var(--mono)}.text-button{border:0;background:none;color:#8e9a7e;font:11px var(--sans);padding:13px 12px;margin-top:7px}.text-button:hover{color:var(--gold)}#overlay-stats{width:75%;max-width:300px;margin:0 0 22px}.tally{display:flex;justify-content:space-between;font:12px var(--mono);border-bottom:1px solid #2c3528;padding:7px 1px;color:#bdc4aa}.tally strong{font-weight:400;color:var(--gold)}.tally.total{border-bottom:0;color:#e5e4cb;padding-top:12px}.stage-toast{position:absolute;bottom:8%;left:50%;transform:translateX(-50%);z-index:4;padding:9px 14px;background:#111a0ee8;border:1px solid #708054;color:var(--gold);font-size:11px;white-space:nowrap}.side-panel{display:flex;flex-direction:column;gap:20px}.score-board,.controls-card{background:#20251d;border:1px solid var(--line);padding:20px}.panel-label{display:flex;justify-content:space-between;align-items:center;font-size:12px;letter-spacing:1px;margin-bottom:20px;color:#c5ccb5}.micro{font:8px var(--mono);color:#7f8d70;letter-spacing:1.1px}.score-row{display:flex;align-items:center;justify-content:space-between;margin:17px 0}.score-row>span{font:12px var(--mono);color:#b2b99e;display:flex;gap:8px;align-items:center}.square{display:inline-block;width:7px;height:7px}.gold{background:var(--gold)}.green{background:#91be67}.score-row strong{font:26px var(--mono);letter-spacing:2px;color:var(--gold)}.second-score strong{font-size:19px;color:#7f8a71}.second-score.active strong{color:#9fc77b}.record-row{display:flex;justify-content:space-between;align-items:center;margin-top:23px;padding-top:17px;border-top:1px dashed #3c4532;font:10px var(--mono);color:#879677;letter-spacing:1px}.record-row strong{font:15px var(--mono);color:#b5c39e;letter-spacing:1px}.stage-progress{margin-top:28px}.stage-progress>div:first-child{display:flex;justify-content:space-between;font:10px var(--mono);color:#a4af91;letter-spacing:1px}.stage-progress b{color:#dddac0;font-weight:400;margin-left:4px}#kill-count{color:#78856b}.progress-track{display:block!important;height:5px;background:#131b10;margin:12px 0 13px}.progress-track i{height:100%;background:#a9b77b;display:block;width:0;transition:width .2s}.stage-progress small{color:#78866b;font-size:10px;display:flex;align-items:center;letter-spacing:.5px}.status-dot{background:#8da573;width:4px;height:4px;margin-right:6px}.controls-card{padding:20px 17px}.controls-card .panel-label{margin-bottom:21px}.control-player{display:flex;align-items:flex-start;gap:12px;margin-bottom:17px}.player-tag{background:#3c3825;color:var(--gold);font:10px var(--mono);padding:4px 5px;line-height:1;margin-top:3px}.player-tag.p2{color:#a4bf81;background:#2f3a27}.control-player>div{flex:1}.control-player p{display:flex;align-items:center;gap:4px;margin:0 0 8px}.control-player p>span{margin-left:auto;font-size:10px;color:#89967b}.control-player em{font:10px var(--mono);color:#5f7154;margin:0 4px}kbd{font:10px var(--mono);font-style:normal;display:inline-flex;align-items:center;justify-content:center;min-width:21px;height:21px;padding:0 3px;border:1px solid #48503c;border-bottom:2px solid #48503c;border-radius:2px;color:#b8c0a4;background:#252c20}.wide{font-size:8px;min-width:49px}.control-pause{border-top:1px solid #35402a;padding-top:12px;display:flex;gap:13px;align-items:center;font-size:9px;color:#7e8e6e}.control-pause kbd{height:18px;min-width:17px;font-size:9px;margin-right:3px}.control-pause button{color:#a5af90;font-size:9px;white-space:nowrap;border:0;padding:0;background:none;margin-left:auto}.mission-card{padding:6px 20px 0;position:relative}.mission-icon{font-size:25px;color:#9fae7f;line-height:1;margin-bottom:13px}.mission-card h2{font-size:15px;font-weight:500;letter-spacing:1px;margin:0 0 10px;color:#cdd2bd}.mission-card p{font-size:11px;color:#819071;line-height:1.9;margin:0}.mission-detail{display:flex;align-items:center;gap:9px;font-size:9px;color:#a5af91;margin-top:15px}.mission-detail i{font-style:normal;color:#4b5f40}.hint-link{background:none;border:none;padding:0;margin-top:18px;font-size:10px;color:#b3bc9d;letter-spacing:.5px}.hint-link span{margin-left:13px;color:var(--gold)}.page-footer{display:flex;justify-content:space-between;border-top:1px solid var(--line);margin-top:40px;padding:22px 0 26px;font:9px var(--mono);letter-spacing:1px;color:#758366}.page-footer>span:last-child{font:10px var(--sans);letter-spacing:1px;color:#6d7a62}.page-footer i{width:5px;height:5px;display:inline-block;background:#6e7f59;margin-right:7px}.touch-controller{display:none;padding:22px 6px 24px;align-items:center;justify-content:space-between;gap:12px;touch-action:none;user-select:none;-webkit-user-select:none}.touch-controller.visible{display:flex}.dpad{display:grid;grid-template-columns:46px 46px 46px;grid-template-rows:46px 46px 46px;filter:drop-shadow(0 4px 0 #11190c)}.dpad button{background:#141a10;border:1px solid #3a452e;color:#8f9e79;font-size:17px;touch-action:none;padding:0}.dpad button.pressed{color:#e3d09b;background:#4b4b2e}.dpad .up{grid-area:1/2;z-index:1;border-bottom:0}.dpad .left{grid-area:2/1;border-right:0}.dpad .right{grid-area:2/3;border-left:0}.dpad .down{grid-area:3/2;border-top:0}.dpad-center{grid-area:2/2;background:#141a10;display:grid;place-items:center}.dpad-center i{width:19px;height:19px;background:#242d1b;border:2px solid #333f27;box-shadow:inset 2px 2px #12190c}.middle-controls{text-align:center;align-self:center;display:flex;align-items:center;flex-direction:column;gap:18px;flex:1}.pad-label{font:8px var(--mono);letter-spacing:2px;color:#919e7c}.middle-controls>div{display:flex;gap:12px}.middle-controls button{display:block;border:0;border-bottom:3px solid #12180d;transform:rotate(-10deg);background:#737a62;color:#202618;font:7px var(--mono);padding:4px 6px;letter-spacing:.5px;touch-action:none}.pad-hint{font-size:8px;color:#738161;white-space:nowrap}.fire-control{display:flex;flex-direction:column;align-items:center;gap:13px;min-width:90px}.fire-control button{height:76px;width:76px;border:4px solid #20251a;border-radius:50%;background:#bb4e3b;box-shadow:inset 3px 3px #d86a52,inset -3px -5px #8f332c,0 4px #131a0d;touch-action:none;position:relative;color:#f8a893;font:25px var(--mono)}.fire-control button.pressed{transform:translateY(3px);box-shadow:inset 2px 2px 6px #69241d,0 1px #131a0d;background:#9c3e30}.fire-control>span{font:9px var(--mono);letter-spacing:1px;color:#aeb89a}.editor-tools{padding:20px 0 4px;border-top:1px solid #48513c}.editor-heading{display:flex;justify-content:space-between;font-size:10px;color:#8f9d7b;margin-bottom:15px}.editor-heading strong{font:11px var(--mono);color:var(--gold)}.editor-heading strong span{font:10px var(--sans);margin-left:8px}.terrain-palette{display:flex;gap:7px;flex-wrap:wrap}.terrain-palette button{display:flex;align-items:center;gap:7px;background:#20271a;border:1px solid #46513a;padding:7px;font-size:10px;color:#aebc96}.terrain-palette button.selected{border-color:var(--gold);color:var(--gold)}.tile-sample{width:22px;height:22px;display:inline-block;flex-shrink:0;image-rendering:pixelated}.brick{background:repeating-linear-gradient(0deg,transparent 0 6px,#6a3825 6px 8px),repeating-linear-gradient(90deg,#bc7148 0 9px,#6a3825 9px 11px)}.steel{background:#bec7b3;border-top:4px solid #e2e7d4;border-left:4px solid #e2e7d4;border-right:4px solid #65765e;border-bottom:4px solid #65765e}.water{background:repeating-linear-gradient(0deg,#315787 0 4px,#6198ae 4px 6px,#315787 6px 10px)}.forest{background:repeating-conic-gradient(#376e2f 0 25%,#6da944 0 50%) 0/8px 8px}.ice{background:#a6cecd;box-shadow:inset 3px 3px #d3eae0}.empty{background:#080a08;border:1px dashed #647951}.base{background:#1a2116;color:#c3c9b4;position:relative}.base:after{content:'◆';position:absolute;inset:2px;text-align:center}.editor-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:17px}.editor-actions button:not(.pixel-button){background:none;border:1px solid #4a593d;padding:8px 12px;color:#b6c09f;font-size:10px}.editor-actions .pixel-button{font-size:11px;padding:9px 16px}.editor-tools>p{font-size:10px;color:#869573;margin:16px 0 10px}dialog{background:#22291d;color:#d8ddc5;border:1px solid #64734e;padding:28px;max-width:560px;width:calc(100% - 30px);max-height:85dvh;box-shadow:0 20px 80px #000a}dialog::backdrop{background:#080c09c9}.dialog-header{display:flex;justify-content:space-between;align-items:center}.dialog-header h2{font-weight:500;font-size:23px;margin:9px 0 12px;letter-spacing:1px}.dialog-header .tiny-label{font-size:9px}.help-intro{font-size:12px;color:#acb99a;line-height:1.9;border-bottom:1px solid #414f34;padding-bottom:18px}dialog h3{font-size:12px;font-weight:500;color:var(--gold);margin:24px 0 15px;letter-spacing:1px}.terrain-guide{display:grid;grid-template-columns:1fr 1fr;gap:15px}.terrain-guide p{display:flex;align-items:center;gap:10px;margin:0;font-size:10px;color:#96a985}.terrain-guide b{display:block;color:#cdd5ba;font-size:11px;font-weight:400;margin-bottom:3px}.powerup-guide{display:grid;grid-template-columns:1fr 1fr;gap:17px 10px}.powerup-guide p{display:flex;gap:10px;margin:0;font-size:10px;color:#96a985;align-items:center}.powerup-guide b{display:grid;place-items:center;border:2px solid #d4dbc0;width:25px;height:25px;flex-shrink:0;color:#d4dbc0;font:18px var(--mono)}.powerup-guide strong{display:block;color:#cdd5ba;font-size:11px;font-weight:400;margin-bottom:4px}.help-note{margin:25px 0 20px;font-size:11px;color:#96a985;line-height:1.9}.notification{position:fixed;bottom:30px;left:50%;transform:translate(-50%,20px);background:#e1bd59;color:#1f2a16;padding:12px 20px;font-size:12px;opacity:0;pointer-events:none;transition:.2s;z-index:20;max-width:90%;text-align:center}.notification.show{opacity:1;transform:translate(-50%,0)}.console:fullscreen{height:100dvh;display:flex;flex-direction:column;align-items:center;background:#151a11;overflow:auto;padding:0 10px}.console:fullscreen .console-top,.console:fullscreen .console-bottom{width:min(90vw,870px)}.console:fullscreen .screen-bezel{width:min(calc((100dvh - 90px) * 8 / 7),90vw);padding:5px}.console:fullscreen .touch-controller.visible{display:none}.console:fullscreen .editor-tools{max-width:800px;width:90vw}
@media(min-width:1450px){main{padding-top:34px}.game-layout{gap:36px;grid-template-columns:minmax(0,1fr) 270px}.side-panel{gap:24px}.score-board{padding:23px}.controls-card{padding:23px 20px}}
@media(max-width:1000px){.site-header{margin:0 24px;height:78px;padding:0}main{padding:24px}.game-layout{grid-template-columns:minmax(0,1fr) 225px;gap:20px}.score-board,.controls-card{padding:16px}.menu-options{width:75%}.menu-item{gap:8px}.menu-item small{font-size:9px}.title-bottom small{margin-top:8px}.side-panel{gap:15px}.panel-label{font-size:11px}.micro{font-size:7px}.control-player{gap:8px}.control-player p{gap:3px}kbd{min-width:18px}.control-pause{gap:6px}.control-pause button{font-size:8px}.mission-card{padding:6px 13px}.console{padding:0 12px}.console-top{font-size:8px;letter-spacing:1px}.console-actions{gap:12px}.screen-bezel{padding:8px}.page-footer{margin-top:32px}.page-footer>span:last-child{font-size:9px}.title-screen h1{margin-bottom:3%}.menu-item{padding:6px 0}}
@media(max-width:760px){.site-header{height:66px;margin:0 18px}.brand{font-size:20px;gap:11px;letter-spacing:1px}.brand svg{width:24px;height:24px}.brand-year{font-size:10px;padding:3px 5px;margin-left:10px}.header-right{gap:9px}.edition{display:none}.icon-btn{width:29px;height:29px;font-size:17px}main{padding:18px 14px 0}.intro-line{margin:0 4px 14px}.tiny-label{font-size:8px;letter-spacing:1px}.intro-cn{font-size:10px;letter-spacing:.5px}.game-layout{grid-template-columns:minmax(0,1fr);gap:26px;max-width:650px;margin:auto}.console{padding:0 10px}.console-top{height:37px;font-size:8px;letter-spacing:1px}.console-top .console-actions button{font-size:15px}.console-actions button span{font-size:9px}.screen-bezel{padding:6px}.console-bottom{height:29px;font-size:7px;letter-spacing:1px}.console-model{font-size:7px}.console-bottom #game-status{font-size:7px}.title-score{font-size:clamp(9px,2.5vw,14px)}.title-screen h1{font-size:clamp(12px,3.4vw,20px);letter-spacing:5px;margin:1% 0 3%}.menu-item{font-size:clamp(11px,3.1vw,18px);padding:6px 0;gap:8px}.menu-item small{font-size:clamp(8px,2vw,11px)}.menu-options{gap:0;width:72%}.menu-cursor{font-size:10px}.stage-select{font-size:8px;gap:13px}.stage-select label span{font-size:8px;margin-left:4px}.stage-select button{width:21px;height:21px}.stage-select select{font-size:11px}.title-bottom{font-size:8px;margin-top:3%;letter-spacing:.6px}.title-bottom small{font-size:7px;margin-top:8px;letter-spacing:1px}.touch-controller{display:flex;padding:17px 4px 22px;gap:10px}.touch-controller.force-hide{display:none}.side-panel{display:grid;grid-template-columns:1fr 1fr;gap:12px}.score-board{grid-column:1/-1;padding:16px;display:grid;grid-template-columns:1fr 1fr;gap:0 24px}.score-board .panel-label{grid-column:1/-1;margin-bottom:5px}.score-row{margin:12px 0}.second-score{grid-column:2;grid-row:2}.score-row strong{font-size:23px}.second-score strong{font-size:18px}.record-row{grid-row:3;grid-column:1;margin-top:5px;padding-top:13px}.stage-progress{grid-column:2;grid-row:3;margin-top:5px;padding-top:13px;border-top:1px dashed #3c4532}.progress-track{margin:7px 0}.stage-progress small{font-size:9px}.record-row{align-self:start}.controls-card{padding:16px 12px}.mission-card{padding:14px 12px}.panel-label{font-size:10px;letter-spacing:0}.micro{display:none}.control-player{gap:8px}.control-player p>span{font-size:8px}.control-player p{gap:2px}kbd{min-width:17px;height:19px;font-size:9px}.control-player em{margin:0 2px}.wide{font-size:7px;min-width:40px}.control-pause{flex-wrap:wrap;gap:6px}.control-pause button{margin-left:0}.mission-card h2{font-size:13px}.mission-card p{font-size:10px}.mission-detail{font-size:8px;gap:5px}.hint-link{font-size:9px}.page-footer{margin-top:25px;padding:20px 4px 24px;gap:12px;flex-direction:column;text-align:center;font-size:7px}.page-footer>span:last-child{font-size:9px}.overlay-eyebrow{font-size:9px;margin-bottom:14px}.state-overlay h2{font-size:clamp(22px,6vw,34px)}.overlay-description{font-size:11px;margin-bottom:14px}.pixel-button{font-size:11px;padding:10px 19px}.tally{font-size:10px;padding:5px 0}#overlay-stats{margin-bottom:14px}.state-overlay .text-button{font-size:10px;margin-top:2px}.terrain-palette{gap:6px}.terrain-palette button{font-size:9px;padding:6px;gap:5px}.terrain-palette .tile-sample{width:18px;height:18px}.editor-heading{font-size:9px}.editor-heading strong{font-size:10px}.editor-actions{gap:8px}.editor-actions button:not(.pixel-button){font-size:9px}.editor-tools>p{font-size:9px}.editor-tools:not(.hidden)~.touch-controller{display:none}.console:fullscreen .screen-bezel{width:min(calc((100dvh - 200px) * 8 / 7),100%)}.console:fullscreen .touch-controller{display:flex;width:min(100%,540px)}.console:fullscreen .console-top,.console:fullscreen .console-bottom{width:100%}}
@media(max-width:370px){main{padding-left:8px;padding-right:8px}.console{padding:0 7px}.dpad{grid-template-columns:40px 40px 40px;grid-template-rows:40px 40px 40px}.fire-control{min-width:70px}.fire-control button{width:65px;height:65px}.middle-controls>div{gap:8px}.middle-controls button{font-size:6px;padding:4px}.pad-hint{font-size:7px}.menu-item{padding:4px 0}.stage-select button{width:18px;height:18px}.title-bottom small{margin-top:5px}.title-bottom{font-size:7px}.side-panel{gap:8px}.control-player{gap:4px}.player-tag{font-size:9px;padding:3px}.controls-card{padding:13px 9px}.mission-card{padding:12px 8px}.mission-card h2{font-size:12px}.terrain-guide,.powerup-guide{gap:15px 8px}.help-intro{font-size:11px}dialog{padding:20px}}
@media(prefers-reduced-motion:reduce){.title-bottom>span{animation:none}.progress-track i,.notification{transition:none}}
.battle-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding:0 0 12px;width:100%}.mode-toggle{display:flex;align-items:center;justify-content:center;gap:10px;min-height:42px;padding:8px 12px;background:#20271a;border:1px solid #4a553c;border-bottom:3px solid #151c10;color:#aeb99c;font-size:12px;letter-spacing:1px;touch-action:manipulation}.mode-symbol{font:22px var(--mono);line-height:1;color:#83996e}.mode-toggle small{font-size:9px;color:#7d8e6d;margin-left:auto;letter-spacing:0;white-space:nowrap}.mode-toggle>span:nth-child(2){margin-right:auto;white-space:nowrap}.mode-toggle:hover{border-color:#a58f4f}.mode-toggle.active{background:#45432a;border-color:#bda152;border-bottom-color:#796733;color:#f1d485}.mode-toggle.active .mode-symbol{color:#f1d485}.mode-toggle.active small{color:#e7cf8b}.console:fullscreen .battle-options{width:min(90vw,870px);flex-shrink:0}.console:fullscreen .screen-bezel{width:min(calc((100dvh - 145px) * 8 / 7),90vw)}@media(max-width:760px){.battle-options{gap:7px;padding-bottom:8px}.mode-toggle{display:grid;grid-template-columns:18px 1fr;grid-template-rows:auto auto;min-height:50px;font-size:10px;gap:3px 5px;padding:7px 8px;text-align:left;letter-spacing:.5px}.mode-symbol{grid-column:1;grid-row:1/3;font-size:20px}.mode-toggle>span:nth-child(2){grid-column:2;margin:0}.mode-toggle small{grid-column:2;font-size:8px;margin:0}.console:fullscreen .battle-options{width:100%;max-width:540px}.console:fullscreen .screen-bezel{width:min(calc((100dvh - 266px) * 8 / 7),100%)}}
.buff-strip{display:flex;flex-wrap:wrap;gap:6px;padding-bottom:12px;width:100%;max-height:76px;overflow:auto}.buff-strip>span{--buff-color:#b7d69c;border:1px solid #50603f;color:var(--buff-color);font-size:9px;line-height:1.4;padding:4px 7px;background:#1b2416;white-space:nowrap}.buff-strip b{font:10px var(--mono);margin-left:5px;color:#e5e7d2}.tally-enemies{display:grid;grid-template-columns:1fr 1fr;gap:0 16px;max-height:135px;overflow:auto}.tally-enemies .tally{font-size:10px;gap:9px}.tally-enemies .tally>span{white-space:nowrap}.enemy-guide{display:grid;grid-template-columns:1fr 1fr;gap:14px 10px}.enemy-guide>div{display:flex;align-items:center;gap:9px}.enemy-guide canvas{width:40px;height:40px;image-rendering:pixelated;flex-shrink:0;background:#151e11;border:1px solid #405234}.enemy-guide strong{font-size:11px;font-weight:500;display:block;line-height:1.7}.enemy-guide small{display:block;font:8px var(--mono);color:#7d9370}.enemy-guide p{font-size:10px;color:#98ab87;line-height:1.6;margin:4px 0 0}.powerup-guide p{line-height:1.6;align-items:flex-start}.powerup-guide b{margin-top:3px}.powerup-guide strong{margin-bottom:3px}.console:fullscreen .buff-strip{width:min(90vw,870px);max-height:72px;overflow:auto;flex-shrink:0}.console:fullscreen:has(.buff-strip:not(.hidden)) .screen-bezel{width:min(calc((100dvh - 205px) * 8 / 7),90vw)}@media(max-width:760px){.buff-strip{gap:4px;padding-bottom:8px;max-height:66px}.buff-strip>span{font-size:8px;padding:3px 5px}.buff-strip b{font-size:9px;margin-left:3px}.enemy-guide{gap:14px 8px}.enemy-guide>div{gap:7px}.enemy-guide canvas{width:32px;height:32px}.enemy-guide strong{font-size:10px}.enemy-guide p{font-size:9px}.enemy-guide small{font-size:7px}.tally-enemies{gap:0 12px;max-height:100px}.tally-enemies .tally{font-size:8px;gap:5px}#overlay-stats:has(.tally-enemies){width:90%}.console:fullscreen:has(.buff-strip:not(.hidden)) .screen-bezel{width:min(calc((100dvh - 320px) * 8 / 7),100%)}}
.battle-options{grid-template-columns:repeat(4,minmax(0,1fr))}.editor-tabs{display:flex;gap:8px;margin-bottom:12px}.editor-tabs button{border:1px solid #46513a;background:#20271a;color:#91a07c;font-size:10px;padding:7px 12px}.editor-tabs button[aria-pressed=true]{border-color:#bda152;color:#efd18a;background:#3c3c27}.terrain-palette .tile-sample{display:grid;place-items:center;font:15px var(--mono);line-height:1}.mud{background:repeating-linear-gradient(15deg,#58432d 0 5px,#7b603c 5px 7px,#58432d 7px 11px)}.belt{background:repeating-linear-gradient(0deg,#303c31 0 4px,#6d7658 4px 6px);border:1px solid #8c9870}.portal-a{background:#302745;border:2px solid #a895e8;box-shadow:inset 0 0 0 3px #201b2d}.portal-b{background:#203b45;border:2px solid #75cbdb;box-shadow:inset 0 0 0 3px #142930}.energy{background:#203a2b;border:1px solid #6f9872}.mine{background:#48312a;border:1px solid #ad7c62}.layer-guide b{font-size:15px}.editor-tools>p{line-height:1.8}@media(min-width:761px) and (max-width:1000px){.mode-toggle{font-size:10px;padding:7px 6px;gap:5px}.mode-toggle small{font-size:8px}.mode-symbol{font-size:17px}}@media(max-width:760px){.mode-toggle{grid-template-columns:1fr;grid-template-rows:1fr 1fr;padding:6px 3px;gap:4px;min-height:46px;text-align:center}.mode-symbol{display:none}.mode-toggle>span:nth-child(2){grid-column:1;grid-row:1;margin:0;font-size:10px;letter-spacing:0}.mode-toggle small{grid-column:1;grid-row:2;margin:0;font-size:8px}.editor-tabs button{font-size:9px;padding:6px 10px}.console:fullscreen .screen-bezel{width:min(calc((100dvh - 262px) * 8 / 7),100%)}}
/* Player arsenal, kept alongside the four independent assist switches. */
.player-armory{width:100%;margin:0 0 12px;padding:10px;background:#1d2519;border:1px solid #4b5b3e;display:grid;gap:7px}.armory-heading{display:flex;align-items:center;gap:10px;min-width:0}.armory-heading>strong{font-size:11px;font-weight:500;color:#d2dabc;white-space:nowrap}.armory-heading>strong small{font:8px var(--mono);color:#718168;letter-spacing:1px;margin-left:8px}.armory-tabs{display:flex;gap:3px}.armory-tab{font:10px var(--mono);border:1px solid #4a5b3f;background:#293122;color:#839678;padding:3px 7px}.armory-tab[aria-pressed=true]{color:#edd38a;border-color:#c6ac64;background:#423f27}#armor-status{margin-left:auto;white-space:nowrap;font-size:10px;color:#a9d4a3}#armor-status.damaged{color:#e5a386}.energy-status{display:flex;align-items:center;gap:6px;color:#9ccdd6;font:10px var(--mono);white-space:nowrap}.energy-status>i{display:block;width:44px;height:6px;background:#111a13;border:1px solid #3b594e}.energy-status b{display:block;height:100%;width:100%;background:#8fcbd3}.weapon-buttons{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.weapon-button{display:flex;align-items:center;justify-content:center;gap:7px;min-height:35px;padding:6px 4px;font-size:11px;background:#293322;border:1px solid #4c5a40;color:#9fac90}.weapon-button b{font:13px var(--mono);color:var(--weapon-color,#efc47c)}.weapon-button[aria-pressed=true]{background:#3e412a;border-color:var(--weapon-color,#efc47c);box-shadow:inset 0 -2px var(--weapon-color,#efc47c);color:#f1e7ba}.weapon-button:hover{border-color:var(--weapon-color,#efc47c)}.weapon-description{min-height:14px;margin:0;color:#aab89b;font-size:10px;line-height:1.5}.skill-buttons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.skill-button{display:flex;align-items:center;justify-content:center;gap:8px;min-height:38px;background:#273b37;color:#c1e4df;border:1px solid #638b7e;border-bottom:3px solid #355b50;padding:6px 4px;touch-action:manipulation}.skill-button span{font-size:11px}.skill-button small{font:9px var(--sans);color:#91b7af}.skill-button:disabled{opacity:.6;background:#232d24;border-color:#475640;color:#91a28a}.skill-button:not(:disabled):hover{background:#38564a;border-color:#a5d8c6}.skill-button:not(:disabled):active{transform:translateY(1px)}.armory-hint{margin:0;font:9px var(--sans);color:#788e6b;line-height:1.5}.console:fullscreen .player-armory{width:min(90vw,870px);flex-shrink:0}.console:fullscreen .screen-bezel{width:min(calc((100dvh - 315px) * 8 / 7),90vw)}.console:fullscreen:has(.buff-strip:not(.hidden)) .screen-bezel{width:min(calc((100dvh - 387px) * 8 / 7),90vw)}
@media(max-width:1000px){.armory-heading>strong small{display:none}.skill-button{gap:4px}.skill-button small{font-size:8px}}
@media(max-width:760px){.player-armory{padding:8px;gap:6px;margin-bottom:8px}.armory-heading{gap:6px}.armory-heading>strong{font-size:10px}.armory-tab{padding:3px 5px}#armor-status{font-size:9px}.energy-status{font-size:9px;gap:4px}.energy-status>i{width:30px}.weapon-buttons,.skill-buttons{gap:4px}.weapon-button{gap:4px;font-size:10px;min-height:37px;padding:5px 2px}.weapon-button b{font-size:11px}.weapon-description{font-size:9px;min-height:27px}.skill-button{min-height:42px;flex-direction:column;gap:2px}.skill-button span{font-size:10px}.skill-button small{font-size:9px}.armory-hint{font-size:8px}.console:fullscreen .player-armory{width:min(100%,540px)}.console:fullscreen .screen-bezel{width:min(max(180px,calc((100dvh - 442px) * 8 / 7)),100%)}.console:fullscreen:has(.buff-strip:not(.hidden)) .screen-bezel{width:min(max(180px,calc((100dvh - 508px) * 8 / 7)),100%)}}
@media(max-width:370px){.weapon-button b{display:none}.armory-heading{gap:4px}.armory-heading>strong{font-size:9px}.energy-status>i{width:20px}.armory-tab{padding:3px 4px}.armory-hint{font-size:7px}}

.control-player p.arsenal-keys{font-size:9px;line-height:1.7;color:#91a881;display:block;margin-top:4px}@media(max-width:760px){.control-player p.arsenal-keys{font-size:8px}}
/* The return control is separated from the action buttons; touch SELECT now changes weapons. */
.safe-menu{display:flex;align-items:center;gap:6px;min-width:56px;min-height:32px;justify-content:center;margin-right:14px;border:1px solid #526247;border-bottom:3px solid #182213;background:#222b1c;color:#b8c4a5;font:16px var(--mono);padding:4px 8px;letter-spacing:0}.safe-menu span{font:10px var(--sans)}.safe-menu:hover{border-color:#ad9a5e;color:#ead28e}.console-name{margin-right:auto}.console-top>.console-actions{margin-left:12px}.exit-dialog{width:min(430px,90vw);padding:26px;border:1px solid #bba366;background:#20281b;color:#e5e6cc}.exit-dialog h2{font-size:18px;line-height:1.6;margin:12px 0}.exit-dialog>p:not(.tiny-label){font-size:12px;color:#a8b799;line-height:1.8}.exit-actions{display:flex;align-items:center;justify-content:space-between;gap:26px;margin-top:24px}.exit-actions .pixel-button{font-size:12px;padding:12px 16px}.exit-confirm{padding:12px 15px;min-height:43px;border:1px solid #8b6651;background:#392d22;color:#d4b39c;font-size:11px}.exit-confirm:hover{background:#4b3528;color:#efd0ba}.stage-select select{min-width:88px;font-size:13px}.boss-status{width:100%;padding:8px 10px;margin-bottom:10px;border:1px solid #926b53;background:#2c2820;color:#e5c69b}.boss-status>div:first-child{display:flex;justify-content:space-between;gap:10px;align-items:center}.boss-status strong{font-size:11px;font-weight:500}.boss-status span{font:10px var(--sans);color:#baa68d;white-space:nowrap}.boss-health-track{height:5px;margin-top:6px;background:#171b12}.boss-health-track i{display:block;height:100%;width:0;background:#dba17c;transition:width .1s}.boss-challenge-card{padding:20px 19px;background:#23281e;border:1px solid #484e39}.boss-challenge-card label{display:block;color:#9fac8d;font-size:10px;margin:17px 0 9px}.boss-challenge-card select{width:100%;padding:9px 10px;background:#1b2316;color:#e0d9ad;border:1px solid #67704f;font-size:12px}.boss-challenge-card p{font-size:11px;color:#a6b295;line-height:1.7;min-height:38px;margin:10px 0 12px}.boss-challenge-card>small{display:block;font-size:9px;color:#849675;line-height:1.7;margin-top:12px}.challenge-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}.challenge-actions button{border:1px solid #9f8a51;border-bottom:3px solid #5c502e;background:#3a3b25;color:#e1cb85;padding:10px 6px;font-size:11px}.challenge-actions button:disabled{opacity:.4}.boss-guide{display:grid;grid-template-columns:1fr 1fr;gap:14px}.boss-guide>div{display:flex;gap:10px;align-items:center}.boss-guide canvas{width:58px;height:58px;image-rendering:pixelated;background:#151e11;flex-shrink:0}.boss-guide p{margin:0;font-size:10px;line-height:1.7;color:#a1b08f}.boss-guide strong{display:block;font-weight:500;font-size:12px;margin-bottom:3px}.boss-guide span{display:block}.boss-reward{color:#dec584;font-size:11px;line-height:1.6;margin:12px 0}.console:fullscreen .boss-status{width:min(90vw,870px);flex-shrink:0}.console:fullscreen .screen-bezel{width:min(max(180px,calc((100dvh - 355px) * 8 / 7)),90vw)}.console:fullscreen:has(.buff-strip:not(.hidden)) .screen-bezel{width:min(max(180px,calc((100dvh - 427px) * 8 / 7)),90vw)}.console:fullscreen:has(.boss-status:not(.hidden)) .screen-bezel{width:min(max(180px,calc((100dvh - 409px) * 8 / 7)),90vw)}.console:fullscreen:has(.boss-status:not(.hidden)):has(.buff-strip:not(.hidden)) .screen-bezel{width:min(max(180px,calc((100dvh - 481px) * 8 / 7)),90vw)}
@media(max-width:760px){.safe-menu{min-width:50px;min-height:30px;margin-right:9px;font-size:15px;padding:3px 6px}.safe-menu span{font-size:9px}.console-name{font-size:7px;letter-spacing:.6px}.console-top>.console-actions{gap:14px;margin-left:8px}.stage-select select{min-width:76px;font-size:10px}.boss-status{padding:7px 8px;margin-bottom:8px}.boss-status strong{font-size:10px}.boss-status span{font-size:8px}.boss-challenge-card{grid-column:1/-1;padding:16px}.boss-challenge-card label{margin-top:12px}.boss-challenge-card p{min-height:0;font-size:10px}.challenge-actions button{min-height:42px}.boss-guide{gap:16px 9px}.boss-guide>div{gap:7px}.boss-guide canvas{width:46px;height:46px}.boss-guide p{font-size:9px}.boss-guide strong{font-size:10px}.exit-dialog{padding:22px}.exit-dialog h2{font-size:16px}.exit-actions{gap:20px}.boss-reward{font-size:10px}.console:fullscreen .boss-status{width:min(100%,540px)}.console:fullscreen .screen-bezel{width:min(max(180px,calc((100dvh - 488px) * 8 / 7)),100%)}.console:fullscreen:has(.buff-strip:not(.hidden)) .screen-bezel{width:min(max(180px,calc((100dvh - 554px) * 8 / 7)),100%)}.console:fullscreen:has(.boss-status:not(.hidden)) .screen-bezel{width:min(max(180px,calc((100dvh - 535px) * 8 / 7)),100%)}.console:fullscreen:has(.boss-status:not(.hidden)):has(.buff-strip:not(.hidden)) .screen-bezel{width:min(max(180px,calc((100dvh - 601px) * 8 / 7)),100%)}}
@media(max-width:370px){.console-name{font-size:6px;letter-spacing:0}.console-top>.console-actions{gap:10px;margin-left:5px}.safe-menu{margin-right:6px;min-width:45px}.boss-guide{grid-template-columns:1fr}.boss-guide canvas{width:54px;height:54px}}
/* Siege arsenal: compact shield feedback and a swipeable mobile weapon rack. */
.boss-tactics{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-top:7px}.boss-tactics span{font-size:9px;line-height:1.5}.boss-tactics #boss-shield{color:#92d5dd;white-space:nowrap}.boss-barrier-track{height:3px;background:#182b2b;margin-top:4px}.boss-barrier-track i{display:block;height:100%;width:0;background:#8bdde4}.weapon-new{position:relative}.weapon-new::after{content:'';position:absolute;right:3px;top:3px;width:3px;height:3px;background:#e9cb7b}.weapon-scroll-hint{display:none;margin:0;color:#869b76;font-size:8px;line-height:1.5}.weapon-buttons{position:relative}.console:fullscreen .screen-bezel{width:min(max(180px,calc((100dvh - 395px) * 8 / 7)),90vw)}.console:fullscreen:has(.buff-strip:not(.hidden)) .screen-bezel{width:min(max(180px,calc((100dvh - 467px) * 8 / 7)),90vw)}.console:fullscreen:has(.boss-status:not(.hidden)) .screen-bezel{width:min(max(180px,calc((100dvh - 477px) * 8 / 7)),90vw)}.console:fullscreen:has(.boss-status:not(.hidden)):has(.buff-strip:not(.hidden)) .screen-bezel{width:min(max(180px,calc((100dvh - 549px) * 8 / 7)),90vw)}
@media(max-width:760px){.weapon-buttons{display:flex;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x proximity;padding-bottom:4px;scrollbar-width:thin;scrollbar-color:#7e8e5b #1d2519}.weapon-button{flex:0 0 calc((100% - 12px)/4);min-width:76px;scroll-snap-align:start;white-space:nowrap}.weapon-scroll-hint{display:block}.boss-tactics span{font-size:8px}.boss-tactics{gap:6px}.console:fullscreen .screen-bezel{width:min(max(180px,calc((100dvh - 466px) * 8 / 7)),100%)}.console:fullscreen:has(.buff-strip:not(.hidden)) .screen-bezel{width:min(max(180px,calc((100dvh - 532px) * 8 / 7)),100%)}.console:fullscreen:has(.boss-status:not(.hidden)) .screen-bezel{width:min(max(180px,calc((100dvh - 545px) * 8 / 7)),100%)}.console:fullscreen:has(.boss-status:not(.hidden)):has(.buff-strip:not(.hidden)) .screen-bezel{width:min(max(180px,calc((100dvh - 611px) * 8 / 7)),100%)}}
@media(prefers-reduced-motion:reduce){.boss-health-track i{transition:none}}

/* Overdrive: six reachable skills and compact live combat feedback. */
.combat-status-row{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:28px;border-top:1px solid #35442d;padding-top:5px}.combat-status-row>span{font-size:10px;line-height:1.5;color:#99bda2}.combat-status-row>span.charged{color:#f0cf80}#effects-btn{flex-shrink:0;border:1px solid #4b6050;background:#25362b;color:#aecab1;padding:5px 8px;font-size:10px;min-height:30px}#effects-btn[aria-pressed=true]{color:#efd18a;border-color:#8c7849}.skill-button:nth-child(n+4){background:#333448;border-color:#777698;border-bottom-color:#494b6d;color:#ddd9fa}.skill-button:nth-child(n+4):disabled{background:#272b2d;border-color:#474d50;color:#9a9daa}.skill-button:nth-child(n+4):not(:disabled):hover{background:#45425b}.controls-card .arsenal-keys{line-height:1.8}
.console:fullscreen .screen-bezel{flex-shrink:0;width:min(max(180px,calc((100dvh - 510px) * 8 / 7)),90vw)}.console:fullscreen:has(.buff-strip:not(.hidden)) .screen-bezel{width:min(max(180px,calc((100dvh - 582px) * 8 / 7)),90vw)}.console:fullscreen:has(.boss-status:not(.hidden)) .screen-bezel{width:min(max(180px,calc((100dvh - 592px) * 8 / 7)),90vw)}.console:fullscreen:has(.boss-status:not(.hidden)):has(.buff-strip:not(.hidden)) .screen-bezel{width:min(max(180px,calc((100dvh - 664px) * 8 / 7)),90vw)}
@media(max-width:760px){.combat-status-row>span{font-size:8px}#effects-btn{font-size:9px;padding:5px 6px}.console:fullscreen .screen-bezel{width:min(max(180px,calc((100dvh - 540px) * 8 / 7)),100%)}.console:fullscreen:has(.buff-strip:not(.hidden)) .screen-bezel{width:min(max(180px,calc((100dvh - 606px) * 8 / 7)),100%)}.console:fullscreen:has(.boss-status:not(.hidden)) .screen-bezel{width:min(max(180px,calc((100dvh - 619px) * 8 / 7)),100%)}.console:fullscreen:has(.boss-status:not(.hidden)):has(.buff-strip:not(.hidden)) .screen-bezel{width:min(max(180px,calc((100dvh - 685px) * 8 / 7)),100%)}}

/* Mobile combat uses the visible viewport, with equipment in a paused dialog. */
#loadout-dialog{width:min(94vw,600px);max-height:min(90dvh,850px);overflow:auto;padding:20px}#loadout-dialog::backdrop{background:#070d09dc}.loadout-weapons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin:15px 0}.loadout-weapons button,.loadout-assists button,#loadout-player{min-height:48px;border:1px solid #586947;background:#24321e;color:#d4ddbc;padding:8px;font-size:11px}.loadout-weapons button{display:flex;align-items:center;gap:8px;text-align:left}.loadout-weapons b{color:#dfc57e}.loadout-weapons [aria-pressed=true],.loadout-assists [aria-pressed=true]{background:#475630;border-color:#d5c17a;color:#fff3bd}.loadout-assists{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin-bottom:18px}#loadout-close{min-width:44px;min-height:44px}#loadout-done{min-height:48px;width:100%}#layout-btn{display:none}#touch-titan,#titan-btn{min-height:40px;border:1px solid #84734e;background:#3a3425;color:#e9cb86;padding:6px;font-size:10px}#touch-titan:disabled,#titan-btn:disabled{opacity:.6}#touch-titan.ready,#titan-btn.ready{background:#766033;color:#fff0a8;border-color:#ffe29e}
@media(max-width:1024px){#layout-btn{display:inline-block}}
body.compact-combat{overflow:hidden;overscroll-behavior:none}body.compact-combat .console{position:fixed!important;z-index:40;top:var(--combat-top,0px);left:0;right:0;width:100%;height:var(--combat-height,100dvh)!important;margin:0;padding:8px max(8px,env(safe-area-inset-right)) max(8px,env(safe-area-inset-bottom)) max(8px,env(safe-area-inset-left));border:0;box-shadow:none;background:#1c2519;display:grid!important;grid-template-columns:minmax(0,1fr);grid-template-rows:40px minmax(0,1fr) 120px 140px;grid-template-areas:"toolbar" "arena" "skills" "controls";gap:6px;align-items:stretch;overflow:hidden!important}body.compact-combat .console-top{grid-area:toolbar;width:100%;height:40px;gap:8px}body.compact-combat .console-name,body.compact-combat #fullscreen-btn,body.compact-combat .console-bottom,body.compact-combat .boss-status,body.compact-combat .battle-options,body.compact-combat .buff-strip{display:none!important}body.compact-combat .console-actions{gap:8px}body.compact-combat .console-top button{min-height:38px;min-width:44px}body.compact-combat .screen-bezel{grid-area:arena;align-self:center;justify-self:center;width:min(100%,var(--arena-width));max-height:100%;padding:3px;flex-shrink:1}body.compact-combat .player-armory{grid-area:skills;width:100%;height:120px;min-width:0;min-height:0;max-width:none;margin:0;padding:3px 0;border:0;background:none;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:24px 92px;grid-template-areas:"heading" "buttons";gap:4px}body.compact-combat .armory-heading{grid-area:heading;height:24px;min-width:0;gap:6px;flex-wrap:nowrap}body.compact-combat .armory-heading>strong{display:none}body.compact-combat .weapon-buttons,body.compact-combat .weapon-description,body.compact-combat .weapon-scroll-hint,body.compact-combat .armory-hint,body.compact-combat .combat-status-row{display:none!important}body.compact-combat .skill-buttons{grid-area:buttons;min-width:0;min-height:0;overflow:hidden;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(2,44px);gap:4px}body.compact-combat .skill-button{min-width:0;min-height:44px;max-height:100%;overflow:hidden;padding:3px;flex-direction:column;gap:2px}body.compact-combat .skill-button span{font-size:11px}body.compact-combat .skill-button small{font-size:9px}body.compact-combat .touch-controller{grid-area:controls;display:flex!important;width:100%;height:140px;max-width:none;padding:4px 0;gap:8px;align-items:center;justify-content:space-between}body.compact-combat .dpad{grid-template-columns:repeat(3,var(--pad-cell,44px));grid-template-rows:repeat(3,var(--pad-cell,44px));flex-shrink:0}body.compact-combat .middle-controls{gap:8px;min-width:58px;flex:0 1 86px}body.compact-combat .middle-controls>div{gap:5px}body.compact-combat .middle-controls button{min-height:32px;transform:none;font-size:9px;padding:6px 5px}body.compact-combat .middle-controls #touch-titan{width:100%;min-height:44px;font-size:11px;transform:none}body.compact-combat .pad-label,body.compact-combat .pad-hint,body.compact-combat .fire-control>span{display:none}body.compact-combat .fire-control{min-width:76px;gap:0}body.compact-combat .fire-control button{width:76px;height:76px}body.compact-combat .stage-toast{font-size:10px;max-width:95%;white-space:normal;text-align:center}body.compact-combat .state-overlay{padding:8px;overflow:auto}body.compact-combat .state-overlay h2{font-size:22px;margin:4px 0}body.compact-combat .overlay-eyebrow{margin:0 0 5px;font-size:9px}body.compact-combat .overlay-description{font-size:10px;line-height:1.4;margin:0 0 8px}body.compact-combat #overlay-stats{margin:0 0 6px;max-height:80px;overflow:auto}body.compact-combat .pixel-button{padding:9px 16px}body.compact-combat .text-button{padding:6px;margin:0}
body.compact-combat.combat-landscape .console{grid-template-columns:132px minmax(0,1fr) 156px;grid-template-rows:40px minmax(0,1fr) 132px;grid-template-areas:"toolbar toolbar toolbar" "auxiliary arena skills" "movement arena fire";column-gap:8px}body.compact-combat.combat-landscape .console-top{grid-column:1/-1}body.compact-combat.combat-landscape .screen-bezel{grid-column:2;grid-row:2/4}body.compact-combat.combat-landscape .player-armory{grid-column:3;grid-row:2;align-self:center;height:100%;max-height:120px;grid-template-rows:24px minmax(0,1fr)}body.compact-combat.combat-landscape .armory-heading{height:20px;flex-wrap:nowrap;gap:3px}body.compact-combat.combat-landscape .energy-status>i{display:none}body.compact-combat.combat-landscape .skill-buttons{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(3,minmax(30px,1fr));gap:3px}body.compact-combat.combat-landscape .skill-button{min-height:30px}body.compact-combat.combat-landscape .skill-button span{font-size:9px}body.compact-combat.combat-landscape .skill-button small{font-size:8px}body.compact-combat.combat-landscape .touch-controller{grid-area:auto;display:contents!important}body.compact-combat.combat-landscape .dpad{grid-area:movement;justify-self:center;align-self:end}body.compact-combat.combat-landscape .middle-controls{grid-area:auxiliary;justify-self:center;align-self:start;width:116px;gap:6px;margin-top:4px}body.compact-combat.combat-landscape .middle-controls button{min-height:44px}body.compact-combat.combat-landscape .middle-controls #touch-titan{min-height:44px;order:-1}body.compact-combat.combat-landscape .fire-control{grid-area:fire;align-self:center;justify-self:center}body.compact-combat.combat-landscape .fire-control button{width:70px;height:70px}
body.compact-combat.combat-landscape .armory-tabs{display:none}body.compact-combat.combat-landscape #armor-status{font-size:8px}body.compact-combat.combat-landscape .energy-status{font-size:8px;gap:0}
body.compact-combat.combat-landscape .player-armory{max-height:162px;padding:0;grid-template-rows:20px minmax(0,1fr)}body.compact-combat.combat-landscape .skill-buttons{grid-template-rows:repeat(3,minmax(0,1fr))}body.compact-combat.combat-landscape .skill-button{min-height:0;line-height:1.1}

body.compact-combat .console .screen-bezel{width:min(100%,var(--arena-width))!important}

body.compact-combat .player-armory{padding:0}
.base-integrity{display:flex;align-items:center;gap:12px;border:1px solid #4c6551;background:#1c2c22;padding:9px;margin:0 0 9px;font-size:10px;color:#bfcca6}.base-integrity strong{font-size:11px;color:#d9d9b5}.base-integrity span:nth-child(3){color:#95d6db}.base-integrity small{margin-left:auto;font-size:9px;color:#a9b89a}.base-integrity.critical{border-color:#ad745e}.base-integrity.critical strong{color:#e9a088}body.compact-combat .base-integrity{display:none}.tile-sample.crystal{background:#284448;border-color:#b0e6ec}.tile-sample.lava{background:#713e25;border-color:#ef9f6c}.tile-sample.ammo{background:#544b2c;border-color:#e8c97b}.tile-sample.coolant{background:#305749;border-color:#9fdad5}.tile-sample.barrel{background:#673f2a;border-color:#e5ae80}.tile-sample.relay{background:#3e5132;border-color:#b5d694}@media(max-width:760px){.base-integrity{gap:7px;font-size:9px;padding:7px}.base-integrity strong{font-size:10px}.base-integrity small{font-size:8px}}

.audio-settings{display:grid;grid-template-columns:auto minmax(80px,1fr) auto;align-items:center;gap:14px;padding:14px;background:#121b10;border:1px solid #4e5e3e}.audio-settings label{color:#d9d4ae}.audio-settings output{color:#a7d9cf;font-variant-numeric:tabular-nums}.audio-settings input{width:100%;accent-color:#c8d78b;min-height:44px}.audio-settings .pixel-button{padding:10px 12px;min-height:44px}@media(max-width:480px){.audio-settings{grid-template-columns:1fr 1fr;gap:8px}.audio-settings input{grid-column:1/-1;grid-row:2}.audio-settings .pixel-button{font-size:12px}}

.loadout-preview-box{margin-top:14px;border:1px solid #485b41;background:#111a14}.loadout-preview-box canvas{display:block;width:100%;height:auto;max-height:180px;image-rendering:pixelated;object-fit:contain}.loadout-preview-box p{padding:0 12px}.chassis-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.chassis-options button{min-height:68px;display:flex;align-items:center;text-align:left;gap:8px;background:#1a2518;border:1px solid #4e6546;padding:8px;color:#c6d1b9}.chassis-options canvas{width:44px;height:44px;image-rendering:pixelated;flex-shrink:0}.chassis-options strong{display:block;font-size:12px;font-weight:500;color:var(--chassis-color)}.chassis-options small{display:block;font-size:10px;margin-top:6px;color:#9bab8f}.chassis-options button[aria-pressed=true]{border-color:var(--chassis-color);box-shadow:inset 0 -3px var(--chassis-color);background:#2c3925}.shot-palettes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.shot-palettes button{display:flex;gap:8px;align-items:center;justify-content:center;min-height:44px;background:#192419;border:1px solid #4a6143;color:#cbd7c1;font-size:12px}.shot-palettes i{display:block;width:12px;height:12px;background:var(--shot-color);box-shadow:0 0 6px var(--shot-color)}.shot-palettes button[aria-pressed=true]{border-color:#e4d092;background:#38412c;box-shadow:inset 0 -2px #e4d092}#palette-name{color:#c7c1dd;font-size:12px}@media(max-width:420px){.chassis-options button{padding:6px;gap:4px}.chassis-options canvas{width:36px;height:36px}.chassis-options strong{font-size:11px}.chassis-options small{font-size:9px}.shot-palettes button{font-size:11px}}

.route-map{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin:12px 0}.route-cell{position:relative;min-height:92px;padding:9px 7px;border:1px solid #4c5e4b;background:#17251c}.route-cell strong,.route-cell small,.route-cell em{display:block;font-style:normal;line-height:1.6}.route-cell strong{font-size:12px;color:#cfddba}.route-cell small{font-size:10px;color:#9db6a0}.route-cell em{font-size:9px;color:#738d79;margin-top:5px}.route-cell.current{border-color:#e1bd59;background:#363425}.route-cell.secured{box-shadow:inset 0 3px #8bc8a2}.route-cell:nth-child(n+4)::after{content:"↕";position:absolute;bottom:-17px;left:44%;color:#8fae96}.route-cell:first-child::after{content:"↔";position:absolute;left:-14px;top:36px;color:#e1bd59}.route-cell:first-child::before{content:"↔";position:absolute;right:-14px;top:36px;color:#e1bd59}#shake-btn{width:100%;margin-bottom:4px;min-height:44px}#shake-btn[aria-pressed="false"]{background:#45615a;border-color:#263b34;color:#d9e8da}@media(max-width:420px){.route-cell{padding:7px 5px;min-height:103px}.route-cell strong{font-size:11px}.route-cell small{font-size:9px}}

.app-install-card{display:flex;align-items:center;gap:18px;padding:19px 21px;margin:0 0 25px;border:1px solid #5e684b;background:#242e21;box-shadow:0 4px #11180e}.app-install-card img{image-rendering:pixelated;flex:0 0 64px;border:1px solid #796b42}.app-install-card>div{flex:1;min-width:0}.app-install-card h2{font-size:18px;letter-spacing:2px;color:#e2d8a8;margin:6px 0}.app-install-card p{font-size:11px;line-height:1.8;color:#a6b895;margin:0}.app-install-card .pixel-button{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;min-height:48px;text-align:center}.app-install-card .tiny-label{font-size:8px;letter-spacing:1.5px}@media(max-width:600px){.app-install-card{padding:14px;gap:12px;flex-wrap:wrap;margin-bottom:19px}.app-install-card h2{font-size:16px}.app-install-card p{font-size:10px}.app-install-card .pixel-button{width:100%}}

/* Fullscreen remains usable when a browser refuses the Fullscreen API. */
body.screen-fill,body.booting{overflow:hidden;overscroll-behavior:none}
body.screen-fill .console{position:fixed;z-index:40;top:var(--combat-top,0px);left:0;right:0;width:100%;height:var(--combat-height,100dvh);margin:0;padding:8px max(8px,env(safe-area-inset-right)) max(8px,env(safe-area-inset-bottom)) max(8px,env(safe-area-inset-left));border:0;box-shadow:none;overflow:auto;background:#1c2519}
body.screen-fill:not(.compact-combat) .console{display:flex;flex-direction:column}
body.screen-fill:not(.compact-combat) .screen-bezel{width:min(100%,900px);align-self:center;flex-shrink:0}
body.screen-fill.focus-title .console{display:grid;grid-template-rows:44px minmax(0,1fr);gap:8px;overflow:hidden}
body.screen-fill.focus-title .console>:not(.console-top):not(.screen-bezel):not(.menu-credit):not(dialog){display:none!important}
body.screen-fill.focus-title .console-top{width:100%;height:44px}
body.screen-fill.focus-title .screen-bezel{width:min(100%,calc((var(--combat-height,100dvh) - 76px) * 8 / 7));max-height:100%;padding:4px;align-self:center;justify-self:center}
body.screen-fill.focus-title .title-screen{overflow-y:auto}body.screen-fill.focus-title .title-screen>*{flex-shrink:0}
body.screen-fill .console-top button{min-width:42px;min-height:40px}
body.screen-fill .console-actions{gap:6px}
.creator-credit{letter-spacing:.5px!important;color:#b8bd99!important;font-size:10px!important}
@media(max-width:760px){body.screen-fill .console-name{display:none}body.screen-fill .console-top{gap:6px}body.screen-fill .console-actions{margin-left:auto}}

/* A short, silent cartridge boot; no battle or saved state is started here. */
.launch-screen{position:fixed;inset:0;z-index:100;display:grid;place-items:center;overflow:auto;padding:24px max(20px,env(safe-area-inset-right)) max(24px,env(safe-area-inset-bottom)) max(20px,env(safe-area-inset-left));background:#10170f;color:#e1bd59}
.launch-screen::before{content:"";position:absolute;inset:0;pointer-events:none;background:repeating-linear-gradient(0deg,#0000 0 3px,#0002 3px 4px)}
.launch-content{position:relative;width:min(100%,420px);text-align:center;animation:launch-reveal .35s ease-out both}
.launch-caption{display:flex;justify-content:space-between;gap:12px;border-top:1px solid #566044;padding:12px 0 18px;color:#96a07e;font:9px var(--mono);letter-spacing:1px}
.launch-caption span:last-child{color:#a4bc8b}
.launch-scene{position:relative;height:160px;overflow:hidden;border:1px solid #404d34;background:#151f13;box-shadow:inset 0 0 35px #0008}
.launch-grid{position:absolute;inset:0;background:linear-gradient(#5b70451c 1px,transparent 1px),linear-gradient(90deg,#5b70451c 1px,transparent 1px);background-size:20px 20px}
.launch-tank{position:absolute;left:12%;top:52px;width:54px;height:54px;shape-rendering:crispEdges;animation:launch-drive 1.05s steps(16,end) both}
.launch-tracks{position:absolute;top:61px;left:0;width:40%;height:38px;background:repeating-linear-gradient(90deg,#9b9f6840 0 4px,transparent 4px 12px);clip-path:polygon(0 0,100% 0,100% 20%,0 20%,0 80%,100% 80%,100% 100%,0 100%);animation:launch-track 1.05s steps(16,end) both}
.launch-wall{position:absolute;right:13%;top:44px;width:32px;height:70px;background:repeating-linear-gradient(0deg,transparent 0 8px,#442f20 8px 10px),repeating-linear-gradient(90deg,#ab7146 0 14px,#442f20 14px 16px);animation:launch-wall 2.4s steps(1,end) both}
.launch-shell{position:absolute;top:77px;left:45%;width:12px;height:5px;background:#fff4bf;box-shadow:-12px 0 #e1bd5970;opacity:0;animation:launch-fire .45s 1.05s linear both}
.launch-blast{position:absolute;top:43px;right:8%;width:74px;height:74px;border:7px solid #e1bd59;box-shadow:inset 0 0 0 8px #ce6d3b,0 0 0 7px #e1bd5930;opacity:0;animation:launch-impact .6s 1.45s steps(5,end) both}
.launch-scene-label{position:absolute;bottom:12px;left:0;right:0;color:#758768;font:9px var(--mono);letter-spacing:3px}
.launch-overline{font:9px var(--mono);letter-spacing:2px;color:#849473;margin:28px 0 12px}
.launch-content h1{font-size:clamp(30px,8vw,42px);letter-spacing:6px;margin:0 0 23px;line-height:1.3;color:#ede4c2;text-shadow:3px 3px #4b502d}
.launch-content h1 span{display:block;font:13px var(--mono);letter-spacing:10px;color:#d2b966;margin:10px 0 0 8px;text-shadow:none}
.launch-progress{height:7px;border:1px solid #64714c;padding:1px;width:164px;margin:0 auto;background:#0b1009}
.launch-progress i{display:block;height:3px;transform-origin:left;background:#d5bd66;animation:launch-load 2.5s steps(20,end) both}
.launch-credit{margin:23px 0 13px;font:13px var(--sans);letter-spacing:.5px;color:#ced5b6}
.launch-skip{min-height:44px;padding:10px 22px;border:1px solid #536043;background:#1b2919;color:#aabd92;font:11px var(--sans);letter-spacing:2px}.launch-skip span{color:#dfc06b;margin-left:14px}
@keyframes launch-reveal{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
@keyframes launch-drive{from{left:12%}to{left:40%}}
@keyframes launch-track{from{width:12%}to{width:40%}}
@keyframes launch-fire{0%{left:52%;opacity:0}1%{opacity:1}95%{opacity:1}100%{left:81%;opacity:0}}
@keyframes launch-impact{0%{opacity:0;transform:scale(.2) rotate(0)}10%{opacity:1}70%{opacity:.8}100%{opacity:0;transform:scale(1.4) rotate(45deg)}}
@keyframes launch-wall{0%,62%{opacity:1}63%,100%{opacity:.15}}
@keyframes launch-load{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@media(max-height:520px){.launch-screen{padding:12px 20px}.launch-content{max-width:360px}.launch-caption{padding:6px 0 8px}.launch-scene{height:116px}.launch-tank{top:30px}.launch-wall{top:25px}.launch-shell{top:55px}.launch-blast{top:24px}.launch-tracks{top:39px}.launch-overline{margin:12px 0 6px}.launch-content h1{font-size:28px;margin-bottom:12px}.launch-content h1 span{margin-top:4px}.launch-credit{margin:12px 0 6px}}
@media(prefers-reduced-motion:reduce){.launch-content,.launch-tank,.launch-tracks,.launch-shell,.launch-blast,.launch-wall,.launch-progress i{animation:none}.launch-tank{left:40%}.launch-shell,.launch-blast{display:none}.launch-progress i{transform:scaleX(1)}}

.menu-credit{margin:9px 0 5px;padding:5px 8px;text-align:center;font-size:clamp(11px,2.8vw,14px);line-height:1.8;letter-spacing:.4px;color:#c5ccad;overflow:visible;flex-shrink:0}.title-screen .title-bottom{margin-bottom:3px}body.screen-fill.focus-title .console{grid-template-rows:44px minmax(0,1fr) 32px}body.screen-fill.focus-title .console>.menu-credit{display:block!important;grid-row:3;align-self:center;margin:0}body.screen-fill.focus-title .screen-bezel{width:min(100%,calc((var(--combat-height,100dvh) - 108px) * 8 / 7))}

.team-entry{border:1px solid #677348;background:#273622;color:#ddd5a5;padding:10px 12px;min-height:42px;font-size:12px;white-space:nowrap}.team-entry:hover{border-color:#e1bd59}.team-message{padding:12px;border:1px solid #506442;background:#182417;color:#c9dbb4;font-size:12px;line-height:1.8;min-height:48px}.team-divider{text-align:center;font-size:11px;color:#879b77;margin:20px 0}#team-setup>#team-create{width:100%;min-height:48px}#team-join-form label{display:block;font-size:12px;color:#c9d3b8;margin-bottom:10px}.team-code-entry{display:flex;gap:8px}.team-code-entry input{min-width:0;flex:1;width:100%;padding:13px 10px;border:1px solid #73824e;background:#111b10;color:#ecd37e;font:20px var(--mono);letter-spacing:5px;text-align:center}.team-code-entry button{min-width:78px}.team-room-code{display:block;text-align:center;font:clamp(30px,8vw,42px) var(--mono);letter-spacing:10px;color:#efd48a;background:#151e12;border:1px dashed #788b56;padding:20px 12px;margin:12px 0}.team-room-actions{display:flex;gap:9px;flex-wrap:wrap}.team-room-actions button:not(.pixel-button){min-height:44px;padding:9px 12px;color:#c2d0b1;background:#26351e;border:1px solid #5b7248}#team-leave{color:#d6aa96}#team-manage{margin:0 0 14px;width:100%}@media(max-width:420px){.header-right{gap:7px}.team-entry{font-size:10px;padding:8px}.brand{gap:8px}.brand-year{margin-left:8px}.team-room-actions>*{flex:1}}

/* 1.3: larger directional targets and explicit service selection. */
.dpad{position:relative;isolation:isolate}.dpad:before{content:"";position:absolute;inset:-8px;z-index:-1;background:#141a1040;pointer-events:auto}.dpad button{position:relative;min-width:0;min-height:0}.dpad .left:before,.dpad .right:before,.dpad .up:before,.dpad .down:before{content:"";position:absolute;inset:-5px;touch-action:none}.team-service{border:1px solid #46543b;padding:12px;margin:14px 0;color:#b5c2a1;font-size:12px}.team-service summary{cursor:pointer;color:var(--gold);padding:4px 0}.team-service label{display:block;margin:14px 0 7px}.team-service input{width:100%;min-height:46px;background:#111b10;border:1px solid #718057;color:#e6e6d2;padding:10px;font:14px var(--mono)}#team-line{overflow-wrap:anywhere}#assist-authority{color:#b3c99b}

/* Campaign research lives in the dialog top layer, beyond the clipped CRT bezel. */
.campaign-resume{display:block;width:100%;min-height:46px;margin:10px 0 12px;padding:12px 16px;border:1px solid #95834a;background:#303724;color:#ecd48e;font-size:12px;text-align:left;letter-spacing:.5px}.campaign-status{margin:8px 0 10px;padding:9px 11px;border-left:3px solid #bca461;background:#17251b;color:#cbd9ba;font-size:11px;line-height:1.6;font-variant-numeric:tabular-nums}.module-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.module-options button{min-height:66px;padding:10px;border:1px solid #45563f;background:#152117;text-align:left}.module-options b{display:block;font:12px var(--mono);color:var(--tech-color);margin-bottom:5px}.module-options strong{font-size:12px;font-weight:500}.module-options button[aria-pressed=true]{border-color:var(--tech-color);background:#2d3928;box-shadow:inset 0 -3px var(--tech-color)}.research-history{display:flex;flex-wrap:wrap;gap:7px;margin:12px 0 22px}.research-history span{font-size:11px;padding:6px 8px;border:1px solid #4b5941;color:var(--tech-color,#a8b69a)}.upgrade-dialog{width:min(880px,calc(100% - 24px));max-height:calc(100dvh - 24px);padding:clamp(18px,4vw,36px);overflow-y:auto;overscroll-behavior:contain}.upgrade-dialog h2{font-size:clamp(21px,3vw,30px);letter-spacing:1px}.upgrade-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:24px 0 18px}.upgrade-card{min-width:0;min-height:220px;padding:20px 16px;text-align:left;border:1px solid #63714d;background:linear-gradient(145deg,#2d3926,#18231b);display:flex;flex-direction:column;gap:14px}.upgrade-card:hover,.upgrade-card:focus-visible{border-color:var(--tech-color);background:#32432d}.tech-code{font:11px var(--mono);color:var(--tech-color);letter-spacing:2px}.upgrade-card strong{font-size:20px;font-weight:600;color:#eee9ce}.upgrade-card small{font:12px/1.8 var(--sans);color:#b6c3a9}.upgrade-card em{margin-top:auto;padding-top:14px;font:12px var(--sans);color:var(--tech-color)}.upgrade-footnote{font-size:11px;line-height:1.8;color:#96a88b;border-top:1px solid #45513c;padding-top:16px;margin-bottom:0}body.compact-combat .campaign-resume{display:none}@media(max-width:600px){.upgrade-options{grid-template-columns:1fr;gap:10px;margin-top:16px}.upgrade-card{min-height:136px;padding:16px;gap:8px;position:relative}.upgrade-card strong{font-size:19px}.upgrade-card small{font-size:12px}.upgrade-card em{padding-top:6px}.module-options{grid-template-columns:repeat(2,minmax(0,1fr))}.campaign-status{font-size:10px}}@media(max-height:500px)and(orientation:landscape){.upgrade-dialog{max-height:calc(100dvh - 12px);padding:18px}.upgrade-dialog .help-intro,.upgrade-dialog .help-note{margin:8px 0}.upgrade-options{margin:12px 0}.upgrade-card{min-height:180px;padding:12px;gap:8px}.upgrade-footnote{padding-top:9px}}
/* v1.5 controls stay in the equipment drawer; combat touch targets retain their size. */
.v15-actions{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}.v15-actions button{min-height:44px;padding:10px 13px;font-size:13px;line-height:1.5;border:1px solid #84906c;background:#263321;color:#d9dfbe}.v15-actions button[aria-pressed=true]{border-color:#e6ca76;color:#ffdda0;background:#394128}.v15-actions button:disabled{opacity:.4}.v15-notice{position:fixed;top:max(72px,env(safe-area-inset-top));left:50%;transform:translateX(-50%);z-index:1000;max-width:90vw;padding:14px 20px;background:#293a2a;border:1px solid #d5c27b;color:#f2e4b6;pointer-events:none}.v15-notice[hidden]{display:none}#v15-panel{border-top:1px solid #526047;margin:22px 0;padding-top:12px}#battle-report{font:15px/1.9 monospace;white-space:pre-wrap;color:#dce6c8}#loot-dialog{max-height:85dvh;overflow:auto}#loot-options button{min-height:100px;padding:20px;border:1px solid #9ba87c;background:#293825;color:#e8d799;font-size:16px;text-align:left}#loadout-chassis,#loadout-weapons{max-height:280px;overflow:auto;overscroll-behavior:contain}#loadout-weapons button[hidden]{display:none}.boss-challenge-card select{margin-bottom:10px}#editor-tools>p{flex-basis:100%}#theme-preview{max-width:180px}#weapon-filters{position:sticky;top:0;background:#1d291c;z-index:1;padding:5px 0}

/* v1.5.1: only named combat controls participate in the fixed mobile grid. */
body.compact-combat .console > :not(.console-top):not(.screen-bezel):not(.player-armory):not(.touch-controller):not(dialog){display:none!important}
body.compact-combat .player-armory > :not(.armory-heading):not(.skill-buttons){display:none!important}
body.compact-combat .armory-heading #armor-status{min-width:0;overflow:hidden;text-overflow:ellipsis}
body.compact-combat .skill-button span,body.compact-combat .skill-button small{display:block;max-width:100%;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.15;flex-shrink:0}
body.compact-combat.combat-landscape .player-armory{grid-area:skills}
@media(max-width:340px){
 body.compact-combat .console-actions button span{display:none}
 body.compact-combat:not(.combat-landscape) .middle-controls{min-width:48px;flex:1 1 64px}
 body.compact-combat:not(.combat-landscape) .fire-control{min-width:66px}
 body.compact-combat:not(.combat-landscape) .fire-control button{width:66px;height:66px}
 body.compact-combat:not(.combat-landscape) .energy-status>i{display:none}
}
@media(max-height:400px){
 body.compact-combat.combat-landscape .console{grid-template-rows:40px minmax(116px,1fr) 132px;overflow-y:auto!important}
 body.compact-combat.combat-landscape .player-armory{max-height:116px;grid-template-rows:20px 92px}
 body.compact-combat.combat-landscape .skill-buttons{grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(2,44px);gap:4px}
 body.compact-combat.combat-landscape .skill-button{min-height:44px}
}
@media(max-height:500px){
 body.compact-combat:not(.combat-landscape) .console{grid-template-rows:40px minmax(48px,1fr) 120px 140px;overflow-y:auto!important}
}

/* Combat contacts must stay in the game rather than begin a page gesture. */
.skill-buttons,.dpad,#fire-btn,#touch-select,#touch-titan{touch-action:none;user-select:none;-webkit-user-select:none}

/* v1.6 display controls remain outside the collision canvas. */
.orientation-panel{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin:14px 0;padding:12px;border:1px solid #67734e;background:#202b1c}
.orientation-panel>span{font-size:13px;color:#e2d6a7}.orientation-panel>div{display:flex;flex-wrap:wrap;gap:8px}.orientation-panel button{min-width:72px;min-height:48px;border:1px solid #586949;background:#1b261a;color:#cbd5b3;padding:10px}.orientation-panel button[aria-pressed=true]{border-color:#dec573;color:#f1d98e;background:#3c4027}.orientation-panel small{font-size:11px;color:#99bba4}
.expedition-card{border:1px solid #5a6b4c;background:linear-gradient(120deg,#202e25,#242936);padding:18px;margin:14px 0 20px}.expedition-card h2{font-size:21px;color:#e1d5a0;margin:9px 0}.expedition-card p,.expedition-card small{font-size:12px;line-height:1.8;color:#acc2ac}.expedition-card .tiny-label{color:#93cfd5;font-size:9px}.expedition-card button{min-height:48px}.expedition-card button:disabled{opacity:.45}
body.compact-combat .console{grid-template-rows:48px minmax(48px,1fr) 136px 168px;gap:8px;overflow-y:auto!important}
body.compact-combat .console-top{height:48px}body.compact-combat .console-top button{min-height:48px;min-width:48px}
body.compact-combat .player-armory{height:136px;padding:0;grid-template-rows:24px 104px;gap:8px}
body.compact-combat .skill-buttons{grid-template-rows:repeat(2,48px);gap:8px}
body.compact-combat .skill-button{min-height:48px}
body.compact-combat .touch-controller{height:168px;padding:4px 0;gap:8px}
body.compact-combat .dpad{grid-template-columns:repeat(3,48px);grid-template-rows:repeat(3,48px);gap:8px}
body.compact-combat .middle-controls{width:104px;min-width:104px;flex:0 0 104px;gap:8px}
body.compact-combat .middle-controls>div{display:contents}
body.compact-combat .middle-controls button,body.compact-combat .middle-controls #touch-titan{width:100%;min-height:48px;transform:none;font-size:10px}
body.compact-combat .middle-controls #touch-titan{order:-1}
body.compact-combat.combat-landscape .console{grid-template-columns:160px minmax(0,1fr) 136px 80px;grid-template-rows:48px minmax(48px,1fr) 160px;grid-template-areas:"toolbar toolbar toolbar toolbar" ". arena auxiliary auxiliary" "movement arena skills fire";gap:8px;overflow-y:auto!important}
body.compact-combat.combat-landscape .screen-bezel{grid-area:arena}
body.compact-combat.combat-landscape .dpad{grid-area:movement;align-self:end;justify-self:center}
body.compact-combat.combat-landscape .middle-controls{grid-area:auxiliary;display:grid;grid-template-columns:repeat(3,minmax(48px,1fr));width:100%;min-width:0;gap:8px;margin:0;align-self:start}
body.compact-combat.combat-landscape .middle-controls button{min-width:48px;min-height:48px;padding:5px 2px;font-size:10px;overflow:hidden}
body.compact-combat.combat-landscape .player-armory{grid-area:skills;align-self:end;grid-template-rows:0 160px;height:160px;max-height:160px;gap:0}
body.compact-combat.combat-landscape .armory-heading{display:none}
body.compact-combat.combat-landscape .skill-buttons{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(3,48px);gap:8px}
body.compact-combat.combat-landscape .skill-button{min-height:48px}
body.compact-combat.combat-landscape .fire-control{grid-area:fire;align-self:end;margin-bottom:8px}
body.compact-combat.combat-landscape .fire-control button{width:76px;height:76px}
@media(max-width:380px){
 body.compact-combat:not(.combat-landscape) .console{grid-template-rows:48px minmax(48px,1fr) 136px 216px}
 body.compact-combat:not(.combat-landscape) .touch-controller{display:grid!important;grid-template-columns:160px minmax(64px,1fr);grid-template-rows:48px 160px;height:216px;padding:0;gap:8px}
 body.compact-combat:not(.combat-landscape) .dpad{grid-column:1;grid-row:2}
 body.compact-combat:not(.combat-landscape) .middle-controls{grid-column:1/-1;grid-row:1;display:grid;grid-template-columns:repeat(3,minmax(48px,1fr));width:100%;min-width:0;gap:8px}
 body.compact-combat:not(.combat-landscape) .fire-control{grid-column:2;grid-row:2;justify-self:center}
}

@media(max-height:500px){body.compact-combat:not(.combat-landscape) .console{grid-template-rows:48px minmax(48px,1fr) 136px 168px}}
@media(max-height:500px) and (max-width:380px){body.compact-combat:not(.combat-landscape) .console{grid-template-rows:48px minmax(48px,1fr) 136px 216px}}
