/* A bright illustrated atlas; animation timing lives in campaign-map.js. */
.campaign-dialog { background:#f8fcff; color:#183d4a; border:3px solid white; border-radius:24px; box-shadow:0 24px 90px #14333c44; }
.campaign-dialog .campaign-dialog-head { padding:24px 28px 8px; text-align:center; }
.campaign-dialog .campaign-live { color:#17633f; border:1px solid #b7d9c5; background:#edf7f0; letter-spacing:0; }
.campaign-dialog .campaign-live i { background:#238452; animation:none; }
.campaign-dialog .campaign-kicker { color:#50717d; margin-top:14px; letter-spacing:0; }
.campaign-dialog h2 { color:#173f4c; font-size:32px; line-height:1.15; max-width:none; margin:10px 0; }
.campaign-dialog .campaign-dialog-head > p { color:#58717d; font-size:14px; margin:auto; }
.campaign-dialog .campaign-dialog-close { color:#264650; background:white; border:1px solid #d3e2e8; box-shadow:0 3px 10px #173f4c15; }
.campaign-dialog .campaign-dialog-foot { background:#eaf4f7; border-top:1px solid #d5e6eb; padding:16px 28px; }
.campaign-dialog .campaign-dialog-foot > div strong { color:#17633f; }
.campaign-dialog .campaign-dialog-foot > div span { color:#476671; }
.campaign-dialog .campaign-dialog-foot > a { background:#17633f; color:white; box-shadow:0 4px 0 #0b4029; border-radius:12px; }
.campaign-dialog .campaign-dialog-foot > a:hover { background:#104d31; }
.campaign-dialog button:focus-visible,.campaign-dialog a:focus-visible { outline:3px solid #137a90; outline-offset:3px; }
.campaign-journey { padding:0 24px 16px; }
.journey-stage { position:relative; height:min(49dvh,440px); min-height:230px; overflow:hidden; }
.journey-map { display:block; width:100%; height:100%; overflow:hidden; }
.journey-map [data-journey-land] { fill:#fff; stroke:#8c9fa7; stroke-width:3px; }
.journey-map [data-journey-texture] { display:none; }
.journey-district { fill:#fff; stroke:#8c9fa7; stroke-width:.8; stroke-linejoin:round; }
.journey-map text { fill:#153d49; font:750 13px ui-rounded,system-ui,sans-serif; paint-order:stroke; stroke:#fff; stroke-width:5px; stroke-linejoin:round; letter-spacing:0; }
.journey-map [data-journey-traveler] { fill:white; stroke:#238452; stroke-width:3px; filter:drop-shadow(0 0 4px #60bc86); }
.journey-route { stroke:#238452; stroke-width:3px; filter:drop-shadow(0 2px 1px #fff); }
.journey-spark { filter:drop-shadow(0 0 5px #50ad77); }
.journey-spark circle:first-child { fill:#60bc86; opacity:.38; }
.journey-spark circle:last-child { fill:#238452; stroke:white; stroke-width:2; }
.journey-spark:nth-child(3n) circle:last-child { fill:#288e9b; }
.journey-spark:nth-child(3n+1) circle:last-child { fill:#e8a72f; }
.journey-city circle { fill:#238452; stroke:white; stroke-width:2.5; }
.journey-city .journey-halo { fill:#73c594; stroke:none; opacity:.25; }
.journey-city .journey-ring { fill:none; stroke:#2d915f; stroke-width:1.5; opacity:.7; }
.journey-city.is-active .journey-halo { opacity:.4; }
.journey-complete .journey-ring { transform-box:fill-box; transform-origin:center; animation:journeyBeacon 3s ease-out infinite; }
.journey-complete .journey-city:nth-child(2) .journey-ring { animation-delay:.5s; }
.journey-complete .journey-city:nth-child(3) .journey-ring { animation-delay:1s; }
.journey-complete .journey-city:nth-child(4) .journey-ring { animation-delay:1.5s; }
@keyframes journeyBeacon { from { transform:scale(1); opacity:.8; } to { transform:scale(2.8); opacity:0; } }
dialog:not([open]) .journey-ring { animation-play-state:paused; }
.journey-caption { text-align:center; min-height:70px; padding:8px 0; }
.journey-caption small { display:block; color:#557683; font-size:12px; margin-bottom:8px; }
.journey-caption strong { display:block; color:#17633f; font-size:23px; line-height:1.3; }
.journey-controls { display:flex; justify-content:center; gap:12px; flex-wrap:wrap; }
.journey-controls button { border:1px solid #b8d3dc; border-bottom-width:3px; background:white; color:#254f60; border-radius:12px; padding:10px 16px; font:inherit; font-weight:650; font-size:13px; cursor:pointer; }
.journey-controls button:hover { background:#e9f4f8; }
.journey-controls button:disabled { opacity:.5; cursor:wait; }
.journey-source { display:block; text-align:center; color:#657f88; font-size:10px; margin:12px auto 0; max-width:540px; }
.journey-source a { text-decoration:underline; }
.journey-source summary { cursor:pointer; width:max-content; margin:auto; padding:6px 10px; }
.journey-source small { display:block; padding:8px; line-height:1.5; }
.journey-hidden-note { display:none; }
.campaign-dialog.is-teaser .journey-map { filter:blur(9px); opacity:.35; }
.campaign-dialog.is-teaser .journey-hidden-note { display:grid; position:absolute; inset:0; place-items:center; text-align:center; padding:20px; color:#244a59; }
.campaign-dialog.is-teaser .journey-caption,.campaign-dialog.is-teaser .journey-controls { display:none; }
@media(max-width:600px) {
  .campaign-dialog .campaign-dialog-head { padding:24px 18px 4px; }
  .campaign-dialog h2 { font-size:26px; }
  .campaign-journey { padding:0 12px 12px; }
  .journey-stage { height:40dvh; min-height:220px; }
  .journey-caption strong { font-size:20px; }
}
@media(prefers-reduced-motion:reduce) { .journey-complete .journey-ring { animation:none; } }
