: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:136px !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}
#brand .sub .proto{text-transform:none} /* 20261104ae Jon t494u: show "v0.9 · Beta" exactly */
.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:164px;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,#founder-msg-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,#founder-msg-btn:hover,#play:hover{background:rgba(255,255,255,.14)}

#timebar{position:absolute;left:0;right:0;bottom:0;height:128px;padding:8px 28px 10px;
  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:12px;margin-top:0}
#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)}
#year.tl-date{font-size:30px;letter-spacing:0;line-height:1.05}
#era-note{color:var(--muted);font-size:13px;flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#basemap-more.era-more{flex:0 0 auto;align-self:center;margin-left:-4px}
#play{width:40px;height:40px;border-radius:50%;padding:0;font-size:15px}
#track-wrap{position:relative;margin-top:8px;height:44px;touch-action:none}
#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}
/* 20261105dh tip-timeline-dots: canvas density / close markers (DOM .tick removed) */
.tl-evstrip,.tl-evstrip#tl-evstrip{
  position:absolute;left:0;right:0;top:0;width:100%;height:28px;
  z-index:3;pointer-events:none;cursor:pointer;display:block;
  opacity:0;transition:opacity .3s ease
}
.tl-evstrip.is-hot{pointer-events:auto}
/* legacy .tick rules kept inert — no DOM nodes created */
.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;display:none!important}
.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}
/* 20261105dd tip-edtools-tidy: nav + Voice same baseline (flex-end); Narration icon+label above Voice, right-justified */
.tour-ctl{display:flex;gap:8px;align-items:flex-end;margin-top:8px;flex-wrap:wrap}
.tour-ctl .tour-nav{display:flex;gap:8px;align-items:center;flex:0 1 auto;min-width:0}
.tour-ctl .tour-nav button,
.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 .tour-nav button:disabled,
.tour-ctl > button:disabled{opacity:.4;cursor:default}
.tour-ctl .voice{display:flex;gap:6px;align-items:center;color:var(--muted);margin:0}
.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;max-width:min(180px,42vw)}
.tour-ctl .voice select option{background:#0b1020}
.tour-ctl .tour-narr-col{
  margin-left:auto;display:flex;flex-direction:column;gap:4px;
  align-items:flex-end; /* narrate label right-edge matches Voice select */
  min-width:0;flex:0 1 auto
}
.tour-ctl button.tour-narrate{
  display:inline-flex;align-items:center;justify-content:flex-end;gap:6px;
  width:auto;min-width:0;height:auto;min-height:28px;
  padding:4px 8px;line-height:1.2;color:#e6edf3;flex:0 0 auto;
  background:rgba(255,255,255,.07);border:1px solid var(--line);border-radius:10px;
  cursor:pointer;font:inherit;font-size:12.5px
}
.tour-ctl button.tour-narrate .tour-narr-ico{display:block;width:18px;height:18px;flex:0 0 auto;pointer-events:none}
.tour-ctl button.tour-narrate .tour-narr-ico-on{display:none}
.tour-ctl button.tour-narrate .tour-narr-ico-off{display:block}
.tour-ctl button.tour-narrate .tour-narr-lab{white-space:nowrap;font-size:12.5px;font-weight:600;letter-spacing:.01em}
.tour-ctl button.tour-narrate[aria-pressed="true"] .tour-narr-ico-on,
.tour-ctl button.tour-narrate.on .tour-narr-ico-on{display:block}
.tour-ctl button.tour-narrate[aria-pressed="true"] .tour-narr-ico-off,
.tour-ctl button.tour-narrate.on .tour-narr-ico-off{display:none}
.tour-ctl button.tour-narrate[aria-pressed="true"],.tour-ctl button.tour-narrate.on{
  background:rgba(62,199,184,.26);border-color:rgba(62,199,184,.55);color:#edf3f7
}
.tour-ctl button.tour-narrate:focus-visible{outline:2px solid #3ec7b8;outline-offset:2px}
.tour-ctl button.tour-narrate:disabled{opacity:.45;cursor:default}
body.theme-light .tour-ctl button.tour-narrate{color:#3a4558}
body.theme-light .tour-ctl button.tour-narrate[aria-pressed="true"],body.theme-light .tour-ctl button.tour-narrate.on{background:rgba(17,134,122,.2);border-color:#11867a;color:#063f39}
@media (max-width:520px){
  .tour-ctl{gap:6px;align-items:flex-end}
  .tour-ctl .tour-nav{flex-wrap:wrap}
  .tour-ctl .tour-nav button{padding:6px 9px;font-size:12.5px}
  .tour-ctl .tour-narr-col{margin-left:0;width:100%;align-items:flex-end}
  .tour-ctl button.tour-narrate .tour-narr-lab{font-size:12px}
  .tour-ctl .voice select{max-width:min(150px,48vw);font-size:12px}
}
/* ---- 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}
/* 20261110fc: hide every Mode picker (nation, Histories, course). Tours always run Chronological. Thematic data is unchanged. */
.nt-mode,.nt-mode-note,.ct-mode-note{display:none!important}
.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-z{display:inline-flex;gap:2px}
#tl-z button{width:22px;height:22px;padding:0;border-radius:7px;border:1px solid var(--line);background:rgba(255,255,255,.07);color:var(--text);font:700 14px/1 Inter,system-ui,sans-serif;cursor:pointer}
#tl-z button:hover{background:rgba(255,255,255,.14)}
#tl-z button:disabled{opacity:.35;cursor:default}
.tl-minor{position:absolute;top:18px;width:1px;height:4px;background:rgba(255,255,255,.18);pointer-events:none}
.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 .tl-minor{background:rgba(30,40,80,.28)}
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 #founder-msg-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 #tl-z 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 #founder-msg-btn:hover,body.theme-light #play:hover,body.theme-light .tour-ctl button:hover,body.theme-light #tl-rew button:hover,body.theme-light #tl-z 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}
/* 20261105dh: language filter input removed */
#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;max-width:min(520px,92vw)}
#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;flex-wrap:wrap}
#year-jump input,#year-jump select{
  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;
  -webkit-appearance:none;appearance:none;color-scheme:dark
}
#year-jump #yj-year{width:96px}
#year-jump #yj-month{
  width:auto;min-width:88px;font-size:13px;font-weight:600;padding-right:22px;cursor:pointer;
  background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);
  background-position:calc(100% - 12px) 52%,calc(100% - 7px) 52%;background-size:5px 5px;background-repeat:no-repeat
}
#year-jump #yj-month option{background:#0b1020;color:var(--text)}
#year-jump #yj-day{width:64px}
#year-jump input:focus-visible,#year-jump select: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,body.theme-light #year-jump select{background:#fff;border-color:rgba(40,52,90,.25);color-scheme:light}
body.theme-light #year-jump #yj-month option{background:#fff;color:var(--text)}
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,#panel.hist-mode #panel-arsenal{order:0} /* 20261102p: #panel-arsenal sits just before #panel-explore in the DOM */
.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-menu{max-height:60vh;overflow-y:auto} /* 20261104bk */
.xd-grp{margin:2px 0 4px}
.xd-grp>summary{cursor:pointer;font-size:11.5px;font-weight:600;color:#7fe3d6;padding:4px 2px;list-style:none;border-top:1px solid rgba(62,199,184,.18)}
.xd-grp>summary::-webkit-details-marker{display:none}
.xd-grp>summary::before{content:"▸ ";display:inline-block;width:1em}
.xd-grp[open]>summary::before{content:"▾ "}
.xd-grp>summary .mini{opacity:.7;font-weight:400}
body.theme-light .xd-grp>summary{color:#0b6b62}
.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:164px;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}
.rc-namebar{display:flex;align-items:center;justify-content:space-between;gap:10px 14px;flex-wrap:wrap;margin:2px 0 6px}
.rc-namebar .cs-title{margin:0;min-width:0;flex:1 1 auto}
button.rc-fc{flex:0 0 auto;margin-left:auto;font:inherit;font-size:13px;font-weight:600;line-height:1.2;padding:6px 12px;border-radius:10px;cursor:pointer;color:#e8ecf6;background:rgba(255,255,255,.16);border:1px solid rgba(232,236,246,.55)}
button.rc-fc:hover{background:rgba(255,255,255,.24)}
button.rc-fc:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
body.theme-light button.rc-fc{color:#1d2638;background:rgba(29,38,56,.12);border-color:rgba(29,38,56,.42)}
body.theme-light button.rc-fc:hover{background:rgba(29,38,56,.2)}
.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,.data-search{margin-bottom:2px}
.curr-pick label.sel .hs-box{position:relative;display:block;color:inherit;font-size:inherit}
.hist-search input[type=search],.data-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,.data-search input[type=search]::-webkit-search-cancel-button{display:none}
.hist-search input[type=search]::placeholder,.data-search input[type=search]::placeholder{color:var(--muted);opacity:.8}
.hist-search input[type=search]:hover:not(:disabled),.data-search input[type=search]:hover:not(:disabled){background:rgba(255,255,255,.11)}
.hist-search input[type=search]:focus-visible,.data-search input[type=search]:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.hist-search input[type=search]:disabled,.data-search input[type=search]:disabled{opacity:.45;cursor:not-allowed}
.hist-search .hs-clear,.data-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,
.data-search .hs-clear:hover,.data-search .hs-clear:focus-visible{color:var(--text);background:rgba(255,255,255,.1);outline:none}
.hist-search .hs-clear[hidden],.data-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],body.theme-light .data-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%)}
/* 20261102k: National Report Card inside the Compare stage (reports/feature-ui-national-report-card-20261102.md) */
.xd-rc .xd-sec-h{color:#7fe3d6}
.xd-rc-item{border-color:rgba(62,199,184,.55)!important;font-weight:600}
.xd-rc-item .mini{font-weight:400}

.rc-tabs{display:flex;gap:6px;flex-wrap:wrap;margin:6px 0 10px}
.rc-tabs button{padding:4px 11px;font-size:12.5px;border-radius:999px;border:1px solid var(--line);background:none;color:#9aa6c3;cursor:pointer}
.rc-tabs button.on{color:#fff;border-color:rgba(62,199,184,.7);background:rgba(62,199,184,.16)}
.rc-tabs button.empty{opacity:.55;font-style:italic}
.rc-tabs button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.rc-ihead{font-size:14px;color:#fff;margin:2px 0 4px}
.rc-narr{color:#c9d0e4}
.rc-line{fill:none;stroke-width:2.2;stroke-linejoin:round}
.rc-all{stroke:rgba(111,158,232,.7);stroke-dasharray:4 4}
.rc-doc{stroke:#6f9ee8}
.rc-dot{fill:#6f9ee8}.rc-dot.est{fill:#05070d;stroke:#ffd27a;stroke-width:1.5}
.rc-zero{stroke:rgba(255,255,255,.35);stroke-width:1}
.rc-cur-ln{stroke:#ffb547;stroke-width:1.5;stroke-dasharray:3 3;pointer-events:stroke}
.rc-cur-dot{fill:#ffb547;stroke:#05070d;stroke-width:2;pointer-events:none}
.rc-cur-grab{fill:#ffb547;stroke:#05070d;stroke-width:2;cursor:grab;pointer-events:all}
.rc-cur-hit{cursor:grab;pointer-events:all}
.rc-cursor{outline:none}
.rc-cursor:focus-visible .rc-cur-grab{stroke:#fff;stroke-width:2.5}
.rc-cursor.dragging,.rc-cursor.dragging .rc-cur-grab,.rc-cursor.dragging .rc-cur-hit{cursor:grabbing}
.rc-scrub{display:flex;align-items:center;gap:10px;margin:6px 0 2px;max-width:1100px;font-size:12.5px;color:#c9d0e4}
.rc-scrub input[type=range]{flex:1;accent-color:#ffb547}
/* 20261105de: NRC year slider aligned under SVG x-axis plot; range text below; caret points up at chart year */
.rc-scrub.rc-scrub-axis{display:flex;flex-direction:column;align-items:stretch;gap:2px;margin:4px 0 6px;width:100%;box-sizing:border-box}
.rc-scrub-axis .rc-scrub-rail{position:relative;width:100%;box-sizing:border-box}
.rc-scrub-axis .rc-scrub-lbl{position:absolute;left:0;top:50%;transform:translateY(-50%);z-index:1;font-size:11.5px;color:#9aa6c3;pointer-events:none;max-width:5.5%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rc-scrub-slot{position:relative;width:100%;box-sizing:border-box;padding-left:6.8085106383%;padding-right:2.1276595745%; /* RC_L/RC_W , RC_R/RC_W */
  touch-action:none;overflow:visible}
.rc-scrub-track{position:relative;width:100%;overflow:visible}
.rc-scrub-caret{position:absolute;top:1px;left:0;width:0;height:0;margin:0;border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:7px solid #ffb547;pointer-events:none;z-index:2}
.rc-scrub-slot input[type=range]{display:block;width:100%;margin:10px 0 0;height:28px;flex:none;accent-color:#ffb547;cursor:grab;touch-action:none}
.rc-scrub-slot input[type=range]:active{cursor:grabbing}
.rc-scrub-slot input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:16px;height:16px;border-radius:50%;background:#ffb547;border:2px solid #05070d;cursor:grab;box-shadow:0 0 0 1px rgba(0,0,0,.35)}
.rc-scrub-slot input[type=range]::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:#ffb547;border:2px solid #05070d;cursor:grab}
.rc-scrub-axis .rc-ends{margin:0;padding-left:6.8085106383%;padding-right:2.1276595745%;box-sizing:border-box;color:#9aa6c3;font-size:11.5px;line-height:1.35}
.rc-read{font-size:13.5px}
.rc-os{margin:8px 0;padding:8px 10px;border:1px solid rgba(62,199,184,.35);border-radius:10px;max-width:980px}
.rc-os-h{font-weight:700;color:#fff;font-size:13px;margin-bottom:4px}
.rc-sy{padding:1px 8px;margin:0 2px 2px 0;font-size:11.5px;border-radius:999px;border:1px solid var(--line);background:none;color:#9aa6c3;cursor:pointer}
.rc-sy.on{color:#fff;border-color:#ffb547;background:rgba(255,181,71,.14)}
.rc-os-cap{margin:4px 0}
.rc-os-row{display:flex;gap:14px;align-items:center;flex-wrap:wrap}
.rc-pie{width:150px;height:150px;flex:none}
.rc-leg{list-style:none;margin:0;padding:0;font-size:12.5px;columns:2;column-gap:18px}
.rc-leg li{margin:0 0 3px;break-inside:avoid}
.rc-leg i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:6px;vertical-align:-1px}
.rc-os-none,.rc-empty{color:#9aa6c3;min-height:0;padding:10px 0}
.rc-osn{margin-top:4px}
.rc-card .mini{max-width:none}
/* 20261102o (Jon t1025u/t1026u/t1030u; reports/feature-ui-cvd-palette-cycle-20261102.md): ◐ Colours palette-cycle button on the
   tour box (.tour-ctl, after Next →), 4-swatch strip, step-1 hint, and pin/tag swatch vars per CVD mode (body[data-cvd], src/cvd.js). */
.tour-ctl{flex-wrap:wrap}
/* 20261103r: CVD control lives in the left panel under #theme-toggle */
.cvd-row{margin:-4px 0 10px}
button.tour-cvd{display:flex;width:100%;justify-content:center;align-items:center;gap:6px;white-space:nowrap;padding:4px 6px;font:inherit;font-size:12px;border:1px solid var(--line);border-radius:9px;background:rgba(255,255,255,.04);color:var(--muted);cursor:pointer}
button.tour-cvd:hover{background:rgba(255,255,255,.10);color:var(--text)}
button.tour-cvd:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
body.theme-light button.tour-cvd{background:rgba(0,0,0,.04);color:#333}
.tour-cvd .cvd-sw{display:inline-flex;gap:1px}
.tour-cvd .cvd-sw i{display:inline-block;width:6px;height:12px;border-radius:2px;border:1px solid rgba(0,0,0,.35)}
.tour-cvd-hint{margin-top:4px;color:var(--muted)}
.tour-cvd-hint[hidden]{display:none}
body[data-cvd="deutan"],body.theme-light[data-cvd="deutan"]{--colonial:#0072B2;--indigenous:#E69F00;--military:#CC79A7;--nation:#56B4E9;--society:#F0E442}
body[data-cvd="protan"],body.theme-light[data-cvd="protan"]{--colonial:#648FFF;--indigenous:#FFB000;--military:#DC267F;--nation:#B8D4FF;--society:#FFF3A0}
body[data-cvd="contrast"],body.theme-light[data-cvd="contrast"]{--colonial:#1A5CFF;--indigenous:#FFD000;--military:#FF2E9A;--nation:#9EC9FF;--society:#FFF3A0}
body[data-cvd="tritan"],body.theme-light[data-cvd="tritan"]{--colonial:#CC3311;--indigenous:#009988;--military:#AA3377;--nation:#FF9988;--society:#88E0D0}
/* 20261102p (OneWorld UI, Jon t1052u; reports/feature-ui-ww1-arsenal-panel-20261102p.md): Instruments of war (#arsenal-surface).
   Mirrors the Compare stage: same black fade (#compare-black), side panel hidden, compact tour box, stage z17 centred on the map
   with its bottom above the tour box (--ar-bottom from arSyncPad). Two-column museum: list (filter chips) | detail (viewer + facts). */
body.arsenal-mode #compare-black{opacity:1}
body.arsenal-mode #panel{visibility:hidden}
body.arsenal-mode .xd-menu{display:none}
body.arsenal-mode #tourbar{display:none!important} /* 20261104bk (Jon t572s2495, Option A): tour box hidden while Arsenal is open; arClose restores it */
#arsenal-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(--ar-bottom,24px);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}
#arsenal-surface[hidden]{display:none}
#arsenal-surface .cp-kicker{color:#ffcf85}
@media (max-width:900px){#arsenal-surface{left:12px;right:12px;top:80px;width:auto;margin:0}}
.ar-body{flex:1;min-height:0;display:flex;flex-direction:column;padding:10px 16px 12px;color:#e8ecf6;overflow:hidden}
.ar-filters{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}
.ar-f{padding:4px 11px;font-size:12.5px;border-radius:999px;border:1px solid var(--line);background:none;color:#9aa6c3;cursor:pointer}
.ar-f.on{color:#fff;border-color:rgba(255,181,71,.6);background:rgba(255,181,71,.12)}
.ar-f small{opacity:.7;margin-left:2px}
.ar-f:focus-visible,.ar-list li:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.ar-grid{flex:1;min-height:0;display:grid;grid-template-columns:minmax(220px,300px) 1fr;gap:14px}
.ar-grid.ar-grid-about{grid-template-columns:minmax(240px,320px) minmax(200px,280px) 1fr}
.ar-side{display:flex;flex-direction:column;min-height:0;border-right:1px solid var(--line);padding-right:8px}
.ar-list{list-style:none;margin:0;padding:0;overflow:auto;flex:1;min-height:0}
.ar-country-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin:0 0 10px}
.ar-country{display:inline-flex;align-items:center;gap:8px;font-size:12.5px;color:#c9d0e4}
.ar-country span{color:#8f9bb8;text-transform:uppercase;letter-spacing:.04em;font-size:11px;font-weight:600}
.ar-country select{max-width:220px;font:inherit;font-size:12.5px;color:#e8ecf6;background:#0b1020;border:1px solid var(--line);border-radius:8px;padding:4px 8px}
.ar-country select:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.ar-country-help{color:#8f9bb8}
.ar-about-btn{margin-top:8px;flex:0 0 auto;align-self:stretch;padding:6px 10px;font:inherit;font-size:12px;border-radius:8px;border:1px solid var(--line);background:none;color:#9aa6c3;cursor:pointer;text-align:left}
.ar-about-btn:hover,.ar-about-btn.on{color:#fff;border-color:rgba(255,181,71,.55);background:rgba(255,181,71,.1)}
.ar-about-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.ar-about-panel{min-height:0;overflow:auto;border-right:1px solid var(--line);padding-right:10px;display:flex;flex-direction:column;gap:6px}
.ar-about-head{display:flex;align-items:center;justify-content:space-between;gap:8px;color:#ffcf85;font-size:13px}
.ar-about-x{border:0;background:none;color:#9aa6c3;font-size:18px;line-height:1;cursor:pointer;padding:2px 6px;border-radius:6px}
.ar-about-x:hover{color:#fff;background:rgba(255,255,255,.06)}
.ar-about-x:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.ar-about-panel .ar-pack-note{margin-top:0;border-top:0;padding-top:0}
.ar-list li{display:flex;gap:10px;align-items:center;padding:8px 10px;border-radius:10px;cursor:pointer;color:#c9d0e4;border:1px solid transparent}
.ar-list li:hover{background:rgba(255,255,255,.04)}
.ar-list li.on{background:rgba(255,181,71,.1);border-color:rgba(255,181,71,.45);color:#fff}
.ar-ic{width:26px;height:26px;flex:0 0 26px;display:grid;place-items:center;border-radius:7px;background:#121a33;color:#ffcf85;font-size:14px}
.ar-li-t{display:flex;flex-direction:column;min-width:0}
.ar-li-t b{font-size:13.5px;font-weight:600}
.ar-li-t small{font-size:11.5px;color:#8f9bb8}
.ar-detail{overflow:auto;min-height:0;padding-right:4px}
.ar-view-tog{display:inline-flex;gap:0;margin:0 0 8px;border:1px solid var(--line);border-radius:999px;overflow:hidden;background:#0b1020}
.ar-view-btn{padding:5px 14px;font:inherit;font-size:12.5px;border:0;background:transparent;color:#9aa6c3;cursor:pointer}
.ar-view-btn.on{background:rgba(255,181,71,.16);color:#fff}
.ar-view-btn:disabled{opacity:.45;cursor:not-allowed}
.ar-view-btn:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.ar-stage{width:100%;aspect-ratio:19/10;max-height:44vh;border-radius:12px;overflow:hidden;background:#0b1020;border:1px solid var(--line)}
.ar-stage .ar-sil,.ar-stage .ar-poster,.ar-stage .ar-mv{display:block;width:100%;height:100%;object-fit:contain}
.ar-mv{--poster-color:#0b1020;background:radial-gradient(circle at 50% 40%,#1a2340,#05070d)}
.ar-mv-help{margin-top:4px;color:var(--muted)}
.ar-dev{color:#ffcf85}
.ar-name{margin:10px 0 4px;font-size:19px;color:#fff}
.ar-name small{font-size:12px;font-weight:500;color:#9aa6c3;text-transform:uppercase;letter-spacing:.06em;margin-left:6px}
.ar-meta{display:flex;gap:14px;flex-wrap:wrap;font-size:13px;color:#c9d0e4}
.ar-meta b,.ar-used b,.ar-built b{color:#8f9bb8;font-weight:600;margin-right:4px;font-size:12px;text-transform:uppercase;letter-spacing:.04em}
.ar-used,.ar-built{margin-top:6px;font-size:13px;color:#c9d0e4}
.ar-built .mini{margin-top:2px;color:var(--muted)}
.ar-stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:6px 12px;margin:10px 0 0}
.ar-stats div{background:#0b1020;border:1px solid var(--line);border-radius:8px;padding:6px 9px}
.ar-stats dt{font-size:11px;color:#8f9bb8;text-transform:uppercase;letter-spacing:.04em}
.ar-stats dd{margin:2px 0 0;font-size:13.5px;color:#fff}
.ar-blurb{margin:10px 0 6px;font-size:14px;line-height:1.5;color:#dfe4f2;max-width:780px}
.ar-lic,.ar-src,.ar-pack-note{max-width:none !important}
.ar-lic,.ar-src{margin-top:6px;color:#9aa6c3}
.ar-src ul{margin:2px 0 0 16px;padding:0}
.ar-src a,.ar-lic a{color:#9cc8ff}
.ar-pack-note{margin-top:8px;color:#8f9bb8;border-top:1px solid var(--line);padding-top:6px;font-size:11.5px;line-height:1.4}
.ar-built .mini{max-width:none}
.tour-ctl button.tour-arsenal{white-space:nowrap;padding:6px 9px;font-size:12.5px;color:#ffcf85}
.tour-ctl button.tour-arsenal[hidden]{display:none}
.ht-arsenal{margin-top:6px;color:#ffcf85}
.ht-arsenal[hidden]{display:none}
@media (max-width:700px){.ar-grid,.ar-grid.ar-grid-about{grid-template-columns:1fr}.ar-side,.ar-about-panel{border-right:0;max-height:30vh;padding-right:0}.ar-about-panel{order:-1;max-height:28vh;border-bottom:1px solid var(--line);padding-bottom:8px;margin-bottom:6px}}
@media (prefers-reduced-motion:reduce){#arsenal-surface{animation:none !important}}
/* 20261102p (Jon t121u): Explore Arsenal button on war cards, above Explore Data; amber to stay distinct from the teal Explore Data. */
.ar-box{margin:4px 0 4px}
.ar-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 #e0a54a;background:rgba(224,165,74,.13);color:#ffe2b0;cursor:pointer}
.ar-btn:hover{background:rgba(224,165,74,.26);color:#fff}
.ar-btn:focus-visible{outline:2px solid #ffcf85;outline-offset:2px}
body.theme-light .ar-btn{border-color:#a8651a;background:rgba(168,101,26,.1);color:#6b3d08}
body.theme-light .ar-btn:hover{background:rgba(168,101,26,.2);color:#3f2304}

/* 20261102q (OneWorld UI; reports/feature-ui-war-report-card-scaffold-20261102q.md): War Report Card year scrub dims belligerents not at war that year. */
.wrc-card .cs-row.wrc-off{opacity:.28;transition:opacity .2s}
.wrc-card .cs-title .cs-chip{font-size:11px;vertical-align:middle}
/* 20261102q: public-beta AI/credit disclosure strip (src/beta-disclosure.js). Top-centre, above the globe, below modals/gate. */
.owh-beta{position:fixed;top:8px;left:50%;transform:translateX(-50%);z-index:9000;max-width:min(860px,calc(100vw - 24px));display:flex;align-items:center;gap:10px;
  padding:8px 10px 8px 12px;border-radius:10px;background:rgba(12,18,34,.94);color:#e7ecf7;border:1px solid rgba(120,150,220,.35);box-shadow:0 6px 24px rgba(0,0,0,.4);font:13px/1.35 system-ui,sans-serif}
.owh-beta-tag{flex:none;font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:2px 7px;border-radius:6px;background:#ffb547;color:#1a1200}
.owh-beta-t{flex:1 1 auto}
.owh-beta button{flex:none;cursor:pointer;border-radius:7px;border:1px solid rgba(120,150,220,.45);background:transparent;color:inherit;font:inherit;padding:4px 9px}
.owh-beta .owh-beta-x{font-size:16px;line-height:1;padding:3px 8px}
.owh-beta button:focus-visible{outline:2px solid #ffb547;outline-offset:2px}
body.theme-light .owh-beta{background:rgba(255,255,255,.97);color:#1b2333;border-color:rgba(40,60,120,.25)}
@media (max-width:700px){.owh-beta{flex-wrap:wrap;top:4px;font-size:12px}}
body:has(#credits:not([hidden])) .owh-beta{display:none}

/* 20261102v: Curricula → Institutional login tease (reports/feature-ui-curricula-institutional-tease-20261102v.md) */
.curr-inst-btn{display:block;width:100%;text-align:left;font:inherit;font-size:13px;color:var(--text);background:rgba(255,255,255,.07);border:1px solid var(--line);border-radius:10px;padding:7px 12px;cursor:pointer}
.curr-inst-btn:hover{background:rgba(255,255,255,.14)}
.curr-inst-btn[hidden]{display:none}
#inst-login{position:fixed;z-index:60}
.inst-login-body{width:min(360px,calc(100vw - 40px))}
.inst-login-form{display:flex;flex-direction:column;gap:12px;margin-top:6px}
.inst-login-form label{display:flex;flex-direction:column;gap:5px;font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}
.inst-login-form input{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}
.inst-login-form input:focus{border-color:var(--accent)}
.inst-login-submit{font:inherit;font-weight:700;font-size:15px;padding:10px;border:0;border-radius:8px;background:var(--accent);color:#0b1020;cursor:pointer}
.inst-login-msg{min-height:0;color:var(--muted);font-size:13px}
body.theme-light .curr-inst-btn{background:rgba(0,0,0,.04)}
body.theme-light .curr-inst-btn:hover{background:rgba(0,0,0,.08)}
body.theme-light .inst-login-form input{background:#fff;border-color:rgba(0,0,0,.18)}
/* 20261103e→20261103j: left-rail account strip (bottom of the left nav). j: three .card-title.sec sections (Personal / Institutional /
   Partnership) — the strip's own top hairline is dropped so it doesn't double with the first .sec heading's border-top. */
/* 20261105dd tip-edtools-tidy: Join disclosure (collapsed by default) */
.acct-strip{display:flex;flex-direction:column;gap:0;margin-top:8px;padding-top:8px;border-top:1px solid var(--line)}
.acct-strip .acct-join-toggle{
  display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;
  font:inherit;font-weight:700;font-size:12px;letter-spacing:.08em;text-transform:uppercase;
  color:var(--muted);background:transparent;border:0;padding:4px 0;cursor:pointer;text-align:left
}
.acct-strip .acct-join-toggle:hover{color:var(--text)}
.acct-strip .acct-join-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}
.acct-strip .acct-join-chev{font-size:11px;transition:transform .15s ease;color:var(--muted)}
.acct-strip .acct-join-toggle[aria-expanded="true"] .acct-join-chev{transform:rotate(90deg)}
.acct-strip .acct-join-body{display:flex;flex-direction:column;gap:0;padding:4px 0 2px}
.acct-strip .acct-join-body[hidden]{display:none!important}
.acct-strip .card-title.sec{margin:8px 0 6px}
.acct-strip .acct-join-body > .card-title.sec:first-child{margin-top:4px}
.acct-strip .curr-inst-btn{margin:0}

/* Bottom map attribution (licence): base map + border year + More info */
#map-status{
  display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;
  padding:4px 10px 2px;font-size:11px;line-height:1.35;color:var(--muted);
  border-bottom:1px solid rgba(255,255,255,.08)
}
#map-status .map-status-base,#map-status .map-status-border{min-width:0}
#map-status #basemap-name,#map-status #basemap-short{font-weight:500;color:var(--muted)}
#map-status #snapshot-year{color:var(--text);font-weight:650}
#map-status .map-status-more,#map-status .bm-more{
  font:inherit;font-size:11px;padding:1px 7px;border-radius:7px;cursor:pointer;
  background:rgba(255,255,255,.06);border:1px solid var(--line);color:#9cc8ff
}
#map-status .map-status-more:hover{background:rgba(255,255,255,.12)}
body.theme-light #map-status{border-bottom-color:rgba(0,0,0,.08)}
body.theme-light #map-status .map-status-more{color:#0b5cab}
@media (max-width:899.98px){
  /* Mobile tidy bar is parked — keep map-status compact if visible */
  #map-status{font-size:10.5px;padding:3px 8px 2px;gap:4px 6px}
}
#inst-login,#acct-member,#acct-partner{position:fixed;z-index:60}
.acct-modal .modal-body p{margin:6px 0 10px}
.acct-soon{color:var(--muted);font-size:13px}
.acct-ok{width:100%;margin-top:4px}
/* 20261104n (Jon live bug via EA; reports/feature-ui-fc-left-of-info-card-20261104n.md): Fact Check docks LEFT of the Info Card (#panel);
   the panel stays put at right:16px. With #panel.open (≥900px) .fc-surface sits at right:calc(min(400px,92vw) + 28px); tour-only FC keeps right:16px.
   20261102w (Jon GO t1197u; reports/feature-ui-fact-check-soft-launch-20261102w.md): Fact Check side panel, same card skin as the Explore Data
   menu (.xd-menu). AI-written by the OneWorld UI agent. */
.fc-surface{position:fixed;top:16px;right:16px;bottom:164px;width:min(380px,calc(100vw - 32px));z-index:13;display:flex;flex-direction:column;
  padding:12px 14px 10px;font-size:13px;background:rgba(14,20,38,.97);backdrop-filter:blur(6px);border:1px solid rgba(127,212,138,.6);box-shadow:0 10px 30px rgba(0,0,0,.5)}
.fc-surface[hidden]{display:none}
body.compare-mode .fc-surface,body.arsenal-mode .fc-surface{display:none}
.fcs-head{display:flex;align-items:baseline;gap:8px;margin-bottom:8px;padding-right:24px;position:relative}
.fcs-head b{color:#9be3a5;font-size:12px;text-transform:uppercase;letter-spacing:.1em}
.fcs-beta{font-size:10px;text-transform:uppercase;letter-spacing:.08em;border:1px solid var(--line);border-radius:5px;padding:0 5px;color:var(--muted)}
.fcs-x{position:absolute;right:-4px;top:-6px;background:none;border:0;color:var(--muted);font-size:22px;cursor:pointer;line-height:1}
.fcs-body{flex:1 1 auto;overflow:auto;min-height:0;line-height:1.45}
.fcs-body p{margin:0 0 8px}
.fcs-q{font-weight:700;font-size:14px}
.fcs-foot{border-top:1px solid var(--line);padding-top:6px;margin-top:8px;max-width:none}
/* 20261104n: FC attribution line (plain text link, no logo). */
.fcs-attr{display:block;margin-top:4px;opacity:.85}.fcs-attr a{color:inherit;text-decoration:underline}
.fcs-pick{display:flex;flex-direction:column;gap:6px;margin:6px 0 10px}
.fcs-opt{display:flex;flex-direction:column;align-items:flex-start;gap:2px;text-align:left;font:inherit;padding:8px 10px;border-radius:8px;border:1px solid var(--line);
  background:rgba(255,255,255,.04);color:var(--text);cursor:pointer}
.fcs-opt:hover,.fcs-opt:focus-visible{border-color:#7fd48a;background:rgba(127,212,138,.14);outline:none}
.fcs-opt.avail{border-color:rgba(127,212,138,.55)}
.fcs-open{font-size:11.5px;color:#9be3a5}
.fcs-closed{font-size:11.5px;color:var(--muted)}
.fcs-hint{max-width:none}
.fcs-target{border-left:3px solid #7fd48a;padding:2px 0 2px 8px;margin:0 0 10px}
.fcs-tk{font-size:10.5px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}
.fcs-lbl{display:block;font-weight:600;margin:4px 0 4px}
#fcs-text{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/1.45 Inter,system-ui,sans-serif;resize:vertical;min-height:90px}
.fcs-actions{display:flex;justify-content:space-between;gap:8px;margin:10px 0 8px}
.fcs-btn{font:inherit;font-weight:700;padding:7px 12px;border-radius:8px;border:0;background:#7fd48a;color:#0b1020;cursor:pointer}
.fcs-btn.ghost{background:rgba(255,255,255,.07);border:1px solid var(--line);color:var(--text);font-weight:500}
.fcs-btn:focus-visible,.fcs-x:focus-visible{outline:2px solid #7fd48a;outline-offset:2px}
.fcs-ts{min-height:70px;margin:6px 0}
.fcs-busy{display:flex;align-items:center;gap:10px;padding:14px 0}
.fcs-spin{width:16px;height:16px;border-radius:50%;border:2px solid rgba(127,212,138,.3);border-top-color:#7fd48a;animation:fcs-spin 1s linear infinite;flex:0 0 auto}
@keyframes fcs-spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.fcs-spin{animation:none}}
.fcs-msg{border:1px solid var(--line);border-radius:8px;padding:8px 10px;margin:0 0 6px}
.fcs-msg.warn{border-color:rgba(255,210,122,.6)}
.fcs-msg p{margin:4px 0 0}
.fcs-overall{margin:0 0 6px;font-weight:600}
.fcs-v{display:inline-block;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;border-radius:5px;padding:1px 6px;color:#0b1020;background:#9aa6c4}
.fcs-v.v-supported{background:#7fd48a}.fcs-v.v-partly_supported{background:#c8e07a}.fcs-v.v-disputed{background:#ffd27a}
.fcs-v.v-unsupported{background:#ff9a8a}.fcs-v.v-unverified{background:#9aa6c4}
.fcs-conf{font-size:11px;color:var(--muted)}
.fcs-claims{margin:6px 0 10px;padding-left:18px}
.fcs-claim{margin:0 0 10px}
.fcs-ct{font-weight:600;margin:3px 0 2px}
.fcs-ex{color:#dfe5f3}
.fcs-cites{margin-top:3px;font-size:12px}
.fcs-cites a,.fcs-srcs a{color:#9cc8ff;margin-right:6px}
.fcs-sec-h{font-size:10.5px;text-transform:uppercase;letter-spacing:.12em;color:#ffd27a;margin:0 0 4px}
.fcs-srcs ol{margin:0;padding-left:26px}
.fcs-srcs li{margin:0 0 4px;font-size:12.5px}
.fcs-meta{max-width:none}
body.theme-light .fc-surface{background:rgba(255,253,246,.98);border-color:rgba(46,125,50,.55)}
body.theme-light .fcs-head b,body.theme-light .fcs-open{color:#2e7d32}
body.theme-light .fcs-opt{background:rgba(0,0,0,.03)}
body.theme-light .fcs-opt:hover,body.theme-light .fcs-opt:focus-visible{background:rgba(46,125,50,.1);border-color:#2e7d32}
body.theme-light .fcs-btn{background:#2e7d32;color:#fff}
body.theme-light .fcs-btn.ghost{background:rgba(0,0,0,.05);color:var(--text)}
body.theme-light #fcs-text{background:#fff;border-color:rgba(0,0,0,.18)}
body.theme-light .fcs-ex{color:inherit}
body.theme-light .fcs-cites a,body.theme-light .fcs-srcs a{color:#1a5fb4}
body.theme-light .fcs-sec-h{color:#9a5b00}
/* 20261104n: on wide screens the Info Card no longer slides (20261102w body.fc-open #panel{right:…} rule deleted). Instead, when the card is open,
   Fact Check docks immediately LEFT of it (16px panel gutter + 12px gap), so the card being checked stays at its normal dock beside it. */
@media (min-width:900px){body.fc-open:has(#panel.open) .fc-surface{right:calc(min(400px,92vw) + 28px)}}

/* 20261103f (Jon confirmed; reports/feature-ui-credits-top-20261103f.md): About & credits moved from the bottom timebar to the top of the
   page. top/right are set by placeCredits() in app.js (left of the open #panel, below the beta strip if they would
   overlap). z-index 9 keeps it under .modal (10) and .xd-menu (12). AI-written by the OneWorld UI agent. */
#founder-msg-btn.top-credits,#credits-btn.top-credits{position:fixed;top:16px;right:16px;z-index:9;white-space:nowrap;background:var(--card);backdrop-filter:blur(10px);
  box-shadow:0 4px 16px rgba(0,0,0,.35)}
#founder-msg-btn.top-credits:hover,#credits-btn.top-credits:hover{background:rgba(40,52,84,.92)}
#founder-msg-btn.top-credits:focus-visible,#credits-btn.top-credits:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
body.theme-light #founder-msg-btn.top-credits,body.theme-light #credits-btn.top-credits{background:var(--card);box-shadow:0 4px 14px rgba(60,80,120,.22)}
body.theme-light #founder-msg-btn.top-credits:hover,body.theme-light #credits-btn.top-credits:hover{background:rgba(255,255,255,.98)}
#credits-btn.top-credits.no-room,body.compare-mode #credits-btn.top-credits,body.arsenal-mode #credits-btn.top-credits,
body.course-player #credits-btn.top-credits,body:has(#credits:not([hidden])) #credits-btn.top-credits,
#founder-msg-btn.top-credits.no-room,body.compare-mode #founder-msg-btn.top-credits,body.arsenal-mode #founder-msg-btn.top-credits,
body.course-player #founder-msg-btn.top-credits,body:has(#credits:not([hidden])) #founder-msg-btn.top-credits{display:none} /* 20261104aa */

/* 20261103k U-E6 (Jon GO HIGH WWI via Manager; reports/feature-ui-fronts-peek-20261103k.md; AI-written by the OneWorld UI agent,
   2026-11-03): East/Italy fronts steps (body.fronts-peek, set in goStep) compact the centred tour box so the front shows above
   it; narration + Map legend scroll inside the box (nothing removed), the event chip row (same event as the right card) and
   the Lens line are hidden. app.js aims the step camera at the free map above the box. Mobile/narrow parked. */
body.touring.fronts-peek #tourbar #tour-text{max-height:4.6em;overflow:auto;margin:4px 0;padding-right:4px;scrollbar-width:thin}
body.touring.fronts-peek #tourbar #tour-src{max-height:6.2em;overflow:auto;padding-right:4px;scrollbar-width:thin}
body.touring.fronts-peek #tourbar #tour-events{display:none}
body.touring.fronts-peek #tourbar #tour-focus{display:none}

/* ===== 20261103q mobile first pass (Jon layout via EA; reports/feature-ui-mobile-first-pass-20261103q.md). AI-written by the
   OneWorld UI agent (OneWorld History), 2026-11-03 ~20:40–22:00 EST (America/Toronto), for human review. Phone-first; every rule
   is inside max-width 899.98px, so desktop (≥900px) is unchanged. JS: src/mobile-ui.js (body.owh-m / owh-m-sheet / owh-m-panel /
   owh-m-stow, #owh-m-top / #owh-m-edge / #owh-m-ptab, --owh-m-top-h / --owh-m-tb-h).
   Root cause of the "timeline mid-screen + big empty navy" look: the closed #panel (translateX off the right) widened the mobile
   layout viewport (~2× device width), so the phone shrank the whole 100%-high page into the top half. Fix: body is the fixed,
   clipping containing block on phone, and the closed card is visibility:hidden. ===== */
#owh-m-top,#owh-m-edge,#owh-m-ptab,#owh-m-tabs,#owh-m-setx,#owh-m-globe,#owh-m-pfoot{display:none} /* 20261104bc: + Option A tabs / Settings extras / ‹ Globe / card foot (phone only) */
@media (max-width:899.98px){
  html,body{overflow:hidden;overscroll-behavior:none}
  body{position:fixed;inset:0;width:100%;height:100%;overflow:clip}
  #panel:not(.open){visibility:hidden;transition:transform .35s ease,visibility 0s linear .35s}

  /* 1 · timeline docked at the true bottom edge */
  body.owh-m #timebar{position:fixed;left:0;right:0;bottom:0;top:auto;height:auto;z-index:6;
    padding:8px calc(10px + env(safe-area-inset-right)) calc(6px + env(safe-area-inset-bottom)) calc(10px + env(safe-area-inset-left));
    background:rgba(8,12,26,.97);border-top:1px solid var(--line);box-sizing:border-box}
  body.owh-m.theme-light #timebar{background:rgba(255,250,236,.98)}
  body.owh-m #year-row{margin-top:0;gap:6px;flex-wrap:wrap;row-gap:2px}
  body.owh-m #year{font-size:28px;letter-spacing:0}
  body.owh-m #year.tl-date{font-size:16px}
  body.owh-m #play{width:34px;height:34px}
  body.owh-m #tl-rew{margin-right:0}
  body.owh-m #tl-rew button{padding:4px 7px;font-size:12px}
  body.owh-m #era-note{order:9;flex:1 0 100%;min-width:0;font-size:11px;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  body.owh-m #tl-ctl{margin-left:auto;font-size:11px;flex:0 1 auto}
  body.owh-m #support-line{white-space:normal;flex-basis:100%;font-size:11px}
  body.owh-m #track-wrap{margin-top:26px;height:48px}
  body.owh-m .tick{width:8px;height:8px;margin-left:-4px} /* unused: DOM ticks removed */
  body.owh-m .tl-evstrip{height:24px}
  body.owh-m #scale{font-size:9.5px;white-space:nowrap}
  body.owh-m #scale span.owh-m-hide{visibility:hidden} /* label collision pass in mobile-ui.js */

  /* 3 · globe in the centre slot between the top bar and the timebar; it never moves (top bar / card / tour slide over it) */
  body.owh-m #globe{top:var(--owh-m-top-h,48px);bottom:var(--owh-m-tb-h,104px);left:0;right:0}
  body.owh-m .cesium-viewer-bottom{bottom:2px !important;left:6px !important;transform:scale(.72)}
  body.owh-m #course-black,body.owh-m #compare-black{top:var(--owh-m-top-h,48px);bottom:var(--owh-m-tb-h,104px)}

  /* 2 · left-rail content → top bar (+ the unchanged #layers card as a drop-down sheet) */
  body.owh-m #brand{display:none}
  body.owh-m #credits-btn.top-credits,body.owh-m #founder-msg-btn.top-credits{display:none}
  body.owh-m #owh-m-top{display:flex;align-items:center;gap:6px;position:fixed;top:0;left:0;right:0;z-index:9;box-sizing:border-box;
    min-height:48px;padding:calc(6px + env(safe-area-inset-top)) calc(6px + env(safe-area-inset-right)) 6px calc(8px + env(safe-area-inset-left));
    background:var(--card);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);box-shadow:0 4px 18px rgba(0,0,0,.35);
    transition:transform .3s ease,opacity .3s ease}
  body.owh-m .owh-m-brand{flex:0 0 auto;background:none;border:0;color:var(--text);font:inherit;font-weight:800;font-size:15px;padding:4px 2px;cursor:pointer;white-space:nowrap}
  body.owh-m .owh-m-brand::before{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--accent);margin-right:6px;vertical-align:middle;box-shadow:0 0 10px var(--accent)}
  /* 20261104bc Option A (Jon t531u): brand + 3 round icons, right-justified; no sideways scroll */
  body.owh-m .owh-m-icons{margin-left:auto;display:flex;gap:8px;flex:0 0 auto}
  body.owh-m .owh-m-b.owh-m-ic{width:40px;height:40px;padding:0;border-radius:50%;font-size:17px;line-height:1;display:grid;place-items:center}
  body.owh-m .owh-m-b{flex:0 0 auto;background:rgba(255,255,255,.07);border:1px solid var(--line);color:var(--text);border-radius:999px;padding:6px 11px;font:inherit;font-size:12.5px;white-space:nowrap;cursor:pointer}
  body.owh-m .owh-m-b[aria-expanded=true]{background:rgba(255,181,71,.22);border-color:var(--accent)}
  body.owh-m .owh-m-b.owh-m-more{font-size:18px}
  body.owh-m.theme-light .owh-m-b{background-color:rgba(30,45,90,.06)}
  body.owh-m #layers{position:fixed;top:calc(var(--owh-m-top-h,48px) + 6px);left:calc(6px + env(safe-area-inset-left));right:calc(6px + env(safe-area-inset-right));
    width:auto;min-width:0;max-width:520px;box-sizing:border-box;max-height:calc(100% - var(--owh-m-top-h,48px) - var(--owh-m-tb-h,104px) - 14px);
    overflow:auto;overscroll-behavior:contain;z-index:8;opacity:0;visibility:hidden;transform:translateY(-10px);pointer-events:none;
    transition:opacity .2s ease,transform .2s ease,visibility 0s linear .2s}
  body.owh-m.owh-m-sheet #layers{opacity:1;visibility:visible;transform:none;pointer-events:auto;transition:opacity .2s ease,transform .2s ease}
  /* 20261104bc Option A: the sheet = 4 tabs over the same DOM (mobile-ui.js tags each #layers child with data-owh-grp) */
  body.owh-m #layers{padding-top:0}
  body.owh-m #owh-m-tabs{display:flex;gap:4px;position:sticky;top:0;z-index:2;margin:0 -2px 10px;padding:10px 2px 8px;background:var(--owh-m-solid,#0e1426);border-bottom:1px solid var(--line)}
  body.owh-m .owh-m-tab{flex:1 1 0;min-width:0;padding:8px 4px;border:1px solid var(--line);border-radius:10px;background:rgba(255,255,255,.05);color:var(--text);font:inherit;font-size:12.5px;cursor:pointer;white-space:nowrap}
  body.owh-m .owh-m-tab.on{background:rgba(255,181,71,.22);border-color:var(--accent);font-weight:700}
  body.owh-m.theme-light .owh-m-tab{background:rgba(30,45,90,.06)}
  body.owh-m{--owh-m-solid:#0e1426} body.owh-m.theme-light{--owh-m-solid:#fffdf6}
  body.owh-m #layers[data-owh-tab=histories]>[data-owh-grp]:not([data-owh-grp=histories]),
  body.owh-m #layers[data-owh-tab=layers]>[data-owh-grp]:not([data-owh-grp=layers]),
  body.owh-m #layers[data-owh-tab=settings]>[data-owh-grp]:not([data-owh-grp=settings]),
  body.owh-m #layers[data-owh-tab=account]>[data-owh-grp]:not([data-owh-grp=account]){display:none !important}
  body.owh-m #layers[data-owh-tab=histories]>.card-title.sec[data-owh-grp=histories]{display:none} /* tab already says Histories */
  body.owh-m #owh-m-setx{display:flex;flex-direction:column;gap:6px;margin:10px 0 4px}
  body.owh-m .owh-m-xb{text-align:left;padding:9px 12px;border:1px solid var(--line);border-radius:10px;background:rgba(255,255,255,.05);color:var(--text);font:inherit;font-size:13px;cursor:pointer}
  body.owh-m.theme-light .owh-m-xb{background:rgba(30,45,90,.06)}

  /* 4 · selection: the top bar slides off to the left, the right card fills the right side (above the timebar) */
  body.owh-m #panel{top:0;right:0;bottom:var(--owh-m-tb-h,104px);width:calc(100% - 72px - env(safe-area-inset-left));max-width:460px;box-sizing:border-box;
    border-radius:16px 0 0 16px;border-right:0;padding:calc(14px + env(safe-area-inset-top)) calc(16px + env(safe-area-inset-right)) 14px 16px;z-index:7}
  body.owh-m #panel h2{font-size:21px}
  body.owh-m #panel-date{font-size:34px}
  body.owh-m.owh-m-panel #owh-m-top,body.owh-m.fc-open #owh-m-top{transform:translateX(-100%);opacity:0;pointer-events:none}
  /* 6 · card slid away (kept open) — earth stays; right-edge tab brings it back */
  body.owh-m.owh-m-stow #panel.open{transform:translateX(calc(100% + 30px))}
  /* 20261104bc Option A: 72px globe strip left of the card (width above) + labelled "‹ Globe" button; ✕ Close in a bottom row */
  body.owh-m.owh-m-panel:not(.fc-open):not(.compare-mode):not(.arsenal-mode):not(.course-player) #owh-m-globe{display:block;position:fixed;
    left:calc(6px + env(safe-area-inset-left));top:calc(50% - 40px);z-index:8;width:60px;padding:9px 4px;border:1px solid var(--accent);border-radius:999px;
    background:var(--card);color:var(--text);font:inherit;font-size:12px;font-weight:700;white-space:nowrap;cursor:pointer;box-shadow:0 4px 14px rgba(0,0,0,.45)}
  body.owh-m #panel-close{display:none}
  body.owh-m #owh-m-pfoot{display:block;position:sticky;bottom:-14px;margin:14px -16px -14px;padding:10px 16px calc(10px + env(safe-area-inset-bottom,0px));
    background:var(--owh-m-solid,#0e1426);border-top:1px solid var(--line);z-index:2}
  body.owh-m .owh-m-pclose{display:block;width:100%;padding:10px;border:1px solid var(--line);border-radius:10px;background:rgba(255,255,255,.08);color:var(--text);font:inherit;font-size:14px;font-weight:700;cursor:pointer}
  body.owh-m.theme-light .owh-m-pclose{background:rgba(30,45,90,.08)}
  body.owh-m.owh-m-stow #owh-m-ptab{display:block;position:fixed;right:0;top:calc(var(--owh-m-top-h,48px) + 56px);z-index:7;width:26px;height:64px;padding:0;
    border:1px solid var(--line);border-right:0;border-radius:12px 0 0 12px;background:var(--card);color:var(--accent);font-size:20px;cursor:pointer;box-shadow:0 4px 14px rgba(0,0,0,.4)}
  /* 5 · far-left edge hit strip: brings the top/left controls back (and slides the card away) */
  body.owh-m #owh-m-edge{display:none;position:fixed; /* 20261104bc Option A: edge strip retired (‹ Globe button + ☰ replace it; avoids the iOS back-swipe clash) */left:0;top:var(--owh-m-top-h,48px);bottom:var(--owh-m-tb-h,104px);width:18px;z-index:7;padding:0;border:0;background:transparent;cursor:pointer}
  body.owh-m.owh-m-panel #owh-m-edge{top:0;width:24px}
  body.owh-m #owh-m-edge i{position:absolute;left:5px;top:calc(50% - 22px);width:4px;height:44px;border-radius:4px;background:rgba(255,255,255,.28)}
  body.owh-m.owh-m-panel #owh-m-edge i{background:var(--accent);opacity:.7}
  body.owh-m.theme-light #owh-m-edge i{background:rgba(30,45,90,.3)}
  body.owh-m.compare-mode #owh-m-edge,body.owh-m.arsenal-mode #owh-m-edge,body.owh-m.course-player #owh-m-edge{display:none}

  /* 7 · tours: the earth stays put; the tour card is a bottom sheet just above the timebar (camera: no U-E6 peek aim on phone) */
  body.owh-m #tourbar{left:calc(8px + env(safe-area-inset-left));right:calc(8px + env(safe-area-inset-right));width:auto;transform:none;
    bottom:calc(var(--owh-m-tb-h,104px) + 6px);max-height:min(32vh,calc(100% - var(--owh-m-top-h,48px) - var(--owh-m-tb-h,104px) - 24px));
    overflow:auto;overscroll-behavior:contain;padding:10px 12px;font-size:13px;box-sizing:border-box}
  body.owh-m #tour-title{font-size:16px}
  body.owh-m .tour-ctl{flex-wrap:wrap;gap:6px}
  body.owh-m .tour-ctl .tour-narr-col{margin-left:0;flex:1 1 100%;max-width:100%} /* parked mobile: stack under Back/Play/Next, don't break sheet */
  body.owh-m .tour-ctl button{padding:5px 10px}
  /* 20261104bc Option A: Back / Play / Next pinned to the tour sheet's bottom edge; narration scrolls above them */
  body.owh-m #tourbar .tour-ctl{position:sticky;bottom:-10px;z-index:2;margin:8px -12px -10px;padding:8px 12px 10px;background:var(--owh-m-solid,#0e1426);border-top:1px solid var(--line)}
  body.owh-m #tourbar .tour-ctl~
/* tip-cs-on-cr: Compare CA↔USA styles from tip-cr */
.cs-compare{display:inline-flex;align-items:center;gap:6px;margin-left:auto;flex:0 0 auto;font-size:12.5px;color:#c9d0e4;white-space:nowrap}
.cs-compare[hidden]{display:none}
.cs-compare select{font:inherit;font-size:12.5px;color:#e8ecf6;background:#0b1020;border:1px solid var(--line);border-radius:8px;padding:4px 8px;max-width:min(220px,70vw)}
.cs-compare select:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
@media (max-width:700px){#compare-surface .cp-title{flex-basis:100%;white-space:normal;overflow:visible;text-overflow:clip}.cs-compare{margin-left:auto}}.rc-cmp-leg{display:flex;gap:14px;flex-wrap:wrap;align-items:center;margin:2px 0 4px;font-size:12px;color:#c9d0e4}
.rc-cmp-leg i,.rc-sw{display:inline-block;width:14px;height:3px;border-radius:1px;margin-right:6px;vertical-align:middle}
.rc-read-row{display:block;line-height:1.45;margin:1px 0}
.rc-read-row .rc-read-chip{margin-left:6px}
.rc-dot.rc-b{fill:#e07a3d}
.rc-dot.rc-b.est{fill:#05070d;stroke:#ffd27a;stroke-width:1.5}
.rc-cur-dot.rc-c0{fill:#6f9ee8}
.rc-cur-dot.rc-c1{fill:#e07a3d}
.rc-read-cmp{display:flex;flex-direction:column;align-items:flex-start;gap:3px}
.rc-cmp-miss{margin:2px 0 8px;font-size:13px;line-height:1.4;color:#d7deee}
.rc-os-cmp{margin:2px 0 6px;color:#c9d0e4}
  body.owh-m .cs-compare{margin-left:auto}

.tour-explore{margin-top:18px}

  /* Data surfaces REPLACE the globe in the same centre slot (between the top bar and the timebar) */
  body.owh-m #compare-surface,body.owh-m #arsenal-surface,body.owh-m #course-player{top:calc(var(--owh-m-top-h,48px) + 6px);left:6px;right:6px;width:auto;margin:0;
    bottom:calc(var(--owh-m-tb-h,104px) + 6px)}
  body.owh-m.touring #compare-surface{bottom:max(var(--cs-bottom,132px),calc(var(--owh-m-tb-h,104px) + 6px))}
  /* Fact Check = the right-panel slot */
  body.owh-m .fc-surface{top:0;right:0;bottom:var(--owh-m-tb-h,104px);width:calc(100% - 24px);max-width:460px;border-radius:16px 0 0 16px}
  body.owh-m .owh-beta{top:calc(var(--owh-m-top-h,48px) + 4px)}
}

/* Cesium map labels only (src/app.js LABEL_FONT). UI chrome keeps --font (Inter).
   Self-hosted Montserrat 600 (SIL OFL 1.1, vendor/fonts/montserrat/OFL.txt): weight actually used,
   latin + latin-ext + vietnamese + cyrillic + cyrillic-ext. Other scripts fall through to Noto Sans / system sans. */
@font-face{font-family:'Montserrat';font-style:normal;font-weight:600;font-display:swap;
  src:url(../vendor/fonts/montserrat/Montserrat-600-latin.woff2) format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Montserrat';font-style:normal;font-weight:600;font-display:swap;
  src:url(../vendor/fonts/montserrat/Montserrat-600-latin-ext.woff2) format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Montserrat';font-style:normal;font-weight:600;font-display:swap;
  src:url(../vendor/fonts/montserrat/Montserrat-600-vietnamese.woff2) format('woff2');
  unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}
@font-face{font-family:'Montserrat';font-style:normal;font-weight:600;font-display:swap;
  src:url(../vendor/fonts/montserrat/Montserrat-600-cyrillic.woff2) format('woff2');
  unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:'Montserrat';font-style:normal;font-weight:600;font-display:swap;
  src:url(../vendor/fonts/montserrat/Montserrat-600-cyrillic-ext.woff2) format('woff2');
  unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}

/* 20261103 draft (FLAG-20261103-credits-soft-trim; reports/feature-ui-credits-soft-trim-20261103.md): Data & credits modal only —
   capped to the viewport with its own scroll (top never clipped off-screen), slightly tighter type/spacing. Other .modal-body untouched. */
#credits .modal-body{max-width:680px;max-height:calc(100vh - 32px);max-height:calc(100dvh - 32px);overflow:auto;margin:16px;padding:18px 22px 14px;font-size:13px;line-height:1.45;box-sizing:border-box}
#credits .modal-body h3{margin:4px 0 6px;font-size:15px}
#credits .modal-body p{margin:0 0 8px}
#credits .modal-body ul{margin:0;padding-left:18px}
#credits .modal-body li{margin:0 0 4px}
/* 20261104p: Join as a member — CAD PayPal.Me tier rows (reports/feature-ui-paypal-membership-20261104p.md) */
.acct-tiers-h{margin:8px 0 4px}
.acct-tiers{list-style:none;margin:0 0 10px;padding:0;display:flex;flex-direction:column;gap:6px}
.acct-tier{display:grid;grid-template-columns:1fr auto;gap:4px 10px;align-items:center;padding:8px 10px;border:1px solid var(--line,rgba(127,127,127,.3));border-radius:8px}
.acct-tier-name{font-weight:600}
.acct-tier-name small,.acct-tier-price small{display:block;font-weight:400;color:var(--muted);font-size:12px}
.acct-tier-price{text-align:right;font-weight:600}
.acct-tier-price abbr{text-decoration:none;font-size:12px}
.acct-tier-cta{grid-column:1/-1;display:block;text-align:center;padding:6px 8px;border-radius:6px;background:var(--accent,#2563eb);color:#fff;text-decoration:none;font-size:13px;font-weight:600}
.acct-tier-cta:hover,.acct-tier-cta:focus-visible{filter:brightness(1.1);outline:2px solid currentColor;outline-offset:1px}

/* ===== 20261104q (Jon via EA): Join as a member CTA contrast. Was #fff on #ffb547 (~1.8:1) dark, and #1f5fbf link-blue on #e08a00 (~2:1) light via body.theme-light .modal-body a.
   Now dark: #0b1020 on #ffb547 (~10.8:1); light: #fff on #8a4b00 (~6.8:1). Close (.acct-ok) keeps #0b1020 on accent (~10.8:1 dark / ~7:1 light). ===== */
#acct-member .acct-tier-cta,#acct-member .acct-tier-cta:visited{background:#ffb547;color:#0b1020;font-size:14px;font-weight:700;padding:8px 10px;border:1px solid rgba(0,0,0,.25)}
#acct-member .acct-tier-cta:hover,#acct-member .acct-tier-cta:focus-visible{filter:none;background:#ffc670;color:#0b1020;outline:2px solid #e8ecf6;outline-offset:2px}
body.theme-light #acct-member .acct-tier-cta,body.theme-light #acct-member .acct-tier-cta:visited{background:#8a4b00;color:#fff;border-color:#6b3a00}
body.theme-light #acct-member .acct-tier-cta:hover,body.theme-light #acct-member .acct-tier-cta:focus-visible{background:#6b3a00;color:#fff;outline-color:#1d2638}
#acct-member .acct-ok{color:#0b1020}
/* 20261104q (Jon t432u; reports/feature-ui-explore-mag-glass-20261104q.md) */
.theme-row{display:flex;align-items:stretch;gap:6px;margin:0 0 10px}
/* 20261104y (Jon t1801u/t1802u): Dark/Light ~2/3 row width, same height; mag right-justified */
.theme-row .theme-seg{margin:0;flex:1 1 auto;min-width:0;display:flex} /* 20261104ag (Jon t496u): Dark/Light fills whole theme row beside mag, no empty space (was 66%) */
.theme-row .theme-seg button{font-size:11px;padding:3px 6px;flex:1 1 0}
.theme-row .owh-mag{margin-left:auto;flex:0 0 auto}
.owh-mag{font:inherit;font-size:13px;line-height:1;padding:2px 8px;border:1px solid var(--line);border-radius:9px;background:rgba(255,255,255,.04);color:var(--text);cursor:pointer}
.owh-mag.on{border-color:var(--accent);background:rgba(255,255,255,.12)}
/* 20261105cs: tour bottom = two clusters [Data][Arsenal] | [Test so far][Final test] */
.tour-explore{display:flex;justify-content:space-between;align-items:center;gap:18px;margin-top:8px}
.tour-explore[hidden]{display:none}
.tour-explore-left,.tour-explore-right{display:flex;align-items:center;gap:6px;flex:0 0 auto}
.tour-explore-right{margin-left:auto}
.tour-explore-right[hidden]{display:none}
.tour-explore button{font:inherit;font-size:13px;padding:6px 12px;border-radius:10px;cursor:pointer;color:var(--text);background:rgba(255,255,255,.07);border:1px solid var(--line);white-space:nowrap}
.tour-explore button[hidden]{display:none}
.tour-explore .tour-xd{border-color:rgba(45,212,191,.55);background:rgba(45,212,191,.12)}
.tour-explore .tour-arsenal{border-color:rgba(255,181,71,.45);background:rgba(255,181,71,.10)}
.tour-explore .ra-test-btn{border-color:rgba(255,181,71,.55);background:rgba(255,181,71,.14)}
.tour-explore .ra-test-btn:hover{background:rgba(255,181,71,.22)}
/* text scale: zoom scales px font sizes inside each side panel (all side boxes incl. Layers + Histories) */
body.owh-text-large :is(#panel,#tourbar,#tour-flag-pop,#fact-check-surface,#xd-menu,#owh-m-top,.cs-side,.ar-side,.ar-about){zoom:1.15}
body.owh-text-larger :is(#panel,#tourbar,#tour-flag-pop,#fact-check-surface,#xd-menu,#owh-m-top,.cs-side,.ar-side,.ar-about){zoom:1.3}
/* 20261104aa (Jon t1810u): #layers must NOT use zoom — zoom shifts it down in Chromium. Widen + font-size only; top/left stay (92px/18px). */
body.owh-text-large:not(.owh-m) #layers{width:345px;font-size:15px;padding:14px 16px} /* ~300x1.15 */
body.owh-text-larger:not(.owh-m) #layers{width:390px;font-size:17px;padding:16px 18px} /* ~300x1.3 */
body.owh-text-large #layers{font-size:15px}
body.owh-text-larger #layers{font-size:17px}
body.owh-text-large #layers .hint{font-size:13.8px} body.owh-text-larger #layers .hint{font-size:15.6px}
body.owh-text-large #layers label small{font-size:12px} body.owh-text-larger #layers label small{font-size:13.6px}
body.owh-text-large #layers .theme-row .theme-seg button{font-size:12.6px} body.owh-text-larger #layers .theme-row .theme-seg button{font-size:14.3px}
body.owh-text-large #layers :is(select,input[type=text],input[type=search],button){font-size:inherit}
body.owh-text-larger #layers :is(select,input[type=text],input[type=search],button){font-size:inherit}
body.owh-text-large #layers .theme-row .theme-seg button{font-size:12.6px} body.owh-text-larger #layers .theme-row .theme-seg button{font-size:14.3px} /* after inherit rule so it wins */
.owh-fine-mag{float:right;font-size:10px;line-height:1;padding:1px 4px;margin:0 0 0 4px;border:1px solid var(--line);border-radius:6px;background:transparent;color:var(--muted);cursor:pointer}
.owh-fine-mag[hidden]{display:none}
.owh-fine-mag.on{color:var(--text);border-color:var(--accent)}
.owh-fine[data-fine-scale="1"]{font-size:1.25em!important;line-height:1.4}
.owh-fine[data-fine-scale="2"]{font-size:1.5em!important;line-height:1.45}

/* 20261104u: Friends & Family welcome modal (#ff-welcome) — same .modal/.acct-modal pattern as Join; above the gate-free UI. */
#ff-welcome{position:fixed;z-index:70}
#ff-welcome .ff-welcome-body{max-width:min(860px, calc(100vw - 40px));width:100%} /* tip-av Jon via EA + Manager — happy medium 860 between 760 (tip-al) and 960 (tip-aq); tip-aq tighter vertical rules kept */
#ff-welcome .modal-body{max-height:calc(100vh - 32px);overflow:auto} /* tip-aq: safety for very short screens only */
#ff-welcome .modal-body p{margin:4px 0 8px}
#ff-welcome .ff-welcome-sign{margin:10px 0 8px}
#ff-welcome .ff-welcome-sign p{margin:0}
#ff-welcome .ff-welcome-sig{display:block;height:52px;width:auto;max-width:100%;object-fit:contain;margin:4px 0 2px}
body.theme-light #ff-welcome .ff-welcome-sig{filter:invert(1) brightness(.15)}
#ff-welcome .ff-welcome-name{font-weight:700}
/* 20261104v (Jon t1770u): mailto CTA links styled like the modal buttons */
.acct-mail{display:block;box-sizing:border-box;text-align:center;text-decoration:none;margin-bottom:6px}

/* 20261104ac (Jon t1816u): Founder's message shares About & credits chrome (readable card on stars) */
#founder-msg-btn.top-credits,#credits-btn.top-credits{border:1px solid var(--line);color:var(--text);border-radius:10px;padding:7px 12px;font:inherit;font-size:13px;cursor:pointer}

/* 20261104aj (Jon via EA tip-aj): Founder title under welcome signature name */
#ff-welcome .ff-welcome-title{font-weight:500;opacity:.9;font-size:.95em;margin-top:2px}

/* 20261105cs tip-cs: reMember Assist cycle icon + Test Educational tools.
   Surgical overlay on tip-cq LIVE (base tip-ci style byte-identical). Cycle button matches .owh-mag (theme-row 🔍). AI-written by Grok Bot 2026-11-05 America/Toronto.
   Packaged tip-cs AWAIT GO. Source reports/ + README-MERGE-READY-remember-assist-cycle.md */
/* 20261105dd tip-edtools-tidy: Assist ON/OFF, tidy controls, quiz-over-card overlay */
.remember-assist-rail{display:flex;flex-direction:column;gap:0;margin-top:0;padding-top:0}
.remember-assist-rail .card-title.sec{margin-bottom:6px}
.remember-assist-rail .ra-power-row{margin:0 0 8px}
.remember-assist-rail .ra-power{
  display:flex;align-items:center;gap:10px;width:100%;
  font:inherit;color:inherit;background:rgba(255,255,255,.06);
  border:1px solid var(--line,#444);border-radius:10px;
  padding:8px 10px;cursor:pointer;text-align:left
}
.remember-assist-rail .ra-power:hover{background:rgba(255,255,255,.1)}
.remember-assist-rail .ra-power-lab{flex:1 1 auto;font-weight:600;font-size:13px}
.remember-assist-rail .ra-power-pill{
  position:relative;flex:0 0 auto;width:36px;height:20px;border-radius:999px;
  background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.22);
  transition:background .15s ease
}
.remember-assist-rail .ra-power[aria-checked="true"] .ra-power-pill{background:rgba(61,154,95,.55);border-color:rgba(61,154,95,.8)}
.remember-assist-rail .ra-power-knob{
  position:absolute;top:1px;left:1px;width:16px;height:16px;border-radius:50%;
  background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.35);transition:transform .15s ease
}
.remember-assist-rail .ra-power[aria-checked="true"] .ra-power-knob{transform:translateX(16px)}
.remember-assist-rail .ra-power-state{flex:0 0 auto;font-size:12px;opacity:.9;min-width:2.2em}
.remember-assist-rail .ra-assist-cycle-row{
  display:flex;flex-direction:column;gap:8px;margin:0 0 4px
}
.remember-assist-rail .ra-assist-cycle-row[data-assist-on="0"]{opacity:.45;pointer-events:none}
.remember-assist-rail .ra-ctrl{display:flex;align-items:center;gap:10px}
.remember-assist-rail .ra-assist-cycle.owh-mag,
.remember-assist-rail .ra-diff-cycle.owh-mag{
  flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;
  min-width:32px;height:28px;padding:2px 8px;line-height:1
}
.remember-assist-rail .ra-assist-cycle .ra-cards-ico,
.remember-assist-rail .ra-diff-cycle .ra-diff-ico{display:block}
.remember-assist-rail .ra-assist-hint,
.remember-assist-rail .ra-diff-hint{margin:0;line-height:1.35;opacity:.9;flex:1 1 auto;min-width:0}

/* Quiz overlay: opaque panel exactly over #tourbar; mask card body + blur/cover #panel */
.ra-modal{
  position:fixed;inset:0;z-index:70;display:block;padding:0;background:transparent;pointer-events:none
}
.ra-modal[hidden]{display:none!important}
.ra-modal-card{
  position:fixed;z-index:72;pointer-events:auto;
  box-sizing:border-box;min-width:260px;
  background:#0c0e12; /* opaque — no see-through of tour card answer text */
  border:1px solid rgba(255,255,255,.18);border-radius:12px;
  box-shadow:0 12px 40px rgba(0,0,0,.55);color:#eee;padding:14px 16px 12px;
  max-height:min(70vh,520px);overflow:auto;-webkit-overflow-scrolling:touch
}
body.theme-light .ra-modal-card{background:#ffffff;color:#1a1a1a;border-color:rgba(0,0,0,.12)}
.ra-modal-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}
.ra-modal-title{font-weight:650;font-size:14px;color:#ffb547}
.ra-modal-x{
  font:inherit;font-size:22px;line-height:1;font-weight:700;
  min-width:32px;height:32px;padding:0 6px;border-radius:8px;
  background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.22);
  color:inherit;cursor:pointer;opacity:1
}
.ra-modal-x:hover{background:rgba(255,255,255,.18)}
.ra-modal-x:focus-visible{outline:2px solid var(--accent,#ffb547);outline-offset:2px}
.ra-modal-q{margin:0 0 10px;font-size:14px;line-height:1.4}
.ra-modal-choices{display:flex;flex-direction:column;gap:6px;margin-bottom:8px}
.ra-choice{text-align:left;font:inherit;font-size:13px;color:inherit;background:rgba(255,255,255,.07);border:1px solid var(--line,#444);border-radius:10px;padding:8px 12px;cursor:pointer}
.ra-choice:hover:not(:disabled){background:rgba(255,255,255,.14)}
.ra-choice:disabled{cursor:default;opacity:.95}
.ra-choice.ra-ok{border-color:#3d9a5f;background:rgba(61,154,95,.22)}
.ra-choice.ra-bad{border-color:#c45c5c;background:rgba(196,92,92,.2)}
body.theme-light .ra-choice{background:rgba(0,0,0,.04)}
body.theme-light .ra-choice:hover:not(:disabled){background:rgba(0,0,0,.08)}
.ra-modal-fb{margin:0 0 8px;line-height:1.35}
.ra-modal-actions{display:flex;justify-content:flex-end}
.ra-modal-continue{font:inherit;font-size:13px;color:#0b1020;background:#ffb547;border:0;border-radius:10px;padding:7px 14px;cursor:pointer;font-weight:600}
.ra-modal-continue:hover{filter:brightness(1.05)}

/* Hide tour-card body from sight + a11y while quiz open; overlay sits on top */
body.ra-quiz-open #tourbar.ra-quiz-masked{
  pointer-events:none
}
body.ra-quiz-open #tourbar.ra-quiz-masked > *{
  visibility:hidden!important
}
/* Right detail panel can leak answers (e.g. event title) — blur + cover */
body.ra-quiz-open #panel.ra-quiz-panel-masked{
  filter:blur(6px);pointer-events:none;user-select:none
}
.ra-panel-cover{
  position:fixed;z-index:71;pointer-events:auto;
  background:rgba(8,10,14,.72);border-radius:10px
}
.ra-panel-cover[hidden]{display:none!important}
body.theme-light .ra-panel-cover{background:rgba(255,255,255,.72)}

@media (max-width:899.98px){
  .ra-modal-card{
    max-height:min(62vh,480px);
    border-radius:12px;
    padding-bottom:calc(12px + env(safe-area-inset-bottom))
  }
  .remember-assist-rail .ra-power{padding:7px 9px}
  .remember-assist-rail .ra-power-lab{font-size:12.5px}
}

/* 20261105dc tip-dc (city-card gallery soft-clear, Greyson/AI Images pack on tip-db): city-card hero photo (mirrors #panel-flagimg), gallery lightbox arrows, Explore Data at the bottom */
#panel-cityhero{margin:0 0 10px;padding:0}
#panel-cityhero[hidden]{display:none}
#panel-cityhero .ch-open{display:block;width:100%;padding:0;border:0;background:none;cursor:zoom-in;position:relative}
#panel-cityhero img{display:block;width:100%;height:200px;object-fit:cover;border-radius:3px;box-shadow:0 0 0 1px rgba(255,255,255,.18)}
#panel-cityhero .ch-count{position:absolute;right:6px;bottom:6px;font-size:11px;padding:2px 7px;border-radius:999px;background:rgba(10,15,32,.8);color:#e6ebf5}
#panel-cityhero figcaption{margin-top:3px;font-size:10.5px;opacity:.75;line-height:1.35}
#panel.hist-mode.city-mode #panel-explore{order:3;margin-top:12px}
#panel.hist-mode.city-mode #panel-actions{order:4}
.media-lb-stage{display:flex;align-items:center;justify-content:center;gap:14px;max-width:100%;max-height:100%}
.media-lb-stage>.media-lb-body{flex:0 1 auto;min-width:0}
.media-lb-nav{flex:none;width:48px;height:48px;border-radius:50%;border:1px solid rgba(255,255,255,.35);background:rgba(10,15,32,.82);color:#fff;font-size:30px;line-height:44px;padding:0;cursor:pointer}
.media-lb-nav:hover,.media-lb-nav:focus-visible{background:#1d2a52;border-color:#9cc8ff}
.media-lb-nav[hidden]{display:none}
.media-lb-cap .where{display:block;margin-top:3px;font-size:12px;color:#c9d0e4}
.media-lb-cap .lbcount{float:right;font-size:12px;color:var(--muted)}
body.theme-light .media-lb-nav{background:#fff;color:#1d2a52;border-color:#9aa6c3}
/* 20261105dd tip-edtools-tidy: no per-block magnifiers in the left rail — only #owh-textsize at top */
#layers > .owh-fine-mag,
#layers .owh-fine-mag{display:none!important}

/* --- edtools-followup Greyson deltas (hints/curricula/final) ---
 */
/* 20261105dh tip-edtools-tidy: Curricula disclosure (Join pattern; under Educational tools) */
.curr-strip{display:flex;flex-direction:column;gap:0;margin-top:8px;padding-top:8px;border-top:1px solid var(--line)}
.curr-strip .curr-toggle{
  display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;
  font:inherit;font-weight:700;font-size:12px;letter-spacing:.08em;text-transform:uppercase;
  color:var(--muted);background:transparent;border:0;padding:4px 0;cursor:pointer;text-align:left
}
.curr-strip .curr-toggle:hover{color:var(--text)}
.curr-strip .curr-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}
.curr-strip .curr-chev{font-size:11px;transition:transform .15s ease;color:var(--muted)}
.curr-strip .curr-toggle[aria-expanded="true"] .curr-chev{transform:rotate(90deg)}
.curr-strip .curr-body{display:flex;flex-direction:column;gap:0;padding:4px 0 2px}
.curr-strip .curr-body[hidden]{display:none!important}
.curr-strip #curr-full{display:block}


.remember-assist-rail .ra-ctrl{display:flex;align-items:center;gap:10px}
.remember-assist-rail .ra-assist-cycle.owh-mag,
.remember-assist-rail .ra-diff-cycle.owh-mag{
  flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;
  min-width:32px;height:28px;padding:2px 8px;line-height:1
}
.remember-assist-rail .ra-assist-cycle .ra-cards-ico,
.remember-assist-rail .ra-diff-cycle .ra-diff-ico{display:block}
.remember-assist-rail .ra-hint-stack{
  display:flex;flex-direction:column;justify-content:center;gap:2px;
  flex:1 1 auto;min-width:0;margin:0
}
.remember-assist-rail .ra-hint-line{margin:0;line-height:1.35;opacity:.9}
.remember-assist-rail .ra-hint-sub{opacity:.78}
.remember-assist-rail .ra-hint-sub[hidden]{display:none!important}
/* legacy single-node ids (fallback) */
.remember-assist-rail .ra-assist-hint,
.remember-assist-rail .ra-diff-hint{margin:0;line-height:1.35;opacity:.9;flex:1 1 auto;min-width:0}

/* Quiz overlay: opaque panel exactly over #tourbar; mask card body + blur/cover #panel */
.ra-modal{
  position:fixed;inset:0;z-index:70;display:block;padding:0;background:transparent;pointer-events:none
}
.ra-modal[hidden]{display:none!important}
.ra-modal-card{
  position:fixed;z-index:72;pointer-events:auto;
  box-sizing:border-box;min-width:260px;
  background:#0c0e12; /* opaque — no see-through of tour card answer text */
  border:1px solid rgba(255,255,255,.18);border-radius:12px;
  box-shadow:0 12px 40px rgba(0,0,0,.55);color:#eee;padding:14px 16px 12px;
  max-height:min(70vh,520px);overflow:auto;-webkit-overflow-scrolling:touch
}
body.theme-light .ra-modal-card{background:#ffffff;color:#1a1a1a;border-color:rgba(0,0,0,.12)}
.ra-modal-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}
.ra-modal-title{font-weight:650;font-size:14px;color:#ffb547}
.ra-modal-x{
  font:inherit;font-size:22px;line-height:1;font-weight:700;
  min-width:32px;height:32px;padding:0 6px;border-radius:8px;
  background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.22);
  color:inherit;cursor:pointer;opacity:1
}
.ra-modal-x:hover{background:rgba(255,255,255,.18)}
.ra-modal-x:focus-visible{outline:2px solid var(--accent,#ffb547);outline-offset:2px}
.ra-modal-q{margin:0 0 10px;font-size:14px;line-height:1.4}
.ra-modal-choices{display:flex;flex-direction:column;gap:6px;margin-bottom:8px}
.ra-choice{text-align:left;font:inherit;font-size:13px;color:inherit;background:rgba(255,255,255,.07);border:1px solid var(--line,#444);border-radius:10px;padding:8px 12px;cursor:pointer}
.ra-choice:hover:not(:disabled){background:rgba(255,255,255,.14)}
.ra-choice:disabled{cursor:default;opacity:.95}
.ra-choice.ra-ok{border-color:#3d9a5f;background:rgba(61,154,95,.22)}
.ra-choice.ra-bad{border-color:#c45c5c;background:rgba(196,92,92,.2)}
body.theme-light .ra-choice{background:rgba(0,0,0,.04)}
body.theme-light .ra-choice:hover:not(:disabled){background:rgba(0,0,0,.08)}
.ra-modal-fb{margin:0 0 8px;line-height:1.35}
.ra-modal-actions{display:flex;justify-content:flex-end}
.ra-modal-continue{font:inherit;font-size:13px;color:#0b1020;background:#ffb547;border:0;border-radius:10px;padding:7px 14px;cursor:pointer;font-weight:600}
.ra-modal-continue:hover{filter:brightness(1.05)}

/* Hide tour-card body from sight + a11y while quiz open; overlay sits on top */
body.ra-quiz-open #tourbar.ra-quiz-masked{
  pointer-events:none
}
body.ra-quiz-open #tourbar.ra-quiz-masked > *{
  visibility:hidden!important
}
/* Right detail panel can leak answers (e.g. event title) — blur + cover */
body.ra-quiz-open #panel.ra-quiz-panel-masked{
  filter:blur(6px);pointer-events:none;user-select:none
}
.ra-panel-cover{
  position:fixed;z-index:71;pointer-events:auto;
  background:rgba(8,10,14,.72);border-radius:10px
}
.ra-panel-cover[hidden]{display:none!important}
body.theme-light .ra-panel-cover{background:rgba(255,255,255,.72)}

@media (max-width:899.98px){
  .ra-modal-card{
    max-height:min(62vh,480px);
    border-radius:12px;
    padding-bottom:calc(12px + env(safe-area-inset-bottom))
  }
  .remember-assist-rail .ra-power{padding:7px 9px}
  .remember-assist-rail .ra-power-lab{font-size:12.5px}
}

/* 20261105dh tip-edtools-tidy: no per-block magnifiers in the left rail — only #owh-textsize at top */
#layers > .owh-fine-mag,
#layers .owh-fine-mag{display:none!important}


/* 20261105dh tip-edtools-tidy: Final test cycle row + tour-card Final test states */
.remember-assist-rail .ra-final-cycle.owh-mag{
  flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;
  min-width:32px;height:28px;padding:2px 8px;line-height:1
}
.remember-assist-rail .ra-final-cycle.ra-final-dim{opacity:.55}
.remember-assist-rail .ra-final-ico{display:block}

/* ra-final-none removed — no off state */
#ra-test-final.ra-final-early{
  /* Mid-tour: still opens confirm; look disabled (dim) — not strikethrough */
  opacity:.55;filter:saturate(.7);
  text-decoration:none;
}
#ra-test-final.ra-final-ready{
  opacity:1;text-decoration:none;color:#0b1020;background:#ffb547;border-color:#ffb547;font-weight:650
}
body.theme-light #ra-test-final.ra-final-ready{color:#0b1020}

.ra-final-confirm{
  /* 20261106 tip-data-rail: overlay matches #tourbar; flex-centres the dialog (desktop + mobile). */
  position:fixed;z-index:74;display:flex;align-items:center;justify-content:center;
  padding:12px;box-sizing:border-box;background:transparent;pointer-events:none
}
.ra-final-confirm[hidden]{display:none!important}
.ra-final-confirm-card{
  position:relative;z-index:75;pointer-events:auto;box-sizing:border-box;
  background:#0c0e12;border:1px solid rgba(255,255,255,.18);border-radius:12px;
  box-shadow:0 12px 40px rgba(0,0,0,.55);color:#eee;padding:14px 16px 12px;
  max-width:min(360px,100%);width:100%;margin:0
}
body.theme-light .ra-final-confirm-card{background:#fff;color:#1a1a1a;border-color:rgba(0,0,0,.12)}
.ra-final-confirm-h{margin:0 0 12px;font-size:14px;line-height:1.4}
.ra-final-confirm-actions{display:flex;justify-content:flex-end;gap:8px}
.ra-final-confirm-no,.ra-final-confirm-yes{
  font:inherit;font-size:13px;border-radius:10px;padding:7px 14px;cursor:pointer;border:1px solid var(--line,#444)
}
body.owh-m .ra-final-confirm-no,body.owh-m .ra-final-confirm-yes{min-height:44px;min-width:44px;padding:10px 16px}

.ra-final-confirm-no{background:rgba(255,255,255,.07);color:inherit}
.ra-final-confirm-yes{background:#ffb547;border-color:#ffb547;color:#0b1020;font-weight:600}
.ra-final-confirm-no:hover,.ra-final-confirm-yes:hover{filter:brightness(1.05)}

.ra-short-wrap{display:flex;flex-direction:column;gap:8px}
.ra-short-input{
  width:100%;box-sizing:border-box;font:inherit;font-size:13px;color:inherit;
  background:rgba(255,255,255,.07);border:1px solid var(--line,#444);border-radius:10px;padding:8px 12px
}
.ra-short-input.ra-ok{border-color:#3d9a5f;background:rgba(61,154,95,.18)}
.ra-short-input.ra-bad{border-color:#c45c5c;background:rgba(196,92,92,.16)}
body.theme-light .ra-short-input{background:rgba(0,0,0,.04)}

.ra-review{display:flex;flex-direction:column;gap:8px;margin:4px 0 8px;max-height:min(42vh,320px);overflow:auto}
.ra-review-row{padding:8px 10px;border-radius:10px;border:1px solid rgba(255,255,255,.12);font-size:12.5px;line-height:1.35}
.ra-review-ok{background:rgba(61,154,95,.14);border-color:rgba(61,154,95,.45)}
.ra-review-bad{background:rgba(196,92,92,.12);border-color:rgba(196,92,92,.4)}
.ra-review-q{margin-bottom:4px}
.ra-review-a{opacity:.92}



/* 20261105dh tip-edtools-followup: left-rail Join-style section disclosures (collapsed by default) */
.rail-sec{display:flex;flex-direction:column;gap:0;margin-top:6px;padding-top:6px;border-top:1px solid var(--line)}
.rail-sec:first-of-type,.rail-sec#rail-layers{margin-top:8px}
.rail-sec-tog{
  display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;
  font:inherit;font-weight:700;font-size:12px;letter-spacing:.08em;text-transform:uppercase;
  color:var(--muted);background:transparent;border:0;padding:4px 0;cursor:pointer;text-align:left
}
.rail-sec-tog:hover{color:var(--text)}
.rail-sec-tog:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}
.rail-sec-chev{font-size:11px;transition:transform .15s ease;color:var(--muted)}
.rail-sec-tog[aria-expanded="true"] .rail-sec-chev{transform:rotate(90deg)}
.rail-sec-body{display:flex;flex-direction:column;gap:0;padding:4px 0 2px}
.rail-sec-body[hidden]{display:none!important}
/* Join / Curricula already have strip styles; keep chevron animation via rail-sec-tog */
.acct-strip.rail-sec{margin-top:8px;padding-top:8px}
.curr-strip.rail-sec{margin-top:8px;padding-top:8px}

/* 20261106 tip-data-rail: Voice on FC row; nav Back | Start/Pause narration | Autoplay slides+Next */
.tour-flag-row{
  display:flex;align-items:flex-start;justify-content:space-between;gap:8px 10px;
  margin-top:6px;flex-wrap:nowrap
}
.tour-flag-row .tour-flag{
  margin:0;flex:1 1 auto;min-width:0;
  display:flex;flex-wrap:wrap;align-items:center;gap:6px
}
.tour-flag-row .tour-voice,
.tour-flag-row .voice{
  display:inline-flex;align-items:center;gap:5px;margin:0;color:var(--muted);font-size:11.5px;
  flex:0 0 auto
}
.tour-flag-row .voice[hidden]{display:none!important}
.tour-flag-row .tour-voice-lab{color:var(--muted);font-size:11.5px}
.tour-flag-row .voice select{
  -webkit-appearance:none;appearance:none;
  background-color:rgba(255,255,255,.07);background-image:none;
  border:1px solid rgba(255,255,255,.22);color:var(--text);
  border-radius:6px;padding:1px 22px 1px 8px;font:inherit;font-size:11.5px;
  max-width:min(160px,42vw);line-height:1.2;height:auto;min-height:0;
  color-scheme:dark;cursor:pointer
}
.tour-flag-row .voice select option{background:#0b1020;color:var(--text)}
body.theme-light .tour-flag-row .voice select{
  background-color:rgba(30,45,90,.06);border-color:rgba(40,52,90,.25);color-scheme:light
}
body.theme-light .tour-flag-row .voice select option{background:#fffdf6;color:var(--text)}

.tour-ctl{display:flex;gap:8px;align-items:center;margin-top:8px;flex-wrap:wrap}
.tour-ctl .tour-nav{
  display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:8px;
  width:100%;flex:1 1 100%
}
.tour-ctl .tour-nav #tour-prev{justify-self:start}
.tour-ctl .tour-play-group{display:inline-flex;align-items:center;justify-content:center;gap:8px;justify-self:center;min-width:0}
.tour-ctl .tour-nav #tour-narr-play{justify-self:center}
.tour-ctl .tour-nav-end{display:inline-flex;align-items:center;gap:8px;justify-self:end}
.tour-ctl #tour-play{min-height:32px}
.tour-ctl .tour-narr-play{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  box-sizing:border-box;white-space:nowrap;
  width:auto;min-width:0;min-height:32px;padding:6px 12px;
  background:rgba(255,255,255,.07);border:1px solid var(--line);color:var(--text);
  border-radius:10px;cursor:pointer;line-height:1.2;font:inherit;font-size:13px
}
.tour-ctl .tour-narr-play:disabled{opacity:.4;cursor:default}
.tour-ctl .tour-narr-play[aria-pressed="true"]{background:rgba(62,199,184,.22);border-color:rgba(62,199,184,.5)}
.tour-ctl .tour-nav-end #tour-play{min-height:32px}
@media (max-width:520px){
  .tour-flag-row{gap:6px;flex-wrap:wrap}
  .tour-ctl .tour-nav{grid-template-columns:1fr;gap:6px}
  .tour-ctl .tour-nav #tour-prev,.tour-ctl .tour-play-group,.tour-ctl .tour-nav-end{justify-self:stretch}
  .tour-ctl .tour-play-group{display:flex;width:100%}
  .tour-ctl .tour-play-group > button{flex:1 1 0}
  .tour-ctl .tour-nav-end{display:flex;width:100%}
  .tour-ctl .tour-nav-end #tour-next{flex:1 1 0}
  .tour-ctl .tour-narr-play{min-height:30px;padding:5px 9px;font-size:12.5px}
}

/* 20261106 tip-data-rail: desktop left-rail tuck during tour (~250ms) + pull tab */
body:not(.owh-m) #layers{
  left:18px;
  transition:left .25s ease
}
body.tour-rail-stowed:not(.owh-m) #layers{
  left:-340px; /* width 300 + gutter; panel fully off-screen */
  pointer-events:none
}
body.owh-text-large.tour-rail-stowed:not(.owh-m) #layers{left:-385px}
body.owh-text-larger.tour-rail-stowed:not(.owh-m) #layers{left:-430px}
.rail-pull{
  position:fixed;left:0;top:104px;z-index:6;
  width:18px;height:auto;padding:4px 0 5px;margin:0;
  display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:1px;
  border:1px solid var(--line);border-left:0;border-radius:0 8px 8px 0;
  background:var(--card,#0c0e12);color:var(--accent,#ffb547);
  box-shadow:0 4px 14px rgba(0,0,0,.4);cursor:pointer;font:inherit;
  line-height:1;user-select:none;-webkit-user-select:none
}
.rail-pull[hidden]{display:none!important}
.rail-pull:hover{filter:brightness(1.08)}
.rail-pull:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.rail-pull-chev,.rail-pull-word,.rail-pull-word span{pointer-events:none}
.rail-pull-chev{font-size:15px;line-height:1;font-weight:700}
.rail-pull-word{
  display:flex;flex-direction:column;align-items:center;gap:1px;
  color:var(--text);font-size:10px;font-weight:800;line-height:1;letter-spacing:0
}
.rail-pull-word span{display:block;text-align:center}
body.owh-m .rail-pull{display:none!important}
body.theme-light .rail-pull{background:#fffdf6;color:var(--accent)}


/* 20261106 tip-data-rail: Data section matches Histories search/select; compare legend + end labels */
.data-search .hs-list{margin-left:76px;max-height:140px;overflow:auto}
#data-cats.curr-pick{display:flex;flex-direction:column;gap:5px;margin:2px 0 6px}
/* Longer Data labels (Conflicts and wars) need a bit more than Histories' 68px */
#data-cats label.sel{display:grid;grid-template-columns:minmax(68px,110px) 1fr;align-items:center;gap:8px;padding:0;cursor:default}
#data-rail-note{margin:8px 0 0;color:var(--muted)}
.rc-end-lab{font-size:11px;font-weight:600;paint-order:stroke fill;stroke:#0b1020;stroke-width:3.5px;stroke-linejoin:round;dominant-baseline:middle}
.rc-svg{overflow:visible}
.rc-cmp-leg{display:flex;flex-wrap:wrap;gap:10px 16px;margin:0 0 6px;font-size:12.5px;align-items:center;color:#c9d0e4}
.rc-cmp-leg i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:4px;vertical-align:-1px}
.rc-cmp-leg-line{display:inline-block;width:16px;height:0;border-top-width:2px;border-top-style:solid;margin-right:6px;vertical-align:middle}
.rc-line.rc-s0,.rc-line.rc-s1,.rc-line.rc-s2,.rc-line.rc-s3{fill:none;stroke-width:2.2;stroke-linejoin:round}
/* Compare-to: dark styled select (not native white) */
.cs-compare select{
  -webkit-appearance:none;appearance:none;color-scheme:dark;
  font:inherit;font-size:12.5px;color:#e8ecf6;
  background-color:#0b1020;
  background-image:linear-gradient(45deg,transparent 50%,#9aa6c3 50%),linear-gradient(135deg,#9aa6c3 50%,transparent 50%);
  background-position:calc(100% - 12px) 52%,calc(100% - 7px) 52%;background-size:5px 5px;background-repeat:no-repeat;
  border:1px solid var(--line);border-radius:8px;padding:4px 26px 4px 8px;max-width:min(220px,70vw);cursor:pointer
}
.cs-compare select option{background:#0b1020;color:#e8ecf6}
body.theme-light .cs-compare select{color-scheme:light;background-color:#fffdf6;color:var(--text);
  background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%)}
body.theme-light .cs-compare select option{background:#fffdf6;color:var(--text)}

/* 20261106 tip-data-rail: Educational tools cycle hit targets — whole .ra-ctrl row; icons ignore pointers */
.remember-assist-rail .ra-ctrl{cursor:pointer;user-select:none;-webkit-user-select:none}
.remember-assist-rail .ra-ctrl .ra-cards-ico,
.remember-assist-rail .ra-ctrl .ra-diff-ico,
.remember-assist-rail .ra-ctrl .ra-final-ico,
.remember-assist-rail .ra-ctrl svg{pointer-events:none}
.remember-assist-rail .ra-assist-cycle.owh-mag,
.remember-assist-rail .ra-diff-cycle.owh-mag,
.remember-assist-rail .ra-final-cycle.owh-mag{position:relative;z-index:1}

/* 20261106 tip-histories-worldwide: Layers national/subnational locked during deep-time tours */
label.deep-time-locked{opacity:.55;cursor:not-allowed}
label.deep-time-locked input{cursor:not-allowed}

/* HIST4 draft: a visible evidence-limit notice and the existing tour's chapter menu. */
.tour-review-notice{border:2px solid #f2cf77;border-radius:8px;padding:10px;margin:8px 0;background:#282415;color:#fff1c8}
.tour-review-notice p{margin:6px 0;line-height:1.45}
.tour-review-notice button{padding:6px 10px;color:inherit;border:1px solid currentColor;border-radius:5px;background:transparent;cursor:pointer}
body.theme-light .tour-review-notice{background:#fff7da;color:#453412;border-color:#88620e}
#tour-course-outline{margin:8px 0;border:1px solid #8794ad;border-radius:6px;padding:7px}
#tour-course-outline summary{cursor:pointer;font-weight:600}
#tour-course-parts{max-height:30vh;overflow:auto}
#tour-course-parts h4{margin:8px 0 4px}
#tour-course-parts button{display:block;text-align:left;width:100%;padding:7px;margin:3px 0;color:inherit;background:transparent;border:1px solid #8794ad;border-radius:4px;cursor:pointer}
#tour-course-parts button[aria-current=step]{border-width:2px;font-weight:700}
/* 20261106 tip-site-tour: How it works coach-mark walkthrough (src/site-tour.js + data/site-tour.json).
   Uses theme CSS vars so Light/Dark and accent stay in sync; CVD does not recolour chrome. */
.site-tour-entry{margin:8px 0 4px;padding-top:6px;border-top:1px solid var(--line)}
@media (min-width:900px){
  /* Divider under How it works. Same 1px var(--line) rule as .rail-sec and #layers .hint. */
  #layers > .site-tour-entry{margin:0 0 8px;padding:0 0 8px;border-top:0;border-bottom:1px solid var(--line)}
}
button.site-tour-open{
  display:inline-flex;align-items:center;gap:6px;width:100%;justify-content:center;
  background:rgba(255,255,255,.18);border:1px solid rgba(232,236,246,.55);color:var(--text);
  border-radius:10px;padding:7px 12px;font:inherit;font-size:13px;line-height:1.25;cursor:pointer;
  white-space:normal;text-align:center;
}
button.site-tour-open:hover{background:rgba(255,255,255,.26)}
button.site-tour-open:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
body.theme-light button.site-tour-open{background:rgba(29,38,56,.14);border-color:rgba(29,38,56,.45);color:var(--text)}
body.theme-light button.site-tour-open:hover{background:rgba(29,38,56,.22)}
body.owh-m button.site-tour-open{font-weight:600}

.ow-site-tour{position:fixed;inset:0;z-index:40;pointer-events:none}
.ow-site-tour[hidden]{display:none!important}
.ow-st-backdrop{position:absolute;inset:0;background:rgba(4,8,18,.55);pointer-events:auto}
body.theme-light .ow-st-backdrop{background:rgba(20,28,48,.42)}
.ow-st-hole{
  position:absolute;border-radius:12px;box-shadow:0 0 0 9999px rgba(4,8,18,.55);
  border:2px solid var(--accent);pointer-events:none;
}
body.theme-light .ow-st-hole{box-shadow:0 0 0 9999px rgba(20,28,48,.42)}
.ow-st-card{
  position:absolute;z-index:2;pointer-events:auto;width:min(340px,calc(100vw - 24px));
  padding:14px 16px 12px;background:var(--card);color:var(--text);border:1px solid var(--line);
  box-shadow:0 12px 36px rgba(0,0,0,.45);
}
body.theme-light .ow-st-card{box-shadow:0 12px 28px rgba(40,60,100,.22)}
.ow-st-kicker{font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);margin-bottom:4px}
.ow-st-title{margin:0 0 6px;font-size:16px;font-weight:700;line-height:1.25;color:var(--text)}
.ow-st-body{margin:0 0 12px;font-size:13.5px;line-height:1.45;color:var(--text)}
.ow-st-actions{display:flex;align-items:center;gap:8px}
.ow-st-spacer{flex:1}
.ow-st-actions button{
  background:rgba(255,255,255,.07);border:1px solid var(--line);color:var(--text);
  border-radius:10px;padding:7px 12px;font:inherit;font-size:13px;cursor:pointer;
}
.ow-st-actions button:hover{background:rgba(255,255,255,.14)}
.ow-st-actions button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.ow-st-actions button:disabled{opacity:.4;cursor:default}
.ow-st-actions .ow-st-next{background:rgba(255,181,71,.18);border-color:var(--accent);color:var(--text);font-weight:600}
.ow-st-actions .ow-st-skip{color:var(--muted)}
body.theme-light .ow-st-actions button{background:rgba(40,60,100,.06)}
body.owh-m .ow-st-title{font-size:17px}
body.owh-m .ow-st-actions button{font-weight:600}
/* Demo tour card during coach-mark: keep above dim but under the coach card */
#tourbar.ow-st-demo{z-index:35!important}
body.ow-site-tour-on #credits-btn.top-credits,
body.ow-site-tour-on #founder-msg-btn.top-credits{pointer-events:none}
/* tip-mobile-layout: phone keeps 4 equal tour-nav columns (do not stack at 520px) */
@media (max-width:899.98px){
  body.owh-m .tour-ctl .tour-nav{grid-template-columns:repeat(4,minmax(0,1fr)) !important;gap:8px !important}
  body.owh-m .tour-ctl .tour-play-group,body.owh-m .tour-ctl .tour-nav-end{display:contents !important;width:auto}
  body.owh-m .tour-ctl .tour-play-group > button,body.owh-m .tour-ctl .tour-nav-end #tour-next{flex:none;width:100%}
  body.owh-m .tour-ctl .tour-narr-play{min-height:44px;padding:6px 4px;font-size:12px}
}
/* ===== 20261106 tip-mobile-layout rev2 (phones ~360–430px; desktop ≥900px unchanged).
   Two-row chrome; menu drawer; Layers/Data/Histories bottom sheets; tour nav 4 equal
   buttons with short labels; info peek during tours (one large sheet at a time);
   Globe in panel handle row; compressed timebar (globe ≥~55% cold start); ⓘ credits.
   JS: src/mobile-ui.js. AI-written by Grok Bot 2026-11-06 America/Toronto. ===== */
#owh-m-top,#owh-m-edge,#owh-m-ptab,#owh-m-tabs,#owh-m-setx,#owh-m-globe,#owh-m-pfoot,#owh-m-phead,#owh-m-sheet-head,#owh-m-backdrop,#owh-m-tb-info,#owh-m-tb-pop{display:none}

@media (max-width:899.98px){
  html,body{overflow:hidden;overscroll-behavior:none}
  html{height:100%;height:100dvh}
  body{position:fixed;inset:0;width:100%;max-width:100%;height:100%;height:100dvh;overflow:clip}
  body.owh-m #panel:not(.open){visibility:hidden;pointer-events:none}
  #panel:not(.open){visibility:hidden;transition:transform .35s ease,visibility 0s linear .35s}

  /* ---- Compressed timeline (globe ≥~55% cold start) ---- */
  body.owh-m #timebar{position:fixed;left:0;right:0;bottom:0;top:auto;height:auto;z-index:6;
    padding:4px calc(8px + env(safe-area-inset-right)) calc(12px + env(safe-area-inset-bottom)) calc(8px + env(safe-area-inset-left));
    background:rgba(8,12,26,.97);border-top:1px solid var(--line);box-sizing:border-box}
  body.owh-m.theme-light #timebar{background:rgba(255,250,236,.98)}
  /* Hide verbose credits/caption — reachable via ⓘ */
  body.owh-m #map-status{display:none !important}
  body.owh-m #era-note{display:none !important}
  body.owh-m #basemap-more.era-more{display:inline-flex;flex:0 0 auto;order:8;font-size:11px;padding:2px 6px}
  body.owh-m #support-line{display:none !important}
  body.owh-m #year-row{margin-top:0;gap:4px 6px;flex-wrap:nowrap;align-items:center;min-height:40px}
  body.owh-m #year{font-size:18px;letter-spacing:0;min-height:40px;min-width:0;display:inline-flex;align-items:center;font-weight:700}
  body.owh-m #year.tl-date{font-size:14px}
  body.owh-m #play{width:44px;height:44px;min-width:44px;min-height:44px;flex:0 0 auto}
  body.owh-m #tl-rew{margin-right:0;flex:0 0 auto}
  body.owh-m #tl-rew button{min-height:44px;min-width:40px;padding:4px 8px;font-size:14px}
  body.owh-m #tl-ctl{margin-left:auto;font-size:11px;flex:0 1 auto;display:inline-flex;align-items:center;gap:4px;min-width:0;flex-wrap:nowrap}
  body.owh-m #tl-ctl button{min-height:36px;min-width:36px;padding:4px 8px}
  body.owh-m #tl-range{display:none} /* range lives in Zoom button / ⓘ */
  body.owh-m #tl-zoom{font-size:11px;padding:4px 8px;min-height:32px;white-space:nowrap;max-width:42vw;overflow:hidden;text-overflow:ellipsis}
  body.owh-m #owh-m-tb-info{display:inline-grid;place-items:center;flex:0 0 auto;width:36px;height:36px;min-width:36px;border:1px solid var(--line);border-radius:999px;background:rgba(255,255,255,.07);color:var(--text);font:inherit;font-size:15px;cursor:pointer;padding:0}
  body.owh-m #owh-m-tb-info[aria-expanded=true]{border-color:var(--accent);background:rgba(255,181,71,.18)}
  body.owh-m #owh-m-tb-pop{display:block;position:absolute;left:8px;right:8px;bottom:calc(100% + 6px);z-index:8;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:var(--owh-m-solid,#0e1426);box-shadow:0 8px 28px rgba(0,0,0,.45);max-height:40vh;overflow:auto;font-size:12px;line-height:1.4}
  body.owh-m #owh-m-tb-pop[hidden]{display:none !important}
  body.owh-m .owh-m-tb-pop-x{position:absolute;right:6px;top:4px;border:0;background:none;color:var(--muted);font-size:22px;cursor:pointer;line-height:1}
  body.owh-m .owh-m-tb-cred{padding-right:24px}
  body.owh-m .owh-m-tb-era{margin:8px 0 0;color:var(--muted)}
  body.owh-m #track-wrap{margin-top:10px;height:48px}
  body.owh-m .tick{width:8px;height:8px;margin-left:-4px}
  body.owh-m .tl-evstrip{height:18px}
  body.owh-m #scale{font-size:9px;white-space:nowrap}
  body.owh-m #scale span.owh-m-hide{visibility:hidden}
  body.owh-m #year-jump{left:calc(8px + env(safe-area-inset-left));right:calc(8px + env(safe-area-inset-right));width:auto;max-width:none;
    bottom:calc(var(--owh-m-tb-h,72px) + 6px);z-index:10;box-sizing:border-box}
  body.owh-m #year-jump .yj-row{display:flex;flex-wrap:wrap;gap:8px;align-items:stretch}
  body.owh-m #year-jump #yj-year,body.owh-m #year-jump #yj-day,body.owh-m #year-jump #yj-month,
  body.owh-m #year-jump .yj-go,body.owh-m #year-jump .yj-era button{min-height:44px;font-size:15px}
  body.owh-m #year-jump #yj-year{flex:1 1 72px;min-width:72px}
  body.owh-m #year-jump #yj-month{flex:1 1 96px}
  body.owh-m #year-jump #yj-day{flex:0 1 64px;min-width:56px}
  body.owh-m #year-jump .yj-lbl{display:block;margin-bottom:6px;font-weight:700}

  /* Globe between top chrome and compact timebar */
  body.owh-m #globe{top:var(--owh-m-top-h,88px);bottom:var(--owh-m-tb-h,72px);left:0;right:0}
  /* Keep Cesium ion logo/credit (required); hide redundant text line that duplicates map-status */
  body.owh-m .cesium-viewer-bottom{bottom:2px !important;left:6px !important;transform:scale(.7);transform-origin:bottom left;max-width:40vw;max-height:28px;overflow:hidden}
  body.owh-m .cesium-viewer-bottom .cesium-credit-textContainer,
  body.owh-m .cesium-viewer-bottom .cesium-credit-text,
  body.owh-m .cesium-viewer-bottom .cesium-credit-expand-link{display:none !important} /* text dupes ⓘ; keep ion logo */
  body.owh-m #course-black,body.owh-m #compare-black{top:var(--owh-m-top-h,88px);bottom:var(--owh-m-tb-h,72px)}

  /* Two-row top chrome */
  body.owh-m #brand{display:none}
  body.owh-m #credits-btn.top-credits,body.owh-m #founder-msg-btn.top-credits{display:none}
  body.owh-m #owh-m-top{display:flex;flex-direction:column;gap:4px;position:fixed;top:0;left:0;right:0;z-index:9;box-sizing:border-box;
    padding:calc(6px + env(safe-area-inset-top)) calc(8px + env(safe-area-inset-right)) 6px calc(8px + env(safe-area-inset-left));
    background:var(--card);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);box-shadow:0 4px 18px rgba(0,0,0,.35);
    transition:transform .3s ease,opacity .3s ease}
  body.owh-m .owh-m-row1{display:flex;align-items:center;gap:8px;min-height:40px}
  body.owh-m .owh-m-brand{flex:1 1 auto;min-width:0;background:none;border:0;color:var(--text);font:inherit;font-weight:800;font-size:15px;padding:4px 2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  body.owh-m .owh-m-brand::before{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--accent);margin-right:6px;vertical-align:middle;box-shadow:0 0 10px var(--accent)}
  body.owh-m .owh-m-row1-right{margin-left:auto;display:flex;align-items:center;gap:8px;flex:0 0 auto}
  body.owh-m .owh-m-b{flex:0 0 auto;background:rgba(255,255,255,.07);border:1px solid var(--line);color:var(--text);border-radius:999px;padding:8px 12px;font:inherit;font-size:13px;font-weight:600;white-space:nowrap;cursor:pointer;min-height:44px;box-sizing:border-box}
  body.owh-m .owh-m-b[aria-expanded=true],body.owh-m .owh-m-chip.on{background:rgba(255,181,71,.22);border-color:var(--accent)}
  body.owh-m .owh-m-b.owh-m-ic{width:44px;height:44px;padding:0;border-radius:50%;font-size:18px;line-height:1;display:grid;place-items:center}
  body.owh-m .owh-m-signin{padding:8px 14px}
  body.owh-m.theme-light .owh-m-b{background-color:rgba(30,45,90,.06)}
  body.owh-m .owh-m-row2{display:flex;align-items:center;gap:6px;min-height:40px}
  body.owh-m .owh-m-chip{flex:1 1 0;min-width:0;min-height:44px;padding:10px 6px;border:1px solid var(--line);border-radius:10px;background:rgba(255,255,255,.05);color:var(--text);font:inherit;font-size:13px;font-weight:600;cursor:pointer;white-space:nowrap}
  body.owh-m.theme-light .owh-m-chip{background:rgba(30,45,90,.06)}
  body.owh-m{--owh-m-solid:#0e1426} body.owh-m.theme-light{--owh-m-solid:#fffdf6}

  /* Backdrop */
  body.owh-m #owh-m-backdrop{display:block;position:fixed;inset:0;z-index:7;background:rgba(4,8,18,.35);opacity:0;pointer-events:none;transition:opacity .2s ease}
  body.owh-m.owh-m-sheet #owh-m-backdrop{opacity:1;pointer-events:auto}
  body.owh-m.theme-light #owh-m-backdrop{background:rgba(20,28,48,.28)}

  /* #layers bottom sheet / menu drawer */
  body.owh-m #layers{position:fixed;left:0;right:0;width:auto;min-width:0;max-width:none;box-sizing:border-box;
    top:auto;bottom:var(--owh-m-tb-h,72px);max-height:min(52vh,calc(100% - var(--owh-m-top-h,88px) - var(--owh-m-tb-h,72px) - 12px));
    overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;z-index:8;
    opacity:0;visibility:hidden;transform:translateY(110%);pointer-events:none;
    border-radius:16px 16px 0 0;padding:0 14px 14px;margin:0;
    transition:opacity .22s ease,transform .28s ease,visibility 0s linear .28s}
  body.owh-m.owh-m-sheet.owh-m-bs #layers{opacity:1;visibility:visible;transform:none;pointer-events:auto;transition:opacity .22s ease,transform .28s ease}
  body.owh-m.owh-m-sheet.owh-m-drawer #layers{
    top:var(--owh-m-top-h,88px);bottom:var(--owh-m-tb-h,72px);left:auto;right:0;
    width:min(320px,86vw);max-height:none;border-radius:16px 0 0 16px;
    transform:none;padding:0 14px 14px;opacity:1;visibility:visible;pointer-events:auto;
    transition:opacity .22s ease,transform .28s ease}
  body.owh-m #owh-m-sheet-head{display:flex;align-items:center;gap:8px;position:sticky;top:0;z-index:2;margin:0 -14px 8px;padding:10px 14px 8px;background:var(--owh-m-solid,#0e1426);border-bottom:1px solid var(--line)}
  body.owh-m .owh-m-handle{width:40px;height:4px;border-radius:4px;background:rgba(255,255,255,.28);margin:0 auto;flex:0 0 auto}
  body.owh-m #owh-m-sheet-head .owh-m-handle{position:absolute;left:50%;top:6px;transform:translateX(-50%);margin:0}
  body.owh-m .owh-m-sheet-title{flex:1 1 auto;font-weight:800;font-size:14px;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);padding-top:8px}
  body.owh-m .owh-m-sheet-x{flex:0 0 auto;width:44px;height:44px;border:1px solid var(--line);border-radius:10px;background:rgba(255,255,255,.06);color:var(--text);font:inherit;font-size:22px;line-height:1;cursor:pointer}
  body.owh-m.theme-light .owh-m-sheet-x{background:rgba(30,45,90,.06)}
  body.owh-m #layers[data-owh-tab=layers]>[data-owh-grp]:not([data-owh-grp=layers]),
  body.owh-m #layers[data-owh-tab=data]>[data-owh-grp]:not([data-owh-grp=data]),
  body.owh-m #layers[data-owh-tab=histories]>[data-owh-grp]:not([data-owh-grp=histories]),
  body.owh-m #layers[data-owh-tab=menu]>[data-owh-grp]:not([data-owh-grp=menu]){display:none !important}
  body.owh-m #layers[data-owh-tab=histories]>.card-title.sec[data-owh-grp=histories]{display:none}
  body.owh-m #owh-m-setx{display:flex;flex-direction:column;gap:6px;margin:10px 0 4px}
  body.owh-m .owh-m-xb{text-align:left;padding:12px 12px;min-height:44px;border:1px solid var(--line);border-radius:10px;background:rgba(255,255,255,.05);color:var(--text);font:inherit;font-size:14px;cursor:pointer}
  body.owh-m.theme-light .owh-m-xb{background:rgba(30,45,90,.06)}
  body.owh-m.owh-m-bs #layers .rail-sec-tog{pointer-events:none}
  body.owh-m.owh-m-bs #layers .rail-sec-chev{display:none}

  /* ---- Info card: bottom sheet; during tour = peek strip ---- */
  body.owh-m #panel{position:fixed;top:auto;right:0;left:0;bottom:var(--owh-m-tb-h,72px);width:auto;max-width:none;
    max-height:min(50vh,calc(100% - var(--owh-m-top-h,88px) - var(--owh-m-tb-h,72px) - 8px));
    border-radius:16px 16px 0 0;border-right:0;padding:0 16px 14px;z-index:7;box-sizing:border-box;
    overflow:auto;overscroll-behavior:contain;transition:max-height .28s ease,transform .28s ease}
  body.owh-m #panel:not(.open){transform:translateY(110%)}
  body.owh-m #panel h2{font-size:20px}
  body.owh-m #panel-date{font-size:24px}
  body.owh-m #owh-m-phead{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:8px;position:sticky;top:0;z-index:3;margin:0 -16px 8px;padding:10px 12px 12px;background:var(--owh-m-solid,#0e1426);border-bottom:1px solid var(--line);min-height:48px;box-sizing:border-box}
  body.owh-m #owh-m-phead .owh-m-panel-handle{margin:0;flex:0 0 auto;grid-column:1;justify-self:center}
  body.owh-m .owh-m-peek-title{grid-column:2;justify-self:end;max-width:42vw;font-size:13px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--text);opacity:0;pointer-events:none}
  /* Globe lives in #owh-m-phead grid (right). Kill Option A fixed mid-left float
     (body.owh-m.owh-m-panel… #owh-m-globe{position:fixed;left:…;top:50%}) which, inside
     #panel's backdrop-filter containing block, parked ‹ Globe over the peek handle. */
  body.owh-m #owh-m-globe,
  body.owh-m.owh-m-panel:not(.fc-open):not(.compare-mode):not(.arsenal-mode):not(.course-player) #owh-m-globe{
    display:inline-flex;align-items:center;justify-content:center;grid-column:3;justify-self:end;
    position:static;left:auto;top:auto;width:auto;flex:0 0 auto;min-height:36px;padding:6px 10px;
    border:1px solid var(--accent);border-radius:999px;background:var(--card);color:var(--text);
    font:inherit;font-size:12px;font-weight:700;white-space:nowrap;cursor:pointer;box-shadow:none;z-index:auto}
  /* Peek during tour: title-only strip */
  body.owh-m.owh-m-peek #panel.open{
    max-height:52px;overflow:hidden;padding-bottom:0;z-index:8;
  }
  body.owh-m.owh-m-peek #owh-m-phead{border-bottom-color:var(--line)}
  body.owh-m.owh-m-peek .owh-m-peek-title{opacity:1;pointer-events:auto;max-width:48vw}
  body.owh-m.owh-m-peek #owh-m-phead{grid-template-columns:auto 1fr auto}
  body.owh-m.owh-m-peek #owh-m-phead .owh-m-panel-handle{grid-column:1;justify-self:start}
  body.owh-m.owh-m-peek .owh-m-peek-title{grid-column:2;justify-self:start}
  body.owh-m.owh-m-peek #owh-m-globe,
  body.owh-m.owh-m-panel-expand #owh-m-globe{
    grid-column:3;justify-self:end;position:static;left:auto;top:auto;width:auto}
  body.owh-m.owh-m-peek #panel.open > *:not(#owh-m-phead){visibility:hidden;height:0;overflow:hidden;margin:0;padding:0;border:0}
  body.owh-m.owh-m-peek #owh-m-pfoot{display:none}
  /* Expanded info during tour: full sheet; tour card minimized */
  body.owh-m.owh-m-panel-expand #panel.open{max-height:min(52vh,calc(100% - var(--owh-m-top-h,88px) - var(--owh-m-tb-h,72px) - 8px));z-index:8}
  body.owh-m.owh-m-panel-expand .owh-m-peek-title{opacity:0;pointer-events:none;width:0;flex:0 0 0}
  /* Neutralize Option A slide-away (earlier rule: transform:translateX(-100%);opacity:0).
     Keep chrome on-screen during panel/tour; dimming is OK, labels must stay readable. */
  body.owh-m.owh-m-panel #owh-m-top,body.owh-m.fc-open #owh-m-top{
    transform:none;opacity:.55;pointer-events:auto;visibility:visible}
  body.owh-m.owh-m-peek #owh-m-top,body.owh-m.owh-m-panel-expand #owh-m-top{
    transform:none;opacity:.55;pointer-events:auto;visibility:visible}
  body.owh-m.owh-m-stow #panel.open{transform:translateY(calc(100% + 40px))}
  body.owh-m #panel-close{display:none}
  body.owh-m #owh-m-pfoot{display:block;position:sticky;bottom:-14px;margin:14px -16px -14px;padding:10px 16px calc(10px + env(safe-area-inset-bottom,0px));
    background:var(--owh-m-solid,#0e1426);border-top:1px solid var(--line);z-index:2}
  body.owh-m .owh-m-pclose{display:block;width:100%;min-height:44px;padding:10px;border:1px solid var(--line);border-radius:10px;background:rgba(255,255,255,.08);color:var(--text);font:inherit;font-size:14px;font-weight:700;cursor:pointer}
  body.owh-m.theme-light .owh-m-pclose{background:rgba(30,45,90,.08)}
  body.owh-m #owh-m-edge,body.owh-m #owh-m-ptab{display:none !important}
  /* Tags must clear the handle row (no overlap with Globe) */
  body.owh-m #panel-tags{display:flex;flex-wrap:wrap;gap:6px;margin:16px 0 6px;clear:both;padding-top:6px}

  /* ---- Tour card ---- */
  body.owh-m #tourbar{left:calc(8px + env(safe-area-inset-left));right:calc(8px + env(safe-area-inset-right));width:auto;transform:none;
    bottom:calc(var(--owh-m-tb-h,72px) + 6px);max-height:min(60vh,calc(100% - var(--owh-m-top-h,88px) - var(--owh-m-tb-h,72px) - 16px));
    overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;padding:10px 12px 12px;font-size:13px;box-sizing:border-box;z-index:7;
    display:flex;flex-direction:column}
  body.owh-m #tourbar[hidden]{display:none} /* 20261105XX tip-perf-fix: the display:flex above out-ranked #tourbar[hidden]; an empty tour card showed at phone cold start */
  /* When info peek is showing, leave room above the peek strip */
  body.owh-m.owh-m-peek #tourbar{bottom:calc(var(--owh-m-tb-h,72px) + 58px);max-height:min(55vh,calc(100% - var(--owh-m-top-h,88px) - var(--owh-m-tb-h,72px) - 74px))}
  body.owh-m.owh-m-tour-min #tourbar{max-height:0;opacity:0;pointer-events:none;overflow:hidden;padding:0;border:0;margin:0}
  /* Header: meta chips on second line */
  body.owh-m .tour-head{display:flex;flex-wrap:wrap;align-items:center;gap:4px 6px;padding-right:28px;position:relative;row-gap:6px}
  body.owh-m .tour-head .card-title{flex:1 1 calc(100% - 28px);margin:0;font-size:11px;line-height:1.3;padding-right:4px}
  body.owh-m .tour-head #tour-close{position:absolute;right:-4px;top:-4px;z-index:2}
  body.owh-m .tour-head .pill,body.owh-m .tour-head #tour-strand,body.owh-m .tour-head #tour-tone{
    flex:0 1 auto;font-size:10px;padding:2px 6px;max-width:42%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.25}
  body.owh-m .tour-head #tour-step{flex:0 0 auto;font-size:11px;color:var(--muted);margin-left:auto;padding:2px 4px}
  body.owh-m #tour-title{font-size:16px;margin-top:4px}
  /* Body: reserve ≥5 lines (line-height 1.45 → 7.25em); scroll inside if longer */
  body.owh-m #tour-text{min-height:7.25em;max-height:min(14em,28vh);overflow:auto;margin:6px 0 8px;line-height:1.45;scrollbar-width:thin;-webkit-overflow-scrolling:touch}
  body.owh-m #tour-events{max-height:2.4em;overflow:hidden} /* keep body room */
  body.owh-m #tour-src{display:none} /* sources stay on desktop / expand later */
  /* ONE row: Fact check · Report · Voice (compact pills) — sticky above nav */
  body.owh-m .tour-flag-row{display:flex;flex-wrap:nowrap;align-items:center;gap:6px;margin:4px -12px 0;padding:6px 12px;position:sticky;bottom:54px;z-index:3;order:20;background:var(--owh-m-solid,#0e1426);border-top:1px solid var(--line)}
  /* When Assist test pair is showing, Fact/Report/Voice sits above that sticky row */
  body.owh-m #tourbar:has(#tour-explore:not([hidden])) .tour-flag-row{bottom:calc(54px + 56px)}
  body.owh-m .tour-flag-row .tour-flag{display:flex;flex-wrap:nowrap;gap:6px;flex:1 1 auto;min-width:0}
  body.owh-m .tour-flag-row .tour-flag button{min-height:36px;height:36px;padding:4px 8px;font-size:11px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:clip;flex:0 1 auto}
  /* Fact check narrower so Voice can show its full short value without ellipsis/overflow */
  body.owh-m .tour-flag-row .tour-flag #tour-fc-btn{flex:0 1 auto;min-width:0;max-width:5.6em}
  body.owh-m .tour-flag-row .tour-flag #tour-flag-btn{flex:0 0 auto}
  body.owh-m .tour-flag-row .voice{display:inline-flex !important;align-items:center;gap:3px;flex:1 1 auto;margin:0;min-width:0;max-width:100%}
  body.owh-m .tour-flag-row .voice[hidden]{display:none !important}
  body.owh-m .tour-flag-row .tour-voice-lab{display:none} /* short value lives in the <select> on phone */
  body.owh-m .tour-flag-row .voice select{flex:1 1 auto;min-width:7.2em;max-width:100%;width:auto;font-size:11px;min-height:32px;height:32px;padding:2px 18px 2px 6px;text-overflow:clip;overflow:hidden}
  body.owh-m #tourbar .owh-fine-mag,body.owh-m .tour-flag-row .owh-fine-mag{display:none !important}
  /* Nav: 4 equal columns, ≥8px gaps, ≥44px tall, no wrap */
  body.owh-m #tourbar .tour-ctl{position:sticky;bottom:0;z-index:4;order:22;margin:8px -12px 0;padding:8px 12px 10px;background:var(--owh-m-solid,#0e1426);border-top:1px solid var(--line);flex-wrap:nowrap}
  body.owh-m .tour-ctl .tour-nav{
    display:grid !important;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;width:100%;align-items:stretch}
  body.owh-m .tour-ctl .tour-play-group,body.owh-m .tour-ctl .tour-nav-end{display:contents}
  body.owh-m .tour-ctl .tour-nav > button,
  body.owh-m .tour-ctl .tour-play-group > button,
  body.owh-m .tour-ctl .tour-nav-end > button{
    min-width:0;min-height:44px;height:44px;padding:6px 4px;font-size:12px;font-weight:600;
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;justify-self:stretch;width:100%;box-sizing:border-box}
  body.owh-m .tour-ctl .tour-narr-play{min-height:44px;padding:6px 4px;font-size:12px}
  /* Assist test pair: own sticky row ABOVE nav so buttons stay fully inside the card */
  body.owh-m .tour-explore{order:21;position:sticky;bottom:54px;z-index:3;display:flex;flex-wrap:nowrap;justify-content:flex-end;align-items:center;gap:6px;
    margin:4px -12px 0;padding:6px 12px;background:var(--owh-m-solid,#0e1426);border-top:1px solid var(--line)}
  body.owh-m .tour-explore[hidden]{display:none!important}
  body.owh-m .tour-explore-left{display:none} /* Data/Arsenal stay desktop; phone keeps Fact/Report/Voice + tests */
  body.owh-m .tour-explore-right{display:flex;gap:6px;margin-left:0;flex:1 1 auto;justify-content:flex-end;min-width:0}
  body.owh-m .tour-explore button{min-height:44px;min-width:44px;flex:0 1 auto;max-width:100%;overflow:hidden;text-overflow:ellipsis}
  body.owh-m.touring.owh-m-drawer #layers{opacity:0;visibility:hidden;pointer-events:none}

  body.owh-m .cs-compare{margin-left:auto}

  body.owh-m #compare-surface,body.owh-m #arsenal-surface,body.owh-m #course-player{top:calc(var(--owh-m-top-h,88px) + 6px);left:6px;right:6px;width:auto;margin:0;
    bottom:calc(var(--owh-m-tb-h,72px) + 6px)}
  body.owh-m.touring #compare-surface{bottom:max(var(--cs-bottom,132px),calc(var(--owh-m-tb-h,72px) + 6px))}
  body.owh-m .fc-surface{top:auto;right:0;left:0;bottom:var(--owh-m-tb-h,72px);width:auto;max-width:none;
    max-height:min(50vh,calc(100% - var(--owh-m-top-h,88px) - var(--owh-m-tb-h,72px) - 8px));border-radius:16px 16px 0 0}
  body.owh-m .owh-beta{top:calc(var(--owh-m-top-h,88px) + 4px)}

  @media (orientation:landscape) and (max-height:500px){
    body.owh-m #owh-m-top{padding-top:calc(4px + env(safe-area-inset-top));padding-bottom:4px;gap:2px}
    body.owh-m .owh-m-row1{min-height:36px}
    body.owh-m .owh-m-row2{min-height:34px}
    body.owh-m .owh-m-chip{min-height:34px;padding:4px 6px;font-size:12px}
    body.owh-m .owh-m-b{min-height:36px;padding:6px 10px}
    body.owh-m .owh-m-b.owh-m-ic{width:36px;height:36px}
    body.owh-m #layers{max-height:min(62vh,calc(100% - var(--owh-m-top-h,72px) - var(--owh-m-tb-h,64px) - 8px))}
    body.owh-m #tourbar{max-height:min(62vh,calc(100% - var(--owh-m-top-h,72px) - var(--owh-m-tb-h,64px) - 12px))}
  }
}


/* 20261107 light surfaces for the compare stage, report cards, and the arsenal
   data panel. Dark rules above stay the default. src/theme.js toggles
   body.theme-light immediately, so an open panel updates without a reload.
   Series ink for report-card lines is chosen in app.js (RC_CMP_COL_LIGHT)
   because those strokes are inline. */
body.theme-light #compare-surface,
body.theme-light #arsenal-surface{
  background:#fffdf6;
  color:#1c2438;
  border-color:rgba(40,52,90,.22);
  box-shadow:0 10px 40px rgba(60,80,120,.18);
}
body.theme-light #compare-surface .cp-head,
body.theme-light #arsenal-surface .cp-head{
  background:#fff7e8;
  color:#1c2438;
  border-bottom-color:rgba(40,52,90,.16);
}
body.theme-light #compare-surface .cp-kicker,
body.theme-light #arsenal-surface .cp-kicker{color:#5b3d8a}
body.theme-light #compare-surface .cs-exp,
body.theme-light #arsenal-surface .cs-exp{color:#7a4a00;border-color:rgba(122,74,0,.45)}
body.theme-light #compare-surface .cp-back,
body.theme-light #arsenal-surface .cp-back,
body.theme-light #compare-surface .cs-ctl-btn,
body.theme-light #arsenal-surface .cs-ctl-btn{
  color:#3a2a12;
  background:rgba(30,45,90,.06);
  border-color:rgba(40,52,90,.28);
}
body.theme-light #compare-surface .cs-ctl-btn:hover:not(:disabled),
body.theme-light #arsenal-surface .cs-ctl-btn:hover:not(:disabled){background:rgba(196,123,18,.16);color:#3a2a12}
body.theme-light #compare-surface .cs-ctl-btn[aria-pressed="true"],
body.theme-light #compare-surface .cs-ctl-btn.running,
body.theme-light #arsenal-surface .cs-ctl-btn[aria-pressed="true"],
body.theme-light #arsenal-surface .cs-ctl-btn.running{background:rgba(196,123,18,.28);color:#3a2a12;border-color:#9a5b00}
body.theme-light #compare-surface .cs-compare,
body.theme-light #arsenal-surface .cs-compare{color:#1c2438}
body.theme-light #compare-surface .cs-body,
body.theme-light #arsenal-surface .cs-body,
body.theme-light #compare-surface .cs-title,
body.theme-light #arsenal-surface .cs-title,
body.theme-light #compare-surface .rc-ihead,
body.theme-light #arsenal-surface .rc-ihead,
body.theme-light #compare-surface .rc-os-h,
body.theme-light #arsenal-surface .rc-os-h{color:#1c2438}
body.theme-light #compare-surface .cs-def,
body.theme-light #compare-surface .rc-narr,
body.theme-light #compare-surface .cs-legend,
body.theme-light #compare-surface .cs-src,
body.theme-light #compare-surface .cs-src summary,
body.theme-light #compare-surface .rc-cmp-leg,
body.theme-light #compare-surface .rc-os-cmp,
body.theme-light #compare-surface .rc-cmp-miss,
body.theme-light #compare-surface .rc-scrub,
body.theme-light #compare-surface .rc-ends,
body.theme-light #compare-surface .rc-scrub-lbl,
body.theme-light #compare-surface .mini,
body.theme-light #compare-surface .rc-os-none,
body.theme-light #compare-surface .rc-empty,
body.theme-light #compare-surface .cs-coming,
body.theme-light #compare-surface .cs-loading,
body.theme-light #arsenal-surface .cs-def,
body.theme-light #arsenal-surface .cs-legend,
body.theme-light #arsenal-surface .mini{color:#3d4c66}
body.theme-light #compare-surface .cs-axis,
body.theme-light #arsenal-surface .cs-axis{fill:#243044}
body.theme-light #compare-surface .cs-lbl,
body.theme-light #arsenal-surface .cs-lbl{fill:#1c2438}
body.theme-light #compare-surface .cs-grid,
body.theme-light #arsenal-surface .cs-grid{stroke:rgba(30,45,90,.22)}
body.theme-light #compare-surface .cs-track,
body.theme-light #arsenal-surface .cs-track{stroke:rgba(30,45,90,.28)}
body.theme-light #compare-surface .rc-zero{stroke:rgba(30,45,90,.45)}
body.theme-light #compare-surface .rc-cur-ln{stroke:#9a5b00}
body.theme-light #compare-surface .rc-scrub-caret{border-bottom-color:#9a5b00}
body.theme-light #compare-surface .rc-end-lab{stroke:#fffdf6}
body.theme-light #compare-surface .rc-cur-dot,
body.theme-light #compare-surface .rc-cur-grab{stroke:#fffdf6}
body.theme-light #compare-surface .cs-row:hover .cs-rowbg,
body.theme-light #compare-surface .cs-row:focus-visible .cs-rowbg,
body.theme-light #compare-surface .cs-row.sel .cs-rowbg,
body.theme-light #arsenal-surface .cs-row:hover .cs-rowbg,
body.theme-light #arsenal-surface .cs-row:focus-visible .cs-rowbg,
body.theme-light #arsenal-surface .cs-row.sel .cs-rowbg{fill:rgba(30,45,90,.06)}
body.theme-light #compare-surface .cs-row.hi .cs-lbl,
body.theme-light #arsenal-surface .cs-row.hi .cs-lbl{fill:#7a4a00}
body.theme-light #compare-surface .rc-tabs button,
body.theme-light #compare-surface .rc-sy{
  color:#3d4c66;
  background:#fff;
  border-color:rgba(40,52,90,.28);
}
body.theme-light #compare-surface .rc-tabs button.on{
  color:#0f3d38;
  border-color:#0f766e;
  background:rgba(15,118,110,.14);
}
body.theme-light #compare-surface .rc-sy.on{
  color:#6b3a00;
  border-color:#9a5b00;
  background:rgba(196,123,18,.16);
}
body.theme-light #compare-surface .cs-chip.cs-documented{color:#0f6b3a;border-color:#0f6b3a;background:#e7f6ee}
body.theme-light #compare-surface .cs-chip.cs-estimate{color:#7a4e00;border-color:#7a4e00;background:#fff4d6}
body.theme-light #compare-surface .cs-chip.cs-contested{color:#9f1239;border-color:#9f1239;background:#fde8e8}
body.theme-light #compare-surface .cs-caveat{
  color:#3a2a12;
  background:rgba(154,91,0,.08);
  border-left-color:#9a5b00;
}
body.theme-light #compare-surface .rc-os{
  background:#fff;
  border-color:rgba(15,118,110,.35);
}
body.theme-light #compare-surface a{color:#174ea6}
body.theme-light #compare-surface .rc-scrub-slot input[type=range]::-webkit-slider-thumb,
body.theme-light #compare-surface .rc-scrub-slot input[type=range]::-moz-range-thumb{border-color:#1c2438}
body.theme-light #compare-surface .rc-all{stroke:#1d4e89}
body.theme-light #compare-surface .rc-doc{stroke:#1d4e89}
body.theme-light #compare-surface .cs-detail,
body.theme-light #compare-surface .rc-read{color:#1c2438}

/* 20261110sens: sensitivity notice (tour steps + place/pin cards) and thumbnail flag.
   Muted amber, WCAG AA in Dark and Light. Badge only — no blur/spoiler. */
.sens-notice,#tour-sensitive{
  display:flex;align-items:flex-start;gap:8px;box-sizing:border-box;width:100%;max-width:100%;
  margin:8px 0 0;padding:7px 10px;border-radius:8px;font-size:12.5px;font-weight:600;letter-spacing:.01em;line-height:1.4;
  color:#f6e7c8;background:#3a2e1c;border:1px solid #c9a46a
}
body.theme-light .sens-notice,body.theme-light #tour-sensitive{
  color:#3a2a14;background:#f7ecd4;border-color:#8a5a22
}
.sens-notice[hidden],#tour-sensitive[hidden],.tour-readout[hidden]{display:none !important}
.sens-notice .sens-text,#tour-sensitive .sens-text{flex:1 1 auto;min-width:0;font-weight:600}
.sens-ico{
  flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;
  width:1.15em;height:1.15em;margin-top:.12em;border-radius:50%;border:1.5px solid currentColor;
  font-size:11px;font-weight:800;line-height:1;font-style:normal;text-transform:none
}
.sens-ico::before{content:"i"}
.sens-flag{
  position:absolute;top:6px;left:6px;z-index:2;display:inline-flex;align-items:center;gap:4px;
  padding:2px 6px;border-radius:5px;font-size:10px;font-weight:700;letter-spacing:.02em;line-height:1.2;
  color:#f6e7c8;background:rgba(58,46,28,.92);border:1px solid #c9a46a;pointer-events:none;max-width:calc(100% - 12px)
}
body.theme-light .sens-flag{color:#3a2a14;background:rgba(247,236,212,.94);border-color:#8a5a22}
.sens-flag .sens-ico{margin-top:0;width:1em;height:1em;font-size:9px}
.sens-flag-lab{white-space:nowrap}
.mfig,.mfig .mopen,.mfig .rimg,.mfig.standin .standin-frame,.mthumbs button.sens,.media-lb-img,.ar-stage{position:relative}
.mfig.standin{text-align:center}
.mfig.standin .standin-frame{display:inline-block;max-width:100%}
.mfig.recon .sens-flag,.media-lb-img .sens-flag{top:6px;right:6px;left:auto} /* keep clear of the top-left AI badge */
.mthumbs .sens-flag{top:2px;left:2px;padding:1px 4px;font-size:8px;gap:2px;border-radius:3px}
.mthumbs .sens-flag .sens-flag-lab{font-size:8px}
#panel-cityhero .sens-flag{top:8px;left:8px}
.ar-stage .sens-flag{top:8px;left:8px}
@media (max-width:600px){
  .sens-notice,#tour-sensitive{font-size:12px;padding:6px 8px}
  .sens-flag-lab{letter-spacing:0}
}
.tour-readout{margin:6px 0 0;font-size:12.5px;line-height:1.35}
#rail-other-tours{margin-top:4px}
#other-tours{min-height:44px}

/* 20261109ship2b: all-layers control above the five layer checkboxes */
#rail-layers-body > .lyr-all{
  display:block;width:100%;box-sizing:border-box;margin:2px 0 6px;padding:6px 10px;
  font:inherit;font-size:13px;line-height:1.3;text-align:left;color:var(--text);
  background:rgba(255,255,255,.06);border:1px solid var(--line);border-radius:8px;cursor:pointer
}
#rail-layers-body > .lyr-all:hover{background:rgba(255,255,255,.12)}
#rail-layers-body > .lyr-all:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
#rail-layers-body > .lyr-all[aria-pressed="true"]{border-color:var(--accent);background:rgba(255,181,71,.16)}
body.theme-light #rail-layers-body > .lyr-all{background:rgba(30,45,90,.06)}
body.theme-light #rail-layers-body > .lyr-all:hover{background:rgba(30,45,90,.13)}
body.theme-light #rail-layers-body > .lyr-all[aria-pressed="true"]{background:rgba(224,138,0,.18);border-color:var(--accent)}
#rail-layers-body > label{margin-left:14px}

/* 20261109search1 (t68u): Data and Histories search stay in the section while the
   disclosure is collapsed. The results list travels with the search box, so typing
   shows matches without opening the category / Select rows. Those rows stay in the body. */
#rail-data > #data-search-wrap,
#rail-histories > #hist-search-wrap{margin-top:4px}
#rail-data-body,
#rail-histories-body{padding-top:0}

/* 20261109search1 (t69u): Join stays the last section. Its label sits on the right,
   in a warm tone that still reads as a sibling header in Dark and Light. */
#acct-strip.rail-sec .acct-join-toggle{
  justify-content:flex-end;
  text-align:right;
  color:#c9a66e
}
#acct-strip.rail-sec .acct-join-toggle:hover{color:#e6c98a}
#acct-strip.rail-sec .acct-join-chev{color:#c9a66e}
#acct-strip.rail-sec .acct-join-toggle:hover .acct-join-chev{color:#e6c98a}
body.theme-light #acct-strip.rail-sec .acct-join-toggle,
body.theme-light #acct-strip.rail-sec .acct-join-chev{color:#7a4e0e}
body.theme-light #acct-strip.rail-sec .acct-join-toggle:hover,
body.theme-light #acct-strip.rail-sec .acct-join-toggle:hover .acct-join-chev{color:#5e3b0a}

/* 20261109battle2: held battle slides. The note sits in the tour box. Campaign cards share one row layout. */
#battle-hold-note{margin:0 0 8px;padding:8px 10px;border:1px solid rgba(255,208,122,.5);border-radius:8px;background:rgba(70,46,8,.55);color:#ffe7b8;font-size:13px;line-height:1.45}
#battle-hold-note[hidden]{display:none}
.bh-row{display:grid;grid-template-columns:8.2em 1fr;gap:2px 8px;margin:7px 0;font-size:13.5px;line-height:1.4}
.bh-k{color:#ffd27a;font-size:11px;letter-spacing:.04em;text-transform:uppercase;padding-top:2px}
.bh-sub{margin:0 0 4px}
button.bh-eq{margin-left:6px;background:transparent;color:#9cc8ff;border:1px solid rgba(156,200,255,.45);border-radius:6px;padding:1px 6px;cursor:pointer;font:inherit}
#panel.bh-card #panel-related p{margin:6px 0}


/* Lazy image-content controls; no flags scanned at app startup. */
.image-content-setting{margin:8px 0;font-size:13px}.image-content-setting summary{cursor:pointer;font-weight:600}.image-content-controls{padding:8px 0}.image-content-controls select{max-width:100%}.image-content-reasons{display:grid;grid-template-columns:1fr;gap:5px;margin-top:8px}.image-content-reasons label{display:flex;align-items:center;gap:6px;font-size:12px}.image-content-placeholder{padding:24px 12px;background:var(--card,#f1f3f5);color:var(--text,#42464a);text-align:center;white-space:normal;border:1px solid currentColor;border-radius:6px;line-height:1.5}.image-content-placeholder button{display:block;margin:8px auto 0;font:inherit}.image-content-controls .mini{display:block;margin:6px 0}

.image-content-reasons{min-width:0;border:1px solid var(--line);border-radius:8px;padding:8px}.image-content-reasons input{accent-color:var(--accent)}
