:root{--bg:#101719;--panel:#172124;--line:#354143;--muted:#8f9e9e;--white:#eef1e9;--orange:#f2a34b;--cyan:#67e7d6;--danger:#fb6961;color-scheme:dark;font-family:Inter,"Arial",-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Noto Sans KR",sans-serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;width:100%;height:100%;overflow:hidden;overscroll-behavior:none}body{background:#080d0f;background-image:radial-gradient(ellipse at 50% 35%,#24313470,transparent 65%),linear-gradient(90deg,#23323518 1px,transparent 1px),linear-gradient(#23323518 1px,transparent 1px);background-size:auto,60px 60px,60px 60px;color:var(--white);display:grid;place-items:center}button{font:inherit;cursor:pointer;color:inherit;border:0}button:focus-visible{outline:2px solid var(--cyan);outline-offset:4px}button:disabled{cursor:default;opacity:.55}[hidden]{display:none!important}.app{position:relative;width:min(100%,520px);height:100dvh;max-height:1100px;overflow:hidden;background:var(--bg);isolation:isolate;box-shadow:0 0 100px #0008;border-inline:1px solid #54626330;touch-action:none}#battlefield{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none}.vignette{pointer-events:none;position:absolute;inset:0;box-shadow:inset 0 0 85px #0007;z-index:1}.desktop-note{position:fixed;left:max(28px,calc(50% - 490px));top:42px;display:flex;flex-direction:column;gap:8px;font-size:10px;letter-spacing:2px;color:#718080}.desktop-note strong{color:#bbc6c3;font-size:19px;letter-spacing:3px}.desktop-note small{letter-spacing:0;line-height:1.8;margin-top:19px;font-size:11px}.orange-rule{width:25px;height:3px;background:var(--orange);margin-bottom:8px}.title-screen{position:absolute;inset:0;z-index:5;display:flex;flex-direction:column;padding:max(20px,env(safe-area-inset-top)) 28px max(16px,env(safe-area-inset-bottom));background:radial-gradient(ellipse at 50% 37%,#35434099,transparent 45%),linear-gradient(180deg,#0d151afc,#151d1bed 72%,#101719)}.title-top{display:flex;justify-content:space-between;align-items:center}.unit-tag{font-size:10px;letter-spacing:2px;color:#acb6ae;padding-left:10px;border-left:2px solid var(--orange)}.icon-button{width:44px;height:44px;display:grid;place-items:center;background:#24313280;border:1px solid #68767455;font-size:19px;font-weight:700;border-radius:3px}.title-top .icon-button{width:38px;height:38px;color:var(--muted)}.title-copy{position:relative;z-index:2;margin-top:28px}.eyebrow{font-size:9px;font-weight:700;letter-spacing:2px;color:var(--orange);line-height:1.5;margin:0 0 9px}h1{font-size:clamp(39px,10.5vw,58px);line-height:1;margin:0;font-weight:900;font-style:italic;letter-spacing:-3px;color:#edf0e8}h1 span{color:var(--orange)}.subtitle{font-size:12px;letter-spacing:6px;color:#b3bdb9;margin:12px 0 0 2px}.mech-display{position:relative;flex:1;min-height:185px;display:grid;place-items:center;margin:-3px -25px -1px;isolation:isolate;overflow:hidden}.mech-display img{height:100%;width:100%;max-height:480px;min-height:0;object-fit:contain;position:absolute;inset:0;filter:drop-shadow(0 18px 12px #0007);z-index:2;pointer-events:none;transform:scale(.94)}.hangar-ring{width:75%;aspect-ratio:1;border:1px solid #9cad9c25;border-radius:50%;position:absolute;transform:scaleY(.32) translateY(115%);box-shadow:0 0 0 19px #697c6920,inset 0 0 45px #74cbbc10;bottom:20%;}.hangar-lines{position:absolute;inset:17% 15% 17%;border-inline:1px solid #9ca99135;background:repeating-linear-gradient(0deg,transparent,transparent 37px,#74847615 38px)}.mech-caption{position:absolute;bottom:6px;font-size:8px;letter-spacing:2px;color:#afbbb2;z-index:3;padding:7px 12px;background:#152021ba;border:1px solid #68715e50}.mission-brief{display:flex;gap:12px;align-items:flex-start;padding:18px 0 17px;border-block:1px solid #89907d35;flex-shrink:0}.mission-marker{font-size:25px;font-weight:800;color:var(--orange);line-height:1.1}.mission-brief .eyebrow{font-size:8px;letter-spacing:1.1px;color:#8f9e94;margin-bottom:5px}.mission-brief h2{font-size:19px;letter-spacing:-.5px;margin:0 0 8px}.mission-brief p:not(.eyebrow){font-size:11px;line-height:1.6;color:#9caba4;margin:0}.mission-duration{margin-left:auto;text-align:right;white-space:nowrap;font-size:19px;font-variant-numeric:tabular-nums;font-weight:700}.mission-duration small{font-size:9px;color:var(--muted);font-weight:400;letter-spacing:0}.title-actions{padding-top:17px;display:grid;gap:9px;flex-shrink:0}.primary-button{width:100%;min-height:53px;padding:14px 19px;display:flex;align-items:center;justify-content:space-between;background:var(--orange);color:#17201e;border:1px solid #ffd39c;border-bottom:3px solid #a96425;font-size:15px;font-weight:800;letter-spacing:.5px;border-radius:3px;transition:filter .15s,transform .1s}.primary-button span{font-size:24px;line-height:1}.primary-button:hover{filter:brightness(1.08)}.primary-button:active{transform:translateY(2px)}.primary-button.secondary-start{background:transparent;border:1px solid #54615b;color:#c5d0c7;min-height:39px;font-size:12px}.record-line{margin:1px 0 5px;text-align:center;color:#8f9c94;font-size:10px;line-height:1.5}.title-footer{display:flex;align-items:center;gap:6px;color:#7e9185;letter-spacing:.7px;font-size:7px;margin-top:10px;flex-shrink:0}.title-footer>span:last-child{margin-left:auto}.status-dot{display:inline-block;width:4px;height:4px;border-radius:50%;background:var(--cyan);flex-shrink:0}.combat-hud{position:absolute;inset:0;z-index:3;pointer-events:none;padding:max(13px,env(safe-area-inset-top)) 18px 16px}.hud-top{display:flex;align-items:center;gap:12px}.hud-mission{display:flex;flex-direction:column;gap:4px;flex:1;text-shadow:0 1px 4px #000}.hud-mission span{font-size:9px;letter-spacing:2px;color:var(--orange);font-weight:bold}.hud-mission strong{font-size:13px}.time-block{text-align:right;display:flex;flex-direction:column;gap:4px;font-variant-numeric:tabular-nums}.time-block>span{font-size:23px;font-weight:800;line-height:1}.time-block small{font-size:9px;color:#b5c4c3}.hud-top .icon-button{pointer-events:auto;width:39px;height:39px;font-size:15px}.vitals{display:flex;align-items:center;gap:8px;margin-top:12px;font-size:9px;color:#b8c7be;text-shadow:0 1px 3px #000}.hp-label{letter-spacing:2px}.meter{height:5px;background:#1c2427eb;overflow:hidden;flex:1;position:relative}.meter i{display:block;height:100%;width:100%;transform-origin:0 50%;background:var(--cyan);box-shadow:0 0 9px #67e7d688;transition:transform .12s linear}.hp-meter{height:6px;border:1px solid #667c7270}.hp-meter i{background:#d2e6b8}.xp-line{display:flex;gap:9px;align-items:center;margin-top:8px;color:var(--cyan);font-size:8px;font-weight:700;letter-spacing:1px}.xp-meter{height:3px}.boss-hud{margin-top:14px;padding:9px 11px;background:#240e11df;border:1px solid #b8464970}.boss-hud>div:first-child{display:flex;justify-content:space-between;font-size:8px;letter-spacing:1px;color:#ff9890;margin-bottom:8px}.boss-meter i{background:var(--danger)}.bottom-hud{position:absolute;left:18px;right:18px;bottom:max(17px,env(safe-area-inset-bottom));display:flex;align-items:flex-end;gap:16px}.module-dock{display:flex;gap:6px}.module-slot{width:38px;height:45px;background:#152021e0;border:1px solid #647b7760;display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;border-radius:3px;color:#bcc9c0}.module-slot svg{width:24px;height:24px}.module-slot small{font-size:7px;letter-spacing:1px;line-height:1.6}.module-slot.awakened{border-color:var(--orange);color:var(--orange);box-shadow:0 0 12px #ef9b3a25}.module-slot.empty{opacity:.35}.reactor{flex:1;min-width:0;max-width:200px;margin-left:auto;text-shadow:0 1px 4px #000}.reactor-top{display:flex;justify-content:space-between;color:var(--cyan);font-size:9px;gap:6px;margin-bottom:5px}.reactor-top b{font-variant-numeric:tabular-nums}.reactor-cells{display:flex;gap:3px}.reactor-cells i{height:5px;flex:1;background:#67e7d624;border:1px solid #67e7d659}.reactor-cells i.active{background:var(--cyan);box-shadow:0 0 9px #67e7d690}.reactor p{font-size:8px;color:#b0c1b7;line-height:1.4;margin:5px 0 0}.reactor.overdrive .reactor-top{color:var(--orange)}.reactor.overdrive .reactor-cells i{background:var(--orange);border-color:var(--orange)}.announcement{position:absolute;left:20px;right:20px;top:23%;text-align:center;font-weight:800;font-size:21px;color:var(--orange);text-shadow:0 2px 10px #000;letter-spacing:1px;transition:opacity .2s}.announcement small{display:block;font-size:10px;color:#d4ddd8;margin-top:7px;font-weight:400;letter-spacing:0}.move-hint{position:absolute;left:0;right:0;bottom:24%;text-align:center;color:#d5e1d9;font-size:12px;text-shadow:0 2px 5px #000}.move-hint span{display:block;font-size:24px;margin-bottom:8px;color:var(--cyan)}.joystick{position:absolute;width:96px;height:96px;margin:-48px;border:1px solid #cee8d940;border-radius:50%;background:#15252566;pointer-events:none}.joystick div{width:38px;height:38px;border:1px solid #e6f5e380;background:#bfdac332;border-radius:50%;position:absolute;left:28px;top:28px}.modal-layer{position:absolute;inset:0;z-index:8;display:grid;place-items:center;background:#071113bc;backdrop-filter:blur(5px);padding:24px 20px}.panel{width:100%;max-height:calc(100dvh - 48px);overflow:auto;padding:24px 20px 16px;border:1px solid #66777275;background:linear-gradient(145deg,#1e2b2d,#111b1e);box-shadow:0 24px 60px #0007;position:relative;border-top:3px solid var(--orange);border-radius:3px}.panel-heading{display:flex;justify-content:space-between;align-items:center}.panel-heading>span{font-size:11px;color:var(--orange);font-weight:700}.panel h2{font-size:27px;letter-spacing:-1px;margin:4px 0 0}.panel-description{font-size:11px;color:#a5b5af;line-height:1.6;margin:9px 0 21px}.upgrade-choices{display:grid;gap:10px}.upgrade-card{display:grid;grid-template-columns:48px 1fr;gap:13px;text-align:left;width:100%;padding:15px 12px;background:#29373865;border:1px solid #6e86815a;border-left:3px solid var(--cyan);border-radius:3px;min-height:101px;transition:background .15s,transform .1s}.upgrade-card:hover,.upgrade-card:focus-visible{background:#354b4890;border-color:#a7d4bb}.upgrade-card:active{transform:scale(.985)}.upgrade-card .upgrade-icon{width:45px;height:48px;display:grid;place-items:center;background:#0f1c1fab;border:1px solid #657f734a;border-radius:3px;color:var(--cyan)}.upgrade-card svg{width:30px;height:30px}.upgrade-card .upgrade-meta{font-size:8px;letter-spacing:1px;color:var(--cyan);display:flex;justify-content:space-between;margin-bottom:5px}.upgrade-card strong{font-size:16px;display:block;margin-bottom:5px}.upgrade-card p{font-size:10px;line-height:1.55;color:#bcc9c1;margin:0}.upgrade-card.evolution{border-color:#d6a04c;border-left-color:var(--orange);background:#66502d30}.upgrade-card.evolution .upgrade-icon,.upgrade-card.evolution .upgrade-meta{color:var(--orange)}.panel-footer{padding-top:16px;font-size:9px;color:#8aa096;text-align:center}.panel-footer .status-dot{margin:0 5px 1px 0}.pause-panel .primary-button{margin-bottom:10px}.secondary-button{display:block;width:100%;min-height:42px;background:#25343678;border:1px solid #52655e;color:#c5d1c6;font-size:12px;border-radius:3px;margin-top:8px}.text-button{display:block;margin:14px auto 0;min-height:40px;background:none;font-size:11px;color:#9fafaa;padding:10px}.text-button:hover{color:var(--white)}.save-status{font-size:9px;color:#95b7a6;text-align:center;line-height:1.5;min-height:14px;margin:9px 0 0}.result-panel{text-align:center}.result-emblem{margin:14px auto 20px;width:72px;height:76px;border:2px solid var(--orange);background:#bc883015;display:grid;place-items:center;color:var(--orange);font-size:33px;font-weight:800;clip-path:polygon(0 0,100% 0,100% 75%,50% 100%,0 75%)}.result-panel.failed{border-top-color:var(--danger)}.result-panel.failed .result-emblem{border-color:var(--danger);color:var(--danger)}.result-stats{display:grid;grid-template-columns:repeat(3,1fr);padding:19px 0;border-block:1px solid #74857550;margin:24px 0 15px}.result-stats>div{display:grid;gap:9px}.result-stats span{font-size:9px;color:#98ada2}.result-stats strong{font-size:23px;font-variant-numeric:tabular-nums;font-weight:800}.result-modules{display:flex;justify-content:center;gap:8px;margin-bottom:24px}.notice{position:absolute;left:18px;right:18px;bottom:16px;padding:12px 14px;font-size:11px;background:#332616f2;border:1px solid #cb9b5b;z-index:20;color:#f3ce96;line-height:1.6}.shake{animation:none}@media(max-width:960px){.desktop-note{display:none}}@media(max-height:740px){.title-screen{padding:12px 24px}.title-copy{margin-top:15px}h1{font-size:43px}.title-copy .eyebrow{font-size:8px}.subtitle{margin-top:8px}.mission-brief{padding:13px 0}.mission-brief h2{font-size:17px;margin-bottom:5px}.title-actions{padding-top:12px}.title-footer{margin-top:5px}.mech-display{min-height:140px}.panel{padding:18px 16px 13px}.panel h2{font-size:25px}.panel-description{margin-bottom:16px}.upgrade-card{min-height:89px;padding:12px}.upgrade-card strong{font-size:14px}.upgrade-card p{font-size:10px}.primary-button{min-height:48px}}@media(max-height:580px){.title-copy{margin-top:6px}.title-copy .eyebrow,.subtitle,.mission-brief p:not(.eyebrow),.title-footer,.mech-caption{display:none}.mech-display{min-height:90px}.mission-brief{padding:9px 0}.title-actions{padding-top:10px}.panel{max-height:calc(100dvh - 24px)}.modal-layer{padding:12px}.upgrade-card{min-height:80px;padding:9px}.upgrade-card p{font-size:9px}.panel-description{margin:7px 0 12px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}

/* Touch targets retain physical size in the compact HUD. */
.icon-button,.title-top .icon-button,.hud-top .icon-button{width:48px;height:48px;flex-shrink:0}.secondary-button,.text-button,.primary-button.secondary-start{min-height:48px}.title-top{gap:8px}.hud-top{gap:8px}@media(orientation:landscape){.app{width:min(520px,calc(100dvh * 9 / 16))}.title-screen{padding-inline:16px}.title-copy h1{font-size:clamp(28px,7vh,43px);letter-spacing:-2px}.mission-duration{font-size:14px}.mission-marker{font-size:20px}.mission-brief h2{font-size:14px}.mission-brief .eyebrow{font-size:6px}.title-actions .primary-button{font-size:12px}.combat-hud{padding-inline:10px}.hud-mission strong{font-size:10px}.hud-mission span{font-size:7px}.time-block>span{font-size:18px}.bottom-hud{left:10px;right:10px;gap:7px}.module-slot{width:27px;height:40px}.module-slot svg{width:20px}.module-dock{gap:4px}.reactor p{display:none}.reactor-top{font-size:7px}.panel{padding:15px 12px}.panel h2{font-size:20px}.upgrade-card{grid-template-columns:30px 1fr;gap:8px}.upgrade-card .upgrade-icon{width:29px;height:35px}.upgrade-card svg{width:23px}.upgrade-card strong{font-size:12px}.upgrade-card .upgrade-meta{font-size:7px}.upgrade-card p{font-size:9px}.result-stats strong{font-size:18px}}

/* Combat captures gestures on the canvas; overflowing dialogs can still scroll by touch. */
.app{touch-action:auto}.panel{touch-action:pan-y;overscroll-behavior:contain}button{touch-action:manipulation}

/* Equipped modules share a wrapping strip; the reactor has its own row. */
.bottom-hud{display:grid;grid-template-columns:minmax(0,1fr);gap:7px}.module-dock{display:flex;flex-wrap:wrap;gap:6px;min-width:0}.module-slot{flex:0 0 34px;width:34px;height:43px}.module-slot svg{width:24px;height:25px}.reactor{min-width:0;width:100%;max-width:none}.reactor p{margin-bottom:0}.result-modules{flex-wrap:wrap}.upgrade-card>div{min-width:0}.upgrade-card p{overflow-wrap:anywhere}
@media(orientation:landscape){.module-dock{gap:4px}.module-slot{flex-basis:27px;width:27px;height:38px}.module-slot svg{width:20px;height:22px}.bottom-hud{gap:4px}.reactor-top{font-size:8px}}

/* Test controls stay readable and scrollable on compact portrait and landscape screens. */
.title-screen{overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y}.title-actions .cheats-entry{margin-top:0}.cheats-heading-row{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.cheats-heading-row>div{min-width:0}.cheats-heading-row .icon-button{font-size:27px}.cheats-panel .panel-description{margin-bottom:17px;font-size:12px}.cheat-group{min-width:0;border:0;padding:0;margin:0 0 19px}.cheat-group legend{font-size:14px;font-weight:700;padding:0}.cheat-group p{font-size:12px;line-height:1.6;color:#a5b5af;margin:6px 0 9px}.cheat-segments{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.cheat-segments button{min-height:48px;padding:8px 4px;border:1px solid #52655e;background:#25343678;border-radius:3px;font-size:13px;font-weight:700}.cheat-segments button[aria-pressed="true"]{background:#e7a654;color:#18201e;border-color:#ffd39c}.cheat-toggle{display:flex;align-items:center;justify-content:space-between;gap:9px;width:100%;min-height:68px;text-align:left;padding:12px 10px;margin:9px 0;background:#25343678;border:1px solid #52655e;border-radius:3px}.cheat-toggle>span{min-width:0}.cheat-toggle strong{display:block;font-size:14px}.cheat-toggle small{display:block;font-size:12px;color:#a5b5af;line-height:1.6;margin-top:5px}.cheat-switch-state{flex-shrink:0;font-size:12px;color:#9fafaa;padding:6px 7px;border:1px solid #586863;border-radius:3px}.cheat-toggle[aria-pressed="true"]{border-color:var(--orange)}.cheat-toggle[aria-pressed="true"] .cheat-switch-state{background:var(--orange);color:#18201e;border-color:var(--orange)}.cheats-status{font-size:12px;line-height:1.6;color:var(--orange);margin:16px 0 8px;min-height:16px;overflow-wrap:anywhere}.cheat-hud{display:inline-block;max-width:100%;font-size:9px;line-height:1.6;color:#ffcf8d;background:#291f16dc;border:1px solid #ac7b4370;padding:3px 7px;margin:8px 0 0;overflow-wrap:anywhere}.test-run-note{font-size:11px;line-height:1.6;color:#ffcf8d;padding:9px;background:#46321f78;border:1px solid #ac7b4370}.cheats-panel{scroll-padding-block:14px}.cheats-panel button{scroll-margin-block:10px}.cheats-panel .secondary-button{font-size:13px}@media(orientation:landscape){.cheats-panel{padding-inline:10px}.cheats-panel h2{font-size:19px}.cheats-heading-row{gap:4px}.cheats-panel .eyebrow{font-size:7px;letter-spacing:1px}.cheat-hud{font-size:8px}.cheat-toggle{padding-inline:7px;gap:6px}.cheat-switch-state{padding-inline:4px}}

.evolution-cheat-group{border-bottom:1px solid #52655e;padding-bottom:17px}.evolution-cheat-group legend span{font-size:12px;font-weight:400;color:#a5b5af;margin-left:5px}.evolved-weapon-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.evolved-weapon-options button{position:relative;min-height:68px;text-align:left;padding:10px 9px;border:1px solid #52655e;border-radius:3px;background:#25343678}.evolved-weapon-options strong{display:block;font-size:14px;line-height:1.4;font-weight:700}.evolved-weapon-options small{display:block;font-size:12px;line-height:1.5;color:#a5b5af;margin-top:4px}.evolved-weapon-options button[aria-pressed="true"]{background:#69471e66;border-color:#ffc174;box-shadow:inset 3px 0 #ffc174}.evolved-weapon-options button[aria-pressed="true"] strong{color:#ffd39c}.evolved-weapon-options button[aria-pressed="true"] small::before{content:"✓ ";color:#ffd39c}#apply-evolutions-button{margin-top:10px;min-height:48px}.evolution-cheat-group .evolution-cheat-status{color:#ffcf8d;margin-bottom:0}@media(orientation:landscape){.evolved-weapon-options{grid-template-columns:1fr}.evolution-cheat-group legend span{display:block;margin-left:0;margin-top:4px}}

/* Growth stays inspectable without placing long recipes over live combat. */
.passive-dock{display:flex;flex-wrap:wrap;gap:4px}.passive-chip{display:flex;align-items:center;gap:3px;padding:2px 4px;border:1px solid #637f7a66;border-radius:3px;background:#102226e8;color:#92cbc2;height:24px}.passive-chip svg{width:17px;height:17px}.passive-chip small{font-size:9px;font-variant-numeric:tabular-nums}.shield-status{font-size:10px;line-height:1.5;color:var(--cyan);margin:5px 0 0;text-shadow:0 1px 3px #000}.growth-guide{margin-top:14px;border:1px solid #56746b70;border-radius:3px;background:#101d1e80;touch-action:pan-y}.growth-guide summary{cursor:pointer;min-height:48px;padding:15px 12px;font-size:12px;color:#c5d1c6;touch-action:manipulation}.growth-guide summary:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}.growth-guide>p{font-size:11px;color:#9db2a9;margin:0 12px 12px;line-height:1.7}.recipe-row{padding:11px 12px;border-top:1px solid #52655e55}.recipe-row strong{display:block;font-size:12px}.recipe-row p{font-size:11px;line-height:1.7;color:#aab8b1;margin:5px 0}.recipe-row small{font-size:10px;color:#8f9e9e}.recipe-row .met{color:var(--cyan)}.recipe-row.ready{background:#95692d25}.recipe-row.ready small{color:var(--orange)}.recipe-row.blocked{opacity:.65}.upgrade-card .recipe-hint{display:block;color:#98b3a7;font-size:10px;line-height:1.6;margin-top:7px;padding-top:6px;border-top:1px solid #66777240}.upgrade-card.fusion{border-color:var(--cyan);background:linear-gradient(120deg,#8e65332b,#26786f38)}.upgrade-card.fusion .upgrade-meta,.upgrade-card.fusion .upgrade-icon{color:#acfff0}
@media(orientation:landscape){.passive-dock{gap:3px}.passive-chip{padding-inline:3px;height:21px}.passive-chip svg{width:14px;height:14px}.growth-guide summary{font-size:11px}.recipe-row{padding-inline:9px}.recipe-row p{font-size:10px}}

/* A full test loadout fits in two weapon and two passive rows. */
.module-dock.dense{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:3px}.module-dock.dense .module-slot{width:auto;min-width:0;height:36px}.module-dock.dense .module-slot svg{width:22px;height:22px}.passive-dock.dense{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:3px}.passive-dock.dense .passive-chip{justify-content:center;min-width:0;padding-inline:2px}@media(orientation:landscape){.module-dock.dense .module-slot{height:29px}.module-dock.dense .module-slot svg{width:16px;height:16px}.module-dock.dense .module-slot small{font-size:8px}.passive-dock.dense .passive-chip{height:20px;gap:2px}.passive-dock.dense .passive-chip svg{width:13px;height:13px}}

.result-emblem.forest-ending { width:100px;height:110px;border:0;border-radius:0;background-image:url('./assets/forest/enemy-atlas.png');background-size:425px 425px;background-position:-320px -307px;background-repeat:no-repeat;animation:forest-arrival 1.2s ease-out both; }
@keyframes forest-arrival { from {opacity:0;transform:translateY(-25px) scale(.85);filter:brightness(2);} to {opacity:1;transform:none;filter:brightness(1);} }
@media (prefers-reduced-motion: reduce) { .result-emblem.forest-ending { animation:none; } }

/* V19 polish: guidance, compact landscape HUD, pause loadout and combat report. */
.guide-banner{position:absolute;left:50%;bottom:118px;transform:translateX(-50%);width:min(88%,390px);padding:10px 13px;background:linear-gradient(90deg,#13282be8,#182226ed);border:1px solid #67e7d682;border-left:3px solid var(--cyan);box-shadow:0 8px 24px #0008;pointer-events:none;text-align:left}
.guide-banner b{display:block;color:var(--cyan);font-size:10px;letter-spacing:1.4px;margin-bottom:3px}.guide-banner span{display:block;color:#d4ded9;font-size:11px;line-height:1.5}
.upgrade-guide{margin:0 0 11px;padding:9px 11px;background:#193034;border:1px solid #67e7d65e;border-left:3px solid var(--cyan);color:#bdcdc6;font-size:11px;line-height:1.55}.upgrade-guide b{color:var(--cyan);margin-right:5px}
.upgrade-card .recipe-hint.met{color:#8ee9d9}.upgrade-card .recipe-hint.missing,.recipe-row .missing{color:#f0b56e}
.hud-loadout-summary{display:none;margin:0;padding:5px 8px;background:#122225d9;border:1px solid #56706a66;color:#afc0b8;font-size:9px;line-height:1.4}
.pause-loadout{margin:16px 0 2px;padding:12px;background:#101d1e80;border:1px solid #56746b70;text-align:left}.pause-loadout h3,.combat-report h3{margin:0;color:#dbe3dc;font-size:13px;letter-spacing:.5px}.loadout-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px;margin-top:9px;color:#8f9e9e;font-size:10px}.loadout-item{display:flex;align-items:center;gap:6px;min-width:0;padding:6px;background:#2030339c;border:1px solid #52655e55}.loadout-item svg{width:20px;height:20px;flex:0 0 20px;color:var(--cyan)}.loadout-item>span{min-width:0;overflow-wrap:anywhere}.loadout-item.awakened{border-color:#a8793f70}.loadout-item.awakened svg{color:var(--orange)}.passive-list .loadout-item svg{color:#91c9c0}
.combat-report{text-align:left;margin:15px 0 18px;padding:13px;background:#0e1a1cc7;border:1px solid #52655e70}.report-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px}.report-heading>span{font-size:9px;color:#9bb0a6}.report-heading>span.used{color:#ffbd73}.combat-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.combat-summary>div{padding:8px;background:#25343678;border:1px solid #52655e44;min-width:0}.combat-summary span{display:block;font-size:8px;color:#8fa39a;margin-bottom:4px}.combat-summary strong{display:block;font-size:11px;line-height:1.4;overflow-wrap:anywhere}.combat-report h4{margin:13px 0 7px;color:#9cad9f;font-size:9px;letter-spacing:1px}.damage-ranking{display:grid;gap:5px}.damage-rank{display:grid;grid-template-columns:28px minmax(0,1fr) auto;align-items:center;gap:7px;padding:7px 8px;background:#22313482;border-left:2px solid var(--orange);font-size:10px}.damage-rank b{color:var(--orange);font-variant-numeric:tabular-nums}.damage-rank strong{color:#e9eee8;font-size:10px;font-variant-numeric:tabular-nums}.damage-details{margin-top:9px;border:1px solid #52655e70}.damage-details>summary{min-height:48px;display:flex;align-items:center;padding:0 10px;color:#bcc9c1;font-size:11px;cursor:pointer}.damage-table{overflow-x:auto}.damage-row{display:grid;grid-template-columns:1.35fr 1.1fr .7fr .7fr .9fr;gap:5px;min-width:430px;padding:7px 8px;border-top:1px solid #52655e44;font-size:9px;font-variant-numeric:tabular-nums}.damage-row span:not(:first-child){text-align:right}.damage-head{color:#8fa39a;font-size:8px}.report-empty{margin:0;padding:10px;color:#8f9e9e;text-align:center;font-size:11px}.icon-button{min-width:48px;min-height:48px}.secondary-button,.text-button{min-height:48px}

@media(max-width:360px){.combat-summary{grid-template-columns:1fr}.loadout-list{grid-template-columns:1fr}.damage-rank{grid-template-columns:24px minmax(0,1fr)}.damage-rank strong{grid-column:2}}
@media(orientation:landscape) and (max-height:500px){
  .app{width:100%;max-width:none;height:100dvh;max-height:none;border-inline:0}
  .combat-hud{padding:8px 12px}.hud-top{gap:8px}.time-block>span{font-size:19px}.vitals{margin-top:5px}.xp-line{margin-top:4px}.boss-hud{margin-top:7px;padding:6px 9px}
  .bottom-hud{left:12px;right:12px;bottom:8px;display:grid;grid-template-columns:minmax(150px,230px) minmax(130px,190px);gap:8px;align-items:end}.module-dock,.passive-dock{display:none!important}.hud-loadout-summary{display:block}.reactor{width:auto}.reactor p{display:none}
  .guide-banner{bottom:57px;width:min(54%,420px);padding:7px 10px}.guide-banner span{font-size:10px}
  .modal-layer{padding:8px 12px}.panel{max-width:780px;max-height:calc(100dvh - 16px);padding:12px 15px}.panel h2{font-size:20px}.panel-description{margin:5px 0 8px}.upgrade-panel{max-width:820px}.upgrade-choices{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.upgrade-card{grid-template-columns:30px minmax(0,1fr);gap:7px;min-height:80px;padding:8px}.upgrade-card .upgrade-icon{width:30px;height:36px}.upgrade-card strong{font-size:12px}.upgrade-card p{font-size:9px}.upgrade-card .recipe-hint{font-size:8px;line-height:1.35;margin-top:4px;padding-top:4px}.upgrade-guide{font-size:9px;margin-bottom:7px;padding:6px 8px}.panel-footer{padding-top:7px}
  .pause-panel{max-width:760px}.pause-loadout{padding:8px;margin-top:10px}.loadout-list{grid-template-columns:repeat(4,minmax(0,1fr));gap:4px}.loadout-item{padding:4px;font-size:9px}.growth-guide{margin-top:9px}
  .result-panel{max-width:760px;text-align:left}.result-panel>.eyebrow,.result-panel>h2,.result-panel>.panel-description,.result-panel>.test-run-note{text-align:center}.result-emblem{display:none}.result-stats{margin:8px 0;padding:8px 0}.combat-report{margin:8px 0;padding:9px}.combat-summary{grid-template-columns:repeat(4,minmax(0,1fr))}.combat-report h4{margin-top:8px}.damage-ranking{grid-template-columns:repeat(3,minmax(0,1fr));gap:4px}.damage-rank{grid-template-columns:22px minmax(0,1fr);padding:5px}.damage-rank strong{grid-column:2}.result-modules{margin-bottom:8px}.result-panel>.primary-button{margin-top:0}
}

/* Visual finish: readable instruments over a detailed floor, with the same
   interaction geometry, responsive layouts and reduced-motion behavior. */
.combat-hud{background:linear-gradient(180deg,#081316e8 0,#08131691 94px,transparent 163px)}
.hud-mission strong{letter-spacing:.25px;color:#e4ece7}
.time-block>span{color:#eff8f1;text-shadow:0 2px 7px #000b}
.vitals{color:#d2dfd7}
.meter{box-shadow:inset 0 0 0 1px #91b6ae30,inset 0 2px 3px #0007;border-radius:2px}
.hp-meter i{background:linear-gradient(180deg,#d8e9b6,#a3bd80)}
.xp-meter i{background:linear-gradient(90deg,#319c91,#9ce9cf)}
.module-slot:not(.empty){background:linear-gradient(155deg,#293a3ceF,#102024f5);border-color:#76958b85;box-shadow:inset 0 1px #b8d4ce19,0 2px 4px #0005}
.module-slot.empty{opacity:.24;border-style:dashed;background:#0b161b9c}
.module-slot.awakened{background:linear-gradient(155deg,#553a1df2,#201e18f5);border-color:#e8ae56;box-shadow:inset 0 1px #ffe2ad28,0 0 8px #ef9b3a18}
.module-slot small{font-weight:700;text-shadow:0 1px 2px #000}
.reactor{padding:7px 9px;background:linear-gradient(120deg,#11272bea,#102024e6);border:1px solid #648e8552;border-left:2px solid #75baa5;border-radius:3px}
.reactor-top{color:#d2e4da}
.guide-banner{bottom:132px}
.panel{background:linear-gradient(150deg,#263437,#142226 55%,#101a1e);box-shadow:inset 0 1px #b7d6c01c,0 24px 60px #0009}
.upgrade-card{background:linear-gradient(120deg,#2c4141a8,#17282bcc);box-shadow:inset 0 1px #c5ece211,0 2px 5px #0003}
.upgrade-card .upgrade-icon{background:linear-gradient(150deg,#142b30,#0b171b);border-color:#82b2a752;box-shadow:inset 0 1px #bceade18,0 2px 4px #0004}
.upgrade-card .upgrade-meta{letter-spacing:.3px;color:#a8e2d3}
.upgrade-card .upgrade-meta span:last-child{font-weight:700;color:#d1eee4}
.upgrade-card strong{color:#ecf4ed;text-shadow:0 1px 2px #0005}
.upgrade-card .recipe-hint{border-top-color:#8bb6a82e}
.upgrade-card.evolution{background:linear-gradient(120deg,#5c412680,#24261ddc);box-shadow:inset 0 1px #ffe6b521,0 2px 5px #0004}
.upgrade-card.evolution .upgrade-icon{background:linear-gradient(150deg,#413322,#171e1d);border-color:#dca65278}
.upgrade-card.fusion{background:linear-gradient(120deg,#63432965,#17463e9c);box-shadow:inset 0 1px #befbe52e,0 2px 5px #0004}
.upgrade-card:hover,.upgrade-card:focus-visible{background:linear-gradient(120deg,#3b5552bd,#23423ddc)}
.growth-guide summary{color:#c7d8ce}
@media(orientation:landscape) and (max-height:500px){
 .combat-hud{background:linear-gradient(180deg,#081316e8 0,#08131671 63px,transparent 115px)}
 .reactor{padding:5px 8px}
 .guide-banner{bottom:57px}
}

/* Guidance follows equipment height; compact mode retains details in pause. */
.guide-banner{bottom:var(--guide-bottom,132px)}
.compact-loadout .module-dock,.compact-loadout .passive-dock{display:none!important}
.compact-loadout .hud-loadout-summary{display:block}
#result-heading:focus{outline:none}

/* Report content scrolls independently; actions stay in the panel flow. */
.result-panel{display:flex;flex-direction:column;overflow:hidden;padding:0}
.result-content{overflow-y:auto;min-height:0;padding:24px 20px 16px;touch-action:pan-y}
.result-actions{flex-shrink:0;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center;padding:12px 16px max(12px,env(safe-area-inset-bottom));border-top:1px solid #648e8552;background:#122126}
.result-actions .text-button{margin:0;min-width:76px}
.result-actions .primary-button{min-height:48px;margin:0}
.result-content>.eyebrow,.result-content>h2,.result-content>.panel-description,.result-content>.test-run-note{text-align:center}
.growth-tools{padding:0 12px 10px}
.recipe-filters{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:10px}
.recipe-filters button,.recipe-clear{min-height:48px;padding:8px 10px;border:1px solid #56746b;color:#b6cbc2;background:#1c3034;border-radius:3px;font-size:11px;touch-action:manipulation}
.recipe-filters button[aria-pressed=true]{color:#a8f1df;border-color:var(--cyan);background:#244541}
.recipe-search{display:grid;gap:5px;font-size:10px;color:#abc5b9}
.recipe-search input{width:100%;min-width:0;height:48px;padding:9px 10px;border:1px solid #56746b;border-radius:3px;background:#0f1e22;color:var(--white);font:inherit;font-size:12px;touch-action:auto}
.recipe-count,.recipe-empty{font-size:11px;line-height:1.6;color:#a9bfb3}
.recipe-empty{padding:12px;margin:0;border-top:1px solid #52655e55}
.continue-summary,.new-run-note{font-size:10px;line-height:1.5;color:#a9c6b6;margin:0;overflow-wrap:anywhere}
.new-run-note{color:#dab17d}
.boss-hud>div:first-child{gap:8px;align-items:flex-start}
#boss-name{min-width:0;overflow-wrap:anywhere}
#boss-time{flex-shrink:0;font-size:10px;white-space:nowrap}
@media(max-height:740px){.result-content{padding:18px 16px 13px}}
@media(orientation:landscape) and (max-height:500px){
 .result-panel{padding:0}.result-content{padding:12px 15px}.result-actions{padding:8px 12px max(8px,env(safe-area-inset-bottom))}
 .title-actions{grid-template-columns:1fr 1fr}.continue-summary,.new-run-note,.title-actions .record-line{grid-column:1/-1}
 .recipe-filters{flex-wrap:nowrap}.growth-tools{padding-inline:9px}
}

.compact-guide span{display:none}
.pause-guidance{margin:0 0 12px;padding:8px 10px;border-left:2px solid #67e7d666;background:#142c30;color:#a9c6b6;font-size:11px;line-height:1.6}
.notice{pointer-events:none}
/* Pause already shows the same storage failure in its inline save status. */
.modal-layer:has(#pause-dialog:not([hidden])) ~ #notice[data-kind="save"]{display:none}

/* The final pursuer has no HP gauge; survival time remains readable. */
.executor-hud{border-color:#e27561;border-left:3px solid #ff9175;background:linear-gradient(110deg,#351a1beF,#161b23ed)}
.executor-help{font-size:10px;line-height:1.5;color:#e3b9ab;margin:7px 0 0}
.result-extra-time{margin:10px 0;padding:10px;border:1px solid #70bfa888;background:#113331;color:#b6eee0;font-size:13px;line-height:1.5;font-variant-numeric:tabular-nums}
.execution-layout .announcement{top:var(--execution-announcement-top,220px)}
.execution-layout .compact-announcement{font-size:16px}
.execution-layout .compact-announcement small{display:none}
@media(orientation:landscape) and (max-height:500px){.executor-help{font-size:9px;margin-top:4px}.result-extra-time{padding:6px;margin:6px 0}}

/* P3 부드러운 UI 전환 (기획 §8.12). Transitions only: effect-dom pauses keyframe animations on the game clock. */
.meter i{transition:transform 75ms linear;position:relative;z-index:1}.meter.snap i,.meter.snap .meter-chip{transition:none}
.meter-chip{position:absolute;inset:0;z-index:0;transform-origin:0 50%;background:#f5f0dd8c;transition:transform .4s cubic-bezier(.2,0,0,1) .15s}.boss-meter .meter-chip{background:#ffc2b08c}
.modal-layer{transition:opacity .15s linear}@starting-style{.modal-layer{opacity:0}}
.panel{transition:opacity .25s cubic-bezier(.05,.7,.1,1),scale .25s cubic-bezier(.05,.7,.1,1)}@starting-style{.panel{opacity:0;scale:.98}}
.upgrade-card{transition:background .15s,transform .1s,translate .25s cubic-bezier(.05,.7,.1,1) var(--enter-delay,0ms),opacity .25s cubic-bezier(.05,.7,.1,1) var(--enter-delay,0ms)}@starting-style{.upgrade-card{translate:0 6px;opacity:.35}}
.upgrade-card:nth-child(2){--enter-delay:50ms}.upgrade-card:nth-child(3){--enter-delay:100ms}.upgrade-card:nth-child(4){--enter-delay:150ms}
:root[data-reduced="true"] .meter i,:root[data-reduced="true"] .meter-chip,:root[data-reduced="true"] .modal-layer,:root[data-reduced="true"] .panel,:root[data-reduced="true"] .upgrade-card{transition:none}
