/* ==========================================================================
   PRAIRIE theme (zt #1183; full site + city-agnostic, prairie-v2 zt #1195)

   CONCEPT: a city guide, not a listings dump. The site reads like one
   city's issue of a good regional magazine: a cover, departments, an
   index with dotted leaders, a feature-article guide page, a colophon.

   CITY-AGNOSTIC. This file names no place. The palette below is the
   FALLBACK and equals the Sioux Falls instance; each market's real palette
   comes from cities/<city>.json (config.CITY_IDENTITY), which base.html
   writes as a :root block AFTER this stylesheet, so it wins. Photographs are
   named there too. tests/test_city_identity.py checks each market's text
   pairs for WCAG AA, so a new palette cannot ship unreadable.

   THE SIOUX FALLS COLOR IS NOT INVENTED. Sioux quartzite (the pink stone the Big
   Sioux River falls over at Falls Park, and the face of every historic
   building downtown) gives the rose accent; the river gives the deep blue.
   The one signature device is the STRATA: three quartzite bands, like the
   ledges at the falls, used under the header and over the footer. Nothing
   else is decoration.

   ⛔ Standing rules of this site that the theme keeps (see static/site.css):
     - NO WORD IS LAID OVER A PHOTOGRAPH. No scrim, no plate, no filter, no
       opacity on any <img>. Every text/ground pair below is flat-on-flat, so
       no photograph can ever change a contrast ratio.
     - No JavaScript is required for anything visible. The scan tools and the
       to-top button stay gated on html.has-js.
   ⛔ Creative-runbook DO-NOT list honored: no cream/off-white ground (the
     ground is white; the rose and blue tints are panels), no italic accent
     words in headlines, no numbered section labels, no monospace labels, no
     pill-shaped buttons (3px corners throughout).

   WCAG AA, computed with the WCAG 2.1 luminance formula (scratchpad wcag.py):
     --ink    #14212b on #ffffff          16.38:1  body text
     --muted  #4d5a64 on #ffffff           7.09:1  meta, addresses
     --muted  #4d5a64 on --mist #f7ecea    6.12:1  meta in rose panels
     --link   #1c5877 on #ffffff           7.74:1  links
     --link   #1c5877 on --mist            6.69:1  links in rose panels
     --quartz #9b3a4b on #ffffff           6.77:1  kickers, counts, figures
     --quartz #9b3a4b on --mist            5.85:1
     #ffffff  on --quartz #9b3a4b          6.77:1  search button
     #ffffff  on --quartz-dd #7e2c3b       9.09:1  search button hover
     #ffffff  on --river #0f3b52          11.88:1  cover, footer, contact card
     --river-t #c9d9e3 on --river          8.21:1  secondary text on blue
     --rose-t  #f2c9c2 on --river          7.87:1  kickers + phone on blue
     --ink    on --rose-t #f2c9c2         10.85:1
   Rules and strata colors (#e7e2e0, #e6a79c, #d0848a) are borders only,
   never text.
   ========================================================================== */

/* Two faces per family (prairie-v2, for mobile LCP). The "-ascii" files hold
   ASCII plus the punctuation this site uses, and are the only ones base.html
   preloads (106 KB for both, down from 162 KB). The full files answer only for
   the rest of Latin-1 (an accented business name, say), so a page downloads them
   only when it actually contains such a character. Same fonts, same axes. */
@font-face {
  font-family: "Newsreader";
  src: url("fonts/newsreader-opsz-ascii.woff2") format("woff2");
  font-weight: 200 800;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0020-007E, U+00A0, U+00A9, U+00B7, U+2013-2014, U+2018-2019, U+201C-201D, U+2022, U+2026;
}
@font-face {
  font-family: "Newsreader";
  src: url("fonts/newsreader-opsz.woff2") format("woff2");
  font-weight: 200 800;
  font-style: normal;
  font-display: swap;
  unicode-range: U+00A1-00A8, U+00AA-00B6, U+00B8-00FF, U+0131, U+0152-0153, U+02BC-02DC, U+0300-0327, U+201A, U+201E, U+2030-2044, U+20AC, U+2122, U+2212-2215;
}
@font-face {
  font-family: "Instrument Sans";
  src: url("fonts/instrument-sans-wght-ascii.woff2") format("woff2");
  font-weight: 400 700;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0020-007E, U+00A0, U+00A9, U+00B7, U+2013-2014, U+2018-2019, U+201C-201D, U+2022, U+2026;
}
@font-face {
  font-family: "Instrument Sans";
  src: url("fonts/instrument-sans-wght.woff2") format("woff2");
  font-weight: 400 700;
  font-style: normal;
  font-display: swap;
  unicode-range: U+00A1-00A8, U+00AA-00B6, U+00B8-00FF, U+0131, U+0152-0153, U+02BC-02DC, U+0300-0327, U+201A, U+201E, U+2030-2044, U+20AC, U+2122, U+2212-2215;
}

:root {
  --ground:   #ffffff;
  --ink:      #14212b;
  --muted:    #4d5a64;
  --link:     #1c5877;
  --link-h:   #0f3b52;
  --river:    #0f3b52;
  --river-2:  #164a66;
  --river-t:  #c9d9e3;
  --quartz:   #9b3a4b;
  --quartz-dd:#7e2c3b;
  --rose-t:   #f2c9c2;
  --mist:     #f7ecea;
  --sky:      #eef3f6;
  --rule:     #e7e2e0;
  --rule-2:   #d3cbc8;
  --strata-1: #f2c9c2;
  --strata-2: #d0848a;
  --strata-3: #9b3a4b;
  --s1: .35rem; --s2: .7rem; --s3: 1.1rem; --s4: 1.75rem; --s5: 2.75rem; --s6: 4rem; --s7: 6rem;
  --serif: "Newsreader", "Iowan Old Style", Georgia, "Times New Roman", serif;
  --sans: "Instrument Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif;
  --max: 1080px;
  --wide: 1280px;
  --measure: 66ch;
}

html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  background: var(--ground);
  color: var(--ink);
  font-family: var(--serif);
  font-optical-sizing: auto;
  font-size: 19px;
  line-height: 1.6;
  text-rendering: optimizeLegibility;
}
img { max-width: 100%; height: auto; }
a { color: var(--link); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; }
a:hover, a:focus { color: var(--link-h); text-decoration-thickness: 2px; }
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible,
textarea:focus-visible, summary:focus-visible {
  outline: 3px solid var(--quartz);
  outline-offset: 2px;
}

.wrap      { width: 100%; max-width: var(--max);  margin: 0 auto; padding: 0 1rem; box-sizing: border-box; }
.wrap-wide { width: 100%; max-width: var(--wide); margin: 0 auto; padding: 0 1rem; box-sizing: border-box; }
@media (min-width: 40em) { .wrap, .wrap-wide { padding: 0 1.75rem; } }

.skip { position: absolute; left: -9999px; background: #fff; color: var(--ink); padding: .75rem 1rem; z-index: 100; }
.skip:focus { left: 1rem; top: 1rem; }

h1, h2, h3 { font-family: var(--serif); color: var(--ink); font-optical-sizing: auto; }
h1 {
  font-size: clamp(2.3rem, 1.3rem + 3.2vw, 4.2rem);
  font-weight: 500;
  line-height: 1.02;
  letter-spacing: -0.018em;
  margin: 0 0 var(--s3);
}
h2 {
  font-size: clamp(1.55rem, 1.2rem + 1.1vw, 2.1rem);
  font-weight: 550;
  line-height: 1.12;
  letter-spacing: -0.01em;
  margin: var(--s5) 0 var(--s2);
}
h3 { font-size: 1.2rem; font-weight: 600; line-height: 1.2; margin: 0 0 .3rem; }
p { margin: 0 0 1em; }

/* Kickers: tracked sans capitals in quartzite. Labels, never numbered. */
.band-kicker, .hero-eyebrow, .dept-kicker, .contact-label, .contents-kicker, .brand-sub, .meta-count {
  font-family: var(--sans);
  font-weight: 600;
  letter-spacing: .14em;
  text-transform: uppercase;
}
.band-kicker, .dept-kicker {
  font-size: .76rem;
  color: var(--quartz);
  margin: 0 0 var(--s2);
}
.band-kicker a { color: inherit; }

.lede {
  font-size: clamp(1.15rem, 1.02rem + .45vw, 1.4rem);
  line-height: 1.5;
  color: var(--ink);
  font-weight: 400;
}
.meta {
  font-family: var(--sans);
  font-size: .9rem;
  color: var(--muted);
  margin: 0 0 var(--s3);
}

/* ---------- THE STRATA (the one signature device) --------------------- */
.strata { display: grid; grid-template-rows: 3px 3px 4px; }
.strata i { display: block; }
.strata i:nth-child(1) { background: var(--strata-1); }
.strata i:nth-child(2) { background: var(--strata-2); }
.strata i:nth-child(3) { background: var(--strata-3); }

/* ---------- HEADER ----------------------------------------------------- */
.site-header { background: #fff; }
.header-bar {
  display: flex; align-items: center; justify-content: space-between;
  gap: var(--s3); min-height: 4.4rem; flex-wrap: wrap;
}
.brand-block { line-height: 1; padding: .6rem 0; }
.brand {
  display: block;
  font-family: var(--serif);
  font-size: 1.7rem;
  font-weight: 600;
  letter-spacing: -0.02em;
  color: var(--ink);
  text-decoration: none;
  line-height: 1;
}
.brand:hover, .brand:focus { color: var(--ink); text-decoration: none; }
.brand-sub { display: block; font-size: .62rem; color: var(--quartz); margin-top: .35rem; }

.site-nav-wide { display: none; }
.header-right { display: none; }
.icon-link {
  display: inline-flex; align-items: center; justify-content: center;
  width: 2.5rem; height: 2.5rem; color: var(--ink); border-radius: 3px;
}
.icon-link:hover, .icon-link:focus { color: var(--quartz); background: var(--mist); }

.btn-add {
  display: inline-block;
  font-family: var(--sans);
  font-size: .88rem;
  font-weight: 600;
  padding: .6rem 1.1rem;
  background: transparent;
  color: var(--river) !important;
  border: 1.5px solid var(--river);
  border-radius: 3px;
  text-decoration: none;
  white-space: nowrap;
}
.btn-add:hover, .btn-add:focus { background: var(--river); color: #fff !important; }

.nav-disclosure { font-family: var(--sans); margin-left: auto; }
.nav-disclosure[open] { flex: 1 1 100%; margin-left: 0; }
.nav-toggle {
  list-style: none; cursor: pointer; display: inline-block; float: right;
  font-size: .8rem; font-weight: 600; letter-spacing: .1em; text-transform: uppercase;
  color: var(--river); border: 1.5px solid var(--river); border-radius: 3px; padding: .5rem 1rem;
}
.nav-toggle::-webkit-details-marker { display: none; }
.nav-toggle::marker { content: ""; }
.nav-disclosure[open] .nav-toggle { background: var(--river); color: #fff; }
.site-nav-mobile { clear: both; font-size: 1rem; padding: var(--s3) 0; }
.site-nav-mobile ul { list-style: none; margin: 0 0 var(--s2); padding: 0; }
.site-nav-mobile li { border-top: 1px solid var(--rule); }
.site-nav-mobile a { color: var(--ink); text-decoration: none; display: block; padding: .7rem .1rem; font-family: var(--serif); font-size: 1.15rem; }
.site-nav-mobile a:hover, .site-nav-mobile a:focus { color: var(--quartz); }
.site-nav-mobile .nav-sec a { font-family: var(--sans); font-size: .95rem; color: var(--muted); }
.site-nav-mobile .nav-cta { border-top: 0; padding: var(--s3) 0 0; }
.site-nav-mobile .nav-cta .btn-add { display: inline-block; font-family: var(--sans); font-size: .9rem; }

@media (min-width: 62em) {
  .nav-disclosure { display: none; }
  .header-bar { flex-wrap: nowrap; min-height: 5rem; }
  .site-nav-wide { display: block; flex: 1 1 auto; }
  .header-right { display: flex; align-items: center; gap: .6rem; }
  .nav-main { list-style: none; margin: 0; padding: 0; display: flex; justify-content: center; gap: .15rem; }
  .nav-main > li { position: relative; }
  .nav-main > li > a {
    display: flex; align-items: center; gap: .35rem;
    font-family: var(--sans); font-size: .93rem; font-weight: 500;
    color: var(--ink); text-decoration: none;
    padding: 1.7rem .6rem; border-bottom: 3px solid transparent;
  }
  .nav-main > li > a:hover, .nav-main > li:focus-within > a, .nav-main > li:hover > a {
    color: var(--quartz); border-bottom-color: var(--quartz);
  }
  .caret {
    width: .38rem; height: .38rem; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor;
    transform: rotate(45deg) translateY(-2px);
  }
  .drop {
    display: none; position: absolute; left: 0; top: 100%; z-index: 50;
    list-style: none; margin: 0; padding: .5rem 0; min-width: 14rem;
    background: #fff; border-top: 3px solid var(--quartz);
    box-shadow: 0 18px 40px rgba(15, 59, 82, .16);
  }
  .has-drop:hover .drop, .has-drop:focus-within .drop { display: block; }
  .drop a {
    display: block; padding: .5rem 1.1rem; font-family: var(--serif); font-size: 1.05rem;
    color: var(--ink); text-decoration: none;
  }
  .drop a:hover, .drop a:focus { background: var(--mist); color: var(--quartz); }
}

/* ---------- BREADCRUMBS ------------------------------------------------ */
.crumbs { font-family: var(--sans); font-size: .82rem; color: var(--muted); padding: var(--s4) 0 var(--s3); }
.crumbs a { color: var(--muted); }
.crumbs span[aria-current] { color: var(--ink); }

main { display: block; }
main .wrap { padding-bottom: var(--s6); }
body.has-rail main .wrap { max-width: 1240px; }

/* ---------- HOME: THE COVER -------------------------------------------
   Type on flat river blue, the photograph beside it at 100% with nothing on
   it. On a phone the photograph comes first, then the cover lines. */
.cover { display: grid; grid-template-columns: 1fr; background: var(--river); }
.cover-photo { order: -1; height: 44vh; min-height: 15rem; max-height: 26rem; overflow: hidden; background: var(--river-2); }
.cover-photo picture { display: contents; }
.cover-photo img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 50%; display: block; }
.cover-type { color: #fff; display: flex; flex-direction: column; justify-content: space-between; padding: var(--s4) 1rem var(--s3); }
.cover-type-inner { max-width: 34rem; }
.cover .hero-eyebrow { font-size: .74rem; color: var(--rose-t); margin: 0 0 var(--s3); }
.cover h1 {
  color: #fff;
  font-size: clamp(2.7rem, 1.4rem + 4.4vw, 5.6rem);
  font-weight: 450;
  line-height: .98;
  letter-spacing: -0.028em;
  margin: 0 0 var(--s3);
}
.hero-sub {
  font-family: var(--serif);
  font-size: clamp(1.15rem, 1rem + .6vw, 1.5rem);
  line-height: 1.4;
  color: var(--river-t);
  margin: 0 0 var(--s4);
  max-width: 28rem;
}
.hero-search { display: flex; max-width: 32rem; background: #fff; border-radius: 3px; overflow: hidden; }
.hero-search input[type="search"] {
  flex: 1 1 auto; min-width: 0; border: 0; padding: 1rem 1rem;
  font-family: var(--sans); font-size: 1rem; color: var(--ink); background: #fff;
}
.hero-search input::placeholder { color: var(--muted); opacity: 1; }
.hero-search button, .page-search button {
  flex: 0 0 auto; border: 0; cursor: pointer;
  background: var(--quartz); color: #fff;
  font-family: var(--sans); font-weight: 600; font-size: .95rem; letter-spacing: .02em;
  padding: 0 1.4rem;
}
.hero-search button:hover, .hero-search button:focus,
.page-search button:hover, .page-search button:focus { background: var(--quartz-dd); }
.hero-meta { font-family: var(--sans); font-size: .85rem; line-height: 1.5; color: var(--river-t); margin: var(--s3) 0 0; max-width: 30rem; }
.hero-meta strong { color: #fff; font-weight: 600; }
.cover-caption {
  font-family: var(--sans); font-size: .72rem; letter-spacing: .08em; text-transform: uppercase;
  color: var(--river-t); margin: var(--s4) 0 0; padding-top: var(--s2); border-top: 1px solid rgba(201, 217, 227, .35);
}
@media (min-width: 62em) {
  .cover { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); min-height: clamp(34rem, calc(100vh - 7.5rem), 50rem); }
  .cover-photo { order: 0; height: auto; max-height: none; }
  .cover-type { padding: var(--s6) var(--s5) var(--s4) max(1.75rem, calc((100vw - var(--wide)) / 2 + 1.75rem)); }
}

/* ---------- HOME: WELCOME ---------------------------------------------- */
.welcome { padding: var(--s6) 0 var(--s5); }
.welcome-grid { display: grid; gap: var(--s3); }
.welcome h2 { margin: 0; font-size: clamp(2rem, 1.3rem + 2.2vw, 3.3rem); font-weight: 450; line-height: 1.05; }
.welcome-sub { font-family: var(--sans); font-size: .8rem; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--quartz); margin: .4rem 0 var(--s2); }
.welcome-body { font-size: 1.25rem; line-height: 1.55; max-width: 36rem; margin: 0; }
@media (min-width: 56em) {
  .welcome-grid { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: var(--s6); align-items: start; }
}

/* ---------- HOME: DEPARTMENTS ------------------------------------------ */
.dept { padding: var(--s5) 0 var(--s6); border-top: 1px solid var(--rule); }
.dept-head { display: grid; gap: var(--s4); margin-bottom: var(--s5); align-items: end; }
.dept-plate { aspect-ratio: 16 / 9; overflow: hidden; background: var(--mist); }
.dept-plate picture { display: contents; }
.dept-plate img, .band-img { width: 100%; height: 100%; object-fit: cover; display: block; }
.dept-title h2 { margin: 0 0 var(--s2); font-size: clamp(2rem, 1.2rem + 2.6vw, 3.5rem); font-weight: 450; line-height: 1.02; }
.dept-title p:last-child { font-size: 1.2rem; color: var(--muted); margin: 0; }
.dept-title--solo { margin-bottom: var(--s4); max-width: 44rem; }
@media (min-width: 56em) {
  .dept-head { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: var(--s5); }
  .dept--photo-right .dept-plate { order: 2; }
  .dept--photo-right .dept-head { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); }
  .dept-title { padding-bottom: var(--s2); }
}

/* The two biggest categories in a department lead as feature figures:
   the count drives the scale, so the page means something at a glance. */
.features { list-style: none; margin: 0 0 var(--s4); padding: 0; display: grid; gap: var(--s4); }
.feature { border-top: 3px solid var(--river); padding-top: var(--s3); display: grid; grid-template-columns: auto 1fr; column-gap: var(--s4); align-items: end; }
.feature-figure {
  grid-row: span 2;
  font-family: var(--serif); font-weight: 350; font-size: clamp(3.6rem, 2.4rem + 4vw, 6.4rem);
  line-height: .85; letter-spacing: -0.04em; color: var(--quartz);
  font-variant-numeric: lining-nums;
}
.feature h3 { font-size: clamp(1.5rem, 1.2rem + 1vw, 2.1rem); font-weight: 500; margin: 0 0 .25rem; }
.feature h3 a { color: var(--ink); text-decoration: none; }
.feature h3 a:hover, .feature h3 a:focus { color: var(--quartz); text-decoration: underline; }
.feature p { margin: 0; font-family: var(--sans); font-size: .9rem; color: var(--muted); }
.feature .count { color: var(--quartz); font-weight: 600; }
@media (min-width: 48em) { .features { grid-template-columns: 1fr 1fr; gap: var(--s5); } }

/* The index: a magazine's table of contents, with dotted leaders. */
.index { list-style: none; margin: 0; padding: 0; columns: 1; column-gap: var(--s5); }
.index li {
  break-inside: avoid;
  display: grid; grid-template-columns: auto minmax(1rem, 1fr) auto; align-items: start;
  padding: .7rem 0; border-bottom: 1px solid var(--rule);
}
.index li > a { grid-column: 1; text-decoration: none; color: var(--ink); min-width: 0; }
.index li::after {
  content: ""; grid-column: 2; grid-row: 1;
  height: 1.05rem; margin: 0 .5rem; border-bottom: 2px dotted var(--rule-2);
}
.index .index-count { grid-column: 3; grid-row: 1; }
.index-name { display: block; font-family: var(--serif); font-size: 1.2rem; font-weight: 500; line-height: 1.3; }
.index-blurb { display: block; font-family: var(--sans); font-size: .82rem; color: var(--muted); line-height: 1.4; margin-top: .1rem; }
.index li > a:hover .index-name, .index li > a:focus .index-name { color: var(--quartz); text-decoration: underline; text-underline-offset: 3px; }
.index-count { font-family: var(--sans); font-size: .82rem; color: var(--quartz); font-weight: 600; white-space: nowrap; padding-top: .2rem; }
.index--plain li { grid-template-columns: 1fr; }
.index--plain li::after { display: none; }
.index--plain .index-name { color: var(--link); text-decoration: underline; text-underline-offset: 3px; text-decoration-thickness: 1px; }
@media (min-width: 40em) { .index { columns: 2; } }
@media (min-width: 62em) { .index { columns: 3; } .index--rail { columns: 1; } .index--plain { columns: 1; } }

/* ---------- HOME: GUIDES ----------------------------------------------- */
.guides-band { background: var(--mist); padding: var(--s5) 0 var(--s6); }
.guides-band .dept-title h2 { margin-top: 0; }
.section-intro { font-size: 1.2rem; color: var(--muted); }
.guide-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 0; }
.guide-list li { padding: var(--s3) 0; border-top: 1px solid var(--rule-2); }
.guide-list h3 { font-weight: 500; font-size: 1.35rem; }
.guide-list h3 a { color: var(--ink); text-decoration: none; }
.guide-list h3 a:hover, .guide-list h3 a:focus { color: var(--quartz); text-decoration: underline; }
.guide-list p { margin: 0; font-family: var(--sans); font-size: .92rem; color: var(--muted); line-height: 1.5; }
.guide-lead h3 { font-size: clamp(1.8rem, 1.3rem + 1.6vw, 2.6rem); font-weight: 450; line-height: 1.08; margin-bottom: var(--s2); }
.guide-lead p { font-family: var(--serif); font-size: 1.2rem; color: var(--ink); }
.guides-band .more { margin: var(--s4) 0 0; font-family: var(--sans); font-weight: 600; }
.guides-band a, .guides-band .more a { color: var(--link); }
@media (min-width: 56em) {
  .guide-list { grid-template-columns: minmax(0, 6fr) minmax(0, 5fr); column-gap: var(--s6); }
  .guide-lead { grid-row: span 8; border-top: 3px solid var(--quartz) !important; padding-top: var(--s4) !important; }
}

/* ---------- HOME: CTA -------------------------------------------------- */
.cta-band { display: grid; background: var(--river); color: #fff; }
.cta-media { aspect-ratio: 16 / 10; overflow: hidden; }
.cta-media picture { display: contents; }
.cta-inner { padding: var(--s5) 1rem; max-width: 36rem; }
.cta-inner h2 { color: #fff; margin: 0 0 var(--s3); font-size: clamp(2rem, 1.3rem + 2vw, 3.2rem); font-weight: 450; }
.cta-inner p { color: var(--river-t); font-size: 1.15rem; }
.cta-inner .fine { font-family: var(--sans); font-size: .85rem; }
.btn-add--solid { background: #fff; color: var(--river) !important; border-color: #fff; font-size: .95rem; padding: .8rem 1.3rem; }
.btn-add--solid:hover, .btn-add--solid:focus { background: var(--rose-t); border-color: var(--rose-t); color: var(--ink) !important; }
@media (min-width: 56em) {
  .cta-band { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); align-items: center; }
  .cta-media { aspect-ratio: auto; height: 100%; min-height: 28rem; }
  .cta-inner { padding: var(--s5) var(--s5); }
}

/* ---------- COLOPHON (who runs this) ----------------------------------- */
.colophon { padding: var(--s6) 0; }
.colophon-grid { display: grid; gap: var(--s3); }
.colophon h2 { margin: 0; font-size: clamp(1.8rem, 1.3rem + 1.5vw, 2.6rem); font-weight: 450; }
.colophon p { max-width: var(--measure); }
.colophon--inline { margin-top: var(--s6); padding: var(--s4) 0 0; border-top: 1px solid var(--rule); display: grid; gap: var(--s3); }
.colophon--inline h2 { font-size: 1.5rem; font-weight: 550; }
.colophon--inline p { font-size: 1rem; color: var(--muted); }
@media (min-width: 56em) {
  .colophon-grid, .colophon--inline { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: var(--s6); }
}

/* ---------- CATEGORY: OPENER + RAIL ------------------------------------
   Headline first, then the category's photograph as a wide plate (nothing on
   it), then the intro as the dek at the head of the main column. */
.opener { margin-bottom: var(--s5); }
.opener-head { display: grid; gap: 0 var(--s4); padding-top: var(--s2); }
.opener-head h1 { margin-bottom: var(--s2); max-width: 20ch; }
.meta-count { font-size: .8rem; color: var(--quartz); margin: 0; }
.opener .band { aspect-ratio: 3 / 1; overflow: hidden; background: var(--mist); margin-top: var(--s4); }
.opener .band--thin { aspect-ratio: 4 / 1; }
.opener .band picture { display: contents; }
.rail-main > .lede { margin: 0 0 var(--s4); padding-bottom: var(--s3); border-bottom: 3px solid var(--river); }
.rail-main > .lede p { margin: 0 0 .8em; }
.rail-main > .lede p:first-child { font-size: 1.12em; }
.rail-main > .lede p:last-child { margin-bottom: 0; }
@media (max-width: 40em) { .opener .band { aspect-ratio: 16 / 9; } .opener .band--thin { aspect-ratio: 16 / 7; } }
@media (min-width: 62em) {
  .opener-head { grid-template-columns: minmax(0, 1fr) auto; align-items: end; }
  .opener-head .band-kicker { grid-column: 1 / -1; }
  .opener-head h1 { margin-bottom: 0; }
  .opener-head .meta-count { padding-bottom: .9rem; }
}

.with-rail { display: grid; gap: var(--s4); }
@media (min-width: 62em) {
  .with-rail { grid-template-columns: minmax(0, 8fr) minmax(0, 4fr); gap: var(--s6); align-items: start; }
}
.rail h2 { font-size: 1.3rem; font-weight: 550; margin: 0 0 var(--s2); }
.rail > div + div { margin-top: var(--s5); }
.category-guides { background: var(--mist); padding: var(--s3) var(--s3) var(--s2); border-top: 3px solid var(--quartz); }
.category-guides ul { list-style: none; margin: 0; padding: 0; }
.category-guides li { padding: .6rem 0; border-top: 1px solid var(--rule-2); }
.category-guides li:first-child { border-top: 0; }
.category-guides a { font-size: 1.1rem; font-weight: 500; line-height: 1.3; }
.guide-blurb { display: block; font-family: var(--sans); font-size: .82rem; color: var(--muted); line-height: 1.45; margin-top: .2rem; }
.rail-cats h2 { padding-top: var(--s2); border-top: 3px solid var(--river); }

/* ---------- ENTRIES (the ranked list) ---------------------------------- */
.entries { list-style: none; margin: 0; padding: 0; }
.entry {
  border-top: 1px solid var(--rule);
  padding: 1.35rem 0;
  content-visibility: auto;
  contain-intrinsic-size: auto 8rem;
}
.entry[hidden] { display: none; }
.entry:last-child { border-bottom: 1px solid var(--rule); }
.entry h2 { margin: 0 0 .3rem; font-size: 1.45rem; font-weight: 550; }
.entry h2 a { color: var(--ink); text-decoration: none; }
.entry h2 a:hover, .entry h2 a:focus { color: var(--quartz); text-decoration: underline; }
.entry .addr { font-family: var(--sans); font-size: .92rem; color: var(--muted); margin: 0 0 .5rem; }
.entry p { margin: 0 0 .35rem; }
.entry .addr a[href^="tel:"] { white-space: nowrap; }
.entry-more { font-family: var(--sans); font-size: .86rem; }
.entry-more a { color: var(--link); }
.pg-guides .entries .entry h2 { font-size: 1.6rem; font-weight: 500; }

.badge {
  display: inline-block;
  font-family: var(--sans); font-size: .76rem; font-weight: 600; letter-spacing: .02em;
  color: var(--river); background: var(--sky);
  border-left: 3px solid var(--link);
  padding: .25rem .6rem; margin: 0 0 .5rem;
}

/* ---------- SCAN TOOLS (JS-only, gated on html.has-js) ----------------- */
.scan-tools {
  display: flex; flex-wrap: wrap; align-items: center; gap: var(--s3);
  margin: 0 0 var(--s3); padding: .8rem;
  background: #fff; border: 1px solid var(--rule-2); border-radius: 3px;
  font-family: var(--sans); position: sticky; top: .5rem; z-index: 20;
  box-shadow: 0 6px 18px rgba(15, 59, 82, .06);
}
.scan-field { flex: 1 1 14rem; min-width: 0; }
.scan-input, .scan-select {
  width: 100%; box-sizing: border-box; padding: .6rem .8rem;
  border: 1px solid var(--rule-2); border-radius: 3px; background: #fff; color: var(--ink);
  font-family: var(--sans); font-size: 1rem;
}
.scan-input::placeholder { color: var(--muted); opacity: 1; }
.scan-sort { display: flex; align-items: center; gap: .5rem; flex: 0 0 auto; }
.scan-sort label { font-size: .76rem; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: var(--muted); }
.scan-select {
  width: auto; padding-right: 2rem; cursor: pointer; -webkit-appearance: none; appearance: none;
  background-image: linear-gradient(45deg, transparent 50%, var(--quartz) 50%), linear-gradient(135deg, var(--quartz) 50%, transparent 50%);
  background-position: right 1.05rem center, right .75rem center;
  background-size: .32rem .32rem, .32rem .32rem; background-repeat: no-repeat;
}
.scan-count { flex: 1 1 100%; margin: 0; font-size: .85rem; color: var(--muted); }
.scan-count:empty { display: none; }
.scan-empty { margin: var(--s4) 0; padding: var(--s3); background: var(--mist); font-family: var(--sans); }
.scan-clear { font: inherit; color: var(--link); background: none; border: 0; padding: 0; text-decoration: underline; cursor: pointer; }
:root:not(.has-js) .scan-tools,
:root:not(.has-js) .scan-empty,
:root:not(.has-js) .to-top { display: none !important; }
.to-top {
  position: fixed; right: 1rem; bottom: 1rem; z-index: 40;
  display: inline-flex; align-items: center; gap: .4rem; padding: .6rem .9rem;
  font-family: var(--sans); font-size: .8rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase;
  text-decoration: none; color: #fff; background: var(--river); border-radius: 3px;
  box-shadow: 0 8px 24px rgba(15, 59, 82, .25);
  opacity: 0; transform: translateY(.6rem); transition: opacity .18s ease-out, transform .18s ease-out;
}
.to-top.is-in { opacity: 1; transform: translateY(0); }
.to-top:hover, .to-top:focus { color: #fff; background: var(--quartz); }
.to-top-arrow { width: .5rem; height: .5rem; border-top: 2px solid currentColor; border-right: 2px solid currentColor; transform: rotate(-45deg); margin-top: .12rem; }

/* ---------- LISTING ---------------------------------------------------- */
.listing-head { padding: var(--s2) 0 var(--s4); border-bottom: 1px solid var(--rule); margin-bottom: var(--s4); }
.listing-head h1 { font-size: clamp(2.4rem, 1.3rem + 3.6vw, 4.6rem); max-width: 24ch; }
.listing-head .meta { margin: 0; }
.rail-main > h2:first-child { margin-top: 0; }
/* Listing layout v3 (Dan 2026-09-27): the contact card is a full-width band
   directly under the title, the most prominent block on the page; same river
   blue, same rose phone button, bigger type. Pairs unchanged: #fff on --river
   11.88:1, --river on --rose-t 7.87:1, --river-t on --river 8.21:1. */
.contact-card { background: var(--river); color: #fff; padding: var(--s4) var(--s3) var(--s3); }
.contact-label { font-size: .72rem; color: var(--rose-t); margin: 0 0 var(--s2); }
.contact-card--band { margin: 0 0 var(--s5); }
.contact-grid { display: grid; gap: var(--s3); }
.nap { margin: 0; display: grid; gap: var(--s3); }
.nap .line { margin: 0; font-size: clamp(1.45rem, 1.2rem + 1vw, 1.9rem); line-height: 1.3; color: #fff; }
.nap .phone { margin: 0; }
.nap .phone a {
  display: flex; align-items: center; justify-content: center; min-height: 3.25rem;
  font-family: var(--sans); font-weight: 700; font-size: 1.35rem; letter-spacing: .01em;
  color: var(--river); background: var(--rose-t); text-decoration: none;
  padding: .7rem 1.4rem; border-radius: 3px; white-space: nowrap;
}
.nap .phone a:hover, .nap .phone a:focus { background: #fff; color: var(--river); }
.contact-extra { display: grid; gap: var(--s2); justify-items: start; }
.contact-card .badge { background: transparent; color: var(--river-t); border-left-color: var(--rose-t); padding-left: .6rem; margin: 0; }
.contact-card .map-link { margin: 0; font-family: var(--sans); font-size: 1.1rem; font-weight: 600; line-height: 1.4; }
.contact-card .map-link a { color: #fff; text-underline-offset: .2em; }
.contact-card .map-link a:hover, .contact-card .map-link a:focus { color: var(--rose-t); }
@media (min-width: 40em) {
  .nap { grid-template-columns: minmax(0, 1fr) auto; align-items: center; column-gap: var(--s5); }
  .nap .phone a { font-size: 1.5rem; }
}
@media (min-width: 62em) {
  .contact-card--band { padding: var(--s5) var(--s5) var(--s4); }
  .contact-grid { grid-template-columns: minmax(0, 1fr); }
  .contact-extra { grid-auto-flow: column; justify-content: start; align-items: center; column-gap: var(--s5);
                   padding-top: var(--s3); border-top: 1px solid rgba(255, 255, 255, .18); }
}
.listing-body { max-width: 50rem; }
.listing-body > :first-child { margin-top: 0; }
/* The claimed-owner statement: one quiet line, still a rose box with the quartz
   rule. --muted on --mist 6.12:1. */
.owner-note {
  display: inline-block; margin: 0 0 var(--s4); padding: .45rem .8rem;
  background: var(--mist); border-left: 3px solid var(--quartz);
  font-family: var(--sans); font-size: .82rem; line-height: 1.45; color: var(--muted);
}
.site-link { font-family: var(--sans); }
.hours { border-collapse: collapse; font-family: var(--sans); font-size: .95rem; margin: 0 0 var(--s4); }
.hours th, .hours td { text-align: left; padding: .4rem 1.5rem .4rem 0; border-bottom: 1px solid var(--rule); }
.hours th { font-weight: 600; }
.hours-note { font-family: var(--sans); font-size: .85rem; color: var(--muted); margin: calc(-1 * var(--s3, .75rem)) 0 var(--s4); }

.claim-callout { background: var(--mist); border-top: 3px solid var(--quartz); padding: var(--s4) var(--s3) var(--s3); margin: var(--s4) 0 0; }
.claim-callout h2 { margin: 0 0 var(--s2); font-size: clamp(1.5rem, 1.2rem + 1vw, 2rem); font-weight: 500; }
.claim-callout p { font-size: 1.05rem; max-width: var(--measure); }
.claim-callout a { color: var(--link); }
.btn, .btn-secondary {
  display: inline-block; cursor: pointer;
  font-family: var(--sans); font-size: .95rem; font-weight: 600;
  padding: .7rem 1.25rem; border-radius: 3px; text-decoration: none;
  background: var(--river); color: #fff !important; border: 1.5px solid var(--river);
}
.btn:hover, .btn:focus { background: var(--quartz); border-color: var(--quartz); color: #fff !important; }
.btn-secondary { background: #fff; color: var(--ink) !important; border-color: var(--ink); }
.btn-secondary:hover, .btn-secondary:focus { background: var(--ink); color: #fff !important; border-color: var(--ink); }

.siblings { margin-top: var(--s6); }
.siblings > h2 { margin-top: 0; padding-top: var(--s3); border-top: 3px solid var(--river); }
.more { font-family: var(--sans); font-weight: 600; font-size: .95rem; }
.grid { list-style: none; margin: var(--s3) 0; padding: 0; display: grid; gap: 1px; background: var(--rule); border: 1px solid var(--rule); }
.card { background: #fff; padding: var(--s3); }
.card h3 { font-size: 1.2rem; font-weight: 550; margin: 0 0 .3rem; }
.card h3 a { color: var(--ink); text-decoration: none; }
.card h3 a:hover, .card h3 a:focus { color: var(--quartz); text-decoration: underline; }
.card p { margin: 0; font-family: var(--sans); font-size: .88rem; color: var(--muted); line-height: 1.5; }
.card .count { font-family: var(--sans); font-size: .8rem; color: var(--quartz); font-weight: 600; }
@media (min-width: 34em) { .grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 56em) { .grid { grid-template-columns: repeat(3, 1fr); } }

/* Category list: two columns of entries on desktop so the ranked list reads
   as a directory page, not a long scroll; the rail rides along beside it. */
@media (min-width: 62em) {
  .rail-main > .entries { display: grid; grid-template-columns: 1fr 1fr; column-gap: var(--s5); }
  .rail-main > .entries .entry:last-child { border-bottom: 0; }
  body.has-rail .with-rail > .rail:not(.rail--contact) { position: sticky; top: 1.25rem; }
}

.hero-shot { margin: var(--s3) 0 var(--s4); }
.hero-shot img { display: block; width: 100%; height: auto; border: 1px solid var(--rule); }
.hero-shot figcaption { font-family: var(--sans); font-size: .85rem; color: var(--muted); margin-top: .4rem; }

/* ---------- GUIDE: FEATURE ARTICLE ------------------------------------- */
.feature-article { max-width: 100%; }
.article-head { max-width: 50rem; padding-top: var(--s2); }
.article-head h1 { font-size: clamp(2.4rem, 1.3rem + 3.4vw, 4.4rem); }
.guide-category { font-family: var(--sans); font-size: .92rem; margin: 0 0 var(--s3); }
.article-head .lede { color: var(--muted); margin-bottom: var(--s3); }
.byline { padding-top: var(--s2); border-top: 1px solid var(--rule); display: inline-block; }
.band--article { aspect-ratio: 21 / 9; overflow: hidden; background: var(--mist); margin: var(--s4) 0 var(--s5); }
.band--article picture { display: contents; }
.guide-body { max-width: var(--measure); margin: 0 auto; }
.guide-body > p:first-of-type::first-letter {
  float: left; font-size: 4.4em; line-height: .82; font-weight: 500;
  color: var(--quartz); padding: .06em .08em 0 0;
}
.guide-body h2 { font-size: 1.75rem; margin-top: var(--s5); padding-top: var(--s2); border-top: 1px solid var(--rule); }
.guide-body h3 { font-size: 1.3rem; margin: var(--s4) 0 var(--s1); }
.guide-body ul, .guide-body ol { padding-left: 1.2rem; }
.guide-body li { margin-bottom: .4rem; }
.pg-guides.is-article .siblings, .pg-guides.is-article .colophon--inline { max-width: var(--max); }
@media (max-width: 40em) { .band--article { aspect-ratio: 16 / 10; } }

/* ---------- PAGE HEAD (about, guides index, forms, terms, privacy) ----- */
.page-head { padding: var(--s2) 0 var(--s4); margin-bottom: var(--s4); border-bottom: 3px solid var(--river); }
.page-head h1 { font-size: clamp(2.6rem, 1.4rem + 3.8vw, 4.6rem); max-width: 22ch; margin-bottom: var(--s3); }
.page-head .lede { max-width: 44rem; margin-bottom: 0; }
.page-head .lede p:last-child { margin-bottom: 0; }

/* ---------- LONG-READ PAGES (about, terms, privacy) --------------------
   Terms and Privacy render the production templates inside this theme's
   base (the legal text is never copied into a theme), so they are styled
   here by body class alone. */
.pg-about main .wrap, .pg-terms main .wrap, .pg-privacy main .wrap { max-width: 52rem; }
.pg-terms main .wrap > h1, .pg-privacy main .wrap > h1 {
  font-size: clamp(2.6rem, 1.4rem + 3.8vw, 4.6rem); padding-top: var(--s2); margin-bottom: var(--s2);
}
.pg-terms main .wrap > .lede, .pg-privacy main .wrap > .lede {
  padding-bottom: var(--s4); border-bottom: 3px solid var(--river); margin-bottom: var(--s4);
}
.longread > h2, .pg-terms main .wrap > h2, .pg-privacy main .wrap > h2 {
  padding-top: var(--s3); border-top: 1px solid var(--rule); margin-top: var(--s5);
}
.longread > h2::before, .pg-terms main .wrap > h2::before, .pg-privacy main .wrap > h2::before {
  content: ""; display: block; width: 3rem; height: 3px; background: var(--quartz); margin: calc(-1 * var(--s3) - 2px) 0 var(--s3);
}
/* The page head already closes on a rule; the first section does not add a second. */
.longread > h2:first-child { margin-top: var(--s4); padding-top: 0; border-top: 0; }
.longread > h2:first-child::before { display: none; }
.pg-terms main .wrap > .lede + h2, .pg-privacy main .wrap > .lede + h2 { padding-top: 0; border-top: 0; margin-top: var(--s4); }
.pg-terms main .wrap > .lede + h2::before, .pg-privacy main .wrap > .lede + h2::before { display: none; }
.pg-terms main .wrap > p, .pg-privacy main .wrap > p { max-width: var(--measure); }
.twoup { display: grid; gap: var(--s3); margin: 0 0 var(--s3); }
.twoup .panel { border-top: 3px solid var(--quartz); }
.twoup .panel p { margin: 0; }
@media (min-width: 40em) { .twoup { grid-template-columns: 1fr 1fr; } }
.pull { font-size: 1.3rem; line-height: 1.45; border-left: 4px solid var(--quartz); padding-left: var(--s3); max-width: 40rem; }
.colophon--quiet h2 { font-size: 1.15rem; font-weight: 600; }
.colophon--quiet p { font-family: var(--sans); font-size: .9rem; }

/* ---------- GUIDES INDEX: A CONTENTS PAGE ------------------------------ */
.contents-lead { display: grid; gap: var(--s3); margin: 0 0 var(--s5); }
.contents-lead-plate { display: block; aspect-ratio: 16 / 9; overflow: hidden; background: var(--mist); }
.contents-lead-plate picture { display: contents; }
.contents-lead-text h2 { margin: 0 0 var(--s2); font-size: clamp(1.9rem, 1.3rem + 1.9vw, 3rem); font-weight: 450; line-height: 1.06; }
.contents-lead-text h2 a { color: var(--ink); text-decoration: none; }
.contents-lead-text h2 a:hover, .contents-lead-text h2 a:focus { color: var(--quartz); text-decoration: underline; }
.contents-lead-text p { font-size: 1.15rem; }
.contents-lead-text .meta { font-size: .85rem; margin: 0; }
@media (min-width: 56em) {
  .contents-lead { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: var(--s5); align-items: end; }
}
.contents { list-style: none; margin: 0; padding: 0; display: grid; column-gap: var(--s5); border-top: 3px solid var(--river); }
.contents-item { padding: var(--s3) 0; border-bottom: 1px solid var(--rule); }
.contents-kicker { font-size: .7rem; color: var(--quartz); margin: 0 0 .35rem; }
.contents-item h2 { margin: 0 0 .35rem; font-size: 1.35rem; font-weight: 550; line-height: 1.2; }
.contents-item h2 a { color: var(--ink); text-decoration: none; }
.contents-item h2 a:hover, .contents-item h2 a:focus { color: var(--quartz); text-decoration: underline; }
.contents-item p { margin: 0 0 .3rem; font-family: var(--sans); font-size: .9rem; color: var(--muted); line-height: 1.5; }
.contents-item .meta { font-size: .8rem; margin: 0; }
@media (min-width: 48em) { .contents { grid-template-columns: 1fr 1fr; } }

/* ---------- SEARCH ------------------------------------------------------ */
.search-head { background: var(--river); color: #fff; padding: var(--s4) var(--s3) var(--s3); margin: var(--s3) 0 var(--s4); }
.search-head h1 { color: #fff; font-weight: 450; margin-bottom: var(--s3); overflow-wrap: anywhere; }
.search-head .page-search { margin: 0; border-color: #fff; background: #fff; }
.search-browse { margin-top: var(--s5); }
.search-browse > h2 { margin-top: 0; padding-top: var(--s3); border-top: 3px solid var(--river); }
.browse-groups { display: grid; gap: var(--s3) var(--s5); }
.browse-group h3 { font-size: 1.25rem; font-weight: 550; margin: 0 0 .3rem; }
.browse-group h3 a { color: var(--ink); text-decoration: none; }
.browse-group h3 a:hover, .browse-group h3 a:focus { color: var(--quartz); text-decoration: underline; }
.browse-group ul { list-style: none; margin: 0; padding: 0; font-family: var(--sans); font-size: .92rem; }
.browse-group ul { columns: 2; column-gap: var(--s3); }
.browse-group li { padding: .35rem 0; break-inside: avoid; }
@media (min-width: 40em) { .browse-groups { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 62em) { .browse-groups { grid-template-columns: repeat(4, 1fr); } .browse-group ul { columns: 1; } }
@media (min-width: 62em) { .search-head { padding: var(--s5); } }

/* ---------- 404 --------------------------------------------------------- */
.lost { background: var(--river); color: #fff; padding: var(--s5) var(--s3); margin-top: var(--s4); }
.lost .band-kicker { color: var(--rose-t); }
.lost h1 { color: #fff; font-size: clamp(2.6rem, 1.4rem + 4vw, 5rem); font-weight: 450; }
.lost .lede { color: var(--river-t); max-width: 40rem; }
.lost .btn { background: #fff; color: var(--river) !important; border-color: #fff; }
.lost .btn:hover, .lost .btn:focus { background: var(--rose-t); border-color: var(--rose-t); color: var(--ink) !important; }
.lost-more { max-width: 44rem; }
@media (min-width: 56em) { .lost { padding: var(--s6) var(--s5); } }

/* ---------- SEARCH + FORMS (search, claim, contact, add-your-business) --- */
.page-search { display: flex; max-width: 36rem; margin: var(--s3) 0 var(--s4); border: 1.5px solid var(--river); border-radius: 3px; overflow: hidden; }
.page-search input[type="search"] { flex: 1 1 auto; min-width: 0; border: 0; padding: .9rem 1rem; background: #fff; color: var(--ink); font-family: var(--sans); font-size: 1rem; }
.page-search input::placeholder { color: var(--muted); opacity: 1; }
.searchbar { margin: var(--s3) 0; display: flex; gap: .5rem; max-width: 30rem; }
.field { margin: 0 0 1.1rem; max-width: 34rem; }
.field label { display: block; font-family: var(--sans); font-size: .88rem; font-weight: 600; margin-bottom: .3rem; }
.field .hint, .hint { display: block; font-family: var(--sans); font-size: .82rem; color: var(--muted); margin-top: .25rem; }
.field input[type="text"], .field input[type="email"], .field input[type="url"], .field input[type="tel"],
.field input[type="password"], .field select, .field textarea {
  width: 100%; box-sizing: border-box; padding: .6rem .7rem;
  border: 1px solid var(--muted); border-radius: 3px; background: #fff; color: var(--ink);
  font-family: var(--sans); font-size: 1rem;
}
.field textarea { min-height: 7rem; }
.check { display: flex; gap: .6rem; align-items: flex-start; margin: 0 0 1.1rem; max-width: 34rem; }
.check input { margin-top: .3rem; width: 1.1rem; height: 1.1rem; flex: none; accent-color: var(--river); }
.check label { font-family: var(--sans); font-size: .92rem; }
.hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.notice { background: var(--sky); border-left: 4px solid var(--link); padding: var(--s3); margin: var(--s3) 0; font-family: var(--sans); font-size: .98rem; }
.notice p:last-child { margin-bottom: 0; }
.panel { background: var(--mist); padding: var(--s3); }
.form-panel { margin: var(--s3) 0 var(--s4); }
.hint--after-check { max-width: 34rem; margin: -.5rem 0 1.1rem; }
.page-search--find { max-width: 34rem; margin: var(--s3) 0 var(--s4); }
.rail-note { background: var(--sky); border-top: 3px solid var(--river); padding: var(--s3); }
.rail-note h2 { margin-top: 0; }
.rail-note p { font-size: 1rem; }
.rail-note p:last-child { margin-bottom: 0; }
.rail .claim-callout { margin-top: var(--s4); }
.rail .claim-callout p { font-size: 1rem; }
.rail-main > h2:first-child, .rail-main > .form-panel:first-child { margin-top: 0; }

/* ---------- FOOTER ----------------------------------------------------- */
.site-footer { background: var(--river); color: var(--river-t); font-family: var(--sans); font-size: .9rem; line-height: 1.6; }
.footer-grid { display: grid; gap: var(--s4); padding-top: var(--s5); padding-bottom: var(--s5); }
.site-footer .brand { color: #fff; font-size: 2.2rem; font-weight: 500; }
.site-footer .brand-sub { color: var(--rose-t); }
.site-footer a { color: #fff; }
.site-footer a:hover, .site-footer a:focus { color: var(--rose-t); }
.footer-nav { display: flex; flex-wrap: wrap; gap: .5rem 1.4rem; align-content: start; }
.footer-nav a { font-weight: 600; text-decoration: none; }
.footer-nav a:hover, .footer-nav a:focus { text-decoration: underline; }
.footer-legal p { margin: 0 0 .7rem; max-width: 44rem; }
.footer-fine { font-size: .8rem; }
@media (min-width: 56em) {
  .footer-grid { grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); column-gap: var(--s6); }
  .footer-legal { grid-column: 2; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
}
@media print {
  .site-header, .site-footer .strata, .scan-tools, .to-top, .cover-photo { display: none; }
  .cover, .contact-card, .lost { background: #fff; color: #000; }
}
