@font-face{font-family:Showcase Display;src:url(cormorant-garamond-cyrillic.woff2) format('woff2');font-display:swap;unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:Showcase Display;src:url(cinzel-latin-ext.woff2) format('woff2');font-display:swap;unicode-range:U+0100-02FF,U+0300-036F,U+1E00-1EFF}
@font-face{font-family:Showcase Display;src:url(cinzel-latin.woff2) format('woff2');font-display:swap;unicode-range:U+0000-00FF}
button[aria-pressed=true]:hover:not(:disabled){color:var(--paper)}
.territory{display:block;color:var(--muted);font-size:.86rem;margin:.5rem 0 0 1.5rem;font-variant-numeric:tabular-nums}
:root{color-scheme:light;--paper:#e7dfcc;--ink:#20271e;--muted:#505648;--line:#aaa18e;--signal:#963d2c;--panel:#f2ecde;--focus:#245f94;--ease-out:cubic-bezier(.23,1,.32,1)}
:root[data-theme=grimdark]{color-scheme:dark;--paper:#111716;--ink:#f0e7d5;--muted:#c0b9aa;--line:#56605a;--signal:#ffc58c;--panel:#1b2422;--focus:#ffc58c}
*{box-sizing:border-box}html{scroll-behavior:auto}body{margin:0;background:var(--paper);color:var(--ink);font:1rem/1.65 'Trebuchet MS',sans-serif}::selection{background:var(--signal);color:var(--paper)}a{color:inherit;text-underline-offset:.25em}button,select{font:inherit;color:inherit;background:var(--panel);border:1px solid var(--line);min-height:44px;padding:.45rem .8rem;cursor:pointer}button:disabled{opacity:.5;cursor:default}:focus-visible{outline:3px solid var(--focus);outline-offset:3px}button:hover:not(:disabled),a:hover{color:var(--signal)}button[aria-pressed=true]{background:var(--ink);color:var(--paper)}h1,h2,h3{font-family:Showcase Display,Georgia,serif;font-weight:600;line-height:1.12;letter-spacing:-.02em;overflow-wrap:anywhere}h1{font-size:clamp(2.5rem,4.8vw,4.8rem);margin:.6rem 0 1.5rem}h2{font-size:clamp(1.8rem,3vw,2.8rem);margin:0 0 1.5rem}h3{font-size:1.35rem;margin:.4rem 0}p{max-width:70ch}header,main,footer{max-width:1440px;margin:auto;padding:1.2rem 3vw}header{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;border-bottom:1px solid var(--line)}.brand{font-family:Showcase Display,Georgia,serif;text-decoration:none;font-size:1.15rem}.navigation,.preferences,.map-controls{display:flex;gap:.65rem;align-items:center;flex-wrap:wrap}nav a,.skip{min-height:44px;display:inline-flex;align-items:center;padding:.4rem .3rem}.skip{position:absolute;top:-8rem;background:var(--panel);z-index:3}.skip:focus{top:.5rem}.introduction{display:grid;grid-template-columns:minmax(250px,1fr) minmax(0,1.9fr);gap:3vw;padding:2.5rem 0 3rem}.intro-copy{align-self:center}.intro-copy>p{color:var(--muted)}.snapshot-note{font-size:.9rem}.action{display:inline-flex;min-height:44px;align-items:center;border-bottom:1px solid var(--signal);font-weight:bold}.map-viewer{min-width:0}.map-controls{justify-content:space-between;margin-bottom:.8rem}.layer-controls,.zoom-controls{display:flex;gap:.4rem;flex-wrap:wrap}.map-viewport{overflow:auto;max-height:70vh;border:1px solid var(--line);background:#182321;scrollbar-color:var(--muted) var(--panel);overscroll-behavior:contain}.map-viewport img{display:block;width:100%;height:auto;max-width:none}.map-viewport.zoom-2 img{width:150%}.map-viewport.zoom-3 img{width:225%}.map-viewport.zoom-4 img{width:340%}.map-status{font-size:.88rem;margin:.65rem 0;color:var(--muted)}section.content{border-top:1px solid var(--line);padding:3rem 0}.factions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 2rem}.faction{padding:1rem 0;border-bottom:1px solid var(--line)}.faction summary{cursor:pointer;min-height:44px;display:list-item}.faction p{color:var(--muted);margin:.8rem 0}.faction h3{display:inline}.swatch{display:inline-block;width:.7rem;height:.7rem;margin-right:.7rem;border:1px solid var(--line)}.reading{max-width:78ch}.reading p{white-space:pre-line}.facts{display:flex;flex-wrap:wrap;gap:.8rem 2rem;margin:1rem 0}.facts div{display:flex;gap:.5rem}.facts dt{color:var(--muted)}.facts dd{margin:0;font-variant-numeric:tabular-nums;font-weight:bold}.steps{padding-left:1.3rem}.steps li{padding:.4rem 0}.source-note{font-size:.9rem;color:var(--muted)}footer{border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:2rem}.no-script{background:var(--panel);padding:1rem}.locale-links{display:flex;gap:1rem}.map-error{padding:1rem;background:var(--panel)}[hidden]{display:none!important}@media(max-width:960px){header{flex-wrap:wrap}.introduction{grid-template-columns:1fr}.intro-copy{max-width:75ch}.factions{grid-template-columns:repeat(2,minmax(0,1fr))}.map-viewport{max-height:65vh}}@media(max-width:540px){header,main,footer{padding-left:1rem;padding-right:1rem}.navigation{gap:.45rem}.navigation a{font-size:.9rem}.preferences{width:100%;justify-content:space-between}.introduction{padding-top:1.5rem;gap:1.4rem}h1{font-size:2.6rem}.factions{grid-template-columns:1fr}.map-controls{align-items:start}.layer-controls button{font-size:.88rem;padding:.4rem .55rem}section.content{padding:2rem 0}}

/* Shared parchment / grimdark finish for the public campaign atlas. */
html { scrollbar-color: var(--muted) var(--paper); }
button, select { border-radius: 3px; }
button { transition: transform 140ms var(--ease-out); }
button:active:not(:disabled) { transform: scale(.97); }
h1, h2, h3 { text-wrap: balance; }
header { padding-block: 1.25rem; }
.brand { font-size: 1.2rem; white-space: nowrap; }
.navigation { font-size: .9rem; gap: 1.25rem; }
.navigation a { text-decoration: none; }
.navigation [aria-current=page] { box-shadow: inset 0 -2px var(--signal); }
.preferences { font-size: .8rem; }
.preferences label { display: flex; align-items: center; gap: .5rem; }
.preferences button, .preferences select { background: transparent; }
.preferences button[aria-pressed=true] { background: var(--ink); }
.introduction { grid-template-columns: minmax(250px,1fr) minmax(0,1.75fr); gap: clamp(2rem,4vw,4rem); padding: 2.75rem 0 4rem; align-items: center; }
h1 { margin-top: 0; }
.intro-copy > p:first-of-type { color: var(--ink); font-family: Showcase Display,Georgia,serif; font-size: 1.6rem; line-height: 1.35; margin: 0 0 1.5rem; text-wrap: pretty; }
.intro-copy > p:nth-of-type(2) { font-size: .95rem; }
.intro-copy .snapshot-note { font-size: .78rem; margin: 2rem 0 1rem; }
.action { gap: 1rem; padding: .6rem 0; text-decoration: none; }
.action::after { content: ''; width: .5rem; height: .5rem; border-top: 1.5px solid currentColor; border-right: 1.5px solid currentColor; transform: rotate(45deg); margin-right: .2rem; }
.map-viewer { background: var(--panel); border: 1px solid var(--line); padding: .75rem; box-shadow: 0 14px 32px rgb(0 0 0 / 9%); }
.map-controls { gap: .75rem; margin-bottom: .75rem; }
.layer-controls, .zoom-controls { gap: .25rem; }
.map-controls button { font-size: .8rem; padding: .45rem .65rem; }
.layer-controls button { border-color: transparent; background: transparent; }
.layer-controls button[aria-pressed=true] { background: var(--ink); }
.zoom-controls button { min-width: 44px; }
.map-viewport { border: 0; }
.map-viewport img { max-height: 70vh; object-fit: contain; }
.map-viewport.zoom-2 img, .map-viewport.zoom-3 img, .map-viewport.zoom-4 img { max-height: none; }
.map-status { font-size: .78rem; line-height: 1.6; margin: .9rem .25rem .5rem; max-width: 82ch; }
.map-direct { display: inline-flex; align-items: center; min-height: 44px; margin-left: .25rem; font-size: .8rem; }
section.content { padding: 3.5rem 0; }
.faction-heading { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem 3rem; flex-wrap: wrap; }
.faction-heading h2 { margin-bottom: .5rem; }
.facts { margin: 0; font-size: .9rem; gap: .8rem 1.5rem; }
.control-note { color: var(--muted); font-size: .85rem; margin: 1rem 0 2rem; }
.factions { align-items: start; }
.faction { padding: 0; border-bottom: 0; border-top: 1px solid var(--line); }
.faction summary { position: relative; min-height: 100px; padding: 1.15rem 1.8rem 1.15rem 1.4rem; list-style: none; }
.faction summary::-webkit-details-marker { display: none; }
.faction summary::after { content: ''; position: absolute; right: .3rem; top: 1.6rem; width: .45rem; height: .45rem; border-right: 1.5px solid var(--muted); border-bottom: 1.5px solid var(--muted); transform: rotate(45deg); }
.faction[open] summary::after { transform: rotate(225deg); top: 1.85rem; }
.faction[open] { background: var(--panel); }
.faction p, .faction small { margin: 0; padding: 0 1.4rem 1.25rem; font-size: .9rem; }
.faction h3 { font-size: 1.45rem; }
.swatch { position: absolute; left: 0; top: 1.6rem; width: .65rem; height: .65rem; margin: 0; border-color: var(--muted); }
.faction[open] .swatch { left: .25rem; }
.territory { font-size: .76rem; line-height: 1.5; margin: .65rem 0 0; }
.reading, .join-layout { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1.75fr); gap: 4vw; max-width: none; }
.reading > div { max-width: 70ch; }
.reading p { margin: 0 0 1.2rem; }
.steps { margin: 0 0 1.5rem; padding-left: 1.4rem; max-width: 70ch; }
.steps li { padding: 0 0 1rem .5rem; }
.steps li::marker { color: var(--signal); font-variant-numeric: tabular-nums; }
.join-layout .action { background: var(--ink); color: var(--paper); border: 1px solid var(--ink); border-radius: 3px; padding: .65rem 1.25rem; }
.join-layout > div > p:not(:first-of-type) { color: var(--muted); font-size: .85rem; }
.source-note { font-size: .8rem; }
.source-note p { max-width: 100ch; margin-top: 0; }
footer { align-items: center; font-size: .85rem; }
.locale-links { gap: 1.25rem; }
@media (hover: hover) and (pointer: fine) {
  .faction summary:hover { background: var(--panel); }
  .join-layout .action:hover { background: var(--signal); border-color: var(--signal); color: var(--paper); }
}
@media (hover: none) {
  button:hover:not(:disabled), a:hover { color: inherit; }
  button[aria-pressed=true]:hover:not(:disabled) { color: var(--paper); }
}
@media (max-width: 1100px) {
  header { flex-wrap: wrap; gap: .75rem 1.5rem; }
  .preferences { margin-left: auto; }
  .introduction { gap: 2rem; }
}
@media (max-width: 960px) {
  .introduction { grid-template-columns: 1fr; }
  h1 { max-width: 18ch; }
  .intro-copy .snapshot-note { margin-top: 1.25rem; }
  .map-viewport { max-height: 70vh; }
  .reading, .join-layout { grid-template-columns: 1fr; gap: 1rem; }
}
@media (max-width: 540px) {
  header { gap: .5rem; }
  .brand { width: 100%; font-size: 1.25rem; }
  .navigation { width: 100%; justify-content: space-between; gap: .5rem; }
  .navigation a { font-size: .8rem; }
  .preferences { margin: .5rem 0 0; padding-top: .75rem; border-top: 1px solid var(--line); }
  .introduction { padding: 1.5rem 0 2.5rem; gap: 2rem; }
  h1 { font-size: 3rem; }
  .intro-copy > p:first-of-type { font-size: 1.45rem; }
  .map-viewer { padding: .5rem; }
  .map-controls { gap: .5rem; }
  .layer-controls { width: 100%; gap: 0; }
  .layer-controls button { flex: 1; font-size: .75rem; padding-inline: .35rem; }
  .zoom-controls { margin-left: auto; }
  .faction summary { min-height: 96px; }
  section.content { padding: 2.5rem 0; }
  .facts { gap: 1rem; }
  .control-note { margin-bottom: 1.5rem; }
}
@media (prefers-reduced-motion: reduce) {
  button { transition: none; }
  button:active:not(:disabled) { transform: none; }
}
@media (forced-colors: active) {
  button[aria-pressed=true], .navigation [aria-current=page] { outline: 2px solid Highlight; outline-offset: -3px; }
}
