:root{font-family:"Malgun Gothic","Noto Sans KR",system-ui,sans-serif;color:#eef1eb;background:#0e1316;line-height:1.45;--bg:#0e1316;--panel:#171e22;--panel2:#20292e;--line:#334047;--gold:#d8b56a;--red:#a8463b;--green:#4b8064;--ink:#eef1eb;--muted:#9daaa9;--shadow:0 14px 40px #0008}*{box-sizing:border-box}body{margin:0;min-width:320px;background:radial-gradient(circle at 20% 0,#243039 0,#11171a 38%,#0b1012 100%);color:var(--ink)}button,input,select{font:inherit}button{border:1px solid #3b474d;background:#252f34;color:var(--ink);border-radius:10px;padding:.65rem .9rem;cursor:pointer;transition:.16s}button:hover:not(:disabled){transform:translateY(-1px);border-color:#798b8d;background:#2c383e}button:disabled,.disabled{opacity:.4;cursor:not-allowed}.primary{background:linear-gradient(135deg,#8c6430,#c59e51);color:#130f09;border-color:#e3c477;font-weight:800}.danger{background:#6f302d;border-color:#a75149}.ghost{background:transparent}.big{padding:1rem 1.35rem;font-size:1.08rem}.app{min-height:100vh}.title-screen{display:grid;place-items:center;padding:2rem}.welcome{width:min(760px,94vw);text-align:center;padding:clamp(2rem,6vw,5rem);border:1px solid #39464b;border-radius:26px;background:linear-gradient(155deg,#1a2227eb,#10171beb),radial-gradient(circle,#654c28,#111);box-shadow:var(--shadow);position:relative;overflow:hidden}.welcome:before{content:"";position:absolute;inset:0;background:linear-gradient(110deg,transparent 0 45%,#d5b56a12 50%,transparent 55%);pointer-events:none}.logo-mark{width:90px;height:90px;margin:auto;border:2px solid var(--gold);display:grid;place-items:center;border-radius:24px;transform:rotate(45deg);font:900 36px Georgia;color:var(--gold);box-shadow:0 0 35px #d8b56a22}.logo-mark::first-letter{transform:rotate(-45deg)}.welcome h1{font:900 clamp(2.1rem,6vw,4.2rem) Georgia,"Malgun Gothic";letter-spacing:-.04em;margin:2rem 0 .75rem;color:#f4e9cc}.welcome p{color:#bbc4c1}.welcome-actions{display:flex;justify-content:center;gap:.8rem;margin:2rem 0}.topbar{height:68px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:1rem;padding:0 1rem;position:sticky;top:0;z-index:30;background:#10171aed;border-bottom:1px solid #2d383d;backdrop-filter:blur(14px)}.brand{display:flex;align-items:center;gap:.5rem;background:none;border:0;font-size:1.05rem;font-weight:800}.brand b{display:grid;place-items:center;width:34px;height:34px;border:1px solid var(--gold);border-radius:8px;color:var(--gold);font-family:Georgia}.topbar nav{display:flex;gap:.25rem;overflow-x:auto}.topbar nav button{white-space:nowrap;background:transparent;border:0;border-radius:0;border-bottom:2px solid transparent}.topbar nav button.active{color:#efcf8b;border-bottom-color:#d8b56a}.top-status{color:var(--muted);white-space:nowrap;font-size:.85rem}.content{width:min(1500px,100%);margin:auto;padding:clamp(1rem,2vw,2rem)}h1,h2,h3{line-height:1.15}h2{font-size:clamp(1.45rem,2vw,2rem)}.eyebrow{text-transform:uppercase;letter-spacing:.16em;color:#bfa76f;font-size:.72rem;font-weight:800}.muted{color:var(--muted)}.row{display:flex;gap:.6rem;align-items:center}.grow{flex:1}.section-head{display:flex;justify-content:space-between;align-items:flex-end;gap:1rem;margin-bottom:1.2rem}.hero-banner{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:1.5rem 1.8rem;border:1px solid #3b474b;border-radius:18px;background:linear-gradient(135deg,#222d31,#171e22);box-shadow:0 12px 32px #0004}.pool{text-align:right}.pool b{display:block;font-size:2rem;color:#efd08a}.kpi-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:.7rem;margin:1rem 0 2rem}.kpi{display:flex;flex-direction:column;gap:.25rem;padding:.9rem;border:1px solid #303a3e;border-radius:12px;background:#141b1e;color:#7e8a89}.kpi.on{border-color:#6c806a;color:#e6eee7;background:#1a2823}.target-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.7rem}.target-card{text-align:left;display:flex;flex-direction:column}.map-layout{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:1rem}.map-shell{height:min(72vh,780px);min-height:540px;position:relative;overflow:hidden;border:1px solid #3a4447;border-radius:20px;background:radial-gradient(circle at 60% 45%,#1d3533,#10191a 60%,#0b1113);touch-action:none}.map-canvas{position:absolute;inset:0;transform-origin:center;transition:transform .05s linear}.china-bg{position:absolute;inset:4%;width:92%;height:92%}.land{fill:#25362f;stroke:#6c7258;stroke-width:.7}.river{fill:none;stroke:#47778c;stroke-width:.6;opacity:.7}.tile{position:absolute;width:28px;height:28px;padding:0;transform:translate(-50%,-50%);border-radius:50%;font-size:.7rem;font-weight:900;z-index:2;background:#6f3c36;border-color:#b66d62;box-shadow:0 2px 8px #000}.tile.owned{background:#34654d;border-color:#74b688}.tile.attackable{box-shadow:0 0 0 4px #d9b96855,0 0 20px #dbbc6a99}.tile.selected{outline:3px solid white}.map-note{position:absolute;left:1rem;bottom:.8rem;font-size:.72rem;color:#9facaa;background:#0e1518cc;padding:.5rem .7rem;border-radius:7px;pointer-events:none}.territory-panel{padding:1.2rem;border:1px solid #3a4447;background:#171f22;border-radius:16px;height:max-content;position:sticky;top:86px}.territory-panel button{margin:.35rem .35rem .35rem 0}.formations{display:grid;gap:1rem}.formation{border:1px solid #313d42;border-radius:16px;background:#151d20;overflow:hidden}.formation.enabled{border-color:#617365}.formation>header{display:flex;justify-content:space-between;padding:.8rem 1rem;background:#20292d;border-bottom:1px solid #303a3e}.formation h3{margin:.25rem 0}.slots{display:grid;grid-template-columns:repeat(3,1fr);gap:.8rem;padding:.9rem}.slot{display:grid;grid-template-columns:74px 1fr;gap:.5rem .7rem;align-items:center;padding:.75rem;border-radius:12px;background:#11181b;border:1px solid #273236}.slot .pos{grid-column:1/-1;font-size:.7rem;color:#bfaa79;text-transform:uppercase;letter-spacing:.1em}.slot-choice,.tactic-choice,.equip-choice,.troop-edit{grid-column:2;text-align:left}.troop-edit{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.4rem}.troop-edit input{min-width:0}.portrait{position:relative;flex:none;border-radius:13px;overflow:hidden;border:1px solid #6f6656;box-shadow:inset 0 0 25px #0008}.portrait-helm{position:absolute;top:8%;left:0;right:0;text-align:center;color:#ead69d;font-size:1.2rem;text-shadow:0 2px 3px #000}.portrait-name{position:absolute;left:4px;right:4px;bottom:16px;text-align:center;background:#06090bbb;border-radius:4px;padding:2px;font-weight:900;font-size:.78rem}.portrait-troop{position:absolute;right:3px;bottom:2px;font-size:.55rem;color:#d9c58d}.portrait.empty{display:grid;place-items:center;background:#222;font-size:2rem}.search,select,input[type=number]{background:#0f1518;color:#e7ece9;border:1px solid #3a464b;border-radius:8px;padding:.62rem .7rem}.hero-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:.8rem}.hero-card{display:flex;gap:1rem;padding:1rem;background:#151d20;border:1px solid #2e393d;border-radius:14px}.hero-card h3{margin:.1rem 0}.hero-body{min-width:0}.stars{color:#d8b56a;font-size:.75rem}.tags{display:flex;gap:.35rem;margin:.35rem 0}.tags span{background:#263136;padding:.18rem .4rem;border-radius:5px;font-size:.72rem}.tactic-line,.item-line{font-size:.82rem}.table-wrap{overflow:auto;border:1px solid #2f3a3e;border-radius:12px}table{border-collapse:collapse;width:100%;background:#141b1e}th,td{padding:.65rem .75rem;border-bottom:1px solid #283236;text-align:left;white-space:nowrap}th{position:sticky;top:0;background:#232d31;color:#d7c48e;z-index:1}.desc{white-space:normal;min-width:300px}.clickable:hover{background:#243128}.tactic-icon{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:6px;background:#323a3d}.grade-A{color:#e6b866}.grade-B{color:#b7a4e4}.grade-C{color:#83b9d5}.grade-D{color:#b0b5b7}.equipment-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:.8rem}.equipment-card,.equipment-row{display:flex;flex-direction:column;align-items:flex-start;gap:.35rem;padding:1rem;border:1px solid #354044;background:#171f22;border-radius:12px}.equipment-card em{color:#8fa3a0;font-size:.72rem}.catalog-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.7rem}.catalog-card{display:flex;flex-direction:column;align-items:center;text-align:center;gap:.25rem;padding:.8rem;border:1px solid #2c383b;background:#151d20;border-radius:12px}.catalog-card span{font-size:.72rem;color:#c4b179}.chart{width:100%;height:240px;background:#11181b;border:1px solid #2b363a;border-radius:14px;margin:1rem 0}.chart .axis{stroke:#52605f}.chart .line{fill:none;stroke-width:4}.chart .player{stroke:#66a77f}.chart .npc{stroke:#c16c60}.chart text{fill:#cbd4d1;font-size:12px}.replay{margin-top:1rem;padding:1rem;border:1px solid #354044;background:#151d20;border-radius:14px}.replay-head{display:flex;justify-content:space-between}.replay-stage{height:220px;display:grid;grid-template-columns:1fr 1.3fr 1fr;align-items:center;gap:1rem}.army-side{height:120px;display:grid;place-items:center;border-radius:15px;font-size:1.3rem;font-weight:900}.army-side.player{background:linear-gradient(135deg,#234a3a,#14251d)}.army-side.npc{background:linear-gradient(135deg,#5a312f,#281818)}.event-burst{text-align:center;padding:1rem;border-radius:50%;min-height:130px;display:grid;place-items:center;background:radial-gradient(circle,#92733b55,transparent 70%)}.event-burst p{margin:.2rem}.replay input[type=range]{width:100%}.modal-back{position:fixed;inset:0;z-index:100;background:#000b;display:grid;place-items:center;padding:1rem}.modal{position:relative;width:min(1050px,96vw);max-height:88vh;overflow:auto;background:#151d20;border:1px solid #546166;border-radius:18px;padding:1.4rem;box-shadow:var(--shadow)}.modal-x{position:absolute;right:.8rem;top:.8rem;border-radius:50%;width:38px;height:38px;padding:0;font-size:1.4rem}.picker-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:.6rem;margin-top:1rem}.pick-card{display:flex;align-items:center;gap:.6rem;text-align:left}.pick-card small{display:block;color:var(--muted)}.picker-list{display:grid;gap:.6rem;margin-top:1rem}.settings{max-width:780px;display:grid;gap:1rem}.settings label{display:flex;align-items:center;gap:.6rem}.settings-actions{display:flex;flex-wrap:wrap;gap:.6rem}.file-btn{border:1px solid #3b474d;background:#252f34;padding:.65rem .9rem;border-radius:10px;cursor:pointer}.file-btn input{display:none}dl{display:grid;grid-template-columns:160px 1fr;gap:.3rem .8rem}dt{color:#8fa09e}.empty{padding:2rem;text-align:center;color:#8d9a98;border:1px dashed #344044;border-radius:12px}.empty.large{padding:8rem 2rem}.toast{position:fixed;right:1rem;bottom:1rem;z-index:120;max-width:min(560px,90vw);box-shadow:var(--shadow);background:#253036;border-color:#657174}.busy{position:fixed;inset:0;z-index:110;background:#050809bb;display:grid;place-items:center;align-content:center;gap:1rem;font-size:1.1rem}.spinner{width:44px;height:44px;border:4px solid #394347;border-top-color:#e2c276;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading{height:100vh;display:grid;place-items:center;color:#d6c28f;font-size:1.1rem}
@media(max-width:1000px){.topbar{grid-template-columns:auto 1fr}.top-status{display:none}.map-layout{grid-template-columns:1fr}.territory-panel{position:static}.kpi-grid{grid-template-columns:repeat(3,1fr)}.slots{grid-template-columns:1fr}.slot{grid-template-columns:74px 1fr}.map-shell{min-height:480px;height:64vh}}
@media(max-width:680px){.topbar{height:auto;grid-template-columns:1fr;padding:.5rem}.brand{justify-self:start}.topbar nav{width:100%;padding-bottom:.2rem}.content{padding:.8rem}.hero-banner{align-items:flex-start;flex-direction:column}.pool{text-align:left}.kpi-grid{grid-template-columns:repeat(2,1fr)}.section-head{align-items:stretch;flex-direction:column}.row{flex-wrap:wrap}.hero-grid{grid-template-columns:1fr}.map-shell{min-height:420px}.replay-stage{grid-template-columns:1fr 1fr}.event-burst{grid-column:1/-1;grid-row:1}.army-side{grid-row:2;height:90px}.modal{padding:1rem}.desc{min-width:220px}.welcome-actions{flex-direction:column}}

/* === EF CLOUD v1.1 visual layer === */
.brand small{font-size:.58rem;color:#baa66f;margin-left:.15rem;align-self:flex-end;margin-bottom:.12rem}.hero-portrait-wrap{position:relative;flex:none;border-radius:14px;overflow:hidden;border:1px solid #786d56;background:#11181b;box-shadow:0 7px 18px #0006,inset 0 0 18px #0007}.hero-portrait-img{display:block;width:100%;height:100%;object-fit:cover;user-select:none}.hero-portrait-badge{position:absolute;left:4px;bottom:4px;padding:2px 5px;border-radius:5px;background:#070a0cdd;color:#e6cf92;font-size:.58rem;font-weight:800}.portrait-empty{width:70px;height:92px;display:grid;place-items:center;border:1px dashed #566165;border-radius:12px;background:#171e22;color:#82908e;font-size:1.5rem}.pick-card>span{min-width:0}.tactic-visual{display:flex;align-items:center;gap:.55rem;min-width:0}.tactic-visual img{width:110px;aspect-ratio:16/9;object-fit:cover;border-radius:9px;border:1px solid #685f4d;box-shadow:0 4px 12px #0005}.tactic-visual span{font-weight:800}.tactic-visual.compact img{width:40px;height:40px;aspect-ratio:1;border-radius:8px}.tactic-visual.compact span{font-size:.8rem}.settings-card{border:1px solid #334047;background:#151d20;border-radius:14px;padding:1rem;display:grid;gap:.65rem}.settings-card h3{margin:.1rem 0 .4rem}.territory-kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:.45rem;margin:.8rem 0}.territory-kpis span{padding:.5rem;border-radius:8px;background:#11181b;border:1px solid #303a3e;font-size:.75rem;text-align:center;color:#d2c29a}.map-tools{position:absolute;z-index:8;left:.65rem;top:.65rem;display:flex;flex-wrap:wrap;gap:.35rem;max-width:80%;background:#091012c7;padding:.4rem;border:1px solid #334047;border-radius:10px;backdrop-filter:blur(8px)}.map-tools button{padding:.36rem .55rem;font-size:.68rem;background:#1a2428}.map-tools button.active{color:#f1d487;border-color:#b39450;background:#3b3122}.strategy-map-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;opacity:.96;pointer-events:none;user-select:none}.route-layer{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:1}.route-preview{stroke:#e6c77a;stroke-width:.48;stroke-dasharray:1.6 1.2;filter:drop-shadow(0 0 2px #000);animation:routePulse 1.3s ease-in-out infinite}.route-layer.marching{z-index:5}.march-path{stroke:#f2d486;stroke-width:.62;stroke-dasharray:2 1;filter:drop-shadow(0 0 2px #f2d486)}.march-overlay{position:absolute;inset:0;z-index:7;pointer-events:none}.march-unit{--sx:10%;--sy:10%;--tx:80%;--ty:80%;position:absolute;left:var(--sx);top:var(--sy);width:88px;transform:translate(-50%,-50%);animation:marchMove 1.9s cubic-bezier(.32,.04,.35,1) forwards;filter:drop-shadow(0 8px 10px #000b)}.march-unit img{display:block;width:88px;border-radius:12px;border:1px solid #d2b86f;background:#111}.march-unit b{display:block;margin-top:3px;text-align:center;background:#080c0ed9;border-radius:6px;padding:2px;color:#f2deb1;font-size:.65rem}.npc-lv-4,.npc-lv-5{border-color:#d46e5f}.npc-lv-5{box-shadow:0 0 0 2px #c54a3b55,0 0 12px #c54a3b77}
@keyframes routePulse{50%{opacity:.45}}@keyframes marchMove{0%{left:var(--sx);top:var(--sy);transform:translate(-50%,-50%) scale(.88)}60%{transform:translate(-50%,-50%) scale(1.04)}100%{left:var(--tx);top:var(--ty);transform:translate(-50%,-50%) scale(.9)}}

/* Battle presentation: consumes BattleEvent[] only; no battle calculation lives here. */
.battle-presentation{margin-top:1rem;border:1px solid #4a5147;border-radius:18px;background:linear-gradient(180deg,#171f22,#0f1518);overflow:hidden;box-shadow:0 12px 34px #0006}.battle-present-head{display:flex;justify-content:space-between;gap:1rem;align-items:center;padding:.85rem 1rem;border-bottom:1px solid #303b3f;background:#20292d}.battlefield{position:relative;min-height:390px;display:grid;grid-template-columns:minmax(250px,1fr) minmax(250px,.9fr) minmax(250px,1fr);gap:.75rem;align-items:center;padding:1rem;background:radial-gradient(circle at 50% 42%,#5f492b33 0 12%,transparent 38%),linear-gradient(90deg,#17332766,transparent 35% 65%,#3a1e1d66),url('./assets/maps/eastern_han_strategy.svg') center/cover;isolation:isolate}.battlefield:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#0004,transparent 35%,#0008);z-index:-1;pointer-events:none}.battle-line{display:grid;gap:.55rem;align-content:center}.battle-unit{display:grid;grid-template-columns:72px 1fr;align-items:center;gap:.65rem;padding:.45rem;border:1px solid #344146;border-radius:13px;background:#0d1316db;transition:.18s;backdrop-filter:blur(4px)}.battle-unit.actor{border-color:#d9ba6d;box-shadow:0 0 0 2px #d9ba6d44,0 0 22px #d9ba6d55;transform:translateX(5px)}.npc-line .battle-unit.actor{transform:translateX(-5px)}.battle-unit.target{border-color:#c7665c;box-shadow:0 0 0 2px #c7665c44,0 0 20px #c7665c66}.battle-unit.dead{filter:grayscale(1);opacity:.44}.battle-unit-meta{min-width:0}.battle-unit-meta b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.battle-unit-meta small{color:#abb6b2;font-size:.68rem}.troop-bar{height:7px;background:#222c30;border-radius:10px;overflow:hidden;margin:.28rem 0}.troop-bar i{display:block;height:100%;background:linear-gradient(90deg,#4c8a67,#9bb36b);transition:width .2s}.npc-line .troop-bar i{background:linear-gradient(90deg,#a54d45,#b78661)}.battle-center{min-height:300px;display:grid;place-items:center;align-content:center;position:relative}.tactic-cutin{position:absolute;top:5px;left:50%;transform:translateX(-50%);width:min(280px,95%);display:grid;grid-template-columns:auto 110px 1fr;gap:.5rem;align-items:center;padding:.55rem;background:#0b1012e8;border:1px solid #b59854;border-radius:14px;animation:cutin .42s ease both;z-index:5;box-shadow:0 8px 30px #000a}.tactic-cutin .tactic-visual img{width:110px}.tactic-cutin b{display:block;color:#f4dfac}.tactic-cutin small{color:#9facaa}.vfx-stage{position:relative;width:180px;height:180px;display:grid;place-items:center;pointer-events:none}.vfx-glyph{width:105px;height:105px;opacity:.86;filter:drop-shadow(0 0 16px #fff3);animation:vfxPop .45s ease-out both}.vfx-ring{position:absolute;width:130px;height:130px;border:3px solid #e6c77a;border-radius:50%;opacity:.65;animation:ringBurst .65s ease-out both}.vfx-spark{position:absolute;width:12px;height:70px;border-radius:50%;background:linear-gradient(transparent,#fff4c7,transparent);transform:rotate(34deg);animation:spark .52s ease-out both}.vfx-spark.two{transform:rotate(-48deg);animation-delay:.04s}.vfx-physical-attack .vfx-ring{border-color:#d95f50}.vfx-strategy-attack .vfx-ring{border-color:#758bdf}.vfx-heal .vfx-ring,.vfx-recovery .vfx-ring{border-color:#62bd86}.vfx-drain .vfx-ring{border-color:#c04264}.vfx-critical .vfx-ring{border-color:#f4c45e;border-width:5px}.vfx-counter .vfx-ring{border-color:#d68758}.vfx-control .vfx-ring,.vfx-debuff .vfx-ring{border-color:#9c75ba}.vfx-protect .vfx-ring{border-color:#71a187}.event-caption{display:grid;gap:.15rem;text-align:center;min-height:68px;margin-top:.25rem}.event-caption strong{color:#f0cf84;font-size:1.02rem}.event-caption span{color:#c5cecb;font-size:.78rem}.impact-number{position:absolute;top:48%;left:50%;transform:translate(-50%,-50%);font-size:clamp(1.6rem,3vw,2.6rem);font-weight:950;color:#f4eee2;text-shadow:0 3px 0 #000,0 0 16px #000;z-index:8;animation:impactFloat .7s ease-out both}.impact-number.HEAL,.impact-number.LIFESTEAL{color:#8fe1aa}.impact-number.DAMAGE_P{color:#ffad91}.impact-number.DAMAGE_S{color:#b4c8ff}.impact-number.CRIT_P,.impact-number.CRIT_S{color:#ffd66d;font-size:2.7rem}.replay-range{width:calc(100% - 2rem);margin:.7rem 1rem}.replay-controls,.event-jump-row{display:flex;flex-wrap:wrap;gap:.45rem;padding:.55rem 1rem}.replay-controls{border-top:1px solid #2f393d}.replay-controls button.active{color:#f0d184;border-color:#bd9e57}.event-jump-row{padding-top:0}.small{padding:.38rem .6rem;font-size:.72rem}.quality-low .vfx-spark,.quality-low .vfx-ring{display:none}.quality-low .tactic-cutin{animation:none}.quality-high .vfx-stage{filter:drop-shadow(0 0 14px #d8b56a33)}
@keyframes cutin{from{opacity:0;transform:translate(-50%,-14px) scale(.92)}to{opacity:1;transform:translate(-50%,0) scale(1)}}@keyframes vfxPop{from{opacity:0;transform:scale(.45) rotate(-12deg)}65%{opacity:1;transform:scale(1.12) rotate(2deg)}to{transform:scale(1)}}@keyframes ringBurst{from{opacity:.8;transform:scale(.3)}to{opacity:0;transform:scale(1.5)}}@keyframes spark{from{opacity:0;transform:scale(.5) rotate(34deg)}35%{opacity:1}to{opacity:0;transform:scale(1.4) rotate(54deg)}}@keyframes impactFloat{from{opacity:0;transform:translate(-50%,-20%) scale(.65)}25%{opacity:1;transform:translate(-50%,-55%) scale(1.15)}to{opacity:0;transform:translate(-50%,-110%) scale(.95)}}

.battle-report{display:grid;gap:1rem;margin-bottom:1rem}.battle-result-summary{display:grid;grid-template-columns:auto 1fr auto;gap:1rem;align-items:center;padding:1rem;border:1px solid #3c484c;border-radius:16px;background:linear-gradient(135deg,#1d272b,#131a1d)}.result-seal{width:78px;height:78px;display:grid;place-items:center;border-radius:50%;border:2px solid #9b8b65;font:900 1.05rem Georgia}.result-seal.win{color:#a4ddb8;border-color:#5a9b71;background:#244432}.result-seal.loss{color:#efaaa2;border-color:#a8544b;background:#4a2522}.result-seal.draw{color:#ded0a7;background:#49402d}.mvp-card{display:flex;align-items:center;gap:.7rem;padding:.55rem .75rem;border:1px solid #716446;border-radius:12px;background:#18170fd6}.mvp-card small,.mvp-card span{display:block;color:#aa9f82;font-size:.68rem}.mvp-card b{display:block;color:#f1d58f}.highlights{padding:.85rem 1rem;border-left:3px solid #b89953;background:#161d20;border-radius:0 12px 12px 0}.highlights h4{margin:.1rem 0 .5rem}.highlights ol{margin:.25rem 0;padding-left:1.3rem}.highlights li{margin:.25rem 0;color:#cbd2cf;font-size:.86rem}

.reduced-motion *,body.reduced-motion *{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.battle-presentation.reduced-motion .vfx-spark,.battle-presentation.reduced-motion .vfx-ring{display:none}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important}}
@media(max-width:1000px){.battlefield{grid-template-columns:1fr .8fr 1fr;min-height:360px}.battle-unit{grid-template-columns:58px 1fr}.battle-unit .hero-portrait-wrap{width:58px!important;height:77px!important}.tactic-cutin{grid-template-columns:auto 82px 1fr}.tactic-cutin .tactic-visual img{width:82px}.battle-result-summary{grid-template-columns:auto 1fr}.mvp-card{grid-column:1/-1}.territory-kpis{grid-template-columns:1fr}}
@media(max-width:680px){.map-tools{max-width:95%;right:.5rem}.map-tools button{font-size:.62rem;padding:.3rem .45rem}.march-unit,.march-unit img{width:70px}.battle-present-head{align-items:flex-start;flex-direction:column}.battlefield{grid-template-columns:1fr 1fr;gap:.45rem;padding:.65rem;min-height:520px}.battle-center{grid-column:1/-1;grid-row:1;min-height:205px}.player-line{grid-column:1;grid-row:2}.npc-line{grid-column:2;grid-row:2}.battle-line{align-content:start}.battle-unit{display:flex;flex-direction:column;align-items:stretch;text-align:center;padding:.35rem;gap:.3rem}.battle-unit .hero-portrait-wrap{margin:auto}.battle-unit.actor,.npc-line .battle-unit.actor{transform:none}.tactic-cutin{top:0;width:92%;grid-template-columns:auto 66px 1fr;padding:.4rem}.tactic-cutin .tactic-visual img{width:66px}.vfx-stage{width:135px;height:135px}.vfx-glyph{width:82px;height:82px}.vfx-ring{width:100px;height:100px}.impact-number{top:54%}.battle-result-summary{grid-template-columns:1fr;text-align:center}.result-seal{margin:auto}.mvp-card{justify-content:center}.replay-controls button,.event-jump-row button{flex:1 1 30%}.tactic-visual img{width:82px}.table-wrap td:first-child,.table-wrap th:first-child{position:sticky;left:0;background:#172024;z-index:2}}
/* v1.1.1 battle actor/target cut-in */
.impact-duel{position:absolute;left:50%;top:50%;transform:translate(-50%,-54%);width:min(92%,390px);display:grid;grid-template-columns:1fr 42px 1fr;align-items:center;gap:.35rem;z-index:3;pointer-events:none}.duel-side{display:flex;align-items:center;gap:.45rem;padding:.4rem .55rem;border-radius:13px;background:#0a1012d9;border:1px solid #445056;box-shadow:0 8px 26px #0009}.duel-side.target{flex-direction:row-reverse;text-align:right}.duel-side.actor{border-color:#b99a55}.duel-side.target{border-color:#8b554c}.duel-side b{font-size:.78rem;text-shadow:0 2px 4px #000}.duel-vs{font:900 .72rem Georgia;color:#e7c775;text-align:center;text-shadow:0 0 8px #e7c77588}.impact-duel .hero-portrait-wrap{box-shadow:0 0 18px #000c}.tactic-cutin{z-index:5}.vfx-stage{z-index:4}.event-caption,.impact-number{z-index:6}
@media(max-width:680px){.impact-duel{top:55%;width:96%;grid-template-columns:1fr 30px 1fr}.duel-side{padding:.3rem;gap:.25rem}.impact-duel .hero-portrait-wrap{width:44px!important;height:58px!important}.duel-side b{font-size:.66rem}}

/* v1.2 Asset Upgrade */
.range-dots{display:inline-flex;align-items:center;gap:.65rem;margin:.45rem 0;padding:.45rem .65rem;border:1px solid #4b5b60;border-radius:9px;background:#11181b;color:#dbc78e}.range-dots b{font-size:.78rem}.range-dots span{letter-spacing:.18em;color:#82a8c6;font-size:.78rem}.hero-detail{display:grid;gap:1rem}.hero-detail-head{display:grid;grid-template-columns:auto 1fr;gap:1.25rem;align-items:start}.hero-detail-meta h2{margin:.25rem 0 .35rem;font-size:2rem}.stat-grid,.detail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(105px,1fr));gap:.55rem;margin-top:.75rem}.stat-grid>div,.detail-grid>div{display:grid;gap:.15rem;padding:.65rem;border:1px solid #344147;background:#10171a;border-radius:9px}.stat-grid small,.detail-grid small{color:#91a09f;font-size:.68rem}.stat-grid b,.detail-grid b{color:#f0d18b}.detail-block{padding:.8rem 1rem;border:1px solid #354246;border-radius:11px;background:#121a1d}.detail-block h4{margin:.05rem 0 .45rem}.source-desc{color:#b4bfbd;border-left:2px solid #6c7e80;padding-left:.7rem}.tactic-detail{display:grid;gap:.8rem;padding:1rem;border:1px solid #4d4a3d;border-radius:14px;background:linear-gradient(150deg,#181e20,#111719)}.tactic-detail-top,.item-detail-top{display:grid;grid-template-columns:auto 1fr;gap:1rem;align-items:center}.tactic-detail-top .tactic-visual img{width:180px}.effect-list{display:grid;gap:.45rem}.effect-row{display:grid;grid-template-columns:minmax(110px,.35fr) 1fr;gap:.35rem .7rem;padding:.55rem .65rem;border-radius:8px;background:#0c1214;border:1px solid #2b363a}.effect-row b{color:#efd18d}.effect-row span{font-size:.75rem;color:#c2cdca}.effect-row small{grid-column:1/-1;color:#788785;font-size:.65rem}.item-detail{display:grid;gap:1rem}.item-detail-top .item-visual img{width:220px}.item-visual{display:flex;align-items:center;gap:.6rem}.item-visual img{width:150px;aspect-ratio:1;object-fit:cover;border-radius:11px;border:1px solid #6f6248;background:#0c1113;box-shadow:0 8px 22px #0007}.item-visual.compact img{width:46px;height:46px;border-radius:8px}.item-visual span{font-weight:800}.equipment-card .item-visual{align-self:center}.equipment-card .item-visual img{width:130px}.equipment-row{display:grid!important;grid-template-columns:auto 1fr!important;align-items:center!important}.equipment-row-text{display:flex;flex-direction:column;align-items:flex-start;gap:.2rem}.item-inline{display:flex;align-items:center;gap:.45rem}.item-inline .item-visual img{width:34px;height:34px}.hero-detail-btn{margin-top:.25rem}.slot-hero-info{grid-column:2;text-align:left;font-size:.7rem;padding:.38rem .55rem;background:#182124;color:#c7b57f}.catalog-card{width:100%}.catalog-range{display:inline-block!important;background:#202b30;border:1px solid #405057;border-radius:5px;padding:.15rem .35rem;color:#b9d5e6!important}.item-catalog-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:.75rem}.item-catalog-card{display:flex;flex-direction:column;align-items:center;gap:.35rem;text-align:center;background:#151d20}.item-catalog-card .item-visual img{width:118px}.item-catalog-card span{font-size:.72rem;color:#c7b887}.item-catalog-card small{color:#889795}.hero-card .tactic-line{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
@media(max-width:680px){.hero-detail-head{grid-template-columns:1fr;text-align:center}.hero-detail-head .hero-portrait-wrap{margin:auto}.tactic-detail-top,.item-detail-top{grid-template-columns:1fr;text-align:center}.tactic-detail-top .tactic-visual,.item-detail-top .item-visual{justify-content:center}.tactic-detail-top .tactic-visual img{width:150px}.effect-row{grid-template-columns:1fr}.effect-row small{grid-column:1}.item-catalog-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.slot{grid-template-columns:66px 1fr}}
/* v1.4 strategy / growth / mount upgrade */
.strategy-map-bg{object-fit:cover;filter:saturate(.9) contrast(1.02) brightness(.9)}
.territory-svg{position:absolute;inset:0;width:100%;height:100%;z-index:2;overflow:visible}
.territory-group{cursor:pointer}.territory-shape{fill:#7d3d3428;stroke:#c6b17f99;stroke-width:.22;vector-effect:non-scaling-stroke;transition:fill .15s,stroke .15s,filter .15s;outline:none}.territory-shape:hover,.territory-shape:focus{fill:#d8b56a45;stroke:#f0d58b;stroke-width:.5;filter:drop-shadow(0 0 2px #e3c477)}.territory-shape.owned{fill:#2e765a55;stroke:#7ec29a}.territory-shape.npc{fill:#773b3550;stroke:#b96c61}.territory-shape.attackable{fill:#a47c2f55;stroke:#f0cf75;stroke-width:.48;filter:drop-shadow(0 0 1.5px #ddb960)}.territory-shape.selected{fill:#d9c07266;stroke:#fff7d9;stroke-width:.8;filter:drop-shadow(0 0 3px #fff0aa)}.territory-level{fill:#fff3cf;font-size:1.55px;font-weight:900;text-anchor:middle;dominant-baseline:middle;paint-order:stroke;stroke:#081012;stroke-width:.42px;pointer-events:none}.route-layer{z-index:4}.map-note{z-index:9}.target-confirm{width:100%;margin-top:.5rem}.enemy-preview{display:grid;gap:.45rem;margin:1rem 0}.enemy-preview h4{margin:.1rem 0}.enemy-hero-row{display:grid;grid-template-columns:auto 1fr auto;gap:.65rem;align-items:center;padding:.55rem;border:1px solid #354247;border-radius:10px;background:#101719}.enemy-hero-row>span{display:flex;flex-direction:column;min-width:0}.enemy-hero-row small{color:#a9b5b2;font-size:.68rem}.enemy-hero-row .npc-growth{color:#e0c477}.territory-actions{display:flex;flex-wrap:wrap;gap:.45rem;margin:.8rem 0}.campaign-actions{display:flex;align-items:center;gap:1rem}.growth-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem;margin:.7rem 0}.growth-summary>*{padding:.65rem;text-align:center;border:1px solid #354247;border-radius:9px;background:#101719}.growth-summary strong{color:#f0cf7b}.growth-grid{display:grid;gap:.55rem}.growth-stat-row{display:grid;grid-template-columns:1fr auto auto 72px auto auto;align-items:center;gap:.5rem;padding:.65rem;border:1px solid #354247;border-radius:10px;background:#11191c}.growth-stat-row strong{text-align:center;color:#f1cf7c;font-size:1.05rem}.growth-actions{margin-top:1rem}.growth-badge{background:#6b5628!important;color:#ffe4a1!important}.stat-breakdown{display:block;margin-top:.18rem;color:#7f918e;font-size:.57rem;font-style:normal;line-height:1.3}.detail-title-row{display:flex;justify-content:space-between;align-items:center;gap:.7rem}.detail-title-row h4{margin:0}.mount-visual{display:flex;align-items:center;gap:.6rem}.mount-visual img{width:150px;aspect-ratio:4/5;object-fit:cover;border-radius:12px;border:1px solid #8a7244;background:#0b1113;box-shadow:0 8px 22px #0007}.mount-visual.compact img{width:48px;height:58px;border-radius:8px}.mount-visual span{font-weight:800}.mount-inline-detail{display:flex;align-items:center;gap:.8rem}.mount-inline-detail>span{display:flex;flex-direction:column;gap:.15rem}.mount-picker-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.7rem;margin-top:1rem}.mount-pick-card{display:grid;grid-template-columns:auto 1fr;gap:.7rem;align-items:center;text-align:left}.mount-pick-card>span{display:flex;flex-direction:column;gap:.2rem}.mount-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:.8rem}.mount-card{display:flex;flex-direction:column;gap:.4rem;padding:1rem;border:1px solid #3a4447;border-radius:14px;background:#151d20}.mount-card .mount-visual{justify-content:center}.mount-card .mount-visual img{width:170px}.mount-passive{color:#d8bd7e}.mount-choice{grid-column:2;text-align:left}.slot .mount-choice{font-size:.75rem}.growth-block{border-color:#65583a;background:linear-gradient(145deg,#1a1c19,#121819)}
@media(max-width:900px){.map-layout{grid-template-columns:1fr}.territory-panel{position:static}.campaign-actions{width:100%;justify-content:space-between}.hero-banner{align-items:flex-start}}
@media(max-width:680px){.territory-level{font-size:2.2px;stroke-width:.65px}.campaign-actions{flex-direction:column;align-items:stretch}.campaign-actions .pool{text-align:left}.enemy-hero-row{grid-template-columns:auto 1fr}.enemy-hero-row>strong{grid-column:2}.growth-summary{grid-template-columns:1fr 1fr 1fr}.mount-picker-grid,.mount-grid{grid-template-columns:1fr}.mount-inline-detail{align-items:flex-start}.stat-breakdown{font-size:.62rem}}


/* v1.5 battle analytics */
.battle-result-summary{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:1rem;align-items:center;padding:1rem;border:1px solid #354247;border-radius:15px;background:linear-gradient(145deg,#151e22,#101719);margin-bottom:1rem}.result-seal{min-width:72px;height:72px;display:grid;place-items:center;border-radius:50%;font:900 1rem Georgia;border:2px solid #7d8c89}.result-seal.win{border-color:#d7b568;color:#f0d18b;background:#6f552533}.result-seal.loss{border-color:#a95d55;color:#e59a91;background:#6c2e2a33}.side-total-strip{display:flex;flex-wrap:wrap;gap:.45rem;margin-top:.45rem}.side-total-strip span{padding:.3rem .5rem;border-radius:6px;background:#0d1518;border:1px solid #2e3b40;font-size:.72rem}.dual-mvp{display:flex;gap:.5rem}.mvp-card{display:flex;align-items:center;gap:.5rem;padding:.45rem .55rem;border:1px solid #456557;border-radius:10px;background:#122019}.mvp-card.enemy{border-color:#714b47;background:#241717}.mvp-card>div:last-child{display:flex;flex-direction:column}.mvp-card small{color:#8fa09e}.victory-rewards{padding:1rem;border:1px solid #6a5b36;border-radius:14px;background:linear-gradient(145deg,#201b10,#151918);margin:1rem 0}.analysis-subhead{display:flex;justify-content:space-between;align-items:center;gap:.7rem;margin-bottom:.7rem}.analysis-subhead h3{margin:0}.reward-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:.65rem}.reward-card{display:flex;align-items:center;gap:.7rem;padding:.7rem;border:1px solid #4c4635;border-radius:11px;background:#11191b}.reward-card>div:last-child{display:flex;flex-direction:column;min-width:0}.reward-card small{color:#a69b7f}.reward-card b{color:#f0d18b}.reward-exp .reward-symbol{width:52px;height:52px;display:grid;place-items:center;border-radius:10px;background:#5e4a23;color:#ffe1a0;font-weight:900}.highlights{margin:1rem 0;padding:1rem;border:1px solid #334147;border-radius:13px;background:#12191c}.highlights h4{margin:.1rem 0 .55rem}.highlights ol{margin:.25rem 0;padding-left:1.35rem}.damage-pie-grid,.dual-stat-grid,.tactic-impact-grid{display:grid;grid-template-columns:1fr 1fr;gap:.8rem;margin:1rem 0}.damage-pie-card,.combat-stat-section,.tactic-impact-section{min-width:0;padding:1rem;border:1px solid #324147;border-radius:14px;background:#121a1d}.damage-pie-card.enemy,.combat-stat-section.enemy,.tactic-impact-section.enemy{border-color:#5c403d;background:#1b1415}.damage-pie-head{display:flex;justify-content:space-between;gap:.6rem;align-items:center}.damage-pie-head h4{margin:0}.damage-pie-body{display:grid;grid-template-columns:145px 1fr;gap:.8rem;align-items:center;margin-top:.6rem}.damage-pie{width:140px;max-width:100%;height:auto}.pie-hole{fill:#101719}.pie-center-label,.pie-center-value{fill:#d8ddd9;text-anchor:middle;font-size:9px}.pie-center-value{fill:#e8ca83;font-weight:900;font-size:8px}.damage-pie-legend{display:grid;gap:.3rem;max-height:180px;overflow:auto}.pie-legend-row{display:grid;grid-template-columns:9px minmax(0,1fr) auto auto;gap:.4rem;align-items:center;font-size:.72rem}.pie-legend-row i{width:9px;height:9px;border-radius:2px}.pie-legend-row span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pie-legend-row small{color:#899794}.metric-strong{color:#f0d18b;font-weight:800}.stat-hero-cell,.tactic-stat-cell{display:flex;align-items:center;gap:.45rem}.stat-hero-cell>span,.tactic-stat-cell>span{display:flex;flex-direction:column}.stat-hero-cell small,.tactic-stat-cell small{color:#82918f;font-size:.62rem}.combat-stat-table,.tactic-impact-table{font-size:.72rem}.battle-log-filters{display:grid;grid-template-columns:minmax(250px,1fr) 140px 150px;gap:.6rem;margin-bottom:.65rem}.battle-log-summary{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:.65rem}.battle-log-summary span{padding:.3rem .5rem;border:1px solid #334147;border-radius:6px;background:#11191c;font-size:.7rem;color:#aeb9b6}.battle-log-wrap{max-height:68vh}.battle-log-table{font-size:.69rem}.battle-log-table th{top:0}.battle-log-table td{vertical-align:top}.battle-log-table .log-detail{white-space:normal;min-width:240px;color:#9eacab}.battle-log-table .log-tactic{white-space:normal;min-width:150px}.log-row.side-player{box-shadow:inset 3px 0 #4e876a}.log-row.side-npc{box-shadow:inset 3px 0 #92544e}.battle-log-pager{display:flex;justify-content:center;align-items:center;gap:.8rem;margin-top:.8rem}.territory-panel .enemy-preview{margin-top:.75rem}.territory-panel .eyebrow{color:#e0c477}
@media(max-width:1050px){.damage-pie-grid,.dual-stat-grid,.tactic-impact-grid{grid-template-columns:1fr}.battle-result-summary{grid-template-columns:auto 1fr}.dual-mvp{grid-column:1/-1}.battle-log-filters{grid-template-columns:1fr 1fr}.battle-log-filters .search{grid-column:1/-1}}
@media(max-width:680px){.battle-result-summary{grid-template-columns:1fr}.result-seal{margin:auto}.dual-mvp{flex-direction:column}.damage-pie-body{grid-template-columns:120px 1fr}.battle-log-filters{grid-template-columns:1fr}.battle-log-filters .search{grid-column:1}.battle-log-wrap{max-height:72vh}.combat-stat-table,.tactic-impact-table,.battle-log-table{font-size:.65rem}}

/* v1.6 balance / synergy */
.formation-synergy{display:grid;grid-template-columns:1fr 1fr auto;gap:.55rem;padding:.7rem .8rem;border-top:1px solid #2d393d;border-bottom:1px solid #2d393d;background:#0f1719;margin-bottom:.7rem}.synergy-chip,.synergy-max{display:flex;flex-direction:column;gap:.15rem;padding:.5rem .6rem;border:1px solid #344247;border-radius:9px;background:#111a1d}.synergy-chip small,.synergy-max small{font-size:.65rem;color:#8c9b98}.synergy-chip b{font-size:.78rem;color:#aeb9b6}.synergy-chip.active{border-color:#7b6840;background:#1e1a10}.synergy-chip.active b,.synergy-max strong{color:#f0cf79}.synergy-max{min-width:115px;text-align:center;justify-content:center}.synergy-max strong{font-size:1.05rem}.mount-card.rare,.mount-pick-card.rare{border-color:#7b4c98;box-shadow:0 0 0 1px #6a3c8755 inset}.mount-rarity{color:#d2a1ef;font-weight:800}
@media(max-width:900px){.formation-synergy{grid-template-columns:1fr 1fr}.synergy-max{grid-column:1/-1}}
@media(max-width:600px){.formation-synergy{grid-template-columns:1fr}.synergy-max{grid-column:auto}}

.growth-ten{min-width:48px;font-weight:800}.growth-stat-row button{white-space:nowrap}
@media(max-width:680px){.growth-stat-row{grid-template-columns:1fr auto auto 62px auto auto;gap:.32rem}.growth-stat-row button{padding:.5rem .55rem}.growth-ten{min-width:44px}}
/* v1.11 WORLD WAR AI */
.territory-shape.ai-faction{fill:var(--faction-fill,#773b3550);stroke:var(--faction-color,#b96c61)}
.territory-shape.ai-faction.attackable{fill:#a47c2f66;stroke:#f0cf75;stroke-width:.48}
.territory-shape.ai-faction.selected{fill:#d9c07270;stroke:#fff7d9;stroke-width:.8}
.world-map-legend{position:absolute;right:.7rem;top:.7rem;z-index:9;display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.3rem;max-width:58%;padding:.4rem;background:#091012cf;border:1px solid #334047;border-radius:10px;backdrop-filter:blur(8px)}
.world-map-legend span{display:flex;align-items:center;gap:.28rem;padding:.2rem .35rem;border-radius:6px;background:#10191ccb;font-size:.6rem;white-space:nowrap}.world-map-legend i,.territory-faction-banner i,.faction-rank i{width:10px;height:10px;border-radius:50%;display:inline-block;box-shadow:0 0 0 1px #ffffff44}
.world-dashboard{margin:1rem 0 1.4rem;padding:1rem;border:1px solid #3b474b;border-radius:16px;background:linear-gradient(145deg,#171f22,#10171a)}
.faction-ranking{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:.55rem}.faction-rank{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:.5rem;align-items:center;padding:.6rem .7rem;border:1px solid #324047;border-radius:10px;background:#11191c}.faction-rank.player{border-color:#5f8f73;background:#132019}.faction-rank.dead{opacity:.42}.faction-rank span{display:flex;flex-direction:column;min-width:0}.faction-rank b{font-size:.8rem}.faction-rank small{color:#8fa09e;font-size:.62rem}.faction-rank em{font-style:normal;font-size:.65rem;color:#d8c184}
.world-log{margin-top:.9rem;padding-top:.8rem;border-top:1px solid #2f3b40}.world-log h4{margin:.1rem 0 .55rem}.world-event{display:grid;grid-template-columns:42px 1fr;gap:.55rem;padding:.38rem .45rem;border-radius:7px;font-size:.72rem}.world-event:nth-child(even){background:#0e1518}.world-event.AI_CAPTURE,.world-event.AI_CAPTURE_PLAYER{color:#e8c783}.world-event.AI_REPELLED,.world-event.PLAYER_HOLD{color:#9fc9ac}.world-turn{color:#80908e;font-weight:800}
.territory-faction-banner{display:flex;align-items:center;gap:.55rem;margin:.55rem 0;padding:.6rem .65rem;border:1px solid #4d5a60;border-radius:10px;background:#11191c}.territory-faction-banner span{display:flex;flex-direction:column}.territory-faction-banner small{color:#91a09e;font-size:.65rem}
@media(max-width:900px){.world-map-legend{max-width:70%;top:auto;bottom:2.8rem}.faction-ranking{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.faction-ranking{grid-template-columns:1fr}.world-map-legend{display:none}}

.verify-verified{font-weight:700;color:#a8f0b3}.verify-reconstructed{font-weight:700;color:#f2d787}.verify-estimated{font-weight:700;color:#f1a1a1}.verification-block{border-left:3px solid rgba(230,190,90,.55)}

/* v1.14 historical scenarios */
.scenario-selector{min-width:min(1020px,88vw);max-width:1080px}.scenario-selector-head{display:flex;justify-content:space-between;align-items:flex-end;gap:1rem;margin-bottom:1rem}.scenario-selector-head h2{margin:.15rem 0}.scenario-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;max-height:68vh;overflow:auto;padding-right:.25rem}.scenario-card{text-align:left;padding:1rem;border:1px solid #3b484d;border-radius:14px;background:linear-gradient(145deg,#151e21,#101719);color:inherit;transition:.16s transform,.16s border-color,.16s background}.scenario-card:hover{transform:translateY(-2px);border-color:#9d8147;background:linear-gradient(145deg,#201d15,#121a1c)}.scenario-card h3{margin:.35rem 0 .1rem;color:#f0d18b;font-size:1.05rem}.scenario-card p{margin:.35rem 0;line-height:1.5}.scenario-card-top{display:flex;justify-content:space-between;gap:.7rem;align-items:center}.scenario-card-top strong{font-size:.78rem;color:#d6c18e}.scenario-subtitle{font-weight:700;color:#c4cfcc}.scenario-diff{font-size:.68rem;letter-spacing:.04em;color:#c8b16f;white-space:nowrap}.scenario-diff.d5{color:#e3907f}.scenario-meta,.scenario-tags{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.65rem}.scenario-meta span,.scenario-tags span{padding:.25rem .42rem;border-radius:999px;border:1px solid #354348;background:#0d1518;font-size:.64rem;color:#aab7b4}.scenario-tags span{border-color:#5a4d31;color:#d8c17d}.scenario-briefing{margin:1rem 0;padding:1rem;border:1px solid #5b4f33;border-radius:16px;background:linear-gradient(145deg,#201c12,#12191a)}.scenario-brief-head{display:flex;justify-content:space-between;gap:1rem;align-items:flex-start}.scenario-brief-head h3{margin:.15rem 0}.scenario-objectives{margin-top:.7rem;padding-top:.7rem;border-top:1px solid #3c3b31}.scenario-objectives ol{margin:.45rem 0 .1rem;padding-left:1.25rem}.scenario-objectives li{margin:.28rem 0;color:#c7d0cd}
@media(max-width:820px){.scenario-grid{grid-template-columns:1fr}.scenario-selector{min-width:min(92vw,720px)}.scenario-brief-head{flex-direction:column}}

/* v1.15 battle orders / stances */
.kpi-order{margin-top:.2rem;color:#d8c17d;font-size:.7rem;font-weight:700}
.battle-order-preflight{margin:.9rem 0;padding:.85rem;border:1px solid #665735;border-radius:12px;background:linear-gradient(145deg,#1e1a11,#11191b)}
.battle-order-head,.formation-order-title{display:flex;justify-content:space-between;align-items:center;gap:.7rem;margin-bottom:.55rem}
.battle-order-head>div{display:flex;flex-direction:column;gap:.12rem}.battle-order-head small{font-size:.64rem}
.battle-order-row{display:grid;grid-template-columns:50px minmax(0,1fr) minmax(0,1fr);gap:.45rem;align-items:center;margin-top:.4rem}.battle-order-row strong{color:#e8cb85;font-size:.75rem}.battle-order-row select{min-width:0;padding:.48rem .55rem;font-size:.72rem}
.formation-order-box{margin:.7rem .8rem 0;padding:.7rem;border:1px solid #4f4935;border-radius:10px;background:#17170f}.formation-order-title b{color:#e5c77e}.formation-order-title button{padding:.35rem .5rem;font-size:.65rem}
.formation-order-controls{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}.formation-order-controls label{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.4rem;align-items:center;color:#aeb9b6;font-size:.7rem}.formation-order-controls select{min-width:0;padding:.5rem .55rem;font-size:.72rem}.order-desc{display:block;margin-top:.5rem;font-size:.64rem;line-height:1.45}
.battle-order-report{margin:1rem 0;padding:1rem;border:1px solid #5e5337;border-radius:14px;background:linear-gradient(145deg,#1c1a12,#101719)}.battle-order-report-grid{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.battle-order-side{padding:.75rem;border:1px solid #384349;border-radius:10px;background:#11191c}.battle-order-side.enemy{border-color:#5c403d;background:#1b1415}.battle-order-side h5{margin:.05rem 0 .5rem;color:#e3c87f}.battle-order-side ul{margin:0;padding-left:1.05rem}.battle-order-side li{margin:.25rem 0;color:#c7d0cd;font-size:.72rem}
@media(max-width:760px){.battle-order-row{grid-template-columns:42px 1fr}.battle-order-row select:last-child{grid-column:2}.formation-order-controls,.battle-order-report-grid{grid-template-columns:1fr}}
.battle-order-side>b{display:block;margin-bottom:.45rem;color:#e3c87f}.battle-order-side>span{display:flex;justify-content:space-between;gap:.6rem;padding:.3rem 0;border-top:1px solid #2b3539}.battle-order-side>span:first-of-type{border-top:0}.battle-order-side>span strong{font-size:.72rem;color:#d6ddd9}.battle-order-side>span small{font-size:.68rem;color:#aeb9b6;text-align:right}

/* v1.16 territory logistics / regional traits */
.logistics-dashboard{margin:1rem 0 1.4rem;padding:1rem;border:1px solid #355a49;border-radius:16px;background:linear-gradient(145deg,#14211b,#101719)}
.logistics-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.6rem}.logistics-kpi{display:flex;flex-direction:column;gap:.2rem;padding:.72rem .75rem;border:1px solid #33473e;border-radius:10px;background:#0f1915}.logistics-kpi small{font-size:.63rem;color:#8ea49a}.logistics-kpi b{font-size:1rem;color:#dce6df}.logistics-kpi em{font-style:normal;font-size:.62rem;color:#7fa28e}.danger-text{color:#df7c70!important}
.supply-bar{display:flex;gap:.3rem;margin-top:.75rem;min-height:31px}.supply-bar span{display:flex;align-items:center;justify-content:center;min-width:74px;padding:.4rem .55rem;border-radius:8px;font-size:.66rem;font-weight:800;white-space:nowrap}.supply-bar .supplied{background:#173323;border:1px solid #3b7550;color:#a8dab8}.supply-bar .strained{background:#352d16;border:1px solid #796535;color:#e2c97e}.supply-bar .isolated{background:#351a19;border:1px solid #7c423e;color:#e6a29c}.logistics-note{margin:.55rem 0 0;font-size:.65rem;line-height:1.45}
.territory-logistics{margin:.75rem 0;padding:.75rem;border:1px solid #3d5147;border-radius:11px;background:#0e1713}.territory-logistics.status-strained{border-color:#6a5d35;background:#1b190f}.territory-logistics.status-isolated{border-color:#69403d;background:#1c1212}.territory-logistics-head{display:flex;justify-content:space-between;gap:.7rem;align-items:flex-start}.territory-logistics-head>div{display:flex;flex-direction:column;gap:.12rem}.territory-logistics-head b{color:#d8e2dc}.territory-logistics-head strong{font-size:.72rem;color:#e2c77e}.territory-logistics>p{margin:.5rem 0;font-size:.65rem;line-height:1.45}.territory-logistics-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:.35rem}.territory-logistics-grid span{display:flex;flex-direction:column;gap:.1rem;padding:.42rem;border-radius:7px;background:#111d18;text-align:center}.status-strained .territory-logistics-grid span{background:#201d12}.status-isolated .territory-logistics-grid span{background:#211414}.territory-logistics-grid small{font-size:.58rem;color:#8b9b94}.territory-logistics-grid b{font-size:.72rem}.logistics-disrupted{display:block;margin-top:.5rem;color:#e0a76f;font-size:.62rem}
.territory-shape.supply-supplied{fill:#3c8a5e88!important;stroke:#86d09f!important;stroke-width:.5!important}.territory-shape.supply-strained{fill:#ae8a3588!important;stroke:#ead17d!important;stroke-width:.55!important}.territory-shape.supply-isolated{fill:#9c494588!important;stroke:#ef8e86!important;stroke-width:.62!important}.territory-shape.supply-supplied.selected,.territory-shape.supply-strained.selected,.territory-shape.supply-isolated.selected{stroke:#fff7d9!important;stroke-width:.9!important}
@media(max-width:900px){.logistics-kpis{grid-template-columns:1fr 1fr}.territory-logistics-grid{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.logistics-kpis{grid-template-columns:1fr}.supply-bar{flex-direction:column}.supply-bar span{width:100%}}

/* v1.17 branching hero traits */
.trait-badge{background:#3a315d!important;color:#d9ceff!important;border-color:#6c5fa2!important}.trait-card-line{margin:.2rem 0;color:#d8c98d;font-size:.72rem}.trait-detail-block{border-color:#554a75;background:linear-gradient(145deg,#181624,#12181a)}.trait-modal-head{display:grid;grid-template-columns:1fr auto;gap:1rem;align-items:start}.trait-build-seal{min-width:190px;display:flex;flex-direction:column;gap:.2rem;padding:.7rem .85rem;border:1px solid #645b7f;border-radius:12px;background:#171523}.trait-build-seal small{color:#8e90a5}.trait-build-seal b{color:#f0d795}.trait-build-seal span{font-size:.7rem;color:#bdb7d6}.trait-summary{margin:.9rem 0}.trait-recommend{display:flex;align-items:center;gap:.7rem;flex-wrap:wrap;padding:.65rem .8rem;margin-bottom:.8rem;border:1px solid #3d4850;border-radius:10px;background:#10181b}.trait-recommend b{color:#efd38e}.trait-recommend span{color:#aebbb8;font-size:.75rem}.trait-recommend button{margin-left:auto}.trait-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem}.trait-branch{padding:.8rem;border:1px solid #3b4449;border-radius:13px;background:#11191c;display:grid;gap:.65rem}.trait-branch.mastered{box-shadow:0 0 0 1px #b99c58 inset,0 8px 24px #0005}.trait-branch-head{display:grid;grid-template-columns:auto 1fr auto;gap:.6rem;align-items:center}.trait-branch-head h3{margin:0;color:#f0d38b}.trait-branch-head small{display:block;color:#93a09f;font-size:.66rem;line-height:1.35}.trait-branch-head strong{font-size:1.05rem;color:#dbc882}.trait-icon{font-size:1.45rem;width:34px;height:34px;display:grid;place-items:center;border-radius:9px;background:#0c1114;border:1px solid #3a454a}.trait-node-list{display:grid;gap:.36rem}.trait-node{display:grid;grid-template-columns:minmax(105px,.34fr) 1fr;gap:.45rem;padding:.42rem .5rem;border-radius:8px;border:1px solid #2c373b;background:#0d1315;opacity:.5}.trait-node b{font-size:.72rem}.trait-node span{font-size:.67rem;color:#9caaa7}.trait-node.unlocked{opacity:1;border-color:#655a3e;background:#171913}.trait-node.unlocked b{color:#efd18a}.trait-node.next{opacity:.9;border-style:dashed;border-color:#6b6492;background:#151523}.trait-node.next b{color:#cfc4ff}.trait-synergy{margin:0;padding:.5rem;border-left:2px solid #77699f;color:#b8b2cd;font-size:.66rem;line-height:1.4}.trait-actions{justify-content:flex-end}.trait-vanguard .trait-icon{color:#efad8f}.trait-fortress .trait-icon{color:#a7c0de}.trait-tactician .trait-icon{color:#d3bdff}.trait-gale .trait-icon{color:#9fd8c2}
@media(max-width:760px){.trait-modal-head{grid-template-columns:1fr}.trait-build-seal{min-width:0}.trait-grid{grid-template-columns:1fr}.trait-recommend button{margin-left:0;width:100%}.trait-node{grid-template-columns:1fr}.trait-actions button{flex:1}}

/* v1.18 campaign chronicle */
.chronicle-page{display:grid;gap:18px}.chronicle-hero{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;padding:24px;border:1px solid #3e4b59;border-radius:18px;background:linear-gradient(135deg,rgba(39,49,61,.96),rgba(22,28,35,.96))}.chronicle-hero h2{margin:4px 0 6px}.chronicle-latest{margin:14px 0 0;padding:12px 14px;border-left:3px solid #d3ad67;background:rgba(255,255,255,.035);display:grid;gap:5px}.chronicle-latest b{color:#efd69c}.chronicle-latest span{color:#c8d0d7;font-size:.92rem;line-height:1.55}.chronicle-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.chronicle-kpis>div{padding:14px 16px;border:1px solid #394653;border-radius:14px;background:#202933;display:grid;gap:2px}.chronicle-kpis small{color:#8fa0ae}.chronicle-kpis b{font-size:1.4rem}.chronicle-kpis em{font-size:.78rem;color:#aab6c0;font-style:normal}.chronicle-heroes,.chronicle-timeline{padding:18px;border:1px solid #37434f;border-radius:16px;background:#1c242d}.chronicle-hero-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.chronicle-hero-card{display:grid;grid-template-columns:32px 1fr auto;gap:10px;align-items:center;padding:10px 12px;border:1px solid #34414e;border-radius:12px;background:#222d37}.chronicle-hero-card .rank{font:700 .78rem monospace;color:#d2b77c}.chronicle-hero-card>div{display:grid}.chronicle-hero-card small{color:#94a3af}.chronicle-hero-card em{font-size:.76rem;color:#b7c4cd;font-style:normal;text-align:right}.chronicle-filters{display:flex;gap:6px;flex-wrap:wrap}.chronicle-filters button{padding:6px 9px;font-size:.78rem}.chronicle-filters button.active{border-color:#d5b46f;color:#f1dcae;background:#3c3326}.chronicle-chapter{border-top:1px solid #34404b}.chronicle-chapter:first-of-type{border-top:0}.chronicle-chapter>summary{cursor:pointer;display:flex;justify-content:space-between;align-items:center;padding:14px 4px;list-style:none}.chronicle-chapter>summary::-webkit-details-marker{display:none}.chronicle-chapter>summary span{display:grid;gap:2px}.chronicle-chapter>summary small{color:#8d9daa}.chronicle-chapter>summary em{font-style:normal;color:#aab6c0;font-size:.8rem}.chronicle-entry-list{position:relative;padding:2px 0 12px 8px}.chronicle-entry-list:before{content:"";position:absolute;left:29px;top:0;bottom:14px;width:1px;background:#3c4b58}.chronicle-entry{position:relative;display:grid;grid-template-columns:44px 1fr;gap:12px;padding:8px 0}.chronicle-marker{z-index:1;display:grid;justify-items:center;align-content:start;gap:4px}.chronicle-marker b{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;border:1px solid #536474;background:#26323d;color:#e6c57d}.chronicle-marker small{font-size:.67rem;color:#8496a4}.chronicle-entry-body{padding:11px 13px;border:1px solid #34414d;border-radius:12px;background:#222b34}.chronicle-entry.importance-5 .chronicle-entry-body{border-color:#8d6f3e;box-shadow:inset 3px 0 0 #d5ad64}.chronicle-entry.importance-4 .chronicle-entry-body{border-color:#596777}.chronicle-entry-title{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.chronicle-entry-title h4{margin:0;font-size:.98rem}.chronicle-entry-title em{margin-left:auto;color:#c9a65f;font-size:.68rem;font-style:normal;letter-spacing:1px}.chronicle-category{font-size:.68rem;padding:2px 6px;border-radius:999px;background:#33404c;color:#c8d4dc}.chronicle-entry-body p{margin:7px 0 0;color:#b9c4cc;font-size:.88rem;line-height:1.55}.chronicle-tags{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px}.chronicle-tags span{font-size:.68rem;color:#9cadb9;border:1px solid #3e4b56;border-radius:999px;padding:2px 6px}
@media(max-width:900px){.chronicle-hero{display:grid}.chronicle-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.chronicle-hero-grid{grid-template-columns:1fr}.chronicle-entry-title em{margin-left:0}.chronicle-filters{margin-top:8px}}

/* v1.19 interactive onboarding */
.top-right{display:flex;align-items:center;gap:.5rem}.top-help{width:34px;height:34px;padding:0;border-radius:50%;font-weight:900;color:#efd28d;background:#201b10;border-color:#715f39}.tutorial-gate{z-index:160;background:#05090dd9;backdrop-filter:blur(10px)}.tutorial-start{width:min(720px,94vw);max-height:90vh;overflow:auto;padding:clamp(1.4rem,4vw,2.4rem);border:1px solid #7a6841;border-radius:22px;background:linear-gradient(150deg,#202b30,#12191d);box-shadow:0 28px 80px #000c;text-align:center}.tutorial-seal{width:66px;height:66px;margin:0 auto 1rem;display:grid;place-items:center;border:1px solid #d1ae63;border-radius:18px;transform:rotate(45deg);font:900 28px Georgia;color:#efd18a;background:#3d301b}.tutorial-start h2{margin:.35rem 0}.tutorial-start>p{color:#c3cecb;line-height:1.65}.tutorial-start-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:.45rem;text-align:left;margin:1.2rem 0}.tutorial-start-steps span{padding:.55rem .65rem;border:1px solid #344249;border-radius:9px;background:#11191c;font-size:.75rem;color:#c5cfcc}.tutorial-start-actions{display:flex;justify-content:center;gap:.6rem;margin:1rem 0}.tutorial-coach{position:fixed;right:18px;bottom:18px;z-index:88;width:min(390px,calc(100vw - 28px));padding:1rem;border:1px solid #806b3e;border-radius:16px;background:linear-gradient(145deg,#20292dF5,#11181bF5);box-shadow:0 18px 50px #000b;backdrop-filter:blur(12px)}.tutorial-coach-top{display:grid;grid-template-columns:auto 1fr auto;gap:.65rem;align-items:center}.tutorial-step-icon{width:42px;height:42px;display:grid;place-items:center;border-radius:12px;background:#352b18;border:1px solid #7d6739;font-size:1.25rem}.tutorial-coach-top>div{display:flex;flex-direction:column}.tutorial-coach-top small{color:#a4b1ae;font-size:.66rem}.tutorial-coach-top b{color:#f0d18a}.tutorial-help-btn{width:30px;height:30px;padding:0;border-radius:50%;font-weight:900}.tutorial-progress{height:5px;border-radius:999px;background:#0c1215;overflow:hidden;margin:.75rem 0}.tutorial-progress i{display:block;height:100%;background:linear-gradient(90deg,#8f7137,#e0bd69);transition:width .2s}.tutorial-objective{margin:.45rem 0;font-weight:800}.tutorial-detail{margin:.45rem 0 .8rem;color:#aab7b4;font-size:.78rem;line-height:1.55}.tutorial-coach-actions{display:grid;grid-template-columns:1fr auto;gap:.45rem}.tutorial-skip-all{display:block;margin:.55rem auto 0;padding:.25rem .4rem;border:0;background:transparent;color:#73817f;font-size:.68rem}.guide-center{min-width:min(760px,88vw)}.guide-hero{display:flex;align-items:center;gap:.9rem;padding-bottom:.8rem;border-bottom:1px solid #334047}.guide-hero>span{font-size:2.4rem}.guide-hero h2{margin:.15rem 0}.guide-bullets{display:grid;gap:.45rem;margin:1rem 0;padding-left:1.2rem}.guide-bullets li{color:#c6d0cd}.guide-status{display:flex;justify-content:space-between;padding:.7rem .8rem;border:1px solid #435058;border-radius:10px;background:#11191c}.guide-step-map{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem;margin:1rem 0}.guide-step{display:grid;grid-template-columns:auto 1fr;gap:.15rem .45rem;padding:.65rem;border:1px solid #344148;border-radius:10px;background:#151e21}.guide-step span{grid-row:1/3}.guide-step small{grid-column:2;color:#82918f;font-size:.66rem}.guide-step.done{border-color:#537b62;background:#132119}.guide-step.done small{color:#8fc49e}.guide-step.skip{opacity:.55}.guide-actions{justify-content:flex-end}.tutorial-settings{border-color:#665938}.tutorial-focus{outline:2px solid #d9b968;box-shadow:0 0 0 5px #d9b96822}
@media(max-width:720px){.tutorial-start-steps,.guide-step-map{grid-template-columns:1fr}.tutorial-start-actions{flex-direction:column}.tutorial-coach{right:8px;bottom:8px;width:calc(100vw - 16px);padding:.8rem}.tutorial-detail{display:none}.tutorial-coach-actions{grid-template-columns:1fr 1fr}.top-status{display:none}.topbar{grid-template-columns:auto 1fr auto}.guide-center{min-width:0}}

/* v1.20 hero comparison */
.hero-card-actions{display:flex;gap:.45rem;flex-wrap:wrap;margin-top:.45rem}.compare-on{background:#4d3d1f;border-color:#b58b43;color:#f3d995}.hero-head-actions{flex-wrap:wrap;justify-content:flex-end}.hero-compare-page{display:grid;gap:1rem}.compare-head{align-items:flex-start}.compare-head h2{margin:.25rem 0}.compare-controls{display:flex;gap:.55rem;align-items:center;justify-content:flex-end;flex-wrap:wrap}.compare-controls label{display:flex;align-items:center;gap:.45rem;color:#b8c3c0;font-size:.82rem}.compare-picker,.compare-section{padding:1rem;border:1px solid #354148;border-radius:15px;background:#151d20}.compare-picker-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.5rem;max-height:250px;overflow:auto;padding-right:.2rem}.compare-pick{display:grid;grid-template-columns:auto 1fr auto;gap:.6rem;align-items:center;text-align:left;padding:.55rem;background:#11181b;border-color:#303c41}.compare-pick>span{display:grid;min-width:0}.compare-pick b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.compare-pick small{color:#91a09d;font-size:.68rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.compare-pick em{font-style:normal;color:#879592;font-size:1.05rem}.compare-pick.selected{border-color:#b38e48;background:#292316;box-shadow:inset 0 0 0 1px #7c6333}.compare-pick.selected em{color:#f1cf83}.compare-selected-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:.7rem}.compare-hero-card{position:relative;display:grid;grid-template-columns:auto 1fr;gap:.8rem;align-items:center;padding:.9rem;border:1px solid #3b474c;border-radius:14px;background:linear-gradient(145deg,#20292e,#141b1e)}.compare-remove{position:absolute;right:.45rem;top:.45rem;width:28px;height:28px;padding:0;border-radius:50%;background:#171d20;color:#9faaa8}.compare-hero-meta{display:grid;gap:.2rem;min-width:0}.compare-hero-meta h3,.compare-hero-meta p{margin:0}.compare-hero-meta p,.compare-hero-meta small{color:#a7b3b0;font-size:.75rem}.compare-stance,.compare-trait{font-size:.7rem;padding:.18rem .38rem;border-radius:5px;width:max-content;max-width:100%}.compare-stance{background:#2d2a1d;color:#e8c979;border:1px solid #554a2a}.compare-trait{background:#1e2a26;color:#9fc9b5;border:1px solid #30483e}.compare-section{display:grid;gap:.75rem}.compare-table-wrap{max-width:100%}.compare-table{min-width:760px}.compare-table th:not(:first-child),.compare-table td:not(:first-child){min-width:185px;text-align:center}.compare-table .compare-row-label{position:sticky;left:0;z-index:2;background:#232d31;min-width:150px}.compare-table tbody .compare-row-label{background:#182126;color:#d6c28b}.compare-table td{vertical-align:top}.compare-table td>b{font-size:1rem}.compare-cell-detail,.compare-block-small,.compare-tactic small{display:block;margin-top:.25rem;color:#859593;font-size:.64rem;line-height:1.4;white-space:normal}.compare-best{background:linear-gradient(90deg,#493b1d88,#2a251955)!important;box-shadow:inset 0 0 0 1px #7f6939}.compare-best>b{color:#f2d486}.compare-tactic{display:grid;gap:.1rem}.compare-tactic b{color:#e4d4aa}.compare-delta-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:.55rem}.compare-delta-grid>div{padding:.75rem;border:1px solid #344148;border-radius:10px;background:#10171a;display:grid;gap:.2rem}.compare-delta-grid small{color:#8d9c99}.compare-delta-grid b{font-size:1.1rem}.compare-delta-grid .positive{color:#8fcba6}.compare-delta-grid .negative{color:#d68a80}.compare-effects-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:.6rem}.compare-effects-grid details{border:1px solid #344148;border-radius:12px;background:#141b1e;padding:.7rem}.compare-effects-grid summary{cursor:pointer;color:#ddca95;font-weight:700}.compare-effect-chips{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.65rem}.compare-effect-chips span{font-size:.68rem;padding:.2rem .4rem;border-radius:999px;background:#222d31;border:1px solid #39474d;color:#b8c6c2}
@media(max-width:900px){.compare-head{display:grid}.compare-controls{justify-content:flex-start}.compare-selected-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.compare-delta-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:620px){.compare-picker-list{grid-template-columns:1fr}.compare-selected-grid{grid-template-columns:1fr}.compare-delta-grid{grid-template-columns:repeat(2,1fr)}.hero-head-actions{justify-content:flex-start}.compare-controls{display:grid;grid-template-columns:1fr}.compare-controls label{display:grid;grid-template-columns:auto 1fr}.compare-controls select{width:100%}}

/* v1.21 Stage 11 - battle timeline analytics */
.battle-timeline-report{display:grid;gap:1rem;margin:1rem 0 1.2rem}.timeline-main-head{padding:1rem;border:1px solid #3d4c51;border-radius:14px;background:linear-gradient(145deg,#142027,#101719)}.timeline-main-head h2{margin:.15rem 0}.timeline-method{padding:.35rem .55rem;border:1px solid #52626a;border-radius:999px;color:#d9c88f;font-size:.72rem;white-space:nowrap}.timeline-kpi-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.65rem}.timeline-kpi{display:flex;flex-direction:column;gap:.22rem;padding:.8rem;border:1px solid #334147;border-radius:12px;background:#121a1d}.timeline-kpi.player{border-color:#446b59;background:#122019}.timeline-kpi.npc{border-color:#754b47;background:#241717}.timeline-kpi small{color:#8e9d9a}.timeline-kpi b{font-size:1.2rem;color:#ece5cf}.timeline-kpi span{font-size:.72rem;color:#a5b0ad}.timeline-kpi em{font-style:normal;font-size:.73rem}.timeline-kpi .positive,.timeline-turn-card .positive{color:#83c99f}.timeline-kpi .negative{color:#e18c83}.timeline-chart-card,.timeline-turning,.timeline-table-section{padding:1rem;border:1px solid #334147;border-radius:14px;background:#121a1d;min-width:0}.timeline-svg{width:100%;height:auto;min-height:210px}.timeline-svg .axis{stroke:#3b484c;stroke-width:1}.timeline-line{fill:none;stroke-width:3;vector-effect:non-scaling-stroke}.timeline-line.player{stroke:#6fad87}.timeline-line.npc{stroke:#c4756d}.timeline-separator{stroke:#596467;stroke-dasharray:5 7;opacity:.55}.timeline-xlabel{fill:#81908e;font-size:9px;text-anchor:middle}.timeline-legend{font-size:11px;font-weight:800}.timeline-legend.player{fill:#8fd0a6}.timeline-legend.npc{fill:#e49890}.timeline-bar{fill:#6fad87}.timeline-bar.player.expected{fill:#6fad87;opacity:.28}.timeline-bar.npc{fill:#c4756d}.timeline-bar.npc.expected{fill:#c4756d;opacity:.28}.timeline-turning-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.6rem}.timeline-turn-card{display:flex;flex-direction:column;gap:.28rem;padding:.7rem;border-radius:10px;background:#101719;border:1px solid #2e3a3f}.timeline-turn-card small{color:#d5bb75}.timeline-turn-card span{font-size:.74rem;color:#aeb8b5;line-height:1.45}.timeline-table-wrap{max-height:55vh}.timeline-table{font-size:.69rem}.timeline-table th{top:0}.timeline-table td{white-space:nowrap}.timeline-expected-cell{color:#d8c790}.timeline-method-note{margin:0;padding:.7rem .85rem;border-left:3px solid #8d784b;background:#171a17;border-radius:0 8px 8px 0;color:#aeb8b5;font-size:.75rem;line-height:1.5}
@media(max-width:1050px){.timeline-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:680px){.timeline-kpi-grid{grid-template-columns:1fr}.timeline-main-head{align-items:flex-start}.timeline-method{white-space:normal}.timeline-chart-card{padding:.7rem}.timeline-svg{min-width:700px}.timeline-chart-card{overflow-x:auto}.timeline-table{font-size:.62rem}}

/* Stage 12 - Dynamic History */
.dynamic-history-dashboard{margin:16px 0;padding:16px;border:1px solid #3b4553;border-radius:16px;background:linear-gradient(180deg,rgba(67,52,34,.32),rgba(20,25,31,.92));box-shadow:0 10px 28px rgba(0,0,0,.18)}
.dynamic-history-state{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:12px 0}
.dynamic-state-card{display:flex;flex-direction:column;gap:4px;padding:12px;border:1px solid rgba(211,174,94,.22);border-radius:12px;background:rgba(8,12,17,.55);min-height:88px}
.dynamic-state-card small{color:#9ea8b6}.dynamic-state-card b{font-size:20px;color:#e4c977}.dynamic-state-card span{font-size:12px;line-height:1.45;color:#d7dce4}
.dynamic-history-events{display:grid;gap:8px}.dynamic-history-event{display:grid;grid-template-columns:52px 1fr;gap:9px;align-items:start;padding:10px 12px;border-left:3px solid #6a7482;border-radius:9px;background:rgba(13,18,24,.68)}
.dynamic-history-event.imp4{border-left-color:#d7a64d}.dynamic-history-event.imp5{border-left-color:#d86555;background:rgba(57,24,20,.28)}
.dynamic-history-event>span:last-child{display:flex;flex-direction:column;gap:3px}.dynamic-history-event b{font-size:13px}.dynamic-history-event small{font-size:12px;color:#b5bdc8;line-height:1.45}
@media(max-width:820px){.dynamic-history-state{grid-template-columns:1fr}.dynamic-history-event{grid-template-columns:42px 1fr}.dynamic-history-dashboard{padding:12px}}

/* Stage 13 · Three-resource economy */
.economy-dashboard{margin:14px 0;padding:16px;border:1px solid rgba(215,181,102,.28);background:linear-gradient(135deg,rgba(69,53,29,.46),rgba(25,39,34,.72));border-radius:14px}
.economy-policy{display:flex;align-items:center;gap:7px;font-size:12px;color:#cfd7d1}.economy-policy select{min-width:132px}
.economy-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.economy-kpi{padding:12px;border-radius:10px;background:rgba(7,12,11,.42);border:1px solid rgba(255,255,255,.08);display:flex;flex-direction:column;gap:4px}.economy-kpi small{color:#9aa9a0}.economy-kpi b{font-size:20px}.economy-kpi em{font-size:11px;font-style:normal;color:#aab7af}.economy-kpi.gold b{color:#e7c66f}.economy-kpi.food b{color:#b6d879}.economy-kpi.troops b{color:#9cc7dc}.economy-last-turn{margin-top:10px;padding-top:10px;border-top:1px solid rgba(255,255,255,.08);display:flex;gap:12px;align-items:center;flex-wrap:wrap;font-size:12px}.economy-last-turn span{color:#cbd5cf}.economy-last-turn em{font-style:normal;color:#8fc79f}
.territory-economy{margin-top:10px;padding:11px 12px;border:1px solid rgba(215,181,102,.22);background:rgba(66,53,27,.22);border-radius:10px}.territory-economy-sortie{margin-top:8px;padding-top:8px;border-top:1px solid rgba(255,255,255,.07);display:flex;justify-content:space-between;gap:10px;font-size:12px}.territory-economy-sortie b{white-space:nowrap}.positive{color:#84c796!important}.negative,.danger-text{color:#e58b7e!important}
@media(max-width:900px){.economy-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.top-status{font-size:10px}.economy-policy{width:100%;justify-content:flex-end}}
@media(max-width:560px){.economy-kpis{grid-template-columns:1fr 1fr}.economy-kpi b{font-size:17px}.territory-economy-sortie{flex-direction:column}.top-status{max-width:180px;white-space:normal;line-height:1.2}}

/* Stage 14 · Gear / Mount specialization */
.gear-specialty-badge{display:inline-flex;align-items:center;gap:.2rem;width:max-content;max-width:100%;padding:.18rem .42rem;border-radius:999px;border:1px solid #45545b;background:#202a2f;color:#d9e1de;font-size:.66rem;line-height:1.2;white-space:normal}.gear-assault{--gear:#c66d5c}.gear-strategy{--gear:#8f82c9}.gear-guard{--gear:#6d9ab3}.gear-pursuit{--gear:#d3a44e}.gear-sustain{--gear:#6fb289}.gear-logistics{--gear:#9d9b69}.gear-specialty-badge.gear-assault,.gear-specialty-block.gear-assault{border-color:#8e4a40}.gear-specialty-badge.gear-strategy,.gear-specialty-block.gear-strategy{border-color:#645b94}.gear-specialty-badge.gear-guard,.gear-specialty-block.gear-guard{border-color:#53788d}.gear-specialty-badge.gear-pursuit,.gear-specialty-block.gear-pursuit{border-color:#8c6b34}.gear-specialty-badge.gear-sustain,.gear-specialty-block.gear-sustain{border-color:#4d7d61}.gear-specialty-badge.gear-logistics,.gear-specialty-block.gear-logistics{border-color:#727143}.gear-specialty-block{border-left:3px solid var(--gear,#80765b);background:linear-gradient(90deg,color-mix(in srgb,var(--gear,#777) 12%,transparent),transparent)}.gear-specialty-block h4{color:#ead8a7}.gear-resonance-block{border:1px solid #8e763b;background:linear-gradient(135deg,#3a2f1938,#182021);box-shadow:inset 0 0 24px #d5ab4520}.gear-resonance-block h4,.gear-resonance-line{color:#e3c978}.gear-resonance-line{display:block;margin:.25rem 0;font-size:.7rem}.equipment-row .gear-specialty-badge,.mount-pick-card .gear-specialty-badge,.equipment-card .gear-specialty-badge,.mount-card .gear-specialty-badge{margin-top:.15rem}.hero-card .gear-specialty-badge{font-size:.61rem}.mount-inline-detail .gear-specialty-badge{margin-top:.25rem}.economy-kpis{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.economy-kpi.gear-logistics b{color:#d7cd82}.gear-role-summary{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:.5rem;margin:.8rem 0 1rem}.gear-role-summary>div{padding:.55rem;border:1px solid #334045;border-radius:9px;background:#12191c;display:grid;gap:.1rem}.gear-role-summary b{color:#e3cf9a}.gear-role-summary small{color:#889793}@media(max-width:850px){.gear-role-summary{grid-template-columns:repeat(3,1fr)}}@media(max-width:520px){.gear-role-summary{grid-template-columns:repeat(2,1fr)}}

/* v1.25 Stage 15 · cinematic polish */
.battle-presentation{position:relative;overflow:hidden;isolation:isolate}.battlefield{position:relative}.impact-cinematic-layer{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:5}.impact-cinematic-layer i{position:absolute;display:block;opacity:0}.impact-slash{left:15%;top:48%;width:70%;height:3px;transform:rotate(-16deg);background:linear-gradient(90deg,transparent,#fff 28%,#f7d58b 58%,transparent);filter:drop-shadow(0 0 9px #fff)}.impact-burst{left:50%;top:50%;width:120px;height:120px;margin:-60px;border:2px solid #f0cc75;border-radius:50%;box-shadow:0 0 36px #f0cc7580,inset 0 0 30px #fff4}.impact-flash{inset:0;background:radial-gradient(circle at 50% 50%,#fff9 0,#f3cf6650 24%,transparent 65%)}
.impact-tier-1 .impact-flash{animation:efFlash .18s ease-out}.impact-tier-2 .impact-slash{animation:efSlash .28s ease-out}.impact-tier-2 .impact-flash{animation:efFlash .24s ease-out}.impact-tier-3:not(.reduced-motion) .battlefield{animation:efShake .28s ease-out}.impact-tier-3 .impact-slash{animation:efSlash .38s ease-out}.impact-tier-3 .impact-burst{animation:efBurst .42s ease-out}.impact-tier-3 .impact-flash{animation:efFlash .34s ease-out}.impact-tier-4:not(.reduced-motion) .battlefield{animation:efHeavyShake .6s ease-out}.impact-tier-4 .impact-slash,.impact-tier-4 .impact-burst,.impact-tier-4 .impact-flash{animation-duration:.65s}.no-flash .impact-flash{display:none}.impact-grade{position:absolute;top:1rem;left:50%;transform:translateX(-50%);z-index:9;padding:.2rem .5rem;border:1px solid #b08d47;border-radius:999px;background:#17150dcc;color:#f2d788;font-size:.67rem;letter-spacing:.08em;box-shadow:0 4px 18px #0008}
@keyframes efFlash{0%{opacity:0}20%{opacity:1}100%{opacity:0}}@keyframes efSlash{0%{opacity:0;transform:translateX(-25%) rotate(-16deg) scaleX(.35)}35%{opacity:1}100%{opacity:0;transform:translateX(20%) rotate(-16deg) scaleX(1.25)}}@keyframes efBurst{0%{opacity:.9;transform:scale(.25)}100%{opacity:0;transform:scale(1.8)}}@keyframes efShake{0%,100%{transform:translate(0)}20%{transform:translate(-5px,2px)}40%{transform:translate(5px,-2px)}60%{transform:translate(-3px,-1px)}80%{transform:translate(3px,1px)}}@keyframes efHeavyShake{0%,100%{transform:translate(0)}10%{transform:translate(-9px,3px)}20%{transform:translate(8px,-4px)}35%{transform:translate(-7px,-3px)}50%{transform:translate(7px,2px)}65%{transform:translate(-4px,2px)}80%{transform:translate(4px,-1px)}}

.cinematic-overlay{position:fixed;inset:0;z-index:1100;display:grid;place-items:center;background:#06090bd9;overflow:hidden}.cinematic-veil{position:absolute;inset:-10%;background:radial-gradient(circle at 50% 46%,#62512b44 0,transparent 38%),linear-gradient(120deg,transparent 0 42%,#fff1 43% 44%,transparent 45%);animation:cinVeil 3.8s linear infinite}.cinematic-flare{position:absolute;width:70vmin;height:70vmin;border-radius:50%;border:1px solid #d6b45f55;box-shadow:0 0 100px #d6b45f20;animation:cinPulse 2s ease-in-out infinite}.cinematic-card{position:relative;z-index:2;width:min(720px,88vw);padding:2rem 2.2rem;text-align:center;border:1px solid #745f34;border-radius:18px;background:linear-gradient(160deg,#1d1a13f2,#101619f2 60%,#17110ff2);box-shadow:0 30px 100px #000c,inset 0 0 60px #d9b85a0d}.cinematic-tier{font-size:.69rem;letter-spacing:.18em;color:#d5b968}.cinematic-seal{width:88px;height:88px;margin:1rem auto .8rem;display:grid;place-items:center;border:2px solid #b88d42;border-radius:50%;font:900 2.6rem serif;color:#f0d18a;background:#2b2116;box-shadow:0 0 0 8px #b88d4218,0 0 45px #d2a64a28}.cinematic-card h2{margin:.25rem 0;font-size:clamp(1.8rem,5vw,3.2rem);letter-spacing:.03em;color:#efe4c9}.cinematic-subtitle{margin:.6rem auto;color:#c4c9c5;max-width:620px;line-height:1.7}.cinematic-card small{display:block;color:#8f9996}.cinematic-close{margin-top:1.2rem}.tier-legendary .cinematic-card{border-color:#d1a648;box-shadow:0 30px 120px #000d,0 0 65px #d5a74625}.tier-legendary .cinematic-seal{animation:cinSeal .8s ease-out}.tier-major .cinematic-card,.tier-legendary .cinematic-card{animation:cinEnter .55s cubic-bezier(.2,.8,.2,1)}.theme-defeat .cinematic-card,.theme-territory_loss .cinematic-card,.theme-faction_fall .cinematic-card{border-color:#754742;background:linear-gradient(160deg,#261516f5,#101619f4)}.theme-betrayal .cinematic-card{border-color:#8d5454}.theme-coalition .cinematic-card{border-color:#647c86}.reduced-motion .cinematic-veil,.reduced-motion .cinematic-flare,.reduced-motion .cinematic-card,.reduced-motion .cinematic-seal{animation:none!important}
@keyframes cinEnter{0%{opacity:0;transform:scale(.9) translateY(18px)}100%{opacity:1;transform:scale(1) translateY(0)}}@keyframes cinPulse{0%,100%{opacity:.25;transform:scale(.9)}50%{opacity:.6;transform:scale(1.05)}}@keyframes cinSeal{0%{opacity:0;transform:scale(1.8) rotate(-10deg)}100%{opacity:1;transform:scale(1) rotate(0)}}@keyframes cinVeil{0%{transform:translateX(-8%)}100%{transform:translateX(8%)}}

.cinematic-settings-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem;margin-top:.7rem}.cinematic-settings-grid label{display:flex;align-items:center;gap:.45rem}.audio-mix-grid{display:grid;grid-template-columns:1fr 1fr;gap:.65rem;margin-top:.6rem}.audio-mix-grid label{display:grid;gap:.25rem;color:#aeb9b6}.audio-mix-grid small{color:#82908d}
@media(max-width:720px){.cinematic-card{padding:1.4rem 1rem}.cinematic-seal{width:68px;height:68px;font-size:2rem}.cinematic-settings-grid,.audio-mix-grid{grid-template-columns:1fr}.impact-grade{top:.45rem}}

/* v1.26.1 hotfix · integration stability / runtime boot repair */
.mobile-tab-select{display:none;min-width:150px;max-width:100%;background:#182126;color:var(--ink);border:1px solid #3b474d;border-radius:9px;padding:.48rem .6rem}
.busy-state .content,.busy-state .tutorial-coach{pointer-events:none;user-select:none}.busy-state .content{opacity:.9}
.fatal-screen{min-height:100vh;display:grid;place-items:center;padding:1.5rem;background:radial-gradient(circle at 50% 20%,#26343a,#0b1012 62%)}.fatal-card{width:min(680px,94vw);padding:2rem;border:1px solid #704f45;border-radius:18px;background:#151d21;box-shadow:var(--shadow)}.fatal-card h1{color:#f0dfbd}.fatal-card p{line-height:1.7}
@media(max-width:760px){
  .topbar{height:auto;min-height:64px;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto auto;gap:.4rem .6rem;padding:.5rem .65rem}
  .topbar .brand{grid-column:1;grid-row:1;justify-self:start;min-width:0}.brand span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.brand small{font-size:.64rem}
  .topbar nav{display:none}
  .mobile-tab-select{display:block;grid-column:1 / -1;grid-row:2;width:100%}
  .top-right{grid-column:2;grid-row:1;min-width:0}.top-status{font-size:.67rem;max-width:43vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .content{padding:.8rem}.section-head{align-items:flex-start;flex-direction:column}.section-head>.row{width:100%;flex-wrap:wrap}
  .settings-actions{display:grid;grid-template-columns:1fr 1fr}.settings-actions>*{width:100%}
}
@media(max-width:430px){.top-status{display:none}.settings-actions{grid-template-columns:1fr}.brand span{max-width:132px}}

/* Stage 17 · campaign goals / endgame */
.goal-snapshot{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 16px;margin:14px 0;border:1px solid rgba(230,199,122,.28);border-radius:14px;background:linear-gradient(135deg,rgba(230,199,122,.08),rgba(18,22,28,.72))}.goal-snapshot>div{display:grid;gap:3px}.campaign-goals-page{display:grid;gap:18px}.goal-hero{display:flex;justify-content:space-between;gap:20px;align-items:center;padding:22px;border:1px solid rgba(230,199,122,.32);border-radius:18px;background:radial-gradient(circle at 90% 15%,rgba(230,199,122,.14),transparent 42%),rgba(12,16,22,.76)}.goal-hero h2{margin:.2rem 0}.goal-hero-badge{min-width:150px;display:grid;text-align:center;padding:14px;border-radius:14px;border:1px solid rgba(230,199,122,.26);background:rgba(0,0,0,.2)}.goal-hero-badge b{font-size:1.15rem;color:#e6c77a}.goal-route-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.goal-route-card{padding:17px;border-radius:16px;border:1px solid rgba(255,255,255,.10);background:rgba(17,22,29,.78);display:grid;gap:12px}.goal-route-card.achieved{border-color:rgba(111,203,145,.52);box-shadow:inset 0 0 0 1px rgba(111,203,145,.08)}.goal-route-card.failed{opacity:.68;border-color:rgba(220,95,95,.35)}.goal-route-head{display:flex;gap:12px;align-items:center}.goal-route-head>div{flex:1}.goal-route-head h3{margin:1px 0}.goal-icon{font-size:2rem}.goal-status{font-size:.8rem;padding:6px 8px;border-radius:999px;background:rgba(255,255,255,.07)}.goal-status.achieved{color:#7fdda2;background:rgba(111,203,145,.1)}.goal-status.failed{color:#e88989}.goal-desc{margin:0;color:#c6ccd6}.goal-progress{height:7px;border-radius:99px;background:rgba(255,255,255,.07);overflow:hidden}.goal-progress i{display:block;height:100%;background:linear-gradient(90deg,#b99852,#e6c77a);border-radius:inherit}.goal-route-card.achieved .goal-progress i{background:linear-gradient(90deg,#55976c,#7fdda2)}.goal-conditions{display:grid;gap:8px}.goal-condition{display:flex;gap:9px;align-items:flex-start;padding:8px 9px;border-radius:10px;background:rgba(255,255,255,.035)}.goal-condition.done{background:rgba(111,203,145,.075)}.goal-check{font-weight:800;color:#7f8795}.goal-condition.done .goal-check{color:#7fdda2}.goal-condition>span:last-child{display:grid}.goal-condition small{color:#939cab}.goal-deadline{color:#e6c77a}.goal-rules{padding:16px;border:1px solid rgba(255,255,255,.08);border-radius:16px}.goal-rule-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.goal-rule-grid>div{display:grid;gap:4px;padding:12px;background:rgba(255,255,255,.035);border-radius:11px}.goal-rule-grid span{font-size:.86rem;color:#9fa8b6}.endgame-modal{text-align:center;display:grid;gap:14px}.endgame-seal{font-size:3.6rem}.endgame-lead{font-size:1.02rem}.endgame-summary-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.endgame-summary-grid>div{padding:10px;border-radius:10px;background:rgba(255,255,255,.045);font-size:.86rem}.endgame-condition-list{display:grid;gap:7px;text-align:left}.endgame-condition{display:flex;gap:9px;padding:9px;border-radius:10px;background:rgba(111,203,145,.07)}.endgame-condition>b{color:#7fdda2}.endgame-condition>span{display:grid}.endgame-condition small{color:#929cab}.endgame-actions{justify-content:center;flex-wrap:wrap}
@media(max-width:900px){.goal-route-grid,.goal-rule-grid{grid-template-columns:1fr}.goal-hero{align-items:flex-start;flex-direction:column}.goal-hero-badge{width:100%;box-sizing:border-box}.endgame-summary-grid{grid-template-columns:1fr}.goal-snapshot{align-items:flex-start;flex-direction:column}.goal-snapshot button{width:100%}}

/* Stage 18 · player diplomacy */
.diplomacy-page{display:grid;gap:16px}.diplomacy-hero{display:flex;justify-content:space-between;gap:18px;align-items:center;padding:20px;border:1px solid rgba(118,164,190,.3);border-radius:18px;background:radial-gradient(circle at 88% 12%,rgba(93,148,180,.14),transparent 42%),rgba(13,18,24,.78)}.diplomacy-hero h2{margin:.2rem 0}.diplomacy-reputation{min-width:150px;display:grid;text-align:center;padding:13px;border-radius:14px;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.09)}.diplomacy-reputation b{font-size:1.5rem;color:#9fc9df}.diplomacy-reputation span{font-size:.78rem;color:#9ea8b4}.diplomacy-layout{display:grid;grid-template-columns:minmax(190px,250px) 1fr;gap:14px}.diplomacy-faction-list{display:grid;gap:7px;align-content:start}.diplomacy-faction-list button{display:grid;text-align:left;gap:3px;padding:11px;border-radius:11px;background:rgba(255,255,255,.035);border:1px solid rgba(255,255,255,.07)}.diplomacy-faction-list button.active{border-color:rgba(127,190,220,.55);background:rgba(80,145,180,.12)}.diplomacy-faction-list small{color:#8f99a6}.diplomacy-main{display:grid;gap:12px}.diplomacy-relation-card,.diplomacy-agreements,.diplomacy-actions-panel,.diplomacy-prisoners,.diplomacy-history{padding:15px;border-radius:15px;border:1px solid rgba(255,255,255,.08);background:rgba(14,19,25,.72)}.diplomacy-power{padding:6px 9px;border-radius:999px;background:rgba(255,255,255,.055);font-size:.78rem}.diplomacy-meters{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.diplomacy-meter{display:grid;gap:5px}.diplomacy-meter>span{display:flex;justify-content:space-between;font-size:.82rem}.diplomacy-meter em{font-style:normal;color:#aeb8c5}.diplomacy-meter>i{height:7px;border-radius:999px;background:rgba(255,255,255,.06);overflow:hidden}.diplomacy-meter u{display:block;height:100%;background:#7fa6b9;border-radius:999px}.diplomacy-meter.trust u{background:#65b884}.diplomacy-meter.threat u{background:#d28b5a}.diplomacy-meter.interest u{background:#7ea6d6}.diplomacy-meter.grievance u{background:#be6262}.agreement-list{display:flex;gap:7px;flex-wrap:wrap}.agreement-chip{padding:6px 9px;border-radius:999px;background:rgba(91,140,171,.12);border:1px solid rgba(103,157,190,.28);font-size:.78rem}.agreement-chip.alliance{background:rgba(91,164,119,.12);border-color:rgba(91,164,119,.32)}.agreement-chip.truce,.agreement-chip.nap{background:rgba(179,156,91,.11);border-color:rgba(179,156,91,.3)}.diplomacy-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.diplomacy-action,.resource-actions button,.prisoner-list button{display:grid;gap:3px;text-align:left;padding:10px}.diplomacy-action small,.resource-actions small,.prisoner-list small{color:#919ca9}.diplomacy-action.high{border-color:rgba(98,184,133,.38)}.diplomacy-action.mid{border-color:rgba(200,169,92,.35)}.diplomacy-action.low{border-color:rgba(188,98,98,.32)}.joint-row{display:flex;gap:10px;align-items:end;margin:9px 0}.joint-row label{flex:1;display:grid;gap:4px}.joint-row select{width:100%}.resource-actions{grid-template-columns:repeat(2,minmax(0,1fr))}.prisoner-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.diplomacy-history-list{display:grid;gap:7px}.diplomacy-history-list article{display:grid;grid-template-columns:44px 1fr;gap:10px;padding:9px;border-radius:10px;background:rgba(255,255,255,.035)}.diplomacy-history-list article.rejected{border-left:3px solid #b75d5d}.diplomacy-history-list article>span{font-size:.75rem;color:#83909d}.diplomacy-history-list p{margin:.2rem 0 0;color:#aeb7c2;font-size:.84rem;line-height:1.5}
@media(max-width:900px){.diplomacy-layout{grid-template-columns:1fr}.diplomacy-faction-list{grid-template-columns:repeat(2,minmax(0,1fr))}.diplomacy-actions{grid-template-columns:1fr 1fr}.diplomacy-hero{align-items:flex-start;flex-direction:column}.diplomacy-reputation{width:100%;box-sizing:border-box}}
@media(max-width:560px){.diplomacy-faction-list,.diplomacy-actions,.resource-actions,.prisoner-list,.diplomacy-meters{grid-template-columns:1fr}.joint-row{align-items:stretch;flex-direction:column}.joint-row .diplomacy-action{width:100%}}

/* Stage 19 · AI faction personality */
.ai-personality-card{padding:15px;border-radius:15px;border:1px solid rgba(177,139,92,.22);background:linear-gradient(145deg,rgba(82,61,34,.09),rgba(14,19,25,.74));display:grid;gap:12px}.ai-personality-head{display:flex;justify-content:space-between;gap:14px;align-items:flex-start}.ai-personality-head h3{margin:.15rem 0}.ai-doctrine{white-space:nowrap;padding:7px 10px;border-radius:999px;border:1px solid rgba(230,199,122,.3);background:rgba(230,199,122,.08);font-size:.8rem;color:#e6c77a}.ai-doctrine.doctrine-recover{color:#d1b575;border-color:rgba(209,181,117,.34)}.ai-doctrine.doctrine-fortify,.ai-doctrine.doctrine-consolidate{color:#83b1d2;border-color:rgba(131,177,210,.34)}.ai-doctrine.doctrine-predator,.ai-doctrine.doctrine-hegemony,.ai-doctrine.doctrine-expand{color:#dc8c73;border-color:rgba(220,140,115,.36)}.ai-doctrine-reason{margin:0;color:#aeb7c2;font-size:.83rem}.ai-personality-axes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.ai-axis{display:grid;gap:5px}.ai-axis>span{display:flex;justify-content:space-between;font-size:.8rem}.ai-axis em{font-style:normal;color:#aeb8c5}.ai-axis>i{height:6px;border-radius:999px;background:rgba(255,255,255,.06);overflow:hidden}.ai-axis u{display:block;height:100%;background:linear-gradient(90deg,#677f91,#c59e51);border-radius:999px}.ai-personality-notes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.ai-personality-notes>div{padding:9px;border-radius:10px;background:rgba(255,255,255,.035);display:grid;gap:3px}.ai-personality-notes b{font-size:.76rem;color:#d8b56a}.ai-personality-notes span{font-size:.8rem;color:#aeb7c2;line-height:1.45}
@media(max-width:760px){.ai-personality-head{flex-direction:column}.ai-doctrine{white-space:normal}.ai-personality-notes{grid-template-columns:1fr}}
@media(max-width:560px){.ai-personality-axes{grid-template-columns:1fr}}

/* v1.30 Stage 20 - Territory development */
.territory-development,.development-hero,.development-guide,.development-territory-card{background:linear-gradient(180deg,rgba(255,255,255,.035),rgba(255,255,255,.015));border:1px solid rgba(230,199,122,.18);border-radius:14px;padding:14px}
.territory-development{margin-top:12px}
.development-slot-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;margin:10px 0}
.development-slot{min-height:48px;border:1px dashed rgba(230,199,122,.25);border-radius:10px;padding:8px;display:flex;flex-direction:column;justify-content:center;gap:2px;background:rgba(0,0,0,.12)}
.development-slot.built{border-style:solid;background:rgba(230,199,122,.07)}
.development-slot.empty-slot{opacity:.58;text-align:center}.development-slot small{font-size:11px;color:var(--muted,#9da6ad)}
.development-bonus-line{display:block;margin:8px 0 12px;color:#d8c58e}
.development-build-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.development-option{border:1px solid rgba(255,255,255,.08);border-radius:10px;padding:10px;background:rgba(0,0,0,.1)}
.development-option.owned{border-color:rgba(230,199,122,.28)}
.development-option-head{display:flex;justify-content:space-between;gap:8px;align-items:center}.development-option-head small{color:#cabd94}
.development-option p{margin:6px 0;font-size:12px}.development-option>small{display:block;min-height:30px}
.development-option-actions{display:flex;gap:6px;margin-top:8px}.development-option-actions button:first-child{flex:1;font-size:11px}
.construction-active,.construction-line{color:#e6c77a}.construction-line{margin-top:8px;padding:7px 9px;border-radius:8px;background:rgba(230,199,122,.08);font-size:12px}
.development-page{display:flex;flex-direction:column;gap:14px}.development-hero{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:18px}
.development-hero h2{margin:3px 0 6px}.development-hero-kpi{display:flex;flex-direction:column;align-items:flex-end}.development-hero-kpi b{font-size:28px}.development-hero-kpi small{color:var(--muted,#9da6ad)}
.development-type-strip{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}.development-type-strip>div{border:1px solid rgba(255,255,255,.08);border-radius:10px;padding:9px;display:flex;flex-direction:column;gap:2px}.development-type-strip span{font-size:18px}.development-type-strip small{font-size:11px;color:var(--muted,#9da6ad)}
.development-guide{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.development-guide>span{color:#d8c58e}
.development-territory-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.development-territory-card{display:flex;flex-direction:column;gap:8px}.development-territory-card.building{border-color:rgba(230,199,122,.42)}
.development-territory-card header{display:flex;justify-content:space-between;gap:8px}.development-territory-card header div{display:flex;flex-direction:column}.development-territory-card header small{color:var(--muted,#9da6ad)}
.development-mini-slots{display:flex;gap:5px}.development-mini-slots span{width:34px;height:28px;border:1px dashed rgba(255,255,255,.12);border-radius:7px;display:grid;place-items:center;font-size:12px;opacity:.55}.development-mini-slots span.on{border-style:solid;border-color:rgba(230,199,122,.35);opacity:1;background:rgba(230,199,122,.06)}
.development-card-bonus{font-size:12px;color:#d8c58e;min-height:30px}.development-card-kpis{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px;font-size:12px}.development-card-kpis span{background:rgba(0,0,0,.12);border-radius:6px;padding:5px}
@media(max-width:980px){.development-type-strip{grid-template-columns:repeat(4,minmax(0,1fr))}.development-territory-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:680px){.development-build-grid{grid-template-columns:1fr}.development-slot-row{grid-template-columns:repeat(2,minmax(0,1fr))}.development-hero{align-items:flex-start;flex-direction:column}.development-hero-kpi{align-items:flex-start}.development-type-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.development-territory-grid{grid-template-columns:1fr}}


/* v1.31 Stage 21 - Strategic Graph */
.graph-edge{pointer-events:none;stroke-width:.28;opacity:.58;vector-effect:non-scaling-stroke;stroke-dasharray:1.2 1.1}
.graph-edge.graph-road{stroke:#d6b86b;stroke-width:.38;stroke-dasharray:none;opacity:.66}
.graph-edge.graph-gate{stroke:#d78961;stroke-width:.46;stroke-dasharray:.8 .65;opacity:.78}
.graph-edge.graph-river{stroke:#67a9c8;stroke-width:.42;stroke-dasharray:1.4 .8;opacity:.75}
.graph-edge.graph-rugged{stroke:#8f8b78;stroke-width:.34;stroke-dasharray:.55 .8;opacity:.55}
.graph-edge.graph-sea{stroke:#66bfd1;stroke-width:.5;stroke-dasharray:2 1;opacity:.8}
.graph-route-detail{border-left:3px solid rgba(103,169,201,.55);background:linear-gradient(90deg,rgba(68,123,153,.10),transparent)}
.graph-network-card{margin:14px 0;padding:14px;border:1px solid rgba(103,169,201,.22);border-radius:14px;background:linear-gradient(135deg,rgba(35,67,83,.24),rgba(18,25,30,.72))}
.graph-network-kpis{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:7px;margin-top:10px}.graph-network-kpis>span{padding:8px;border-radius:9px;background:rgba(255,255,255,.035);display:grid;gap:2px}.graph-network-kpis b{font-size:.88rem}.graph-network-kpis small{font-size:.7rem;color:#9caab5}
@media(max-width:800px){.graph-network-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:520px){.graph-network-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Stage 22 v1.32 — casualty integrity + formation/detail UX */
.slot-hero-actions{grid-column:2;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.4rem;align-items:stretch}.slot-hero-actions .slot-hero-info{grid-column:auto;min-width:0}.slot-unassign{font-size:.68rem;white-space:nowrap;padding:.35rem .5rem}.formation-clear-modal{width:100%;margin:.35rem 0 .55rem}.casualty-resolution{padding:1rem;border:1px solid #4a4540;border-radius:14px;background:linear-gradient(145deg,#191916,#111719);margin:.8rem 0}.casualty-resolution .analysis-subhead{margin-bottom:.55rem}.casualty-resolution-grid{display:grid;grid-template-columns:1fr 1fr;gap:.65rem}.casualty-resolution-side{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.35rem .55rem;padding:.75rem;border:1px solid #3d594c;border-radius:10px;background:#111c17}.casualty-resolution-side.enemy{border-color:#694944;background:#211515}.casualty-resolution-side>b{grid-column:1/-1;color:#eed18f}.casualty-resolution-side span,.casualty-resolution-side strong{padding:.28rem .4rem;border-radius:6px;background:#0c1416;font-size:.72rem}.casualty-resolution-side strong{grid-column:1/-1;color:#efe8d1}.casualty-dead{color:#ed8d82!important;font-weight:800}.casualty-wounded{color:#e7bd75!important;font-weight:800}.casualty-heal{color:#90d4a8!important;font-weight:800}.battle-log-table .casualty-dead,.battle-log-table .casualty-wounded{white-space:nowrap}.battle-log-table{min-width:1700px}
@media(max-width:680px){.slot-hero-actions{grid-template-columns:1fr}.slot-unassign{width:100%}.casualty-resolution-grid{grid-template-columns:1fr}}

/* Stage 23 v1.33 — World Military State persistence foundation (no visual override). */

/* Stage 24 v1.34 — 10 formation slots / starter 5 squads. */

/* Stage 25 v1.35 — Main Army location, movement and reserve defense */
.main-army-layer{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible;z-index:8}.main-army-marker circle{fill:#d6b75e;stroke:#fff0af;stroke-width:.45;filter:drop-shadow(0 0 2px #000)}.main-army-marker text{fill:#111;font-size:1.8px;font-weight:950;paint-order:stroke;stroke:#f7e8ad;stroke-width:.16px}.main-army-marker .main-army-label{fill:#fff3c8;font-size:1.25px;stroke:#111;stroke-width:.28px}.main-army-card{margin:.75rem 0;padding:.8rem;border:1px solid #685c37;border-radius:12px;background:linear-gradient(145deg,#1d1a10,#111719)}.main-army-card.stationed{border-color:#c1a45a;box-shadow:0 0 0 1px #d7bd7150 inset}.main-army-head{display:flex;align-items:center;justify-content:space-between;gap:.7rem}.main-army-head>div{display:flex;flex-direction:column;gap:.15rem}.main-army-head b,.main-army-head strong{color:#efd184}.main-army-move{display:flex;align-items:center;justify-content:space-between;gap:.7rem;margin-top:.55rem;padding-top:.55rem;border-top:1px solid #403b2c}.main-army-move span{font-size:.72rem;color:#b9c2be}.main-army-move button{white-space:nowrap}
@media(max-width:680px){.main-army-head,.main-army-move{align-items:stretch;flex-direction:column}.main-army-move button{width:100%}}

/* Stage 28 v1.38 — simultaneous world-turn five-second strategic presentation */
.world-turn-backdrop{position:fixed;inset:0;z-index:1200;background:rgba(4,7,8,.91);display:grid;place-items:center;padding:16px;backdrop-filter:blur(7px)}
.world-turn-overlay{width:min(1120px,96vw);max-height:94vh;overflow:auto;border:1px solid rgba(230,199,122,.42);border-radius:18px;background:linear-gradient(160deg,#10181a,#0b0f11 62%,#17130b);box-shadow:0 28px 90px #000;padding:18px;display:grid;gap:12px}
.world-turn-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.world-turn-head h2{margin:2px 0 5px}.world-turn-head p{margin:0}
.world-turn-kpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.world-turn-kpis span{border:1px solid rgba(255,255,255,.08);border-radius:11px;padding:9px 12px;background:rgba(255,255,255,.03);display:flex;align-items:baseline;justify-content:space-between;gap:8px}.world-turn-kpis b{font-size:1.35rem;color:#ead087}.world-turn-kpis small{color:#aeb8c0}
.world-turn-map{position:relative;min-height:390px;border:1px solid rgba(103,169,201,.22);border-radius:14px;background:radial-gradient(circle at 50% 45%,rgba(44,76,83,.34),rgba(9,13,14,.93) 66%),linear-gradient(135deg,rgba(106,89,48,.08),transparent);overflow:hidden}.world-turn-map>svg{width:100%;height:100%;min-height:390px}.world-turn-route line{stroke:#829aa8;stroke-width:2.1;stroke-dasharray:8 8;animation:worldTurnDash 1.15s linear infinite}.world-turn-route circle{fill:#172429;stroke:#a5bbc4;stroke-width:2}.world-turn-route text{fill:#dce6e7;font-size:16px;paint-order:stroke;stroke:#0b0f11;stroke-width:4px}.world-turn-route.battle line{stroke:#d4aa61;stroke-width:3}.world-turn-route.battle circle{stroke:#dfc178}.world-turn-route.capture line{stroke:#ce745e;stroke-width:3.5}.world-turn-route.capture circle:last-of-type{fill:#5a251f;stroke:#ef987f;animation:worldTurnPulse 1s ease-in-out infinite}.world-turn-route marker path,#world-turn-arrow path{fill:#d7bf7c}
.world-turn-route-list{position:absolute;right:10px;bottom:10px;width:min(360px,54%);max-height:150px;overflow:auto;background:rgba(6,9,10,.84);border:1px solid rgba(255,255,255,.1);border-radius:10px;padding:7px;display:grid;gap:5px}.world-turn-route-list>div{display:grid;gap:1px;padding:4px 6px;border-bottom:1px solid rgba(255,255,255,.05)}.world-turn-route-list>div:last-child{border-bottom:0}.world-turn-route-list b{font-size:.78rem;color:#e1c989}.world-turn-route-list small{font-size:.68rem;color:#aab4bb;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.world-turn-progress{height:4px;border-radius:999px;background:rgba(255,255,255,.08);overflow:hidden}.world-turn-progress i{display:block;width:100%;height:100%;background:linear-gradient(90deg,#718a94,#d6b86b,#c2735f);transform-origin:left;animation:worldTurnProgress var(--world-turn-duration,5000ms) linear forwards}
@keyframes worldTurnDash{to{stroke-dashoffset:-32}}@keyframes worldTurnPulse{50%{r:13;opacity:.6}}@keyframes worldTurnProgress{from{transform:scaleX(1)}to{transform:scaleX(0)}}

/* Stage 29 v1.39 — reserve EXP + territory military training */
.training-page{display:flex;flex-direction:column;gap:14px}.training-hero,.training-status-card,.training-history,.training-empty{border:1px solid rgba(230,199,122,.2);border-radius:14px;background:linear-gradient(180deg,rgba(255,255,255,.035),rgba(255,255,255,.015));padding:16px}.training-hero{display:flex;align-items:center;justify-content:space-between;gap:18px}.training-hero h2{margin:3px 0 6px}.training-hero-kpis{display:grid;justify-items:end;min-width:170px}.training-hero-kpis strong{font-size:2rem;color:#e5c36f}.training-hero-kpis small{color:#9eabb2}
.training-rules{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.training-rules>div{border:1px solid rgba(255,255,255,.08);border-radius:11px;padding:10px;display:grid;gap:3px;background:rgba(0,0,0,.12)}.training-rules b{font-size:.82rem}.training-rules strong{color:#e5c980}.training-rules small{color:#9facb4;font-size:.72rem;line-height:1.35}
.training-status-card{display:flex;justify-content:space-between;gap:14px;align-items:flex-start}.training-status-card>div{display:grid;gap:3px}.training-last{min-width:min(620px,62%);padding-left:14px;border-left:2px solid rgba(230,199,122,.28)}.training-last span{font-size:.82rem}.training-last small{font-size:.72rem;color:#9facb4}
.training-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.training-card{border:1px solid rgba(255,255,255,.09);border-radius:13px;padding:13px;background:linear-gradient(160deg,rgba(13,19,20,.92),rgba(17,17,13,.8));display:flex;flex-direction:column;gap:10px}.training-card.active{border-color:rgba(230,199,122,.45);box-shadow:inset 0 0 0 1px rgba(230,199,122,.08)}.training-card header{display:flex;justify-content:space-between;gap:8px}.training-card header>div{display:grid}.training-card header small{color:#98a6ae}.training-on,.training-off{font-size:.7rem;padding:4px 7px;border-radius:999px;height:max-content}.training-on{background:rgba(83,139,99,.18);border:1px solid rgba(113,185,132,.35);color:#9fd3a9}.training-off{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.08);color:#9aa5aa}
.training-card-kpis{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.training-card-kpis span{padding:7px;border-radius:8px;background:rgba(255,255,255,.035);display:grid;gap:1px}.training-card-kpis small{font-size:.68rem;color:#95a2a9}.training-card-kpis b{font-size:.82rem;color:#dbc584}.training-card p{margin:0;font-size:.74rem;line-height:1.45}.training-history{display:grid;gap:5px}.training-history h3{margin:0 0 5px}.training-history>div{display:grid;grid-template-columns:55px 1fr;gap:8px;padding:6px 8px;border-radius:8px;background:rgba(0,0,0,.12);font-size:.76rem}.training-history b{color:#dfc379}.training-empty{text-align:center;padding:28px}
@media(max-width:900px){.training-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.training-rules{grid-template-columns:repeat(2,minmax(0,1fr))}.world-turn-route-list{width:62%}}
@media(max-width:640px){.world-turn-backdrop{padding:6px}.world-turn-overlay{width:100%;padding:12px}.world-turn-head,.training-hero,.training-status-card{flex-direction:column}.world-turn-kpis{grid-template-columns:1fr 1fr 1fr}.world-turn-map,.world-turn-map>svg{min-height:330px}.world-turn-route-list{position:static;width:auto;max-height:120px;margin:8px}.training-grid{grid-template-columns:1fr}.training-rules{grid-template-columns:1fr 1fr}.training-hero-kpis{justify-items:start}.training-last{min-width:0;width:100%;padding-left:0;padding-top:10px;border-left:0;border-top:1px solid rgba(230,199,122,.2)}}
@media(prefers-reduced-motion:reduce){.world-turn-route line,.world-turn-route.capture circle:last-of-type,.world-turn-progress i{animation-duration:.01ms!important;animation-iteration-count:1!important}}


/* Stage 30 v1.40 — seeded random frontier campaign start */
.scenario-random-start{border-color:rgba(120,174,204,.32)!important;color:#b9d7e8}.scenario-start-brief{border-color:rgba(120,174,204,.24);background:linear-gradient(145deg,rgba(75,112,132,.10),rgba(230,199,122,.035))}.scenario-start-brief b{color:#c7dfeb}.scenario-start-brief p{margin:.35rem 0}.scenario-card>small.muted{display:block;margin-top:-3px;line-height:1.35}

/* Stage 31 v1.41 — same-hero duplicate strengthening */
.duplicate-badge{display:inline-flex;align-items:center;gap:.25rem;padding:.14rem .45rem;border-radius:999px;background:rgba(219,169,74,.14);border:1px solid rgba(219,169,74,.36);font-size:.72rem;font-weight:800;letter-spacing:.02em}
.duplicate-growth-block{border:1px solid rgba(219,169,74,.24);background:linear-gradient(135deg,rgba(219,169,74,.08),rgba(94,118,160,.05))}
.duplicate-growth-modal{width:min(760px,92vw);max-height:86vh;overflow:auto}
.duplicate-growth-head{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:1rem}
.duplicate-growth-seal{min-width:110px;padding:.75rem;border-radius:12px;border:1px solid rgba(219,169,74,.3);text-align:center;display:grid;gap:.1rem}
.duplicate-growth-seal b{font-size:1.55rem}
.duplicate-stat-picker{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.5rem;margin:.8rem 0}
.duplicate-stat-picker button{min-height:44px}
.duplicate-stat-picker button.selected{box-shadow:inset 0 0 0 2px currentColor;font-weight:900}
.duplicate-growth-summary{display:flex;flex-wrap:wrap;gap:.55rem .9rem;align-items:center;margin:.65rem 0;font-size:.86rem}
.duplicate-material-list{display:grid;gap:.55rem;margin:.8rem 0 1rem}
.duplicate-material{width:100%;text-align:left;border-radius:12px;padding:.75rem .85rem;display:grid;gap:.25rem}
.duplicate-material.selected{box-shadow:inset 0 0 0 2px currentColor}
.duplicate-material.blocked{opacity:.58;cursor:not-allowed}
.duplicate-material-meta{display:flex;flex-wrap:wrap;gap:.35rem .7rem;font-size:.78rem;opacity:.82}
.duplicate-warning{padding:.7rem .8rem;border-radius:10px;border:1px solid rgba(203,102,87,.32);background:rgba(203,102,87,.08);font-size:.82rem;line-height:1.45}
.danger-text{font-weight:800}
@media(max-width:640px){.duplicate-growth-head{display:grid}.duplicate-growth-seal{min-width:0;grid-template-columns:auto auto auto;align-items:center;text-align:left}.duplicate-stat-picker{grid-template-columns:repeat(2,minmax(0,1fr))}.duplicate-growth-modal{width:94vw}}

/* Stage 32 v1.42 — World Front Line + Regional War History */
.world-front-line{pointer-events:none;stroke:#8a969d;stroke-width:.45;stroke-linecap:round;opacity:.6;vector-effect:non-scaling-stroke}.world-front-line.front-active{stroke:#d0b163;stroke-width:.7;opacity:.78}.world-front-line.front-hot{stroke:#d17f52;stroke-width:1.0;opacity:.9}.world-front-line.front-decisive{stroke:#e55f52;stroke-width:1.35;opacity:1;filter:drop-shadow(0 0 2px rgba(229,95,82,.65));animation:frontPulse 1.2s ease-in-out infinite}.world-front-line.front-quiet{stroke-dasharray:1.1 1.3}.world-front-line.front-active{stroke-dasharray:2 1.2}.world-front-line.front-hot,.world-front-line.front-decisive{stroke-dasharray:none}@keyframes frontPulse{0%,100%{opacity:.7}50%{opacity:1}}
.warfront-page{display:grid;gap:14px}.warfront-hero{display:flex;justify-content:space-between;gap:18px;align-items:flex-end;padding:18px;border:1px solid rgba(223,193,120,.22);border-radius:16px;background:linear-gradient(135deg,rgba(49,64,66,.62),rgba(12,17,18,.94))}.warfront-hero h2{margin:.2rem 0}.warfront-hero-kpis{display:grid;justify-items:end;min-width:190px}.warfront-hero-kpis strong{font-size:2rem;color:#e5cb83}.warfront-hero-kpis small{color:#adb9be}.warfront-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.warfront-kpis>div{display:grid;gap:3px;padding:12px;border:1px solid rgba(255,255,255,.08);border-radius:12px;background:rgba(255,255,255,.025)}.warfront-kpis small{color:#95a3aa}.warfront-kpis b{font-size:1.35rem}.warfront-kpis em{font-style:normal;color:#c1c8ca;font-size:.78rem}
.frontline-section,.regional-war-section,.regional-battle-feed{padding:14px;border:1px solid rgba(255,255,255,.075);border-radius:14px;background:rgba(7,11,12,.52)}.frontline-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.frontline-card{display:grid;gap:9px;padding:12px;border:1px solid rgba(255,255,255,.09);border-left:3px solid #7e8d93;border-radius:12px;background:rgba(255,255,255,.025)}.frontline-card.intensity-active{border-left-color:#cfb263}.frontline-card.intensity-hot{border-left-color:#d57c4e}.frontline-card.intensity-decisive{border-left-color:#e35f52;box-shadow:0 0 0 1px rgba(227,95,82,.12),0 0 18px rgba(227,95,82,.08)}.frontline-card header,.frontline-card footer{display:flex;align-items:center;justify-content:space-between;gap:8px}.frontline-pair{display:flex;align-items:center;gap:6px;min-width:0}.frontline-pair i{width:9px;height:9px;border-radius:50%;flex:0 0 auto}.frontline-pair b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.frontline-intensity{font-size:.78rem;border:1px solid rgba(255,255,255,.12);padding:3px 7px;border-radius:999px}.frontline-provinces{margin:0;color:#d7c991;font-size:.82rem}.frontline-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px}.frontline-metrics span{display:grid;padding:6px;border-radius:8px;background:rgba(255,255,255,.035)}.frontline-metrics small{font-size:.66rem;color:#8f9ba1}.frontline-metrics b{font-size:.78rem}.frontline-card footer small{color:#8f9ba1}
.war-province-filter{display:flex;align-items:center;gap:7px}.regional-war-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px}.regional-war-card{display:grid;gap:7px;padding:11px;border:1px solid rgba(255,255,255,.08);border-radius:11px;background:rgba(255,255,255,.022)}.regional-war-card header,.regional-war-card footer{display:flex;justify-content:space-between;gap:8px}.regional-war-card header span,.regional-war-card footer small{font-size:.68rem;color:#94a0a6}.regional-war-metrics{display:grid;grid-template-columns:1fr 1fr;gap:5px}.regional-war-metrics span{display:flex;justify-content:space-between;gap:6px;padding:5px 7px;background:rgba(255,255,255,.035);border-radius:7px}.regional-war-metrics small{color:#8e999f}.regional-war-card p{margin:0;font-size:.72rem}.regional-war-card footer{flex-direction:column}
.regional-battle-list{display:grid;gap:6px}.regional-battle-row{display:grid;grid-template-columns:44px minmax(0,1fr) 90px auto;align-items:center;gap:9px;padding:8px 9px;border:1px solid rgba(255,255,255,.07);border-radius:9px;background:rgba(255,255,255,.02)}.regional-battle-row.capture{border-color:rgba(211,119,86,.26);background:rgba(161,67,42,.05)}.regional-battle-main{display:grid;min-width:0}.regional-battle-main b,.regional-battle-main small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.regional-battle-main small{color:#9aa6ac}.regional-battle-loss{display:grid;justify-items:end}.regional-battle-loss small{font-size:.66rem;color:#9aa6ac}.world-turn-head-actions{display:flex;align-items:center;gap:8px}.world-turn-speed{display:flex;gap:4px}.world-turn-speed button{padding:5px 7px;font-size:.72rem}.world-turn-speed button.active{border-color:#d6b86b;color:#ead28b;background:rgba(214,184,107,.12)}
@media(max-width:1100px){.frontline-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.regional-war-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.warfront-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){.warfront-hero{align-items:flex-start;flex-direction:column}.warfront-hero-kpis{justify-items:start}.frontline-grid,.regional-war-grid{grid-template-columns:1fr}.frontline-metrics{grid-template-columns:1fr 1fr}.regional-battle-row{grid-template-columns:40px minmax(0,1fr) auto}.regional-battle-loss{display:none}.world-turn-head-actions{width:100%;justify-content:space-between;flex-wrap:wrap}.world-turn-speed{order:2}.warfront-kpis{grid-template-columns:1fr 1fr}}
@media(prefers-reduced-motion:reduce){.world-front-line.front-decisive{animation:none}}

/* Stage 34 v1.44 — Intelligence / Reconnaissance / Fog of War */
.territory-shape.fog-unknown,.territory-shape.fogged-owner{fill:#20282cbb!important;stroke:#59656a!important;filter:saturate(.25) brightness(.72)}
.territory-shape.fog-stale{fill:#3b4146aa!important;stroke:#767f82!important;filter:saturate(.45) brightness(.82)}
.territory-shape.intel-level-1{filter:saturate(.5) brightness(.82)}.territory-shape.intel-level-2{filter:saturate(.72) brightness(.9)}.territory-shape.intel-level-3{filter:saturate(.9)}.territory-shape.intel-level-4{filter:none}
.world-map-legend .legend-fog{background:repeating-linear-gradient(135deg,#333d42 0 4px,#596369 4px 8px)!important;border-color:#7b878c!important}
.intel-territory-panel{display:grid;gap:.72rem}.territory-intel-card,.territory-intel-deep,.territory-intel-hidden{padding:.8rem;border:1px solid #38464b;border-radius:12px;background:linear-gradient(145deg,#121b1e,#101516)}
.territory-intel-card header{display:flex;align-items:flex-start;justify-content:space-between;gap:.6rem}.territory-intel-card header>div{display:grid;gap:.12rem}.territory-intel-card.intel-quality-0{border-color:#4b5255}.territory-intel-card.intel-quality-1{border-color:#6f6751}.territory-intel-card.intel-quality-2{border-color:#607b80}.territory-intel-card.intel-quality-3{border-color:#5e8f83}.territory-intel-card.intel-quality-4{border-color:#c2a65c;box-shadow:inset 0 0 0 1px #c2a65c22}
.intel-confidence-bar{height:5px;margin:.6rem 0;border-radius:999px;background:#263034;overflow:hidden}.intel-confidence-bar i{display:block;height:100%;background:linear-gradient(90deg,#58656b,#8bb9aa,#dec474)}
.territory-kpis.intel-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.territory-intel-deep .territory-logistics-grid{margin-top:.5rem}.territory-intel-hidden{border-style:dashed;color:#9ba6aa}.intel-unknown-heroes{padding:.6rem;border:1px dashed #424d51;border-radius:10px}.intel-enemy-row{background:#11191c}
.intelligence-page{display:grid;gap:14px}.intelligence-hero{display:flex;justify-content:space-between;align-items:flex-end;gap:18px;padding:18px;border:1px solid rgba(109,169,153,.3);border-radius:16px;background:radial-gradient(circle at 85% 10%,rgba(85,137,124,.16),transparent 38%),linear-gradient(145deg,#121c1e,#0c1214)}.intelligence-hero h2{margin:.2rem 0}.intelligence-hero-kpis{display:grid;justify-items:end;min-width:180px}.intelligence-hero-kpis strong{font-size:2rem;color:#9acbb8}.intelligence-hero-kpis small{color:#9eacb1}
.intel-level-strip{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}.intel-level-card{display:grid;gap:2px;padding:10px;border:1px solid #344044;border-radius:10px;background:#111719}.intel-level-card b{font-size:.8rem}.intel-level-card span{font-size:1.3rem;font-weight:900}.intel-level-card small{font-size:.68rem;color:#929fa4}.intel-level-card.q0{opacity:.68}.intel-level-card.q3,.intel-level-card.q4{border-color:#577d72}.intel-level-card.q4 span{color:#e0c476}
.intel-officer-section,.recon-planner,.intel-known-section,.intel-history{padding:15px;border:1px solid #344247;border-radius:14px;background:rgba(15,22,24,.88)}.intel-officer-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}.intel-officer-slot{display:grid;gap:5px;padding:10px;border:1px solid #38484d;border-radius:10px;background:#101719}.intel-officer-slot select,.recon-controls select{min-width:0;width:100%}.intel-officer-slot small{color:#92a0a5}.intel-officer-slot b{color:#d9c17e}
.recon-controls{display:grid;grid-template-columns:2fr 1fr;gap:10px}.recon-controls label{display:grid;gap:5px}.recon-quote{margin-top:10px;padding:12px;border:1px solid #4e625e;border-radius:11px;background:linear-gradient(90deg,rgba(69,109,98,.13),transparent);display:grid;grid-template-columns:minmax(180px,1.2fr) repeat(2,minmax(130px,1fr)) auto;align-items:center;gap:10px}.recon-quote>div{display:grid;gap:2px}.recon-quote>div:nth-child(2){display:flex;flex-direction:column;font-size:.76rem;color:#b5c0c3}.intel-badge{padding:5px 8px;border:1px solid #51636a;border-radius:999px;font-size:.75rem}.intel-badge.q3,.intel-badge.q4{border-color:#719c90;color:#a9d5c2}.intel-badge.q4{border-color:#bca45f;color:#ecd186}
.intel-known-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.intel-known-card{text-align:left;display:grid;gap:5px;padding:10px!important;border-radius:10px!important;background:#101719!important}.intel-known-card header{display:flex;justify-content:space-between;gap:7px}.intel-known-card small{color:#9ca9ad}.intel-known-card strong{font-size:.78rem;color:#dac681}.intel-known-card.q1{opacity:.72}.intel-known-card.q4{border-color:#aa955c!important}.intel-history{display:grid;gap:6px}.intel-history>div{display:grid;grid-template-columns:55px 1fr auto;gap:8px;padding:6px;border-bottom:1px solid #2c3639}.intel-history>div:last-child{border-bottom:0}.faction-rank.intel-masked{opacity:.62;filter:saturate(.35)}
.regional-war-card.intel-q1{opacity:.72}.regional-war-card.intel-q2{opacity:.86}.regional-war-card.intel-q3,.regional-war-card.intel-q4{border-color:rgba(115,157,145,.34)}
@media(max-width:1000px){.intel-known-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.recon-quote{grid-template-columns:1fr 1fr}.recon-quote button{grid-column:1/-1}.intel-level-strip{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:700px){.intelligence-hero{align-items:flex-start;flex-direction:column}.intelligence-hero-kpis{justify-items:start}.intel-officer-grid,.recon-controls,.intel-known-grid{grid-template-columns:1fr}.intel-level-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.recon-quote{grid-template-columns:1fr}.territory-kpis.intel-kpis{grid-template-columns:1fr 1fr}.territory-intel-card header{flex-direction:column;align-items:stretch}}

/* Stage 35 · Hero relationship / loyalty / defection */
.people-page{display:grid;gap:1rem}.people-hero{display:flex;justify-content:space-between;gap:1rem;align-items:center;padding:1rem;border:1px solid #5d5136;border-radius:16px;background:linear-gradient(145deg,#1c1a15,#11191b)}.people-hero h2{margin:.2rem 0}.people-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(90px,1fr));gap:.5rem;min-width:min(440px,48%)}.people-kpis>span{display:grid;gap:.12rem;padding:.7rem;border:1px solid #394449;border-radius:10px;background:#101719}.people-kpis small{font-size:.66rem;color:#8e9b99}.people-kpis strong{font-size:1.2rem;color:#ecd18a}.people-section,.people-detail,.people-history{padding:1rem;border:1px solid #344147;border-radius:14px;background:#121a1d}.loyalty-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:.55rem}.loyalty-card{display:grid;grid-template-columns:auto 1fr auto;gap:.6rem;align-items:center;text-align:left;padding:.65rem;border:1px solid #354247;border-radius:11px;background:#101719}.loyalty-card.selected{border-color:#d0af62;box-shadow:0 0 0 1px #d0af6240 inset}.loyalty-card-main{display:grid;gap:.12rem;min-width:0}.loyalty-card-main strong{color:#ead08c}.loyalty-card-main small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#879895}.loyalty-card em{font-style:normal;font-weight:900}.loyalty-action-hint{grid-column:2/-1;color:#cbb979!important}.loyalty-tag{border-color:#625b42!important}.risk-0{--risk:#659978}.risk-1{--risk:#798e62}.risk-2{--risk:#b39a54}.risk-3{--risk:#b87354}.risk-4{--risk:#b55750}.loyalty-card[class*="risk-"],.people-detail[class*="risk-"],.recruit-card[class*="risk-"],.loyalty-detail[class*="risk-"]{border-left:3px solid var(--risk,#65777b)}.loyalty-score{color:#efd18a}.people-detail-head{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem}.people-detail-columns{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-top:.8rem}.people-detail-columns h4{margin:.1rem 0 .55rem}.loyalty-reason{display:grid;grid-template-columns:42px 1fr auto;gap:.5rem;align-items:start;padding:.45rem 0;border-bottom:1px solid #263236}.loyalty-reason small{color:#71817f}.relationship-chips{display:flex;flex-wrap:wrap;gap:.35rem}.relationship-chips span{padding:.3rem .45rem;border:1px solid #405056;border-radius:999px;background:#11191c;font-size:.68rem}.relationship-list{display:grid;gap:.4rem}.relationship-list>div{display:grid;gap:.1rem;padding:.5rem;border:1px solid #2d393e;border-radius:8px;background:#0f1619}.relationship-list small{color:#889996}.recruit-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:.65rem}.recruit-card{display:grid;gap:.45rem;padding:.75rem;border:1px solid #354247;border-radius:11px;background:#101719}.recruit-card header{display:flex;justify-content:space-between;align-items:flex-start;gap:.55rem}.recruit-card header>div{display:grid}.recruit-card header small{color:#82918e}.recruit-card header>span{font-weight:800;color:#e3c877}.recruit-card p{margin:.1rem 0;color:#c1ccca;font-size:.76rem}.people-history{display:grid;gap:.35rem}.people-history>.analysis-subhead{margin-bottom:.2rem}.people-history>div:not(.analysis-subhead):not(.empty){display:grid;grid-template-columns:54px 1fr;gap:.55rem;padding:.45rem .55rem;border-left:2px solid #78683f;background:#101719;border-radius:7px}.people-history>div b{color:#d9be79}.loyalty-detail{background:linear-gradient(145deg,#171b19,#11191b)}
@media(max-width:900px){.people-hero{align-items:flex-start;flex-direction:column}.people-kpis{width:100%;min-width:0}.people-detail-columns{grid-template-columns:1fr}}
@media(max-width:620px){.people-kpis{grid-template-columns:1fr 1fr}.loyalty-grid,.recruit-grid{grid-template-columns:1fr}.people-detail-head{flex-direction:column}.people-detail-head button{width:100%}.loyalty-reason{grid-template-columns:36px 1fr}.loyalty-reason small{grid-column:2}.people-history>div:not(.analysis-subhead):not(.empty){grid-template-columns:44px 1fr}}

.condition-inline{color:#9fb8b2!important}.condition-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:.5rem;margin:.8rem 0 .45rem}.condition-chip{display:grid;gap:.15rem;padding:.6rem;border:1px solid #38484d;border-radius:9px;background:#0f1719}.condition-chip small{color:#82918e}.condition-chip b{color:#e0c57d}.condition-note{margin:.2rem 0 .8rem;padding:.45rem .6rem;border-left:2px solid #718a78;background:#101719}

/* Stage 37 v1.47 — Command Point tactical intervention */
.command-point-planner{display:grid;gap:.7rem;padding:1rem;margin:.8rem 0;border:1px solid #6b5f3b;border-radius:14px;background:radial-gradient(circle at 90% 0,rgba(205,174,92,.12),transparent 35%),linear-gradient(145deg,#171a17,#101719)}
.command-point-planner.disabled{opacity:.68}.command-point-head{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem}.command-point-head h3,.command-point-head h4{margin:.15rem 0}.command-point-budget{display:grid;justify-items:end;min-width:110px;padding:.55rem .7rem;border:1px solid #61583b;border-radius:10px;background:#111816}.command-point-budget strong{font-size:1.35rem;color:#edcf78}.command-point-budget small{font-size:.68rem;color:#9b9d8f}.command-point-controls{display:flex;justify-content:space-between;align-items:center;gap:.7rem;flex-wrap:wrap}.command-point-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:.5rem}.command-card{display:grid;gap:.28rem;text-align:left;padding:.65rem!important;border:1px solid #394549!important;border-radius:10px!important;background:#101719!important;color:inherit}.command-card:hover:not(:disabled){border-color:#817044!important}.command-card.active{border-color:#d4b45f!important;background:linear-gradient(145deg,#252217,#121a19)!important;box-shadow:inset 0 0 0 1px rgba(212,180,95,.18)}.command-card-title{display:flex;justify-content:space-between;gap:.4rem;align-items:center}.command-card-title b{font-size:.78rem}.command-card-title em{font-style:normal;font-size:.68rem;color:#e2c675}.command-card small{font-size:.67rem;color:#a7b0ad}.command-card p{font-size:.7rem;line-height:1.4;margin:0;color:#c0c8c5}.command-point-foot{display:block}.command-point-planner.compact{padding:.75rem}.command-point-planner.compact .command-point-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.command-point-planner.compact .command-card{padding:.5rem!important}.command-point-battle-report{padding:.85rem;border:1px solid #5b5136;border-radius:12px;background:#111817}.command-point-report-grid{display:grid;grid-template-columns:1fr 1fr;gap:.6rem}.command-point-report-side{display:grid;gap:.18rem;padding:.65rem;border:1px solid #374347;border-radius:9px;background:#0e1517}.command-point-report-side.enemy{border-color:#593e3c}.command-point-report-side strong{color:#e4c675}.command-point-report-side small{color:#9ba7a4}.command-use-list{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.6rem}.command-use-list span{padding:.3rem .45rem;border:1px solid #4c4735;border-radius:999px;background:#171a16;font-size:.68rem;color:#d8c589}
@media(max-width:1050px){.command-point-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:700px){.command-point-head{flex-direction:column}.command-point-budget{justify-items:start;width:100%}.command-point-grid,.command-point-planner.compact .command-point-grid{grid-template-columns:1fr 1fr}.command-point-report-grid{grid-template-columns:1fr}}
@media(max-width:430px){.command-point-grid,.command-point-planner.compact .command-point-grid{grid-template-columns:1fr}}


/* Stage 38 v1.48 — Dynamic historical Mission / Quest */
.missions-page{display:grid;gap:1rem}.mission-hero{display:flex;justify-content:space-between;gap:1rem;align-items:center;padding:1rem;border:1px solid #5c5137;border-radius:16px;background:linear-gradient(145deg,#1b1a16,#11191c)}.mission-hero h2{margin:.2rem 0}.mission-kpis{display:grid;grid-template-columns:repeat(4,minmax(72px,1fr));gap:.45rem;min-width:min(430px,46%)}.mission-kpis>span{display:grid;gap:.12rem;padding:.7rem;border:1px solid #394449;border-radius:10px;background:#101719}.mission-kpis small{font-size:.65rem;color:#8e9b99}.mission-kpis b{font-size:1.15rem;color:#ecd18a}.mission-section{padding:1rem;border:1px solid #344147;border-radius:14px;background:#121a1d}.mission-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:.7rem}.mission-card{display:grid;gap:.55rem;padding:.85rem;border:1px solid #344147;border-left:3px solid #8c7847;border-radius:12px;background:#101719}.mission-card.active{border-left-color:#d2b769;background:linear-gradient(145deg,#171a18,#101719)}.mission-card.diff-3{box-shadow:inset 0 0 0 1px rgba(218,178,88,.10)}.mission-card header{display:flex;justify-content:space-between;gap:.7rem;align-items:flex-start}.mission-card header>div{display:grid}.mission-card h3{margin:.1rem 0}.mission-card header small{color:#9caa9f}.mission-card p{margin:.05rem 0;color:#c9d1ce;font-size:.78rem;line-height:1.55}.mission-expire,.mission-deadline{font-size:.7rem;color:#e2c77e;white-space:nowrap}.mission-reward{padding:.48rem .55rem;border-radius:9px;background:rgba(211,174,94,.08);color:#d8c184;font-size:.72rem}.mission-progress{position:relative;height:28px;border-radius:8px;background:#0b1113;overflow:hidden;border:1px solid #2e3a3e}.mission-progress i{position:absolute;left:0;top:0;bottom:0;background:linear-gradient(90deg,#61542f,#9f8846);opacity:.7}.mission-progress small{position:relative;z-index:1;display:flex;align-items:center;height:100%;padding:0 .5rem;color:#e0e4df}.mission-actions{justify-content:flex-end}.mission-history{display:grid;gap:.35rem}.mission-history-row{display:grid;grid-template-columns:52px minmax(0,1fr) auto;gap:.6rem;padding:.48rem .55rem;border-left:2px solid #6b6244;background:#101719;border-radius:7px}.mission-history-row.completed{border-left-color:#66936f}.mission-history-row.failed,.mission-history-row.abandoned{border-left-color:#9c6255}.mission-history-row span{color:#d8be79}.mission-history-row small{color:#899794}@media(max-width:900px){.mission-hero{align-items:flex-start;flex-direction:column}.mission-kpis{width:100%;min-width:0;grid-template-columns:repeat(2,1fr)}.mission-grid{grid-template-columns:1fr}.mission-history-row{grid-template-columns:44px 1fr}.mission-history-row small{grid-column:2}}

/* Stage 39 v1.49 — Responsive information architecture / mobile-first command shell */
.stage39-shell{--shell-top:58px;--shell-sub:46px;--shell-resource:38px;padding-bottom:0}
.shell-header{position:sticky;top:0;z-index:60;background:#0d1417f7;border-bottom:1px solid #283339;box-shadow:0 7px 22px #0004;backdrop-filter:blur(14px)}
.stage39-shell .topbar{position:static;top:auto;height:var(--shell-top);grid-template-columns:auto minmax(390px,1fr) auto;padding:0 clamp(.7rem,1.5vw,1.25rem);border-bottom:0;background:transparent;backdrop-filter:none}
.stage39-shell .brand{min-width:max-content}.stage39-shell .brand small{padding-left:.1rem;color:#82908d;font-size:.63rem;font-weight:700}.primary-nav{display:flex;justify-content:center;gap:.28rem;overflow:auto}.primary-nav button{display:flex!important;align-items:center;gap:.35rem;min-height:38px;padding:.45rem .75rem!important;border:1px solid transparent!important;border-radius:9px!important;background:transparent!important;color:#9aa7a5}.primary-nav button span{font-size:.82rem;color:#baa263}.primary-nav button b{font-size:.76rem}.primary-nav button.active{color:#efd28e!important;border-color:#675b3c!important;background:#282316!important}.primary-nav button:hover:not(:disabled){transform:none!important;background:#20292c!important}
.mobile-current-tab{display:none;align-items:center;gap:.55rem;min-width:0}.mobile-current-tab>span{display:grid;place-items:center;width:34px;height:34px;border:1px solid #6a5b37;border-radius:9px;background:#241f14;color:#e4c26f;font-weight:900}.mobile-current-tab>div{display:grid;min-width:0}.mobile-current-tab b{font-size:.86rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mobile-current-tab small{font-size:.62rem;color:#8c9996}.top-menu{display:grid;place-items:center;width:36px;height:36px;padding:0;border-radius:9px;background:#172025;color:#d9c483}.stage39-shell .top-help{width:36px;height:36px;border-radius:9px}
.subbar{height:var(--shell-sub);display:grid;grid-template-columns:minmax(230px,380px) 1fr;align-items:center;gap:.8rem;padding:0 clamp(.7rem,1.5vw,1.25rem);border-top:1px solid #182126;border-bottom:1px solid #263137;background:#11191ce8}.subbar-context{display:flex;align-items:center;gap:.55rem;min-width:0}.subbar-context>div{display:grid;min-width:0}.subbar-context b{font-size:.75rem;color:#e7d8b1}.subbar-context small{font-size:.62rem;color:#879390;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.subbar-icon{display:grid;place-items:center;width:28px;height:28px;flex:none;border:1px solid #4a4937;border-radius:8px;background:#171a16;color:#cdb46e;font-size:.8rem}.secondary-nav{display:flex;justify-content:flex-end;gap:.28rem;overflow-x:auto;padding:.15rem 0}.secondary-nav button{display:flex;align-items:center;gap:.32rem;white-space:nowrap;padding:.4rem .62rem;border-color:transparent;background:transparent;border-radius:8px;color:#9ca8a5;font-size:.72rem}.secondary-nav button span{color:#927e4d}.secondary-nav button.active{border-color:#665a3b;background:#272317;color:#f0d28a}.secondary-nav button:hover:not(:disabled){transform:none;background:#20292c}
.resource-strip{min-height:var(--shell-resource);display:flex;justify-content:flex-end;gap:.35rem;padding:.28rem clamp(.7rem,1.5vw,1.25rem);overflow-x:auto;background:#0b1113;border-bottom:1px solid #1f292e}.resource-chip{display:flex;align-items:center;gap:.35rem;min-width:max-content;padding:.28rem .52rem!important;border-radius:999px!important;border-color:#2d393d!important;background:#11191c!important;color:#aab6b3!important;font-size:.66rem}.resource-chip span{display:grid;place-items:center;min-width:18px;color:#c6ad66}.resource-chip b{color:#e8e2d0}.resource-chip.active{border-color:#6b5b36!important;background:#241f14!important}.resource-chip:hover:not(:disabled){transform:none!important;border-color:#6a7879!important}

.nav-drawer-backdrop{position:fixed;inset:0;z-index:1250;display:flex;justify-content:flex-end;background:#030608c7;backdrop-filter:blur(5px)}.nav-drawer{width:min(720px,94vw);height:100%;overflow:auto;padding:1.2rem;background:linear-gradient(155deg,#182126,#0e1417 70%);border-left:1px solid #4a5150;box-shadow:-24px 0 70px #000b}.nav-drawer>header{display:flex;justify-content:space-between;gap:1rem;align-items:flex-start;padding-bottom:1rem;border-bottom:1px solid #2f3b40}.nav-drawer h2{margin:.2rem 0}.nav-drawer p{margin:.3rem 0;max-width:540px}.nav-drawer-close{width:42px;height:42px;padding:0;border-radius:50%;font-size:1.4rem}.nav-drawer-groups{display:grid;gap:.8rem;margin-top:1rem}.nav-drawer-groups>section{padding:.8rem;border:1px solid #2f3a3f;border-radius:14px;background:#11191c}.nav-drawer-groups>section.active{border-color:#6b5d3d;background:#171a17}.nav-drawer-groups h3{display:flex;gap:.45rem;align-items:center;margin:.1rem 0 .65rem;font-size:.92rem;color:#d9c58d}.nav-drawer-groups h3 span{color:#b99e59}.nav-drawer-tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.45rem}.nav-drawer-tabs button{display:grid;grid-template-columns:34px 1fr;gap:.55rem;text-align:left;align-items:center;padding:.6rem;border-color:#303d42;background:#121a1d}.nav-drawer-tabs button.active{border-color:#bd9c53;background:#282316}.nav-item-icon{display:grid;place-items:center;width:34px;height:34px;border-radius:9px;background:#20292d;color:#d2b66d}.nav-drawer-tabs button>span:last-child{display:grid;min-width:0}.nav-drawer-tabs b{font-size:.76rem}.nav-drawer-tabs small{font-size:.62rem;color:#879592;line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mobile-bottom-nav{display:none}

.interface-toggle-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.55rem;margin:.7rem 0}.interface-toggle-grid label{display:flex;align-items:center;gap:.5rem;padding:.65rem;border:1px solid #344046;border-radius:10px;background:#11191c}.interface-settings .section-head{margin-bottom:.7rem}

/* Desktop density controls: no gameplay effect */
.ui-density-compact .content{padding-top:1rem;padding-bottom:1.2rem}.ui-density-compact .hero-banner,.ui-density-compact .mission-section,.ui-density-compact .people-section,.ui-density-compact .settings-card{padding:.8rem}.ui-density-compact .kpi-grid{gap:.45rem;margin:.7rem 0 1.2rem}.ui-density-compact .kpi{padding:.65rem}.ui-density-comfortable .content{max-width:1380px}.ui-density-comfortable button{min-height:42px}.ui-density-comfortable .content{padding-top:2rem}

/* Generic Stage39 touch/readability safeguards */
.stage39-shell .content{min-height:calc(100svh - var(--shell-top) - var(--shell-sub) - var(--shell-resource))}.stage39-shell .table-wrap{overscroll-behavior-x:contain}.stage39-shell .modal{scrollbar-gutter:stable}.stage39-shell button:focus-visible,.stage39-shell input:focus-visible,.stage39-shell select:focus-visible{outline:2px solid #e0bd69;outline-offset:2px}.stage39-shell .toast{z-index:1320}

@media(max-width:1050px){
  .stage39-shell .topbar{grid-template-columns:auto 1fr auto}.primary-nav{justify-content:flex-start}.primary-nav button{padding:.4rem .55rem!important}.subbar{grid-template-columns:minmax(190px,300px) 1fr}.subbar-context small{max-width:240px}
}

@media(max-width:760px){
  :root{font-size:15px}.stage39-shell{--shell-top:54px;--shell-sub:0px;--shell-resource:42px;padding-bottom:72px}.shell-header{top:0}.stage39-shell .topbar{height:var(--shell-top);min-height:0;display:grid;grid-template-columns:auto minmax(0,1fr) auto;grid-template-rows:1fr;gap:.55rem;padding:.36rem .55rem}.stage39-shell .brand{grid-column:1;grid-row:1;padding:.2rem}.stage39-shell .brand span,.stage39-shell .brand small{display:none}.stage39-shell .brand b{width:36px;height:36px}.primary-nav,.subbar{display:none}.mobile-current-tab{display:flex}.stage39-shell .top-right{grid-column:3;grid-row:1;display:flex;gap:.28rem}.stage39-shell .top-help,.top-menu{width:36px;height:36px}.resource-strip{justify-content:flex-start;padding:.3rem .5rem;scrollbar-width:none}.resource-strip::-webkit-scrollbar{display:none}.resource-chip{flex:0 0 auto;min-height:32px}
  .stage39-shell .content{padding:.72rem .68rem 1rem;min-height:calc(100svh - var(--shell-top) - var(--shell-resource))}.mobile-bottom-nav{position:fixed;left:0;right:0;bottom:0;z-index:110;display:grid;grid-template-columns:repeat(5,1fr);height:64px;padding:5px max(6px,env(safe-area-inset-right)) max(5px,env(safe-area-inset-bottom)) max(6px,env(safe-area-inset-left));border-top:1px solid #3a4448;background:#0d1417f4;box-shadow:0 -10px 30px #0008;backdrop-filter:blur(14px)}.mobile-bottom-nav button{display:grid;place-items:center;align-content:center;gap:1px;min-width:0;min-height:52px;padding:2px;border:0;background:transparent;border-radius:9px;color:#82908d}.mobile-bottom-nav button b{font-size:1rem;color:#a89a70}.mobile-bottom-nav button span{font-size:.6rem;white-space:nowrap}.mobile-bottom-nav button.active{background:#282316;color:#f2d588}.mobile-bottom-nav button.active b{color:#f0cf7e}
  .nav-drawer{width:100vw;padding:.85rem .75rem calc(84px + env(safe-area-inset-bottom))}.nav-drawer>header{position:sticky;top:-.85rem;z-index:2;margin:-.85rem -.75rem .5rem;padding:.8rem .75rem;background:#121a1df2;backdrop-filter:blur(12px)}.nav-drawer-tabs{grid-template-columns:1fr}.nav-drawer-tabs button{min-height:58px}.nav-drawer-tabs small{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  .interface-toggle-grid{grid-template-columns:1fr}.hero-banner{padding:1rem}.hero-banner h2{margin:.35rem 0}.campaign-actions .primary{width:100%}.kpi-grid{margin:1rem 0}.target-strip{grid-template-columns:1fr 1fr}.target-card{min-height:64px}.map-shell{height:56svh;min-height:350px;border-radius:14px}.territory-panel{padding:.9rem}.map-note{font-size:.62rem;max-width:80%}.slots{padding:.65rem;gap:.55rem}.slot{padding:.65rem}.hero-grid{gap:.6rem}.hero-card{padding:.75rem;gap:.7rem}.mission-section,.people-section,.people-detail,.people-history,.compare-picker,.compare-section,.chronicle-heroes,.chronicle-timeline{padding:.75rem}.mission-grid{gap:.55rem}.mission-card{padding:.72rem}.table-wrap{margin-left:-.15rem;margin-right:-.15rem;border-radius:9px}.table-wrap table{min-width:720px}.table-wrap th,.table-wrap td{padding:.55rem .6rem}.settings-card{padding:.8rem}.settings-actions button,.settings-actions .file-btn{min-height:44px}.modal-back{padding:0;align-items:end}.modal{width:100vw;max-width:none;max-height:92svh;border-radius:18px 18px 0 0;padding:1rem .8rem calc(1rem + env(safe-area-inset-bottom));border-left:0;border-right:0;border-bottom:0}.modal-x{position:sticky;float:right;top:0;z-index:6;background:#273136}.tutorial-coach{bottom:72px}.toast{bottom:78px;max-width:calc(100vw - 24px)}
}

@media(max-width:480px){
  :root{font-size:14px}.target-strip{grid-template-columns:1fr}.kpi-grid{grid-template-columns:1fr 1fr}.resource-chip{font-size:.62rem}.resource-chip b{max-width:112px;overflow:hidden;text-overflow:ellipsis}.people-kpis,.mission-kpis,.warfront-kpis,.economy-kpis{grid-template-columns:1fr 1fr!important}.formation>header{align-items:flex-start;gap:.45rem}.slot{grid-template-columns:58px minmax(0,1fr)}.slot .hero-portrait-wrap{max-width:58px}.command-point-grid,.command-point-planner.compact .command-point-grid{grid-template-columns:1fr!important}.nav-drawer p{font-size:.72rem}.mobile-bottom-nav{height:62px}.stage39-shell{padding-bottom:70px}.tutorial-coach{bottom:70px}.toast{bottom:76px}
}

@media(hover:none) and (pointer:coarse){
  .stage39-shell button,.stage39-shell select,.stage39-shell input[type=number]{min-height:42px}.stage39-shell button:hover:not(:disabled){transform:none}.tile{width:32px;height:32px}.map-tools button{min-height:36px}
}

/* Stage39 command center — shallow path to the four most common decisions */
.command-center{margin:1rem 0;padding:.85rem;border:1px solid #394548;border-radius:14px;background:linear-gradient(145deg,#151e21,#101719)}.command-center-head{display:flex;justify-content:space-between;gap:1rem;align-items:flex-end;margin-bottom:.65rem}.command-center-head h3{margin:.15rem 0}.command-center-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.55rem}.command-center-card{display:grid;grid-template-columns:38px 1fr auto;gap:.55rem;align-items:center;text-align:left;padding:.65rem!important;border-color:#334147!important;background:#11191c!important}.command-center-card:hover:not(:disabled){transform:none!important;border-color:#756542!important;background:#1b201c!important}.command-center-icon{display:grid;place-items:center;width:38px;height:38px;border-radius:10px;background:#242116;color:#e1bf6d;font-weight:900}.command-center-copy{display:grid;min-width:0}.command-center-copy small{font-size:.6rem;color:#7f8e8b}.command-center-copy b{font-size:.8rem;color:#e5dcc4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.command-center-copy em{font-style:normal;font-size:.62rem;color:#9aa8a5;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.command-center-card>strong{font-size:1.25rem;color:#89784d}@media(max-width:980px){.command-center-grid{grid-template-columns:1fr 1fr}}@media(max-width:520px){.command-center{padding:.7rem}.command-center-head{align-items:flex-start;flex-direction:column;gap:.2rem}.command-center-grid{grid-template-columns:1fr}.command-center-card{min-height:62px}}

/* Stage 40 v1.50 - fair difficulty / AI preset controls */
.difficulty-settings select{width:min(100%,760px)}
.difficulty-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem;margin:.8rem 0}
.difficulty-grid>div{display:grid;gap:.22rem;padding:.7rem .8rem;border:1px solid #364146;border-radius:10px;background:#11191d}
.difficulty-grid b{color:#e7c976;font-size:.78rem}.difficulty-grid small{line-height:1.45}
@media(max-width:720px){.difficulty-grid{grid-template-columns:1fr}.difficulty-settings select{width:100%}}
.scenario-ai-presets{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;margin:.85rem 0 1rem;padding:.8rem;border:1px solid #3a4549;border-radius:12px;background:#11191d}.scenario-ai-presets label{display:grid;gap:.35rem;font-size:.72rem;color:#bac4c2}.scenario-ai-presets select{width:100%}@media(max-width:720px){.scenario-ai-presets{grid-template-columns:1fr}}

/* Stage 41 v1.51 - verification and balance audit */
.audit-metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:12px 0}.audit-metric-grid>div{padding:10px;border:1px solid var(--line);border-radius:10px;background:rgba(255,255,255,.025)}.audit-metric-grid b,.audit-metric-grid small{display:block}.audit-metric-grid small{margin-top:4px;color:var(--muted)}@media(max-width:760px){.audit-metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Stage42 v2.0 Final Release polish */
.final-welcome .eyebrow{letter-spacing:.16em;margin-bottom:8px}.final-lead{max-width:760px;margin:0 auto 18px;line-height:1.7}.release-chip-row{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin:0 auto 22px}.release-chip-row span{border:1px solid rgba(222,181,91,.38);background:rgba(222,181,91,.08);border-radius:999px;padding:6px 10px;font-size:.78rem;color:#e8d29a}.release-health-card .audit-metric-grid>div{min-height:68px}.danger-text{color:#ffb4a9}@media(max-width:680px){.final-lead{font-size:.92rem;line-height:1.55}.release-chip-row{gap:6px}.release-chip-row span{font-size:.7rem;padding:5px 8px}}

/* Stage43 v2.1 — Formation Presence & Logistics 2.0 */
.formation-logistics-panel{display:grid;gap:.75rem;margin:.85rem 0;padding:.9rem;border:1px solid rgba(222,181,91,.28);border-radius:13px;background:linear-gradient(145deg,rgba(41,37,24,.48),rgba(14,21,23,.92))}
.formation-logistics-panel>header{display:flex;justify-content:space-between;gap:.8rem;align-items:flex-start;flex-wrap:wrap}.formation-logistics-panel>header h4{margin:0}.formation-logistics-panel>header small{color:#97a5a6}
.formation-logistics-kpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.55rem}.formation-logistics-kpis>div{display:grid;gap:.15rem;padding:.65rem .7rem;border:1px solid rgba(255,255,255,.075);border-radius:10px;background:rgba(255,255,255,.025)}.formation-logistics-kpis small{color:#8e9a9c;font-size:.67rem}.formation-logistics-kpis b{font-size:.92rem;color:#ead18b}
.formation-logistics-list{display:grid;gap:.45rem}.formation-logistics-row{display:grid;grid-template-columns:minmax(110px,1fr) auto auto;gap:.5rem;align-items:center;padding:.58rem .65rem;border:1px solid rgba(255,255,255,.07);border-radius:10px;background:#11191c}.formation-logistics-row>span{display:grid;min-width:0}.formation-logistics-row>span b,.formation-logistics-row>span small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.formation-logistics-row>span small{color:#8f9c9d;font-size:.68rem}.formation-logistics-row>em{font-style:normal;color:#d7bd77;font-size:.73rem}
.formation-location-badge{display:inline-flex;align-items:center;gap:.28rem;margin-left:.35rem;padding:.15rem .42rem;border:1px solid rgba(213,188,114,.26);border-radius:999px;background:rgba(213,188,114,.07);font-size:.64rem;color:#d8c28a;vertical-align:middle}.formation-location-badge.returning{border-color:rgba(99,161,211,.3);color:#a9cee9}.formation-location-badge.sortied{border-color:rgba(214,126,82,.32);color:#e6aa88}
.reinforcement-controls{display:grid;grid-template-columns:minmax(100px,160px) minmax(260px,1fr) auto;gap:.5rem;align-items:end}.reinforcement-controls label{display:grid;gap:.25rem;font-size:.67rem;color:#9aa5a6}.reinforcement-controls input{width:100%}.reinforcement-quick{display:flex;gap:.3rem;flex-wrap:wrap}.reinforcement-quick .quick{padding:.42rem .56rem;font-size:.68rem}.reinforcement-quick .quick.active{outline:1px solid rgba(118,210,170,.9);box-shadow:0 0 0 2px rgba(118,210,170,.12) inset}.reinforcement-controls>small,.reinforcement-controls>.reinforcement-orders{grid-column:1/-1}.reinforcement-orders{display:grid;gap:.35rem;padding:.55rem .65rem;border-radius:9px;background:rgba(64,102,125,.08);border:1px solid rgba(91,148,181,.18)}.reinforcement-orders small{color:#9ec2d5}
.manpower-ledger{display:flex;flex-wrap:wrap;gap:.4rem .75rem;padding:.55rem .65rem;border-radius:9px;background:rgba(255,255,255,.025);font-size:.7rem}.manpower-ledger b{color:#e6c97b}.manpower-ledger .danger-text{font-weight:800}
@media(max-width:720px){.formation-logistics-kpis{grid-template-columns:1fr 1fr}.formation-logistics-row{grid-template-columns:minmax(0,1fr) auto}.formation-logistics-row>em{grid-column:1/-1}.reinforcement-controls{grid-template-columns:1fr}.formation-logistics-panel{padding:.72rem}}
@media(max-width:460px){.formation-logistics-kpis{grid-template-columns:1fr}}
/* Stage43 deployment polish */
.formation-logistics-head{display:flex;justify-content:space-between;gap:.8rem;align-items:flex-start;flex-wrap:wrap}.formation-logistics-head>div{display:grid;gap:.15rem}.formation-logistics-head small{color:#97a5a6}.formation-location{display:block;margin-top:.18rem;color:#a9b5b4;font-size:.68rem;font-weight:600;letter-spacing:.01em}.formation-title-stack{min-width:0}.formation-title-stack h3{margin-bottom:.05rem}

/* Stage44 v2.2 — Explainable Formation / Build Advisor 2.0 */
.advisor-modal{min-width:min(980px,92vw);max-width:1080px}.advisor-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}.advisor-delta{display:flex;flex-direction:column;align-items:flex-end;padding:12px 16px;border:1px solid var(--line,#39434a);border-radius:12px;background:rgba(255,255,255,.025)}.advisor-delta strong{font-size:1.35rem}.advisor-delta.positive strong,.advisor-delta.positive span{color:#8fd6a8}.advisor-delta.negative strong,.advisor-delta.negative span{color:#e7a1a1}.advisor-presets{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0 6px}.advisor-preset-desc{margin:4px 0 12px;color:var(--muted,#9eabb3)}.advisor-options{display:flex;flex-wrap:wrap;gap:16px;padding:10px 12px;border:1px solid var(--line,#39434a);border-radius:10px}.advisor-options label{display:flex;align-items:center;gap:6px}.advisor-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:14px 0}.advisor-summary-grid>div{padding:11px;border:1px solid var(--line,#39434a);border-radius:10px;display:flex;flex-direction:column;gap:3px}.advisor-summary-grid b{font-size:1.15rem}.advisor-explain{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.advisor-explain article{border:1px solid var(--line,#39434a);border-radius:12px;padding:12px;min-height:150px}.advisor-explain h3{margin-top:0;font-size:1rem}.advisor-change-row,.advisor-build-row{display:flex;flex-direction:column;padding:7px 0;border-bottom:1px solid rgba(255,255,255,.07)}.advisor-change-row:last-child,.advisor-build-row:last-child{border-bottom:0}.advisor-change-row span,.advisor-build-row small{font-size:.82rem;color:var(--muted,#9eabb3)}.advisor-notes{display:flex;flex-direction:column;gap:4px;margin:12px 0;padding:10px 12px;background:rgba(94,137,170,.09);border-radius:10px}.advisor-actions{justify-content:flex-end}.advisor-warning{padding:10px 12px;border-radius:10px;margin:12px 0;background:rgba(170,70,70,.14)}.advisor-lock-strip{display:flex;gap:4px;justify-content:center;flex-wrap:wrap;margin:3px 0 6px}.advisor-lock-strip button{font-size:.7rem;padding:3px 6px;min-height:auto}.advisor-lock-strip button.locked{border-color:#d9b56f;background:rgba(217,181,111,.13);color:#f0d69d}.advisor-unit-button{margin-left:auto;margin-right:8px}.formation>header{gap:8px;align-items:center}
@media(max-width:900px){.advisor-explain{grid-template-columns:1fr}.advisor-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.advisor-head{flex-direction:column}.advisor-delta{align-items:flex-start;width:100%}}

/* Stage46 · Conquest Choice Reward */
.conquest-choice-rewards{margin-top:16px;padding-top:14px;border-top:1px solid rgba(255,215,128,.22)}
.conquest-choice-group{margin-top:12px;padding:12px;border:1px solid rgba(255,215,128,.22);border-radius:14px;background:linear-gradient(180deg,rgba(105,76,30,.14),rgba(24,27,30,.18))}
.conquest-choice-group.claimed{border-color:rgba(101,166,127,.38);background:rgba(52,94,69,.10)}
.conquest-choice-title{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px}
.conquest-choice-title span{font-size:12px;color:var(--muted,#9da8aa)}
.conquest-choice-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.conquest-choice-card{display:flex;align-items:center;gap:10px;text-align:left;min-height:86px;padding:10px;border:1px solid rgba(255,255,255,.10);border-radius:12px;background:rgba(255,255,255,.035);color:inherit;cursor:pointer}
.conquest-choice-card:hover:not(:disabled){transform:translateY(-1px);border-color:rgba(255,215,128,.52);background:rgba(255,215,128,.06)}
.conquest-choice-card.selected{border-color:rgba(101,166,127,.75);box-shadow:0 0 0 1px rgba(101,166,127,.2) inset;background:rgba(101,166,127,.12)}
.conquest-choice-card:disabled{cursor:default;opacity:.58}.conquest-choice-card.selected:disabled{opacity:1}
.conquest-choice-card>div:last-child{display:flex;min-width:0;flex-direction:column;gap:3px}.conquest-choice-card b{font-size:15px}.conquest-choice-card small{color:var(--muted,#9da8aa);line-height:1.35}.conquest-choice-card span{font-size:12px;color:#e8c77e;font-weight:700}
@media(max-width:760px){.conquest-choice-grid{grid-template-columns:1fr}.conquest-choice-card{min-height:76px}}

/* v2.7 Stage49 - EF5S premium 5-star portrait + inherent tactic full-art cut-in */
.inherent-tactic-cutin{position:absolute;top:3%;bottom:3%;width:min(43%,430px);z-index:9;pointer-events:none;overflow:hidden;border:1px solid #d8b56a88;border-radius:18px;background:linear-gradient(145deg,#080c0edb,#182126e8);box-shadow:0 18px 48px #000d,0 0 30px #d8b56a22;isolation:isolate;animation:ef5sCutinPlayer .95s cubic-bezier(.18,.8,.2,1) both}.inherent-tactic-cutin.side-player{left:2%}.inherent-tactic-cutin.side-npc{right:2%;animation-name:ef5sCutinNpc}.inherent-cutin-art{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;object-position:center bottom;z-index:1;filter:saturate(1.08) contrast(1.05)}.inherent-tactic-cutin:after{content:"";position:absolute;inset:0;z-index:2;background:linear-gradient(180deg,transparent 42%,#07101222 57%,#071012ee 100%)}.inherent-cutin-glow{position:absolute;inset:-18%;z-index:0;background:radial-gradient(circle at 50% 45%,#d9b65a55 0,transparent 57%);animation:ef5sGlow .95s ease-out both}.inherent-cutin-copy{position:absolute;left:1rem;right:1rem;bottom:.8rem;z-index:3;display:grid;gap:.08rem;text-shadow:0 2px 8px #000}.inherent-cutin-copy small{font-size:.62rem;letter-spacing:.12em;color:#e6c96f;font-weight:900}.inherent-cutin-copy b{font-size:1rem;color:#fff5da}.inherent-cutin-copy strong{font-size:1.2rem;color:#f5d67d}.inherent-tactic-cutin.theme-martial{border-color:#d3785d}.inherent-tactic-cutin.theme-martial .inherent-cutin-glow{background:radial-gradient(circle at 54% 48%,#e355304f 0,transparent 58%)}.inherent-tactic-cutin.theme-strategy{border-color:#7fa6ca}.inherent-tactic-cutin.theme-strategy .inherent-cutin-glow{background:radial-gradient(circle at 48% 45%,#6da9e65b 0,transparent 60%)}.inherent-tactic-cutin.theme-command{border-color:#d8b56a}.inherent-tactic-cutin.theme-command .inherent-cutin-glow{background:radial-gradient(circle at 50% 45%,#e0bd6755 0,transparent 60%)}.inherent-tactic-cutin.theme-group{border-color:#ba8e69}.inherent-tactic-cutin.theme-sacred{border-color:#efe3a9;box-shadow:0 18px 48px #000d,0 0 38px #fff3ae66}.inherent-tactic-cutin.theme-sacred .inherent-cutin-glow{background:radial-gradient(circle at 50% 42%,#fff4b580 0,transparent 62%)}.battle-presentation.reduced-motion .inherent-tactic-cutin,.inherent-tactic-cutin.reduced-motion{animation:none;opacity:.94}.battle-presentation.reduced-motion .inherent-cutin-glow,.inherent-tactic-cutin.reduced-motion .inherent-cutin-glow{animation:none;opacity:.45}.quality-low .inherent-cutin-glow{display:none}.quality-low .inherent-tactic-cutin{box-shadow:0 12px 28px #000b}.quality-high .inherent-tactic-cutin{filter:drop-shadow(0 0 10px #d8b56a2d)}
@keyframes ef5sCutinPlayer{0%{opacity:0;transform:translateX(-15%) scale(.97)}18%{opacity:1;transform:translateX(0) scale(1.015)}72%{opacity:1;transform:translateX(0) scale(1)}100%{opacity:0;transform:translateX(4%) scale(1.01)}}
@keyframes ef5sCutinNpc{0%{opacity:0;transform:translateX(15%) scale(.97)}18%{opacity:1;transform:translateX(0) scale(1.015)}72%{opacity:1;transform:translateX(0) scale(1)}100%{opacity:0;transform:translateX(-4%) scale(1.01)}}
@keyframes ef5sGlow{0%{opacity:0;transform:scale(.8)}30%{opacity:1;transform:scale(1.04)}100%{opacity:.4;transform:scale(1.12)}}
@media(max-width:680px){.inherent-tactic-cutin,.inherent-tactic-cutin.side-player,.inherent-tactic-cutin.side-npc{top:4px;bottom:auto;left:13%;right:auto;width:74%;height:190px;animation-name:ef5sCutinMobile}.inherent-cutin-art{object-position:center 32%}.inherent-cutin-copy{left:.7rem;right:.7rem;bottom:.55rem}.inherent-cutin-copy strong{font-size:1rem}.inherent-cutin-copy b{font-size:.82rem}@keyframes ef5sCutinMobile{0%{opacity:0;transform:translateY(-8%) scale(.98)}18%{opacity:1;transform:none}75%{opacity:1}100%{opacity:0;transform:translateY(4%) scale(1.01)}}}

/* Stage51-3 formation bonds */
.formation-bond-box{margin:10px 0;padding:10px 12px;border:1px solid #52616a;border-radius:10px;background:rgba(15,22,27,.72);display:grid;gap:7px}.formation-bond-box.active{border-color:#a98b45;box-shadow:inset 0 0 0 1px rgba(199,164,82,.18)}.formation-bond-head{display:flex;gap:12px;justify-content:space-between;align-items:center;flex-wrap:wrap}.formation-bond-head>div{display:grid;gap:2px}.formation-bond-head select{max-width:260px}.formation-bond-effects{display:flex;gap:6px;flex-wrap:wrap}.formation-bond-effects span{font-size:.82rem;padding:4px 7px;border-radius:999px;background:rgba(181,143,62,.16);border:1px solid rgba(211,176,98,.4)}.bond-duplicate-note{color:#e6bb73}
.personal-talent-summary{border-color:#786433;background:linear-gradient(145deg,#1b1912,#12181a)}.talent-modal-head{display:grid;grid-template-columns:1fr auto;gap:1rem;align-items:start}.talent-gold{min-width:120px;display:flex;flex-direction:column;align-items:flex-end;padding:.7rem .85rem;border:1px solid #756338;border-radius:12px;background:#19170f}.talent-gold small{color:#aaa07f}.talent-gold b{font-size:1.2rem;color:#f3d785}.talent-profile{display:flex;gap:.45rem;flex-wrap:wrap;margin:.75rem 0}.talent-profile span{padding:.32rem .52rem;border:1px solid #3c4748;border-radius:999px;background:#11191b;color:#bdc9c7;font-size:.7rem}.talent-slot-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.72rem}.talent-slot{padding:.78rem;border:1px solid #3d474a;border-radius:13px;background:#11181a;min-width:0}.talent-slot.selected{border-color:#756238;box-shadow:0 0 0 1px #4e4228 inset}.talent-slot.locked{opacity:.68}.talent-slot header{display:flex;justify-content:space-between;gap:.6rem;align-items:flex-start}.talent-slot header h3{margin:.1rem 0 .4rem}.talent-selected-card{padding:.6rem;border-radius:9px;background:#19180f;border:1px solid #665831}.talent-selected-card b{color:#efd58d}.talent-selected-card p{font-size:.72rem;line-height:1.45}.talent-selected-card .warn{color:#d9b278}.talent-candidates{display:grid;gap:.48rem;margin:.6rem 0}.talent-candidate{text-align:left;display:grid;gap:.28rem;padding:.58rem;border:1px solid #374346;background:#0d1416;border-radius:9px}.talent-candidate:hover{border-color:#70623d}.talent-candidate.recommended{border-color:#8b7541;box-shadow:0 0 0 1px #6d5d37 inset}.talent-candidate-top{display:flex;align-items:center;gap:.4rem}.talent-candidate-top b{color:#e7d8a7}.talent-candidate-top em{font-style:normal;font-size:.64rem;color:#aeb9b6}.talent-candidate-top strong{margin-left:auto;font-size:.62rem;color:#f0ca6c}.talent-candidate small{font-size:.67rem;line-height:1.4;color:#aeb9b6}.talent-actions{align-items:center;justify-content:space-between;gap:.55rem;flex-wrap:wrap}.talent-actions small{font-size:.64rem;max-width:270px}.talent-rule-note{margin-top:.75rem}.talent-rule-note p{font-size:.7rem}.stage51-effect{color:#dfc87b}
@media(max-width:980px){.talent-slot-grid{grid-template-columns:1fr}.talent-modal-head{grid-template-columns:1fr}.talent-gold{align-items:flex-start;min-width:0}}

/* Stage51-5 Turn0 starter choice */
.starter-choice-backdrop{z-index:190;background:#04070be8;backdrop-filter:blur(12px)}
.starter-choice-gate{width:min(1040px,96vw);max-height:94vh;overflow:auto;padding:clamp(1rem,3vw,2rem);border:1px solid #8b7240;border-radius:24px;background:radial-gradient(circle at 80% 0,#49381855,transparent 32%),linear-gradient(150deg,#202a2f,#0f1518 70%);box-shadow:0 32px 100px #000e}
.starter-choice-head{display:flex;justify-content:space-between;gap:1rem;align-items:flex-start;margin-bottom:1.1rem}.starter-choice-head h2{margin:.25rem 0}.starter-choice-head p{max-width:720px;line-height:1.55}
.starter-choice-seal{flex:0 0 64px;width:64px;height:64px;display:grid;place-items:center;border:1px solid #deb95e;border-radius:18px;transform:rotate(45deg);background:#392b17;color:#f4d789;font:900 27px Georgia}.starter-choice-seal::first-letter{transform:rotate(-45deg)}
.starter-choice-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.8rem}
.starter-choice-card{position:relative;display:grid;grid-template-rows:180px 1fr;min-width:0;padding:0;overflow:hidden;text-align:left;border:1px solid #3e4d54;border-radius:18px;background:linear-gradient(180deg,#182226,#101619);color:#e8efed;transition:transform .14s,border-color .14s,box-shadow .14s}.starter-choice-card:hover{transform:translateY(-2px);border-color:#857044}.starter-choice-card.selected{border-color:#e5bf61;box-shadow:0 0 0 2px #e5bf6133,0 14px 36px #0008}.starter-choice-visual{display:grid;place-items:center;overflow:hidden;background:radial-gradient(circle,#2d363a,#101518 72%)}.starter-choice-visual img{width:100%;height:100%;object-fit:cover}.starter-choice-body{padding:.9rem;display:flex;flex-direction:column;gap:.45rem}.starter-choice-body h3{margin:0;color:#f1d890}.starter-choice-body p{margin:.1rem 0;color:#c2cecb;line-height:1.5;font-size:.8rem}.starter-choice-body .tags{display:flex;flex-wrap:wrap;gap:.3rem}.starter-choice-body .tags span{font-size:.65rem}.starter-choice-type{font-weight:900;letter-spacing:.12em;color:#bda25f}.starter-choice-mark{position:absolute;right:12px;top:12px;width:34px;height:34px;display:grid;place-items:center;border-radius:50%;background:#e3bd5d;color:#1b160b;font:900 16px Georgia;box-shadow:0 4px 15px #0008}.starter-choice-notice{display:flex;gap:.6rem;justify-content:center;flex-wrap:wrap;margin:1rem 0 .75rem;padding:.7rem;border:1px solid #534a34;border-radius:10px;background:#171a16;color:#bfc7bd}.starter-choice-notice b{color:#ebcc7d}.starter-choice-actions{display:flex;justify-content:center;gap:.6rem;margin:.8rem 0}
@media(max-width:860px){.starter-choice-grid{grid-template-columns:1fr}.starter-choice-card{grid-template-columns:120px 1fr;grid-template-rows:auto;min-height:150px}.starter-choice-visual{min-height:150px}.starter-choice-head{align-items:center}.starter-choice-seal{width:50px;height:50px;flex-basis:50px;font-size:22px}}
@media(max-width:520px){.starter-choice-gate{width:100vw;max-height:100vh;min-height:100vh;border-radius:0;padding:.75rem}.starter-choice-head p{font-size:.76rem}.starter-choice-card{grid-template-columns:96px 1fr;min-height:130px}.starter-choice-visual{min-height:130px}.starter-choice-body{padding:.7rem}.starter-choice-body p{font-size:.72rem}.starter-choice-actions{position:sticky;bottom:0;padding:.55rem;background:#0f1518ee}.starter-choice-actions .big{flex:1}}
.advisor-stage51{margin:12px 0;padding:12px;border:1px solid rgba(110,170,210,.32);border-radius:12px;background:rgba(74,128,164,.08)}.advisor-stage51-head{display:flex;justify-content:space-between;align-items:flex-end;gap:12px}.advisor-stage51-head>div{display:flex;flex-direction:column;gap:2px}.advisor-stage51-head strong{font-size:1.15rem}.advisor-stage51-head .positive{color:#8fd6a8}.advisor-stage51-head .negative{color:#e7a1a1}.advisor-stage51 .advisor-summary-grid{grid-template-columns:repeat(5,minmax(0,1fr));margin:10px 0}.advisor-stage51-bonds{display:flex;flex-wrap:wrap;gap:6px 12px;color:var(--muted,#9eabb3)}
@media(max-width:900px){.advisor-stage51 .advisor-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.advisor-stage51-head{align-items:flex-start;flex-direction:column}}

/* Stage 52 — permanent player battle archive */
.battle-archive-page{display:grid;gap:1rem}.battle-archive-hero{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:1.2rem 1.35rem;border:1px solid #3a464b;border-radius:16px;background:linear-gradient(135deg,#1d292d,#141b1e)}.battle-archive-hero h2{margin:.25rem 0}.battle-archive-kpis{display:grid;grid-template-columns:repeat(4,minmax(78px,1fr));gap:.45rem;min-width:min(440px,46vw)}.battle-archive-kpis span{display:flex;flex-direction:column;gap:.15rem;padding:.6rem .7rem;border:1px solid #354247;border-radius:9px;background:#101719}.battle-archive-kpis small{color:#879592}.battle-archive-kpis b{font-size:1.05rem;color:#edd08d}.battle-archive-filters{display:grid;grid-template-columns:180px 150px 190px 1fr;gap:.6rem;align-items:center}.battle-archive-wrap{max-height:68vh}.battle-archive-table{font-size:.76rem}.battle-archive-table td{vertical-align:middle}.battle-archive-table td:nth-child(3){white-space:normal;min-width:240px}.battle-archive-table td:nth-child(3)>small{display:block}.battle-archive-table tr.archive-win{box-shadow:inset 3px 0 #4e876a}.battle-archive-table tr.archive-loss{box-shadow:inset 3px 0 #92544e}.archive-status{display:inline-block;padding:.18rem .38rem;border:1px solid #425258;border-radius:999px;font-size:.67rem}.archive-status.full{border-color:#51745f;color:#9bc0a7}.archive-status.summary_only_legacy{border-color:#756a4e;color:#d0be8a}.archive-status.no_combat{border-color:#526472;color:#9ab2c2}.archive-status.error{border-color:#7c4947;color:#dc8e88}
@media(max-width:760px){.battle-archive-hero{align-items:stretch;flex-direction:column}.battle-archive-kpis{width:100%;min-width:0}.battle-archive-filters{grid-template-columns:1fr 1fr}.battle-archive-filters small{grid-column:1/-1}.battle-archive-table{min-width:850px}}

/* Stage55 whole-formation edit lock / batch talent preview */
.formation.whole-locked{border-color:#8b7244;box-shadow:inset 0 0 0 1px rgba(216,181,106,.18)}
.formation.whole-locked>header{background:linear-gradient(135deg,#2a261d,#20282b)}
.formation-slot-locked{background:#151817;border-color:#554a35}
.formation-slot-locked .troop-edit input:disabled,.formation.whole-locked select:disabled{opacity:.55}
.talent-bulk-preview{display:grid;gap:.85rem;min-width:min(760px,88vw)}
.talent-bulk-preview .analysis-box{max-height:46vh;overflow:auto;display:grid;gap:.35rem}
.talent-bulk-preview .analysis-row{display:flex;justify-content:space-between;gap:1rem;align-items:center;padding:.55rem .7rem;border:1px solid rgba(255,255,255,.08);border-radius:9px;background:#101719}
.talent-bulk-preview .analysis-row span{color:#b9c4c0;font-size:.78rem;text-align:right}
@media(max-width:680px){.talent-bulk-preview{min-width:0}.talent-bulk-preview .analysis-row{align-items:flex-start;flex-direction:column}.talent-bulk-preview .analysis-row span{text-align:left}}

/* Stage 56 v2.14 — world-turn playback state + exact stored battle analysis */
.world-turn-head-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:7px}.world-turn-head-actions select{min-width:138px}.world-turn-speed{display:flex;gap:4px;padding:3px;border:1px solid rgba(255,255,255,.08);border-radius:9px;background:rgba(0,0,0,.18)}.world-turn-speed button{min-width:38px;padding:.36rem .5rem}.world-turn-speed button.active{border-color:#d8be72;color:#f3dda0;background:#4a3b19}.world-turn-kpis.stage56{grid-template-columns:repeat(4,minmax(0,1fr))}
.world-turn-route.player-attack line{stroke:#64aee5}.world-turn-route.player-attack circle{stroke:#9fd0f3}.world-turn-route.player-defense line{stroke:#df786d}.world-turn-route.player-defense circle{stroke:#f2aaa2}.world-turn-route.neutral line{stroke:#8798a1}.world-turn-route.active line{stroke-width:5;filter:drop-shadow(0 0 4px #fff8)}.world-turn-route-overflow{position:absolute;left:10px;bottom:10px;max-width:55%;padding:5px 8px;border-radius:8px;background:rgba(6,9,10,.84);border:1px solid rgba(255,255,255,.09);color:#bac4ca}
.world-turn-error{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 12px;border:1px solid rgba(221,110,97,.45);border-radius:10px;background:rgba(93,32,26,.25)}.world-turn-error b{color:#f0a097}.world-turn-error span{flex:1;min-width:220px;font-size:.78rem}
.world-turn-event-browser{display:grid;gap:8px;border:1px solid rgba(255,255,255,.09);border-radius:13px;padding:10px;background:rgba(0,0,0,.13)}.world-turn-event-browser-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.world-turn-event-list{display:grid;gap:5px}.world-turn-event-row{width:100%;display:grid;grid-template-columns:52px minmax(0,1fr) auto;align-items:center;gap:8px;text-align:left;padding:8px 9px;border:1px solid rgba(255,255,255,.07);border-radius:9px;background:rgba(255,255,255,.025)}.world-turn-event-row.player-attack{border-left:4px solid #64aee5}.world-turn-event-row.player-defense{border-left:4px solid #df786d}.world-turn-event-row.neutral{border-left:4px solid #8798a1}.world-turn-event-row.active{border-color:#e0c477;background:rgba(224,196,119,.09);box-shadow:inset 0 0 0 1px rgba(224,196,119,.18)}.world-turn-order{font-weight:900;color:#dcc67d;font-variant-numeric:tabular-nums}.world-turn-event-copy{display:grid;min-width:0}.world-turn-event-copy b,.world-turn-event-copy small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.world-turn-event-copy small{font-size:.7rem;color:#9dabb2}.world-turn-event-tags{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end}.world-turn-event-tags em{font-style:normal;font-size:.65rem;padding:3px 6px;border:1px solid rgba(255,255,255,.11);border-radius:999px;color:#bec9cd;background:rgba(0,0,0,.16)}
.world-turn-selected{display:grid;gap:7px;margin-top:3px;padding:11px;border:1px solid rgba(255,255,255,.1);border-radius:11px;background:linear-gradient(150deg,rgba(255,255,255,.035),rgba(0,0,0,.08))}.world-turn-selected.player-attack{border-left:4px solid #64aee5}.world-turn-selected.player-defense{border-left:4px solid #df786d}.world-turn-selected-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.world-turn-selected h3{margin:2px 0}.world-turn-selected p{margin:0;font-size:.78rem;line-height:1.45}.world-turn-selected-meta{display:flex;flex-wrap:wrap;gap:5px}.world-turn-selected-meta span{font-size:.68rem;padding:4px 7px;border-radius:7px;background:rgba(255,255,255,.04)}.world-turn-paused-actions{display:flex;align-items:center;justify-content:flex-end;gap:7px;padding:8px 10px;border:1px solid rgba(230,199,122,.22);border-radius:10px;background:rgba(230,199,122,.06)}.world-turn-paused-actions b{margin-right:auto;color:#ead087}
.world-turn-progress.stage56 i{animation:none;transform:scaleX(var(--world-turn-progress-start,0))}.world-turn-progress.stage56.playing i{animation:worldTurnProgress56 var(--world-turn-remaining,5000ms) linear forwards}@keyframes worldTurnProgress56{from{transform:scaleX(var(--world-turn-progress-start,0))}to{transform:scaleX(1)}}
.world-turn-analysis-backdrop{z-index:1210}.world-turn-analysis-overlay{width:min(1220px,97vw);max-height:96vh;overflow:auto;border:1px solid rgba(230,199,122,.48);border-radius:18px;background:linear-gradient(160deg,#10181a,#0b0f11 58%,#17130b);box-shadow:0 30px 100px #000;padding:18px;display:grid;gap:12px}.world-turn-analysis-head{position:sticky;top:-18px;z-index:4;display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:18px;margin:-18px -18px 0;background:rgba(10,14,15,.97);border-bottom:1px solid rgba(255,255,255,.08);backdrop-filter:blur(7px)}.world-turn-analysis-head h2{margin:2px 0 4px}.world-turn-analysis-head p{margin:0}.world-turn-analysis-body{display:grid;gap:12px}.danger-text{color:#ef9288!important}
@media(max-width:760px){.world-turn-head-actions,.world-turn-analysis-head{width:100%;align-items:stretch;flex-direction:column}.world-turn-head-actions select{width:100%}.world-turn-speed{justify-content:space-between}.world-turn-kpis.stage56{grid-template-columns:1fr 1fr}.world-turn-event-row{grid-template-columns:42px minmax(0,1fr)}.world-turn-event-tags{grid-column:2;justify-content:flex-start}.world-turn-selected-head{flex-direction:column}.world-turn-route-overflow{position:static;display:block;max-width:none;margin:8px}.world-turn-analysis-overlay{width:100%;padding:12px}.world-turn-analysis-head{top:-12px;margin:-12px -12px 0;padding:12px}.world-turn-paused-actions{justify-content:stretch;flex-wrap:wrap}.world-turn-paused-actions b{width:100%;margin:0}.world-turn-paused-actions button{flex:1}}
@media(prefers-reduced-motion:reduce){.world-turn-progress.stage56.playing i{animation-duration:var(--world-turn-remaining,5000ms)!important;animation-iteration-count:1!important}.world-turn-progress.stage56.paused i{animation:none!important}}

/* Stage59 AV1-AV3 — file audio, battle sprites, VFX, celebration panels */
.av-battlefield{background-position:center!important;background-size:cover!important}.battle-unit{grid-template-columns:minmax(138px,168px) 1fr}.battle-unit-figures{display:flex;align-items:flex-end;justify-content:center;gap:4px;min-width:0;position:relative}.battle-unit-figures .hero-portrait-wrap{flex:0 0 auto}.av-troop-sprite{width:86px;height:72px;object-fit:contain;filter:drop-shadow(0 5px 4px #0009);transform-origin:50% 85%;user-select:none;pointer-events:none}.troop-type-label{display:inline-block;margin-top:2px;padding:1px 5px;border:1px solid #536269;border-radius:999px;background:#10181b}.battle-unit.melee-advance.side-player .av-troop-sprite{animation:avMeleePlayer .62s ease-in-out both}.battle-unit.melee-advance.side-npc .av-troop-sprite{animation:avMeleeNpc .62s ease-in-out both}.battle-unit.ranged-fire .av-troop-sprite{animation:avRangedRecoil .5s ease-out both}.battle-unit.target .av-troop-sprite{animation:avHit .42s ease-out both}.battle-unit.dead .av-troop-sprite{transform:rotate(8deg) translateY(7px);opacity:.65}.av-vfx-overlay{position:absolute;left:50%;top:47%;width:148px;height:148px;transform:translate(-50%,-50%);object-fit:contain;z-index:7;pointer-events:none;filter:drop-shadow(0 0 18px #fff5);animation:avFxPop .55s ease-out both}.av-arrow-projectile{position:absolute;top:48%;width:105px;height:55px;object-fit:contain;z-index:8;pointer-events:none}.av-arrow-projectile.side-player{left:18%;animation:avArrowRight .58s ease-in both}.av-arrow-projectile.side-npc{right:18%;transform:scaleX(-1);animation:avArrowLeft .58s ease-in both}.fast4-policy{display:block;padding:0 1rem .45rem;color:#d4bb7a}.cinematic-celebration-panel{display:block;width:min(520px,76vw);max-height:220px;object-fit:contain;margin:-.7rem auto .7rem;filter:drop-shadow(0 14px 28px #000b)}.audio-toggle-grid{gap:.8rem!important}.audio-mix-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem}.low-spec-av .av-vfx-overlay,.low-spec-av .av-arrow-projectile{display:none}.low-spec-av .av-troop-sprite{animation:none!important}.low-spec-av .vfx-spark,.low-spec-av .vfx-ring,.low-spec-av .impact-cinematic-layer{display:none!important}
@keyframes avMeleePlayer{0%,100%{transform:translateX(0) scale(1)}44%{transform:translateX(24px) scale(1.06)}58%{transform:translateX(30px) scale(.99)}}@keyframes avMeleeNpc{0%,100%{transform:translateX(0) scale(1)}44%{transform:translateX(-24px) scale(1.06)}58%{transform:translateX(-30px) scale(.99)}}@keyframes avRangedRecoil{0%,100%{transform:translateX(0) rotate(0)}42%{transform:translateX(-7px) rotate(-2deg)}}@keyframes avHit{0%,100%{transform:translateX(0)}35%{transform:translateX(7px) rotate(2deg)}62%{transform:translateX(-4px)}}@keyframes avFxPop{0%{opacity:0;transform:translate(-50%,-50%) scale(.45)}35%{opacity:1;transform:translate(-50%,-50%) scale(1.1)}100%{opacity:0;transform:translate(-50%,-50%) scale(1.25)}}@keyframes avArrowRight{0%{left:18%;opacity:.4}20%{opacity:1}100%{left:71%;opacity:.9}}@keyframes avArrowLeft{0%{right:18%;opacity:.4}20%{opacity:1}100%{right:71%;opacity:.9}}
@media(max-width:1000px){.battle-unit{grid-template-columns:minmax(110px,135px) 1fr}.av-troop-sprite{width:70px;height:60px}}
@media(max-width:680px){.battle-unit{grid-template-columns:1fr}.battle-unit-figures{gap:0}.av-troop-sprite{width:64px;height:54px}.audio-mix-grid{grid-template-columns:1fr}.cinematic-celebration-panel{width:min(440px,82vw);max-height:170px}.av-arrow-projectile{width:72px;height:42px}}
@media(prefers-reduced-motion:reduce){.av-troop-sprite,.av-vfx-overlay,.av-arrow-projectile{animation:none!important}}

/* Stage61 generated graphics integration */
.generated-sheet-visual{position:relative;isolation:isolate}.generated-sheet-cell{display:block;position:relative;z-index:2;background-color:transparent;border:1px solid #725f45;box-shadow:0 7px 18px #0007;overflow:hidden}.generated-sheet-fallback{position:absolute!important;left:0!important;top:0!important;z-index:1!important;opacity:1!important;pointer-events:none!important;object-fit:contain!important}.equipment-sheet-cell{width:148px;aspect-ratio:4/3;border-radius:10px}.item-visual.compact .equipment-sheet-cell{width:58px;border-radius:7px}.mount-sheet-cell{width:170px;aspect-ratio:2/3;border-radius:12px}.mount-visual.compact .mount-sheet-cell{width:48px;border-radius:8px}.generated-troop-cluster{position:relative;width:128px;height:82px;flex:0 0 128px;overflow:visible;filter:drop-shadow(0 5px 5px #000b);transform-origin:50% 80%}.generated-soldier-clone{position:absolute;left:50%;top:0;width:46px;height:68px;object-fit:cover;object-position:center 28%;border-radius:6px;border:1px solid #947b55;background:#cfc0aa;box-shadow:0 4px 10px #0009;transform:translate(calc(-50% + var(--clone-x)),var(--clone-y)) scale(.82);z-index:var(--clone-z);user-select:none;pointer-events:none}.visual-cavalry .generated-soldier-clone{width:50px;object-position:center 35%}.visual-guard .generated-soldier-clone{border-color:#8f7048}.battle-unit.melee-advance.side-player .generated-troop-cluster{animation:avMeleePlayer .62s ease-in-out both}.battle-unit.melee-advance.side-npc .generated-troop-cluster{animation:avMeleeNpc .62s ease-in-out both}.battle-unit.ranged-fire .generated-troop-cluster{animation:avRangedRecoil .5s ease-out both}.battle-unit.target .generated-troop-cluster{animation:avHit .42s ease-out both}.battle-unit.dead .generated-troop-cluster{opacity:.25;filter:grayscale(1)}.low-spec-av .generated-troop-cluster{animation:none!important}.low-spec-av .generated-soldier-clone{box-shadow:0 2px 5px #0008}
@media(max-width:1000px){.generated-troop-cluster{width:108px;flex-basis:108px}.generated-soldier-clone{width:39px;height:60px}.equipment-sheet-cell{width:128px}.mount-sheet-cell{width:150px}}
@media(max-width:680px){.generated-troop-cluster{width:96px;height:78px;flex-basis:96px;margin:auto}.generated-soldier-clone{width:34px;height:54px}.equipment-sheet-cell{width:112px}.mount-sheet-cell{width:132px}.item-visual.compact .equipment-sheet-cell{width:50px}.mount-visual.compact .mount-sheet-cell{width:44px}}
@media(prefers-reduced-motion:reduce){.generated-troop-cluster{animation:none!important}}

/* Stage62 territory delegation + recruitment */
.territory-governance{margin-top:12px;padding:12px;border:1px solid var(--line,#3b4657);border-radius:12px;background:rgba(15,22,32,.72)}
.territory-governance.delegated{outline:1px solid rgba(202,163,79,.55)}
.territory-wallet-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:10px 0}
.territory-wallet-grid>span{display:flex;justify-content:space-between;gap:8px;padding:7px 9px;border-radius:8px;background:rgba(255,255,255,.04)}
.territory-recruit-controls{display:flex;flex-wrap:wrap;align-items:center;gap:7px;margin-top:9px}
.territory-recruit-controls input{width:110px}
.delegation-policy{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.delegation-policy select{min-width:120px}
@media(max-width:720px){.territory-wallet-grid{grid-template-columns:1fr}.territory-recruit-controls input{width:100%}}
/* Stage63 Governor / delegation performance */
.governor-assignment,.delegation-report{margin-top:10px;padding:10px;border:1px solid rgba(255,255,255,.09);border-radius:10px;background:rgba(255,255,255,.025)}
.governor-head,.delegation-report-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.governor-head>div{display:flex;flex-direction:column;gap:2px}
.governor-select{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:8px 0}
.governor-select select{min-width:min(100%,320px);max-width:100%}
.governor-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;margin:8px 0}
.governor-kpis>span{display:flex;flex-direction:column;gap:2px;padding:7px 8px;border-radius:8px;background:rgba(255,255,255,.04)}
.governor-kpis small{opacity:.7}
.delegation-report-kpis{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0}
.delegation-report-kpis>span{padding:5px 7px;border-radius:999px;background:rgba(255,255,255,.05);font-size:.86em}
.delegation-report-list{display:flex;flex-direction:column;gap:6px}
.delegation-report-row{display:grid;grid-template-columns:minmax(90px,.55fr) minmax(180px,1.2fr) minmax(220px,2fr);gap:8px;align-items:start;padding:7px 8px;border-radius:8px;background:rgba(0,0,0,.14)}
.delegation-report-row small{opacity:.72}
.warning-text{color:#e6b960}
@media(max-width:720px){.governor-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.delegation-report-row{grid-template-columns:1fr}.governor-select{align-items:stretch}.governor-select select{width:100%}}

/* Stage64: HQ -> local treasury allocation UX */
.territory-budget-controls{display:grid;grid-template-columns:auto minmax(110px,150px) minmax(130px,170px) minmax(230px,1fr) auto;gap:7px;align-items:end;margin-top:9px;padding:9px 10px;border:1px solid rgba(215,178,103,.18);border-radius:10px;background:rgba(79,61,30,.10)}
.territory-budget-controls>b{align-self:center;color:#d6c190;font-size:.75rem}.territory-budget-controls label{display:grid;gap:3px;font-size:.67rem;color:#aeb7b7}.territory-budget-controls input{width:100%}.territory-budget-controls>small{grid-column:1/-1}.territory-budget-controls .reinforcement-quick{align-self:end}
@media(max-width:900px){.territory-budget-controls{grid-template-columns:1fr 1fr}.territory-budget-controls>b,.territory-budget-controls .reinforcement-quick,.territory-budget-controls>small{grid-column:1/-1}.territory-budget-controls button.primary{width:100%}}

/* Stage65 — cinematic battlefield replay / fixed 6-slot formation */
.stage65-battle-presentation{width:min(1480px,calc(100vw - 28px));max-width:none;margin-left:50%;transform:translateX(-50%);overflow:visible;box-shadow:0 18px 52px #0009,0 0 0 1px #9a7d4230}
.stage65-battle-head{background:linear-gradient(90deg,#151e22,#283238 45%,#151e22);border-bottom-color:#7a693e66}
.stage65-battle-head>div{display:grid;gap:2px}.stage65-field-summary{display:block;color:#d6c38e;font-size:.72rem;font-weight:600;letter-spacing:.02em}
.stage65-field-scroll{width:100%;overflow-x:auto;overflow-y:hidden;background:#070b0d;scrollbar-width:thin;scrollbar-color:#887044 #111;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch}
.stage65-battlefield{display:grid!important;grid-template-columns:repeat(6,minmax(158px,1fr))!important;grid-template-rows:1fr!important;align-items:center!important;gap:clamp(7px,1vw,15px)!important;min-width:1120px;min-height:610px;padding:105px 22px 132px!important;background-position:center!important;background-size:cover!important;isolation:isolate;overflow:hidden}
.stage65-battlefield:before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,rgba(26,73,60,.13),transparent 42% 58%,rgba(89,34,31,.14)),radial-gradient(ellipse at center 78%,rgba(0,0,0,.05),rgba(0,0,0,.38) 82%);pointer-events:none}
.stage65-battlefield:after{z-index:-1;background:linear-gradient(180deg,#0006 0%,transparent 24%,transparent 65%,#000b 100%)}
.stage65-battlefield .stage65-unit{position:relative;display:grid!important;grid-template-columns:1fr!important;grid-template-rows:auto 126px auto!important;align-items:stretch;gap:4px!important;min-width:0;padding:7px 8px 8px!important;border:1px solid #67746f88;border-radius:14px;background:linear-gradient(180deg,#0a1013d4,#11191de6);backdrop-filter:blur(3px);box-shadow:0 12px 24px #0008;transform:none!important;transition:border-color .16s,box-shadow .16s,opacity .2s}
.stage65-battlefield .stage65-unit.side-player{border-color:#628b7d8f}.stage65-battlefield .stage65-unit.side-npc{border-color:#98645e8f}
.stage65-battlefield .stage65-unit.slot-1{margin-bottom:6px;box-shadow:0 15px 30px #0009,0 0 24px #d8b56a18}.stage65-battlefield .stage65-unit.slot-3{margin-top:12px;opacity:.96}
.stage65-battlefield .stage65-unit.damage-actor{border-color:#e6c467;box-shadow:0 0 0 2px #d9ba6d55,0 0 28px #d9ba6d55,0 12px 24px #0008}
.stage65-battlefield .stage65-unit.damage-target{border-color:#ec776b;box-shadow:0 0 0 2px #ec776b55,0 0 30px #d54c445f,0 12px 24px #0008}
.stage65-battlefield .stage65-unit.evade-target{border-color:#80b8d3;box-shadow:0 0 24px #6bb5dd55}.stage65-battlefield .stage65-unit.support-target{border-color:#77bb8d;box-shadow:0 0 24px #62bd8655}
.stage65-battlefield .stage65-unit.dead{filter:grayscale(.82);opacity:.35!important;transform:none!important}.stage65-battlefield .stage65-unit.dead:after{content:"전멸";position:absolute;inset:0;display:grid;place-items:center;z-index:80;color:#ddd;font-weight:950;font-size:1.02rem;letter-spacing:.15em;background:#0a0d0e4d;border-radius:inherit;text-shadow:0 2px 4px #000}
.stage65-slot-label{justify-self:center;margin-top:-21px;margin-bottom:2px;padding:2px 9px;border:1px solid #9d8a5b7a;border-radius:999px;background:#0a0f11e8;color:#e7d5a4;font-size:.66rem;font-weight:900;letter-spacing:.08em;white-space:nowrap;box-shadow:0 4px 10px #0006}
.stage65-battlefield .battle-unit-figures{position:relative;display:block!important;width:100%;height:126px;min-width:0;overflow:visible}
.stage65-battlefield .battle-unit-figures .hero-portrait-wrap{position:absolute;top:0;z-index:16;filter:drop-shadow(0 8px 10px #000b)}
.stage65-battlefield .side-player .battle-unit-figures .hero-portrait-wrap{left:0}.stage65-battlefield .side-npc .battle-unit-figures .hero-portrait-wrap{right:0}
.stage65-battlefield .stage65-troop-cluster{position:absolute!important;bottom:0;width:112px!important;height:86px!important;flex-basis:112px!important;filter:drop-shadow(0 7px 5px #000b);z-index:22}
.stage65-battlefield .side-player .stage65-troop-cluster{right:-3px}.stage65-battlefield .side-npc .stage65-troop-cluster{left:-3px}
.stage65-battlefield .generated-soldier-clone{display:none!important}
.stage65-transparent-troop{display:block;position:absolute;bottom:0;width:72px;height:72px;object-fit:contain;filter:drop-shadow(0 4px 4px #000c);user-select:none;pointer-events:none;transform-origin:50% 82%}
.stage65-transparent-troop.tf-1{left:-5px;bottom:-2px;z-index:25;transform:scale(.98)}.stage65-transparent-troop.tf-2{left:18px;bottom:10px;z-index:22;transform:scale(.80);opacity:.88}.stage65-transparent-troop.tf-3{left:38px;bottom:-3px;z-index:26;transform:scale(1)}.stage65-transparent-troop.tf-4{left:54px;bottom:12px;z-index:21;transform:scale(.74);opacity:.82}.stage65-transparent-troop.tf-5{left:66px;bottom:-1px;z-index:24;transform:scale(.90);opacity:.94}
.stage65-battlefield .side-npc .stage65-transparent-troop.tf-1{left:45px}.stage65-battlefield .side-npc .stage65-transparent-troop.tf-2{left:26px}.stage65-battlefield .side-npc .stage65-transparent-troop.tf-3{left:8px}.stage65-battlefield .side-npc .stage65-transparent-troop.tf-4{left:-8px}.stage65-battlefield .side-npc .stage65-transparent-troop.tf-5{left:-20px}
.stage65-battlefield .battle-unit-meta{display:grid;gap:1px;align-content:start;min-width:0}.stage65-battlefield .battle-unit-meta b{text-align:center;font-size:.82rem;color:#f3ead8}.stage65-battlefield .troop-type-label{justify-self:center;font-size:.61rem}.stage65-battlefield .troop-bar{height:9px;margin:4px 0 1px;border:1px solid #ffffff14;background:#070a0c}.stage65-battlefield .stage65-hp-number{display:block;text-align:center!important;color:#f1eee5!important;font:800 .7rem/1.2 ui-monospace,Consolas,monospace!important;white-space:nowrap}
.stage65-battlefield .stage65-empty{opacity:.24!important;border-style:dashed;place-content:center;text-align:center;min-height:190px}.stage65-battlefield .stage65-empty span{font-size:.68rem}
.stage65-battlefield .damage-target .stage65-troop-cluster,.stage65-battlefield .damage-target .hero-portrait-wrap{animation:stage65TargetHit .42s ease-out both}.stage65-battlefield .evade-target .stage65-troop-cluster{animation:stage65Evade .48s ease-out both}.stage65-battlefield .support-target:before{content:"";position:absolute;inset:4px;border-radius:11px;box-shadow:inset 0 0 22px #61c68534;pointer-events:none}
.stage65-action-layer{position:absolute;inset:0;z-index:28;pointer-events:none;overflow:hidden}.stage65-melee-runner{position:absolute;left:var(--from-x);top:53%;width:120px;height:92px;transform:translate(-50%,-50%);filter:drop-shadow(0 10px 7px #000d);animation:stage65MeleeTravel .72s cubic-bezier(.22,.75,.25,1) both}.stage65-melee-runner img{width:100%;height:100%;object-fit:contain}.stage65-melee-runner.troop-C{width:146px;height:106px;animation-duration:.66s}
.stage65-projectile{position:absolute;left:var(--from-x);top:50%;width:112px;height:52px;object-fit:contain;transform:translate(-50%,-50%);filter:drop-shadow(0 0 9px #f2d48b);animation:stage65ArrowTravel .58s cubic-bezier(.2,.74,.28,1) both}.stage65-projectile.side-npc{transform:translate(-50%,-50%) scaleX(-1)}
.stage65-local-fx{position:absolute;top:52%;width:148px;height:148px;transform:translate(-50%,-50%);object-fit:contain;filter:drop-shadow(0 0 22px #fff6);animation:stage65FxPop .56s ease-out both}.stage65-local-number{position:absolute;top:31%;transform:translate(-50%,-50%);z-index:32;padding:2px 7px;border-radius:7px;background:#080b0dc4;font-size:clamp(1rem,1.75vw,1.65rem);font-weight:950;white-space:nowrap;text-shadow:0 2px 4px #000,0 0 12px #000;animation:stage65NumberFloat .72s ease-out both}.stage65-local-number.damage{color:#ffb09a}.stage65-local-number.support{color:#92e1aa}.stage65-local-number.DAMAGE_S{color:#b9c9ff}.stage65-local-number.DODGE,.stage65-local-number.IMMUNE{color:#b9e6ff}.stage65-combat-tag{position:absolute;top:24%;transform:translateX(-50%);padding:2px 7px;border:1px solid #d6b86999;border-radius:999px;background:#17140dde;color:#f1d084;font-size:.64rem;font-weight:900;letter-spacing:.08em;animation:stage65TagPop .48s ease-out both}
.stage65-tactic-cutin{top:12px!important;width:min(330px,40%)!important;z-index:42!important}.stage65-event-caption{position:absolute!important;left:50%;bottom:15px;transform:translateX(-50%);z-index:44;min-width:min(520px,72%);max-width:72%;min-height:0!important;margin:0!important;padding:8px 14px;border:1px solid #74633f88;border-radius:13px;background:#070b0de8;box-shadow:0 8px 26px #000b;backdrop-filter:blur(5px)}.stage65-event-caption strong{font-size:1rem}.stage65-event-caption em{justify-self:center;padding:1px 7px;border-radius:999px;background:#8b692e42;color:#f0d184;font-size:.63rem;font-style:normal;font-weight:900}.stage65-impact-grade{top:74px!important;z-index:43!important}
.stage65-battlefield .impact-cinematic-layer{z-index:26}.stage65-battlefield .inherent-tactic-cutin{z-index:48}
@keyframes stage65MeleeTravel{0%,100%{left:var(--from-x);opacity:.35;transform:translate(-50%,-50%) scale(.92)}15%{opacity:1}48%,62%{left:var(--to-x);opacity:1;transform:translate(-50%,-50%) scale(1.08)}82%{opacity:.95}}
@keyframes stage65ArrowTravel{0%{left:var(--from-x);opacity:.15}12%{opacity:1}88%,100%{left:var(--to-x);opacity:1}}
@keyframes stage65TargetHit{0%,100%{transform:translateX(0);filter:none}28%{transform:translateX(8px);filter:brightness(1.55)}52%{transform:translateX(-5px)}72%{transform:translateX(3px)}}
@keyframes stage65Evade{0%,100%{transform:translateX(0)}30%{transform:translateX(-15px)}62%{transform:translateX(10px)}}
@keyframes stage65FxPop{0%{opacity:0;transform:translate(-50%,-50%) scale(.3)}28%{opacity:1;transform:translate(-50%,-50%) scale(1.03)}100%{opacity:0;transform:translate(-50%,-50%) scale(1.28)}}
@keyframes stage65NumberFloat{0%{opacity:0;transform:translate(-50%,10px) scale(.75)}25%{opacity:1;transform:translate(-50%,-50%) scale(1.12)}100%{opacity:0;transform:translate(-50%,-95%) scale(1)}}@keyframes stage65TagPop{0%{opacity:0;transform:translateX(-50%) scale(.7)}100%{opacity:1;transform:translateX(-50%) scale(1)}}
@media(max-width:1000px){.stage65-battle-presentation{width:calc(100vw - 12px)}.stage65-battlefield{grid-template-columns:repeat(6,minmax(142px,1fr))!important;min-width:930px;min-height:555px;padding:96px 14px 122px!important;gap:7px!important}.stage65-battlefield .stage65-unit{grid-template-rows:auto 112px auto!important;padding:6px!important}.stage65-battlefield .battle-unit-figures{height:112px}.stage65-battlefield .stage65-troop-cluster{width:96px!important;height:76px!important}.stage65-transparent-troop{width:64px;height:64px}.stage65-tactic-cutin{width:290px!important}.stage65-event-caption{min-width:420px}}
@media(max-width:680px){.stage65-battle-presentation{width:calc(100vw - 4px);border-radius:10px}.stage65-battle-head{padding:.65rem .7rem}.stage65-battle-head>span{font-size:.7rem}.stage65-field-summary{font-size:.61rem}.stage65-field-scroll{scroll-snap-type:x proximity}.stage65-battlefield{grid-template-columns:repeat(6,124px)!important;min-width:804px;min-height:500px;padding:86px 12px 112px!important;gap:7px!important}.stage65-battlefield .stage65-unit{scroll-snap-align:center;grid-template-rows:auto 98px auto!important}.stage65-battlefield .battle-unit-figures{height:98px}.stage65-battlefield .battle-unit-figures .hero-portrait-wrap{transform:scale(.86);transform-origin:top left}.stage65-battlefield .side-npc .battle-unit-figures .hero-portrait-wrap{transform-origin:top right}.stage65-battlefield .stage65-troop-cluster{width:82px!important;height:66px!important}.stage65-transparent-troop{width:54px;height:54px}.stage65-transparent-troop.tf-2{left:20px}.stage65-transparent-troop.tf-3{left:34px}.stage65-battlefield .side-npc .stage65-transparent-troop.tf-1{left:30px}.stage65-battlefield .side-npc .stage65-transparent-troop.tf-2{left:13px}.stage65-battlefield .side-npc .stage65-transparent-troop.tf-3{left:-3px}.stage65-slot-label{font-size:.58rem;padding:2px 6px}.stage65-battlefield .battle-unit-meta b{font-size:.72rem}.stage65-battlefield .troop-type-label{font-size:.54rem}.stage65-battlefield .stage65-hp-number{font-size:.61rem!important}.stage65-tactic-cutin{width:260px!important}.stage65-event-caption{min-width:340px;max-width:44%;padding:6px 9px}.stage65-local-number{font-size:1rem}.stage65-melee-runner{width:96px;height:76px}.stage65-melee-runner.troop-C{width:112px;height:88px}.stage65-projectile{width:78px}.replay-controls,.event-jump-row{padding-left:.65rem;padding-right:.65rem}}
.stage65-battle-presentation.reduced-motion .stage65-action-layer *,.stage65-battle-presentation.reduced-motion .damage-target .stage65-troop-cluster,.stage65-battle-presentation.reduced-motion .evade-target .stage65-troop-cluster{animation:none!important}.low-spec-av .stage65-action-layer img{display:none!important}.low-spec-av .stage65-action-layer .stage65-local-number,.low-spec-av .stage65-action-layer .stage65-combat-tag{display:block!important}


/* Stage65.1 background hotfix — user supplied battlefields are explicit DOM image layers */
.stage65-battlefield{position:relative!important;background:#0b1113!important;background-image:none!important;isolation:isolate!important}
.stage65-bg-image{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center center;z-index:0;pointer-events:none;user-select:none;filter:saturate(1.04) contrast(1.02)}
.stage65-bg-shade{position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(90deg,rgba(26,73,60,.10),transparent 42% 58%,rgba(89,34,31,.12)),linear-gradient(180deg,rgba(0,0,0,.22) 0%,rgba(0,0,0,.04) 31%,rgba(0,0,0,.08) 65%,rgba(0,0,0,.55) 100%)}
.stage65-battlefield:before,.stage65-battlefield:after{display:none!important}
.stage65-battlefield>.stage65-unit{z-index:4}
.stage65-battlefield>.stage65-action-layer{z-index:30}
.stage65-battlefield>.inherent-tactic-cutin,.stage65-battlefield>.stage65-tactic-cutin,.stage65-battlefield>.impact-cinematic-layer,.stage65-battlefield>.stage65-impact-grade,.stage65-battlefield>.stage65-event-caption{z-index:44}
@media(max-width:680px){.stage65-bg-image{object-position:center center}}

/* Stage68 territory-flow: compact home-area map + full-map modal */
.compact-map-shell{height:360px;min-height:320px;touch-action:auto;background:#0d1517;}
.compact-map-shell .map-tools{z-index:7;}
.compact-territory-svg{position:absolute;inset:0;width:100%;height:100%;background:#0c1315;}
.compact-strategy-map-bg{opacity:.82;pointer-events:none;}
.compact-map-shell .territory-shape{cursor:pointer;}
.full-map-button{font-weight:900;border-color:#8f7a46!important;background:#3a3120!important;color:#f5deb0!important;}
.world-map-modal{width:min(1500px,98vw);max-height:95vh;overflow:hidden;padding:1rem;}
.world-map-modal-head{padding:0 .25rem .6rem;}
.world-map-modal-head h2{margin:.25rem 0;}
.world-map-modal .full-map-shell{height:min(82vh,880px);min-height:620px;}
.auto-fill-status{display:flex;align-items:center;gap:.7rem;flex-wrap:wrap;padding:.6rem .75rem;border:1px solid #334145;border-radius:10px;background:#111a1d;}
.auto-fill-status span{font-weight:900;color:#d9c68e;}
@media(max-width:1000px){.compact-map-shell{height:340px;min-height:300px}.world-map-modal .full-map-shell{height:78vh;min-height:520px}}
@media(max-width:680px){.compact-map-shell{height:300px;min-height:270px}.compact-map-shell .map-tools{max-width:calc(100% - 12px);overflow-x:auto;white-space:nowrap;display:flex}.world-map-modal{width:100vw;max-width:none;max-height:94svh;padding:.65rem}.world-map-modal .full-map-shell{height:78svh;min-height:500px;border-radius:12px}.world-map-modal-head{padding-right:2.8rem}}

/* Stage68.1 React 16.0 compatible territory map wrapper */
.territory-map-stage68-root{width:100%;min-width:0;}

/* Stage69 territory/officer layout — compact local map uses a genuinely smaller footprint */
.stage69-territory-layout{grid-template-columns:minmax(320px,440px) minmax(0,1fr);align-items:start;gap:.9rem;}
.stage69-territory-layout>.territory-map-stage68-root{max-width:440px;align-self:start;}
.stage69-territory-layout .compact-map-shell{height:330px;min-height:300px;}
.stage69-territory-layout>.territory-panel{position:static;top:auto;width:100%;min-width:0;padding:1rem;}
.stage69-territory-layout .territory-panel>div{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;align-items:start;}
.stage69-territory-layout .territory-panel>div>.eyebrow,.stage69-territory-layout .territory-panel>div>h2,.stage69-territory-layout .territory-panel>div>p,.stage69-territory-layout .territory-panel>div>.territory-faction-banner,.stage69-territory-layout .territory-panel>div>.territory-governance,.stage69-territory-layout .territory-panel>div>.territory-personnel-dispatch,.stage69-territory-layout .territory-panel>div>.resident-formation-panel,.stage69-territory-layout .territory-panel>div>.enemy-preview,.stage69-territory-layout .territory-panel>div>.graph-route-detail,.stage69-territory-layout .territory-panel>div>.battle-order-preflight,.stage69-territory-layout .territory-panel>div>.attack-actions{grid-column:1/-1;}
.stage69-territory-layout .territory-kpis{grid-column:1/-1;}
.territory-personnel-dispatch{border:1px solid #4b5147;border-radius:12px;background:#151e1b;padding:.85rem;display:grid;gap:.65rem;}
.dispatch-controls{display:grid;grid-template-columns:minmax(180px,1fr) auto minmax(180px,1fr) 76px auto;gap:.45rem;align-items:center;}
.dispatch-controls label{display:flex;align-items:center;gap:.4rem;min-width:0}.dispatch-controls select{min-width:0;width:100%}.dispatch-controls input{width:76px;}
.territory-personnel-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.45rem;}
.territory-personnel-list>div{display:flex;justify-content:space-between;gap:.5rem;align-items:center;padding:.5rem .6rem;border:1px solid #303d39;border-radius:9px;background:#101714;}
.territory-personnel-list span{display:grid;min-width:0}.territory-personnel-list small{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.territory-tactic-stock{display:flex;gap:.4rem;flex-wrap:wrap}.territory-tactic-stock>span{padding:.25rem .4rem;border:1px solid #3b4741;border-radius:8px;background:#101714;font-size:.78rem}.tiny{padding:.15rem .35rem!important;font-size:.68rem!important;margin:0!important;}
.stage69-gift-panel,.stage69-progress-exchange{border-color:#554a34!important;background:linear-gradient(145deg,#1a201e,#171b17)!important;}
.gift-resource-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.45rem}.gift-resource-grid button{margin:0!important;text-align:left;}
.gift-asset-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.7rem}.gift-asset-grid label{display:grid;grid-template-columns:auto 1fr auto;gap:.45rem;align-items:center}.gift-asset-grid button{margin:0!important;}
.progress-exchange-controls{display:grid;grid-template-columns:minmax(180px,1fr) auto minmax(180px,1fr) auto;gap:.6rem;align-items:center}.progress-exchange-controls>span{font-size:1.4rem;color:var(--gold);font-weight:900;}

@media(min-width:1500px){.stage69-territory-layout .territory-panel>div{grid-template-columns:repeat(3,minmax(0,1fr))}.stage69-territory-layout .territory-panel>div>.eyebrow,.stage69-territory-layout .territory-panel>div>h2,.stage69-territory-layout .territory-panel>div>p,.stage69-territory-layout .territory-panel>div>.territory-faction-banner,.stage69-territory-layout .territory-panel>div>.territory-governance,.stage69-territory-layout .territory-panel>div>.territory-personnel-dispatch,.stage69-territory-layout .territory-panel>div>.resident-formation-panel,.stage69-territory-layout .territory-panel>div>.enemy-preview,.stage69-territory-layout .territory-panel>div>.graph-route-detail,.stage69-territory-layout .territory-panel>div>.battle-order-preflight,.stage69-territory-layout .territory-panel>div>.attack-actions,.stage69-territory-layout .territory-kpis{grid-column:1/-1}}
@media(max-width:1180px){.stage69-territory-layout{grid-template-columns:minmax(300px,380px) minmax(0,1fr)}.stage69-territory-layout>.territory-map-stage68-root{max-width:380px}.stage69-territory-layout .compact-map-shell{height:310px}.dispatch-controls{grid-template-columns:1fr auto}.dispatch-controls label:nth-of-type(2){grid-column:1/-1}.dispatch-controls input{width:100%}}
@media(max-width:900px){.stage69-territory-layout{grid-template-columns:1fr}.stage69-territory-layout>.territory-map-stage68-root{max-width:none}.stage69-territory-layout .territory-panel>div{grid-template-columns:1fr}.stage69-territory-layout .territory-panel>div>*{grid-column:1!important}.stage69-territory-layout .compact-map-shell{height:330px}.gift-asset-grid{grid-template-columns:1fr}}
@media(max-width:620px){.dispatch-controls,.progress-exchange-controls{grid-template-columns:1fr}.dispatch-controls>*{grid-column:1!important}.gift-asset-grid label{grid-template-columns:1fr}.progress-exchange-controls>span{text-align:center;transform:rotate(90deg)}}

/* Stage70 · multi-sortie / world map / hero gift polish */
.stage70-sortie-selector{margin:.75rem 0;padding:.75rem;border:1px solid #5b4f35;border-radius:12px;background:linear-gradient(145deg,#181e1f,#15191a);display:grid;gap:.55rem}
.stage70-sortie-head{display:flex;align-items:flex-start;justify-content:space-between;gap:.65rem;flex-wrap:wrap}.stage70-sortie-head>div{display:grid;gap:.15rem}
.stage70-sortie-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:.45rem}.stage70-sortie-row{display:grid;grid-template-columns:minmax(105px,1fr) auto auto;align-items:center;gap:.35rem;padding:.42rem;border:1px solid #354044;border-radius:9px;background:#101719}.stage70-sortie-row.selected{border-color:#b6964e;background:#252116}.stage70-sortie-row .sortie-pick{font-weight:800;text-align:left}.sortie-order-buttons{display:flex;gap:.2rem}.sortie-order-buttons button{min-width:32px;padding:.25rem .4rem}
.formation-location.remote{color:#e8c678;font-weight:800}.formation-location.remote::before{content:'전선 ';font-size:.58rem;padding:.1rem .32rem;border-radius:999px;border:1px solid #a9823d;margin-right:.25rem;color:#f0d58e}
.hero-gift-entry{border-color:#675735!important;background:linear-gradient(145deg,#1c211d,#181b17)!important}.hero-gift-modal{display:grid;gap:.9rem;min-width:min(780px,90vw)}.hero-gift-modal-head{display:flex;justify-content:space-between;gap:1rem;align-items:flex-start}.gift-stat-summary{padding:.65rem;border-radius:9px;border:1px solid #4f4634;background:#151a18;color:#d8c89c;font-weight:700}
.full-map-shell .strategy-map-bg{opacity:1;filter:saturate(.93) contrast(1.05) brightness(.93)}
.full-map-shell .territory-shape.world-owner-public.ai-faction{fill:var(--faction-fill,#773b3566);fill-opacity:.72;stroke:var(--faction-color,#b96c61);stroke-width:.28}
.full-map-shell .territory-shape.world-owner-public.ai-faction:hover{fill-opacity:.88;stroke-width:.52}
.world-map-legend{max-width:96%;flex-wrap:wrap;background:#091012d9;backdrop-filter:blur(7px)}
@media(max-width:720px){.stage70-sortie-list{grid-template-columns:1fr}.stage70-sortie-row{grid-template-columns:minmax(110px,1fr) auto auto}.hero-gift-modal{min-width:0}.hero-gift-modal-head{display:grid}}

/* Stage71 replay/starter UI */
.starter-inherent-desc{display:grid;gap:.25rem;margin-top:.35rem;padding:.55rem .65rem;border:1px solid #6f5f3c66;border-radius:9px;background:#0e1416;color:#d9dedc;text-align:left}.starter-inherent-desc b{color:#e8cf8d;font-size:.72rem}.starter-inherent-desc span{font-size:.72rem;line-height:1.45}.stage65-battlefield .troop-bar>i{display:block;height:100%;min-width:0;transition:width .22s linear}.stage65-battlefield .stage65-transparent-troop{transition:opacity .18s,transform .18s}

@media(max-width:680px){.stage65-battlefield .stage65-transparent-troop.tf-4{left:46px}.stage65-battlefield .stage65-transparent-troop.tf-5{left:57px}.stage65-battlefield .side-npc .stage65-transparent-troop.tf-4{left:-13px}.stage65-battlefield .side-npc .stage65-transparent-troop.tf-5{left:-22px}}

/* Stage72: multiple queued sorties begin their march animation together. */
.multi-march .march-unit{z-index:8;animation-delay:calc(var(--march-index,0)*.035s)}
.multi-march .march-unit b{white-space:nowrap;background:#080c0eee}
.stage72-sortie-queue{margin:.7rem 0;padding:.7rem;border:1px solid #4a4436;border-radius:12px;background:#11181be6}.stage72-queue-head,.stage72-queue-row{display:flex;align-items:center;justify-content:space-between;gap:.7rem}.stage72-queue-list{display:grid;gap:.45rem;margin-top:.55rem}.stage72-queue-row{padding:.45rem .55rem;border:1px solid #303a3e;border-radius:9px;background:#151d20}.stage72-queue-row span{display:grid;gap:.15rem}

/* Stage73 battle morale HUD */
.battle-morale-line{display:grid;grid-template-columns:auto auto 1fr;align-items:center;gap:5px;margin:3px 0 4px;font-size:11px;line-height:1;color:var(--muted,#aeb7c5)}
.battle-morale-line>b{min-width:22px;text-align:right;font-size:11px;color:#f2f4f8}
.battle-morale-meter{display:block;position:relative;height:5px;min-width:42px;border-radius:99px;overflow:hidden;background:rgba(255,255,255,.13)}
.battle-morale-meter>em{display:block;height:100%;border-radius:inherit;background:currentColor;transition:width .18s ease}
.battle-morale-line.morale-high{color:#6fd39a}.battle-morale-line.morale-steady{color:#d7c56a}.battle-morale-line.morale-low{color:#e39a58}.battle-morale-line.morale-critical{color:#e06464}

/* Stage73 · territory resource/personnel command UI */
.resident-formation-panel{border:1px solid #46515a;border-radius:12px;background:linear-gradient(145deg,#151c20,#111719);padding:.8rem;display:grid;gap:.65rem}
.resident-formation-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:.55rem}.resident-formation-card{border:1px solid #344149;border-radius:10px;background:#0f1619;padding:.65rem;display:grid;gap:.55rem}.resident-formation-card>header{display:flex;justify-content:space-between;gap:.6rem;align-items:flex-start}.resident-formation-card>header>div{display:grid}.resident-formation-card>header small{color:var(--muted)}
.resident-slot-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.4rem}.resident-slot{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.42rem;align-items:center;padding:.45rem;border:1px solid #2e393e;border-radius:8px;background:#151d20}.resident-slot>span{display:grid;min-width:0}.resident-slot b,.resident-slot small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.resident-slot small{font-size:.67rem;color:var(--muted)}.resident-slot .resident-tactics{white-space:normal;line-height:1.35;color:#d9c887}.resident-slot-empty{display:grid!important;place-items:center;width:48px;height:48px;border:1px dashed #475056;border-radius:50%;color:#6d777d}
.hero-grid.dispatch-aware{align-items:start}.hero-dispatch-wrap{display:grid;gap:.35rem}.hero-dispatch-wrap>.hero-card{height:100%}.hero-dispatch-status{display:flex;align-items:center;justify-content:space-between;gap:.45rem;padding:.48rem .58rem;border:1px solid #354349;border-radius:9px;background:#101719}.hero-dispatch-wrap.away .hero-dispatch-status{border-color:#75653d;background:#201d15}.hero-dispatch-status>span{display:grid;min-width:0}.hero-dispatch-status small{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tactic-dispatch-status{display:grid;gap:.55rem}.tactic-station-grid,.tactic-transit-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:.45rem}.tactic-station-row,.tactic-transit-row{display:flex;align-items:center;justify-content:space-between;gap:.55rem;padding:.5rem .6rem;border:1px solid #374349;border-radius:9px;background:#101719}.tactic-station-row>span,.tactic-transit-row>span{display:grid;min-width:0}.tactic-station-row small,.tactic-transit-row small{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.personnel-transit-board{display:grid;gap:.38rem;padding:.55rem;border:1px solid #37454b;border-radius:9px;background:#0f1619}.personnel-transit-row{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.personnel-transit-row>span{display:grid;min-width:0}.personnel-transit-row small{color:var(--muted)}
.resource-ledger em,.territory-resource-ledger em{font-style:normal;color:#82c99b;font-size:.68rem}.territory-resource-ledger{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.45rem}.territory-resource-ledger>span{display:grid;padding:.5rem;border:1px solid #354147;border-radius:8px;background:#101719}
.governor-attack-command{display:grid;gap:.5rem;margin-top:.55rem;padding:.62rem;border:1px solid #5c4b35;border-radius:10px;background:#181612}.governor-attack-head{display:flex;justify-content:space-between;gap:.5rem;align-items:flex-start}.governor-attack-head>div{display:grid}.governor-attack-controls{display:grid;grid-template-columns:minmax(220px,1fr) auto;gap:.45rem}.governor-attack-orders{display:grid;gap:.35rem}.governor-order{display:grid;gap:.15rem;padding:.4rem .5rem;border:1px solid #383f3e;border-radius:8px;background:#111817}.governor-order.status-refused,.governor-order.status-failed{border-color:#704848}.governor-order.status-resolved{border-color:#3e654f}.governor-order small{color:var(--muted)}
@media(max-width:760px){.resident-slot-grid{grid-template-columns:1fr}.territory-resource-ledger{grid-template-columns:repeat(2,minmax(0,1fr))}.governor-attack-controls{grid-template-columns:1fr}.tactic-station-row,.tactic-transit-row,.hero-dispatch-status,.personnel-transit-row{align-items:flex-start;flex-direction:column}}

/* Stage74 legendary personal talent */
.talent-candidate.rarity-legendary{transition:border-color .15s ease,box-shadow .15s ease}.talent-candidate.rarity-legendary{border-color:#b18a35;box-shadow:0 0 0 1px #8d6b2855 inset;background:linear-gradient(145deg,#211b0e,#101719)}.talent-candidate.rarity-legendary .talent-candidate-top b,.talent-candidate.rarity-legendary .talent-candidate-top em{color:#f2cf74}

/* Stage74 turn harvest + progress exchange */
.stage74-progress-exchange{margin:.8rem 0;padding:.85rem;border:1px solid #5d5539;border-radius:13px;background:linear-gradient(145deg,#17170f,#101719)}.stage74-progress-exchange-row{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr) auto;gap:.55rem;align-items:center}.stage74-progress-exchange-row select{min-width:0}.turn-harvest{min-width:min(760px,88vw)}.turn-harvest-head{display:flex;justify-content:space-between;gap:1rem;align-items:start}.turn-harvest-head strong{font-size:1.05rem;color:#efd277}.turn-harvest-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.7rem;margin:1rem 0}.turn-harvest-group{border:1px solid #3d494b;border-radius:11px;background:#101719;padding:.7rem}.turn-harvest-group h3{margin:.1rem 0 .55rem}.turn-harvest-list{display:grid;gap:.35rem}.turn-harvest-list>div{display:flex;justify-content:space-between;gap:.6rem;padding:.4rem .45rem;border-radius:7px;background:#151d1f}.turn-harvest-list small{color:#9ca9a6}@media(max-width:760px){.stage74-progress-exchange-row{grid-template-columns:1fr}.turn-harvest-grid{grid-template-columns:1fr}.turn-harvest{min-width:0}}

/* Stage75 PERFORMANCE OPTIMIZATION · paged tactic catalog */
.stage75-tactic-pager{display:flex;align-items:center;justify-content:center;gap:12px;margin:12px 0;flex-wrap:wrap}
.stage75-tactic-pager>span{font-size:12px;color:var(--muted,#9aa4b3);font-weight:700}
.stage75-tactic-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,520px),1fr));gap:12px;min-width:0;overflow-x:hidden}
.stage75-tactic-card{display:grid;grid-template-columns:76px minmax(0,1fr);gap:12px;padding:12px;border:1px solid rgba(255,255,255,.1);border-radius:14px;background:rgba(13,18,27,.72);min-width:0;overflow:hidden}
.stage75-tactic-visual{width:76px;min-width:0;overflow:hidden}
.stage75-tactic-visual img{max-width:100%;height:auto;object-fit:cover}
.stage75-tactic-body{min-width:0;display:flex;flex-direction:column;gap:8px}
.stage75-tactic-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;min-width:0}
.stage75-tactic-head>div:first-child{display:flex;flex-direction:column;min-width:0}
.stage75-tactic-head b{font-size:15px;overflow-wrap:anywhere}
.stage75-tactic-badges,.stage75-tactic-meta{display:flex;gap:6px;flex-wrap:wrap;min-width:0}
.stage75-tactic-badges span,.stage75-tactic-meta span{display:inline-flex;align-items:center;padding:3px 7px;border-radius:999px;background:rgba(255,255,255,.06);font-size:11px;white-space:normal}
.stage75-tactic-desc,.stage75-tactic-original{margin:0;white-space:normal!important;overflow:visible!important;text-overflow:clip!important;overflow-wrap:anywhere;word-break:keep-all;line-height:1.55;max-width:100%;min-width:0}
.stage75-tactic-desc{font-size:13px}
.stage75-tactic-original{font-size:11px;color:var(--muted,#9aa4b3);padding-top:6px;border-top:1px dashed rgba(255,255,255,.08)}
.stage75-tactic-foot{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;padding-top:6px;border-top:1px solid rgba(255,255,255,.07);min-width:0}
.stage75-tactic-foot>span{display:flex;flex-direction:column;min-width:0}
.stage75-tactic-foot b{font-size:11px;white-space:normal;overflow-wrap:anywhere}
@media (max-width:700px){.stage75-tactic-card{grid-template-columns:58px minmax(0,1fr);padding:10px}.stage75-tactic-visual{width:58px}.stage75-tactic-head{flex-direction:column}.stage75-tactic-foot{grid-template-columns:1fr}.stage75-tactic-list{grid-template-columns:1fr}}

/* Stage 76 · campaign faction selection + taxation */
.scenario-start-choice-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.7rem;max-height:66vh;overflow:auto;padding:.2rem .25rem .35rem 0}
.scenario-faction-card{position:relative;text-align:left;display:grid;gap:.35rem;min-height:128px;padding:.9rem;border:1px solid color-mix(in srgb,var(--faction-color,#8d7442) 68%,#394246);border-radius:13px;background:linear-gradient(145deg,color-mix(in srgb,var(--faction-fill,#8d744233) 55%,#141c1e),#0f1517);color:inherit}
.scenario-faction-card:hover{transform:translateY(-2px);border-color:var(--faction-color,#c7a65b)}
.scenario-faction-card strong{color:#efd394;font-size:1rem}.scenario-faction-card b{font-size:.78rem;color:#cad4cf}.scenario-faction-card small,.scenario-faction-card span{font-size:.68rem;color:#9ea9a5}.scenario-faction-emblem{position:absolute;right:.7rem;top:.55rem;width:32px;height:32px;display:grid;place-items:center;border-radius:50%;border:1px solid var(--faction-color,#816e47);background:#101618cc;color:var(--faction-color,#d7bc79)!important;font-weight:900}.new-faction-card{--faction-color:#d0ae58;--faction-fill:#7d5e2444}
.tax-control-panel{display:flex;align-items:center;gap:.7rem;flex-wrap:wrap;margin:.8rem 0;padding:.75rem;border:1px solid rgba(215,181,102,.22);border-radius:10px;background:rgba(9,14,13,.38)}
.tax-rate-control{display:flex;align-items:center;gap:.45rem}.tax-rate-control select{min-width:82px}.tax-rate-control b{font-size:.75rem}.forced-tax-button{margin-left:auto}.tax-control-panel>small{flex-basis:100%}
@media(max-width:860px){.scenario-start-choice-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){.scenario-start-choice-grid{grid-template-columns:1fr}.forced-tax-button{margin-left:0;width:100%}.tax-rate-control{width:100%;justify-content:space-between}}

/* Stage77 bulk territory governance */
.bulk-governance-panel{margin:14px 0;padding:16px;border:1px solid rgba(148,163,184,.22);border-radius:16px;background:linear-gradient(135deg,rgba(20,28,42,.94),rgba(22,38,38,.82));box-shadow:0 10px 28px rgba(0,0,0,.16)}
.bulk-governance-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.bulk-governance-head h3{margin:.2rem 0}.bulk-governance-head p{max-width:760px;margin:.3rem 0 0}
.bulk-governance-kpis{display:flex;gap:8px;flex-wrap:wrap}.bulk-governance-kpis span{min-width:86px;padding:8px 10px;border-radius:12px;background:rgba(255,255,255,.055);display:flex;flex-direction:column}.bulk-governance-kpis small{opacity:.72}.bulk-governance-kpis b{font-size:1.05rem}
.bulk-governance-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:14px 0 8px}.bulk-delegation-policy{display:flex;gap:8px;align-items:center;padding:7px 10px;border-radius:10px;background:rgba(255,255,255,.04)}
.territory-resource-ledger .refund{border-color:rgba(134,239,172,.25);background:rgba(34,197,94,.06)}
@media(max-width:760px){.bulk-governance-head{flex-direction:column}.bulk-governance-actions>*{width:100%}.bulk-delegation-policy{justify-content:space-between}}


/* Stage78 · territory identity labels + tactic picker readability */
.territory-name,.territory-number{fill:#f4ead0;text-anchor:middle;dominant-baseline:middle;paint-order:stroke;stroke:#071013;stroke-width:.32px;pointer-events:none;font-weight:900;letter-spacing:-.02em}
.territory-name{font-size:1.08px}
.territory-number{font-size:.78px;fill:#d4d9d6;font-weight:800}
.territory-level-offset{font-size:.88px;fill:#ffe49a;stroke-width:.3px}
.compact-map-shell .territory-name{font-size:.92px}.compact-map-shell .territory-number{font-size:.68px}.compact-map-shell .territory-level-offset{font-size:.76px}
.tactic-selector-modal{width:min(1460px,98vw);max-height:92vh;overflow:auto}
.tactic-picker-table-wrap{width:100%;overflow:auto}
.tactic-picker-table{width:100%;min-width:900px;table-layout:fixed;font-size:80%;line-height:1.35}
.tactic-picker-table th,.tactic-picker-table td{padding:.42rem .42rem;white-space:normal;vertical-align:middle;overflow-wrap:anywhere}
.tactic-picker-table th:nth-child(1),.tactic-picker-table td:nth-child(1){width:48px;text-align:center}
.tactic-picker-table th:nth-child(2),.tactic-picker-table td:nth-child(2){width:104px}
.tactic-picker-table th:nth-child(3),.tactic-picker-table td:nth-child(3){width:42px;text-align:center}
.tactic-picker-table th:nth-child(4),.tactic-picker-table td:nth-child(4){width:68px}
.tactic-picker-table th:nth-child(5),.tactic-picker-table td:nth-child(5){width:72px}
.tactic-picker-table th:nth-child(6),.tactic-picker-table td:nth-child(6){width:58px;text-align:center}
.tactic-picker-table th:nth-child(7),.tactic-picker-table td:nth-child(7){width:48px;text-align:center}
.tactic-picker-table th:nth-child(8),.tactic-picker-table td:nth-child(8){width:auto;min-width:280px;white-space:normal;line-height:1.45}
.tactic-picker-table th:nth-child(9),.tactic-picker-table td:nth-child(9),.tactic-picker-table th:nth-child(10),.tactic-picker-table td:nth-child(10),.tactic-picker-table th:nth-child(11),.tactic-picker-table td:nth-child(11){width:46px;text-align:center}
.tactic-picker-table .tactic-visual.compact img{width:34px;height:34px}
@media(max-width:900px){.tactic-selector-modal{width:100vw;max-width:none}.tactic-picker-table{min-width:820px;font-size:76%}.tactic-picker-table th,.tactic-picker-table td{padding:.34rem .32rem}.tactic-picker-table th:nth-child(8),.tactic-picker-table td:nth-child(8){min-width:240px}.territory-name{font-size:1.25px}.territory-number{font-size:.9px}}


/* Stage79 map readability / controls / replay priority */
.map-control-bar{display:flex;align-items:center;justify-content:space-between;gap:.55rem;flex-wrap:wrap;margin:0 0 .55rem;position:relative;z-index:9}
.map-control-bar .map-tools{position:static;left:auto;top:auto;max-width:none;flex:1 1 auto;background:#101719;border-color:#3a484d;backdrop-filter:none}
.map-radius-control{display:flex;align-items:center;gap:.32rem;padding:.38rem .45rem;border:1px solid #3a484d;border-radius:10px;background:#101719}
.map-radius-control span{font-size:.7rem;color:#b9c5c1;font-weight:800;white-space:nowrap}.map-radius-control button{padding:.34rem .52rem;font-size:.68rem}.map-radius-control button.active{color:#161108;background:linear-gradient(135deg,#b48a3e,#e2c36f);border-color:#efd68b;font-weight:900}
.compact-map-shell{height:432px;min-height:384px}.stage69-territory-layout .compact-map-shell{height:396px;min-height:360px}
.territory-level-offset{font-size:1.32px;fill:#ffe49a;stroke-width:.4px}.compact-map-shell .territory-level-offset{font-size:1.14px}
.territory-number{fill:#f0d68c;font-size:.86px}.compact-map-shell .territory-number{font-size:.76px}
.battle-replay-priority{margin:0 0 1rem}.battle-replay-priority .battle-presentation,.battle-replay-priority .replay{margin-top:0}
@media(max-width:1000px){.compact-map-shell{height:408px;min-height:360px}.stage69-territory-layout .compact-map-shell{height:372px;min-height:342px}}
@media(max-width:680px){.map-control-bar{align-items:stretch}.map-control-bar .map-tools{max-width:100%;overflow-x:auto;white-space:nowrap;display:flex;flex-wrap:nowrap}.map-radius-control{width:100%;justify-content:flex-end}.compact-map-shell{height:360px;min-height:324px}.stage69-territory-layout .compact-map-shell{height:360px;min-height:324px}.compact-map-shell .territory-level-offset{font-size:1.28px}}
.full-map-stage79{display:grid;gap:.55rem;min-height:0}.full-map-control-bar{margin-bottom:0}.full-map-control-bar .map-tools{width:100%}

/* Stage80 · governor joint-attack support planning */
.governor-support-panel{display:grid;gap:.5rem;padding:.58rem;border:1px solid #4d5a52;border-radius:9px;background:#111715}
.governor-support-head{display:flex;justify-content:space-between;gap:.7rem;align-items:flex-start}.governor-support-head>div{display:grid}.governor-support-head>span{font-weight:800;color:#e3c977;white-space:nowrap}
.governor-support-actions{display:flex;gap:.35rem;flex-wrap:wrap}.governor-support-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.35rem}
.governor-support-row{display:flex;align-items:center;gap:.45rem;padding:.42rem .5rem;border:1px solid #38433f;border-radius:8px;background:#0f1513;cursor:pointer}.governor-support-row.selected{border-color:#8b7746;background:#201c12}.governor-support-row>span{display:grid}.governor-support-row small{color:var(--muted)}
.governor-attack-preview{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.35rem;padding:.5rem;border-radius:8px;border:1px solid #45504c;background:#0d1311}.governor-attack-preview>span{display:grid;padding:.36rem;border-radius:6px;background:#151c19}.governor-attack-preview small{color:var(--muted)}.governor-attack-preview strong{grid-column:1/-1}.governor-attack-preview.accept{border-color:#3f6a50}.governor-attack-preview.accept strong{color:#8ed0a5}.governor-attack-preview.refuse{border-color:#744b45}.governor-attack-preview.refuse strong{color:#e69c8f}
.governor-order-kpis em{font-style:normal;color:var(--muted);font-size:.7rem}
@media(max-width:760px){.governor-support-head{flex-direction:column}.governor-support-list{grid-template-columns:1fr}.governor-attack-preview{grid-template-columns:repeat(2,minmax(0,1fr))}}
