:root{
  --ink:#1b1712;
  --ink-soft:#5c5346;
  --ink-faint:#8a7f6d;
  --paper:#f3ede0;
  --paper-raised:#fffdf8;
  --paper-sunk:#e9e0cc;
  --line:#d6c9ac;
  --line-soft:#e4dac2;
  --accent:#a8341f;
  --accent-ink:#fff8f0;
  --accent-soft:#f3ded0;
  --wave:#1f5f5b;
  --wave-strong:#164b47;
  --wave-soft:#d7e8e4;
  --studio:#8a5a20;
  --studio-strong:#6e470f;
  --studio-soft:#ecdfc0;
  --both-a: var(--studio);
  --both-b: var(--wave);
  --county-idle:#e7ddc4;
  --county-idle-stroke:#c9b98d;
  --country-line:#2a221a;
  --map-hit:transparent;
  --shadow: 0 16px 40px -22px rgba(27,23,18,.5);
  --shadow-lg: 0 28px 70px -30px rgba(27,23,18,.55);
  --focus: #164b47;
  --serif: "Iowan Old Style","Palatino Linotype", Georgia, "Noto Serif", serif;
  --sans: "Helvetica Neue", Arial, sans-serif;
  color-scheme: light;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --ink:#f1ece1; --ink-soft:#c4b9a4; --ink-faint:#8f8471;
    --paper:#151109; --paper-raised:#1e1810; --paper-sunk:#110d08;
    --line:#3c3121; --line-soft:#2a2216;
    --accent:#e2825a; --accent-ink:#1b1712; --accent-soft:#3a2318;
    --wave:#7fd3c8; --wave-strong:#9fe3da; --wave-soft:#1a3230;
    --studio:#d9ab5c; --studio-strong:#e8c17e; --studio-soft:#33270f;
    --county-idle:#241d13; --county-idle-stroke:#3d321e;
    --country-line:#efe6d3;
    --shadow: 0 20px 50px -22px rgba(0,0,0,.75);
    --shadow-lg: 0 32px 80px -28px rgba(0,0,0,.8);
    --focus: #9fe3da;
    color-scheme: dark;
  }
}
:root[data-theme="dark"]{
  --ink:#f1ece1; --ink-soft:#c4b9a4; --ink-faint:#8f8471;
  --paper:#151109; --paper-raised:#1e1810; --paper-sunk:#110d08;
  --line:#3c3121; --line-soft:#2a2216;
  --accent:#e2825a; --accent-ink:#1b1712; --accent-soft:#3a2318;
  --wave:#7fd3c8; --wave-strong:#9fe3da; --wave-soft:#1a3230;
  --studio:#d9ab5c; --studio-strong:#e8c17e; --studio-soft:#33270f;
  --county-idle:#241d13; --county-idle-stroke:#3d321e;
  --country-line:#efe6d3;
  --shadow: 0 20px 50px -22px rgba(0,0,0,.75);
  --shadow-lg: 0 32px 80px -28px rgba(0,0,0,.8);
  --focus: #9fe3da;
  color-scheme: dark;
}

*{box-sizing:border-box;}
html{ scroll-behavior: auto; }
body{
  background: var(--paper);
  color: var(--ink);
  font-family: var(--serif);
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}
.wrap{ max-width: 960px; margin: 0 auto; padding: 0 22px 90px; position: relative; }

/* film strip motif, built from real perforation holes */
.filmstrip{ height: 20px; overflow: hidden; background: var(--ink); }
.filmstrip svg{ display:block; width:100%; height:100%; }
.filmstrip rect.hole{ fill: var(--paper); }
:root[data-theme="dark"] .filmstrip, :root:not([data-theme="light"]) .filmstrip{ background: var(--paper-sunk); }

header.hero{
  padding: 64px 0 30px;
  border-bottom: 1px solid var(--line);
  position: relative;
}
header.hero::before{
  content:"";
  position:absolute; inset:0;
  pointer-events:none;
  opacity:.35;
  mix-blend-mode: multiply;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
}
:root:not([data-theme="light"]) header.hero::before{ mix-blend-mode: screen; opacity: .12; }
.kicker{
  font-family: var(--sans);
  text-transform: uppercase;
  letter-spacing: .16em;
  font-size: .72rem;
  color: var(--accent);
  font-weight: 700;
  margin: 0 0 16px;
  display:flex; align-items:center; gap:10px;
}
.kicker::before{
  content:""; display:inline-block; width:22px; height:2px; background: var(--accent);
}
h1{
  font-size: clamp(2.1rem, 5.4vw, 3.4rem);
  line-height: 1.06;
  margin: 0 0 20px;
  letter-spacing: -.01em;
  max-width: 16ch;
}
.deck{
  font-size: 1.2rem;
  color: var(--ink-soft);
  max-width: 58ch;
  margin: 0 0 24px;
}
.lang-switch{ font-family: var(--sans); font-size: .82rem; }
.lang-switch a{ color: var(--ink-soft); text-decoration: none; border-bottom: 1px dotted var(--line); padding-bottom:1px; }
.lang-switch a[aria-current="true"]{ color: var(--accent); border-bottom-color: var(--accent); font-weight:700; }
.utility-row{ display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap; }
.theme-toggle{
  appearance:none; border:1px solid var(--line); border-radius:999px; padding:7px 12px;
  background:var(--paper-raised); color:var(--ink-soft); font:600 .76rem var(--sans);
  cursor:pointer; transition:background .15s ease, color .15s ease, border-color .15s ease;
}
.theme-toggle:hover{ background:var(--paper-sunk); color:var(--ink); border-color:var(--ink-soft); }
:focus-visible{ outline:3px solid var(--focus); outline-offset:3px; }

/* --- big stat block --------------------------------------------------- */
.stat-block{
  display:grid;
  grid-template-columns: auto 1fr;
  gap: 34px;
  align-items:center;
  padding: 40px 0 8px;
}
.stat-number{
  position: relative;
  width: 168px; height: 168px;
  flex: none;
}
.stat-number svg{ width:100%; height:100%; display:block; }
.stat-ring-track{ fill:none; stroke: var(--line-soft); stroke-width: 10; }
.stat-ring-fill{ fill:none; stroke: var(--accent); stroke-width: 10; stroke-linecap: round; transform-origin: 50% 50%; transform: rotate(-90deg); }
.stat-figure{
  position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center;
  font-family: var(--sans);
}
.stat-figure .num{ font-size: 2.6rem; font-weight: 800; line-height:1; color: var(--ink); font-variant-numeric: tabular-nums; }
.stat-figure .den{ font-size: .82rem; color: var(--ink-faint); margin-top: 2px; }
.stat-caption{ max-width: 46ch; }
.stat-caption p{ margin: 0; font-size: 1.08rem; }
.stat-caption strong{ color: var(--accent); }
.stat-caption .sub{ font-size: .92rem; color: var(--ink-soft); margin-top: 8px; }

@media (max-width: 620px){
  .stat-block{ grid-template-columns: 1fr; justify-items:center; text-align:center; padding-top: 30px; }
  .stat-number{ width: 140px; height:140px; }
}

section{ padding: 46px 0; }
section h2{ font-size: 1.55rem; margin: 0 0 8px; letter-spacing: -.005em; }
section .lede{ color: var(--ink-soft); margin: 0 0 20px; max-width: 62ch; }

/* --- controls ---------------------------------------------------------- */
.controls{
  display:flex; flex-wrap:wrap; gap: 10px 16px; align-items:center;
  margin: 0 0 18px;
  font-family: var(--sans);
}
.segmented{
  display:inline-flex; background: var(--paper-sunk); border: 1px solid var(--line);
  border-radius: 999px; padding: 3px; gap: 2px;
}
button.filter{
  font-family: inherit;
  font-size: .84rem;
  padding: 8px 15px;
  border-radius: 999px;
  border: none;
  background: transparent;
  color: var(--ink-soft);
  cursor: pointer;
  transition: background .15s ease, color .15s ease;
}
button.filter[aria-pressed="true"]{
  background: var(--paper-raised);
  color: var(--ink);
  font-weight: 700;
  box-shadow: 0 2px 6px -2px rgba(0,0,0,.25);
}
button.filter .dot{ display:inline-block; width:7px; height:7px; border-radius:50%; margin-right:6px; vertical-align:middle; }
button.filter.studio .dot{ background: var(--studio); }
button.filter.wave .dot{ background: var(--wave); }
.count-live{ font-size: .8rem; color: var(--ink-faint); }
.period-filter{ display:inline-flex; align-items:center; gap:8px; font-size:.8rem; color:var(--ink-soft); }
.period-filter select{
  appearance:none; border:1px solid var(--line); border-radius:999px; padding:8px 30px 8px 12px;
  background:var(--paper-raised); color:var(--ink); font:inherit; cursor:pointer;
  background-image:linear-gradient(45deg, transparent 50%, currentColor 50%), linear-gradient(135deg, currentColor 50%, transparent 50%);
  background-position:calc(100% - 15px) 50%, calc(100% - 11px) 50%;
  background-size:4px 4px, 4px 4px; background-repeat:no-repeat;
}

/* --- map --------------------------------------------------------------- */
.map-shell{
  position: relative;
  background: linear-gradient(180deg, var(--paper-sunk), var(--paper-raised) 40%);
  border: 1px solid var(--line);
  border-radius: 14px;
  box-shadow: var(--shadow-lg);
  padding: 6px;
}
.map-inner{
  border-radius: 10px;
  overflow: hidden;
  background: var(--paper-raised);
}
svg#map{ width: 100%; height: auto; display:block; }
.county{
  fill: var(--county-idle);
  stroke: var(--county-idle-stroke);
  stroke-width: 0.75;
  transition: fill .2s ease, opacity .2s ease;
  cursor: default;
}
.county.touched-studio{ fill: var(--studio-soft); stroke: var(--studio); cursor: pointer; }
.county.touched-wave{ fill: var(--wave-soft); stroke: var(--wave); cursor: pointer; }
.county.touched-both{ fill: url(#hatch-both); stroke: var(--ink-soft); cursor: pointer; }
.county.dimmed{ opacity: .35; }
.county:hover, .county:focus-visible{ filter: brightness(0.95); }
:root:not([data-theme="light"]) .county:hover{ filter: brightness(1.25); }
.country-outline{ fill:none; stroke: var(--country-line); stroke-width: 2; stroke-linejoin: round; pointer-events: none; }

.region-blob{ fill: var(--accent); opacity: .16; stroke: var(--accent); stroke-width: 1.4; stroke-dasharray: 3,4; }
.region-blob.hidden{ display:none; }

.pin{ cursor: pointer; }
.pin-hit, .extra-hit{ fill: var(--map-hit); pointer-events: all; }
.pin circle.halo{ fill: none; stroke-width: 3; opacity: 0; transition: opacity .15s ease; }
.pin:hover circle.halo, .pin:focus-visible circle.halo{ opacity: .45; }
.pin circle.dot{ stroke: var(--paper-raised); stroke-width: 1.6; transition: r .12s ease; }
.pin.studio circle.dot{ fill: var(--studio-strong); }
.pin.studio circle.halo{ stroke: var(--studio-strong); }
.pin.wave circle.dot{ fill: var(--wave-strong); }
.pin.wave circle.halo{ stroke: var(--wave-strong); }
.pin.hidden{ display:none; }
.pin:focus-visible circle.dot, .pin:hover circle.dot{ stroke: var(--focus); stroke-width: 2.6; }
.pin.active circle.dot{ r: 9; stroke: var(--accent); stroke-width: 2.4; }

.extra-point{ cursor: pointer; }
.extra-dot{ stroke: var(--paper-raised); stroke-width: 1.2; transition: r .12s ease, stroke-width .12s ease; }
.extra-dot.shoot{ fill: var(--ink-soft); }
.extra-dot.story{ fill: none; stroke: var(--accent); stroke-width: 1.6; stroke-dasharray: 2,2; }
.extra-dot.hidden{ display:none; }
.extra-point:hover .extra-dot, .extra-point:focus-visible .extra-dot, .extra-point.active .extra-dot{ stroke: var(--focus); stroke-width: 2.5; }
.extra-point.active .extra-dot{ stroke: var(--accent); }
.leader-line{ stroke: var(--ink-faint); stroke-width: 1; stroke-dasharray: 2,3; opacity:.6; fill:none; }
.leader-line.hidden{ display:none; }

.county-tooltip{
  position: absolute;
  pointer-events: none;
  background: var(--ink);
  color: var(--paper);
  font-family: var(--sans);
  font-size: .78rem;
  padding: 6px 10px;
  border-radius: 6px;
  transform: translate(-50%, -120%);
  white-space: nowrap;
  opacity: 0;
  transition: opacity .1s ease;
  z-index: 5;
  box-shadow: var(--shadow);
}
.county-tooltip.visible{ opacity: 1; }
:root:not([data-theme="light"]) .county-tooltip{ background: var(--paper-raised); color: var(--ink); border: 1px solid var(--line); }

.legend{
  display:flex; gap: 18px; flex-wrap:wrap; align-items:center;
  font-family: var(--sans);
  font-size: .8rem; color: var(--ink-soft);
  margin-top: 14px;
}
.legend .swatch{ display:inline-block; width:14px; height:14px; border-radius:3px; margin-right:6px; vertical-align:middle; border: 1px solid var(--line); }
.legend .studio-sw{ background: var(--studio-soft); border-color: var(--studio); }
.legend .wave-sw{ background: var(--wave-soft); border-color: var(--wave); }
.legend .both-sw{ background: repeating-linear-gradient(45deg, var(--studio-soft) 0 4px, var(--wave-soft) 4px 8px); border-color: var(--ink-soft); }
.legend .region-sw{ background: var(--accent-soft); border: 1.4px dashed var(--accent); }
.legend .shoot-sw{ background: var(--ink-soft); border-color: var(--ink-soft); }
.legend .story-sw{ background: transparent; border: 1.4px dashed var(--accent); }
.map-note{ font-size:.8rem; color: var(--ink-faint); margin-top:8px; }

.card{
  margin-top: 20px;
  background: var(--paper-raised);
  border: 1px solid var(--line);
  border-left: 4px solid var(--accent);
  border-radius: 8px;
  padding: 20px 22px;
  box-shadow: var(--shadow);
}
.card[hidden]{ display:none; }
.card h3{ margin: 0 0 4px; font-size: 1.2rem; }
.card h4{ margin: 0 0 4px; font-size: 1.04rem; }
.card .meta{ font-family: var(--sans); font-size: .82rem; color: var(--ink-soft); margin: 0 0 12px; text-transform: uppercase; letter-spacing: .03em; }
.card p{ margin: 0 0 12px; }
.card a.src{ color: var(--accent); font-family: var(--sans); font-size: .85rem; font-weight: 600; text-decoration:none; }
.card a.src:hover{ text-decoration: underline; }
.overlap-details{ display:grid; gap:16px; margin-top:16px; }
.overlap-detail{ border-top:1px solid var(--line); padding-top:14px; }
.overlap-detail:first-child{ border-top:none; padding-top:0; }
.overlap-detail p:last-of-type{ margin-bottom:10px; }

.callout{
  background: var(--wave-soft);
  border-radius: 10px;
  padding: 20px 22px;
  margin: 30px 0 0;
  border: 1px solid var(--wave);
}
.callout p{ margin:0; }
.callout strong{ color: var(--wave-strong); }

.finding-grid{ display:grid; grid-template-columns:repeat(3, 1fr); gap:12px; margin-top:24px; }
.finding{
  background:var(--paper-raised); border:1px solid var(--line); border-radius:10px;
  padding:18px 18px 16px; box-shadow:var(--shadow);
}
.finding-number{ margin:0 0 8px; color:var(--accent); font:800 1.7rem/1 var(--sans); letter-spacing:-.04em; }
.finding h3{ margin:0 0 7px; font-size:1.02rem; line-height:1.2; }
.finding p:last-child{ margin:0; color:var(--ink-soft); font-size:.9rem; }

.archive-figure{ margin: 28px 0 0; }
.archive-figure img{ display:block; width:100%; max-height:360px; object-fit:cover; border:1px solid var(--line); border-radius:10px; box-shadow:var(--shadow); }
.archive-figure figcaption{ margin-top:9px; color:var(--ink-soft); font-size:.82rem; }
.archive-figure figcaption strong{ color:var(--ink); }

table.data{
  width: 100%;
  border-collapse: collapse;
  font-size: .92rem;
  margin-top: 8px;
}
.table-scroll{ overflow-x: auto; border: 1px solid var(--line); border-radius: 10px; }
table.data th, table.data td{
  text-align: left;
  padding: 12px 14px;
  border-bottom: 1px solid var(--line-soft);
  vertical-align: top;
}
table.data th{ font-family: var(--sans); font-size:.72rem; text-transform:uppercase; letter-spacing:.07em; color: var(--ink-faint); background: var(--paper-sunk); }
table.data tbody tr:hover{ background: var(--paper-sunk); }
table.data tr:last-child td{ border-bottom: none; }
table.data a{ color: var(--accent); text-decoration:none; }
table.data a:hover{ text-decoration:underline; }
.table-controls{
  display:flex; flex-wrap:wrap; gap:10px 16px; align-items:center;
  margin: 0 0 12px; font-family:var(--sans);
}
.table-filter-group{
  display:inline-flex; flex-wrap:wrap; align-items:center; gap:2px;
  background:var(--paper-sunk); border:1px solid var(--line); border-radius:999px; padding:3px;
}
.table-filter-label{
  padding:7px 10px 7px 12px; color:var(--ink-faint); font-size:.72rem;
  font-weight:700; letter-spacing:.07em; text-transform:uppercase;
}
button.table-filter{
  appearance:none; border:0; border-radius:999px; background:transparent; color:var(--ink-soft);
  cursor:pointer; font:inherit; font-size:.8rem; padding:8px 12px;
}
button.table-filter[aria-pressed="true"]{
  background:var(--paper-raised); color:var(--ink); font-weight:700; box-shadow:0 2px 6px -2px rgba(0,0,0,.25);
}
button.table-filter:focus-visible,
.table-load-more:focus-visible{ outline:3px solid var(--focus); outline-offset:2px; }
.table-count{ color:var(--ink-faint); font-size:.8rem; }
.table-actions{ display:flex; justify-content:center; margin:16px 0 0; }
.table-load-more{
  appearance:none; border:1px solid var(--line); border-radius:999px; background:var(--paper-raised);
  color:var(--ink); cursor:pointer; font:700 .82rem var(--sans); padding:10px 16px;
}
.table-load-more:hover{ border-color:var(--accent); color:var(--accent); }

.method{
  font-size: .92rem;
  color: var(--ink-soft);
  border-top: 1px solid var(--line);
  padding-top: 26px;
}
.method-heading{ font-size:1.1rem; }

.crosslink{
  background: var(--paper-sunk);
  border-radius: 10px;
  padding: 18px 20px;
  margin: 14px 0 0;
  border: 1px dashed var(--line);
}
.crosslink a{ color: var(--ink); font-weight: 700; }

footer{
  padding: 34px 0 10px;
  font-family: var(--sans);
  font-size: .8rem;
  color: var(--ink-faint);
  border-top: 1px solid var(--line);
  margin-top: 10px;
}

.visually-hidden{
  position:absolute; width:1px; height:1px; padding:0; margin:-1px;
  overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0;
}

@media (max-width: 600px){
  header.hero{ padding: 40px 0 24px; }
  .deck{ font-size: 1.05rem; }
  section{ padding: 32px 0; }
  .controls{ position: sticky; top: 0; background: var(--paper); z-index: 5; padding: 10px 0; margin-bottom: 12px; flex-direction: column; align-items: stretch; }
  .segmented{ width: 100%; }
  button.filter{ flex: 1 1 0; text-align: center; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; padding-left: 8px; padding-right: 8px; }
  .period-filter{ justify-content:space-between; }
  .period-filter select{ flex:1; }
  .table-controls{ align-items:stretch; flex-direction:column; }
  .table-filter-group{ width:100%; border-radius:12px; }
  .table-filter-label{ flex:1 0 100%; padding-bottom:4px; }
  button.table-filter{ flex:1 1 0; text-align:center; padding-left:8px; padding-right:8px; }
  .finding-grid{ grid-template-columns:1fr; }
}

@media (prefers-reduced-motion: reduce){
  .pin, .pin circle, .extra-point, .extra-point circle, .county, button.filter, button.table-filter, .table-load-more, .stat-ring-fill{ transition: none !important; }
}
