:root{
  --bg:#0b1020; --card:rgba(14,20,38,.82); --line:rgba(255,255,255,.10);
  --text:#e8ecf6; --muted:#9aa6c3; --accent:#ffb547;
  --colonial:#5aa9ff; --indigenous:#ff8a5c; --military:#ff5577; --nation:#7ee08a;
  --font: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%;background:var(--bg);color:var(--text);font-family:var(--font);overflow:hidden}
#globe{position:absolute;inset:0}
.cesium-viewer-bottom{bottom:134px !important;left:14px !important;transform:scale(.85);transform-origin:bottom left}
.cesium-widget-credits{opacity:.7}
.card{background:var(--card);backdrop-filter:blur(10px);border:1px solid var(--line);border-radius:14px;box-shadow:0 10px 30px rgba(0,0,0,.35)}
#brand{position:absolute;top:16px;left:18px;pointer-events:none;text-shadow:0 2px 12px rgba(0,0,0,.7)}
#brand .logo{font-size:28px;font-weight:800;letter-spacing:.5px}
#brand .logo::before{content:"";display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--accent);margin-right:8px;vertical-align:middle;box-shadow:0 0 12px var(--accent)}
#brand .sub{color:var(--muted);font-size:13px;margin-top:2px}
.proto{border:1px solid var(--line);border-radius:6px;padding:1px 6px;margin-left:6px;font-size:11px;text-transform:uppercase;letter-spacing:.08em}
#layers{position:absolute;top:92px;left:18px;padding:12px 14px;font-size:13px;min-width:200px}
.card-title{font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);margin-bottom:6px}
#layers label{display:flex;align-items:center;gap:8px;padding:4px 0;cursor:pointer;user-select:none}
#layers input{accent-color:var(--accent)}
.sw{width:10px;height:10px;border-radius:3px;display:inline-block}
.sw-borders{background:linear-gradient(135deg,#c7a6ff,#5ad1c9)}
.sw-colonial{background:var(--colonial)}.sw-indigenous{background:var(--indigenous)}
.sw-military{background:var(--military)}.sw-nation{background:var(--nation)}
#layers .hint{margin-top:8px;color:var(--muted);font-size:12px;border-top:1px solid var(--line);padding-top:8px}
#layers .hint b{color:var(--text)}

#panel{position:absolute;top:16px;right:16px;bottom:132px;width:min(400px,92vw);padding:22px 22px 18px;
  background:var(--card);backdrop-filter:blur(12px);border:1px solid var(--line);border-radius:16px;box-shadow:0 10px 40px rgba(0,0,0,.45);
  transform:translateX(calc(100% + 30px));transition:transform .35s ease;overflow:auto;display:flex;flex-direction:column}
#panel.open{transform:none}
#panel-close{position:absolute;top:10px;right:12px;background:none;border:0;color:var(--muted);font-size:26px;cursor:pointer}
#panel-tags{display:flex;gap:6px;flex-wrap:wrap}
.tag{font-size:11px;text-transform:uppercase;letter-spacing:.08em;padding:3px 8px;border-radius:999px;color:#0b1020;font-weight:700}
#panel-date{margin-top:14px;font-size:44px;font-weight:800;color:var(--accent);line-height:1}
#panel-date small{display:block;font-size:13px;color:var(--muted);font-weight:500;margin-top:6px}
#panel h2{margin:12px 0 4px;font-size:24px;line-height:1.2}
#panel-place{color:var(--muted);font-size:13px}
#panel-place::before{content:"📍 "}
#panel-summary{font-size:15.5px;line-height:1.6;color:#dfe5f3;margin:16px 0}
#panel-source{font-size:12.5px;color:var(--muted);border-top:1px solid var(--line);padding-top:10px}
#panel-source a{color:#9cc8ff}
#panel-nav{margin-top:auto;display:flex;justify-content:space-between;padding-top:16px}
#panel-nav button,#credits-btn,#play{background:rgba(255,255,255,.07);border:1px solid var(--line);color:var(--text);border-radius:10px;padding:7px 12px;cursor:pointer;font:inherit;font-size:13px}
#panel-nav button:hover,#credits-btn:hover,#play:hover{background:rgba(255,255,255,.14)}

#timebar{position:absolute;left:0;right:0;bottom:0;height:124px;padding:10px 28px 12px;
  background:linear-gradient(to top,rgba(8,12,26,.96),rgba(8,12,26,.80) 70%,rgba(8,12,26,0));}
#year-row{display:flex;align-items:center;gap:16px;margin-top:-14px}
#year{font-size:44px;font-weight:800;letter-spacing:1px;font-variant-numeric:tabular-nums;text-shadow:0 0 24px rgba(255,181,71,.35)}
#era-note{color:var(--muted);font-size:13px;flex:1}
#play{width:40px;height:40px;border-radius:50%;padding:0;font-size:15px}
#track-wrap{position:relative;margin-top:14px;height:44px}
#slider{position:absolute;left:0;right:0;top:10px;width:100%;margin:0;-webkit-appearance:none;appearance:none;height:4px;border-radius:4px;
  background:linear-gradient(90deg,#3b4a74,#6c7cb0);outline:none}
#slider::-webkit-slider-thumb{-webkit-appearance:none;width:20px;height:20px;border-radius:50%;background:var(--accent);border:3px solid #0b1020;box-shadow:0 0 0 2px var(--accent),0 0 16px var(--accent);cursor:grab}
#slider::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:var(--accent);border:3px solid #0b1020;cursor:grab}
/* 20261029e (Jon): smooth timeline — the thumb is moved every frame by app.js (rAF glides); only hover/grab feedback eases here */
#slider::-webkit-slider-thumb{transition:transform .15s ease-out,box-shadow .2s ease-out}
#slider:hover::-webkit-slider-thumb{box-shadow:0 0 0 2px var(--accent),0 0 22px var(--accent)}
#slider:active::-webkit-slider-thumb{cursor:grabbing;transform:scale(1.12)}
#slider:active::-moz-range-thumb{cursor:grabbing}
#ticks{position:absolute;left:0;right:0;top:0;height:24px;pointer-events:none;z-index:2}
#slider{z-index:1}
.tick{position:absolute;top:-6px;width:10px;height:10px;margin-left:-5px;border-radius:50%;pointer-events:auto;cursor:pointer;border:1.5px solid #0b1020;transition:transform .15s}
.tick:hover{transform:scale(1.6)}
.tick.off{opacity:.15;pointer-events:none}
.snap{position:absolute;top:17px;width:1px;height:7px;background:rgba(255,255,255,.25)}
#scale{position:absolute;left:0;right:0;top:28px;height:14px;font-size:11px;color:var(--muted)}
#scale span{position:absolute;transform:translateX(-50%)}
#hover-tip{position:absolute;pointer-events:none;background:rgba(10,14,28,.92);border:1px solid var(--line);border-radius:8px;padding:5px 9px;font-size:12px;display:none;z-index:5;white-space:nowrap}
.modal{position:absolute;inset:0;background:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;z-index:10}
.modal[hidden]{display:none}
.modal-body{position:relative;max-width:620px;margin:20px;padding:22px 26px;background:#121a33;border:1px solid var(--line);border-radius:16px;font-size:14px;line-height:1.55}
.modal-body h3{margin:6px 0 8px}
.modal-body a{color:#9cc8ff}
.modal-close{position:absolute;top:8px;right:12px;background:none;border:0;color:var(--muted);font-size:26px;cursor:pointer}
.caveat{background:rgba(255,138,92,.08);border-left:3px solid var(--indigenous);padding:8px 12px;border-radius:6px}

/* ---- iteration 2: sub-layers, curriculum, schools ---- */
#layers{max-height:calc(100vh - 250px);overflow:auto}
.sub-lyr{margin:0 0 4px 18px;padding-left:8px;border-left:1px solid var(--line)}
#layers label.disabled{opacity:.45;cursor:not-allowed}
#layers label small{color:var(--muted);font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;border:1px solid var(--line);border-radius:5px;padding:0 4px}
.sw-irs{background:#ffd2b8;border-radius:50%;box-shadow:0 0 0 2px #7a2e12}
.sw-fids{background:#d9c38a;border-radius:50%}
.sw-curr{background:#c9a7ff}
.card-title.sec{margin-top:10px;padding-top:8px;border-top:1px solid var(--line)}
#curr-opts .radios{display:grid;grid-template-columns:1fr 1fr;gap:0 10px}
#curr-opts .radios label{padding:2px 0}
#curr-strands{margin-top:6px}
#curr-strands label{align-items:flex-start;font-size:12px;line-height:1.3;max-width:220px}
#curr-strands b{color:#c9a7ff;font-weight:700}
.mini{color:var(--muted);font-size:11.5px;margin-top:4px;max-width:220px}
.strand-band{position:absolute;top:6px;height:12px;border-radius:6px;background:rgba(201,167,255,.18);border:1px solid rgba(201,167,255,.45);pointer-events:none}
.tick.curr{box-shadow:0 0 0 2px #c9a7ff,0 0 8px #c9a7ff}
#panel-curr{margin-top:12px;border-top:1px solid var(--line);padding-top:10px;font-size:13px}
#panel-curr h4{margin:0 0 6px;font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:#c9a7ff}
#panel-curr .course{margin:8px 0 2px;font-weight:700;font-size:12.5px}
#panel-curr .course.active{color:#c9a7ff}
#panel-curr ul{margin:0;padding:0;list-style:none}
#panel-curr li{margin:4px 0;line-height:1.4;color:#dfe5f3}
#panel-curr a.code{display:inline-block;min-width:38px;font-weight:700;color:#0b1020;background:#c9a7ff;border-radius:5px;padding:0 5px;margin-right:6px;text-decoration:none;font-size:12px;text-align:center}
#panel-curr .kind{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);border:1px solid var(--line);border-radius:5px;padding:0 4px;margin-left:4px}
#panel-curr .lbl{color:var(--muted);font-size:11px}
#panel-curr .cite{margin-top:8px;color:var(--muted);font-size:11.5px}
#panel-curr .cite a{color:#9cc8ff}
#school-pop{position:absolute;z-index:6;width:min(340px,90vw);padding:14px 16px 12px;font-size:13px;line-height:1.45}
#school-pop h3{margin:0 22px 4px 0;font-size:17px}
#school-pop .yrs{color:#ffd2b8;font-weight:700;font-size:14px}
#school-pop .meta{color:var(--muted);font-size:12px;margin:4px 0}
#school-pop .flag{background:rgba(255,181,71,.10);border-left:3px solid var(--accent);padding:4px 8px;border-radius:5px;margin:6px 0;font-size:12px}
#school-pop .src{font-size:11.5px;color:var(--muted);border-top:1px solid var(--line);margin-top:8px;padding-top:6px}
#school-pop a{color:#9cc8ff}
#school-pop .nctr{display:inline-block;margin-top:8px;font-weight:600}
#school-pop .help{margin-top:8px;font-size:11.5px;color:#ffd2b8}
.pop-close{position:absolute;top:6px;right:10px;background:none;border:0;color:var(--muted);font-size:22px;cursor:pointer}
#support-line{background:rgba(40,16,8,.88);border:1px solid rgba(255,138,92,.5);color:#ffe3d6;border-radius:10px;padding:3px 10px;font-size:11.5px;line-height:1.3;white-space:nowrap;flex:0 1 auto;overflow:hidden;text-overflow:ellipsis}
#support-line[hidden]{display:none}
#support-line a{color:#fff}
/* ---- iteration 3: society tag, curriculum tree, media, tour ---- */
:root{--society:#f2c94c}
.sw-society{background:var(--society)}
#layers{width:300px}
small.free{border:0 !important;opacity:.7}
#curr-tree{margin-top:4px;font-size:12.5px}
#curr-tree details{margin:2px 0}
#curr-tree summary{cursor:pointer;list-style:none;padding:3px 0;line-height:1.35}
#curr-tree summary::-webkit-details-marker{display:none}
#curr-tree summary::before{content:"▸";display:inline-block;width:12px;color:var(--muted);transition:transform .15s}
#curr-tree details[open]>summary::before{transform:rotate(90deg)}
#curr-tree .cnode>summary{font-weight:700}
#curr-tree .cnode>summary label{display:inline-flex !important;padding:0 !important;gap:6px}
#curr-tree .snode{margin-left:12px}
#curr-tree .snode>summary{font-size:12px}
#curr-tree .snode b{color:#c9a7ff}
#curr-tree .yrs{color:var(--muted);font-size:11px;white-space:nowrap}
#curr-tree .onode{margin-left:14px;font-size:11.8px;color:#d6dcef}
#curr-tree ul{margin:2px 0 6px 0;padding-left:16px}
#curr-tree li{margin:3px 0;line-height:1.35;color:#c9d0e4}
#curr-tree a.code{color:#c9a7ff;font-weight:700;text-decoration:none;margin-right:3px}
#curr-tree a.code:hover{text-decoration:underline}
#curr-tree .n{display:inline-block;min-width:16px;text-align:center;font-size:10px;padding:0 4px;border-radius:8px;background:rgba(201,167,255,.2);color:#e3d6ff;font-weight:700}
.chips{display:flex;flex-wrap:wrap;gap:3px;margin-top:3px}
.chip{font:inherit;font-size:10.5px;padding:1px 6px;border-radius:8px;border:1px solid var(--line);background:rgba(255,255,255,.06);color:var(--text);cursor:pointer}
.chip:hover{background:rgba(255,255,255,.16)}
.tour-btn{display:block;margin:4px 0 4px 14px;font:inherit;font-weight:700;font-size:12.5px;padding:6px 10px;border-radius:9px;border:1px solid #ffb547;background:rgba(255,181,71,.14);color:#ffd9a0;cursor:pointer}
.tour-btn small{font-weight:500;opacity:.8}
.tour-btn:hover{background:rgba(255,181,71,.26)}
#panel{overflow-y:auto}
#panel-media{margin:6px 0 12px}
.mfig{margin:0}
.mfig img{width:100%;max-height:240px;object-fit:contain;background:#0a0f20;border-radius:10px;border:1px solid var(--line);display:block}
.mfig figcaption{font-size:12px;color:#c9d0e4;margin-top:5px;line-height:1.4}
.mfig .credit{display:block;color:var(--muted);font-size:11px;margin-top:2px}
.mfig a{color:#9cc8ff}
.mthumbs{display:flex;gap:6px;margin-top:6px}
.mthumbs button{padding:0;border:2px solid transparent;border-radius:7px;background:none;cursor:pointer;opacity:.7}
.mthumbs button.on{border-color:var(--accent);opacity:1}
.mthumbs img{width:56px;height:40px;object-fit:cover;border-radius:5px;display:block}
/* 20261031: labelled AI reconstruction (tools/recon_meta.py) */
.mthumbs button.ai{position:relative}
.mthumbs .aitag{position:absolute;right:2px;bottom:2px;font-size:9px;font-weight:700;line-height:1;padding:2px 3px;border-radius:3px;background:rgba(10,15,32,.85);color:#ffd27a}
.mfig.recon .rimg{position:relative}
.mfig.recon .aibadge{position:absolute;left:6px;top:6px;font-size:10.5px;font-weight:600;padding:2px 6px;border-radius:5px;background:rgba(10,15,32,.82);color:#ffd27a;border:1px solid rgba(255,210,122,.45);pointer-events:none}
.mfig.recon .rmore{display:inline-block;margin-top:4px;padding:2px 8px;font-size:11px;border-radius:999px;border:1px solid var(--line);background:none;color:#9cc8ff;cursor:pointer}
.mfig.recon .rinfo{margin-top:6px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;font-size:11.5px;line-height:1.45}
.mfig.recon .rinfo p{margin:0 0 4px}
.mfig.recon .rinfo ul{margin:0 0 4px;padding-left:18px}
.mfig.recon .rinfo li{margin:2px 0}
.mfig.recon .rsrc{color:var(--muted)}
.mfig.recon .rni{margin-top:6px;color:var(--muted);font-weight:600}
#panel-related,#panel-tri{margin-top:12px;border-top:1px solid var(--line);padding-top:10px;font-size:13px}
#panel-related h4{margin:0 0 6px;font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:#ffd27a}
#panel-related ul,#panel-tri ul{margin:0;padding-left:16px}
#panel-related li{margin-bottom:8px}
#panel-related a,#panel-tri a{color:#9cc8ff}
#panel-related .meta{color:var(--muted);font-size:11.5px;display:block}
#panel-related .framing{font-size:12.5px;color:#d6dcef;margin-top:2px;line-height:1.45}
#panel-related .lbl,#panel-curr .lbl{color:var(--muted);font-size:11px}
#panel-tri summary{cursor:pointer;font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:#7fd4e6;font-weight:700}
#panel-tri .tri-k{margin:8px 0 2px;font-weight:700;font-size:12px}
#panel-tri li{margin:2px 0;font-size:12.5px}
/* 20261101d (Jon t722u): centred on the open map between #layers and #panel; --map-l/--map-r set by syncMapGutter() in app.js */
#tourbar{position:absolute;bottom:140px;left:calc(var(--map-l,0px) + (100% - var(--map-l,0px) - var(--map-r,0px)) / 2);transform:translateX(-50%);width:min(540px,52vw);padding:12px 16px;z-index:4;font-size:13.5px}
body.touring #tourbar{display:block}
#tourbar[hidden]{display:none}
.tour-head{display:flex;align-items:center;gap:8px}
.tour-head .card-title{margin:0;color:#ffd27a}
.pill{font-size:10.5px;border:1px solid #c9a7ff;color:#e3d6ff;border-radius:8px;padding:0 6px}
#tour-close{margin-left:auto;background:none;border:0;color:var(--muted);font-size:22px;cursor:pointer;line-height:1}
#tour-title{font-size:18px;font-weight:800;margin-top:4px}
#tour-text{margin:6px 0;line-height:1.5;color:#dfe5f3}
#tour-events{display:flex;flex-wrap:wrap;gap:4px}
.tour-ctl{display:flex;gap:8px;align-items:center;margin-top:8px}
.tour-ctl button{background:rgba(255,255,255,.07);border:1px solid var(--line);color:var(--text);border-radius:10px;padding:6px 12px;cursor:pointer;font:inherit;font-size:13px}
.tour-ctl button:disabled{opacity:.4;cursor:default}
.tour-ctl .voice{display:flex;gap:6px;align-items:center;color:var(--muted)}
.tour-ctl .voice[hidden]{display:none}
.tour-ctl .voice select{background:rgba(255,255,255,.07);border:1px solid var(--line);color:var(--text);border-radius:8px;padding:3px 6px;font:inherit;font-size:12.5px}
.tour-ctl .voice select option{background:#0b1020}
.tour-ctl .narr{margin-left:auto;display:flex;gap:6px;align-items:center;color:var(--muted);cursor:pointer}
/* ---- iteration 4: nested Borders, Curricula pickers ---- */
.sw-national{background:#f4f1ff;box-shadow:inset 0 0 0 2px #6c7cb0}
.sw-subnational{background:transparent;border:1.5px dashed #c7a6ff}
.sub-lyr.gated{opacity:.45}
.curr-pick{display:flex;flex-direction:column;gap:5px;margin:2px 0 6px}
#layers .curr-pick label.sel{display:grid;grid-template-columns:68px 1fr;align-items:center;gap:8px;padding:0;cursor:default}
.curr-pick label.sel span{color:var(--muted);font-size:11.5px}
.curr-pick select{width:100%;min-width:0;font:inherit;font-size:12.5px;color:var(--text);background-color:rgba(255,255,255,.06);
  border:1px solid var(--line);border-radius:8px;padding:4px 26px 4px 8px;-webkit-appearance:none;appearance:none;cursor:pointer;
  background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);
  background-position:calc(100% - 13px) 52%,calc(100% - 8px) 52%;background-size:5px 5px;background-repeat:no-repeat}
.curr-pick select:hover:not(:disabled){background-color:rgba(255,255,255,.11)}
.curr-pick select:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.curr-pick select:disabled{opacity:.45;cursor:not-allowed}
.curr-pick option{background:#121a33;color:var(--text)}
.curr-pick option:disabled{color:var(--muted)}
.curr-pick optgroup{background:#121a33;color:var(--muted);font-style:normal}

/* 2026-10-26c: Places, base map picker, panel card mode */
.sw-places{background:#ffcf6e;border-radius:50%;box-shadow:0 0 0 2px #0b1020 inset}
.sw-event-pins{background:#ff5a5f;border-radius:50% 50% 50% 0;transform:rotate(-45deg) scale(.8);box-shadow:0 0 0 2px #0b1020 inset} /* 20261031g: Event Pins layer swatch (red pin) */
.sw-subnational{background:transparent;border:1.5px solid #ffd27a}
.basemap-pick{margin-bottom:2px}
#basemap-note,#subnat-note{margin:2px 0 4px;color:var(--muted)}
#panel.card-mode #panel-date small{display:block}
#panel.card-mode #panel-related p{margin:6px 0}
#panel .card-caveat{border-left:3px solid #b98a2e;padding-left:8px;color:var(--muted)}
#panel-place[hidden]{display:none}
#panel-nav[hidden]{display:none}

/* 2026-10-26e: OneWorld History rename, Histories pickers + overview card */
.hist-group{margin:2px 0 6px}
.hist-name{font-size:12px;font-weight:700;color:var(--text);margin:4px 0 3px}
.hist-group[data-group="nations"] .hist-name::before,.hist-group[data-group="empires"] .hist-name::before,.hist-group[data-group="conflicts"] .hist-name::before{content:"";display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:6px;vertical-align:middle}
.hist-group[data-group="nations"] .hist-name::before{background:#7ee08a}
.hist-group[data-group="empires"] .hist-name::before{background:#e86fa0}
.hist-group[data-group="conflicts"] .hist-name::before{background:#ff5577}
#hist-note{margin:0 0 4px}
#panel.hist-mode #panel-date{font-size:32px}
#panel.hist-mode .mini{max-width:none}
#panel.hist-mode #panel-summary{margin:12px 0 8px}
.hist-beats h4,.hist-contested h4{margin:10px 0 6px;font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:#ffd27a}
.hist-contested h4{color:#ff9a7a}
.hist-beats ol{margin:0;padding-left:18px}
.hist-beats li,.hist-contested li{margin:0 0 7px;line-height:1.45;font-size:13px;color:#dfe5f3}
.hist-beats li b{color:var(--accent);font-weight:700;margin-right:4px}
.hist-contested ul{margin:0;padding-left:16px}
.hist-contested{background:rgba(255,138,92,.06);border-left:3px solid #ff9a7a;border-radius:6px;padding:2px 10px 4px;margin-top:8px}
.hist-credit{margin-top:6px;font-size:11.5px;color:var(--muted)}
#panel.hist-mode #panel-related{order:1}
#panel.hist-mode #panel-source{order:2;margin-top:12px}

/* ---- 20261027a: nation tour block (Histories → Nations) ---- */
.nation-tour{margin:2px 0 8px 0;padding:7px 9px 8px;border:1px solid rgba(126,224,138,.35);border-radius:10px;background:rgba(126,224,138,.06)}
.nation-tour[hidden]{display:none}
.nation-tour .nt-count{font-size:12.5px;font-weight:700;color:#bff0c6;display:flex;align-items:center;gap:6px}
.nation-tour .nt-link{margin-left:auto;background:none;border:0;padding:0;color:var(--muted);font:inherit;font-size:11.5px;font-weight:500;text-decoration:underline;cursor:pointer}
.nation-tour .nt-link:hover{color:var(--text)}
.nation-tour .nt-start{margin:6px 0 6px 0;width:100%;text-align:left}
.nation-tour .nt-start:disabled{opacity:.5;cursor:not-allowed}
.nation-tour .nt-start.locked{border-color:#8a93ad;background:rgba(255,255,255,.05);color:#c9cfdf}
.nation-tour .nt-len{margin:0}
.nation-tour #nt-note{margin-top:5px}
#tour-strand.nation-pill{background:rgba(126,224,138,.16);color:#bff0c6;border-color:rgba(126,224,138,.4)}

/* Tour tone (Patriotic · Neutral · Critical) */
.nation-tour .nt-tone{display:flex;align-items:center;gap:8px;margin:7px 0 0}
.nation-tour .nt-tone[hidden],#nt-tone-note[hidden]{display:none}
.nation-tour .nt-tone-lbl{color:var(--muted);font-size:11.5px;min-width:44px}
.seg{display:flex;flex:1;border:1px solid var(--line);border-radius:9px;overflow:hidden}
.seg button{flex:1;font:inherit;font-size:11.5px;padding:4px 4px;border:0;border-right:1px solid var(--line);background:rgba(255,255,255,.04);color:#c9cfdf;cursor:pointer}
.seg button:last-child{border-right:0}
.seg button:hover{background:rgba(255,255,255,.09);color:var(--text)}
.seg button.on{background:rgba(126,224,138,.22);color:#e4ffe8;font-weight:700}
.seg button:focus-visible{outline:2px solid #7ee08a;outline-offset:-2px}
#nt-tone-note{margin-top:4px;font-style:italic}
/* 20261029g: Mode (Chronological · Thematic) sits between Length and Tone and reuses the Tone segment look. */
.nation-tour .nt-mode[hidden],.nation-tour .nt-mode-note:empty{display:none}
.nation-tour .nt-mode-note{margin-top:4px;font-style:italic}
.seg button.soon{color:#8a93ad}
.seg button.soon.on{color:#e4ffe8}
.tone-pill{border-color:#7ee08a;color:#d4f7d9}
.tone-pill[hidden]{display:none}
.tone-pill[data-tone="patriotic"]{border-color:#7fb2ff;color:#d6e6ff}
.tone-pill[data-tone="critical"]{border-color:#ff9b7a;color:#ffe0d4}
#tour-focus{margin-top:2px;font-style:italic;max-width:none}
#tour-focus[hidden],#tour-src[hidden]{display:none}
#tour-src{margin-top:6px;max-width:none;line-height:1.45}
#tour-src a{color:#9fb7e8}
#tour-events .chip.beat-on{outline:2px solid #ffb547;outline-offset:1px;background:rgba(255,181,71,.18)}

/* ---- 20261028a: Histories → Other group, generic tour block (Empires / Conflicts / Other), lenses ---- */
.hist-group[data-group="other"] .hist-name::before{content:"";display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:6px;vertical-align:middle;background:#5fc3d8}
.hist-tour[data-group="empires"]{border-color:rgba(232,111,160,.4);background:rgba(232,111,160,.06)}
.hist-tour[data-group="empires"] .nt-count{color:#f6c4d8}
.hist-tour[data-group="conflicts"]{border-color:rgba(255,85,119,.4);background:rgba(255,85,119,.06)}
.hist-tour[data-group="conflicts"] .nt-count{color:#ffc2cd}
.hist-tour[data-group="other"]{border-color:rgba(95,195,216,.4);background:rgba(95,195,216,.06)}
.hist-tour[data-group="other"] .nt-count{color:#c4ecf4}
.hist-tour .ht-lens{margin:7px 0 0}
.hist-tour .ht-lens[hidden],.hist-tour .ht-lens-note:empty{display:none}
.hist-tour .ht-lens-note{margin-top:4px;font-style:italic}
.hist-tour .seg button.locked{color:#8a93ad;background:rgba(255,255,255,.02);cursor:help}
.hist-tour .seg button.locked:hover{color:#c9cfdf}
.hist-tour[data-group="empires"] .seg button.on{background:rgba(232,111,160,.24);color:#ffe6f0}
.hist-tour[data-group="conflicts"] .seg button.on{background:rgba(255,85,119,.22);color:#ffe3e8}
#tour-strand.nation-pill[data-kind="empire"]{background:rgba(232,111,160,.16);color:#f6c4d8;border-color:rgba(232,111,160,.4)}
#tour-strand.nation-pill[data-kind="conflict"]{background:rgba(255,85,119,.16);color:#ffc2cd;border-color:rgba(255,85,119,.4)}
#tour-strand.nation-pill[data-kind="other"]{background:rgba(95,195,216,.16);color:#c4ecf4;border-color:rgba(95,195,216,.4)}
#tour-events .chip.tour-chip{border-style:dashed}
#year.world-year{letter-spacing:-.01em}
#hist-other-entity optgroup{color:#9aa6c3;font-style:normal}
#hist-other-entity option:disabled{color:#6f7891}

/* 20261028c: timeline zoom control + scale break, Flag entry form */
#tl-ctl{display:flex;align-items:center;gap:8px;margin-left:auto}
.tl-zoom{background:rgba(255,181,71,.14);color:var(--accent);border:1px solid rgba(255,181,71,.5);border-radius:999px;padding:3px 10px;font:600 12px Inter,system-ui,sans-serif;cursor:pointer}
.tl-zoom:hover{background:rgba(255,181,71,.26)}
.tl-break{position:absolute;top:4px;width:0;height:20px;border-left:2px dotted rgba(255,181,71,.7)}
body.tl-zoomed #slider{box-shadow:0 0 0 1px rgba(255,181,71,.35)}
.flag-box{margin:12px 0 4px;padding:8px 10px;border:1px solid rgba(255,255,255,.12);border-radius:8px;background:rgba(255,255,255,.03)}
.flag-toggle{display:flex;align-items:center;gap:6px;font-weight:600;cursor:pointer}
#flag-fields{display:flex;flex-direction:column;gap:4px;margin-top:8px}
#flag-fields[hidden]{display:none}
.flag-lbl{font-size:12px;font-weight:600;margin-top:6px}
#flag-fields textarea,#flag-fields input[type=text],#flag-fields input[type=email]{width:100%;box-sizing:border-box;background:#0b1020;color:inherit;border:1px solid rgba(255,255,255,.2);border-radius:6px;padding:6px 8px;font:13px Inter,system-ui,sans-serif}
#flag-fields textarea{resize:vertical;min-height:70px}
.flag-actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:8px}
#flag-submit{background:var(--accent);color:#0b1020;border:0;border-radius:6px;padding:6px 12px;font-weight:700;cursor:pointer}
#flag-msg.ok{color:#7ee08a}#flag-msg.err{color:#ff8a8a}
.byline{margin-top:4px;font-size:12px;font-weight:600;color:var(--accent);letter-spacing:.02em}
#panel-media figcaption .ftitle{display:block;font-weight:600}
#tl-ctl{background:rgba(10,14,24,.82);border-radius:6px;padding:2px 6px;z-index:6}

/* 20261028d: compact tour Flag entry + its side panel */
.tour-flag{margin-top:4px}
.tour-flag-btn{background:none;border:1px solid rgba(255,255,255,.22);color:var(--muted);border-radius:6px;padding:1px 8px;font-size:11.5px;cursor:pointer}
.tour-flag-btn:hover,.tour-flag-btn[aria-expanded=true]{color:#fff;border-color:var(--accent)}
#tour-flag-pop{position:absolute;z-index:6;padding:10px 12px;font-size:13px;max-height:70vh;overflow:auto}
#tour-flag-pop[hidden]{display:none}
#tour-flag-pop .flag-fields{display:flex;flex-direction:column;gap:4px;margin-top:6px}
#tour-flag-pop textarea,#tour-flag-pop input[type=text],#tour-flag-pop input[type=email]{width:100%;box-sizing:border-box;background:#0b1020;color:inherit;border:1px solid rgba(255,255,255,.2);border-radius:6px;padding:6px 8px;font:13px Inter,system-ui,sans-serif}
#tour-flag-pop textarea{resize:vertical;min-height:64px}
#tour-flag-close{margin-left:auto;background:none;border:0;color:var(--muted);font-size:20px;cursor:pointer;line-height:1}
.flag-submit{background:var(--accent);color:#0b1020;border:0;border-radius:6px;padding:6px 12px;font-weight:700;cursor:pointer}
#tflag-msg.ok{color:#7ee08a}#tflag-msg.err{color:#ff8a8a}
/* 20261028d: entity flag above the name + national anthem control beside it */
#panel-flagimg{margin:12px 0 0;padding:0}
#panel-flagimg[hidden]{display:none}
#panel-flagimg img{display:block;width:100%;max-height:220px;object-fit:contain;object-position:left center;border-radius:3px;box-shadow:0 0 0 1px rgba(255,255,255,.18)}
#panel-flagimg figcaption{margin-top:3px;font-size:10.5px;opacity:.75}
/* 20261030b: contested dual current-flags side by side */
#panel-flagimg.contested .flag-pair{display:grid;grid-template-columns:1fr 1fr;gap:10px;align-items:start}
#panel-flagimg.contested .flag-slot img{display:block;width:100%;max-height:160px;object-fit:contain;object-position:center;border-radius:3px;box-shadow:0 0 0 1px rgba(255,255,255,.18)}
#panel-flagimg.contested .flag-slot figcaption{margin-top:3px;font-size:10px;opacity:.75;line-height:1.35}
#panel-flagimg .flag-contest-note{margin:8px 0 0;opacity:.85;color:#ffd27a;line-height:1.4}
#panel-titlerow{display:flex;align-items:center;flex-wrap:wrap;gap:4px 12px}
#panel-anthem{display:flex;flex-direction:column;align-items:flex-start;gap:6px;font-size:12px;margin-top:8px}
#panel-anthem[hidden]{display:none}
#panel-anthem button{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.22);color:inherit;border-radius:6px;padding:2px 7px;cursor:pointer;line-height:1;display:inline-flex;align-items:center}
#panel-anthem .anthem-play{gap:6px;padding:3px 9px}
#panel-anthem .anthem-ico{min-width:12px;text-align:center}
#panel-anthem .anthem-lbl{font-weight:600}
#panel-anthem .anthem-credit{font-size:11px;opacity:.85}

/* 20261029b: right-panel links white for readability on the dark panel (curriculum code badges keep their own colours) */
#panel a:not(.code){color:#fff}
/* 20261029b: Histories "Select" / Curricula Country gating: hidden rows and blocks really hide (label.sel is a grid) */
#layers [hidden]{display:none !important}
/* 20261029b: anthem row (▶ · name link · Public domain recording), Lyrics button, language chips and lyrics text */
#panel-anthem .anthem-row{display:flex;align-items:center;flex-wrap:wrap;gap:8px}
#panel-anthem .anthem-lyrics{padding:3px 9px;font:inherit;font-size:12px}
#panel-anthem .anthem-lyrics.on{background:rgba(255,255,255,.16)}
#panel-lyrics{margin:8px 0 4px;padding:8px 10px;border:1px solid rgba(255,255,255,.12);border-radius:8px;background:rgba(255,255,255,.03)}
#panel-lyrics[hidden]{display:none}
#panel-lyrics .ly-chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}
#panel-lyrics .ly-chip{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.22);color:var(--text);border-radius:999px;padding:2px 10px;font:inherit;font-size:12px;cursor:pointer}
#panel-lyrics .ly-chip.on{background:var(--accent);border-color:var(--accent);color:#0b1020;font-weight:600}
#panel-lyrics .ly-text{font-size:13.5px;line-height:1.5;color:#dfe5f3}
#panel-lyrics .ly-stanza{margin-bottom:10px}
#panel-lyrics .ly-pair{margin-bottom:8px}
#panel-lyrics .ly-above{color:var(--muted);font-size:12.5px}
#panel-lyrics .ly-src{margin-top:4px}

/* 20261029c: anthem block BELOW the title; Anthem Lyrics | Anthem History | Flag History buttons; each opens its own chunk */
#panel-anthem{margin:6px 0 4px}
#panel-anthem .anthem-btns{display:flex;flex-wrap:wrap;gap:6px}
#panel-anthem .anthem-btn{padding:3px 9px;font:inherit;font-size:12px}
#panel-anthem .anthem-btn.on{background:rgba(255,255,255,.16)}
.panel-chunk{margin:8px 0 4px;padding:8px 10px;border:1px solid rgba(255,255,255,.12);border-radius:8px;background:rgba(255,255,255,.03)}
.panel-chunk[hidden]{display:none}
#panel-ahist h4,#panel-fhist h4{margin:0 0 6px;font-size:13px}
#panel-ahist p,#panel-fhist p{margin:0 0 8px;font-size:13px;line-height:1.5;color:#dfe5f3}
#panel-ahist .ly-src,#panel-fhist .ly-src{margin-top:4px}
/* 20261029i (Jon): earlier flags as SVGs in Flag History — a stacked timeline, oldest first, current flag last */
#panel-fhist .fh-stages{list-style:none;margin:2px 0 10px;padding:0 0 0 10px;border-left:2px solid rgba(255,255,255,.18)}
#panel-fhist .fh-stage{position:relative;display:flex;gap:10px;align-items:flex-start;margin:0 0 10px}
#panel-fhist .fh-stage::before{content:"";position:absolute;left:-15px;top:14px;width:8px;height:8px;border-radius:50%;background:#9aa6c4}
#panel-fhist .fh-stage.current::before{background:var(--accent)}
#panel-fhist .fh-img{flex:0 0 96px;display:block;line-height:0}
#panel-fhist .fh-img img{display:block;width:96px;height:auto;max-height:64px;object-fit:contain;object-position:left top;border-radius:2px;box-shadow:0 0 0 1px rgba(255,255,255,.18)}
#panel-fhist .fh-txt{min-width:0;font-size:12px;line-height:1.35;color:#dfe5f3}
#panel-fhist .fh-period{font-weight:700;font-size:12px}
#panel-fhist .fh-now{font-weight:600;font-size:10px;text-transform:uppercase;letter-spacing:.04em;background:var(--accent);color:#0b1020;border-radius:3px;padding:0 4px;margin-left:4px}
#panel-fhist .fh-name{font-weight:600}
#panel-fhist .fh-note{color:var(--muted);font-size:11.5px;margin-top:1px}
#panel-fhist .fh-credit{font-size:10.5px;opacity:.75;margin-top:2px;overflow-wrap:anywhere}

/* 20261029d (Jon): left-end rewind controls — always reach earlier years, even when a nation pick has zoomed the bar */
#tl-rew{display:flex;gap:4px;margin-right:-8px}
#tl-rew button{background:rgba(255,255,255,.07);border:1px solid var(--line);color:var(--text);border-radius:10px;height:32px;padding:0 9px;cursor:pointer;font:inherit;font-size:12px;white-space:nowrap}
#tl-rew button:hover{background:rgba(255,255,255,.14)}
#tl-rew button:disabled{opacity:.4;cursor:default}
#tour-src .route-notes{margin-top:4px;color:#ffe2a3}
#tour-src .route-notes>div{margin-top:2px}

/* 20261030b: base map description + required imagery credits, above the layers list */
.basemap-info{margin:0 0 10px;padding:0 0 8px;border-bottom:1px solid var(--line);font-size:11.5px;line-height:1.35;color:var(--muted)}
/* 20261030 declutter (Jon): title + one short credit line + More info; full text lives in #basemap-dlg */
.basemap-info .bm-row{display:flex;align-items:baseline;justify-content:space-between;gap:8px}
.basemap-info .bm-name{color:var(--text);font-weight:600;font-size:12.5px}
.basemap-info .bm-short{font-size:10.5px;margin-top:1px}
.bm-more{background:none;border:0;padding:0;color:#9cc8ff;font:inherit;font-size:11px;cursor:pointer;white-space:nowrap}
.bm-more:hover,.bm-more:focus-visible{text-decoration:underline}
.bm-dlg-body{max-width:440px;font-size:13px}
.bm-dlg-body p{margin:8px 0}
.bm-dlg-body .bm-ack{font-style:italic;color:var(--muted)}
.bm-dlg-body .bm-fallback{color:var(--muted);font-size:12px}
.basemap-info #basemap-note{margin:3px 0 0;font-size:10.5px;max-width:none}
/* 20261030d map-click → Histories: "Modern nation today" note on thin culture cards */
#panel .nat-succ{border-left:3px solid #5b8bd6;padding-left:8px}
#panel .nat-succ .nat-open{background:none;border:1px solid #5b8bd6;border-radius:999px;color:#cfe0ff;padding:1px 8px;margin:2px 2px 0 0;font:inherit;cursor:pointer}
#panel .nat-succ .nat-open:hover{background:#5b8bd622}

/* ===== 20261030h (Jon t498u): Dark / Light mode. Dark = default (everything above). Light = body.theme-light ===== */
.theme-seg{display:flex;margin:0 0 10px;border:1px solid var(--line);border-radius:9px;overflow:hidden}
.theme-seg button{flex:1;font:inherit;font-size:12px;padding:4px 6px;border:0;background:rgba(255,255,255,.04);color:var(--muted);cursor:pointer}
.theme-seg button+button{border-left:1px solid var(--line)}
.theme-seg button:hover{background:rgba(255,255,255,.10);color:var(--text)}
.theme-seg button.on{background:rgba(255,181,71,.22);color:var(--text);font-weight:700}
.theme-seg button:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}

body.theme-light{
  --bg:#cfe4f7; --card:rgba(255,253,246,.90); --line:rgba(40,52,90,.16);
  --text:#1d2638; --muted:#56617d; --accent:#e08a00;
  --colonial:#2f7fe0; --indigenous:#e2673a; --military:#d93358; --nation:#3aa64c;
}
body.theme-light .card,body.theme-light #panel{box-shadow:0 8px 26px rgba(60,80,120,.22)}
body.theme-light #brand{text-shadow:0 1px 8px rgba(255,255,255,.85)}
body.theme-light #timebar{background:linear-gradient(to top,rgba(255,250,236,.96),rgba(255,250,236,.84) 70%,rgba(255,250,236,0))}
body.theme-light #year{text-shadow:0 0 18px rgba(255,190,80,.55)}
body.theme-light #slider{background:linear-gradient(90deg,#9fb3dd,#6c86c4)}
body.theme-light #slider::-webkit-slider-thumb{border-color:#fffaf0}
body.theme-light #slider::-moz-range-thumb{border-color:#fffaf0}
body.theme-light .tick{border-color:#fffaf0}
body.theme-light .snap{background:rgba(30,40,80,.25)}
body.theme-light #hover-tip{background:rgba(255,253,246,.96);color:var(--text)}
body.theme-light .modal{background:rgba(60,80,120,.25)}
body.theme-light .modal-body{background:#fffdf6;color:var(--text)}
body.theme-light #tl-ctl{background:rgba(255,253,246,.86)}
/* translucent white-on-dark fills -> translucent dark-on-light */
body.theme-light .theme-seg button,body.theme-light .chip,body.theme-light .seg button,body.theme-light .curr-pick select,
body.theme-light #panel-nav button,body.theme-light #credits-btn,body.theme-light #play,body.theme-light .tour-ctl button,
body.theme-light .tour-ctl .voice select,body.theme-light #tl-rew button,body.theme-light #panel-anthem button,body.theme-light #panel-lyrics .ly-chip{background-color:rgba(30,45,90,.06);color:var(--text)}
body.theme-light .theme-seg button:hover,body.theme-light .chip:hover,body.theme-light .seg button:hover,body.theme-light .curr-pick select:hover:not(:disabled),
body.theme-light #panel-nav button:hover,body.theme-light #credits-btn:hover,body.theme-light #play:hover,body.theme-light .tour-ctl button:hover,body.theme-light #tl-rew button:hover{background-color:rgba(30,45,90,.13)}
body.theme-light .theme-seg button.on{background:rgba(255,190,70,.40);color:#3a2600}
body.theme-light .seg button.on{background:rgba(58,166,76,.22);color:#16461e}
body.theme-light .curr-pick option,body.theme-light .curr-pick optgroup,body.theme-light .tour-ctl .voice select option{background:#fffdf6;color:var(--text)}
body.theme-light #flag-fields textarea,body.theme-light #flag-fields input[type=text],body.theme-light #flag-fields input[type=email],
body.theme-light #tour-flag-pop textarea,body.theme-light #tour-flag-pop input[type=text],body.theme-light #tour-flag-pop input[type=email]{background:#fff;border-color:rgba(40,52,90,.25)}
body.theme-light .flag-box,body.theme-light #panel-lyrics,body.theme-light .panel-chunk{background:rgba(30,45,90,.03);border-color:var(--line)}
body.theme-light .mfig img{background:#eef3fa}
body.theme-light .mfig.recon .rmore{color:#1d5fb4}
/* pale body text that was hard-coded for dark backgrounds */
body.theme-light #panel-summary,body.theme-light #panel-curr li,body.theme-light #tour-text,body.theme-light .hist-beats li,body.theme-light .hist-contested li,
body.theme-light #panel-lyrics .ly-text,body.theme-light #panel-ahist p,body.theme-light #panel-fhist p,body.theme-light #panel-fhist .fh-txt,
body.theme-light #curr-tree .onode,body.theme-light #curr-tree li,body.theme-light #panel-related .framing,body.theme-light .nation-tour .nt-start.locked,
body.theme-light #school-pop .help{color:var(--text)}
body.theme-light #panel a:not(.code){color:#174ea6}
body.theme-light #panel-source a,body.theme-light .modal-body a,body.theme-light #panel-curr .cite a,body.theme-light #school-pop a,body.theme-light .bm-more{color:#1f5fbf}
body.theme-light #panel-related h4,body.theme-light .tour-head .card-title,body.theme-light .hist-beats h4,body.theme-light #panel-flagimg .flag-contest-note,body.theme-light #tour-src .route-notes{color:#9a5b00}
body.theme-light .hist-contested h4{color:#c2502c}
body.theme-light #panel-curr h4,body.theme-light #curr-tree .snode b,body.theme-light #curr-tree a.code,body.theme-light #panel-curr .course.active{color:#6b3fc4}
body.theme-light #curr-tree .n,body.theme-light .pill{color:#4b2a99}
body.theme-light .tour-btn{color:#7a4a00;background:rgba(255,181,71,.22)}
body.theme-light .tour-flag-btn{border-color:rgba(40,52,90,.25)}
body.theme-light .tour-flag-btn:hover,body.theme-light .tour-flag-btn[aria-expanded=true]{color:var(--text)}
body.theme-light #school-pop .yrs{color:#a2471d}
body.theme-light #tour-strand.nation-pill{color:#1e6a2b}
body.theme-light #tour-strand.nation-pill[data-kind="empire"]{color:#9a2d5a}
body.theme-light #tour-strand.nation-pill[data-kind="conflict"]{color:#a5203c}
body.theme-light #tour-strand.nation-pill[data-kind="other"]{color:#17687a}
body.theme-light .hist-tour[data-group="empires"] .nt-count{color:#9a2d5a}
body.theme-light .hist-tour[data-group="conflicts"] .nt-count{color:#a5203c}
body.theme-light .hist-tour[data-group="empires"] .seg button.on{color:#6d1b3e}
body.theme-light .hist-tour[data-group="conflicts"] .seg button.on{color:#7a1029}
body.theme-light .tone-pill{color:#1e6a2b}
body.theme-light .tone-pill[data-tone="patriotic"]{color:#1f4f99}
body.theme-light .tone-pill[data-tone="critical"]{color:#a5401e}
body.theme-light #panel .nat-succ .nat-open{color:#1f4f99}
body.theme-light .cesium-widget-credits{opacity:.85}

/* 20261031 (Jon t587u): light-mode "N events linked" / "N steps · N places" counts were pale-on-cream (#bff0c6 / #c4ecf4 unset in light).
   Darker, higher-contrast text for every tour block in Light; Dark values above are unchanged. Context line (#nt-ctx, .mini) also darkened. */
body.theme-light .nation-tour .nt-count{color:#14532d;font-weight:700}
body.theme-light .hist-tour[data-group="other"] .nt-count,body.theme-light .hist-tour .nt-count{color:#0f4f5e}
body.theme-light .hist-tour[data-group="empires"] .nt-count{color:#7a1f47}
body.theme-light .hist-tour[data-group="conflicts"] .nt-count{color:#8a1430}
body.theme-light .nation-tour .nt-link{color:#3d4763}
body.theme-light .nation-tour .nt-link:hover{color:var(--text)}
body.theme-light .nation-tour #nt-ctx,body.theme-light .nation-tour .mini{color:#3d4763}
body.theme-light .nation-tour:not(.hist-tour){background:rgba(58,166,76,.08);border-color:rgba(30,110,50,.40)}
body.theme-light #curr-status{color:#3d4763}

/* 20261030 media stand-ins (data/media/standins/*.svg): quieter and smaller than a real picture */
#panel-media .mfig.standin img{width:auto;max-width:100%;max-height:150px;margin:0 auto;background:none;border:0;opacity:.92}
.mfig.standin figcaption{color:var(--muted);font-style:italic}

/* 20261031 Empires Viewpoint labels (Patriotic · Balanced · Critical): tone pill colours follow the label, ids unchanged */
.tone-pill[data-tone="empire"]{border-color:#7fb2ff;color:#d6e6ff}
.tone-pill[data-tone="conquered"]{border-color:#ff9b7a;color:#ffe0d4}
body.theme-light .tone-pill[data-tone="empire"]{color:#1f4f99}
body.theme-light .tone-pill[data-tone="conquered"]{color:#a5401e}

/* ===== 20261031 next-stamp UI pile ===== */
/* Language dropdown (left panel, under Dark/Light) */
.lang-pick{margin:0 0 8px}
#lang-note{margin:-4px 0 8px}
#lang-note[hidden]{display:none}

/* Jump-to-year: the year digits are a button; popover sits above the bottom-left timeline chrome */
#year{cursor:pointer;border-radius:8px;padding:0 4px;transition:background .15s}
#year:hover{background:rgba(255,255,255,.07)}
#year:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
#year-jump{position:absolute;left:84px;bottom:118px;z-index:8;padding:10px 12px;font-size:13px;min-width:260px}
#year-jump[hidden]{display:none}
#year-jump .yj-lbl{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);margin-bottom:6px}
#year-jump .yj-row{display:flex;align-items:center;gap:8px}
#year-jump input{width:96px;font:inherit;font-size:15px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--text);background:rgba(255,255,255,.06);border:1px solid var(--line);border-radius:8px;padding:5px 8px}
#year-jump input:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
#year-jump .yj-era{flex:0 0 auto}
#year-jump .yj-era button{padding:4px 10px}
#year-jump .yj-era button.on{background:rgba(255,181,71,.24);color:var(--text)}
#year-jump .yj-go{font:inherit;font-weight:700;font-size:13px;padding:5px 14px;border-radius:8px;border:1px solid var(--accent);background:rgba(255,181,71,.18);color:var(--text);cursor:pointer}
#year-jump .yj-go:hover{background:rgba(255,181,71,.32)}
#year-jump #yj-msg{max-width:none}
#year-jump #yj-msg.err{color:#ff9b9b}
body.theme-light #year:hover{background:rgba(30,45,90,.08)}
body.theme-light #year-jump input{background:#fff;border-color:rgba(40,52,90,.25)}
body.theme-light #year-jump .yj-era button.on{background:rgba(255,190,70,.40);color:#3a2600}
body.theme-light #year-jump #yj-msg.err{color:#a5203c}

/* Live Fact Check | Report Issue: two equal boxes side by side; an open Report Issue form takes the full width below;
   narrow panels stack (Live Fact Check above Report Issue) */
.check-report{display:grid;grid-template-columns:1fr 1fr;gap:8px;align-items:start;margin:12px 0 4px}
.check-report>.flag-box{margin:0;min-width:0}
.check-report>#panel-flag:has(#flag-on:checked){grid-column:1/-1}
@media (max-width:520px){.check-report{grid-template-columns:1fr}}
.fc-box .fc-btn{display:flex;align-items:center;gap:6px;width:100%;background:none;border:0;padding:0;font:inherit;font-weight:600;color:var(--text);cursor:pointer;text-align:left}
.fc-box .fc-btn:hover{color:var(--accent)}
.fc-note{font-style:italic;max-width:none}
.fc-note[hidden]{display:none}
.check-report>.fc-box:has(.fc-note:not([hidden])){grid-column:1/-1}
.tour-fc-btn{margin-right:4px}
#tour-fc-note{margin:4px 0 2px}
body.theme-light .fc-box .fc-btn:hover{color:#9a5b00}

/* 20261101i (OneWorld UI, Jon t749u + t750u; reports/feature-ui-explore-data-20261101.md). AI-written by the OneWorld UI agent,
   2026-11-01. Criteria: Explore Data + Live Fact Check | Report issue sit together at the BOTTOM of every card (#panel-actions;
   hist-mode puts them after Big beats + Sources); Explore Data is teal so it reads apart from the fact-check row; its chart menu
   opens to the LEFT of #panel (fixed, z above the panel, below the lightbox / Compare stage). */
#panel.hist-mode #panel-actions{order:3}
#panel.card-mode #panel-actions{margin-top:auto;padding-top:4px}
/* 20261101m (Jon t68u, reports/feature-ui-explore-data-placement-20261101.md; AI-written by the OneWorld UI agent, 2026-11-01):
   #panel-explore is now a direct child of #panel right after #panel-summary/#panel-media (order 0 in the flex column), so on
   hist-mode cards it renders under the summary and ABOVE Big beats (#panel-related order:1), Sources (2) and #panel-actions (3). */
#panel.hist-mode #panel-explore{order:0}
.xd-box{margin:4px 0 8px}
.xd-box[hidden]{display:none}
.xd-btn{display:flex;align-items:center;justify-content:center;gap:6px;width:100%;font:inherit;font-weight:700;font-size:13px;padding:7px 10px;border-radius:10px;
  border:1px solid #3ec7b8;background:rgba(62,199,184,.14);color:#bff3ec;cursor:pointer}
.xd-btn:hover,.xd-btn.on{background:rgba(62,199,184,.26);color:#fff}
.xd-btn:focus-visible{outline:2px solid #3ec7b8;outline-offset:2px}
.xd-menu{position:fixed;z-index:12;padding:10px 12px 12px;font-size:13px;overflow:auto;background:var(--card);border:1px solid rgba(62,199,184,.55);
  box-shadow:0 10px 30px rgba(0,0,0,.5)}
.xd-menu[hidden]{display:none}
body.compare-mode .xd-menu{display:none}
.xd-head{display:flex;align-items:baseline;gap:6px;margin-bottom:4px;padding-right:22px;position:relative}
.xd-head b{color:#7fe3d6;font-size:12px;text-transform:uppercase;letter-spacing:.1em}
.xd-for{color:var(--text);font-weight:600}
.xd-x{position:absolute;right:-4px;top:-6px;background:none;border:0;color:var(--muted);font-size:22px;cursor:pointer;line-height:1}
.xd-note{margin:0 0 8px;line-height:1.4}
.xd-sec{margin:8px 0 0}
.xd-sec-h{font-size:10.5px;text-transform:uppercase;letter-spacing:.12em;color:#ffd27a;margin:0 0 4px}
.xd-item{display:block;width:100%;text-align:left;font:inherit;font-size:12.5px;line-height:1.35;padding:6px 8px;margin:0 0 3px;border-radius:8px;
  border:1px solid var(--line);background:rgba(255,255,255,.04);color:var(--text);cursor:pointer}
.xd-item:hover,.xd-item:focus-visible{border-color:#3ec7b8;background:rgba(62,199,184,.16);outline:none}
.xd-all{margin-top:8px;background:none;border:0;padding:2px 0;font:inherit;font-size:12px;color:#7fe3d6;cursor:pointer;text-decoration:underline}
body.theme-light .xd-btn{border-color:#11867a;background:rgba(17,134,122,.1);color:#0b5f56}
body.theme-light .xd-btn:hover,body.theme-light .xd-btn.on{background:rgba(17,134,122,.2);color:#063f39}
body.theme-light .xd-menu{border-color:rgba(17,134,122,.5)}
body.theme-light .xd-head b,body.theme-light .xd-all{color:#0b6f65}
body.theme-light .xd-sec-h{color:#8a5a00}
body.theme-light .xd-item:hover,body.theme-light .xd-item:focus-visible{border-color:#11867a;background:rgba(17,134,122,.12)}

/* 20261031 (Jon t591u): "Take the course" above "Take the course tour" */
.tour-btn.course-enter{border-color:#c9a7ff;background:rgba(201,167,255,.16);color:#eadcff}
.tour-btn.course-enter:hover{background:rgba(201,167,255,.28)}
body.theme-light .tour-btn.course-enter{color:#4b2a99;background:rgba(107,63,196,.12);border-color:#6b3fc4}
.course-entry .course-units{margin:4px 0 10px 18px;padding:0;line-height:1.45}
.course-entry .course-units li{margin:3px 0}
.course-entry .soon{color:var(--muted);font-style:italic;font-size:12px}
.course-entry .course-entry-tour{margin-left:0}

/* 20261031 (Jon t596u, reports/feature-ui-title-inward-glow-20261031.md): title glows INWARD.
   Letterforms are filled with a bright light (white-hot core fading to warm gold at the edges) instead of an outward halo,
   with a tight dark rim (no spread) so they separate from dark ocean and from pale land alike. Both themes. */
#brand .logo{
  text-shadow:none;
  background:radial-gradient(120% 140% at 50% 45%,#ffffff 0%,#fffaf0 38%,#ffe7b0 70%,#ffc865 100%);
  -webkit-background-clip:text;background-clip:text;color:#fff8e6;-webkit-text-fill-color:transparent;
  filter:drop-shadow(0 0 .6px rgba(10,14,28,.95)) drop-shadow(0 1px 1.5px rgba(10,14,28,.75)) brightness(1.08);
}
#brand .logo::before{-webkit-text-fill-color:initial;box-shadow:inset 0 0 4px #fff,0 0 6px var(--accent)}
body.theme-light #brand .logo{text-shadow:none}

/* 20261031 (Jon t629u): no redundant category header under Histories → Select (the Select already names the type). Elements stay in
   the DOM (app.js still relabels the "other" one), just not shown. */
#hist-picks .hist-group > .hist-name{display:none}

/* 20261031k (Jon t3u): media lightbox. Over the map, above the tour box (z4), side panel and other popups; backdrop dims the map.
   Native pixels only (object-fit contain); no upscaling. AI badge stays on the image as in the panel. */
.mfig .mopen{display:block;width:100%;padding:0;margin:0;border:0;background:none;cursor:zoom-in;border-radius:10px}
.mfig .mopen:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.media-lb{z-index:20;background:rgba(0,0,0,.62);padding:20px calc(20px + var(--map-r,0px)) 20px calc(20px + var(--map-l,0px))} /* 20261101d: same open-map centre as #tourbar */
.media-lb-body.modal-body{max-width:min(1000px,100%);width:auto;max-height:calc(100vh - 40px);margin:0;padding:38px 18px 14px;display:flex;flex-direction:column;overflow:auto}
.media-lb-img{position:relative;align-self:center;flex:none;max-width:100%}
.media-lb-img img{display:block;max-width:100%;max-height:calc(100vh - 230px);width:auto;height:auto;object-fit:contain;border-radius:10px;background:#0a0f20}
.media-lb-img .aibadge{position:absolute;left:8px;top:8px;font-size:12px;font-weight:600;padding:3px 8px;border-radius:6px;background:rgba(10,15,32,.85);color:#ffd27a;border:1px solid rgba(255,210,122,.5);pointer-events:none}
.media-lb-cap{margin-top:10px;font-size:13px;line-height:1.45;color:#c9d0e4;max-width:760px}
.media-lb-cap .credit{display:block;color:var(--muted);font-size:12px;margin-top:3px}
.media-lb-cap .rmore{display:inline-block;margin-left:6px;padding:2px 9px;font-size:12px;border-radius:999px;border:1px solid var(--line);background:none;color:#9cc8ff;cursor:pointer}
.media-lb-cap .rinfo{margin-top:6px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;font-size:12px}
.media-lb-cap .rinfo p{margin:0 0 4px}.media-lb-cap .rinfo ul{margin:0 0 4px;padding-left:18px}
.media-lb-cap .rsrc,.media-lb-cap .rni{color:var(--muted)}.media-lb-cap .rni{margin-top:6px;font-weight:600}
body.theme-light .media-lb{background:rgba(30,40,70,.55)}
body.theme-light .media-lb-cap{color:var(--text)}
body.theme-light .media-lb-img img{background:#eef3fa}
body.theme-light .media-lb-cap .rmore{color:#1d5fb4}

/* 20261031l (Jon via Course Designer, reports/feature-ui-course-player-20261031.md): course player. The globe fades to black
   (#course-black over the canvas, under the chrome; app.js also sets globe.show=false), the right panel is hidden, and a large
   video stage fills the centre between the left panel and the right edge, above the timebar. z15: above the tour box (z4) and
   popups, below the media lightbox (z20). Course tour buttons are hidden while the player is open (restored on exit). */
#course-black{position:absolute;inset:0;background:#000;opacity:0;pointer-events:none;transition:opacity .8s ease}
body.course-player #course-black{opacity:1}
body.course-player #panel{visibility:hidden}
body.course-player #curr-tree .course-tour [data-tour],body.course-player #curr-tree .course-tour .nt-mode,body.course-player #curr-tree .ct-mode-note,
body.course-player .course-entry-tour{display:none !important}
#course-player{position:absolute;top:16px;left:336px;right:18px;bottom:132px;z-index:15;display:flex;flex-direction:column;
  background:#05070d;border:1px solid var(--line);border-radius:16px;box-shadow:0 10px 50px rgba(0,0,0,.7);overflow:hidden}
#course-player[hidden]{display:none}
@media (max-width:900px){#course-player{left:12px;right:12px;top:80px}}
.cp-head{display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid var(--line);background:rgba(18,26,51,.85);color:#e8ecf7}
.cp-title{flex:1;font-size:15px;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cp-kicker{color:#c9a7ff;font-size:12px;text-transform:uppercase;letter-spacing:.08em;margin-right:6px}
.cp-back{padding:5px 12px;font-size:13px;border-radius:999px;border:1px solid var(--line);background:none;color:#9cc8ff;cursor:pointer}
.cp-close{background:none;border:0;color:#c9d0e4;font-size:28px;line-height:1;cursor:pointer;padding:0 4px}
.cp-back:hover,.cp-close:hover{color:#fff}
.cp-back:focus-visible,.cp-close:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.cp-stage{position:relative;flex:1;min-height:0;display:flex;align-items:center;justify-content:center;background:#000}
.cp-stage video{width:100%;height:100%;object-fit:contain;background:#000}
.cp-stage video[hidden],.cp-placeholder[hidden]{display:none}
.cp-placeholder{text-align:center;color:#c9d0e4;padding:24px}
.cp-ph-icon{width:84px;height:84px;margin:0 auto 16px;border-radius:50%;border:2px solid rgba(201,167,255,.6);color:#c9a7ff;font-size:34px;line-height:80px;padding-left:6px;box-sizing:border-box}
.cp-ph-title{font-size:22px;font-weight:700;color:#eadcff}
.cp-ph-sub{margin-top:8px;font-size:13.5px;color:#9aa6c3;max-width:440px}

/* 20261031m (OneWorld UI, reports/feature-ui-compare-surface-20261031.md): EXPERIMENTAL Compare / stats-forward surface for tour
   steps with surface:"compare". Same 0.8s globe→black fade as the course player (#compare-black; app.js sets globe.show=false
   after ~820ms). Stage z15: above the tour box, which is lifted to z16 in compare mode so Back/Next stay usable over the stage's
   lower edge (--cs-pad keeps the chart clear of it); below the media lightbox (z20). Right panel hidden while charts are up. */
#compare-black{position:absolute;inset:0;background:#000;opacity:0;pointer-events:none;transition:opacity .8s ease}
body.compare-mode #compare-black{opacity:1}
body.compare-mode #panel{visibility:hidden}
body.compare-mode #tourbar{z-index:16;max-height:30vh;overflow:auto}
/* 20261101e (OneWorld UI, Jon t21u; reports/feature-ui-compare-centre-20261101.md; AI-written 2026-11-01, criteria: chart centred
   on the open map, above the tour box, front layer). Layer order in Compare mode: tour box z16 < chart stage z17 < expanded
   tour box z18 (hover / keyboard focus only) < media lightbox z20. The stage's bottom (--cs-bottom, app.js csSyncPad) clears
   the compact tour box, so Back / Play / Next sit in the free band below the chart and are never covered by it. Mouse clicks
   on Back/Next no longer expand the text (keyboard :focus-visible still does), so stepping does not pop the box over the chart. */
body.compare-mode #tourbar:hover,body.compare-mode #tourbar:has(:focus-visible){z-index:18}
/* compact tour box while charts are up (narration still plays/reads aloud; hover or focus expands it) */
body.compare-mode #tourbar #tour-text{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin:4px 0}
body.compare-mode #tourbar #tour-events,body.compare-mode #tourbar #tour-src,body.compare-mode #tourbar #tour-focus,body.compare-mode #tourbar .tour-flag{display:none}
body.compare-mode #tourbar:hover #tour-text,body.compare-mode #tourbar:has(:focus-visible) #tour-text{-webkit-line-clamp:unset;display:block}
/* 20261101e: was left:336px;right:18px;bottom:132px;z-index:15. Now centred on the open map (--map-l/--map-r from syncMapGutter;
   the hidden side panel counts as 0 in Compare mode), max 1180px wide, bottom just above the tour box, z17 = front layer. */
#compare-surface{position:absolute;top:16px;left:calc(var(--map-l,0px) + 18px);right:calc(var(--map-r,0px) + 18px);
  width:min(1180px,calc(100% - var(--map-l,0px) - var(--map-r,0px) - 36px));margin:0 auto;bottom:var(--cs-bottom,132px);z-index:17;display:flex;flex-direction:column;
  background:#05070d;border:1px solid var(--line);border-radius:16px;box-shadow:0 10px 50px rgba(0,0,0,.7);overflow:hidden;
  animation:cs-in .5s ease .25s both}
#compare-surface[hidden]{display:none}
@keyframes cs-in{from{opacity:0;transform:scale(.985)}to{opacity:1;transform:none}}
@media (max-width:900px){#compare-surface{left:12px;right:12px;top:80px;width:auto;margin:0}}
.cs-exp{display:inline-block;margin-left:8px;padding:1px 7px;font-size:10.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;border-radius:999px;border:1px dashed rgba(255,181,71,.55);color:#ffcf85;vertical-align:2px}
.cs-tabs{display:flex;gap:6px;padding:8px 14px 0;flex-wrap:wrap}
.cs-tabs[hidden]{display:none}
.cs-tabs button{padding:4px 11px;font-size:12.5px;border-radius:999px;border:1px solid var(--line);background:none;color:#9aa6c3;cursor:pointer}
.cs-tabs button.on{color:#fff;border-color:rgba(255,181,71,.6);background:rgba(255,181,71,.12)}
.cs-tabs button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.cs-body{flex:1;min-height:0;overflow:auto;padding:10px 18px var(--cs-pad,12px);color:#e8ecf6}
.cs-title{margin:4px 0 4px;font-size:19px;color:#fff}
.cs-def{margin:0 0 8px;font-size:13px;line-height:1.45;color:#c9d0e4;max-width:980px}
.cs-legend{font-size:12px;color:#9aa6c3;margin-bottom:4px}
.cs-legend-note{margin-left:4px}
/* 20261101e (Jon t22u): log ↔ linear scale toggle (segmented chip pair) on log-scaled range charts */
.cs-scalectl{display:inline-flex;align-items:center;gap:0;margin-left:10px;white-space:nowrap;color:#c9d0e4;font-weight:600}
.cs-scale-btn{margin-left:6px;padding:2px 10px;font-size:12px;border:1px solid rgba(156,200,255,.55);background:rgba(156,200,255,.06);color:#9cc8ff;cursor:pointer;border-radius:0}
.cs-scale-btn:first-of-type{border-radius:999px 0 0 999px}
.cs-scale-btn+.cs-scale-btn{margin-left:0;border-left:none;border-radius:0 999px 999px 0}
.cs-scale-btn[aria-pressed="true"]{background:rgba(156,200,255,.25);color:#fff}
.cs-scale-btn:hover{background:rgba(156,200,255,.18)}
.cs-scale-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.cs-scale-note{color:#9aa6c3;margin:2px 0 4px;max-width:980px}
.cs-chip{display:inline-block;padding:1px 8px;border-radius:999px;font-size:11.5px;font-weight:600;border:1px solid}
.cs-chip.cs-documented{color:#9fe0b4;border-color:rgba(159,224,180,.5);background:rgba(159,224,180,.08)}
.cs-chip.cs-estimate{color:#ffd27a;border-color:rgba(255,210,122,.55);background:repeating-linear-gradient(45deg,rgba(255,210,122,.12) 0 3px,transparent 3px 6px)}
.cs-chip.cs-contested{color:#ff9f9f;border-color:rgba(255,159,159,.55);background:repeating-linear-gradient(45deg,rgba(255,159,159,.12) 0 3px,transparent 3px 6px)}
.cs-svgwrap{width:100%;max-width:1100px}
.cs-svg{display:block;width:100%;height:auto;font-family:inherit}
.cs-grid{stroke:rgba(255,255,255,.07)}
.cs-axis{fill:#7f8aa6;font-size:11px}
.cs-scale{font-style:italic}
.cs-track{stroke:rgba(255,255,255,.12);stroke-width:1;stroke-dasharray:2 4}
.cs-lbl{fill:#c9d0e4;font-size:12.5px}
.cs-row{cursor:pointer;outline:none}
.cs-rowbg{fill:transparent}
.cs-row:hover .cs-rowbg,.cs-row:focus-visible .cs-rowbg,.cs-row.sel .cs-rowbg{fill:rgba(255,255,255,.05)}
.cs-row:focus-visible .cs-rowbg{stroke:var(--accent);stroke-width:1.5}
.cs-row.hi .cs-rowbg{fill:rgba(255,181,71,.08)}
.cs-row.hi .cs-lbl{fill:#ffcf85;font-weight:700}
.cs-bar{fill:#6f9ee8;transform:scaleX(0);transition:transform .9s cubic-bezier(.2,.7,.2,1)}
.cs-row.hi .cs-bar{fill:#ffb547}
.cs-bar.cs-nostart{opacity:.55}
.cs-stem{fill:rgba(111,158,232,.35);transform:scaleX(0);transition:transform .7s ease}
.cs-row.hi .cs-stem{fill:rgba(255,181,71,.4)}
.cs-svg.grown .cs-bar,.cs-svg.grown .cs-stem{transform:scaleX(1)}
.cs-svg .cs-row:nth-of-type(2n) .cs-bar{transition-delay:.06s}
.cs-hatch-bg{fill:rgba(111,158,232,.35)}.cs-hatch-ln{stroke:#9cc0ff;stroke-width:3}
.cs-hatch-bg-hi{fill:rgba(255,181,71,.35)}.cs-hatch-ln-hi{stroke:#ffcf85;stroke-width:3}
.cs-val{fill:#e8ecf6;font-size:11.5px;opacity:0;transition:opacity .4s ease .7s}
.cs-svg.grown .cs-val{opacity:1}
.cs-nostart-t{fill:#6f7a96;font-size:10px;font-style:italic}
.cs-mark line{stroke:#fff;stroke-width:2;opacity:0;transition:opacity .3s ease .9s}
.cs-mark.primary line{stroke:#ff6b6b;stroke-width:3}
.cs-svg.grown .cs-mark line{opacity:.85}
.cs-mark-t{fill:#ffb0b0;font-size:11px;font-weight:600;opacity:0;transition:opacity .3s ease 1s}
.cs-svg.grown .cs-mark-t{opacity:1}
.cs-detail{margin:6px 0;padding:8px 10px;border:1px solid var(--line);border-radius:8px;color:#c9d0e4;min-height:20px;max-width:980px}
.cs-detail .cs-mk{margin:4px 0;padding-left:18px}
.cs-detail a,.cs-src a{color:#9cc8ff}
.cs-caveat{margin:8px 0;padding:8px 10px;border-left:3px solid #ffd27a;background:rgba(255,210,122,.07);font-size:12.5px;line-height:1.45;color:#e8dcc0;max-width:980px}
.cs-src{font-size:12px;color:#9aa6c3;max-width:980px}
.cs-src summary{cursor:pointer;color:#c9d0e4}
.cs-src ul{margin:4px 0;padding-left:18px;max-height:160px;overflow:auto}
.cs-coming,.cs-loading{height:100%;min-height:200px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:#9aa6c3}
.cs-coming-t,.cs-coming:not(:has(.cs-coming-t)){font-size:20px;font-weight:700;color:#eadcff}
/* 20261101h (OneWorld UI, Jon t734u; reports/feature-ui-compare-animate-narrate-20261101.md; AI-written 2026-11-01).
   Header Animate / Narrate chips (top-right, before Back to globe). Animate: .cs-seq on the svg = per-row mode (rows grow only
   once .cs-on; .cs-cur = the row being revealed/narrated); .cs-reset kills transitions for the instant reset to empty. */
.cs-ctl{display:inline-flex;gap:6px;flex:none}
.cs-ctl-btn{padding:5px 12px;font-size:13px;border-radius:999px;border:1px solid rgba(255,181,71,.5);background:rgba(255,181,71,.06);color:#ffcf85;cursor:pointer;white-space:nowrap}
.cs-ctl-btn:hover:not(:disabled){background:rgba(255,181,71,.18);color:#fff}
.cs-ctl-btn[aria-pressed="true"],.cs-ctl-btn.running{background:rgba(255,181,71,.25);color:#fff;border-color:rgba(255,181,71,.85)}
.cs-ctl-btn:disabled{opacity:.4;cursor:default}
.cs-ctl-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
@media (max-width:700px){.cs-ctl-btn{padding:4px 8px;font-size:12px}}
.cs-svg.cs-seq .cs-row.cs-on .cs-bar,.cs-svg.cs-seq .cs-row.cs-on .cs-stem,.cs-svg.cs-seq .cs-row.cs-on .cs-sest{transform:scaleX(1)}
.cs-svg.cs-seq .cs-row.cs-on .cs-val,.cs-svg.cs-seq .cs-row.cs-on .cs-mark-t,.cs-svg.cs-seq .cs-row.cs-on .cs-sest-t{opacity:1}
.cs-svg.cs-seq .cs-row.cs-on .cs-mark line{opacity:.85}
.cs-svg.cs-seq .cs-row:not(.cs-on) .cs-lbl{opacity:.38}
.cs-svg .cs-row.cs-cur .cs-rowbg{fill:rgba(255,181,71,.12)}
.cs-svg.cs-seq .cs-bar{transition-delay:0s !important}
.cs-svg.cs-reset *{transition:none !important}
.cs-narr{margin:0 0 4px;padding:4px 8px;border-left:3px solid #ffb547;background:rgba(255,181,71,.08);color:#f3e6cf}
.cs-narr-k{font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#ffcf85;margin-right:4px}
.cs-reason{margin:3px 0;color:#dfe5f3}
/* while narrating, the detail panel sticks to the bottom of the scrolling chart body so the caption stays visible muted */
.cs-detail.narrating{position:sticky;bottom:0;z-index:1;background:#0b1020;box-shadow:0 -6px 18px rgba(0,0,0,.6);max-height:120px;overflow:auto}
.cs-narr-more{color:#8f9ab6;margin-top:2px}
/* 20261101h: startEstimate stem (Slavery additive field): thinner, lighter hatched lead-in left of the solid bar. Contested =
   red dashed edge, estimate = amber dashed edge; grows with its row like the bar. Label "1565?" sits just left of it. */
.cs-sest{opacity:.6;stroke-width:1;stroke-dasharray:3 2;transform:scaleX(0);transition:transform .7s ease}
.cs-se-contested{stroke:#ff9f9f}.cs-se-estimate{stroke:#ffd27a}
.cs-svg.grown .cs-sest{transform:scaleX(1)}
.cs-sest-t{fill:#8f9ab6;font-size:10px;font-style:italic;opacity:0;transition:opacity .4s ease .5s}
.cs-svg.grown .cs-sest-t{opacity:1}
@media (prefers-reduced-motion:reduce){#compare-black,#compare-surface,.cs-bar,.cs-stem,.cs-sest,.cs-sest-t,.cs-val,.cs-mark line,.cs-mark-t{transition:none !important;animation:none !important}}
/* 20261101k (AI, OneWorld UI): Civil War fronts "Map" line under the tour sources (legend + how the map was drawn) */
#tour-src .fronts-note{margin-top:4px;color:#d9e4ff}
#tour-src .fronts-key{display:inline-flex;align-items:center;gap:3px;margin-right:6px;white-space:nowrap}
#tour-src .fronts-key i{display:inline-block;width:10px;height:10px;border-radius:2px;border:1px solid;opacity:.85}
#tour-src .fronts-note details{margin-top:2px}
#tour-src .fronts-note summary{cursor:pointer;color:#ffe2a3}
#tour-src .fronts-note details>div{margin-top:2px;opacity:.9}
body.theme-light #tour-src .fronts-note{color:#1d3270}
body.theme-light #tour-src .fronts-note summary{color:#9a5b00}

/* 20261101l (Jon t58u, reports/feature-ui-histories-search-20261101.md): Histories → Search box above Select + results list.
   The list is in the panel flow (not absolutely positioned) so #layers' overflow:auto never clips it. */
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.hist-search{margin-bottom:2px}
.curr-pick label.sel .hs-box{position:relative;display:block;color:inherit;font-size:inherit}
.hist-search input[type=search]{width:100%;min-width:0;box-sizing:border-box;font:inherit;font-size:12.5px;color:var(--text);background:rgba(255,255,255,.06);
  border:1px solid var(--line);border-radius:8px;padding:4px 24px 4px 8px;cursor:text;-webkit-appearance:none;appearance:none}
.hist-search input[type=search]::-webkit-search-cancel-button{display:none}
.hist-search input[type=search]::placeholder{color:var(--muted);opacity:.8}
.hist-search input[type=search]:hover:not(:disabled){background:rgba(255,255,255,.11)}
.hist-search input[type=search]:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.hist-search input[type=search]:disabled{opacity:.45;cursor:not-allowed}
.hist-search .hs-clear{position:absolute;right:3px;top:50%;transform:translateY(-50%);border:0;background:transparent;color:var(--muted);
  font-size:15px;line-height:1;padding:2px 5px;cursor:pointer;border-radius:6px}
.hist-search .hs-clear:hover,.hist-search .hs-clear:focus-visible{color:var(--text);background:rgba(255,255,255,.1);outline:none}
.hist-search .hs-clear[hidden]{display:none}
.hs-list{list-style:none;margin:0 0 0 76px;padding:3px;max-height:240px;overflow:auto;border:1px solid var(--line);border-radius:8px;background:#121a33;
  box-shadow:0 6px 18px rgba(0,0,0,.35)}
.hs-list[hidden]{display:none}
.hs-opt{padding:4px 7px;border-radius:6px;cursor:pointer;display:flex;flex-direction:column;gap:1px}
.hs-opt:hover,.hs-opt.on{background:rgba(255,181,71,.16)}
.hs-name{font-size:12.5px;color:var(--text)}
.hs-dot{display:inline-block;width:7px;height:7px;border-radius:2px;margin-right:6px;vertical-align:middle}
.hs-meta{font-size:10.5px;color:var(--muted)}
.hs-none,.hs-more{padding:4px 7px;font-size:11px;color:var(--muted)}
body.theme-light .hist-search input[type=search]{background:rgba(0,0,0,.04)}
body.theme-light .hs-list{background:#fff;box-shadow:0 6px 18px rgba(60,80,120,.22)}
body.theme-light .hs-opt:hover,body.theme-light .hs-opt.on{background:rgba(154,91,0,.12)}

/* 20261102b (Jon via Manager GO t908–t912u, reports/feature-ui-preview-login-20261102.md): TEMPORARY colleague-preview
   login gate (src/preview-auth.js). Obscurity only, not real security. App chrome stays hidden + inert until unlock;
   Cesium still boots underneath (visibility, not display, so the canvas keeps its size). */
body.preview-locked > :not(#owh-gate):not(script){visibility:hidden !important;pointer-events:none !important}
.owh-gate{position:fixed;inset:0;z-index:10000;display:flex;align-items:center;justify-content:center;padding:20px;
  background:radial-gradient(ellipse at 50% 35%,#16213f 0%,var(--bg) 70%);color:var(--text);font-family:var(--font)}
.owh-gate-card{width:min(360px,100%);display:flex;flex-direction:column;gap:12px;padding:26px 24px 20px;
  background:var(--card);border:1px solid var(--line);border-radius:16px;box-shadow:0 10px 40px rgba(0,0,0,.45);backdrop-filter:blur(12px)}
.owh-gate-logo{font-size:26px;font-weight:800;letter-spacing:.5px}
.owh-gate-logo::before{content:"";display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--accent);margin-right:8px;vertical-align:middle;box-shadow:0 0 12px var(--accent)}
.owh-gate-sub{color:var(--muted);font-size:13px;margin-top:-6px}
.owh-gate label{display:flex;flex-direction:column;gap:5px;font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}
.owh-gate input[type=text],.owh-gate input[type=password]{font:inherit;font-size:15px;text-transform:none;letter-spacing:0;color:var(--text);
  background:rgba(255,255,255,.05);border:1px solid var(--line);border-radius:8px;padding:9px 11px;outline:none}
.owh-gate input:focus{border-color:var(--accent)}
.owh-gate label.owh-gate-remember{flex-direction:row;align-items:center;gap:8px;text-transform:none;letter-spacing:0;font-size:13px;cursor:pointer}
.owh-gate-remember input{accent-color:var(--accent)}
.owh-gate-err{min-height:18px;color:#ff7a8a;font-size:13px}
.owh-gate-err:empty{min-height:0}
.owh-gate button{font:inherit;font-weight:700;font-size:15px;padding:10px;border:0;border-radius:8px;background:var(--accent);color:#0b1020;cursor:pointer}
.owh-gate button:disabled{opacity:.6;cursor:wait}
.owh-gate-note{color:var(--muted);font-size:11.5px;line-height:1.4;border-top:1px solid var(--line);padding-top:10px}
body.theme-light .owh-gate{background:radial-gradient(ellipse at 50% 35%,#16213f 0%,#0b1020 70%)}
