/* ==========================================================================
   Exhibit layer - chaptered exhibit UX (no long scroll), memorial treatments,
   interactive map + synchronized timeline, consent + content-warning,
   curatorial notes. Inherits tokens/base/components.
   ========================================================================== */

/* --- Exhibit hero (memorial register) ----------------------------------- */
.ex-hero {
  position: relative; overflow: hidden; color: var(--wall-text);
  background:
    radial-gradient(700px 420px at 50% -10%, rgba(200,69,94,0.18), transparent 60%),
    radial-gradient(800px 520px at 80% 120%, var(--glow-warm), transparent 60%),
    linear-gradient(180deg, #15101a, #1c1822 75%, #211a26);
  border-bottom: 1px solid #2c2536;
  padding: var(--space-9) 0 var(--space-8);
}
.ex-hero--warm {
  background:
    radial-gradient(720px 440px at 50% -10%, var(--glow-warm-strong), transparent 60%),
    radial-gradient(800px 520px at 82% 118%, rgba(224,169,63,0.12), transparent 60%),
    linear-gradient(180deg, #161019, #1c1822 78%, #221a26);
}
.ex-hero--art {
  background:
    radial-gradient(720px 440px at 50% -10%, rgba(122,83,158,0.22), transparent 60%),
    radial-gradient(800px 520px at 82% 118%, var(--glow-warm), transparent 60%),
    linear-gradient(180deg, #161019, #1c1822 78%, #221a26);
}
.ex-hero--civic {
  background:
    radial-gradient(720px 440px at 50% -10%, rgba(65,105,158,0.24), transparent 60%),
    radial-gradient(800px 520px at 82% 118%, var(--glow-warm), transparent 60%),
    linear-gradient(180deg, #14111b, #1c1822 78%, #20202c);
}
.ex-hero::before { content:""; position:absolute; inset:22px; border:1px solid rgba(214,192,138,0.16); pointer-events:none; }
.ex-hero__inner { position: relative; z-index: 2; max-width: 880px; }
.ex-hero .eyebrow { color: var(--brass-400); }
.ex-hero__no { font-family: var(--font-display); font-style: italic; color: var(--brass-300); font-size: var(--fs-300); }
.ex-hero h1 {
  color: #fff; font-weight: 800; margin-top: var(--space-3);
  font-size: clamp(2.6rem, 6vw, 4.6rem); line-height: 1.02; letter-spacing: -0.03em;
}
.ex-hero__sub { font-family: var(--font-display); font-style: italic; font-size: clamp(1.2rem,2.4vw,1.7rem); color: var(--brass-300); margin-top: var(--space-3); }
.ex-hero__meta { display: flex; flex-wrap: wrap; gap: var(--space-5); margin-top: var(--space-6); color: var(--wall-text-soft); font-size: var(--fs-100); }
.ex-hero__meta span { display: inline-flex; align-items: center; gap: 8px; }
.ex-hero__meta b { color: var(--wall-text); font-weight: 600; }

/* --- Exhibit layout: chapter rail + pane (no long scroll) ---------------- */
.exhibit { padding: var(--space-7) 0 var(--space-9); }
.exhibit__grid { display: grid; grid-template-columns: 248px 1fr; gap: var(--space-8); align-items: start; }

.chapter-rail { position: sticky; top: 96px; }
.chapter-rail__label { font-size: var(--fs-50); letter-spacing: 0.18em; text-transform: uppercase; font-weight: 700; color: var(--brass-600); margin-bottom: var(--space-4); }
.chapter-rail ol { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 2px; }
.chapter-rail button {
  display: flex; gap: var(--space-3); align-items: baseline; width: 100%; text-align: left;
  background: none; border: none; cursor: pointer; padding: var(--space-3); border-radius: 2px;
  font-family: var(--font-text); font-size: 0.9rem; color: var(--ink-500); line-height: 1.3;
  border-left: 2px solid transparent; transition: var(--dur);
}
.chapter-rail button:hover { background: var(--paper-200); color: var(--ink-900); }
.chapter-rail button[aria-current="true"] { color: var(--ink-900); border-left-color: var(--brass-500); background: var(--brass-tint); font-weight: 600; }
.chapter-rail button .c-no { font-family: var(--font-display); font-style: italic; color: var(--brass-600); font-size: 0.95rem; min-width: 1.4em; }

.chapter { display: none; max-width: var(--measure); animation: fade 0.5s var(--ease); }
.chapter.is-active { display: block; }
@keyframes fade { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .chapter.is-active { animation: none; } }

.chapter__kicker { font-size: var(--fs-50); letter-spacing: 0.16em; text-transform: uppercase; font-weight: 700; color: var(--brass-600); }
.chapter h2 { font-size: clamp(1.8rem, 4vw, var(--fs-600)); margin-top: var(--space-2); }
.chapter h3 { margin-top: var(--space-6); font-size: var(--fs-400); }
.chapter p { margin-top: var(--space-4); color: var(--ink-700); }
.chapter p.lead { font-size: var(--fs-300); color: var(--ink-700); }
/* Drop cap on the first paragraph after a chapter heading (museum editorial). */
.chapter h2 + p::first-letter { font-family: var(--font-display); font-weight: 460; font-size: 3.5em; line-height: 0.78; float: left; margin: 0.06em 0.1em 0 0; color: var(--brass-600); }
.chapter h2 + p.lead::first-letter { color: var(--brass-600); }
.chapter .ornament { margin: var(--space-6) 0; }

.chapter__nav { display: flex; justify-content: space-between; gap: var(--space-4); margin-top: var(--space-8); padding-top: var(--space-5); border-top: 1px solid var(--line); }
.chapter__nav button { background: none; border: none; cursor: pointer; color: var(--brass-600); font-family: var(--font-text); font-size: 0.85rem; font-weight: 600; padding: 0; }
.chapter__nav button:hover { color: var(--ink-900); }
.chapter__nav button:disabled { color: var(--ink-300); cursor: default; }

/* --- Grade-band selector (K-12 lesson units) ---------------------------- */
.band-tabs { display: flex; flex-wrap: wrap; gap: var(--space-2); margin-bottom: var(--space-6); border-bottom: 1px solid var(--line); padding-bottom: var(--space-4); }
.band-tabs__label { width: 100%; font-size: var(--fs-50); letter-spacing: 0.16em; text-transform: uppercase; font-weight: 700; color: var(--brass-600); margin-bottom: var(--space-2); }
.band-tab { background: var(--paper-200); border: 1px solid var(--line); border-radius: 999px; padding: 0.5rem 1.15rem; font-family: var(--font-text); font-weight: 600; font-size: var(--fs-50); color: var(--ink-500); cursor: pointer; line-height: 1.2; }
.band-tab:hover { color: var(--ink-900); border-color: var(--line-strong); }
.band-tab.is-active { background: var(--brass-500); border-color: var(--brass-500); color: #1b1206; }
.band-tab small { display: block; font-weight: 500; font-size: 0.72rem; opacity: 0.8; }
.gb-band { display: none; }
.gb-band.is-active { display: block; animation: fade 0.4s var(--ease); }
@media (prefers-reduced-motion: reduce) { .gb-band.is-active { animation: none; } }
@media print {
  .band-tabs { display: none !important; }
  .gb-band { display: none !important; }
  .gb-band.is-active { display: block !important; }
  .gb-band.is-active .chapter { display: block !important; }
}

/* --- Content warning / curatorial note ---------------------------------- */
.callout { border-radius: 2px; padding: var(--space-5) var(--space-6); margin-top: var(--space-5); border: 1px solid var(--line-strong); background: var(--bg-raised); }
.callout__label { font-size: var(--fs-50); letter-spacing: 0.16em; text-transform: uppercase; font-weight: 700; margin-bottom: var(--space-2); }
.callout--warn { border-left: 3px solid var(--spec-orange); background: var(--spec-orange-tint); }
.callout--warn .callout__label { color: #a8551f; }
.callout--note { border-left: 3px solid var(--brass-500); background: var(--brass-tint); }
.callout--note .callout__label { color: var(--brass-600); }
.callout--consent { border-left: 3px solid var(--spec-blue); background: var(--spec-blue-tint); }
.callout--consent .callout__label { color: var(--spec-blue); }
.callout p:first-of-type { margin-top: 0; }

/* --- Content-warning preview gate (content-warning.js) ------------------- */
.cw[data-cw-key] { display: none; }
.cw-overlay { position: fixed; inset: 0; z-index: 100000; display: flex; align-items: center; justify-content: center; padding: var(--space-5); background: var(--paper-100); overflow-y: auto; }
.cw-overlay__card { max-width: 560px; width: 100%; background: var(--bg-raised); border: 1px solid var(--line-strong); border-left: 3px solid var(--spec-orange); border-radius: var(--radius); padding: var(--space-6); box-shadow: var(--shadow-lg); }
.cw-overlay__eyebrow { color: var(--spec-orange); font-weight: 600; text-transform: uppercase; letter-spacing: 0.08em; font-size: var(--fs-50); margin: 0 0 var(--space-2); }
.cw-overlay__card h2 { margin: 0 0 var(--space-3); outline: none; }
.cw-overlay__body p { color: var(--wall-text-soft); margin-top: var(--space-3); }
.cw-overlay__body p:first-child { margin-top: 0; }
.cw-overlay__body .cw__support { font-size: var(--fs-100); }
.cw-overlay__actions { display: flex; flex-wrap: wrap; gap: var(--space-3); margin-top: var(--space-5); }
@media (prefers-reduced-motion: no-preference) { .cw-overlay { animation: cw-fade 0.2s var(--ease); } @keyframes cw-fade { from { opacity: 0; } to { opacity: 1; } } }

/* --- The refusal (perpetrator note) ------------------------------------- */
.refusal { border: 1px solid var(--line-strong); background: var(--paper-300); color: var(--wall-text-soft); border-radius: var(--radius); padding: var(--space-6); margin-top: var(--space-6); }
.refusal h3 { color: #fbf6ec; margin-top: 0; font-size: var(--fs-400); }
.refusal p { color: var(--wall-text-soft); }

/* --- Memorial card ------------------------------------------------------- */
.memorial {
  position: relative; border: 1px solid var(--brass-400); border-radius: 2px;
  background: linear-gradient(180deg, #1d1822, #15111b); color: var(--wall-text);
  padding: var(--space-8) var(--space-7); text-align: center; margin-top: var(--space-5);
  overflow: hidden;
}
.memorial::before { content:""; position:absolute; inset:9px; border:1px solid rgba(214,192,138,0.25); pointer-events:none; }
.memorial__flame { width: 12px; height: 12px; margin: 0 auto var(--space-4); border-radius: 50% 50% 50% 50% / 60% 60% 40% 40%;
  background: radial-gradient(circle at 50% 65%, #ffe9b0, var(--brass-500) 60%, transparent 75%);
  box-shadow: 0 0 26px 6px rgba(214,170,105,0.45); }
.memorial__label { font-size: var(--fs-50); letter-spacing: 0.22em; text-transform: uppercase; color: var(--brass-400); }
.memorial__name { font-family: var(--font-display); font-size: clamp(1.8rem,4vw,2.6rem); color: #fdf8ee; margin-top: var(--space-2); font-weight: 440; }
.memorial__role { color: var(--brass-300); font-style: italic; font-family: var(--font-display); margin-top: var(--space-2); }
.memorial__eow { display: inline-block; margin-top: var(--space-4); padding-top: var(--space-3); border-top: 1px solid rgba(214,192,138,0.3); font-size: var(--fs-100); color: var(--wall-text-soft); letter-spacing: 0.04em; }
.memorial__eow b { color: var(--wall-text); }

/* --- Memorial wall (the 49) --------------------------------------------- */
.mem-wall { display: grid; gap: var(--space-4); grid-template-columns: repeat(auto-fill, minmax(min(260px, 100%), 1fr)); margin: var(--space-5) 0 0; list-style: none; padding: 0; }
.mem-card {
  position: relative; min-width: 0; border: 1px solid var(--line-strong); border-radius: var(--radius-sm);
  background: linear-gradient(180deg, #1d1626, #15101d); overflow: hidden; transition: border-color var(--dur), box-shadow var(--dur);
}
.mem-card::before { content:""; position:absolute; left:0; top:0; bottom:0; width:3px; background: linear-gradient(180deg, var(--brass-400), var(--brass-600)); opacity: 0.85; }
.mem-card[open] { border-color: var(--brass-400); box-shadow: 0 0 0 1px rgba(255,198,41,0.25), var(--shadow-sm); }
.mem-card > summary { list-style: none; cursor: pointer; padding: var(--space-4) var(--space-5) var(--space-4) calc(var(--space-5) + 4px); display: flex; align-items: baseline; gap: var(--space-3); }
.mem-card > summary::-webkit-details-marker { display: none; }
.mem-card > summary:focus-visible { outline: 2px solid var(--purple-bright); outline-offset: 2px; }
.mem-card__flame { flex: 0 0 auto; align-self: center; width: 9px; height: 9px; border-radius: 50% 50% 50% 50% / 60% 60% 40% 40%;
  background: radial-gradient(circle at 50% 65%, #ffe9b0, var(--brass-500) 60%, transparent 78%); box-shadow: 0 0 16px 3px rgba(214,170,105,0.5); }
/* Portrait support: a cleared, licensed photo replaces the flame as a small avatar.
   Until a photo is licensed + consent-cleared, cards keep the flame (no infringement). */
.mem-card__photo { flex: 0 0 auto; align-self: center; width: 44px; height: 44px; border-radius: 50%; object-fit: cover; object-position: center 25%; border: 1px solid var(--brass-400); background: var(--paper-300); }
.mem-card[open] .mem-card__photo { width: 56px; height: 56px; }
.mem-card__credit { font-size: var(--fs-50); color: var(--ink-500); margin-top: var(--space-2); font-style: italic; }
.mem-card__name { font-family: var(--font-display); font-weight: 600; font-size: 1.06rem; color: #fdf8ee; line-height: 1.2; flex: 1 1 auto; }
.mem-card__age { font-family: var(--font-display); font-style: normal; font-size: var(--fs-50); color: var(--brass-300); white-space: nowrap; letter-spacing: 0.02em; }
.mem-card__heart { color: var(--spec-red); font-size: 0.8rem; }
.mem-card__body { padding: 0 var(--space-5) var(--space-5) calc(var(--space-5) + 4px); }
.mem-card__body p { margin: 0 0 var(--space-3); color: var(--ink-700); font-size: var(--fs-100); line-height: 1.6; }
.mem-card__src { font-size: var(--fs-50); color: var(--ink-500); border-top: 1px solid var(--line); padding-top: var(--space-2); }
.mem-card__src strong { color: var(--ink-500); font-weight: 700; }
.mem-tools { display: flex; flex-wrap: wrap; gap: var(--space-3); align-items: center; margin-top: var(--space-5); }
.mem-tools button { background: var(--bg-raised); border: 1px solid var(--line-strong); border-radius: 100px; padding: 7px 15px; font-family: var(--font-text); font-size: 0.78rem; font-weight: 600; color: var(--ink-700); cursor: pointer; transition: var(--dur); }
.mem-tools button:hover { border-color: var(--brass-500); color: var(--ink-900); }
.mem-count { font-size: var(--fs-50); letter-spacing: 0.1em; text-transform: uppercase; color: var(--brass-400); font-weight: 700; }
@media print { .mem-card { break-inside: avoid; } .mem-card > summary { pointer-events: none; } .mem-card__body { display: block !important; } }

/* fact list with confidence */
.facts { list-style: none; padding: 0; margin: var(--space-5) 0 0; display: flex; flex-direction: column; gap: var(--space-4); }
.facts li { padding-left: var(--space-5); border-left: 2px solid var(--line-strong); }
.facts .fact__head { display: flex; flex-wrap: wrap; gap: var(--space-3); align-items: center; }
.facts .fact__t { font-weight: 600; color: var(--ink-900); }

/* --- Interactive map + timeline centerpiece ----------------------------- */
.journey { margin-top: var(--space-5); }
#puzzles-map, #places-map, #atlas-map { width: 100%; height: 460px; border: 1px solid var(--brass-300); border-radius: 2px; background: var(--paper-300); z-index: 1; }
#places-map { height: 540px; }
#atlas-map { height: 560px; }
.atlas-legend { display: flex; flex-wrap: wrap; gap: var(--space-4); margin-top: var(--space-3); font-size: var(--fs-100); }
.atlas-legend span { display: inline-flex; align-items: center; gap: 7px; color: var(--ink-700); }
.atlas-legend i { width: 12px; height: 12px; border-radius: 50%; display: inline-block; }
.lg-strong { background: var(--conf-verified); } .lg-thin { background: var(--conf-oral); } .lg-missing { background: var(--spec-red); } .lg-gated { background: var(--spec-violet); }
.leaflet-popup-content { font-family: var(--font-text); font-size: 0.82rem; line-height: 1.5; }
.leaflet-popup-content b { font-family: var(--font-display); }
.map-note { font-size: var(--fs-50); color: var(--ink-500); margin-top: var(--space-3); }
.map-textview { margin-top: var(--space-4); border: 1px solid var(--line); border-radius: var(--radius); padding: var(--space-3) var(--space-5); background: var(--paper-200); }
.map-textview summary { cursor: pointer; font-weight: 700; color: var(--brass-500); font-size: 0.85rem; padding: var(--space-2) 0; }
.map-textview summary:hover { color: var(--brass-400); }
.map-list { list-style: none; padding: var(--space-3) 0 var(--space-2); margin: 0; display: grid; gap: var(--space-3); }
.map-list__item { display: flex; gap: 10px; align-items: flex-start; font-size: var(--fs-100); color: var(--ink-700); line-height: 1.5; }
.map-list__item b { color: var(--ink-900); }
.map-list__dot { flex: 0 0 auto; width: 10px; height: 10px; border-radius: 50%; margin-top: 6px; }

.timeline { list-style: none; margin: var(--space-6) 0 0; padding: 0; position: relative; }
.timeline::before { content:""; position: absolute; left: 9px; top: 6px; bottom: 6px; width: 2px; background: var(--line-strong); }
.tl-item { position: relative; padding: 0 0 var(--space-5) var(--space-7); cursor: pointer; }
.tl-item::before { content:""; position: absolute; left: 3px; top: 5px; width: 14px; height: 14px; border-radius: 50%; background: var(--paper-100); border: 2px solid var(--brass-500); transition: var(--dur); }
.tl-item:hover::before, .tl-item.is-active::before { background: var(--key, var(--spec-red)); border-color: var(--key, var(--spec-red)); transform: scale(1.15); }
.tl-item.is-active { }
.tl-item__date { font-size: var(--fs-50); letter-spacing: 0.08em; text-transform: uppercase; font-weight: 700; color: var(--brass-600); }
.tl-item__place { font-family: var(--font-display); font-size: var(--fs-300); color: var(--ink-900); margin-top: 2px; }
.tl-item__what { font-size: var(--fs-100); color: var(--ink-700); margin-top: 4px; line-height: 1.5; }
.tl-item__meta { display: flex; flex-wrap: wrap; gap: var(--space-2); align-items: center; margin-top: var(--space-2); }
.tl-item__src { font-size: var(--fs-50); color: var(--ink-500); }

/* --- World timeline era headers ----------------------------------------- */
.wt-era { font-family: var(--font-display); font-weight: 460; font-size: clamp(1.5rem,3vw,var(--fs-500)); margin: var(--space-8) 0 var(--space-4); padding-bottom: var(--space-2); border-bottom: 1px solid var(--brass-300); color: var(--ink-900); }
.wt-era:first-child { margin-top: 0; }

/* --- Coverage dashboard -------------------------------------------------- */
.cov-grid { display: grid; gap: var(--space-4); grid-template-columns: repeat(auto-fit, minmax(220px,1fr)); margin-top: var(--space-5); }
.cov-cell { border: 1px solid var(--line); border-left: 4px solid var(--ink-300); border-radius: 2px; padding: var(--space-4) var(--space-5); background: var(--bg-raised); }
.cov-cell--strong { border-left-color: var(--conf-verified); }
.cov-cell--thin { border-left-color: var(--conf-oral); }
.cov-cell--missing { border-left-color: var(--spec-red); }
.cov-cell--gated { border-left-color: var(--spec-violet); }
.cov-cell__status { font-size: var(--fs-50); letter-spacing: 0.12em; text-transform: uppercase; font-weight: 700; }
.cov-cell--strong .cov-cell__status { color: var(--conf-verified); }
.cov-cell--thin .cov-cell__status { color: var(--conf-oral); }
.cov-cell--missing .cov-cell__status { color: var(--spec-red); }
.cov-cell--gated .cov-cell__status { color: var(--spec-violet); }
.cov-cell p { font-size: var(--fs-100); margin-top: var(--space-2); color: var(--ink-700); }

/* --- Documentary / video feature ---------------------------------------- */
.doc-feature { margin: var(--space-6) 0; }
.doc-player { position: relative; border: 1px solid var(--brass-300); border-radius: var(--radius); overflow: hidden; background: linear-gradient(135deg, #1a1330, #0e0a1a); aspect-ratio: 16 / 9; display: flex; align-items: center; justify-content: center; }
.doc-player video { width: 100%; height: 100%; object-fit: cover; display: block; background: #0a0712; }
.doc-player iframe { width: 100%; height: 100%; border: 0; display: block; }
.doc-pending { position: absolute; inset: auto 0 0 0; padding: var(--space-3); text-align: center; font-size: var(--fs-50); letter-spacing: 0.06em; text-transform: uppercase; font-weight: 700; color: var(--brass-400); background: linear-gradient(0deg, rgba(10,7,18,.9), transparent); pointer-events: none; }
.doc-feature figcaption { margin-top: var(--space-3); font-size: var(--fs-100); color: var(--ink-500); display: flex; flex-wrap: wrap; gap: var(--space-2); align-items: center; }
.doc-feature figcaption strong { color: var(--ink-900); }

/* --- Sensitive-content shield + toggle ---------------------------------- */
.sensitive { position: relative; }
.sensitive-shield { display: none; }
html.hide-sensitive .sensitive:not(.revealed) > .sensitive-shield {
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: var(--space-3);
  text-align: center; position: absolute; inset: 0; z-index: 3; padding: var(--space-5);
  background: var(--paper-200); border: 1px dashed var(--line-strong); border-radius: 2px;
}
html.hide-sensitive .sensitive:not(.revealed) > *:not(.sensitive-shield) { filter: blur(11px); opacity: 0.5; pointer-events: none; user-select: none; }
.sensitive-shield__label { font-size: var(--fs-50); letter-spacing: 0.16em; text-transform: uppercase; font-weight: 700; color: var(--brass-600); }
.sensitive-shield__note { font-size: var(--fs-100); color: var(--ink-700); max-width: 38ch; }

.sensitive-toggle { display: inline-flex; align-items: center; gap: 7px; background: var(--bg-raised); border: 1px solid var(--line-strong); border-radius: 100px; padding: 6px 13px; font-family: var(--font-text); font-size: 0.72rem; font-weight: 600; color: var(--ink-700); cursor: pointer; white-space: nowrap; transition: var(--dur); }
.sensitive-toggle:hover { border-color: var(--brass-500); color: var(--ink-900); }
.sensitive-toggle[aria-pressed="true"] { background: var(--brass-tint); border-color: var(--brass-400); color: var(--brass-600); }
.sensitive-toggle__dot { width: 8px; height: 8px; border-radius: 50%; background: var(--ink-300); }
.sensitive-toggle[aria-pressed="true"] .sensitive-toggle__dot { background: var(--brass-500); }
@media (max-width: 820px) { .sensitive-toggle { font-size: 0; gap: 0; padding: 9px; } .sensitive-toggle__dot { width: 10px; height: 10px; } }

/* --- In-exhibit photo / figure ------------------------------------------ */
.ex-photo { margin: var(--space-5) 0; max-width: 340px; }
.ex-photo img { width: 100%; border-radius: var(--radius); border: 1px solid var(--line); background: var(--paper-100); display: block; }
.ex-photo figcaption { font-size: var(--fs-50); color: var(--ink-500); margin-top: var(--space-2); }
.ex-photo--wide { max-width: 560px; }
.ex-photo--scene { max-width: 100%; }
.ex-photo--scene img { background: var(--paper-200); }

/* --- Voices / oral-history wing (oral-history.js) --- */
.voices-grid { display: grid; gap: var(--space-6); }
.voices-card { border: 1px solid var(--line-strong); border-left: 3px solid var(--brass-500); border-radius: var(--radius); padding: var(--space-5) var(--space-6); background: var(--bg-raised); }
.voices-card__title { margin: 0 0 var(--space-2); }
.voices-card__by { color: var(--ink-500); font-size: var(--fs-100); margin: 0 0 var(--space-3); }
.voices-card audio { width: 100%; margin: var(--space-3) 0; }
.voices-card__chapters { list-style: none; padding: 0; margin: var(--space-3) 0; display: flex; flex-wrap: wrap; gap: var(--space-2); }
.voices-chapter { background: var(--paper-200); border: 1px solid var(--line); color: var(--ink-700); border-radius: 999px; padding: 0.2rem 0.7rem; cursor: pointer; font: inherit; font-size: var(--fs-50); }
.voices-card__consent { font-size: var(--fs-50); color: var(--ink-500); margin-top: var(--space-3); }
.voices-card__transcript { color: var(--ink-700); margin-top: var(--space-2); }

/* --- Pioneer portraits -------------------------------------------------- */
.pio-img { width: 100%; height: 230px; object-fit: cover; object-position: center 18%; border-radius: var(--radius-sm); margin-bottom: var(--space-4); background: var(--paper-100); border: 1px solid var(--line); }
.pio-credit { font-size: var(--fs-50); color: var(--ink-500); margin-top: var(--space-3); border-top: 1px solid var(--line); padding-top: var(--space-2); line-height: 1.4; }

/* --- The Archive (corpus browse) ---------------------------------------- */
.arc-count { font-size: var(--fs-50); letter-spacing: 0.1em; text-transform: uppercase; color: var(--brass-500); font-weight: 700; margin: var(--space-5) 0 var(--space-3); }
.arc-grid { display: grid; gap: var(--space-4); grid-template-columns: repeat(auto-fill, minmax(min(280px, 100%), 1fr)); }
.rec-card { background: linear-gradient(180deg, var(--paper-300), var(--paper-200)); border: 1px solid var(--line); border-radius: var(--radius); padding: var(--space-5); min-width: 0; overflow-wrap: break-word; word-break: break-word; }
.rec-card--hl { border-color: var(--brass-500); box-shadow: 0 0 0 2px rgba(255,198,41,0.3); }
.rec-card__top { display: flex; justify-content: space-between; align-items: center; gap: var(--space-2); }
.rec-card__type { font-size: var(--fs-50); letter-spacing: 0.1em; text-transform: uppercase; font-weight: 700; color: var(--purple-bright); }
.rec-card__title { font-size: 1.15rem; font-weight: 700; color: #fff; margin-top: var(--space-2); line-height: 1.2; }
.rec-card__meta { font-size: var(--fs-50); color: var(--brass-400); margin-top: 4px; letter-spacing: 0.04em; }
.rec-card__summary { font-size: var(--fs-100); color: var(--ink-700); margin-top: var(--space-3); line-height: 1.55; }
.rec-card__topic { font-size: var(--fs-50); color: var(--ink-500); margin-top: var(--space-2); }
.rec-card__src { font-size: var(--fs-50); color: var(--ink-500); margin-top: var(--space-3); border-top: 1px solid var(--line); padding-top: var(--space-2); overflow-wrap: anywhere; word-break: break-word; }

/* --- Museum-wide search ------------------------------------------------- */
.search-box { width: 100%; font-family: var(--font-text); font-size: 1.2rem; padding: 1rem 1.2rem; border: 1px solid var(--brass-300); border-radius: 2px; background: var(--bg-raised); color: var(--ink-900); }
.search-box:focus { outline: none; border-color: var(--spec-blue); box-shadow: 0 0 0 3px var(--spec-blue-tint); }
.search-count { font-size: var(--fs-50); letter-spacing: 0.1em; text-transform: uppercase; color: var(--brass-600); font-weight: 700; margin: var(--space-5) 0 var(--space-3); }
.search-list { list-style: none; padding: 0; margin: 0; display: grid; gap: var(--space-3); }
.search-item a { display: block; text-decoration: none; border: 1px solid var(--line); border-left: 3px solid var(--brass-400); border-radius: 2px; padding: var(--space-4) var(--space-5); background: var(--bg-raised); transition: border-color var(--dur), box-shadow var(--dur); }
.search-item a:hover { border-left-color: var(--spec-blue); box-shadow: var(--shadow-sm); }
.search-item__kind { display: inline-block; font-size: var(--fs-50); letter-spacing: 0.12em; text-transform: uppercase; font-weight: 700; color: var(--brass-600); }
.search-item__title { display: block; font-family: var(--font-display); font-size: var(--fs-400); color: var(--ink-900); margin-top: 2px; line-height: 1.15; }
.search-item__blurb { display: block; font-size: var(--fs-100); color: var(--ink-500); margin-top: 4px; }

/* --- Rigor panel (signature: live confidence reporting) ----------------- */
.rigor { margin-top: var(--space-6); padding-top: var(--space-5); border-top: 1px solid var(--line); }
.rigor__label { font-size: var(--fs-50); letter-spacing: 0.16em; text-transform: uppercase; font-weight: 700; color: var(--brass-600); margin-bottom: var(--space-3); }
.rigor__bar { display: flex; height: 6px; border-radius: 100px; overflow: hidden; background: var(--paper-300); margin-bottom: var(--space-3); }
.rigor__seg--verified { background: var(--conf-verified); }
.rigor__seg--corroborated { background: var(--conf-corroborated); }
.rigor__seg--oral { background: var(--conf-oral); }
.rigor__seg--unknown { background: var(--conf-unknown); }
.rigor__row { display: flex; align-items: baseline; justify-content: space-between; font-size: 0.8rem; padding: 2px 0; color: var(--ink-700); }
.rigor__row b { font-family: var(--font-display); color: var(--ink-900); font-size: 0.95rem; }
.rigor__total { font-size: var(--fs-50); color: var(--ink-500); margin-top: var(--space-3); line-height: 1.5; }
@media (max-width: 880px) { .rigor { width: 100%; } }

/* --- Timeline wing filters ---------------------------------------------- */
.tl-filters { position: sticky; top: 78px; z-index: 10; display: flex; flex-wrap: wrap; gap: var(--space-2); padding: var(--space-4) 0; background: var(--paper-100); border-bottom: 1px solid var(--line); margin-bottom: var(--space-6); }
.tl-filter { font-family: var(--font-text); font-size: 0.8rem; font-weight: 600; padding: 0.4rem 0.95rem; border: 1px solid var(--line-strong); background: var(--bg-raised); border-radius: 100px; cursor: pointer; color: var(--ink-700); transition: var(--dur); }
.tl-filter:hover { border-color: var(--brass-500); color: var(--ink-900); }
.tl-filter[aria-pressed="true"] { background: var(--brass-500); color: #1a1330; border-color: var(--brass-500); }
.tl-item.is-hidden { display: none; }
.tl-item__link { display: inline-block; margin-top: 6px; font-size: var(--fs-50); font-weight: 700; letter-spacing: 0.04em; color: var(--brass-600); text-decoration: none; }
.tl-item__link:hover { color: var(--ink-900); }
.tl-cat { font-size: var(--fs-50); letter-spacing: 0.1em; text-transform: uppercase; font-weight: 700; color: var(--ink-300); }

/* --- Responsive ---------------------------------------------------------- */
@media (max-width: 880px) {
  .exhibit__grid { grid-template-columns: 1fr; gap: var(--space-5); }
  .chapter-rail { position: static; top: auto; border-bottom: 1px solid var(--line); padding-bottom: var(--space-4); margin-bottom: var(--space-3); }
  .chapter-rail ol { flex-direction: row; flex-wrap: wrap; gap: var(--space-2); }
  .chapter-rail button { width: auto; border-left: none; border-bottom: 2px solid transparent; padding: var(--space-2) var(--space-3); }
  .chapter-rail button[aria-current="true"] { border-left: none; border-bottom-color: var(--brass-500); }
  .chapter { max-width: none; }
  #puzzles-map { height: 360px; }
}
