
.campaign-heading{align-items:center}
.campaign-heading h1{font-size:clamp(30px,3vw,42px)}
.campaign-heading p{max-width:580px}
.campaign-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:22px 0}
.campaign-summary>div{padding:17px 22px;border:1px solid var(--line,#d7ccb8);border-radius:12px;background:var(--surface,#fff9ee)}
.campaign-summary small{font-size:11px;letter-spacing:.6px;color:var(--muted,#877b69)}
.campaign-summary b{display:block;font-size:27px;color:var(--ink,#263a32);margin-top:5px}
.campaign-summary b span{font-size:15px;font-weight:400;color:var(--muted,#877b69)}
.campaign-layout{display:grid;grid-template-columns:minmax(0,1fr) 255px;gap:20px;align-items:stretch}
.campaign-atlas{min-width:0;border:1px solid var(--line,#d7ccb8);border-radius:14px;overflow:hidden;background:var(--surface,#fff9ee)}
.atlas-heading{display:flex;align-items:center;justify-content:space-between;padding:18px 22px;gap:12px}
.atlas-heading h2{font-size:18px}
.atlas-heading .eyebrow{font-size:10px;margin-bottom:5px}
.atlas-heading small{font-size:11px;color:var(--muted,#877b69)}
.map{position:relative;min-height:0;border:0;border-radius:0;background:#243b31;aspect-ratio:1000/600;overflow:hidden}
.map:before,.map:after{display:none}
.territory-map{display:block;width:100%;height:100%;background:url('./assets/art/campaign-map.webp') center/cover}
.map-vignette{fill:#152c29;opacity:.4;pointer-events:none}
.territory-cell{fill:var(--region);fill-opacity:.16;stroke:#f2e6ce;stroke-opacity:.5;stroke-width:1;cursor:pointer;transition:fill-opacity .25s;vector-effect:non-scaling-stroke}
.territory-cell:hover,.territory-cell:focus{fill-opacity:.55;outline:0;stroke:#fff8d8;stroke-width:2}
.territory-cell.cleared{fill:#51b594;fill-opacity:.65;stroke:#a8efd0;stroke-opacity:.75}
.territory-cell.selected{fill:#eac373;fill-opacity:.65;stroke:#ffe6ad;stroke-width:2.5}
.territory-cell.cleared.selected{fill:#51b594;fill-opacity:.8;stroke:#ffe6ad;stroke-width:2.5}
.territory-cell.fresh{animation:land-capture 1.8s ease-out 2}
.territory-border{fill:none;stroke:#fff0cb;stroke-width:2;stroke-linejoin:round;vector-effect:non-scaling-stroke;pointer-events:none;filter:drop-shadow(0 1px 2px #142721)}
.territory.selected .territory-border{stroke:#ffe8aa;stroke-width:3}
.land-border{fill:none;stroke:#ffe1a2;stroke-width:3;vector-effect:non-scaling-stroke;pointer-events:none}
.territory-label{cursor:pointer;filter:drop-shadow(0 2px 3px #132721)}
.territory-label rect{fill:#132a25;fill-opacity:.94;stroke:#e6c88c;stroke-width:1}
.territory-label text{fill:#fff5db;font:600 17px 'Segoe UI',sans-serif;pointer-events:none;text-anchor:middle}
.territory-label .map-count{fill:#d6b879;font-size:12px;font-weight:400}
.territory.conquered .territory-label rect{fill:#174936;stroke:#9ddeae}
.territory-label:focus{outline:0}
.map-marker circle{fill:#ffe6ab;stroke:#57421e;stroke-width:2}
.map-marker text{fill:#493417;font:700 13px 'Segoe UI',sans-serif;text-anchor:middle;dominant-baseline:middle}
.map-marker{pointer-events:none;filter:drop-shadow(0 2px 3px #0008)}
.map-owned-mark{fill:#d7ffdf;opacity:.95;pointer-events:none;font:700 16px 'Segoe UI',sans-serif;text-anchor:middle}
.map-legend{position:static;display:flex;align-items:center;gap:20px;padding:15px 20px;background:none;color:var(--muted,#81745f);border:0;font-size:11px;flex-wrap:wrap}
.map-legend span{display:flex;align-items:center;gap:7px}
.map-legend i{width:11px;height:11px;border-radius:3px;background:#439e78;display:inline-block}
.map-legend i.pending{background:#dfb96c}
.map-legend i.border{background:none;border:2px solid #bc9c61}
.chapter-navigation{display:flex;gap:7px;flex-wrap:wrap;margin:19px 0 0}
.chapter-navigation button{border:1px solid var(--line,#d7ccb8);background:var(--surface,#fff9ee);color:var(--ink,#263a32);border-radius:7px;padding:8px 11px;display:flex;align-items:center;gap:7px;font-size:12px}
.chapter-navigation button b{font-size:10px;color:var(--muted,#81745f)}
.chapter-navigation button.active{background:#253d31;border-color:#253d31;color:#f5e8c8}
.chapter-navigation button.active b{color:#d5bc7f}
.chapter-navigation .chapter-done{color:#418865}
.boss-panel{padding:18px;gap:12px;border-radius:14px}
.boss-panel .hero-card{max-width:220px}
.boss-panel .boss-label{line-height:1.6;font-size:10px;letter-spacing:.6px}
.boss-panel>h3{font-size:21px}
.boss-panel .boss-extras .divider{margin:10px 0}
.boss-panel .boss-extras p{font-size:11px}
.boss-panel .boss-extras p+p{margin-top:5px}
.boss-panel .reward-tag{font-size:12px;color:#c6ad70}
.final-boss-tag{display:inline-flex;align-items:center;gap:6px;border:1px solid #aa754a;color:#f0bf74;background:#763d252b;font-size:10px;letter-spacing:.7px;padding:6px 8px;border-radius:5px}
.stage-head{margin:24px 0 12px;gap:12px}
.stage-head h3{font-size:17px}
.stages{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:9px}
.stage{min-height:82px;padding:13px 14px;display:grid;grid-template-columns:28px minmax(0,1fr);align-content:center;gap:5px 10px;text-align:left;border-radius:9px}
.stage>strong{font-size:22px;grid-row:1/3;align-self:center}
.stage>small{font-size:12px;padding:0;min-height:0;margin:0;line-height:1.35;overflow-wrap:anywhere}
.stage .stage-rarity{display:block;font-size:9px;letter-spacing:.4px;color:var(--muted,#84765f)}
.stage .status-mark{font-size:10px;top:8px;right:9px}
.stage .final-stage{color:#ab7449}
.stage.locked{opacity:.6}
.campaign-next{margin:14px 0 0;display:flex;justify-content:space-between;gap:10px;align-items:center;color:var(--muted,#84765f);font-size:12px}
.campaign-next a{color:inherit}
.conquest-reward{margin-top:17px;padding:14px;border:1px solid #59855a;border-radius:9px;background:#4d8e571c;color:#abdeb1}
@keyframes land-capture{0%{fill:#ffe493;fill-opacity:.95}100%{fill:#51b594;fill-opacity:.65}}
@media(max-width:1100px){.campaign-layout{grid-template-columns:minmax(0,1fr) 220px}.campaign-summary{gap:10px}.campaign-summary>div{padding:14px}.atlas-heading{padding:14px}.stages{grid-template-columns:repeat(5,minmax(0,1fr))}.stage{padding:13px 8px;gap:4px 6px}.stage>small{font-size:10px}}
@media(max-width:780px){.campaign-layout{grid-template-columns:1fr}.campaign-summary{gap:7px}.campaign-summary>div{padding:11px 9px}.campaign-summary small{font-size:9px}.campaign-summary b{font-size:21px}.campaign-summary b span{font-size:11px}.boss-panel{display:grid;grid-template-columns:140px minmax(0,1fr);gap:10px 18px}.boss-panel>.hero-card{grid-column:1;grid-row:1/7;width:100%;min-height:0;align-self:center}.boss-panel>.boss-label,.boss-panel>h3,.boss-panel>p,.boss-panel>.btn,.boss-panel>.reward-tag,.boss-panel>.final-boss-tag{grid-column:2}.boss-panel>.boss-label{align-self:end}.boss-panel .boss-extras{display:none}.map{aspect-ratio:1000/670}.territory-label text{font-size:20px}.territory-label .map-count{font-size:14px}.map-legend{padding:12px;gap:12px;font-size:10px}.atlas-heading small{font-size:10px}.stages{grid-template-columns:repeat(2,minmax(0,1fr))}.stage{padding:11px 12px;min-height:69px}.stage>small{font-size:12px}.stage-head{align-items:start}.stage-head h3{font-size:15px}.stage-head small{font-size:10px}.chapter-navigation button{padding:7px 9px;font-size:11px}.campaign-next{align-items:start;line-height:1.6}.campaign-heading .tabs{max-width:100%}}
@media(max-width:780px){.map{aspect-ratio:auto;overflow:auto}.territory-map{width:max(100%,680px);height:auto;aspect-ratio:1000/600}}
@media(prefers-reduced-motion:reduce){.territory-cell.fresh{animation:none}}

/* Broad clan campaign over Mongolia-inspired painted terrain.
   The viewport has no frame or present-day national border. */
.game-shell.scene-campaign .campaign-scene .map,
.game-shell.scene-campaign .campaign-scene .map-viewport{
 border:0;border-radius:0;box-shadow:none;outline:0;
 background:radial-gradient(ellipse at 50% 45%,#3c5138,#233b2c 45%,#13281e);
}
.game-shell.scene-campaign .campaign-scene .map-viewport{overflow:hidden}
.game-shell.scene-campaign .campaign-scene .map{
 width:100%;height:100%;min-width:0;min-height:0;aspect-ratio:auto;
 overflow:auto;scrollbar-width:none;overscroll-behavior:contain;touch-action:pan-x pan-y;
}
.game-shell.scene-campaign .campaign-scene .map::-webkit-scrollbar{display:none}
.game-shell.scene-campaign .campaign-scene .territory-map{
 background-color:#354937;
 background-image:url('./assets/art/campaign-map-mongol.webp?v=9');
 background-position:center;background-size:100% 100%;background-repeat:no-repeat;
 filter:saturate(.9);border:0;outline:0;box-shadow:none;mask-image:none;
}
.game-shell.scene-campaign .campaign-scene .land-border{display:none}
.game-shell.scene-campaign .campaign-scene:after{
 background:linear-gradient(0deg,#071b1466,transparent 16%,transparent 90%,#071b1433);
 box-shadow:none;
}
.game-shell.scene-campaign .campaign-scene .map-vignette{display:none}
.game-shell.scene-campaign .campaign-scene .territory-cell{
 fill-opacity:.05;stroke:#bdab76;stroke-opacity:.26;stroke-width:.55;
}
.game-shell.scene-campaign .campaign-scene .territory-cell:hover,
.game-shell.scene-campaign .campaign-scene .territory-cell:focus{
 fill-opacity:.32;stroke:#ffe8ae;stroke-opacity:.95;stroke-width:1.6;
}
.game-shell.scene-campaign .campaign-scene .territory-cell.selected{
 fill:#edc985;fill-opacity:.22;stroke:#ffe0a0;stroke-width:1.6;stroke-opacity:.9;
}
.game-shell.scene-campaign .campaign-scene .territory-cell.cleared{
 fill:#65b38c;fill-opacity:.46;stroke:#b8dfb3;stroke-opacity:.55;
}
.game-shell.scene-campaign .campaign-scene .territory-cell.cleared.selected{
 fill:#77c89c;fill-opacity:.54;stroke:#ffe0a0;stroke-opacity:.95;
}
.game-shell.scene-campaign .campaign-scene .territory-border{
 stroke:#d9bd7e;stroke-width:1.2;stroke-opacity:.78;filter:drop-shadow(0 1px 2px #14272166);
}
.game-shell.scene-campaign .campaign-scene .territory.selected .territory-border{
 stroke:#ffe8a2;stroke-width:1.8;stroke-opacity:.96;
}
.game-shell.scene-campaign .campaign-scene .territory-label{
 filter:drop-shadow(0 2px 3px #0c1a12aa);
}
.game-shell.scene-campaign .campaign-scene .territory-label rect{
 fill:#13291c;fill-opacity:.94;stroke:#bea062;stroke-opacity:.85;stroke-width:.9;
}
.game-shell.scene-campaign .campaign-scene .territory-label text{
 fill:#f2e8cf;font-size:16px;font-weight:650;letter-spacing:.35px;
}
.game-shell.scene-campaign .campaign-scene .territory-label .map-count{
 fill:#d9c697;font-size:11px;letter-spacing:.1px;
}
.game-shell.scene-campaign .campaign-scene .map-marker circle{
 fill:#ffe6ab;stroke:#57421e;stroke-width:1.4;
}
.game-shell.scene-campaign .campaign-scene .map-marker text{
 fill:#493417;font-size:12px;
}
@media(min-width:761px){
 .game-shell.scene-campaign .map-controls{top:96px;bottom:auto}
}

/* Clan color identifies land; turquoise borders mark the player's conquests. */
.game-shell.scene-campaign .territory-map{--claimed-color:#5de0bb}
.game-shell.scene-campaign .campaign-scene .territory-cell{
 stroke:var(--region);stroke-width:1.15;stroke-opacity:.78;fill-opacity:.045;
}
.game-shell.scene-campaign .campaign-scene .territory-cell:hover,
.game-shell.scene-campaign .campaign-scene .territory-cell:focus{
 stroke:#ffe4a5;stroke-width:2;stroke-opacity:1;fill-opacity:.24;
}
.game-shell.scene-campaign .campaign-scene .territory-cell.selected{
 stroke:#ffe4a5;stroke-width:1.8;stroke-opacity:1;fill-opacity:.18;
}
.game-shell.scene-campaign .campaign-scene .territory-cell.cleared,
.game-shell.scene-campaign .campaign-scene .territory-cell.cleared.selected{
 stroke:var(--claimed-color);stroke-opacity:1;fill:#279f81;fill-opacity:.24;
}
.game-shell.scene-campaign .campaign-scene .territory-border-shadow{
 fill:none;stroke:#0b241f;stroke-opacity:.85;stroke-width:5;
 pointer-events:none;vector-effect:non-scaling-stroke;
}
.game-shell.scene-campaign .campaign-scene .territory-border,
.game-shell.scene-campaign .campaign-scene .territory.selected .territory-border{
 stroke:var(--region);stroke-width:3.8;stroke-opacity:1;filter:none;
}
.game-shell.scene-campaign .campaign-scene .territory.conquered .territory-border{
 stroke:var(--claimed-color);
}
.game-shell.scene-campaign .campaign-scene .territory-capture-border{
 fill:none;stroke:var(--claimed-color);stroke-width:3.4;stroke-opacity:1;
 pointer-events:none;vector-effect:non-scaling-stroke;
}
.game-shell.scene-campaign .campaign-scene .clan-map-badge{
 pointer-events:none;cursor:inherit;filter:drop-shadow(0 2px 3px #081910b3);
}
.game-shell.scene-campaign .campaign-scene .clan-map-badge rect{
 fill:#12291f;fill-opacity:.86;stroke:var(--region);stroke-opacity:1;stroke-width:1;
}
.game-shell.scene-campaign .campaign-scene .clan-map-badge .clan-map-name{
 fill:#fff3d6;font-size:13px;font-weight:650;letter-spacing:.15px;
}
.game-shell.scene-campaign .campaign-scene .clan-map-sigil circle{
 fill:#0c221b;stroke:var(--region);stroke-width:.8;
}
.game-shell.scene-campaign .campaign-scene .clan-map-sigil path{
 fill:none;stroke:var(--region);stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;
}
.game-shell.scene-campaign .campaign-scene .territory.conquered .clan-map-badge rect{
 stroke:var(--claimed-color);fill:#123d30;
}
