/* Domestic management and tactical engagements. */
.country-map{touch-action:none;cursor:grab;user-select:none}.country-map:active{cursor:grabbing}.realm-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line);margin:-10px 0 24px}.realm-strip button{background:var(--panel);border:0;padding:12px 16px;text-align:left}.realm-strip button>span{display:block;font-size:10px;color:var(--muted)}.realm-strip strong{display:block;font:20px var(--serif);margin-top:6px}.realm-strip small,.faction-card small{font:10px sans-serif;color:var(--muted)}.realm-strip>p{grid-column:1/-1;background:var(--soft);margin:0;padding:10px 16px;font-size:11px;color:var(--muted)}.realm-warning,.enemy-intent{border-left:3px solid var(--gold);background:var(--soft);padding:16px;font-size:12px;line-height:1.8}.realm-warning>span{display:block;font-size:10px;color:var(--muted);margin-top:6px}.gov-heading{font:600 16px var(--serif);margin:25px 0 12px}.faction-grid,.army-overview{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.faction-card,.army-overview>div{background:var(--panel);border:1px solid var(--line);padding:15px 12px}.faction-card>span,.army-overview small{font-size:10px;color:var(--muted)}.faction-card>strong,.army-overview strong{display:block;font:24px var(--serif);margin:10px 0}.faction-card p{font-size:9px;color:var(--muted);line-height:1.7;margin-bottom:0}.gov-track{height:4px;background:var(--line);margin-top:12px}.gov-track i{height:100%;display:block;background:var(--gold)}.gov-track.enemy i{background:#bd7d79}.policy-grid,.admin-grid,.tactic-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.policy-card,.terrain-card,.tactic-card{padding:17px;text-align:left;background:var(--panel);border:1px solid var(--line);min-width:0;line-height:1.7}.policy-card strong,.terrain-card strong,.tactic-card strong{font-size:13px}.policy-card p,.tactic-card p{font-size:11px;color:var(--muted);margin:8px 0}.policy-card small,.terrain-card small,.tactic-card small,.tactic-card>span{display:block;font-size:10px;color:var(--muted)}.policy-card.selected,.terrain-card.selected{border-color:var(--gold);background:var(--soft)}.policy-card:hover:not(:disabled),.terrain-card:hover,.tactic-card:hover:not(:disabled){border-color:var(--gold);background:var(--soft)}.policy-card.selected:disabled{opacity:1}.army-overview{margin-bottom:20px}.army-overview strong{font-size:22px}.terrain-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.terrain-card small{margin-top:8px}.campaign-cost{background:var(--soft);border:1px solid var(--line);padding:20px;margin:16px 0;font-size:11px;line-height:1.8}.campaign-cost .primary{width:100%;margin-top:8px}.battle-history{background:var(--panel);border:1px solid var(--line);padding:15px;margin-bottom:10px;font-size:11px;line-height:1.8}.battle-history summary{cursor:pointer}.battle-history summary>span{color:var(--muted);display:block}.battle-history p{color:var(--muted)}.battle-panel{background:var(--panel);border:1px solid var(--line);padding:22px}.battle-heading h2{font:600 25px var(--serif);margin:9px 0}.battle-heading>p:last-child{font-size:11px;color:var(--muted)}.battle-scene{display:block;width:100%;height:auto;margin-top:20px;image-rendering:pixelated}.battle-forces{display:grid;grid-template-columns:1fr 1fr;gap:20px;padding:20px 0}.battle-forces h3{font-size:11px;color:var(--muted);margin:0 0 10px}.battle-forces strong{font:26px var(--serif)}.battle-forces p{font-size:11px;color:var(--muted)}.enemy-intent{margin-bottom:18px}.enemy-intent>span{display:block;font-size:10px;color:var(--gold);margin-bottom:4px}.enemy-intent p{font-size:10px;color:var(--muted);margin:5px 0 0}.tactic-card>span{color:var(--gold);margin-top:6px}.tactic-card.withdraw{grid-column:1/-1;padding:12px 17px}.tactic-card.withdraw p{margin:3px 0}.combat-log{border-top:1px solid var(--line);font-size:11px;line-height:1.8}.combat-log small{display:block;color:var(--muted)}.combat-log strong{margin-right:8px}.research-filters{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:18px}.research-filters .selected{border-color:var(--gold);color:var(--gold);background:var(--soft)}.route-step small{display:block;font-size:9px;line-height:1.6;margin-top:4px}.warn{color:var(--red)}
@media(max-width:900px){.faction-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.army-overview{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:650px){.nav{display:flex;overflow-x:auto;width:100%;padding-bottom:5px;gap:4px}.nav button{flex-shrink:0;padding:10px 12px;font-size:11px}.realm-strip{grid-template-columns:repeat(2,1fr);margin-top:0}.realm-strip button{padding:11px 14px}.realm-strip>p{font-size:10px;line-height:1.8}.policy-grid,.admin-grid,.tactic-grid{grid-template-columns:1fr}.terrain-grid{grid-template-columns:1fr}.terrain-card{padding:12px;display:flex;gap:10px;align-items:center}.terrain-card small{margin:0;flex:1}.terrain-card strong{font-size:12px;min-width:65px}.battle-panel{padding:14px}.battle-forces{gap:15px}.battle-forces strong{font-size:23px}.battle-heading h2{font-size:22px}.section-heading{gap:10px;flex-wrap:wrap}.section-heading h2{font-size:17px}.realm-warning{padding:13px}.policy-card,.tactic-card{padding:14px}.map-country text{font-size:28px}.map-country .map-leader{font-size:14px}}

.battle-result{margin-bottom:16px}.battle-result .text-button{padding:8px 0 0}@media(max-width:650px){.nav button{flex:none;white-space:nowrap;min-width:64px}.nav{scrollbar-width:thin}.sidebar{min-width:0}}
/* Pledges, faction influence and bills. */
.pledge-card{border:1px solid var(--line);border-left:3px solid var(--gold);background:var(--soft);padding:16px;font-size:12px;line-height:1.7}.pledge-card>strong{font:600 15px var(--serif)}.pledge-card>strong small{font:11px sans-serif;color:var(--muted);margin-left:6px}.pledge-card p{color:var(--muted);margin:6px 0}.pledge-card>small{display:block;font-size:10px;color:var(--muted)}.pledge-checks{list-style:none;padding:0;margin:8px 0;display:grid;gap:4px}.pledge-checks li{color:var(--muted)}.pledge-checks li.done{color:var(--ink)}.pledge-checks small{font-size:10px;color:var(--muted)}.pledge-change{margin-top:10px}.pledge-change summary{cursor:pointer;font-size:11px;color:var(--muted);padding:6px 0}.pledge-change .policy-grid{margin-top:8px}
.pledge-picker{display:grid;gap:6px;margin:14px 0}.pledge-picker>small{font-size:10px;color:var(--muted)}.pledge-option{display:block;text-align:left;padding:10px 12px;background:var(--panel);border:1px solid var(--line);line-height:1.6;min-width:0}.pledge-option strong{display:block;font-size:12px}.pledge-option strong em{font-style:normal;font-size:10px;color:var(--gold);margin-left:4px}.pledge-option span{display:block;font-size:10px;color:var(--muted)}.pledge-option.selected,.pledge-option:hover{border-color:var(--gold);background:var(--soft)}
button.pledge-banner{width:100%;text-align:left;font:inherit;font-size:11px;color:inherit;cursor:pointer}button.pledge-banner span{display:block}
.bill-list{display:grid;gap:10px}.bill-card{background:var(--panel);border:1px solid var(--line);padding:15px;font-size:12px;line-height:1.7;min-width:0}.bill-card.demand{border-color:var(--gold);border-left-width:3px}.bill-head{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:space-between}.bill-head strong{font-size:13px}.bill-card>p{color:var(--muted);margin:6px 0;font-size:11px}.bill-stance{display:flex;flex-wrap:wrap;gap:6px;font-size:10px}.bill-stance span{border:1px solid var(--line);padding:2px 7px}.bill-stance .negative{color:var(--red)}.bill-forecast{font-size:11px}.bill-forecast.warn{color:var(--red)}.bill-actions{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.bill-actions button{padding:6px 12px;font-size:11px}.bill-actions button small{font-size:9px;color:var(--muted)}
/* Neighbour intents. */
.intent-box{border:1px solid var(--line);border-left:3px solid var(--gold);background:var(--soft);padding:12px 14px;margin:12px 0;font-size:11px;line-height:1.7}.intent-box.threat{border-left-color:var(--red)}.intent-box strong{font-size:12px}.intent-box strong small{font-weight:400;color:var(--muted)}.intent-box p{color:var(--muted);margin:4px 0 8px}button.pledge-banner.threat{border-left-color:var(--red)}
.person-card p.ambition{font-size:10px;border-left:2px solid var(--line);padding-left:8px;margin:8px 0 0}.person-card p.ambition.met{border-color:var(--gold);color:var(--ink)}
.stage-box{border:1px solid var(--line);background:var(--panel);padding:14px 16px;margin:14px 0}.stage-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.stage-steps span{border:1px solid var(--line);padding:8px;font-size:11px;text-align:center}.stage-steps span.done{border-color:var(--gold);background:var(--soft);color:var(--gold)}.stage-steps small{display:block;font-size:9px;color:var(--muted)}.stage-box p{font-size:11px;color:var(--muted);line-height:1.8;margin:10px 0 0}.combo-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.combo-card{background:var(--panel);border:1px solid var(--line);padding:12px;font-size:11px;line-height:1.7;min-width:0}.combo-card strong{display:flex;justify-content:space-between;gap:6px;font-size:12px}.combo-card strong span{font-size:10px;font-weight:400;color:var(--muted)}.combo-card small{display:block;color:var(--muted);font-size:10px}.combo-card p{margin:6px 0 0;color:var(--muted)}.combo-card.active{border-color:var(--gold)}.combo-card.active strong span{color:var(--gold)}.combo-card.near strong span{color:var(--ink)}.combo-card.closed{opacity:.55}@media(max-width:650px){.combo-grid{grid-template-columns:1fr}}
.war-panel{background:var(--panel);border:1px solid var(--line);padding:4px 16px 16px;margin:16px 0;font-size:11px;line-height:1.8;color:var(--muted)}.war-panel.active{border-color:var(--red);border-left-width:3px}.war-panel strong{color:var(--ink)}.war-panel .outline-btn{width:100%}.war-track{position:relative;height:22px;background:linear-gradient(90deg,#bd7d7944 0 20%,var(--line) 20% 85%,#b28a4244 85%);margin:6px 0 4px;display:flex;justify-content:space-between;align-items:flex-end;font-size:9px;padding:0 4px}.war-track i{position:absolute;top:0;width:3px;height:14px;background:var(--ink);transform:translateX(-1px)}.war-history{margin:6px 0 10px;padding-left:18px}
@media(max-width:720px){.era-picker{grid-template-columns:repeat(3,minmax(0,1fr));align-items:stretch}.era-option{flex-direction:column;align-items:flex-start;gap:4px;padding:10px 12px}.era-option strong{font-size:22px}.era-option span{font-size:10px;line-height:1.5}}
.map-country.unavailable{opacity:.4;pointer-events:none}
.chance-line{font-size:10px;color:var(--muted);margin:-4px 0 8px}.chance-line b{color:var(--green);font-weight:600}.chance-line.risky b{color:var(--red)}[data-theme="dark"] .chance-line b{color:#a2d0b3}[data-theme="dark"] .chance-line.risky b{color:#efa68f}.luck{display:inline-block;margin:4px 0 2px;padding:6px 12px;border:1px solid var(--line);font-size:12px}.luck.great{border-color:var(--gold);color:var(--gold);background:var(--soft)}.luck.failure{border-color:var(--red);color:var(--red)}.luck.success{color:var(--ink)}
.tactic-card small.odds{color:var(--gold);margin-top:4px}
.dynasty-card{padding:16px 18px;font-size:12px;line-height:1.8}.dynasty-card p{margin:8px 0}.dynasty-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}@media(max-width:650px){.dynasty-actions{grid-template-columns:1fr}}
.achievements{text-align:left;margin:20px 0;border:1px solid var(--line);background:var(--panel);padding:16px}.achievements h3{font-size:15px;margin:0 0 10px}.ach-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.ach{border:1px solid var(--line);padding:9px 11px;font-size:11px;line-height:1.6;opacity:.6}.ach.got{opacity:1;border-color:var(--gold)}.ach strong{display:block;font-size:12px}.ach em{font-style:normal;color:var(--gold);font-size:10px;margin-left:4px}.ach small{color:var(--muted)}@media(max-width:650px){.ach-grid{grid-template-columns:1fr}}
.atlas-ach{font-size:11px;color:var(--gold);margin:6px 0 0}
.pact-box{border-top:1px dashed var(--line);margin:12px 0;padding-top:10px}.pact-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.pact-actions .pact{text-align:left;padding:8px 10px;line-height:1.5}.pact-actions .pact strong{display:block;font-size:11px}.pact-actions .pact small{display:block;font-size:9px;color:var(--muted)}@media(max-width:650px){.pact-actions{grid-template-columns:1fr}}
.route-box{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:space-between;font-size:10px;color:var(--muted);margin:8px 0}.route-box.open span{color:var(--gold)}.route-box .outline-btn{width:auto!important;padding:6px 10px}
.province-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.province-card{background:var(--panel);border:1px solid var(--line);padding:13px 12px;font-size:11px}.province-card>span{color:var(--muted);font-size:10px}.province-card>strong{display:block;font:22px var(--serif);margin:8px 0}.province-card small{font:10px sans-serif;color:var(--muted)}.province-card .outline-btn{width:100%;margin-top:10px;font-size:10px;padding:6px}.province-card.unrest{border-color:var(--red)}.province-card.lost{opacity:.55}@media(max-width:650px){.province-grid{grid-template-columns:1fr 1fr}}
.chronicle{text-align:left;margin:20px 0}.chronicle h3{font-size:16px}.chronicle-table td{font-size:11px;line-height:1.6;vertical-align:top}.chronicle-table td:last-child{text-align:left}.chronicle-table th:last-child{text-align:left}.share-actions{margin:10px 0 20px}@media(max-width:650px){.chronicle-table thead{display:none}.chronicle-table tr{display:block;border-bottom:1px solid var(--line);padding:8px 0}.chronicle-table td{display:block;border:0!important;padding:2px 0!important}.chronicle-table td:first-child{font-weight:600}}
.guide-box{border:1px solid var(--gold);background:var(--soft);padding:14px 16px;margin:0 0 18px}.guide-head{display:flex;justify-content:space-between;align-items:center}.guide-head strong{font-size:13px}.guide-head .text-button{width:auto;padding:4px 0}.guide-box ol{list-style:none;padding:0;margin:10px 0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.guide-step{width:100%;text-align:left;border:1px solid var(--line);background:var(--panel);padding:8px 10px;line-height:1.6}.guide-step b{display:block;font-size:11px}.guide-step span{display:block;font-size:10px;color:var(--muted)}.guide-box li.done .guide-step{opacity:.6}.guide-box li.done b{color:var(--gold)}@media(max-width:650px){.guide-box ol{grid-template-columns:1fr}}
@media(max-width:650px){.guide-box li.done,.guide-box li.later{display:none}}
.province-map{margin:0 0 12px;border:1px solid var(--line);background:var(--panel);padding:10px}.province-map svg{display:block;width:100%;height:auto;max-height:340px}.province-map .prov path{fill:var(--gold);fill-opacity:calc(.15 + var(--loyal)*.65);stroke:var(--ink);stroke-width:calc(.6px * var(--u,1));stroke-opacity:.5}.province-map .prov.unrest path{stroke:var(--red);stroke-width:calc(1.6px * var(--u,1));stroke-opacity:1}.province-map .prov.lost path{fill:var(--red);fill-opacity:.25;stroke-dasharray:3 2}.province-map text{fill:var(--ink);font-weight:600;paint-order:stroke;stroke:var(--panel);stroke-width:calc(2px * var(--u,1))}.province-map text.sub{font-weight:400;fill:var(--muted)}.province-map figcaption{font-size:10px;color:var(--muted);line-height:1.7;margin-top:6px}
.region-tabs{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}.region-tabs .selected{border-color:var(--gold);color:var(--gold);background:var(--soft)}
.fate-actions{display:flex;flex-wrap:wrap;gap:8px}
.war-forecast{border:1px solid var(--line,#3a3a3a);border-radius:8px;padding:10px 12px;margin:10px 0}
.war-forecast h4{margin:0 0 6px;font-size:1rem}
.war-forecast ul{margin:0;padding-left:1.1em;display:grid;gap:4px}
.attention{border:1px solid var(--line,#3a3a3a);border-radius:10px;padding:10px 12px;margin:0 0 12px}
.attention h3{margin:0 0 8px;font-size:1.05rem}
.attention ol{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.attention button{all:unset;cursor:pointer;display:grid;grid-template-columns:auto 1fr;gap:2px 8px;width:100%;padding:6px 8px;border-radius:8px;box-sizing:border-box}
.attention button:hover,.attention button:focus-visible{background:rgba(127,127,127,.12);outline:2px solid transparent}
.attention button small{grid-column:2;opacity:.85}
.attention-tag{grid-row:span 2;align-self:start;font-size:.8rem;padding:2px 6px;border-radius:6px;border:1px solid currentColor}
.attention-risk .attention-tag{color:#e07a6a}.attention-deadline .attention-tag{color:#d9b25a}.attention-chance .attention-tag{color:#7fb08a}
.more-banners{margin:0 0 12px}.more-banners summary{cursor:pointer;padding:4px 0}
