:root{--bg:#162019;--panel:#29382e;--line:#2d4557;--text:#edf5f8;--muted:#9eb1be;--blue:#5bc3ff;--red:#ff6969;--gold:#ffd66a;--green:#71d193;--purple:#b798ff}

[hidden]{display:none!important}

*{box-sizing:border-box}
html,body{margin:0;width:100%;height:100%;overflow:hidden;overscroll-behavior:none;background:var(--bg);color:var(--text);font-family:Inter,Pretendard,"Noto Sans KR",system-ui,sans-serif}
button,select,input,textarea{font:inherit}
button{cursor:pointer;-webkit-tap-highlight-color:transparent}
button:disabled{cursor:not-allowed}
#app{min-width:0;grid-template-columns:minmax(0,1fr);height:100vh;height:100dvh;display:grid;grid-template-rows:54px minmax(0,1fr) 26px;background:#08111a}
.topbar{display:grid;grid-template-columns:250px 1fr 1.2fr 1fr auto;gap:8px;align-items:center;padding:6px 8px;background:#25342c;border-bottom:1px solid #746b50;z-index:20}
.brand{min-width:0;display:flex;flex-direction:column}
.brand strong{font-size:13px;white-space:nowrap}
.brand .build{font-size:8px;color:#7892a3;margin-top:2px}
.hud-team{min-width:0;display:grid;grid-template-columns:auto 46px;gap:2px 6px;align-items:center;font-size:9px}
.hud-team b{text-align:right;font-size:11px}
.hud-team .bar{grid-column:1/3;height:4px;border-radius:5px;background:#273643;overflow:hidden}
.hud-team .bar i{display:block;height:100%;width:100%}
.hud-team.blue .bar i{background:var(--blue)}
.hud-team.red .bar i{background:var(--red)}
.hud-center{display:flex;justify-content:center;align-items:center;gap:7px;font-size:10px;font-weight:800}
.resource{border:1px solid #355165;background:#132331;border-radius:7px;padding:5px 8px}
.resource.en{color:#aee2ff}
.resource.mp{color:#d3c0ff}
.top-actions{display:flex;gap:4px;align-items:center}
.top-actions select,.top-actions button{background:#172532;color:#eef5fb;border:1px solid #35516a;border-radius:7px;padding:6px 7px;font-size:10px}
.top-actions button:hover{background:#22384a}
.battle-shell{min-width:0;min-height:0;display:grid;grid-template-rows:minmax(0,1fr) auto;}
.stage-wrap{position:relative;min-height:0;background:#000;overflow:hidden}
#game{width:100%;height:100%;display:block;touch-action:none;background:#101820}
#game.targeting{cursor:crosshair}
.toast{position:absolute;top:12px;left:50%;transform:translateX(-50%);padding:8px 14px;border-radius:9px;background:#07111df2;border:1px solid #66839a;box-shadow:0 5px 20px #0009;font-size:11px;z-index:16;pointer-events:none}
.lane-legend{position:absolute;left:10px;top:10px;z-index:7;display:flex;gap:7px;padding:5px 8px;border:1px solid #436077;border-radius:8px;background:#07121bc7;font-size:9px;color:#d8e4eb}
.lane-legend span{display:flex;align-items:center;gap:4px}
.lane-dot{width:8px;height:3px;border-radius:4px;display:inline-block}
.lane-dot.top{background:#7de4ff}
.lane-dot.center{background:#ffe08a}
.lane-dot.bottom{background:#b8a1ff}
.synergy-strip{position:absolute;left:10px;top:42px;z-index:7;display:flex;gap:5px;flex-wrap:wrap;max-width:55%;pointer-events:none}
.synergy-chip{padding:4px 7px;border-radius:999px;background:#10241dd9;border:1px solid #4c9a70;color:#b9ffd0;font-size:9px;box-shadow:0 2px 9px #0007}

.response-bar{position:absolute;z-index:15;top:10px;left:50%;transform:translateX(-50%);width:min(410px,72%);padding:8px;border-radius:10px;background:#2a1117ef;border:1px solid #d06767;box-shadow:0 8px 28px #000a}
.response-title{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:8px;font-size:9px}
.response-title b{color:#ffd1c9;letter-spacing:.6px}
.response-title span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.response-title strong{color:#fff3ad}
.response-track{height:4px;margin:6px 0;background:#512c31;border-radius:6px;overflow:hidden}
.response-track i{display:block;height:100%;background:#ffb165;width:100%}
.response-bar button{width:100%;padding:5px 8px;border:1px solid #c66c65;border-radius:7px;background:#5a2528;color:#fff;font-size:9px;font-weight:800}
.response-bar button:disabled{opacity:.38}
.target-hint{position:absolute;z-index:14;left:50%;bottom:12px;transform:translateX(-50%);display:flex;gap:8px;align-items:center;padding:7px 9px;border:1px solid #63b8d7;border-radius:9px;background:#08202be8;box-shadow:0 6px 20px #0009;font-size:10px}
.target-hint button{padding:4px 7px;border-radius:6px;border:1px solid #526d7d;background:#172936;color:#fff;font-size:9px}

.point-menu,.choice-panel{position:absolute;z-index:11;width:185px;padding:8px;background:#0d1823f3;border:1px solid #55718a;border-radius:10px;box-shadow:0 8px 25px #000a}
.point-menu-title{font-weight:800;margin-bottom:6px}
.point-menu button,.choice-body button{width:100%;display:flex;justify-content:space-between;align-items:center;margin:3px 0;padding:7px 8px;border:1px solid #334b5f;border-radius:7px;color:#f3f6f8;background:#1a2a37;font-size:10px}
.point-menu button:hover,.choice-body button:hover{background:#29465b}
.point-menu small{color:#ffd269}
.choice-panel{width:min(320px,92vw);left:50%;top:50%;transform:translate(-50%,-50%)}
.choice-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}
.choice-head button{width:25px;height:25px;border-radius:6px;border:1px solid #40576a;background:#172532;color:#fff}
.choice-note{font-size:9px;color:#aebfcb;line-height:1.4;margin:4px 1px 8px}
.choice-body{max-height:360px;overflow:auto;padding-right:2px}


.editor-panel p,.editor-note{margin:0 0 8px;font-size:9px;line-height:1.45;color:#afc1cf}
.editor-panel label{display:grid;grid-template-columns:auto 1fr;gap:7px;align-items:center;font-size:9px;color:#c8d7df}
.editor-panel select{width:100%;padding:5px;background:#142532;color:#fff;border:1px solid #3f5b70;border-radius:6px}
.editor-row{display:flex;gap:5px;margin-top:5px}
.editor-row button{flex:1;padding:6px;border:1px solid #38566f;border-radius:7px;background:#192b39;color:#fff;font-size:9px}
@keyframes counterPulse{to{transform:translateY(-3px)}
}
.statusbar{height:26px;display:flex;align-items:center;justify-content:space-between;padding:0 9px;background:#091118;border-top:1px solid #1f3545;font-size:9px;color:#aebdc8}
.legend{display:flex;align-items:center;gap:5px}
.dot{width:8px;height:8px;border-radius:50%;display:inline-block}
.dot.blue{background:var(--blue)}
.dot.red{background:var(--red)}
.dot.neutral{background:#aaa}

.modal{position:fixed;inset:0;z-index:30;background:#02060bbb;display:flex;align-items:center;justify-content:center;padding:18px}
.modal-card{width:min(760px,95vw);max-height:94dvh;overflow:auto;background:#0f1a24;border:1px solid #49657b;border-radius:14px;box-shadow:0 18px 60px #000c;padding:8px}
.wide-modal{width:min(980px,96vw)}
.deck-modal{width:min(820px,96vw)}
.modal-head{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #2d4355;padding-bottom:8px;margin-bottom:10px}
.modal-head div{display:flex;flex-direction:column}
.modal-head strong{font-size:17px}
.modal-head small{font-size:12px;color:#aec3d0}
.modal-head button{width:30px;height:30px;border-radius:7px;border:1px solid #445b6d;background:#172532;color:#fff}
.editor-grid{display:flex;flex-wrap:wrap;gap:6px;align-items:end}
.editor-grid label,.rule-controls label{min-width:0;display:grid;gap:3px;font-size:13px;color:#d6e6f0;white-space:normal;line-height:1.25}.editor-grid label{flex:0 1 104px}.editor-grid label:has(#cardEditSelect){flex:1 1 190px}.editor-grid label:has(#editUnitClass),.editor-grid label:has(#editAiProfile){flex:1 1 145px}.editor-grid label:has(#editSkillName),.editor-grid label:has(#editSkillEffect),.editor-grid label:has(#editUltName),.editor-grid label:has(#editUltEffect){flex:1 1 165px}
.editor-grid input,.editor-grid select,.rule-controls input,.rule-controls select,.deck-toolbar input,.deck-toolbar select{display:block;min-width:0;width:100%;height:34px;margin-top:0;padding:4px 7px;background:#0b151d;color:#fff;border:1px solid #385469;border-radius:6px;font-size:14px}
.editor-description{min-height:24px;margin-top:5px;padding:4px 6px;border-radius:6px;background:#0a141c;color:#aebfca;font-size:10px;line-height:1.35}
.modal-actions{display:flex;gap:6px;margin-top:5px;flex-wrap:wrap}
.modal-actions button{padding:7px 10px;border:1px solid #3f5b70;border-radius:7px;background:#193045;color:#fff;font-size:9px}
.modal-actions .danger{border-color:#754747;background:#351d23}
.modal textarea{width:100%;height:110px;margin-top:8px;padding:8px;resize:vertical;background:#071119;color:#cde2ee;border:1px solid #324b5d;border-radius:8px;font:10px ui-monospace,SFMono-Regular,Consolas,monospace}
.rule-editor{margin-top:6px;padding:5px;border:1px solid #2f4658;border-radius:7px;background:#0b151e}.rule-editor>summary,.card-json-details>summary{cursor:pointer;font-size:11px;font-weight:700;color:#d4ebf9;padding:3px}.card-json-details:not([open]) textarea{display:none}
.rule-controls{display:grid;grid-template-columns:repeat(8,minmax(0,1fr)) auto;gap:4px;align-items:end}
.rule-controls button{height:30px;padding:0 6px;border:1px solid #43677c;border-radius:6px;background:#1b3a4b;color:#fff;font-size:10px}
.rule-list{margin-top:7px;display:grid;gap:4px}
.rule-row{display:grid;grid-template-columns:1.1fr 1.1fr 1fr 1.2fr auto;gap:6px;align-items:center;padding:6px;border-radius:7px;background:#111f2a;border:1px solid #2d4556;font-size:8px}
.rule-row b{color:#d6eeff}
.rule-row button{padding:4px 6px;border:1px solid #704949;border-radius:5px;background:#351e23;color:#ffdede;font-size:8px}
.empty-rule{padding:8px;text-align:center;color:#718896;font-size:9px;border:1px dashed #334b5d;border-radius:7px}

.deck-toolbar{display:grid;grid-template-columns:1.2fr .7fr 1fr;gap:8px;align-items:end}
.deck-count{height:35px;display:flex;flex-direction:column;align-items:flex-end;justify-content:center}
.deck-count b{font-size:15px}
.deck-count b.ok{color:#8eebb0}
.deck-count b.bad{color:#ff9f9f}
.deck-count span{font-size:8px;color:#9eb0bc}
.deck-list{margin-top:9px;display:grid;grid-template-columns:repeat(2,1fr);gap:5px;max-height:56vh;overflow:auto;padding-right:4px}
.deck-row{display:grid;grid-template-columns:42px 1fr 28px 28px 28px;gap:5px;align-items:center;padding:5px;border:1px solid #2c4557;border-radius:8px;background:#29382e}
.deck-row img{width:40px;height:40px;object-fit:contain;background:#09131b;border-radius:5px}
.deck-card-info{min-width:0;display:flex;flex-direction:column}
.deck-card-info b{font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.deck-card-info small{font-size:7px;color:#8fa4b2}
.deck-row button{height:26px;border:1px solid #415c70;border-radius:6px;background:#172b39;color:#fff}
.deck-row>strong{text-align:center;font-size:10px}

@media(max-width:1180px){.topbar{grid-template-columns:1fr .9fr 1.2fr .9fr auto}
.brand{display:none}
.top-actions #dataEditorBtn{display:none}
.rule-controls{grid-template-columns:repeat(4,1fr)}
}


/* V4 canonical editors */
.rule-controls{grid-template-columns:repeat(4,minmax(90px,1fr));}

.deck-toolbar-v4{grid-template-columns:1.3fr .72fr .72fr .62fr 1.15fr;}

.deck-slot-bar{display:grid;grid-template-columns:130px auto auto 1fr;gap:6px;align-items:center;margin-top:7px;padding:7px;border:1px solid #2c4557;border-radius:8px;background:#25342c}

.deck-slot-bar select,.deck-slot-bar button{height:31px;padding:5px 8px;border:1px solid #3a566b;border-radius:7px;background:#152735;color:#fff;font-size:9px}
.deck-slot-bar span{font-size:8px;color:#8fa5b4;text-align:right}
.deck-card-info em{font-size:6px;color:#64879d;font-style:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}

.animation-modal{width:min(1040px,96vw)}
.animation-layout{display:grid;grid-template-columns:350px minmax(0,1fr);gap:12px}
.animation-controls{display:grid;grid-template-columns:1fr 1fr;gap:7px;padding:9px;border:1px solid #2f485a;border-radius:10px;background:#25342c}
.animation-controls label{font-size:9px;color:#aec1cd}
.animation-controls input,.animation-controls select{display:block;width:100%;margin-top:3px;padding:7px;background:#09131b;color:#fff;border:1px solid #385469;border-radius:7px}
.animation-controls .animation-source-field{grid-column:1/-1}
.animation-preview-wrap{min-width:0;display:flex;flex-direction:column;gap:6px}
.animation-preview-wrap canvas{display:block;width:100%;height:auto;max-height:340px;border:1px solid #385469;border-radius:10px;background:#09131b}
.animation-preview-info{min-height:26px;padding:6px 8px;border:1px solid #2f485a;border-radius:7px;background:#0b1821;color:#d6ebf7;font-size:9px}
.animation-help{padding:8px;border-radius:8px;background:#111a24;color:#8fa7b6;font-size:9px;line-height:1.45}

@media(max-width:1180px){.top-actions #animationEditorBtn{display:none}
.deck-toolbar-v4{grid-template-columns:1fr 1fr 1fr}
.deck-toolbar-v4 .deck-count{grid-column:auto}
.animation-layout{grid-template-columns:300px 1fr}
}

@media(max-width:1180px){.rule-controls{grid-template-columns:repeat(3,minmax(90px,1fr))}
}


.deck-save-invalid{border-color:#8a4c4c!important;background:#311c22!important;color:#ffb8b8!important}
.deck-save-valid{border-color:#3f8060!important;background:#173326!important;color:#c8ffda!important}
.formation-select,.rally-btn{height:22px;min-width:0;border:1px solid #355064;border-radius:5px;background:#0f1b25;color:#cfe3ef;font-size:7px;padding:2px 3px}
.rally-btn{cursor:pointer}
.rally-btn.active{border-color:#72d7ff;background:#173b4d;color:#aeeeff}
.diagnostics-modal{width:min(720px,95vw)}
.diagnostics-list{display:grid;grid-template-columns:1fr 1fr;gap:7px}
.diagnostic-row{display:grid;grid-template-columns:30px 1fr;gap:7px;align-items:center;padding:8px;border:1px solid #32495a;border-radius:9px;background:#0b151e}
.diagnostic-row .diagnostic-icon{width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:900}
.diagnostic-row div{min-width:0;display:flex;flex-direction:column}
.diagnostic-row b{font-size:10px}
.diagnostic-row small{font-size:8px;color:#93a9b7;line-height:1.4}
.diagnostic-row.ok{border-color:#35634a}
.diagnostic-row.ok .diagnostic-icon{background:#173829;color:#9cf0b9}
.diagnostic-row.warn{border-color:#6b5e35}
.diagnostic-row.warn .diagnostic-icon{background:#3b3217;color:#ffe08a}
.diagnostic-row.bad{border-color:#754545}
.diagnostic-row.bad .diagnostic-icon{background:#3a1d22;color:#ffaaaa}
.diagnostics-note{margin-top:8px;padding:8px;border-radius:8px;background:#0a131b;color:#91a6b4;font-size:9px;line-height:1.45}

.bulk-toolbar{display:grid;grid-template-columns:1fr 180px auto;gap:7px;align-items:center}
.bulk-toolbar input,.bulk-toolbar select{height:34px;padding:6px 8px;border:1px solid #385469;border-radius:7px;background:#09131b;color:#fff}
.bulk-toolbar span{font-size:9px;color:#9fb4c2;text-align:right}


.bulk-table thead th{position:sticky;top:0;z-index:2;background:#14232f;color:#d8e7ef;border-bottom:1px solid #39566b;padding:7px 5px;text-align:left;font-size:12px;white-space:nowrap}
.bulk-table td{padding:4px;border-bottom:1px solid #213746;background:#0c1720}
.bulk-table tr:nth-child(even) td{background:#0e1a24}





.bulk-card-title code{font-size:10px;color:#9fc4da;align-self:center;overflow:hidden;text-overflow:ellipsis}

.bulk-note{margin-top:7px;padding:8px;border-radius:8px;background:#0a141c;color:#8fa6b5;font-size:9px;line-height:1.45}

.sprite-modal{width:min(1380px,98vw);display:flex;flex-direction:column;overflow:hidden;min-height:0}
.sprite-layout{display:grid;grid-template-columns:minmax(330px,36%) minmax(0,1fr);grid-template-rows:auto minmax(0,1fr);gap:6px;flex:1;min-height:0;overflow:hidden}
.sprite-controls{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;align-content:start;padding:6px;min-height:0;overflow-y:auto;border:1px solid #2f485a;border-radius:10px;background:#25342c}
.sprite-controls label{font-size:9px;color:#aec1cd}
.sprite-controls input,.sprite-controls select{display:block;width:100%;min-width:0;margin-top:2px;padding:3px 4px;height:27px;font-size:11px;background:#09131b;color:#fff;border:1px solid #385469;border-radius:7px}
.sprite-controls .span2{grid-column:1/-1}.sprite-controls label{min-width:0;word-break:keep-all}.sprite-controls label:has(input[type=number]) input{max-width:100%;font-variant-numeric:tabular-nums}.sprite-controls .sprite-motion-size{grid-column:1/-1}
.sprite-controls button{height:29px;border:1px solid #43677c;border-radius:7px;background:#1b3a4b;color:#fff;font-size:9px}
.sprite-controls button.danger{border-color:#754747;background:#351d23}
.sprite-controls .sprite-drop-zone{min-height:38px;padding:4px;font-size:10px}.sprite-controls .sprite-detect{grid-column:1/-1;display:grid;grid-template-columns:minmax(120px,1.7fr) minmax(60px,.65fr) auto auto;gap:4px;align-items:end;min-width:0}.sprite-controls .sprite-detect label{min-width:0}.sprite-controls .sprite-detect #spriteBgTolerance{width:100%;max-width:64px}.sprite-controls .sprite-detect>p,.sprite-controls .sprite-detect>details{grid-column:1/-1;margin:0;font-size:10px}.sprite-controls .sprite-detect>details:not([open]){padding:1px 0}.sprite-extra-tools{grid-column:1/-1;min-width:0;border:1px solid #4b6879;border-radius:7px;background:#152932;padding:4px}.sprite-extra-tools>summary{cursor:pointer;font-size:11px;color:#e3f2ff;font-weight:750}.sprite-extra-body{display:grid;grid-template-columns:minmax(0,1fr);gap:5px;margin-top:6px}.sprite-extra-body .span2{grid-column:1/-1}.sprite-extra-body .sprite-card-art-panel{min-width:0}.sprite-extra-body input[type=file]{max-width:100%}
.sprite-preview-wrap{min-width:0;min-height:0;display:flex;flex-direction:column;gap:4px;overflow-y:auto;overscroll-behavior:contain}
.sprite-preview-wrap > canvas{display:block;width:min(100%,390px);align-self:center;height:auto;max-height:min(26dvh,230px);border:1px solid #385469;border-radius:10px;background:#09131b}
.sprite-reg-status{padding:7px 8px;border:1px solid #2f485a;border-radius:7px;background:#0b1821;color:#d6ebf7;font-size:9px;line-height:1.45}
.sprite-reg-list{display:grid;grid-template-columns:repeat(2,1fr);gap:5px;max-height:130px;overflow:auto}
.sprite-reg-item{display:flex;justify-content:space-between;gap:6px;padding:6px 7px;border:1px solid #2d4556;border-radius:7px;background:#29382e;font-size:8px;color:#a8bdca}
.sprite-reg-item b{color:#d9effa}
.sprite-reg-item.custom{border-color:#3f7557;background:#10251b}
.sprite-reg-item.custom span{color:#a9f1c0}

@media(max-width:1180px){.top-actions #bulkEditorBtn,.top-actions #spriteAssetBtn{display:none}
.sprite-layout{grid-template-columns:minmax(290px,36%) minmax(0,1fr)}

}


.lane-director-chip b{display:block;font-size:9px;color:#fff}
.lane-director-chip .ally{color:#83d7ff}
.lane-director-chip .enemy{color:#ff8f8f}
.lane-director-chip.threat{border-color:#7d5050;background:#251318dc}
.lane-director-chip.push{border-color:#406f5b;background:#10231bdc}

.snapshot-modal{width:min(1040px,96vw)}
.snapshot-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(90px,1fr));gap:6px;margin-bottom:8px}
.snapshot-stat{padding:8px;border:1px solid #2d4658;border-radius:8px;background:#0b1720;display:flex;flex-direction:column;gap:2px}
.snapshot-stat b{font-size:11px}
.snapshot-stat small{font-size:7px;color:#8fa6b5}
.snapshot-columns{display:grid;grid-template-columns:340px minmax(0,1fr);gap:10px}
.snapshot-columns>section{min-width:0;padding:8px;border:1px solid #2d4658;border-radius:9px;background:#09141d}
.snapshot-lane-metrics{display:grid;gap:6px}
.snapshot-lane-row{padding:7px;border:1px solid #2b4354;border-radius:7px;background:#29382e;font-size:8px}
.snapshot-lane-row b{display:flex;justify-content:space-between;font-size:9px;margin-bottom:4px}
.snapshot-lane-row .metric-bar{height:5px;background:#2a3540;border-radius:6px;overflow:hidden;position:relative}
.snapshot-lane-row .metric-bar i{position:absolute;top:0;height:100%}
.snapshot-lane-row .metric-bar .a{left:50%;background:#64c9ff}
.snapshot-lane-row .metric-bar .e{right:50%;background:#ff7171}
.snapshot-lane-row small{display:block;color:#93aab8;margin-top:4px;line-height:1.4}
.snapshot-timeline{max-height:360px;overflow:auto;display:grid;gap:4px;padding-right:3px}
.timeline-row{display:grid;grid-template-columns:48px 90px 1fr;gap:6px;align-items:start;padding:6px;border:1px solid #243b4c;border-radius:6px;background:#0c1720;font-size:8px}
.timeline-row time{color:#ffd77b;font-variant-numeric:tabular-nums}
.timeline-row b{color:#9fdcff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.timeline-row span{color:#b7c8d2;line-height:1.35;word-break:break-word}
.snapshot-note{margin-top:7px;padding:8px;border-radius:8px;background:#0a141c;color:#8fa6b5;font-size:9px;line-height:1.45}
#snapshotJsonBox{width:100%;height:130px;margin-top:8px;padding:8px;border:1px solid #304a5c;border-radius:8px;background:#08121a;color:#d8e9f2;font:8px/1.4 ui-monospace,Consolas,monospace;resize:vertical}

@media(max-width:1180px){.top-actions #snapshotBtn{display:none}
.snapshot-summary{grid-template-columns:repeat(3,1fr)}
.snapshot-columns{grid-template-columns:300px 1fr}

}


/* V4.5 tactical vision / reconnaissance */
.top-actions{min-width:0;overflow-x:auto;scrollbar-width:none}
.top-actions::-webkit-scrollbar{display:none}
.top-actions #visionBtn{border-color:#416b62;background:#132b28;color:#bff7e8;white-space:nowrap}
.top-actions #visionBtn:hover{background:#1b3c37}
.editor-grid{max-height:none;overflow:visible;padding-right:0}
.lane-director-chip .enemy{font-variant-numeric:tabular-nums}
.lane-director-chip[title*="가시성"]{backdrop-filter:blur(2px)}

@media(max-width:1180px){.top-actions #visionBtn{display:none}
}


/* V4.5 batch sprite import */
.sprite-batch-file small{display:block;margin-top:4px;color:#829aa9;font-size:11px;line-height:1.35}

.sprite-controls #spriteRegBatchSave{border-color:#436d89;background:#132738;color:#ccecff}

.sprite-controls #spriteRegBatchSave:hover{background:#1a344a}


/* V4.6 canonical mobile runtime */
.mobile-dock,.mobile-menu-panel,.mobile-orientation-hint,.mobile-only-action{display:none}


@media (max-width:900px), (pointer:coarse){
  html,body{position:fixed;inset:0;width:100%;height:100%;touch-action:manipulation;-webkit-text-size-adjust:100%;background:#050b11}

  body{padding:0;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}

  input,textarea,select{user-select:text;-webkit-user-select:text}

  #app{min-width:0;grid-template-columns:minmax(0,1fr);height:100dvh;min-height:100svh;grid-template-rows:48px minmax(0,1fr);padding-top:env(safe-area-inset-top,0px);padding-left:env(safe-area-inset-left,0px);padding-right:env(safe-area-inset-right,0px)}

  .statusbar{display:none}

  .topbar{height:48px;grid-template-columns:minmax(72px,1fr) minmax(120px,1.55fr) minmax(72px,1fr) 46px;gap:3px;padding:4px 5px;background:#07131df2;backdrop-filter:blur(7px)}

  .brand{display:none}

  .hud-team{display:grid!important;grid-template-columns:auto 38px;gap:1px 3px;font-size:7px;line-height:1.05}

  .hud-team b{font-size:9px}
.hud-team .bar{height:3px}
.hud-team span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

  .hud-center{gap:3px;font-size:8px;min-width:0}
.hud-center>span:first-child{font-size:9px;min-width:31px}
.resource{padding:4px 4px;border-radius:6px;white-space:nowrap}
.resource b{font-size:8px}

  .top-actions{display:flex;min-width:42px;overflow:visible;justify-content:flex-end}

  .top-actions>*:not(#mobileMenuBtn):not(#upcomingCardsBtn):not(.enemy-difficulty-label){display:none!important}

  .top-actions #mobileMenuBtn{display:block!important;width:42px;height:38px;padding:0;border:1px solid #42637a;border-radius:8px;background:#173044;color:#eef8ff;font-size:10px;font-weight:800}

  .battle-shell{position:relative;display:block;min-height:0;height:100%;overflow:hidden;background:#02070c}

  .stage-wrap{position:absolute;inset:0;min-height:0;overflow:hidden;background:#02070c}

  #game{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:auto;height:auto;max-width:none;max-height:none;touch-action:none;background:#101820}

  .lane-legend{display:none}

.synergy-strip{left:6px;top:6px;right:6px;max-width:none;gap:3px}
.synergy-chip{font-size:7px;padding:3px 5px}

  .toast{top:7px;max-width:90%;padding:6px 9px;font-size:9px;text-align:center;white-space:normal}

  .response-bar{top:7px;width:min(410px,92%);padding:7px}
.response-title{font-size:8px}
.response-bar button{min-height:40px;font-size:10px}

  .target-hint{bottom:54px;max-width:94%;padding:7px 8px;font-size:9px;white-space:normal}
.target-hint button{min-height:38px;min-width:60px;font-size:9px}

  .point-menu{left:50%!important;right:auto!important;top:auto!important;bottom:52px!important;transform:translateX(-50%);width:min(340px,94vw);padding:9px;z-index:25}
.point-menu button,.choice-body button{min-height:42px;font-size:11px}
.point-menu-title{font-size:12px}

  .choice-panel{position:absolute;width:min(380px,94vw);max-height:76%;padding:10px;z-index:26}
.choice-body{max-height:56vh;overflow:auto;-webkit-overflow-scrolling:touch}
.choice-head button{width:40px;height:40px}

.editor-row button{min-height:40px}
.formation-select,.rally-btn{height:24px;font-size:7px;padding:1px 2px}


  .mobile-dock{position:absolute;left:0;right:0;bottom:0;z-index:21;height:calc(44px + env(safe-area-inset-bottom,0px));padding:3px 4px env(safe-area-inset-bottom,0px);display:grid;grid-template-columns:repeat(4,1fr);gap:4px;background:#07121bf2;border-top:1px solid #355064;backdrop-filter:blur(8px)}

  .mobile-dock button{min-width:0;min-height:38px;border:1px solid #314b5e;border-radius:8px;background:#101e29;color:#9eb4c2;font-size:10px;font-weight:800}
.mobile-dock button.active{background:#1d4961;border-color:#6fbde5;color:#fff}


  .mobile-menu-panel{position:fixed;z-index:60;right:calc(6px + env(safe-area-inset-right,0px));top:calc(54px + env(safe-area-inset-top,0px));width:min(360px,94vw);max-height:calc(100dvh - 66px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px));overflow:auto;padding:10px;border:1px solid #4b6a80;border-radius:12px;background:#0a1721f7;box-shadow:0 16px 50px #000d;backdrop-filter:blur(12px);-webkit-overflow-scrolling:touch}

  .mobile-menu-panel[hidden]{display:none!important}
.mobile-menu-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.mobile-menu-head strong{font-size:14px}
.mobile-menu-head button{width:42px;height:42px;border:1px solid #405c70;border-radius:8px;background:#172936;color:#fff;font-size:20px}
.mobile-menu-panel label{display:block;font-size:9px;color:#9db2c0}
.mobile-menu-panel select{width:100%;height:42px;margin:4px 0 8px;padding:5px 8px;border:1px solid #36556a;border-radius:8px;background:#102330;color:#fff}
.mobile-menu-grid{display:grid;grid-template-columns:1fr 1fr;gap:5px}
.mobile-menu-grid button{min-height:44px;border:1px solid #36566b;border-radius:8px;background:#142838;color:#f2f8fb;font-size:10px}
.mobile-menu-panel p{margin:8px 2px 0;color:#8fa5b3;font-size:8px;line-height:1.45}

  .mobile-orientation-hint{position:fixed;z-index:55;left:50%;top:calc(58px + env(safe-area-inset-top,0px));transform:translateX(-50%);width:min(340px,88vw);padding:8px 10px;border:1px solid #62583b;border-radius:9px;background:#241f12ed;color:#ffe9a6;box-shadow:0 8px 24px #000b;text-align:center}
.mobile-orientation-hint[hidden]{display:none!important}
.mobile-orientation-hint b{display:block;font-size:10px}
.mobile-orientation-hint span{display:block;margin-top:2px;font-size:7px;color:#d7c996}


  .modal{padding:calc(5px + env(safe-area-inset-top,0px)) 5px calc(5px + env(safe-area-inset-bottom,0px));align-items:stretch}
.modal-card,.wide-modal,.deck-modal,.animation-modal,.sprite-modal,.snapshot-modal,.diagnostics-modal{width:100%;max-width:none;max-height:none;height:100%;border-radius:10px;padding:8px;-webkit-overflow-scrolling:touch}
.modal-head{position:sticky;top:-8px;z-index:5;background:#0f1a24;padding:7px 0 8px}
.modal-head strong{font-size:13px}
.modal-head button{width:42px;height:42px}
.modal-actions{position:sticky;bottom:-8px;z-index:4;padding:6px 0 3px;background:#0f1a24;overflow-x:auto}
.modal-actions button{min-height:42px;flex:0 0 auto;font-size:9px}

  .editor-grid{flex-wrap:wrap;max-height:none;overflow:visible}
.editor-grid input,.editor-grid select,.rule-controls input,.rule-controls select,.deck-toolbar input,.deck-toolbar select{min-height:34px;font-size:12px}
.rule-controls{grid-template-columns:repeat(4,minmax(0,1fr))!important}
.rule-controls button{min-height:42px}
.rule-row{grid-template-columns:1fr 1fr;gap:4px;font-size:8px}
.rule-row button{min-height:36px}

  .deck-toolbar,.deck-toolbar-v4{grid-template-columns:1fr 1fr!important}
.deck-toolbar-v4 .deck-count,.deck-count{grid-column:1/3;align-items:flex-start}
.deck-slot-bar{grid-template-columns:1fr 1fr}
.deck-slot-bar span{grid-column:1/3;text-align:left}
.deck-slot-bar select,.deck-slot-bar button{height:42px}
.deck-list{grid-template-columns:1fr;max-height:none;overflow:visible}
.deck-row{grid-template-columns:48px 1fr 42px 32px 42px;min-height:58px}
.deck-row img{width:46px;height:46px}
.deck-row button{height:42px;font-size:16px}
.deck-card-info b{font-size:10px}
.deck-card-info small{font-size:8px}

  .animation-layout,.sprite-layout,.snapshot-columns{grid-template-columns:1fr}
.animation-controls,.sprite-controls{grid-template-columns:1fr 1fr}
.animation-preview-wrap canvas,.sprite-preview-wrap > canvas{max-height:42vh}
.sprite-reg-list{grid-template-columns:1fr}
.bulk-toolbar{grid-template-columns:1fr 1fr}
.bulk-toolbar span{grid-column:1/3;text-align:left}

.diagnostics-list{grid-template-columns:1fr}
.snapshot-summary{grid-template-columns:repeat(2,1fr)}
.snapshot-timeline{max-height:42vh}

}


@media (max-width:900px) and (orientation:portrait){
  .topbar{grid-template-columns:minmax(66px,1fr) minmax(120px,1.45fr) minmax(66px,1fr) 44px}

}


@media (max-height:520px) and (orientation:landscape), (pointer:coarse) and (max-height:520px){
  #app{grid-template-rows:42px minmax(0,1fr)}
.topbar{height:42px}
.mobile-dock{height:calc(40px + env(safe-area-inset-bottom,0px))}
.mobile-dock button{min-height:34px}
.formation-select,.rally-btn{height:20px}
.target-hint{bottom:44px}

}


/* V4.7 tactical terrain + physical formation canonical patch */
.top-actions #terrainBtn{border-color:#746741;background:#2d2917;color:#fff0a8;white-space:nowrap}

.top-actions #terrainBtn:hover,.top-actions #terrainBtn.active{background:#4a4020;border-color:#b49b45}

@media(max-width:1180px){.top-actions #terrainBtn{display:none}
}



/* V4.8 canonical map editor + lightweight battle VFX */
.terrain-editor-fields{display:grid;grid-template-columns:1fr;gap:4px;margin:7px 0;padding:7px;border:1px solid #415c70;border-radius:8px;background:#0b1620}

.terrain-editor-fields[hidden]{display:none!important}

.terrain-editor-fields label{grid-template-columns:72px 1fr}

.terrain-editor-fields input,.terrain-editor-fields select{width:100%;min-width:0;padding:5px;background:#142532;color:#fff;border:1px solid #3f5b70;border-radius:6px;font-size:9px}

.editor-selection-info{margin-top:5px;padding:5px 7px;border:1px solid #334c5f;border-radius:7px;background:#0a141d;color:#bcd0dd;font-size:8px;line-height:1.35}

.editor-selection-info.active{border-color:#bea14d;color:#ffe79a;background:#241f12}

@media (max-width:900px), (pointer:coarse){
  .terrain-editor-fields{grid-template-columns:1fr 1fr}
.terrain-editor-fields label{grid-template-columns:1fr}
.terrain-editor-fields input,.terrain-editor-fields select{min-height:40px;font-size:11px}

  .editor-selection-info{font-size:9px;padding:7px}


}







/* V5.0 faction bases + siege + projectile VFX + reconciliation canonical patch */
.top-actions #allyFactionSelect,.top-actions #enemyFactionSelect{max-width:92px;padding-left:5px;padding-right:5px}

.vfx-modal{width:min(920px,94vw)}

.vfx-layout{display:grid;grid-template-columns:310px 1fr;gap:12px;min-height:310px}

.vfx-controls{display:grid;grid-template-columns:1fr 1fr;gap:7px;align-content:start}

.vfx-controls label{display:flex;flex-direction:column;gap:4px;font-size:9px;color:#9db2c0}

.vfx-controls input,.vfx-controls select{width:100%;padding:7px;border:1px solid #35556b;border-radius:7px;background:#10202d;color:#fff}

.vfx-preview-wrap{display:flex;flex-direction:column;gap:6px;min-width:0}

.vfx-preview-wrap canvas{width:100%;height:auto;max-height:360px;border:1px solid #30485a;border-radius:10px;background:radial-gradient(circle at 50% 50%,#163042,#08121a 70%)}

.mobile-faction-row{display:grid;grid-template-columns:1fr 1fr;gap:6px}

.mobile-faction-row label{min-width:0}

.base-faction-chip{position:absolute;z-index:7;top:72px;padding:4px 7px;border-radius:999px;border:1px solid #ffffff44;background:#07111dd9;font-size:8px;font-weight:800;pointer-events:none}

@media (max-width:1180px){.top-actions #allyFactionSelect,.top-actions #enemyFactionSelect,.top-actions #vfxEditorBtn{display:none}
}

@media (max-width:900px), (pointer:coarse){
  .vfx-layout{grid-template-columns:1fr;min-height:0}
.vfx-controls{grid-template-columns:1fr 1fr}
.vfx-preview-wrap canvas{max-height:34vh}
.mobile-faction-row select{margin-bottom:8px}

}
.priority-select,.pause-prod{height:22px;min-width:0;border:1px solid #355064;border-radius:5px;background:#0f1b25;color:#cfe3ef;font-size:7px;padding:2px}
.pause-prod{cursor:pointer}
.pause-prod.active{border-color:#f0bd63;background:#4a351a;color:#ffe5a5}

@media(max-width:900px){
.priority-select,.pause-prod{height:24px;font-size:6px;padding:1px}
}

@media(max-width:720px) and (max-height:500px){.priority-select,.pause-prod{height:20px}
}

.transport-channel{display:flex;align-items:center;gap:4px;color:#9eb3c1;font-size:8px}
.transport-channel input{width:118px;height:27px;border:1px solid #355064;border-radius:6px;background:#0d1822;color:#dceaf3;padding:3px 6px}
.transport-status{margin:7px 0 5px;padding:6px 8px;border:1px solid #30495b;border-radius:7px;background:#0b151e;color:#9bcfe4;font-size:8px}


/* ==========================================================
   V5.3 Command UI · Battle Prep · Data Table
   Canonical UI override: defense-first, compact, high legibility
   ========================================================== */
:root{--hudGlass:#08141eea;--hudPanel:#0d1b26f2;--hudEdge:#3c5b70;--hudText:#f2f8fb;--hudDim:#91a7b5;--ally:#62c9ff;--enemy:#ff7373;--warning:#ffc56b;--ok:#83e2a7}

#app{grid-template-rows:82px minmax(0,1fr) 24px}

.command-topbar{grid-template-columns:190px minmax(150px,.85fr) minmax(430px,1.7fr) minmax(150px,.85fr) auto;gap:5px;padding:5px 6px;background:linear-gradient(180deg,#101d27,#071119);box-shadow:0 4px 18px #0008;border-bottom-color:#38576d}

.command-brand strong{font-size:14px;letter-spacing:-.2px}
.command-brand .build{font-size:9px;color:#87a1b0}

.command-base{display:flex;flex-direction:column;gap:4px;padding:5px 8px;border:1px solid #304b5e;border-radius:10px;background:#25392c}
.command-base .base-label{display:grid;grid-template-columns:26px 1fr auto;align-items:center;gap:5px;font-size:11px;font-weight:800}
.command-base .base-label b{font-size:18px;line-height:1;font-variant-numeric:tabular-nums}
.hud-icon{width:24px;height:24px;border-radius:7px;display:grid;place-items:center;background:#183043;font-size:13px}
.enemy-base-hud .hud-icon{background:#3b1e24}
.command-base .bar{width:100%;height:6px}
.command-base.blue{box-shadow:inset 3px 0 0 #55bceb}
.command-base.red{box-shadow:inset -3px 0 0 #ef6666}

.command-resources{display:grid;grid-template-columns:64px 126px 126px 1fr;gap:5px;align-items:center;justify-content:stretch}
.match-clock{height:42px;display:grid;place-items:center;border-radius:9px;border:1px solid #526272;background:#050b11;color:#fff;font-size:19px;font-weight:900;font-variant-numeric:tabular-nums}
.command-resources .resource{height:42px;display:flex;align-items:center;justify-content:space-between;gap:6px;padding:5px 8px;border-radius:9px}
.command-resources .resource small{font-size:9px;letter-spacing:.3px}
.command-resources .resource b{font-size:15px;color:#fff;font-variant-numeric:tabular-nums}

.combat-quick-stats{display:grid;grid-template-columns:repeat(3,minmax(58px,1fr));gap:4px}
.combat-quick-stats>span{height:42px;display:flex;align-items:center;justify-content:center;gap:5px;border:1px solid #314b5d;border-radius:9px;background:#0b1720;color:#adbec8}
.combat-quick-stats i{width:22px;height:22px;display:grid;place-items:center;border-radius:6px;background:#182936;color:#9fd7f2;font-style:normal;font-size:10px;font-weight:900}
.combat-quick-stats b{font-size:12px;color:#fff;white-space:nowrap}
.combat-quick-stats b.danger{color:#ff8a8a}
.combat-quick-stats b.safe{color:#86e0a6}

.command-actions{overflow:visible;gap:3px}
.command-actions>button,.top-settings>summary{height:36px;border:1px solid #35546a;border-radius:8px;background:#142532;color:#eaf3f8;padding:0 8px;font-size:10px;font-weight:800;display:flex;align-items:center;justify-content:center;white-space:nowrap}
.command-actions .combat-primary{border-color:#4c7895;background:#173349}
.command-actions #deckEditorBtn{border-color:#9c8141;background:#3a3018;color:#ffe6a2}
.top-settings{position:relative}
.top-settings>summary{list-style:none;cursor:pointer}
.top-settings>summary::-webkit-details-marker{display:none}
.top-settings[open]>summary{border-color:#7fa3ba;background:#203849}
.top-popover{position:absolute;z-index:80;right:0;top:41px;width:245px;display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:9px;border:1px solid #4e6c7f;border-radius:11px;background:#091721f8;box-shadow:0 18px 50px #000d;backdrop-filter:blur(10px)}
.top-popover label{font-size:9px;color:#9fb3c0}
.top-popover label:first-child{grid-column:1/3}
.top-popover select,.top-popover button{width:100%;height:34px;margin-top:3px;border:1px solid #36566b;border-radius:7px;background:#132633;color:#edf5f8;padding:4px 6px;font-size:9px}
.tool-grid{width:290px;grid-template-columns:1fr 1fr}
.tool-grid button{margin:0}


.battle-shell{grid-template-rows:minmax(0,1fr) auto;}
.stage-wrap{border-bottom:1px solid #263d4e}
.lane-legend{top:8px;left:8px;padding:4px 7px;font-size:10px;background:#07131ddd}
.synergy-strip{left:246px;top:8px;max-width:46%}
.synergy-chip{font-size:10px;padding:4px 8px}

.lane-director-strip:before{content:'전선 상황';font-size:10px;font-weight:900;color:#f3f7f9;padding:1px 3px 3px}

.lane-command-title{display:flex;align-items:center;justify-content:space-between;gap:6px}


.lane-director-chip.threat .lane-command-title strong{color:#ff9898}
.lane-director-chip.push .lane-command-title strong{color:#91e6ad}

.lane-command-bar{height:5px;display:flex;margin:4px 0;border-radius:5px;overflow:hidden;background:#22303b}
.lane-command-bar .ally-fill{background:#58c5f7}
.lane-command-bar .enemy-fill{background:#ed6868}
.section-icon{font-style:normal;color:#ffd66a;margin-right:3px}
.priority-select,.pause-prod,.formation-select,.rally-btn{font-size:8px!important}
.statusbar{height:24px;font-size:10px;padding:0 7px}


/* Battle preparation instead of collectible-card deck screen */
.battle-prep-modal{width:min(1440px,98vw);height:min(870px,94vh);max-height:94vh;overflow:hidden;display:flex;flex-direction:column;padding:10px}
.prep-head{flex:0 0 auto;margin-bottom:7px}
.prep-head strong{font-size:18px}
.prep-toolbar{display:grid;grid-template-columns:minmax(220px,1.4fr) repeat(3,minmax(105px,.6fr)) auto minmax(130px,.7fr) auto;gap:5px;flex:0 0 auto}
.prep-toolbar input,.prep-toolbar select,.prep-toolbar button{height:36px;border:1px solid #38566b;border-radius:8px;background:#0b1720;color:#eef5f8;padding:5px 8px;font-size:10px}
.prep-toolbar button{font-weight:800}
.favorite-filter.active{border-color:#d7b04b;background:#3b3016;color:#ffe49a}
.battle-prep-grid{display:grid;grid-template-columns:minmax(360px,1.05fr) minmax(330px,.9fr) 300px;gap:6px;min-height:0;flex:1;margin-top:6px}
.prep-pane{min-width:0;min-height:0;display:flex;flex-direction:column;border:1px solid #304b5e;border-radius:10px;background:#09151e;overflow:hidden}
.prep-pane-head{height:42px;flex:0 0 42px;display:flex;align-items:center;justify-content:space-between;gap:6px;padding:6px 9px;border-bottom:1px solid #2a4355;background:#10202b}
.prep-pane-head>b{font-size:13px}
.prep-pane-head>small{font-size:9px;color:#89a1b0}
.prep-library{margin:0;padding:5px;display:grid;grid-template-columns:1fr;gap:3px;max-height:none;overflow:auto}
.prep-unit-row{position:relative;grid-template-columns:24px 46px minmax(0,1fr) 34px 34px;min-height:56px;padding:4px 5px;border-radius:7px;background:#2a3d30}
.prep-unit-row:hover,.prep-unit-row.active{border-color:#6f9ebd;background:#13293a}
.prep-unit-row img{width:44px;height:44px}
.prep-unit-row .favorite-star{height:32px;border:0;background:transparent;color:#6d8290;font-size:18px;padding:0}
.prep-unit-row .favorite-star.active{color:#ffd66a}
.prep-unit-row .owned-count{font-size:12px;color:#ffd66a}
.prep-unit-row .plus{height:34px;font-size:17px}
.deck-card-info b{font-size:11px}
.deck-card-info small{font-size:9px}
.deck-card-info em{font-size:8px}
.deck-selected-list{flex:1;min-height:0;overflow:auto;padding:5px}
.prep-empty{margin:8px;padding:18px 8px;border:1px dashed #3d5668;border-radius:8px;color:#8097a5;text-align:center;font-size:10px}
.selected-unit{display:grid;grid-template-columns:42px minmax(0,1fr) 46px 34px;gap:6px;align-items:center;padding:5px;margin-bottom:4px;border:1px solid #2e485b;border-radius:8px;background:#0d1b25;cursor:pointer}
.selected-unit:hover,.selected-unit.active{border-color:#c09e4a;background:#211d12}
.selected-unit img{width:40px;height:40px;object-fit:contain}
.selected-unit b{display:block;font-size:11px}
.selected-unit small{font-size:8px;color:#8fa5b4}
.selected-count{text-align:center;color:#ffe19a;font-size:13px;font-weight:900}
.remove-one{height:32px;border:1px solid #6c4c4c;border-radius:7px;background:#321c21;color:#ffd2d2;font-size:16px}
.detail-pane{background:linear-gradient(180deg,#2a3d30,#081219)}
.deck-detail{padding:12px;overflow:auto}
.deck-detail.empty{display:grid;place-items:center;color:#718895;font-size:10px;text-align:center}
.detail-hero{display:flex;gap:9px;align-items:center;padding-bottom:10px;border-bottom:1px solid #294254}
.detail-hero img{width:78px;height:78px;object-fit:contain;border-radius:10px;background:#071119}
.detail-hero b{display:block;font-size:17px}
.detail-hero span{display:block;margin-top:4px;font-size:9px;color:#96adba}
.detail-stats{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin-top:9px}
.detail-stats span{padding:7px;border:1px solid #2c4557;border-radius:7px;background:#0d1d28}
.detail-stats small{display:block;font-size:8px;color:#89a0af}
.detail-stats b{display:block;margin-top:2px;font-size:14px;color:#fff}
.detail-skill{margin-top:6px;padding:8px;border:1px solid #425d70;border-radius:8px;background:#102332}
.detail-skill.ultimate{border-color:#745d2d;background:#28200f}
.detail-skill strong{display:block;font-size:10px;color:#cdeeff}
.detail-skill.ultimate strong{color:#ffe095}
.detail-skill span{font-size:8px;color:#93abb9}
.deck-detail p{font-size:9px;line-height:1.5;color:#9fb2be}
.prep-savebar{flex:0 0 auto;margin-top:6px}
.prep-actions{flex:0 0 auto;margin-top:6px}
.prep-actions #saveDeckBtn{font-size:11px;font-weight:900;padding-inline:18px}


/* Game Database Manager */
.db-toolbar{display:grid;grid-template-columns:minmax(155px,1fr) 108px 105px 103px 94px 145px 75px;gap:5px;align-items:center;min-width:0;overflow-x:auto;scrollbar-width:thin}
.db-toolbar input,.db-toolbar select{height:32px;width:100%;min-width:0;padding:4px 6px;border:1px solid #385469;border-radius:6px;background:#09131b;color:#fff;font-size:11px}
.db-toolbar span{font-size:11px;color:#d4e8e6;text-align:right;white-space:nowrap}
.db-batchbar{display:flex;align-items:center;gap:5px;margin-top:6px;padding:6px;border:1px solid #2e4658;border-radius:8px;background:#25342c;overflow-x:auto}
.db-batchbar label{white-space:nowrap;font-size:9px;color:#a9bac5}
.db-batchbar select,.db-batchbar input,.db-batchbar button,.file-button{height:32px;border:1px solid #38566b;border-radius:7px;background:#132431;color:#edf5f8;padding:5px 7px;font-size:9px;white-space:nowrap}
.db-batchbar #bulkBatchValue{width:92px}
.file-button{display:flex;align-items:center;cursor:pointer}
.file-button input{display:none}
.check-col{width:34px;min-width:34px;text-align:center!important}

.bulk-table thead th{font-size:12px;padding:7px 5px}
.bulk-table td{padding:4px}

.bulk-row-check{width:18px!important;min-width:18px!important;height:18px!important;accent-color:#5db8e7}


/* Animation editor timeline */
.animation-timeline-wrap{border:1px solid #304a5c;border-radius:8px;background:#08141d;padding:7px}
.timeline-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:5px}
.timeline-head b{font-size:10px}
.timeline-head small{font-size:8px;color:#879eac}
.animation-timeline{display:flex;gap:3px;overflow-x:auto;padding-bottom:2px}
.timeline-frame{position:relative;flex:0 0 34px;height:32px;border:1px solid #355064;border-radius:6px;background:#10202b;color:#a9bdc8;font-size:9px}
.timeline-frame.current{outline:2px solid #ffd66a;color:#fff}
.timeline-frame.damage:after{content:'';position:absolute;left:3px;right:3px;bottom:2px;height:3px;border-radius:3px;background:#ff6666}
.timeline-frame.projectile:before{content:'';position:absolute;left:3px;right:3px;top:2px;height:3px;border-radius:3px;background:#66cfff}


@media(max-width:1400px){.command-topbar{grid-template-columns:150px 150px minmax(370px,1fr) 150px auto}
.command-brand .build{display:none}
.combat-quick-stats>span{min-width:50px}
.command-actions #snapshotBtn{display:none}
.battle-prep-grid{grid-template-columns:minmax(330px,1fr) minmax(300px,.9fr) 270px}
.prep-toolbar{grid-template-columns:minmax(200px,1.2fr) repeat(3,100px) auto 120px auto}
}

@media(max-width:1100px){.command-brand{display:none}
.command-topbar{grid-template-columns:145px minmax(360px,1fr) 145px auto}
.combat-quick-stats>span:nth-child(1){display:none}

.synergy-strip{left:220px}
.top-settings.dev-settings{display:none}
.battle-prep-grid{grid-template-columns:1fr 1fr}
.detail-pane{grid-column:1/3;max-height:190px}
.deck-detail{display:grid;grid-template-columns:230px 1fr 1fr;gap:7px}
.detail-hero{border:0;padding:0}
.detail-stats{margin:0}
.deck-detail p{display:none}
.prep-toolbar{grid-template-columns:1fr 1fr 1fr 1fr}
.prep-toolbar #deckSearch{grid-column:1/3}
.prep-toolbar #deckAutoRecommendBtn{grid-column:auto}
.prep-toolbar #deckRecommendFaction{grid-column:auto}
}


@media(max-width:900px),(pointer:coarse){
  #app{grid-template-rows:48px minmax(0,1fr)}
.command-topbar{height:48px;grid-template-columns:minmax(82px,.8fr) minmax(190px,1.7fr) minmax(82px,.8fr) 46px;padding:3px 4px;gap:3px}
.command-base{padding:4px 5px;border-radius:7px}
.command-base .base-label{grid-template-columns:18px 1fr;gap:2px}
.command-base .base-label .hud-icon{width:18px;height:18px;font-size:10px}
.command-base .base-label span:nth-child(2){font-size:7px}
.command-base .base-label b{grid-column:2;font-size:13px;text-align:left}
.command-base .bar{height:4px}
.command-resources{grid-template-columns:52px 1fr 1fr;gap:3px}
.match-clock{height:38px;font-size:14px}
.command-resources .resource{height:38px;padding:3px 5px;display:grid;gap:0}
.command-resources .resource small{font-size:6px}
.command-resources .resource b{font-size:10px}
.combat-quick-stats,.command-actions>button:not(#mobileMenuBtn),.top-settings{display:none!important}
.command-actions{display:block}
.mobile-only-action{display:grid!important;place-items:center;width:42px;height:40px!important;padding:0!important;font-size:18px!important}
.lane-legend{display:none}

.lane-director-strip:before{font-size:8px;padding-bottom:1px}



.lane-command-bar{height:3px;margin:2px 0}

.synergy-strip{left:164px;top:5px;max-width:52%}
.synergy-chip{font-size:7px;padding:3px 5px}
.mobile-dock button{font-size:10px}

  .battle-prep-modal{height:100%;max-height:none;padding:6px}
.prep-head strong{font-size:15px}
.prep-toolbar{grid-template-columns:1fr 1fr;gap:4px}
.prep-toolbar>*{height:40px!important}
.prep-toolbar #deckSearch{grid-column:1/3}
.battle-prep-grid{display:grid;grid-template-columns:1fr;grid-template-rows:minmax(180px,1fr) minmax(150px,.8fr);gap:5px}
.detail-pane{display:none}
.selected-pane{grid-column:auto}
.prep-pane-head{height:38px;flex-basis:38px}
.prep-library{grid-template-columns:1fr}
.prep-unit-row{min-height:54px}
.prep-savebar{grid-template-columns:1fr 1fr!important}
.prep-savebar span{grid-column:1/3!important}
.prep-actions button{min-height:42px}
.db-toolbar{grid-template-columns:minmax(155px,1fr) 108px 105px 103px 94px 145px 75px}
.db-toolbar span{grid-column:auto;text-align:right}
.db-batchbar{padding:5px}

.animation-timeline-wrap{padding:5px}
.timeline-head small{display:none}

}


@media(max-height:520px) and (orientation:landscape),(pointer:coarse) and (max-height:520px){


.lane-command-bar{margin:1px 0}

}

.object-editor-fields label,.background-controls label{font-size:9px;color:#9fb6c6}
.object-editor-fields select,.object-editor-fields input,.background-controls select,.background-controls input{width:100%;margin-top:3px}
.object-editor-fields output,.background-controls output{display:block;margin-top:2px;text-align:right;color:#f2d77b;font-size:9px}
.background-modal{width:min(1080px,96vw)}
.background-manager-grid{display:grid;grid-template-columns:280px minmax(0,1fr);gap:10px;min-height:390px}
.background-controls{display:grid;align-content:start;grid-template-columns:1fr 1fr;gap:8px;padding:8px;border:1px solid #29465a;border-radius:10px;background:#0b1720}
.background-controls label{display:block}
.background-controls select,.background-controls input[type=range]{height:34px}
.background-controls .toggle-line{grid-column:1/3;display:flex;align-items:center;gap:8px;min-height:34px;padding:6px 8px;border-radius:7px;background:#102431}
.background-controls .toggle-line input{width:auto;margin:0}
.background-layer-list{grid-column:1/3;display:grid;gap:4px;padding:8px;border:1px solid #2f4c61;border-radius:8px;background:#08131b}
.background-layer-list b{font-size:10px;color:#f2d77b}
.background-layer-list span{font-size:9px;color:#a9bbc8}
.background-preview-pane{min-width:0;display:flex;flex-direction:column;gap:7px}
.background-preview-pane canvas{width:100%;aspect-ratio:16/9;background:#071018;border:1px solid #35566d;border-radius:10px;object-fit:contain}
.background-preview-pane p{margin:0;color:#8fa7b6;font-size:9px;line-height:1.5}
.background-summary{padding:8px;border-radius:8px;background:#102431;color:#eaf5fb;font-size:11px;font-weight:800}
.db-tabs{display:flex;gap:4px;margin:0 0 7px;overflow-x:auto}
.db-tabs button{flex:0 0 auto;min-height:34px;padding:5px 12px;border:1px solid #34566d;border-radius:8px;background:#0c1b25;color:#aec3d0;font-size:9px;font-weight:800}
.db-tabs button.active{background:#1b4358;border-color:#67b6dc;color:#fff}
.db-system-table td{max-width:300px;white-space:normal}
.db-system-table input{min-width:90px;width:100%}
.db-batchbar.db-disabled{opacity:.35;pointer-events:none}
.editor-panel select#editToolSelect option[value=object]{font-weight:800}
.tool-grid{grid-template-columns:repeat(2,minmax(110px,1fr))!important}

@media(max-width:900px),(pointer:coarse){.background-manager-grid{grid-template-columns:1fr;min-height:0}
.background-controls{grid-template-columns:1fr 1fr}
.background-preview-pane canvas{max-height:36vh}
.background-modal textarea{min-height:90px}

.db-tabs{position:sticky;top:48px;z-index:4;background:#0f1a24;padding:3px 0}
.db-tabs button{min-height:40px;font-size:10px}
.tool-grid{grid-template-columns:1fr 1fr!important}
}

@media(max-width:520px){
.background-controls{grid-template-columns:1fr}
.background-controls .toggle-line,.background-layer-list{grid-column:1}
.background-preview-pane p{display:none}
}


/* ==========================================================
   V5.5 UI Balance · compact hand/strategist cluster · draggable lane panel
   Canonical overrides only; no parallel UI implementation.
   ========================================================== */
.battle-shell{grid-template-rows:minmax(0,1fr) auto;}
.formation-select,.rally-btn,.priority-select,.pause-prod{height:20px!important;font-size:7px!important;padding:1px 2px!important}


.lane-director-strip:before{content:none!important}

.lane-director-head:active{cursor:grabbing}


.lane-drag-grip{font-size:11px;line-height:1;color:#7997a9;letter-spacing:-4px;transform:translateX(-2px)}
.lane-director-head button{width:21px;height:19px;padding:0;border:1px solid #35556b;border-radius:5px;background:#10232f;color:#dbe9f1;font-size:11px;line-height:1}
.lane-director-head button:hover{background:#1b384a}

.lane-director-body{display:grid;grid-template-columns:1fr;gap:2px}




.lane-command-bar{height:4px;margin:2px 0}


.lane-director-strip.dragging-panel{opacity:.95;box-shadow:0 10px 26px #000b;border-color:#75a9c9}


/* Connected object brush controls */
.object-brush-toggle{display:grid!important;grid-template-columns:1fr auto!important;align-items:center!important;gap:8px!important;min-height:34px;padding:5px 6px;border:1px solid #2e4b5e;border-radius:7px;background:#0e202b}
.object-brush-toggle input{width:18px!important;height:18px!important;margin:0!important;accent-color:#68bfe8}
.object-brush-spacing output{display:inline-block;min-width:28px;margin-left:5px}
.object-brush-spacing input{margin-top:5px!important}




@media(max-width:1100px){

.synergy-strip{left:186px}

}

@media(max-width:900px),(pointer:coarse){
  .battle-shell{grid-template-rows:minmax(0,1fr) auto;}




.lane-director-head button{width:19px;height:17px;font-size:10px}



.lane-command-bar{height:3px;margin:1px 0}

.synergy-strip{left:158px;top:5px;max-width:48%}

}

@media(max-height:520px) and (orientation:landscape),(pointer:coarse) and (max-height:520px){
  .battle-shell{grid-template-rows:minmax(0,1fr) auto;}





}



/* V5.6 Object AutoTile / custom asset / direct canvas handle controls */
.object-asset-box{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:5px;padding:7px;border:1px solid #35566b;border-radius:8px;background:#091822}
.object-asset-box>b{grid-column:1/-1;font-size:9px;color:#d9edf8}
.object-asset-box label{display:grid!important;grid-template-columns:54px 1fr!important;gap:4px!important;font-size:8px!important}
.object-asset-box .object-asset-file{grid-column:1/-1;grid-template-columns:54px 1fr!important}
.object-asset-box input[type=file]{min-width:0;font-size:7px;color:#b9ccd6}
.object-asset-box .editor-row{grid-column:1/-1}
.object-asset-box canvas{grid-column:1/-1;width:100%;height:70px;border:1px solid #274657;border-radius:6px;background:linear-gradient(45deg,#10202b 25%,#132532 25%,#132532 50%,#10202b 50%,#10202b 75%,#132532 75%);background-size:16px 16px}
.object-asset-box small{grid-column:1/-1;font-size:7px;color:#8fb2c5}
.object-editor-fields input:disabled,.object-editor-fields select:disabled{opacity:.45;cursor:not-allowed}

@media(max-width:900px),(pointer:coarse){.object-asset-box{grid-template-columns:1fr 1fr}
.object-asset-box canvas{height:82px}
.object-asset-box button{min-height:38px}
}


/* V5.8 canonical editor pipeline */
.object-editor-fields #editObjectWidthWrap[hidden]{display:none!important}

.object-select-actions{grid-template-columns:repeat(3,minmax(0,1fr))!important}

.object-asset-box #editObjectAssetBatchSave{width:100%;margin-top:5px}

.object-brush-toggle input[type="checkbox"]{min-width:22px;min-height:22px}

.db-tabs{display:flex;gap:5px;overflow-x:auto;scrollbar-width:thin;padding-bottom:3px}

.db-tabs button{white-space:nowrap;min-width:max-content}

.point-upgrade-btn{border-color:#d9b964!important;background:linear-gradient(180deg,#544423,#302711)!important}

.editor-selection-info.multi{border-color:#72c8ff;background:rgba(18,72,104,.72)}

@media(max-width:760px){
  .object-select-actions{grid-template-columns:1fr 1fr 1fr!important}

  .object-select-actions button{padding:8px 3px;font-size:11px}

  .db-tabs{max-width:100%;-webkit-overflow-scrolling:touch}

}


.prod-queue{width:100%;margin-top:3px;padding:3px;border:1px solid #29465a;border-radius:6px;background:#09151e;display:flex;flex-direction:column;gap:2px;max-height:30px;overflow:auto}
.prod-queue-head,.prod-queue-item{display:flex;align-items:center;gap:3px}
.prod-queue-head{justify-content:space-between;font-size:7px;color:#9dc6db}
.prod-queue-head button{border:0;background:transparent;color:#ef9c9c;font-size:7px;padding:0 2px}
.prod-queue-item{height:20px;border-radius:4px;background:#112433;padding:1px 2px;font-size:7px}
.prod-queue-item img{width:16px;height:16px;object-fit:contain;border-radius:3px;background:#07121a}
.prod-queue-item b{min-width:0;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:7px}
.queue-order{width:13px;height:13px;border-radius:50%;display:grid;place-items:center;background:#315066;color:#fff;font-size:6px}
.queue-actions{display:flex;gap:1px}
.queue-actions button{width:17px;height:17px;padding:0;border:1px solid #35566c;border-radius:3px;background:#0c1b26;color:#d9effc;font-size:8px}
.queue-actions button:last-child{border-color:#6b3940;color:#ffadb4}
.queue-actions button:disabled{opacity:.25}


.expert-cell button{margin-top:4px;min-height:30px;padding:3px 8px;border:1px solid #466a7f;border-radius:5px;background:#142d3d;color:#dff4ff;font-size:12px}

@media (max-width:900px),(pointer:coarse){
.prod-queue{max-height:25px}
.prod-queue-item{height:22px}
.queue-actions button{width:24px;height:20px}

}



@media (max-height:520px) and (orientation:landscape){.prod-queue{max-height:20px}}
.card-expert-modal{width:min(1120px,98vw);max-height:96dvh}
.card-expert-toolbar{display:flex;align-items:center;justify-content:space-between;gap:5px;padding:3px 6px;margin-bottom:4px;border:1px solid #314b5e;border-radius:6px;background:#0a1720}
.card-expert-toolbar span{font-size:12px}
.card-expert-toolbar #cardExpertBadge{font-weight:900;color:#dff6ff}
.card-expert-toolbar #cardExpertDirty{color:#88d7a8}
.card-expert-toolbar #cardExpertDirty.dirty{color:#ffd27a}
.card-expert-fields{display:grid;grid-template-columns:minmax(0,1fr);gap:4px;overflow:visible;max-height:none;padding:0}
.expert-section{grid-column:1/-1;min-width:0;border:1px solid #304b5e;border-radius:7px;background:#091720;padding:4px 6px;display:grid;grid-template-columns:minmax(0,1fr);gap:3px}
.expert-section h4{grid-column:1/-1;margin:0 0 1px;font-size:11px;color:#f0f7fb}
.expert-section label{display:grid;min-width:0;gap:3px;color:#d4e4ee;font-size:13px;line-height:1.25;white-space:normal;overflow:visible;overflow-wrap:break-word}
.expert-section input,.expert-section select,.expert-section textarea{box-sizing:border-box;min-width:0;width:100%;height:34px;min-height:34px;margin:0;border:1px solid #35546a;border-radius:5px;background:#10232f;color:#f4f8fa;padding:4px 7px;font-size:14px;font-variant-numeric:tabular-nums}
.expert-section textarea{min-height:29px;height:29px;resize:vertical}
.expert-section .span2{flex-basis:170px}
.expert-section .span4{flex:1 1 290px}
.expert-skill-grid{grid-column:1/-1;display:grid;grid-template-columns:minmax(66px,1fr) minmax(90px,1.5fr) minmax(78px,1.2fr) repeat(3,minmax(50px,.7fr));gap:4px}
.expert-skill-grid .head{font-size:12px;color:#c1d8e8}
.expert-skill-grid input{min-width:0}
.queue-drag-handle{width:18px!important;height:18px!important;padding:0!important;border:0!important;background:transparent!important;color:#88afc2!important;cursor:grab!important;font-size:10px!important;touch-action:none}
.queue-drag-handle:active{cursor:grabbing!important}
.prod-queue-item.drag-source{opacity:.48;outline:1px dashed #61bee8}
.prod-queue-item.drag-target{outline:1px solid #ffd56d;background:#183246}
.prod-queue-item[draggable="true"]{user-select:none}

@media (max-width:900px),(pointer:coarse){.card-expert-modal{width:100%;height:100%;max-height:none;padding:6px}
.card-expert-fields{grid-template-columns:minmax(0,1fr);max-height:none}
.expert-section{grid-template-columns:minmax(0,1fr);padding:5px}
.expert-section .span4{flex:1 1 290px}
.expert-skill-grid{grid-template-columns:minmax(48px,1fr) minmax(65px,1.3fr) minmax(65px,1.2fr) repeat(3,minmax(46px,.7fr))}
.expert-skill-grid .head:nth-child(n+4){display:block}
.expert-skill-grid input:nth-child(6n+4),.expert-skill-grid input:nth-child(6n+5),.expert-skill-grid input:nth-child(6n+6){min-width:0}
.queue-drag-handle{width:24px!important;height:22px!important}
}


/* V6.1 editor-specific styling: no second HUD implementation. */
.facility-batch-controls{grid-column:1/-1;display:grid;gap:5px;border-top:1px solid #315066;padding:8px 2px}.facility-batch-controls input{max-width:100%;display:block}.facility-batch-controls small{color:#9fb4c3;line-height:1.4}.facility-batch-controls button{min-height:34px}.facility-batch-controls [role=status]{color:#d4edff;font-size:11px;white-space:pre-wrap}.expert-tactical-preview{padding:4px 6px;background:#091722;border:1px solid #36566c;border-radius:6px}.expert-tactical-preview>summary{cursor:pointer;font-size:11px;font-weight:700;color:#e0f2fc;list-style-position:inside}.expert-tactical-preview:not([open]){padding:3px 6px}.expert-tactical-preview:not([open]) canvas,.expert-tactical-preview:not([open]) [role=status]{display:none}.expert-tactical-preview canvas{display:block;width:min(560px,100%);height:auto;max-height:145px}.expert-tactical-preview [role=status]{font-size:11px;color:#cde0ee;line-height:1.4}

/* V6.3: sprite batch review; never alter the large hand or production art. */
.sprite-batch-options{display:flex;flex-wrap:wrap;gap:6px 14px;padding:7px 9px;background:#0e2230;border:1px solid #3b5c71;border-radius:7px}
.sprite-batch-options label{display:flex;align-items:center;gap:5px;font-size:11px;line-height:1.35;color:#e5f3fc;cursor:pointer}
.sprite-batch-options input{width:17px;height:17px;flex:none;accent-color:#71c6ff}
.sprite-batch-preview{max-height:142px;min-height:34px;overflow:auto;border:1px solid #3b5568;background:#1b2c22;border-radius:7px;padding:7px 9px;color:#e2eff9;font-size:10px;line-height:1.5;overscroll-behavior:contain}
.sprite-batch-preview .ready{color:#99ebbf}.sprite-batch-preview .skipped{color:#ffc28c}
.sprite-batch-preview strong{display:block;color:#fff;font-size:11px;margin-bottom:3px}
@media(max-width:900px){.sprite-batch-options label{font-size:12px}.sprite-batch-preview{max-height:125px;font-size:11px}#spriteRegBatchSave{min-height:42px}}

/* V6.4: contextual capture object manager + approachable card controls. */
.capture-editor-fields{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:7px;padding:8px;background:#0b1b26;border:1px solid #3b6079;border-radius:9px}
.capture-editor-fields[hidden]{display:none!important}
.capture-editor-fields>strong,.capture-editor-fields .capture-full{grid-column:1/-1}
.capture-editor-fields label{font-size:11px;color:#dfecf7;min-width:0;display:flex;flex-direction:column;gap:4px}
.capture-editor-fields label input,.capture-editor-fields label select{width:100%;min-width:0;margin:0}
.capture-editor-fields output{text-align:right;color:#ffde9b;font-size:10px}
.capture-editor-fields canvas{grid-column:1/-1;width:100%;height:110px;object-fit:contain;background:#08121b;border:1px solid #395b74;border-radius:7px}
.capture-editor-fields small{font-size:10px;line-height:1.4;color:#bcd2df}
.capture-drop-zone{grid-column:1/-1;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-height:70px;padding:10px;border:2px dashed #5b93a7;border-radius:9px;background:#132d3a;color:#ddf3ff;text-align:center;cursor:pointer}
.capture-drop-zone b{font-size:12px;color:#f2fbff}.capture-drop-zone span{font-size:10px;color:#a4bfcc;line-height:1.4}.capture-drop-zone.drag-over{border-color:#ffd780;background:#31505b}.capture-drop-zone input{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;height:100%}.facility-drop-zone{min-height:54px}

.capture-editor-fields .editor-row button{min-height:36px}
.quick-card-intro{font-size:13px;line-height:1.35;padding:5px 7px;background:#143043;color:#e8f6ff;border:1px solid #49738a;border-radius:6px}
.quick-card-picker{display:grid;grid-template-columns:minmax(110px,160px) minmax(160px,340px) 42px minmax(0,1fr);align-items:center;gap:5px;padding:4px 6px;background:#0a1a27;border:1px solid #36546a;border-radius:7px}
.quick-card-picker label{display:grid;gap:3px;font-size:13px;color:#d4e9f8;min-width:0}
.quick-card-picker input,.quick-card-picker select{width:100%;min-width:0;height:34px;padding:4px 6px;font-size:14px}
.quick-card-picker img{width:40px;height:40px;object-fit:contain;grid-column:3;grid-row:1;background:#101e29;border-radius:5px}
.quick-card-picker small{grid-column:4;grid-row:1;color:#e8d8a1;font-size:12px;line-height:1.3}
.expert-section .expert-section-toggle{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;width:100%;min-height:30px;padding:4px 8px;font-size:14px;font-weight:700;text-align:left;color:#def2ff;background:#163449;border:1px solid #426a84;border-radius:5px;cursor:pointer}.expert-section .expert-section-toggle small{font-size:11px}
.expert-section .expert-section-body{grid-column:1/-1;display:flex;flex-wrap:wrap;align-items:end;gap:6px}.expert-section .expert-section-body label{flex:0 1 94px;max-width:100%}.expert-section .expert-section-body label.field-select{flex:0 1 116px}.expert-section .expert-section-body label.field-text{flex:0 1 138px}.expert-section .expert-section-body label.field-long{flex:1 1 290px}.expert-section .expert-section-body label.field-check{flex:0 0 94px}
.expert-section .expert-section-body[hidden]{display:none!important}
.expert-section .expert-section-body label{min-width:0}
@media(max-width:900px){.quick-card-picker{grid-template-columns:minmax(90px,130px) minmax(130px,1fr) 36px}.quick-card-picker img{width:36px;height:36px;grid-column:3;grid-row:1}.quick-card-picker small{display:none}.expert-section .expert-section-body{display:flex;flex-wrap:wrap}.capture-editor-fields{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}

/* V6.5 canonical HUD layout: large original card art, six cards followed by strategist at the same gap. */



@media(min-width:901px) and (max-width:1200px){.expert-section .expert-section-body{display:flex;flex-wrap:wrap}.editor-grid{display:flex;flex-wrap:wrap}}
@media(max-width:640px){.expert-section .expert-section-body{display:flex;flex-wrap:wrap}.editor-grid{display:flex;flex-wrap:wrap}.expert-section .span4{flex:1 1 290px}.expert-section .span2{flex-basis:170px}.quick-card-picker{grid-template-columns:minmax(80px,.75fr) minmax(120px,1.25fr) 34px}.quick-card-picker img{width:32px;height:32px}.expert-skill-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.expert-skill-grid .head:nth-child(n+4){display:none}.expert-section label{font-size:13px}}
@media(max-width:400px){.expert-section .expert-section-body{display:flex;flex-wrap:wrap}.editor-grid{display:flex;flex-wrap:wrap}.expert-section .span4{flex:1 1 290px}}
@media(max-height:620px) and (min-width:700px){.card-expert-modal{max-height:98dvh}.expert-section .expert-section-body{display:flex;flex-wrap:wrap}.quick-card-intro{display:none}.card-expert-modal .modal-head{padding-bottom:3px;margin-bottom:4px}.card-expert-modal .expert-section .expert-section-toggle{min-height:20px;padding:2px 6px}}

/* Canonical editor and battle information layout. */
.editor-panel{position:fixed;right:16px;top:68px;width:min(650px,calc(100vw - 24px));max-height:calc(100dvh - 82px);overflow:auto;overscroll-behavior:contain;background:#0e1a25f7;border:1px solid #789495;border-radius:13px;padding:14px;z-index:26;box-shadow:0 12px 38px #0009;box-sizing:border-box}
.editor-panel h3{position:sticky;top:-14px;z-index:3;background:#19303c;padding:12px;margin:-14px -14px 12px;font-size:16px;cursor:move;touch-action:none}
.bulk-modal{width:min(1780px,calc(100vw - 24px));max-width:calc(100vw - 24px);max-height:calc(100dvh - 24px);overflow:auto;box-sizing:border-box}
.bulk-table-wrap{margin-top:8px;max-height:55vh;overflow:auto;border:1px solid #2e4556;border-radius:9px}
.bulk-table{width:100%;min-width:1040px;border-collapse:separate;border-spacing:0;font-size:12px;table-layout:fixed}
.bulk-table input[type="number"]{width:100%;min-width:0}
.bulk-table input[data-field="name"]{width:100%;min-width:0}
.bulk-table select{box-sizing:border-box;width:100%;min-width:0;height:31px;padding:4px;border:1px solid #304b60;border-radius:5px;background:#09131b;color:#fff;font-size:13px;padding:3px 1px}
.bulk-card-title{display:block;min-width:0}
.bulk-card-title input{width:100%;min-width:0}
.expert-cell{min-width:0;max-width:none}
.expert-cell small{display:block;font-size:10px;color:#a9c6d1;white-space:normal}.expert-cell small:first-child{display:none}.expert-cell button{display:inline-block;width:auto;min-height:27px;margin:2px;padding:3px 5px;font-size:11px;white-space:nowrap}
.lane-director-strip{position:absolute;left:8px;right:auto;top:40px;width:270px;max-width:calc(100% - 12px);display:block;padding:6px;border:1px solid #708984;border-radius:10px;background:#07131ce8;box-shadow:0 6px 18px #0008;pointer-events:auto;touch-action:none;user-select:none;z-index:12}
.lane-director-head{height:30px;display:grid;grid-template-columns:16px auto 1fr 25px;align-items:center;gap:4px;padding:0 2px 4px;color:#f1f7fa;cursor:grab}
.lane-director-head b{font-size:15px;white-space:nowrap}
.lane-director-head small{font-size:10px;color:#adc5ca;text-align:right;white-space:nowrap}
.lane-director-chip{padding:7px 8px;border-radius:6px;background:#0e1d28ef;font-size:13px;line-height:1.35}
.lane-command-title b{font-size:15px}
.lane-command-title strong{font-size:12px}
.lane-command-numbers{margin-top:3px;font-size:13px}
.lane-director-chip small{font-size:11px;display:block}
.object-editor-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;padding:10px;border:1px solid #304b5f;border-radius:8px;background:#25392c}
.bulk-table input{box-sizing:border-box;width:100%;min-width:0;height:31px;padding:4px;border:1px solid #304b60;border-radius:5px;background:#09131b;color:#fff;font-size:13px}
#editorDragHandle small{display:block;font-size:11px;font-weight:400;color:#b9ced0;margin-top:4px}
#editorPanel label{font-size:12px;min-width:0;grid-template-columns:1fr}
#editorPanel input,#editorPanel select{min-width:0;max-width:100%;box-sizing:border-box;font-size:13px}
#editorPanel p{font-size:12px;line-height:1.5}
#bulkCardTableWrap th:nth-child(1){width:24px}
#bulkCardTableWrap th:nth-child(2){width:100px}
#bulkCardTableWrap th:nth-child(3){width:75px}
#bulkCardTableWrap th:nth-child(4),#bulkCardTableWrap th:nth-child(5){width:55px}
#bulkCardTableWrap th:nth-child(13){width:110px}
#bulkCardTableWrap th:last-child{width:150px}
.db-json-details{margin-top:8px}.db-json-details summary{cursor:pointer;padding:8px;color:#abc6d5}
.facility-asset-controls label{font-size:12px}.facility-asset-controls input,.facility-asset-controls select{font-size:13px}
.facility-asset-copy small{font-size:12px;line-height:1.5}
.modal-head{position:sticky;top:-12px;z-index:5;background:#102430;padding:8px;border-radius:8px;touch-action:none}
.point-menu{border:2px solid #cfb575;box-shadow:0 10px 30px #000a}
.point-menu button:disabled{opacity:.42;cursor:not-allowed}
@media(max-width:700px){
.editor-panel{top:60px;right:8px;width:calc(100vw - 16px);max-height:calc(100dvh - 76px)}
.object-editor-fields{grid-template-columns:repeat(2,minmax(0,1fr))}
.lane-director-strip{width:210px}.lane-director-head b{font-size:13px}.lane-director-head small{display:none}
.lane-command-title b{font-size:13px}.lane-command-numbers{font-size:12px}.lane-director-chip{padding:4px}
}
/* V6.9 compact instance editor and contextual upgrades */
#editorPanel{width:min(600px,calc(100vw - 20px));padding:8px;max-height:calc(100dvh - 84px)}
#editorPanel h3{font-size:13px;padding:8px;margin:-8px -8px 7px;top:-8px;display:flex;align-items:flex-start;justify-content:space-between;gap:8px}
#editorDragHandle>span{min-width:0;flex:1}
#editorPanel #editorCloseBtn{flex:0 0 30px;width:30px;height:30px;min-height:30px;padding:0;border:1px solid #648293;border-radius:7px;background:#264050;color:#fff;font-size:23px;line-height:1;cursor:pointer;touch-action:manipulation}
#editorPanel #editorCloseBtn:hover,#editorPanel #editorCloseBtn:focus-visible{background:#9d4040;border-color:#f6b7b7;outline-offset:2px}
#editorPanel label{font-size:11px;min-width:0;gap:2px}
#editorPanel input,#editorPanel select,#editorPanel button{min-width:0;min-height:25px;font-size:11px;padding:3px 5px;width:100%;box-sizing:border-box}
#editorPanel input[type=checkbox]{width:16px;min-height:16px}
#objectEditorFields{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);gap:8px;align-items:start}
#objectEditorFields[hidden]{display:none}
.object-media-column{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;min-width:0}
.object-media-column>b,.object-media-column>button,.object-media-column>.object-asset-box,.object-media-column>.v69-grid,.object-media-column>label:has(input[type=file]){grid-column:1/-1}
.object-media-column .object-asset-box{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:5px}
.object-media-column .object-asset-box canvas{width:100%;height:65px;object-fit:contain}
.object-media-column .object-asset-box small{font-size:10px}
.object-media-column .object-asset-file{grid-column:1/-1}
.object-ability-column{border-left:1px solid #345366;padding-left:8px;min-width:0}
.object-ability-column fieldset{border:0;padding:0;margin:0;min-width:0}
.v69-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px}
.v69-grid label{display:flex;flex-direction:column;min-width:0}
.v69-note,#instanceHint,#instanceEvolution{font-size:10px;color:#b4ccdc;margin:5px 0}
#instanceGrowth>b{font-size:11px;color:#ffe2a4}
#instanceApply{margin-top:6px;background:#245767}
#cardExpertModal .card-expert-modal{width:min(760px,calc(100vw - 24px));max-width:760px;padding:10px}
#cardExpertFields{gap:5px}
#cardExpertFields .expert-section-body{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:4px;padding:6px}
#cardExpertFields .expert-section-body[hidden]{display:none}
#cardExpertFields label{width:auto!important;min-width:0!important;max-width:none!important;font-size:11px;gap:2px}
#cardExpertFields .span2{grid-column:span 2}
#cardExpertFields .span4{grid-column:span 6}
#cardExpertFields input,#cardExpertFields select{width:100%;min-width:0;min-height:26px;padding:3px 5px;font-size:12px;box-sizing:border-box}
#cardExpertFields textarea{height:40px;min-height:40px;font-size:12px}
#cardExpertFields .expert-section-toggle{min-height:25px;padding:4px 6px;font-size:12px}
#cardExpertFields .expert-section-body:has(.v69-skill-row){display:block}
.v69-skill-row{display:flex;gap:6px;align-items:center;font-size:12px;padding:4px}
.v69-skill-row select{flex:1}.v69-skill-row button{font-size:11px}
.kingdom-menu{width:260px!important;border-radius:22px!important;border:2px solid #c5a266!important;background:#162a35f5!important;box-shadow:0 6px 25px #000b}
.kingdom-menu [data-build]{border-radius:50%;min-height:65px}
.kingdom-menu #pointUpgradeBtn{background:#3b6548;border:1px solid #d9c484;border-radius:18px}
#v69PointControls{display:grid;gap:6px;padding:6px}
.v69-branch-buttons{display:grid;grid-template-columns:repeat(3,1fr);gap:5px}
.v69-branch-buttons button{border-radius:50%;min-height:46px;font-size:12px;padding:3px}
.v69-branch-buttons button.active{background:#507143;border-color:#e1c579}
#v69PointControls small{font-size:11px;color:#f7e2ae}
@media(max-width:650px){#objectEditorFields{grid-template-columns:1fr 1fr}.object-media-column{grid-template-columns:repeat(2,minmax(0,1fr))}.v69-grid{grid-template-columns:repeat(2,minmax(0,1fr))}#cardExpertFields .expert-section-body{grid-template-columns:repeat(4,minmax(0,1fr))}#cardExpertFields .span4{grid-column:span 4}}
#editorPanel{top:62px;max-height:calc(100dvh - 72px)}
#editorPanel label{margin:0;padding:0;line-height:1.2}
#editorPanel .v69-grid label{gap:2px}
#editorPanel .object-media-column>label{display:flex;flex-direction:column;gap:2px}
#editorPanel .v69-grid input,#editorPanel .v69-grid select{height:24px;min-height:24px;margin:0}
#editorPanel .object-editor-fields .object-ability-column .v69-grid{row-gap:4px}
#editorPanel output{font-size:10px}
.instance-advanced{grid-column:1/-1;border:1px solid #345366;border-radius:5px;padding:4px;font-size:11px}
.instance-advanced summary{cursor:pointer;color:#bad8e5}
#editorPanel>.editor-help{display:none}
#editorPanel .editor-row{gap:4px}
#instanceGrowth .growth-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
.v69-skill-tabs{display:flex;gap:5px}.v69-skill-tabs button{padding:5px 15px;border-radius:9px;background:#244957;color:#ffe4a3}
.v69-skill-tabs .active{background:#53774d}
#cardExpertFields [data-skill-panel][hidden]{display:none}
#cardExpertFields .expert-section-body:has(.v69-skill-tabs){display:block}
#cardExpertFields .field-text{grid-column:span 1}
#cardExpertFields .field-long{grid-column:span 6}
#cardExpertFields .expert-section-body>label{margin:0;padding:0;line-height:1.2}
#cardExpertFields .expert-section-body input,#cardExpertFields .expert-section-body select{height:26px;min-height:26px}
#cardExpertModal .quick-card-intro{display:none}
#cardExpertModal .card-expert-modal{height:auto;max-height:calc(100dvh - 24px)}
@media(max-width:650px){#cardExpertFields .field-long{grid-column:span 4}}
#editorPanel>p{display:none}
#editorPanel>label{display:inline-flex;flex-direction:row;align-items:center;width:49%;gap:6px}
#editorPanel>label select{flex:1;width:80px}
#instanceFields>.v69-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
#instanceFields>.v69-grid>label{display:grid;grid-template-columns:58px minmax(0,1fr);align-items:center;min-height:25px;text-align:left}
#instanceGrowth .growth-grid{grid-template-columns:repeat(6,minmax(0,1fr))}
#instanceGrowth input{padding:2px;font-size:10px}
.object-media-column>.v69-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
#editorPanel .object-media-column>label:has(input[type=range]){display:grid;grid-template-columns:1fr 34px;align-items:center}
#editorPanel .object-media-column>label input[type=range]{grid-column:1/-1}
#editorPanel .object-media-column>label output{grid-column:2;grid-row:1}
#editorPanel #editorCursorInfo,#editorPanel #editorSelectionInfo{padding:3px;min-height:18px;font-size:10px}
#editorPanel #editObjectAssetPreview{height:65px}

/* V7.0: separated minimap + 60% camera viewport */
.battle-view{display:grid;grid-template-columns:minmax(0,1fr) clamp(132px,15vw,202px);height:100%;min-width:0;min-height:0;background:#050d14}
.battle-view>.stage-wrap{min-width:0;min-height:0;position:relative;inset:auto}
.minimap-rail{min-width:0;display:flex;flex-direction:column;gap:9px;padding:10px 8px;border-left:1px solid #385268;background:#1b2c22;box-sizing:border-box}
.minimap-help{font-size:10px;line-height:1.5;color:#acc0cb}.minimap-rail button{border:1px solid #48687d;border-radius:6px;color:#e2edf4;background:#19364a;padding:7px;font-size:10px}
.point-menu{width:min(198px,calc(100% - 8px));max-height:calc(100% - 8px);box-sizing:border-box;overflow-y:auto;overscroll-behavior:contain}
.point-menu button{min-height:25px;padding:5px 6px;margin:2px 0}
.capture-editor-fields{gap:4px;padding:6px}.capture-editor-fields label{font-size:10px;gap:2px}.capture-editor-fields label input,.capture-editor-fields label select{padding:4px;min-height:27px}.capture-editor-fields canvas{height:72px}.capture-editor-fields small{font-size:9px;line-height:1.25}.capture-editor-fields .editor-row button{min-height:27px}
.sprite-drop-zone{border:2px dashed #7298b6;border-radius:10px;min-height:68px;display:grid;place-content:center;text-align:center;background:#0d3042;color:#ddf3ff;cursor:pointer;font-size:12px}.sprite-drop-zone small{font-size:10px;color:#aed6ec}.sprite-drop-zone.drag-over{border-color:#f5d67d;background:#254d5c}
.sprite-frame-editor{border-top:1px solid #365269;margin-top:8px;padding-top:8px;min-width:0;display:grid;gap:7px}
.sprite-frame-head{display:flex;justify-content:space-between;gap:6px;align-items:center;font-size:12px}.sprite-frame-head span{padding:3px 7px;border-radius:50px;color:#a5dcff;background:#153447;font-size:10px}
.sprite-frame-guide,.sprite-frame-editor small{font-size:10px;color:#b2cbd9;line-height:1.4}
.sprite-frame-editor button{padding:5px 7px;border:1px solid #476d85;border-radius:6px;color:#eaf5ff;background:#19374d;cursor:pointer;min-height:29px}
.sprite-frame-editor button:disabled{opacity:.4;cursor:default}.sprite-frame-editor button.danger{background:#402631;border-color:#8b5062}
.sprite-frame-toolbar{display:flex;flex-wrap:wrap;gap:5px}.sprite-frame-toolbar button{font-size:10px;font-weight:600}.sprite-frame-toolbar button[aria-pressed=true]{border-color:#e1bf64;color:#ffe3a1}
.sprite-frame-timeline{display:grid;grid-template-columns:repeat(auto-fill,minmax(66px,1fr));gap:4px;max-height:min(23dvh,180px);overflow:auto;padding:4px;background:#071722;border:1px solid #29485c;border-radius:8px}
.sprite-frame-item{min-width:0;border:1px solid #50728a;border-radius:7px;background:#102635;display:flex;flex-direction:column;align-items:center;padding:5px 3px;gap:4px;cursor:grab;user-select:none}
.sprite-frame-item.selected{border-color:#ffdb73;outline:2px solid #ffdb7377;background:#274152}.sprite-frame-item:focus-visible{outline:2px solid #9cdaff}.sprite-frame-item.dragging{opacity:.45}
.sprite-frame-item canvas{display:block!important;width:min(100%,70px)!important;height:54px!important;max-height:54px!important;object-fit:contain;border:0!important;border-radius:4px!important;background:transparent!important}
.sprite-frame-item .frame-number{font-size:10px;color:#e7f3ff;white-space:nowrap}.sprite-frame-item .frame-buttons{display:flex;gap:2px;justify-content:space-around;width:100%}.sprite-frame-item .frame-buttons button{flex:1;min-width:0;padding:2px 0;min-height:26px;font-size:11px}
.sprite-source-picker{padding:6px 7px;border:1px solid #35576d;border-radius:7px;background:#0b1f2d}.sprite-source-picker summary{cursor:pointer;color:#cceaff;font-size:11px;font-weight:600}
.sprite-source-pages{display:flex;align-items:center;justify-content:flex-end;gap:8px;margin:7px 0 5px;color:#c8ddea;font-size:10px}.sprite-source-pages button{min-height:26px;padding:3px 7px}
.sprite-source-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(82px,1fr));gap:6px;max-height:220px;overflow:auto}
.sprite-source-item{display:flex;align-items:center;flex-direction:column;gap:4px;min-width:0;border-color:#395a72!important;background:#102b3d!important;font-size:10px}.sprite-source-item.active{border-color:#ffdb73!important;background:#354139!important}.sprite-source-item canvas{display:block!important;width:76px!important;max-width:100%;height:58px!important;max-height:58px!important;border:0!important;background:transparent!important}
.field-skill-batch{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:7px;border:1px solid #3f6780;background:#102635;border-radius:8px;margin:7px 0}.field-skill-batch b{font-size:12px}.field-skill-batch small{font-size:10px;flex-basis:100%;color:#b4cfde}.field-skill-batch label{font-size:10px;display:flex;align-items:center;gap:4px}.field-skill-batch input{width:62px;min-height:25px}.field-skill-batch select,.field-skill-batch button{min-height:28px;padding:4px 7px;border-radius:6px}
@media(max-width:900px){.battle-view{position:absolute;inset:0 0 50px;grid-template-columns:minmax(0,1fr) 96px;height:auto}.battle-view>.stage-wrap{position:relative;inset:auto}.minimap-rail{padding:5px 3px;gap:5px}.minimap-help{font-size:8px}.minimap-rail button{font-size:8px;padding:5px 2px}.point-menu{left:50%!important;right:auto!important;top:auto!important;bottom:4px!important;transform:translateX(-50%);width:min(270px,calc(100% - 8px));max-height:calc(100% - 8px);display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:2px;padding:5px}.point-menu[hidden]{display:none!important}.point-menu-title,.point-menu .point-upgrade-btn,.point-menu #pointMenuClose{grid-column:1/-1}.point-menu button{min-height:26px!important;padding:3px 4px;font-size:9px;margin:0}.point-menu-title{font-size:10px;margin:0}.capture-editor-fields canvas{height:56px}}

/* Compact capture editor only when capture fields are active; keeps map/objects wide. */
.editor-panel:has(.capture-editor-fields:not([hidden])){width:min(390px,calc(100vw - 12px));padding:10px;max-height:calc(100dvh - 62px)}
.editor-panel:has(.capture-editor-fields:not([hidden])) h3{margin:-10px -10px 8px;padding:8px 10px;font-size:13px;top:-10px}
.editor-panel:has(.capture-editor-fields:not([hidden])) p{display:none}
@media(max-width:900px){.editor-panel:has(.capture-editor-fields:not([hidden])){left:auto;right:5px;top:52px;width:min(350px,calc(100vw - 10px));max-height:calc(100dvh - 58px)}}

/* V7.1: one canonical card catalog and compact card creation editor */
.card-catalog-modal{width:min(1300px,98vw);max-height:min(96dvh,960px);display:flex;flex-direction:column;min-height:0;overflow:hidden}
.card-catalog-modal .modal-head,.card-create-modal .modal-head{flex-shrink:0}
.catalog-toolbar{display:grid;grid-template-columns:minmax(120px,1.6fr) repeat(5,minmax(82px,1fr)) auto auto;align-items:center;gap:5px;padding:7px 10px;border-bottom:1px solid #355266;flex:0 0 auto;min-width:0;overflow:visible}
.catalog-toolbar input,.catalog-toolbar select{min-width:0;width:100%;height:32px;padding:4px 6px;font-size:11px;overflow:visible;text-overflow:ellipsis}.catalog-toolbar input{width:100%}
.catalog-toolbar .catalog-count{color:#a9c8d8;white-space:nowrap;margin:0;font-size:10px}
.card-catalog-modal>.full-backup-actions{flex-shrink:0;gap:6px;padding:5px 10px;margin:0;border-bottom:1px solid #28475d;background:#10242b;align-items:center}.card-catalog-modal>.full-backup-actions button{min-height:28px;padding:4px 9px;font-size:10px}.card-catalog-modal>.full-backup-actions .full-backup-status{font-size:10px;flex-basis:auto}
.catalog-add-btn{background:#155f63!important;color:#f6ffff!important;border:1px solid #36b8b2!important;font-weight:700}
.card-catalog-grid{min-height:150px;overflow:auto;flex:1;display:grid;grid-auto-rows:max-content;grid-template-columns:repeat(auto-fill,minmax(172px,1fr));align-content:start;gap:12px;padding:16px;overscroll-behavior:contain}
.catalog-card{min-width:0;min-height:max-content;align-self:start;border:1px solid #395469;border-radius:12px;background:linear-gradient(160deg,#223748,#0b1c2a);overflow:hidden;display:flex;flex-direction:column;box-shadow:0 5px 14px #0003}
.catalog-card[data-grade="SSS"]{border-color:#e4ba59}.catalog-card[data-grade="SS"]{border-color:#a9a4ee}.catalog-card[data-grade="S"]{border-color:#77a8d9}
.catalog-art{flex:0 0 auto;min-height:126px;position:relative;background:#142333;aspect-ratio:4/3;display:grid;place-items:center;overflow:hidden}
.catalog-art img{width:100%;height:100%;object-fit:contain}.catalog-art .catalog-rarity{position:absolute;left:6px;top:6px;border-radius:5px;padding:3px 6px;background:#12202ce8;color:#fbe8a2;font-weight:800}
.catalog-art .catalog-kind{position:absolute;right:6px;top:6px;padding:3px 6px;background:#10202ad9;border-radius:5px;font-size:11px}
.catalog-info{padding:10px;flex:1;display:flex;flex-direction:column;gap:6px}.catalog-info strong{font-size:15px;color:#f5efe1;overflow-wrap:anywhere}
.catalog-info small,.catalog-info p{color:#c0d3dd;font-size:11px;margin:0;line-height:1.4}.catalog-stats{display:flex;gap:4px;flex-wrap:wrap}.catalog-stats span{padding:3px 5px;border-radius:4px;background:#284559;color:#ecf3f6;font-size:11px}
.catalog-description{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:2.8em}
.catalog-actions{display:grid;grid-template-columns:1fr 1fr;gap:5px;padding:8px;border-top:1px solid #385064}.catalog-actions button{min-width:0;font-size:11px;padding:6px 3px}
.catalog-actions .catalog-delete{color:#ffb9af;border-color:#71403e}.catalog-footnote{color:#96b2be;font-size:11px;padding:7px 14px;border-top:1px solid #28475d}
.catalog-empty{grid-column:1/-1;text-align:center;padding:38px;color:#bed1df}
.card-create-modal{width:min(650px,96vw);max-height:91dvh;overflow:auto}.card-create-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:14px}
.card-create-form label[hidden]{display:none}
.card-create-form label{min-width:0;display:flex;flex-direction:column;gap:4px;font-size:12px}.card-create-form input,.card-create-form select,.card-create-form textarea{min-width:0;width:100%;box-sizing:border-box}
.card-create-form .create-wide{grid-column:1/-1}.card-art-drop{display:flex;position:relative;align-items:center;gap:12px;padding:10px;border:2px dashed #5b93a7;border-radius:9px;cursor:pointer;background:#132d3a}
.card-art-drop.drag-over{border-color:#ffd780;background:#31505b}.card-art-drop img{flex:0 0 84px;width:84px;height:96px;object-fit:contain;border-radius:5px;background:#091b27}
.card-art-drop span{font-weight:650;line-height:1.6}.card-art-drop small{display:block;color:#a4bfcc;font-weight:400}.card-art-drop input{position:absolute;inset:0;opacity:0;cursor:pointer;height:100%}
.card-create-error{color:#ffb7a7;background:#4b252b;padding:7px 10px;border-radius:6px}.card-create-form .modal-actions{margin:0;display:flex;justify-content:flex-end;gap:8px}
@media(max-width:700px){.card-catalog-modal{width:100%;max-height:92dvh}.card-catalog-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;padding:7px}.catalog-info{padding:7px}.catalog-actions{padding:5px;gap:4px}.catalog-actions button{font-size:10px;padding:6px 2px}.catalog-toolbar{gap:5px;padding:7px}.catalog-toolbar input{flex-basis:100%}.catalog-toolbar select{flex:1 1 27%;min-width:0}.catalog-toolbar .catalog-count{margin-left:0}.card-create-form{gap:7px;padding:9px}}
.catalog-card .catalog-art{flex:0 0 auto;min-height:126px;aspect-ratio:4/3}
.catalog-card .catalog-art img{display:block;min-height:0}
.card-catalog-grid{grid-auto-rows:max-content}
.catalog-card{align-self:start;min-height:max-content}

.mobile-menu-panel:not([hidden]){display:block}

/* V7.2 canonical field-adjacent movable map, zoom controls and strategist command deck. */
.battle-view{grid-template-columns:var(--field-track,minmax(0,1fr)) var(--map-track,clamp(132px,15vw,205px));justify-content:stretch}
.battle-view.minimap-left{grid-template-columns:var(--map-track,clamp(132px,15vw,205px)) var(--field-track,minmax(0,1fr))}
.battle-view.minimap-left>.stage-wrap{grid-column:2;grid-row:1}
.battle-view.minimap-left>.minimap-rail{grid-column:1;grid-row:1;border-left:0;border-right:1px solid #385268}
.minimap-rail{position:relative;min-height:0;display:block;padding:0;overflow:hidden}
#battleZoomValue{min-width:0;color:#ffdf86;font-size:12px;font-weight:800;text-align:center;font-variant-numeric:tabular-nums}
.enemy-difficulty-label{display:flex;align-items:center;gap:5px;white-space:nowrap;color:#dcefff;font-size:11px}
.enemy-difficulty-label select{width:96px;min-height:30px}
@media(min-width:901px) and (pointer:fine){.battle-shell{grid-template-rows:minmax(0,1fr) auto;}}
@media(max-width:900px),(pointer:coarse){
  .battle-view{grid-template-columns:minmax(0,1fr) clamp(90px,18vw,112px)}
  #battleZoomValue{font-size:10px}
  .minimap-rail .minimap-help{display:none}
  .minimap-rail #minimapCenter{padding:4px 2px;font-size:9px}
  .enemy-difficulty-label select{width:94px}
}

/* V7.5 canonical HUD docking and radial field controls. No duplicate menu/card layouts. */
.minimap-rail{position:relative;display:flex;flex-direction:column;align-items:stretch;gap:6px;min-width:0;min-height:0;padding:7px;overflow:hidden;box-sizing:border-box}
.lane-director-strip.docked-lane-director{position:relative;flex:none;inset:auto!important;left:auto!important;right:auto!important;top:auto!important;width:100%;max-width:100%;box-sizing:border-box;padding:6px 5px;margin:0;border:1px solid #597c85;border-radius:9px;background:#081722f1;box-shadow:0 5px 15px #0006;z-index:2;touch-action:none}
.lane-director-strip.docked-lane-director .lane-director-head{height:25px;display:flex;gap:3px;align-items:center;cursor:default;touch-action:auto;padding:0 0 4px;user-select:none}
.lane-director-strip.docked-lane-director .lane-director-head b{font-size:clamp(10px,1vw,13px);white-space:nowrap}
.lane-director-strip.docked-lane-director .lane-director-head small{display:none}
.lane-director-strip.docked-lane-director .lane-director-head button{display:block;min-width:21px;height:21px}.lane-director-strip.docked-lane-director .lane-director-head #laneDirectorReset{margin-left:auto}.lane-director-strip.docked-lane-director .lane-director-head #frontlineCollapseBtn{margin-left:0}
.lane-director-strip.docked-lane-director .lane-director-body{display:grid;grid-template-columns:minmax(0,1fr);gap:3px}
.lane-director-strip.docked-lane-director .lane-director-chip{min-width:0;padding:5px 4px;font-size:10px;overflow:hidden}
.lane-director-strip.docked-lane-director .lane-command-title b{font-size:11px}
.lane-director-strip.docked-lane-director .lane-command-title strong{font-size:10px}
.lane-director-strip.docked-lane-director .lane-command-numbers,.lane-director-strip.docked-lane-director .lane-director-chip small{font-size:9px}
.battle-map-tools{position:absolute;z-index:9;left:8px;top:37px;display:flex;align-items:center;gap:4px;max-width:calc(100% - 16px);flex-wrap:wrap;pointer-events:auto}
.battle-map-tools button{cursor:pointer;min-height:30px;padding:4px 7px;border:1px solid #9b8d62;border-radius:7px;background:#384a35f2;color:#f0f7fd;font-weight:750;font-size:11px;box-shadow:0 3px 9px #0009}
.battle-map-tools button.active{background:#3b644f;border-color:#f4d68a;color:#fff3c7}
.battle-map-tools button:disabled{opacity:.42;cursor:default}
.battle-map-tools span{padding:4px 6px;border-radius:5px;background:#061721cf;color:#e0eef5;font-size:10px}
#game{cursor:grab}#game:active{cursor:grabbing}#game.unit-selecting,#game.command-targeting{cursor:crosshair}
.point-menu.radial-point-menu,.point-menu.radial-point-menu.kingdom-menu,.point-menu.radial-point-menu.prod-command-menu{position:absolute!important;left:0;top:0;right:auto!important;bottom:auto!important;transform:none!important;display:block!important;box-sizing:border-box;width:clamp(180px,21vw,242px)!important;min-width:0;max-width:min(242px,calc(100% - 4px));height:clamp(180px,21vw,242px)!important;max-height:none!important;overflow:visible!important;margin:0!important;padding:0!important;border:0!important;border-radius:50%!important;background:radial-gradient(circle,transparent 0 24%,#5d6152ee 25% 28%,#363f35f5 29% 63%,#aaa083 64% 65%,#393d30 66% 69%,transparent 70%)!important;box-shadow:none!important;z-index:24!important;pointer-events:none}
.point-menu.radial-point-menu[hidden]{display:none!important}
.radial-point-menu .radial-menu-core{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:grid;place-items:center;width:42px;height:42px;border:2px solid #e8c578;border-radius:50%;background:#414a37f0;color:#f9d78c;font-size:23px;box-shadow:0 2px 12px #0009;pointer-events:none}
.radial-point-menu .point-menu-title{position:absolute;z-index:2;left:50%;top:50%;transform:translate(-50%,32px);width:78%;font-size:9px;line-height:1.1;color:#fff5c4;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none;text-shadow:0 1px 3px #001}
.radial-point-menu #v69PointControls,.radial-point-menu .prod-command-ring{position:absolute;inset:0;display:contents;margin:0}
.radial-point-menu button.radial-action{position:absolute!important;display:flex!important;flex-direction:column!important;justify-content:center!important;align-items:center!important;gap:1px!important;transform:translate(-50%,-50%)!important;width:clamp(43px,5.1vw,57px)!important;height:clamp(43px,5.1vw,57px)!important;min-width:0!important;min-height:0!important;margin:0!important;padding:2px!important;border:3px solid #b3a586!important;border-radius:50%!important;background:radial-gradient(circle at 35% 22%,#8f9980,#505e49 45%,#29372c 80%)!important;color:#f8ebc3!important;box-shadow:inset 0 2px 1px #e7dcaa88,inset 0 -3px 2px #142319,0 3px 0 #282b22,0 5px 8px #0008!important;cursor:pointer;pointer-events:auto;line-height:1.05!important;text-align:center!important;white-space:normal!important}
.radial-point-menu button.radial-action:hover,.radial-point-menu button.radial-action.active{background:linear-gradient(135deg,#537740,#1e4439)!important;border-color:#fff1a8!important}
.radial-point-menu button.radial-action:disabled{opacity:.38;cursor:default}
.radial-point-menu .ring-icon{display:block;width:26px;height:26px;font-size:clamp(16px,2vw,23px);line-height:1}
.radial-point-menu .ring-label{display:block;font-size:8px;line-height:1;letter-spacing:-.5px}
.radial-point-menu .ring-label small{display:block;font-size:7px;line-height:1;margin-top:1px;color:#ffe1a1}
@media(max-width:900px),(pointer:coarse){
 .minimap-rail{padding:3px;gap:4px}.minimap-help{display:none}
 .lane-director-strip.docked-lane-director{padding:3px 2px}.lane-director-strip.docked-lane-director .lane-director-head{height:22px}.lane-director-strip.docked-lane-director .lane-director-head b{font-size:9px}.lane-director-strip.docked-lane-director .lane-director-chip{padding:3px 2px}.lane-director-strip.docked-lane-director .lane-command-title b,.lane-director-strip.docked-lane-director .lane-command-title strong{font-size:8px}.lane-director-strip.docked-lane-director .lane-command-numbers,.lane-director-strip.docked-lane-director .lane-director-chip small{font-size:7px}
 .battle-map-tools{left:3px;top:3px;gap:2px;max-width:calc(100% - 6px)}.battle-map-tools button{min-height:23px;padding:3px 4px;font-size:9px}.battle-map-tools span{display:none}
 .point-menu.radial-point-menu,.point-menu.radial-point-menu.kingdom-menu,.point-menu.radial-point-menu.prod-command-menu{width:min(196px,calc(100% - 4px))!important;height:min(196px,calc(100% - 4px))!important;grid-template-columns:none!important}
 .radial-point-menu button.radial-action{width:44px!important;height:44px!important}.radial-point-menu .ring-icon{font-size:16px}.radial-point-menu .ring-label{font-size:7px}
}

.radial-point-menu button[hidden]{display:none!important}

/* V7.7 compact integrated data manager patch */
.bulk-modal{width:min(1520px,calc(100vw - 18px));max-width:calc(100vw - 18px);max-height:calc(100dvh - 18px);padding:10px 12px}
.db-toolbar{grid-template-columns:minmax(155px,1fr) 108px 105px 103px 94px 145px 75px;gap:5px}
.db-toolbar input,.db-toolbar select{height:32px;padding:4px 6px;font-size:11px}
.db-batchbar{gap:4px;padding:5px}
.db-batchbar label{font-size:11px}
.db-batchbar select,.db-batchbar input,.db-batchbar button,.file-button{height:30px;padding:4px 6px;font-size:11px}
.bulk-table-wrap{margin-top:6px;max-height:54vh}
.bulk-table{font-size:11px;min-width:1370px}
.bulk-table thead th{position:sticky;top:0;background:#102430;z-index:1;font-size:11px;padding:6px 4px;white-space:nowrap}
.bulk-table td{padding:3px}
.bulk-table input,.bulk-table select{height:26px;padding:2px 3px;font-size:11px;max-width:100%;min-width:0}.bulk-table td{padding:2px 2px}.bulk-table th{padding:4px 2px}.bulk-table .bulk-skill-select{width:100%;min-width:0;font-size:10px;padding:2px 1px}.bulk-table th:nth-child(2){width:110px}.bulk-table th:nth-child(n+15):nth-child(-n+17){width:125px}.bulk-table th:last-child{width:110px}.bulk-table td.bulk-skill-cell{padding:2px 1px}
/* Canonical building manager layout: compact performance table above spacious imagery. */
.bulk-system-workspace{display:grid;grid-template-columns:minmax(0,1fr);gap:8px;align-items:start;min-width:0}
.bulk-system-workspace[hidden]{display:none!important}
.bulk-modal.building-mode .bulk-system-workspace{grid-template-columns:minmax(0,1fr)}
/* Buildings open in image-first mode; detailed numerical settings expand on demand. */
.db-system-details{min-width:0}
.db-system-details>summary{display:none}
.bulk-modal.building-mode .db-system-details{border:1px solid #35536a;border-radius:8px;background:#11232c;padding:5px 8px}
.bulk-modal.building-mode .db-system-details>summary{display:flex;align-items:center;gap:10px;flex-wrap:wrap;min-height:30px;color:#e4f0eb;font-size:12px;font-weight:750;cursor:pointer}
.bulk-modal.building-mode .db-system-details>summary small{font-size:10px;color:#a8bdc5;font-weight:400}
.bulk-modal.building-mode .db-system-details[open]>summary{border-bottom:1px solid #314957;margin-bottom:7px;padding-bottom:6px}
.bulk-modal.building-mode #dbSystemTableWrap{width:100%;max-height:235px;min-width:0;min-height:0;margin:0;overflow:auto;position:static}
.bulk-modal.building-mode #facilityAssetPanel{width:100%;min-width:0;margin:0;position:static;top:auto}
.db-system-table{min-width:780px}
.db-system-table td,.db-system-table th{white-space:nowrap}
.db-system-table th:nth-child(1){width:92px}
.db-system-table th:nth-child(2){width:86px}
.db-system-table th:nth-child(n+3){width:74px}
.db-system-table input,.db-system-table select{min-width:0;width:100%;height:26px;padding:2px 3px;font-size:11px}
/* Building settings fit their actual content instead of stretching across the editor. */
.bulk-modal.building-mode .db-system-table{box-sizing:border-box;width:min(100%,1000px);min-width:0;table-layout:fixed;font-size:11px}
.bulk-modal.building-mode .db-system-table th:first-child{width:112px}
.bulk-modal.building-mode .db-system-table th:nth-child(2){width:90px}
.bulk-modal.building-mode .db-system-table th:nth-child(n+3){width:calc((100% - 202px)/8)}
.bulk-modal.building-mode .db-system-table td,.bulk-modal.building-mode .db-system-table th{padding:3px 4px;overflow:hidden;text-overflow:ellipsis}
.bulk-modal.building-mode .db-system-table input{height:25px;min-width:0;width:100%;box-sizing:border-box;padding:2px 4px;font-size:11px}
.facility-asset-panel{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;min-width:0;padding:12px;border:1px solid #35536a;border-radius:10px;background:#0d1d27}
.facility-asset-panel[hidden]{display:none!important}
.facility-asset-copy{display:flex;flex-wrap:wrap;gap:5px 12px;align-items:baseline;min-width:0}
.facility-asset-copy b{font-size:14px;color:#f2f8fb;white-space:nowrap}
.facility-asset-copy small{font-size:11px;line-height:1.4;color:#a9bec8}
.facility-asset-toolbar{display:grid;grid-template-columns:minmax(165px,1.5fr) minmax(135px,1fr) minmax(100px,.65fr) minmax(135px,1fr);gap:8px;align-items:end;min-width:0}
.facility-asset-toolbar label,.facility-asset-controls label{display:grid;min-width:0;gap:3px;font-size:11px;color:#cfe0e8}
.facility-asset-toolbar input,.facility-asset-toolbar select,.facility-asset-controls input,.facility-asset-controls select,.facility-asset-controls button{box-sizing:border-box;width:100%;min-width:0;height:33px;padding:4px 8px;border:1px solid #3a596e;border-radius:7px;background:#102330;color:#edf7fb;font-size:12px}
.facility-asset-toolbar select{max-width:100%}
.facility-asset-body{display:grid;grid-template-columns:minmax(0,1fr);gap:8px;align-items:start;min-width:0}
.facility-asset-right{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px;min-width:0;order:-1}
.facility-asset-preview-wrap{display:grid;grid-template-rows:minmax(205px,1fr) auto auto;gap:5px;min-width:0;min-height:0}
.facility-asset-preview-wrap canvas{box-sizing:border-box;display:block;width:min(100%,520px);height:auto;max-width:100%;aspect-ratio:360/190;border:1px solid #304d61;border-radius:8px;background:#091a23}
#facilityAssetStatus{font-size:11px;line-height:1.35;color:#d8e9ef;white-space:normal;overflow-wrap:anywhere}
.facility-asset-meta{font-size:10px;color:#95b0bc;overflow-wrap:anywhere}
.facility-asset-original{box-sizing:border-box;min-width:0;border:1px solid #304d61;border-radius:8px;background:#08141d;padding:8px}
.facility-asset-original-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}
.facility-asset-original-head b{font-size:12px;color:#eff8fb}
.facility-asset-original-head small{font-size:10px;color:#98b3bf}
.facility-asset-original-box{display:grid;place-items:center;min-width:0;min-height:205px;max-height:270px;overflow:auto;border:1px solid #203848;border-radius:7px;background:#071821}
#facilityAssetOriginalPreview{display:block;max-width:100%;max-height:238px;object-fit:contain}
.facility-asset-advanced{grid-column:1/-1;min-width:0;border:1px solid #314b5b;border-radius:8px;background:#0b1923;padding:7px 9px}
.facility-asset-advanced>summary{cursor:pointer;font-weight:700;font-size:12px;color:#d9e7eb;padding:4px 2px}
.facility-asset-advanced[open]>summary{margin-bottom:9px;border-bottom:1px solid #294354;padding-bottom:9px}
.facility-asset-controls{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;align-items:end;min-width:0}
.facility-asset-controls button{font-weight:800;cursor:pointer}
.facility-drop-zone{grid-column:span 3;min-height:65px;display:grid;gap:3px;align-content:center;padding:8px;border:1px dashed #4b748e;border-radius:8px;background:#0d1b25}
.facility-drop-zone b{font-size:12px}.facility-drop-zone span{font-size:10px;color:#aac0cb}
.facility-asset-controls .facility-frame-mode[hidden]{display:none!important}
.facility-asset-action-row{grid-column:span 2;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;align-items:end}
.facility-asset-controls .danger{border-color:#6e3b43;color:#ffc0c6}
.facility-batch-controls{display:flex;flex-wrap:wrap;align-items:center;gap:7px;padding-top:7px;border-top:1px solid rgba(255,255,255,.08)}
.facility-batch-controls label{font-size:11px;color:#d4e4ea;display:flex;align-items:center;gap:8px}
.facility-batch-controls input,.facility-batch-controls button{min-height:32px;font-size:12px}
.facility-batch-controls small,#facilityAssetBatchStatus{font-size:10px;line-height:1.45;color:#a9bec8}
@media(max-width:900px),(pointer:coarse){.bulk-modal:not(.building-mode):not(.skill-mode) #bulkCardTableWrap{min-height:240px;flex-shrink:0}.bulk-modal{width:calc(100vw - 10px);max-width:calc(100vw - 10px);padding:8px}.db-toolbar{grid-template-columns:minmax(155px,1fr) 108px 105px 103px 94px 145px 75px}.db-toolbar span{grid-column:auto;text-align:right}.bulk-modal.building-mode .db-system-table{width:920px;min-width:920px}.facility-asset-toolbar{grid-template-columns:repeat(2,minmax(0,1fr))}.facility-asset-right{grid-template-columns:1fr 1fr}.facility-asset-controls{grid-template-columns:repeat(3,minmax(0,1fr))}.facility-drop-zone{grid-column:span 2}.facility-asset-action-row{grid-column:span 1}.facility-asset-preview-wrap canvas{width:min(100%,440px);height:auto}.facility-asset-original-box{min-height:180px;max-height:220px}}
@media(max-width:600px){.facility-asset-right{grid-template-columns:1fr}.facility-asset-controls{grid-template-columns:repeat(2,minmax(0,1fr))}.facility-drop-zone,.facility-asset-action-row{grid-column:1/-1}.facility-asset-preview-wrap canvas{width:min(100%,440px);height:auto}.facility-asset-original-box{min-height:180px}.db-toolbar{grid-template-columns:minmax(155px,1fr) 108px 105px 103px 94px 145px 75px}.db-batchbar{flex-wrap:wrap}}

/* V7.8 canonical frontline command controls */
.frontline-command-bar{display:grid;gap:5px;margin-top:7px;padding-top:7px;border-top:1px solid #355166}
.frontline-command-bar button{min-height:31px;padding:5px 6px;color:#e7f4ff;background:#394f3d;border:1px solid #8f9870;border-radius:7px;font-size:12px;font-weight:800;cursor:pointer;touch-action:manipulation}
.frontline-command-bar button:hover{background:#24506b;border-color:#8bd2f8}
.frontline-command-bar .frontline-lane-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px}
.frontline-command-bar .frontline-base-btn{background:#514332;border-color:#a48150;color:#ffe6c5}
.frontline-command-bar small{display:block;font-size:10px;line-height:1.25;color:#a4bacb;text-align:center}
.lane-director-strip.docked-lane-director .frontline-command-bar button{font-size:clamp(10px,.85vw,12px);min-height:28px;padding:4px 2px}
@media(max-width:900px),(pointer:coarse){.lane-director-strip.docked-lane-director .frontline-command-bar button{font-size:10px;min-height:27px}.frontline-command-bar small{font-size:9px}}
/* The expanded frontline panel must remain reachable on shorter desktop/mobile viewports. */
.minimap-rail{overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#456075 #1b2c22}#frontlineCollapseBtn{flex:none;min-width:23px;min-height:22px;cursor:pointer;touch-action:manipulation}
.lane-director-content{display:flex;flex-direction:column;gap:4px}.lane-director-content[hidden]{display:none!important}.lane-director-strip.is-collapsed{padding:4px;touch-action:auto}.lane-director-strip.is-collapsed #laneDirectorReset{display:none!important}.lane-director-strip.is-collapsed .lane-director-head{cursor:default;touch-action:auto}.battle-view.minimap-collapsed.frontline-collapsed .lane-director-head small,.battle-view.minimap-collapsed.frontline-collapsed .lane-drag-grip,.battle-view.minimap-collapsed.frontline-collapsed #minimapDock,.battle-view.minimap-collapsed.frontline-collapsed #laneDirectorReset{display:none!important}
/* V7.9 canonical command dock — replaces previous dock and card rules. */
.lower-ui{--card-height:170px;display:grid;grid-template-columns:minmax(225px,2.5fr) minmax(0,6fr) minmax(225px,2.7fr);align-items:stretch;gap:3px;padding:0;background:transparent;border:0;box-shadow:none;min-height:0;overflow:visible}
.production-panel,.hand-panel,.strategist-panel{min-width:0;min-height:0;overflow:visible;padding:0;background:transparent;border:0;border-radius:0;box-shadow:none}
.section-title{height:22px;display:flex;align-items:center;justify-content:space-between;gap:4px;color:#f1e4bc;font-size:11px;font-weight:800;white-space:nowrap}
.section-title small{font-size:9px;color:#b9bda7;font-weight:500}
.hand{height:var(--card-height);display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:4px;overflow:visible;margin:0;padding:0}
.card{position:relative;min-width:0;width:100%;height:100%;padding:3px;overflow:hidden;border:2px solid #92947b;border-radius:10px;background:linear-gradient(155deg,#526054,#25362f 55%,#151f1c);color:#fff2cd;box-shadow:inset 0 1px 1px #fff5,0 2px 3px #0005;transition:filter .12s}
.card:hover{filter:brightness(1.16)}.card img{display:block;width:100%;height:calc(100% - 34px);object-fit:contain;background:radial-gradient(ellipse,#6c786448,#162a2420);border-radius:6px}
.card .card-copy{position:absolute;left:3px;right:3px;bottom:3px;padding:3px 1px;border-radius:5px;background:linear-gradient(#26392cea,#18271cf2)}
.card .name{font-size:clamp(9px,.8vw,13px);font-weight:850;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.card .meta{font-size:8px;color:#c4cbb5;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.card .cost{position:absolute;z-index:2;left:2px;top:2px;width:27px;height:29px;display:flex;align-items:center;justify-content:center;gap:1px;border:2px solid #e3cf92;border-radius:10px 10px 13px 13px;background:linear-gradient(#638b98,#254659);font-size:14px;font-weight:900;box-shadow:0 2px 3px #0007}
.card .cost small{font-size:6px}.card .type-icon{position:absolute;right:4px;top:5px;font-size:11px;color:#f5e4b1;text-shadow:0 1px 3px #000}
.card.GENERAL{border-color:#d6b55d}.card.STRATEGIST{border-color:#b499d4}.card.SOLDIER{border-color:#8aa697}.card.TACTIC{border-color:#be8260}.card.ITEM{border-color:#9abb68}
.card.disabled{filter:saturate(.65);opacity:.6}.card.counter-ready{box-shadow:0 0 12px #f2cf64}
.production-slots{height:var(--card-height);display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px}
.prod-slot{position:relative;min-width:0;height:100%;display:flex;flex-direction:column;gap:3px;align-items:stretch;justify-content:flex-start;padding:4px 3px 8px;border:1px dashed #85947a;border-radius:9px;background:linear-gradient(#425144,#24362d);overflow:hidden;text-align:center}
.prod-slot.assigned{border-style:solid}.prod-slot.pending{outline:2px solid #f6d773}
.prod-main{display:flex;flex:1;min-height:0;width:100%;flex-direction:column;align-items:center;justify-content:center;padding:0;border:0;background:transparent;color:#f5e7c6;overflow:hidden}
.prod-main img{height:calc(var(--card-height) - 83px);width:100%;min-height:24px;object-fit:contain}.prod-main strong{font-size:10px;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.prod-main span{font-size:8px;color:#c2ccb7;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.prod-controls{display:grid;grid-template-columns:1fr 1fr;gap:3px;width:100%}.prod-lanes{grid-column:1/-1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:2px;width:100%;margin:0}
.prod-lanes button,.prod-controls>button{min-width:0;min-height:23px;padding:1px 0;border:1px solid #8a8566;border-radius:5px;background:linear-gradient(#53634b,#2e4033);color:#e5e8ce;font-size:10px;cursor:pointer}
.prod-lanes button.active,.prod-controls>button.active{background:linear-gradient(#909857,#4e623b);border-color:#e4cb81;color:#fff7da}
.prod-slot .prog{position:absolute;left:4px;right:4px;bottom:3px;height:3px;background:#18271e;border-radius:4px;overflow:hidden}.prod-slot .prog i{display:block;height:100%;background:linear-gradient(90deg,#719e63,#d1dc8d)}
.prod-slot .prod-queue{display:none}
.strategist-panel{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:22px 55px minmax(0,1fr) auto;gap:0;height:calc(var(--card-height) + 30px)}
.strategist-command-row{display:grid;grid-template-columns:minmax(0,1fr) 29px;gap:3px;min-width:0;height:55px}
.strategist-slot{display:flex;align-items:center;justify-content:center;min-width:0;height:100%;border:1px dashed #9b9471;border-radius:7px;color:#bac2a8;font-size:11px;overflow:hidden}
.strategist-slot.active{justify-content:flex-start;border-style:solid;background:linear-gradient(145deg,#4a4d4a,#2a3540);color:#f5e4bd;padding:2px}
.strategist-slot img{width:49px;height:49px;object-fit:contain;flex:none;margin-right:4px}.strategist-slot>div{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.strategist-slot small{font-size:9px}
.strategist-lane-buttons{display:grid;grid-template-rows:repeat(3,1fr);gap:2px}.strategist-lane-buttons button{min-height:0;padding:0;border:1px solid #8e8a6e;border-radius:4px;background:#344b42;color:#e8e4c8;font-size:9px}.strategist-lane-buttons button.active{background:#76835a}.strategist-lane-buttons button:disabled{opacity:.5}
.strategist-skills{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:3px;padding:3px 0;min-height:0;align-items:stretch}.strategist-skills:empty::after{content:'책사를 배치하면 전술이 활성화됩니다';grid-column:1/-1;align-self:center;text-align:center;font-size:10px;color:#a9b49f}
.strategist-skills button{min-width:0;min-height:24px;height:100%;padding:2px;border:1px solid #9e9474;border-radius:7px;background:linear-gradient(#686459,#3c4145);color:#f6e9ce;font-size:10px;line-height:1.25;white-space:pre-line;overflow:hidden}.strategist-skills button:disabled{opacity:.45}.strategist-skills button.active{border-color:#ffe09a;background:linear-gradient(#b58b41,#775222);color:#fff9df;box-shadow:0 0 0 1px #ffe09a inset}
.hero-status{height:35px;min-height:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:2px;overflow:visible;margin:0}.hero-status:empty{height:0}
.hero-pill{position:relative;min-width:0;height:35px;display:flex;align-items:center;gap:2px;padding:2px;border:1px solid #aa8e54;border-radius:6px;background:linear-gradient(#5d6546,#303e2c);cursor:pointer;overflow:hidden}.hero-pill img{width:24px;height:28px;object-fit:contain}.hero-pill b{font-size:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#ffe4a6}.hero-pill .ult{position:absolute;left:2px;right:2px;bottom:1px;height:2px;background:#27321e}.hero-pill .ult i{display:block;height:100%;background:#efcf70}
.object-image-drop{display:flex!important;flex-direction:column;gap:5px!important;padding:12px!important;border:2px dashed #a5ae77!important;border-radius:10px!important;background:linear-gradient(135deg,#344c3b,#20312b)!important;cursor:pointer;grid-column:1/-1}.object-image-drop b{font-size:12px}.object-image-drop small{font-size:10px;color:#b5c6aa}.object-image-drop.drag-over{background:#526e3c!important;border-color:#ffe299!important;box-shadow:inset 0 0 20px #e6c76644}.object-image-drop[aria-busy=true]{opacity:.6;pointer-events:none}
@media(max-width:1100px){.lower-ui{--card-height:154px;grid-template-columns:220px minmax(0,1fr) 205px}.section-title small{font-size:8px}.hero-pill img{width:19px}.card .cost{width:23px;height:25px;font-size:12px}}
@media(max-width:900px),(pointer:coarse){.lower-ui{--card-height:141px;position:absolute;left:3px;right:3px;bottom:calc(46px + env(safe-area-inset-bottom,0px));z-index:18;grid-template-columns:1fr;padding:0;border-radius:0;box-shadow:none}.lower-ui>.production-panel,.lower-ui>.hand-panel,.lower-ui>.strategist-panel{display:none}.lower-ui>.mobile-active{display:block}.lower-ui.hand-with-strategist{grid-template-columns:minmax(0,1fr) minmax(155px,26%)}.lower-ui.hand-with-strategist>.hand-panel{display:block}.lower-ui.hand-with-strategist>.strategist-panel{display:grid}.lower-ui:not(.hand-with-strategist)>.strategist-panel.mobile-active{display:grid}.hand{gap:2px}.section-title{font-size:9px}.section-title small{font-size:7px}.strategist-panel{grid-template-rows:22px 45px minmax(0,1fr) auto}.strategist-command-row{height:45px}.strategist-slot img{width:37px;height:39px}.strategist-slot{font-size:9px}.strategist-skills button{font-size:8px}.hero-status,.hero-pill{height:28px}.hero-pill img{width:17px;height:23px}.hero-pill b{font-size:7px}.mobile-targeting .lower-ui{transform:translateY(calc(100% + 54px));opacity:.1;pointer-events:none}}
@media(max-width:560px){.lower-ui.hand-with-strategist{grid-template-columns:minmax(0,1fr) 135px;--card-height:183px}.hand{grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr))}.card img{height:calc(100% - 20px)}.card .meta{display:none}.card .name{font-size:9px}.card .cost{width:20px;height:22px;font-size:10px}.card .type-icon{font-size:8px}.strategist-panel{grid-template-rows:22px 52px minmax(0,1fr) auto}.strategist-command-row{height:52px}.strategist-skills{grid-template-columns:1fr}.hero-status{grid-template-columns:repeat(3,minmax(0,1fr));height:auto;gap:2px}.hero-pill{height:23px}.hero-pill img{width:15px;height:18px}}

.ring-icon svg{display:block;width:100%;height:100%;filter:drop-shadow(0 1px 1px #141b16)}
/* V8.0 — sculpted command cards and live action availability */
#hand .command-card{border:1.5px solid #a4a99a!important;border-radius:12px 12px 9px 9px!important;background:linear-gradient(145deg,#645238,#201c18)!important;box-shadow:inset 0 0 0 2px #211d18,0 5px 9px #0008;overflow:visible;position:relative;transition:filter .16s,border-color .16s,box-shadow .16s,transform .16s;isolation:auto;transform-origin:center bottom}
#hand .command-card img{filter:saturate(1.14) contrast(1.06);border-radius:7px;object-fit:cover}
#hand .command-card .card-copy{background:linear-gradient(0deg,#171813 10%,#24281fe8 78%,transparent)!important;padding-top:15px}
#hand .command-card .name{color:#fff2c6!important;text-shadow:0 2px 2px #000;font-weight:900}
#hand .command-card .cost{background:#315d3d!important;color:#fff!important;border:1.5px solid #d6e2ba!important;border-radius:50%!important;box-shadow:0 1px 4px #0008;z-index:3}
#hand .command-card.playable{opacity:1!important;filter:brightness(1.09)!important;border-color:#bacbb0!important;box-shadow:0 0 5px #aec58d45,0 4px 7px #0007}
#hand .command-card.playable:hover,#hand .command-card.playable:focus-visible{filter:brightness(1.25)!important;border-color:#ffedaf!important}
#hand .command-card.disabled,#hand .command-card:disabled{opacity:.55!important;filter:grayscale(.72) brightness(.6)!important;cursor:pointer;box-shadow:none!important}
.full-backup-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center;flex-basis:100%;padding:9px 0;border-top:1px solid #baaa7240}
.full-backup-actions button{min-height:36px;background:linear-gradient(#526743,#2c3d29);border:1px solid #a4b67a;color:#faf1d2;border-radius:6px;padding:7px 12px}
.full-backup-status{font-size:11px;color:#d1c5a4;flex-basis:100%}
@media(prefers-reduced-motion:reduce){#hand .command-card{transition:none}}

/* V8.1: hand actions share the existing header, without taking card height. */
.hand-actions{display:flex;align-items:center;justify-content:flex-end;gap:3px;min-width:0}
.hand-actions button{font:inherit;font-size:10px;font-weight:800;border:1px solid #9c8c64;border-radius:5px;background:#343f2e;color:#fff0b9;padding:2px 5px;white-space:nowrap;cursor:pointer}
.hand-actions button:hover,.hand-actions button.active{background:#80603d;color:white;border-color:#ffce81}
.hand-actions button:disabled{opacity:.4;cursor:default}
#hand .command-card.hand-discard-choice{border-color:#e5bd5e!important;opacity:1!important;filter:none!important;cursor:pointer!important;box-shadow:inset 0 0 0 2px #bd7c36,0 0 10px #ffc26988!important}
@media(max-width:900px){.hand-actions button{font-size:9px;padding:1px 3px}.hand-actions{gap:2px}}
@media(max-width:560px){.hand-actions button{font-size:8px;padding:1px 2px}.hand-actions #deckCounter{font-size:7px}}

/* V8.3 independent ally/enemy troop card registration */
.enemy-roster-panel{display:flex;flex-direction:column;gap:7px;padding:10px 12px;background:#101f2b;border:1px solid #355368;border-radius:10px;margin:8px 0;color:#e9f5fb}
.enemy-roster-panel[hidden]{display:none}.enemy-roster-panel small{color:#a7c4d2;font-size:11px}
.enemy-roster-choices{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.enemy-roster-choices label{display:flex;flex-direction:column;gap:4px;font-size:12px}
.enemy-roster-choices select{width:100%;min-width:0;background:#1b3444;color:#eef8fc;border:1px solid #46647a;border-radius:5px;padding:5px}
@media(max-width:640px){.enemy-roster-choices{grid-template-columns:1fr}}



.sprite-card-art-panel{border:1px solid #3c5b6f;border-radius:8px;background:#1b2c22;padding:7px}
.sprite-card-art-head{display:flex;justify-content:space-between;gap:6px;align-items:center;margin-bottom:6px}.sprite-card-art-head b{font-size:10px}.sprite-card-art-head small{font-size:9px;color:#a9c0cf;text-align:right}
.sprite-card-art-body{display:grid;grid-template-columns:74px minmax(0,1fr);gap:8px;align-items:start}
#spriteCardArtPreview{width:74px;height:92px;object-fit:contain;border:1px solid #426177;border-radius:7px;background:#09131b}
.sprite-card-art-actions{display:grid;gap:6px}.sprite-card-art-actions label{font-size:9px;color:#aec1cd}.sprite-card-art-buttons{display:grid;grid-template-columns:1fr 1fr;gap:6px}.sprite-card-art-buttons .secondary{background:#132738;border-color:#436d89;color:#ccecff}
.frame-source-edit{display:flex;align-items:center;gap:4px;font-size:9px;color:#d5e8f2}.frame-source-edit input{width:54px;padding:2px 4px;background:#09131b;color:#fff;border:1px solid #4f748c;border-radius:5px;font-size:10px}

/* V8.9.2 — compact shared sprite/animation side + card-type filters */
.sprite-layout,.animation-layout{align-content:start}.sprite-modal>.modal-head{flex:none;padding:4px 6px;margin-bottom:4px}.sprite-frame-editor{margin-top:3px;padding-top:3px;gap:4px}.sprite-reg-list{max-height:65px}.sprite-controls #spriteRegRemove{height:26px}
/* One canonical motion selector shared by sprite registration and animation editor. */
.motion-filter-bar{grid-column:1/-1;display:grid;grid-template-columns:80px 96px minmax(110px,1fr) minmax(320px,2.5fr);gap:5px;align-items:end;min-width:0;padding:7px 9px;border:1px solid #2f485a;border-radius:9px;background:#25342c}
.motion-filter-bar label{min-width:0;font-size:10px;color:#aec1cd}
.motion-filter-bar select{display:block;width:100%;min-width:0;height:32px;margin-top:3px;padding:4px 6px;overflow:hidden;text-overflow:ellipsis;background:#09131b;color:#fff;border:1px solid #385469;border-radius:7px;font-size:11px}
.motion-filter-bar select:disabled{opacity:.55}
.motion-filter-bar .motion-state-source{display:none!important}
.motion-state-toolbar{grid-column:4;grid-row:1;display:flex;align-items:center;gap:7px;min-width:0}
.motion-state-buttons{flex:1;display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:4px;min-width:0}
.motion-state-buttons button{min-width:0;min-height:34px;padding:4px 1px;color:#d3e8dc;background:#1b333b;border:1px solid #547365;border-radius:7px;font-size:clamp(10px,.85vw,12px);font-weight:750;white-space:nowrap;cursor:pointer}
.motion-state-buttons button:hover,.motion-state-buttons button:focus-visible{border-color:#d5cb8a;background:#35564f}
.motion-state-buttons button.active,.motion-state-buttons button[aria-pressed=true]{background:linear-gradient(#718f55,#3b5d3d);border-color:#e5d38b;color:#fff8dc;box-shadow:inset 0 0 0 1px #d7dfaa66}
.motion-filter-bar .motion-filter-save{flex:none;width:116px;height:34px;padding:4px 6px;border:1px solid #9cbd6c;border-radius:7px;background:#426340;color:#fff;font-size:11px;font-weight:700;white-space:nowrap;cursor:pointer}
.motion-filter-bar .motion-filter-save:disabled{opacity:.42;cursor:default}
@media(max-width:1100px){.sprite-controls{grid-template-columns:repeat(4,minmax(0,1fr))}.motion-filter-bar{grid-template-columns:68px 82px minmax(100px,1fr)}.motion-state-toolbar{grid-column:1/-1;grid-row:auto}.sprite-layout{grid-template-columns:minmax(270px,38%) minmax(0,1fr)}.catalog-toolbar{grid-template-columns:repeat(4,minmax(0,1fr))}.catalog-toolbar #catalogSearch{grid-column:span 2}.catalog-toolbar #catalogCount{justify-self:start}}
@media(max-width:760px){.sprite-layout{grid-template-columns:minmax(0,1fr);overflow-y:auto}.sprite-controls{overflow:visible}.sprite-preview-wrap{overflow:visible}.catalog-toolbar{grid-template-columns:repeat(2,minmax(0,1fr))}.catalog-toolbar #catalogSearch{grid-column:1/-1}.ref-screen-b .top-actions .toolbar-icon{display:none}.ref-screen-b .top-actions{gap:2px}.ref-screen-b .top-actions>.combat-primary{font-size:9px;padding:2px 3px;min-height:23px}}
.motion-copy-tools{grid-column:1/-1;display:flex;align-items:end;gap:8px;min-width:0;padding-top:4px;border-top:1px solid #52705e55}
.motion-copy-tools label{flex:0 1 205px}
.motion-copy-tools button{min-height:32px;padding:4px 10px;background:#304a60;border:1px solid #739dbb;border-radius:7px;color:#fff3dc;font-size:11px;font-weight:800;cursor:pointer}
.motion-copy-tools button:disabled{opacity:.4;cursor:default}
.motion-copy-tools small{font-size:10px;color:#aec4b8;align-self:center}
.sprite-motion-size{display:grid;grid-template-columns:1fr auto;align-items:center;gap:5px;padding:5px 8px;background:#172b2c;border:1px solid #476859;border-radius:8px}
.sprite-motion-size input{grid-column:1/-1;margin-top:0!important;accent-color:#b2d681}
.sprite-motion-size output{font-size:12px;font-weight:800;color:#ecdfaa}
@media(max-width:640px){.motion-filter-bar{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.motion-filter-bar>label:nth-of-type(3){grid-column:1/-1}.motion-state-toolbar{flex-direction:column;align-items:stretch}.motion-state-buttons button{font-size:9px;padding:4px 0;min-height:32px}.motion-filter-bar .motion-filter-save{width:100%}.motion-copy-tools{flex-wrap:wrap}.motion-copy-tools label{flex:1}.motion-copy-tools small{flex-basis:100%}.sprite-frame-timeline{grid-template-columns:repeat(auto-fill,minmax(92px,1fr))}}


/* V8.9.8 — compact allied/AI deck switch, shared deck editor. */
.deck-team-picker{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:700;white-space:nowrap;color:#cfe7fc}.deck-team-picker select{min-width:110px;background:#1a3545;color:#e7f9ff;border:1px solid #4d8197;border-radius:6px;padding:5px}.deck-team-mode{display:inline-flex;align-items:center;color:#a8d9e5;font-size:11px;white-space:nowrap;padding:3px 8px;border-radius:6px;background:#18313d}.prep-toolbar:has(.deck-team-picker){display:flex;flex-wrap:wrap;align-items:center;gap:6px}.prep-toolbar:has(.deck-team-picker) #deckSearch{min-width:160px;flex:1 1 170px}

/* V8.9.10: compact command keypad; deck shortcut remains visible above the hand on every viewport. */
.frontline-command-bar{display:grid;grid-template-columns:minmax(0,1fr);gap:6px;margin-top:8px;padding:9px;border:1px solid #456274;border-radius:11px;background:linear-gradient(145deg,rgba(19,41,56,.94),rgba(19,32,34,.94));box-shadow:inset 0 1px 0 #a6cbcf23,0 4px 14px #01070a66}
.frontline-command-bar>button{display:flex;justify-content:center;gap:8px;align-items:center;height:33px;min-height:33px;border:1px solid #62816e;border-radius:7px;background:linear-gradient(125deg,#316954,#173b3b);color:#e8fff2;font-weight:800;font-size:11px;letter-spacing:.03em;transition:background .16s,border-color .16s,transform .16s}
.frontline-command-bar>button:first-child{background:linear-gradient(130deg,#496f4c,#244937);border-color:#b3c582}
.frontline-command-bar .frontline-lane-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}
.frontline-command-bar .frontline-lane-row button{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:0;min-width:0;height:43px;padding:3px 1px;border:1px solid #496b79;border-radius:7px;background:linear-gradient(#2a485a,#162d3e);color:#d7f2ff;font-size:10px;font-weight:800}
.frontline-command-bar .frontline-lane-row button span:first-child{font-size:15px;line-height:1.05;color:#ffe2a0}
.frontline-command-bar>button.frontline-base-btn{background:linear-gradient(115deg,#5c4e39,#302d2c);border-color:#a48a5f;color:#ffebcd}
.frontline-command-bar button:hover{border-color:#e7d191;background:#476c65;transform:translateY(-1px)}
.frontline-command-bar button:focus-visible{outline:2px solid #f2dca5;outline-offset:2px}
#deckEditorBtn{white-space:nowrap!important}

/* V8.9.12: clean card-shop portraits, compact single-line EN/ATK/DEF/HP. */
.card-catalog-grid .catalog-card{position:relative}
.card-catalog-grid .catalog-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:2px;flex-wrap:nowrap;min-width:0}
.card-catalog-grid .catalog-stats span{min-width:0;box-sizing:border-box;white-space:nowrap;padding:3px 1px;text-align:center;font-size:10px;font-variant-numeric:tabular-nums}
.card-catalog-grid .catalog-portrait-only .catalog-art{aspect-ratio:5/7;min-height:0;background:transparent}
.card-catalog-grid .catalog-portrait-only .catalog-art img{width:100%;height:100%;object-fit:contain}
.card-catalog-grid .catalog-name-placeholder{display:flex;align-items:center;justify-content:center;width:100%;height:100%;min-height:120px;padding:16px;box-sizing:border-box;text-align:center;line-height:1.25;font-weight:800;font-size:clamp(14px,1.35vw,21px);color:#f5e9c8;background:linear-gradient(160deg,#354739,#1c2925);border:1px solid #667860;border-radius:9px;overflow-wrap:anywhere}
.card-catalog-grid .catalog-portrait-only .catalog-name-placeholder{aspect-ratio:5/7;min-height:0}

.card-catalog-grid .catalog-portrait-only .catalog-info{padding:5px 3px;flex:0 0 auto;gap:0}
.card-catalog-grid .catalog-portrait-only .catalog-actions{position:absolute;top:4px;right:4px;display:grid;grid-template-columns:auto auto;gap:3px;padding:0;background:transparent;border:0;opacity:1}
.card-catalog-grid .catalog-portrait-only:hover .catalog-actions,.card-catalog-grid .catalog-portrait-only:focus-within .catalog-actions{opacity:1}
.card-catalog-grid .catalog-portrait-only .catalog-actions button{width:auto;height:28px;min-width:30px;min-height:28px;padding:2px 6px;border-radius:5px;background:#10251cee;color:#fff3d9;font-size:11px}
@media(hover:none),(pointer:coarse){.card-catalog-grid .catalog-portrait-only .catalog-actions{opacity:1}}
@media(max-width:700px){.card-catalog-grid .catalog-stats span{font-size:9px;padding:3px 0}.card-catalog-grid .catalog-portrait-only .catalog-actions button{width:auto;height:28px;min-width:28px;min-height:28px}}

.object-editor-toolbar{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:2px}.visual-mode-toggle{min-height:30px;padding:6px 10px;border:1px solid #c6ba87;border-radius:8px;background:linear-gradient(#566e59,#32483b);color:#fff2c7;font-weight:800;cursor:pointer}.visual-mode-toggle.active{background:linear-gradient(#b18a45,#6e4d1e);border-color:#ffe2a2;box-shadow:0 0 0 1px #ffe2a2 inset}.object-editor-fields.visual-mode .object-media-column,.object-editor-fields.visual-mode .object-ability-column{background:linear-gradient(180deg,#132128d4,#0c171dd8);border:1px solid #2f4956;border-radius:12px;padding:10px}.object-editor-fields.visual-mode canvas{width:100%;max-width:100%;height:auto;border-radius:10px;box-shadow:0 4px 12px #0007}.object-editor-fields.visual-mode .instance-advanced{background:rgba(255,255,255,.04);border-radius:10px;padding:6px 8px}.object-editor-fields.visual-mode #instanceHint{font-size:12px;line-height:1.45;color:#d9e5db}
/* V8.9.15 map overview: controls stay visible, card dock is temporarily tucked away. */
.battle-shell.map-overview .battle-view{min-height:0}
.battle-shell.map-overview #battleFullViewBtn{background:#826a3a;border-color:#ffdd96;color:#fff5d1}
.object-construction-actions{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px}
.object-construction-actions button{min-height:33px;min-width:0;border:1px solid #9cba9b;border-radius:8px;background:#244539;color:#f0f7db;font-size:11px;cursor:pointer}

@media(max-width:900px),(pointer:coarse){.battle-shell.map-overview .battle-view{bottom:50px}}

/* Canonical shared capture asset workflow */
.capture-workflow,.flag-workflow{display:grid;grid-template-columns:minmax(0,1fr);gap:7px;padding:9px;border:1px solid #6676597d;border-radius:10px;background:rgba(14,28,29,.82);grid-column:1/-1}.capture-workflow small{font-size:11px;line-height:1.5;color:#b8d3c0}.capture-workflow button,.flag-workflow button,#objectAsCaptureBtn{min-height:32px;background:linear-gradient(#668068,#304a3c);color:#f5e9ca;border:1px solid #b7bf87;border-radius:8px;cursor:pointer}.capture-mark{display:flex;gap:8px;align-items:center;grid-column:1/-1;font-size:12px}.capture-mark input{width:18px;height:18px}.flag-workflow label{display:grid;gap:3px}.flag-workflow input,.flag-workflow select{width:100%;max-width:100%}.tower-explainer{padding:6px 8px;border-left:3px solid #bb9c65;color:#f7d9b3}.capture-editor-fields #editCaptureSiteType{min-width:0;width:100%}

.object-asset-visible{grid-column:1/-1;display:grid;gap:7px;padding:8px;border:1px solid #667c70;border-radius:9px;background:rgba(21,37,37,.68)}.object-asset-visible>.object-asset-box{min-width:0}

.object-new-type{grid-column:1/-1;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:5px}.object-new-type label{min-width:0}.object-new-type button{min-height:31px;padding:5px 10px;background:#435b49;border:1px solid #9cad82;border-radius:8px;color:#fff3d6}.object-new-type input{min-width:0;width:100%}

/* Stage canvas stays centered under the fixed command cards. Panning, not hiding cards, reveals the edges. */
.battle-view>.stage-wrap>#game{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);max-width:none;max-height:none}
.profile-hud{display:grid!important;grid-template-columns:38px minmax(0,1fr);grid-template-rows:minmax(0,1fr) auto;gap:1px 5px;align-items:center;padding:3px 5px}
.profile-hud>.hud-portrait{grid-column:1;grid-row:1/3;width:37px;height:37px;border:1px solid #819a9b;border-radius:50%;padding:0;background:#1c3136;overflow:hidden;cursor:pointer}
.profile-hud>.hud-portrait canvas{display:block;width:100%;height:100%}
.profile-hud>.base-label{grid-column:2;grid-row:1;min-width:0;grid-template-columns:auto 1fr auto;gap:2px 4px}
.profile-hud>.base-label .hud-icon{display:none}
.profile-hud>.base-label b{grid-column:auto;font-size:12px}
.profile-hud>.bar{grid-column:2;grid-row:2;height:3px}
.profile-hud>.portrait-status{grid-column:2;grid-row:3;white-space:nowrap;font-size:9px;color:#b4cfcd;min-width:0;text-overflow:ellipsis;overflow:hidden}
.portrait-modal{width:min(770px,calc(100vw - 18px));max-height:90dvh;overflow:auto}
.portrait-card-select{display:grid;gap:4px;margin:9px 0;font-size:12px}
.portrait-card-select select{width:100%;min-height:36px;background:#1b3439;color:#edf6f3}
.portrait-crop-layout{display:grid;grid-template-columns:minmax(0,360px) minmax(150px,1fr);align-items:start;gap:12px}
#portraitCropCanvas{width:100%;aspect-ratio:1;touch-action:none;cursor:crosshair;background:#0e222b;border-radius:8px;max-width:360px}
.portrait-crop-options{display:flex;flex-direction:column;align-items:center;gap:12px;font-size:12px}
.portrait-crop-options input{width:100%}
#portraitCropResult{border-radius:50%;border:2px solid #d0dfa7;width:112px;height:112px}
#portraitApplyBtn{min-height:38px;padding:6px 12px;border:1px solid #b8ca92;background:#355342;color:#fff7d8;border-radius:8px}
.facility-quick-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;min-width:0}
.facility-quick-drop{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:space-between;min-width:0;min-height:205px;padding:9px;gap:7px;border:1px dashed #7d9878;border-radius:9px;background:#152822;color:#e5ead0;cursor:pointer;font-size:12px;text-align:center}
.facility-quick-drop img{display:block;width:100%;height:145px;object-fit:contain;background:#091b20;border-radius:6px}
.facility-quick-drop span{color:#acc9b3;font-size:11px}
.facility-quick-drop.drag-over{border-color:#ffe0a1;background:#2b4634;box-shadow:0 0 0 1px #ffe0a1 inset}
.facility-quick-drop input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}
.facility-quick-status{font-size:11px;color:#b7cfba;line-height:1.35;margin:2px 0}
@media(max-width:900px){.portrait-crop-layout{grid-template-columns:1fr}.facility-quick-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.facility-quick-drop{min-height:155px}.facility-quick-drop img{height:95px}.profile-hud>.portrait-status{font-size:7px}}

/* Canonical object-style registry: one map object may choose one of three shared art slots. */
.object-style-tiles{grid-column:1/-1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;width:100%;min-width:0}.object-style-tile{display:flex;flex-direction:column;min-width:0;gap:6px;align-items:stretch;padding:8px;border:1px dashed #718c77;border-radius:9px;background:#142832;color:#f0eacb}.object-style-tile.active{border:2px solid #e1c67d;background:#264137}.object-style-tile.drag-over{border-color:#fff1af;background:#405841}.object-style-tile button{padding:5px 2px;border-radius:6px;border:1px solid #899b7a;background:#304b41;color:#f8ebc7;cursor:pointer;font-size:11px;font-weight:700}.object-style-tile.active button{background:#715b35}.object-style-tile img{width:100%;height:82px;object-fit:contain;border-radius:6px;background:#0b1b22}.object-style-tile img[hidden]{display:none}.object-style-tile small{font-size:10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.object-style-tile label{display:flex;position:relative;justify-content:center;align-items:center;padding:6px 4px;border-radius:6px;background:#26493f;border:1px solid #6e937e;cursor:pointer;font-size:10px}.object-style-tile label input{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;height:100%}@media(max-width:460px){.object-style-tiles{gap:3px}.object-style-tile{padding:4px}.object-style-tile img{height:54px}.object-style-tile button{font-size:9px}}

/* Shared empty-site images are registered separately from constructed facilities. */
.empty-capture-library{display:grid;gap:9px;padding:12px;border:1px solid #7b865e;border-radius:10px;background:linear-gradient(160deg,#162c29,#102329);min-width:0}
.empty-capture-heading{display:grid;gap:4px}.empty-capture-heading b{font-size:14px;color:#f1e6ba}.empty-capture-heading small{font-size:11px;line-height:1.5;color:#c0d5cd}
.empty-capture-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;min-width:0}
.empty-capture-drop{display:grid;justify-items:center;align-content:start;gap:7px;min-width:0;padding:10px 8px;border:1.5px dashed #8e9b78;border-radius:9px;background:#0b1c22;color:#efe6ce;cursor:pointer;text-align:center;transition:background .15s,border-color .15s}
.empty-capture-drop b{font-size:12px}.empty-capture-drop img{display:block;width:100%;height:118px;object-fit:contain;background:#07171c;border-radius:6px}.empty-capture-drop img[hidden]{display:none}.empty-capture-drop span{font-size:11px;color:#bbd4ca;overflow-wrap:anywhere}.empty-capture-drop input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.empty-capture-drop.drag-over,.empty-capture-drop:focus-within{border-color:#ffe49b;background:#2b463e}.empty-capture-status{font-size:11px;color:#d4dfba}
@media(max-width:600px){.empty-capture-grid{gap:5px}.empty-capture-drop{padding:7px 3px}.empty-capture-drop b{font-size:10px}.empty-capture-drop img{height:82px}}


/* Draggable frontline controls in their own battlefield panel (no duplicate buttons). */
.battle-view{position:relative}
.frontline-command-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:7px 9px;border-bottom:1px solid #ffffff18;background:#ffffff0a;color:#f4e6b7;font-size:11px;font-weight:850;cursor:move;user-select:none;touch-action:none}
.frontline-command-head button{min-width:24px;min-height:24px;padding:0;border:1px solid #7c8a6e;border-radius:6px;background:#32463f;color:#ffefc4;cursor:pointer}
.frontline-command-panel .frontline-command-bar{margin:0;border:0;border-radius:0;background:transparent;box-shadow:none}
@media(max-width:900px),(pointer:coarse){.frontline-command-head{padding:6px 8px;font-size:10px}}
/* V8.9.22 image-first object / facility / map editing */
#bulkSystemWorkspace.image-first,#facilityAssetPanel.image-first{min-width:0}
.bulk-modal.building-mode #dbSystemDetails{order:2}
.bulk-modal.building-mode #facilityAssetPanel{order:1}
.facility-asset-panel{grid-template-columns:minmax(0,1.35fr) minmax(300px,.9fr);gap:12px 14px;align-items:start}
.facility-asset-panel>.facility-asset-copy,.facility-asset-panel>.empty-capture-library,.facility-asset-panel>.facility-asset-toolbar,.facility-asset-panel>.facility-quick-grid,.facility-asset-panel>.facility-quick-status,.facility-asset-panel>.facility-batch-controls{grid-column:1}
.facility-asset-panel>.facility-asset-body{grid-column:2;grid-row:1 / span 8;align-self:stretch;position:sticky;top:8px}
.facility-asset-copy{padding:4px 0 0}.facility-asset-copy b{font-size:13px}.facility-asset-copy small{font-size:10px;color:#9fc0b7}
.empty-capture-library,.object-asset-visible,.capture-workflow,.flag-workflow{box-shadow:0 8px 24px #00000022}
.empty-capture-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.empty-capture-drop{min-height:210px;padding:10px}.empty-capture-drop img{height:145px}.empty-capture-drop span{font-size:10px}
.facility-asset-toolbar{grid-template-columns:repeat(4,minmax(0,1fr));background:#0f212c;border:1px solid #2f4d59;border-radius:10px;padding:10px}.facility-asset-toolbar label{font-size:10px}.facility-asset-toolbar select{height:36px;border-radius:9px}
.facility-quick-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.facility-quick-drop{min-height:235px;padding:10px}.facility-quick-drop b{font-size:13px}.facility-quick-drop img{height:165px;border-radius:8px}.facility-quick-drop span{font-size:10px;color:#c6decc}
.facility-quick-status{padding:6px 10px;border-radius:8px;background:#10212a;border:1px solid #294553}
.facility-asset-body{grid-template-columns:minmax(0,1fr);gap:10px}.facility-asset-right{grid-template-columns:minmax(0,1fr);order:0}.facility-asset-preview-wrap{grid-template-rows:minmax(215px,1fr) auto auto}.facility-asset-preview-wrap canvas{width:100%;max-width:none;min-height:210px}.facility-asset-original-box{min-height:215px;max-height:none}
.facility-asset-advanced{padding:8px 10px}.facility-asset-advanced>summary{font-size:11px}.facility-asset-controls{grid-template-columns:repeat(2,minmax(0,1fr))}.facility-drop-zone,.facility-asset-action-row{grid-column:1/-1}.facility-batch-controls{grid-column:1/-1;background:#0e2028;border:1px solid rgba(255,255,255,.08);border-radius:10px;padding:10px}
.object-editor-fields{grid-template-columns:minmax(0,1.45fr) minmax(280px,.95fr);gap:10px}.object-editor-fields .object-media-column{order:1}.object-editor-fields .object-ability-column{order:2}
.object-editor-fields.visual-mode .object-media-column,.object-editor-fields.visual-mode .object-ability-column{padding:12px}.object-editor-fields .object-media-column>.capture-workflow small,.object-editor-fields .object-asset-visible small,.capture-editor-fields>.capture-workflow small,.editor-note{font-size:10px;color:#9cb9a7}
.object-construction-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.object-construction-actions button{min-height:40px;font-size:12px;font-weight:800}
.object-style-tiles{gap:10px}.object-style-tile{padding:9px;background:#102029}.object-style-tile img{height:118px;border-radius:8px}.object-style-tile button{min-height:32px;font-size:12px}.object-style-tile label{min-height:32px;font-size:11px}
.object-image-drop{min-height:108px;justify-content:center;align-items:center;text-align:center}.object-image-drop b{font-size:14px}.object-image-drop small{font-size:11px}
.capture-editor-fields{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:9px;background:#0d1b24}.capture-editor-fields>strong{font-size:13px}.capture-editor-fields .capture-workflow{padding:10px}.capture-editor-fields .tower-explainer,.capture-editor-fields .capture-full small{font-size:10px}
.editor-row.object-select-actions button,.editor-row button{min-height:36px}
@media(max-width:1100px){.facility-asset-panel{grid-template-columns:minmax(0,1fr)}.facility-asset-panel>.facility-asset-body{grid-column:1;grid-row:auto;position:static}.facility-quick-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.object-editor-fields{grid-template-columns:1fr}.object-editor-fields .object-media-column,.object-editor-fields .object-ability-column{order:initial}}
@media(max-width:700px){.empty-capture-grid,.facility-quick-grid{grid-template-columns:1fr}.empty-capture-drop,.facility-quick-drop{min-height:180px}.empty-capture-drop img,.facility-quick-drop img{height:118px}.facility-asset-toolbar{grid-template-columns:repeat(2,minmax(0,1fr))}.facility-asset-controls{grid-template-columns:1fr}.object-style-tiles{grid-template-columns:1fr}.object-style-tile img{height:100px}}


/* V8.9.23 compact one-screen facility / map editor */
.bulk-modal.building-mode{width:min(1480px,calc(100vw - 14px));max-width:min(1480px,calc(100vw - 14px));max-height:calc(100dvh - 14px);padding:10px;overflow:hidden}
.bulk-modal.building-mode .modal-head{margin-bottom:8px}.bulk-modal.building-mode .db-toolbar{gap:6px}.bulk-modal.building-mode .db-toolbar button{min-height:28px;padding:4px 10px;font-size:11px}
.bulk-modal.building-mode .db-batchbar{gap:6px;padding:6px 8px}.bulk-modal.building-mode .db-batchbar>*{font-size:10px}
.bulk-modal.building-mode .db-system-table input,.bulk-modal.building-mode .db-system-table select{min-width:0;width:100%;padding:3px 5px;font-size:11px}
.bulk-modal.building-mode .db-system-table th,.bulk-modal.building-mode .db-system-table td{padding:3px 4px}.bulk-modal.building-mode .db-system-table{table-layout:fixed}
.bulk-modal.building-mode .db-system-table th:nth-child(1){width:58px}.bulk-modal.building-mode .db-system-table th:nth-child(2){width:80px}.bulk-modal.building-mode .db-system-table th:nth-child(n+3){width:68px}
.facility-asset-panel{grid-template-columns:minmax(0,1fr) minmax(255px,.7fr);gap:8px 10px;padding:8px}
.facility-asset-panel>.facility-asset-body{grid-column:2;grid-row:1 / span 7;position:sticky;top:4px}
.facility-asset-copy{padding:0}.facility-asset-copy b{font-size:12px}.facility-asset-copy small{font-size:10px}
.empty-capture-library{gap:6px;padding:8px}.empty-capture-heading b{font-size:12px}.empty-capture-heading small{font-size:10px;line-height:1.25}
.empty-capture-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.empty-capture-drop{min-height:136px;padding:7px 6px;gap:5px}.empty-capture-drop b{font-size:11px}.empty-capture-drop img{height:78px}.empty-capture-drop span{font-size:9px;line-height:1.2}
.facility-asset-toolbar{grid-template-columns:minmax(110px,1.2fr) minmax(78px,.8fr) minmax(56px,.45fr) minmax(96px,.9fr);gap:6px;padding:7px 8px}.facility-asset-toolbar label{gap:2px;font-size:10px}.facility-asset-toolbar select{height:30px;padding:2px 6px;font-size:11px}
.facility-quick-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.facility-quick-drop{min-height:148px;padding:7px;gap:5px;font-size:11px}.facility-quick-drop b{font-size:11px;line-height:1.2}.facility-quick-drop img{height:88px}.facility-quick-drop span{font-size:9px;line-height:1.2}
.facility-quick-status{padding:5px 8px;font-size:10px;line-height:1.25}
.facility-asset-preview-wrap{grid-template-rows:minmax(138px,1fr) auto auto;gap:4px}.facility-asset-preview-wrap canvas{min-height:138px;aspect-ratio:360/170}.facility-asset-original{padding:6px}.facility-asset-original-head{margin-bottom:4px}.facility-asset-original-head b{font-size:11px}.facility-asset-original-head small{font-size:9px}.facility-asset-original-box{min-height:138px}.facility-asset-original-box img{max-height:132px}
#facilityAssetStatus{font-size:10px;line-height:1.25}.facility-asset-meta{font-size:9px}
.facility-asset-advanced{padding:6px 8px}.facility-asset-advanced>summary{font-size:10px;padding:2px 1px}.facility-asset-advanced[open]>summary{margin-bottom:6px;padding-bottom:6px}
.facility-asset-controls{grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}.facility-asset-controls label{font-size:10px}.facility-asset-controls input,.facility-asset-controls select,.facility-asset-controls button{height:28px;padding:2px 5px;font-size:10px;border-radius:6px}.facility-drop-zone{grid-column:span 3;min-height:54px;padding:6px}.facility-drop-zone b{font-size:11px}.facility-drop-zone span{font-size:9px}.facility-asset-action-row{grid-column:span 2;gap:5px}.facility-batch-controls{padding:8px;gap:6px}.facility-batch-controls label{font-size:10px}.facility-batch-controls input,.facility-batch-controls button{min-height:28px;font-size:10px}.facility-batch-controls small,#facilityAssetBatchStatus{font-size:9px;line-height:1.25}
.capture-editor-fields{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;padding:7px}.capture-editor-fields>strong,.capture-editor-fields .capture-full,.capture-editor-fields .capture-workflow{grid-column:1/-1}.capture-editor-fields label{font-size:10px;gap:2px}.capture-editor-fields label input,.capture-editor-fields label select{padding:3px 5px;min-height:28px}.capture-workflow.compact-visual{padding:7px}.capture-workflow.compact-visual b{font-size:12px}.capture-workflow.compact-visual small{font-size:10px}.capture-workflow.compact-visual button{min-height:30px}
.object-editor-fields{grid-template-columns:minmax(0,1.2fr) minmax(230px,.8fr);gap:8px;padding:8px}.object-editor-fields label{font-size:10px}.object-editor-fields select,.object-editor-fields input{margin-top:2px;padding:3px 5px;min-height:28px;font-size:10px}.object-editor-fields output{font-size:9px}.object-style-tiles{gap:7px}.object-style-tile{padding:7px;gap:5px}.object-style-tile img{height:82px}.object-style-tile button,.object-style-tile label{min-height:28px;font-size:10px}.object-image-drop{min-height:76px;padding:8px!important}.object-image-drop b{font-size:12px}.object-image-drop small{font-size:10px}
.editor-panel{max-height:calc(100dvh - 62px);overflow:auto}.editor-row button{min-height:30px;font-size:11px}.editor-note{font-size:10px;line-height:1.25;margin-top:4px}
@media(max-width:1320px){.facility-asset-panel{grid-template-columns:minmax(0,1fr)}.facility-asset-panel>.facility-asset-body{grid-column:1;grid-row:auto;position:static}.facility-quick-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.capture-editor-fields{grid-template-columns:repeat(2,minmax(0,1fr))}.object-editor-fields{grid-template-columns:1fr}}
@media(max-width:900px),(pointer:coarse){.bulk-modal.building-mode{overflow:auto}.facility-asset-toolbar{grid-template-columns:repeat(2,minmax(0,1fr))}.facility-asset-controls{grid-template-columns:repeat(2,minmax(0,1fr))}.facility-drop-zone,.facility-asset-action-row{grid-column:1/-1}.facility-quick-grid,.empty-capture-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.capture-editor-fields{grid-template-columns:1fr 1fr}.object-style-tiles{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:640px){.facility-quick-grid,.empty-capture-grid,.object-style-tiles{grid-template-columns:1fr}.capture-editor-fields{grid-template-columns:1fr}.facility-asset-toolbar{grid-template-columns:1fr 1fr}.bulk-modal.building-mode{overflow:auto}}

/* Image-first map palette and CRUD */
.map-visual-tools{display:grid;gap:7px;padding:8px;border:1px solid #526c68;border-radius:11px;background:#11232a;margin-bottom:8px;min-width:0}
.map-tools-head{display:flex;justify-content:space-between;align-items:center;gap:7px;flex-wrap:wrap}.map-tools-head strong{font-size:13px;color:#f5eac7}.map-mode-controls{display:flex;gap:4px;flex-wrap:wrap}.map-mode-controls button,.map-palette-actions button{border:1px solid #627d78;background:#203a3e;color:#e8f2e6;border-radius:7px;min-height:30px;padding:4px 7px;cursor:pointer;font-size:11px}.map-mode-controls button.active{background:#836d3c;border-color:#efcf83;color:#fff6db}.map-visual-tools input[type=search]{width:100%;min-height:29px;padding:5px 8px;border:1px solid #48666d;border-radius:7px;background:#081b22;color:#fff}.map-object-gallery{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:minmax(99px,auto);align-content:start;gap:6px;max-height:min(37dvh,310px);overflow-y:auto;overflow-x:hidden;scrollbar-width:thin;min-height:105px;scroll-padding-block:8px;padding-bottom:4px}.map-object-thumb{display:grid;grid-template-rows:63px minmax(19px,auto);place-items:center;min-width:0;min-height:99px;gap:3px;padding:4px;border:1px solid #426367;border-radius:8px;background:#172e36;color:#e9ecdf;cursor:grab}.map-object-thumb.active{border-color:#f2cf83;background:#405044;box-shadow:0 0 0 1px #e7d188 inset}.map-object-thumb img{max-width:100%;width:100%;height:63px;object-fit:contain}.map-object-icon{font-size:28px;align-self:center}.map-object-thumb small{font-size:10px;line-height:1.3;max-width:100%;min-width:0;white-space:normal;word-break:keep-all;overflow-wrap:anywhere;text-overflow:clip;overflow:visible;text-align:center}.map-palette-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px}.map-palette-actions button{min-width:0;font-size:10px}.map-visual-tools>small{color:#b3c9c2;font-size:10px;line-height:1.25}.vfx-library-actions{display:flex;gap:6px;flex-wrap:wrap;grid-column:1/-1}.vfx-library-actions button{flex:1;min-width:65px;min-height:30px;padding:4px 8px;border:1px solid #718e87;border-radius:7px;background:#29433f;color:#f2f5e5;cursor:pointer}.vfx-library-actions .danger{background:#57343b;border-color:#a8676c}
@media(max-width:600px){.map-object-gallery{grid-template-columns:repeat(3,minmax(0,1fr));max-height:170px}.map-object-thumb{min-height:77px;grid-template-rows:52px auto}.map-object-thumb img{height:52px}.map-mode-controls button{font-size:10px}}


/* V8.9.25 capture object style mapping / map palette image-first */
.map-object-thumb{grid-template-rows:63px minmax(19px,auto);overflow:visible}.map-object-thumb .map-object-placeholder{width:100%;height:63px;border-radius:7px;background:linear-gradient(180deg,#163845,#10252d);display:flex;align-items:center;justify-content:center;position:relative;border:1px dashed rgba(228,219,179,.28);box-shadow:inset 0 0 0 1px rgba(255,255,255,.03)}
.map-object-thumb .map-object-placeholder b{font-size:12px;line-height:1.2;color:#efe8ca;text-align:center;padding:0 4px;word-break:keep-all}.map-object-thumb .map-object-placeholder span{position:absolute;left:6px;right:6px;bottom:5px;font-size:9px;color:#9fc0ba;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.map-object-icon{display:none}
.flag-workflow[hidden]{display:none!important}
.capture-editor-fields{grid-template-columns:repeat(5,minmax(0,1fr))}
.capture-style-group{display:contents}
@media(max-width:1320px){.capture-editor-fields{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:900px){.capture-editor-fields{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){.capture-editor-fields{grid-template-columns:1fr}}

/* Compact skill fields and an explanation directly below the effect selector. */
.bulk-modal.skill-mode{width:min(1200px,98vw)}
.bulk-modal.skill-mode .db-system-table{width:100%;min-width:1060px;table-layout:fixed;border-spacing:0}
.bulk-modal.skill-mode .db-system-table th,.bulk-modal.skill-mode .db-system-table td{padding:3px 2px;vertical-align:top}
.bulk-modal.skill-mode .db-system-table th:nth-child(1){width:70px}
.bulk-modal.skill-mode .db-system-table th:nth-child(2){width:104px}
.bulk-modal.skill-mode .db-system-table th:nth-child(3){width:220px}
.bulk-modal.skill-mode .db-system-table input,.bulk-modal.skill-mode .db-system-table select{width:100%;min-width:0;max-width:none;padding:3px;box-sizing:border-box}
.db-system-table .db-skill-description{white-space:normal;min-width:0;font-size:11px;line-height:1.4;color:#cfe4db;margin-top:3px}
/* Canonical motion groups: disabled modes excluded without leaving holes. */
.motion-state-buttons button[hidden],.motion-state-source option[hidden],#enemyRosterPanel[hidden]{display:none!important}
.db-system-table:has([data-db-field="skillGrade"]) th,.db-system-table:has([data-db-field="skillGrade"]) td{white-space:nowrap}.db-system-table:has([data-db-field="skillGrade"]) input{min-width:0;width:100%;max-width:120px}

/* Shared skill editor is the existing canonical Game DB skill tab, opened directly from Tools. */
.bulk-modal.skill-mode .db-toolbar{grid-template-columns:minmax(200px,1fr);overflow:visible}
.bulk-modal.skill-mode .db-toolbar select,.bulk-modal.skill-mode .db-toolbar #bulkCount,.bulk-modal.skill-mode .db-batchbar{display:none!important}
.bulk-modal.skill-mode #dbSystemDetails>summary{display:flex;align-items:center;min-height:30px;color:#e6eecf;font-size:12px;cursor:pointer}

.bulk-modal.skill-mode #dbSystemTableWrap{max-height:min(58vh,610px);overflow:auto}

.hero-skill-gauge-track{height:3px;min-height:3px;border-radius:3px;background:rgba(255,255,255,.12);overflow:hidden}.hero-skill-gauge{display:block;height:100%;background:#5ee1ad;transition:width .15s linear}#newSharedSkillBar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:5px 0 9px}#newSharedSkillBar[hidden]{display:none}#newSharedSkillBar input{max-width:220px;min-width:115px}#newSharedSkillBar select{max-width:110px}


/* --- Reference-screen B patch: align closer to the latest uploaded UI --- */
body.ref-screen-b{background:linear-gradient(180deg,#0c1520 0%,#09111a 100%)}
.ref-screen-b #app{background:transparent}
.ref-screen-b .command-topbar{min-height:78px;height:100%;position:relative;grid-template-columns:minmax(95px,.5fr) minmax(145px,1fr) minmax(82px,.4fr) minmax(145px,1fr) minmax(280px,1.55fr);gap:clamp(4px,.5vw,10px);padding:8px 10px 10px 12px;background:linear-gradient(180deg,#21354f 0%,#132133 58%,#0a1320 100%);border-bottom:1px solid #4c6f93;box-shadow:0 6px 18px rgba(0,0,0,.35)}
.ref-screen-b .command-brand{position:relative;display:flex;align-items:flex-start;gap:12px;padding-left:0;min-width:0}
.ref-screen-b .ref-brand-copy{display:grid;gap:2px;min-width:0}
.ref-screen-b .command-brand strong{font-size:25px;line-height:1.05;letter-spacing:-0.03em;color:#fff4d1;text-shadow:0 2px 0 rgba(0,0,0,.35)}
.ref-screen-b .command-brand .brand-subtitle{font-size:12px;color:#e8f1ff;opacity:.92;margin-top:0}
.ref-screen-b .hud-team{height:72px;min-width:0;width:100%;box-sizing:border-box;border-radius:16px;padding:7px clamp(4px,.7vw,12px) 8px;box-shadow:inset 0 2px 0 rgba(255,255,255,.18),0 8px 16px rgba(0,0,0,.24)}
.ref-screen-b .hud-team.blue{background:linear-gradient(180deg,#2986f3 0%,#194da0 100%);border-color:#8ac8ff}
.ref-screen-b .hud-team.red{background:linear-gradient(180deg,#f26a55 0%,#8d2f2a 100%);border-color:#ffb3aa}
.ref-screen-b .hud-team .bar{height:10px;border-radius:999px;background:rgba(255,255,255,.18)}
.ref-screen-b .hud-team .bar i{border-radius:999px}
.ref-screen-b .profile-hud{grid-template-columns:clamp(28px,3.2vw,43px) minmax(0,1fr);gap:2px 5px;overflow:hidden}
.ref-screen-b .hud-team .base-label{min-width:0;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;font-size:clamp(10px,.9vw,14px);color:#fff;gap:1px 3px;line-height:1.05}
.ref-screen-b .hud-team .base-label b{min-width:0;margin-left:auto;font-size:clamp(12px,1.25vw,19px);line-height:1.05}
.ref-screen-b .hud-team .hud-icon{display:none}
.ref-screen-b .portrait-status{min-width:0;font-size:clamp(9px,.85vw,12px);color:#f3f6ff;opacity:.96;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ref-screen-b .hud-center{height:74px;min-width:0;width:100%;box-sizing:border-box;border-radius:16px;border:1px solid #5e7692;background:linear-gradient(180deg,#283a52,#132031);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 8px 16px rgba(0,0,0,.24)}
.ref-screen-b .command-resources{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;overflow:hidden}
.ref-screen-b .match-clock{min-width:0;font-size:clamp(17px,2.1vw,28px);line-height:1;color:#fff7dd}
.ref-screen-b .clock-caption{font-size:13px;color:#eff5fb;letter-spacing:.02em}
.ref-screen-b .top-actions{display:flex!important;flex-wrap:wrap;min-width:0;align-items:center;justify-content:flex-end;gap:3px;overflow:visible}
.ref-screen-b .top-actions>#pauseBtn,.ref-screen-b .top-actions>#resumeBtn,.ref-screen-b .top-actions>#battleSpeedBtn,.ref-screen-b .top-actions>#cardCatalogBtn,.ref-screen-b .top-actions>#restartBtn{display:inline-flex!important;align-items:center;justify-content:center;gap:3px;min-height:30px;padding:4px 6px;white-space:nowrap;font-size:clamp(9px,.75vw,11px);flex:0 1 auto}
.ref-screen-b .top-actions>#pauseBtn:disabled,.ref-screen-b .top-actions>#resumeBtn:disabled{opacity:.45;cursor:default}
.ref-screen-b .top-actions>#snapshotBtn,.ref-screen-b .top-actions>.top-settings:not(.dev-settings),.ref-screen-b .top-actions>#mobileMenuBtn{display:none!important}
.ref-screen-b .dev-settings{display:block!important;position:relative;min-width:0}
.ref-screen-b .dev-settings>summary{display:flex;align-items:center;justify-content:center;min-height:30px;padding:4px;border-radius:12px;background:#264660;color:#f4eed5;border:1px solid #6e8da7;cursor:pointer;font-size:12px;white-space:nowrap}
.ref-screen-b .dev-settings .top-popover{right:0;left:auto;z-index:200}
.ref-screen-b .battle-shell{position:relative;background:linear-gradient(180deg,#11304a 0,#0d1c2b 100%)}
.ref-screen-b .battle-view{grid-template-columns:minmax(0,1fr) clamp(170px,21vw,286px);gap:8px;padding:8px 10px 0;align-items:stretch}
.ref-screen-b .stage-wrap{border-radius:20px;overflow:hidden;box-shadow:0 12px 24px rgba(0,0,0,.28)}
.ref-screen-b #game{border-radius:20px}
.ref-screen-b .battle-announcement{top:12px;left:50%;transform:translateX(-50%);padding:10px 22px;border-radius:16px;background:linear-gradient(180deg,rgba(17,41,72,.95),rgba(17,26,42,.95));border:1px solid rgba(165,197,228,.7);font-size:15px}
.ref-screen-b .lane-legend,.ref-screen-b .battle-map-tools,.ref-screen-b .synergy-strip,.ref-screen-b .weather-card,.ref-screen-b .statusbar .legend{display:none!important}
.ref-screen-b .minimap-rail{padding:0;gap:8px;overflow-y:auto;overflow-x:hidden;background:transparent;border:0}.ref-screen-b .lane-director-strip{border:1px solid #486881;border-radius:18px;background:linear-gradient(180deg,#163c5a 0%,#102339 100%);box-shadow:0 10px 18px rgba(0,0,0,.24);padding:8px}.ref-screen-b .lane-director-head{padding:4px 4px 8px;color:#f2f7ff;cursor:default;touch-action:auto}.ref-screen-b .lane-director-head b{font-size:14px}
.ref-screen-b #minimapCenter{display:none!important}
.ref-screen-b .lane-director-strip{position:static!important;left:auto!important;top:auto!important;width:auto!important;max-width:none!important;margin-top:0}
.ref-screen-b .lane-director-head small,.ref-screen-b #laneDirectorReset,.ref-screen-b .lane-drag-grip{display:none!important}
.ref-screen-b #frontlineCollapseBtn{display:inline-flex!important;align-items:center;justify-content:center;min-width:30px;min-height:29px;padding:2px 6px;border-radius:9px;background:#274e71;color:#fff;border:1px solid #8ba7c5;cursor:pointer}
.ref-screen-b .lane-director-head{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(255,255,255,.12);padding-bottom:8px;margin-bottom:6px}
.ref-screen-b #frontlineDetailBtn{padding:8px 10px;border-radius:10px;border:1px solid #6e90ad;background:linear-gradient(180deg,#1a4f7c,#143251);color:#fff;font-size:12px}
.ref-screen-b .lane-director-body{display:grid;gap:4px}
.ref-screen-b .lane-director-chip{display:grid!important;grid-template-rows:minmax(20px,auto) 5px;gap:3px;min-height:0;padding:5px 7px!important;border:1px solid #476683;border-radius:10px;background:#102b43}
.ref-screen-b .lane-director-chip .lane-command-title{min-height:19px;margin:0;gap:5px}
.ref-screen-b .lane-director-chip .lane-command-title b{font-size:12px;flex:0 0 25px}
.ref-screen-b .lane-director-chip .lane-command-title strong{font-size:11px;flex:0 0 26px}
.ref-screen-b .lane-compact-forces{display:flex;min-width:0;flex:1;gap:5px;justify-content:flex-end;font-size:10px;white-space:nowrap}
.ref-screen-b .lane-compact-forces i{font-style:normal;color:#9de2ff;font-weight:750}
.ref-screen-b .lane-compact-forces i+i{color:#ffb2aa}
.ref-screen-b .lane-director-chip .lane-command-bar{margin:0;height:5px;width:100%;align-self:center}
.ref-screen-b .lane-director-body .lane-status{border:1px solid rgba(255,255,255,.08);border-radius:14px;background:rgba(2,10,18,.18);padding:10px}
.ref-screen-b .minimap-rail>.frontline-command-bar{position:relative;flex:none;display:grid;grid-template-columns:1fr;gap:5px;margin:0;padding:8px;border:1px solid #486881;border-radius:16px;background:linear-gradient(180deg,#173a56,#102339);box-shadow:0 8px 14px #0004}
.ref-screen-b .frontline-command-bar .frontline-lane-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}
.ref-screen-b .frontline-command-bar button{min-width:0;padding:2px 4px}
.ref-screen-b .frontline-command-bar>button:first-child{height:41px;border-radius:12px;border:1px solid #a2da66;background:linear-gradient(180deg,#63d13f 0%,#258320 100%);color:#fff;font-size:15px;letter-spacing:0}
.ref-screen-b .frontline-command-bar .frontline-lane-row button{height:36px;border-radius:10px;border:1px solid #5d7fa1;background:linear-gradient(180deg,#204b74,#123457);font-size:12px}
.ref-screen-b .frontline-command-bar .frontline-lane-row button span:first-child{font-size:17px;color:#fff2bc}
.ref-screen-b .frontline-command-bar .frontline-base-btn{height:37px;border-radius:12px;border:1px solid #c5a56d;background:linear-gradient(180deg,#7a5d36,#4e371d);font-size:13px}
.ref-screen-b .lower-ui{position:relative;--card-height:clamp(115px,14vw,175px);grid-template-columns:clamp(162px,19vw,260px) minmax(0,1fr) clamp(225px,27vw,390px);gap:6px;padding:5px 8px 8px;align-items:end}
.ref-screen-b .battle-resource-strip{grid-column:1/-1;grid-row:1;display:flex;align-items:center;justify-content:flex-start;gap:clamp(3px,.45vw,8px);flex-wrap:nowrap;min-width:0;margin-bottom:2px}
.ref-screen-b .resource-meter,.ref-screen-b .combat-quick-stats span{border:1px solid rgba(209,223,241,.26);border-radius:18px;background:linear-gradient(180deg,#173959 0%,#0c2236 100%);box-shadow:0 6px 14px rgba(0,0,0,.2)}
.ref-screen-b .resource-meter{flex:0 1 155px;min-width:72px;padding:6px 10px 8px}.ref-screen-b .resource-head small{font-size:13px}.ref-screen-b .resource-head b{font-size:15px}.ref-screen-b .resource-track{height:10px}.ref-screen-b .combat-quick-stats{display:flex;flex:0 1 auto;min-width:0;gap:clamp(3px,.5vw,8px)}.ref-screen-b .combat-quick-stats span{min-width:64px;padding:6px clamp(5px,.6vw,12px)}.ref-screen-b .combat-quick-stats i{display:block;font-size:11px;color:#c0daed}.ref-screen-b .combat-quick-stats b{display:block;font-size:18px;color:#fff}.ref-screen-b .hand-actions button{height:34px;padding:0 10px;border-radius:12px;background:linear-gradient(180deg,#2c5274,#183049)}
.ref-screen-b .hand-actions{flex:none;display:flex;align-items:center;gap:4px;min-width:0;white-space:nowrap}.ref-screen-b .hand-actions #deckCounter{font-size:clamp(9px,.8vw,13px);color:#ebf2fa}
.ref-screen-b .production-panel{grid-column:1;grid-row:2}.ref-screen-b .hand-panel{grid-column:2;grid-row:2}.ref-screen-b .strategist-panel{grid-column:3;grid-row:2;height:var(--card-height);min-height:0;align-self:end;display:grid;grid-template-columns:minmax(0,1.65fr) minmax(0,1fr);grid-template-rows:minmax(0,1fr);gap:5px;align-items:stretch}
.ref-screen-b .section-title{display:none}
.ref-screen-b .hand{height:var(--card-height);gap:6px}
.ref-screen-b .card{border-radius:18px;border:2px solid #f0dc92;background:linear-gradient(180deg,#314447,#18262d 100%);box-shadow:inset 0 1px 0 rgba(255,255,255,.12),0 10px 18px rgba(0,0,0,.26)}
.ref-screen-b .card .cost{left:8px;top:8px;width:34px;height:34px;border-radius:999px;background:linear-gradient(180deg,#ffd85c,#d49b25);color:#382705;border:2px solid #fff4b4;font-size:17px}
.ref-screen-b .card .card-copy{left:5px;right:5px;bottom:5px;border-radius:0 0 12px 12px;background:linear-gradient(180deg,rgba(12,18,28,.2) 0%,rgba(12,18,28,.9) 22%,rgba(12,18,28,.97) 100%)}
.ref-screen-b .card .name{font-size:14px}.ref-screen-b .card .meta{display:none!important}
.ref-screen-b .production-slots{height:calc(var(--card-height) * .8 + 12px);gap:4px}.ref-screen-b .prod-slot{border:2px dashed rgba(255,255,255,.36);border-radius:18px;background:rgba(8,23,36,.52);justify-content:center}.ref-screen-b .prod-card-caption{position:absolute;left:2px;right:2px;bottom:2px;z-index:2;display:flex;flex-direction:column;gap:1px;padding:5px 1px 3px;border-radius:5px;background:linear-gradient(transparent,#092132ec 35%,#0b2536f7);line-height:1.1}.ref-screen-b .prod-card-caption strong{position:static;display:block;width:100%;padding:0;background:transparent;font-size:clamp(8px,.7vw,11px);font-weight:850;text-shadow:0 1px 3px #000}.ref-screen-b .prod-card-caption small{display:block;font-size:8px;font-weight:850;color:#ffe7a0}

.ref-screen-b .prod-main .prod-secondary-info{display:none!important}
.ref-screen-b .prod-main img{position:absolute;inset:0 0 0 0;width:100%;height:100%;object-fit:contain}.ref-screen-b .prod-controls,.ref-screen-b .prod-lanes,.ref-screen-b .prod-slot .prog{display:none!important}
.ref-screen-b .strategist-command-row{display:grid!important;grid-column:1;grid-row:1;grid-template-columns:var(--card-w) minmax(0,1fr);grid-template-rows:minmax(0,1fr);gap:4px;height:100%;min-width:0;min-height:0;margin:0}
.ref-screen-b .strategist-slot{display:flex!important;align-items:center;justify-content:flex-end;flex-direction:column;min-height:0;height:100%;padding:4px 5px;border:2px dashed rgba(255,255,255,.34);border-radius:16px;background:rgba(8,23,36,.52);color:#d8e2ea;font-size:13px}
.ref-screen-b .strategist-slot.active{border-style:solid;background:linear-gradient(180deg,#173959 0%,#0d2235 100%)}.ref-screen-b .strategist-slot.empty::before{content:"✦";font-size:23px;color:#e1e4b4}.ref-screen-b #strategistSkills .skill-lane-marker{display:none}
.ref-screen-b .strategist-slot img{position:absolute;inset:0;width:100%;height:100%;margin:0;object-fit:cover;z-index:0}
.ref-screen-b .strategist-slot{position:relative;overflow:hidden;border-radius:18px;border:2px solid #f0dc92}.ref-screen-b .strategist-slot>div{display:none}.ref-screen-b .strategist-slot>div br{display:none}.ref-screen-b .strategist-slot>div small{display:none}
.ref-screen-b .strategist-skills{display:grid!important;grid-template-columns:minmax(0,1fr);grid-template-rows:repeat(3,minmax(0,1fr));min-height:0;height:100%;gap:4px;padding:0}
.ref-screen-b .strategist-skills button{display:flex;align-items:center;justify-content:flex-start;gap:5px;min-height:0;height:100%;padding:3px 5px;border-radius:10px;border:1px solid #8fa25f;background:linear-gradient(180deg,#4f6f31,#2d4420);font-size:10px}.ref-screen-b .skill-lane-marker{flex:none;display:grid;place-items:center;width:19px;height:21px;border-radius:6px;background:#173e5a;color:#ffdc8e;font-weight:900}.ref-screen-b .strategist-skills .skill-mini-label{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;text-align:left}.ref-screen-b .strategist-skills .skill-mini-label small{font-size:9px}
.ref-screen-b .strategist-lane-buttons{display:none!important}
.ref-screen-b .field-command-panel{display:flex!important;flex-direction:column;grid-column:2;grid-row:1;min-width:0;min-height:0;height:100%;margin:0;padding:3px;border:2px solid #e3ce86;border-radius:15px;background:#12283a;overflow:hidden}
.ref-screen-b .field-command-panel .section-title{display:flex!important;height:16px;min-height:16px;margin:0 0 3px;font-size:10px;color:#e9f3ff;justify-content:center}
.ref-screen-b .hero-status{display:grid!important;flex:1;grid-template-columns:repeat(6,minmax(0,1fr));grid-template-rows:minmax(0,1fr);gap:3px;height:100%;min-height:0;overflow:hidden}
.ref-screen-b .hero-pill{height:100%;min-height:0;border-radius:8px;background:linear-gradient(180deg,#29425b,#172938);border:1px solid #7c95a8}
.ref-screen-b .hero-pill img{width:100%;height:100%;object-fit:cover}
.ref-screen-b .hero-pill b{font-size:10px}.ref-screen-b #heroStatus .hero-card-caption{position:absolute;left:2px;right:2px;bottom:6px;z-index:3;padding:10px 2px 3px;background:linear-gradient(transparent,#071b29f6 50%,#091c2cfb);border-radius:0 0 6px 6px;text-align:center}.ref-screen-b #heroStatus .hero-card-caption b{display:block;position:static;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:10px}.ref-screen-b #heroStatus .hero-card-caption .hero-card-stats{display:block;position:static;font-size:7px;line-height:1.1;padding:0;background:transparent;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ref-screen-b .empty-field-slot .hero-empty-placeholder{font-size:21px}
.ref-screen-b .ref-bottom-assistant{position:absolute;right:18px;bottom:22px;z-index:24;display:flex;flex-direction:column;align-items:flex-end;gap:8px;pointer-events:none}
.ref-screen-b .ref-assistant-bubble{pointer-events:auto;background:#fff7e9;color:#4a3a1b;border:2px solid #dac7a1;border-radius:18px;padding:12px 16px;font-size:18px;font-weight:800;line-height:1.2;box-shadow:0 8px 16px rgba(0,0,0,.2)}
.ref-screen-b .ref-assistant-img{width:118px;height:auto;filter:drop-shadow(0 10px 12px rgba(0,0,0,.26))}
.ref-screen-b .statusbar{background:transparent;border-top:0;padding:0 14px 10px;color:#cfdbe7}.ref-screen-b .statusbar .status-icons{font-size:16px}
.ref-screen-b .mobile-dock,.ref-screen-b .mobile-only-action{display:none!important}
@media (max-width: 1280px){
 .ref-screen-b .command-topbar{grid-template-columns:minmax(75px,.45fr) minmax(120px,1fr) minmax(75px,.4fr) minmax(120px,1fr) minmax(230px,1.65fr);gap:4px;padding:6px}
 .ref-screen-b .command-brand strong{font-size:clamp(14px,1.7vw,25px)}
 .ref-screen-b .ref-brand-copy .brand-subtitle{display:none}
 .ref-screen-b .match-clock{font-size:clamp(18px,2.1vw,28px)}
 .ref-screen-b .lower-ui{grid-template-columns:clamp(140px,18vw,220px) minmax(0,1fr) clamp(195px,26vw,340px);gap:5px}
 .ref-screen-b .battle-resource-strip{gap:4px}
 .ref-screen-b .combat-quick-stats span{min-width:49px;padding:5px}
 .ref-screen-b .hand-actions button{padding:0 5px}
}
@media (max-width: 900px),(pointer:coarse){
 .ref-screen-b #app{grid-template-rows:48px minmax(0,1fr)}
 .ref-screen-b .command-brand{display:none}
 .ref-screen-b .command-topbar{min-height:48px;height:48px;grid-template-columns:minmax(80px,1fr) minmax(55px,.55fr) minmax(80px,1fr) 44px}
 .ref-screen-b .top-actions>button:not(#mobileMenuBtn):not(#upcomingCardsBtn),.ref-screen-b .top-actions>.top-settings{display:none!important}
 .ref-screen-b .top-actions>#mobileMenuBtn{display:block!important;width:42px;height:36px;padding:2px}
 .ref-screen-b .top-actions{flex-wrap:nowrap;justify-content:flex-end}
 .ref-screen-b .hud-team{min-height:0}
 .ref-screen-b .dev-settings>summary{font-size:10px}
 .ref-screen-b .hud-team{height:42px;padding:3px}
 .ref-screen-b .hud-team .base-label{font-size:10px}
 .ref-screen-b .hud-team .base-label b{font-size:14px}
 .ref-screen-b .hud-team .hud-portrait{display:inline-flex;max-width:28px;max-height:28px}
 .ref-screen-b .hud-center{height:42px}
 .ref-screen-b .battle-view{grid-template-columns:minmax(0,1fr) clamp(100px,24vw,182px)}
 .ref-screen-b .minimap-rail>.frontline-command-bar{padding:4px;gap:3px}
 .ref-screen-b .frontline-command-bar button span:first-child{display:none}
 .ref-screen-b .frontline-command-bar>button:first-child{height:30px;font-size:11px}
 .ref-screen-b .frontline-command-bar .frontline-lane-row button{height:29px;font-size:10px}
 .ref-screen-b .frontline-command-bar .frontline-base-btn{height:30px;font-size:10px}
 .ref-screen-b .lower-ui{grid-template-columns:minmax(0,1fr) minmax(135px,28%);gap:3px;--card-height:clamp(100px,17vw,150px)}.ref-screen-b .lower-ui:not(.hand-with-strategist){grid-template-columns:minmax(0,1fr)}
 .ref-screen-b .strategist-command-row{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr)}
 .ref-screen-b .resource-meter{min-width:64px;padding:4px}
 .ref-screen-b .combat-quick-stats i{font-size:9px}
 .ref-screen-b .combat-quick-stats b{font-size:12px}
 .ref-screen-b .hand-actions #deckCounter{font-size:9px}
}
/* Canonical troop upgrade controls */
.prod-slot{position:relative}.prod-slot.assigned .prod-main{padding-bottom:29px}.prod-upgrade-en{position:absolute;left:auto;bottom:auto;transform:none;display:flex;align-items:center;justify-content:center;padding:0;border-radius:50%;font-weight:900;cursor:pointer}.prod-upgrade-en:disabled{cursor:not-allowed}.prod-upgrade-lv{display:none}.soldier-upgrade-admin{margin:6px 8px;border:1px solid #678ca5;border-radius:10px;background:#102739;color:#f4f7fc;padding:10px}.soldier-upgrade-admin>summary{cursor:pointer;font-weight:800;font-size:13px}.soldier-upgrade-admin h3{font-size:15px}.soldier-upgrade-admin p,.soldier-upgrade-admin small{font-size:11px;color:#c9dce9}.soldier-growth-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}.soldier-growth-grid label{display:grid;gap:3px;font-size:10px}.soldier-upgrade-admin input{width:100%;min-width:0;box-sizing:border-box;padding:5px;background:#071723;color:#fff;border:1px solid #456c87;border-radius:5px}.soldier-upgrade-scroll{overflow:auto;max-height:300px;margin:8px 0}.soldier-upgrade-scroll table{border-collapse:collapse;width:100%;font-size:11px}.soldier-upgrade-scroll th,.soldier-upgrade-scroll td{padding:5px;border-bottom:1px solid #39556d;text-align:center;min-width:72px}.soldier-upgrade-scroll th:first-child{white-space:nowrap}#saveSoldierUpgradeAdmin{padding:8px 12px;background:#287454;color:white;border:1px solid #76b89d;border-radius:8px;font-weight:800;cursor:pointer}@media(max-width:900px){.soldier-growth-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}


/* EN badges remain numeric-only; point menu visuals come directly from the supplied artwork. */
.card .cost small{display:none!important}
/* Local administrator image picker and single visible start prompt. */
.ref-screen-b #battleStartHint[hidden]{display:none!important}
.ref-screen-b .empty-field-slot{justify-content:center;gap:3px}.ref-screen-b .empty-field-slot img{width:27px;height:32px;object-fit:contain}.ref-screen-b .hero-empty-placeholder{font-size:23px;line-height:1;color:#c3d9e8}
.empty-hero-art-admin .empty-hero-art-controls{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:8px}.empty-hero-art-controls label{font-size:12px}.empty-hero-art-controls select{margin-left:5px;color:#fff;background:#17374e;border:1px solid #678ca5;padding:5px}.empty-hero-art-drop{display:flex;align-items:center;min-height:46px;padding:8px;border:2px dashed #7198a7;border-radius:8px;cursor:pointer;position:relative}.empty-hero-art-drop.drag-over{border-color:#ffd984}.empty-hero-art-drop input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}.empty-hero-art-controls img{width:45px;height:56px;object-fit:contain;border:1px solid #678ca5;border-radius:6px}.empty-hero-art-controls img[hidden]{display:none!important}.empty-hero-art-controls button{padding:8px 10px;background:#32465b;color:#fff;border:1px solid #718b9e;border-radius:8px}
.ref-screen-b .prod-max-level{position:absolute;z-index:4;top:5px;right:3px;bottom:auto;left:auto;transform:none;padding:3px 7px;border-radius:10px;border:1px solid #f8dea0;background:#8d6e2d;color:#fff4ca;font-size:10px;font-weight:800}

/* Route editing is a floating, draggable three-row tool. */
.route-editor-panel{position:absolute;z-index:24;top:8px;right:8px;width:min(314px,calc(100% - 8px));box-sizing:border-box;padding:5px;border:1px solid #8fae9c;border-radius:8px;background:rgba(7,25,30,.91);color:#e9f4e9;box-shadow:0 4px 18px #000a;display:grid;gap:4px;pointer-events:auto;touch-action:auto}
.route-editor-panel[hidden]{display:none!important}
.route-editor-controls{display:grid;grid-template-columns:minmax(0,1fr) 66px 66px;gap:4px;align-items:center;min-width:0}
.route-editor-mainline{grid-template-columns:24px minmax(0,1fr) 38px 38px 37px 20px}
.route-editor-subline{grid-template-columns:minmax(0,1fr) 54px 54px 46px}
.route-lane-segment{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:2px;min-width:0}
.route-editor-controls label{display:flex;align-items:center;gap:4px;min-width:0;font-size:11px;white-space:nowrap}
.route-editor-controls select{width:100%;min-width:0}
.route-editor-controls button,.route-editor-controls select{box-sizing:border-box;border:1px solid #64847d;background:#183d43;color:#f8efd0;border-radius:5px;height:28px;min-height:28px;padding:2px 3px;font-size:11px;cursor:pointer;white-space:nowrap}
.route-editor-controls button.active{background:#55753d;border-color:#d8df8b;color:#fff6c9}
.route-editor-mainline .route-editor-grip{padding:0;cursor:grab;touch-action:none;font-size:18px;color:#ffe6aa;user-select:none}
.route-editor-mainline .route-editor-grip:active{cursor:grabbing}
.route-editor-mainline .route-editor-close{padding:0;font-size:16px;color:#ffddd0}
.route-editor-controls button:focus-visible,.route-editor-controls select:focus-visible{outline:2px solid #ffdb85;outline-offset:1px}

/* Always-visible entry, even in layouts that hide the battle-map toolbar. */
#routeEditorOpen{position:absolute;z-index:18;right:8px;top:38px;min-height:30px;padding:4px 9px;font-size:11px;font-weight:800;border:1px solid #a5b897;border-radius:7px;background:rgba(22,54,55,.94);color:#f7edce;cursor:pointer;box-shadow:0 2px 9px #0007}
#routeEditorOpen:hover,#routeEditorOpen:focus-visible{border-color:#ffe5a8;background:#3c674f}
@media(max-width:900px),(pointer:coarse){#routeEditorOpen{top:3px;right:4px;min-height:25px;font-size:10px;padding:2px 5px}}

/* Compact, single-purpose map editor. While editing, the original map is unfiltered. */
body.map-edit-focus .topbar .hud-team,body.map-edit-focus .topbar .hud-center,
body.map-edit-focus .topbar .top-actions>:not(.dev-settings),
body.map-edit-focus .lower-ui,body.map-edit-focus .minimap-rail,
body.map-edit-focus .stage-wrap>:not(#game):not(#routeEditorPanel):not(#editorPanel):not(#toast){display:none!important}
body.map-edit-focus .battle-shell{grid-template-rows:minmax(0,1fr)!important}
body.map-edit-focus .battle-view,body.map-edit-focus .ref-screen-b .battle-view{grid-template-columns:minmax(0,1fr)!important;padding:0!important;gap:0!important}
body.map-edit-focus .stage-wrap{border-radius:0!important;box-shadow:none!important}
body.map-edit-focus #editorPanel:not([hidden]),body.map-edit-focus #routeEditorPanel:not([hidden]){display:grid!important}
.common-soldier-admin{display:grid;gap:5px;max-width:100%;min-width:0}
.admin-troop-item{border:1px solid #536e6d;border-radius:6px;padding:6px;background:rgba(8,26,29,.45)}
.admin-troop-item>summary{cursor:pointer;font-weight:750;font-size:13px}
.admin-troop-item>summary small{font-weight:400;color:#aec5c4;font-size:10px;margin-left:6px}
.admin-troop-row{display:grid;grid-template-columns:106px repeat(6,minmax(0,1fr));gap:5px;align-items:end;margin-top:7px}
.admin-troop-row>b{font-size:11px;align-self:center}
.admin-troop-row label{font-size:10px;display:grid;gap:3px;min-width:0}
.admin-troop-row input{box-sizing:border-box;width:100%;min-width:0;padding:4px 2px;font-size:12px}
.admin-troop-cost{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.admin-troop-cost label{width:auto}
@media(max-width:670px){.admin-troop-row{grid-template-columns:repeat(3,minmax(0,1fr))}.admin-troop-row>b{grid-column:1/-1}.admin-troop-row input{font-size:11px}}

/* V8.9.23 focused map/object/route editing: canvas stays bright, controls stay tiny. */
body.map-edit-focus{background:#061015!important}
body.map-edit-focus #game{filter:none!important;opacity:1!important;visibility:visible!important}
body.map-edit-focus .stage-wrap{background:#061015!important}
@media(max-width:900px),(pointer:coarse){.route-editor-panel{width:min(300px,calc(100% - 8px));padding:4px;gap:3px}.route-editor-controls{grid-template-columns:minmax(0,1fr) 57px 57px;gap:3px}.route-editor-mainline{grid-template-columns:23px minmax(0,1fr) 35px 35px 35px 19px}.route-editor-subline{grid-template-columns:minmax(0,1fr) 51px 51px 43px}.route-editor-controls button,.route-editor-controls select{height:26px;min-height:26px;font-size:10px}}

.capture-admin-batch{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}.capture-admin-batch label{display:flex;align-items:center;gap:4px}.capture-admin-batch input{width:65px;min-width:0}

.common-rules-dialog .capture-admin-batch{grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}.common-rules-dialog .capture-admin-batch strong{grid-column:1;}.common-rules-dialog .capture-admin-batch label{grid-column:2 / 4;justify-content:flex-start;}
#frontlineCommandHandle{display:none !important;}
#frontlineCommandPanel .frontline-command-bar{
  position:absolute;
  inset:0;
  margin:0 !important;
  padding:0 !important;
  border:0 !important;
  background:transparent !important;
  box-shadow:none !important;
}
#frontlineCommandPanel .frontline-command-bar > button,
#frontlineCommandPanel .frontline-command-bar .frontline-lane-row button{
  position:absolute;
  border:0 !important;
  background:transparent !important;
  box-shadow:none !important;
  color:transparent !important;
  font-size:0 !important;
  padding:0 !important;
  min-height:0 !important;
  min-width:0 !important;
  outline:none;
  cursor:pointer;
  touch-action:manipulation;
}
#frontlineCommandPanel .frontline-command-bar > button span,
#frontlineCommandPanel .frontline-command-bar .frontline-lane-row button span{display:none !important;}
#frontlineCommandPanel .frontline-command-bar>button:first-child{ /* 전군 진군 */
  left:74.5%; top:33.5%; width:22.5%; height:42%;
}
#frontlineCommandPanel .frontline-command-bar .frontline-base-btn{ /* 본진 방어 */
  left:4.5%; top:53.5%; width:30%; height:35.5%;
}
#frontlineCommandPanel .frontline-command-bar .frontline-lane-row{display:contents !important;}
#frontlineCommandPanel .frontline-command-bar .frontline-lane-row button:nth-child(1){left:37.2%; top:7.5%; width:28%; height:17%;}
#frontlineCommandPanel .frontline-command-bar .frontline-lane-row button:nth-child(2){left:37.2%; top:37.2%; width:28%; height:17%;}
#frontlineCommandPanel .frontline-command-bar .frontline-lane-row button:nth-child(3){left:37.2%; top:66.5%; width:28%; height:17%;}
#frontlineCommandPanel .frontline-command-bar button:hover,
#frontlineCommandPanel .frontline-command-bar button:focus-visible{
  border-radius:18px;
  box-shadow:0 0 0 3px rgba(255,232,153,.65) inset, 0 0 0 2px rgba(0,0,0,.35);
}
#frontlineCommandPanel .frontline-command-bar .frontline-lane-row button:hover,
#frontlineCommandPanel .frontline-command-bar .frontline-lane-row button:focus-visible{border-radius:16px;}

@media(max-width:900px),(pointer:coarse){
}

/* V9.1 follow-up adjustments: hero item stack, equal-width command panel, draggable panel, tighter lane text */
:root{--battle-side-widget-width:clamp(270px,18vw,320px)}

/* Hero field slots: item icon rail should match exact height of three items */
#heroStatus .hero-unit-entry{display:grid; grid-template-columns:minmax(0,1fr) 20px; gap:3px; min-width:0; min-height:0}
#heroStatus .hero-unit-entry .hero-equipped-items{display:grid; grid-template-rows:repeat(3,1fr); gap:1px; height:100%; align-self:stretch; width:20px; min-width:20px; overflow:hidden}
#heroStatus .hero-unit-entry .hero-equipped-items img{width:20px; height:100%; min-height:0; object-fit:cover; border-radius:3px; border:1px solid rgba(215,188,112,.55); background:#0b1e2d}
#heroStatus .hero-unit-entry .hero-equipped-items:empty{background:linear-gradient(180deg,#14293b,#0c1824); border:1px dashed rgba(230,216,150,.25); border-radius:4px}
#heroStatus .hero-unit-entry .hero-pill{min-width:0}
#heroStatus .hero-unit-entry .hero-equipped-items img:nth-child(n+4){display:none}

@media(max-width:900px),(pointer:coarse){
 :root{--battle-side-widget-width:min(240px,36vw)}
 #heroStatus .hero-unit-entry{grid-template-columns:minmax(0,1fr) 17px; gap:2px}
 #heroStatus .hero-unit-entry .hero-equipped-items{width:17px; min-width:17px}
 #heroStatus .hero-unit-entry .hero-equipped-items img{width:17px; border-radius:2px}
}

/* V9.2 final size/fit refinements */
:root{--battle-side-widget-width:clamp(262px,18vw,308px)}

/* Hero slot equipment rail: make each item icon appear square */
#heroStatus .hero-unit-entry{grid-template-columns:minmax(0,1fr) auto !important;align-items:stretch}
#heroStatus .hero-unit-entry .hero-equipped-items{
  height:100% !important;
  aspect-ratio:1/3;
  width:auto !important;
  min-width:0 !important;
  display:grid !important;
  grid-template-rows:repeat(3,minmax(0,1fr));
  gap:1px !important;
  align-self:stretch;
  justify-self:end;
  overflow:hidden;
}
#heroStatus .hero-unit-entry .hero-equipped-items img{
  width:100% !important;
  height:100% !important;
  aspect-ratio:1/1;
  object-fit:cover;
}

@media(max-width:900px),(pointer:coarse){
  :root{--battle-side-widget-width:min(228px,35vw)}
}

/* V9.3 compact 20% smaller side widgets + easier drag */
:root{--battle-side-widget-width:clamp(210px,14.4vw,246px)}
#frontlineCommandDragPad{
  position:absolute;
  left:33%; top:1.2%; width:34%; height:6.4%;
  z-index:3;
  cursor:grab;
  border-radius:999px;
  background:rgba(255,255,255,.02);
}
#frontlineCommandPanel.frontline-command-panel.dragging #frontlineCommandDragPad{cursor:grabbing;background:rgba(255,234,161,.12)}
#frontlineCommandPanel .frontline-command-bar{z-index:2}

@media(max-width:900px),(pointer:coarse){
  :root{--battle-side-widget-width:min(200px,31vw)}
  #frontlineCommandDragPad{left:30%; width:40%; height:7.4%}
}



/* Canonical frontline artwork coordinates (1254 x 1254 source image).
   All hit areas, labels and meters share the same square coordinate space. */
#laneDirectorStrip.lane-director-strip{
  position:relative !important; flex:none; width:var(--battle-side-widget-width) !important;
  aspect-ratio:1; height:auto !important; max-height:none !important;
  padding:0 !important; border:0 !important; border-radius:0 !important;
  background:url('assets/ui/custom/lane_status_panel.png') center/100% 100% no-repeat !important;
  box-shadow:none !important; overflow:visible; container-type:inline-size;
}
#laneDirectorHandle{
  position:absolute; inset:0; width:100%; height:32cqw !important;
  margin:0 !important; padding:0 !important; border:0 !important;
  background:transparent !important; pointer-events:none; z-index:2;
}
#laneDirectorHandle b,#frontlineDetailBtn,#laneDirectorReset{display:none !important}
#laneDirectorStrip #frontlineCollapseBtn{
  position:absolute !important; left:70%; top:19.2cqw; right:auto; bottom:auto;
  width:16%; height:9cqw !important; min-width:0 !important; min-height:0 !important;
  margin:0 !important; padding:0 !important; border:0 !important;
  background:transparent !important; color:transparent !important; font-size:0 !important;
  pointer-events:auto; cursor:pointer; touch-action:manipulation;
}
#laneDirectorStrip #frontlineCollapseBtn:hover,#laneDirectorStrip #frontlineCollapseBtn:focus-visible{
  border-radius:8px; box-shadow:0 0 0 2px #ffe684 inset;
}
#laneDirectorContent,#laneDirectorBody{
  position:absolute; inset:0; width:100%; height:100%;
  margin:0 !important; padding:0 !important; gap:0 !important; background:transparent;
}
#laneDirectorBody{display:block !important}
#laneDirectorBody .lane-director-chip{
  position:absolute; left:0; width:100%; height:12%; min-height:0;
  display:block !important; padding:0 !important; margin:0; border:0 !important;
  background:transparent !important; box-shadow:none !important; overflow:visible;
}
#laneDirectorBody .lane-top{top:35.9%}
#laneDirectorBody .lane-center{top:54.9%}
#laneDirectorBody .lane-bottom{top:73.8%}
#laneDirectorBody .lane-summary,#laneDirectorBody .lane-name{
  position:absolute; top:0; height:48%; display:flex; align-items:center; justify-content:center;
  font-size:3.2cqw; font-weight:900; line-height:1.1; white-space:nowrap;
  color:#f7e7ba; text-shadow:0 1px 1px #000; letter-spacing:-.04em;
}
#laneDirectorBody .lane-summary{left:12%; width:36%}
#laneDirectorBody .lane-name{left:59%; width:26%; font-size:4.5cqw}
#laneDirectorBody .lane-command-bar{
  position:absolute; left:14.2%; top:80%; right:auto; bottom:auto;
  width:67.5%; height:16%; margin:0 !important; padding:0; border:0;
  display:flex; border-radius:999px; overflow:hidden;
  background:#07172b; box-shadow:none;
}
#laneDirectorBody .lane-command-bar i{display:block; height:100%; flex-shrink:0}
#laneDirectorBody .ally-fill{background:linear-gradient(90deg,#6ab7ff,#2d8dff)}
#laneDirectorBody .enemy-fill{background:linear-gradient(90deg,#bc2538,#ff626b)}
#laneDirectorBody .threat .lane-summary{color:#ffcab9}
#laneDirectorBody .push .lane-summary{color:#c9ffd1}

/* Minimap artwork: native 1448 x 1086 geometry, shared right-rail width.
   The canvas occupies the inner opening; controls flow below the artwork. */
#minimapCard{
  position:relative !important; inset:auto !important; flex:none !important;
  width:100% !important; max-width:100% !important; min-width:0; box-sizing:border-box;
  height:auto !important; min-height:0 !important; max-height:none !important;
  margin:0 !important; padding:0 !important; border:0 !important; border-radius:0 !important;
  display:block; background:url('assets/ui/custom/minimap_panel.png') top center/100% auto no-repeat !important;
  box-shadow:none !important; overflow:visible; pointer-events:auto; container-type:inline-size;
}
#minimapHandle{
  position:absolute; top:0; left:0; width:100%; height:30cqw;
  margin:0; padding:0; border:0; background:transparent; pointer-events:none; z-index:2;
}
#minimapHandle b{display:none}
#minimapHandle .minimap-heading-actions{display:contents}
#minimapCard #minimapCollapseBtn{
  position:absolute; left:69.1%; top:17.625cqw; width:14.6%; height:7.875cqw;
  min-width:0; min-height:0; margin:0; padding:0; border:0; border-radius:6px;
  background:transparent; color:transparent; font-size:0; cursor:pointer;
  pointer-events:auto; touch-action:manipulation;
}
#minimapCard #minimapCollapseBtn:hover,#minimapCard #minimapCollapseBtn:focus-visible{
  box-shadow:0 0 0 2px #ffe684 inset; outline:none;
}
#minimapContent{
  position:static; display:grid; gap:4px; min-width:0;
  margin:0; padding:75% 0 0; background:transparent;
}
#minimapContent[hidden]{display:none !important}
#minimapCard #battleMinimap{
  position:absolute; left:7.25%; top:31.65cqw; width:85.5%; height:35.35cqw;
  display:block; margin:0; padding:0; border:0; border-radius:0;
  background:#10273a; object-fit:fill; cursor:crosshair; touch-action:none;
  clip-path:polygon(2% 0,98% 0,100% 4%,100% 96%,98% 100%,2% 100%,0 96%,0 4%);
}
#minimapCard .minimap-controls{
  display:grid; grid-template-columns:1fr 1.3fr 1fr 1.3fr; gap:3px; align-items:center; margin:0;
}
#minimapCard .minimap-controls button,#minimapCard .minimap-controls output{
  display:flex; align-items:center; justify-content:center; box-sizing:border-box;
  min-width:0; min-height:24px; height:24px; padding:0; border:1px solid #779bb6;
  border-radius:5px; background:#12304be8; color:#ffe5a0; font-size:11px; font-weight:800;
}
#minimapCard .minimap-controls button{cursor:pointer;touch-action:manipulation}
#minimapCard .minimap-controls button[hidden]{display:none !important}
#minimapCard .minimap-help{display:none}

/* Floating HUD and production command dock: canonical positions. */
#minimapCard.floating-hud,#laneDirectorStrip.floating-hud,#routeEditorOpen.floating-hud{
 position:fixed !important; right:auto !important; bottom:auto !important; margin:0 !important;
 z-index:42; pointer-events:auto; touch-action:none;
}
#minimapCard.floating-hud,#laneDirectorStrip.floating-hud{width:var(--floating-width) !important;max-width:calc(100vw - 4px) !important}
#minimapHandle,#laneDirectorHandle{pointer-events:auto;touch-action:none;cursor:grab}
#routeEditorOpen.floating-hud{cursor:grab}
#laneDirectorBody .force-ally{color:#65c5ff}#laneDirectorBody .force-enemy{color:#ff646c}
#laneDirectorBody .lane-summary{gap:.2em}
.production-panel{position:relative}
#frontlineCommandPanel.frontline-command-panel{
 position:absolute !important;left:0 !important;right:auto !important;top:auto !important;bottom:calc(100% + 48px) !important;
 width:100% !important;aspect-ratio:1536/1024 !important;height:auto !important;min-height:0;max-height:none !important;
 display:block;z-index:25;border:0 !important;border-radius:0 !important;padding:0;
 background:url('assets/ui/custom/frontline_command_panel.png') center/contain no-repeat !important;
 box-shadow:none !important;overflow:visible;pointer-events:auto;
}
#frontlineCommandHandle{display:block!important;position:absolute;inset:0 0 auto;height:24px;z-index:4;background:none;border:0}#frontlineCommandHandle>b,#frontlineCommandReset{display:none!important}#frontlineCommandCollapse{position:absolute;right:2px;top:0;width:26px;height:24px;border:1px solid #dfba58;border-radius:6px;background:#113050;color:#ffe8a3;cursor:pointer}
#frontlineCommandPanel.frontline-command-panel.floating-hud{
 position:fixed !important;bottom:auto !important;right:auto !important;
 width:var(--floating-width) !important;max-width:calc(100vw - 4px);z-index:42;touch-action:none;cursor:grab;
}
#frontlineCommandDragPad{display:block !important;left:25%;top:0;width:50%;height:10%;min-height:14px;touch-action:none;cursor:grab}
#frontlineCommandDragPad::after{content:'⠿';position:absolute;left:50%;top:0;transform:translateX(-50%);color:#ffe6a3;font-size:13px;text-shadow:0 1px 2px #061525;pointer-events:none}

.ref-brand-copy strong{white-space:normal;line-height:1.15}

/* Dedicated defense equipment editor and effect-first catalog cards. */
#itemSettingsModal{z-index:16000}
.item-settings-modal{width:min(1200px,96vw);max-height:92dvh;display:flex;flex-direction:column;gap:12px}
.item-settings-modal>p{margin:0;color:#c9d6e6;font-size:13px}
.item-batch-controls{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.item-batch-controls input[type=number]{width:100px}
#itemSettingsRows{overflow:auto;min-height:0;flex:1}
.item-settings-row{padding:14px;margin-bottom:12px;border:1px solid #537599;border-radius:10px;background:#152942}
.item-settings-row[hidden]{display:none}
.item-settings-row header{display:flex;justify-content:space-between;gap:12px;margin-bottom:12px;color:#ffe098}
.item-settings-row header span{font-size:12px;color:#afc9e8}
.item-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(145px,1fr));gap:10px}
.item-fields label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:#eaf2ff}
.item-fields small{color:#a9bfda}
.item-fields input{width:100%;min-width:0;box-sizing:border-box}
.item-settings-modal footer{display:flex;justify-content:space-between;align-items:center;gap:12px}
#itemSettingsStatus{font-size:12px;color:#c2ddf5}
.catalog-item-effects .catalog-info{display:block!important;padding:10px!important}
.catalog-item-effects .catalog-stats{display:flex!important;flex-direction:column;gap:5px;white-space:normal!important}
.catalog-item-effects .catalog-stats span{white-space:normal!important;text-align:left!important}
.catalog-item-effects .catalog-info strong{display:block;color:#ffe098;margin-bottom:6px}
@media(max-width:640px){.item-settings-modal{max-height:95dvh}.item-fields{grid-template-columns:repeat(2,minmax(0,1fr))}.item-settings-modal footer{flex-wrap:wrap}}


/* Shared collapsed HUD presentation, used by all three movable panels. */
#minimapCard.is-collapsed,#laneDirectorStrip.lane-director-strip.is-collapsed,#frontlineCommandPanel.frontline-command-panel.is-collapsed{width:var(--floating-width)!important;height:36px!important;min-height:36px!important;aspect-ratio:auto!important;border:2px solid #dfba58!important;border-radius:8px!important;background:linear-gradient(145deg,#2877bd,#082753 65%,#12477e)!important;box-shadow:inset 0 0 0 1px #fff3,0 2px 4px #0008!important;padding:0!important}
#minimapCard.is-collapsed::before,#laneDirectorStrip.is-collapsed::before,#frontlineCommandPanel.is-collapsed::before{display:block!important;position:absolute;z-index:5;left:12px;top:8px;font-size:13px;font-weight:800;color:#ffe8a3;pointer-events:none}
#minimapCard.is-collapsed::before{content:'미니맵'}#laneDirectorStrip.is-collapsed::before{content:'전장 상황'!important}#frontlineCommandPanel.is-collapsed::before{content:'전군 진군'}
#minimapCard.is-collapsed #minimapHandle,#laneDirectorStrip.is-collapsed #laneDirectorHandle,#frontlineCommandPanel.is-collapsed #frontlineCommandHandle{position:absolute!important;inset:0!important;height:100%!important;background:none!important}
#minimapCard.is-collapsed #minimapHandle>b,#laneDirectorStrip.is-collapsed #laneDirectorHandle>b,#laneDirectorStrip.is-collapsed #frontlineDetailBtn,#frontlineCommandPanel.is-collapsed #frontlineCommandDragPad,#minimapCard.is-collapsed #minimapContent,#laneDirectorStrip.is-collapsed #laneDirectorContent,#frontlineCommandPanel.is-collapsed #frontlineCommandBar{display:none!important}
#minimapCard.is-collapsed #minimapCollapseBtn,#laneDirectorStrip.is-collapsed #frontlineCollapseBtn,#frontlineCommandPanel.is-collapsed #frontlineCommandCollapse{position:absolute!important;inset:0 0 0 auto!important;width:34px!important;height:100%!important;border:0!important;background:transparent!important;color:#ffe8a3!important;font-size:18px!important;transform:none!important}
#catalogDetailModal{z-index:1200}.catalog-detail-dialog{width:min(660px,94vw);max-height:88vh;overflow:auto;border:1px solid #b5a570;border-radius:14px;padding:18px;background:#102637;color:#edf4f6}.catalog-detail-dialog header{display:flex;align-items:center;justify-content:space-between;gap:12px}.catalog-detail-dialog h2{font-size:20px}.catalog-detail-dialog button{padding:6px 12px}.catalog-detail-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}.catalog-detail-stats span{padding:7px;background:#1c3c50;border-radius:5px}.catalog-detail-skills article{border-top:1px solid #496272;padding:12px 0}.catalog-detail-skills p{margin:6px 0;line-height:1.5}.catalog-detail-skills small{color:#b6d5e2}.catalog-card{cursor:pointer}

/* 아이템 설정: 한 아이템 = 한 줄 (표 형태, 좁은 화면은 가로 스크롤) */
.item-settings-modal{width:min(1480px,98vw)}
#itemSettingsRows{--item-cols:minmax(110px,140px) 132px 64px repeat(8,58px) minmax(260px,1fr);overflow:auto}
.item-settings-head,.item-settings-row{display:grid;grid-template-columns:var(--item-cols);align-items:center;gap:6px;min-width:1060px}
.item-settings-head{position:sticky;top:0;z-index:2;padding:6px 10px;background:#0f2036;border-bottom:1px solid #537599;font-size:11px;color:#ffe098;line-height:1.15}
.item-settings-head span{display:flex;flex-direction:column;align-items:center;text-align:center}.item-settings-head span:first-child,.item-settings-head span:nth-child(2),.item-settings-head span:last-child{align-items:flex-start;text-align:left}
.item-settings-head small{color:#a9bfda;font-size:10px}
.item-settings-row{padding:5px 10px;margin:0;border:0;border-bottom:1px solid #2c4666;border-radius:0;background:#152942}
.item-settings-row:nth-child(odd){background:#18304c}
.item-settings-row .item-name{display:flex;align-items:center;gap:6px;min-width:0;color:#ffe098;font-size:13px}
.item-settings-row .item-name b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.item-settings-row .item-meta{font-size:11px;color:#afc9e8;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.item-settings-row .item-cell{display:block;margin:0}
.item-settings-row .item-cell input,.item-settings-row .item-cell select{width:100%;min-width:0;box-sizing:border-box;padding:4px 5px;font-size:12px;height:28px}
.item-settings-row .item-specials{display:flex;flex-wrap:nowrap;gap:8px;overflow-x:auto;min-width:0}
.item-settings-row .item-special{display:flex;align-items:center;gap:4px;white-space:nowrap;font-size:11px;color:#eaf2ff}
.item-settings-row .item-special input{width:58px;padding:4px 5px;font-size:12px;height:28px;box-sizing:border-box}
.item-settings-row .item-special small{color:#a9bfda}
.item-settings-row .item-none{color:#6f89a8}
@media(max-width:640px){#itemSettingsRows{--item-cols:118px 92px 58px repeat(8,56px) 240px}}

/* 특수스킬 편집 부품 (아이템 표 · 스킬 개별편집 공통) */
.sp-editor{display:flex;align-items:center;gap:6px;flex-wrap:nowrap;min-width:0}
.sp-list{display:flex;gap:6px;flex-wrap:nowrap}
.sp-chip{display:inline-flex;align-items:center;gap:4px;padding:2px 4px 2px 8px;border:1px solid #7d62b8;border-radius:14px;background:#2a2150;white-space:nowrap;font-size:11px;color:#eee4ff}
.sp-chip b{color:#e7b6ff;font-weight:600}
.sp-chip label{display:inline-flex;align-items:center;gap:2px;color:#cdbfe8}
.sp-chip input{width:50px;height:24px;padding:2px 4px;font-size:12px;box-sizing:border-box}
.sp-chip small{color:#a99bc8;font-size:10px}
.sp-del{border:0;background:transparent;color:#ff9c9c;cursor:pointer;font-size:12px;padding:0 4px;line-height:1}
.sp-add{height:26px;font-size:12px;max-width:120px;background:#1d2d47;color:#e7d6ff;border:1px dashed #8f76c8;border-radius:6px}
.item-settings-row .item-specials{align-items:center}
.expert-sp-field{display:flex;flex-direction:column;gap:6px;grid-column:1/-1;padding:8px;border:1px dashed #5b4a86;border-radius:8px;overflow-x:auto}
.expert-sp-field>span{font-size:12px;color:#e7b6ff}.expert-sp-field>span small{color:#a99bc8;margin-left:6px}
.expert-sp-field .sp-editor{flex-wrap:wrap}.expert-sp-field .sp-list{flex-wrap:wrap}
.expert-sp-row{display:flex;flex-direction:column;gap:4px;margin-top:8px}.expert-sp-row>b{color:#ffe098;font-size:12px}
#cardExpertFields .sp-chip label,#itemSettingsRows .sp-chip label{display:inline-flex;flex-direction:row;align-items:center;gap:2px;white-space:nowrap;margin:0;font-size:11px}
#cardExpertFields .sp-chip input,#itemSettingsRows .sp-chip input{width:52px!important;min-width:0;height:24px;padding:2px 4px;font-size:12px;flex:none}
#cardExpertFields .sp-add{width:auto!important;flex:none}
#cardExpertFields .sp-chip small,#itemSettingsRows .sp-chip small{display:inline!important;white-space:nowrap;margin:0 2px 0 0}
.route-editor-controls .route-reset-btn{white-space:nowrap;border-color:#c98a3c!important;color:#ffd39a!important;background:#3a2612!important;padding-inline:8px!important}

/* 레벨업 성장률 설정 · 역할 배지 */
#levelGrowthModal{z-index:16000}
.level-growth-modal{width:min(820px,96vw);max-height:92dvh;display:flex;flex-direction:column;gap:10px}
.level-growth-table{overflow:auto}
.lg-head,.lg-row{display:grid;grid-template-columns:minmax(200px,1.6fr) repeat(5,minmax(78px,1fr));gap:6px;align-items:center;min-width:620px}
.lg-head{position:sticky;top:0;background:#0f2036;padding:6px 8px;font-size:12px;color:#ffe098;border-bottom:1px solid #537599}
.lg-head small{color:#a9bfda;font-size:10px}
.lg-row{padding:5px 8px;border-bottom:1px solid #2c4666;background:#152942}.lg-row:nth-child(odd){background:#18304c}
.lg-row b{color:#ffe098;font-size:13px;display:flex;flex-direction:column}.lg-row b small{color:#9fb6d3;font-weight:400;font-size:10px}
.lg-row input{width:100%;box-sizing:border-box;height:28px;padding:3px 6px}
.level-growth-modal footer{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
#levelGrowthStatus{font-size:12px;color:#c2ddf5}
.catalog-role{position:absolute;left:6px;bottom:6px;z-index:3;padding:2px 7px;border-radius:10px;font-size:11px;font-weight:700;color:#10151c;background:#c9d6e6;box-shadow:0 1px 3px #0008}
.catalog-art{position:relative}
.catalog-role.role-melee{background:#ff9f80}.catalog-role.role-tank{background:#8fb8ff}.catalog-role.role-balance{background:#b9e6a6}.catalog-role.role-ranged{background:#ffe08a}
.catalog-role.role-aoe{background:#ffb26b}.catalog-role.role-pierce{background:#8fe3e0}.catalog-role.role-assassin{background:#d7a2ff}.catalog-role.role-sovereign{background:linear-gradient(90deg,#ffd35a,#ff8a5a);color:#2a1300}
.catalog-card[hidden]{display:none!important}
.expert-role-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.expert-role-actions small{color:#a9bfda}
.expert-note{margin:4px 0 0;color:#a9c7e6;font-size:12px}

/* 지략가 레벨 */
.strat-level{position:absolute;right:4px;top:4px;z-index:4;padding:1px 6px;border-radius:9px;background:#1b3350e6;border:1px solid #7fb4e8;color:#d8ecff;font-size:10px;font-weight:700;pointer-events:none;white-space:nowrap}
#strategistSlot{position:relative}
.lg-title{margin:14px 0 4px;color:#e7b6ff;font-size:13px}
.lg-head.lg-strat,.lg-row.lg-strat{grid-template-columns:minmax(120px,1.2fr) repeat(9,minmax(62px,1fr));min-width:780px}
.lg-note{margin:6px 0 0;font-size:11px;color:#a9c7e6}
.level-growth-modal{width:min(1000px,97vw)}
/* 접힌 HUD(미니맵·전선 상황·전군 진군): 펼친 폭의 30% 크기의 작은 칩 */
#minimapCard.is-collapsed,#laneDirectorStrip.lane-director-strip.is-collapsed,#frontlineCommandPanel.frontline-command-panel.is-collapsed{width:max(58px,calc(var(--floating-width) * .3))!important;min-width:0!important;height:30px!important;min-height:30px!important;border-width:1.5px!important;border-radius:7px!important;overflow:hidden!important}
#minimapCard.is-collapsed::before,#laneDirectorStrip.is-collapsed::before,#frontlineCommandPanel.is-collapsed::before{left:6px!important;top:50%!important;transform:translateY(-50%);font-size:11px!important;line-height:1!important;letter-spacing:-.3px;white-space:nowrap}
#minimapCard.is-collapsed::before{content:'미니맵'!important}#laneDirectorStrip.is-collapsed::before{content:'전황'!important}#frontlineCommandPanel.is-collapsed::before{content:'진군'!important}
#minimapCard.is-collapsed #minimapCollapseBtn,#laneDirectorStrip.is-collapsed #frontlineCollapseBtn,#frontlineCommandPanel.is-collapsed #frontlineCommandCollapse{width:22px!important;font-size:13px!important;padding:0!important}
#laneDirectorStrip.is-collapsed #laneDirectorReset,#frontlineCommandPanel.is-collapsed #frontlineCommandReset{display:none!important}

/* 스킬 도감 */
#skillGuideModal{z-index:1150}
.skill-guide-modal{width:min(1180px,97vw);max-height:94dvh;display:flex;flex-direction:column;gap:10px}
.sg-toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.sg-toolbar input{flex:1 1 220px;min-width:0}#skillGuideCount{font-size:12px;color:#a9c7e6}
.sg-list{overflow:auto;min-height:0;flex:1;display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:10px;align-content:start;padding-right:2px}
.sg-card{border:1px solid #3f6184;border-radius:10px;background:#132a44;padding:10px 12px;display:flex;flex-direction:column;gap:8px}
.sg-card.sg-focus{border-color:#ffd35a;box-shadow:0 0 0 2px #ffd35a55}
.sg-card header{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}.sg-card h3{margin:4px 0 0;font-size:16px;color:#ffe098}
.sg-kind,.sg-fam{display:inline-block;font-size:10px;padding:1px 6px;border-radius:8px;margin-right:4px;background:#24466c;color:#cfe3f7}
.sg-ultimate .sg-kind{background:#6b2e2e;color:#ffd0c0}.sg-book .sg-kind{background:#3c2d6b;color:#e7d6ff}.sg-passive .sg-kind{background:#2c5a3b;color:#cff5d8}
.sg-count{font-size:11px;color:#a9c7e6;white-space:nowrap}
.sg-variant{border-top:1px dashed #33557a;padding-top:6px}.sg-variant h4{margin:0 0 3px;font-size:13px;color:#eaf2ff}.sg-variant p{margin:0 0 5px;font-size:12.5px;line-height:1.45;color:#dbe8f5}
.sg-grade{display:inline-block;min-width:30px;text-align:center;border-radius:6px;font-size:11px;padding:1px 4px;color:#10151c;background:#c9d6e6}.sg-grade.g-SS{background:#8fd0ff}.sg-grade.g-SSS{background:linear-gradient(90deg,#ffd35a,#ff8a5a)}
.sg-params{display:flex;flex-wrap:wrap;gap:4px}.sg-params span{font-size:11px;padding:2px 6px;border-radius:6px;background:#0f2036;color:#eaf2ff;border:1px solid #2c4666}.sg-params i{font-style:normal;color:#8fb1d3;margin-right:4px}
.sg-card footer{border-top:1px solid #33557a;padding-top:6px}.sg-card footer>b{font-size:11px;color:#a9c7e6}
.sg-holders{display:flex;flex-wrap:wrap;gap:5px;margin-top:4px}.sg-holders button{display:flex;flex-direction:column;align-items:flex-start;padding:3px 8px;border-radius:7px;border:1px solid #4b6f96;background:#1b3656;color:#ffe8a3;cursor:pointer;text-align:left}
.sg-holders button small{color:#a9c7e6;font-size:10px}.sg-holders button.sg-upcoming{opacity:.6;border-style:dashed}.sg-holders button:hover{border-color:#ffd35a}
.sg-empty{color:#a9c7e6}
.sg-link{cursor:pointer;text-decoration:underline dotted #ffd35a}
@media(max-width:640px){.sg-list{grid-template-columns:1fr}}

/* 게임 DB · 병사 탭: 1줄 표 */
.bulk-table.soldier-mode .sm-hide{display:none!important}
.bulk-table.soldier-mode{table-layout:auto;min-width:0!important;width:100%}
.bulk-table.soldier-mode th,.bulk-table.soldier-mode td{padding:3px 3px!important;white-space:nowrap;vertical-align:middle;font-size:11.5px}
.bulk-table.soldier-mode th{line-height:1.1;text-align:center}.bulk-table.soldier-mode th small{font-size:9px;color:#a9bfda;font-weight:400}
.bulk-table.soldier-mode input,.bulk-table.soldier-mode select{width:56px!important;min-width:0!important;height:26px;padding:2px 4px!important;font-size:12px;box-sizing:border-box}
.bulk-table.soldier-mode [data-field="name"]{width:96px!important}
.bulk-table.soldier-mode [data-field="faction"],.bulk-table.soldier-mode [data-field="grade"]{width:60px!important}
.bulk-table.soldier-mode .sm-growth,.bulk-table.soldier-mode .sm-growth input{background:#1f2a45}
.bulk-table.soldier-mode .sm-growth input{width:46px!important;border-color:#8f76c8}
.bulk-table.soldier-mode th.sm-growth{color:#e7b6ff}
.bulk-table.soldier-mode .sm-actions{display:table-cell}
.bulk-table.soldier-mode .sm-actions button{padding:2px 6px!important;margin:0 1px;font-size:11px;min-width:0}
.bulk-table.soldier-mode .bulk-card-title{min-width:0}
body:has(.modal:not([hidden])) .floating-hud{visibility:hidden!important;pointer-events:none!important}

/* 분리 백업 버튼 */
.split-backup-actions{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:4px 0}
.split-backup-actions .split-label{font-size:11px;color:#a9c7e6;margin-right:2px}
.split-backup-actions button[data-db-export],.split-backup-actions button[data-db-import]{border-color:#6aa2d8}
.split-backup-actions button[data-img-export],.split-backup-actions button[data-img-import]{border-color:#c98a3c}

/* V9.7 경로 편집 박스: 라벨 · 선택 · 버튼을 행 단위로 정리해 글자가 박스를 벗어나지 않음 */
.route-editor-panel.re-v2{width:min(344px,calc(100% - 8px));padding:6px 7px 7px;gap:5px;overflow:hidden}
.re-v2 .re-head{display:grid;grid-template-columns:26px minmax(0,1fr) 58px 26px;align-items:center;gap:6px;padding-bottom:4px;border-bottom:1px solid #3c5d59}
.re-v2 .re-title{font-size:12px;color:#ffe6aa;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.re-v2 .re-head button{box-sizing:border-box;height:26px;min-height:26px;padding:0;border:1px solid #64847d;background:#183d43;border-radius:5px;color:#ffe6aa;font-size:16px;cursor:pointer}
.re-v2 .route-editor-grip{cursor:grab;touch-action:none;user-select:none}.re-v2 .route-editor-close{color:#ffddd0!important}
.re-v2 .re-row{display:grid;grid-template-columns:30px 92px minmax(0,1fr);gap:5px;align-items:center;min-width:0}
.re-v2 .re-label{font-size:11px;color:#bcd5c8;white-space:nowrap}
.re-v2 .re-btns{display:flex;gap:4px;min-width:0}
.re-v2 .re-btns button{flex:1 1 0;min-width:0}
.re-v2 .re-btns .route-reset-btn{flex:1.25 1 0}
.re-v2 button,.re-v2 select{box-sizing:border-box;border:1px solid #64847d;background:#183d43;color:#f8efd0;border-radius:5px;height:28px;min-height:28px;padding:2px 4px;font-size:11px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.re-v2 select{width:100%}
.re-v2 .route-lane-segment{display:grid;grid-template-columns:repeat(3,1fr);gap:2px;min-width:0}
.re-v2 .route-lane-segment button{padding:0}
.re-v2 button.active{background:#55753d;border-color:#d8df8b;color:#fff6c9}
.re-v2 .route-reset-btn{border-color:#c98a3c!important;color:#ffd39a!important;background:#3a2612!important;padding-inline:4px!important}
.re-v2 .re-save{background:#2b5a2f;border-color:#8fcf7c;color:#f2ffd8}
.re-v2 button:focus-visible,.re-v2 select:focus-visible{outline:2px solid #ffdb85;outline-offset:1px}
@media(max-width:900px),(pointer:coarse){.route-editor-panel.re-v2{width:min(318px,calc(100% - 8px));padding:5px}.re-v2 .re-row{grid-template-columns:28px 80px minmax(0,1fr);gap:4px}.re-v2 button,.re-v2 select{height:27px;min-height:27px;font-size:10.5px}}

/* V9.7 맵 관리 */
#mapManagerModal{z-index:15500}
.map-manager-dialog{width:min(760px,96vw);max-height:92dvh;display:flex;flex-direction:column;gap:8px;overflow:hidden}
.map-manager-dialog .mm-help{margin:0;font-size:12px;color:#cfe0d4}
.mm-list{display:flex;flex-direction:column;gap:5px;overflow:auto;min-height:0}
#mapManagerList{flex:1 1 auto;max-height:58dvh}#mapManagerDeleted{flex:none;max-height:22dvh}
.mm-sub{margin:4px 0 0;font-size:12px;color:#ffd39a}
.mm-row{display:grid;grid-template-columns:96px minmax(0,1fr) auto;gap:10px;align-items:center;padding:5px 8px;border:1px solid #37584f;border-radius:7px;background:#12302f}
.mm-row.current{border-color:#d8df8b;background:#1d3d2a}
.mm-row.deleted{grid-template-columns:minmax(0,1fr) auto;opacity:.85;background:#2a2320;border-color:#6d5140}
.mm-thumb{width:96px;height:54px;border-radius:4px;overflow:hidden;background:#0a1a1c;display:grid;place-items:center;font-size:10px;color:#8aa}
.mm-thumb img{width:100%;height:100%;object-fit:cover}
.mm-name{display:flex;flex-direction:column;gap:2px;min-width:0}
.mm-name b{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mm-name small{font-size:11px;color:#a9c3b7}.mm-name em{color:#e9f59a;font-style:normal}.mm-name i{color:#8fe0b0;font-style:normal}
.mm-acts{display:flex;gap:5px;flex-wrap:nowrap}
.mm-acts button,.map-tile-actions button,.mm-open{border:1px solid #64847d;background:#183d43;color:#f8efd0;border-radius:5px;padding:5px 9px;font-size:12px;cursor:pointer;white-space:nowrap}
.mm-acts button:disabled,.map-tile-actions button:disabled{opacity:.45;cursor:not-allowed}
.mm-acts .danger,.map-tile-actions .danger{border-color:#b0584a;background:#3d1c18;color:#ffc8bb}
.mm-empty{margin:0;font-size:12px;color:#8fa79c}
.map-tile-actions{display:flex;gap:4px;padding:0 6px 6px}
.map-tile-actions button{flex:1 1 0;min-width:0;padding:4px 4px;font-size:11px;overflow:hidden;text-overflow:ellipsis}
.mm-open{margin-top:6px}
@media(max-width:640px){.mm-row{grid-template-columns:64px minmax(0,1fr);}.mm-thumb{width:64px;height:36px}.mm-acts{grid-column:1/-1;justify-content:flex-end}.mm-row.deleted .mm-acts{grid-column:auto}}
/* 경로 편집 중에는 떠 있는 미니맵·전선상황·명령 패널이 편집 박스와 지도를 가리지 않게 숨김 */
body.map-edit-focus .floating-hud{display:none!important}
body.map-edit-focus #routeEditorPanel.re-v2{z-index:80}
/* 맵 갤러리: 삭제된 맵 복원 줄 */
.map-gallery-deleted{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin-top:10px;padding:8px 10px;border:1px solid #6d5140;border-radius:7px;background:#2a2320;font-size:12px}
.map-gallery-deleted[hidden]{display:none}
.map-gallery-deleted strong{color:#ffd39a;margin-right:4px}
.mgd-item{display:inline-flex;align-items:center;gap:6px;color:#e8dccf}
.mgd-item button{border:1px solid #64847d;background:#183d43;color:#f8efd0;border-radius:5px;padding:3px 8px;font-size:11px;cursor:pointer}
.map-tile-actions .mta-del{flex:0 0 34px}
.map-tile-actions button{text-overflow:clip}

/* V10 본진·부진: 함락 진군로 · 진지복구 */
.prod-lanes .lane-fallen{opacity:.45;text-decoration:line-through}
.prod-lanes .lane-recover{border-color:#c98a3c!important;color:#ffd39a!important;background:#3a2612!important}
.prod-lanes .lane-recover.active{background:#8a4f14!important;color:#fff3d6!important;box-shadow:0 0 0 1px #ffcf7a inset}
.prod-slot.slot-base-fallen{filter:grayscale(.7) brightness(.8)}
.prod-slot.slot-recover{box-shadow:0 0 0 2px #e0a24a inset}
#choiceBody .choice-recover{border-color:#c98a3c!important;background:#3a2612!important;color:#ffd39a!important}
#choiceBody button:disabled{opacity:.45;cursor:not-allowed}
.full-backup-status{white-space:pre-line}
/* 스킬 도감: 상태 이상 · 회복 규칙 설명 */
.sg-status-guide{margin:0 0 10px;padding:8px 12px;border:1px solid #4d6b8c;border-radius:8px;background:#122438;font-size:12px}
.sg-status-guide summary{cursor:pointer;font-weight:700;color:#ffe098}
.sg-status-guide dl{display:grid;grid-template-columns:max-content 1fr;gap:6px 12px;margin:8px 0 2px}
.sg-status-guide dt{font-weight:700;color:#ffd39a;white-space:nowrap}
.sg-status-guide dd{margin:0;color:#dbe7f3;line-height:1.5}
/* 편집 화면 확대/축소 · 이동 */
.re-v2 .re-view{grid-template-columns:30px 92px minmax(0,1fr)}
.re-v2 .re-zoom{display:grid;grid-template-columns:26px 1fr 26px;gap:2px;align-items:center}
.re-v2 .re-zoom b{font-size:11px;text-align:center;color:#ffe6aa}
.re-v2 .re-zoom button{padding:0}
.re-v2 .re-hint{margin:-2px 0 0;font-size:10px;color:#9fb9ad;line-height:1.3}
body.map-edit-focus #game{touch-action:none}
#game.edit-pan-ready{cursor:grab}#game.edit-panning{cursor:grabbing}

/* Card LIST: portrait and exactly two non-wrapping information rows. */
#cardCatalogGrid .catalog-card{min-height:0;align-self:stretch}
#cardCatalogGrid .catalog-card .catalog-art{aspect-ratio:5/7;min-height:0;width:100%;padding-bottom:0;box-sizing:border-box}
#cardCatalogGrid .catalog-art>img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
#cardCatalogGrid .catalog-art>.catalog-name-placeholder{position:absolute;inset:0;height:100%;min-height:0;aspect-ratio:auto}
#cardCatalogGrid .catalog-summary{display:grid;grid-template-rows:28px 28px;flex:0 0 56px;width:100%;min-width:0;background:#102333}
#cardCatalogGrid .catalog-stat-line,#cardCatalogGrid .catalog-skill-line{position:static;height:28px;box-sizing:border-box;line-height:26px;padding:0 5px;white-space:nowrap;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin;color:#f5e5b8;font-size:11px;text-align:left;touch-action:pan-x}
#cardCatalogGrid .catalog-stat-line{color:#e7f3fa;font-variant-numeric:tabular-nums;border-bottom:1px solid #344956}
#cardCatalogGrid .catalog-actions{position:absolute;top:4px;right:4px;display:grid;grid-template-columns:auto auto;gap:3px;padding:0;background:transparent;border:0}
#cardCatalogGrid .catalog-actions button{height:28px;min-height:28px;min-width:28px;padding:2px 6px;font-size:11px}
.catalog-detail-art{width:min(230px,65vw);aspect-ratio:5/7;margin:12px auto;display:grid;place-items:center;overflow:hidden;background:#0b1b27;border-radius:10px}
.catalog-detail-art img{width:100%;height:100%;object-fit:contain}
.catalog-detail-art .catalog-name-placeholder{padding:20px;text-align:center;font-size:24px;font-weight:bold}
.catalog-growth-note{font-size:13px;line-height:1.6;color:#b8d9f0}
@media(max-width:500px){.catalog-detail-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}
#cardCatalogGrid .catalog-role{bottom:6px}
#cardCatalogModal .card-catalog-modal>.full-backup-actions{flex:0 0 auto;align-content:start}
#cardCatalogModal .card-catalog-grid{min-height:120px}
@media(max-width:700px){
 #cardCatalogModal .catalog-toolbar{grid-template-columns:repeat(3,minmax(0,1fr));overflow-x:hidden;flex:0 0 auto}
 #cardCatalogModal .catalog-toolbar #catalogSearch{grid-column:1/-1}
 #cardCatalogModal .full-backup-status{display:none}
 #cardCatalogModal .card-catalog-modal>.full-backup-actions{gap:4px;padding:5px 7px}
}

/* Base status and route editor controls */
.base-status-panel{position:absolute;top:8px;left:50%;transform:translateX(-50%);z-index:14;background:#101a22e8;color:#fff;border:1px solid #ab9158;border-radius:8px;padding:5px 9px;max-width:90%;font-size:11px}.base-status-panel summary{cursor:pointer;text-align:center}.base-status-row{display:flex;gap:7px;align-items:center;padding:3px 0}.base-status-row.ally{color:#86cfff}.base-status-row.enemy{color:#ff978c}.base-status-row meter{width:64px;height:10px}.base-status-row button{font-size:11px;padding:3px 6px}.map-edit-focus .base-status-panel{display:none}.lobby-return{color:#ffe5a3;text-decoration:none;padding:7px}.re-v2 select{max-width:120px}.re-v2 .re-head #routeEditorUndo{font-size:11px;white-space:nowrap}.route-editor-panel{max-height:85dvh;overflow:auto}

/* Scenario 100-stage manager */
.scenario-manager-dialog{width:min(1180px,96vw);max-height:92vh;display:flex;flex-direction:column;overflow:hidden}
.scenario-set-tabs{display:grid;grid-template-columns:repeat(10,minmax(64px,1fr));gap:6px;padding:12px 14px;border-bottom:1px solid #ffffff18;background:#0b1520}
.scenario-set-tabs button{min-height:38px;border:1px solid #56708a;border-radius:8px;background:#142333;color:#dbe8f3;font-weight:700;cursor:pointer}
.scenario-set-tabs button.active{background:#8c6324;border-color:#e4b85b;color:#fff8df;box-shadow:0 0 0 1px #f2cb73 inset}
.scenario-set-meta{display:grid;grid-template-columns:minmax(210px,.8fr) minmax(320px,1.4fr) auto;gap:10px;align-items:end;padding:12px 14px;background:#101b27;border-bottom:1px solid #ffffff14}
.scenario-set-meta label{display:grid;gap:5px;color:#b9cad8;font-size:12px}
.scenario-set-meta input{width:100%;min-height:38px;border:1px solid #465d70;border-radius:7px;background:#09131d;color:#fff;padding:7px 9px}
.scenario-bulk-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.scenario-bulk-actions button,.scenario-manager-foot button{min-height:38px;border:1px solid #6d7e8c;border-radius:7px;background:#1a2b3b;color:#f1f6fa;padding:7px 11px;cursor:pointer}
.scenario-table-wrap{overflow:auto;min-height:0;flex:1;background:#071019;padding:0 14px 10px}
.scenario-admin-table{width:100%;border-collapse:separate;border-spacing:0 6px;min-width:920px}
.scenario-admin-table th{position:sticky;top:0;z-index:2;background:#071019;color:#9fb4c6;font-size:11px;text-align:left;padding:9px 8px}
.scenario-admin-table td{background:#10202d;border-top:1px solid #2b4253;border-bottom:1px solid #2b4253;padding:7px 8px;vertical-align:middle}
.scenario-admin-table td:first-child{border-left:1px solid #2b4253;border-radius:8px 0 0 8px;text-align:center}
.scenario-admin-table td:last-child{border-right:1px solid #2b4253;border-radius:0 8px 8px 0}
.scenario-admin-table tr.is-private td{opacity:.68;background:#151a20}
.scenario-admin-table input[type="text"],.scenario-admin-table select,.scenario-admin-table input[type="number"]{width:100%;min-height:34px;border:1px solid #40586b;border-radius:6px;background:#07131d;color:#eef6fb;padding:5px 7px}
.scenario-admin-table input[type="checkbox"]{width:20px;height:20px;accent-color:#e0ab49}
.scenario-stage-no{white-space:nowrap;color:#f0c46c;font-weight:800}
.scenario-manager-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 14px;border-top:1px solid #ffffff18;background:#0d1721;color:#a8bac8;font-size:12px}
.scenario-manager-foot.saved span{color:#9ee6b2}
@media(max-width:900px){.scenario-set-tabs{grid-template-columns:repeat(5,1fr)}.scenario-set-meta{grid-template-columns:1fr}.scenario-bulk-actions{justify-content:flex-start}.scenario-manager-dialog{width:98vw;max-height:96vh}}

/* Auto deck / scenario deck ratio controls */
.free-auto-deck-panel{flex:0 0 auto;margin-top:7px;padding:8px 10px;border:1px solid #35536a;border-radius:9px;background:#0b1822}
.free-auto-deck-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:7px;color:#cfe5f3;font-size:11px}.free-auto-deck-head label{display:flex;align-items:center;gap:7px;font-weight:800}.free-auto-deck-head input{width:18px;height:18px;accent-color:#e0ab49}.free-auto-deck-head small{color:#8fa8b9}
.free-auto-deck-grid{display:grid;grid-template-columns:repeat(8,minmax(72px,1fr)) minmax(160px,1.4fr);gap:6px;align-items:end}.free-auto-deck-grid label{display:grid;gap:3px;color:#9fb8c8;font-size:9px}.free-auto-deck-grid input{width:100%;height:32px;border:1px solid #3b586b;border-radius:6px;background:#07131c;color:#fff;padding:4px 6px}.free-auto-deck-grid button{height:32px;border:1px solid #8b6a31;border-radius:7px;background:#47361a;color:#ffe8af;font-weight:800;cursor:pointer}
.scenario-deck-config{display:grid;gap:5px;min-width:190px}.scenario-auto-ratios{display:grid;grid-template-columns:repeat(4,1fr);gap:3px}.scenario-auto-ratios label{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:2px;color:#9fb5c4;font-size:9px}.scenario-auto-ratios input{min-width:0!important;min-height:27px!important;padding:2px 3px!important;text-align:center}
@media(max-width:1100px){.free-auto-deck-grid{grid-template-columns:repeat(4,1fr)}.free-auto-deck-grid button{grid-column:span 2}.free-auto-deck-head{align-items:flex-start;flex-direction:column;gap:4px}}
@media(max-width:700px){.free-auto-deck-grid{grid-template-columns:repeat(2,1fr)}.free-auto-deck-grid button{grid-column:1/3}}
