/* Campaign territories keep their clan color; only adjacent land is attackable. */
.game-shell.scene-campaign .campaign-scene .territory-cell.frontier{fill:var(--region);fill-opacity:.25;stroke:#ffe1a0;stroke-opacity:1;stroke-width:2;filter:drop-shadow(0 0 3px #d1a34599)}
.game-shell.scene-campaign .campaign-scene .territory-cell.frontier:hover,.game-shell.scene-campaign .campaign-scene .territory-cell.frontier:focus{fill-opacity:.48;stroke:#fff2c9;stroke-width:3}
.game-shell.scene-campaign .campaign-scene .territory-cell.locked{fill-opacity:.05;stroke-opacity:.44}
.game-shell.scene-campaign .campaign-scene .territory-cell.locked.selected{fill-opacity:.2;stroke:#c9b589;stroke-opacity:1;stroke-width:2}
.game-shell.scene-campaign .campaign-scene .territory-cell.frontier.selected{fill:#efd087;fill-opacity:.35;stroke:#fff0b8;stroke-width:3}
.map-frontier-mark{fill:#fff0bd;stroke:#4b341a;stroke-width:.7px;paint-order:stroke;font:700 15px Georgia,serif;text-anchor:middle;pointer-events:none;filter:drop-shadow(0 2px 2px #161209)}
.map-marker text{font-size:16px}
.campaign-nav-sigil{width:20px;height:20px;flex:0 0 20px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.frontier-key{color:#ffe6a8}
.campaign-hint{background:#19251fdb;padding:7px 13px;border:1px solid #a08c5477;border-radius:3px;font-size:11px;line-height:1.4}
.campaign-difficulty button:disabled{opacity:.43;cursor:default}
.campaign-encounter .encounter-info .reward-tag{display:block;font-size:11px;line-height:1.4;white-space:normal;color:#ffe5a3}
.frontier-lock-note,.encounter-reward-note{font-size:10px!important;line-height:1.5;color:#e2d3b1!important;margin:8px 0!important}
.frontier-lock-note{padding:8px;border-left:2px solid #b3a178;background:#171d1880}
.campaign-result-wallet{display:flex;justify-content:center;gap:30px;flex-wrap:wrap}
.campaign-result-wallet .reward-number{margin:24px 0 18px;font-size:34px}
.campaign-result-wallet .reward-number small{display:block;font-size:10px;margin-top:5px;letter-spacing:2px}
.campaign-result-wallet .gerege{color:#658369}
.result .conquest-reward b{color:#26563b}
.result .conquest-reward p{color:#48533d}
.campaign-leader-reward{margin:17px 0;padding:13px;border:1px solid #a18a5144;border-radius:4px;background:#e8dab361}
.campaign-leader-reward p{font-size:17px;font-weight:600}
.campaign-leader-reward p.gold,.campaign-pack-reward>p.gold{color:#78552a}
.campaign-leader-reward small{display:block;color:#6c684f;margin-top:6px;font-size:11px}
.campaign-pack-reward{margin:18px 0 0;padding-top:15px;border-top:1px solid #a18a5144}
.campaign-pack-reward>p{font-size:12px;line-height:1.6}
.campaign-pack-reward>p.gold{font-size:16px;font-weight:600}
.campaign-pack-cards{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin-top:12px}
.campaign-pack-cards>button{display:flex;flex-direction:column;align-items:center;min-width:0;padding:8px 4px;border:1px solid #ac925277;border-radius:5px;background:linear-gradient(#3b4f37,#20382b);color:#f4e6bd;gap:5px}
.campaign-pack-cards>button:hover{border-color:#8a6731;box-shadow:0 2px 8px #49351b33}
.reward-pack-face{display:block;width:54px;height:64px;overflow:hidden;border-radius:50%;border:1px solid #cdb67b;background:#1d2d22}
.reward-pack-face svg{display:block;width:100%;height:100%}
.campaign-pack-cards strong{font-size:10px;line-height:1.3;overflow-wrap:anywhere}
.campaign-pack-cards small{font-size:9px;color:#d4d8b5;line-height:1.3}
@media(max-width:760px){
 .campaign-hint{font-size:9px;padding:5px 8px;bottom:78px;max-width:calc(100% - 25px);white-space:normal;text-align:center}
 .campaign-nav-sigil{width:16px;height:16px;flex-basis:16px}
 .campaign-result-wallet{gap:22px}.campaign-result-wallet .reward-number{font-size:29px}
 .campaign-pack-cards{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}
 .campaign-leader-reward p{font-size:15px}
}

/* Captured land stays bright green, including selected and hover states. */
.game-shell.scene-campaign .territory-map{--claimed-color:#4bf58b}
.game-shell.scene-campaign .campaign-scene .territory-cell.cleared,
.game-shell.scene-campaign .campaign-scene .territory-cell.cleared.selected{fill:#20d56b;fill-opacity:.62;stroke:var(--claimed-color);stroke-opacity:1;stroke-width:2;filter:none}
.game-shell.scene-campaign .campaign-scene .territory-cell.cleared.selected{fill-opacity:.72;stroke:#baffcf}
.game-shell.scene-campaign .campaign-scene .territory-cell.cleared:hover,
.game-shell.scene-campaign .campaign-scene .territory-cell.cleared:focus{fill:#35e880;fill-opacity:.72;stroke:#baffcf;stroke-width:2.5}
.game-shell.scene-campaign .campaign-scene .map-owned-mark{fill:#effff3;opacity:1;stroke:#0a5830;stroke-width:1;paint-order:stroke}
.game-shell.scene-campaign .campaign-scene .map-marker.owned circle{fill:#20c960;stroke:#c1ffd2}
.game-shell.scene-campaign .campaign-scene .map-marker.owned text{fill:#effff3}

/* One card from all nine clans, granted on this difficulty's first victory. */
.campaign-stage-pack-note{margin:12px 0;padding:10px;border:1px solid #dcc08060;border-radius:4px;background:linear-gradient(120deg,#29392adb,#302818bd);text-align:left}
.campaign-stage-pack-note strong{display:block;font-size:12px;line-height:1.5;color:#ffe9b5}
.campaign-stage-pack-note small{display:block;margin:3px 0 6px;color:#e0d6b6;font-size:10px;line-height:1.5}
.campaign-pack-odds{display:flex;justify-content:center;gap:5px 12px;flex-wrap:wrap;margin:7px 0;font-size:11px;line-height:1.6}
.campaign-pack-odds span{white-space:nowrap}
.campaign-stage-pack-note .campaign-pack-odds{justify-content:flex-start;font-size:10px;color:#e8ddb9;gap:3px 9px}
.campaign-stage-pack-reward{display:flex;align-items:center;justify-content:center;gap:22px;padding:20px 14px;margin:16px auto 0;max-width:540px;border:1px solid #a18a5180;border-radius:7px;background:radial-gradient(ellipse at 8% 50%,#d4b56d44,transparent 65%),linear-gradient(135deg,#f5ebd1,#e7d8ab);box-shadow:inset 0 0 0 3px #fff6df55,0 4px 12px #49351b22}
.campaign-stage-pack-reward>div{min-width:0}
.campaign-stage-pack-reward h3{font-size:20px;color:#58432a;line-height:1.3}
.campaign-stage-pack-reward p{margin:5px 0;color:#5f624b;font-size:12px;line-height:1.5}
.campaign-stage-pack-reward .campaign-pack-odds{color:#715630}
.campaign-stage-pack-reward .btn{margin-top:5px;min-width:155px}
.campaign-stage-pack-token{position:relative;display:block;flex:0 0 76px;height:107px;background:url(./assets/ui/card-back.svg) center/100% 100% no-repeat;filter:drop-shadow(3px 5px 4px #3a271d70);transform:rotate(-6deg)}
.campaign-stage-pack-token b{position:absolute;right:-7px;bottom:-7px;width:28px;height:28px;display:grid;place-items:center;border:2px solid #e6cf8d;border-radius:50%;background:#304736;color:#ffe7a0;font:700 15px 'Segoe UI',sans-serif;box-shadow:0 2px 5px #2b211b77}
.campaign-stage-pack-reveal{grid-template-columns:minmax(0,315px);justify-content:center;margin:18px auto 0}
@media(max-width:760px){
 .campaign-stage-pack-reward{gap:14px;padding:16px 10px}
 .campaign-stage-pack-token{flex-basis:60px;height:85px}
 .campaign-stage-pack-reward h3{font-size:17px}
 .campaign-stage-pack-reward .campaign-pack-odds{gap:3px 10px;font-size:10px}
 .campaign-stage-pack-reward p{font-size:11px}
 .campaign-stage-pack-reveal{grid-template-columns:minmax(0,300px)}
}
