/* Shared terminal controls: native widgets should read as part of the same console. */
select {
  appearance: none;
  -webkit-appearance: none;
  min-height: 28px;
  padding: 5px 28px 5px 9px;
  border: 1px solid var(--line);
  border-radius: 0;
  color: var(--text);
  background-color: #080d09;
  background-image:
    linear-gradient(45deg, transparent 50%, var(--amber) 50%),
    linear-gradient(135deg, var(--amber) 50%, transparent 50%),
    linear-gradient(to left, var(--line-dim), var(--line-dim));
  background-position:
    calc(100% - 12px) 11px,
    calc(100% - 8px) 11px,
    calc(100% - 23px) 0;
  background-size: 4px 4px, 4px 4px, 1px 100%;
  background-repeat: no-repeat;
  font: 10px var(--mono);
  cursor: pointer;
  outline: none;
}

select:hover { border-color: #8d8254; color: #eee6ba; }
select:focus { border-color: var(--amber); box-shadow: 0 0 0 1px #d0a94c33, inset 0 0 8px #8ea34b16; }
select:disabled { opacity: .4; cursor: not-allowed; }
select option { color: var(--text); background: #101710; }

.terminal-select { position: relative; min-width: 92px; color: var(--text); font: 10px var(--mono); }
.terminal-select-native {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  margin: -1px !important;
  padding: 0 !important;
  overflow: hidden !important;
  clip: rect(0 0 0 0) !important;
  clip-path: inset(50%) !important;
  white-space: nowrap !important;
  border: 0 !important;
}
.terminal-select-button {
  width: 100%;
  min-height: 28px;
  display: grid;
  grid-template-columns: minmax(0,1fr) 22px;
  align-items: center;
  padding: 0 0 0 9px;
  border: 1px solid var(--line);
  border-radius: 0;
  background: #080d09;
  color: var(--text);
  font: 10px var(--mono);
  text-align: left;
  cursor: pointer;
}
.terminal-select-button span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.terminal-select-button i { height: 100%; min-height: 28px; align-self: stretch; display: grid; place-items: center; border-left: 1px solid var(--line-dim); position: relative; }
.terminal-select-button i::after { content: ""; position: absolute; left: 50%; top: 50%; width: 6px; height: 6px; border-right: 1px solid var(--amber); border-bottom: 1px solid var(--amber); transform: translate(-50%,-60%) rotate(45deg); }
.terminal-select.open .terminal-select-button { border-color: var(--amber); color: #eee6ba; box-shadow: inset 0 0 8px #8ea34b16; }
.terminal-select.open .terminal-select-button i::after { transform: translate(-50%,-35%) rotate(225deg); }
.terminal-select-list {
  position: absolute;
  z-index: 300;
  left: 0;
  right: 0;
  top: calc(100% + 2px);
  max-height: min(260px, 45vh);
  overflow: auto;
  padding: 3px;
  border: 1px solid var(--amber);
  background: #090e0a;
  box-shadow: 5px 7px 20px #000c, inset 0 0 0 1px #202a1c;
}
.terminal-select-list[hidden] { display: none; }
.terminal-select-list button { display: block; width: 100%; padding: 7px 8px; border: 0; border-bottom: 1px dotted var(--line-dim); background: transparent; color: var(--muted); font: 10px var(--mono); text-align: left; cursor: pointer; }
.terminal-select-list button:last-child { border-bottom: 0; }
.terminal-select-list button:focus,.terminal-select-list button.selected { background: #202b1d; color: #eee6ba; }
.terminal-select-list button.selected::before { content: "> "; color: var(--amber); }

.command-book-launch {
  width: 100%;
  margin-top: 6px;
  padding: 7px 9px;
  border: 1px solid var(--amber);
  background: linear-gradient(90deg,#202a1c,#141c13);
  color: #e5d99e;
  font: 700 10px var(--mono);
  letter-spacing: .08em;
  cursor: pointer;
}
.main-nav .nav-command-book { display: block; margin-left: 4px; padding-inline: 11px; border: 1px solid var(--amber); background: #202a1c; color: #e5d99e; font-weight: 700; }

.command-dialog { width: min(760px, 94vw); max-width: min(760px, 94vw); max-height: 90vh; overflow: hidden; }
.command-browser { grid-template-columns: minmax(112px, 150px) minmax(0, 1fr); min-width: 0; min-height: 0; height: min(620px, 74vh); max-height: 74vh; }
.command-browser nav, .command-browser section { min-width: 0; min-height: 0; }
.command-browser section { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.command-choice { position: relative; display: grid; grid-template-columns: minmax(0, 1fr); gap: 4px; align-content: center; min-width: 0; max-width: 100%; overflow: hidden; }
.command-choice > span { min-width: 0; max-width: 100%; overflow-wrap: anywhere; color: #ddd5aa; }
.command-choice small { float: none; min-width: 0; max-width: 100%; overflow-wrap: anywhere; text-align: left; white-space: normal; line-height: 1.4; }
.command-browser nav button i { display: inline-block; min-width: 1.6em; color: var(--muted); font-style: normal; font-size: .85em; }
.command-affair-divider { margin: 10px 8px 2px; color: var(--muted); font-size: 9px; letter-spacing: .2em; }
.command-affair-head { grid-column: 1 / -1; display: grid; gap: 6px; min-width: 0; }
.command-affair-head p { margin: 0; color: var(--muted); font-size: 10px; line-height: 1.5; }
.command-subfilter { display: flex; flex-wrap: wrap; gap: 4px; }
.command-browser .command-subfilter button { display: inline-block; width: auto; border: 1px solid var(--line-dim); background: transparent; color: var(--muted); padding: 3px 8px; font-size: 10px; cursor: pointer; }
.command-browser .command-subfilter button.active { color: var(--amber); border-color: var(--amber); background: #87945c16; }

.ui-tooltip {
  position: fixed;
  z-index: 250;
  inset: auto;
  margin: 0;
  width: max-content;
  height: max-content;
  max-width: min(220px, calc(100vw - 24px));
  max-height: min(120px, calc(100vh - 24px));
  overflow: auto;
  overflow-wrap: anywhere;
  padding: 6px 9px;
  border: 1px solid #efd36d;
  background: #10170ff5;
  color: #fff2b5;
  box-shadow: 4px 5px 16px #000d, inset 0 0 0 1px #59633e;
  font: 9px/1.45 var(--mono);
  pointer-events: none;
}
.ui-tooltip::before { content: "> "; color: var(--green); }
.ui-tooltip[hidden] { display: none; }
.static-hosting .control-mode,.static-hosting #askAdvisorButton,.static-hosting #aiSettingsButton,.static-hosting [data-external-ai]{display:none!important}
dialog[open] { overflow: visible; }
.command-dialog { overflow: visible; }

.advanced-tools { margin-top: 14px; border-top: 1px dotted var(--line); padding-top: 8px; color: var(--muted); }
.advanced-tools summary { color: var(--amber); cursor: pointer; }
.advanced-tools button { border: 1px solid var(--line); background: #172016; color: var(--green); padding: 6px 9px; cursor: pointer; }

.planner-content .terminal-select { width: 100%; }
.control-mode .terminal-select { flex: 1; min-width: 0; }
.control-mode .terminal-select-button { height: 20px; min-height: 20px; grid-template-columns: minmax(0,1fr) 18px; padding: 0 0 0 6px; font: 8px/1.2 var(--mono); }
.control-mode .terminal-select-button i { height: auto; min-height: 0; }
.control-mode .terminal-select-button span { color: inherit; }
.control-mode > button { height: 20px; padding: 0 6px; line-height: 1.2; }
.planner-description { grid-column: 1 / -1; margin: 0; border-left: 2px solid var(--amber); padding: 7px 9px; background: #0a100b; color: var(--muted); font-size: 9px; }
.difficulty-select .terminal-select { display: inline-block; min-width: 84px; margin-left: 6px; vertical-align: middle; }
.observer-controls .terminal-select { width: 82px; min-width: 82px; }
.observer-controls .terminal-select-button { min-height: 24px; }
.observer-controls .terminal-select-button i { min-height: 24px; }

.map-legend-item { display: inline-flex; align-items: center; gap: 4px; border: 1px solid transparent; padding: 2px 4px; background: transparent; color: var(--muted); font: inherit; cursor: pointer; }
.map-legend-item i { display: inline-block; flex: 0 0 9px; width: 9px; height: 9px; border: 1px solid #ffffff22; }
.map-legend-item.is-hidden { opacity: .42; text-decoration: line-through; }

dialog.wide-dialog[open] { display: flex; flex-direction: column; max-height: 90vh; }
dialog.wide-dialog > .dialog-content { min-height: 0; overflow: auto; }
.report-history { flex: 1 1 auto; min-height: 0; max-height: calc(90vh - 44px); overflow: auto; overscroll-behavior: contain; contain: content; }
.report-count { position: sticky; top: -8px; z-index: 1; padding: 4px 2px 7px; background: #101710; border-bottom: 1px solid var(--line-dim); color: var(--muted); font-size: 9px; }
.report-turn { margin: 6px 0; border: 1px solid var(--line-dim); background: #0b100c; color: var(--muted); }
.report-turn > summary { display: flex; align-items: center; gap: 10px; padding: 7px 9px; color: var(--text); cursor: pointer; list-style: none; }
.report-turn > summary::-webkit-details-marker { display: none; }
.report-turn > summary::before { content: "+"; color: var(--amber); }
.report-turn[open] > summary::before { content: "−"; }
.report-turn > summary b { color: var(--amber); }
.report-turn > summary em { margin-left: auto; color: var(--muted); font-style: normal; font-size: 9px; }
.report-summary { padding: 0 12px; }
.report-section { margin: 5px 10px; border-top: 1px dotted var(--line-dim); }
.report-section > summary { padding: 5px 2px; color: var(--green); cursor: pointer; font-size: 9px; }
.report-section ol { margin: 2px 0 8px; padding-left: 22px; font-size: 9px; }
.report-section li,.battle-event { padding: 3px 0; overflow-wrap: anywhere; }
.report-phase,.battle-event > span { color: var(--amber); }
.own-report { border-left: 2px solid var(--amber); padding-left: 6px; }
.report-load-more { display: block; width: 100%; margin: 8px 0; padding: 8px; border: 1px solid var(--line); background: #172016; color: var(--green); cursor: pointer; font: 10px var(--mono); }
.battle-group { border-left: 2px solid var(--amber); }
.battle-group > .battle-event { margin: 4px 12px; font-size: 9px; }
.battle-group .battle-art { color: #b8a765; }
.battle-group .ledger-table { margin: 6px 12px 10px; width: calc(100% - 24px); }

dialog.diplomacy-ledger { width: min(900px, 94vw); max-width: min(900px, 94vw); }
.diplomacy-network { margin-top: 8px; border: 1px solid #3c4738; background: radial-gradient(circle at 50% 45%, #1d291c, #090e0a 72%); overflow: hidden; }
.diplomacy-network-legend { display: flex; flex-wrap: wrap; gap: 5px 12px; padding: 6px 8px; border-bottom: 1px solid #354032; background: #111811; font-size: 8px; color: var(--muted); }
.diplomacy-network-legend span::before { content: ""; display: inline-block; width: 15px; margin-right: 4px; border-top: 2px solid currentColor; vertical-align: 2px; }
.diplomacy-network-map { display: block; width: 100%; max-height: 52vh; min-height: 310px; }
.diplomacy-edge { stroke: #697061; stroke-width: 1; opacity: .13; transition: opacity .15s, stroke-width .15s; }
.diplomacy-edge.is-center-edge { opacity: .48; stroke-width: 1.4; }
.diplomacy-edge.relation-war,.diplomacy-network-legend .relation-war { stroke: #c75a4c; color: #c75a4c; opacity: .9; stroke-width: 2.2; }
.diplomacy-edge.relation-alliance,.diplomacy-network-legend .relation-alliance { stroke: #66a96b; color: #66a96b; opacity: .8; stroke-width: 2; }
.diplomacy-edge.relation-truce,.diplomacy-network-legend .relation-truce { stroke: #d0b768; color: #d0b768; opacity: .7; stroke-dasharray: 6 4; }
.diplomacy-edge.relation-vassal,.diplomacy-network-legend .relation-vassal { stroke: #a67bd1; color: #a67bd1; opacity: .82; stroke-width: 2; stroke-dasharray: 2 3; }
.diplomacy-edge.relation-friendly,.diplomacy-network-legend .relation-friendly { stroke: #6c956c; color: #6c956c; }
.diplomacy-edge.relation-hostile,.diplomacy-network-legend .relation-hostile { stroke: #9b554a; color: #9b554a; }
.diplomacy-edge.is-dim { opacity: .035; }
.diplomacy-node { cursor: pointer; outline: none; }
.diplomacy-node circle { fill: color-mix(in srgb, var(--force-color) 64%, #111 36%); stroke: #a4aa91; stroke-width: 1.2; filter: drop-shadow(2px 3px 2px #000b); transition: stroke-width .15s, filter .15s; }
.diplomacy-node text { fill: #f2edcf; font: 700 10px var(--mono); text-anchor: middle; pointer-events: none; paint-order: stroke; stroke: #101410; stroke-width: 2px; }
.diplomacy-node:hover circle,.diplomacy-node:focus-visible circle,.diplomacy-node.is-selected circle { stroke: #ffe39a; stroke-width: 3; filter: drop-shadow(0 0 5px #d8bd6577); }
.diplomacy-node.is-player circle,.diplomacy-node.is-center circle { stroke: #ffe39a; }
.diplomacy-focus { border-top: 1px solid #3b4637; padding: 7px 8px 8px; background: #0c120d; }
.diplomacy-focus[hidden] { display: none; }
.diplomacy-focus header { display: flex; align-items: center; gap: 7px; margin-bottom: 6px; }
.diplomacy-focus header i { width: 10px; height: 10px; background: var(--force-color); border: 1px solid #c5c9ae; }
.diplomacy-focus header b { color: var(--amber); }
.diplomacy-focus header span { color: var(--muted); font-size: 8px; }
.diplomacy-focus > div { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 4px; }
.relation-chip { display: flex; justify-content: space-between; gap: 6px; min-width: 0; border: 1px solid #354032; padding: 5px 6px; background: #151d15; color: var(--muted); font: 8px var(--mono); cursor: pointer; }
.relation-chip b { overflow: hidden; color: var(--text); text-overflow: ellipsis; white-space: nowrap; }
.relation-chip span { white-space: nowrap; }
.relation-chip.relation-war { border-left: 3px solid #c75a4c; }.relation-chip.relation-alliance { border-left: 3px solid #66a96b; }.relation-chip.relation-truce { border-left: 3px solid #d0b768; }.relation-chip.relation-vassal { border-left: 3px solid #a67bd1; }.relation-chip.relation-hostile { border-left: 3px solid #9b554a; }.relation-chip.relation-friendly { border-left: 3px solid #6c956c; }
.diplomacy-table-details { margin-top: 8px; border: 1px solid #354032; }
.diplomacy-table-details > summary { padding: 7px 9px; background: #121a12; color: var(--muted); font-size: 9px; cursor: pointer; }
@media(max-width:700px){.diplomacy-network-map{min-height:250px}.diplomacy-focus>div{grid-template-columns:1fr 1fr}}

@media (max-width: 720px) {
  .command-book-launch { margin-top: 4px; }
  .main-nav > .nav-command-book { display: block !important; }
}
@media (max-width: 560px) {
  .command-dialog { width: 96vw; max-width: 96vw; }
  .command-browser { grid-template-columns: minmax(88px, 105px) minmax(0, 1fr); height: min(620px, 76vh); max-height: 76vh; }
  .command-browser nav { padding: 5px; }
  .command-browser nav button { padding: 8px 5px; font-size: 9px; overflow-wrap: anywhere; }
  .command-browser section { grid-template-columns: minmax(0, 1fr); padding: 8px; }
  .command-choice { padding: 8px; }
}
.turn-briefing-dialog{width:min(660px,92vw);max-width:660px;max-height:88vh;padding:0;border:1px solid var(--amber,#c5a45b);background:#101710;color:var(--text,#d5d0a6);box-shadow:0 10px 50px #000;overflow:hidden}
.turn-briefing-dialog::backdrop{background:#000b}
.turn-briefing-dialog .dialog-title{position:sticky;top:0;z-index:1}
.turn-briefing-body{max-height:calc(88vh - 112px);overflow:auto;padding:14px 18px}
.turn-briefing-body h2{margin:8px 0 14px;color:var(--amber,#c5a45b);font-size:15px}
.turn-briefing-body section{border-top:1px solid #454735;padding:10px 0}
.turn-briefing-body h3{margin:0 0 7px;color:#c5b985;font-size:11px}
.turn-briefing-body ul{margin:0;padding-left:20px}
.turn-briefing-body li{padding:3px 0;font-size:11px;line-height:1.55}
.turn-briefing-body li span,.briefing-date{color:var(--amber,#c5a45b)}
.briefing-empty{margin:4px 0;color:#858775;font-size:10px}
.turn-briefing-footer{display:flex;justify-content:flex-end;padding:10px 16px;border-top:1px solid #454735;background:#101710}
.turn-briefing-footer button{border:1px solid var(--amber,#c5a45b);background:#20281a;color:var(--text,#d5d0a6);padding:8px 16px;font:inherit;cursor:pointer}

/* Version 1.0 campaign shell and local save manager. */
.start-screen [hidden]{display:none!important}
.start-terminal.main-menu{width:min(1080px,96vw);height:min(760px,94vh);border-color:#a78a48;background:linear-gradient(145deg,#101810 0%,#0b100c 65%,#10170f 100%)}
.main-menu .menu-header{min-height:94px;padding:18px 24px}.menu-header .brand-mark{width:54px;height:54px;font-size:32px}.menu-header h1{font-size:34px}.menu-build{margin-left:auto;text-align:right;color:#78816d;font-size:9px;line-height:1.7;letter-spacing:.1em}
.start-nav{display:flex;gap:2px;padding:5px 14px;border-bottom:1px solid var(--line-dim);background:#090e0a}.start-nav button{min-width:94px;padding:9px 13px;border:1px solid transparent;background:transparent;color:var(--muted);font:10px var(--mono);cursor:pointer}.start-nav button.selected{border-color:#586044;background:#1a2418;color:var(--amber)}.start-nav button.selected::before{content:"> "}
.start-view:not([hidden]){flex:1;min-height:0}.menu-home{display:grid;grid-template-columns:minmax(210px,.85fr) minmax(300px,1.25fr) minmax(160px,.65fr);align-items:center;gap:24px;padding:34px 7%}.home-mark{display:grid;place-items:center;width:min(230px,22vw);aspect-ratio:1;border:1px solid #675831;color:#c8a857;font:clamp(90px,13vw,150px) serif;text-shadow:0 0 30px #d0a94c33;box-shadow:inset 0 0 50px #a77b2815,0 0 0 8px #a77b2807;background:radial-gradient(circle,#27301c,#111710 68%)}
.home-copy>small,.view-heading small{color:var(--green);font-size:9px;letter-spacing:.16em}.home-copy h2{margin:14px 0;font:34px/1.4 serif;color:#e1d8ad;letter-spacing:.08em}.home-copy p,.view-heading p{max-width:440px;color:#858a75;font-size:10px;line-height:1.8}.home-actions{display:flex;flex-direction:column;gap:8px;margin-top:24px}.home-actions button{min-height:42px;padding:8px 13px;border:1px solid var(--line);background:#111811;color:var(--text);text-align:left;font:11px var(--mono);cursor:pointer}.home-actions .menu-primary{display:flex;justify-content:space-between;align-items:center;border-color:#a78a48;background:#252b19;color:#ecd78f;font-weight:bold}.home-actions .menu-primary span{color:#a8a486;font-size:9px;font-weight:normal}
.home-side{align-self:center;border-left:1px solid var(--line-dim);padding-left:18px}.menu-stat{padding:10px 0;border-bottom:1px dotted var(--line-dim)}.menu-stat span,.menu-stat b{display:block;font-size:9px}.menu-stat span{color:#7b816e;margin-bottom:5px}.menu-stat b{color:#c7c09b;font-weight:normal}
.save-view,.settings-view{overflow:auto;padding:22px 28px}.view-heading{display:flex;justify-content:space-between;align-items:end;gap:20px;margin-bottom:18px;border-bottom:1px solid var(--line-dim);padding-bottom:12px}.view-heading h2{margin:7px 0 0;color:var(--amber);font-size:16px}.view-heading p{margin:0;text-align:right}.save-slots{display:grid;gap:8px}.save-slot{display:grid;grid-template-columns:46px minmax(0,1fr) auto;align-items:center;gap:12px;min-height:62px;border:1px solid var(--line-dim);background:#0b110c;padding:8px 11px}.save-slot .slot-number{color:#9b8246;font:20px serif;text-align:center}.save-slot b,.save-slot small{display:block}.save-slot b{color:#d7d0a7;font-size:10px}.save-slot small{margin-top:5px;color:#828875;font-size:9px}.save-slot button,.exit-card button,.settings-grid>button{min-width:82px;padding:7px 10px;border:1px solid #786638;background:#202719;color:#dcc575;font:10px var(--mono);cursor:pointer}.empty-slot{opacity:.72}.no-saves{padding:22px;border:1px dashed var(--line-dim);color:#858a75;text-align:center;font-size:10px}
.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;padding:10px 0}.settings-grid>label{display:grid;gap:8px;align-content:start;color:#d1c99f;font-size:10px}.settings-grid select{width:100%;min-height:34px}.settings-grid label small{color:#808775;font-size:9px;line-height:1.6}.settings-grid .setting-check{display:flex;grid-column:1/-1;align-items:center;gap:9px;padding:10px;border:1px solid var(--line-dim)}.setting-check input{accent-color:#c2a251;width:14px;height:14px}.settings-note{grid-column:1/-1;margin:0;border-left:2px solid var(--amber);padding:8px 10px;background:#0b110c;color:#858a75;font-size:9px;line-height:1.7}.exit-view{display:grid;place-items:center;padding:20px}.exit-card{text-align:center;max-width:430px}.exit-card .brand-mark{margin:auto;width:62px;height:62px;font-size:34px}.exit-card h2{font:22px serif;color:#ded7ad}.exit-card p{color:#858a75;font-size:10px;line-height:1.8}
.start-footer .menu-footer-actions{display:flex;gap:8px}.start-footer #startBackButton{background:transparent;color:#c5bd91;border-color:var(--line)}.new-save-slot{display:flex;align-items:center;gap:5px;color:#858a75;font-size:9px}.new-save-slot select{max-width:150px}.new-save-slot .terminal-select{max-width:150px}.start-footer .terminal-select-button{border:1px solid var(--line);background:#080d09;color:var(--text);padding:0 0 0 9px;font:10px var(--mono);font-weight:normal}
.start-grid>section{min-width:0;scrollbar-gutter:stable;overscroll-behavior:contain;padding-right:6px}
.start-terminal.main-menu{overflow:hidden;background:#0d130e}
.main-menu .menu-home{grid-template-columns:minmax(180px,.7fr) minmax(280px,1.3fr)}
.home-utilities{display:flex;gap:6px;margin-top:18px;padding-top:12px;border-top:1px solid var(--line-dim)}
.home-utilities button{border:1px solid var(--line-dim);background:#111811;color:var(--muted);padding:8px 12px;font:10px var(--mono);cursor:pointer}
.campaign-flow{display:flex;flex-direction:column;min-width:0;overflow:hidden}
.campaign-steps{display:flex;flex:0 0 auto;gap:6px;padding:10px 20px;border-bottom:1px solid var(--line-dim);background:#090e0a}
.campaign-steps button{flex:1;min-width:0;padding:9px 8px;border:1px solid var(--line-dim);background:#111811;color:var(--muted);font:10px var(--mono);cursor:pointer}
.campaign-steps button[aria-current="step"]{border-color:var(--amber);color:var(--amber)}
.campaign-pane{display:flex;flex:1;flex-direction:column;min-width:0;min-height:0;padding:18px 20px;overflow:hidden}
.campaign-heading{display:flex;align-items:baseline;justify-content:space-between;flex:0 0 auto;gap:12px;margin-bottom:14px}
.campaign-heading h2{margin:0;color:var(--amber);font:12px var(--mono)}
.campaign-heading p{margin:0;color:var(--muted);font-size:10px;line-height:1.6}
#startScenarioStep .start-choices{grid-template-columns:repeat(3,minmax(0,1fr));align-content:start;overflow:auto;min-height:0;padding:2px 6px 8px 2px;scrollbar-gutter:stable;overscroll-behavior:contain}
#startScenarioStep .start-choice{min-height:170px;padding:20px 16px}
#startScenarioStep .start-choice b{font-size:17px;margin-bottom:12px}
#startScenarioStep .start-choice small{font-size:11px;line-height:1.8}
.campaign-force-layout{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:18px;flex:1;min-height:0;min-width:0}
.campaign-force-layout .force-choices{grid-template-columns:repeat(3,minmax(0,1fr));align-content:start;min-height:0;overflow:auto;padding:2px 6px 8px 2px;scrollbar-gutter:stable;overscroll-behavior:contain}
.campaign-force-layout .start-choice{min-height:65px;padding:10px}
.campaign-force-layout .start-choice b{font-size:12px}
.campaign-force-layout .start-choice small{font-size:10px}
.campaign-brief{min-width:0;min-height:0;overflow:auto;scrollbar-gutter:stable;overscroll-behavior:contain;border:1px solid var(--line-dim);border-top:2px solid var(--amber);background:#090e0a;padding:14px}
.campaign-brief h3{margin:0 0 12px;color:var(--text);font:17px serif}
.campaign-brief h4{margin:18px 0 6px;color:var(--amber);font:10px var(--mono)}
.campaign-brief p{margin:0;color:var(--muted);font-size:11px;line-height:1.85;overflow-wrap:anywhere}
.campaign-brief .start-historical-brief{border:0;background:none;padding:0}
.campaign-setup-layout{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:28px;min-height:0;overflow:auto;scrollbar-gutter:stable;overscroll-behavior:contain}
.campaign-confirm{border-left:2px solid var(--amber);padding:8px 16px;background:#090e0a}
.campaign-confirm>span{color:var(--amber);font-size:10px}
.campaign-confirm h3{margin:12px 0;color:var(--text);font:18px serif}
.campaign-confirm p{color:var(--muted);font-size:11px;line-height:1.8}
.campaign-setup-layout .settings-grid{grid-template-columns:1fr;align-content:start}
.start-screen .start-footer{flex:0 0 auto!important;min-height:58px;gap:12px}
.start-footer #startSummary{min-width:0;overflow-wrap:anywhere}
.start-footer .menu-footer-actions{align-items:center;flex-wrap:wrap;justify-content:flex-end}
@media(max-width:700px){.main-menu .menu-home{grid-template-columns:1fr}.campaign-steps{padding:8px 10px;gap:4px}.campaign-steps button{font-size:9px;padding:8px 4px}.campaign-pane{padding:12px 10px}.campaign-heading{gap:8px;margin-bottom:10px}.campaign-heading p{font-size:9px}#startScenarioStep .start-choices{grid-template-columns:1fr}#startScenarioStep .start-choice{min-height:0;padding:13px}#startScenarioStep .start-choice b{font-size:14px;margin-bottom:5px}.campaign-force-layout{grid-template-columns:1fr;grid-template-rows:minmax(80px,1fr) minmax(90px,155px);gap:10px}.campaign-force-layout .force-choices{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.campaign-force-layout .start-choice{min-height:60px;padding:8px}.campaign-force-layout .start-choice small{font-size:9px}.campaign-brief{padding:10px}.campaign-brief h3{font-size:14px;margin-bottom:8px}.campaign-brief p{font-size:10px}.campaign-brief h4{margin:10px 0 4px}.campaign-setup-layout{grid-template-columns:1fr;gap:10px}.campaign-confirm h3{font-size:16px}.start-screen .start-footer{gap:6px}.start-footer #startSummary{font-size:9px}.home-utilities{gap:5px}.home-utilities button{flex:1;padding:8px}}
@media(max-width:420px){.campaign-steps button{font-size:8px}.campaign-force-layout .force-choices{grid-template-columns:repeat(2,minmax(0,1fr))}.campaign-heading{align-items:flex-start;flex-direction:column;gap:3px}.start-screen .start-footer{align-items:flex-start;flex-direction:column}.start-footer .menu-footer-actions{width:100%;justify-content:space-between}.new-save-slot{margin-left:auto;margin-right:auto}}
.save-manager-dialog{width:min(560px,92vw)}.save-manager-dialog .dialog-content{max-height:72vh;overflow:auto}.save-manager-note{margin:0 0 12px;color:#858a75;font-size:9px}.game-save-slots{gap:6px}.game-save-slots .save-slot{grid-template-columns:34px minmax(0,1fr) auto;min-height:54px;padding:6px}.game-save-slots .slot-number{font-size:16px}.settings-dialog{width:min(500px,92vw)}.settings-dialog .settings-grid{padding:5px 0}.confirm-turn-dialog{width:min(390px,90vw)}#confirmTurnDialog{width:min(720px,94vw)}.confirm-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}.confirm-actions button{padding:8px 11px;border:1px solid var(--line);background:#131b13;color:#c4bd94;font:10px var(--mono);cursor:pointer}.confirm-actions #confirmTurnYes{border-color:var(--amber);background:#252b19;color:#e2cc78}
.new-save-slot input,.save-library-actions input{min-width:0;width:160px;max-width:100%;border:1px solid var(--line);background:#080d09;color:var(--text);font:10px var(--mono);padding:7px}
.save-library-actions{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}.save-library-actions[hidden]{display:none}.save-library-actions input{flex:1 1 160px}.save-library-actions button{border:1px solid var(--line);background:#131b13;color:#c4bd94;font:10px var(--mono);padding:7px;cursor:pointer}.save-slot>div{min-width:0}.save-slot b,.save-slot small{overflow-wrap:anywhere}
@media(max-width:420px){.new-save-slot input{width:110px}.save-library-actions button{flex:1}}
@media(max-width:700px){.start-terminal.main-menu{height:96vh}.main-menu .menu-header{min-height:74px;padding:10px 12px}.menu-header h1{font-size:25px}.menu-build{font-size:7px}.start-nav{overflow-x:auto;padding:4px}.start-nav button{min-width:72px;padding:8px 6px;font-size:9px}.menu-home{grid-template-columns:1fr;grid-template-rows:auto 1fr;padding:15px 18px;gap:10px;overflow:auto}.home-mark{display:none}.home-copy h2{font-size:28px}.home-copy p{margin:5px 0}.home-actions{margin-top:12px}.home-side{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;border:0;border-top:1px solid var(--line-dim);padding:7px 0 0}.menu-stat{border:0}.start-grid{grid-template-columns:1fr;padding:12px}.view-heading{align-items:start;flex-direction:column;gap:4px}.view-heading p{text-align:left}.save-view,.settings-view{padding:14px}.settings-grid{grid-template-columns:1fr}.settings-grid .setting-check,.settings-note{grid-column:1}.save-slot{grid-template-columns:30px minmax(0,1fr) auto;gap:6px;padding:6px}.save-slot small{font-size:8px}.save-slot button{min-width:62px;padding:6px;font-size:9px}.start-footer{padding:8px 10px!important}.start-footer button{padding:7px 9px}.start-footer .menu-footer-actions{gap:4px}.new-save-slot{flex-direction:column;align-items:flex-start}.new-save-slot select{max-width:108px;font-size:8px}.new-save-slot .terminal-select{max-width:108px}.new-save-slot .terminal-select-button{max-width:108px;font-size:8px;padding:0 0 0 7px}}

/* City detail dossier: compact metrics, scannable roster, and explicit actions. */
.detail-content:has(.city-detail-hero){padding:12px 16px 15px;}
.city-detail-hero{display:grid;grid-template-columns:60px minmax(0,1fr) auto;gap:12px;align-items:center;border-bottom:1px solid var(--line-dim);padding:2px 0 12px;}
.city-detail-hero .detail-seal{width:58px;height:58px;font-size:27px;}
.city-hero-main h2{margin:3px 0 4px;color:#e1d8ad;font:24px serif;}
.city-eyebrow{color:var(--muted);font-size:9px;}.city-hero-main p{margin:0;color:#91947e;font-size:9px;}.city-hero-main p i{padding:0 4px;color:#5f654f;font-style:normal;}
.city-hero-status{border-left:1px solid var(--line-dim);padding-left:12px;text-align:right;}.city-hero-status span,.city-hero-status b{display:block;font-size:8px;}.city-hero-status span{color:var(--muted);}.city-hero-status b{margin-top:4px;color:var(--green);font-weight:normal;}
.city-kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin:9px 0;}.city-kpi-grid article{min-width:0;padding:7px 8px;border:1px solid var(--line-dim);background:#0a100b;}.city-kpi-grid small,.city-kpi-grid span{display:block;color:var(--muted);font-size:8px;}.city-kpi-grid b{display:block;overflow:hidden;margin:4px 0;color:#ddd5aa;font-size:13px;text-overflow:ellipsis;white-space:nowrap;}.city-kpi-grid b i{color:#777c65;font-size:9px;font-style:normal;}.city-kpi-grid span{color:#777e6b;}
.city-kpi-grid .city-stock-values{font-size:11px;line-height:1.1;white-space:normal;}
.city-history-basis{margin:0 0 9px;border-left:2px solid #89753f;padding:5px 8px;background:#11170f;color:#8d927c;font-size:8px;line-height:1.55;}
.city-detail-columns{display:grid;grid-template-columns:minmax(190px,.82fr) minmax(260px,1.18fr);gap:8px;}.city-detail-panel{min-width:0;padding:8px;border:1px solid var(--line-dim);background:#0b110c;}.city-panel-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px;border-bottom:1px dotted #343c2e;padding-bottom:5px;}.city-panel-title h3{margin:0;color:var(--amber);font-size:10px;}.city-panel-title small{color:#737a67;font-size:7px;letter-spacing:.08em;}
.city-stat-row{display:grid;grid-template-columns:36px minmax(30px,1fr) 24px;gap:7px;align-items:center;padding:5px 0;color:var(--muted);font-size:9px;}.city-stat-row>b{text-align:right;color:#d1c99f;font-size:9px;}.city-stat-meter,.army-meter{height:5px;overflow:hidden;background:#20271c;}.city-stat-meter i,.army-meter i{display:block;height:100%;background:#91a15b;}.city-stat-meter.commerce i{background:#b99c54;}.city-stat-meter.order i{background:#6eaa79;}.city-status-foot{display:flex;justify-content:space-between;gap:5px;margin-top:5px;border-top:1px dotted #343c2e;padding-top:6px;color:#838875;font-size:8px;}.city-status-foot b{color:#d1c99f;}.city-buildings{display:grid;grid-template-columns:58px 1fr;gap:6px;margin-top:7px;padding-top:6px;border-top:1px dotted #343c2e;font-size:8px;}.city-buildings small{color:#828875;}.city-buildings span{color:#b7b08e;}
.city-officer-list,.city-army-list{display:grid;gap:5px;max-height:216px;overflow:auto;overscroll-behavior:contain;}.city-officer-card{display:grid;grid-template-columns:28px minmax(70px,1fr) auto;gap:6px;align-items:center;width:100%;padding:5px;border:1px solid #30392b;background:#101710;color:var(--text);text-align:left;cursor:pointer;}.city-officer-seal{width:26px;height:29px;display:grid;place-items:center;border:1px solid #596044;color:#d0c594;font:14px serif;}.city-officer-main{min-width:0;}.city-officer-main b,.city-officer-main small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.city-officer-main b{color:#ddd5aa;font-size:9px;}.city-officer-main b em{margin-left:5px;color:var(--amber);font-size:7px;font-style:normal;}.city-officer-main small{margin-top:3px;color:#818875;font-size:7px;}.city-officer-abilities{display:flex;gap:4px;}.city-officer-abilities i{padding:2px 3px;background:#1b2419;color:#8d9479;font-size:7px;font-style:normal;}.city-officer-abilities b{color:#d0c594;font-weight:normal;}.city-empty{margin:8px 2px;color:#77806d;font-size:8px;}
.city-army-panel{grid-column:1/-1;}.city-army-list{grid-template-columns:repeat(2,minmax(0,1fr));max-height:124px;}.city-army-card{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:5px;align-items:center;padding:6px;border:1px solid #30392b;background:#101710;color:var(--text);text-align:left;cursor:pointer;}.city-army-card>span:first-child{min-width:0;}.city-army-card b,.city-army-card small{display:block;}.city-army-card b{overflow:hidden;color:#ddd5aa;font-size:9px;text-overflow:ellipsis;white-space:nowrap;}.city-army-card span small{margin-top:3px;color:#818875;font-size:7px;}.city-army-card strong{color:var(--green);font-size:11px;}.city-army-card strong small{display:inline;margin-left:2px;color:#818875;font-size:7px;font-weight:normal;}.city-army-card .army-meter{grid-column:1/-1;height:3px;}.city-army-card .army-meter i{background:#b3944b;}
.city-army-card[disabled],.city-officer-card[disabled]{cursor:default;opacity:.88;}
.city-detail-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin-top:9px;}.city-detail-actions button{min-width:0;padding:8px;border:1px solid #665832;background:#171f16;color:#d6c77f;text-align:left;cursor:pointer;}.city-detail-actions b,.city-detail-actions small{display:block;}.city-detail-actions b{font-size:9px;}.city-detail-actions small{margin-top:4px;color:#838875;font-size:7px;line-height:1.4;}
.administration-panel{margin-top:10px}.county-list{margin:4px 0 8px;color:#858b76;font-size:8px;line-height:1.6}.office-slot-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;margin:7px 0}.office-slot{min-width:0;border:1px solid #30392b;background:#0b110c;color:inherit;font:inherit;text-align:left;padding:6px;cursor:pointer}.office-slot span,.office-slot b,.office-slot small,.office-slot em{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.office-slot span{color:#8f967e;font-size:7px}.office-slot b{margin:3px 0;color:#d8ce9f;font-size:9px}.office-slot small{color:#727965;font-size:7px}.office-slot em{margin-top:4px;color:#9d8b51;font-size:6px;font-style:normal}.planner-focus{outline:1px solid var(--amber);background:#78672d12;padding:4px}.office-appoint-button{width:100%;margin-top:7px;border:1px solid #665832;background:#192117;color:#d6c77f;padding:7px;cursor:pointer}.army-office-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
@media(max-width:600px){.detail-content:has(.city-detail-hero){padding:9px}.city-detail-hero{grid-template-columns:44px 1fr;gap:8px}.city-detail-hero .detail-seal{width:42px;height:44px;font-size:22px}.city-hero-main h2{font-size:20px}.city-hero-status{grid-column:2;border:0;padding:0;text-align:left}.city-hero-status span,.city-hero-status b{display:inline;margin-right:5px}.city-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.city-detail-columns{grid-template-columns:1fr}.city-army-panel{grid-column:auto}.city-officer-list{max-height:180px}.city-officer-card{grid-template-columns:28px minmax(60px,1fr) auto}.city-officer-abilities{gap:2px}.city-officer-abilities i{padding:2px;font-size:6px}.city-army-list{grid-template-columns:1fr;max-height:150px}.city-detail-actions{grid-template-columns:1fr;}.city-detail-actions button{display:flex;justify-content:space-between;align-items:center;text-align:left}.city-detail-actions small{margin:0 0 0 8px;text-align:right}.office-slot-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.army-office-grid{grid-template-columns:1fr}}

/* Treasury forecast, turn preview, and concise settlement deltas. */
.resource-detail-dialog{width:min(760px,94vw);max-height:88vh}.resource-detail-content{max-height:calc(88vh - 30px);overflow:auto;padding:12px}
.economy-forecast{display:grid;gap:10px}.economy-forecast>header{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.economy-forecast>header span,.resource-delta-grid span{display:grid;gap:3px;border:1px solid var(--line-dim);padding:7px;background:#0a100b}.economy-forecast small,.resource-delta-grid small{color:var(--muted);font-size:8px}.economy-forecast>header b{color:var(--amber);font-size:13px}.forecast-equations{border:1px solid #384332;padding:7px 9px;background:#101810}.forecast-equations p{margin:3px 0;color:#aeb59a;font-size:9px;line-height:1.6}.forecast-equations p>b{display:inline-block;min-width:38px;color:#d6c577}.forecast-equations strong{color:#d8d4ad}.forecast-equations span,.forecast-note{color:#7e8673}.forecast-note{margin:0;font-size:8px;line-height:1.55}.economy-forecast details>summary{cursor:pointer;color:#c9b66c;font-size:9px}.economy-forecast td small{display:block;margin-top:2px}.economy-formulas{border:1px solid #303a2d;padding:7px;background:#0a100b}.economy-formulas code{display:block;margin-top:5px;border-left:2px solid #6f6136;padding:4px 7px;background:#111911;color:#bfc69f;font:8px/1.55 var(--mono);white-space:normal}.economy-formulas p{margin:7px 0 0;color:#808775;font-size:8px;line-height:1.5}.turn-forecast{display:grid;gap:10px;max-height:55vh;margin-top:10px;overflow:auto}.turn-forecast>section{border-top:1px solid #36412f;padding-top:7px}.turn-forecast h3,.report-resource-delta h4{margin:0 0 6px;color:#d0ba6c;font-size:9px}.turn-forecast .economy-forecast details{display:none}.order-forecast-list{display:grid;gap:5px;margin:0;padding:0;list-style:none}.order-forecast-list li{display:grid;grid-template-columns:minmax(70px,.35fr) minmax(0,1fr);gap:8px;border:1px solid #313b2d;padding:6px;background:#0d140f}.order-forecast-list b{color:#d7c47a;font-size:9px}.order-forecast-list span{color:#969d87;font-size:8px;line-height:1.5}.resource-delta-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}.resource-delta-grid b{color:#aeb59a;font-size:10px}.resource-delta-grid .gain b{color:#8fbd77}.resource-delta-grid .loss b{color:#c77966}.report-resource-delta{margin:7px 10px;border:1px solid #303a2d;padding:7px;background:#0b110c}.help-content{display:grid;gap:8px;max-width:560px}.help-content section{border:1px solid #303a2d;padding:8px;background:#0c130e}.help-content h3{margin:0 0 5px;color:var(--amber);font-size:10px}.help-content p{margin:0;color:#a6ad94;line-height:1.7}.help-content button{margin-top:7px;border:1px solid #786638;padding:6px 9px;background:#202719;color:#dcc575;cursor:pointer}
@media(max-width:700px){.economy-forecast>header{grid-template-columns:repeat(2,minmax(0,1fr))}.resource-delta-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.order-forecast-list li{grid-template-columns:1fr}.turn-forecast{max-height:48vh}}

/* Map editor: grid brush board, layer/city/road tools, and export surface. */
.map-editor-dialog{width:min(1080px,96vw);height:min(780px,90vh);container:map-editor / inline-size}
dialog#mapEditorDialog>.map-editor-content{display:grid;grid-template-columns:minmax(0,1fr) minmax(250px,300px);grid-template-rows:minmax(0,1fr);gap:10px;align-items:stretch;flex:1;min-height:0;overflow:hidden;padding:9px 11px}
.map-editor-column{display:flex;min-width:0;min-height:0}
.map-editor-board{display:flex;flex:1;flex-direction:column;min-width:0;min-height:0;border:1px solid var(--line);background:#0a100b;padding:7px;overflow:hidden}
.map-editor-board canvas{display:block;width:100%;height:auto;image-rendering:pixelated;cursor:crosshair}
.map-editor-canvas-wrap{position:relative;margin:0 auto;overflow:hidden;isolation:isolate}
#mapEditorTerrain{position:absolute;top:0;left:0;pointer-events:none;z-index:0}
#mapEditorReferenceCanvas{position:absolute;pointer-events:none;z-index:1;image-rendering:auto}
#mapEditorReferenceCanvas[hidden]{display:none}
#mapEditorCanvas{position:relative;z-index:2}
.map-editor-viewport{flex:1;min-width:0;min-height:0;overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable;touch-action:none}
#mapEditorOverlay{position:absolute;top:0;left:0;pointer-events:none;z-index:3}
.map-editor-zoom{flex:none;display:flex;flex-wrap:wrap;align-items:center;gap:5px;max-width:100%;margin:0 0 7px;padding:4px 6px;border:1px solid #303a2d;background:#0c130e;color:#929980;font:9px var(--mono)}
.map-editor-zoom button{min-width:26px;min-height:24px;border:1px solid #786638;background:#202719;color:#dcc575;font:12px var(--mono);cursor:pointer}
.map-editor-zoom output{min-width:42px;text-align:center;color:#d4c47e}
.map-editor-zoom span{padding:0 3px;white-space:normal}
.map-editor-hover{position:relative;z-index:2;flex:0 0 auto;margin:7px 0 0;padding:6px 8px;border:1px solid var(--line);background:#0a100b;color:#a6ad94;font:10px/1.6 var(--mono);min-height:30px}
.map-editor-side{display:flex;flex-direction:column;gap:7px;min-width:0;min-height:0;overflow:hidden}
.map-editor-side>section{flex:none}
.map-editor-side-scroll{display:grid;gap:7px;align-content:start;flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;padding-right:3px}
.map-editor-side section{border:1px solid #303a2d;padding:8px;background:#0c130e}
.map-editor-side section[hidden]{display:none}
.map-editor-layer-select[hidden]{display:none}
.map-editor-side input[readonly]{color:#b6ba9b;border-style:dotted;cursor:default}
.map-editor-footer{margin:0}
#mapEditorStatus{display:block;color:var(--amber);font:9px/1.6 var(--mono)}
.map-editor-tools{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}
.map-editor-tools button{border:1px solid #786638;padding:7px 4px;background:#202719;color:#dcc575;font:10px var(--mono);cursor:pointer}
.map-editor-tools button.active{border-color:var(--amber);background:#2c3419;color:#f0d98c}
.map-editor-side h3{margin:0 0 7px;color:var(--amber);font-size:10px;border-bottom:1px dotted var(--line-dim);padding-bottom:5px}
.map-editor-side label{display:grid;gap:4px;margin-bottom:6px;color:#a6ad94;font-size:9px}
.map-editor-side [hidden]{display:none!important}
.map-editor-side input,.map-editor-side select{width:100%;min-height:26px;background:#070b08;color:#cfd6b6;border:1px solid var(--line);padding:3px 6px;font:10px var(--mono)}
.map-editor-elements{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px 6px}
.map-editor-elements label{display:flex;align-items:center;gap:4px;margin:0;color:#c3c8a8;font-size:9px;cursor:pointer}
.map-editor-elements input{width:auto;min-height:0;margin:0;padding:0;accent-color:#dcc575;cursor:pointer}
.map-editor-coords{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.map-editor-actions{display:flex;flex-wrap:wrap;gap:5px;margin-top:5px}
.map-editor-actions button{flex:1 1 auto;min-width:64px;border:1px solid #786638;padding:6px 8px;background:#202719;color:#dcc575;font:10px var(--mono);cursor:pointer}
.map-editor-actions button.active{border-color:var(--amber);background:#2c3419;color:#f0d98c}
.map-editor-actions[hidden],#mapEditorRegionNameRow[hidden],#mapEditorFile{display:none}
.map-editor-region-fill{display:flex!important;flex:1 1 100%;align-items:center;gap:6px;margin:1px 0 0!important;color:#c3c8a8!important;font-size:9px!important;cursor:pointer}
.map-editor-region-fill input{width:auto!important;min-height:0!important;margin:0;accent-color:#dcc575;cursor:pointer}
.map-editor-info{margin:6px 0 0;color:#858a75;font-size:9px;line-height:1.6}
#mapEditorReferenceControls[hidden],#mapEditorReferenceFile{display:none}
#mapEditorReferenceInfo{overflow-wrap:anywhere;margin-bottom:6px}
#mapEditorReferenceControls{margin-top:7px}
#mapEditorReferenceOpacity{accent-color:var(--amber);padding:0;cursor:pointer}
#mapEditorJson{height:132px}
#mapEditorOutput{white-space:pre-wrap;max-height:58px;overflow:auto;margin:6px 0 0;color:#9aa187;background:#080d09;border:1px solid var(--line-dim);padding:5px;font:9px/1.55 var(--mono)}
@container map-editor (max-width:760px){dialog#mapEditorDialog>.map-editor-content{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(130px,.8fr) minmax(240px,1.2fr)}.map-editor-zoom span{display:none}.map-editor-hover{font-size:9px;max-height:46px;overflow:auto}}
@media(max-width:820px){dialog#mapEditorDialog>.map-editor-content{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(130px,.8fr) minmax(240px,1.2fr)}.map-editor-zoom span{display:none}}
.start-hint{margin:10px 0 0;color:var(--muted);font-size:10px;line-height:1.7}
#startNewView.scenario-pending{grid-template-columns:minmax(0,1fr)}
#startNewView.scenario-pending>section{max-width:560px}
#startNewView.scenario-pending .start-choice.active{border-color:var(--amber);background:#232c17}
@media(max-width:700px){#startNewView.scenario-pending>section{max-width:none}}
/* 剧本与势力同屏：左列剧本，右侧势力小地图与势力名录 */
.start-terminal.campaign-wide{width:min(1240px,96vw);height:min(780px,94vh)}
.campaign-select{display:grid;grid-template-columns:minmax(200px,236px) minmax(0,1fr);flex:1;min-width:0;min-height:0}
.campaign-select[hidden]{display:none}
#startScenarioStep{border-right:1px solid var(--line-dim);background:#0a0f0b;padding:16px 14px}
#startScenarioStep .campaign-heading{flex-direction:column;align-items:flex-start;gap:5px;margin-bottom:12px}
/* 剧本卡片：字体与卡面参照 Descent-Chart-Generator，竖排题名、书法水印、底部年号条 */
@font-face{font-family:"Start WenYue";src:url("../assets/fonts/start-wenyue.woff2?v=23967dd729") format("woff2");font-display:swap}
@font-face{font-family:"Start Daofeng";src:url("../assets/fonts/start-daofeng.woff2?v=a1f747a973") format("woff2");font-display:swap}
#startScenarioStep .start-choices{grid-template-columns:1fr;grid-auto-rows:104px;gap:8px;padding:2px 4px 4px 2px}
#startScenarioStep .scenario-card{position:relative;overflow:hidden;min-height:0;padding:0;border:1px solid var(--line-dim);border-radius:3px;background:#131b12;color:var(--text);font-family:"Start WenYue",serif;box-shadow:0 3px 10px #0000004d;transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease,background-color .2s ease}
#startScenarioStep .scenario-card::before{content:attr(data-seal);position:absolute;top:-.1em;right:-.1em;color:#c6a15b1f;font:96px/1 "Start Daofeng",serif;pointer-events:none}
#startScenarioStep .scenario-card b{position:absolute;top:9px;left:10px;margin:0;color:#d9d0a3;font:24px/1.05 "Start WenYue",serif;letter-spacing:.06em;writing-mode:vertical-rl;text-orientation:upright;white-space:nowrap}
#startScenarioStep .scenario-card small{position:static;margin:0;color:var(--text)}
#startScenarioStep .scenario-card-brief{position:absolute;right:10px;bottom:28px;left:46px;color:#a9a888;font:10px/1.6 "Start WenYue",serif;text-align:right;text-wrap:pretty}
#startScenarioStep .scenario-card-date{position:absolute;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;height:21px;border-top:1px solid #30392c;background:#1b2317;color:#a9a888;font:11px "Start WenYue",serif;letter-spacing:.04em}
#startScenarioStep .scenario-card:hover{border-color:var(--line);background:#182217;transform:translateY(-1px);box-shadow:0 6px 16px #00000066}
#startScenarioStep .scenario-card.active{border-color:var(--amber);background:#1d2616;box-shadow:inset 0 0 0 1px #000,0 6px 16px #00000066}
#startScenarioStep .scenario-card.active::before{color:#c6a15b38}
#startScenarioStep .scenario-card.active b{color:#f1dc93}
#startScenarioStep .scenario-card.active .scenario-card-brief{color:#cfc79c}
#startScenarioStep .scenario-card.active .scenario-card-date{border-top-color:#8e966f;background:#4b4f2b;color:#f1e6bb}
#startScenarioStep .scenario-card:focus-visible{outline:2px dashed var(--amber);outline-offset:2px}
#startForceStep{padding:16px 18px}
.campaign-select .campaign-force-layout{grid-template-columns:minmax(0,1fr) 260px;grid-template-rows:minmax(0,1fr) auto;grid-template-areas:"map list" "map brief";gap:12px}
.campaign-minimap{grid-area:map;position:relative;min-width:0;min-height:0;overflow:hidden;border:1px solid var(--line);outline:1px solid #000;outline-offset:-2px;background:#070b08}
.campaign-minimap canvas{position:absolute;inset:0;display:block;width:100%;height:100%;image-rendering:pixelated}
.campaign-minimap-tip{position:absolute;left:0;top:0;z-index:2;pointer-events:none;padding:4px 7px;border:1px solid var(--amber);background:#0b100c;color:var(--text);font:10px var(--mono);white-space:nowrap;box-shadow:2px 2px 0 #000}
.campaign-minimap-tip[hidden]{display:none}
.campaign-select .campaign-force-layout .force-choices{grid-area:list;display:flex;flex-direction:column;gap:4px;padding:2px 4px 8px 2px}
.campaign-select .campaign-force-layout .force-choices>.start-choice{flex:0 0 auto}
.campaign-select .campaign-force-layout .start-choice{display:flex;align-items:baseline;justify-content:space-between;gap:8px;min-height:0;padding:7px 9px}
.campaign-select .campaign-force-layout .start-choice b{flex:0 0 auto;font-size:12px}
.campaign-select .campaign-force-layout .start-choice small{min-width:0;margin-top:0;overflow:hidden;font-size:9px;text-align:right;text-overflow:ellipsis;white-space:nowrap}
.campaign-select .campaign-force-layout .start-choice.active{background:#1d2616;box-shadow:inset 0 0 0 1px #000}
.campaign-select .campaign-brief{grid-area:brief;max-height:210px;padding:10px 12px;border-top-width:1px;border-left:2px solid var(--amber)}
.campaign-select .campaign-brief h3{margin:0 0 6px;font-size:14px}
.campaign-select .campaign-brief h4{margin:8px 0 3px}
.campaign-select .campaign-brief p{font-size:10px;line-height:1.75}
@media(max-width:700px){
  .campaign-select{grid-template-columns:1fr;grid-template-rows:auto minmax(0,1fr);overflow:auto}
  #startScenarioStep{border-right:0;border-bottom:1px solid var(--line-dim);padding:10px}
  #startScenarioStep .campaign-heading{flex-direction:row;align-items:baseline;margin-bottom:8px}
  #startScenarioStep .start-choices{grid-template-columns:repeat(3,minmax(0,1fr));overflow:visible}
  #startScenarioStep .start-choices{grid-auto-rows:100px}
  .campaign-select>.campaign-pane{flex:0 0 auto}
  #startScenarioStep .start-choices{overflow:visible}
  #startForceStep{padding:10px;overflow:visible}
  .campaign-select .campaign-force-layout{flex:0 0 auto}
  .campaign-select .campaign-force-layout .force-choices{min-height:auto}
  .campaign-select .campaign-force-layout{grid-template-columns:1fr;grid-template-rows:220px auto auto;grid-template-areas:"map" "list" "brief"}
  .campaign-select .campaign-force-layout .force-choices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));overflow:visible}
  .campaign-select .campaign-brief{max-height:none}
}
@media(max-width:420px){#startScenarioStep .start-choices{grid-template-columns:1fr}.campaign-select .campaign-force-layout{grid-template-rows:180px auto auto}}

/* 战况窗口 */
.battle-meters{display:grid;gap:6px;}
.battle-meter{display:grid;grid-template-columns:64px minmax(0,1fr) auto;gap:8px;align-items:center;font-size:10px;color:var(--muted);}
.battle-meter b{color:#ddd5aa;font-size:10px;text-align:right;white-space:nowrap;}
.battle-meter .army-meter{height:6px;}
.battle-meter.wall .army-meter i{background:#b99c54;}
.battle-meter.morale .army-meter i{background:#c76b4f;}
.battle-meter.food .army-meter i{background:#91a15b;}
.battle-meter.ring .army-meter i{background:#6f8fb0;}
.battle-actions{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:4px 0 6px;}
.battle-actions label{display:flex;gap:6px;align-items:center;font-size:10px;color:var(--muted);}
.battle-actions button{border:1px solid var(--line);background:#1a2418;color:var(--green);padding:4px 9px;cursor:pointer;font-size:10px;}
.battle-actions select{background:#101710;color:var(--text);border:1px solid var(--line);font-size:10px;padding:2px 4px;}
.battle-actions button.danger{border-color:#7d3a2c;color:#e3a08a;}
.battle-log{margin:4px 0;padding:4px 6px;border-left:2px solid #3b4434;font-size:10px;line-height:1.5;color:#c9c1a0;}
.battle-log small{display:block;color:#7f866f;font-size:8px;}
.battle-log.victory{border-left-color:#8fae5b;}
.battle-log.defeat{border-left-color:#b65c46;}

/* 内政档案按郡折叠 */
.commandery-groups{display:grid;gap:4px;margin:6px 0;}
.commandery-group{border:1px solid #2c3428;background:#0f150f;}
.commandery-group>summary{display:flex;gap:10px;align-items:center;padding:5px 8px;cursor:pointer;font-size:10px;color:var(--muted);list-style:none;}
.commandery-group>summary b{color:#ddd5aa;min-width:64px;}
.commandery-group>summary span{flex:1;}
.commandery-group>summary button{border:1px solid var(--line);background:#1a2418;color:var(--green);padding:2px 8px;font-size:9px;cursor:pointer;}
.commandery-group>summary em{font-style:normal;color:#8a7d5b;font-size:9px;}
.commandery-group[open]>summary{border-bottom:1px dotted #343c2e;}
.commandery-group .ledger-table{margin:0;}

/* 面板内按钮统一：区块末尾整行按钮同“任命官员”样式；数据行内小按钮同一种小号样式 */
.detail-content .biography>button,.detail-content .detail-section>button{width:100%;margin-top:7px;border:1px solid #665832;background:#192117;color:#d6c77f;padding:7px;cursor:pointer;font:inherit;font-size:10px}
.detail-content .data-row button,.fiscal-arrears button{margin-left:6px;border:1px solid var(--line);background:#1a2418;color:var(--green);padding:1px 8px;font:inherit;font-size:9px;cursor:pointer}

/* 人物编辑器 */
.officer-editor-dialog{width:min(1100px,96vw);max-width:96vw}
.officer-editor-content{display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:8px;height:min(78vh,760px);padding:10px}
.officer-editor-bar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;font-size:10px;color:var(--muted)}
.officer-editor-bar label,.officer-editor-fields label{display:flex;gap:6px;align-items:center}
.officer-editor-bar select,.officer-editor-bar input,.officer-editor-fields select,.officer-editor-fields input{background:#101710;color:var(--text);border:1px solid var(--line);font:inherit;font-size:10px;padding:3px 5px}
.officer-editor-main{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(300px,1fr);gap:10px;min-height:0}
.officer-editor-list{overflow:auto;border:1px solid #2c3428;background:#0d130d}
.officer-editor-table tr[data-oe-pick]{cursor:pointer}
.officer-editor-table tr.selected td{background:#243121;color:#e5cf7c}
.officer-editor-table small{color:#b99c54;font-size:8px}
.officer-editor-form{overflow:auto;border:1px solid #2c3428;background:#0f150f;padding:8px 10px}
.officer-editor-form h3{margin:0 0 8px;color:#e5cf7c;font-size:13px}
.officer-editor-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 10px;font-size:10px;color:var(--muted)}
.officer-editor-fields label{justify-content:space-between}
.officer-editor-fields input[type=number]{width:72px}
.officer-editor-fields .wide{grid-column:1/-1}
.officer-editor-fields fieldset{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:4px;border:1px solid #2c3428;padding:4px 6px;margin:0}
.officer-editor-fields legend{color:#b7b08e;font-size:9px}
.officer-editor-errors{min-height:12px;margin:0;color:#e3a08a}
.officer-editor-form-actions,.officer-editor-actions{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.officer-editor-actions{justify-content:flex-end;border-top:1px dotted #343c2e;padding-top:7px}
.officer-editor-actions .officer-editor-note{margin-right:auto}
.officer-editor-note{color:#858a75;font-size:9px}
.officer-editor-form-actions button,.officer-editor-actions button{border:1px solid var(--line);background:#1a2418;color:var(--green);padding:4px 10px;font:inherit;font-size:10px;cursor:pointer}
.officer-editor-form-actions button.primary,.officer-editor-actions button.primary{border-color:var(--amber);background:#252b19;color:#e2cc78}
@media (max-width:760px){.officer-editor-main{grid-template-columns:1fr}.officer-editor-content{height:auto}}
.map-editor-zoom input{width:120px;min-height:22px;border:1px solid #303a2d;background:#101710;color:var(--text);font:10px var(--mono);padding:2px 6px}
/* 行军路线方案：自定义停留节点与逐段路况 */
.planner-stops{display:grid;gap:6px;border:1px solid var(--line-dim);padding:8px}
.planner-stop-add{display:flex;gap:6px}.planner-stop-add input{flex:1;min-width:0}
.planner-stops ol{margin:0;padding-left:18px;display:grid;gap:4px;max-height:132px;overflow:auto}
.planner-stops li{display:flex;align-items:center;gap:6px;color:var(--text);font-size:9px}.planner-stops li span{flex:1}
.planner-hint{color:var(--muted);font-size:8px;margin:0}
.planner-legs{width:100%;margin-top:6px;border-collapse:collapse;font-size:8px;color:var(--text)}
.planner-legs th,.planner-legs td{border-bottom:1px dotted var(--line-dim);padding:3px 4px;text-align:left}.planner-legs th{color:var(--muted);font-weight:normal}
.planner-legs td:nth-child(3),.planner-legs td:nth-child(4),.planner-legs th:nth-child(3),.planner-legs th:nth-child(4){text-align:right}
/* 战报档案：每场战事可打开战况窗口；野战窗口的历次交战 */
.battle-open{display:flex;justify-content:flex-end;margin:4px 0}
.battle-history{border:1px dotted var(--line-dim);padding:4px 6px;margin:4px 0}.battle-history summary{cursor:pointer;color:var(--amber)}
/* 消息分级：紧急、重要标签与消息汇总窗口 */
.message-level{display:inline-block;margin-right:4px;padding:0 4px;border:1px solid var(--line-dim);font-size:8px;color:var(--muted)}
.lv-3 .message-level,.lv-chip.lv-3{border-color:var(--red);color:var(--red)}
.lv-2 .message-level,.lv-chip.lv-2{border-color:var(--amber);color:var(--amber)}
.lv-chip{display:inline-block;margin-right:6px;padding:0 4px;border:1px solid var(--line-dim);font-weight:normal;font-style:normal}
li.lv-3{color:var(--text)}li.lv-0{opacity:.72}
.message-list{list-style:none;margin:0;padding:0;display:grid;gap:4px}.message-list li{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px;font-size:9px;line-height:1.5}
.message-list small{color:var(--muted)}.message-actions{margin-left:auto;display:inline-flex;gap:4px}
.message-center-tools{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px}.message-center-tools>button{border:1px solid #786638;padding:6px 9px;background:#202719;color:#dcc575;font-size:10px;cursor:pointer}
.message-center-list{max-height:60vh;overflow:auto;display:grid;gap:8px}
.message-day h4{margin:0 0 4px;color:var(--amber);font-size:9px}.message-day h4 em{margin-left:6px;color:var(--red);font-style:normal}
.message-tray b{margin-left:4px;padding:0 4px;background:var(--amber);color:#11170f;font-size:8px}.message-tray.has-urgent b{background:var(--red);color:#fff}
.briefing-alerts{border:1px solid var(--amber)}
.report-filter{float:right;display:inline-flex;align-items:center;gap:4px;color:var(--muted)}

/* 战俘营：每行来源势力 + 处置按钮 */
.prisoner-row b{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:4px}
.prisoner-actions{display:inline-flex;gap:3px}
.prisoner-panel button{border:1px solid var(--line-dim);padding:2px 6px;background:#0b100c;color:#cfc89c;font-size:9px;cursor:pointer}
.prisoner-panel button.danger{border-color:#7a3a30;color:#e09080}
.breakout-officers{display:flex;flex-wrap:wrap;gap:4px 10px;border:1px solid var(--line-dim);padding:6px}
.breakout-officers label{display:flex;align-items:center;gap:4px;font-size:9px}
.breakout-officers small{color:var(--muted)}

/* 军团粮道：携粮滑杆与告警 */
.supply-carry{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:8px;padding:4px 0;color:var(--muted);font-size:10px}
.supply-carry input{width:100%;accent-color:#c6a15b}
.supply-carry b{color:#ecd99a}
.supply-panel b.warn{color:#e09080}
.supply-panel select,.supply-panel button{border:1px solid var(--line-dim);padding:2px 6px;background:#0b100c;color:#cfc89c;font-size:9px}

/* 户口与世家 */
.pop-panel .pop-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:6px;margin:6px 0}
.pop-panel .pop-kpis article{border:1px solid var(--line-dim);padding:5px 7px;display:grid;gap:2px}
.pop-panel .pop-kpis small,.pop-panel .pop-kpis span{color:var(--muted);font-size:10px}
.pop-panel .pop-kpis b{font-size:13px}
.pop-panel .pop-table{width:100%;border-collapse:collapse;font-size:11px;margin:4px 0 8px}
.pop-panel .pop-table th,.pop-panel .pop-table td{border-bottom:1px solid var(--line-dim);padding:3px 6px;text-align:right}
.pop-panel .pop-table th:first-child,.pop-panel .pop-table td:first-child{text-align:left}
.pop-panel h4{margin:8px 0 4px;font-size:11px;color:var(--muted)}
.pop-panel .clan-row{display:flex;flex-wrap:wrap;justify-content:space-between;gap:6px;border:1px solid var(--line-dim);padding:6px 8px;margin-bottom:5px}
.pop-panel .clan-head{display:grid;gap:2px}
.pop-panel .clan-head small{color:var(--muted);font-size:10px}
.pop-panel .clan-head i{font-style:normal}
.pop-panel .clan-head i.good{color:#9fc27a}
.pop-panel .clan-head i.bad{color:#d4735f}
.pop-panel .clan-actions,.pop-panel .pop-actions{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.pop-panel .pop-actions{margin-top:8px}
.pop-panel .pop-levy{display:flex;gap:6px;align-items:center;font-size:11px}
.pop-panel button{border:1px solid var(--line-dim);padding:3px 8px;background:#0b100c;color:#cfc89c;font-size:10px;cursor:pointer}
.pop-panel button.danger{border-color:#7a3a30;color:#e09080}
.pop-panel [data-inspect-registry]{border-color:#786638;background:#1d1c12;color:#ecd99a}

.campaign-select .campaign-force-layout .force-choices>.force-choice{display:grid;grid-template-columns:minmax(0,1fr);gap:3px}.campaign-select .campaign-force-layout .force-choices>.force-choice b,.campaign-select .campaign-force-layout .force-choices>.force-choice small{white-space:normal;overflow:visible;text-overflow:clip;line-height:1.4}

/* 郡档案：沿用官署的紧凑资料样式，表格在窗口内滚动。 */
.commandery-table-scroll{overflow-x:auto}
.commandery-content .ledger-table{min-width:620px}
.commandery-content .ledger-table td{white-space:nowrap}
.commandery-family{padding:8px 0;border-bottom:1px solid var(--line-dim)}
.commandery-family h4{margin:0 0 6px}
.commandery-family h4 small{font-weight:normal;color:var(--muted)}
.commandery-content .city-stock-values{overflow-wrap:anywhere}

/* 城市档案：摘要与入口常驻，详细资料按工作内容分层。 */
#detailDialog{width:min(840px,94vw);height:min(720px,calc(100dvh - 86px));max-width:94vw}
#detailDialog #detailContent{flex:1;padding:0 14px 14px;scroll-padding-top:230px}
#detailDialog .city-detail-summary{position:sticky;top:0;z-index:3;background:#101710;padding:10px 0 0}
#detailDialog .city-detail-hero{grid-template-columns:42px minmax(0,1fr) auto;gap:10px;padding:0 0 7px}
#detailDialog .city-detail-hero .detail-seal{width:40px;height:43px;font-size:23px}
#detailDialog .city-hero-main h2{font-size:21px;margin:2px 0 3px}
#detailDialog .city-kpi-grid{margin:7px 0;gap:5px}
#detailDialog .city-kpi-grid article{padding:6px 8px}
#detailDialog .city-detail-actions{margin:5px 0 8px;gap:5px}
#detailDialog .city-detail-actions button{padding:6px 8px}
#detailDialog .city-detail-actions small{font-size:8px;margin-top:3px}
#detailDialog .city-page-tabs{margin:0;display:flex;gap:0;border-bottom:1px solid #8f7a43;overflow-x:auto;flex-wrap:nowrap;background:#141c13}
#detailDialog .city-page-tabs button{flex:1;min-width:max-content;padding:8px 10px;font-size:10px;white-space:nowrap;border:1px solid transparent;border-bottom:0;color:#aab194;background:transparent;cursor:pointer}
#detailDialog .city-page-tabs button.active{color:#e1ce86;background:#242c1b;border-color:#756536;box-shadow:inset 0 2px #b69b52}
#detailDialog [data-city-page][hidden]{display:none!important}
#detailDialog [data-city-page]{margin-top:10px}
#detailDialog .city-detail-columns{display:contents}
#detailDialog .city-detail-columns:has([data-city-page="garrison"]:not([hidden])){display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:9px;margin:0}
#detailDialog .city-army-panel{grid-column:auto}
#detailDialog .city-officer-list,#detailDialog .city-army-list{max-height:none;overflow:visible}
#detailDialog .city-army-list{grid-template-columns:1fr}
#detailDialog .city-officer-card{grid-template-columns:28px minmax(70px,1fr) auto;padding:7px}
#detailDialog .city-panel-title small{font-size:9px}
#detailDialog .city-history-basis{padding:7px 0;margin-bottom:4px;line-height:1.6}
#detailDialog .office-slot{padding:8px}
#detailDialog .office-slot span,#detailDialog .office-slot small{font-size:9px}
#detailDialog .office-slot b{font-size:11px}
#detailDialog .office-slot em{font-size:8px}
@media(max-width:600px){
  #detailDialog #detailContent{padding:0 9px 9px;scroll-padding-top:270px}
  #detailDialog .city-detail-summary{padding-top:7px}
  #detailDialog .city-kpi-grid article{padding:5px 7px}
  #detailDialog .city-detail-actions{grid-template-columns:repeat(3,minmax(0,1fr))}
  #detailDialog .city-detail-actions button{display:block;padding:6px 4px;text-align:center}
  #detailDialog .city-detail-actions small{display:none}
  #detailDialog .city-detail-actions b{font-size:9px}
  #detailDialog .city-page-tabs button{padding:8px 6px;font-size:9px}
  #detailDialog .city-detail-columns:has([data-city-page="garrison"]:not([hidden])){grid-template-columns:1fr}
}
@media(max-height:560px){#detailDialog .city-detail-summary{position:static}}
@media(max-width:600px){
  #detailDialog .city-hero-status{display:none}
  #detailDialog .city-kpi-grid article{padding:4px 6px}
  #detailDialog .city-kpi-grid b{margin:3px 0}
}

/* 军团档案：军粮只保留一个口径，概况、运输、军职与作战分开浏览。 */
#armyDetailDialog{width:min(940px,calc(100vw - 24px));max-width:none}
#armyDetailContent{container-type:inline-size;container-name:army-detail}
.army-detail-head{display:grid;grid-template-columns:48px minmax(0,1fr) auto;gap:12px;align-items:center;padding-bottom:10px;border-bottom:1px solid var(--line-dim)}
.army-detail-head .detail-seal{width:46px;height:50px;font-size:27px}
.army-detail-title h2{margin:0 0 4px;font:22px/1.3 serif;color:#ecd99a;overflow-wrap:anywhere}
.army-detail-title p{margin:3px 0;color:var(--muted);font-size:10px}
.army-food-status{text-align:right;border-left:1px solid var(--line-dim);padding-left:12px}
.army-food-status b{display:block;font-size:13px}.army-food-status small{display:block;margin-top:5px;color:var(--muted);font-size:10px}
.army-supply-good{color:#b4c697}.army-supply-warn{color:#e0bd55}.army-supply-bad{color:#e09080}
.army-detail-tabs{position:sticky;top:-12px;z-index:2;background:#0c120d;display:flex;flex-wrap:wrap;gap:4px;padding:9px 0;margin:0}
.army-detail-tabs button{font-size:10px;padding:6px 10px}
.army-detail-page{min-width:0}.army-detail-grid,.army-food-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.army-detail-page .detail-section{min-width:0;border:1px solid var(--line-dim);padding:10px;background:#0b100c}
.army-detail-page h3{font-size:12px;margin:0 0 9px;color:#d7c78e}
.army-detail-page .data-row{gap:10px;padding:6px 0;font-size:10px;align-items:baseline}.army-detail-page .data-row>b{text-align:right;overflow-wrap:anywhere}
.army-food-overview{margin-top:10px;padding:10px;border:1px solid var(--line-dim);border-left:3px solid currentColor;background:#0b100c}
.army-food-overview p,.army-food-note{font-size:10px;line-height:1.7;color:var(--muted);margin:5px 0 10px}
.army-food-panel h4{color:#d7c78e;font-size:11px;margin:0 0 5px}.army-food-columns>section{min-width:0}
.army-food-columns>section+section{border-left:1px solid var(--line-dim);padding-left:12px}
.army-carry-settings{border-top:1px solid var(--line-dim);margin-top:12px;padding-top:12px}
.army-escort-setting{display:flex;align-items:center;gap:12px;color:var(--muted);font-size:10px;margin:8px 0}.army-escort-setting select{min-width:140px}
.army-supply-warning{color:#e0bd55;font-size:10px;line-height:1.6}
.army-detail-page .biography{margin-top:0;padding-top:8px}.army-detail-page .court-note{font-size:10px;line-height:1.65}
.army-other-stores,.army-combat-factors{margin-top:12px;padding:8px;border:1px solid var(--line-dim);color:var(--muted);font-size:10px}
.army-detail-page button:not(.office-slot){border:1px solid var(--line-dim);background:#101710;color:#d8c78e;font:inherit;font-size:10px;padding:5px 9px;cursor:pointer}
.ledger-table td .army-supply-compact{display:grid;gap:3px;font-size:10px}.army-supply-compact small{color:var(--muted);font-size:9px}
@container army-detail (max-width:560px){.army-detail-head{grid-template-columns:42px minmax(0,1fr);gap:8px}.army-detail-head .detail-seal{width:40px;height:44px}.army-food-status{grid-column:2;text-align:left;border:0;padding:0}.army-food-status b,.army-food-status small{display:inline-block;margin:0 8px 0 0}.army-detail-grid,.army-food-columns{grid-template-columns:1fr}.army-food-columns>section+section{border-left:0;border-top:1px solid var(--line-dim);padding:10px 0 0}.army-detail-tabs button{flex:1;padding:6px 4px}.army-detail-title h2{font-size:19px}}

/* 内政改制：官署任命分郡府、县廷两节；官员负荷 80% 以上标黄，100% 以上标红。 */
.planner-section { grid-column: 1 / -1; margin: 6px 0 0; padding-bottom: 3px; border-bottom: 1px solid var(--line-dim); color: var(--amber); font-size: 11px; letter-spacing: .12em; }
.office-slot.is-busy small { color: #d8b55a; }
.office-slot.is-overloaded small { color: #d9785f; }

/* 幕府图·行政（内政改制 P3）：职位卡按负荷着色——≤80% 常色、80%～100% 黄、>100% 红；选定政务时不承担者变淡。 */
.admin-chart { display: grid; gap: 8px; min-width: 0; }
.admin-toolbar { display: grid; gap: 6px; }
.admin-switch { display: flex; flex-wrap: wrap; gap: 4px; }
.admin-switch button { border: 1px solid var(--line-dim); background: transparent; color: var(--muted); padding: 3px 9px; font-size: 11px; cursor: pointer; }
.admin-switch button.active { color: var(--amber); border-color: var(--amber); background: #87945c16; }
.admin-layout { display: grid; grid-template-columns: minmax(0, 1fr) minmax(220px, 280px); gap: 10px; min-height: 0; }
.admin-tree { display: grid; gap: 8px; align-content: start; max-height: min(64vh, 680px); overflow: auto; padding-right: 4px; }
.admin-side { border: 1px solid var(--line-dim); padding: 10px; max-height: min(64vh, 680px); overflow: auto; font-size: 11px; }
.admin-side h4 { margin: 0 0 6px; color: var(--amber); font-size: 13px; }
.admin-side h5, .admin-level > h5 { margin: 8px 0 4px; color: var(--muted); font-size: 10px; letter-spacing: .15em; }
.admin-level { border-left: 2px solid var(--line-dim); padding-left: 8px; }
.admin-province { border-left-color: #87945c; }
.admin-posts { display: flex; flex-wrap: wrap; gap: 4px; }
.admin-post { display: grid; gap: 1px; min-width: 92px; padding: 4px 7px; border: 1px solid var(--line-dim); background: #111a11; color: var(--text); text-align: left; cursor: pointer; }
.admin-post small { color: var(--muted); font-size: 9px; }
.admin-post b { font-size: 12px; font-weight: 600; }
.admin-post em { font-style: normal; font-size: 10px; color: #9fb47a; }
.admin-post.is-busy em { color: #d8b55a; }
.admin-post.is-over { border-color: #8a4a3a; }
.admin-post.is-over em { color: #d9785f; }
.admin-post.is-vacant { opacity: .6; border-style: dashed; }
.admin-post.is-vacant em { color: var(--muted); }
.admin-post.is-dim { opacity: .28; }
.admin-post.is-picked { outline: 1px solid var(--amber); }
.admin-commandery { margin: 6px 0; padding: 6px; border: 1px solid var(--line-dim); background: #0d140d; }
.admin-commandery header { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px; margin-bottom: 4px; }
.admin-commandery header small { color: var(--muted); font-size: 10px; }
.admin-commandery header button { margin-left: 4px; border: 1px solid var(--line-dim); background: transparent; color: var(--muted); font-size: 10px; padding: 2px 6px; cursor: pointer; }
.admin-warn { color: #d9785f; font-style: normal; }
.admin-counties { display: grid; gap: 4px; margin-top: 6px; }
.admin-county { display: grid; grid-template-columns: 72px minmax(0, 1fr); gap: 6px; align-items: center; }
.admin-county > span { font-size: 11px; color: #ddd5aa; }
.admin-county > span small { display: block; color: var(--muted); font-size: 9px; }
.admin-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 3px; }
.admin-list li { display: flex; justify-content: space-between; gap: 8px; border-bottom: 1px dotted var(--line-dim); padding: 2px 0; }
.admin-bars { list-style: none; margin: 0; padding: 0; display: grid; gap: 4px; }
.admin-bars li { display: grid; grid-template-columns: 84px minmax(0, 1fr) 36px; gap: 6px; align-items: center; }
.admin-bars i { display: block; height: 6px; background: #87945c; }
.admin-bars b { text-align: right; font-weight: 500; }
.admin-side > button { margin-top: 8px; border: 1px solid var(--line-dim); background: transparent; color: var(--muted); padding: 3px 8px; cursor: pointer; }
@media (max-width: 760px) { .admin-layout { grid-template-columns: minmax(0, 1fr); } }

/* 项目事务表（内政改制 P4） */
.admin-projects { display: grid; gap: 8px; }
.admin-project { border: 1px solid var(--line-dim); background: #0d140d; padding: 8px; display: grid; gap: 6px; }
.admin-project.has-blockers { border-left: 3px solid #b08a3c; }
.admin-project header { display: flex; flex-wrap: wrap; gap: 8px; align-items: baseline; }
.admin-project header small, .admin-project-meta { color: var(--muted); font-size: 10px; margin: 0; }
.admin-progress { position: relative; height: 16px; background: #1b231a; border: 1px solid var(--line-dim); }
.admin-progress i { position: absolute; inset: 0 auto 0 0; background: #4f6e3c; }
.admin-progress span { position: relative; padding-left: 6px; font-size: 10px; line-height: 16px; }
.admin-project-fields { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; }
.admin-project-fields label { display: grid; gap: 2px; font-size: 10px; color: var(--muted); }
.admin-project-meta button { margin-left: 6px; border: 1px solid var(--line-dim); background: transparent; color: var(--muted); font-size: 10px; cursor: pointer; }
.admin-blockers { margin: 0; padding-left: 16px; color: #d8b55a; font-size: 10px; }
@media (max-width: 760px) { .admin-project-fields { grid-template-columns: minmax(0, 1fr); } }
.admin-project.is-emergency { border-left: 3px solid #a8433a; }

/* 军职任命（出征军职）：副将、部将可增删；负荷 80% 以上标黄、100% 以上标红。 */
.army-office-list { display: grid; gap: 6px; border: 1px solid var(--line-dim); padding: 6px 8px; }
.army-office-list legend { color: var(--muted); font-size: 11px; }
.army-office-row { display: flex; flex-wrap: wrap; gap: 6px; align-items: end; }
.army-office-row > label:first-child { flex: 1 1 220px; }
.army-office-num { width: 72px; }
.army-office-row button, .army-office-list > button { border: 1px solid var(--line-dim); background: transparent; color: var(--muted); padding: 3px 8px; cursor: pointer; }
#plannerForm label.is-busy select, .planner-summary.is-busy { border-color: #b08a3c; color: #d8b55a; }
#plannerForm label.is-over select, .planner-summary.is-over { border-color: #a8433a; color: #d9785f; }
.office-slot .office-effect { color: #9fb47a; font-size: 10px; line-height: 1.4; }
.office-slot.is-busy > small:first-of-type { color: #d8b55a; }
.office-slot.is-overloaded { border-color: #8a4a3a; }
.office-slot.is-overloaded > small:first-of-type { color: #d9785f; }
.admin-county { grid-template-columns: 120px minmax(0, 1fr); }
.admin-subcounties { color: var(--muted); font-size: 9px; line-height: 1.4; }
.affair-row { display: grid; gap: 2px; padding: 4px 0; border-bottom: 1px dotted var(--line-dim); }
.affair-row span { font-size: 11px; color: #ddd5aa; }
.affair-row small { font-size: 10px; color: var(--muted); line-height: 1.5; }
.cmd-county.is-seat { border-color: #87945c; }
.cmd-county small i { font-style: normal; color: var(--amber); }
.cmd-seats { margin-top: 8px; }
.cmd-seat-group h4 { margin: 8px 0 4px; color: var(--amber); font-size: 12px; }
.cmd-seat-commandery h5 { margin: 6px 0 2px; color: var(--muted); font-size: 11px; }
.cmd-seat-row { display: grid; grid-template-columns: 90px 140px minmax(0, 1fr) minmax(0, 1.4fr); gap: 6px; align-items: center; padding: 3px 0; border-bottom: 1px dotted var(--line-dim); font-size: 11px; }
.cmd-seat-row:not(.is-seat) { grid-template-columns: 90px 140px minmax(0, 1fr); }
.cmd-seat-row label { display: flex; gap: 4px; align-items: center; color: var(--muted); }
.cmd-seat-row select { min-width: 0; flex: 1; }
@media (max-width: 760px) { .cmd-seat-row, .cmd-seat-row:not(.is-seat) { grid-template-columns: minmax(0, 1fr); } }
.cmd-plan-group h4 { margin: 10px 0 4px; color: var(--amber); font-size: 12px; }
.cmd-plan-row { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; padding: 3px 0; border-bottom: 1px dotted var(--line-dim); font-size: 11px; }
.cmd-plan-row small, .cmd-plan-office small { color: var(--muted); font-size: 10px; margin-left: 4px; }
.cmd-plan-row button, .cmd-plan-office header button { border: 1px solid #87945c; background: transparent; color: var(--amber); font-size: 10px; padding: 2px 8px; cursor: pointer; }
.cmd-plan-office { border: 1px solid var(--line-dim); padding: 6px; margin: 4px 0; display: grid; gap: 4px; }
.cmd-plan-office header { display: flex; flex-wrap: wrap; gap: 6px; align-items: baseline; }
.cmd-plan-members { display: flex; flex-wrap: wrap; gap: 4px; }
.cmd-plan-members span { border: 1px solid var(--line-dim); padding: 1px 6px; font-size: 11px; }
.cmd-plan-members i { font-style: normal; color: var(--amber); font-size: 9px; margin-left: 3px; }
.cmd-plan-members button { border: 0; background: transparent; color: var(--muted); cursor: pointer; padding: 0 0 0 3px; }
.cmd-plan-office label, .cmd-plan-row label { display: flex; gap: 4px; align-items: center; color: var(--muted); font-size: 10px; }
.cmd-chart-level { display: flex; gap: 4px; align-items: center; margin: 4px 0 6px; font-size: 11px; color: var(--muted); }
.cmd-chart-level button { border: 1px solid var(--line-dim); background: transparent; color: var(--muted); padding: 2px 10px; cursor: pointer; }
.cmd-chart-level button.active { color: var(--amber); border-color: var(--amber); }
.chart-node .cmd-staff { display: block; font-style: normal; font-size: 9px; color: #9fb47a; max-width: 180px; white-space: normal; line-height: 1.35; }
.cmd-scope-chips { display: flex; flex-wrap: wrap; gap: 4px; margin: 4px 0; }
.cmd-scope-chips span { border: 1px solid var(--line-dim); padding: 2px 6px; font-size: 11px; }
.cmd-scope-chips small { color: var(--muted); font-size: 9px; margin-left: 3px; }
.cmd-scope-chips button { border: 0; background: transparent; color: var(--muted); cursor: pointer; padding: 0 0 0 4px; }
.cmd-scope-add { display: flex; gap: 6px; align-items: center; font-size: 11px; color: var(--muted); margin: 4px 0 8px; }
.cmd-link { border: 0; background: transparent; color: var(--amber); cursor: pointer; font-size: 10px; padding: 0; }

/* 幕府官制图：与汉庭官制图一致，展开收起为节点框底部通栏；方面节点内上部为选择区。 */
.chart-node .cmd-toggle{display:block;width:100%;margin-top:3px;text-align:center;white-space:nowrap}
.chart-node .cmd-toggle:hover,.chart-node .cmd-toggle:focus-visible{border-color:#a99a5e;color:#f0dc98}
.chart-node.cmd-node{cursor:default}
.cmd-node-pick{display:grid;gap:3px;width:100%;padding:0;border:0;background:none;color:inherit;font:inherit;text-align:center;cursor:pointer}

/* 存档列表：载入与删除并列，删除需二次确认。 */
.save-slot-actions{display:flex;gap:6px;align-items:center}
.save-slot .save-delete{color:#c9a08a;border-color:#5a4234}
.save-slot .save-delete.is-armed{color:#ffd2c2;border-color:#b0503c;background:#2a1210}

/* 战役外交沿用桌面表单与档案表格，窄窗口自动换行。 */
.campaign-diplomacy .campaign-controls{display:flex;flex-wrap:wrap;align-items:end;gap:8px;margin:8px 0}.campaign-diplomacy label{display:flex;align-items:center;gap:5px;font-size:12px}.campaign-diplomacy select{max-width:190px}.campaign-diplomacy input[type=number]{width:88px}.campaign-diplomacy small{display:block;opacity:.75;margin-top:4px}.campaign-diplomacy td:last-child{white-space:normal}.campaign-diplomacy td button{margin:2px}.campaign-diplomacy .ledger-table{width:100%}
