@font-face{font-family:Galmuri11;src:url('./assets/fonts/Galmuri11-f.woff2?sha=6cbe77576faa36ae853e0a70ca0ce1a575ce8bf1553eb12443bfc3edd8b00a39') format('woff2');font-style:normal;font-weight:400;font-display:block}
@font-face{font-family:Galmuri11;src:url('./assets/fonts/Galmuri11-Bold-f.woff2?sha=d28c2bdd0dadb6d2befed351f85424dbcca8f460268dd7c34a099844177e2980') format('woff2');font-style:normal;font-weight:700;font-display:block}
@font-face{font-family:Galmuri11;src:url('./assets/fonts/Galmuri11-f.woff2?sha=6cbe77576faa36ae853e0a70ca0ce1a575ce8bf1553eb12443bfc3edd8b00a39') format('woff2');font-style:normal;font-weight:700;font-display:block;unicode-range:U+2212,U+222A,U+2248,U+24D8,U+6B7B}
:root{--bg:#1a110c;--panel:#281c13;--line:#75522d;--txt:#f0dfb2;--dim:#b7a47d;--accent:#e6bd55;--ok:#71a86a;--warn:#d3973f;--bad:#d75e4a;color-scheme:dark}
*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:var(--bg);color:var(--txt);font:12px/1.5 Galmuri11}button,input,textarea,select{font:inherit}button{position:relative;min-width:44px;min-height:44px;padding:8px 12px;border:2px solid #80613d;border-radius:0;background:#352519;color:var(--txt);font-weight:700;cursor:pointer;touch-action:manipulation;white-space:normal;word-break:keep-all;image-rendering:pixelated}button.sec{background:#2d2119;color:#e6d6ae}button:hover:not(:disabled){filter:brightness(1.15)}button:active:not(:disabled){transform:translateY(2px) scale(.92);filter:brightness(.8)}button:disabled{color:#96896d;filter:saturate(.25) brightness(.7);cursor:not-allowed}button[data-primary=true]{background:#d3a53a;color:#21150b;border-color:#f1d476}button:focus-visible,input:focus-visible,summary:focus-visible,canvas:focus-visible{outline:2px solid #f7db85;outline-offset:2px}button svg{width:16px;height:16px;vertical-align:-3px;fill:none;stroke:currentColor;stroke-width:2}
.app{height:100dvh;width:min(1120px,100%);margin:0 auto;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:48px 72px 36px minmax(0,1fr) 56px;position:relative;min-width:320px;background:#21160f}header{display:flex;align-items:center;justify-content:space-between;padding:2px 16px;gap:12px;background:#21160f;border-bottom:2px solid #9a733b}.brand{display:flex;align-items:center;gap:8px}.brand>svg{width:24px;height:28px;fill:none;stroke:#d0ae66;stroke-width:2}.brand h1{font-size:24px;margin:0;line-height:1.25}.brand small,.local-label{display:none}.header-actions{display:flex;align-items:center;gap:8px}#researchToggle{padding:6px 12px;font-size:12px}
.statusbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 24px;background:#271b13;min-width:0}#resourceHud{display:flex;gap:28px;min-width:0}.hud-pill{display:grid;grid-template-columns:20px auto;gap:0 8px;align-items:center}.hud-pill svg{grid-row:1/3;width:20px;height:20px}.hud-pill span{color:var(--dim);font-size:12px;line-height:1.25}.hud-pill b{font-size:24px;line-height:1.25;font-variant-numeric:tabular-nums}#objectiveHud{text-align:right;flex:none;display:grid;grid-template-columns:auto auto;gap:0 12px;align-items:center}#objectiveHud .ph{grid-row:1/3;font-size:12px;color:var(--dim)}.wave-label{font-size:12px;color:#eee4c8}.wave-value{font-size:24px;line-height:1.25;font-weight:700;font-variant-numeric:tabular-nums}.wave-value .of{font-size:12px;color:var(--dim);font-weight:400}#hudWaveNum{display:inline-block}
.phasebar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:2px 16px;border-bottom:2px solid #564026;background:#20180f;font-size:12px}.phase-instruction{display:flex;gap:12px;align-items:center;min-width:0}#engineTag{color:#e5d4a8;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;word-break:keep-all}#buildProgress{display:flex;gap:4px;flex:none}#buildProgress[hidden]{display:none}#buildProgress i{width:8px;height:8px;border:1px solid #8c7854;background:#2e291a;transform:rotate(45deg)}#buildProgress i.filled{background:#c7b16a;border-color:#e0c781}.difficulty-tag{font-size:12px;color:#d3ba81;white-space:nowrap;flex:none}#prep{align-items:center;gap:8px;flex:none}#prepTime{font-size:12px}#skip{min-height:44px;padding:2px 8px}.app:not([data-mode=classic]) #prep{display:none!important}
main{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(110px,1fr) auto;min-height:0;min-width:0;background:#3b542f}.battlefield{position:relative;min-height:0;overflow:hidden}#cv{display:block;width:100%;height:100%;cursor:crosshair;touch-action:none;user-select:none;-webkit-user-select:none;image-rendering:pixelated}.map-label{position:absolute;bottom:10px;left:12px;background:#211b12e6;color:#c7d6a5;padding:4px 8px;font-size:12px;pointer-events:none;border:1px solid #786a3d}.map-label span{display:inline-block;width:6px;height:6px;background:#98ae66;margin-right:6px}.combat-count{position:absolute;top:12px;right:12px;background:#211b12e6;border:1px solid #786a3d;padding:4px 8px;font-size:12px;pointer-events:none}.msg{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#1d180ff2;padding:24px;text-align:center;z-index:10}
#modeSelect{position:absolute;inset:0;z-index:9;background:#1a140dd9;display:none;align-items:center;justify-content:center;padding:20px}.mode-card{width:min(440px,100%);padding:24px;background:#291e14;border:0}.eyebrow{font-size:12px;color:#c4ad76}.mode-card h2{font-size:24px;line-height:1.5;margin:8px 0 12px}.mode-card p{font-size:12px;color:#d0bf96;word-break:keep-all;line-height:1.8;margin:0 0 20px}.mode-buttons{display:grid;grid-template-columns:1fr 1fr;gap:12px}.mode-buttons button{min-height:76px;padding:12px;display:flex;flex-direction:column;justify-content:center;gap:4px}.mode-buttons strong{font-size:24px}.mode-buttons small{font-size:12px;font-weight:400}.mode-note{border-top:1px solid #725837;padding-top:12px;margin-top:16px;font-size:12px;color:var(--dim)}
#bottomPanel{min-width:0;max-width:100%;max-height:44dvh;overflow-y:auto;background:#21180f;border-top:2px solid #8c6c35;z-index:6}#roundTray{padding:9px 20px 10px;min-height:96px;background:#281d13}.round-heading{display:flex;align-items:center;justify-content:space-between;padding:0 8px 5px;font-size:12px;color:#c4b088}.round-heading b{color:#f0dfb2}.round-slots{display:grid;grid-template-columns:repeat(5,minmax(44px,72px));justify-content:center;gap:12px}.round-slot{height:64px;min-height:44px;padding:0;background:none;border:0;position:relative;isolation:isolate;overflow:visible;color:#e4d6b0}.round-slot[data-empty=true]{cursor:default;filter:brightness(.65)}.round-slot[aria-pressed=true]{transform:translateY(-4px);outline:2px solid #edcd69;outline-offset:0}.round-slot:active:not(:disabled){transform:translateY(-2px) scale(.92)}.slot-material{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:-1;image-rendering:pixelated}.slot-gem{position:absolute;left:50%;top:50%;width:64px;height:64px;transform:translate(-50%,-50%);pointer-events:none;image-rendering:pixelated}.slot-number{position:absolute;bottom:3px;right:5px;font-size:12px;color:#b8ab8a;text-shadow:1px 1px #1a120c}.round-slot[aria-pressed=true] .slot-number{color:#f3dc8c}#ownedExplorer{border-top:1px solid #705332;border-bottom:1px solid #705332;background:#251b12}#ownedExplorer>summary{min-height:44px;padding:4px 20px;cursor:pointer;color:#b9a47c;font-size:12px}.roster-bar{display:flex;align-items:center;gap:8px;padding:8px 16px;min-width:0}.roster-bar>span{flex:none;color:var(--dim);font-size:12px}.roster-bar b{color:#d3bc7b}#gemRoster{display:flex;gap:8px;overflow-x:auto;min-width:0;flex:1;max-width:100%;scrollbar-width:thin}.gem-chip{flex:none;font-size:12px;min-height:44px;padding:6px 10px;border:1px solid #776341}.gem-chip::before{content:'◆';color:var(--gem-color);margin-right:6px}.gem-chip[aria-pressed=true]{border-color:#efd478;color:#f8e4b5}.gem-chip[data-combine=true]::after{content:'조합';margin-left:6px;color:#a9cb7d}.rock-toggle{flex:none;padding:6px 8px;min-height:44px;font-size:12px}.rock-toggle[aria-pressed=true]{color:#f5d88d}.combination-toggle{color:#b7ce8b}.combination-toggle[hidden]{display:none}
#gemNone{display:flex;justify-content:center;flex-direction:column;gap:4px;min-height:72px;padding:14px 20px}.bp-hint strong{font-size:12px}.bp-hint span{font-size:12px;color:var(--dim)}#gemPanel{gap:16px;padding:16px 20px;min-width:0;max-width:100%;align-items:start}.bp-info{flex:1;min-width:0;position:relative;padding-left:72px}.bp-name{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:0 0 8px}.bp-name b{font-size:24px;line-height:1.25}.bp-special{font-size:12px;color:#d6bc70;padding:0 4px;border:1px solid #a2864a}.gem-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.gem-stats .stat{display:flex;flex-direction:column;font-size:12px;color:var(--dim)}.gem-stats b{font-size:12px;color:#f0dfb2;font-weight:700;font-variant-numeric:tabular-nums}#gemEffects{font-size:12px;color:#b5c88d;margin:8px 0 0;line-height:1.5}#gemEffects[hidden]{display:none}#selectedGemPortrait{position:absolute;left:0;top:8px;width:64px;height:64px;image-rendering:pixelated}.gem-meta{font-size:12px;color:var(--dim);margin-top:8px}.gem-meta summary{cursor:pointer}.gem-meta .stat{display:flex;justify-content:space-between;gap:8px}.bp-actions{width:36%;max-width:260px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;align-content:start;flex:none}.bp-actions button{font-size:12px;min-height:44px;padding:4px 6px;line-height:1.5}.bp-actions .close-selection{grid-column:1/-1;font-size:12px;min-height:44px;background:none;border-color:#6e5738;color:#b3a17b}#cancelPoint[hidden]{display:none}
#gemUpgrades{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}#gemUpgrades[hidden]{display:none}#gemUpgrades button{font-size:12px;min-height:44px;padding:6px 10px}.gem-meta{max-height:96px;overflow:auto}#upgradeStatus{font-size:12px;color:#e3c177;margin-top:4px}footer{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:6px 20px;background:#21170f;border-top:1px solid #826235}.transport{display:flex;align-items:center;gap:8px}.transport button{font-size:12px;min-height:44px;padding:6px 12px}.speed-control{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--dim)}.speed-control output{min-width:26px;color:#edddb3}.speed-control input{width:96px;accent-color:#d1b15f;min-height:44px}.control-help{display:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
#drawerScrim{position:absolute;inset:48px 0 0;background:#100b08a8;z-index:19}#drawerScrim[hidden],aside[hidden]{display:none}aside{position:absolute;right:0;top:48px;bottom:0;z-index:20;width:min(384px,100%);overflow-y:auto;background:#2b2016;border-left:3px solid #a07a3b;padding:20px}aside .drawer-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px}aside h2{font-size:24px;margin:0 0 8px}aside h3,aside p,aside summary,aside code{font-size:12px}aside p{color:var(--dim);line-height:1.8}aside .stat{display:flex;justify-content:space-between;gap:12px;padding:6px 0;font-size:12px;border-bottom:1px solid #684e32}aside .research{padding:12px 0;border-bottom:1px solid #705332}aside .research .stat{border:0}aside .research button{width:100%;margin-top:8px}aside details{padding:12px 0;border-top:1px solid #705332}aside summary{cursor:pointer;color:#d1bc8d}aside input[type=text],textarea{width:100%;min-width:0;background:#1e160f;color:#e0cca1;border:1px solid #85673f;padding:8px;border-radius:0}#chatHelp{max-height:150px;overflow:auto;margin:12px 0}#chatLog{max-height:76px;overflow:auto;color:var(--dim)}#mbTable{width:100%;font-size:12px;text-align:center}#mbTable td{padding:6px 2px}#mbTitle{font-size:12px;margin:8px 0}.local-note{font-size:12px;color:var(--dim)}.save-tools{display:flex;gap:8px;margin-bottom:20px}.save-tools button{flex:1}#replayInput{height:180px;resize:vertical;font:12px/1.5 Galmuri11}#restoreInput{min-height:96px;margin:8px 0}#trainingOptions{display:grid;gap:8px;margin:12px 0}.training-option{width:100%;min-height:44px;text-align:left;padding:8px 12px}#trainingStatus{min-height:18px;font-size:12px;color:#e2c184;margin-bottom:12px}
.source-dialog{position:absolute;inset:0;z-index:11;display:flex;align-items:center;justify-content:center;padding:20px;background:#19120ce8}.source-dialog[hidden]{display:none}.source-dialog .mode-card{max-height:calc(100% - 20px);overflow-y:auto}.source-dialog h2{font-size:24px;white-space:pre-line}.source-dialog #sourceDialogButtons{display:grid;gap:8px;margin-top:20px}.source-dialog button{min-height:48px;text-align:left;padding:12px}.game-over{position:absolute;inset:0;display:none;align-items:center;justify-content:center;background:#1a140de6;padding:24px;z-index:12}.game-over>div{width:min(400px,100%);padding:28px;text-align:center;background:#2c2015}.game-over h2{font-size:24px;color:#e6c36d}#goSummary{font-size:12px;color:var(--dim);margin-bottom:20px;line-height:1.8}
.build-cells{position:absolute;inset:0;pointer-events:none;overflow:hidden}.build-cells[hidden]{display:none}.build-cell{position:absolute;pointer-events:auto;min-width:0;min-height:0;padding:0;border:0;background:none;color:transparent;opacity:0;touch-action:none}.build-cell:focus-visible{opacity:1;outline:2px solid #d9db9d;outline-offset:-3px;background:#ddd98b22;color:transparent}.action-feedback{position:absolute;top:12px;left:50%;transform:translateX(-50%);max-width:82%;padding:8px 12px;background:#21190ff5;color:#ead9ab;border:2px solid #9f8044;font-size:12px;z-index:3;pointer-events:none}.action-feedback[hidden]{display:none}.path-warning{position:absolute;top:12px;left:12px;z-index:4;background:#775225;color:#ffe2a3;font-size:12px;min-height:44px}.path-warning[hidden]{display:none}
.skin-framed{position:relative;isolation:isolate}.skin-material{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:-1;image-rendering:pixelated}.skin-framed>*:not(.skin-material){position:relative;z-index:1}.skin-framed>.slot-material,.skin-framed>#selectedGemPortrait{position:absolute}
@media(min-width:1000px){#gemPanel{padding:16px 24px;gap:24px}.bp-actions{width:32%;grid-template-columns:repeat(3,minmax(0,1fr))}.bp-info{padding-left:88px}.bp-name b{font-size:24px}.gem-stats{max-width:480px}#roundTray{padding-left:48px;padding-right:48px}.round-slots{grid-template-columns:repeat(5,80px);gap:16px}.round-slot{height:72px}#bottomPanel{max-height:40dvh}}
@media(max-width:600px){header{padding:2px 12px}.statusbar{padding:12px 20px;gap:8px}#resourceHud{gap:18px}#objectiveHud .ph{display:none}#objectiveHud{gap:0 4px}.hud-pill{grid-template-columns:16px auto;column-gap:6px}.hud-pill svg{width:16px;height:16px}.phasebar{padding:2px 12px}.difficulty-tag{max-width:64px;overflow:hidden}.map-label{display:none}#roundTray{padding:8px 16px 10px}.round-slots{gap:8px}.bp-info{padding-left:0}#selectedGemPortrait{display:none}#gemPanel{padding:12px 16px;gap:12px}.bp-name b{font-size:12px;line-height:1.5}.bp-actions{width:40%;max-width:none;gap:4px}.gem-stats{gap:6px;grid-template-columns:1fr}.gem-stats .stat{display:flex;flex-direction:row;justify-content:space-between;gap:8px}.gem-stats .stat span{white-space:nowrap}.gem-stats b{white-space:nowrap}#gemEffects{font-size:12px;line-height:1.5;max-height:54px;overflow:auto}.bp-special{font-size:12px}footer{padding:6px 12px;gap:8px}.transport{gap:4px}.transport button{padding:6px 8px}.speed-control{gap:6px}.speed-control input{width:72px}.roster-bar{flex-wrap:wrap}#gemRoster{flex-basis:100%;width:100%}.gem-meta{max-height:54px;overflow:auto}.mode-card{padding:24px}.mode-buttons strong{font-size:24px}}
@media(max-width:380px){#resourceHud{gap:10px}.statusbar{padding-left:16px;padding-right:16px}.hud-pill b{font-size:24px}.hud-pill span{font-size:12px}#roundTray{padding-left:12px;padding-right:12px}.round-slots{gap:6px;grid-template-columns:repeat(5,minmax(44px,1fr))}.round-slot{height:60px}.bp-actions{width:42%}.speed-control input{width:64px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important}.round-slot[aria-pressed=true]{transform:none}.round-slot:active:not(:disabled),button:active:not(:disabled){transform:none}}

@media(min-width:431px) and (max-width:600px){.bp-info{padding-left:72px}#selectedGemPortrait{display:block}.gem-stats{grid-template-columns:1fr}}

/* Fixed primary actions; only source-unacquired optional commands are absent. */
.bp-actions #castA009{grid-column:1;grid-row:1}.bp-actions #castA007{grid-column:2;grid-row:1}.bp-actions #castA00R{grid-column:3;grid-row:1}.bp-actions{grid-template-columns:repeat(3,minmax(44px,1fr))}.bp-actions .close-selection{min-height:44px}#skip{min-height:44px}
#ownedExplorer{position:static;min-width:56px;background:none;border:0}#ownedExplorer>summary{min-height:44px;padding:12px 8px;color:#d7c394;border:2px solid #785b37;list-style:none;white-space:nowrap}#ownedExplorer>summary::marker{content:''}#ownedExplorer[open]>summary{color:#f0d68c}#ownedExplorer>.roster-bar{position:absolute;left:0;right:0;top:48px;max-height:180px;background:#281c13;padding:16px 20px;z-index:18;border:1px solid #87653c}#ownedExplorer>.roster-bar #gemRoster{flex:1;overflow-x:auto}.header-actions{gap:8px}
#gemPanel{padding-top:12px;padding-bottom:12px}.bp-actions button{padding:4px 2px}
@media(max-width:600px){.bp-actions{width:46%;grid-template-columns:repeat(3,minmax(44px,1fr))}#gemPanel{padding:10px 12px;gap:8px}#ownedExplorer>.roster-bar{display:block;padding:12px}#ownedExplorer>.roster-bar #gemRoster{display:flex;margin-top:8px}.header-actions{gap:6px}#researchToggle{padding-left:6px;padding-right:6px}}
@media(max-width:430px){.bp-actions{width:52%}.brand h1{font-size:24px}.brand{gap:6px}.brand>svg{width:20px}.header-actions{gap:4px}header{padding-left:8px;padding-right:8px}#ownedExplorer>summary{padding-left:6px;padding-right:6px}}
.app[data-mode=classic]{grid-template-rows:48px 72px 48px minmax(0,1fr) 56px}

/* Claude-approved rasters are rendered at an integer 1/4 (materials) or 1/8
 * (icons) working scale; these are actual source parts, not CSS texture art. */
.ui-pixel-icon{width:32px;height:32px;image-rendering:pixelated;flex:none;vertical-align:middle;pointer-events:none}
.hud-pill{grid-template-columns:32px auto}.hud-pill>.ui-pixel-icon{grid-row:1/3}.hud-pill[title=타워] svg{display:none}.hud-pill[title=타워]{grid-template-columns:auto}.hud-pill[title=타워]>span,.hud-pill[title=타워]>b{grid-column:1}
#objectiveHud{grid-template-columns:32px auto;column-gap:6px}#objectiveHud .ph{display:none}.ui-wave-icon{grid-column:1;grid-row:1/3}.wave-label,.wave-value{grid-column:2}.gem-stats .stat>span{display:flex;align-items:center;gap:4px}.gem-stats .stat>span>.ui-pixel-icon{width:32px;height:32px}
button[data-skin-source]:disabled{filter:none}button[data-skin-pressed=true]{filter:none}
@media(max-width:600px){.hud-pill{grid-template-columns:32px auto}#objectiveHud{gap:0 4px}.gem-stats{gap:0}.gem-stats .stat{min-height:32px}}
@media(max-width:430px){.gem-stats .stat-label-text{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.hud-pill[title=타워]{grid-template-columns:auto}#resourceHud{gap:8px}}

button[data-skin-material^="button-red-"]{color:#fff0c7;text-shadow:1px 1px #3b150e}button[data-skin-material^="button-green-"]:not(:disabled){color:#f4eccb;text-shadow:1px 1px #12341a}

button[data-skin-material="button-green-disabled"],button[data-skin-material="button-gold-disabled"]{color:#0c0b07;text-shadow:0 1px #bfc4a2}button[data-skin-material="button-red-disabled"]{color:#fff2d0;text-shadow:1px 1px #3c1712}

#gemTargetAbilities{margin-top:8px;border-top:1px solid #80613d;padding-top:8px}#gemTargetAbilities[hidden]{display:none}.target-ability-controls{display:flex;gap:6px;flex-wrap:wrap}.target-ability-controls button{min-height:44px;font-size:12px;padding:6px 10px}#cancelGemTarget[hidden]{display:none}#gemTargetHint{font-size:12px;color:var(--dim);margin:4px 0 0;line-height:1.5}#castA05L[aria-pressed=true]{outline:2px solid #edcd69;outline-offset:0}

#casinoPanel{margin:12px 0 20px;padding-top:12px;border-top:2px solid var(--line)}#casinoPanel[hidden]{display:none}#casinoHint{font-size:12px;line-height:1.5;margin:0 0 12px}#casinoStationList{list-style:none;margin:0;padding:0;display:grid;gap:6px}.casino-station{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--line)}.casino-station-title{display:block;font-size:12px;word-break:keep-all}.casino-station-status{display:block;font-size:12px;color:var(--dim);margin-top:3px}.casino-station[data-state=owned] .casino-station-status{color:var(--ok)}.casino-station[data-state=moving] .casino-station-status{color:var(--warn)}.casino-station .casino-approach{width:auto;min-width:84px;min-height:44px;font-size:12px;padding:6px 10px}.casino-help{font-size:12px;line-height:1.5;margin:12px 0 0;color:var(--dim)}

/* Source weapon target and owned effects remain separate from final damage. */
.combat-target{font-size:12px;color:#e5d4a8;border:1px solid #80613d;padding:1px 5px;line-height:1.5;word-break:keep-all}
#gemEffects{white-space:pre-line;overflow-wrap:anywhere}
#gemUpgrades button{text-align:left;max-width:100%}
#gemUpgrades .upgrade-preview{display:block;font-size:12px;font-weight:400;line-height:1.5;margin-top:3px;white-space:normal;overflow-wrap:anywhere}

/* A committed empty hand takes no battlefield space; PREP keeps the original tray. */
#roundTray[hidden]{display:none}

#restoreOverlay{z-index:15}#restoreOverlay[hidden]{display:none}#restoreProgressText{line-height:1.8;font-size:14px;font-variant-numeric:tabular-nums}#cancelRestore{min-height:44px}#gemCombineGate{font-size:12px;line-height:1.6;color:var(--dim);white-space:pre-line;margin-top:6px;overflow-wrap:anywhere}#gemUpgrades .upgrade-condition{display:block;font-size:12px;line-height:1.6;margin-top:4px;color:#e3c177}

#restoreOverlay>div{padding:24px;max-width:440px;width:100%;color:var(--fg)}

.save-section{border-bottom:1px solid var(--line,#35352e);padding-bottom:18px;margin-bottom:20px}.save-section label{display:block;margin:14px 0 6px}.save-section select{width:100%;min-height:44px;background:var(--panel,#20201d);color:var(--text,#eee);border:1px solid var(--line,#666);border-radius:8px;padding:8px;white-space:normal}.save-section textarea{width:100%;min-height:140px;box-sizing:border-box;background:#151715;color:#d9e1d4}.save-section .save-tools{flex-wrap:wrap}.save-section p{overflow-wrap:anywhere}

/* Readable first-play layout; existing walnut/brass rasters and slot identities stay in use. */
#msg{white-space:pre-line;line-height:1.8}.run-state{flex:none;font-size:12px;padding:2px 6px;border:1px solid #897343;color:#dbd3ad}.run-state[data-state=paused],.run-state[data-state=mode]{color:#ffde84;border-color:#b89544}.run-state[data-state=playing]{color:#bada9d}.phasebar{gap:8px}.phase-instruction{flex:1}
#roundTray[data-committed=true]{min-height:0;padding-top:4px;padding-bottom:6px}#roundTray[data-committed=true] .round-heading{padding-bottom:2px}#roundTray[data-committed=true] .round-slot{height:44px}#roundTray[data-committed=true] .slot-gem{width:32px;height:32px}#roundTray[data-committed=true] .round-slot[aria-pressed=true]{transform:none}
#gemUpgrades button{padding:12px 16px;line-height:1.7;text-shadow:none}#gemUpgrades .upgrade-preview{color:#f3e8c8}#gemUpgrades .upgrade-condition{color:#ffe29a}.gem-meta{max-height:180px}.gem-meta>summary{min-height:44px;display:flex;align-items:center;color:#e6d29d}.gem-meta #gemEffects,.gem-meta #gemCombineGate{font-size:12px;line-height:1.7}.save-section select{border-radius:0;color:var(--txt)}
@media(min-width:900px){.bp-info{display:grid;grid-template-columns:minmax(0,1fr) minmax(210px,1fr);column-gap:20px;align-content:start}.bp-name{grid-column:1;grid-row:1}.gem-stats{grid-column:1;grid-row:2}#gemUpgrades{grid-column:2;grid-row:1/3;align-self:start;margin-top:0}#upgradeStatus{grid-column:2;grid-row:3}.gem-meta{grid-column:1/-1;grid-row:4;margin-top:4px}#gemTargetAbilities{grid-column:1/-1}.bp-actions{align-self:start}.bp-name b{font-size:24px}.gem-stats .stat>span>.ui-pixel-icon{width:24px;height:24px}}
@media(max-width:600px){.run-state{font-size:12px;padding:1px 4px}.phasebar .difficulty-tag{max-width:44px}.bp-name{position:sticky;top:0;background:#281c13;z-index:2}.bp-actions{width:45%}#gemUpgrades button{padding:10px 12px;font-size:12px}.gem-meta>summary{line-height:1.5;min-height:44px}}

@media(max-width:600px){#gemPanel{flex-direction:column;gap:8px}.bp-info{width:100%;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:12px;padding-left:0}.bp-name{grid-column:1/-1;grid-row:1;align-items:center;margin-bottom:6px}.bp-name b{font-size:24px}.gem-stats{grid-column:1;grid-row:2;align-self:start;gap:4px}.gem-stats .stat{min-height:32px}#gemUpgrades{grid-column:2;grid-row:2;align-self:start;margin-top:0;width:100%}#gemUpgrades button{width:100%;min-width:0;padding:10px 12px}.gem-meta{grid-column:1/-1;grid-row:3;margin-top:4px}#upgradeStatus{grid-column:1/-1;grid-row:4}#gemTargetAbilities{grid-column:1/-1}.bp-actions{order:-1;width:100%;max-width:none;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.bp-actions button{min-height:56px;padding:8px 4px;line-height:1.5}.bp-actions .close-selection{grid-column:4;grid-row:1;min-height:56px}.gem-meta>summary{min-height:44px}}

/* Bright approved button material needs dark ink for readable labels. */
button[data-skin-material^="button-green-"]:not(:disabled){color:#142b19;text-shadow:none}#gemUpgrades button:not(:disabled) .upgrade-preview,#gemUpgrades button:not(:disabled) .upgrade-condition{color:#173019}


/* P30: mobile is the default composition at every screen width. Source map and art stay intact. */
.app,.app[data-mode=classic]{width:min(480px,100%);min-width:0;height:100dvh;grid-template-rows:44px 60px 32px minmax(0,1fr) calc(48px + env(safe-area-inset-bottom));padding-top:env(safe-area-inset-top)}
header{padding:0 8px;gap:8px}header .brand{display:none}.header-actions{gap:4px}#researchToggle{padding:4px 8px}#ownedExplorer>summary{padding:10px 6px}#ownedExplorer>.roster-bar{top:44px}
.field-tabs{display:flex;flex:1;gap:4px;min-width:0;height:44px}.field-tabs button{flex:1;min-width:0;padding:3px 4px;font-size:12px;border:0;border-bottom:3px solid transparent;background:none;white-space:nowrap}.field-tabs button[aria-selected=true]{border-bottom-color:#e5c276;background:#45321e;color:#ffdf8a}.field-tabs small{display:block;font-size:12px;line-height:12px;color:#bfb193}.player-dot{display:inline-block;width:6px;height:6px;background:#79b68a;margin-right:4px}#fieldOther .player-dot{background:#b695d8}
.statusbar{padding:8px 12px;gap:8px}#resourceHud{gap:12px}.hud-pill{grid-template-columns:24px auto;gap:0 4px}.hud-pill>.ui-pixel-icon{width:24px;height:24px}.hud-pill b,.wave-value{font-size:20px}.hud-pill span,.wave-label{font-size:12px}.ui-wave-icon{width:24px;height:24px}#objectiveHud{grid-template-columns:24px auto;gap:0 4px}.wave-value .of{font-size:12px}
.phasebar{padding:0 8px;gap:6px}.phase-instruction{gap:6px}#engineTag{-webkit-line-clamp:1;font-size:12px}#buildProgress{gap:3px}#buildProgress i{width:6px;height:6px}.run-state{font-size:12px;padding:0 3px}.difficulty-tag{font-size:12px;max-width:44px;overflow:hidden}.app[data-mode=classic] .phasebar{height:auto}.app[data-mode=classic]{grid-template-rows:44px 60px 48px minmax(0,1fr) calc(48px + env(safe-area-inset-bottom))}
main{grid-template-rows:minmax(0,1fr) auto}.battlefield{border:2px solid #795c32}.map-label{display:none}.combat-count{top:8px;right:8px;padding:2px 6px;font-size:12px}
#bottomPanel{max-height:32dvh;min-height:0;overflow:auto;scrollbar-width:thin}#roundTray{padding:4px 10px 6px;min-height:0}.round-heading{padding:0 2px 3px;font-size:12px}.round-slots{gap:8px}.round-slot{height:48px}.slot-gem{width:44px;height:44px}.round-slot[aria-pressed=true]{transform:none}#roundTray[data-committed=true]{display:none}#gemNone{min-height:36px;padding:4px 12px}#gemNone strong{display:none}#gemNone span{font-size:12px}
#gemPanel{padding:6px 10px 8px;gap:6px;flex-direction:column}.bp-info{display:contents}#selectedGemPortrait{display:none}.bp-name{order:-1;position:static;width:100%;margin:0;gap:6px}.bp-name b{font-size:16px}.combat-target,.bp-special{font-size:12px}.bp-actions{order:0;width:100%;max-width:none;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px}.bp-actions button,.bp-actions .close-selection{min-height:44px;padding:4px 2px;line-height:1.4;font-size:12px}.bp-actions .close-selection{grid-column:4;grid-row:1}.gem-stats{order:1;display:flex;width:100%;justify-content:space-between;gap:6px}.gem-stats .stat{display:flex;flex-direction:row;align-items:center;min-height:24px;gap:4px}.gem-stats .stat-label-text{position:absolute;clip:rect(0,0,0,0);width:1px;height:1px;overflow:hidden}.gem-stats .stat>span>.ui-pixel-icon{width:20px;height:20px}.gem-stats b{font-size:12px}#gemUpgrades{order:2;width:100%;margin:0;gap:4px}#gemUpgrades button{padding:6px 8px;min-height:44px;width:100%;font-size:12px}#gemUpgrades .upgrade-preview{font-size:12px;margin:0}#gemUpgrades .upgrade-condition{font-size:12px;line-height:1.4;margin:0}#upgradeStatus{order:3;margin:0}.gem-meta{order:5;width:100%;margin:0;max-height:none}.gem-meta>summary{min-height:44px}#gemTargetAbilities{order:4;width:100%;margin:0}
footer{padding:0 8px;gap:8px;padding-bottom:env(safe-area-inset-bottom)}.transport{gap:4px}.transport button{font-size:12px;padding:4px 8px;min-height:44px}.speed-control{gap:4px;font-size:12px}.speed-control input{width:70px}.speed-control output{min-width:24px}
.spectator-banner{position:absolute;left:8px;top:8px;padding:4px 8px;font-size:12px;border:1px solid #a084bd;background:#21182de8;color:#e3c6ff;pointer-events:none}.spectator-banner[hidden],.spectator-actions[hidden]{display:none}.spectator-actions{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:70px;padding:8px 12px;background:#291e30;border-top:2px solid #9275a7}.spectator-actions span{font-size:12px;color:#d6c2df}.spectator-actions button{font-size:12px;min-height:44px}.app[data-field=other] #bottomPanel,.app[data-field=other] #modeSelect,.app[data-field=other] #sourceDialog,.app[data-field=other] .path-warning{display:none!important}.app[data-field=other] #buildProgress{visibility:hidden}
.source-dialog,.msg,#modeSelect{padding:10px}.mode-card{padding:16px;max-height:100%;overflow:auto}.mode-card h2,.source-dialog h2{font-size:20px;line-height:1.3}.mode-card p{margin-bottom:12px}.mode-buttons{gap:8px}.mode-buttons button{padding:8px;min-height:72px}.mode-buttons strong{font-size:20px}.mode-note{margin-top:10px;padding-top:8px;font-size:12px}#drawerScrim,aside{top:44px}
@media(min-width:600px){body{background:#100c09}.app{box-shadow:0 0 0 1px #75522d,0 0 80px #0006}}
@media(max-height:600px){#bottomPanel{max-height:34dvh}.app,.app[data-mode=classic]{grid-template-rows:44px 52px 28px minmax(0,1fr) calc(44px + env(safe-area-inset-bottom))}.app[data-mode=classic]{grid-template-rows:44px 52px 44px minmax(0,1fr) calc(44px + env(safe-area-inset-bottom))}.statusbar{padding-top:4px;padding-bottom:4px}.round-slot{height:44px}.mode-card p{line-height:1.5}.mode-note{display:none}}

/* Keep optional source details beside the name instead of consuming a permanent row. */
.app[data-selected=true] .round-heading{display:flex}
.bp-name .gem-meta{order:0;margin:0 0 0 auto;width:auto;max-height:none;font-size:12px}.bp-name .gem-meta>summary{min-height:44px;padding:4px 6px;border:1px solid #80613d;display:list-item;list-style:disclosure-closed inside}.bp-name .gem-meta[open]{flex-basis:100%;width:100%;margin:0}.bp-name .gem-meta[open]>summary{list-style:disclosure-open inside}.bp-name .gem-meta .stat{display:flex;justify-content:space-between;gap:8px}


/* P31: details are revealed by intent; the default screen is the field and current action. */
.app[data-simple-ui=true],.app[data-simple-ui=true][data-mode=classic]{grid-template-rows:44px 44px 28px minmax(0,1fr);padding-bottom:env(safe-area-inset-bottom)}
.app[data-simple-ui=true][data-mode=classic]{grid-template-rows:44px 44px 44px minmax(0,1fr)}
.app[data-simple-ui=true]>footer{display:none}.app[data-simple-ui=true] .statusbar{padding-top:4px;padding-bottom:4px}.app[data-simple-ui=true] .hud-pill[title=타워]{display:none}.app[data-simple-ui=true] .hud-pill>span{display:none}.app[data-simple-ui=true] .hud-pill{display:flex;gap:4px}.app[data-simple-ui=true] #resourceHud{gap:20px}.app[data-simple-ui=true] .run-state{display:none}
.header-actions>#play{min-height:40px;min-width:52px;font-size:12px;padding:4px 6px}.app[data-simple-ui=true] #researchToggle{min-width:44px;padding:4px 6px}
.app[data-simple-ui=true] #gemPanel{gap:6px}.app[data-simple-ui=true] .bp-actions{display:flex;flex-wrap:wrap}.app[data-simple-ui=true] .bp-actions button{flex:1;min-width:64px}.app[data-simple-ui=true] .bp-actions button[hidden]{display:none!important}.app[data-simple-ui=true] .bp-actions .close-selection{flex:0;min-width:58px}.app[data-simple-ui=true] .bp-name b{font-size:14px}.app[data-simple-ui=true] .gem-meta>summary{font-size:12px;white-space:nowrap}.app[data-simple-ui=true] .gem-meta[open]{width:100%;flex-basis:100%}
.gem-detail-body{display:flex;flex-direction:column;gap:8px;padding:8px 0}.gem-detail-body .gem-stats{order:0}.gem-detail-body #gemUpgrades{order:1}.gem-detail-body #upgradeStatus{order:2}.gem-detail-body #gemTargetAbilities{order:3}.gem-detail-body .stat{order:4}.gem-detail-body #gemEffects{order:5}.gem-detail-body #gemCombineGate{order:6}
#gameDrawer .menu-controls{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:0 0 12px;border-bottom:1px solid #705332}#gameDrawer .menu-controls h3{width:100%;margin:0}#gameDrawer .menu-controls .speed-control{flex:1}#gameDrawer .menu-controls .speed-control input{flex:1;min-width:60px;width:auto}#gameDrawer .menu-difficulty{width:100%;margin:0}#gameDrawer .menu-difficulty .difficulty-tag{max-width:none;font-size:12px}
#gameDrawer .menu-group,#gameDrawer #ownedExplorer{border:0;border-bottom:1px solid #705332;background:none;padding:0}#gameDrawer .menu-group>summary,#gameDrawer #ownedExplorer>summary{min-height:48px;padding:14px 0;font-size:13px;cursor:pointer;border:0;color:#e3cea0;list-style:disclosure-closed inside}#gameDrawer .menu-group[open]>summary,#gameDrawer #ownedExplorer[open]>summary{list-style:disclosure-open inside;color:#f3db8b}#gameDrawer #ownedExplorer>.roster-bar{position:static;max-height:none;padding:8px 0;border:0;background:none}#gameDrawer #ownedExplorer>.roster-bar #gemRoster{flex-wrap:wrap;max-height:180px;overflow:auto;display:flex}#gameDrawer #ownedExplorer .gem-chip{max-width:100%}#gameDrawer .save-section{border:0;margin:0;padding:0 0 12px}#gameDrawer .menu-group h2{font-size:16px;margin-top:8px}#gameDrawer #advancedOptions>details{padding:8px 0}#gameDrawer #casinoPanel{border:0;margin:0;padding:0 0 12px}.gem-detail-body>.combat-target{order:0;align-self:flex-start;font-size:12px}


/* P32: native Korean text avoids fractional pixel-font sizes and cramped raster-frame insets. */
html,body{font:13px/1.4 -apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Malgun Gothic",sans-serif}button,input,textarea,select,summary{font-family:inherit;text-shadow:none!important}#replayInput,#restoreInput,#savedRunRaw{font-family:ui-monospace,monospace}.app[data-simple-ui=true] .statusbar{padding:6px 16px}.app[data-simple-ui=true] #gemPanel{padding:12px 14px 10px}.round-heading{padding:6px 6px 4px}.wave-value{white-space:nowrap}#objectiveHud{min-width:100px;padding-right:4px}.bp-name b{line-height:1.4}#engineTag{font-size:12px;line-height:1.4}
.field-tabs button[hidden]{display:none!important}.field-tabs button{align-content:center}.field-tabs button[aria-selected=true]{color:#f3dfa4}
.build-cell{opacity:1;background:transparent;border:0;border-radius:0}.build-cell::after{content:'';position:absolute;width:3px;height:3px;left:50%;top:50%;transform:translate(-50%,-50%);border-radius:50%;background:#d1dba76b;pointer-events:none}.build-cell:hover,.build-cell:focus-visible{background:#dbe5ae25;outline:1px solid #dbe5ae;outline-offset:-1px}.build-cell:active{transform:none!important}
.spawn-marker{position:absolute;width:40px;height:28px;z-index:3;pointer-events:none}.spawn-marker[hidden]{display:none}.spawn-marker svg{display:block;width:100%;height:100%;overflow:visible}.spawn-marker path{fill:#eed28b;stroke:#51401d;stroke-width:2;stroke-linejoin:round;paint-order:stroke fill}


/* P33: approved fit only; route cues occupy the existing padding, never the combat world. */
.spawn-marker,.exit-marker{position:absolute;width:16px;height:16px;pointer-events:none;z-index:3}.spawn-marker[hidden],.exit-marker[hidden]{display:none}.spawn-marker svg,.exit-marker svg{display:block;width:100%;height:100%;overflow:hidden}.exit-marker path{fill:#e79485;stroke:#51251d;stroke-width:1}.exit-marker[data-hit=true] path{fill:#ffe2dc}.hud-pill[data-life-hit=true] b{color:#ffb7a7}
.phasebar>.phase-instruction{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.route-legend{display:flex;align-items:center;justify-content:space-between;gap:8px;flex:1;min-width:0;font-size:12px;line-height:1.3;white-space:nowrap}.entry-legend{color:#e8cd8b}.exit-legend{color:#efb0a4}.exit-legend>span[aria-hidden]{color:#ed9a8c}.app[data-mode=classic] .route-legend .entry-legend{display:none}.header-actions>#play{min-height:44px}

.source-files{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;overflow:auto;background:#151b14;padding:max(16px,env(safe-area-inset-top)) 16px max(16px,env(safe-area-inset-bottom));box-sizing:border-box}.source-files[hidden]{display:none}.source-files .mode-card{width:100%;max-width:420px;max-height:100%;overflow:auto;text-align:left}.source-files label{display:block;font-size:14px;margin:18px 0 8px}.source-files label small{display:block;font-size:12px;color:var(--dim);overflow-wrap:anywhere;margin-top:4px}.source-files input{display:block;box-sizing:border-box;width:100%;max-width:100%;min-height:44px;font:inherit;font-size:13px;color:var(--txt)}.source-files input::file-selector-button{min-height:44px;margin-right:8px;border:1px solid #8a724c;background:#342b1d;color:#f2e4c3;font:inherit}.source-files p,.source-files details{font-size:13px;line-height:1.7;overflow-wrap:anywhere}.source-files button{width:100%;min-height:48px}.source-files summary{min-height:44px;display:flex;align-items:center}.source-files #sourceFilesStatus{min-height:44px;color:#f2d28a}

/* Map UI1: subtle build hints, with a forecast in the existing legend row. */
.build-cell::after{width:2px;height:2px;background:#d1dba72c}
.build-cell:hover,.build-cell:focus-visible{background:#dbe5ae16;outline-color:#e2d3a3}
.route-legend[data-preview=true]>.entry-legend,.route-legend[data-preview=true]>.exit-legend{display:none}
#buildPreviewStatus{min-width:0;overflow:hidden;text-overflow:ellipsis;color:#dfd6ab}
#buildPreviewStatus[hidden]{display:none}#buildPreviewStatus[data-state=blocked],#buildPreviewStatus[data-state=invalid]{color:#efb28c}

/* Source machine actions stay with admission, independent of collapsed mine options. */
.casino-use{margin:12px 0 16px;padding:12px;background:#ffffff06;border:1px solid #786342}.casino-use[hidden]{display:none}.casino-use h3{margin:0 0 10px;font-size:14px}.casino-use-controls{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.casino-use-controls .training-option{min-height:48px;width:100%;white-space:normal}.casino-use p{margin:10px 0 0;line-height:1.5;color:var(--dim)}

/* Expanded mobile effects use the existing panel scroll, not a clipped inner scroll. */
.app[data-simple-ui=true] .gem-detail-body #gemEffects{max-height:none;overflow:visible}

/* Original casino payouts remain readable after the short action notice expires. */
.casino-result{margin:12px 0;padding:12px;border:1px solid #957a45;background:#ffffff06;overflow-wrap:anywhere}.casino-result[hidden]{display:none}.casino-result>span{font-size:12px;color:var(--dim)}.casino-result>p{margin:6px 0;font-size:16px;line-height:1.6;color:#f4d98d}.casino-result[data-outcome=loss]>p{color:#e9b3a4}.casino-result[data-outcome=unknown]>p{color:#e5c5a3}.casino-result summary{min-height:44px;display:flex;align-items:center;cursor:pointer}.casino-result ol{padding-left:22px;margin:0;font-size:12px;line-height:1.7}.casino-result li{padding:4px 0}
/* Source recipe books are opened from the existing menu; the field stays uncluttered. */
.recipe-intro,.recipe-warning,#recipeStatus{font-size:12px;line-height:1.6;color:var(--dim);margin:8px 0}.recipe-filters{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:12px 0}.recipe-filters button{min-height:44px;min-width:0;padding:6px;font-size:13px}.recipe-filters button[aria-pressed=true]{color:#f3d886;outline:1px solid #b39352;outline-offset:-3px}.recipe-search-label{display:block;font-size:12px;margin:12px 0 6px}#recipeSearch{width:100%;min-width:0;box-sizing:border-box;min-height:44px;font-size:16px;padding:10px;color:var(--txt);background:#141810;border:1px solid #786342;border-radius:0}#recipeList{min-width:0}.recipe-item{border-bottom:1px solid #5f4a30}.recipe-item>summary{min-height:44px;box-sizing:border-box;display:list-item;align-content:center;cursor:pointer;font-size:14px;line-height:1.5;padding:10px 4px;overflow-wrap:anywhere}.recipe-item[open]>summary{color:#f2da92}.recipe-item>p{margin:0;padding:4px 4px 14px;font-size:13px;line-height:1.8;white-space:pre-line;overflow-wrap:anywhere}.recipe-warning{color:#efb28c}

/* Choose a rock or slate from the existing hit area without changing map geometry. */
.overlap-picker{padding:8px 12px;background:#2a2319;border:1px solid #8b7042}.overlap-picker[hidden]{display:none}.overlap-title{font-size:12px;line-height:1.5;margin:0 0 6px;color:#ead397}.overlap-choices{display:flex;flex-wrap:wrap;gap:8px}.overlap-choice{min-height:44px;flex:1 1 100px;min-width:0;padding:8px;font-size:13px;line-height:1.4;overflow-wrap:anywhere}.overlap-choice[aria-pressed=true]{outline:1px solid #f0d67f;outline-offset:-3px;color:#f5dfa4}
/* Current machine first; source payout differences live in the expandable comparison. */
#casinoChoices{border-top:1px solid #705332;margin:12px 0 4px}#casinoChoices>summary,.casino-payout-details>summary{min-height:44px;display:flex;align-items:center;cursor:pointer;font-size:13px;color:#e5cea0}#casinoOtherStationList{list-style:none;padding:0;margin:0}.casino-payout-preview{display:block;font-size:12px;line-height:1.7;color:#e8d49d;margin-top:6px;overflow-wrap:anywhere}.casino-payout-details{font-size:12px;line-height:1.7}.casino-payout-list{list-style:none;padding:0;margin:0 0 8px}.casino-payout-list li{margin:4px 0}.casino-comparison-note{font-size:12px;line-height:1.7;color:var(--dim);margin:8px 0 12px}

.casino-station>.casino-payout-details{grid-column:1/-1;min-width:0}

.placement-confirm{padding:10px 12px;border:1px solid #9f8044;background:#2a2319}.placement-confirm[hidden]{display:none}.placement-confirm p{margin:0 0 8px;line-height:1.5}.placement-confirm>div{display:flex;gap:8px}.placement-confirm button{flex:1;min-height:44px}.training-option .training-label,.training-option .training-reason{display:block}.training-option .training-reason{font-size:12px;font-weight:400;line-height:1.6;margin-top:4px;color:#e5d1a9}.training-option:disabled .training-reason{color:#d6c5a3}#cv,.build-cell{-webkit-touch-callout:none}
.precise-placement{display:flex;align-items:center;gap:8px;min-height:44px;margin:8px 0;line-height:1.5}.precise-placement input{width:22px;height:22px;margin:0}
/* The reused green button surface needs dark secondary text as well as dark titles. */
.training-option .training-reason{color:#1c2716}.training-option:disabled .training-reason{color:#26301d}


/* Mobile visual pass: reuse the approved walnut/brass assets at the structural
 * edges, and reserve colored raster buttons for actions. Long Korean copy keeps
 * the native typeface introduced by P32; the existing pixel face serves short
 * game figures only. Camera fit and every source action stay unchanged. */
:root{--ui-header-height:48px;--ui-quiet:#34281d;--ui-quiet-line:#685137;--ui-ink:#f2e5c6;--ui-muted:#c6b58f}
.app[data-simple-ui=true],.app[data-simple-ui=true][data-mode=classic]{grid-template-rows:var(--ui-header-height) 52px 28px minmax(0,1fr)}
.app[data-simple-ui=true][data-mode=classic]{grid-template-rows:var(--ui-header-height) 52px 44px minmax(0,1fr)}
header{gap:8px;padding:0 10px;border-bottom:1px solid #765b36}
.field-tabs{height:var(--ui-header-height);gap:6px;align-items:center}
.field-tabs button{height:44px;min-height:44px;border:0;border-bottom:2px solid transparent;background:transparent;font-size:13px;font-weight:600}
.field-tabs button[aria-selected=true]{background:#3d3020;border-bottom-color:#e5c276;color:#f8e5ad}
.field-tabs small{font-size:12px;line-height:14px;color:var(--ui-muted)}
.header-actions{flex:none;gap:6px}
.header-actions>#play{min-width:60px;min-height:44px;padding:8px 14px;font-size:13px}
.app[data-simple-ui=true] #researchToggle{min-width:48px;min-height:44px;padding:8px;font-size:13px}
button[data-skin-surface=quiet]{border:1px solid var(--ui-quiet-line);background-color:var(--ui-quiet);border-radius:4px;color:var(--ui-ink);text-shadow:none}
button[data-skin-surface=raster]{border:0;border-radius:0;padding-left:14px;padding-right:14px}
button[data-skin-surface=quiet]:disabled{color:#b5a991;filter:none;background-color:#2a241c;border-color:#504536}
button:active:not(:disabled){transform:translateY(1px);filter:brightness(.92)}
.field-tabs button[data-skin-surface=quiet]{border:0;border-bottom:2px solid transparent;background:transparent;border-radius:0}
.field-tabs button[data-skin-surface=quiet][aria-selected=true]{border-bottom-color:#e5c276;background:#3d3020;color:#f8e5ad}
button[data-skin-surface=quiet][aria-pressed=true]{border-color:#d8b65f;color:#f8df9a;background-color:#45351f}
.app[data-simple-ui=true] .statusbar{padding:6px 16px;gap:12px}
.app[data-simple-ui=true] #resourceHud{gap:18px}
.app[data-simple-ui=true] .hud-pill{display:grid;grid-template-columns:24px minmax(0,1fr);grid-template-rows:14px 22px;gap:0 6px}
.app[data-simple-ui=true] .hud-pill>span{display:block;font-size:12px;line-height:14px;color:#cbbd9d}
.app[data-simple-ui=true] .hud-pill>.ui-pixel-icon{grid-column:1;grid-row:1/3;align-self:center;width:24px;height:24px}
.app[data-simple-ui=true] .hud-pill>b{grid-column:2;grid-row:2;font:700 20px/22px Galmuri11,monospace;font-variant-numeric:tabular-nums;color:#f6e7bc}
#objectiveHud{min-width:100px;column-gap:6px;padding:0;grid-template-columns:24px auto;grid-template-rows:14px 22px;align-items:center}
.wave-label{font-size:12px;line-height:14px;color:#cbbd9d}.wave-value{font:700 20px/22px Galmuri11,monospace;color:#f6e7bc}.wave-value .of{font:12px/1.4 -apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Malgun Gothic",sans-serif;color:#cbbd9d}
.phasebar{padding-left:12px;padding-right:12px;border-bottom:1px solid #6f5733;background:#251e14}
.route-legend{gap:8px;font-size:12px;line-height:1.4}.entry-legend{color:#e8cf8f}.exit-legend{color:#f0b4a7}.exit-legend>span[aria-hidden]{color:#f2a28f;margin-right:3px}
.spawn-marker svg,.exit-marker svg{background:#251d15cc;border-radius:3px}.spawn-marker path{fill:#f7db94;stroke:#3a2a13;stroke-width:2}.exit-marker path{fill:#f2a28f;stroke:#3c1e16;stroke-width:1.5}.exit-marker[data-hit=true] svg{background:#632d20}
#bottomPanel{border-top:1px solid #94713c;background:#251c13;scroll-padding:12px 0 24px}
#roundTray{padding:6px 12px 8px}.round-heading{padding:3px 3px 5px;font-size:12px;color:var(--ui-muted)}.round-heading b{font-size:12px;color:#efddb3}.round-heading #roundSlotStatus{font-variant-numeric:tabular-nums;color:#d5c18f}
.round-slots{gap:8px}.round-slot{height:52px;min-height:44px}.round-slot[data-empty=true]{filter:none;opacity:.42}.round-slot[aria-pressed=true]{outline:2px solid #f3d57e;outline-offset:2px;transform:none}.round-slot:active:not(:disabled){transform:none}.slot-gem{width:44px;height:44px}.slot-number{font:12px/1 Galmuri11,monospace;right:5px;bottom:5px}
#gemNone{min-height:32px;padding:6px 14px}#gemNone span{font-size:12px;line-height:1.6;color:var(--ui-muted)}
.app[data-simple-ui=true] #gemPanel{padding:10px 14px 12px;gap:8px;background:#2b2117;border-top:1px solid #604b30}
.app[data-simple-ui=true] .bp-name{gap:8px}.app[data-simple-ui=true] .bp-name b{font-size:15px;line-height:1.5;color:#f2e3bd;overflow-wrap:anywhere}
.combat-target,.bp-special{font-size:12px;line-height:1.5;padding:2px 5px;border-color:#695436;color:#d2c09a}
.app[data-simple-ui=true] .bp-actions{gap:8px}.app[data-simple-ui=true] .bp-actions button{flex:1 1 96px;min-width:80px;min-height:48px;padding:8px 12px;font-size:13px;line-height:1.5}
.app[data-simple-ui=true] .bp-actions .close-selection{flex:0 1 88px;min-width:80px;min-height:48px}
.app[data-simple-ui=true] .bp-name .gem-meta>summary{min-height:44px;padding:10px 12px;border:1px solid #735a36;border-radius:4px;color:#e7d4a3;font-size:12px;line-height:1.5;white-space:nowrap}
.app[data-simple-ui=true] .gem-meta{max-height:none;overflow:visible}.gem-detail-body{gap:10px;padding-top:10px;line-height:1.7}.gem-detail-body .gem-stats{justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid #604b30}.gem-detail-body #gemEffects,.gem-detail-body #gemCombineGate{font-size:13px;line-height:1.8}
#gemUpgrades button{min-height:48px;padding:12px 16px;line-height:1.6}#gemUpgrades .upgrade-preview,#gemUpgrades .upgrade-condition{font-size:12px;line-height:1.6}
#drawerScrim,aside{top:calc(var(--ui-header-height) + env(safe-area-inset-top))}
aside{width:min(400px,100%);padding:16px 16px max(24px,env(safe-area-inset-bottom));border-left:1px solid #94713c;overscroll-behavior:contain;scroll-padding:80px 16px 80px;scrollbar-gutter:stable;background:#2b2117}
aside .drawer-head{position:sticky;top:-16px;z-index:5;margin:-16px -16px 8px;padding:12px 16px;background:#2b2117;border-bottom:1px solid #80643a}
aside .drawer-head h2{font-size:18px;line-height:1.5;margin:0}.drawer-head #drawerClose{min-width:56px;min-height:44px;font-size:13px}
#gameDrawer .menu-group>summary,#gameDrawer #ownedExplorer>summary{padding:16px 0;min-height:52px;font-size:14px;line-height:1.5;color:#e5d2a7}
#gameDrawer .menu-group[open]>summary,#gameDrawer #ownedExplorer[open]>summary{color:#f5d687}
#gameDrawer p,#gameDrawer .local-note,#gameDrawer .recipe-intro,#gameDrawer .recipe-warning{font-size:13px;line-height:1.75;color:var(--ui-muted)}
#gameDrawer input[type=text],#gameDrawer textarea,#gameDrawer select{font-size:16px;line-height:1.5;border-color:#7e653e;background:#201a13;color:var(--ui-ink)}
#gameDrawer input[type=range]{min-height:44px}#gameDrawer button,#gameDrawer summary,#gameDrawer input,#gameDrawer textarea,#gameDrawer select{scroll-margin-top:80px;scroll-margin-bottom:64px}
#gameDrawer .recipe-filters{gap:8px;margin:12px 0}.recipe-filters button{font-size:13px}.recipe-item>summary{padding:12px 4px;min-height:48px}.recipe-item>p{font-size:13px;line-height:1.85}.save-tools{gap:8px}.save-tools button{min-height:48px}
#actionFeedback{max-width:calc(100% - 32px);width:max-content;font-size:13px;line-height:1.6;padding:8px 12px;border:1px solid #b9954c;background:#241c13f5;color:#f2dfac;overflow-wrap:break-word;word-break:keep-all}
.placement-confirm,.overlap-picker{padding:12px 14px;border-width:1px}.placement-confirm button,.overlap-choice{min-height:48px}.precise-placement{gap:10px;min-height:48px}.precise-placement input{flex:none}
#trainingStatus,#casinoHint,#casinoTrainingStatus,#casinoResultText,#saveStatus,#savedRunHelp,#automaticSaveStatus{scroll-margin-top:80px;overflow-wrap:anywhere}
@media(max-width:380px){header{padding-left:8px;padding-right:8px;gap:6px}.app[data-simple-ui=true] #resourceHud{gap:12px}.app[data-simple-ui=true] .statusbar{padding-left:14px;padding-right:14px}.route-legend{font-size:12px;gap:6px}.round-slots{gap:6px}.app[data-simple-ui=true] .bp-actions button{flex-basis:88px}}
@media(max-height:600px){:root{--ui-header-height:44px}.app[data-simple-ui=true],.app[data-simple-ui=true][data-mode=classic]{grid-template-rows:44px 48px 28px minmax(0,1fr)}.app[data-simple-ui=true][data-mode=classic]{grid-template-rows:44px 48px 44px minmax(0,1fr)}.app[data-simple-ui=true] .statusbar{padding-top:4px;padding-bottom:4px}.round-slot{height:44px}#roundTray{padding-top:4px;padding-bottom:6px}.app[data-simple-ui=true] #gemPanel{padding-top:8px;padding-bottom:8px}}
@media(prefers-reduced-motion:reduce){button:active:not(:disabled){transform:none}.round-slot[aria-pressed=true]{transform:none}}


/* The source keep command names its result; combat reuses the existing details
 * disclosure for the exact same action/upgrade nodes, with a neutral close. */
#gemDeselect{min-width:44px;min-height:44px;max-width:44px;padding:0;font:24px/1 -apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Malgun Gothic",sans-serif;color:#dbcba9;border:1px solid #756044;background-color:#34281d;border-radius:4px}
.app[data-simple-ui=true] .bp-actions #gemDeselect{flex:0 0 44px;min-width:44px;min-height:44px;padding:0;align-self:center;font-size:24px}
.app[data-simple-ui=true] #gemPanel[data-combat-card=true]{padding:6px 10px;gap:0}
.app[data-simple-ui=true] #gemPanel[data-combat-card=true] .bp-name{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0;width:100%}
#gemPanel[data-combat-card=true] .bp-name>#gemName{order:0;flex:1 1 100px;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:14px;line-height:1.5}
.app[data-simple-ui=true] #gemPanel[data-combat-card=true] .bp-name>.gem-meta{order:1;flex:0 0 auto;width:auto;max-width:none;margin:0}
.app[data-simple-ui=true] #gemPanel[data-combat-card=true] .bp-name>.gem-meta>summary{min-height:44px;padding:10px;font-size:12px;line-height:1.5;white-space:nowrap}
#gemPanel[data-combat-card=true] .bp-name>#gemDeselect{order:2;flex:0 0 44px;min-width:44px;min-height:44px}
.app[data-simple-ui=true] #gemPanel[data-combat-card=true] .bp-name>.gem-meta[open]{order:3;flex:1 0 100%;width:100%}
#gemPanel[data-combat-card=true] .gem-detail-body>.bp-special{order:-2;align-self:flex-start}
#gemPanel[data-combat-card=true] .gem-detail-body>.bp-actions{order:-1;width:100%;max-width:none}
#gemPanel[data-combat-card=true] .gem-detail-body{padding-bottom:4px}


/* Selection identity reuses the already painted 64px portrait. It is inside the
 * existing disclosure, so the compact combat line gains no permanent content. */
.selected-unit-art{display:flex;align-items:center;gap:12px;min-width:0;min-height:72px;padding:4px 0 8px;border-bottom:1px solid #604b30;order:-3}
.selected-unit-art[hidden]{display:none}
#selectedUnitArt>#selectedGemPortrait{display:block;position:static;flex:none;width:64px;height:64px;image-rendering:pixelated}
.selected-unit-role{min-width:0;margin:0;color:#e7d7ad;font-size:13px;line-height:1.6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* Source-observed life loss stays in the HUD/gutter, never over a monster. */
.statusbar>#lifeLossStatus{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;pointer-events:none}
.hud-pill[data-life-hit=true]{background:#562d24;box-shadow:inset 0 0 0 1px #f2a28f;border-radius:3px}
.hud-pill[data-life-hit=true] b{color:#ffe0d7}.hud-pill[data-life-hit=true]>span{color:#f4c7bd}
.exit-marker svg{box-shadow:inset 0 0 0 1px #b58375}.exit-marker[data-hit=true] svg{background:#7b3429;box-shadow:inset 0 0 0 1px #ffe0d7}
.exit-marker[data-hit=true] path{fill:#fff0e9;stroke:#5b1d16}.exit-legend{color:#edbdb1}
@media(prefers-reduced-motion:reduce){.hud-pill[data-life-hit=true],.exit-marker[data-hit=true]{animation:none;transition:none}}


/* Selection details float above their unchanged card. The body is fixed to the
 * measured card edge, escaping the existing scroll clip without resizing the
 * battlefield host or changing the approved fit/canvas resolution. */
#gemPanel[data-selection-sheet=true]{position:relative}
.app[data-simple-ui=true] #gemPanel[data-selection-sheet=true] .bp-name>.gem-meta,
.app[data-simple-ui=true] #gemPanel[data-selection-sheet=true] .bp-name>.gem-meta[open]{position:static;flex:0 0 auto;width:auto;max-height:none;margin:0 0 0 auto}
.app[data-simple-ui=true] #gemPanel[data-selection-sheet=true][data-combat-card=true] .bp-name>.gem-meta[open]{order:1;flex:0 0 auto;width:auto}
#gemPanel[data-selection-sheet=true] .gem-detail-body{position:fixed;left:var(--selection-sheet-left,0px);width:var(--selection-sheet-width,min(480px,100vw));right:auto;bottom:var(--selection-sheet-bottom,58px);z-index:12;max-height:min(var(--selection-sheet-max-height,40dvh),440px,calc(100dvh - var(--selection-sheet-bottom,58px) - var(--ui-header-height) - 80px));min-height:0;overflow:auto;overscroll-behavior:contain;touch-action:pan-y;scrollbar-width:thin;scroll-padding:52px 0 16px;gap:10px;padding:12px 14px 16px;border:1px solid #9a7946;border-radius:12px 12px 0 0;background:#2b2117;box-shadow:0 -12px 24px #0006}
#gemPanel[data-selection-sheet=true] .gem-detail-body>*{flex-shrink:0}
#gemPanel[data-selection-sheet=true] .gem-detail-body .bp-actions{max-width:none;width:100%}
#gemPanel[data-selection-sheet=true] .gem-meta>summary{position:relative;touch-action:none;user-select:none;-webkit-user-select:none;padding-top:13px}
#gemPanel[data-selection-sheet=true] .gem-meta>summary::before{content:'';position:absolute;top:4px;left:50%;width:24px;height:3px;transform:translateX(-50%);border-radius:2px;background:#b9a16c;pointer-events:none}
#selectionSheetHandle{position:sticky;top:-12px;z-index:3;order:-4;align-self:stretch;flex:none;width:calc(100% + 28px);min-height:44px;margin:-12px -14px 0;padding:14px 12px 7px;border:0;border-bottom:1px solid #705735;border-radius:10px 10px 0 0;background:#32271b;color:#d8c499;font-size:12px;font-weight:400;touch-action:none;user-select:none;-webkit-user-select:none}
#selectionSheetHandle::before{content:'';position:absolute;top:6px;left:50%;width:30px;height:3px;transform:translateX(-50%);border-radius:2px;background:#b9a16c;pointer-events:none}
#gemPanel[data-selection-sheet=true] .gem-detail-body button,#gemPanel[data-selection-sheet=true] .gem-detail-body summary{scroll-margin-top:52px;scroll-margin-bottom:16px}

/* Source identity and grades use quiet text cues beside reused raster art. */
.slot-grade{position:absolute;left:8px;top:8px;min-width:14px;height:14px;padding:0 2px;background:#211a14;color:#f0dfb2;border:1px solid #a08a5e;font:700 12px/12px Galmuri11,system-ui;text-align:center;pointer-events:none;z-index:3}
.slot-grade[hidden]{display:none}.gem-detail-body .stat,.selected-unit-role{font-size:13px;line-height:1.6}

.action-success{outline:1px solid #e0c382;outline-offset:-2px}.feedback-sound{display:flex;align-items:center;gap:10px;margin:8px 0 14px}.feedback-sound button{min-height:44px;white-space:nowrap;font-size:12px}.feedback-sound span{font-size:12px;line-height:1.6;color:var(--dim)}#researchStatus{display:block;margin-top:4px}
@media(prefers-reduced-motion:reduce){.action-success{transition:none}}

/* One source-backed mode/difficulty choice screen. */
.startup-difficulties{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:12px 0}.startup-difficulties button{display:flex;flex-direction:column;gap:6px;min-height:80px;white-space:normal;word-break:keep-all;line-height:1.5}.startup-difficulties small{font-size:12px;color:var(--dim)}.mode-buttons [aria-pressed=true],.startup-difficulties [aria-pressed=true]{outline:2px solid #d5b568;outline-offset:-3px}.mode-card #startGame{width:100%;min-height:48px;margin-top:4px}.mode-card button strong{font-size:14px}

/* The approved panel frame occupies 16px; keep eight extra pixels inside it. */
#modeSelect .mode-card,.source-dialog .mode-card{padding:24px;word-break:keep-all}.mode-card button{white-space:normal;word-break:keep-all}

/* Labels sit 14px inside the 12px HUD frame, including phone widths. */
.app[data-simple-ui=true],.app[data-simple-ui=true][data-mode=classic]{grid-template-rows:44px 64px 28px minmax(0,1fr)}
.app[data-simple-ui=true][data-mode=classic]{grid-template-rows:44px 64px 44px minmax(0,1fr)}
.app[data-simple-ui=true] .statusbar{padding:14px 16px;align-items:center}
.app[data-simple-ui=true] .hud-pill,#objectiveHud{grid-template-rows:14px 22px}
.app[data-simple-ui=true] .header-actions button{font-size:12px;white-space:nowrap;padding-left:8px;padding-right:8px;min-height:44px}
.app[data-simple-ui=true] #speedCycle{min-width:70px}
.menu-controls #changeSetup{width:100%;margin:8px 0}

/* Closed fixed descendants have no layout or hit area; stats retain named groups. */
#gemPanel[data-selection-sheet=true] .gem-meta:not([open]) .gem-detail-body{display:none}

/* Korean menu explanations wrap at word boundaries, including expanded help. */
#gameDrawer{word-break:keep-all}

/* Supplied B effect art keeps text labels and existing information sheet. */
.field-effect-icons{display:flex;flex-wrap:wrap;gap:6px 12px;list-style:none;padding:0;margin:8px 0}.field-effect-icons[hidden]{display:none}.field-effect-icons li{display:flex;align-items:center;gap:4px;font-size:12px;line-height:1.5}.field-effect-icons canvas{image-rendering:pixelated;flex:none}.sound-label{font-size:12px;color:var(--dim)}

.precision-overview{position:absolute;right:12px;top:12px;z-index:5;min-height:44px;padding:8px 12px}.precision-overview[hidden]{display:none}.app[data-camera=precision] .combat-count{top:62px}

/* Existing controls, grouped into three on-demand menu views. */
.app[data-menu-tabs=true] #gameDrawer{display:flex;flex-direction:column;gap:8px;overflow:hidden;width:min(440px,100%)}
.app[data-menu-tabs=true] #gameDrawer[hidden]{display:none!important}
#gameMenuTabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;flex:none}
#gameMenuTabs button{min-height:48px;padding:8px 4px;font-size:13px;white-space:normal;line-height:1.5}
#gameMenuTabs [aria-selected=true]{outline:2px solid #d5b568;outline-offset:-3px;color:#ffe5a0}
.game-menu-panel{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-gutter:stable;padding-right:2px}
.game-menu-panel[hidden]{display:none!important}
#gameDrawer .drawer-head{flex:none}
#menuPanelSettings>.precise-placement{display:flex;align-items:center;gap:8px;min-height:48px;line-height:1.7}
#menuPanelSettings>#changeSetup{width:100%;margin:12px 0}
#menuPanelRun .menu-new-game{padding:20px 0 12px;border-top:1px solid #705332;margin-top:20px}
#menuPanelRun .menu-new-game button{width:100%}
#menuPanelGuide .research{margin:12px 0}
/* Approved panel material is the outer frame for every interactive window. */
#modeSelect .mode-card.skin-framed,.source-dialog .mode-card.skin-framed{border:0;border-radius:0;box-shadow:none;background:#2b2117}
.app[data-menu-tabs=true] #gameDrawer.skin-framed{position:absolute;border:0;border-radius:0;background:#2b2117;padding:20px;isolation:isolate}
#gameDrawer.skin-framed .drawer-head{position:relative;top:auto;margin:0 0 8px;padding:0 0 8px;background:transparent;border:0}
#gemPanel[data-selection-sheet=true] .gem-detail-body.skin-framed{border:0;border-radius:0;background:#2b2117;box-shadow:none;padding:20px}
/* Desktop keeps the full field tall and puts the existing controls beside it. */
@media(min-width:901px), (min-width:700px) and (min-height:500px) and (orientation:landscape){
 html,body{background:#21160f}
 .app[data-simple-ui=true]{width:100%;max-width:none;margin:0;min-width:0;box-shadow:none}
 .app[data-simple-ui=true] main{grid-template-columns:minmax(0,var(--desktop-field-width,55%)) minmax(360px,1fr);grid-template-rows:minmax(0,1fr)}
 .app[data-simple-ui=true] #battlefield{grid-column:1;grid-row:1;min-width:0;min-height:0}
 .app[data-simple-ui=true] #bottomPanel{grid-column:2;grid-row:1;width:100%;height:100%;max-height:none;border-top:0;border-left:2px solid #8c6c35;overflow-y:auto;overflow-x:hidden}
 .app[data-simple-ui=true] #gemPanel{flex-direction:column;align-items:stretch;gap:12px;padding:12px}
 .app[data-simple-ui=true] .bp-info{display:block;min-width:0;padding-left:0}
 .app[data-simple-ui=true] .bp-name{width:100%;min-width:0}
 .app[data-simple-ui=true] .bp-name b{white-space:normal;word-break:keep-all}
 .app[data-simple-ui=true] .bp-actions{width:100%;max-width:none;grid-template-columns:repeat(2,minmax(0,1fr))}
 .app[data-simple-ui=true] .bp-actions #castA009{grid-column:1/-1}
 .app[data-simple-ui=true] .gem-meta{width:100%;max-width:none}
 .app[data-simple-ui=true] #gemPanel[data-selection-sheet=true] .gem-detail-body{position:relative;left:auto;right:auto;bottom:auto;width:100%;max-height:none;overflow:visible;box-shadow:none}
 .app[data-simple-ui=true] #selectionSheetHandle{display:none}
 .app[data-simple-ui=true] .gem-detail-body .gem-stats{flex-wrap:wrap;gap:10px}
 .app[data-simple-ui=true] .gem-detail-body .gem-stats .stat{flex:1 1 80px;min-width:0}
 .app[data-simple-ui=true] .placement-confirm{width:100%;margin:0}
}

/* Source facts reuse the sidebar, leaving the mobile field unchanged. */
.next-wave-preview{display:none}
@media(min-width:901px), (min-width:700px) and (min-height:500px) and (orientation:landscape){
 .next-wave-preview{display:grid;grid-template-columns:64px minmax(0,1fr);align-items:center;gap:16px;margin:12px;padding:16px 12px;border-bottom:1px solid #806337;min-height:132px;background:#302419}
 .next-wave-preview h2{font-size:16px;color:#cdb47d;margin:0 0 8px}.next-wave-preview strong{font-size:21px;word-break:keep-all}.next-wave-preview p{font-size:15px;line-height:1.55;margin:7px 0;word-break:keep-all}.next-wave-preview p:last-child{color:#edc3a2}
 .app[data-simple-ui=true] #gemPanel{min-height:0}.app[data-simple-ui=true] .gem-meta{margin-top:14px}
 .app[data-simple-ui=true] #gemPanel[data-selection-sheet=true] .gem-detail-body{max-height:none;margin:0;font-size:16px}
 .app[data-simple-ui=true] .gem-detail-body .gem-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.app[data-simple-ui=true] .gem-detail-body .gem-stats .stat{padding:10px 2px;min-width:0}
}

@media(min-width:901px), (min-width:700px) and (min-height:500px) and (orientation:landscape){
 .app[data-simple-ui=true] #gemPanel .bp-name{flex-direction:column;align-items:stretch;gap:12px}
 .app[data-simple-ui=true] #gemPanel[data-selection-sheet=true][data-combat-card] .bp-name>.gem-meta[open]{flex:0 0 auto;width:100%;margin:0;align-self:stretch}
 .app[data-simple-ui=true] #gemPanel .gem-meta>summary[hidden]{display:none!important}
 .app[data-simple-ui=true] #gemPanel .gem-detail-body{width:100%;align-self:stretch}
}

.life-loss-overlay{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:36;image-rendering:pixelated}

/* The reason stays visible even when a source renderer resets button text. */
.button-disabled-reason{display:block;font-size:12px;line-height:1.5;color:#edc59d;margin:4px 2px 8px;word-break:keep-all;overflow-wrap:anywhere}
.button-disabled-reason[hidden],.round-slots-help[hidden]{display:none!important}
.bp-actions>.button-disabled-reason{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);padding:0;margin:0}
.app[data-simple-ui=true] .bp-actions>button[data-disabled-reason]:not([data-reason-in-text=true])::after{content:attr(data-disabled-reason);display:block;white-space:normal;font-size:12px;font-weight:400;line-height:1.4;color:#d8c5a8;margin-top:3px}
.round-slots-help{display:block;padding:3px 12px 5px;color:#cbb98d;font-size:12px;line-height:1.4}
.research>.button-disabled-reason{grid-column:1/-1;flex-basis:100%;margin-top:0}
.menu-controls>.button-disabled-reason{flex-basis:100%;margin:0}
.app[data-simple-ui=true][data-control-gate=true] .phasebar{position:relative}
.app[data-simple-ui=true][data-control-gate=true] .route-legend{visibility:hidden}
.app[data-simple-ui=true][data-control-gate=true] .run-state{display:block;position:absolute;inset:0 8px;align-content:center;padding:0 4px;border:0;color:#edc59d;font-size:12px;line-height:1.4;background:#211b13;pointer-events:none}

/* G2: one source research shortcut above the existing five gems. */
.research-shortcut{display:grid;grid-template-columns:minmax(0,1fr) 44px;gap:6px;padding:6px 8px;flex:none}
.research-shortcut[hidden]{display:none!important}.research-shortcut button{min-height:44px;min-width:0;white-space:normal;word-break:keep-all;font-size:13px;line-height:1.35}
.research-shortcut-detail{grid-column:1/-1;margin:0;color:var(--dim);font-size:12px;line-height:1.5;word-break:keep-all}

.source-help,.training-help{display:block;margin:5px 0 0;font-size:12px;line-height:1.5;font-weight:400;word-break:keep-all;color:inherit}.source-help[hidden],.training-help[hidden]{display:none!important}
.research>.source-help{grid-column:1/-1;flex-basis:100%}

/* G4 reuses the same five slots and the existing source handbook. */
.research-shortcut{grid-template-columns:minmax(0,1fr) 44px 64px}.hand-combination-notice{margin:0;padding:3px 12px;color:#c3ecaa;font-size:12px;line-height:1.5;word-break:keep-all}.hand-combination-notice[hidden]{display:none!important}
.slot-combination{position:absolute;z-index:3;bottom:6px;left:6px;padding:0 2px;background:#18270f;color:#c5f3a5;font:12px/1.4 system-ui;white-space:nowrap}.slot-combination[hidden]{display:none!important}.recipe-available{color:#bde79e}

/* G5: source wave facts above the field; notices reuse the route strip. */
.app[data-simple-ui=true],.app[data-simple-ui=true][data-mode=classic]{grid-template-rows:44px 64px auto minmax(0,1fr)}
.phasebar{height:auto;min-height:36px;display:flex;flex-direction:column;align-items:stretch}.route-legend{position:relative;min-height:36px}
.phone-wave-preview{margin:0;padding:3px 9px;font-size:12px;line-height:1.45;word-break:keep-all;color:#e4d0a7}.phone-wave-preview[hidden]{display:none!important}
.wave-attention{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:2px 8px;background:#2b2115;color:#f6dfa0;font-size:12px;line-height:1.35;word-break:keep-all}.wave-attention[hidden]{display:none!important}
.route-legend[data-attention=true]:not([data-preview=true])>.entry-legend,.route-legend[data-attention=true]:not([data-preview=true])>.exit-legend{visibility:hidden}.route-legend[data-preview=true]>.wave-attention{display:none}
@media(min-width:901px), (min-width:700px) and (min-height:500px) and (orientation:landscape){.phone-wave-preview{display:none}}

.wave-attention{gap:6px;white-space:normal}.wave-attention canvas{width:28px;height:28px;flex:none;image-rendering:pixelated}.wave-attention canvas[hidden]{display:none}.wave-attention span{min-width:0;word-break:keep-all}

/* G1: a dismissible adjacent guide, never a blocking layer. */
.first-run-guide{flex:none;margin:5px 8px;padding:3px 9px 7px;border:1px solid #d1ad59;background:#2b2419;color:#f0dfb2}.first-run-guide[hidden]{display:none!important}.first-run-guide-head{display:flex;align-items:center;gap:6px;justify-content:flex-end}.first-run-guide-head strong{margin-right:auto;font-size:12px;white-space:nowrap}.first-run-guide-head button{min-height:44px;padding:5px 8px;font-size:12px}.first-run-guide p{margin:0;white-space:pre-line;word-break:keep-all;font-size:12px;line-height:1.6}.tutorial-target{outline:2px solid #f2d47d;outline-offset:2px}.build-cell.tutorial-target{opacity:1;outline-offset:-2px;background:#eacf7528}

/* Keep the existing reason sibling from displacing either shortcut control. */
#quickResearch{grid-column:1;grid-row:1;min-height:52px}#quickResearchInfo{grid-column:2;grid-row:1}#quickRecipes{grid-column:3;grid-row:1}
.research-shortcut>.button-disabled-reason{grid-column:1/-1;grid-row:2;margin:0;font-size:12px;line-height:1.35;overflow-wrap:break-word}#quickResearchDetail{grid-row:3}

/* A brief wave notice outranks hover text; the path preview on the field stays visible. */
.route-legend[data-attention=true]>.entry-legend,.route-legend[data-attention=true]>.exit-legend,.route-legend[data-attention=true]>#buildPreviewStatus{visibility:hidden}
.route-legend[data-attention=true]>.wave-attention{display:flex}

/* H: both channels stay in the existing settings panel. */
.feedback-sound{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center}
#feedbackSoundStatus,.sound-volume{grid-column:1/-1;min-width:0;word-break:keep-all}
.sound-volume{display:grid;grid-template-columns:64px minmax(0,1fr) 32px;align-items:center;gap:8px;min-height:48px}
.sound-volume input{width:100%;min-width:0;height:44px;accent-color:#d6b565}
.sound-volume output{text-align:right;font-variant-numeric:tabular-nums}
#soundReview button{width:100%;margin:4px 0}#soundReview textarea{width:100%;min-width:0}

/* Existing palette and text assets; no new imagery or game layout changes. */
#loadingScreen{isolation:isolate;overflow:auto;background:#17180f;color:#f3dda0;padding:max(24px,env(safe-area-inset-top)) 24px max(24px,env(safe-area-inset-bottom));font-family:-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Malgun Gothic",sans-serif}
#loadingScreen .loading-content{width:min(440px,calc(100vw - 48px));min-width:0;margin:auto;line-height:1.6}
#loadingScreen h1{font-family:Galmuri11,monospace;margin:8px 0 24px;line-height:1.3;font-size:clamp(28px,8vw,40px)}
#loadingScreen .loading-eyebrow{color:#bb9c5d;letter-spacing:.16em;font-size:12px}
#loadingStage{font-weight:700;margin:12px 0 8px}#loadingBytes{color:#c9bea3;font-size:13px;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
#loadingProgress{display:block;width:100%;height:16px;accent-color:#d4ad56}#loadingTip{min-height:3.2em;color:#d4c8a9;font-size:13px;word-break:keep-all;overflow-wrap:break-word}
#loadingError{color:#f0af99;white-space:pre-wrap;overflow-wrap:anywhere}#loadingError[hidden],#loadingTip[hidden],#loadingProgress[hidden]{display:none!important}
#loadingRecovery:empty{display:none}#loadingRecovery{max-height:70dvh;overflow:auto;overscroll-behavior:contain}
#loadingRecovery>#sourceFiles,#loadingRecovery>#msg{position:static!important;inset:auto!important;width:100%;padding:12px 0;background:transparent;max-height:none;white-space:pre-wrap;text-align:left;transform:none;box-sizing:border-box}
#loadingRecovery>#sourceFiles{display:block!important}#loadingRecovery>#sourceFiles[hidden]{display:none!important}#loadingRecovery>#sourceFiles>.mode-card{width:100%;padding:12px;max-height:none}
#loadingRecovery>#msg{flex-direction:column;align-items:stretch;gap:12px}#loadingRecovery button,#loadingRecovery input{max-width:100%;box-sizing:border-box}

/* Short touch landscapes retain the fitted field and pause behind a rotation instruction. */
.rotate-screen{position:fixed;inset:0;z-index:80;display:flex;align-items:center;justify-content:center;padding:24px;background:#17180f;color:#f3dda0;text-align:center}.rotate-screen[hidden]{display:none}.rotate-screen>div{max-width:400px}.rotate-screen h2{font:24px/1.5 Galmuri11,monospace;margin:0 0 16px}.rotate-screen p{font:16px/1.7 system-ui;margin:0}.rotate-screen:focus{outline:none}html[data-rotation-blocked=true] #gameApp{visibility:hidden;pointer-events:none}html:not([data-load-state=ready]) #rotateScreen{visibility:hidden;pointer-events:none}

/* Portrait tablets use the available width while keeping the approved fixed camera. */
@media(min-width:600px) and (max-width:900px) and (orientation:portrait){.app,.app[data-mode=classic],.app[data-simple-ui=true]{width:100%;max-width:none;margin:0;box-shadow:none}}

.placement-loupe{position:absolute;z-index:8;pointer-events:none;background:#1a2015;border:2px solid #d9bd65;box-shadow:0 3px 12px #0009;box-sizing:border-box;color:#ffe5a0;text-align:center}.placement-loupe[hidden]{display:none}.placement-loupe canvas{display:block;width:100%;height:auto;image-rendering:pixelated}.placement-loupe span{display:block;font-size:12px;line-height:20px}
.app[data-small-placement=true] #placementConfirm{position:fixed;left:50%;bottom:max(8px,env(safe-area-inset-bottom));transform:translateX(-50%);width:min(calc(100vw - 16px),420px);z-index:40;margin:0;box-sizing:border-box;box-shadow:0 4px 20px #0009}

/* Keep a full 16px construction footprint on tall phones even while the
 * first-run guide is open; the existing bottom sheet remains scrollable. */


/* Descriptions belong to the upgrade card; only its compact action uses green raster. */
#gemUpgrades{display:flex;flex-direction:column;align-items:stretch;gap:10px}
#gemUpgrades .upgrade-option{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;min-width:0;max-width:680px;padding:12px;border:1px solid #604b30;background:#2b2117}
.upgrade-option-info{min-width:0}.upgrade-target-name{display:block;line-height:1.5;word-break:keep-all;overflow-wrap:anywhere}
#gemUpgrades .upgrade-option-info p{margin:4px 0 0;font-size:12px;font-weight:400;line-height:1.6;white-space:normal;overflow-wrap:anywhere}
#gemUpgrades .upgrade-requirement{color:var(--dim)}
#gemUpgrades .upgrade-option>button{width:auto;max-width:100%;min-width:44px;min-height:44px;justify-self:start;white-space:nowrap;line-height:1.5;padding:10px 14px;text-align:center}
@media(max-width:600px){#gemUpgrades .upgrade-option{grid-template-columns:minmax(0,1fr)}}


/* UI review: stable field, exposed source commands, and one compact control stack.
 * The same reserved row applies to preparation, selection, combat and spectating.
 * Optional information uses the existing disclosure, never the canvas dimensions. */
:root{--play-controls-height:216px;--play-phase-height:68px}
.app[data-simple-ui=true],.app[data-simple-ui=true][data-mode=classic]{grid-template-rows:44px 64px var(--play-phase-height) minmax(0,1fr)}
.app[data-simple-ui=true] main{grid-template-rows:minmax(0,1fr) var(--play-controls-height)}
.app[data-simple-ui=true] #bottomPanel{height:100%;max-height:none;min-height:0;display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-width:thin;scroll-padding:0}
.app[data-simple-ui=true] #bottomPanel>*{flex-shrink:0}
.app[data-simple-ui=true] #gemPanel{padding:1px 10px;gap:2px;min-height:0;flex-direction:column;align-items:stretch}
.app[data-simple-ui=true] .bp-info{display:contents}
.app[data-simple-ui=true] .bp-name{min-height:44px;height:44px;margin:0;flex-direction:row;flex-wrap:nowrap;align-items:center;gap:6px}
.app[data-simple-ui=true] .bp-name>b{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;line-height:18px}
.app[data-simple-ui=true] #gemPanel[data-selection-sheet=true] .bp-name>.gem-meta,
.app[data-simple-ui=true] #gemPanel[data-selection-sheet=true][data-combat-card] .bp-name>.gem-meta[open]{flex:0 0 auto;width:auto;margin:0 0 0 auto;align-self:center}
.app[data-simple-ui=true] #gemPanel[data-selection-sheet=true] .bp-name .gem-meta>summary{min-height:44px;height:44px;padding:12px 8px 4px;line-height:18px;font-size:12px}
.app[data-simple-ui=true] .bp-actions{display:grid;grid-template-columns:repeat(3,minmax(0,120px)) 44px;width:100%;max-width:none;gap:6px;justify-content:start}
.app[data-simple-ui=true] .bp-actions>button{width:100%;max-width:120px;min-width:0;min-height:44px;height:44px;padding:4px 6px;line-height:18px;font-size:12px;white-space:nowrap}
.app[data-simple-ui=true] .bp-actions>#gemDeselect{grid-column:4;grid-row:1;min-width:44px;width:44px;height:44px;align-self:center}
.app[data-simple-ui=true] .bp-actions>button[data-disabled-reason]:not([data-reason-in-text=true])::after{display:none}
.app[data-simple-ui=true] .gem-detail-body>.bp-actions{grid-template-columns:repeat(auto-fit,minmax(110px,1fr))}
.app[data-simple-ui=true] .gem-detail-body>.bp-actions>button{max-width:none}
#roundTray{padding:1px 10px;min-height:0;position:relative}
.round-heading,.app[data-selected=true] .round-heading{display:flex;height:16px;margin:0 12px;padding:0 4px;line-height:16px;background:#251c13}
.round-slots{grid-template-columns:repeat(5,minmax(44px,1fr));gap:6px;justify-content:start}
.round-slot{height:44px;min-height:44px}
.slot-gem{width:40px;height:40px}
.round-slot[aria-pressed=true]{outline:2px solid #f3d57e;outline-offset:-3px;transform:none}
.slot-combination{left:4px;bottom:4px;right:auto;max-width:calc(100% - 12px);padding:1px 3px;font-size:12px;line-height:12px;white-space:nowrap}
.slot-number{right:5px;bottom:4px;font-size:12px;line-height:14px}
.slot-grade{left:5px;top:4px;font-size:12px}
.hand-combination-notice,.round-slots-help{position:absolute;width:1px;height:1px;padding:0;margin:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
.research-shortcut{position:relative;padding:0 8px;gap:0 6px;grid-template-columns:minmax(0,1fr) 44px 60px}
#quickResearch{height:44px;min-height:44px;padding:4px 10px;white-space:nowrap;font-size:12px;line-height:18px}
#quickResearch[data-disabled-reason]{padding:4px 10px}
.research-shortcut>.button-disabled-reason{grid-column:1/-1;grid-row:2;position:static;align-self:auto;min-width:0;max-width:100%;height:14px;padding:0 2px;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;line-height:14px;color:#e0d1b7}
.research-shortcut>#quickResearchDetail{grid-row:3}
.research-shortcut button{height:44px;padding:4px 6px;font-size:12px}
.app[data-simple-ui=true] button[data-skin-source]:disabled{filter:saturate(.15) brightness(.65);color:#f4e9d3;cursor:not-allowed}
.app[data-simple-ui=true] .phasebar{position:relative;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:24px 44px;height:var(--play-phase-height);min-height:0;gap:0;padding:0 8px}
.phone-wave-preview{display:block;grid-column:1;grid-row:1;min-width:0;height:24px;margin:0;padding:3px 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;line-height:18px}
.phasebar>.route-legend{grid-row:2;min-width:0;min-height:44px;height:44px;font-size:12px;align-items:center}
.phasebar[data-guide-active=true]>.route-legend{display:none}
.phasebar>.first-run-guide{grid-row:2;display:flex;align-items:center;min-width:0;height:44px;min-height:0;margin:0;padding:0;gap:8px;border:0;background:transparent}
.first-run-guide-head{display:contents}
.first-run-guide-head strong{flex:none;margin:0;font-size:12px;line-height:14px}
.first-run-guide p{flex:1;min-width:0;order:1;max-height:36px;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;white-space:normal;font-size:12px;line-height:18px}
.first-run-guide-head button{order:2;flex:none;min-height:44px;padding:4px 6px;font-size:12px}
#playPhase>#actionFeedback{position:static;grid-column:1;grid-row:1;inset:auto;transform:none;width:100%;max-width:none;min-width:0;height:24px;padding:0;border:0;border-radius:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:#302419;color:#f1dfb8;font-size:12px;line-height:24px;z-index:4;pointer-events:none}
.hud-pill>b.tutorial-target{outline:none;outline-offset:0;box-shadow:inset 0 -2px #f2d47d;color:#ffe49b}
.app[data-simple-ui=true] .gem-detail-body .gem-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;max-width:none;padding:8px 0}
.app[data-simple-ui=true] .gem-detail-body .gem-stats .stat{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;min-width:0;min-height:32px;padding:0;gap:6px}
.app[data-simple-ui=true] .gem-detail-body .gem-stats .stat>span{flex:0 0 24px;width:24px;min-width:24px;gap:0}
.app[data-simple-ui=true] .gem-detail-body .gem-stats .stat>span>.ui-pixel-icon{width:24px;height:24px}
.app[data-simple-ui=true] .gem-detail-body .gem-stats b{font-size:13px;line-height:20px;white-space:nowrap;font-variant-numeric:tabular-nums}
#menuPanelSettings>.precise-placement{width:100%;padding:8px;min-height:48px;cursor:pointer;touch-action:manipulation}
@media(min-width:901px), (min-width:700px) and (min-height:500px) and (orientation:landscape){
 .app[data-simple-ui=true] main{grid-template-rows:minmax(0,1fr)}
 .app[data-simple-ui=true] #bottomPanel{height:100%;max-height:none;padding-bottom:12px}
 .round-slots{grid-template-columns:repeat(5,64px);justify-content:start;gap:8px}
 .round-slot{height:56px}.slot-gem{width:48px;height:48px}
 .app[data-simple-ui=true] #gemPanel{padding:8px 12px;min-height:0;gap:8px}
 .app[data-simple-ui=true] .bp-name>b{font-size:16px}
 .app[data-simple-ui=true] #gemPanel[data-selection-sheet=true] .gem-detail-body{position:fixed;left:var(--selection-sheet-left,0px);right:auto;bottom:var(--selection-sheet-bottom,58px);width:var(--selection-sheet-width,480px);max-height:min(var(--selection-sheet-max-height,40dvh),440px);min-height:0;margin:0;overflow:auto;padding:12px 14px 16px;box-shadow:0 -12px 24px #0006}
 .app[data-simple-ui=true] #selectionSheetHandle{display:block}
 .next-wave-preview{min-height:0;grid-template-columns:40px minmax(0,1fr);gap:10px;margin:8px 12px;padding:10px 0}
 .next-wave-preview>canvas{width:40px;height:40px}.next-wave-preview h2{font-size:12px;margin:0 0 3px}.next-wave-preview strong{font-size:14px}.next-wave-preview p{font-size:12px;line-height:1.4;margin:3px 0}
}

.round-slots.tutorial-target{outline-offset:-2px}
.next-wave-preview[hidden]{display:none!important}
@media(max-width:600px){.first-run-guide-head strong{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}}

/* Recheck: a single caption row and fixed action slots, including sparse hands. */
#playPhase>#actionFeedback[hidden]{display:none}
#playPhase[data-notice-active=true]>#phoneWavePreview{visibility:hidden}
.app[data-simple-ui=true] .bp-actions>#castA009{grid-column:1;grid-row:1}
.app[data-simple-ui=true] .bp-actions>#castA007{grid-column:2;grid-row:1}
.app[data-simple-ui=true] .bp-actions>#castA00R{grid-column:3;grid-row:1}
.app[data-simple-ui=true] .gem-detail-body>.bp-actions>#castA009,.app[data-simple-ui=true] .gem-detail-body>.bp-actions>#castA007,.app[data-simple-ui=true] .gem-detail-body>.bp-actions>#castA00R{grid-column:auto;grid-row:auto}

/* PC disclosure stays inside the existing right scroll column, below commands.
 * Mobile keeps its tested fixed sheet and the shared battlefield geometry. */
.app[data-simple-ui=true] #gemPanel[data-desktop-card=true]>.gem-meta,
.app[data-simple-ui=true] #gemPanel[data-desktop-card=true]>.gem-meta[open]{position:static;display:block;flex:0 0 auto;width:100%;max-height:none;margin:0;padding:0;overflow:visible}
.app[data-simple-ui=true] #gemPanel[data-desktop-card=true]>.gem-meta>summary{position:sticky;top:0;z-index:5;display:list-item;list-style:disclosure-closed inside;min-height:44px;height:44px;padding:12px 10px 4px;border:1px solid #735a36;background:#32271b;font-size:12px;line-height:18px}
.app[data-simple-ui=true] #gemPanel[data-desktop-card=true]>.gem-meta[open]>summary{list-style:disclosure-open inside}
.app[data-simple-ui=true] #gemPanel[data-desktop-card=true]>.gem-meta>summary::before{display:none}
.app[data-simple-ui=true] #gemPanel[data-desktop-card=true][data-selection-sheet=true]>.gem-meta>.gem-detail-body{position:relative;z-index:0;inset:auto;width:100%;max-height:none;min-height:0;margin:0;padding:16px 16px 24px;overflow:visible;box-shadow:none;border-radius:0;scroll-padding:0}
.app[data-simple-ui=true] #gemPanel[data-desktop-card=true] #selectionSheetHandle{display:none}
.app[data-simple-ui=true] #gemPanel[data-desktop-card=true] .gem-detail-body>.stat{display:flex;justify-content:space-between;align-items:center;gap:12px;min-height:32px;padding:6px 0;line-height:20px}

/* Each raster belongs to its own positioned detail surface. On phones, show
 * the attack/range/interval row before the large portrait so the half-field
 * sheet exposes all three numbers immediately, including a360px viewport.
 * The original scroll body and swipe handle retain their existing behavior. */
.app[data-simple-ui=true] #gemPanel[data-desktop-card=false][data-selection-sheet=true] .gem-detail-body{min-height:0;overflow:auto}
.app[data-simple-ui=true] #gemPanel[data-desktop-card=false][data-selection-sheet=true] .gem-detail-body>.gem-stats{order:-3;flex-shrink:0}
.app[data-simple-ui=true] #gemPanel[data-desktop-card=false][data-selection-sheet=true] .gem-detail-body>#selectedUnitArt{order:-2}

/* The approved raster increased the phone body inset from12px to20px.
 * Compensate that entire inset at the existing sticky handle so scrolled
 * content cannot paint through the old8px gap above it. PC flow is unchanged. */
.app[data-simple-ui=true] #gemPanel[data-desktop-card=false][data-selection-sheet=true] .gem-detail-body.skin-framed{padding-top:20px}
.app[data-simple-ui=true] #gemPanel[data-desktop-card=false][data-selection-sheet=true] .gem-detail-body>#selectionSheetHandle{top:-20px;margin-top:-20px}

/* The bottom20px are already reserved inside the mobile frame. Reuse its
 * approved72px source slices at the same18px decoded border size over the
 * outgoing scroll content, keeping the existing top handle above this edge.
 * This non-interactive sticky decoration does not change the viewport size. */
.app[data-simple-ui=true] #gemPanel[data-desktop-card=false][data-selection-sheet=true] .gem-detail-body.skin-framed::after{content:'';position:sticky;bottom:-20px;z-index:2;order:99;align-self:stretch;flex:0 0 20px;box-sizing:border-box;width:calc(100% + 40px);min-height:20px;height:20px;margin:0 -20px -20px;pointer-events:none;background:#2b2117;border-style:solid;border-color:transparent;border-width:0 18px 18px;border-image-source:url(./assets/ui/approved/frame-panel.png);border-image-slice:72;border-image-width:0 18px 18px 18px;border-image-repeat:stretch;image-rendering:pixelated}

/* I: results use the existing framed walnut card; no gameplay-sized layout changes. */
.app[data-outcome=true] #bottomPanel,.app[data-outcome=true] #researchShortcut{visibility:hidden;pointer-events:none}
.game-over{position:fixed;inset:0;z-index:40;overflow-y:auto;padding:16px;overscroll-behavior:contain;align-items:safe center}
.game-over>.result-card{width:min(560px,100%);max-height:calc(100dvh - 32px);overflow:auto;padding:24px;display:flex;flex-direction:column;gap:10px;text-align:left;scrollbar-width:thin}
.result-card h2{margin:0;font-size:20px}.result-wave{font-size:clamp(32px,8vw,48px);line-height:1.1;margin:0;color:#f3d383;font-weight:800}
#goSummary{font-size:12px;line-height:1.6;margin:0}#goCause,#goRecord{font-size:13px;line-height:1.6;margin:0;word-break:keep-all;overflow-wrap:anywhere}
.result-medal{align-self:flex-start;background:#54431e;border:1px solid #c2a45e;padding:4px 8px;margin:0;color:#f4d87b;font-size:13px}.result-medal[hidden]{display:none}
#goMetrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:0}#goMetrics>div{padding:10px;border-top:1px solid #6c5432;min-width:0}#goMetrics>div:last-child{grid-column:1/-1}#goMetrics dt{font-size:12px;color:#c0ae8a}#goMetrics dd{margin:4px 0 0;font-size:16px;overflow-wrap:anywhere}
.result-card h3{font-size:13px;margin:0}#goTop{padding:0;margin:0;list-style:none}#goTop li{display:flex;justify-content:space-between;gap:10px;font-size:12px;line-height:1.6;padding:4px 0}#goTop li>span{min-width:0;overflow-wrap:anywhere}#goTop li>b{white-space:nowrap}
#goActions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}#goActions button{min-height:44px;font-size:13px}#goRestart{grid-column:1/-1}#goShareStatus{min-height:0;margin:0;font-size:12px}#goShareURL{max-width:100%;width:100%;min-height:44px;font-size:12px}
#personalRecords{margin-top:12px;border-top:1px solid #705332}#personalRecords>summary{min-height:44px;padding:12px 0;cursor:pointer;font-size:13px}#personalRecordsList{font-size:13px;line-height:1.7;overflow-wrap:anywhere}#startDaily,#startupDaily{min-height:44px;width:100%;font-size:13px;margin-top:8px}
@media(max-height:600px){.game-over{align-items:flex-start}.game-over>.result-card{max-height:calc(100dvh - 32px)}}

.game-over>.result-card.skin-framed::after{content:'';position:sticky;bottom:-24px;z-index:2;order:99;flex:0 0 24px;box-sizing:border-box;width:calc(100% + 48px);min-height:24px;height:24px;margin:0 -24px -24px;pointer-events:none;background:#2b2117;border-style:solid;border-color:transparent;border-width:0 18px 18px;border-image-source:url(./assets/ui/approved/frame-panel.png);border-image-slice:72;border-image-width:0 18px 18px 18px;border-image-repeat:stretch;image-rendering:pixelated}

/* J: short, nonblocking source confirmations, inside the established shell. */
.damage-option{display:flex;gap:10px;align-items:center;min-height:48px;padding:8px 0;font-size:13px;cursor:pointer}.damage-option input{width:24px;height:24px}
.hud-pill[title=골드]{position:relative}.gold-gain{position:absolute;left:0;top:100%;z-index:5;white-space:nowrap;font-size:12px;line-height:18px;color:#f2d27d;background:#302419;padding:0 4px;pointer-events:none}.gold-gain[hidden]{display:none}
.app[data-celebration=true] #battlefield{outline:2px solid var(--celebration-color,#dbc783);outline-offset:-3px}.app[data-celebration=true] #actionFeedback{font-size:14px;font-weight:700}
.app[data-life-edge=true] #battlefield::after{content:'';position:absolute;inset:0;z-index:38;pointer-events:none;border:2px solid #df927e}.app[data-life-edge=true] #hudLife{animation:life-jolt .3s ease-out}
.wave-attention[data-kind=wave-start]{font-weight:700;color:#f1d48b}
@keyframes life-jolt{0%,100%{transform:translateX(0)}25%{transform:translateX(-2px)}75%{transform:translateX(2px)}}
@media(prefers-reduced-motion:reduce){.app[data-life-edge=true] #hudLife{animation:none}}

/* K: preserve larger controls and the original small-cell game input. */
:where(.app summary){min-height:44px}
.app{user-select:none;-webkit-user-select:none}.app input,.app textarea{user-select:text;-webkit-user-select:text}
.precise-placement,.damage-option,.sound-volume{min-height:44px}

.daily-note{font-size:12px;line-height:1.6;color:var(--dim);word-break:keep-all}

/* Final review F2: setup gets the same viewport-based modal as results.
 * Keep the existing board dimensions. The daily action is a fixed card child;
 * short screens scroll only the inset body, so text cannot cross the frame. */
#modeSelect{position:fixed;inset:0;z-index:40;padding:16px;align-items:safe center}
#modeSelect>.mode-card{display:flex;flex-direction:column;max-height:calc(100dvh - 32px);min-height:0;overflow:hidden;gap:8px}
#modeSelect>.mode-card>.eyebrow,#modeSelect>.mode-card>h2,#startupDaily{flex-shrink:0}
#modeSelect .mode-card-scroll{min-height:0;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;padding:2px 4px 12px;margin:0 -4px}
#modeSelect .mode-card-scroll>.mode-note{margin-bottom:0}
#modeSelect #startupDaily{order:-1;margin:0;min-height:44px}
.field-daily{position:static;flex:none;min-height:44px;padding:8px 12px;font-size:13px;background:#2b2117}
.app[data-simple-ui=true] #gemNone{flex-direction:row;align-items:center;justify-content:space-between;gap:8px}
.app[data-simple-ui=true] #gemNone>span{flex:1;min-width:0}
.field-daily[hidden]{display:none}
#startDaily{margin-top:12px}

.precise-placement input,.damage-option input{accent-color:#d5b568}

/* Supplied C art is decorative; native labels and all input targets stay intact. */
.c-key-scene{isolation:isolate;overflow:hidden}
.c-key-portrait{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;z-index:-2;pointer-events:none}
.c-key-scene::before{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(#070e12ef 0%,#0a1419cc 30%,#0d171777 65%,#0d1717cc 100%);pointer-events:none}
#loadingScreen.c-key-scene .loading-content{position:relative}
#modeSelect.c-key-scene>.mode-card{position:relative;background:#2b2117e8}
.c-title-emblem{display:block;width:100px;height:82px;max-width:100%;margin:0 auto 8px;flex-shrink:0;image-rendering:pixelated;pointer-events:none}
.brand[data-c-art=true]>svg{display:none}.brand>canvas{flex:none;image-rendering:pixelated;pointer-events:none}
.c-result-banner{position:relative;width:min(100%,300px);aspect-ratio:468/192;flex-shrink:0;margin:0 auto}
.c-result-banner>canvas{display:block;width:100%;height:100%;image-rendering:pixelated;pointer-events:none}
.c-result-banner>h2{position:absolute;inset:0;display:grid;place-items:center;padding:0 22%;text-align:center;color:#21180e;text-shadow:0 1px #f4dfa7;font-size:20px;line-height:1.3}
#gameOver[data-outcome=defeat] .c-result-banner>h2{color:#f4e5bb;text-shadow:1px 1px #171b1c}
[data-c-icon]{position:relative}
[data-c-icon]::before{content:'';display:inline-block;width:20px;height:24px;vertical-align:middle;margin-right:4px;background:var(--c-icon) center/contain no-repeat;image-rendering:pixelated;pointer-events:none}
button[data-c-icon]{padding-inline-start:32px}
button[data-c-icon]::before{position:absolute;left:7px;top:50%;transform:translateY(-50%);margin:0}
#castA009[data-c-icon]{padding-inline-start:25px}#castA009[data-c-icon]::before{left:3px;width:18px}
#goMedal[data-c-icon=medal]{padding:0;background:none;border:0;min-height:42px;display:flex;align-items:center;align-self:flex-start}
#goMedal[data-c-icon=medal]::before{width:36px;height:42px}
#goMedal[hidden]{display:none}

#quickResearch[data-c-icon],#rsR000Btn[data-c-icon],#rsR001Btn[data-c-icon],#rsR002Btn[data-c-icon],#feedbackSound[data-c-icon],#goShare[data-c-icon]{padding-inline-start:34px}

.c-result-banner>h2{color:#f4e5bb;text-shadow:1px 1px #171b1c}
#gameOver[data-outcome=clear] .c-result-banner>canvas[data-c-art-ready=true]+h2{color:#21180e;text-shadow:0 1px #f4dfa7}
