:root {
  --aged-paper: #f4e9d8;
  --parchment: #efe2cc;
  --charcoal: #25251f;
  --ink: #171914;
  --forest: #355e3b;
  --gold: #c9a66b;
  --rust: #8c4f36;
  --night: #111612;
  font-size: 17px;
}

.skip-link { position: fixed; z-index: 1000; top: .6rem; left: .6rem; padding: .65rem 1rem; color: white; background: var(--rust); transform: translateY(-180%); }
.skip-link:focus { transform: translateY(0); }
.public-live-body .archive-header { grid-template-columns: auto 1fr; }
.public-live-body .archive-header nav { justify-self: end; }
.public-live-body .rail-town-hero { min-height: 205px; overflow: hidden; background: linear-gradient(0deg, #111612, #263229); }
.public-live-body .rail-town-hero-image { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; filter: sepia(.16) saturate(.78); }
.public-live-body .rail-town-hero::after { content: ""; position: absolute; inset: 0; background: linear-gradient(0deg, rgba(11,14,11,.9), rgba(11,14,11,.14)); }
.public-live-body .rail-town-hero > div { position: relative; z-index: 1; padding-bottom: 2.8rem; }
.public-live-body .rail-town-hero small { left: 1.6rem; right: .7rem; line-height: 1.35; }
.public-live-body .memorial { background-image: linear-gradient(rgba(11,15,12,.82), rgba(11,15,12,.88)), url("/static/archive/discovery-strip-v1.webp"); }
.public-map-points { position: absolute; z-index: 7; inset: 0; pointer-events: none; overflow: hidden; }
.public-map-points svg { width: 100%; height: 100%; pointer-events: none; }
.public-map-points a { pointer-events: auto; }
.public-map-points circle { fill: #c35f24; stroke: #f8ecd7; stroke-width: 2.5; filter: drop-shadow(0 0 3px #101410); transform-box: fill-box; transform-origin: center; transition: transform 160ms ease; }
.public-map-points a:hover circle, .public-map-points a:focus circle { fill: var(--gold); transform: scale(1.7); }
.published-discoveries { min-height: 290px; padding: 1rem 1.4rem 1.35rem; color: #eadcc4; background: #111713; border-top: 1px solid rgba(201,166,107,.25); }
.published-card-grid { margin-top: .65rem; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .55rem; }
.published-card { min-width: 0; overflow: hidden; background: #151b17; border: 1px solid rgba(201,166,107,.28); }
.published-card-image { height: 105px; background: url("/static/archive/discovery-strip-v1.webp") 0 center / 400% 100% no-repeat; }
.published-card-image.sprite-2 { background-position: 33.333% center; }.published-card-image.sprite-3 { background-position: 66.666% center; }.published-card-image.sprite-4 { background-position: 100% center; }
.published-card > div:last-child { min-height: 145px; padding: .7rem; display: flex; flex-direction: column; }
.published-card p { margin: 0; color: var(--gold); font-size: .58rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.published-card h3 { margin: .45rem 0; font: 500 .9rem/1.3 Merriweather, Georgia, serif; }.published-card h3 a { color: #f0e4cf; text-decoration: none; }.published-card h3 a:hover { text-decoration: underline; }
.published-card span { color: #bdb3a1; font-size: .72rem; line-height: 1.5; }.published-card small { margin-top: auto; padding-top: .5rem; color: #938978; font-size: .6rem; }
.public-empty { padding: 1rem; color: #554d40; background: rgba(239,226,204,.72); border-left: 3px solid var(--gold); }
.published-discoveries .public-empty { grid-column: 1 / -1; color: #d7c9b2; background: rgba(239,226,204,.08); }
.public-empty h2, .public-empty h3, .public-empty p { margin: .25rem 0; }

.launch-gate { min-height: 100vh; margin: 0; display: grid; place-items: center; padding: 2rem; color: #efe2cc; background: radial-gradient(circle at 65% 20%, rgba(140,79,54,.22), transparent 32%), linear-gradient(rgba(15,19,15,.78), rgba(15,19,15,.98)); font-family: "Source Sans Pro", "Libre Franklin", Arial, sans-serif; }
.launch-gate main { width: min(620px, 100%); padding: clamp(2rem, 7vw, 4.5rem); text-align: center; background: rgba(17,22,18,.9); border: 1px solid rgba(201,166,107,.45); box-shadow: 0 25px 80px rgba(0,0,0,.45); }
.launch-gate h1 { margin: .4rem 0 1rem; color: #f4e9d8; font: 500 clamp(2.2rem, 7vw, 4.8rem)/1 Merriweather, Georgia, serif; }.launch-gate p { line-height: 1.65; }.launch-gate small { color: var(--gold); text-transform: uppercase; letter-spacing: .07em; }
.public-eyebrow { color: var(--rust); font-size: .73rem; font-weight: 800; letter-spacing: .13em; text-transform: uppercase; }

.public-paper-page { min-height: 100vh; margin: 0; color: var(--ink); background: var(--aged-paper) url("/static/texture/paper-grain.webp") repeat; font-family: "Source Sans Pro", "Libre Franklin", Arial, sans-serif; }
.paper-header { min-height: 72px; padding: 1rem clamp(1rem, 5vw, 5rem); display: flex; align-items: center; justify-content: space-between; color: #eadcc4; background: var(--night); border-bottom: 1px solid rgba(201,166,107,.3); }.paper-header a { color: inherit; text-decoration: none; }.paper-header > a { display: flex; align-items: center; gap: .7rem; font: 500 1.1rem Merriweather, Georgia, serif; }.paper-header small { color: var(--gold); font: .62rem Inter, Arial, sans-serif; }.paper-header nav { display: flex; gap: 1.2rem; font-size: .75rem; text-transform: uppercase; }
.search-page { width: min(1060px, calc(100% - 2rem)); margin: 0 auto; padding: clamp(2rem, 6vw, 5rem) 0; }.search-page > h1 { margin: .25rem 0 1.5rem; font: 500 clamp(2rem, 5vw, 4rem) Merriweather, Georgia, serif; }
.paper-search { max-width: 700px; padding: 1rem; background: var(--parchment); border: 1px solid rgba(70,54,31,.25); }.paper-search label { display: block; margin-bottom: .45rem; font-weight: 700; }.paper-search div { display: flex; }.paper-search input { min-width: 0; flex: 1; padding: .8rem; border: 1px solid #9c8b70; }.paper-search button { padding: .8rem 1.2rem; color: white; background: var(--rust); border: 0; cursor: pointer; }
.search-results { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }.search-results article { padding: 1.2rem; background: rgba(239,226,204,.8); border: 1px solid rgba(70,54,31,.2); }.search-results p { margin: 0; color: var(--rust); font-size: .65rem; font-weight: 800; text-transform: uppercase; }.search-results h2 { margin: .4rem 0; font: 500 1.35rem Merriweather, Georgia, serif; }.search-results h2 a { color: var(--ink); }.search-results span { display: block; line-height: 1.55; }.search-results small { display: block; margin-top: .7rem; color: #716652; }

.public-town-live .town-banner small { display: block; margin-top: .7rem; color: #d1c3aa; font-size: .58rem; text-transform: uppercase; }
.public-town-live .town-banner:not(.has-approved-hero) { background: radial-gradient(circle at 72% 34%, rgba(201,166,107,.16), transparent 28%), linear-gradient(130deg,#1c261e,#101510 65%); }
.public-town-live .town-banner-image { z-index: 0; }
.evidence-overview { min-width: 0; }
.story-layout { display: grid; grid-template-columns: minmax(0,1.2fr) minmax(300px,.8fr); gap: clamp(1.5rem,4vw,4rem); align-items: start; }
.story-visuals { display: grid; gap: 1rem; }
.story-visuals figure { margin: 0; overflow: hidden; background: linear-gradient(180deg,#fff8ec,#efe2cc); border: 1px solid rgba(65,50,31,.2); box-shadow: 0 10px 28px rgba(0,0,0,.11); }
.story-visuals img { width: 100%; height: 250px; display: block; object-fit: cover; filter: sepia(.12) saturate(.82); }
.story-visuals figcaption { padding: .85rem; color: #403a31; font: .8rem/1.5 "Source Sans Pro","Libre Franklin",Arial,sans-serif; }
.story-visuals figcaption small { display: block; margin-top: .35rem; color: var(--rust); font-size: .62rem; text-transform: uppercase; }
.public-town-live .geo-grid .historic-geo-card { grid-area: historic; }
.public-town-live .geo-grid img { filter: sepia(.1) saturate(.82); }
.public-town-live .geo-grid .historic-geo-card > img { height: 560px; }
.public-story, .public-claims, .public-sources { padding: clamp(1.5rem, 4vw, 3.5rem); border-top: 1px solid rgba(65,50,31,.18); }
.public-story { background: var(--aged-paper); }.public-story article { max-width: 850px; }.public-story article p { color: #403a31; font: 1.08rem/1.8 "Cormorant Garamond", Georgia, serif; }
.public-story .story-subheading { margin: 2rem 0 .5rem; color: var(--ink); font: 700 1.22rem/1.35 Merriweather, Georgia, serif; letter-spacing: -.015em; }
.public-claims { background: var(--parchment); }.public-claims ol { margin: 1.25rem 0 0; padding: 0; display: grid; gap: .65rem; list-style: none; }.public-claims li { padding: 1rem 1.15rem; background: rgba(244,233,216,.7); border-left: 3px solid var(--forest); }.public-claims li p { margin: 0 0 .45rem; font: 600 1rem/1.5 Merriweather, Georgia, serif; }.public-claims li small { color: var(--rust); font-size: .65rem; font-weight: 800; text-transform: uppercase; }
.public-sources { background: var(--aged-paper); }.public-sources > div { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: .7rem; }.public-sources article { padding: 1rem; background: rgba(239,226,204,.65); border: 1px solid rgba(65,50,31,.15); }.public-sources h3 { margin: 0; font: 600 .92rem/1.35 Merriweather, Georgia, serif; }.public-sources p { margin: .4rem 0; color: #554d40; }.public-sources small { color: var(--rust); font-weight: 800; text-transform: uppercase; }

/* Town Entry Standard v2 and governed media viewing. */
.public-home-footer { padding:.55rem 1rem; text-align:center; background:#0d110e; border-top:1px solid rgba(201,166,107,.14); }
.public-home-footer a { color:#9f947f; font-size:.72rem; letter-spacing:.06em; text-decoration:none; }
.public-home-footer a:hover,.public-home-footer a:focus-visible { color:var(--gold); text-decoration:underline; }
.town-banner::before { pointer-events: none; }
a.town-banner-media { position: absolute; z-index: 0; inset: 0; color: white; }
.town-banner-media .town-banner-image { position: absolute; }
.town-banner-media > span { position: absolute; right: 1rem; bottom: 1rem; padding: .45rem .65rem; color: white; background: rgba(17,22,18,.8); border: 1px solid rgba(201,166,107,.55); font-size: .65rem; font-weight: 800; text-transform: uppercase; }
.rail-town-hero > a { position: absolute; z-index: 0; inset: 0; }
.rail-town-hero > a .media-open-cue { z-index: 2; right: .55rem; top: .55rem; bottom: auto; }
[data-media-lightbox] { position: relative; display: block; cursor: zoom-in; }
[data-media-lightbox]:focus-visible { outline: 3px solid var(--gold); outline-offset: 3px; }
.media-open-cue { position: absolute; right: .55rem; bottom: .55rem; padding: .3rem .45rem; color: #fff8ec; background: rgba(17,22,18,.82); border: 1px solid rgba(201,166,107,.55); font-size: .58rem; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; }
.story-visuals figcaption strong { display: block; margin-bottom: .25rem; color: var(--rust); font-size: .65rem; letter-spacing: .06em; text-transform: uppercase; }
.media-lightbox { width: 100vw; max-width: none; height: 100vh; max-height: none; margin: 0; padding: 0; color: #f4e9d8; background: rgba(10,13,10,.98); border: 0; }
.media-lightbox::backdrop { background: rgba(5,7,5,.92); }
.media-lightbox-close { position: fixed; z-index: 3; top: 1rem; right: 1rem; width: 3rem; height: 3rem; color: white; background: rgba(140,79,54,.9); border: 1px solid var(--gold); border-radius: 50%; font-size: 2rem; cursor: pointer; }
.media-lightbox-frame { min-height: 100%; padding: clamp(3.5rem,6vw,5rem) clamp(1rem,5vw,4rem) 2rem; display: grid; grid-template-columns: minmax(0,3fr) minmax(260px,1fr); gap: 2rem; align-items: center; }
.media-lightbox-frame img { width: 100%; max-height: calc(100vh - 7rem); object-fit: contain; }
.media-lightbox-frame h2 { margin: .5rem 0; font: 700 clamp(1.4rem,3vw,2.5rem)/1.2 Merriweather,Georgia,serif; }
.media-lightbox-frame small { color: var(--gold); font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.media-lightbox-frame p { color: #d8ccb8; line-height: 1.65; }
.media-lightbox-frame span { display: block; color: #aca18e; }
.media-lightbox-frame a { display: inline-block; margin-top: 1.2rem; color: var(--gold); }
.town-place-grid { margin-top: 1.5rem; display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: .75rem; }
.town-place-grid > div { padding: 1rem; background: rgba(255,250,240,.55); border-left: 3px solid var(--gold); }
.town-place-grid dt { color: var(--rust); font-size: .65rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; }
.town-place-grid dd { margin: .4rem 0 0; font: 600 .92rem/1.4 Merriweather,Georgia,serif; }
.timeline-section,.coverage-section,.community-records,.gallery-section,.readiness-section { padding: clamp(2rem,5vw,5rem); border-top: 1px solid rgba(65,50,31,.18); }
.timeline-section,.community-records,.readiness-section { background: var(--aged-paper); }
.coverage-section,.gallery-section { background: var(--parchment); }
.town-entry-timeline { margin: 2rem 0 0; padding: 1.5rem 0 0; display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 1rem; list-style: none; border-top: 2px solid var(--gold); }
.town-entry-timeline li { position: relative; padding: 1rem; background: rgba(255,250,240,.55); }
.town-entry-timeline li::before { content: ""; position: absolute; top: -2.18rem; left: 1rem; width: 16px; height: 16px; background: var(--gold); border: 3px solid var(--aged-paper); border-radius: 50%; box-shadow: 0 0 0 4px rgba(201,166,107,.2); }
.town-entry-timeline time { color: var(--rust); font: 700 .78rem Merriweather,Georgia,serif; }
.town-entry-timeline p { line-height: 1.55; }
.town-entry-timeline small { color: var(--forest); font-weight: 800; text-transform: uppercase; }
.standard-empty { padding: 1.25rem; color: #554d40; background: rgba(255,250,240,.55); border-left: 4px solid var(--gold); }
.standard-empty strong { font: 700 1rem Merriweather,Georgia,serif; }
.standard-empty p { margin-bottom: 0; }
.coverage-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: .8rem; }
.coverage-card,.community-record-grid article,.readiness-grid article { padding: 1rem; background: linear-gradient(180deg,#fff8ec,#efe2cc); border: 1px solid rgba(65,50,31,.16); box-shadow: 0 6px 18px rgba(0,0,0,.06); }
.coverage-card { border-left: 4px solid #8b8170; }
.coverage-card.status-documented { border-left-color: var(--forest); }
.coverage-card.status-partial { border-left-color: var(--gold); }
.coverage-card h3,.community-record-grid h3,.readiness-grid h3 { margin: .35rem 0; font: 700 .95rem/1.35 Merriweather,Georgia,serif; }
.coverage-card small,.community-record-grid small,.readiness-grid small { color: var(--rust); font-size: .62rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; }
.coverage-card p,.community-record-grid p,.readiness-grid p { margin-bottom: 0; color: #554d40; line-height: 1.55; }
.community-record-grid { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: .8rem; }
.town-media-gallery { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 1rem; }
.town-media-gallery figure { margin: 0; overflow: hidden; background: #fff8ec; border: 1px solid rgba(65,50,31,.18); box-shadow: 0 8px 22px rgba(0,0,0,.08); }
.town-media-gallery img { width: 100%; height: 260px; display: block; object-fit: cover; filter: sepia(.08) saturate(.88); transition: transform .2s ease; }
.town-media-gallery a:hover img { transform: scale(1.02); }
.town-media-gallery figcaption { padding: 1rem; }
.town-media-gallery figcaption small { color: var(--rust); font-size: .64rem; font-weight: 800; letter-spacing: .07em; text-transform: uppercase; }
.town-media-gallery figcaption h3 { margin: .45rem 0; font: 700 1rem/1.35 Merriweather,Georgia,serif; }
.town-media-gallery figcaption p { color: #554d40; line-height: 1.5; }
.town-media-gallery figcaption span { color: #756b59; font-size: .7rem; }
.town-map-viewer { margin-bottom: 1rem; padding: 1rem; display: grid; grid-template-columns: minmax(0,2fr) minmax(240px,1fr); gap: 1rem; background: #172019; color: #efe2cc; border: 1px solid rgba(201,166,107,.45); }
.town-map-stage { position: relative; min-height: 330px; overflow: hidden; background: linear-gradient(rgba(20,27,21,.25),rgba(20,27,21,.35)),url("/static/maps/archival-us-map-v2.webp") center/cover; }
.town-map-point-layer { position: absolute; inset: 0; }
.town-map-point-layer svg { width: 100%; height: 100%; }
.town-map-point-layer circle:not(.town-map-marker-ring) { fill: #c35f24; stroke: #fff2dc; stroke-width: 4; filter: drop-shadow(0 0 8px #111); }
.town-map-point-layer .town-map-marker-ring { fill: rgba(201,166,107,.18); stroke: var(--gold); stroke-width: 3; }
.town-map-viewer > div:last-child { align-self: center; }
.town-map-viewer > div:last-child > strong { font: 700 1.15rem Merriweather,Georgia,serif; }
.town-map-viewer p { color: #cfc2ad; line-height: 1.55; }
.town-map-controls { display: flex; flex-wrap: wrap; gap: .5rem; }
.town-map-controls button { padding: .55rem .75rem; color: #efe2cc; background: #263329; border: 1px solid rgba(201,166,107,.5); cursor: pointer; }
.readiness-grid { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: .8rem; }
.geo-grid article > a { display: block; }
.geo-grid article > a img { width: 100%; height: 210px; display: block; object-fit: cover; }
.public-town-live .geo-grid .historic-geo-card > a img { height: 560px; }

/* Public readability scale: preserve the art direction without microtype. */
.public-live-body .archive-header nav a { font-size: .64rem; }
.public-live-body .eyebrow { font-size: .72rem; }
.public-live-body .hero-copy > p:not(.eyebrow, .search-notice) { font-size: 1.06rem; }
.public-live-body .hero-search input { font-size: .84rem; }
.public-live-body .action { font-size: .62rem; }
.public-live-body .map-card-label { font-size: .6rem; }
.public-live-body .featured-map-card h2 { font-size: 1.05rem; }
.public-live-body .featured-map-card dl { font-size: .64rem; }
.public-live-body .featured-map-card a { font-size: .62rem; }
.public-live-body .map-disclaimer { top: .8rem; right: .8rem; bottom: auto; max-width: 240px; font-size: .56rem; line-height: 1.35; text-align: right; }
.public-live-body .section-bar h2 { font-size: .9rem; }
.public-live-body .section-bar span { font-size: .58rem; }
.public-live-body .pathways h2 { font-size: .86rem; }
.public-live-body .pathways p { font-size: .68rem; }
.public-live-body .pathways a { font-size: .6rem; }
.public-live-body .memorial small { font-size: .54rem; }
.public-live-body .rail-utility { font-size: .58rem; }
.public-live-body .rail-town-hero span { font-size: .6rem; }
.public-live-body .rail-town-hero p { font-size: .8rem; }
.public-live-body .rail-town-hero small { font-size: .52rem; }
.public-live-body .rail-tabs a { font-size: .56rem; }
.public-live-body .rail-facts div { font-size: .66rem; }
.public-live-body .rail-kicker { font-size: .58rem; }
.public-live-body .rail-summary h3 { font-size: 1.02rem; }
.public-live-body .rail-summary > p:not(.rail-kicker) { font-size: .8rem; }
.public-live-body .rail-module > header h2 { font-size: .94rem; }
.public-live-body .rail-module > header span,
.public-live-body .rail-module > header a { font-size: .54rem; }
.public-live-body .history-callout strong { font-size: .72rem; }
.public-live-body .history-callout p { font-size: .68rem; }
.public-live-body .rail-records b { font-size: .54rem; }
.public-live-body .rail-geo img { width: 100%; height: 100px; display: block; object-fit: cover; border: 1px solid rgba(67,55,38,.18); filter: sepia(.12) saturate(.82); }
.public-live-body .rail-geo b { font-size: .62rem; }
.public-live-body .rail-geo small { font-size: .54rem; }

@media (min-width: 1200px) {
  :root { font-size: 18px; }
}

@media (max-width: 950px) {
  .public-live-body .expedition-shell { display: block; }
  .public-live-body .featured-rail { position: relative; height: auto; }
  .public-live-body .archive-header nav { display: none; }
  .public-live-body .rail-town-hero { min-height: 230px; }
  .public-live-body .rail-town-hero > div { padding-bottom: 3.2rem; }
  .public-live-body .rail-town-hero small { left: 1.6rem; right: 1.6rem; bottom: .8rem; line-height: 1.35; }
  .public-map-points { right: 0; }
  .published-card-grid { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .public-sources > div { grid-template-columns: 1fr 1fr; }
  .story-layout { grid-template-columns: 1fr; }
  .town-place-grid,.community-record-grid,.readiness-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .coverage-grid,.town-media-gallery { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .town-map-viewer,.media-lightbox-frame { grid-template-columns: 1fr; }
  .media-lightbox-frame { overflow: auto; align-content: start; }
}
@media (max-width: 620px) {
  .published-card-grid, .search-results, .public-sources > div { grid-template-columns: 1fr; }
  .paper-header nav { display: none; }
  .public-live-body .featured-map-card { display: none; }
  .town-place-grid,.community-record-grid,.readiness-grid,.coverage-grid,.town-media-gallery { grid-template-columns: 1fr; }
  .town-entry-timeline { margin-left: 1rem; grid-template-columns: 1fr; border-top: 0; border-left: 2px solid var(--gold); }
  .town-entry-timeline li::before { top: 1rem; left: -1.65rem; }
  .town-map-stage { min-height: 240px; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
}
