/*
 * Explore Mission Valley — theme stylesheet.
 *
 * Range Print Shop / Postershop aesthetic. CSS extracted verbatim from the
 * binding mockup app/public/mockups/town-polson-postershop.html per the
 * mockups-are-binding rule. Component CSS added in Phase 2 when each
 * additional template lands.
 *
 * Do not refactor selectors or rename tokens here without a corresponding
 * update to the mockup file — they must stay in sync.
 */

/* ============================================================
   EXPLORE MISSION VALLEY — RANGE PRINT SHOP
   Town landing — Polson
   ============================================================ */
:root {
  --paper:      #f4ead4;
  --paper-deep: #ecdfbe;
  --paper-soft: #f8f1de;
  --teal:       #1f5763;
  --teal-deep:  #143b45;
  --mustard:    #d9a64d;
  --mustard-deep: #b87f30;
  --clay:       #b8462b;
  --clay-deep:  #8e3320;
  --forest:     #2d4a35;
  --ink:        #1a1714;
  --ink-soft:   #3a352f;

  --font-poster: 'Big Shoulders Display', 'Anton', sans-serif;
  --font-body:   'Outfit', -apple-system, sans-serif;
  --font-accent: 'DM Serif Display', Georgia, serif;

  --gutter: clamp(1.25rem, 4vw, 3rem);
  --max:    1280px;
  --read:   720px; /* article column measure — single-story (mockup value; was referenced but never defined) */

  --ease: cubic-bezier(0.22, 0.9, 0.3, 1);
}

* { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }

body {
  font-family: var(--font-body);
  background: var(--paper);
  color: var(--ink);
  line-height: 1.5;
  font-size: 17px;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  overflow-x: hidden;
  background-image:
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='320' height='320'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0.4  0 0 0 0 0.3  0 0 0 0 0.15  0 0 0 0.08 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
}

img { max-width: 100%; height: auto; display: block; }
a { color: inherit; text-decoration: none; }
button { font: inherit; cursor: pointer; background: none; border: none; color: inherit; }
svg { display: block; }

.eyebrow {
  font-family: var(--font-poster);
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  font-size: 0.78rem;
}
.script {
  font-family: var(--font-accent);
  font-style: italic;
  font-weight: 400;
}

/* ============================================================
   PRESS BAR
   ============================================================ */
.press-bar {
  background: var(--ink);
  color: var(--paper);
  padding: 0.55rem var(--gutter);
  display: grid; grid-template-columns: 1fr auto 1fr; align-items: center;
  gap: 1rem;
  font-family: var(--font-poster);
  font-weight: 700;
  font-size: 0.72rem; letter-spacing: 0.22em; text-transform: uppercase;
}
.press-bar .left  { justify-self: start; }
.press-bar .right { justify-self: end; color: var(--mustard); }
.press-bar .stars { color: var(--mustard); letter-spacing: 0.4em; }
.press-bar .mid {
  display: flex; align-items: center; gap: 0.6rem;
  color: var(--paper-soft);
  justify-self: center;
}
.press-bar .mid::before,
.press-bar .mid::after {
  content: ''; width: 30px; height: 1px; background: var(--mustard);
}
@media (max-width: 760px) {
  .press-bar { grid-template-columns: 1fr; }
  .press-bar .left, .press-bar .right { display: none; }
}

/* ============================================================
   MASTHEAD
   ============================================================ */
.masthead {
  background: var(--paper);
  border-bottom: 3px solid var(--ink);
  padding: 1.1rem var(--gutter);
  display: grid; grid-template-columns: 1fr auto 1fr; align-items: center;
  gap: 2rem;
  position: sticky; top: 0; z-index: 50;
}
/* Nav lives in the center column; brand and CTA flex columns balance to keep
   the nav genuinely page-centered even when brand and CTA have unequal widths. */
.masthead > .brand { justify-self: start; }
.masthead > .masthead-actions { justify-self: end; display: flex; align-items: center; gap: 0.75rem; }
.masthead::after {
  content: '';
  position: absolute; bottom: -8px; left: 0; right: 0;
  height: 4px;
  background: repeating-linear-gradient(90deg, var(--ink) 0 6px, transparent 6px 12px);
}
.brand { display: flex; align-items: center; gap: 0.7rem; }
.brand .seal { height: 46px; width: auto; flex: none; } /* shield badge: sized by height */
.brand .wordmark { display: flex; flex-direction: column; line-height: 0.92; }
.brand .wordmark .top {
  font-family: var(--font-poster); font-weight: 800;
  font-size: 1.15rem; letter-spacing: 0.06em; text-transform: uppercase;
  color: var(--ink);
}
.brand .wordmark .bot {
  font-family: var(--font-accent); font-style: italic;
  font-size: 0.78rem; color: var(--teal); margin-top: 2px;
}
.nav { display: flex; justify-content: center; gap: 0; flex-wrap: wrap; }
.nav li { list-style: none; display: contents; }
.nav a {
  font-family: var(--font-poster); font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.12em;
  font-size: 1rem; padding: 0.5rem 1.15rem;
  color: var(--ink); position: relative;
  transition: color 0.2s var(--ease);
}
.nav li + li > a::before {
  content: '';
  position: absolute; left: 0; top: 50%;
  width: 5px; height: 5px; background: var(--clay); border-radius: 50%;
  transform: translate(-50%, -50%);
}
.nav a:hover, .nav a.active { color: var(--clay); }
.cta-btn {
  display: inline-flex; align-items: center; gap: 0.5rem;
  background: var(--clay); color: var(--paper);
  font-family: var(--font-poster);
  font-weight: 800; letter-spacing: 0.14em; text-transform: uppercase;
  font-size: 0.82rem;
  padding: 0.7rem 1.1rem;
  border: 2px solid var(--ink);
  box-shadow: 4px 4px 0 var(--ink);
  transition: transform 0.18s var(--ease), box-shadow 0.18s var(--ease);
}
.cta-btn:hover {
  transform: translate(-2px, -2px);
  box-shadow: 6px 6px 0 var(--ink);
}
.cta-btn.alt { background: var(--mustard); color: var(--ink); }
.cta-btn.dark { background: var(--ink); color: var(--paper); }
.cta-btn.teal { background: var(--teal); color: var(--paper); }
@media (max-width: 900px) {
  .masthead { grid-template-columns: 1fr auto; }
  .nav { display: none; }
}

/* ============================================================
   HERO POSTER — Polson
   ============================================================ */
.hero {
  position: relative;
  background: var(--teal);
  color: var(--paper);
  overflow: hidden;
  padding: 0;
  isolation: isolate;
}
.hero-frame {
  position: relative;
  padding: 4rem var(--gutter) 3rem;
  max-width: var(--max);
  margin: 0 auto;
  min-height: min(86vh, 760px);
  display: grid;
  grid-template-rows: auto 1fr auto;
  z-index: 2;
}
.hero-frame::before {
  content: '';
  position: absolute; inset: 1.5rem var(--gutter);
  border: 2px solid var(--paper); opacity: 0.55;
  pointer-events: none;
}
.hero-frame::after {
  content: '';
  position: absolute; inset: calc(1.5rem + 6px) calc(var(--gutter) + 6px);
  border: 1px solid var(--paper); opacity: 0.25;
  pointer-events: none;
}
/* Real-photo hero background, color-treated to harmonize with Postershop palette */
.hero__bg {
  position: absolute;
  inset: 0;
  z-index: 0;
  overflow: hidden;
}
.hero__bg img {
  width: 100%; height: 100%;
  object-fit: cover;
  filter: brightness(0.62) contrast(1.08) saturate(0.78);
}
.hero__overlay {
  position: absolute;
  inset: 0;
  z-index: 1;
  background:
    linear-gradient(180deg,
      rgba(20,59,69,0.55) 0%,
      rgba(31,87,99,0.10) 28%,
      rgba(31,87,99,0.18) 55%,
      rgba(20,59,69,0.90) 100%);
}
.hero__credit {
  position: absolute; right: 0.75rem; bottom: 0.6rem; z-index: 3;
  font-family: var(--font-body); font-size: 0.66rem; letter-spacing: 0.02em;
  color: rgba(244,234,212,0.82);
  background: rgba(20,23,20,0.42); padding: 0.18rem 0.5rem; border-radius: 2px;
  backdrop-filter: blur(2px); pointer-events: none;
}
.hero__overlay::after {
  content: '';
  position: absolute; inset: 0;
  background:
    radial-gradient(ellipse at 30% 50%, rgba(217,166,77,0.10) 0%, transparent 55%);
}
.hero-top {
  display: flex; justify-content: space-between; align-items: center;
  padding: 0.5rem 1rem;
  font-family: var(--font-poster); text-transform: uppercase;
  letter-spacing: 0.22em; font-size: 0.78rem;
  color: var(--mustard);
  position: relative; z-index: 5;
}
.hero-top .mid { color: var(--paper); letter-spacing: 0.3em; font-weight: 800; }

.hero-body {
  display: grid; grid-template-columns: 1fr;
  align-items: center;
  padding: 2rem 1rem;
  position: relative; z-index: 5;
  max-width: 900px;
}
/* .hero-headline canonical rules live further down in the Single-business
   import section (~line 924). The earlier duplicate that previously sat here
   was dead code shadowed by the later block on every property; deleted 2026-05-21. */
.hero-tag {
  display: inline-block;
  margin-top: 1.5rem;
  font-family: var(--font-accent); font-style: italic;
  font-size: clamp(1.05rem, 1.8vw, 1.4rem);
  color: var(--paper-soft);
  padding: 0.4rem 0.9rem 0.45rem;
  background: var(--clay);
  letter-spacing: 0.01em;
}
.hero-sub {
  margin-top: 1.4rem;
  font-size: 1rem; max-width: 42ch;
  color: var(--paper-soft); line-height: 1.55;
}
.hero-ctas {
  margin-top: 1.8rem;
  display: flex; gap: 0.85rem; flex-wrap: wrap;
}

.hero-art {
  position: relative;
  aspect-ratio: 4 / 5;
  width: 100%; max-width: 540px;
  justify-self: end;
}
.hero-art svg { width: 100%; height: 100%; display: block; }

.hero-foot {
  position: relative; z-index: 5;
  margin: 1.5rem 1rem 0;
  padding-top: 1.2rem;
  border-top: 1px solid rgba(244,234,212,0.35);
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.5rem;
}
.hero-foot .item { display: flex; align-items: flex-start; gap: 0.7rem; }
.hero-foot .num {
  font-family: var(--font-poster); font-weight: 900;
  font-size: 2rem; color: var(--mustard);
  line-height: 0.9;
}
.hero-foot .lbl {
  font-family: var(--font-poster); font-weight: 800;
  text-transform: uppercase; letter-spacing: 0.12em;
  font-size: 0.82rem; color: var(--paper);
}
.hero-foot .sub {
  font-family: var(--font-accent); font-style: italic;
  font-size: 0.82rem; color: var(--paper-soft);
  margin-top: 2px;
}
@media (max-width: 900px) {
  .hero-foot { grid-template-columns: repeat(2, 1fr); gap: 1.2rem; }
}

/* ============================================================
   ABOUT BAND — manifesto style
   ============================================================ */
.about-band {
  background: var(--mustard);
  color: var(--ink);
  border-top: 3px solid var(--ink);
  border-bottom: 3px solid var(--ink);
  padding: 3.5rem var(--gutter);
  position: relative;
  overflow: hidden;
}
.about-band::before {
  content: '';
  position: absolute; top: -3px; left: 0; right: 0;
  height: 14px;
  background: repeating-linear-gradient(90deg, var(--ink) 0 14px, transparent 14px 28px);
}
.about-band-inner {
  max-width: 1080px; margin: 0 auto;
  display: grid; grid-template-columns: 1.2fr 1fr;
  gap: 3rem; align-items: center;
}
@media (max-width: 760px) { .about-band-inner { grid-template-columns: 1fr; gap: 1.5rem; } }
.about-band .lead {
  font-family: var(--font-poster);
  font-weight: 800; text-transform: uppercase;
  font-size: clamp(1.6rem, 3.2vw, 2.6rem);
  line-height: 1.0; letter-spacing: -0.005em;
}
.about-band .lead .red {
  color: var(--clay);
  font-family: var(--font-accent); font-style: italic; font-weight: 400;
  text-transform: none; letter-spacing: -0.01em;
}
.about-band .lead .teal { color: var(--teal); }
.about-band .facts {
  display: grid; gap: 1rem;
}
.about-band .fact {
  padding: 1rem 1.2rem;
  background: var(--paper);
  border: 2px solid var(--ink);
  box-shadow: 4px 4px 0 var(--ink);
}
.about-band .fact .k {
  font-family: var(--font-poster);
  font-weight: 700; letter-spacing: 0.16em;
  text-transform: uppercase; font-size: 0.7rem;
  color: var(--clay);
  display: block; margin-bottom: 0.4rem;
}
.about-band .fact .v {
  font-family: var(--font-body); font-size: 0.94rem;
  color: var(--ink); line-height: 1.45;
}

/* ============================================================
   CHAPTERS — category sections as ranger badges
   ============================================================ */
.chapter {
  background: var(--paper);
  padding: 5rem var(--gutter) 3rem;
  border-bottom: 3px solid var(--ink);
}
.chapter:nth-child(even) { background: var(--paper-soft); }
.chapter-head {
  max-width: var(--max); margin: 0 auto 2.5rem;
  display: grid; grid-template-columns: auto 1fr auto;
  gap: 2rem; align-items: end;
}
.chapter-num {
  font-family: var(--font-poster); font-weight: 900;
  font-size: 4rem; line-height: 0.9;
  color: var(--clay);
  text-shadow: 4px 4px 0 var(--ink);
}
.chapter-title {
  font-family: var(--font-poster); font-weight: 900;
  text-transform: uppercase;
  font-size: clamp(1.9rem, 4vw, 3.2rem);
  line-height: 0.9; color: var(--ink);
}
.chapter-title em {
  font-family: var(--font-accent); font-style: italic;
  font-weight: 400; color: var(--teal);
  text-transform: none;
}
.chapter-meta {
  text-align: right;
  font-family: var(--font-poster); font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.14em;
  font-size: 0.84rem; color: var(--ink-soft);
}
.chapter-meta .count {
  display: block;
  font-size: 1.4rem; color: var(--clay);
  font-weight: 900; margin-bottom: 0.2rem;
}

.chapter-grid {
  max-width: var(--max); margin: 0 auto;
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.5rem;
}
@media (max-width: 900px) { .chapter-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 500px) { .chapter-grid { grid-template-columns: 1fr; } }

.listing-card {
  position: relative;
  background: var(--paper-soft);
  border: 2px solid var(--ink);
  box-shadow: 6px 6px 0 var(--ink);
  transition: transform 0.25s var(--ease), box-shadow 0.25s var(--ease);
  overflow: hidden;
}
.chapter:nth-child(even) .listing-card { background: var(--paper); }
.listing-card:hover {
  transform: translate(-3px, -3px) rotate(-0.5deg);
  box-shadow: 9px 9px 0 var(--ink);
}
.listing-card__media {
  position: relative;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  border-bottom: 2px solid var(--ink);
}
.listing-card__media img {
  width: 100%; height: 100%; object-fit: cover;
  filter: contrast(1.05) saturate(0.95);
}
.listing-card__body { padding: 1rem 1.1rem 1.2rem; }
.listing-card__tags {
  display: flex; gap: 0.4rem; flex-wrap: wrap;
  margin-bottom: 0.6rem;
}
.tag {
  display: inline-flex; align-items: center; gap: 0.35rem;
  font-family: var(--font-poster); font-weight: 700;
  letter-spacing: 0.14em; text-transform: uppercase;
  font-size: 0.66rem;
  padding: 0.25rem 0.5rem;
  border: 1.5px solid var(--ink);
  background: var(--paper);
  color: var(--ink);
}
.tag.pick { background: var(--mustard); }
.tag.cskt { background: var(--teal); color: var(--paper); border-color: var(--ink); }
.tag.eat   { background: var(--clay); color: var(--paper); }
.tag.stay  { background: var(--teal); color: var(--paper); }
.tag.do    { background: var(--forest); color: var(--paper); }
.tag.shop  { background: var(--mustard); }
.tag.svc   { background: var(--paper-deep); }

.listing-card__name {
  font-family: var(--font-poster); font-weight: 900;
  text-transform: uppercase;
  font-size: 1.35rem; line-height: 1;
  color: var(--ink);
  margin-bottom: 0.5rem;
}
.listing-card__meta {
  font-family: var(--font-accent); font-style: italic;
  font-size: 0.88rem;
  color: var(--ink-soft);
  margin-bottom: 0.8rem;
}
.listing-card__cta {
  display: inline-block;
  font-family: var(--font-poster); font-weight: 800;
  letter-spacing: 0.16em; text-transform: uppercase;
  font-size: 0.7rem;
  color: var(--teal);
  border-bottom: 2px solid var(--teal);
  padding-bottom: 2px;
}

.chapter-seeall {
  display: inline-flex; align-items: center; gap: 0.6rem;
  margin-top: 2.5rem;
  font-family: var(--font-poster); font-weight: 800;
  letter-spacing: 0.16em; text-transform: uppercase;
  font-size: 0.85rem;
  color: var(--clay);
  border-bottom: 2px solid var(--clay);
  padding-bottom: 4px;
}
.chapter-seeall:hover { color: var(--ink); border-bottom-color: var(--ink); }

.chapter-footer {
  max-width: var(--max); margin: 0 auto;
}

/* ============================================================
   EVENTS — ticket-stub style
   ============================================================ */
.events {
  background: var(--teal-deep);
  color: var(--paper);
  padding: 5rem var(--gutter);
  border-bottom: 3px solid var(--ink);
}
.events-head {
  max-width: var(--max); margin: 0 auto 2.5rem;
  text-align: center;
}
.events-head .eyebrow { color: var(--mustard); }
.events-head h2 {
  font-family: var(--font-poster); font-weight: 900;
  text-transform: uppercase;
  font-size: clamp(2.2rem, 5vw, 4rem);
  line-height: 0.9; margin-top: 0.6rem;
  color: var(--paper);
}
.events-head h2 em {
  font-family: var(--font-accent); font-style: italic;
  font-weight: 400; color: var(--mustard);
  text-transform: none;
}

.events-grid {
  max-width: var(--max); margin: 0 auto;
  display: grid; grid-template-columns: repeat(2, 1fr); gap: 1.5rem;
}
@media (max-width: 760px) { .events-grid { grid-template-columns: 1fr; } }

.ticket {
  background: var(--paper);
  color: var(--ink);
  border: 2px solid var(--ink);
  box-shadow: 6px 6px 0 var(--mustard);
  display: grid;
  grid-template-columns: 110px 1fr;
  overflow: hidden;
  position: relative;
  transition: transform 0.2s var(--ease), box-shadow 0.2s var(--ease);
}
.ticket:hover {
  transform: translate(-2px, -2px);
  box-shadow: 8px 8px 0 var(--mustard);
}
.ticket__stub {
  background: var(--clay); color: var(--paper);
  padding: 1.4rem 0.6rem;
  text-align: center;
  border-right: 2px dashed var(--ink);
  display: flex; flex-direction: column; justify-content: center;
  position: relative;
}
.ticket__stub::before,
.ticket__stub::after {
  content: '';
  position: absolute;
  width: 16px; height: 16px;
  background: var(--teal-deep);
  border: 2px solid var(--ink);
  border-radius: 50%;
  right: -10px;
}
.ticket__stub::before { top: -10px; }
.ticket__stub::after { bottom: -10px; }
.ticket__stub .day {
  font-family: var(--font-poster); font-weight: 900;
  font-size: 2.6rem; line-height: 1;
}
.ticket__stub .mo {
  font-family: var(--font-poster); font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.16em;
  font-size: 0.7rem;
  margin-top: 0.3rem;
}
.ticket__body { padding: 1.2rem 1.3rem 1.3rem; }
.ticket__where {
  font-family: var(--font-poster); font-weight: 700;
  letter-spacing: 0.14em; text-transform: uppercase;
  font-size: 0.7rem;
  color: var(--clay);
  margin-bottom: 0.4rem;
}
.ticket__title {
  font-family: var(--font-poster); font-weight: 900;
  text-transform: uppercase;
  font-size: 1.4rem; line-height: 1;
  color: var(--ink);
  margin-bottom: 0.45rem;
}
.ticket__title em { font-family: var(--font-accent); font-style: italic; font-weight: 400; color: var(--teal); text-transform: none; }
.ticket__when {
  font-family: var(--font-accent); font-style: italic;
  font-size: 0.92rem; color: var(--ink-soft);
}

/* ============================================================
   STORIES — postcard style
   ============================================================ */
.stories {
  background: var(--paper);
  padding: 5rem var(--gutter);
  border-bottom: 3px solid var(--ink);
}
.stories-head {
  max-width: var(--max); margin: 0 auto 2.5rem;
  text-align: center;
}
.stories-head .eyebrow { color: var(--clay); }
.stories-head h2 {
  font-family: var(--font-poster); font-weight: 900;
  text-transform: uppercase;
  font-size: clamp(2.2rem, 5vw, 4rem);
  line-height: 0.9; margin-top: 0.6rem; color: var(--ink);
}
.stories-head h2 em {
  font-family: var(--font-accent); font-style: italic; font-weight: 400;
  color: var(--teal); text-transform: none;
}
.stories-grid {
  max-width: var(--max); margin: 0 auto;
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.75rem;
}
@media (max-width: 900px) { .stories-grid { grid-template-columns: 1fr; } }
.postcard {
  background: var(--paper-soft);
  border: 2px solid var(--ink);
  box-shadow: 6px 6px 0 var(--teal);
  padding: 0;
  overflow: hidden;
  transition: transform 0.2s var(--ease), box-shadow 0.2s var(--ease);
}
.postcard:hover {
  transform: translate(-3px, -3px) rotate(-0.5deg);
  box-shadow: 9px 9px 0 var(--teal);
}
.postcard__img {
  position: relative;
  aspect-ratio: 5 / 3;
  overflow: hidden;
  border-bottom: 2px solid var(--ink);
}
.postcard__img img { width: 100%; height: 100%; object-fit: cover; filter: contrast(1.04) saturate(0.95); }
.postcard__stamp {
  position: absolute;
  top: 0.7rem; right: 0.7rem;
  width: 56px; height: 56px;
  background: var(--mustard);
  border: 2px solid var(--ink);
  display: grid; place-items: center;
  font-family: var(--font-poster); font-weight: 900;
  font-size: 0.6rem;
  text-align: center;
  line-height: 1; text-transform: uppercase;
  color: var(--ink);
  padding: 0.3rem;
  letter-spacing: 0.12em;
  transform: rotate(-8deg);
  box-shadow: 2px 2px 0 var(--ink);
}
.postcard__body { padding: 1.2rem 1.3rem 1.4rem; }
.postcard__cat {
  font-family: var(--font-poster); font-weight: 700;
  letter-spacing: 0.16em; text-transform: uppercase;
  font-size: 0.72rem; color: var(--clay);
  margin-bottom: 0.5rem;
}
.postcard__title {
  font-family: var(--font-accent); font-style: italic;
  font-size: 1.4rem; line-height: 1.15;
  color: var(--ink); margin-bottom: 0.6rem;
}
.postcard__read {
  font-family: var(--font-poster); font-weight: 700;
  letter-spacing: 0.14em; text-transform: uppercase;
  font-size: 0.66rem; color: var(--ink-soft);
}

/* ============================================================
   MAP — illustrated vintage tourist map
   ============================================================ */
.maptown {
  background: var(--teal);
  color: var(--paper);
  padding: 5rem var(--gutter);
  border-bottom: 3px solid var(--ink);
  position: relative; overflow: hidden;
}
.maptown-inner {
  max-width: var(--max); margin: 0 auto;
  display: grid; grid-template-columns: 1fr 1.3fr;
  gap: 3rem; align-items: center;
}
@media (max-width: 900px) { .maptown-inner { grid-template-columns: 1fr; gap: 2rem; } }
.maptown-copy { }
.maptown-copy .eyebrow { color: var(--mustard); margin-bottom: 0.8rem; display: block; }
.maptown-copy h3 {
  font-family: var(--font-poster); font-weight: 900;
  text-transform: uppercase;
  font-size: clamp(1.9rem, 4vw, 3rem);
  line-height: 0.9; color: var(--paper); margin-bottom: 1.2rem;
}
.maptown-copy h3 em {
  font-family: var(--font-accent); font-style: italic; font-weight: 400;
  color: var(--mustard); text-transform: none;
}
.maptown-copy p {
  font-size: 1rem; color: var(--paper-soft); line-height: 1.55;
  max-width: 42ch; margin-bottom: 1.5rem;
}

.maptown-visual {
  position: relative;
  aspect-ratio: 4 / 5;
  background: var(--paper-soft);
  border: 3px solid var(--ink);
  box-shadow: 10px 10px 0 var(--mustard);
  padding: 1.5rem;
  color: var(--ink);
  overflow: hidden;
}
.maptown-visual svg { width: 100%; height: 100%; }

/* ============================================================
   NEIGHBORS — railway-card style
   ============================================================ */
.neighbors {
  background: var(--paper-soft);
  padding: 4.5rem var(--gutter);
  border-bottom: 3px solid var(--ink);
}
.neighbors-head {
  max-width: var(--max); margin: 0 auto 2rem;
  text-align: center;
}
.neighbors-head h3 {
  font-family: var(--font-poster); font-weight: 900;
  text-transform: uppercase;
  font-size: clamp(1.6rem, 3vw, 2.3rem); line-height: 0.95;
  color: var(--ink);
}
.neighbors-head h3 em {
  font-family: var(--font-accent); font-style: italic; font-weight: 400;
  color: var(--clay); text-transform: none;
}
.neighbors-grid {
  max-width: var(--max); margin: 0 auto;
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem;
}
@media (max-width: 760px) { .neighbors-grid { grid-template-columns: 1fr; } }
.depot {
  background: var(--paper); border: 2px solid var(--ink);
  box-shadow: 5px 5px 0 var(--clay);
  padding: 1.5rem 1.5rem 1.6rem;
  text-align: center;
  transition: transform 0.2s var(--ease), box-shadow 0.2s var(--ease);
}
.depot:hover { transform: translate(-2px, -2px); box-shadow: 7px 7px 0 var(--clay); }
.depot__name {
  font-family: var(--font-poster); font-weight: 900;
  text-transform: uppercase;
  font-size: 1.7rem; color: var(--ink); margin-bottom: 0.3rem;
}
.depot__dist {
  font-family: var(--font-accent); font-style: italic;
  color: var(--ink-soft); font-size: 0.95rem;
}
.depot__cta {
  display: inline-block; margin-top: 0.8rem;
  font-family: var(--font-poster); font-weight: 800;
  letter-spacing: 0.14em; text-transform: uppercase;
  font-size: 0.72rem; color: var(--teal);
  border-bottom: 2px solid var(--teal); padding-bottom: 2px;
}

/* ============================================================
   FOOTER — printer's colophon
   ============================================================ */
.footer {
  background: var(--ink); color: var(--paper-soft);
  padding: 4rem var(--gutter) 2rem;
}
.footer-inner { max-width: var(--max); margin: 0 auto; }
.footer-land {
  font-family: var(--font-accent); font-style: italic;
  font-size: 1.05rem; line-height: 1.5;
  color: var(--paper-soft);
  border-bottom: 1px solid var(--paper-soft);
  padding-bottom: 1.6rem; margin-bottom: 2rem;
  max-width: 80ch;
}
.footer-land a { color: var(--mustard); border-bottom: 1px solid var(--mustard); }
.footer-cols {
  display: grid; grid-template-columns: 2fr repeat(4, 1fr); gap: 2.5rem;
  margin-bottom: 3rem;
}
.footer-brand {
  font-family: var(--font-poster); font-weight: 900;
  text-transform: uppercase; font-size: 1.8rem;
  color: var(--paper); margin-bottom: 0.3rem;
}
.footer-brand-tag {
  font-family: var(--font-accent); font-style: italic;
  color: var(--mustard); font-size: 0.95rem;
}
.footer-col h4 {
  font-family: var(--font-poster); font-weight: 800;
  text-transform: uppercase; letter-spacing: 0.16em;
  font-size: 0.78rem; color: var(--mustard);
  margin-bottom: 1rem;
}
.footer-col ul { list-style: none; display: grid; gap: 0.55rem; }
.footer-col a { font-size: 0.88rem; color: var(--paper-soft); }
.footer-col a:hover { color: var(--mustard); }
.footer-bottom {
  padding-top: 2rem; border-top: 1px solid var(--paper-soft);
  display: flex; justify-content: space-between; align-items: center;
  font-family: var(--font-poster); font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.16em;
  font-size: 0.7rem; color: var(--paper-deep);
}
@media (max-width: 880px) {
  .footer-cols { grid-template-columns: 1fr 1fr; gap: 2rem; }
  .footer-bottom { flex-direction: column; gap: 1rem; }
}



/* ============================================================
   HOME PAGE CSS — extracted verbatim from
   app/public/mockups/homepage-postershop.html, sections 03–12.
   Selectors that overlap with town-polson (.hero, .event,
   .stories) take precedence on body.home via source order.
   When page-town.php is built, town-specific rules will be
   re-scoped to avoid conflicts on the town landing.
   ============================================================ */

/* ============================================================
   03. HERO POSTER — the cover of a 1939 brochure
   ============================================================ */
.hero {
  position: relative;
  background: var(--teal);
  color: var(--paper);
  overflow: hidden;
  padding: 0;
  isolation: isolate;
}
.hero-frame {
  position: relative;
  padding: 4rem var(--gutter) 3rem;
  max-width: var(--max);
  margin: 0 auto;
  min-height: min(86vh, 760px);
  display: grid;
  grid-template-rows: auto 1fr auto;
  z-index: 2;
}
/* The poster's inner border, like a deckled stamp */
.hero-frame::before {
  content: '';
  position: absolute;
  inset: 1.5rem var(--gutter);
  border: 2px solid var(--paper);
  opacity: 0.55;
  pointer-events: none;
}
.hero-frame::after {
  content: '';
  position: absolute;
  inset: calc(1.5rem + 6px) calc(var(--gutter) + 6px);
  border: 1px solid var(--paper);
  opacity: 0.25;
  pointer-events: none;
}
.hero-top {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 0.5rem 1rem;
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.22em;
  font-size: 0.78rem;
  color: var(--mustard);
  position: relative;
  z-index: 5;
}
.hero-top .mid {
  color: var(--paper);
  letter-spacing: 0.3em;
  font-weight: 800;
}

.hero-body {
  display: grid;
  grid-template-columns: 1.1fr 1fr;
  align-items: center;
  gap: 2rem;
  padding: 2rem 1rem;
  position: relative;
  z-index: 5;
}
.hero-headline {
  font-family: var(--font-poster);
  font-weight: 900;
  text-transform: uppercase;
  line-height: 1;
  letter-spacing: -0.01em;
}
.hero-headline .word-1 {
  font-size: clamp(3.2rem, 9.5vw, 8.2rem);
  display: block;
  color: var(--paper);
}
.hero-headline .word-2 {
  font-size: clamp(4.5rem, 14vw, 12rem);
  display: block;
  color: var(--mustard);
  letter-spacing: -0.02em;
  white-space: nowrap;
}
.hero-headline .word-3 {
  font-size: clamp(2.5rem, 7vw, 6rem);
  display: block;
  color: var(--paper);
}
.hero-tag {
  display: inline-block;
  margin-top: 1.5rem;
  font-family: var(--font-accent);
  font-style: italic;
  font-size: clamp(1.05rem, 1.8vw, 1.4rem);
  color: var(--paper-soft);
  padding: 0.4rem 0.9rem 0.45rem;
  background: var(--clay);
  letter-spacing: 0.01em;
}
.hero-sub {
  margin-top: 1.4rem;
  font-size: 1rem;
  max-width: 36ch;
  color: var(--paper-soft);
  line-height: 1.55;
}
.hero-ctas {
  margin-top: 1.8rem;
  display: flex;
  gap: 0.85rem;
  flex-wrap: wrap;
}

/* Right side — the illustrated poster art */
.hero-art {
  position: relative;
  aspect-ratio: 4 / 5;
  width: 100%;
  max-width: 540px;
  justify-self: end;
}
.hero-art svg {
  width: 100%;
  height: 100%;
  display: block;
}

/* Hero bottom strip: numbered features, like an itinerary */
.hero-foot {
  position: relative;
  z-index: 5;
  margin: 1.5rem 1rem 0;
  padding-top: 1.2rem;
  border-top: 1px solid rgba(244,234,212,0.35);
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1.5rem;
}
.hero-foot .item {
  display: flex;
  align-items: flex-start;
  gap: 0.7rem;
}
.hero-foot .num {
  font-family: var(--font-poster);
  font-weight: 900;
  font-size: 2rem;
  color: var(--mustard);
  line-height: 0.9;
}
.hero-foot .lbl {
  font-family: var(--font-poster);
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  font-size: 0.82rem;
  color: var(--paper);
}
.hero-foot .sub {
  font-family: var(--font-accent);
  font-style: italic;
  font-size: 0.82rem;
  color: var(--paper-soft);
  margin-top: 2px;
}
@media (max-width: 900px) {
  .hero-body { grid-template-columns: 1fr; }
  .hero-art { max-width: 380px; justify-self: center; }
  .hero-foot { grid-template-columns: repeat(2, 1fr); gap: 1.2rem; }
}
/* Below the clamp floor the nowrap line outgrows the frame — track the
   viewport instead so the one-line lockup survives on phones. 14vw (not
   15.5) budgets for the hero-body's own side padding stacked on the
   gutter; long town names ("St. Ignatius") share this rule. */
@media (max-width: 540px) {
  .hero-headline .word-2 { font-size: 14vw; }
}

/* Drifting sun animation */
@keyframes drift {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(-6px); }
}
.sun-disc { animation: drift 7s var(--ease) infinite; transform-origin: center; }

@keyframes shimmer {
  0%, 100% { opacity: 0.7; }
  50%      { opacity: 1; }
}
.sun-rays { animation: shimmer 4.5s ease-in-out infinite; transform-origin: center; }

/* ============================================================
   04. FIELD GUIDE STRIP — manifesto on a ticker
   ============================================================ */
.manifesto {
  background: var(--mustard);
  color: var(--ink);
  border-top: 3px solid var(--ink);
  border-bottom: 3px solid var(--ink);
  padding: 3rem var(--gutter);
  position: relative;
  overflow: hidden;
}
.manifesto::before {
  content: '';
  position: absolute;
  top: -3px; left: 0; right: 0;
  height: 14px;
  background: repeating-linear-gradient(90deg,
    var(--ink) 0 14px, transparent 14px 28px);
}
.manifesto-inner {
  max-width: 1080px;
  margin: 0 auto;
  text-align: center;
  position: relative;
}
.manifesto .lead {
  font-family: var(--font-poster);
  font-weight: 800;
  text-transform: uppercase;
  font-size: clamp(1.6rem, 3.6vw, 2.8rem);
  line-height: 1;
  letter-spacing: -0.005em;
}
.manifesto .lead .red {
  color: var(--clay);
  font-family: var(--font-accent);
  font-style: italic;
  font-weight: 400;
  text-transform: none;
  letter-spacing: -0.01em;
}
.manifesto .lead .teal {
  color: var(--teal);
}
.manifesto .sub {
  margin-top: 1.2rem;
  font-size: 1.05rem;
  max-width: 56ch;
  margin-left: auto;
  margin-right: auto;
  color: var(--ink-soft);
  line-height: 1.55;
}
.divider-orn {
  display: block;
  margin: 1.4rem auto 0;
  width: 240px;
}

/* ============================================================
   05. CATEGORY GATEWAYS — four ranger badges
   ============================================================ */
.categories {
  background: var(--paper);
  padding: 4.5rem var(--gutter) 3rem;
}
.categories-head {
  max-width: var(--max);
  margin: 0 auto 2.5rem;
  text-align: center;
}
.categories-head .eyebrow { color: var(--clay); }
.categories-head h2 {
  font-family: var(--font-poster);
  font-weight: 900;
  text-transform: uppercase;
  font-size: clamp(2.2rem, 5vw, 4rem);
  line-height: 0.9;
  margin-top: 0.6rem;
  color: var(--ink);
}
.categories-head h2 em {
  font-family: var(--font-accent);
  font-style: italic;
  font-weight: 400;
  color: var(--teal);
  text-transform: none;
}
.categories-head p {
  font-family: var(--font-accent);
  font-style: italic;
  margin-top: 0.6rem;
  color: var(--ink-soft);
}
.cat-grid {
  max-width: var(--max);
  margin: 0 auto;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1.5rem;
}
.cat-card {
  position: relative;
  background: var(--paper-soft);
  border: 2px solid var(--ink);
  padding: 1.6rem 1.2rem 1.2rem;
  text-align: center;
  transition: transform 0.25s var(--ease), box-shadow 0.25s var(--ease);
  box-shadow: 6px 6px 0 var(--ink);
}
.cat-card:hover {
  transform: translate(-3px, -3px) rotate(-1deg);
  box-shadow: 9px 9px 0 var(--ink);
}
.cat-card .badge {
  width: 130px; height: 130px;
  margin: 0 auto 1rem;
}
.cat-card h3 {
  font-family: var(--font-poster);
  font-weight: 900;
  font-size: 1.6rem;
  text-transform: uppercase;
  letter-spacing: 0.02em;
  color: var(--ink);
}
.cat-card .count {
  font-family: var(--font-accent);
  font-style: italic;
  color: var(--clay);
  font-size: 0.95rem;
  margin-top: 0.2rem;
}
.cat-card .desc {
  font-size: 0.88rem;
  color: var(--ink-soft);
  margin-top: 0.6rem;
  line-height: 1.45;
}
.cat-card .arrow {
  display: inline-block;
  margin-top: 1rem;
  font-family: var(--font-poster);
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  font-size: 0.78rem;
  color: var(--teal);
  border-bottom: 2px solid var(--teal);
  padding-bottom: 2px;
}
.cat-cell {
  display: flex;
  flex-direction: column;
  gap: 0.65rem;
}
.cat-card__subs {
  font-family: var(--font-body);
  font-size: 0.78rem;
  line-height: 1.55;
  color: var(--ink-soft);
  padding: 0 0.4rem;
  text-align: center;
}
.cat-card__subs a {
  color: var(--ink-soft);
  text-decoration: none;
  border-bottom: 1px solid transparent;
  transition: color 0.15s var(--ease), border-color 0.15s var(--ease);
}
.cat-card__subs a:hover {
  color: var(--clay);
  border-bottom-color: var(--clay);
}
.cat-card__subs .sep {
  color: var(--mustard-deep);
  margin: 0 0.2rem;
  opacity: 0.6;
}
.cat-card__subs a.all {
  font-family: var(--font-poster);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-size: 0.7rem;
  color: var(--teal);
}
.cat-card__subs a.all:hover {
  color: var(--clay);
  border-bottom-color: var(--clay);
}
@media (max-width: 900px) {
  .cat-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 500px) {
  .cat-grid { grid-template-columns: 1fr; }
}

/* ============================================================
   05b. SERVICES BAND — resident-facing band below the four mood-cards
   ============================================================ */
.services-band {
  background: var(--ink);
  color: var(--paper);
  padding: 3.5rem var(--gutter);
  border-top: 3px solid var(--mustard);
  border-bottom: 3px solid var(--mustard);
}
.services-band__inner {
  max-width: var(--max);
  margin: 0 auto;
}
.services-band__head {
  text-align: center;
  margin-bottom: 2rem;
}
.services-band__eyebrow {
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.28em;
  font-size: 0.78rem;
  font-weight: 700;
  color: var(--mustard);
  margin: 0 0 0.65rem;
}
.services-band__title {
  font-family: var(--font-poster);
  font-weight: 900;
  text-transform: uppercase;
  font-size: clamp(2rem, 4.5vw, 3.4rem);
  line-height: 0.92;
  color: var(--paper);
  margin: 0;
}
.services-band__title em {
  font-family: var(--font-accent);
  font-style: italic;
  font-weight: 400;
  color: var(--mustard);
  text-transform: none;
}
.services-band__sub {
  font-family: var(--font-body);
  font-size: 0.98rem;
  line-height: 1.55;
  color: var(--paper);
  opacity: 0.85;
  max-width: 56ch;
  margin: 0.9rem auto 0;
}
.services-band__list {
  display: flex;
  flex-wrap: wrap;
  gap: 0.7rem;
  justify-content: center;
  margin: 0 auto 2rem;
  max-width: 1000px;
}
.services-chip {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.55rem 0.9rem 0.6rem;
  background: var(--paper);
  color: var(--ink);
  border: 2px solid var(--mustard);
  text-decoration: none;
  font-family: var(--font-poster);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  font-size: 0.82rem;
  transition: transform 0.15s var(--ease), box-shadow 0.15s var(--ease), background 0.15s var(--ease);
}
.services-chip:hover {
  background: var(--mustard);
  transform: translate(-2px, -2px);
  box-shadow: 4px 4px 0 var(--clay);
}
.services-chip__name { line-height: 1; }
.services-chip__n {
  font-family: var(--font-poster);
  font-weight: 800;
  font-size: 0.72rem;
  color: var(--ink-soft);
  background: var(--mustard);
  padding: 0.15rem 0.4rem 0.2rem;
  border-radius: 2px;
  line-height: 1;
}
.services-chip:hover .services-chip__n {
  background: var(--paper);
  color: var(--ink);
}
.services-band__foot { text-align: center; }
.services-band__all {
  display: inline-block;
  font-family: var(--font-poster);
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.16em;
  font-size: 0.88rem;
  color: var(--mustard);
  border-bottom: 2px solid var(--mustard);
  padding-bottom: 3px;
  text-decoration: none;
  transition: color 0.15s var(--ease), border-color 0.15s var(--ease);
}
.services-band__all:hover {
  color: var(--clay);
  border-bottom-color: var(--clay);
}
@media (max-width: 640px) {
  .services-band { padding: 2.75rem var(--gutter); }
  .services-chip { font-size: 0.76rem; padding: 0.45rem 0.7rem 0.5rem; }
}

/* ============================================================
   HEADER SEARCH TOGGLE + OVERLAY  (Pass 6)
   ============================================================ */
.masthead-search-toggle {
  background: transparent;
  border: 2px solid var(--ink);
  color: var(--ink);
  cursor: pointer;
  width: 38px; height: 38px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  margin-right: 0.5rem;
  transition: transform 0.15s var(--ease), box-shadow 0.15s var(--ease), color 0.15s var(--ease);
}
.masthead-search-toggle:hover,
.masthead-search-toggle:focus {
  transform: translate(-2px, -2px);
  box-shadow: 3px 3px 0 var(--clay);
  color: var(--clay);
  outline: none;
}

.search-overlay {
  position: fixed;
  inset: 0;
  z-index: 9999;
  background: rgba(20, 23, 20, 0.94);
  display: none;
  align-items: flex-start;
  justify-content: center;
  padding: 12vh var(--gutter) var(--gutter);
}
.search-overlay.is-open { display: flex; }
body.search-overlay-open { overflow: hidden; }

.search-overlay__close {
  position: absolute;
  top: 1.5rem; right: 1.5rem;
  background: transparent;
  border: 2px solid var(--mustard);
  color: var(--mustard);
  width: 44px; height: 44px;
  font-size: 1.6rem;
  font-family: var(--font-poster);
  cursor: pointer;
  line-height: 1;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: transform 0.15s var(--ease), color 0.15s var(--ease);
}
.search-overlay__close:hover {
  transform: rotate(90deg);
  color: var(--clay);
}

.search-overlay__form {
  width: 100%;
  max-width: 700px;
}
.search-overlay__label {
  display: block;
  font-family: var(--font-poster);
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.22em;
  font-size: 0.85rem;
  color: var(--mustard);
  margin-bottom: 0.85rem;
}
.search-overlay__input {
  width: 100%;
  font-family: var(--font-poster);
  font-weight: 900;
  font-size: clamp(1.5rem, 4vw, 2.4rem);
  background: transparent;
  border: none;
  border-bottom: 3px solid var(--mustard);
  color: var(--paper);
  padding: 0.4rem 0;
  outline: none;
}
.search-overlay__input::placeholder {
  color: var(--paper);
  opacity: 0.4;
  font-style: italic;
  font-family: var(--font-accent);
  font-weight: 400;
}
.search-overlay__input:focus {
  border-bottom-color: var(--clay);
}
.search-overlay__hints {
  margin-top: 1.5rem;
  font-family: var(--font-body);
  font-size: 0.95rem;
  line-height: 1.5;
  color: var(--paper);
  opacity: 0.75;
}

/* ============================================================
   SEARCH RESULTS — /?s=query  (Pass 6, Relevanssi-backed)
   ============================================================ */
.search-section {
  background: var(--paper);
  padding: 2rem var(--gutter) 1rem;
}
.search-section + .search-section {
  padding-top: 0.5rem;
}
.search-section__inner {
  max-width: var(--max);
  margin: 0 auto;
}
.search-section__head {
  display: flex;
  align-items: baseline;
  gap: 1rem;
  margin-bottom: 1.25rem;
  padding-bottom: 0.5rem;
  border-bottom: 2px solid var(--ink);
}
.search-section__title {
  font-family: var(--font-poster);
  font-weight: 900;
  text-transform: uppercase;
  font-size: clamp(1.4rem, 2.5vw, 2rem);
  line-height: 1;
  color: var(--ink);
  margin: 0;
  letter-spacing: -0.005em;
}
.search-section__count {
  font-family: var(--font-poster);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  font-size: 0.8rem;
  color: var(--clay);
}
.search-section__grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 1.25rem;
}
/* Town-filter wrapper around each business card: invisible to the grid
   (cards stay direct grid items visually) but hideable by search-filter.js. */
.js-sresult { display: contents; }
.filterstrip--search { margin-top: -1px; }
/* past-events progressive reveal (events almanac) */
.past__row--more { display: none; }
.past--expanded .past__row--more { display: grid; }
.past__more {
  margin-top: 0.9rem; padding: 0.55rem 1.1rem;
  background: var(--paper); color: var(--ink);
  border: 2px solid var(--ink); cursor: pointer;
  font-family: var(--font-poster); font-weight: 700;
  font-size: 0.74rem; letter-spacing: 0.12em; text-transform: uppercase;
}
.past__more:hover { background: var(--mustard); }

.search-empty {
  background: var(--paper);
  padding: 4rem var(--gutter) 5rem;
}
.search-empty__inner {
  max-width: 700px;
  margin: 0 auto;
  text-align: center;
}
.search-empty__lede {
  font-family: var(--font-accent);
  font-style: italic;
  font-size: 1.4rem;
  color: var(--ink-soft);
  margin: 0 0 1.5rem;
}
.search-empty__hints {
  font-family: var(--font-poster);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  font-size: 0.8rem;
  color: var(--ink);
  margin: 0 0 1rem;
}
.search-empty__links {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 0.65rem;
}
.search-empty__links a {
  font-family: var(--font-poster);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-size: 0.85rem;
  color: var(--ink);
  text-decoration: none;
  padding: 0.5rem 0.85rem 0.55rem;
  border: 2px solid var(--ink);
  background: var(--paper-soft);
  transition: transform 0.15s var(--ease), box-shadow 0.15s var(--ease);
}
.search-empty__links a:hover {
  transform: translate(-2px, -2px);
  box-shadow: 3px 3px 0 var(--clay);
  color: var(--clay);
}

/* ============================================================
   TOWNS HUB — /towns/ landing
   ============================================================ */
.towns-hub {
  background: var(--paper);
  padding: 4rem var(--gutter) 5rem;
}
.towns-hub__inner {
  max-width: var(--max);
  margin: 0 auto;
}
.towns-hub__grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.75rem;
}
@media (max-width: 900px) {
  .towns-hub__grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 560px) {
  .towns-hub__grid { grid-template-columns: 1fr; }
}

.town-card {
  display: flex;
  flex-direction: column;
  background: var(--paper-soft);
  border: 2px solid var(--ink);
  padding: 1.75rem 1.5rem 1.5rem;
  text-decoration: none;
  color: var(--ink);
  box-shadow: 7px 7px 0 var(--ink);
  transition: transform 0.2s var(--ease), box-shadow 0.2s var(--ease);
  position: relative;
}
.town-card:hover {
  transform: translate(-3px, -3px);
  box-shadow: 10px 10px 0 var(--ink);
}
.town-card--city    { box-shadow: 7px 7px 0 var(--clay); }
.town-card--city:hover    { box-shadow: 10px 10px 0 var(--clay); }
.town-card--town    { box-shadow: 7px 7px 0 var(--teal); }
.town-card--town:hover    { box-shadow: 10px 10px 0 var(--teal); }
.town-card--community { box-shadow: 7px 7px 0 var(--mustard); }
.town-card--community:hover { box-shadow: 10px 10px 0 var(--mustard); }

.town-card__head {
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
  margin-bottom: 0.85rem;
}
.town-card__type {
  font-family: var(--font-poster);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.22em;
  font-size: 0.7rem;
  color: var(--clay);
  align-self: flex-start;
  padding: 0.15rem 0.45rem 0.2rem;
  border: 1px solid var(--clay);
  line-height: 1;
}
.town-card--city .town-card__type    { color: var(--clay);    border-color: var(--clay); }
.town-card--town .town-card__type    { color: var(--teal);    border-color: var(--teal); }
.town-card--community .town-card__type { color: var(--mustard-deep); border-color: var(--mustard-deep); }

.town-card__name {
  font-family: var(--font-poster);
  font-weight: 900;
  text-transform: uppercase;
  font-size: clamp(1.6rem, 2.6vw, 2.2rem);
  line-height: 0.95;
  letter-spacing: -0.01em;
  color: var(--ink);
  margin: 0;
}

.town-card__excerpt {
  font-family: var(--font-accent);
  font-style: italic;
  font-size: 1.02rem;
  line-height: 1.45;
  color: var(--ink-soft);
  margin: 0 0 1.25rem;
  flex: 1;
}

.town-card__foot {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  padding-top: 0.85rem;
  border-top: 1px solid var(--ink);
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.08em;
}
.town-card__count {
  font-size: 0.78rem;
  color: var(--ink-soft);
  font-weight: 700;
}
.town-card__arrow {
  font-size: 0.85rem;
  font-weight: 800;
  color: var(--teal);
  letter-spacing: 0.14em;
}
.town-card:hover .town-card__arrow { color: var(--clay); }

/* ============================================================
   06. FEATURED BUSINESSES — printmaker's frames
   ============================================================ */
.featured {
  background: var(--teal-deep);
  color: var(--paper);
  padding: 5rem var(--gutter);
  position: relative;
  overflow: hidden;
}
.featured::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image:
    radial-gradient(circle at 12% 18%, var(--teal) 0 1px, transparent 1.5px),
    radial-gradient(circle at 78% 62%, var(--teal) 0 1px, transparent 1.5px);
  background-size: 28px 28px, 36px 36px;
  opacity: 0.35;
  pointer-events: none;
}
.featured-head {
  max-width: var(--max);
  margin: 0 auto 2.5rem;
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: end;
  gap: 1.5rem;
  position: relative;
}
.featured-head .eyebrow { color: var(--mustard); }
.featured-head h2 {
  font-family: var(--font-poster);
  font-weight: 900;
  font-size: clamp(2.4rem, 5.5vw, 4.4rem);
  text-transform: uppercase;
  line-height: 0.92;
  color: var(--paper);
  margin-top: 0.4rem;
}
.featured-head h2 em {
  font-family: var(--font-accent);
  font-style: italic;
  font-weight: 400;
  color: var(--mustard);
  text-transform: none;
}
.featured-head .see-all {
  font-family: var(--font-poster);
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.16em;
  color: var(--paper);
  border-bottom: 2px solid var(--mustard);
  padding-bottom: 3px;
  font-size: 0.95rem;
}
.biz-grid {
  max-width: var(--max);
  margin: 0 auto;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.6rem;
  position: relative;
}
.biz-card {
  background: var(--paper);
  color: var(--ink);
  border: 2px solid var(--ink);
  box-shadow: 8px 8px 0 var(--clay);
  display: flex;
  flex-direction: column;
  transition: transform 0.25s var(--ease), box-shadow 0.25s var(--ease);
  overflow: hidden;
}
.biz-card:hover {
  transform: translate(-4px, -4px);
  box-shadow: 12px 12px 0 var(--mustard);
}
.biz-img {
  position: relative;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  border-bottom: 2px solid var(--ink);
  background: var(--teal);
}
.biz-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: sepia(0.5) hue-rotate(-12deg) saturate(1.3) contrast(1.05);
  mix-blend-mode: multiply;
  opacity: 0.9;
}
.biz-img::after {
  /* Halftone dot overlay */
  content: '';
  position: absolute;
  inset: 0;
  background-image: radial-gradient(circle at center, transparent 1.2px, rgba(31,87,99,0.18) 1.5px);
  background-size: 5px 5px;
  pointer-events: none;
}
.biz-stamp {
  position: absolute;
  top: 12px; right: 12px;
  background: var(--mustard);
  color: var(--ink);
  font-family: var(--font-poster);
  font-weight: 900;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  font-size: 0.7rem;
  padding: 0.35rem 0.7rem;
  border: 2px solid var(--ink);
  transform: rotate(-6deg);
}
.biz-body {
  padding: 1.2rem 1.3rem 1.4rem;
  flex: 1;
  display: flex;
  flex-direction: column;
}
.biz-meta {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-family: var(--font-poster);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.15em;
  font-size: 0.72rem;
  color: var(--clay);
}
.biz-meta .town {
  color: var(--teal);
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
}
.biz-meta .town::before {
  content: '';
  width: 6px; height: 6px;
  background: var(--clay);
  border-radius: 50%;
}
.biz-card h3 {
  font-family: var(--font-poster);
  font-weight: 900;
  font-size: 1.7rem;
  text-transform: uppercase;
  line-height: 0.95;
  margin: 0.5rem 0 0.5rem;
  color: var(--ink);
}
.biz-card .blurb {
  font-size: 0.93rem;
  color: var(--ink-soft);
  line-height: 1.55;
  flex: 1;
}
.biz-card .footer {
  margin-top: 1rem;
  padding-top: 0.9rem;
  border-top: 1px dashed var(--ink);
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-family: var(--font-accent);
  font-style: italic;
  color: var(--teal);
  font-size: 0.9rem;
}
.biz-card .footer .visit {
  font-family: var(--font-poster);
  font-style: normal;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  font-size: 0.78rem;
  color: var(--clay);
}
@media (max-width: 950px) {
  .biz-grid { grid-template-columns: repeat(2, 1fr); }
  .featured-head { grid-template-columns: 1fr; }
}
@media (max-width: 600px) {
  .biz-grid { grid-template-columns: 1fr; }
}

/* ============================================================
   07. EVENTS — ticket stubs
   ============================================================ */
.events {
  background: var(--paper-deep);
  padding: 5rem var(--gutter);
  position: relative;
}
.events-head {
  max-width: var(--max);
  margin: 0 auto 2.5rem;
  text-align: center;
}
.events-head .eyebrow { color: var(--clay); }
.events-head h2 {
  font-family: var(--font-poster);
  font-weight: 900;
  font-size: clamp(2.4rem, 5.5vw, 4.4rem);
  text-transform: uppercase;
  line-height: 0.92;
  color: var(--ink);
  margin-top: 0.5rem;
}
.events-head h2 em {
  font-family: var(--font-accent);
  font-style: italic;
  font-weight: 400;
  color: var(--clay);
  text-transform: none;
}
.events-head p {
  font-family: var(--font-accent);
  font-style: italic;
  color: var(--ink-soft);
  margin-top: 0.5rem;
}

.tickets {
  max-width: var(--max);
  margin: 0 auto;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem;
}
.ticket {
  background: var(--paper);
  border: 2px solid var(--ink);
  display: grid;
  grid-template-columns: 88px 1fr;
  position: relative;
  box-shadow: 5px 5px 0 var(--ink);
  transition: transform 0.2s var(--ease), box-shadow 0.2s var(--ease);
  overflow: hidden;
}
.ticket:hover {
  transform: translate(-2px, -2px) rotate(-0.6deg);
  box-shadow: 8px 8px 0 var(--ink);
}
.ticket .stub {
  background: var(--teal);
  color: var(--paper);
  padding: 1.1rem 0.4rem;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  position: relative;
  border-right: 2px dashed var(--paper);
}
.ticket .stub .mo {
  font-family: var(--font-poster);
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.2em;
  font-size: 0.85rem;
  color: var(--mustard);
}
.ticket .stub .day {
  font-family: var(--font-poster);
  font-weight: 900;
  font-size: 2.6rem;
  line-height: 1;
}
.ticket .stub .yr {
  font-family: var(--font-accent);
  font-style: italic;
  font-size: 0.8rem;
  color: var(--paper-soft);
  margin-top: 0.2rem;
}
/* Perforation circles */
.ticket .stub::before,
.ticket .stub::after {
  content: '';
  position: absolute;
  right: -8px;
  width: 14px; height: 14px;
  background: var(--paper-deep);
  border: 2px solid var(--ink);
  border-radius: 50%;
}
.ticket .stub::before { top: -8px; }
.ticket .stub::after { bottom: -8px; }

.ticket .body {
  padding: 1rem 1.2rem 1.1rem 1.3rem;
}
.ticket .body .cat {
  font-family: var(--font-poster);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  font-size: 0.7rem;
  color: var(--clay);
}
.ticket .body h3 {
  font-family: var(--font-poster);
  font-weight: 900;
  text-transform: uppercase;
  font-size: 1.35rem;
  line-height: 0.95;
  color: var(--ink);
  margin: 0.35rem 0 0.55rem;
}
.ticket .body .where {
  font-size: 0.88rem;
  color: var(--ink-soft);
}
.ticket .body .where strong {
  color: var(--teal);
}
.ticket .body .pill {
  display: inline-block;
  margin-top: 0.55rem;
  font-family: var(--font-poster);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  font-size: 0.72rem;
  color: var(--ink);
  background: var(--mustard);
  padding: 0.25rem 0.6rem;
  border: 1.5px solid var(--ink);
}
@media (max-width: 900px) {
  .tickets { grid-template-columns: 1fr; }
}

/* ============================================================
   08. STORIES — editorial strip
   ============================================================ */
.stories {
  background: var(--paper);
  padding: 5rem var(--gutter);
  position: relative;
}
.stories::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 8px;
  background: repeating-linear-gradient(90deg,
    var(--forest) 0 18px, var(--paper) 18px 22px,
    var(--clay) 22px 40px, var(--paper) 40px 44px,
    var(--mustard) 44px 62px, var(--paper) 62px 66px);
}
.stories-head {
  max-width: var(--max);
  margin: 0 auto 2.5rem;
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: end;
  gap: 1.5rem;
}
.stories-head .eyebrow { color: var(--forest); }
.stories-head h2 {
  font-family: var(--font-poster);
  font-weight: 900;
  font-size: clamp(2.4rem, 5.5vw, 4rem);
  text-transform: uppercase;
  line-height: 0.92;
  color: var(--ink);
  margin-top: 0.4rem;
}
.stories-head h2 em {
  font-family: var(--font-accent);
  font-style: italic;
  font-weight: 400;
  color: var(--forest);
  text-transform: none;
}
.stories-head .more {
  font-family: var(--font-poster);
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.16em;
  color: var(--ink);
  border-bottom: 2px solid var(--clay);
  padding-bottom: 3px;
  font-size: 0.92rem;
}

.story-grid {
  max-width: var(--max);
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1.4fr 1fr 1fr;
  gap: 1.6rem;
}
.story {
  display: flex;
  flex-direction: column;
  padding-top: 1rem;
  border-top: 3px solid var(--ink);
  transition: transform 0.25s var(--ease);
}
.story:hover { transform: translateY(-3px); }
.story.lead { grid-row: span 1; }
.story .num {
  font-family: var(--font-poster);
  font-weight: 900;
  font-size: 2.4rem;
  line-height: 1;
  color: var(--clay);
}
.story .ill {
  margin-top: 0.8rem;
  background: var(--forest);
  aspect-ratio: 4 / 3;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 2px solid var(--ink);
  overflow: hidden;
}
.story.lead .ill { background: var(--teal); aspect-ratio: 16 / 10; }
.story .ill svg { width: 80%; height: 80%; }
.story .cat {
  margin-top: 1rem;
  font-family: var(--font-poster);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  font-size: 0.72rem;
  color: var(--teal);
}
.story h3 {
  font-family: var(--font-poster);
  font-weight: 900;
  font-size: clamp(1.3rem, 1.9vw, 1.85rem);
  text-transform: uppercase;
  line-height: 0.98;
  margin-top: 0.45rem;
  color: var(--ink);
}
.story.lead h3 {
  font-size: clamp(1.8rem, 3vw, 2.6rem);
}
.story .dek {
  margin-top: 0.7rem;
  font-size: 0.93rem;
  color: var(--ink-soft);
  line-height: 1.55;
}
.story .byline {
  margin-top: 0.8rem;
  font-family: var(--font-accent);
  font-style: italic;
  color: var(--clay);
  font-size: 0.85rem;
}
@media (max-width: 950px) {
  .story-grid { grid-template-columns: 1fr 1fr; }
  .story.lead { grid-column: span 2; }
  .stories-head { grid-template-columns: 1fr; }
}
@media (max-width: 600px) {
  .story-grid { grid-template-columns: 1fr; }
  .story.lead { grid-column: span 1; }
}

/* ============================================================
   09. THE MAP — the centerfold moment
   ============================================================ */
.mapmoment {
  background: var(--forest);
  color: var(--paper);
  padding: 5rem var(--gutter);
  position: relative;
  overflow: hidden;
}
.mapmoment::before,
.mapmoment::after {
  content: '';
  position: absolute;
  left: 0; right: 0;
  height: 10px;
  background: repeating-linear-gradient(90deg,
    var(--mustard) 0 16px, var(--forest) 16px 32px);
}
.mapmoment::before { top: 0; }
.mapmoment::after { bottom: 0; }
.map-head {
  max-width: var(--max);
  margin: 0 auto 2.5rem;
  text-align: center;
}
.map-head .eyebrow { color: var(--mustard); }
.map-head h2 {
  font-family: var(--font-poster);
  font-weight: 900;
  font-size: clamp(2.4rem, 5.5vw, 4.6rem);
  text-transform: uppercase;
  line-height: 0.9;
  color: var(--paper);
  margin-top: 0.5rem;
}
.map-head h2 em {
  font-family: var(--font-accent);
  font-style: italic;
  font-weight: 400;
  color: var(--mustard);
  text-transform: none;
}
.map-head p {
  font-family: var(--font-accent);
  font-style: italic;
  color: var(--paper-soft);
  margin-top: 0.5rem;
  max-width: 56ch;
  margin-left: auto;
  margin-right: auto;
}

.map-frame {
  max-width: 1100px;
  margin: 0 auto;
  background: var(--paper);
  color: var(--ink);
  border: 3px solid var(--ink);
  padding: 1.5rem 1.5rem 1.2rem;
  box-shadow: 12px 12px 0 var(--clay);
  position: relative;
}
.map-frame::before {
  content: '';
  position: absolute;
  inset: 8px;
  border: 1px dashed var(--ink);
  pointer-events: none;
}
.map-titleblock {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  padding: 0.4rem 0.8rem 0.8rem;
  border-bottom: 2px solid var(--ink);
  margin-bottom: 0.8rem;
  gap: 1rem;
}
.map-titleblock .small {
  font-family: var(--font-poster);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  font-size: 0.72rem;
  color: var(--teal);
}
.map-titleblock .small.r { text-align: right; color: var(--clay); }
.map-titleblock h3 {
  font-family: var(--font-poster);
  font-weight: 900;
  text-transform: uppercase;
  font-size: clamp(1.4rem, 2.6vw, 2.2rem);
  letter-spacing: 0.05em;
  color: var(--ink);
}
.map-svg-wrap {
  position: relative;
  background:
    radial-gradient(circle at center, var(--paper) 0%, var(--paper-deep) 100%);
  border: 1.5px solid var(--ink);
  padding: 0;
}
.map-svg-wrap svg {
  width: 100%;
  height: auto;
  display: block;
}
/* Clickable town stamps on the centerfold map. */
.map-svg-wrap .map-pin { cursor: pointer; }
.map-svg-wrap .map-pin circle { transition: fill 0.15s var(--ease), stroke-width 0.15s var(--ease); }
.map-svg-wrap .map-pin:hover circle { fill: var(--clay); stroke-width: 3; }
.map-svg-wrap .map-pin:hover text { fill: var(--clay); }
.map-svg-wrap .map-pin:focus-visible { outline: none; }
.map-svg-wrap .map-pin:focus-visible circle { stroke: var(--clay); stroke-width: 4; }
.map-legend {
  margin-top: 0.9rem;
  padding: 0.7rem 0.8rem 0.4rem;
  border-top: 2px solid var(--ink);
  display: grid;
  grid-template-columns: repeat(4, auto);
  justify-content: center;
  gap: 1.2rem;
}
.map-legend .lg {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  font-family: var(--font-poster);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  font-size: 0.7rem;
  color: var(--ink);
}
.map-legend .lg .sw {
  width: 14px; height: 14px;
  border: 1.5px solid var(--ink);
}
@media (max-width: 700px) {
  .map-titleblock { grid-template-columns: 1fr; text-align: center; }
  .map-titleblock .small.r { text-align: center; }
  .map-legend { grid-template-columns: repeat(2, auto); }
}

/* ============================================================
   10. JOIN / SUBSCRIPTION CARDS
   ============================================================ */
.join {
  background: var(--clay);
  color: var(--paper);
  padding: 5rem var(--gutter);
  position: relative;
  overflow: hidden;
}
.join::before {
  content: '';
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at 80% 20%, rgba(244,234,212,0.08) 0 50%, transparent 70%),
    radial-gradient(circle at 20% 80%, rgba(26,23,20,0.18) 0 50%, transparent 70%);
  pointer-events: none;
}
.join-grid {
  max-width: var(--max);
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1.1fr 1fr;
  gap: 2rem;
  position: relative;
}
.join-card {
  background: var(--paper);
  color: var(--ink);
  border: 2px solid var(--ink);
  padding: 2rem 1.8rem 1.8rem;
  position: relative;
  box-shadow: 8px 8px 0 var(--ink);
}
.join-card.dark {
  background: var(--ink);
  color: var(--paper);
  box-shadow: 8px 8px 0 var(--mustard);
}
.join-card .eyebrow { color: var(--clay); }
.join-card.dark .eyebrow { color: var(--mustard); }
.join-card h3 {
  font-family: var(--font-poster);
  font-weight: 900;
  text-transform: uppercase;
  font-size: clamp(1.7rem, 3vw, 2.4rem);
  line-height: 0.95;
  margin-top: 0.6rem;
  color: inherit;
}
.join-card h3 em {
  font-family: var(--font-accent);
  font-style: italic;
  font-weight: 400;
  color: var(--clay);
  text-transform: none;
}
.join-card.dark h3 em { color: var(--mustard); }
.join-card p {
  margin-top: 0.7rem;
  font-size: 0.95rem;
  line-height: 1.55;
  color: var(--ink-soft);
}
.join-card.dark p { color: var(--paper-soft); }
.join-form {
  margin-top: 1.3rem;
  display: flex;
  gap: 0.6rem;
}
.join-form input {
  flex: 1;
  font: inherit;
  font-family: var(--font-body);
  font-size: 0.95rem;
  padding: 0.8rem 0.9rem;
  background: var(--paper-soft);
  border: 2px solid var(--ink);
  color: var(--ink);
  outline: none;
}
.join-form input:focus {
  background: var(--mustard);
}
.join-form button {
  background: var(--clay);
  color: var(--paper);
  font-family: var(--font-poster);
  font-weight: 900;
  text-transform: uppercase;
  letter-spacing: 0.15em;
  font-size: 0.85rem;
  padding: 0 1.2rem;
  border: 2px solid var(--ink);
  cursor: pointer;
}
.join-form button:hover { background: var(--ink); }
.subscription-card {
  margin-top: 1.3rem;
  padding: 0.7rem 1rem;
  border: 1.5px dashed currentColor;
  font-family: var(--font-accent);
  font-style: italic;
  font-size: 0.85rem;
  color: var(--ink-soft);
}
.join-card.dark .subscription-card { color: var(--paper-soft); }

.merchant-points {
  margin-top: 1.2rem;
  display: grid;
  gap: 0.6rem;
}
.merchant-points li {
  display: flex;
  align-items: flex-start;
  gap: 0.7rem;
  font-size: 0.92rem;
  color: var(--paper-soft);
  list-style: none;
}
.merchant-points .mk {
  font-family: var(--font-poster);
  font-weight: 900;
  color: var(--mustard);
  width: 22px;
  flex: none;
}
.join-cta {
  margin-top: 1.4rem;
  display: inline-flex;
  align-items: center;
  gap: 0.6rem;
  background: var(--mustard);
  color: var(--ink);
  font-family: var(--font-poster);
  font-weight: 900;
  text-transform: uppercase;
  letter-spacing: 0.15em;
  font-size: 0.9rem;
  padding: 0.85rem 1.3rem;
  border: 2px solid var(--paper);
  box-shadow: 4px 4px 0 var(--paper);
  transition: transform 0.18s var(--ease);
}
.join-cta:hover { transform: translate(-2px, -2px); }
@media (max-width: 900px) {
  .join-grid { grid-template-columns: 1fr; }
}

/* ============================================================
   11. FOOTER + LAND ACKNOWLEDGMENT
   ============================================================ */
.land {
  background: var(--ink);
  color: var(--paper);
  padding: 3.5rem var(--gutter);
  border-top: 6px solid var(--mustard);
  position: relative;
}
.land::before {
  content: '';
  position: absolute;
  top: -6px; left: 0; right: 0;
  height: 6px;
  background: repeating-linear-gradient(90deg,
    var(--mustard) 0 18px, var(--clay) 18px 36px,
    var(--forest) 36px 54px, var(--teal) 54px 72px);
}
.land-inner {
  max-width: 880px;
  margin: 0 auto;
  text-align: center;
}
.land .eyebrow {
  color: var(--mustard);
  letter-spacing: 0.3em;
}
.land h3 {
  font-family: var(--font-poster);
  font-weight: 800;
  text-transform: uppercase;
  font-size: clamp(1.6rem, 3.2vw, 2.4rem);
  line-height: 1;
  margin-top: 0.8rem;
}
.land h3 em {
  font-family: var(--font-accent);
  font-style: italic;
  font-weight: 400;
  color: var(--mustard);
  text-transform: none;
}
.land p {
  margin-top: 1rem;
  font-size: 1rem;
  line-height: 1.6;
  color: var(--paper-soft);
}
.land .tribal {
  margin-top: 1.2rem;
  font-family: var(--font-accent);
  font-style: italic;
  color: var(--mustard);
  font-size: 1.1rem;
}

/* ============================================================
   12. UTILITY
   ============================================================ */
.section-rule {
  text-align: center;
  padding: 1.5rem;
}
.section-rule svg { display: inline-block; }


/* ============================================================
   HOME PAGE — hybrid hero overrides
   Home now uses the same photo+typography pattern as town pages.
   Overrides the 2-column .hero-body grid + drops .hero-art rules.
   ============================================================ */
body.home .hero {
  isolation: isolate;
}
body.home .hero-frame {
  position: relative;
  z-index: 2;
  padding: 4rem var(--gutter) 3rem;
  min-height: min(92vh, 820px);
  display: grid;
  grid-template-rows: auto 1fr auto;
}
body.home .hero-frame::before,
body.home .hero-frame::after { display: none; }
body.home .hero-body {
  display: grid;
  grid-template-columns: 1fr;
  align-self: center;
  padding: 2rem 1rem;
  max-width: 940px;
  position: relative; z-index: 5;
}
body.home .hero-copy { max-width: 100%; }
body.home .hero-art { display: none; }


/* ============================================================
   DIRECTORY PAGE CSS — extracted from
   app/public/mockups/directory-postershop.html (lines 124–488).
   ============================================================ */

/* ============================================================
   DIRECTORY HEADER
   ============================================================ */
.dir-header {
  background: var(--mustard);
  border-bottom: 3px solid var(--ink);
  padding: 4rem var(--gutter);
  position: relative;
}
.dir-header::before {
  content: '';
  position: absolute; top: -3px; left: 0; right: 0; height: 14px;
  background: repeating-linear-gradient(90deg, var(--ink) 0 14px, transparent 14px 28px);
}
.dir-header__inner {
  max-width: var(--max); margin: 0 auto;
  display: grid; grid-template-columns: 1.4fr 1fr; gap: 3rem;
  align-items: center;
}
@media (max-width: 880px) { .dir-header__inner { grid-template-columns: 1fr; gap: 2rem; } }
.dir-header__main { }
.dir-header__eyebrow {
  font-family: var(--font-poster); font-weight: 800;
  letter-spacing: 0.22em; text-transform: uppercase; font-size: 0.84rem;
  color: var(--clay); margin-bottom: 1rem; display: block;
}
.dir-header__title {
  font-family: var(--font-poster); font-weight: 900;
  text-transform: uppercase;
  font-size: clamp(2.5rem, 6vw, 4.8rem);
  line-height: 0.88; letter-spacing: -0.02em;
  color: var(--ink); margin-bottom: 1rem;
}
.dir-header__title em {
  font-family: var(--font-accent); font-style: italic; font-weight: 400;
  color: var(--teal); text-transform: none;
}
.dir-header__lede {
  font-size: 1.05rem; line-height: 1.6;
  color: var(--ink-soft); max-width: 52ch;
}
.dir-header__stats { display: grid; gap: 0.9rem; }
.dir-header__stat {
  background: var(--paper); color: var(--ink);
  border: 2px solid var(--ink); box-shadow: 4px 4px 0 var(--ink);
  padding: 1rem 1.25rem;
  display: grid; grid-template-columns: auto 1fr; gap: 1.2rem; align-items: center;
}
.dir-header__stat .num {
  font-family: var(--font-poster); font-weight: 900;
  font-size: 2.6rem; line-height: 1;
  color: var(--clay);
}
.dir-header__stat .label {
  display: grid; gap: 0.3rem;
}
.dir-header__stat .label .lbl {
  font-family: var(--font-poster); font-weight: 800;
  text-transform: uppercase; letter-spacing: 0.14em; font-size: 0.78rem;
  color: var(--ink);
}
.dir-header__stat .label .sub {
  font-family: var(--font-accent); font-style: italic;
  font-size: 0.84rem; color: var(--ink-soft);
}

/* ============================================================
   FILTER BAR — sticky horizontal
   ============================================================ */
.filterbar {
  background: var(--paper); border-bottom: 3px solid var(--ink);
  position: sticky; top: 0; z-index: 40;
}
.filterbar::after {
  content: ''; position: absolute; bottom: -8px; left: 0; right: 0;
  height: 4px;
  background: repeating-linear-gradient(90deg, var(--ink) 0 6px, transparent 6px 12px);
}
.filterbar__inner {
  max-width: var(--max); margin: 0 auto;
  padding: 1rem var(--gutter);
  display: grid; grid-template-columns: 1fr auto; gap: 2rem; align-items: center;
}
.filterbar__filters {
  display: flex; gap: 0.5rem;
  overflow-x: auto; scrollbar-width: none;
}
.filterbar__filters::-webkit-scrollbar { display: none; }
.chip {
  font-family: var(--font-poster); font-weight: 700;
  letter-spacing: 0.14em; text-transform: uppercase; font-size: 0.74rem;
  color: var(--ink);
  padding: 0.55rem 0.9rem;
  border: 2px solid var(--ink);
  background: var(--paper);
  white-space: nowrap;
  display: inline-flex; align-items: center; gap: 0.5rem;
  cursor: pointer;
  transition: all 0.18s var(--ease);
}
.chip:hover { background: var(--paper-soft); transform: translate(-1px, -1px); box-shadow: 2px 2px 0 var(--ink); }
.chip.is-active {
  background: var(--clay); color: var(--paper);
  box-shadow: 3px 3px 0 var(--ink);
}
.chip .pip {
  width: 6px; height: 6px; border-radius: 50%; background: var(--ink-soft);
}
.chip.is-active .pip { background: var(--paper-soft); }
.chip .pip.eat  { background: var(--clay); }
.chip .pip.stay { background: var(--teal); }
.chip .pip.do   { background: var(--forest); }
.chip .pip.shop { background: var(--mustard-deep); }
.chip .pip.svc  { background: var(--ink-soft); }
.chip.is-active .pip.eat,
.chip.is-active .pip.stay,
.chip.is-active .pip.do,
.chip.is-active .pip.shop,
.chip.is-active .pip.svc { background: var(--paper); }
.chip .count {
  color: var(--ink-soft); font-size: 0.7rem; margin-left: 0.2rem;
}
.chip.is-active .count { color: var(--paper-soft); }
.chip-sep { width: 2px; height: 20px; background: var(--ink); align-self: center; margin: 0 0.3rem; }

.filterbar__actions { display: flex; gap: 0.7rem; align-items: center; }
.action {
  font-family: var(--font-poster); font-weight: 700;
  letter-spacing: 0.14em; text-transform: uppercase; font-size: 0.72rem;
  color: var(--ink);
  padding: 0.5rem 0.85rem;
  border: 2px solid var(--ink); background: var(--paper-soft);
  white-space: nowrap;
}
.action:hover { background: var(--paper); transform: translate(-1px, -1px); box-shadow: 2px 2px 0 var(--ink); }

.viewtoggle { display: flex; border: 2px solid var(--ink); background: var(--paper); }
.viewtoggle button {
  font-family: var(--font-poster); font-weight: 700;
  letter-spacing: 0.14em; text-transform: uppercase; font-size: 0.72rem;
  padding: 0.5rem 0.85rem;
  color: var(--ink);
  border-right: 2px solid var(--ink);
}
.viewtoggle button:last-child { border-right: none; }
.viewtoggle button.is-active { background: var(--teal); color: var(--paper); }

@media (max-width: 880px) {
  .filterbar__inner { grid-template-columns: 1fr; gap: 0.75rem; }
  .filterbar__actions { justify-content: space-between; }
}

/* ============================================================
   EDITOR'S PICKS — asymmetric featured
   ============================================================ */
.picks {
  background: var(--paper-soft); padding: 4rem var(--gutter) 2rem;
  border-bottom: 3px solid var(--ink);
}
.picks__head {
  max-width: var(--max); margin: 0 auto 2rem;
  display: flex; justify-content: space-between; align-items: baseline;
  border-bottom: 2px solid var(--ink); padding-bottom: 1rem;
}
.picks__title {
  font-family: var(--font-poster); font-weight: 900;
  text-transform: uppercase;
  font-size: clamp(1.7rem, 3vw, 2.4rem); line-height: 0.9;
  color: var(--ink);
}
.picks__title em { font-family: var(--font-accent); font-style: italic; font-weight: 400; color: var(--clay); text-transform: none; }
.picks__sub {
  font-family: var(--font-accent); font-style: italic;
  font-size: 0.98rem; color: var(--ink-soft);
}
.picks__grid {
  max-width: var(--max); margin: 0 auto;
  display: grid; grid-template-columns: 1.4fr 1fr; gap: 1.5rem;
}
@media (max-width: 880px) { .picks__grid { grid-template-columns: 1fr; } }
.pick-hero {
  position: relative; display: block;
  height: 460px; overflow: hidden;
  background: var(--paper); border: 2px solid var(--ink);
  box-shadow: 8px 8px 0 var(--clay);
  transition: transform 0.25s var(--ease), box-shadow 0.25s var(--ease);
}
.pick-hero:hover {
  transform: translate(-3px, -3px);
  box-shadow: 11px 11px 0 var(--clay);
}
.pick-hero__img { position: absolute; inset: 0; z-index: 0; }
.pick-hero__img img {
  width: 100%; height: 100%; object-fit: cover;
  filter: contrast(1.05) saturate(0.95);
}
.pick-hero__grad {
  position: absolute; inset: 0; z-index: 1;
  background: linear-gradient(180deg, rgba(20,59,69,0.0) 35%, rgba(20,59,69,0.92) 100%);
}
.pick-hero__content {
  position: absolute; inset: 0; z-index: 2;
  padding: 1.6rem; color: var(--paper);
  display: flex; flex-direction: column; justify-content: space-between;
}
.tag {
  display: inline-flex; align-items: center; gap: 0.4rem;
  font-family: var(--font-poster); font-weight: 700;
  letter-spacing: 0.14em; text-transform: uppercase; font-size: 0.72rem;
  padding: 0.4rem 0.7rem;
  background: var(--paper); color: var(--ink);
  border: 2px solid var(--ink);
}
.tag.cskt  { background: var(--teal); color: var(--paper); }
.tag.pick  { background: var(--mustard); color: var(--ink); }
.tag.owner { background: transparent; }
.tag.stay  { background: var(--paper); }
.tag.eat   { background: var(--clay); color: var(--paper); }
.tag.do    { background: var(--forest); color: var(--paper); }
.tag.shop  { background: var(--mustard); }
.tag.svc   { background: var(--paper-deep); }
.tag.small { font-size: 0.62rem; padding: 0.25rem 0.5rem; border-width: 1.5px; }
.tag.subcat { background: var(--paper-deep); color: var(--teal-deep); border-color: var(--teal-deep); }
.pick-tags { display: flex; gap: 0.5rem; flex-wrap: wrap; }
.pick-hero__name {
  font-family: var(--font-poster); font-weight: 900;
  text-transform: uppercase;
  font-size: clamp(2rem, 3vw, 2.6rem); line-height: 0.95;
  color: var(--paper); margin-bottom: 0.4rem;
}
.pick-hero__name em {
  font-family: var(--font-accent); font-style: italic; font-weight: 400;
  color: var(--mustard); text-transform: none;
}
.pick-hero__loc {
  font-family: var(--font-accent); font-style: italic;
  font-size: 0.98rem; color: var(--paper-soft);
}

.pick-stack { display: grid; gap: 1.25rem; grid-template-rows: 1fr 1fr; }
.pick-mini {
  position: relative; display: block;
  overflow: hidden;
  background: var(--paper); border: 2px solid var(--ink);
  box-shadow: 5px 5px 0 var(--clay);
  transition: transform 0.25s var(--ease), box-shadow 0.25s var(--ease);
}
.pick-mini:hover { transform: translate(-2px, -2px); box-shadow: 7px 7px 0 var(--clay); }
.pick-mini__img { position: absolute; inset: 0; z-index: 0; }
.pick-mini__img img { width: 100%; height: 100%; object-fit: cover; filter: contrast(1.05); }
.pick-mini__grad {
  position: absolute; inset: 0; z-index: 1;
  background: linear-gradient(180deg, rgba(20,59,69,0.05) 30%, rgba(20,59,69,0.9) 100%);
}
.pick-mini__content {
  position: absolute; inset: 0; z-index: 2; padding: 1.1rem;
  color: var(--paper);
  display: flex; flex-direction: column; justify-content: space-between;
}
.pick-mini__name {
  font-family: var(--font-poster); font-weight: 900;
  text-transform: uppercase;
  font-size: 1.4rem; line-height: 1; color: var(--paper);
}
.pick-mini__loc {
  font-family: var(--font-accent); font-style: italic;
  font-size: 0.84rem; color: var(--paper-soft);
}

/* ============================================================
   TOWN BLOCKS
   ============================================================ */
.results {
  padding: clamp(3rem, 5vh, 4rem) var(--gutter) 4rem;
  max-width: var(--max); margin: 0 auto;
}
.townblock {
  margin-bottom: clamp(3rem, 6vh, 5rem);
}
.townblock__head {
  display: grid; grid-template-columns: auto 1fr auto; gap: 1.5rem;
  align-items: end;
  padding-bottom: 1.2rem; margin-bottom: 1.8rem;
  border-bottom: 2px solid var(--ink);
}
.townblock__num {
  font-family: var(--font-poster); font-weight: 900;
  font-size: 3rem; line-height: 0.85;
  color: var(--clay);
  text-shadow: 3px 3px 0 var(--ink);
}
.townblock__name {
  font-family: var(--font-poster); font-weight: 900;
  text-transform: uppercase;
  font-size: clamp(1.7rem, 3vw, 2.4rem); line-height: 1;
  color: var(--ink);
}
.townblock__name em { font-family: var(--font-accent); font-style: italic; font-weight: 400; color: var(--teal); text-transform: none; }
.townblock__meta {
  text-align: right;
  font-family: var(--font-poster); font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.14em; font-size: 0.78rem;
  color: var(--ink-soft);
}
.townblock__meta .count {
  display: block; font-size: 1.3rem; color: var(--clay);
  font-weight: 900; margin-bottom: 0.2rem;
}

.townblock__grid {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 360px));
  gap: 1.4rem;
}

.listing-card {
  position: relative; display: block;
  background: var(--paper-soft);
  border: 2px solid var(--ink);
  box-shadow: 6px 6px 0 var(--ink);
  transition: transform 0.25s var(--ease), box-shadow 0.25s var(--ease);
  overflow: hidden;
}
.listing-card:hover {
  transform: translate(-3px, -3px) rotate(-0.5deg);
  box-shadow: 9px 9px 0 var(--ink);
}
.listing-card__media {
  position: relative;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  border-bottom: 2px solid var(--ink);
}
.listing-card__media img { width: 100%; height: 100%; object-fit: cover; filter: contrast(1.04) saturate(0.95); }
.listing-card__body { padding: 1rem 1.1rem 1.2rem; }
.listing-card__tags { display: flex; gap: 0.4rem; flex-wrap: wrap; margin-bottom: 0.6rem; }
.listing-card__name {
  font-family: var(--font-poster); font-weight: 900;
  text-transform: uppercase;
  font-size: 1.3rem; line-height: 1;
  color: var(--ink); margin-bottom: 0.5rem;
}
.listing-card__name em { font-family: var(--font-accent); font-style: italic; font-weight: 400; color: var(--teal); text-transform: none; }
.listing-card__meta {
  font-family: var(--font-accent); font-style: italic;
  font-size: 0.88rem; color: var(--ink-soft);
}

.townblock__seeall {
  display: inline-flex; align-items: center; gap: 0.6rem;
  margin-top: 1.5rem;
  font-family: var(--font-poster); font-weight: 800;
  letter-spacing: 0.16em; text-transform: uppercase; font-size: 0.78rem;
  color: var(--clay);
  border-bottom: 2px solid var(--clay); padding-bottom: 3px;
}
.townblock__seeall:hover { color: var(--ink); border-bottom-color: var(--ink); }

/* ============================================================
   PAGINATION
   ============================================================ */
.pagination {
  padding: 2rem var(--gutter) 5rem;
  max-width: var(--max); margin: 0 auto;
  display: flex; justify-content: center; gap: 1.5rem; align-items: center;
  flex-wrap: wrap;
}
.pagination__count {
  font-family: var(--font-accent); font-style: italic;
  color: var(--ink-soft);
}

/* ============================================================
   SINGLE BUSINESS CSS — extracted from
   app/public/mockups/single-business-postershop.html.
   Skipped lines 162–208 (.hero / .hero__bg / .hero__overlay /
   .hero-frame) since the town-polson extraction already covers
   those selectors with values that work for both contexts.
   Single-business introduces .crumb, .hero-name, .hero-tagline,
   .hero-loc, .hero-lede, .gallery (polaroid), .body grid, .features chips,
   .headsup callout, .info sidebar, .locmap, .related grid.
   ============================================================ */

/* ============================================================
   CRUMB
   ============================================================ */
.crumb {
  background: var(--paper-deep);
  border-bottom: 2px solid var(--ink);
  padding: 0.75rem var(--gutter);
}
.crumb__inner {
  max-width: var(--max); margin: 0 auto;
  display: flex; align-items: center; gap: 0.7rem;
  font-family: var(--font-poster); font-weight: 700;
  font-size: 0.74rem; letter-spacing: 0.16em; text-transform: uppercase;
  color: var(--ink-soft);
  flex-wrap: wrap;
}
.crumb__inner .sep { color: var(--clay); }
.crumb__inner .current { color: var(--ink); }
.crumb__inner a:hover { color: var(--clay); }

.hero-top {
  display: flex; justify-content: space-between; align-items: center;
  padding: 0.5rem 1rem;
  font-family: var(--font-poster); text-transform: uppercase;
  letter-spacing: 0.22em; font-size: 0.74rem;
  color: var(--mustard);
}
.hero-top .mid { color: var(--paper); letter-spacing: 0.3em; font-weight: 800; }

.hero-body {
  align-self: end;
  padding: 1.5rem 1rem 0.5rem;
  max-width: 800px;
}
.hero-tags {
  display: flex; gap: 0.5rem; flex-wrap: wrap;
  margin-bottom: 1.5rem;
}
.tag {
  display: inline-flex; align-items: center; gap: 0.4rem;
  font-family: var(--font-poster); font-weight: 700;
  letter-spacing: 0.14em; text-transform: uppercase; font-size: 0.72rem;
  padding: 0.4rem 0.7rem;
  background: var(--paper); color: var(--ink);
  border: 2px solid var(--ink);
}
.tag.cskt   { background: var(--teal); color: var(--paper); }
.tag.pick   { background: var(--mustard); color: var(--ink); }
.tag.stay   { background: var(--paper); }
.tag.eat    { background: var(--clay); color: var(--paper); }
.tag.do     { background: var(--forest); color: var(--paper); }
.tag.shop   { background: var(--mustard); }
.tag.svc    { background: var(--paper-deep); }

.hero-name {
  font-family: var(--font-poster); font-weight: 900;
  text-transform: uppercase;
  font-size: clamp(2.8rem, 7vw, 6rem);
  line-height: 0.88; letter-spacing: -0.02em;
  color: var(--mustard);
  margin-bottom: 1rem;
}
.hero-name em {
  font-family: var(--font-accent); font-style: italic; font-weight: 400;
  color: var(--paper); text-transform: none;
}
.hero-tagline {
  font-family: var(--font-body); font-weight: 500;
  font-size: clamp(1.1rem, 1.9vw, 1.45rem);
  line-height: 1.35;
  color: var(--paper);
  max-width: 55ch;
  margin: 0 0 1rem;
  letter-spacing: 0.005em;
}
.hero-loc {
  display: inline-block;
  font-family: var(--font-accent); font-style: italic;
  font-size: clamp(1.05rem, 1.8vw, 1.4rem);
  color: var(--paper-soft);
  padding: 0.4rem 0.9rem 0.45rem;
  background: var(--clay);
  letter-spacing: 0.01em;
  margin-bottom: 1.5rem;
}
.hero-lede {
  font-size: 1.05rem; line-height: 1.55;
  color: var(--paper-soft); max-width: 50ch;
}

/* ============================================================
   GALLERY STRIP — polaroid postcards
   ============================================================ */
.gallery {
  background: var(--paper);
  padding: 4rem var(--gutter) 1rem;
  border-bottom: 3px solid var(--ink);
}
.gallery__head {
  max-width: var(--max); margin: 0 auto 2rem;
  display: flex; justify-content: space-between; align-items: baseline;
  border-bottom: 2px solid var(--ink);
  padding-bottom: 0.8rem;
}
.gallery__title {
  font-family: var(--font-poster); font-weight: 900;
  text-transform: uppercase; font-size: 1.6rem; letter-spacing: 0.02em;
  color: var(--ink);
}
.gallery__count {
  font-family: var(--font-accent); font-style: italic;
  font-size: 0.95rem; color: var(--clay);
}
.gallery__grid {
  max-width: var(--max); margin: 0 auto;
  display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
  gap: 1.2rem;
  padding-bottom: 3rem;
}
.polaroid {
  position: relative;
  background: var(--paper-soft);
  border: 2px solid var(--ink);
  padding: 8px 8px 32px;
  box-shadow: 5px 5px 0 var(--mustard);
  transition: transform 0.25s var(--ease), box-shadow 0.25s var(--ease);
}
.polaroid:nth-child(odd) { transform: rotate(-1deg); }
.polaroid:nth-child(even) { transform: rotate(1deg); }
.polaroid:hover {
  transform: rotate(0deg) translate(-2px, -2px);
  box-shadow: 8px 8px 0 var(--mustard);
  z-index: 2;
}
.polaroid img { aspect-ratio: 4 / 3; object-fit: cover; width: 100%; }
.polaroid__cap {
  position: absolute;
  bottom: 8px; left: 0; right: 0;
  text-align: center;
  font-family: var(--font-accent); font-style: italic;
  font-size: 0.8rem; color: var(--ink-soft);
}

/* ============================================================
   BODY — prose + sidebar info card
   ============================================================ */
.body {
  background: var(--paper-soft);
  padding: 4rem var(--gutter) 4rem;
  border-bottom: 3px solid var(--ink);
}
.body__grid {
  max-width: var(--max); margin: 0 auto;
  display: grid; grid-template-columns: 1fr 360px; gap: 3rem;
  align-items: start;
}
@media (max-width: 1024px) { .body__grid { grid-template-columns: 1fr; gap: 2rem; } }

.body__section { margin-bottom: 3rem; }
.body__section:last-child { margin-bottom: 0; }
.body__section h2 {
  font-family: var(--font-poster); font-weight: 900;
  text-transform: uppercase;
  font-size: clamp(1.7rem, 3vw, 2.4rem);
  line-height: 0.9; color: var(--ink);
  margin-bottom: 1.5rem;
  padding-bottom: 0.6rem;
  border-bottom: 2px solid var(--ink);
}
.body__section h2 em {
  font-family: var(--font-accent); font-style: italic; font-weight: 400;
  color: var(--teal); text-transform: none;
}
.body__section .eyebrow {
  display: block;
  font-family: var(--font-poster); font-weight: 700;
  letter-spacing: 0.18em; text-transform: uppercase;
  font-size: 0.72rem;
  color: var(--clay); margin-bottom: 0.6rem;
}
.body__prose p {
  font-size: 1rem; line-height: 1.7;
  color: var(--ink); margin-bottom: 1.2rem; max-width: 62ch;
}
.body__prose em {
  font-family: var(--font-accent); font-style: italic;
  color: var(--ink-soft);
}
.body__prose a {
  color: var(--clay); border-bottom: 2px solid var(--clay);
  padding-bottom: 1px;
}

/* Features chips */
.features {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: 0.6rem;
}
/* "What they offer" — the services list. Ledger rows rather than chips:
   services read as a menu of hireable work, not badges. */
.services-list {
  list-style: none; margin: 0; padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
  gap: 0.35rem 1.5rem;
}
.services-list__item {
  padding: 0.45rem 0 0.45rem 1.3rem;
  position: relative;
  border-bottom: 1px dashed color-mix(in srgb, var(--ink) 25%, transparent);
  font-size: 0.92rem;
  color: var(--ink);
}
.services-list__item::before {
  content: '›';
  position: absolute; left: 0.15rem;
  color: var(--clay); font-weight: 700;
}
.feature {
  display: flex; align-items: center; gap: 0.55rem;
  padding: 0.7rem 0.9rem;
  background: var(--paper);
  border: 2px solid var(--ink);
  font-family: var(--font-poster); font-weight: 700;
  font-size: 0.74rem; letter-spacing: 0.12em; text-transform: uppercase;
  color: var(--ink);
  box-shadow: 3px 3px 0 var(--teal);
}
.feature .star { color: var(--clay); }

/* Amenity checklist facts — ledger rows under the chips (portal quick facts).
   Blank questions never reach the markup; emv_checklist_render() drops them. */
.amenity-facts {
  margin: 1.1rem 0 0; padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 0.35rem 1.5rem;
}
.features + .amenity-facts {
  border-top: 2px solid var(--ink);
  padding-top: 0.9rem;
}
.amenity-fact {
  display: flex; align-items: baseline; justify-content: space-between; gap: 0.8rem;
  padding: 0.45rem 0;
  border-bottom: 1px dashed color-mix(in srgb, var(--ink) 25%, transparent);
}
.amenity-fact__label {
  font-family: var(--font-poster); font-weight: 700;
  font-size: 0.72rem; letter-spacing: 0.12em; text-transform: uppercase;
  color: var(--ink);
}
.amenity-fact__value {
  margin: 0;
  font-size: 0.92rem; color: var(--ink);
  text-align: right;
}
.amenity-facts__mark {
  margin: 0.7rem 0 0;
  font-family: var(--font-accent); font-style: italic;
  font-size: 0.9rem; color: var(--teal);
}

/* Heads-up callout — warning poster style */
.headsup {
  position: relative;
  padding: 1.6rem 1.8rem;
  background: var(--mustard);
  border: 2px solid var(--ink);
  box-shadow: 5px 5px 0 var(--ink);
}
.headsup::before {
  content: '⚐';
  position: absolute;
  top: -16px; left: 1.5rem;
  width: 36px; height: 36px;
  background: var(--clay);
  border: 2px solid var(--ink);
  color: var(--paper);
  display: grid; place-items: center;
  font-family: var(--font-poster); font-size: 1.2rem;
  line-height: 1;
}
.headsup__label {
  font-family: var(--font-poster); font-weight: 800;
  letter-spacing: 0.18em; text-transform: uppercase;
  font-size: 0.78rem;
  color: var(--clay-deep);
  margin-bottom: 0.5rem;
}
.headsup__text {
  font-family: var(--font-accent); font-style: italic;
  font-size: 1.05rem; line-height: 1.45;
  color: var(--ink);
}

/* Sidebar — listing info ticket */
.info {
  background: var(--paper);
  border: 2px solid var(--ink);
  box-shadow: 6px 6px 0 var(--clay);
}
.info__head {
  padding: 1.25rem 1.5rem;
  background: var(--ink); color: var(--paper);
  display: flex; justify-content: space-between; align-items: center;
}
.info__title {
  font-family: var(--font-poster); font-weight: 800;
  letter-spacing: 0.18em; text-transform: uppercase;
  font-size: 0.8rem;
  color: var(--mustard);
}
.info__verified {
  display: flex; align-items: center; gap: 0.4rem;
  font-family: var(--font-poster); font-weight: 700;
  font-size: 0.66rem; letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--paper);
}
.info__verified .dot {
  width: 7px; height: 7px; border-radius: 50%;
  background: var(--mustard);
}
.info__row {
  display: grid; grid-template-columns: 90px 1fr; gap: 0.8rem;
  padding: 0.95rem 1.5rem;
  border-bottom: 1px dashed var(--ink);
  align-items: baseline;
}
.info__row:last-child { border-bottom: none; }
.info__row .k {
  font-family: var(--font-poster); font-weight: 700;
  font-size: 0.7rem; letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--clay);
}
.info__row .v {
  font-size: 0.94rem;
  color: var(--ink);
  line-height: 1.45;
  /* Allow long URLs and email addresses to wrap inside the value cell
     so they don't overflow the sidebar card boundary. */
  min-width: 0;
  overflow-wrap: anywhere;
  word-break: break-word;
}
.info__row .v a {
  color: var(--teal); border-bottom: 2px solid var(--teal);
  padding-bottom: 1px;
}

.info__hours { display: grid; gap: 0.25rem; }
.info__hours .row {
  display: grid; grid-template-columns: 38px 1fr;
  font-family: var(--font-body); font-size: 0.9rem;
  color: var(--ink);
}
.info__hours .row .day {
  font-family: var(--font-poster); font-weight: 700;
  font-size: 0.76rem; letter-spacing: 0.1em; text-transform: uppercase;
  color: var(--ink-soft);
  /* reset the generic .day card style (border/shadow) bleeding in here */
  background: none; border: 0; box-shadow: none; overflow: visible;
  padding: 0; transition: none; align-self: center;
}
.info__hours .row .day:hover { transform: none; box-shadow: none; }
.info__hours .row.is-today .day { color: var(--clay); }
.info__hours .row.is-today { color: var(--clay); font-weight: 600; }
.info__socials { display: inline-flex; flex-wrap: wrap; gap: 0.5rem; align-items: center; }
.info__social {
  display: inline-flex; align-items: center; justify-content: center;
  width: 34px; height: 34px; border-radius: 50%;
  border: 1.5px solid var(--ink); color: var(--ink);
  transition: background .15s ease, color .15s ease, border-color .15s ease;
}
.info__social svg { width: 18px; height: 18px; display: block; }
.info__social:hover, .info__social:focus-visible { background: var(--clay); color: var(--paper); border-color: var(--clay); }
/* Empty (collapsed, invisible) until JS confirms reviews exist, then the box
   styling appears. NOT display:none — the lazy-loader watches the mount inside,
   and a display:none element never intersects, so it would never load. */
.greviews-section.is-active { background: var(--paper); padding: 3rem var(--gutter); border-bottom: 3px solid var(--ink); }
.greviews { max-width: var(--max); margin: 0 auto; }
.greviews__head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 0.5rem 1rem; margin-bottom: 1.5rem; }
.greviews__title { font-family: var(--font-poster); font-weight: 900; text-transform: uppercase; font-size: clamp(1.5rem, 3vw, 2.2rem); color: var(--ink); }
.greviews__src { font-family: var(--font-body); font-size: 0.95rem; color: var(--teal); }
.greviews__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.25rem; }
@media (max-width: 640px) { .greviews__grid { grid-template-columns: 1fr; } }
.greview { background: var(--paper-soft); border: 2px solid var(--ink); padding: 1.1rem 1.2rem; display: flex; flex-direction: column; gap: 0.5rem; }
.greview__top { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; }
.greview__stars { color: var(--mustard); letter-spacing: 1px; }
.greview__when { font-family: var(--font-body); font-size: 0.8rem; color: var(--ink); opacity: 0.7; }
.greview__text { font-family: var(--font-body); font-size: 0.92rem; line-height: 1.5; color: var(--ink); margin: 0; }
.greview__who { font-family: var(--font-poster); font-weight: 700; font-size: 0.85rem; text-transform: uppercase; letter-spacing: 1px; color: var(--ink); opacity: 0.75; }
.greviews__note { font-family: var(--font-accent); font-style: italic; font-size: 0.8rem; color: var(--ink); opacity: 0.7; margin-top: 1.25rem; }
.listing-card__media--logo { background: var(--paper-soft); display: flex; align-items: center; justify-content: center; padding: 1.25rem; }
.listing-card__media--logo img.listing-card__logo-img { max-width: 82%; max-height: 78%; width: auto; height: auto; object-fit: contain; filter: none; }
.info__logo { padding: 1rem 0; border-bottom: 1px dashed var(--ink); text-align: center; }
.info__logo img { max-width: 170px; max-height: 72px; width: auto; height: auto; object-fit: contain; display: inline-block; }
.emv-lightbox { position: fixed; inset: 0; z-index: 9999; display: none; align-items: center; justify-content: center; background: rgba(26,23,20,0.92); padding: 2rem; }
.emv-lightbox.is-open { display: flex; }
.emv-lightbox__img { max-width: 92vw; max-height: 88vh; width: auto; height: auto; object-fit: contain; border: 3px solid var(--paper); box-shadow: 0 12px 44px rgba(0,0,0,0.5); }
.emv-lightbox__close { position: absolute; top: 0.75rem; right: 1.25rem; background: none; border: none; color: var(--paper); font-size: 2.6rem; line-height: 1; cursor: pointer; padding: 0.25rem 0.6rem; }
.emv-lightbox__close:hover, .emv-lightbox__close:focus-visible { color: var(--mustard); }
body.emv-lightbox-open { overflow: hidden; }
.emv-lightbox__credit { position: absolute; bottom: 1rem; left: 0; right: 0; text-align: center; color: var(--paper); font-family: var(--font-body); font-size: 0.85rem; opacity: 0.85; }
.biz-events { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.75rem; }
.biz-event a { display: flex; align-items: center; gap: 1rem; border: 2px solid var(--ink); background: var(--paper-soft); padding: 0.75rem 1rem; text-decoration: none; color: var(--ink); }
.biz-event a:hover { background: var(--paper); box-shadow: 4px 4px 0 var(--mustard); }
.biz-event__date { font-family: var(--font-poster); font-weight: 900; text-transform: uppercase; color: var(--clay); font-size: 1.15rem; line-height: 1; min-width: 3.4rem; text-align: center; }
.biz-event__body { display: flex; flex-direction: column; gap: 0.15rem; }
.biz-event__title { font-family: var(--font-poster); font-weight: 700; letter-spacing: 0.5px; }
.biz-event__time { font-family: var(--font-body); font-size: 0.82rem; color: var(--ink); opacity: 0.7; }
button.info__share { width: 100%; cursor: pointer; font: inherit; }

.info__action {
  padding: 1.25rem 1.5rem;
  background: var(--paper-soft);
  border-top: 2px solid var(--ink);
  display: grid; gap: 0.6rem;
}
.info__btn {
  display: block; width: 100%;
  font-family: var(--font-poster); font-weight: 800;
  letter-spacing: 0.16em; text-transform: uppercase; font-size: 0.82rem;
  padding: 0.95rem;
  background: var(--clay); color: var(--paper);
  border: 2px solid var(--ink);
  box-shadow: 4px 4px 0 var(--ink);
  text-align: center;
  transition: transform 0.18s var(--ease), box-shadow 0.18s var(--ease);
}
.info__btn:hover { transform: translate(-2px, -2px); box-shadow: 6px 6px 0 var(--ink); }
.info__btn.alt {
  background: var(--paper); color: var(--ink);
  box-shadow: 4px 4px 0 var(--clay);
}
.info__btn.alt:hover { box-shadow: 6px 6px 0 var(--clay); }

/* ============================================================
   MAP — illustrated location card
   ============================================================ */
.locmap {
  background: var(--teal);
  padding: 4rem var(--gutter);
  border-bottom: 3px solid var(--ink);
}
.locmap__inner {
  max-width: var(--max); margin: 0 auto;
  display: grid; grid-template-columns: 1fr 1.4fr; gap: 3rem;
  align-items: center;
}
@media (max-width: 900px) { .locmap__inner { grid-template-columns: 1fr; gap: 2rem; } }
.locmap__copy { color: var(--paper); }
.locmap__copy .eyebrow { color: var(--mustard); display: block; margin-bottom: 0.7rem; }
.locmap__copy h3 {
  font-family: var(--font-poster); font-weight: 900;
  text-transform: uppercase;
  font-size: clamp(1.7rem, 3.5vw, 2.6rem);
  line-height: 0.9; color: var(--paper); margin-bottom: 1rem;
}
.locmap__copy h3 em {
  font-family: var(--font-accent); font-style: italic; font-weight: 400;
  color: var(--mustard); text-transform: none;
}
.locmap__copy .addr {
  font-family: var(--font-body); font-size: 0.98rem;
  color: var(--paper-soft); line-height: 1.5;
  margin-bottom: 1.5rem;
}
.locmap__visual {
  position: relative;
  aspect-ratio: 16 / 10;
  background: var(--paper-soft);
  border: 3px solid var(--ink);
  box-shadow: 8px 8px 0 var(--mustard);
  padding: 1.5rem;
  overflow: hidden;
}
.locmap__visual svg { width: 100%; height: 100%; }

/* Live mini-map variant — real MapLibre canvas inside the same poster plate
   (initialized by js/minimap.js; falls back to the static SVG without JS
   in the sense that the canvas just stays paper-colored). */
.locmap__visual--live { padding: 0; }
/* Doubled selector: maplibre-gl.css loads after this sheet and its
   .maplibregl-map { position: relative } would un-position the canvas. */
.locmap__visual--live .locmap__canvas {
  position: absolute; inset: 1.5rem;
  background: var(--paper);
}
.locmap__canvas .maplibregl-canvas { outline: none; }
.locmap__canvas .maplibregl-ctrl-attrib {
  background: rgba(248, 241, 222, 0.8);
  font-family: var(--font-body); font-size: 0.62rem;
}
.locmap__canvas .maplibregl-ctrl-attrib a { color: var(--ink-soft); }
/* Both out-specific ".locmap__visual svg { width/height: 100% }" above,
   which would otherwise stretch the compass + pin art to the full plate. */
.locmap__visual--live .emv-minimap__pin svg { width: 34px; height: 68px; }
.emv-minimap__pin { pointer-events: none; }
.locmap__visual--live .locmap__compass {
  position: absolute; top: 2.1rem; right: 2.1rem;
  width: 44px; height: 58px; z-index: 3;
  pointer-events: none;
}
.locmap__band {
  position: absolute; left: 1.5rem; right: 1.5rem; bottom: 1.5rem; z-index: 3;
  background: var(--ink);
  border-top: 8px solid var(--paper-deep);
  color: var(--mustard);
  font-family: var(--font-poster); font-weight: 900;
  font-size: 1.05rem; letter-spacing: 0.3em;
  text-align: center; text-transform: uppercase;
  padding: 0.6rem 0.5rem 0.55rem;
}
/* Whole plate clicks through to the regional map. */
.locmap__cover { position: absolute; inset: 0; z-index: 4; }
.locmap__cover:focus-visible { outline: 3px solid var(--mustard); outline-offset: -3px; }
@media (max-width: 640px) {
  .locmap__canvas { inset: 1rem; }
  .locmap__band { left: 1rem; right: 1rem; bottom: 1rem; font-size: 0.9rem; }
  .locmap__compass { top: 1.5rem; right: 1.5rem; width: 36px; }
}

/* ============================================================
   RELATED — same listing-card pattern as town landing
   ============================================================ */
.related {
  background: var(--paper);
  padding: 4.5rem var(--gutter) 4rem;
  border-bottom: 3px solid var(--ink);
}
.related__head {
  max-width: var(--max); margin: 0 auto 2.5rem;
  text-align: center;
}
.related__head .eyebrow { color: var(--clay); }
.related__head h3 {
  font-family: var(--font-poster); font-weight: 900;
  text-transform: uppercase;
  font-size: clamp(1.7rem, 3.5vw, 2.6rem);
  line-height: 0.9; margin-top: 0.5rem; color: var(--ink);
}
.related__head h3 em {
  font-family: var(--font-accent); font-style: italic; font-weight: 400;
  color: var(--teal); text-transform: none;
}
.related__grid {
  max-width: var(--max); margin: 0 auto;
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.5rem;
}
@media (max-width: 900px) { .related__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 600px) { .related__grid { grid-template-columns: 1fr; } }
.listing-card {
  position: relative;
  background: var(--paper-soft);
  border: 2px solid var(--ink);
  box-shadow: 6px 6px 0 var(--ink);
  transition: transform 0.25s var(--ease), box-shadow 0.25s var(--ease);
  overflow: hidden;
}
.listing-card:hover {
  transform: translate(-3px, -3px) rotate(-0.5deg);
  box-shadow: 9px 9px 0 var(--ink);
}
.listing-card__media {
  position: relative;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  border-bottom: 2px solid var(--ink);
}
.listing-card__media img { width: 100%; height: 100%; object-fit: cover; filter: contrast(1.04) saturate(0.95); }
.listing-card__body { padding: 1rem 1.1rem 1.2rem; }
.listing-card__tags { display: flex; gap: 0.4rem; flex-wrap: wrap; margin-bottom: 0.6rem; }
.listing-card__name {
  font-family: var(--font-poster); font-weight: 900;
  text-transform: uppercase;
  font-size: 1.3rem; line-height: 1;
  color: var(--ink); margin-bottom: 0.5rem;
}
.listing-card__name em { font-family: var(--font-accent); font-style: italic; font-weight: 400; color: var(--teal); text-transform: none; }
.listing-card__meta {
  font-family: var(--font-accent); font-style: italic;
  font-size: 0.88rem; color: var(--ink-soft);
  margin-bottom: 0.8rem;
}
.tag.small {
  font-size: 0.62rem; padding: 0.25rem 0.5rem; border-width: 1.5px;
}



/* ============================================================
   SINGLE STORY CSS — extracted from
   app/public/mockups/single-story-postershop.html.
   Skipped lines 62–131 (PRESS BAR + MASTHEAD) and 676+ (FOOTER)
   since shared CSS already covers them.
   ============================================================ */

/* ============================================================
   READ PROGRESS BAR
   ============================================================ */
.progress {
  position: fixed; top: 0; left: 0;
  height: 3px; width: 0%;
  background: var(--clay);
  z-index: 1000;
}

/* ============================================================
   STORY HERO — real photo + poster typography overlay
   ============================================================ */
.story-hero {
  position: relative;
  background: var(--teal);
  color: var(--paper);
  overflow: hidden;
  isolation: isolate;
  min-height: 100vh;
}
.story-hero__bg { position: absolute; inset: 0; z-index: 0; overflow: hidden; }
.story-hero__bg img {
  width: 100%; height: 100%; object-fit: cover;
  filter: brightness(0.6) contrast(1.08) saturate(0.78);
}
.story-hero__overlay {
  position: absolute; inset: 0; z-index: 1;
  background:
    linear-gradient(180deg,
      rgba(20,59,69,0.5) 0%,
      rgba(31,87,99,0.1) 25%,
      rgba(31,87,99,0.18) 60%,
      rgba(20,59,69,0.95) 100%);
}
.story-hero__overlay::after {
  content: ''; position: absolute; inset: 0;
  background: radial-gradient(ellipse at 25% 60%, rgba(217,166,77,0.10) 0%, transparent 55%);
}
.story-hero__frame {
  position: relative; z-index: 2;
  min-height: 100vh;
  padding: 4rem var(--gutter) 4rem;
  max-width: var(--max); margin: 0 auto;
  display: grid; grid-template-rows: auto 1fr auto;
}
.story-hero__frame::before {
  content: '';
  position: absolute; inset: 1.5rem var(--gutter);
  border: 2px solid var(--paper); opacity: 0.55;
  pointer-events: none;
}
.story-hero__frame::after {
  content: '';
  position: absolute; inset: calc(1.5rem + 6px) calc(var(--gutter) + 6px);
  border: 1px solid var(--paper); opacity: 0.25;
  pointer-events: none;
}
.story-hero__top {
  display: flex; justify-content: space-between; align-items: center;
  padding: 0.5rem 1rem;
  font-family: var(--font-poster); text-transform: uppercase;
  letter-spacing: 0.22em; font-size: 0.74rem;
  color: var(--mustard);
}
.story-hero__top .mid { color: var(--paper); letter-spacing: 0.3em; font-weight: 800; }

.story-hero__body {
  align-self: center;
  padding: 2rem 1rem;
  max-width: 900px;
}
.story-hero__cat {
  display: inline-block;
  font-family: var(--font-poster); font-weight: 800;
  letter-spacing: 0.22em; text-transform: uppercase; font-size: 0.84rem;
  color: var(--mustard);
  margin-bottom: 1.5rem;
}
.story-hero__title {
  font-family: var(--font-poster); font-weight: 900;
  text-transform: uppercase;
  font-size: clamp(2.8rem, 8vw, 7.5rem);
  line-height: 0.88; letter-spacing: -0.02em;
  color: var(--paper);
  margin-bottom: 1.5rem;
}
.story-hero__title em {
  font-family: var(--font-accent); font-style: italic; font-weight: 400;
  color: var(--mustard); text-transform: none;
  text-shadow: 3px 3px 0 var(--clay);
}
.story-hero__dek {
  font-family: var(--font-accent); font-style: italic;
  font-size: clamp(1.15rem, 1.8vw, 1.6rem);
  line-height: 1.4; color: var(--paper-soft);
  max-width: 50ch;
  padding: 0.5rem 0.9rem;
  background: var(--clay);
  border: 2px solid var(--ink);
  display: inline-block;
}
.story-hero__meta {
  align-self: end;
  display: flex; gap: 2rem; align-items: center;
  padding: 0 1rem;
  font-family: var(--font-poster); font-weight: 700;
  font-size: 0.78rem; letter-spacing: 0.16em; text-transform: uppercase;
  color: var(--paper-soft);
}
.story-hero__meta .author { color: var(--mustard); }
.story-hero__meta .sep { color: var(--ink); }

/* ============================================================
   ARTICLE BODY — magazine typography
   ============================================================ */
.article {
  background: var(--paper);
  padding: 5rem var(--gutter) 4rem;
  border-bottom: 3px solid var(--ink);
}
.article__inner { max-width: var(--read); margin: 0 auto; }

.article__lead {
  font-family: var(--font-body); font-weight: 400;
  font-size: 1.3rem; line-height: 1.55;
  color: var(--ink); margin-bottom: 1.5rem;
}
.article__lead::first-letter {
  font-family: var(--font-poster); font-weight: 900;
  font-size: 5.5rem; line-height: 0.85;
  float: left; margin: 0.2rem 0.7rem 0 0;
  color: var(--clay);
  text-shadow: 3px 3px 0 var(--ink);
}

.article__inner p {
  font-size: 1.05rem; line-height: 1.7;
  color: var(--ink); margin-bottom: 1.5rem;
}
.article__inner em {
  font-family: var(--font-accent); font-style: italic; color: var(--ink-soft);
}
.article__inner a {
  color: var(--clay); border-bottom: 2px solid var(--clay);
  padding-bottom: 1px;
}
.article__inner a:hover { color: var(--ink); border-bottom-color: var(--ink); }

.article__inner h2 {
  font-family: var(--font-poster); font-weight: 900;
  text-transform: uppercase;
  font-size: clamp(1.8rem, 3.2vw, 2.6rem);
  line-height: 0.95; letter-spacing: -0.01em;
  color: var(--ink);
  margin: 3rem 0 1.2rem;
  padding-top: 1.5rem; border-top: 2px solid var(--ink);
}
.article__inner h2 em {
  font-family: var(--font-accent); font-style: italic; font-weight: 400;
  color: var(--teal); text-transform: none;
}
.article__inner h2 .eyebrow {
  display: block;
  font-family: var(--font-poster); font-weight: 700;
  letter-spacing: 0.22em; text-transform: uppercase;
  font-size: 0.78rem;
  color: var(--clay);
  margin-bottom: 0.8rem;
}

/* ============================================================
   PULLQUOTE — bold poster moment
   ============================================================ */
.pullquote {
  margin: 3.5rem calc(-2rem) 3.5rem;
  background: var(--mustard);
  color: var(--ink);
  border-top: 3px solid var(--ink);
  border-bottom: 3px solid var(--ink);
  padding: 3rem 2rem;
  position: relative;
}
.pullquote::before {
  content: '';
  position: absolute; top: -3px; left: 0; right: 0;
  height: 12px;
  background: repeating-linear-gradient(90deg, var(--ink) 0 10px, transparent 10px 20px);
}
.pullquote__inner {
  max-width: 700px; margin: 0 auto;
  text-align: center;
  position: relative;
}
.pullquote__mark {
  font-family: var(--font-accent); font-style: italic;
  font-size: 5rem; color: var(--clay);
  line-height: 0;
  display: block; margin-bottom: 0.8rem;
}
.pullquote__text {
  font-family: var(--font-poster); font-weight: 800;
  text-transform: uppercase;
  font-size: clamp(1.5rem, 3vw, 2.4rem);
  line-height: 1.05; letter-spacing: -0.005em;
  color: var(--ink);
  margin-bottom: 1.5rem;
}
.pullquote__text em {
  font-family: var(--font-accent); font-style: italic; font-weight: 400;
  color: var(--clay); text-transform: none;
}
.pullquote__attr {
  font-family: var(--font-accent); font-style: italic;
  font-size: 1rem; color: var(--ink-soft);
}

@media (max-width: 760px) {
  .pullquote { margin: 2.5rem calc(-1 * var(--gutter)) 2.5rem; padding: 2rem var(--gutter); }
}

/* ============================================================
   INLINE IMAGE
   ============================================================ */
.inline-img {
  margin: 3rem calc(-2rem) 3rem;
  position: relative;
}
.inline-img__wrap {
  position: relative;
  background: var(--paper-soft);
  border: 3px solid var(--ink);
  padding: 14px;
  box-shadow: 8px 8px 0 var(--clay);
  margin: 0 1.5rem;
}
.inline-img__wrap img {
  width: 100%;
  aspect-ratio: 16 / 10;
  object-fit: cover;
  border: 1px solid var(--ink);
}
.inline-img__caption {
  margin-top: 1rem;
  font-family: var(--font-accent); font-style: italic;
  font-size: 0.95rem; color: var(--ink-soft);
  text-align: center;
}
.inline-img__caption .credit {
  font-family: var(--font-poster); font-style: normal;
  font-weight: 700; letter-spacing: 0.16em; text-transform: uppercase;
  font-size: 0.66rem; color: var(--clay);
  margin-left: 0.5rem;
}
@media (max-width: 760px) { .inline-img { margin: 2rem 0; } .inline-img__wrap { margin: 0; } }

/* ============================================================
   ITINERARY — numbered stamp list
   ============================================================ */
.itinerary {
  margin: 2.5rem 0;
  list-style: none;
  counter-reset: it;
}
.itinerary li {
  counter-increment: it;
  display: grid;
  grid-template-columns: 80px 1fr;
  column-gap: 1.5rem;
  row-gap: 0.4rem;
  padding: 1.6rem 0;
  border-bottom: 2px solid var(--ink);
  align-items: start;
}
.itinerary li:first-child { border-top: 2px solid var(--ink); }
.itinerary li::before {
  content: counter(it, decimal-leading-zero);
  grid-column: 1; grid-row: 1 / span 3;
  font-family: var(--font-poster); font-weight: 900;
  font-size: 3.4rem; line-height: 0.85;
  color: var(--clay);
  text-shadow: 3px 3px 0 var(--ink);
  align-self: start;
}
.itinerary li > div { grid-column: 2; }
.itinerary__time {
  display: inline-block;
  font-family: var(--font-poster); font-weight: 700;
  letter-spacing: 0.16em; text-transform: uppercase;
  font-size: 0.72rem;
  color: var(--paper);
  background: var(--teal);
  padding: 0.3rem 0.6rem;
  border: 2px solid var(--ink);
  margin-bottom: 0.5rem;
}
.itinerary__title {
  font-family: var(--font-poster); font-weight: 800;
  text-transform: uppercase;
  font-size: 1.4rem; line-height: 1;
  color: var(--ink); margin-bottom: 0.4rem;
}
.itinerary__title em {
  font-family: var(--font-accent); font-style: italic; font-weight: 400;
  color: var(--teal); text-transform: none;
}
.itinerary li p {
  font-size: 0.98rem; color: var(--ink-soft);
  margin: 0;
}

/* ============================================================
   SIGNOFF
   ============================================================ */
.signoff {
  margin-top: 3rem;
  padding: 1.5rem;
  background: var(--paper-soft);
  border: 2px solid var(--ink);
  box-shadow: 5px 5px 0 var(--mustard);
  display: grid; grid-template-columns: 64px 1fr;
  gap: 1.2rem; align-items: center;
}
.signoff__avatar {
  width: 64px; height: 64px;
  border: 2px solid var(--ink);
  overflow: hidden;
  background: var(--paper);
}
.signoff__avatar img { width: 100%; height: 100%; object-fit: cover; }
.signoff__copy { line-height: 1.5; }
.signoff__name {
  font-family: var(--font-poster); font-weight: 800;
  text-transform: uppercase;
  font-size: 1.15rem; color: var(--ink);
  display: block; margin-bottom: 0.2rem;
}
.signoff__bio {
  font-family: var(--font-accent); font-style: italic;
  font-size: 0.92rem; color: var(--ink-soft);
}

/* ============================================================
   MENTIONED — listing cards
   ============================================================ */
.mentioned {
  background: var(--paper-soft);
  padding: 4.5rem var(--gutter);
  border-bottom: 3px solid var(--ink);
}
.mentioned__head {
  max-width: var(--max); margin: 0 auto 2rem;
  display: flex; justify-content: space-between; align-items: baseline;
  border-bottom: 2px solid var(--ink); padding-bottom: 1rem;
}
.mentioned__title {
  font-family: var(--font-poster); font-weight: 900;
  text-transform: uppercase;
  font-size: clamp(1.7rem, 3vw, 2.4rem); line-height: 0.95;
  color: var(--ink);
}
.mentioned__title em { font-family: var(--font-accent); font-style: italic; font-weight: 400; color: var(--clay); text-transform: none; }
.mentioned__sub { font-family: var(--font-accent); font-style: italic; font-size: 0.95rem; color: var(--ink-soft); }
.mentioned__grid {
  max-width: var(--max); margin: 0 auto;
  display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 1.25rem;
}
.listing-card {
  position: relative; display: block;
  background: var(--paper);
  border: 2px solid var(--ink);
  box-shadow: 6px 6px 0 var(--ink);
  transition: transform 0.25s var(--ease), box-shadow 0.25s var(--ease);
  overflow: hidden;
}
.listing-card:hover {
  transform: translate(-3px, -3px) rotate(-0.5deg);
  box-shadow: 9px 9px 0 var(--ink);
}
.listing-card__media {
  position: relative; aspect-ratio: 4 / 3; overflow: hidden;
  border-bottom: 2px solid var(--ink);
}
.listing-card__media img { width: 100%; height: 100%; object-fit: cover; filter: contrast(1.04); }
.listing-card__body { padding: 1rem 1.1rem 1.2rem; }
.listing-card__tags { display: flex; gap: 0.4rem; flex-wrap: wrap; margin-bottom: 0.5rem; }
.tag {
  display: inline-flex; align-items: center; gap: 0.4rem;
  font-family: var(--font-poster); font-weight: 700;
  letter-spacing: 0.14em; text-transform: uppercase; font-size: 0.62rem;
  padding: 0.25rem 0.5rem;
  border: 1.5px solid var(--ink); background: var(--paper); color: var(--ink);
}
.tag.eat   { background: var(--clay); color: var(--paper); }
.tag.stay  { background: var(--teal); color: var(--paper); }
.tag.do    { background: var(--forest); color: var(--paper); }
.tag.shop  { background: var(--mustard); }
.tag.svc   { background: var(--paper-deep); }
.tag.cskt  { background: var(--teal); color: var(--paper); }
.tag.pick  { background: var(--mustard); color: var(--ink); }
.listing-card__name {
  font-family: var(--font-poster); font-weight: 900;
  text-transform: uppercase;
  font-size: 1.25rem; line-height: 1;
  color: var(--ink); margin-bottom: 0.4rem;
}
.listing-card__meta {
  font-family: var(--font-accent); font-style: italic;
  font-size: 0.84rem; color: var(--ink-soft);
}

/* ============================================================
   NEWSLETTER CALLOUT
   ============================================================ */
.newsletter {
  background: var(--mustard);
  padding: 4.5rem var(--gutter);
  border-bottom: 3px solid var(--ink);
  position: relative;
}
.newsletter::before {
  content: ''; position: absolute; top: 0; left: 0; right: 0;
  height: 12px;
  background: repeating-linear-gradient(90deg, var(--ink) 0 10px, transparent 10px 20px);
}
.newsletter__inner {
  max-width: 900px; margin: 0 auto;
  display: grid; grid-template-columns: 1fr 1fr; gap: 3rem; align-items: center;
}
@media (max-width: 760px) { .newsletter__inner { grid-template-columns: 1fr; gap: 2rem; } }
.newsletter__eyebrow {
  font-family: var(--font-poster); font-weight: 800;
  letter-spacing: 0.22em; text-transform: uppercase; font-size: 0.84rem;
  color: var(--clay); margin-bottom: 0.8rem; display: block;
}
.newsletter__title {
  font-family: var(--font-poster); font-weight: 900;
  text-transform: uppercase;
  font-size: clamp(1.7rem, 3vw, 2.4rem);
  line-height: 0.95;
  color: var(--ink);
  margin-bottom: 0.8rem;
}
.newsletter__title em { font-family: var(--font-accent); font-style: italic; font-weight: 400; color: var(--teal); text-transform: none; }
.newsletter__sub { font-family: var(--font-accent); font-style: italic; font-size: 1rem; color: var(--ink-soft); line-height: 1.5; }
.newsletter__form {
  background: var(--paper); padding: 1.5rem;
  border: 2px solid var(--ink); box-shadow: 6px 6px 0 var(--ink);
}
.newsletter__field {
  display: grid; grid-template-columns: 1fr auto;
  border: 2px solid var(--ink); background: var(--paper-soft);
}
.newsletter__field input {
  background: transparent; border: none;
  padding: 0.9rem 1rem;
  font-family: var(--font-body); font-size: 0.95rem; color: var(--ink);
  outline: none;
}
.newsletter__field input::placeholder { color: var(--ink-soft); opacity: 0.6; }
.newsletter__field button {
  font-family: var(--font-poster); font-weight: 800;
  letter-spacing: 0.16em; text-transform: uppercase; font-size: 0.78rem;
  padding: 0 1.4rem;
  background: var(--clay); color: var(--paper);
  border-left: 2px solid var(--ink);
}
.newsletter__field button:hover { background: var(--clay-deep); }
.newsletter__note {
  font-family: var(--font-poster); font-weight: 700;
  letter-spacing: 0.14em; text-transform: uppercase;
  font-size: 0.66rem; color: var(--ink-soft); margin-top: 0.8rem;
}

/* ============================================================
   RELATED STORIES — postcards
   ============================================================ */
.related-stories {
  background: var(--paper);
  padding: 4.5rem var(--gutter);
  border-bottom: 3px solid var(--ink);
}
.related-stories__head {
  max-width: var(--max); margin: 0 auto 2.5rem;
  display: flex; justify-content: space-between; align-items: baseline;
  border-bottom: 2px solid var(--ink); padding-bottom: 1rem;
}
.related-stories__title {
  font-family: var(--font-poster); font-weight: 900;
  text-transform: uppercase;
  font-size: clamp(1.7rem, 3vw, 2.4rem); line-height: 0.95;
  color: var(--ink);
}
.related-stories__title em { font-family: var(--font-accent); font-style: italic; font-weight: 400; color: var(--teal); text-transform: none; }
.related-stories__sub {
  font-family: var(--font-poster); font-weight: 700;
  letter-spacing: 0.16em; text-transform: uppercase; font-size: 0.74rem;
  color: var(--clay);
}
.related-stories__grid {
  max-width: var(--max); margin: 0 auto;
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.75rem;
}
@media (max-width: 900px) { .related-stories__grid { grid-template-columns: 1fr; } }
.postcard {
  background: var(--paper-soft);
  border: 2px solid var(--ink);
  box-shadow: 6px 6px 0 var(--teal);
  overflow: hidden;
  transition: transform 0.25s var(--ease), box-shadow 0.25s var(--ease);
}
.postcard:hover {
  transform: translate(-3px, -3px) rotate(-0.5deg);
  box-shadow: 9px 9px 0 var(--teal);
}
.postcard__img {
  position: relative;
  aspect-ratio: 5 / 3; overflow: hidden;
  border-bottom: 2px solid var(--ink);
}
.postcard__img img { width: 100%; height: 100%; object-fit: cover; filter: contrast(1.04) saturate(0.95); }
.postcard__stamp {
  position: absolute;
  top: 0.7rem; right: 0.7rem;
  width: 64px; height: 64px;
  background: var(--mustard);
  border: 2px solid var(--ink);
  box-shadow: 2px 2px 0 var(--ink);
  display: grid; place-items: center;
  font-family: var(--font-poster); font-weight: 900;
  font-size: 0.62rem; line-height: 1.1;
  text-align: center; text-transform: uppercase; color: var(--ink);
  padding: 0.3rem;
  letter-spacing: 0.1em;
  transform: rotate(-8deg);
}
.postcard__body { padding: 1.2rem 1.3rem 1.4rem; }
.postcard__cat {
  font-family: var(--font-poster); font-weight: 700;
  letter-spacing: 0.16em; text-transform: uppercase;
  font-size: 0.72rem; color: var(--clay);
  margin-bottom: 0.5rem;
}
.postcard__title {
  font-family: var(--font-accent); font-style: italic;
  font-size: 1.4rem; line-height: 1.15;
  color: var(--ink); margin-bottom: 0.6rem;
}
.postcard__read {
  font-family: var(--font-poster); font-weight: 700;
  letter-spacing: 0.14em; text-transform: uppercase;
  font-size: 0.66rem; color: var(--ink-soft);
}



/* ============================================================
   PAGE MAP CSS — extracted from
   app/public/mockups/page-map-postershop.html (lines 125–544).
   Skipped lines 14–122 (duplicate :root, body, press-bar,
   masthead — already in shared CSS) and the global
   'html, body { overflow: hidden }' (line 40) which would
   break scrolling on every other page.
   ============================================================ */

:root {
  --sidebar-w: 340px;
  --nav-h:     130px;
}
body.page-template-page-map { overflow: hidden; height: 100vh; }
body.page-template-page-map .site-inner,
body.page-template-page-map .wrap,
body.page-template-page-map .content-sidebar-wrap { padding: 0; margin: 0; max-width: none; }
body.page-template-page-map .footer { display: none; }

/* ============================================================
   PAGE LAYOUT — sidebar + canvas
   ============================================================ */
.map-page {
  position: fixed;
  top: var(--nav-h); left: 0; right: 0; bottom: 0;
  display: grid;
  grid-template-columns: var(--sidebar-w) 1fr;
}
@media (max-width: 880px) {
  .map-page { grid-template-columns: 1fr; }
}

/* ============================================================
   SIDEBAR — tourist info card
   ============================================================ */
.sidebar {
  background: var(--paper);
  border-right: 3px solid var(--ink);
  overflow-y: auto;
  padding: 1.5rem 1.5rem 3rem;
  display: grid; gap: 1.8rem; align-content: start;
  background-image:
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='320' height='320'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0.4  0 0 0 0 0.3  0 0 0 0 0.15  0 0 0 0.08 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
}
.sidebar__head {
  padding: 1.1rem 1.25rem;
  background: var(--ink); color: var(--paper);
  border: 2px solid var(--ink);
  box-shadow: 5px 5px 0 var(--clay);
  margin-bottom: 0.5rem;
}
.sidebar__eyebrow {
  font-family: var(--font-poster); font-weight: 700;
  letter-spacing: 0.2em; text-transform: uppercase; font-size: 0.72rem;
  color: var(--mustard);
  margin-bottom: 0.3rem; display: block;
}
.sidebar__title {
  font-family: var(--font-poster); font-weight: 900;
  text-transform: uppercase;
  font-size: 1.5rem; line-height: 1; color: var(--paper);
  margin-bottom: 0.5rem;
}
.sidebar__count {
  font-family: var(--font-accent); font-style: italic;
  font-size: 0.95rem; color: var(--paper-soft);
}
.sidebar__count .num { color: var(--mustard); font-weight: 700; font-family: var(--font-poster); font-style: normal; }

.fgroup__label {
  font-family: var(--font-poster); font-weight: 800;
  letter-spacing: 0.18em; text-transform: uppercase;
  font-size: 0.74rem;
  color: var(--ink);
  margin-bottom: 0.8rem;
  display: flex; justify-content: space-between; align-items: center;
  padding-bottom: 0.5rem;
  border-bottom: 2px solid var(--ink);
}
.fgroup__label .clear {
  font-size: 0.62rem; color: var(--clay); cursor: pointer;
  letter-spacing: 0.14em;
}
.fgroup__label .clear:hover { color: var(--ink); }
.fgroup__list { display: grid; gap: 0.4rem; }
.fitem {
  display: flex; align-items: center; gap: 0.65rem;
  padding: 0.55rem 0.8rem;
  border: 2px solid var(--ink);
  background: var(--paper-soft);
  font-family: var(--font-poster); font-weight: 700;
  font-size: 0.74rem; letter-spacing: 0.1em; text-transform: uppercase;
  color: var(--ink);
  cursor: pointer;
  transition: all 0.18s var(--ease);
}
.fitem:hover { background: var(--paper); transform: translate(-1px, -1px); box-shadow: 2px 2px 0 var(--ink); }
.fitem.is-active {
  background: var(--clay); color: var(--paper);
  box-shadow: 3px 3px 0 var(--ink);
}
.fitem .pip {
  width: 8px; height: 8px; border-radius: 50%; background: var(--ink-soft);
}
.fitem .pip.eat  { background: var(--clay); }
.fitem .pip.stay { background: var(--teal); }
.fitem .pip.do   { background: var(--forest); }
.fitem .pip.shop { background: var(--mustard-deep); }
.fitem .pip.svc  { background: var(--ink-soft); }
.fitem.is-active .pip { background: var(--paper); }
.fitem .name { flex: 1; }
.fitem .count {
  color: var(--ink-soft); font-size: 0.66rem;
}
.fitem.is-active .count { color: var(--paper-soft); }

.zoomjump { display: grid; gap: 0.4rem; }
.zoomjump button {
  font-family: var(--font-poster); font-weight: 700;
  letter-spacing: 0.1em; text-transform: uppercase; font-size: 0.78rem;
  color: var(--paper);
  background: var(--teal);
  padding: 0.6rem 0.85rem;
  border: 2px solid var(--ink);
  box-shadow: 3px 3px 0 var(--ink);
  text-align: left;
  display: flex; justify-content: space-between; align-items: center;
  transition: transform 0.18s var(--ease), box-shadow 0.18s var(--ease);
}
.zoomjump button:hover { transform: translate(-1px, -1px); box-shadow: 5px 5px 0 var(--ink); }
.zoomjump button .dist {
  color: var(--mustard); font-size: 0.66rem; letter-spacing: 0.12em;
  font-weight: 600;
}

/* ============================================================
   MAP OVERLAY UI — poster-styled chrome layered over #emv-map
   (compass, title plate, controls, search, legend, zoom-jump).
   The pre-MapLibre illustrated-SVG map styles (.canvas__lake/
   __missions/__roads, .town-label, .pin, .cluster, .preview,
   .mockup-note) were removed 2026-06-08 — dead since the real
   MapLibre map shipped. Live pins/popups/cards live in map.css.
   ============================================================ */
.canvas {
  position: relative;
  overflow: hidden;
  background: var(--paper-soft);
}

/* Compass rose */
.compass {
  position: absolute;
  top: 1.5rem; right: 1.5rem;
  width: 76px; height: 76px;
  z-index: 5;
  background: var(--paper);
  border: 2px solid var(--ink);
  box-shadow: 4px 4px 0 var(--ink);
  padding: 6px;
}
.compass svg { width: 100%; height: 100%; }

/* Title plate */
.titleplate {
  position: absolute;
  top: 1.5rem; left: 1.5rem;
  z-index: 5;
  background: var(--ink); color: var(--mustard);
  border: 2px solid var(--ink);
  box-shadow: 4px 4px 0 var(--clay);
  padding: 0.75rem 1.2rem;
  font-family: var(--font-poster); font-weight: 900;
  text-transform: uppercase; letter-spacing: 0.18em;
  font-size: 0.96rem;
  line-height: 1.1;
}
.titleplate .sub {
  font-family: var(--font-accent); font-style: italic; font-weight: 400;
  font-size: 0.78rem; color: var(--paper-soft);
  text-transform: none; letter-spacing: 0.02em;
  display: block;
}

/* Controls (top-right under compass) */
.controls {
  position: absolute;
  top: calc(1.5rem + 76px + 10px); right: 1.5rem;
  z-index: 5;
  display: grid; gap: 0.5rem;
}
.control-grp {
  display: grid;
  border: 2px solid var(--ink);
  background: var(--paper);
  box-shadow: 3px 3px 0 var(--ink);
}
.control-grp button {
  font-family: var(--font-poster); font-weight: 900;
  width: 42px; height: 42px;
  color: var(--ink);
  border-bottom: 2px solid var(--ink);
  display: grid; place-items: center;
  font-size: 1.1rem;
}
.control-grp button:last-child { border-bottom: none; }
.control-grp button:hover { background: var(--mustard); }

/* Search bar */
.searchbox {
  position: absolute;
  top: 1.5rem; left: calc(1.5rem + 200px);
  z-index: 5;
  display: flex;
  align-items: center;
  gap: 0.7rem;
  background: var(--paper);
  border: 2px solid var(--ink);
  box-shadow: 3px 3px 0 var(--ink);
  padding: 0 1rem;
  width: 320px;
  height: 46px;
}
@media (max-width: 1100px) { .searchbox { display: none; } }
.searchbox .icon { font-size: 1rem; color: var(--ink-soft); }
.searchbox input {
  background: transparent; border: none; outline: none; flex: 1;
  font-family: var(--font-body); font-size: 0.92rem; color: var(--ink);
}
.searchbox input::placeholder { color: var(--ink-soft); opacity: 0.65; }
.searchbox .kbd {
  font-family: var(--font-poster); font-weight: 700;
  font-size: 0.62rem; letter-spacing: 0.12em;
  color: var(--ink-soft);
  padding: 2px 5px;
  border: 1.5px solid var(--ink-soft);
}

/* Legend */
.legend {
  position: absolute;
  bottom: 1.5rem; left: 1.5rem;
  z-index: 5;
  background: var(--paper);
  border: 2px solid var(--ink);
  box-shadow: 4px 4px 0 var(--ink);
  padding: 1rem 1.2rem;
  display: grid; gap: 0.5rem;
}
.legend__label {
  font-family: var(--font-poster); font-weight: 800;
  letter-spacing: 0.2em; text-transform: uppercase;
  font-size: 0.7rem;
  color: var(--clay);
  margin-bottom: 0.3rem;
}
.legend__row {
  display: flex; align-items: center; gap: 0.6rem;
  font-family: var(--font-poster); font-weight: 700;
  font-size: 0.72rem; letter-spacing: 0.1em; text-transform: uppercase;
  color: var(--ink);
}
.legend__dot { width: 12px; height: 12px; border: 1.5px solid var(--ink); }
.legend__dot.eat   { background: var(--clay); }
.legend__dot.stay  { background: var(--teal); }
.legend__dot.do    { background: var(--forest); }
.legend__dot.shop  { background: var(--mustard); }
.legend__dot.svc   { background: var(--paper-deep); }
.legend__dot.featured { background: var(--mustard); border-color: var(--clay); }

/* Shared pill/tag styling. NOTE: .tag is defined three times in this file;
   this copy is last in source order, so it wins the cascade and sets the
   live tag appearance site-wide. Kept intentionally during the dead-map
   cleanup (2026-06-08) — do not merge upward without re-checking tag sizing. */
.tag {
  display: inline-flex; align-items: center; gap: 0.35rem;
  font-family: var(--font-poster); font-weight: 700;
  letter-spacing: 0.14em; text-transform: uppercase; font-size: 0.62rem;
  padding: 0.25rem 0.5rem;
  border: 1.5px solid var(--ink); background: var(--paper); color: var(--ink);
}
.tag.stay  { background: var(--teal); color: var(--paper); }
.tag.cskt  { background: var(--teal); color: var(--paper); }
.tag.pick  { background: var(--mustard); color: var(--ink); }
@media (max-width: 880px) {
  .legend { display: none; }
}

/* ============================================================
   SPONSOR PLACEHOLDER — single-business sponsor band (Stage 1).
   Extracted verbatim from single-business-postershop.html.
   ============================================================ */
.sponsor {
  background: var(--paper-deep);
  padding: 2.5rem var(--gutter);
  border-bottom: 3px solid var(--ink);
}
.sponsor__inner {
  max-width: var(--max); margin: 0 auto;
  display: grid; grid-template-columns: auto 1fr auto; gap: 2rem; align-items: center;
}
.sponsor__label {
  font-family: var(--font-poster); font-weight: 700;
  letter-spacing: 0.2em; text-transform: uppercase;
  font-size: 0.7rem; color: var(--clay);
}
.sponsor__msg {
  font-family: var(--font-accent); font-style: italic;
  font-size: 1.05rem; color: var(--ink-soft); line-height: 1.45;
  margin: 0;
}
.sponsor__cta {
  font-family: var(--font-poster); font-weight: 800;
  letter-spacing: 0.16em; text-transform: uppercase; font-size: 0.74rem;
  color: var(--clay); border-bottom: 2px solid var(--clay); padding-bottom: 2px;
}
@media (max-width: 760px) {
  .sponsor__inner { grid-template-columns: 1fr; text-align: left; gap: 0.8rem; }
}

/* ============================================================
   ============================================================
   EVENTS — ARCHIVE (Almanac variant)
   Source: app/public/mockups/events-almanac-postershop-v2.html
   ============================================================
   ============================================================ */

/* Almanac hero — separate from town/home hero (.hero) */
.archive-tribe_events .ev-hero,
.post-type-archive-tribe_events .ev-hero {
  background: var(--paper-soft);
  border-bottom: 3px solid var(--ink);
  padding: 4rem var(--gutter) 3rem;
  position: relative;
}
.ev-hero::before {
  content: '';
  position: absolute; top: 0; left: 0; right: 0;
  height: 6px;
  background: repeating-linear-gradient(90deg,
    var(--clay) 0 14px, transparent 14px 22px,
    var(--teal) 22px 36px, transparent 36px 44px,
    var(--mustard) 44px 58px, transparent 58px 66px);
}
.ev-hero__inner {
  max-width: var(--max); margin: 0 auto;
  display: grid; grid-template-columns: 1.4fr 1fr; gap: 3rem; align-items: end;
}
.ev-hero__eye {
  font-family: var(--font-poster); font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.22em;
  font-size: 0.78rem;
  color: var(--clay);
  display: flex; align-items: center; gap: 0.7rem;
  margin-bottom: 0.7rem;
}
.ev-hero__eye::before,
.ev-hero__eye::after { content: ''; flex: 0 0 30px; height: 1px; background: var(--ink); }
.ev-hero__eye::after { flex: 1; max-width: 200px; }
.ev-hero__title {
  font-family: var(--font-poster); font-weight: 900;
  text-transform: uppercase;
  font-size: clamp(3.4rem, 10vw, 8rem); line-height: 0.82;
  letter-spacing: -0.03em;
  color: var(--ink);
  text-shadow: 4px 4px 0 var(--mustard), 8px 8px 0 var(--teal-deep);
}
.ev-hero__title em {
  font-family: var(--font-accent); font-style: italic;
  font-weight: 400; color: var(--teal);
  text-transform: none;
  display: block;
  font-size: 0.42em;
  margin-top: 0.4rem;
  text-shadow: 2px 2px 0 var(--paper-deep);
}
.ev-hero__sub {
  font-family: var(--font-accent); font-style: italic;
  font-size: 1.15rem;
  color: var(--ink-soft);
  max-width: 60ch;
  margin-top: 1.2rem;
  line-height: 1.45;
}
.ev-hero__plate {
  background: var(--paper);
  border: 2px solid var(--ink);
  box-shadow: 6px 6px 0 var(--clay);
  padding: 1.5rem 1.4rem;
  position: relative;
}
.ev-hero__plate::before {
  content: attr(data-volume);
  position: absolute; top: -14px; left: 1rem;
  background: var(--ink); color: var(--mustard);
  padding: 0.2rem 0.6rem;
  font-family: var(--font-poster); font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.16em;
  font-size: 0.66rem;
}
.ev-hero__plate-head {
  font-family: var(--font-poster); font-weight: 800;
  text-transform: uppercase; letter-spacing: 0.16em;
  font-size: 0.78rem;
  color: var(--ink-soft);
  border-bottom: 1px dashed var(--ink);
  padding-bottom: 0.5rem;
  margin-bottom: 0.7rem;
  display: flex; justify-content: space-between;
}
.ev-hero__plate-head em { font-family: var(--font-accent); font-style: italic; color: var(--clay); text-transform: none; letter-spacing: 0; }
.ev-hero__stats { display: grid; grid-template-columns: repeat(2, 1fr); gap: 0.4rem 1rem; }
.ev-hero__stat {
  display: grid; grid-template-columns: 1fr auto; align-items: baseline;
  gap: 0.5rem;
  padding: 0.45rem 0;
  border-bottom: 1px dotted var(--ink-soft);
}
.ev-hero__stat:last-child,
.ev-hero__stat:nth-last-child(2) { border-bottom: none; }
.ev-hero__stat .lbl {
  font-family: var(--font-poster); font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.14em;
  font-size: 0.7rem;
  color: var(--ink-soft);
}
.ev-hero__stat .num {
  font-family: var(--font-poster); font-weight: 900;
  font-size: 1.4rem; line-height: 1;
  color: var(--clay);
}
@media (max-width: 900px) {
  .ev-hero__inner { grid-template-columns: 1fr; gap: 2rem; }
}

/* Marquee strip — 3 featured cards above the filter */
.marquee {
  background: var(--paper-deep);
  border-bottom: 3px solid var(--ink);
  padding: 2.5rem var(--gutter) 3rem;
  position: relative;
}
.marquee::before {
  content: '';
  position: absolute; top: 0; left: 0; right: 0;
  height: 3px;
  background: repeating-linear-gradient(90deg, var(--clay) 0 10px, transparent 10px 18px);
}
.marquee__inner { max-width: var(--max); margin: 0 auto; }
.marquee__head {
  display: flex; align-items: end; justify-content: space-between;
  gap: 1rem;
  border-bottom: 2px solid var(--ink);
  padding-bottom: 0.8rem;
  margin-bottom: 1.6rem;
  position: relative;
}
.marquee__head::after {
  content: none; /* drop the redundant dashed rule — keep the single solid border under the head */
}
.marquee__eye {
  font-family: var(--font-poster); font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.22em;
  font-size: 0.74rem;
  color: var(--clay);
  display: flex; align-items: center; gap: 0.7rem;
  margin-bottom: 0.5rem;
}
.marquee__eye::before,
.marquee__eye::after { content: '★'; color: var(--mustard); font-size: 0.9rem; }
.marquee__title {
  font-family: var(--font-poster); font-weight: 900;
  text-transform: uppercase;
  font-size: clamp(1.6rem, 3.4vw, 2.4rem); line-height: 0.9;
  letter-spacing: -0.01em;
  color: var(--ink);
}
.marquee__title em {
  font-family: var(--font-accent); font-style: italic;
  font-weight: 400; color: var(--teal);
  text-transform: none;
}
.marquee__note {
  font-family: var(--font-accent); font-style: italic;
  color: var(--ink-soft);
  font-size: 0.95rem;
  text-align: right;
  max-width: 28ch;
}
.marquee__grid {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.4rem;
}
@media (max-width: 900px) { .marquee__grid { grid-template-columns: 1fr; } }

/* Marquee card (was ".feature" in mockup; renamed to avoid collision with single-business .feature chip) */
.marquee-card {
  background: var(--paper);
  border: 2px solid var(--ink);
  box-shadow: 6px 6px 0 var(--mustard);
  display: flex; flex-direction: column;
  overflow: hidden;
  transition: transform 0.2s var(--ease), box-shadow 0.2s var(--ease);
  position: relative;
}
.marquee-card:hover {
  transform: translate(-3px, -3px);
  box-shadow: 9px 9px 0 var(--mustard);
}
.marquee-card__photo {
  height: 190px; overflow: hidden;
  background: var(--teal);
  border-bottom: 2px solid var(--ink);
  position: relative;
}
.marquee-card__photo img {
  width: 100%; height: 100%; object-fit: cover;
  filter: brightness(0.78) contrast(1.06) saturate(0.82);
}
.marquee-card__stamp {
  position: absolute; top: 0.9rem; right: 0.9rem;
  background: var(--clay); color: var(--paper);
  border: 2px solid var(--ink); box-shadow: 3px 3px 0 var(--ink);
  padding: 0.32rem 0.7rem;
  font-family: var(--font-poster); font-weight: 800;
  text-transform: uppercase; letter-spacing: 0.14em;
  font-size: 0.66rem;
  transform: rotate(-3deg);
}
.marquee-card__stamp.cskt { background: var(--forest); }
.marquee-card__stamp.pick { background: var(--mustard); color: var(--ink); }
.marquee-card__body {
  padding: 1.1rem 1.2rem 1.2rem;
  display: grid; grid-template-columns: 72px 1fr;
  gap: 1rem;
}
.marquee-card__date {
  border-right: 1.5px dashed var(--ink-soft);
  padding-right: 0.8rem;
  text-align: center;
  align-self: start;
}
.marquee-card__date .d {
  font-family: var(--font-poster); font-weight: 900;
  font-size: 2rem; line-height: 1;
  color: var(--ink);
}
.marquee-card__date .m {
  font-family: var(--font-poster); font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.16em;
  font-size: 0.66rem;
  margin-top: 0.2rem;
  color: var(--clay);
}
.marquee-card__date .dw {
  font-family: var(--font-accent); font-style: italic;
  font-size: 0.74rem;
  color: var(--ink-soft);
  margin-top: 0.1rem;
}
.marquee-card__copy { display: flex; flex-direction: column; gap: 0.35rem; min-width: 0; }
.marquee-card__tags {
  display: flex; gap: 0.4rem; flex-wrap: wrap;
  font-family: var(--font-poster); font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.14em;
  font-size: 0.62rem;
}
.marquee-card__tag {
  background: var(--paper-deep); color: var(--ink);
  padding: 0.15rem 0.5rem;
  border: 1px solid var(--ink);
}
.marquee-card__tag.cskt { background: var(--forest); color: var(--paper); }
.marquee-card__tag.free { background: var(--mustard); color: var(--ink); }
.marquee-card__title {
  font-family: var(--font-poster); font-weight: 900;
  text-transform: uppercase;
  font-size: 1.2rem; line-height: 1.05;
  color: var(--ink);
}
.marquee-card__title em {
  font-family: var(--font-accent); font-style: italic;
  font-weight: 400; color: var(--teal);
  text-transform: none;
}
.marquee-card__town {
  font-family: var(--font-accent); font-style: italic;
  font-size: 0.9rem;
  color: var(--clay);
}
.marquee-card__blurb {
  font-size: 0.86rem; color: var(--ink-soft);
  line-height: 1.45;
  margin-top: 0.25rem;
}

/* Filter strip — compact horizontal pill bar */
.filterstrip {
  background: var(--ink); color: var(--paper);
  padding: 1rem var(--gutter);
  position: sticky; top: 78px; z-index: 40;
  border-bottom: 3px solid var(--ink);
}
.filterstrip__inner { max-width: var(--max); margin: 0 auto; display: flex; align-items: center; justify-content: center; gap: 1.5rem; flex-wrap: wrap; }
.filterstrip__group { display: flex; align-items: center; gap: 0.5rem; }
.filterstrip__label {
  font-family: var(--font-poster); font-weight: 800;
  text-transform: uppercase; letter-spacing: 0.16em;
  font-size: 0.7rem;
  color: var(--mustard);
}
.pill {
  font-family: var(--font-poster); font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.1em;
  font-size: 0.72rem;
  padding: 0.3rem 0.7rem;
  background: transparent;
  color: var(--paper-soft);
  border: 1.5px solid var(--paper-soft);
  cursor: pointer;
  transition: all 0.15s;
}
.pill:hover { background: var(--paper-soft); color: var(--ink); }
.pill.active {
  background: var(--mustard); color: var(--ink); border-color: var(--mustard);
}
.filterstrip__divider {
  width: 1px; height: 22px; background: var(--paper-soft); opacity: 0.4;
}
@media (max-width: 900px) {
  .filterstrip { position: relative; top: 0; }
}

/* Almanac body — week groups + ledger entries */
.almanac { padding: 3rem var(--gutter) 4rem; }
.almanac__inner { max-width: var(--max); margin: 0 auto; }

.week {
  display: grid; grid-template-columns: 160px 1fr 160px;
  gap: 2rem;
  padding: 1.8rem 0 1.4rem;
  border-bottom: 2px solid var(--ink);
}
.week:first-child { padding-top: 0.5rem; }
.week__label { position: sticky; top: 158px; align-self: start; }
.week__label .lbl {
  font-family: var(--font-poster); font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.18em;
  font-size: 0.72rem;
  color: var(--ink-soft);
  margin-bottom: 0.4rem;
}
.week__label .num {
  font-family: var(--font-poster); font-weight: 900;
  font-size: clamp(2.6rem, 5vw, 4rem); line-height: 0.9;
  color: var(--clay);
  text-shadow: 3px 3px 0 var(--ink);
  letter-spacing: -0.02em;
}
.week__label .mo {
  font-family: var(--font-accent); font-style: italic;
  font-size: 1.2rem; color: var(--teal);
  margin-top: 0.2rem;
}
.week__label .count {
  margin-top: 1rem;
  font-family: var(--font-poster); font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.14em;
  font-size: 0.7rem;
  color: var(--ink-soft);
  padding: 0.35rem 0.6rem;
  background: var(--paper-deep);
  border: 1px solid var(--ink);
  display: inline-block;
}
.week__list { display: grid; gap: 0.6rem; }

.entry {
  display: grid;
  grid-template-columns: 78px 1fr auto;
  gap: 1.2rem;
  align-items: center;
  padding: 1rem 1.2rem;
  background: var(--paper-soft);
  border: 2px solid var(--ink);
  box-shadow: 4px 4px 0 var(--paper-deep);
  transition: transform 0.15s var(--ease), box-shadow 0.15s var(--ease), background 0.15s;
}
.entry:hover {
  transform: translate(-2px, -2px);
  box-shadow: 6px 6px 0 var(--mustard);
  background: var(--paper);
}
.entry__date {
  border-right: 1.5px dashed var(--ink-soft);
  padding-right: 1rem;
  text-align: center;
}
.entry__date .d {
  font-family: var(--font-poster); font-weight: 900;
  font-size: 2.2rem; line-height: 1;
  color: var(--ink);
}
.entry__date .m {
  font-family: var(--font-poster); font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.16em;
  font-size: 0.68rem;
  margin-top: 0.2rem;
  color: var(--clay);
}
.entry__date .dw {
  font-family: var(--font-accent); font-style: italic;
  font-size: 0.78rem;
  color: var(--ink-soft);
  margin-top: 0.1rem;
}
.entry__body { display: flex; flex-direction: column; gap: 0.3rem; min-width: 0; }
.entry__tags {
  display: flex; gap: 0.5rem; flex-wrap: wrap;
  font-family: var(--font-poster); font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.14em;
  font-size: 0.62rem;
  margin-bottom: 0.1rem;
}
.entry__tag {
  background: var(--paper-deep); color: var(--ink);
  padding: 0.15rem 0.5rem;
  border: 1px solid var(--ink);
}
.entry__tag.cskt { background: var(--forest); color: var(--paper); }
.entry__tag.free { background: var(--mustard); color: var(--ink); }
.entry__tag.featured { background: var(--clay); color: var(--paper); }
.entry__title {
  font-family: var(--font-poster); font-weight: 800;
  text-transform: uppercase;
  font-size: 1.15rem; line-height: 1.05;
  letter-spacing: -0.005em;
  color: var(--ink);
}
.entry__title em {
  font-family: var(--font-accent); font-style: italic;
  font-weight: 400; color: var(--teal);
  text-transform: none;
}
.entry__meta {
  font-family: var(--font-body);
  font-size: 0.86rem; color: var(--ink-soft);
  display: flex; gap: 0.7rem; flex-wrap: wrap;
}
.entry__meta .dot { color: var(--clay); }
.entry__where {
  text-align: right;
  font-family: var(--font-poster); font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.14em;
  font-size: 0.7rem;
  color: var(--ink-soft);
  padding-left: 1rem;
  border-left: 1.5px dashed var(--ink-soft);
  min-width: 110px;
}
.entry__where .town {
  display: block;
  font-size: 0.84rem;
  color: var(--clay);
  margin-bottom: 0.2rem;
}
/* Don't double the divider when curated marquee sections stack (This Weekend → Around the Valley) */
.marquee + .marquee::before { content: none; }

/* Instant-filter: JS-hidden elements (events, empty weeks, curated front sections) */
.is-hidden { display: none !important; }
.filterstrip__clear, .js-clear {
  color: var(--mustard); border-bottom: 1px solid var(--mustard); cursor: pointer;
}

/* Event poster motif — card-image fallback when there's no photo (no stock art) */
.event-motif {
  width: 100%; height: 100%;
  background: var(--motif-ink, var(--teal));
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 0.45rem; color: var(--paper);
  position: relative; overflow: hidden;
}
.event-motif::before {
  content: ''; position: absolute; inset: 0;
  background: repeating-linear-gradient(45deg, rgba(255,255,255,0.07) 0 14px, transparent 14px 28px);
}
.event-motif__glyph { font-size: 2.8rem; line-height: 1; position: relative; }
.event-motif__label {
  font-family: var(--font-poster); font-weight: 800;
  text-transform: uppercase; letter-spacing: 0.16em; font-size: 0.72rem;
  position: relative;
}
.dept__seeall {
  font-family: var(--font-poster); font-weight: 700; text-transform: uppercase;
  letter-spacing: 0.13em; font-size: 0.72rem; color: var(--clay);
  border-bottom: 2px solid var(--mustard); white-space: nowrap;
}

/* "The complete almanac" intro band — frames the full calendar as the back section */
.almanac-intro { background: var(--paper); padding: 3.2rem var(--gutter) 0.5rem; text-align: center; }
.almanac-intro__inner { max-width: var(--max); margin: 0 auto; }
.almanac-intro__inner .marquee__eye { justify-content: center; }
.almanac-intro__title {
  font-family: var(--font-poster); font-weight: 900; text-transform: uppercase;
  font-size: clamp(1.7rem, 3.8vw, 2.6rem); line-height: 0.95; color: var(--ink);
  margin-top: 0.3rem;
}
.almanac-intro__title em { font-family: var(--font-accent); font-style: italic; font-weight: 400; text-transform: none; color: var(--teal); }
.almanac-intro__note { font-family: var(--font-accent); font-style: italic; color: var(--ink-soft); margin-top: 0.6rem; }

/* Regulars — the valley's weekly rhythm, collapsed above the dated almanac */
.week--regulars .week__label .num {
  color: var(--teal);
}
.week--regulars .week__list { gap: 0.5rem; }
.entry--regular {
  background: var(--paper);
  border-left: 4px solid var(--teal);
  box-shadow: 4px 4px 0 var(--paper-deep);
}
.entry--regular:hover { box-shadow: 6px 6px 0 var(--teal); }
.entry--regular .entry__date .d {
  font-size: 1.7rem;
  color: var(--teal);
}
.entry--regular .entry__date .m { color: var(--ink-soft); }

@media (max-width: 760px) {
  .week { grid-template-columns: 1fr; gap: 0.8rem; }
  .week__label { position: relative; top: 0; }
  .entry { grid-template-columns: 60px 1fr; }
  .entry__where { grid-column: 2; border-left: none; padding-left: 0; text-align: left; }
}

/* Signatures (annual recurring strip) */
.signatures {
  background: var(--teal);
  color: var(--paper);
  padding: 4rem var(--gutter);
  border-top: 3px solid var(--ink);
  border-bottom: 3px solid var(--ink);
}
.signatures__inner { max-width: var(--max); margin: 0 auto; }
.signatures__head { text-align: center; margin-bottom: 2rem; }
.signatures__eye {
  font-family: var(--font-poster); font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.22em;
  font-size: 0.74rem;
  color: var(--mustard);
  margin-bottom: 0.6rem;
}
.signatures__title {
  font-family: var(--font-poster); font-weight: 900;
  text-transform: uppercase;
  font-size: clamp(2rem, 5vw, 3.4rem); line-height: 0.9;
  color: var(--paper);
}
.signatures__title em {
  font-family: var(--font-accent); font-style: italic;
  font-weight: 400; color: var(--mustard);
  text-transform: none;
}
.signatures__grid {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 1rem;
}
@media (max-width: 900px) { .signatures__grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .signatures__grid { grid-template-columns: 1fr; } }
.sigrow {
  background: var(--teal-deep);
  border: 1.5px solid var(--mustard);
  padding: 0.9rem 1rem;
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 0.8rem;
  align-items: center;
}
.sigrow__date {
  font-family: var(--font-poster); font-weight: 900;
  text-transform: uppercase;
  font-size: 0.84rem;
  color: var(--mustard);
  text-align: center;
  line-height: 1.05;
  padding-right: 0.7rem;
  border-right: 1.5px dashed var(--mustard);
  min-width: 60px;
}
.sigrow__date small {
  display: block;
  font-size: 0.62rem;
  color: var(--paper-soft);
  font-weight: 600;
  margin-top: 0.2rem;
  letter-spacing: 0.12em;
}
.sigrow__title {
  font-family: var(--font-poster); font-weight: 800;
  text-transform: uppercase;
  font-size: 0.95rem; line-height: 1.1;
  color: var(--paper);
}
.sigrow__town {
  font-family: var(--font-accent); font-style: italic;
  font-size: 0.78rem;
  color: var(--mustard);
  margin-top: 0.2rem;
}

/* Past events (collapsed archive) */
.past { padding: 4rem var(--gutter) 5rem; }
.past__inner { max-width: var(--max); margin: 0 auto; }
.past__head {
  display: flex; align-items: end; justify-content: space-between;
  gap: 1rem;
  border-bottom: 2px solid var(--ink);
  padding-bottom: 0.6rem;
  margin-bottom: 1.5rem;
}
.past__title {
  font-family: var(--font-poster); font-weight: 800;
  text-transform: uppercase;
  font-size: clamp(1.4rem, 3vw, 2rem);
}
.past__title em { font-family: var(--font-accent); font-style: italic; font-weight: 400; color: var(--teal); text-transform: none; }
.past__toggle {
  font-family: var(--font-poster); font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.14em;
  font-size: 0.74rem;
  color: var(--clay);
  cursor: pointer;
}
.past__list { display: grid; gap: 0.3rem; }
.past__row {
  display: grid; grid-template-columns: 84px 1fr auto;
  gap: 1.2rem; align-items: center;
  padding: 0.65rem 0.4rem;
  border-bottom: 1px dashed var(--ink-soft);
}
.past__row .d {
  font-family: var(--font-poster); font-weight: 800;
  text-transform: uppercase; letter-spacing: 0.1em;
  font-size: 0.78rem;
  color: var(--ink-soft);
}
.past__row .t {
  font-family: var(--font-poster); font-weight: 700;
  font-size: 1rem;
}
.past__row .t em { font-family: var(--font-accent); font-style: italic; font-weight: 400; color: var(--teal); }
.past__row .w {
  font-family: var(--font-accent); font-style: italic;
  font-size: 0.86rem; color: var(--ink-soft);
}

/* ============================================================
   ============================================================
   EVENTS — SINGLE event page
   Source: app/public/mockups/single-event-postershop.html (no-photo state)
           app/public/mockups/single-event-postershop-simple.html (photo state)
   ============================================================
   ============================================================ */

/* Event hero — color-block (no photo) + photo backdrop variants */
.event-hero {
  position: relative;
  background: var(--teal-deep);
  color: var(--paper);
  overflow: hidden;
  isolation: isolate;
  border-bottom: 3px solid var(--ink);
}
.event-hero__bg {
  position: absolute; inset: 0;
  z-index: 0;
  overflow: hidden;
}
.event-hero__bg img {
  width: 100%; height: 100%;
  object-fit: cover;
  filter: brightness(0.62) contrast(1.08) saturate(0.78);
}
.event-hero__overlay {
  position: absolute; inset: 0;
  z-index: 1;
  background: linear-gradient(180deg, rgba(31, 87, 99, 0.55) 0%, rgba(20, 59, 69, 0.78) 100%);
}
/* Sun-ray ornament — no-photo state only */
.event-hero__rays {
  position: absolute; inset: 0;
  z-index: 0;
  opacity: 0.16;
  pointer-events: none;
}
/* Poster stripe ornaments (top + bottom edges) */
.event-hero::before,
.event-hero::after {
  content: '';
  position: absolute; left: 0; right: 0;
  height: 14px;
  background: repeating-linear-gradient(90deg,
    var(--clay) 0 14px, transparent 14px 22px,
    var(--mustard) 22px 36px, transparent 36px 44px,
    var(--paper) 44px 58px, transparent 58px 66px);
  z-index: 3;
}
.event-hero::before { top: 0; }
.event-hero::after { bottom: 0; transform: scaleX(-1); }
.event-hero__frame {
  position: relative; z-index: 2;
  padding: 5rem var(--gutter) 4rem;
  max-width: var(--max);
  margin: 0 auto;
  min-height: 580px;
  display: grid;
  grid-template-rows: auto 1fr auto;
}
.event-hero__frame.is-poster { min-height: 720px; }
.event-hero__frame::before {
  content: '';
  position: absolute; inset: 2rem var(--gutter);
  border: 2px solid var(--paper); opacity: 0.5;
  pointer-events: none;
}
.event-hero__frame::after {
  content: '';
  position: absolute; inset: calc(2rem + 7px) calc(var(--gutter) + 7px);
  border: 1px solid var(--paper); opacity: 0.22;
  pointer-events: none;
}
.event-hero__top {
  font-family: var(--font-poster); font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.2em;
  font-size: 0.76rem;
  color: var(--paper-soft);
  display: flex; justify-content: space-between; align-items: center;
  padding: 0.65rem 1.2rem;
  background: rgba(20, 23, 20, 0.45);
  border: 1px solid rgba(244, 234, 212, 0.3);
  margin-bottom: 2rem;
}
.event-hero__top .mid { color: var(--mustard); }
.event-hero__top .cskt,
.event-hero__top .recurring {
  color: var(--mustard);
  display: inline-flex; align-items: center; gap: 0.4rem;
}
.event-hero__top .cskt::before,
.event-hero__top .recurring::before {
  content: ''; width: 6px; height: 6px; border-radius: 50%; background: var(--mustard);
}
.event-hero__body {
  display: flex; flex-direction: column; align-items: center; text-align: center;
  gap: 1.4rem;
  padding: 2rem 1rem;
}
.event-hero__kicker {
  font-family: var(--font-accent); font-style: italic;
  color: var(--mustard);
  font-size: clamp(1.1rem, 1.8vw, 1.6rem);
}
.event-hero__title {
  font-family: var(--font-poster); font-weight: 900;
  text-transform: uppercase;
  font-size: clamp(3rem, 9vw, 8rem); line-height: 0.85;
  letter-spacing: -0.022em;
  color: var(--paper);
  text-shadow: 4px 4px 0 var(--clay-deep), 8px 8px 0 var(--ink);
}
.event-hero__title em {
  font-family: var(--font-accent); font-style: italic;
  font-weight: 400; color: var(--mustard);
  text-transform: none;
  display: block;
  text-shadow: 3px 3px 0 var(--teal);
}
.event-hero__date {
  display: inline-flex; align-items: baseline; gap: 0.7rem;
  border-top: 3px solid var(--mustard);
  border-bottom: 3px solid var(--mustard);
  padding: 0.6rem 1.5rem;
  margin-top: 0.3rem;
  position: relative;
}
.event-hero__date::before,
.event-hero__date::after {
  content: '★';
  position: absolute; top: 50%;
  color: var(--mustard);
  font-size: 0.9rem;
  transform: translateY(-50%);
}
.event-hero__date::before { left: 0.3rem; }
.event-hero__date::after { right: 0.3rem; }
.event-hero__date .month {
  font-family: var(--font-poster); font-weight: 900;
  text-transform: uppercase;
  font-size: clamp(1.3rem, 2.4vw, 2.4rem); letter-spacing: 0.18em;
  color: var(--mustard);
}
.event-hero__date .num {
  font-family: var(--font-poster); font-weight: 900;
  font-size: clamp(2.4rem, 4.4vw, 4rem); line-height: 1;
  color: var(--paper);
  letter-spacing: -0.02em;
}
.event-hero__date .num small {
  font-size: 0.55em;
  color: var(--mustard);
  margin: 0 0.2rem;
}
.event-hero__date .dow {
  font-family: var(--font-poster); font-weight: 700;
  font-size: 1.1rem;
  color: var(--paper-soft);
  letter-spacing: 0.18em;
  text-transform: uppercase;
}
.event-hero__date .year {
  font-family: var(--font-poster); font-weight: 700;
  font-size: clamp(1rem, 1.6vw, 1.4rem);
  color: var(--paper-soft);
  letter-spacing: 0.16em;
}
.event-hero__date .time {
  font-family: var(--font-poster); font-weight: 700;
  font-size: clamp(0.95rem, 1.4vw, 1.2rem);
  color: var(--paper-soft);
  letter-spacing: 0.1em;
}
.event-hero__loc {
  font-family: var(--font-accent); font-style: italic;
  font-size: clamp(0.95rem, 1.6vw, 1.3rem);
  color: var(--paper-soft);
  margin-top: 0.2rem;
}
.event-hero__foot {
  font-family: var(--font-poster); font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.18em;
  font-size: 0.8rem;
  color: var(--mustard);
  text-align: center;
  padding: 1rem 1.2rem;
  background: rgba(20, 23, 20, 0.5);
  border: 1px solid rgba(217, 166, 77, 0.4);
  display: flex; justify-content: center; align-items: center; gap: 0.8rem; flex-wrap: wrap;
}
.event-hero__foot .div { color: var(--paper); opacity: 0.5; }

/* Quick-info strip — 4-5 cards under hero */
.qstrip {
  background: var(--paper-deep);
  border-bottom: 3px solid var(--ink);
  padding: 2rem var(--gutter);
}
.qstrip__inner {
  max-width: var(--max); margin: 0 auto;
  display: grid; grid-template-columns: repeat(5, 1fr); gap: 0.9rem;
}
.qstrip__inner.is-4 { grid-template-columns: repeat(4, 1fr); }
.qcard {
  background: var(--paper);
  border: 2px solid var(--ink);
  box-shadow: 4px 4px 0 var(--mustard);
  padding: 0.9rem 1rem;
  display: flex; flex-direction: column; gap: 0.2rem;
}
.qcard__lbl {
  font-family: var(--font-poster); font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.16em;
  font-size: 0.66rem;
  color: var(--clay);
}
.qcard__val {
  font-family: var(--font-poster); font-weight: 800;
  font-size: 1rem; line-height: 1.1;
  color: var(--ink);
}
.qcard__val em { font-family: var(--font-accent); font-style: italic; font-weight: 400; color: var(--teal); }
.qcard__sub {
  font-family: var(--font-accent); font-style: italic;
  font-size: 0.78rem;
  color: var(--ink-soft);
}
@media (max-width: 900px) { .qstrip__inner, .qstrip__inner.is-4 { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 480px) { .qstrip__inner, .qstrip__inner.is-4 { grid-template-columns: 1fr; } }

/* About-accent polaroid (floated inside .body__prose) */
.about-accent {
  float: right;
  width: 240px;
  margin: 0.4rem 0 1rem 2rem;
  background: var(--paper-soft);
  border: 2px solid var(--ink);
  box-shadow: 5px 5px 0 var(--paper-deep);
  padding: 0.6rem 0.6rem 0.35rem;
  transform: rotate(1.5deg);
  position: relative;
  transition: transform 0.25s var(--ease), box-shadow 0.25s var(--ease);
}
.about-accent:hover {
  transform: rotate(0) translate(-2px, -2px);
  box-shadow: 8px 8px 0 var(--mustard);
}
.about-accent::before {
  content: '';
  position: absolute; top: -10px; left: 50%;
  transform: translateX(-50%) rotate(-3deg);
  width: 56px; height: 14px;
  background: rgba(217, 166, 77, 0.55);
  border: 1px solid rgba(184, 70, 43, 0.35);
}
.about-accent__img {
  aspect-ratio: 4/3;
  background: var(--ink);
  border: 1.5px solid var(--ink);
  overflow: hidden;
}
.about-accent__img img {
  width: 100%; height: 100%; object-fit: cover;
  filter: brightness(0.9) contrast(1.04) saturate(0.85);
}
.about-accent__cap {
  font-family: var(--font-accent); font-style: italic;
  font-size: 0.84rem;
  color: var(--ink-soft);
  padding: 0.55rem 0.3rem 0.3rem;
  text-align: center;
  line-height: 1.35;
}
.about-accent__cap .credit {
  display: block;
  font-family: var(--font-poster); font-weight: 600; font-style: normal;
  text-transform: uppercase; letter-spacing: 0.12em;
  font-size: 0.6rem;
  color: var(--ink-soft);
  opacity: 0.7;
  margin-top: 0.25rem;
}
@media (max-width: 700px) {
  .about-accent { float: none; width: 100%; max-width: 280px; margin: 1rem auto; }
}

/* CSKT protocols block — conditional, forest-green */
.protocols {
  background: var(--forest);
  color: var(--paper);
  padding: 4rem var(--gutter);
  border-top: 3px solid var(--ink);
  border-bottom: 3px solid var(--ink);
  position: relative;
}
.protocols::before {
  content: '';
  position: absolute; top: 0; left: 0; right: 0;
  height: 3px;
  background: repeating-linear-gradient(90deg, var(--mustard) 0 8px, transparent 8px 14px);
}
.protocols__inner { max-width: var(--max); margin: 0 auto; }
.protocols__head {
  display: grid; grid-template-columns: auto 1fr; gap: 2rem; align-items: end;
  border-bottom: 2px solid var(--mustard);
  padding-bottom: 1rem;
  margin-bottom: 2rem;
}
.protocols__badge {
  width: 70px; height: 70px;
  background: var(--mustard); color: var(--ink);
  border: 2px solid var(--paper);
  border-radius: 50%;
  display: grid; place-items: center;
  font-family: var(--font-poster); font-weight: 900;
  font-size: 0.7rem; text-align: center; line-height: 1.05;
  letter-spacing: 0.05em;
  padding: 0.4rem;
}
.protocols__eye {
  font-family: var(--font-poster); font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.22em;
  font-size: 0.78rem;
  color: var(--mustard);
  margin-bottom: 0.6rem;
}
.protocols__title {
  font-family: var(--font-poster); font-weight: 900;
  text-transform: uppercase;
  font-size: clamp(2rem, 4.4vw, 3.4rem); line-height: 0.9;
  color: var(--paper);
}
.protocols__title em {
  font-family: var(--font-accent); font-style: italic;
  font-weight: 400; color: var(--mustard);
  text-transform: none;
}
.protocols__intro {
  max-width: 56ch;
  margin-bottom: 2rem;
  font-family: var(--font-accent); font-style: italic;
  font-size: 1.08rem;
  color: var(--paper-soft);
  line-height: 1.55;
}
.protocols__grid {
  display: grid; grid-template-columns: repeat(2, 1fr); gap: 1.2rem;
}
@media (max-width: 700px) { .protocols__grid { grid-template-columns: 1fr; } }
.prule {
  background: rgba(20, 23, 20, 0.4);
  border: 1.5px solid var(--mustard);
  padding: 1rem 1.2rem;
  display: grid; grid-template-columns: 32px 1fr; gap: 0.9rem;
}
.prule__num {
  font-family: var(--font-poster); font-weight: 900;
  font-size: 1.3rem; line-height: 1;
  color: var(--mustard);
}
.prule__head {
  font-family: var(--font-poster); font-weight: 800;
  text-transform: uppercase; letter-spacing: 0.04em;
  font-size: 0.95rem; line-height: 1.1;
  color: var(--paper);
  margin-bottom: 0.3rem;
}
.prule__body {
  font-size: 0.9rem;
  color: var(--paper-soft);
  line-height: 1.5;
}
.protocols__note {
  margin-top: 2rem;
  padding: 1rem 1.2rem;
  background: rgba(20, 23, 20, 0.4);
  border: 1px dashed var(--mustard);
  font-family: var(--font-accent); font-style: italic;
  font-size: 0.9rem;
  color: var(--paper-soft);
  display: flex; justify-content: space-between; gap: 1rem; flex-wrap: wrap;
}
.protocols__note a {
  color: var(--mustard);
  border-bottom: 1px solid var(--mustard);
  padding-bottom: 1px;
  font-family: var(--font-poster); font-weight: 700; font-style: normal;
  text-transform: uppercase; letter-spacing: 0.14em;
  font-size: 0.78rem;
}

/* Program — multi-day schedule grid */
.program {
  padding: 4rem var(--gutter);
  max-width: var(--max);
  margin: 0 auto;
}
.program__head {
  display: flex; align-items: end; justify-content: space-between;
  gap: 1rem;
  border-bottom: 3px solid var(--ink);
  padding-bottom: 0.8rem;
  margin-bottom: 2rem;
  position: relative;
}
.program__head::after {
  content: '';
  position: absolute; bottom: -8px; left: 0; right: 0;
  height: 3px;
  background: repeating-linear-gradient(90deg, var(--mustard) 0 8px, transparent 8px 14px);
}
.program__title {
  font-family: var(--font-poster); font-weight: 900;
  text-transform: uppercase;
  font-size: clamp(1.8rem, 4vw, 2.8rem); line-height: 0.9;
}
.program__title em { font-family: var(--font-accent); font-style: italic; font-weight: 400; color: var(--teal); text-transform: none; }
.program__note {
  font-family: var(--font-accent); font-style: italic;
  color: var(--ink-soft);
  font-size: 0.94rem;
  text-align: right;
}
.program__grid {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.2rem;
}
@media (max-width: 900px) { .program__grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .program__grid { grid-template-columns: 1fr; } }
.day {
  background: var(--paper-soft);
  border: 2px solid var(--ink);
  box-shadow: 5px 5px 0 var(--paper-deep);
  overflow: hidden;
  transition: transform 0.18s var(--ease), box-shadow 0.18s var(--ease);
}
.day:hover { transform: translate(-2px, -2px); box-shadow: 7px 7px 0 var(--mustard); }
.day__head {
  background: var(--clay); color: var(--paper);
  padding: 0.7rem 1rem;
  display: flex; justify-content: space-between; align-items: baseline;
  border-bottom: 2px solid var(--ink);
}
.day__head .num {
  font-family: var(--font-poster); font-weight: 900;
  font-size: 1.4rem;
  letter-spacing: -0.02em;
}
.day__head .lbl {
  font-family: var(--font-poster); font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.18em;
  font-size: 0.74rem;
}
.day__head .date {
  font-family: var(--font-accent); font-style: italic;
  font-size: 0.86rem;
  color: var(--paper-soft);
}
.day__body { padding: 0.9rem 1rem 1rem; display: grid; gap: 0.5rem; }
.day__row {
  display: grid; grid-template-columns: 60px 1fr;
  gap: 0.6rem; align-items: baseline;
  padding-bottom: 0.4rem;
  border-bottom: 1px dotted var(--ink-soft);
}
.day__row:last-child { border-bottom: none; padding-bottom: 0; }
.day__row .t {
  font-family: var(--font-poster); font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.1em;
  font-size: 0.74rem;
  color: var(--clay);
}
.day__row .what {
  font-size: 0.92rem;
  color: var(--ink);
  line-height: 1.35;
}
.day__row .what em { font-family: var(--font-accent); font-style: italic; color: var(--teal); }

/* Recurring strip — next 3 instances for weekly events */
.recurring-strip {
  background: var(--paper-soft);
  border-top: 2px solid var(--ink);
  border-bottom: 3px solid var(--ink);
  padding: 2.5rem var(--gutter) 3rem;
}
.recurring-strip__inner { max-width: var(--max); margin: 0 auto; }
.recurring-strip__head {
  display: flex; align-items: end; justify-content: space-between;
  gap: 1rem;
  border-bottom: 2px solid var(--ink);
  padding-bottom: 0.7rem;
  margin-bottom: 1.5rem;
  position: relative;
}
.recurring-strip__head::after {
  content: '';
  position: absolute; bottom: -8px; left: 0; right: 0;
  height: 3px;
  background: repeating-linear-gradient(90deg, var(--mustard) 0 8px, transparent 8px 14px);
}
.recurring-strip__eye {
  font-family: var(--font-poster); font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.22em;
  font-size: 0.74rem;
  color: var(--clay);
  margin-bottom: 0.4rem;
}
.recurring-strip__title {
  font-family: var(--font-poster); font-weight: 900;
  text-transform: uppercase;
  font-size: clamp(1.6rem, 3vw, 2.4rem); line-height: 0.95;
}
.recurring-strip__title em { font-family: var(--font-accent); font-style: italic; font-weight: 400; color: var(--teal); text-transform: none; }
.recurring-strip__note {
  font-family: var(--font-accent); font-style: italic;
  color: var(--ink-soft);
  font-size: 0.92rem;
  text-align: right;
}
.recurring-strip__grid {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem;
}
@media (max-width: 760px) { .recurring-strip__grid { grid-template-columns: 1fr; } }
.instance {
  background: var(--paper);
  border: 2px solid var(--ink);
  box-shadow: 4px 4px 0 var(--paper-deep);
  display: grid; grid-template-columns: 84px 1fr;
  overflow: hidden;
  transition: transform 0.15s var(--ease), box-shadow 0.15s var(--ease);
}
.instance:hover { transform: translate(-2px, -2px); box-shadow: 6px 6px 0 var(--mustard); }
.instance.is-this { border-color: var(--clay); box-shadow: 4px 4px 0 var(--mustard); }
.instance__date {
  background: var(--paper-deep);
  border-right: 1.5px dashed var(--ink-soft);
  padding: 1rem 0.5rem;
  text-align: center;
  display: flex; flex-direction: column; justify-content: center;
}
.instance.is-this .instance__date { background: var(--clay); color: var(--paper); }
.instance__date .d {
  font-family: var(--font-poster); font-weight: 900;
  font-size: 1.7rem; line-height: 1;
  color: var(--ink);
}
.instance.is-this .instance__date .d { color: var(--paper); }
.instance__date .m {
  font-family: var(--font-poster); font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.14em;
  font-size: 0.66rem;
  margin-top: 0.25rem;
  color: var(--clay);
}
.instance.is-this .instance__date .m { color: var(--mustard); }
.instance__date .dw {
  font-family: var(--font-accent); font-style: italic;
  font-size: 0.74rem;
  color: var(--ink-soft);
  margin-top: 0.1rem;
}
.instance.is-this .instance__date .dw { color: var(--paper-soft); }
.instance__body { padding: 0.9rem 1.1rem; display: flex; flex-direction: column; gap: 0.3rem; }
.instance__lbl {
  font-family: var(--font-poster); font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.16em;
  font-size: 0.66rem;
  color: var(--clay);
}
.instance__what {
  font-family: var(--font-poster); font-weight: 800;
  text-transform: uppercase;
  font-size: 1rem; line-height: 1.1;
}
.instance__what em { font-family: var(--font-accent); font-style: italic; font-weight: 400; color: var(--teal); text-transform: none; }
.instance__when {
  font-family: var(--font-accent); font-style: italic;
  font-size: 0.84rem; color: var(--ink-soft);
}

/* Event gallery — distinct from .gallery on single-business via class rename */
.event-gallery {
  background: var(--paper);
  padding: 4rem var(--gutter);
  border-top: 2px solid var(--ink);
  border-bottom: 3px solid var(--ink);
}
.event-gallery__inner { max-width: var(--max); margin: 0 auto; }
.event-gallery__head {
  display: flex; align-items: end; justify-content: space-between;
  gap: 1.5rem;
  border-bottom: 2px solid var(--ink);
  padding-bottom: 0.7rem;
  margin-bottom: 2.2rem;
  position: relative;
}
.event-gallery__head::after {
  content: '';
  position: absolute; bottom: -8px; left: 0; right: 0;
  height: 3px;
  background: repeating-linear-gradient(90deg, var(--clay) 0 8px, transparent 8px 14px);
}
.event-gallery__eye {
  font-family: var(--font-poster); font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.22em;
  font-size: 0.74rem;
  color: var(--clay);
  margin-bottom: 0.4rem;
}
.event-gallery__title {
  font-family: var(--font-poster); font-weight: 900;
  text-transform: uppercase;
  font-size: clamp(1.8rem, 3.4vw, 2.6rem); line-height: 0.9;
}
.event-gallery__title em { font-family: var(--font-accent); font-style: italic; font-weight: 400; color: var(--teal); text-transform: none; }
.event-gallery__note {
  font-family: var(--font-accent); font-style: italic;
  color: var(--ink-soft);
  font-size: 0.92rem;
  text-align: right;
  max-width: 32ch;
}
.event-gallery__grid {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.6rem;
}
@media (max-width: 900px) { .event-gallery__grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 480px) { .event-gallery__grid { grid-template-columns: 1fr; } }
/* Event-scoped polaroid — different rotations/shadow than single-business polaroid */
.event-gallery .polaroid {
  background: var(--paper-soft);
  border: 2px solid var(--ink);
  box-shadow: 5px 5px 0 var(--paper-deep);
  padding: 0.65rem 0.65rem 0.4rem;
  display: block;
  position: relative;
  transition: transform 0.25s var(--ease), box-shadow 0.25s var(--ease);
}
.event-gallery .polaroid:nth-child(4n+1) { transform: rotate(-1.2deg); }
.event-gallery .polaroid:nth-child(4n+2) { transform: rotate(0.8deg); }
.event-gallery .polaroid:nth-child(4n+3) { transform: rotate(-0.5deg); }
.event-gallery .polaroid:nth-child(4n+4) { transform: rotate(1.4deg); }
.event-gallery .polaroid:hover {
  transform: rotate(0) translate(-3px, -3px);
  box-shadow: 9px 9px 0 var(--mustard);
  z-index: 2;
}
.event-gallery .polaroid img {
  aspect-ratio: 1/1;
  width: 100%; height: auto; object-fit: cover;
  filter: brightness(0.9) contrast(1.04) saturate(0.85);
  border: 1.5px solid var(--ink);
}
.event-gallery .polaroid__cap {
  font-family: var(--font-accent); font-style: italic;
  font-size: 0.88rem;
  color: var(--ink-soft);
  padding: 0.7rem 0.3rem 0.4rem;
  text-align: center;
  line-height: 1.35;
}
.event-gallery .polaroid__cap strong {
  font-family: var(--font-poster); font-weight: 800; font-style: normal;
  text-transform: uppercase; letter-spacing: 0.14em;
  font-size: 0.7rem;
  color: var(--clay);
  display: block;
  margin-bottom: 0.2rem;
}
.event-gallery .polaroid__cap .credit {
  display: block;
  font-family: var(--font-poster); font-weight: 600; font-style: normal;
  text-transform: uppercase; letter-spacing: 0.12em;
  font-size: 0.6rem;
  color: var(--ink-soft);
  opacity: 0.7;
  margin-top: 0.25rem;
}
.event-gallery__foot {
  margin-top: 2rem;
  padding-top: 1rem;
  border-top: 1px dashed var(--ink);
  display: flex; justify-content: space-between; gap: 1rem; flex-wrap: wrap;
  font-family: var(--font-accent); font-style: italic;
  font-size: 0.88rem;
  color: var(--ink-soft);
}
.event-gallery__foot a {
  font-family: var(--font-poster); font-weight: 700; font-style: normal;
  text-transform: uppercase; letter-spacing: 0.14em;
  font-size: 0.74rem;
  color: var(--clay);
  border-bottom: 1.5px solid var(--clay);
  padding-bottom: 1px;
}

/* Event where — map block (teal background variant) */
.event-where {
  background: var(--teal); color: var(--paper);
  padding: 4rem var(--gutter);
  border-top: 3px solid var(--ink);
  border-bottom: 3px solid var(--ink);
}
.event-where__inner {
  max-width: var(--max); margin: 0 auto;
  display: grid; grid-template-columns: 1fr 1.3fr; gap: 3rem; align-items: center;
}
@media (max-width: 900px) { .event-where__inner { grid-template-columns: 1fr; gap: 2rem; } }
.event-where__copy { display: flex; flex-direction: column; gap: 0.8rem; }
.event-where__eye {
  font-family: var(--font-poster); font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.22em;
  font-size: 0.78rem;
  color: var(--mustard);
}
.event-where__title {
  font-family: var(--font-poster); font-weight: 900;
  text-transform: uppercase;
  font-size: clamp(2rem, 4vw, 3rem); line-height: 0.9;
}
.event-where__title em { font-family: var(--font-accent); font-style: italic; font-weight: 400; color: var(--mustard); text-transform: none; }
.event-where__addr {
  font-family: var(--font-accent); font-style: italic;
  font-size: 1.1rem; color: var(--paper-soft); line-height: 1.5;
}
.event-where__notes {
  font-size: 0.94rem; color: var(--paper-soft); line-height: 1.6;
  border-top: 1px dashed var(--mustard);
  padding-top: 1rem; margin-top: 0.6rem;
}
.event-where__actions { display: flex; gap: 0.8rem; margin-top: 0.6rem; flex-wrap: wrap; }
.event-where__visual {
  background: var(--paper);
  border: 3px solid var(--paper);
  box-shadow: 8px 8px 0 var(--clay);
  overflow: hidden;
}
.event-where__visual svg { display: block; width: 100%; height: auto; background: var(--paper); }

/* Related event tickets */
.rticket {
  background: var(--paper);
  color: var(--ink);
  border: 2px solid var(--ink);
  box-shadow: 5px 5px 0 var(--mustard);
  display: grid; grid-template-columns: 100px 1fr;
  overflow: hidden;
  transition: transform 0.18s var(--ease), box-shadow 0.18s var(--ease);
}
.rticket:hover { transform: translate(-2px, -2px); box-shadow: 7px 7px 0 var(--mustard); }
.rticket__stub {
  background: var(--clay); color: var(--paper);
  padding: 1rem 0.5rem;
  text-align: center;
  border-right: 2px dashed var(--ink);
  display: flex; flex-direction: column; justify-content: center;
  position: relative;
}
.rticket__stub::before,
.rticket__stub::after {
  content: ''; position: absolute; right: -10px;
  width: 16px; height: 16px;
  background: var(--paper);
  border: 2px solid var(--ink);
  border-radius: 50%;
}
.rticket__stub::before { top: -10px; }
.rticket__stub::after { bottom: -10px; }
.rticket__stub .d { font-family: var(--font-poster); font-weight: 900; font-size: 2rem; line-height: 1; }
.rticket__stub .m {
  font-family: var(--font-poster); font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.16em;
  font-size: 0.66rem; margin-top: 0.2rem;
}
.rticket__body { padding: 0.9rem 1.1rem; display: flex; flex-direction: column; gap: 0.3rem; }
.rticket__where {
  font-family: var(--font-poster); font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.14em;
  font-size: 0.66rem; color: var(--clay);
}
.rticket__title {
  font-family: var(--font-poster); font-weight: 900;
  text-transform: uppercase;
  font-size: 1.1rem; line-height: 1.05;
}
.rticket__title em { font-family: var(--font-accent); font-style: italic; font-weight: 400; color: var(--teal); text-transform: none; }
.rticket__when { font-family: var(--font-accent); font-style: italic; font-size: 0.86rem; color: var(--ink-soft); }

/* ============================================================
   ============================================================
   DIRECTORY — Category archive (mustard hero variant)
   Source: app/public/mockups/directory-category-postershop.html
   ============================================================
   ============================================================ */

.cat-hero {
  background: var(--mustard);
  color: var(--ink);
  padding: 3rem var(--gutter) 3.5rem;
  border-bottom: 3px solid var(--ink);
  position: relative;
}
.cat-hero::before {
  content: ''; position: absolute; top: 0; left: 0; right: 0; height: 6px;
  background: repeating-linear-gradient(90deg,
    var(--clay) 0 14px, transparent 14px 22px,
    var(--ink) 22px 36px, transparent 36px 44px);
}
.cat-hero__inner {
  max-width: var(--max); margin: 0 auto;
  display: grid; grid-template-columns: 1.6fr 1fr; gap: 3rem; align-items: end;
}
.cat-hero__main { display: flex; flex-direction: column; gap: 0.9rem; }
.cat-hero__eyebrow {
  font-family: var(--font-poster); font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.22em;
  font-size: 0.78rem; color: var(--clay);
}
.cat-hero__title {
  font-family: var(--font-poster); font-weight: 900;
  text-transform: uppercase;
  font-size: clamp(2.4rem, 5.4vw, 4.4rem); line-height: 0.9;
  letter-spacing: -0.02em;
  color: var(--ink);
  text-shadow: 3px 3px 0 var(--paper);
}
.cat-hero__title em {
  font-family: var(--font-accent); font-style: italic;
  font-weight: 400; color: var(--teal-deep);
  text-transform: none;
  text-shadow: 2px 2px 0 var(--paper-deep);
}
.cat-hero__lede {
  font-family: var(--font-accent); font-style: italic;
  font-size: 1.1rem; max-width: 56ch;
  color: var(--ink-soft);
  line-height: 1.5;
}
.cat-hero__stats { display: grid; grid-template-columns: 1fr 1fr; gap: 0.8rem; }
.cat-hero__stat {
  background: var(--paper);
  border: 2px solid var(--ink);
  box-shadow: 4px 4px 0 var(--ink);
  padding: 0.9rem 1rem;
  display: grid; grid-template-columns: auto 1fr; gap: 0.7rem; align-items: center;
}
.cat-hero__stat .num {
  font-family: var(--font-poster); font-weight: 900;
  font-size: 2.2rem; line-height: 1;
  color: var(--clay);
}
.cat-hero__stat .lbl-stack { display: flex; flex-direction: column; gap: 0.1rem; }
.cat-hero__stat .lbl {
  font-family: var(--font-poster); font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.14em;
  font-size: 0.74rem; color: var(--ink);
}
.cat-hero__stat .sub {
  font-family: var(--font-accent); font-style: italic;
  font-size: 0.78rem; color: var(--ink-soft);
}
@media (max-width: 900px) {
  .cat-hero__inner { grid-template-columns: 1fr; gap: 1.6rem; align-items: start; }
}

/* Editorial intro — paper band */
.cat-intro {
  background: var(--paper);
  padding: 3.5rem var(--gutter);
  border-bottom: 2px solid var(--ink);
  position: relative;
}
.cat-intro::before {
  content: ''; position: absolute; bottom: -8px; left: 50%;
  transform: translateX(-50%);
  width: 90px; height: 3px;
  background: repeating-linear-gradient(90deg, var(--mustard) 0 8px, transparent 8px 14px);
}
.cat-intro__inner {
  max-width: 760px; margin: 0 auto;
  display: grid; grid-template-columns: auto 1fr; gap: 2rem; align-items: start;
}
.cat-intro__seal {
  width: 70px; height: 70px;
  background: var(--clay); color: var(--paper);
  border: 2px solid var(--ink);
  border-radius: 50%;
  display: grid; place-items: center;
  font-family: var(--font-poster); font-weight: 900;
  font-size: 1.6rem;
  flex: none;
  box-shadow: 4px 4px 0 var(--ink);
}
.cat-intro__eye {
  font-family: var(--font-poster); font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.22em;
  font-size: 0.74rem; color: var(--clay);
  margin-bottom: 0.5rem;
}
.cat-intro__head {
  font-family: var(--font-poster); font-weight: 800;
  text-transform: uppercase; letter-spacing: -0.005em;
  font-size: clamp(1.4rem, 2.6vw, 2rem); line-height: 1;
  margin-bottom: 0.9rem;
}
.cat-intro__head em { font-family: var(--font-accent); font-style: italic; font-weight: 400; color: var(--teal); text-transform: none; }
.cat-intro__prose p {
  font-size: 1.04rem; line-height: 1.65;
  color: var(--ink); margin-bottom: 0.9rem;
}
.cat-intro__prose p:last-child { margin-bottom: 0; }
.cat-intro__prose em {
  font-family: var(--font-accent); font-style: italic;
  color: var(--ink-soft);
}
@media (max-width: 700px) {
  .cat-intro__inner { grid-template-columns: 1fr; gap: 1.2rem; }
  .cat-intro__seal { width: 56px; height: 56px; }
}

/* ============================================================
   "Also browse" cross-link strip — used by both cat + feature
   ============================================================ */
.also {
  background: var(--ink);
  color: var(--paper);
  padding: 4rem var(--gutter);
  border-top: 3px solid var(--ink);
  border-bottom: 3px solid var(--ink);
}
.also__inner { max-width: var(--max); margin: 0 auto; }
.also__head { text-align: center; margin-bottom: 2rem; }
.also__eye {
  font-family: var(--font-poster); font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.22em;
  font-size: 0.74rem; color: var(--mustard);
  margin-bottom: 0.5rem;
}
.also__title {
  font-family: var(--font-poster); font-weight: 900;
  text-transform: uppercase;
  font-size: clamp(1.6rem, 3.4vw, 2.4rem); line-height: 0.95;
}
.also__title em { font-family: var(--font-accent); font-style: italic; font-weight: 400; color: var(--mustard); text-transform: none; }
.also__grid {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 1rem;
}
@media (max-width: 900px) { .also__grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 480px) { .also__grid { grid-template-columns: 1fr; } }

/* Category card (in "Also browse" on category page) */
.cat-card {
  background: var(--paper-soft);
  color: var(--ink);
  border: 2px solid var(--paper);
  padding: 1.4rem 1.2rem 1.2rem;
  display: flex; flex-direction: column; gap: 0.5rem;
  transition: transform 0.2s var(--ease), box-shadow 0.2s var(--ease);
}
.cat-card:hover {
  transform: translate(-3px, -3px);
  box-shadow: 6px 6px 0 var(--mustard);
}
.cat-card__seal {
  width: 36px; height: 36px;
  background: var(--clay); color: var(--paper);
  border: 2px solid var(--ink);
  border-radius: 50%;
  display: grid; place-items: center;
  font-family: var(--font-poster); font-weight: 900;
  font-size: 0.9rem;
  margin-bottom: 0.4rem;
}
.cat-card__seal.eat-drink { background: var(--clay); }
.cat-card__seal.stay { background: var(--teal); color: var(--paper); }
.cat-card__seal.do-see { background: var(--forest); color: var(--paper); }
.cat-card__seal.shop { background: var(--mustard-deep); color: var(--paper); }
.cat-card__seal.services { background: var(--ink); color: var(--mustard); }
.cat-card__name {
  font-family: var(--font-poster); font-weight: 900;
  text-transform: uppercase;
  font-size: 1.05rem; line-height: 1.05;
  letter-spacing: -0.005em;
  color: var(--ink);
}
.cat-card__name em { font-family: var(--font-accent); font-style: italic; font-weight: 400; color: var(--teal); text-transform: none; }
.cat-card__count {
  font-family: var(--font-poster); font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.14em;
  font-size: 0.68rem;
  color: var(--clay);
}
.cat-card__tag {
  font-family: var(--font-accent); font-style: italic;
  font-size: 0.86rem;
  color: var(--ink-soft);
  margin-top: 0.2rem;
  line-height: 1.4;
}

/* Filterbar — zero-count chip styling */
.chip.is-zero { opacity: 0.5; cursor: default; }
.chip.is-zero:hover { transform: none; box-shadow: none; }

/* Category/feature taxonomy pages: override the global .filterbar layout
   (the global one is 2-column grid for the main directory, with a
   .filterbar__filters wrapper). On these pages the label + chips live
   directly inside .filterbar__inner as siblings, so we need flex-wrap. */
.tax-business_category .filterbar,
.tax-business_feature  .filterbar {
  background: var(--paper-deep);
  position: sticky; top: 78px; z-index: 40;
}
.tax-business_category .filterbar__inner,
.tax-business_feature  .filterbar__inner {
  padding: 1rem var(--gutter);
  display: flex; align-items: center; gap: 0.8rem; flex-wrap: wrap;
}
.tax-business_category .filterbar__label,
.tax-business_feature  .filterbar__label {
  font-family: var(--font-poster); font-weight: 800;
  text-transform: uppercase; letter-spacing: 0.18em;
  font-size: 0.7rem; color: var(--ink-soft);
  display: flex; align-items: center; gap: 0.5rem;
}
.tax-business_category .filterbar__label::before,
.tax-business_feature  .filterbar__label::before {
  content: ''; width: 6px; height: 6px; border-radius: 50%;
  background: var(--clay);
}
.tax-business_feature .filterbar__label::before { background: var(--forest); }
.tax-business_category .chip,
.tax-business_feature  .chip {
  padding: 0.35rem 0.85rem;
  font-size: 0.74rem;
  letter-spacing: 0.1em;
}
.tax-business_category .chip.is-active,
.tax-business_feature  .chip.is-active {
  background: var(--ink); color: var(--mustard);
  box-shadow: 2px 2px 0 var(--clay);
}
.tax-business_feature .chip.is-active {
  box-shadow: 2px 2px 0 var(--forest);
}
.tax-business_category .chip .count,
.tax-business_feature  .chip .count {
  font-family: var(--font-poster); font-weight: 600;
  font-size: 0.66rem;
  padding: 0.05rem 0.4rem;
  background: var(--paper-deep); color: var(--ink-soft);
  border: 1px solid var(--ink-soft);
  width: auto; height: auto; border-radius: 0;
}
.tax-business_category .chip.is-active .count {
  background: var(--clay); color: var(--paper); border-color: var(--paper-soft);
}
.tax-business_feature .chip.is-active .count {
  background: var(--forest); color: var(--paper); border-color: var(--mustard);
}

/* Sub-category second row: thin top divider, slightly smaller pills */
.tax-business_category .filterbar__inner--subcat {
  border-top: 1px dashed var(--ink);
  margin-top: 0.6rem;
  padding-top: 0.7rem;
}
.tax-business_category .filterbar__inner--subcat .filterbar__label::before {
  background: var(--teal);
}
.tax-business_category .filterbar__inner--subcat .chip {
  font-size: 0.7rem;
  padding: 0.3rem 0.7rem;
  letter-spacing: 0.08em;
}
.tax-business_category .filterbar__inner--subcat .chip.is-active {
  background: var(--teal); color: var(--mustard);
  box-shadow: 2px 2px 0 var(--ink);
}
.tax-business_category .filterbar__inner--subcat .chip.is-active .count {
  background: var(--teal-deep); color: var(--paper); border-color: var(--mustard);
}

/* Hide the long tail behind a "+ N more" expander. */
.tax-business_category .filterbar__inner--subcat .chip.is-extra { display: none; }
.tax-business_category .filterbar__inner--subcat.is-expanded .chip.is-extra { display: inline-flex; }

/* ============================================================
   CATEGORY PAGE FILTER BAR — Option O
   Town dropdown + top-5 type pills + "more" dropdown, strict one line
   ============================================================ */
.cat-bar-wrap {
  padding: 1rem var(--gutter);
}
.cat-bar {
  max-width: var(--max);
  margin: 0 auto;
  background: var(--paper-deep);
  border: 2px solid var(--ink);
  box-shadow: 6px 6px 0 var(--paper-soft);
  padding: 0.8rem 1.1rem;
  display: flex;
  align-items: center;
  gap: 0.9rem;
  flex-wrap: nowrap;
  white-space: nowrap;
  overflow-x: clip;
  overflow-y: visible;
  min-width: 0;
}
.cat-bar > * { flex: none; position: relative; }
.cat-bar__pills {
  display: flex; gap: 0.4rem; align-items: center;
  min-width: 0; flex: 1 1 auto;
  overflow-x: clip;
  overflow-y: visible;
}
.cat-bar__lbl {
  font-family: var(--font-poster); font-weight: 800;
  text-transform: uppercase; letter-spacing: 0.16em;
  font-size: 0.68rem; color: var(--ink-soft);
  display: inline-flex; align-items: center; gap: 0.45rem;
}
.cat-bar__lbl::before {
  content: ''; width: 6px; height: 6px; border-radius: 50%;
  background: var(--clay);
}
.cat-bar__lbl--type::before { background: var(--teal); }

.cat-bar__town {
  font-family: var(--font-poster); font-weight: 800;
  text-transform: uppercase; letter-spacing: 0.1em;
  font-size: 0.74rem;
  padding: 0.38rem 1.9rem 0.38rem 0.75rem;
  background: var(--ink); color: var(--mustard);
  border: 2px solid var(--ink);
  cursor: pointer;
  appearance: none;
  box-shadow: 2px 2px 0 var(--clay);
  background-image:
    linear-gradient(45deg, transparent 50%, var(--mustard) 50%),
    linear-gradient(135deg, var(--mustard) 50%, transparent 50%);
  background-position: calc(100% - 12px) 50%, calc(100% - 7px) 50%;
  background-size: 5px 5px;
  background-repeat: no-repeat;
}
.cat-bar__div {
  width: 1px; height: 22px;
  background: var(--ink); opacity: 0.2;
}

.cat-bar .tp {
  font-family: var(--font-poster); font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.08em;
  font-size: 0.68rem;
  padding: 0.28rem 0.6rem;
  background: var(--paper);
  color: var(--ink);
  border: 2px solid var(--ink);
  display: inline-flex; align-items: baseline; gap: 0.3rem;
  cursor: pointer;
  transition: transform 0.15s var(--ease), box-shadow 0.15s var(--ease);
}
.cat-bar .tp:hover { transform: translate(-1px, -1px); box-shadow: 2px 2px 0 var(--ink); }
.cat-bar .tp .n {
  font-weight: 600;
  font-size: 0.62rem;
  opacity: 0.6;
}
.cat-bar .tp.is-active {
  background: var(--teal); color: var(--mustard);
  box-shadow: 2px 2px 0 var(--ink);
}
.cat-bar .tp.is-active:hover { box-shadow: 4px 4px 0 var(--ink); transform: translate(-2px, -2px); }
.cat-bar .tp.is-active .n { opacity: 0.9; color: var(--paper-soft); }

.cat-bar__more {
  font-family: var(--font-poster); font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.08em;
  font-size: 0.66rem;
  padding: 0.26rem 1.5rem 0.26rem 0.55rem;
  background: transparent; color: var(--clay);
  border: 1.5px dashed var(--clay);
  cursor: pointer;
  appearance: none;
  background-image:
    linear-gradient(45deg, transparent 50%, var(--clay) 50%),
    linear-gradient(135deg, var(--clay) 50%, transparent 50%);
  background-position: calc(100% - 10px) 50%, calc(100% - 6px) 50%;
  background-size: 4px 4px;
  background-repeat: no-repeat;
}
.cat-bar__more:hover { background-color: rgba(184, 70, 43, 0.08); }

/* On narrow screens, let the bar scroll horizontally so it never breaks the one-line contract. */
@media (max-width: 760px) {
  .cat-bar { overflow-x: auto; padding: 0.7rem 0.8rem; }
}

/* ============================================================
   CATEGORY BAR — styled <details> dropdowns (replaces native <select>)
   Both Town and "more types" use the same primitives.
   ============================================================ */
.cb-dd { position: relative; }
.cb-dd > summary {
  list-style: none;
  cursor: pointer;
  display: inline-block;
}
.cb-dd > summary::-webkit-details-marker { display: none; }
.cb-dd > summary::marker { display: none; }

/* TOWN dropdown summary — bold ink+mustard chip with clay drop shadow */
.cb-dd__btn--town {
  font-family: var(--font-poster); font-weight: 800;
  text-transform: uppercase; letter-spacing: 0.1em;
  font-size: 0.74rem;
  padding: 0.38rem 1.7rem 0.38rem 0.75rem;
  background: var(--ink); color: var(--mustard);
  border: 2px solid var(--ink);
  box-shadow: 2px 2px 0 var(--clay);
  position: relative;
}
.cb-dd__btn--town::after {
  content: '';
  position: absolute;
  right: 0.55rem; top: 50%;
  width: 6px; height: 6px;
  border-right: 2px solid var(--mustard);
  border-bottom: 2px solid var(--mustard);
  transform: translateY(-75%) rotate(45deg);
  transition: transform 0.15s var(--ease);
}
.cb-dd[open] .cb-dd__btn--town::after { transform: translateY(-25%) rotate(225deg); }

/* MORE-TYPES dropdown summary — dashed clay border */
.cb-dd__btn--more {
  font-family: var(--font-poster); font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.08em;
  font-size: 0.66rem;
  padding: 0.26rem 1.4rem 0.26rem 0.55rem;
  background: transparent; color: var(--clay);
  border: 1.5px dashed var(--clay);
  position: relative;
}
.cb-dd__btn--more::after {
  content: '';
  position: absolute;
  right: 0.45rem; top: 50%;
  width: 5px; height: 5px;
  border-right: 1.5px solid var(--clay);
  border-bottom: 1.5px solid var(--clay);
  transform: translateY(-75%) rotate(45deg);
  transition: transform 0.15s var(--ease);
}
.cb-dd[open] .cb-dd__btn--more::after { transform: translateY(-25%) rotate(225deg); }

/* PANEL — Postershop-styled popup */
.cb-dd__panel {
  position: absolute;
  top: calc(100% + 0.4rem);
  left: 0;
  min-width: 220px;
  background: var(--paper);
  border: 2px solid var(--ink);
  box-shadow: 5px 5px 0 var(--mustard);
  list-style: none;
  margin: 0; padding: 0.35rem 0;
  z-index: 100;
  max-height: 360px;
  overflow-y: auto;
}
.cb-dd__panel--right {
  left: auto;
  right: 0;
}
.cb-dd__panel li { list-style: none; }
.cb-dd__panel a {
  display: flex; justify-content: space-between; align-items: baseline; gap: 1rem;
  padding: 0.42rem 0.95rem;
  font-family: var(--font-poster); font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.08em;
  font-size: 0.7rem;
  color: var(--ink);
  text-decoration: none;
  transition: background 0.1s, color 0.1s;
}
.cb-dd__panel a:hover {
  background: var(--teal); color: var(--mustard);
}
.cb-dd__panel a:hover .n { color: var(--paper-soft); opacity: 0.9; }
.cb-dd__panel a.is-active {
  background: var(--teal-deep); color: var(--mustard);
}
.cb-dd__panel a.is-active .n { color: var(--paper-soft); opacity: 0.9; }
.cb-dd__panel a .n {
  font-size: 0.62rem;
  font-weight: 600;
  opacity: 0.55;
}

/* "+ N more types ▾" button — uses chip frame with a dashed border to read as a control */
.tax-business_category .chip--more {
  font-family: var(--font-poster); font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.1em;
  font-size: 0.7rem;
  padding: 0.3rem 0.8rem;
  background: transparent;
  color: var(--clay);
  border: 1.5px dashed var(--clay);
  cursor: pointer;
  transition: transform 0.15s var(--ease), background 0.15s, color 0.15s;
}
.tax-business_category .chip--more:hover {
  background: var(--clay); color: var(--paper);
  transform: translate(-1px, -1px);
}

/* ============================================================
   ============================================================
   DIRECTORY — Feature archive (forest hero variant)
   Source: app/public/mockups/directory-feature-postershop.html
   ============================================================
   ============================================================ */

.feat-hero {
  background: var(--forest);
  color: var(--paper);
  padding: 3rem var(--gutter) 3.5rem;
  border-bottom: 3px solid var(--ink);
  position: relative;
}
.feat-hero::before {
  content: ''; position: absolute; top: 0; left: 0; right: 0; height: 6px;
  background: repeating-linear-gradient(90deg,
    var(--mustard) 0 14px, transparent 14px 22px,
    var(--paper) 22px 36px, transparent 36px 44px);
}
.feat-hero__inner {
  max-width: var(--max); margin: 0 auto;
  display: grid; grid-template-columns: 1.6fr 1fr; gap: 3rem; align-items: end;
}
.feat-hero__main { display: flex; flex-direction: column; gap: 0.9rem; }
.feat-hero__eyebrow {
  font-family: var(--font-poster); font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.22em;
  font-size: 0.78rem; color: var(--mustard);
}
.feat-hero__title {
  font-family: var(--font-poster); font-weight: 900;
  text-transform: uppercase;
  font-size: clamp(2.4rem, 5.4vw, 4.4rem); line-height: 0.9;
  letter-spacing: -0.02em;
  color: var(--paper);
  text-shadow: 3px 3px 0 #1d3022;
}
.feat-hero__title em {
  font-family: var(--font-accent); font-style: italic;
  font-weight: 400; color: var(--mustard);
  text-transform: none;
  text-shadow: 2px 2px 0 var(--ink);
}
.feat-hero__lede {
  font-family: var(--font-accent); font-style: italic;
  font-size: 1.1rem; max-width: 56ch;
  color: var(--paper-soft);
  line-height: 1.5;
}
.feat-hero__stats { display: grid; grid-template-columns: 1fr 1fr; gap: 0.8rem; }
.feat-hero__stat {
  background: #1d3022;
  border: 2px solid var(--mustard);
  padding: 0.9rem 1rem;
  display: grid; grid-template-columns: auto 1fr; gap: 0.7rem; align-items: center;
}
.feat-hero__stat .num {
  font-family: var(--font-poster); font-weight: 900;
  font-size: 2.2rem; line-height: 1;
  color: var(--mustard);
}
.feat-hero__stat .lbl-stack { display: flex; flex-direction: column; gap: 0.1rem; }
.feat-hero__stat .lbl {
  font-family: var(--font-poster); font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.14em;
  font-size: 0.74rem; color: var(--paper);
}
.feat-hero__stat .sub {
  font-family: var(--font-accent); font-style: italic;
  font-size: 0.78rem; color: var(--paper-soft);
}
@media (max-width: 900px) {
  .feat-hero__inner { grid-template-columns: 1fr; gap: 1.6rem; align-items: start; }
}

/* Feature editorial intro — same shape as cat-intro but forest seal */
.feat-intro {
  background: var(--paper);
  padding: 3.5rem var(--gutter);
  border-bottom: 2px solid var(--ink);
  position: relative;
}
.feat-intro::before {
  content: ''; position: absolute; bottom: -8px; left: 50%;
  transform: translateX(-50%);
  width: 90px; height: 3px;
  background: repeating-linear-gradient(90deg, var(--forest) 0 8px, transparent 8px 14px);
}
.feat-intro__inner {
  max-width: 760px; margin: 0 auto;
  display: grid; grid-template-columns: auto 1fr; gap: 2rem; align-items: start;
}
.feat-intro__seal {
  width: 70px; height: 70px;
  background: var(--forest); color: var(--paper);
  border: 2px solid var(--ink);
  border-radius: 50%;
  display: grid; place-items: center;
  font-family: var(--font-poster); font-weight: 900;
  font-size: 1.6rem;
  flex: none;
  box-shadow: 4px 4px 0 var(--ink);
}
.feat-intro__eye {
  font-family: var(--font-poster); font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.22em;
  font-size: 0.74rem; color: var(--forest);
  margin-bottom: 0.5rem;
}
.feat-intro__head {
  font-family: var(--font-poster); font-weight: 800;
  text-transform: uppercase; letter-spacing: -0.005em;
  font-size: clamp(1.4rem, 2.6vw, 2rem); line-height: 1;
  margin-bottom: 0.9rem;
}
.feat-intro__head em { font-family: var(--font-accent); font-style: italic; font-weight: 400; color: var(--teal); text-transform: none; }
.feat-intro__prose p {
  font-size: 1.04rem; line-height: 1.65;
  color: var(--ink); margin-bottom: 0.9rem;
}
.feat-intro__prose p:last-child { margin-bottom: 0; }
.feat-intro__prose a { color: var(--clay); border-bottom: 1.5px solid var(--clay); padding-bottom: 1px; }
@media (max-width: 700px) {
  .feat-intro__inner { grid-template-columns: 1fr; gap: 1.2rem; }
  .feat-intro__seal { width: 56px; height: 56px; }
}

/* Feature page results — single flat grid, no town grouping */
.results { padding: 3.5rem var(--gutter) 4rem; max-width: var(--max); margin: 0 auto; }
.results__head {
  display: flex; align-items: end; justify-content: space-between;
  gap: 1rem;
  border-bottom: 2px solid var(--ink);
  padding-bottom: 0.7rem;
  margin-bottom: 2rem;
  position: relative;
}
.results__head::after {
  content: ''; position: absolute; bottom: -8px; left: 0; right: 0; height: 3px;
  background: repeating-linear-gradient(90deg, var(--forest) 0 8px, transparent 8px 14px);
}
.results__title {
  font-family: var(--font-poster); font-weight: 800;
  text-transform: uppercase; letter-spacing: -0.005em;
  font-size: clamp(1.4rem, 2.6vw, 2rem); line-height: 0.95;
}
.results__title em { font-family: var(--font-accent); font-style: italic; font-weight: 400; color: var(--teal); text-transform: none; }
.results__meta {
  font-family: var(--font-poster); font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.14em;
  font-size: 0.74rem; color: var(--ink-soft);
}
.results__grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 360px));
  gap: 1.6rem;
}

/* Town badge on listing card (feature page; cards still use existing .listing-card pattern from theme) */
.listing-card__townbadge {
  position: absolute; top: 0.7rem; left: 0.7rem;
  background: var(--ink); color: var(--mustard);
  border: 2px solid var(--paper);
  padding: 0.25rem 0.6rem;
  font-family: var(--font-poster); font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.16em;
  font-size: 0.66rem;
  box-shadow: 2px 2px 0 var(--ink);
  z-index: 2;
}

/* Feature card (in "Also browse" on feature page) */
.feat-card {
  background: var(--paper-soft);
  color: var(--ink);
  border: 2px solid var(--paper);
  padding: 1rem 1.1rem 0.9rem;
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 0.7rem;
  align-items: center;
  transition: transform 0.2s var(--ease), box-shadow 0.2s var(--ease);
}
.feat-card:hover {
  transform: translate(-3px, -3px);
  box-shadow: 6px 6px 0 var(--forest);
}
.feat-card__seal {
  width: 36px; height: 36px;
  background: var(--forest); color: var(--mustard);
  border: 2px solid var(--ink);
  border-radius: 50%;
  display: grid; place-items: center;
  font-family: var(--font-poster); font-weight: 900;
  font-size: 0.95rem;
  flex: none;
}
.feat-card__copy { display: flex; flex-direction: column; gap: 0.15rem; min-width: 0; }
.feat-card__name {
  font-family: var(--font-poster); font-weight: 800;
  text-transform: uppercase; letter-spacing: -0.005em;
  font-size: 0.9rem; line-height: 1.05;
  color: var(--ink);
}
.feat-card__count {
  font-family: var(--font-poster); font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.14em;
  font-size: 0.66rem;
  color: var(--clay);
}

/* ════════════════════════════════════════════════════════════════════
   ADVENTURE — archive, taxonomy archive, single
   ════════════════════════════════════════════════════════════════════ */

/* ──── Archive header & filters ──── */

.adv-archive {
  max-width: var(--max);
  margin: 0 auto;
  padding: 0 var(--gutter) 4rem;
}

.adv-archive__header {
  padding: 2.5rem 0 2rem;
  border-bottom: 2px solid var(--ink);
  margin-bottom: 2.5rem;
}

.adv-archive__eyebrow {
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.18em;
  font-size: 0.75rem;
  color: var(--clay);
  font-weight: 700;
  margin-bottom: 0.5rem;
}

.adv-archive__title {
  font-family: var(--font-poster);
  font-weight: 900;
  text-transform: uppercase;
  font-size: clamp(2.8rem, 7vw, 5rem);
  line-height: 0.95;
  color: var(--teal-deep);
  letter-spacing: -0.01em;
  margin-bottom: 1rem;
}

.adv-archive__lede {
  font-size: 1.05rem;
  line-height: 1.55;
  color: var(--ink-soft);
  max-width: 56ch;
}

.adv-archive__breadcrumb {
  margin-top: 1rem;
  font-family: var(--font-poster);
  font-weight: 700;
  font-size: 0.85rem;
  text-transform: uppercase;
  letter-spacing: 0.08em;
}
.adv-archive__breadcrumb a { color: var(--clay); text-decoration: none; }
.adv-archive__breadcrumb a:hover { text-decoration: underline; }

.adv-archive__filters {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 2rem;
  margin-bottom: 3rem;
  padding: 1.5rem;
  background: var(--paper-soft);
  border: 2px solid var(--ink);
  box-shadow: 6px 6px 0 var(--mustard);
}
@media (max-width: 640px) {
  .adv-archive__filters { grid-template-columns: 1fr; box-shadow: 4px 4px 0 var(--mustard); }
}

.adv-archive__filter-label {
  font-family: var(--font-poster);
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  font-size: 0.8rem;
  color: var(--teal);
  margin-bottom: 0.75rem;
  padding-bottom: 0.4rem;
  border-bottom: 1px solid var(--ink);
}

.adv-archive__filter-list {
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem 0.8rem;
  padding: 0;
  margin: 0;
}
.adv-archive__filter-list li { padding: 0; margin: 0; list-style: none; }
.adv-archive__filter-list a {
  display: inline-flex;
  align-items: baseline;
  gap: 0.2rem;
  padding: 0.3rem 0.7rem;
  background: var(--paper);
  border: 1.5px solid var(--ink);
  border-radius: 999px;
  text-decoration: none;
  color: var(--ink);
  font-family: var(--font-body);
  font-weight: 500;
  font-size: 0.9rem;
}
.adv-archive__filter-list a:hover {
  background: var(--mustard);
}
.adv-archive__filter-list a span {
  color: var(--ink-soft);
  font-size: 0.78rem;
}

/* ──── Section blocks (Picks / By Type) ──── */

.adv-archive__section-title {
  font-family: var(--font-poster);
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  font-size: 1.6rem;
  color: var(--teal-deep);
  margin: 2.5rem 0 1.25rem;
  padding-bottom: 0.6rem;
  border-bottom: 2px solid var(--mustard);
}

.adv-archive__picks .adv-archive__section-title {
  color: var(--clay);
  border-bottom-color: var(--mustard);
}

/* ──── Grid + cards ──── */

.adv-archive__grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 1.5rem;
}

.adv-card {
  background: var(--paper);
  border: 2px solid var(--ink);
  position: relative;
  transition: transform 0.18s var(--ease), box-shadow 0.18s var(--ease);
  box-shadow: 4px 4px 0 var(--ink);
}
.adv-card:hover {
  transform: translate(-2px, -2px);
  box-shadow: 6px 6px 0 var(--ink);
}
.adv-card--pick {
  box-shadow: 4px 4px 0 var(--mustard);
}
.adv-card--pick:hover {
  box-shadow: 6px 6px 0 var(--mustard);
}

.adv-card__link {
  text-decoration: none;
  color: inherit;
  display: block;
  height: 100%;
}

.adv-card__photo {
  aspect-ratio: 16/10;
  background: var(--paper-deep);
  background-size: cover;
  background-position: center;
  position: relative;
  border-bottom: 1.5px solid var(--ink);
}
.adv-card__pick {
  position: absolute;
  top: 0.6rem;
  right: 0.6rem;
  background: var(--mustard);
  color: var(--ink);
  border: 1.5px solid var(--ink);
  width: 1.9rem;
  height: 1.9rem;
  display: grid;
  place-items: center;
  font-size: 1rem;
  font-weight: 700;
}

.adv-card__body {
  padding: 1rem 1.1rem 1.1rem;
}

.adv-card__type {
  font-family: var(--font-poster);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  font-size: 0.68rem;
  color: var(--clay);
  margin: 0 0 0.4rem;
}

.adv-card__title {
  font-family: var(--font-poster);
  font-weight: 800;
  text-transform: uppercase;
  font-size: 1.15rem;
  line-height: 1.1;
  color: var(--teal-deep);
  margin: 0 0 0.5rem;
  letter-spacing: -0.005em;
}

.adv-card__excerpt {
  font-size: 0.88rem;
  line-height: 1.4;
  color: var(--ink-soft);
  margin: 0 0 0.75rem;
}

.adv-card__meta {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
}

.adv-card__chip {
  display: inline-block;
  padding: 0.15rem 0.55rem;
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-size: 0.65rem;
  font-weight: 700;
  background: var(--paper-deep);
  border: 1px solid var(--ink);
  color: var(--ink);
}
.adv-card__chip--warn {
  background: var(--clay);
  color: var(--paper);
  border-color: var(--clay-deep);
}

.adv-archive__empty {
  text-align: center;
  padding: 3rem 0;
  color: var(--ink-soft);
  font-style: italic;
}

/* ════════════════════════════════════════════════════════════════════
   ADVENTURE — single page
   ════════════════════════════════════════════════════════════════════ */

.adv-single {
  max-width: var(--max);
  margin: 0 auto;
  padding: 0 var(--gutter) 4rem;
}

/* ──── Hero ──── */

.adv-hero {
  position: relative;
  min-height: 380px;
  background-color: var(--paper-deep);
  background-size: cover;
  background-position: center;
  margin: 1.5rem 0 2.5rem;
  border: 2px solid var(--ink);
  box-shadow: 8px 8px 0 var(--teal);
  display: flex;
  align-items: flex-end;
}
@media (max-width: 640px) {
  .adv-hero { box-shadow: 5px 5px 0 var(--teal); min-height: 280px; }
}

.adv-hero__overlay {
  width: 100%;
  background: linear-gradient(180deg, transparent 0%, rgba(26, 23, 20, 0.85) 100%);
  padding: 2.5rem 1.75rem 1.75rem;
  color: var(--paper);
}

.adv-hero__pick {
  display: inline-block;
  padding: 0.25rem 0.75rem;
  background: var(--mustard);
  color: var(--ink);
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.1em;
  font-size: 0.75rem;
  font-weight: 800;
  border: 1.5px solid var(--ink);
  margin-bottom: 0.75rem;
}

.adv-hero__types {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  margin-bottom: 0.6rem;
}
.adv-hero__type-pill {
  display: inline-block;
  padding: 0.2rem 0.6rem;
  background: var(--clay);
  color: var(--paper);
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.1em;
  font-size: 0.72rem;
  font-weight: 700;
  border: 1.5px solid var(--ink);
  text-decoration: none;
}
.adv-hero__type-pill:hover { background: var(--clay-deep); }

.adv-hero__title {
  font-family: var(--font-poster);
  font-weight: 900;
  text-transform: uppercase;
  font-size: clamp(2rem, 5.5vw, 3.6rem);
  line-height: 0.95;
  color: var(--paper);
  letter-spacing: -0.01em;
  margin: 0 0 0.75rem;
}

.adv-hero__excerpt {
  font-size: 1.05rem;
  line-height: 1.45;
  color: var(--paper);
  opacity: 0.95;
  max-width: 62ch;
  margin: 0 0 0.9rem;
  font-family: var(--font-accent);
  font-style: italic;
}

.adv-hero__areas {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
}
.adv-hero__area-pill {
  display: inline-block;
  padding: 0.18rem 0.55rem;
  background: transparent;
  color: var(--mustard);
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.1em;
  font-size: 0.7rem;
  font-weight: 700;
  border: 1.5px solid var(--mustard);
  text-decoration: none;
}
.adv-hero__area-pill:hover { background: var(--mustard); color: var(--ink); }

/* ──── CSKT review flag ──── */

.adv-csk-flag {
  padding: 1.25rem 1.5rem;
  background: var(--teal-deep);
  color: var(--paper);
  border: 2px solid var(--ink);
  border-left: 8px solid var(--mustard);
  margin-bottom: 2rem;
  font-size: 0.95rem;
  line-height: 1.5;
}
.adv-csk-flag strong { font-family: var(--font-poster); text-transform: uppercase; letter-spacing: 0.05em; color: var(--mustard); }

/* ──── Quick facts panel ──── */

.adv-quick {
  background: var(--paper-soft);
  border: 2px solid var(--ink);
  padding: 1.5rem 1.75rem;
  margin-bottom: 2rem;
  box-shadow: 5px 5px 0 var(--clay);
}

.adv-quick__title {
  font-family: var(--font-poster);
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  font-size: 1rem;
  color: var(--clay);
  margin-bottom: 1rem;
  padding-bottom: 0.4rem;
  border-bottom: 1.5px solid var(--ink);
}

.adv-quick__grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  gap: 0.9rem 1.25rem;
  margin: 0;
}

.adv-quick__item dt {
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-size: 0.7rem;
  font-weight: 700;
  color: var(--ink-soft);
  margin-bottom: 0.15rem;
}
.adv-quick__item dd {
  font-family: var(--font-body);
  font-size: 0.95rem;
  font-weight: 600;
  color: var(--ink);
  margin: 0;
  line-height: 1.25;
}

.adv-quick__permit-notes {
  margin-top: 1rem;
  padding-top: 0.9rem;
  border-top: 1px dashed var(--ink-soft);
  font-size: 0.9rem;
  line-height: 1.5;
  color: var(--ink-soft);
}
.adv-quick__permit-notes strong { color: var(--clay); font-family: var(--font-poster); text-transform: uppercase; letter-spacing: 0.06em; font-size: 0.8rem; }

/* ──── Body content ──── */

.adv-body {
  max-width: 64ch;
  font-size: 1.05rem;
  line-height: 1.7;
  color: var(--ink);
  margin-bottom: 2rem;
}
.adv-body p { margin-bottom: 1.1rem; }
.adv-body h2 {
  font-family: var(--font-poster);
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.02em;
  font-size: 1.4rem;
  color: var(--teal-deep);
  margin: 2rem 0 0.75rem;
}
.adv-body h3 {
  font-family: var(--font-poster);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  font-size: 1.05rem;
  color: var(--clay);
  margin: 1.5rem 0 0.5rem;
}
.adv-body a { color: var(--teal); }
.adv-body a:hover { color: var(--clay); }

/* ──── Caveats callout ──── */

.adv-caveats {
  padding: 1.25rem 1.5rem;
  background: var(--mustard);
  border: 2px solid var(--ink);
  margin: 2rem 0;
  box-shadow: 4px 4px 0 var(--clay);
}
.adv-caveats h3 {
  font-family: var(--font-poster);
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  font-size: 0.9rem;
  color: var(--clay-deep);
  margin: 0 0 0.5rem;
}
.adv-caveats p {
  font-size: 0.95rem;
  line-height: 1.55;
  color: var(--ink);
  margin: 0;
}

/* ──── Features list ──── */

.adv-features {
  margin: 2rem 0;
}
.adv-features__title {
  font-family: var(--font-poster);
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  font-size: 0.95rem;
  color: var(--teal);
  margin-bottom: 0.75rem;
}
.adv-features__list {
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  padding: 0;
  margin: 0;
}
.adv-features__list li { padding: 0; margin: 0; }
.adv-features__list a {
  display: inline-block;
  padding: 0.3rem 0.75rem;
  background: var(--paper-deep);
  border: 1.5px solid var(--ink);
  text-decoration: none;
  color: var(--ink);
  font-family: var(--font-body);
  font-weight: 500;
  font-size: 0.85rem;
}
.adv-features__list a:hover { background: var(--mustard); }

/* ──── Action buttons ──── */

.adv-actions {
  margin: 2rem 0;
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
  align-items: center;
}
.adv-actions__note {
  flex-basis: 100%;
  font-size: 0.85rem;
  color: var(--ink-soft);
  font-style: italic;
  margin: 0;
}
.adv-action-btn {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  padding: 0.65rem 1.2rem;
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-size: 0.85rem;
  font-weight: 800;
  text-decoration: none;
  border: 2px solid var(--ink);
  transition: transform 0.15s var(--ease);
}
.adv-action-btn:hover { transform: translate(-1px, -1px); }
.adv-action-btn--official {
  background: var(--teal);
  color: var(--paper);
  box-shadow: 3px 3px 0 var(--ink);
}
.adv-action-btn--map {
  background: var(--mustard);
  color: var(--ink);
  box-shadow: 3px 3px 0 var(--ink);
}
.adv-action-btn--permit {
  background: var(--clay);
  color: var(--paper);
  box-shadow: 3px 3px 0 var(--ink);
}

/* ════════════════════════════════════════════════════════════════════
   PAGE — rich default template (page.php)
   Used by /about/, /advertise/, /contact/, /permits/, /plan/,
   /land-acknowledgment/, /list-your-business/, /submit-event/, etc.
   ════════════════════════════════════════════════════════════════════ */

.pg-article {
  background: var(--paper);
}

/* ──── Hero band ──── */

.pg-hero {
  background: var(--paper-soft);
  border-bottom: 3px solid var(--ink);
  padding: 3.5rem 0 3rem;
  position: relative;
}
.pg-hero::after {
  content: '';
  position: absolute;
  left: 0; right: 0;
  bottom: -8px;
  height: 4px;
  background: repeating-linear-gradient(90deg, var(--ink) 0 6px, transparent 6px 12px);
}
.pg-hero__inner {
  max-width: var(--max);
  margin: 0 auto;
  padding: 0 var(--gutter);
}

.pg-hero__back {
  display: inline-block;
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.14em;
  font-size: 0.72rem;
  font-weight: 700;
  color: var(--clay);
  text-decoration: none;
  margin-bottom: 1.5rem;
}
.pg-hero__back:hover { color: var(--clay-deep); text-decoration: underline; }

.pg-hero__eyebrow {
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.24em;
  font-size: 0.78rem;
  font-weight: 700;
  color: var(--clay);
  margin: 0 0 0.5rem;
}

.pg-hero__title {
  font-family: var(--font-poster);
  font-weight: 900;
  text-transform: uppercase;
  font-size: clamp(2.4rem, 6.5vw, 5rem);
  line-height: 0.95;
  letter-spacing: -0.02em;
  color: var(--teal-deep);
  margin: 0 0 1rem;
  max-width: 18ch;
}
.pg-hero__title em {
  font-family: var(--font-accent);
  font-style: italic;
  font-weight: 400;
  color: var(--clay);
  text-transform: none;
  letter-spacing: -0.005em;
}

.pg-hero__lede {
  font-family: var(--font-accent);
  font-style: italic;
  font-size: clamp(1.1rem, 1.6vw, 1.35rem);
  line-height: 1.45;
  color: var(--ink-soft);
  max-width: 56ch;
  margin: 0;
}

/* ──── Table of contents ──── */

.pg-toc {
  max-width: 760px;
  margin: 2.5rem auto 0;
  padding: 1.25rem 1.5rem;
  background: var(--paper-deep);
  border: 1.5px solid var(--ink);
  border-left: 6px solid var(--mustard);
}
.pg-toc__label {
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.16em;
  font-size: 0.72rem;
  font-weight: 700;
  color: var(--clay);
  margin: 0 0 0.65rem;
}
.pg-toc__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 0.4rem;
}
.pg-toc__list li {
  display: flex;
  align-items: baseline;
  gap: 0.75rem;
  font-size: 0.92rem;
  line-height: 1.4;
}
.pg-toc__num {
  font-family: var(--font-poster);
  font-weight: 700;
  color: var(--mustard-deep);
  font-size: 0.72rem;
  letter-spacing: 0.06em;
  flex: none;
  min-width: 1.5em;
}
.pg-toc__list a {
  color: var(--ink);
  text-decoration: none;
  border-bottom: 1px dashed transparent;
  transition: border-color 0.15s var(--ease), color 0.15s var(--ease);
}
.pg-toc__list a:hover {
  color: var(--clay);
  border-bottom-color: var(--clay);
}

/* ──── Content body ──── */

.pg-content {
  max-width: 760px;
  margin: 0 auto;
  padding: 2.5rem var(--gutter) 4rem;
  font-size: 1.06rem;
  line-height: 1.75;
  color: var(--ink);
}
.pg-content p { margin: 0 0 1.4rem; }
.pg-content > :first-child { margin-top: 0; }
.pg-content > :last-child { margin-bottom: 0; }

.pg-content h2 {
  font-family: var(--font-poster);
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: -0.005em;
  font-size: clamp(1.4rem, 2.6vw, 1.8rem);
  color: var(--teal-deep);
  margin: 2.75rem 0 1rem;
  padding-top: 1.75rem;
  border-top: 2px solid var(--ink);
  scroll-margin-top: 5rem;
}
.pg-content h2:first-child { margin-top: 0; padding-top: 0; border-top: none; }
.pg-content h2 em {
  font-family: var(--font-accent);
  font-style: italic;
  font-weight: 400;
  color: var(--clay);
  text-transform: none;
}

.pg-content h3 {
  font-family: var(--font-poster);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  font-size: 1.1rem;
  color: var(--clay);
  margin: 1.75rem 0 0.6rem;
}

.pg-content h4 {
  font-family: var(--font-accent);
  font-style: italic;
  font-size: 1.15rem;
  font-weight: 400;
  color: var(--ink);
  margin: 1.5rem 0 0.4rem;
}

.pg-content a {
  color: var(--clay);
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 3px;
  transition: color 0.15s var(--ease);
}
.pg-content a:hover { color: var(--clay-deep); }

.pg-content ul, .pg-content ol {
  margin: 0 0 1.4rem 1.5rem;
  padding: 0;
}
.pg-content li {
  margin-bottom: 0.4rem;
  line-height: 1.6;
}
.pg-content li::marker { color: var(--mustard-deep); }

.pg-content strong { color: var(--ink); font-weight: 700; }

/* Pull-quote / callout — use <blockquote> in content */
.pg-content blockquote {
  margin: 2rem -1rem;
  padding: 1.25rem 1.5rem 1.25rem 2rem;
  background: var(--mustard);
  border: 2px solid var(--ink);
  box-shadow: 4px 4px 0 var(--clay);
  font-family: var(--font-accent);
  font-style: italic;
  font-size: 1.15rem;
  line-height: 1.5;
  color: var(--ink);
}
.pg-content blockquote p:last-child { margin: 0; }
.pg-content blockquote cite {
  display: block;
  margin-top: 0.6rem;
  font-family: var(--font-poster);
  font-style: normal;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  font-size: 0.75rem;
  color: var(--clay);
  font-weight: 700;
}

/* Tables — used on reference pages */
.pg-content table {
  width: 100%;
  margin: 1.5rem 0 2rem;
  border-collapse: collapse;
  font-size: 0.95rem;
}
.pg-content th, .pg-content td {
  text-align: left;
  padding: 0.6rem 0.85rem;
  border-bottom: 1px solid var(--paper-deep);
  vertical-align: top;
}
.pg-content thead th {
  background: var(--paper-soft);
  border-bottom: 2px solid var(--ink);
  font-family: var(--font-poster);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-size: 0.78rem;
  color: var(--ink);
}
.pg-content tbody tr:hover { background: var(--paper-soft); }

/* Figures */
.pg-content figure {
  margin: 2rem -2rem;
  padding: 0;
}
.pg-content figure img {
  width: 100%;
  height: auto;
  border: 2px solid var(--ink);
  display: block;
}
.pg-content figcaption {
  margin-top: 0.5rem;
  font-family: var(--font-accent);
  font-style: italic;
  font-size: 0.88rem;
  color: var(--ink-soft);
  text-align: center;
}

/* Horizontal rule — used as section divider */
.pg-content hr {
  margin: 2.5rem 0;
  border: none;
  height: 4px;
  background: repeating-linear-gradient(90deg, var(--ink) 0 6px, transparent 6px 12px);
}

@media (max-width: 760px) {
  .pg-content blockquote { margin: 1.5rem 0; }
  .pg-content figure { margin: 1.5rem 0; }
}

/* ──── Footer CTA strip ──── */

.pg-cta {
  max-width: var(--max);
  margin: 0 auto;
  padding: 3rem var(--gutter) 5rem;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1.5rem;
  border-top: 3px solid var(--ink);
  position: relative;
}
.pg-cta::before {
  content: '';
  position: absolute;
  top: -8px; left: 0; right: 0;
  height: 4px;
  background: repeating-linear-gradient(90deg, var(--ink) 0 6px, transparent 6px 12px);
}
@media (max-width: 700px) {
  .pg-cta { grid-template-columns: 1fr; }
}

.pg-cta__card {
  display: block;
  padding: 1.5rem 1.5rem 1.25rem;
  background: var(--paper);
  border: 2px solid var(--ink);
  box-shadow: 6px 6px 0 var(--teal);
  text-decoration: none;
  color: inherit;
  position: relative;
  transition: transform 0.18s var(--ease), box-shadow 0.18s var(--ease);
}
.pg-cta__card:hover {
  transform: translate(-3px, -3px);
  box-shadow: 9px 9px 0 var(--teal);
}
.pg-cta__card--alt { box-shadow: 6px 6px 0 var(--mustard); }
.pg-cta__card--alt:hover { box-shadow: 9px 9px 0 var(--mustard); }

.pg-cta__eyebrow {
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.14em;
  font-size: 0.7rem;
  font-weight: 700;
  color: var(--clay);
  margin: 0 0 0.5rem;
}
.pg-cta__title {
  font-family: var(--font-poster);
  font-weight: 800;
  text-transform: uppercase;
  font-size: 1.5rem;
  color: var(--teal-deep);
  margin: 0 0 0.5rem;
  letter-spacing: -0.005em;
}
.pg-cta__copy {
  font-size: 0.95rem;
  line-height: 1.45;
  color: var(--ink-soft);
  margin: 0 0 1rem;
}
.pg-cta__arrow {
  position: absolute;
  right: 1.25rem;
  bottom: 1rem;
  font-family: var(--font-poster);
  font-size: 1.4rem;
  font-weight: 800;
  color: var(--clay);
}

/* ════════════════════════════════════════════════════════════════════
   PAGE — /permits/ (reference doc layout)
   ════════════════════════════════════════════════════════════════════ */

.pg-permits { background: var(--paper); }

.pg-permits__hero {
  background: var(--teal-deep);
  color: var(--paper);
  padding: 3.5rem 0 3.5rem;
  position: relative;
  overflow: hidden;
}
.pg-permits__hero::before {
  content: '';
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at 20% 30%, rgba(217, 166, 77, 0.18) 0%, transparent 45%),
    radial-gradient(circle at 80% 70%, rgba(184, 70, 43, 0.2) 0%, transparent 45%);
  pointer-events: none;
}
.pg-permits__hero::after {
  content: '';
  position: absolute;
  left: 0; right: 0;
  bottom: -8px;
  height: 4px;
  background: repeating-linear-gradient(90deg, var(--ink) 0 6px, transparent 6px 12px);
}
.pg-permits__hero-inner {
  position: relative;
  max-width: var(--max);
  margin: 0 auto;
  padding: 0 var(--gutter);
}
.pg-permits__back {
  display: inline-block;
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.14em;
  font-size: 0.72rem;
  font-weight: 700;
  color: var(--mustard);
  text-decoration: none;
  margin-bottom: 1.5rem;
}
.pg-permits__back:hover { color: var(--paper); }
.pg-permits__eyebrow {
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.26em;
  font-size: 0.78rem;
  font-weight: 700;
  color: var(--mustard);
  margin: 0 0 0.5rem;
}
.pg-permits__title {
  font-family: var(--font-poster);
  font-weight: 900;
  text-transform: uppercase;
  font-size: clamp(2.6rem, 7vw, 5.2rem);
  line-height: 0.92;
  letter-spacing: -0.02em;
  color: var(--paper);
  margin: 0 0 1rem;
  text-shadow: 3px 3px 0 var(--clay);
}
.pg-permits__title em {
  font-family: var(--font-accent);
  font-style: italic;
  font-weight: 400;
  color: var(--mustard);
  text-transform: none;
  text-shadow: none;
}
.pg-permits__lede {
  font-family: var(--font-accent);
  font-style: italic;
  font-size: clamp(1.1rem, 1.7vw, 1.4rem);
  color: var(--paper);
  opacity: 0.92;
  max-width: 56ch;
  margin: 0 0 1rem;
}
.pg-permits__hero-meta {
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.16em;
  font-size: 0.75rem;
  color: var(--mustard);
  display: flex;
  gap: 0.6rem;
  flex-wrap: wrap;
}

.pg-permits__intro {
  max-width: 760px;
  margin: 3rem auto 0;
  padding: 0 var(--gutter);
  font-family: var(--font-accent);
  font-style: italic;
  font-size: 1.2rem;
  line-height: 1.55;
  color: var(--ink-soft);
}
.pg-permits__intro p { margin: 0 0 1rem; }
.pg-permits__intro p:last-child { margin-bottom: 0; }

.pg-permits__layout {
  max-width: var(--max);
  margin: 3rem auto 0;
  padding: 0 var(--gutter);
  display: grid;
  grid-template-columns: 260px 1fr;
  gap: 3rem;
  align-items: start;
}
@media (max-width: 900px) {
  .pg-permits__layout { grid-template-columns: 1fr; gap: 2rem; }
}

.pg-permits__toc {
  position: sticky;
  top: 5rem;
  align-self: start;
}
@media (max-width: 900px) {
  .pg-permits__toc { position: static; }
}
.pg-permits__toc-inner {
  background: var(--paper-soft);
  border: 2px solid var(--ink);
  border-left: 6px solid var(--mustard);
  padding: 1.25rem 1.4rem 1.4rem;
}
.pg-permits__toc-label {
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.16em;
  font-size: 0.72rem;
  font-weight: 700;
  color: var(--clay);
  margin: 0 0 0.85rem;
  padding-bottom: 0.5rem;
  border-bottom: 1.5px solid var(--ink);
}
.pg-permits__toc-list {
  list-style: none;
  padding: 0;
  margin: 0 0 1.25rem;
  display: grid;
  gap: 0.5rem;
}
.pg-permits__toc-list li {
  display: flex;
  align-items: baseline;
  gap: 0.6rem;
  font-size: 0.9rem;
  line-height: 1.35;
}
.pg-permits__toc-num {
  font-family: var(--font-poster);
  font-weight: 700;
  font-size: 0.68rem;
  letter-spacing: 0.06em;
  color: var(--mustard-deep);
  flex: none;
  min-width: 1.5em;
}
.pg-permits__toc-list a {
  color: var(--ink);
  text-decoration: none;
  border-bottom: 1px dashed transparent;
}
.pg-permits__toc-list a:hover { color: var(--clay); border-bottom-color: var(--clay); }
.pg-permits__toc-cta {
  padding-top: 0.9rem;
  border-top: 1px dashed var(--ink-soft);
  font-size: 0.82rem;
  color: var(--ink-soft);
  line-height: 1.4;
}
.pg-permits__toc-cta p { margin: 0 0 0.25rem; }
.pg-permits__toc-cta a {
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-size: 0.72rem;
  font-weight: 700;
  color: var(--clay);
  text-decoration: none;
}

.pg-permits__main {
  display: grid;
  gap: 1.5rem;
}

.pg-permits__section {
  background: var(--paper);
  border: 2px solid var(--ink);
  padding: 1.5rem 1.75rem 1.75rem;
  box-shadow: 5px 5px 0 var(--ink);
  scroll-margin-top: 5rem;
}
.pg-permits__section-head {
  display: flex;
  align-items: baseline;
  gap: 0.85rem;
  margin-bottom: 1rem;
  padding-bottom: 0.6rem;
  border-bottom: 2px solid var(--ink);
}
.pg-permits__section-num {
  font-family: var(--font-poster);
  font-weight: 900;
  font-size: 1.6rem;
  line-height: 1;
  color: var(--mustard-deep);
  letter-spacing: -0.01em;
  flex: none;
}
.pg-permits__section-title {
  font-family: var(--font-poster);
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: -0.005em;
  font-size: clamp(1.2rem, 2.4vw, 1.6rem);
  color: var(--teal-deep);
  margin: 0;
  line-height: 1.05;
}
.pg-permits__section-body {
  font-size: 1rem;
  line-height: 1.65;
  color: var(--ink);
}
.pg-permits__section-body p { margin: 0 0 1rem; }
.pg-permits__section-body p:last-child { margin-bottom: 0; }
.pg-permits__section-body ul {
  margin: 0 0 1rem;
  padding-left: 1.4rem;
}
.pg-permits__section-body li { margin-bottom: 0.5rem; }
.pg-permits__section-body li::marker { color: var(--mustard-deep); }
.pg-permits__section-body strong { color: var(--clay); font-weight: 700; }
.pg-permits__section-body a {
  color: var(--teal);
  text-decoration: underline;
  text-underline-offset: 3px;
}
.pg-permits__section-body a:hover { color: var(--clay); }

.pg-permits__disclaimer {
  max-width: var(--max);
  margin: 4rem auto 5rem;
  padding: 1.5rem 1.75rem;
  background: var(--clay);
  color: var(--paper);
  border: 2px solid var(--ink);
}
.pg-permits__disclaimer h3 {
  font-family: var(--font-poster);
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  font-size: 0.95rem;
  margin: 0 0 0.4rem;
  color: var(--mustard);
}
.pg-permits__disclaimer p {
  font-size: 0.95rem;
  line-height: 1.55;
  margin: 0;
}

/* ════════════════════════════════════════════════════════════════════
   PAGE — /advertise/ (sales page)
   ════════════════════════════════════════════════════════════════════ */

.pg-advertise { background: var(--paper); }

.pg-advertise__hero {
  background: var(--mustard);
  color: var(--ink);
  padding: 4rem 0 4.5rem;
  border-bottom: 3px solid var(--ink);
  position: relative;
}
.pg-advertise__hero::after {
  content: '';
  position: absolute;
  left: 0; right: 0;
  bottom: -8px;
  height: 4px;
  background: repeating-linear-gradient(90deg, var(--ink) 0 6px, transparent 6px 12px);
}
.pg-advertise__hero-inner {
  max-width: var(--max);
  margin: 0 auto;
  padding: 0 var(--gutter);
}
.pg-advertise__back {
  display: inline-block;
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.14em;
  font-size: 0.72rem;
  font-weight: 700;
  color: var(--clay-deep);
  text-decoration: none;
  margin-bottom: 1.5rem;
}
.pg-advertise__eyebrow {
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.26em;
  font-size: 0.78rem;
  font-weight: 700;
  color: var(--clay-deep);
  margin: 0 0 0.5rem;
}
.pg-advertise__title {
  font-family: var(--font-poster);
  font-weight: 900;
  text-transform: uppercase;
  font-size: clamp(3rem, 8vw, 6rem);
  line-height: 0.9;
  letter-spacing: -0.025em;
  color: var(--ink);
  margin: 0 0 1rem;
}
.pg-advertise__title em {
  font-family: var(--font-accent);
  font-style: italic;
  font-weight: 400;
  color: var(--teal-deep);
  text-transform: none;
}
.pg-advertise__lede {
  font-family: var(--font-accent);
  font-style: italic;
  font-size: clamp(1.15rem, 1.8vw, 1.45rem);
  color: var(--ink);
  max-width: 56ch;
  margin: 0 0 1.75rem;
  line-height: 1.45;
}
.pg-advertise__hero-ctas {
  display: flex;
  gap: 0.75rem;
  flex-wrap: wrap;
}

.pg-advertise__intro {
  max-width: 700px;
  margin: 3rem auto 0;
  padding: 0 var(--gutter);
  font-size: 1.1rem;
  line-height: 1.7;
  color: var(--ink);
  text-align: center;
}
.pg-advertise__intro p { margin: 0 0 1rem; }

.pg-advertise__section-head {
  max-width: var(--max);
  margin: 4rem auto 1.5rem;
  padding: 0 var(--gutter);
  text-align: center;
}
.pg-advertise__section-eyebrow {
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.2em;
  font-size: 0.75rem;
  font-weight: 700;
  color: var(--clay);
  margin: 0 0 0.5rem;
}
.pg-advertise__section-title {
  font-family: var(--font-poster);
  font-weight: 800;
  text-transform: uppercase;
  font-size: clamp(2rem, 4vw, 3rem);
  color: var(--teal-deep);
  margin: 0;
  letter-spacing: -0.015em;
}

.pg-advertise__tier-grid {
  max-width: var(--max);
  margin: 0 auto;
  padding: 0 var(--gutter) 1rem;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem;
}
@media (max-width: 900px) {
  .pg-advertise__tier-grid { grid-template-columns: 1fr; }
}

.pg-advertise__tier {
  background: var(--paper);
  border: 2px solid var(--ink);
  padding: 1.75rem 1.5rem 1.5rem;
  box-shadow: 6px 6px 0 var(--teal);
  display: flex;
  flex-direction: column;
  transition: transform 0.18s var(--ease), box-shadow 0.18s var(--ease);
}
.pg-advertise__tier:hover {
  transform: translate(-3px, -3px);
  box-shadow: 9px 9px 0 var(--teal);
}
.pg-advertise__tier--town    { box-shadow: 6px 6px 0 var(--clay); }
.pg-advertise__tier--town:hover { box-shadow: 9px 9px 0 var(--clay); }
.pg-advertise__tier--event   { box-shadow: 6px 6px 0 var(--mustard); }
.pg-advertise__tier--event:hover { box-shadow: 9px 9px 0 var(--mustard); }

.pg-advertise__tier-eyebrow {
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.14em;
  font-size: 0.68rem;
  font-weight: 700;
  color: var(--mustard-deep);
  margin: 0 0 0.4rem;
}
.pg-advertise__tier-title {
  font-family: var(--font-poster);
  font-weight: 800;
  text-transform: uppercase;
  font-size: 1.5rem;
  color: var(--teal-deep);
  margin: 0 0 1rem;
  padding-bottom: 0.6rem;
  border-bottom: 2px solid var(--ink);
  letter-spacing: -0.005em;
}
.pg-advertise__tier-body {
  font-size: 0.95rem;
  line-height: 1.6;
  color: var(--ink);
  flex: 1;
}
.pg-advertise__tier-body p { margin: 0 0 0.75rem; }
.pg-advertise__tier-body ul {
  margin: 0.6rem 0 0;
  padding-left: 1.25rem;
}
.pg-advertise__tier-body li { margin-bottom: 0.4rem; font-size: 0.9rem; }
.pg-advertise__tier-body li::marker { color: var(--clay); }

.pg-advertise__supporting {
  max-width: 760px;
  margin: 4rem auto 0;
  padding: 0 var(--gutter);
}
.pg-advertise__block {
  margin-bottom: 3rem;
  padding-top: 2rem;
  border-top: 2px solid var(--ink);
}
.pg-advertise__block:first-child { border-top: none; padding-top: 0; }
.pg-advertise__block-title {
  font-family: var(--font-poster);
  font-weight: 800;
  text-transform: uppercase;
  font-size: 1.4rem;
  color: var(--clay);
  margin: 0 0 1rem;
  letter-spacing: -0.005em;
}
.pg-advertise__block-body {
  font-size: 1.02rem;
  line-height: 1.7;
  color: var(--ink);
}
.pg-advertise__block-body p { margin: 0 0 1rem; }
.pg-advertise__block-body ul {
  margin: 0 0 1rem;
  padding-left: 1.4rem;
}
.pg-advertise__block-body li { margin-bottom: 0.4rem; }

.pg-advertise__cta-final {
  max-width: var(--max);
  margin: 4rem auto 5rem;
  padding: 3rem var(--gutter) 3rem;
  text-align: center;
  background: var(--teal-deep);
  color: var(--paper);
  border: 2px solid var(--ink);
}
.pg-advertise__cta-eyebrow {
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.2em;
  font-size: 0.75rem;
  font-weight: 700;
  color: var(--mustard);
  margin: 0 0 0.5rem;
}
.pg-advertise__cta-title {
  font-family: var(--font-poster);
  font-weight: 900;
  text-transform: uppercase;
  font-size: clamp(2.4rem, 5vw, 3.6rem);
  color: var(--paper);
  margin: 0 0 1rem;
  letter-spacing: -0.02em;
}
.pg-advertise__cta-copy {
  font-family: var(--font-body);
  font-size: 1.05rem;
  line-height: 1.6;
  color: var(--paper);
  opacity: 0.92;
  max-width: 56ch;
  margin: 0 auto 1.5rem;
}

/* ════════════════════════════════════════════════════════════════════
   PAGE — /about/ (editorial long-form)
   ════════════════════════════════════════════════════════════════════ */

.pg-about { background: var(--paper); }

.pg-about__hero {
  background: var(--paper-soft);
  border-bottom: 3px solid var(--ink);
  padding: 3.5rem 0 3rem;
  position: relative;
}
.pg-about__hero::after {
  content: '';
  position: absolute;
  left: 0; right: 0;
  bottom: -8px;
  height: 4px;
  background: repeating-linear-gradient(90deg, var(--ink) 0 6px, transparent 6px 12px);
}
.pg-about__hero-inner {
  max-width: var(--max);
  margin: 0 auto;
  padding: 0 var(--gutter);
}
.pg-about__back {
  display: inline-block;
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.14em;
  font-size: 0.72rem;
  font-weight: 700;
  color: var(--clay);
  text-decoration: none;
  margin-bottom: 1.5rem;
}
.pg-about__eyebrow {
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.26em;
  font-size: 0.78rem;
  font-weight: 700;
  color: var(--clay);
  margin: 0 0 0.5rem;
}
.pg-about__title {
  font-family: var(--font-poster);
  font-weight: 900;
  text-transform: uppercase;
  font-size: clamp(2.8rem, 7vw, 5.4rem);
  line-height: 0.9;
  letter-spacing: -0.025em;
  color: var(--teal-deep);
  margin: 0 0 1rem;
}
.pg-about__title em {
  font-family: var(--font-accent);
  font-style: italic;
  font-weight: 400;
  color: var(--clay);
  text-transform: none;
}
.pg-about__lede {
  font-family: var(--font-accent);
  font-style: italic;
  font-size: clamp(1.15rem, 1.8vw, 1.45rem);
  color: var(--ink-soft);
  max-width: 56ch;
  margin: 0;
  line-height: 1.45;
}

.pg-about__intro {
  max-width: 1100px;
  margin: 3rem auto 0;
  padding: 0 var(--gutter);
  font-size: 1.15rem;
  line-height: 1.75;
  color: var(--ink);
}
.pg-about__intro p { margin: 0 0 1.4rem; max-width: 65ch; }
.pg-about__intro p:first-child::first-letter {
  font-family: var(--font-poster);
  font-weight: 900;
  font-size: 4.5rem;
  line-height: 0.85;
  float: left;
  color: var(--clay);
  padding: 0.3rem 0.55rem 0 0;
  margin-top: 0.1rem;
}
.pg-about__intro strong { color: var(--clay); font-weight: 700; }
.pg-about__intro a { color: var(--teal); }

.pg-about__sections {
  max-width: var(--max);
  margin: 4rem auto 0;
  padding: 0 var(--gutter);
}

.pg-about__section {
  display: grid;
  grid-template-columns: 200px 1fr;
  grid-template-areas:
    "rule title"
    "rule body";
  gap: 0.75rem 3rem;
  margin-bottom: 4rem;
  padding-bottom: 4rem;
  border-bottom: 1px dashed var(--ink-soft);
}
.pg-about__section:last-child { border-bottom: none; padding-bottom: 0; }
.pg-about__section-rule  { grid-area: rule; }
.pg-about__section-title { grid-area: title; }
.pg-about__section-body  { grid-area: body; }
@media (max-width: 800px) {
  .pg-about__section {
    grid-template-columns: 1fr;
    grid-template-areas: "rule" "title" "body";
    gap: 1rem;
  }
}

.pg-about__section--cskt {
  background: var(--teal-deep);
  color: var(--paper);
  margin-left: calc(-1 * var(--gutter));
  margin-right: calc(-1 * var(--gutter));
  padding: 3rem var(--gutter) 3rem;
  border: 2px solid var(--ink);
  border-radius: 0;
}
.pg-about__section--cskt .pg-about__section-title { color: var(--mustard); }
.pg-about__section--cskt .pg-about__section-body { color: var(--paper); }
.pg-about__section--cskt .pg-about__section-body a { color: var(--mustard); }
.pg-about__section--cskt .pg-about__section-num { color: var(--mustard); }
.pg-about__section--cskt .pg-about__section-line { background: var(--mustard); }

.pg-about__section-rule {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  align-items: flex-start;
}
@media (max-width: 800px) {
  .pg-about__section-rule { flex-direction: row; align-items: center; }
}
.pg-about__section-num {
  font-family: var(--font-poster);
  font-weight: 900;
  font-size: 2.2rem;
  line-height: 0.9;
  color: var(--clay);
  letter-spacing: -0.02em;
}
.pg-about__section-line {
  width: 80px;
  height: 3px;
  background: var(--clay);
}
.pg-about__section-title {
  font-family: var(--font-poster);
  font-weight: 800;
  text-transform: uppercase;
  font-size: clamp(1.5rem, 2.8vw, 2rem);
  color: var(--teal-deep);
  margin: 0 0 1rem;
  letter-spacing: -0.01em;
}
.pg-about__section-title em {
  font-family: var(--font-accent);
  font-style: italic;
  font-weight: 400;
  color: var(--clay);
  text-transform: none;
}
.pg-about__section-body {
  font-size: 1.05rem;
  line-height: 1.75;
  color: var(--ink);
}
.pg-about__section-body p { margin: 0 0 1.1rem; }
.pg-about__section-body p:last-child { margin-bottom: 0; }
.pg-about__section-body strong { color: var(--clay); font-weight: 700; }
.pg-about__section-body ul { margin: 0 0 1rem; padding-left: 1.4rem; }
.pg-about__section-body li { margin-bottom: 0.6rem; }
.pg-about__section-body li::marker { color: var(--mustard-deep); }
.pg-about__section-body a { color: var(--clay); text-decoration: underline; text-underline-offset: 3px; }

.pg-about__credit {
  max-width: var(--max);
  margin: 0 auto 5rem;
  padding: 3rem var(--gutter) 0;
  text-align: center;
  border-top: 3px solid var(--ink);
  position: relative;
}
.pg-about__credit::before {
  content: '';
  position: absolute;
  top: -8px; left: 0; right: 0;
  height: 4px;
  background: repeating-linear-gradient(90deg, var(--ink) 0 6px, transparent 6px 12px);
}
.pg-about__credit-eyebrow {
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.2em;
  font-size: 0.72rem;
  color: var(--clay);
  font-weight: 700;
  margin: 0 0 0.5rem;
}
.pg-about__credit-name {
  font-family: var(--font-poster);
  font-weight: 800;
  font-size: 1.8rem;
  text-transform: uppercase;
  color: var(--teal-deep);
  margin: 0 0 0.3rem;
  letter-spacing: -0.005em;
}
.pg-about__credit-tagline {
  font-family: var(--font-accent);
  font-style: italic;
  font-size: 1.1rem;
  color: var(--ink-soft);
  margin: 0 0 0.5rem;
}
.pg-about__credit-meta {
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.1em;
  font-size: 0.72rem;
  color: var(--ink-soft);
  margin: 0;
}

/* ════════════════════════════════════════════════════════════════════
   PAGE — /land-acknowledgment/ (cultural weight, photo hero)
   ════════════════════════════════════════════════════════════════════ */

.pg-land { background: var(--paper); }

.pg-land__hero {
  position: relative;
  min-height: 60vh;
  display: flex;
  align-items: flex-end;
  color: var(--paper);
  overflow: hidden;
  border-bottom: 3px solid var(--ink);
}
.pg-land__hero-bg {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
  z-index: 0;
}
.pg-land__hero-overlay {
  position: absolute;
  inset: 0;
  z-index: 1;
  background: linear-gradient(180deg, rgba(26, 23, 20, 0.3) 0%, rgba(26, 23, 20, 0.85) 100%);
}
.pg-land__hero-inner {
  position: relative;
  z-index: 2;
  max-width: var(--max);
  margin: 0 auto;
  padding: 3rem var(--gutter) 3rem;
  width: 100%;
}
.pg-land__back {
  display: inline-block;
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.14em;
  font-size: 0.72rem;
  font-weight: 700;
  color: var(--mustard);
  text-decoration: none;
  margin-bottom: 1.5rem;
}
.pg-land__eyebrow {
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.28em;
  font-size: 0.78rem;
  font-weight: 700;
  color: var(--mustard);
  margin: 0 0 0.6rem;
}
.pg-land__title {
  font-family: var(--font-poster);
  font-weight: 900;
  text-transform: uppercase;
  font-size: clamp(2.6rem, 6.5vw, 4.8rem);
  line-height: 0.95;
  color: var(--paper);
  letter-spacing: -0.02em;
  margin: 0 0 1.25rem;
  max-width: 18ch;
  text-shadow: 2px 2px 0 rgba(0,0,0,0.4);
}
.pg-land__lede {
  font-family: var(--font-accent);
  font-style: italic;
  font-size: clamp(1.15rem, 1.8vw, 1.5rem);
  line-height: 1.45;
  color: var(--paper);
  opacity: 0.95;
  max-width: 62ch;
  margin: 0;
}

.pg-land__draft-banner {
  max-width: 720px;
  margin: 3rem auto 0;
  padding: 0 var(--gutter);
}
.pg-land__draft-banner blockquote {
  margin: 0;
  padding: 1.5rem 1.75rem;
  background: var(--teal-deep);
  color: var(--paper);
  border: 2px solid var(--ink);
  border-left: 8px solid var(--mustard);
  font-family: var(--font-body);
  font-size: 1rem;
  line-height: 1.55;
  font-style: normal;
}
.pg-land__draft-banner blockquote strong {
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--mustard);
  font-size: 0.85em;
}

.pg-land__body {
  max-width: 680px;
  margin: 3rem auto 0;
  padding: 0 var(--gutter);
  font-size: 1.1rem;
  line-height: 1.85;
  color: var(--ink);
}
.pg-land__body > :first-child { margin-top: 0; }
.pg-land__body p { margin: 0 0 1.4rem; }
.pg-land__body p em {
  font-family: var(--font-accent);
  font-style: italic;
  color: var(--ink-soft);
}
.pg-land__body h2 {
  font-family: var(--font-poster);
  font-weight: 800;
  text-transform: uppercase;
  font-size: 1.4rem;
  color: var(--clay);
  letter-spacing: -0.005em;
  margin: 2.5rem 0 1rem;
  padding-top: 1.5rem;
  border-top: 2px solid var(--ink);
}
.pg-land__body h2 em {
  font-family: var(--font-accent);
  font-style: italic;
  font-weight: 400;
  color: var(--teal-deep);
  text-transform: none;
}
.pg-land__body a {
  color: var(--clay);
  text-decoration: underline;
  text-underline-offset: 3px;
}
.pg-land__body a:hover { color: var(--clay-deep); }

.pg-land__protocol {
  max-width: 680px;
  margin: 4rem auto 5rem;
  padding: 1.75rem 2rem;
  background: var(--paper-deep);
  border: 2px solid var(--ink);
  border-left: 8px solid var(--clay);
}
.pg-land__protocol h3 {
  font-family: var(--font-poster);
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  font-size: 1rem;
  color: var(--clay);
  margin: 0 0 0.7rem;
}
.pg-land__protocol p {
  font-size: 0.98rem;
  line-height: 1.65;
  color: var(--ink);
  margin: 0;
}
.pg-land__protocol a { color: var(--clay); text-decoration: underline; }

/* ════════════════════════════════════════════════════════════════════
   PAGE — /plan/ (trip-planning compositional layout)
   ════════════════════════════════════════════════════════════════════ */

.pg-plan { background: var(--paper); }

/* ──── Hero ──── */

.pg-plan__hero {
  background: var(--clay);
  color: var(--paper);
  padding: 4rem 0 4.5rem;
  border-bottom: 3px solid var(--ink);
  position: relative;
}
.pg-plan__hero::after {
  content: '';
  position: absolute;
  left: 0; right: 0;
  bottom: -8px;
  height: 4px;
  background: repeating-linear-gradient(90deg, var(--ink) 0 6px, transparent 6px 12px);
}
.pg-plan__hero-inner {
  max-width: var(--max);
  margin: 0 auto;
  padding: 0 var(--gutter);
}
.pg-plan__back {
  display: inline-block;
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.14em;
  font-size: 0.72rem;
  font-weight: 700;
  color: var(--mustard);
  text-decoration: none;
  margin-bottom: 1.5rem;
}
.pg-plan__back:hover { color: var(--paper); }
.pg-plan__eyebrow {
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.28em;
  font-size: 0.78rem;
  font-weight: 700;
  color: var(--mustard);
  margin: 0 0 0.5rem;
}
.pg-plan__title {
  font-family: var(--font-poster);
  font-weight: 900;
  text-transform: uppercase;
  font-size: clamp(2.8rem, 7vw, 5.4rem);
  line-height: 0.92;
  color: var(--paper);
  letter-spacing: -0.025em;
  margin: 0 0 1rem;
  text-shadow: 3px 3px 0 var(--clay-deep);
}
.pg-plan__title em {
  font-family: var(--font-accent);
  font-style: italic;
  font-weight: 400;
  color: var(--mustard);
  text-transform: none;
  text-shadow: none;
}
.pg-plan__lede {
  font-family: var(--font-accent);
  font-style: italic;
  font-size: clamp(1.15rem, 1.8vw, 1.45rem);
  color: var(--paper);
  opacity: 0.95;
  max-width: 60ch;
  margin: 0;
  line-height: 1.45;
}

/* ──── TL;DR card ──── */

.pg-plan__tldr {
  background: var(--paper-soft);
  border-bottom: 2px solid var(--ink);
  padding: 2rem 0;
}
.pg-plan__tldr-inner {
  max-width: var(--max);
  margin: 0 auto;
  padding: 0 var(--gutter);
}
.pg-plan__tldr-eyebrow {
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.18em;
  font-size: 0.7rem;
  font-weight: 700;
  color: var(--clay);
  margin: 0 0 1rem;
}
.pg-plan__tldr-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1.5rem 2rem;
}
@media (max-width: 800px) { .pg-plan__tldr-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 480px) { .pg-plan__tldr-grid { grid-template-columns: 1fr; } }
.pg-plan__tldr-item {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
}
.pg-plan__tldr-key {
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.12em;
  font-size: 0.7rem;
  font-weight: 700;
  color: var(--ink-soft);
}
.pg-plan__tldr-val {
  font-family: var(--font-poster);
  font-weight: 800;
  text-transform: uppercase;
  font-size: 1rem;
  color: var(--teal-deep);
  letter-spacing: -0.005em;
}

/* ──── Section scaffolding ──── */

.pg-plan__section {
  max-width: var(--max);
  margin: 0 auto;
  padding: 4rem var(--gutter) 0;
}
.pg-plan__section:last-of-type { padding-bottom: 4rem; }

.pg-plan__section-head {
  display: grid;
  grid-template-columns: auto 1fr;
  grid-template-areas:
    "num title"
    "num sub";
  align-items: baseline;
  gap: 0.2rem 1.5rem;
  margin-bottom: 2rem;
  padding-bottom: 1rem;
  border-bottom: 2px solid var(--ink);
}
.pg-plan__section-num {
  grid-area: num;
  font-family: var(--font-poster);
  font-weight: 900;
  font-size: clamp(2.4rem, 4vw, 3.5rem);
  line-height: 0.85;
  color: var(--clay);
  letter-spacing: -0.02em;
  align-self: center;
}
.pg-plan__section-title {
  grid-area: title;
  font-family: var(--font-poster);
  font-weight: 800;
  text-transform: uppercase;
  font-size: clamp(1.6rem, 3vw, 2.4rem);
  color: var(--teal-deep);
  margin: 0;
  letter-spacing: -0.01em;
}
.pg-plan__section-title em {
  font-family: var(--font-accent);
  font-style: italic;
  font-weight: 400;
  color: var(--clay);
  text-transform: none;
}
.pg-plan__section-sub {
  grid-area: sub;
  font-family: var(--font-accent);
  font-style: italic;
  font-size: 1.05rem;
  color: var(--ink-soft);
  margin: 0;
  line-height: 1.4;
}

/* ──── Season grid (Summer vs Winter) ──── */

.pg-plan__season-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1.5rem;
}
@media (max-width: 760px) { .pg-plan__season-grid { grid-template-columns: 1fr; } }

.pg-plan__season {
  padding: 1.75rem 1.75rem 1.5rem;
  background: var(--paper);
  border: 2px solid var(--ink);
  position: relative;
}
.pg-plan__season--summer {
  background: var(--mustard);
  box-shadow: 6px 6px 0 var(--clay);
}
.pg-plan__season--winter {
  background: var(--teal-deep);
  color: var(--paper);
  box-shadow: 6px 6px 0 var(--mustard);
}
.pg-plan__season-tag {
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.14em;
  font-size: 0.72rem;
  font-weight: 700;
  margin: 0 0 0.5rem;
  color: var(--clay-deep);
}
.pg-plan__season--winter .pg-plan__season-tag { color: var(--mustard); }
.pg-plan__season-title {
  font-family: var(--font-poster);
  font-weight: 800;
  text-transform: uppercase;
  font-size: 1.7rem;
  color: var(--ink);
  margin: 0 0 1rem;
  padding-bottom: 0.5rem;
  border-bottom: 2px solid var(--ink);
  letter-spacing: -0.005em;
}
.pg-plan__season--winter .pg-plan__season-title { color: var(--paper); border-bottom-color: var(--mustard); }
.pg-plan__season-body {
  font-size: 1rem;
  line-height: 1.6;
  margin: 0 0 1rem;
}
.pg-plan__season-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 0.45rem;
}
.pg-plan__season-list li {
  font-size: 0.92rem;
  line-height: 1.45;
  padding-left: 1.25rem;
  position: relative;
}
.pg-plan__season-list li::before {
  content: '✦';
  position: absolute;
  left: 0;
  top: 0;
  color: var(--clay-deep);
}
.pg-plan__season--winter .pg-plan__season-list li::before { color: var(--mustard); }

/* ──── Base-yourself cards ──── */

.pg-plan__base-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem;
}
@media (max-width: 900px) { .pg-plan__base-grid { grid-template-columns: 1fr; } }

.pg-plan__base-card {
  display: flex;
  flex-direction: column;
  padding: 1.75rem 1.5rem 1.5rem;
  background: var(--paper);
  border: 2px solid var(--ink);
  text-decoration: none;
  color: inherit;
  box-shadow: 6px 6px 0 var(--teal);
  transition: transform 0.18s var(--ease), box-shadow 0.18s var(--ease);
}
.pg-plan__base-card:hover {
  transform: translate(-3px, -3px);
  box-shadow: 9px 9px 0 var(--teal);
}
.pg-plan__base-card:nth-child(2) { box-shadow: 6px 6px 0 var(--clay); }
.pg-plan__base-card:nth-child(2):hover { box-shadow: 9px 9px 0 var(--clay); }
.pg-plan__base-card:nth-child(3) { box-shadow: 6px 6px 0 var(--mustard); }
.pg-plan__base-card:nth-child(3):hover { box-shadow: 9px 9px 0 var(--mustard); }

.pg-plan__base-tag {
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.14em;
  font-size: 0.7rem;
  font-weight: 700;
  color: var(--mustard-deep);
  margin: 0 0 0.4rem;
}
.pg-plan__base-title {
  font-family: var(--font-poster);
  font-weight: 800;
  text-transform: uppercase;
  font-size: 1.6rem;
  color: var(--teal-deep);
  margin: 0 0 0.75rem;
  padding-bottom: 0.5rem;
  border-bottom: 2px solid var(--ink);
  letter-spacing: -0.01em;
}
.pg-plan__base-body {
  font-size: 0.95rem;
  line-height: 1.55;
  color: var(--ink);
  margin: 0 0 1rem;
  flex: 1;
}
.pg-plan__base-cta {
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.1em;
  font-size: 0.75rem;
  font-weight: 700;
  color: var(--clay);
}

/* ──── Transit grid (Car / Air / Train) ──── */

.pg-plan__transit-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem;
}
@media (max-width: 900px) { .pg-plan__transit-grid { grid-template-columns: 1fr; } }

.pg-plan__transit {
  padding: 1.5rem 1.5rem 1.25rem;
  background: var(--paper-soft);
  border: 2px solid var(--ink);
}
.pg-plan__transit-mode {
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.16em;
  font-size: 0.72rem;
  font-weight: 700;
  color: var(--clay);
  margin: 0 0 0.3rem;
}
.pg-plan__transit-title {
  font-family: var(--font-poster);
  font-weight: 800;
  text-transform: uppercase;
  font-size: 1.35rem;
  color: var(--teal-deep);
  margin: 0 0 1rem;
  letter-spacing: -0.005em;
}
.pg-plan__transit-dl {
  margin: 0 0 1rem;
}
.pg-plan__transit-dl > div {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  padding: 0.5rem 0;
  border-bottom: 1px dashed var(--ink-soft);
  font-size: 0.9rem;
}
.pg-plan__transit-dl > div:last-child { border-bottom: none; }
.pg-plan__transit-dl dt {
  font-weight: 600;
  color: var(--ink);
}
.pg-plan__transit-dl dd {
  text-align: right;
  color: var(--ink-soft);
  margin: 0;
}
.pg-plan__transit-note {
  font-family: var(--font-accent);
  font-style: italic;
  font-size: 0.88rem;
  color: var(--ink-soft);
  line-height: 1.5;
  margin: 0;
  padding-top: 0.75rem;
  border-top: 1px solid var(--ink-soft);
}

/* ──── Pack list (key/val checklist) ──── */

.pg-plan__pack-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 0;
  max-width: 760px;
}
.pg-plan__pack-list li {
  display: grid;
  grid-template-columns: 200px 1fr;
  gap: 1.5rem;
  align-items: baseline;
  padding: 1rem 0;
  border-bottom: 1px solid var(--ink-soft);
}
.pg-plan__pack-list li:first-child { padding-top: 0; }
.pg-plan__pack-list li:last-child { border-bottom: none; }
@media (max-width: 600px) {
  .pg-plan__pack-list li { grid-template-columns: 1fr; gap: 0.3rem; }
}
.pg-plan__pack-key {
  font-family: var(--font-poster);
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: -0.005em;
  font-size: 1.05rem;
  color: var(--clay);
}
.pg-plan__pack-val {
  font-size: 0.98rem;
  line-height: 1.55;
  color: var(--ink);
}

/* ──── Town card grid ──── */

.pg-plan__town-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 1.25rem;
}

.pg-plan__town-card {
  display: flex;
  flex-direction: column;
  padding: 1.4rem 1.4rem 1.2rem;
  background: var(--paper);
  border: 2px solid var(--ink);
  text-decoration: none;
  color: inherit;
  box-shadow: 4px 4px 0 var(--ink);
  position: relative;
  transition: transform 0.15s var(--ease), box-shadow 0.15s var(--ease);
}
.pg-plan__town-card:hover {
  transform: translate(-2px, -2px);
  box-shadow: 6px 6px 0 var(--mustard);
}
.pg-plan__town-tag {
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.12em;
  font-size: 0.65rem;
  font-weight: 700;
  color: var(--mustard-deep);
  margin: 0 0 0.3rem;
}
.pg-plan__town-name {
  font-family: var(--font-poster);
  font-weight: 800;
  text-transform: uppercase;
  font-size: 1.25rem;
  color: var(--teal-deep);
  margin: 0 0 0.6rem;
  letter-spacing: -0.005em;
}
.pg-plan__town-copy {
  font-size: 0.88rem;
  line-height: 1.5;
  color: var(--ink-soft);
  margin: 0 0 0.75rem;
  flex: 1;
}
.pg-plan__town-arrow {
  font-family: var(--font-poster);
  font-weight: 800;
  font-size: 1.2rem;
  color: var(--clay);
  align-self: flex-end;
}

/* ──── Etiquette callout ──── */

.pg-plan__etiquette {
  background: var(--teal-deep);
  color: var(--paper);
  border-top: 3px solid var(--ink);
  border-bottom: 3px solid var(--ink);
  margin-top: 4rem;
}
.pg-plan__etiquette-inner {
  max-width: 760px;
  margin: 0 auto;
  padding: 3rem var(--gutter);
}
.pg-plan__etiquette-eyebrow {
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.2em;
  font-size: 0.78rem;
  font-weight: 700;
  color: var(--mustard);
  margin: 0 0 0.5rem;
}
.pg-plan__etiquette-title {
  font-family: var(--font-poster);
  font-weight: 800;
  text-transform: uppercase;
  font-size: clamp(1.8rem, 3.5vw, 2.6rem);
  color: var(--paper);
  margin: 0 0 1rem;
  letter-spacing: -0.01em;
}
.pg-plan__etiquette-body {
  font-size: 1rem;
  line-height: 1.65;
  color: var(--paper);
  opacity: 0.95;
  margin: 0 0 1rem;
}
.pg-plan__etiquette-body:last-child { margin-bottom: 0; }
.pg-plan__etiquette-body a {
  color: var(--mustard);
  text-decoration: underline;
  text-underline-offset: 3px;
}

/* ──── Newsletter CTA ──── */

.pg-plan__newsletter {
  max-width: 760px;
  margin: 4rem auto 5rem;
  padding: 0 var(--gutter);
  text-align: center;
}
.pg-plan__newsletter-eyebrow {
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.2em;
  font-size: 0.75rem;
  color: var(--clay);
  font-weight: 700;
  margin: 0 0 0.4rem;
}
.pg-plan__newsletter-title {
  font-family: var(--font-poster);
  font-weight: 800;
  text-transform: uppercase;
  font-size: clamp(1.8rem, 3.5vw, 2.4rem);
  color: var(--teal-deep);
  margin: 0 0 0.5rem;
  letter-spacing: -0.01em;
}
.pg-plan__newsletter-copy {
  font-family: var(--font-accent);
  font-style: italic;
  font-size: 1.05rem;
  line-height: 1.5;
  color: var(--ink-soft);
  max-width: 50ch;
  margin: 0 auto 1.25rem;
}

/* ════════════════════════════════════════════════════════════════════
   PAGE — Shared patterns for the 4 form/CTA templates:
   /list-your-business/, /submit-event/, /newsletter/, /contact/
   ════════════════════════════════════════════════════════════════════ */

.pg-lyb, .pg-submit-event, .pg-newsletter, .pg-contact { background: var(--paper); }

/* ──── Shared: hero base ──── */

.pg-lyb__hero, .pg-submit-event__hero, .pg-newsletter__hero, .pg-contact__hero {
  padding: 4rem 0 4.5rem;
  border-bottom: 3px solid var(--ink);
  position: relative;
  color: var(--paper);
}
.pg-lyb__hero::after, .pg-submit-event__hero::after, .pg-newsletter__hero::after, .pg-contact__hero::after {
  content: '';
  position: absolute;
  left: 0; right: 0; bottom: -8px;
  height: 4px;
  background: repeating-linear-gradient(90deg, var(--ink) 0 6px, transparent 6px 12px);
}

/* Distinct hero backgrounds per page */
.pg-lyb__hero          { background: var(--mustard); color: var(--ink); }
.pg-submit-event__hero { background: var(--teal-deep); color: var(--paper); }
.pg-newsletter__hero   { background: var(--paper-soft); color: var(--ink); }
.pg-contact__hero      { background: var(--clay); color: var(--paper); }

.pg-lyb__hero-inner, .pg-submit-event__hero-inner, .pg-newsletter__hero-inner, .pg-contact__hero-inner {
  max-width: var(--max);
  margin: 0 auto;
  padding: 0 var(--gutter);
}

.pg-lyb__back, .pg-submit-event__back, .pg-newsletter__back, .pg-contact__back {
  display: inline-block;
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.14em;
  font-size: 0.72rem;
  font-weight: 700;
  text-decoration: none;
  margin-bottom: 1.5rem;
}
.pg-lyb__back          { color: var(--clay-deep); }
.pg-submit-event__back { color: var(--mustard); }
.pg-newsletter__back   { color: var(--clay); }
.pg-contact__back      { color: var(--mustard); }

.pg-lyb__eyebrow, .pg-submit-event__eyebrow, .pg-newsletter__eyebrow, .pg-contact__eyebrow {
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.26em;
  font-size: 0.78rem;
  font-weight: 700;
  margin: 0 0 0.5rem;
}
.pg-lyb__eyebrow          { color: var(--clay-deep); }
.pg-submit-event__eyebrow { color: var(--mustard); }
.pg-newsletter__eyebrow   { color: var(--clay); }
.pg-contact__eyebrow      { color: var(--mustard); }

.pg-lyb__title, .pg-submit-event__title, .pg-newsletter__title, .pg-contact__title {
  font-family: var(--font-poster);
  font-weight: 900;
  text-transform: uppercase;
  font-size: clamp(2.6rem, 6.5vw, 5rem);
  line-height: 0.92;
  letter-spacing: -0.025em;
  margin: 0 0 1rem;
}
.pg-lyb__title          { color: var(--ink); }
.pg-submit-event__title { color: var(--paper); text-shadow: 3px 3px 0 var(--clay); }
.pg-newsletter__title   { color: var(--teal-deep); }
.pg-contact__title      { color: var(--paper); text-shadow: 3px 3px 0 var(--clay-deep); }

.pg-lyb__title em, .pg-submit-event__title em, .pg-newsletter__title em, .pg-contact__title em {
  font-family: var(--font-accent);
  font-style: italic;
  font-weight: 400;
  text-transform: none;
  text-shadow: none;
}
.pg-lyb__title em          { color: var(--teal-deep); }
.pg-submit-event__title em { color: var(--mustard); }
.pg-newsletter__title em   { color: var(--clay); }
.pg-contact__title em      { color: var(--mustard); }

.pg-lyb__lede, .pg-submit-event__lede, .pg-newsletter__lede, .pg-contact__lede {
  font-family: var(--font-accent);
  font-style: italic;
  font-size: clamp(1.1rem, 1.7vw, 1.4rem);
  line-height: 1.45;
  max-width: 60ch;
  margin: 0 0 1.5rem;
}
.pg-lyb__lede        { color: var(--ink); }
.pg-newsletter__lede { color: var(--ink-soft); }
.pg-submit-event__lede, .pg-contact__lede { color: var(--paper); opacity: 0.95; }

/* Hero pledge strip (only on lyb + submit-event) */
.pg-lyb__hero-pledge, .pg-submit-event__hero-pledge {
  display: inline-flex;
  align-items: baseline;
  gap: 0.75rem;
  padding: 0.7rem 1.1rem;
  background: var(--ink);
  margin-bottom: 1.5rem;
  border: 2px solid var(--ink);
}
.pg-submit-event__hero-pledge { background: var(--mustard); border-color: var(--mustard-deep); }
.pg-lyb__pledge-key, .pg-submit-event__pledge-key {
  font-family: var(--font-poster);
  font-weight: 900;
  text-transform: uppercase;
  font-size: 1rem;
  letter-spacing: 0.05em;
}
.pg-lyb__pledge-key { color: var(--mustard); }
.pg-submit-event__pledge-key { color: var(--ink); }
.pg-lyb__pledge-val, .pg-submit-event__pledge-val {
  font-family: var(--font-body);
  font-size: 0.92rem;
  line-height: 1.4;
}
.pg-lyb__pledge-val { color: var(--paper); }
.pg-submit-event__pledge-val { color: var(--ink); }

.pg-lyb__hero-ctas, .pg-submit-event__hero-ctas, .pg-newsletter__hero-cta {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
}

/* ──── Shared: section head ──── */

.pg-lyb__section-head, .pg-submit-event__section-head, .pg-newsletter__section-head, .pg-contact__section-head {
  display: grid;
  grid-template-columns: auto 1fr;
  grid-template-areas:
    "num title"
    "num sub";
  align-items: baseline;
  gap: 0.2rem 1.5rem;
  margin-bottom: 2rem;
  padding-bottom: 1rem;
  border-bottom: 2px solid var(--ink);
}
.pg-lyb__section-num, .pg-submit-event__section-num, .pg-newsletter__section-num, .pg-contact__section-num {
  grid-area: num;
  font-family: var(--font-poster);
  font-weight: 900;
  font-size: clamp(2.4rem, 4vw, 3.5rem);
  line-height: 0.85;
  color: var(--clay);
  letter-spacing: -0.02em;
  align-self: center;
}
.pg-lyb__section-title, .pg-submit-event__section-title, .pg-newsletter__section-title, .pg-contact__section-title {
  grid-area: title;
  font-family: var(--font-poster);
  font-weight: 800;
  text-transform: uppercase;
  font-size: clamp(1.6rem, 3vw, 2.4rem);
  color: var(--teal-deep);
  margin: 0;
  letter-spacing: -0.01em;
}
.pg-lyb__section-title em, .pg-submit-event__section-title em, .pg-newsletter__section-title em, .pg-contact__section-title em {
  font-family: var(--font-accent);
  font-style: italic;
  font-weight: 400;
  color: var(--clay);
  text-transform: none;
}
.pg-lyb__section-sub, .pg-submit-event__section-sub, .pg-newsletter__section-sub, .pg-contact__section-sub {
  grid-area: sub;
  font-family: var(--font-accent);
  font-style: italic;
  font-size: 1.05rem;
  color: var(--ink-soft);
  margin: 0;
  line-height: 1.4;
}

/* Section wrappers */
.pg-lyb__eligibility, .pg-lyb__needs, .pg-lyb__how,
.pg-submit-event__eligibility, .pg-submit-event__needs, .pg-submit-event__form-section,
.pg-newsletter__get, .pg-newsletter__cadence, .pg-newsletter__signup,
.pg-contact__channels, .pg-contact__form-section {
  max-width: var(--max);
  margin: 0 auto;
  padding: 4rem var(--gutter) 0;
}

/* ──── LYB: Eligibility cards ──── */

.pg-lyb__eligibility-grid, .pg-submit-event__elig-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem;
  margin-bottom: 1.25rem;
}
@media (max-width: 900px) {
  .pg-lyb__eligibility-grid, .pg-submit-event__elig-grid { grid-template-columns: 1fr; }
}

.pg-lyb__elig, .pg-submit-event__elig {
  padding: 1.5rem 1.5rem 1.25rem;
  background: var(--paper-soft);
  border: 2px solid var(--ink);
  box-shadow: 5px 5px 0 var(--ink);
}
.pg-lyb__elig-tag, .pg-submit-event__elig-tag {
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.14em;
  font-size: 0.68rem;
  font-weight: 700;
  color: var(--mustard-deep);
  margin: 0 0 0.4rem;
}
.pg-lyb__elig-title, .pg-submit-event__elig-title {
  font-family: var(--font-poster);
  font-weight: 800;
  text-transform: uppercase;
  font-size: 1.25rem;
  color: var(--teal-deep);
  margin: 0 0 0.75rem;
  padding-bottom: 0.5rem;
  border-bottom: 2px solid var(--ink);
  letter-spacing: -0.005em;
}
.pg-lyb__elig-body, .pg-submit-event__elig-body {
  font-size: 0.95rem;
  line-height: 1.55;
  color: var(--ink);
  margin: 0;
}
.pg-lyb__eligibility-note, .pg-submit-event__elig-note {
  font-family: var(--font-accent);
  font-style: italic;
  font-size: 0.98rem;
  color: var(--ink-soft);
  margin: 1.5rem 0 0;
  max-width: 70ch;
  line-height: 1.55;
}

/* ──── Editor's Picks note ──── */
.pg-lyb__picks-note {
  max-width: var(--max);
  margin: 3rem auto 0;
  padding: 1.5rem 1.75rem;
  background: var(--mustard);
  border: 2px solid var(--ink);
  border-left: 8px solid var(--clay);
  margin-left: auto;
  margin-right: auto;
}
.pg-lyb__picks-note { margin-left: var(--gutter); margin-right: var(--gutter); }
@media (min-width: calc(1280px + 2 * 3rem)) {
  .pg-lyb__picks-note { max-width: var(--max); margin-left: auto; margin-right: auto; }
}
.pg-lyb__picks-eyebrow {
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.16em;
  font-size: 0.75rem;
  font-weight: 700;
  color: var(--clay-deep);
  margin: 0 0 0.5rem;
}
.pg-lyb__picks-body {
  font-size: 0.98rem;
  line-height: 1.6;
  color: var(--ink);
  margin: 0;
}
.pg-lyb__picks-body strong { color: var(--clay-deep); }
.pg-lyb__picks-body a { color: var(--clay-deep); text-decoration: underline; text-underline-offset: 3px; }

/* ──── Numbered needs list (LYB + Submit Event) ──── */

.pg-lyb__needs-list, .pg-submit-event__needs-list {
  list-style: none;
  margin: 0 auto;
  padding: 0;
  max-width: 760px;
  display: grid;
  gap: 0;
}
.pg-lyb__needs-list li, .pg-submit-event__needs-list li {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 1.25rem;
  padding: 1.2rem 0;
  border-bottom: 1px solid var(--ink-soft);
  align-items: baseline;
}
.pg-lyb__needs-list li:last-child, .pg-submit-event__needs-list li:last-child { border-bottom: none; }
.pg-lyb__needs-num, .pg-submit-event__needs-num {
  font-family: var(--font-poster);
  font-weight: 900;
  font-size: 1.5rem;
  color: var(--clay);
  letter-spacing: -0.01em;
  align-self: start;
  padding-top: 0.1rem;
}
.pg-lyb__needs-list li > div, .pg-submit-event__needs-list li > div {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
}
.pg-lyb__needs-key, .pg-submit-event__needs-key {
  font-family: var(--font-poster);
  font-weight: 800;
  text-transform: uppercase;
  font-size: 1.02rem;
  color: var(--teal-deep);
  letter-spacing: -0.005em;
}
.pg-lyb__needs-val, .pg-submit-event__needs-val {
  font-size: 0.95rem;
  line-height: 1.55;
  color: var(--ink);
}
.pg-lyb__needs-note, .pg-submit-event__form-note {
  font-family: var(--font-accent);
  font-style: italic;
  font-size: 0.98rem;
  color: var(--ink-soft);
  margin: 1.5rem auto 0;
  max-width: 70ch;
  line-height: 1.55;
}

/* ──── How-to-submit two-card grid (LYB) ──── */

.pg-lyb__how-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1.5rem;
}
@media (max-width: 760px) { .pg-lyb__how-grid { grid-template-columns: 1fr; } }
.pg-lyb__how-card {
  display: flex;
  flex-direction: column;
  padding: 1.75rem 1.5rem 1.5rem;
  background: var(--paper);
  border: 2px solid var(--ink);
  text-decoration: none;
  color: inherit;
  box-shadow: 6px 6px 0 var(--teal);
  transition: transform 0.18s var(--ease), box-shadow 0.18s var(--ease);
}
.pg-lyb__how-card:hover { transform: translate(-3px, -3px); box-shadow: 9px 9px 0 var(--teal); }
.pg-lyb__how-card:nth-child(2) { box-shadow: 6px 6px 0 var(--clay); }
.pg-lyb__how-card:nth-child(2):hover { box-shadow: 9px 9px 0 var(--clay); }
.pg-lyb__how-tag {
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.14em;
  font-size: 0.68rem;
  font-weight: 700;
  color: var(--mustard-deep);
  margin: 0 0 0.4rem;
}
.pg-lyb__how-title {
  font-family: var(--font-poster);
  font-weight: 800;
  text-transform: uppercase;
  font-size: 1.5rem;
  color: var(--teal-deep);
  margin: 0 0 0.75rem;
  padding-bottom: 0.5rem;
  border-bottom: 2px solid var(--ink);
}
.pg-lyb__how-body {
  font-size: 0.95rem;
  line-height: 1.55;
  color: var(--ink);
  margin: 0 0 1rem;
  flex: 1;
}
.pg-lyb__how-body strong { color: var(--clay); }
.pg-lyb__how-cta {
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.1em;
  font-size: 0.75rem;
  font-weight: 700;
  color: var(--clay);
}
.pg-lyb__how-note {
  font-family: var(--font-accent);
  font-style: italic;
  font-size: 0.95rem;
  color: var(--ink-soft);
  margin: 1.5rem 0 0;
  text-align: center;
}

/* ──── LYB supporting blocks ──── */

.pg-lyb__supporting {
  max-width: var(--max);
  margin: 4rem auto 0;
  padding: 0 var(--gutter);
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1.5rem;
}
@media (max-width: 760px) { .pg-lyb__supporting { grid-template-columns: 1fr; } }
.pg-lyb__block {
  padding: 1.75rem 1.75rem 1.5rem;
  background: var(--paper-soft);
  border: 2px solid var(--ink);
}
.pg-lyb__block--cskt {
  background: var(--teal-deep);
  color: var(--paper);
  border-left: 8px solid var(--mustard);
}
.pg-lyb__block-eyebrow {
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.14em;
  font-size: 0.7rem;
  font-weight: 700;
  color: var(--mustard);
  margin: 0 0 0.4rem;
}
.pg-lyb__block-title {
  font-family: var(--font-poster);
  font-weight: 800;
  text-transform: uppercase;
  font-size: 1.3rem;
  color: var(--teal-deep);
  margin: 0 0 0.75rem;
  letter-spacing: -0.005em;
}
.pg-lyb__block--cskt .pg-lyb__block-title { color: var(--paper); }
.pg-lyb__block p {
  font-size: 0.98rem;
  line-height: 1.6;
  margin: 0 0 1rem;
}
.pg-lyb__block p:last-child { margin-bottom: 0; }
.pg-lyb__block a { color: var(--clay); text-decoration: underline; text-underline-offset: 3px; }
.pg-lyb__block--cskt a { color: var(--mustard); }

/* ──── LYB final CTA + Submit-event changes block ──── */

.pg-lyb__cta-final, .pg-submit-event__changes {
  max-width: var(--max);
  margin: 4rem auto 5rem;
  padding: 3rem var(--gutter);
  text-align: center;
  background: var(--teal-deep);
  color: var(--paper);
  border: 2px solid var(--ink);
}
.pg-submit-event__changes { background: var(--clay); }
.pg-lyb__cta-eyebrow, .pg-submit-event__changes-eyebrow {
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.2em;
  font-size: 0.75rem;
  font-weight: 700;
  color: var(--mustard);
  margin: 0 0 0.5rem;
}
.pg-lyb__cta-title, .pg-submit-event__changes-title {
  font-family: var(--font-poster);
  font-weight: 900;
  text-transform: uppercase;
  font-size: clamp(2.2rem, 4.5vw, 3.4rem);
  color: var(--paper);
  margin: 0 0 1rem;
  letter-spacing: -0.02em;
}
.pg-lyb__cta-copy, .pg-submit-event__changes-body {
  font-family: var(--font-body);
  font-size: 1.05rem;
  line-height: 1.6;
  color: var(--paper);
  opacity: 0.92;
  max-width: 56ch;
  margin: 0 auto 1.5rem;
}

/* ──── Submit-event form wrapper ──── */

.pg-submit-event__form-wrapper {
  max-width: 760px;
  margin: 0 auto;
  padding: 1.75rem;
  background: var(--paper-soft);
  border: 2px solid var(--ink);
  box-shadow: 5px 5px 0 var(--clay);
}

/* ──── Newsletter: "what you'll get" card grid ──── */

.pg-newsletter__get-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 1.25rem;
}
.pg-newsletter__get-card {
  padding: 1.4rem 1.4rem 1.25rem;
  background: var(--paper-soft);
  border: 2px solid var(--ink);
  box-shadow: 4px 4px 0 var(--mustard);
}
.pg-newsletter__get-num {
  font-family: var(--font-poster);
  font-weight: 900;
  font-size: 1.5rem;
  color: var(--clay);
  letter-spacing: -0.01em;
}
.pg-newsletter__get-title {
  font-family: var(--font-poster);
  font-weight: 800;
  text-transform: uppercase;
  font-size: 1.1rem;
  color: var(--teal-deep);
  margin: 0.4rem 0 0.5rem;
  letter-spacing: -0.005em;
}
.pg-newsletter__get-body {
  font-size: 0.92rem;
  line-height: 1.5;
  color: var(--ink);
  margin: 0;
}

/* ──── Newsletter: cadence grid (seasonal) ──── */

.pg-newsletter__cadence-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1rem;
}
@media (max-width: 760px) { .pg-newsletter__cadence-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 480px) { .pg-newsletter__cadence-grid { grid-template-columns: 1fr; } }
.pg-newsletter__cadence-card {
  padding: 1.5rem 1.25rem 1.25rem;
  background: var(--paper);
  border: 2px solid var(--ink);
  text-align: center;
}
.pg-newsletter__cadence-card--spring { box-shadow: 4px 4px 0 var(--forest, #2d4a35); }
.pg-newsletter__cadence-card--summer { box-shadow: 4px 4px 0 var(--mustard); }
.pg-newsletter__cadence-card--fall   { box-shadow: 4px 4px 0 var(--clay); }
.pg-newsletter__cadence-card--winter { box-shadow: 4px 4px 0 var(--teal); }
.pg-newsletter__cadence-month {
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.14em;
  font-size: 0.7rem;
  font-weight: 700;
  color: var(--clay);
  margin: 0 0 0.3rem;
}
.pg-newsletter__cadence-season {
  font-family: var(--font-poster);
  font-weight: 800;
  text-transform: uppercase;
  font-size: 1.4rem;
  color: var(--teal-deep);
  margin: 0 0 0.5rem;
  letter-spacing: -0.005em;
}
.pg-newsletter__cadence-copy {
  font-size: 0.85rem;
  line-height: 1.45;
  color: var(--ink-soft);
  margin: 0;
}
.pg-newsletter__cadence-note {
  font-family: var(--font-accent);
  font-style: italic;
  font-size: 0.95rem;
  color: var(--ink-soft);
  margin: 1.5rem 0 0;
  text-align: center;
}

/* ──── Newsletter: signup card ──── */

.pg-newsletter__signup-card {
  max-width: 580px;
  margin: 0 auto;
  padding: 2rem 1.75rem 1.75rem;
  background: var(--teal-deep);
  color: var(--paper);
  border: 2px solid var(--ink);
  text-align: center;
  box-shadow: 6px 6px 0 var(--mustard);
}
.pg-newsletter__signup-eyebrow {
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.2em;
  font-size: 0.72rem;
  font-weight: 700;
  color: var(--mustard);
  margin: 0 0 0.5rem;
}
.pg-newsletter__signup-title {
  font-family: var(--font-poster);
  font-weight: 800;
  text-transform: uppercase;
  font-size: 1.5rem;
  color: var(--paper);
  margin: 0 0 1rem;
  letter-spacing: -0.005em;
}
.pg-newsletter__signup-body {
  font-size: 1rem;
  line-height: 1.6;
  margin: 0 0 1.25rem;
  opacity: 0.95;
}
.pg-newsletter__signup-body a { color: var(--mustard); text-decoration: underline; }

/* ──── Newsletter privacy block ──── */

.pg-newsletter__privacy {
  max-width: 680px;
  margin: 4rem auto 5rem;
  padding: 1.5rem 1.75rem;
  background: var(--paper-deep);
  border: 2px solid var(--ink);
  border-left: 8px solid var(--clay);
}
.pg-newsletter__privacy h3 {
  font-family: var(--font-poster);
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  font-size: 0.95rem;
  color: var(--clay);
  margin: 0 0 0.6rem;
}
.pg-newsletter__privacy p {
  font-size: 0.95rem;
  line-height: 1.6;
  color: var(--ink);
  margin: 0;
}

/* ──── Contact: channel cards (4 doors) ──── */

.pg-contact__channel-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1.25rem;
}
@media (max-width: 760px) { .pg-contact__channel-grid { grid-template-columns: 1fr; } }

.pg-contact__channel {
  display: flex;
  flex-direction: column;
  padding: 1.5rem 1.5rem 1.25rem;
  background: var(--paper);
  border: 2px solid var(--ink);
  text-decoration: none;
  color: inherit;
  box-shadow: 5px 5px 0 var(--teal);
  transition: transform 0.18s var(--ease), box-shadow 0.18s var(--ease);
}
.pg-contact__channel:hover { transform: translate(-3px, -3px); box-shadow: 8px 8px 0 var(--teal); }
.pg-contact__channel:nth-child(2) { box-shadow: 5px 5px 0 var(--mustard); }
.pg-contact__channel:nth-child(2):hover { box-shadow: 8px 8px 0 var(--mustard); }
.pg-contact__channel:nth-child(3) { box-shadow: 5px 5px 0 var(--clay); }
.pg-contact__channel:nth-child(3):hover { box-shadow: 8px 8px 0 var(--clay); }
.pg-contact__channel--general { box-shadow: 5px 5px 0 var(--ink) !important; }
.pg-contact__channel--general:hover { box-shadow: 8px 8px 0 var(--ink) !important; }

.pg-contact__channel-tag {
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.14em;
  font-size: 0.68rem;
  font-weight: 700;
  color: var(--mustard-deep);
  margin: 0 0 0.3rem;
}
.pg-contact__channel-title {
  font-family: var(--font-poster);
  font-weight: 800;
  text-transform: uppercase;
  font-size: 1.35rem;
  color: var(--teal-deep);
  margin: 0 0 0.6rem;
  padding-bottom: 0.5rem;
  border-bottom: 2px solid var(--ink);
  letter-spacing: -0.005em;
}
.pg-contact__channel-copy {
  font-size: 0.92rem;
  line-height: 1.5;
  color: var(--ink);
  margin: 0 0 0.85rem;
  flex: 1;
}
.pg-contact__channel-addr {
  font-family: var(--font-poster);
  font-weight: 700;
  text-transform: lowercase;
  letter-spacing: 0.02em;
  font-size: 0.85rem;
  color: var(--clay);
  margin: 0;
}

/* ──── Contact: form section ──── */

.pg-contact__form-wrap {
  max-width: 760px;
  margin: 0 auto;
  padding: 1.75rem;
  background: var(--paper-soft);
  border: 2px solid var(--ink);
  box-shadow: 5px 5px 0 var(--clay);
}

/* ──── Contact: location block ──── */

.pg-contact__location {
  background: var(--teal-deep);
  color: var(--paper);
  border-top: 3px solid var(--ink);
  border-bottom: 3px solid var(--ink);
  margin-top: 4rem;
}
.pg-contact__location-inner {
  max-width: 760px;
  margin: 0 auto;
  padding: 3rem var(--gutter);
  text-align: center;
}
.pg-contact__location-eyebrow {
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.2em;
  font-size: 0.75rem;
  font-weight: 700;
  color: var(--mustard);
  margin: 0 0 0.5rem;
}
.pg-contact__location-place {
  font-family: var(--font-poster);
  font-weight: 800;
  text-transform: uppercase;
  font-size: clamp(2rem, 4vw, 2.8rem);
  color: var(--paper);
  margin: 0 0 1rem;
  letter-spacing: -0.01em;
}
.pg-contact__location-body {
  font-size: 1.05rem;
  line-height: 1.65;
  color: var(--paper);
  opacity: 0.92;
  max-width: 56ch;
  margin: 0 auto;
}

.adv-quick__permit-guide {
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  font-size: 0.72rem;
  font-weight: 700;
  color: var(--clay);
  text-decoration: underline;
}
.adv-quick__permit-guide:hover { color: var(--clay-deep); }

/* ════════════════════════════════════════════════════════════════════
   ADVENTURE — landing page treatment (sits inside .adv-archive on /adventure/)
   ════════════════════════════════════════════════════════════════════ */

.adv-landing {
  max-width: var(--max);
  margin: 0 auto;
  padding: 0 var(--gutter) 5rem;
}

/* ──── Hero — full-bleed photo + poster typography overlay ──── */

.section-hero-full {
  position: relative;
  width: 100%;
  min-height: min(78vh, 720px);
  overflow: hidden;
  background: var(--ink);
  color: var(--paper);
  margin-bottom: 3rem;
}

.section-hero-full__bg {
  position: absolute;
  inset: 0;
  z-index: 0;
}
.section-hero-full__bg img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 35%;
  display: block;
  filter: saturate(1.1) contrast(1.05);
}

.section-hero-full__overlay {
  position: absolute;
  inset: 0;
  z-index: 1;
  background:
    linear-gradient(90deg, rgba(26, 23, 20, 0.85) 0%, rgba(26, 23, 20, 0.4) 40%, transparent 70%),
    linear-gradient(180deg, rgba(20, 59, 69, 0.55) 0%, rgba(20, 59, 69, 0.4) 35%, rgba(26, 23, 20, 0.85) 100%),
    radial-gradient(circle at 18% 22%, rgba(217, 166, 77, 0.18) 0%, transparent 40%),
    radial-gradient(circle at 82% 78%, rgba(184, 70, 43, 0.22) 0%, transparent 45%);
  pointer-events: none;
}

.section-hero-full__frame {
  position: relative;
  z-index: 2;
  max-width: var(--max);
  margin: 0 auto;
  padding: 2rem var(--gutter) 5rem;
  min-height: min(78vh, 720px);
  display: grid;
  grid-template-rows: auto 1fr auto;
  gap: 2rem;
}
@media (max-width: 640px) {
  .section-hero-full { min-height: 90vh; }
  .section-hero-full__frame { min-height: 90vh; padding: 1.5rem var(--gutter) 4rem; gap: 1.5rem; }
}

/* Top serial-number strip */
.section-hero-full__top {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: 1rem;
  padding-bottom: 1rem;
  border-bottom: 1px solid rgba(217, 166, 77, 0.5);
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.2em;
  font-size: 0.72rem;
  font-weight: 700;
}
.section-hero-full__top .left  { color: var(--mustard); }
.section-hero-full__top .mid   { color: var(--paper); text-align: center; letter-spacing: 0.25em; }
.section-hero-full__top .right { color: var(--mustard); text-align: right; }
@media (max-width: 640px) {
  .section-hero-full__top { grid-template-columns: 1fr; text-align: center; gap: 0.35rem; }
  .section-hero-full__top .right { text-align: center; }
}

/* Body — eyebrow + stacked headline + tag + sub + ctas */
.section-hero-full__body {
  align-self: center;
  max-width: 64ch;
  /* Soft scrim baked into the type so cream text holds its edge over
     busy/bright patches of real photography. Inherits to all children. */
  text-shadow: 0 1px 28px rgba(26, 23, 20, 0.5), 0 1px 3px rgba(26, 23, 20, 0.4);
}

.section-hero-full__eyebrow {
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.32em;
  font-size: 0.78rem;
  color: var(--mustard);
  font-weight: 700;
  margin: 0 0 1rem;
}

.section-hero-full__title {
  font-family: var(--font-poster);
  font-weight: 900;
  text-transform: uppercase;
  line-height: 0.85;
  color: var(--paper);
  margin: 0 0 1.25rem;
  letter-spacing: -0.025em;
  display: flex;
  flex-direction: column;
  gap: 0.05em;
}
.section-hero-full__title .word-1 {
  font-size: clamp(4rem, 13vw, 8.5rem);
}
.section-hero-full__title .word-2 {
  font-size: clamp(1.4rem, 3.2vw, 2.6rem);
  margin: 0.1em 0 0.1em 0.6em;
  color: var(--mustard);
  font-weight: 400;
}
.section-hero-full__title .word-2 em {
  font-family: var(--font-accent);
  font-style: italic;
  font-weight: 400;
  text-transform: none;
  letter-spacing: -0.015em;
  color: var(--mustard);
}
.section-hero-full__title .word-3 {
  font-size: clamp(2.5rem, 8vw, 5.5rem);
  letter-spacing: 0.005em;
}

.section-hero-full__tag {
  font-family: var(--font-accent);
  font-style: italic;
  font-size: clamp(1.05rem, 2.1vw, 1.4rem);
  color: var(--mustard);
  margin: 0 0 1rem;
  line-height: 1.35;
}

.section-hero-full__sub {
  font-family: var(--font-body);
  font-size: 1rem;
  line-height: 1.6;
  color: var(--paper);
  opacity: 0.95;
  margin: 0 0 1.5rem;
  max-width: 56ch;
}

.section-hero-full__ctas {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
}

/* Foot stats strip */
.section-hero-full__foot {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1.5rem;
  padding-top: 1.25rem;
  border-top: 1px solid rgba(217, 166, 77, 0.4);
}
.section-hero-full__foot .item {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  color: var(--paper);
}
.section-hero-full__foot .item .num {
  font-family: var(--font-poster);
  font-weight: 900;
  font-size: clamp(1.8rem, 3vw, 2.6rem);
  line-height: 1;
  color: var(--mustard);
  letter-spacing: -0.01em;
}
.section-hero-full__foot .item .lbl {
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.1em;
  font-size: 0.8rem;
  font-weight: 700;
  color: var(--paper);
}
.section-hero-full__foot .item .sub {
  font-family: var(--font-body);
  font-size: 0.78rem;
  color: var(--paper);
  opacity: 0.75;
}
@media (max-width: 720px) {
  .section-hero-full__foot { grid-template-columns: repeat(2, 1fr); gap: 1rem; }
}
@media (max-width: 420px) {
  .section-hero-full__foot { grid-template-columns: 1fr; }
}

/* Scroll cue — bottom right */
.section-hero-full__scroll {
  position: absolute;
  right: var(--gutter);
  bottom: 1.5rem;
  display: flex;
  align-items: center;
  gap: 0.5rem;
  text-decoration: none;
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.18em;
  font-size: 0.72rem;
  font-weight: 700;
  color: var(--mustard);
  padding: 0.4rem 0.75rem;
  border: 1px solid rgba(217, 166, 77, 0.5);
  background: rgba(20, 23, 20, 0.35);
  backdrop-filter: blur(2px);
  transition: transform 0.2s var(--ease);
}
.section-hero-full__scroll:hover {
  transform: translateY(-2px);
  border-color: var(--mustard);
}
.section-hero-full__scroll-arrow {
  display: inline-block;
  animation: section-hero-scroll-bob 1.8s ease-in-out infinite;
}
@keyframes section-hero-scroll-bob {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(3px); }
}
@media (max-width: 640px) {
  .section-hero-full__scroll { display: none; }
}

/* ──── Intro section ──── */

.adv-landing__intro {
  max-width: 64ch;
  margin: 0 auto 3rem;
  font-size: 1.08rem;
  line-height: 1.7;
  color: var(--ink);
}
.adv-landing__intro p { margin-bottom: 1.2rem; }
.adv-landing__intro p:last-child { margin-bottom: 0; }
.adv-landing__intro strong {
  font-family: var(--font-poster);
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  font-size: 0.92em;
  color: var(--clay);
}
.adv-landing__intro a { color: var(--teal); }
.adv-landing__intro a:hover { color: var(--clay); }

/* ──── Entry door cards ──── */

.adv-landing__doors {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem;
  margin: 0 0 4rem;
}
@media (max-width: 768px) {
  .adv-landing__doors { grid-template-columns: 1fr; }
}

.adv-door {
  display: flex;
  flex-direction: column;
  padding: 1.75rem 1.5rem 1.5rem;
  background: var(--paper);
  border: 2px solid var(--ink);
  box-shadow: 6px 6px 0 var(--ink);
  text-decoration: none;
  color: inherit;
  position: relative;
  transition: transform 0.18s var(--ease), box-shadow 0.18s var(--ease);
}
.adv-door:hover {
  transform: translate(-3px, -3px);
  box-shadow: 9px 9px 0 var(--ink);
}

.adv-door--picks { box-shadow: 6px 6px 0 var(--mustard); }
.adv-door--picks:hover { box-shadow: 9px 9px 0 var(--mustard); }
.adv-door--all { box-shadow: 6px 6px 0 var(--teal); }
.adv-door--all:hover { box-shadow: 9px 9px 0 var(--teal); }
.adv-door--permits {
  background: var(--clay);
  color: var(--paper);
  box-shadow: 6px 6px 0 var(--ink);
}
.adv-door--permits:hover { box-shadow: 9px 9px 0 var(--ink); }

.adv-door__eyebrow {
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.16em;
  font-size: 0.7rem;
  font-weight: 700;
  color: var(--clay);
  margin-bottom: 0.5rem;
}
.adv-door--permits .adv-door__eyebrow { color: var(--mustard); }

.adv-door__title {
  font-family: var(--font-poster);
  font-weight: 800;
  text-transform: uppercase;
  font-size: 1.6rem;
  line-height: 1;
  letter-spacing: -0.005em;
  color: var(--teal-deep);
  margin: 0 0 0.65rem;
}
.adv-door--permits .adv-door__title { color: var(--paper); }

.adv-door__copy {
  font-size: 0.95rem;
  line-height: 1.45;
  color: var(--ink-soft);
  margin: 0 0 1rem;
  flex: 1;
}
.adv-door--permits .adv-door__copy { color: var(--paper); opacity: 0.95; }

.adv-door__arrow {
  align-self: flex-end;
  font-family: var(--font-poster);
  font-size: 1.5rem;
  line-height: 1;
  color: var(--clay);
  font-weight: 800;
}
.adv-door--permits .adv-door__arrow { color: var(--mustard); }

/* ──── Section headers within the landing ──── */

.adv-landing__section-head {
  margin: 3rem 0 1.5rem;
  padding-bottom: 0.6rem;
  border-bottom: 2px solid var(--mustard);
}
.adv-landing__section-head:first-child { margin-top: 0; }

.adv-landing__section-title {
  font-family: var(--font-poster);
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.02em;
  font-size: clamp(1.6rem, 3vw, 2.1rem);
  color: var(--teal-deep);
  margin: 0 0 0.4rem;
}
.adv-landing__picks .adv-landing__section-title { color: var(--clay); }

.adv-landing__section-sub {
  font-family: var(--font-accent);
  font-style: italic;
  font-size: 1.05rem;
  color: var(--ink-soft);
  margin: 0;
}

/* ──── Stories cross-link strip ──── */

.adv-landing__stories {
  margin-top: 4rem;
}
.adv-landing__stories-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
  gap: 1.25rem;
  margin-bottom: 1.5rem;
}

.adv-story-card {
  display: flex;
  flex-direction: column;
  padding: 1.25rem 1.25rem 1.1rem;
  background: var(--paper-soft);
  border: 1.5px solid var(--ink);
  text-decoration: none;
  color: inherit;
  transition: transform 0.15s var(--ease), box-shadow 0.15s var(--ease);
  box-shadow: 3px 3px 0 var(--teal);
}
.adv-story-card:hover {
  transform: translate(-2px, -2px);
  box-shadow: 5px 5px 0 var(--teal);
}
.adv-story-card__eyebrow {
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.14em;
  font-size: 0.65rem;
  font-weight: 700;
  color: var(--mustard-deep);
  margin: 0 0 0.4rem;
}
.adv-story-card__title {
  font-family: var(--font-poster);
  font-weight: 800;
  text-transform: uppercase;
  font-size: 1.05rem;
  line-height: 1.15;
  color: var(--teal-deep);
  margin: 0 0 0.5rem;
}
.adv-story-card__excerpt {
  font-size: 0.85rem;
  line-height: 1.45;
  color: var(--ink-soft);
  margin: 0 0 0.75rem;
  flex: 1;
}
.adv-story-card__cta {
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-size: 0.72rem;
  font-weight: 700;
  color: var(--clay);
}

.adv-landing__stories-more {
  font-family: var(--font-poster);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  font-size: 0.85rem;
  font-weight: 700;
  text-align: right;
}
.adv-landing__stories-more a { color: var(--clay); text-decoration: none; }
.adv-landing__stories-more a:hover { text-decoration: underline; }

/* ──── Caveats footer ──── */

.adv-landing__hedge {
  margin-top: 4rem;
  padding: 1.75rem 2rem;
  background: var(--paper-deep);
  border: 2px solid var(--ink);
  border-left: 8px solid var(--clay);
}
.adv-landing__hedge h3 {
  font-family: var(--font-poster);
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  font-size: 0.95rem;
  color: var(--clay);
  margin: 0 0 0.9rem;
}
.adv-landing__hedge ul {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  gap: 0.75rem;
}
.adv-landing__hedge li {
  font-size: 0.92rem;
  line-height: 1.55;
  color: var(--ink-soft);
  padding-left: 1rem;
  position: relative;
}
.adv-landing__hedge li::before {
  content: '✦';
  position: absolute;
  left: 0;
  color: var(--mustard-deep);
}
.adv-landing__hedge strong { color: var(--ink); font-weight: 700; }
.adv-landing__hedge a { color: var(--clay); }

/* ──── Section spacing inside landing ──── */

.adv-landing__picks,
.adv-landing__directory {
  margin-top: 4rem;
}
.adv-landing__directory .adv-archive__filters { margin-top: 1.5rem; }

/* ====================================================================
   Procedurally-generated placeholder SVGs (lib/placeholder-svg.php)
   For businesses without a featured image. SVG fills the same media
   container as a real photo would, no filters (the design is meant to
   read as a poster, not a photograph).
   ==================================================================== */
.emv-placeholder { width: 100%; height: 100%; display: block; }
.listing-card__media .emv-placeholder,
.listing-card__photo .emv-placeholder,
.pick-hero__img .emv-placeholder,
.pick-mini__img .emv-placeholder,
.biz-img .emv-placeholder,
.hero__bg .emv-placeholder { width: 100%; height: 100%; object-fit: cover; filter: none; }

/* Homepage Featured: skip the sepia/multiply image filter on placeholder SVGs */
.biz-img--placeholder .emv-placeholder { mix-blend-mode: normal; opacity: 1; }

/* The placeholder is its own poster — no contrast/saturation tweaks. */
.listing-card__media--placeholder img,
.listing-card__photo--placeholder img,
.pick-hero__img--placeholder img,
.pick-mini__img--placeholder img,
.hero__bg--placeholder img { filter: none; }

/* ====================================================================
   Single-business HERO — no-photo variant
   Drops the photo-context layout (LISTING chip, side metadata, italic
   title split, redundant location pill, lede) in favor of a clean
   centered editorial column on a flat category-color background.
   ==================================================================== */
.hero-frame--centered {
	position: relative; z-index: 2;
	max-width: 760px; margin: 0 auto;
	padding: 5rem 2rem 4rem;
	text-align: center;
	color: var(--paper);
	display: flex; flex-direction: column; align-items: center; justify-content: center;
	min-height: 50vh;
	border: none;
	background: transparent;
	box-shadow: none;
}
/* Kill the deckled-stamp pseudo borders from .hero-frame on this variant.
   The centered/no-photo hero is a clean color field, not a framed poster. */
.hero-frame--centered::before,
.hero-frame--centered::after { display: none; }

/* Light-background categories (mustard for shop) need dark text for contrast.
   Default centered hero color is paper/cream which disappears on mustard. */
.hero-frame--cat-shop { color: var(--ink); }
.hero-frame--cat-shop .hero-name--clean,
.hero-frame--cat-shop .hero-eyebrow,
.hero-frame--cat-shop .hero-descriptor { color: var(--ink); }
.hero-frame--cat-shop .hero-tagline--centered { color: var(--ink); opacity: 0.92; }
.hero-frame--cat-shop .hero-est,
.hero-frame--cat-shop .hero-owner { color: var(--ink); border-color: var(--ink); }
.hero-frame--centered .hero-eyebrow {
	font-family: 'Big Shoulders Display', sans-serif;
	font-weight: 700; text-transform: uppercase;
	letter-spacing: 0.32em;
	font-size: 0.78rem;
	opacity: 0.7;
	margin: 0 0 2rem;
}
.hero-frame--centered .hero-name--clean {
	font-family: 'Big Shoulders Display', sans-serif;
	font-weight: 900; text-transform: uppercase;
	line-height: 0.95; letter-spacing: -0.015em;
	font-size: clamp(2.5rem, 7vw, 4.5rem);
	margin: 0 0 1.5rem;
}
.hero-frame--centered .hero-name--clean em { font-style: normal; } /* Strip any inline italics from title */
.hero-frame--centered .hero-tagline--centered {
	font-family: 'DM Serif Display', serif;
	font-style: italic;
	font-size: clamp(1.15rem, 2.2vw, 1.55rem);
	line-height: 1.4;
	max-width: 36ch;
	margin: 0 auto 1.5rem;
	color: var(--paper);
	opacity: 0.95;
}
.hero-frame--centered .hero-descriptor {
	font-family: 'Big Shoulders Display', sans-serif;
	font-weight: 700; text-transform: uppercase;
	letter-spacing: 0.18em;
	font-size: 0.85rem;
	opacity: 0.75;
	margin: 0 0 2rem;
}
.hero-frame--centered .hero-marks {
	display: flex; justify-content: center; gap: 0.6rem; flex-wrap: wrap;
	align-items: center;
}
.hero-frame--centered .hero-est {
	font-family: 'Big Shoulders Display', sans-serif;
	font-weight: 700; text-transform: uppercase;
	letter-spacing: 0.18em;
	font-size: 0.72rem;
	padding: 0.35rem 0.7rem;
	border: 1px solid var(--paper);
	opacity: 0.85;
}

/* Dim the dark overlay when no photo so the category color reads cleanly */
.hero__bg--no-photo + .hero__overlay { background: linear-gradient(180deg, rgba(0,0,0,0.18), rgba(0,0,0,0.32)); }

/* ====================================================================
   No-photo hero variants — drop the deckled stamp pseudo-borders
   The framing border around hero content exists to anchor typography
   against varied photo content. On no-photo (solid color) heroes, the
   border just adds visual noise. Same rule as .hero-frame--centered.
   ==================================================================== */
.story-hero--no-photo .story-hero__frame::before,
.story-hero--no-photo .story-hero__frame::after { display: none; }

.event-hero__frame.is-poster::before,
.event-hero__frame.is-poster::after { display: none; }

/* ====================================================================
   /about/ + /about/site/ visual upgrades (2026-05-25)
   - Hero photo backdrop for /about/ (the place)
   - Towns section becomes a card grid
   - Pull-quote treatment for both pages
   ==================================================================== */

/* --- Hero with photo backdrop (place page only) --- */
.pg-about__hero--photo {
	position: relative;
	min-height: 60vh;
	overflow: hidden;
	color: var(--paper);
}
.pg-about__hero--photo .pg-about__hero-bg {
	position: absolute; inset: 0; z-index: 0;
}
.pg-about__hero--photo .pg-about__hero-bg img {
	width: 100%; height: 100%; object-fit: cover;
	filter: brightness(0.7) saturate(0.85);
}
.pg-about__hero--photo .pg-about__hero-overlay {
	position: absolute; inset: 0; z-index: 1;
	background: linear-gradient(180deg, rgba(26,23,20,0.35) 0%, rgba(26,23,20,0.65) 100%);
}
.pg-about__hero--photo .pg-about__hero-inner {
	position: relative; z-index: 2;
	max-width: var(--max); margin: 0 auto;
	padding: 4rem var(--gutter);
	color: var(--paper);
}
.pg-about__hero--photo .pg-about__back { color: var(--paper); opacity: 0.85; }
.pg-about__hero--photo .pg-about__back:hover { opacity: 1; }
.pg-about__hero--photo .pg-about__eyebrow { color: var(--mustard); }
.pg-about__hero--photo .pg-about__title { color: var(--paper); }
.pg-about__hero--photo .pg-about__title em { color: var(--mustard); }
.pg-about__hero--photo .pg-about__lede { color: var(--paper); opacity: 0.95; }

/* --- Towns card grid (about page only — distinct from .town-card on Towns hub) --- */
.pg-about__towns-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
	gap: 1rem;
	margin: 1.5rem 0;
}
@media (min-width: 768px) {
	.pg-about__towns-grid { grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 1.25rem; }
}
/* Higher-specificity selectors override .pg-about__section-body a underline. */
.pg-about__section-body .pg-about__town-card,
a.pg-about__town-card {
	display: flex; flex-direction: column; gap: 0.4rem;
	padding: 1.5rem 1.4rem 1.4rem;
	background: var(--paper);
	border: 2px solid var(--ink);
	box-shadow: 5px 5px 0 var(--clay);
	text-decoration: none !important;
	color: var(--ink);
	transition: transform 0.18s var(--ease), box-shadow 0.18s var(--ease);
}
.pg-about__section-body .pg-about__town-card:hover,
a.pg-about__town-card:hover {
	transform: translate(-3px, -3px);
	box-shadow: 8px 8px 0 var(--clay);
}
.pg-about__town-card-num {
	font-family: 'Big Shoulders Display', sans-serif;
	font-weight: 700; letter-spacing: 0.18em;
	font-size: 0.72rem; color: var(--clay);
	text-transform: uppercase;
	text-decoration: none;
}
.pg-about__town-card-name {
	font-family: 'Big Shoulders Display', sans-serif;
	font-weight: 900; text-transform: uppercase;
	font-size: 1.55rem; line-height: 1; letter-spacing: -0.01em;
	color: var(--ink);
	text-decoration: none;
}
.pg-about__town-card-desc {
	font-size: 0.92rem; line-height: 1.45;
	color: var(--ink-soft);
	text-decoration: none;
}

/* --- Pull-quote treatment (about pages — distinct from site-wide .pullquote ticket) --- */
.pg-about__pullquote,
.pg-about blockquote.pg-about__pullquote {
	font-family: 'DM Serif Display', serif;
	font-style: italic;
	font-size: clamp(1.5rem, 2.6vw, 2rem);
	line-height: 1.3;
	color: var(--ink);
	max-width: 26ch;
	margin: 2.5rem auto;
	padding: 1rem 0 1rem 1.5rem;
	border-left: 4px solid var(--clay);
	background: transparent;
	text-align: left;
}

/* ====================================================================
   SEASON LANDING — /summer/ + /winter/  (2026-05-25)
   ==================================================================== */
.pg-season { background: var(--paper-soft); }

/* ─── Hero ─── */
.pg-season__hero {
	position: relative;
	min-height: 65vh;
	overflow: hidden;
	color: var(--paper);
}
.pg-season__hero-bg { position: absolute; inset: 0; z-index: 0; }
.pg-season__hero-bg img { width: 100%; height: 100%; object-fit: cover; filter: brightness(0.55) saturate(0.85); }
.pg-season__hero-overlay {
	position: absolute; inset: 0; z-index: 1;
	background: linear-gradient(180deg, rgba(26,23,20,0.2) 0%, rgba(26,23,20,0.7) 100%);
}
.pg-season__hero-inner {
	position: relative; z-index: 2;
	max-width: 1100px; margin: 0 auto;
	padding: 4rem 2rem;
	min-height: 65vh;
	display: flex; flex-direction: column; justify-content: flex-end;
}
.pg-season__back {
	color: var(--paper); opacity: 0.85;
	text-decoration: none;
	font-family: 'Big Shoulders Display', sans-serif; font-weight: 700;
	text-transform: uppercase; letter-spacing: 0.18em;
	font-size: 0.72rem;
	margin-bottom: 2rem;
	align-self: flex-start;
}
.pg-season__back:hover { opacity: 1; color: var(--mustard); }
.pg-season__eyebrow {
	font-family: 'Big Shoulders Display', sans-serif;
	font-weight: 700; text-transform: uppercase; letter-spacing: 0.28em;
	font-size: 0.85rem; color: var(--mustard);
	margin: 0 0 1rem;
}
.pg-season__title {
	font-family: 'Big Shoulders Display', sans-serif;
	font-weight: 900; text-transform: uppercase;
	font-size: clamp(3rem, 8vw, 5.5rem);
	line-height: 0.9; letter-spacing: -0.02em;
	color: var(--paper);
	margin: 0 0 1.5rem;
}
.pg-season__title em {
	font-family: 'DM Serif Display', serif;
	font-style: italic; font-weight: 400;
	color: var(--mustard); text-transform: none;
	letter-spacing: 0;
}
.pg-season__lede {
	font-family: 'DM Serif Display', serif;
	font-style: italic;
	font-size: clamp(1.15rem, 2vw, 1.5rem);
	line-height: 1.5;
	max-width: 44ch;
	color: var(--paper); opacity: 0.95;
	margin: 0;
}

/* ─── Intro (drop-cap paragraph) ─── */
.pg-season__intro {
	background: var(--paper);
	padding: 4rem 2rem;
	border-bottom: 2px solid var(--ink);
}
.pg-season__intro-inner { max-width: 1100px; margin: 0 auto; }
.pg-season__intro p { max-width: 65ch; }
.pg-season__intro p {
	font-family: 'DM Serif Display', serif;
	font-size: 1.35rem; line-height: 1.55;
	color: var(--ink);
	margin: 0 0 1.4rem;
}
.pg-season__intro p:last-child { margin-bottom: 0; }
.pg-season__intro p:first-of-type::first-letter {
	font-family: 'Big Shoulders Display', sans-serif;
	font-weight: 900;
	float: left;
	font-size: 5.4rem;
	line-height: 0.85;
	padding: 0.4rem 0.7rem 0 0;
	color: var(--clay);
}

/* ─── Sections ─── */
.pg-season__section { padding: 4rem 2rem; }
.pg-season__section:nth-of-type(even) { background: var(--paper); }
.pg-season__section-inner { max-width: 900px; margin: 0 auto; }
.pg-season__section-head {
	display: flex; align-items: baseline; gap: 1.2rem;
	margin-bottom: 1.5rem;
}
.pg-season__section-num {
	font-family: 'Big Shoulders Display', sans-serif;
	font-weight: 900;
	font-size: 2.2rem;
	color: var(--clay);
	line-height: 1;
}
.pg-season__section-title {
	font-family: 'Big Shoulders Display', sans-serif;
	font-weight: 900; text-transform: uppercase;
	font-size: clamp(1.7rem, 3.2vw, 2.4rem);
	line-height: 1; letter-spacing: -0.01em;
	color: var(--ink);
	margin: 0;
}
.pg-season__section-rule {
	flex: 1; max-width: 240px;
	height: 2px; background: var(--ink);
	margin-left: auto;
	align-self: center;
}
.pg-season__section-body p { font-size: 1.05rem; line-height: 1.7; margin: 0 0 1rem; color: var(--ink); }
.pg-season__section-body p:last-child { margin-bottom: 0; }
.pg-season__section-body strong { color: var(--clay); font-weight: 700; }
.pg-season__section-body a { color: var(--teal); border-bottom: 1px solid var(--teal); text-decoration: none; }
.pg-season__section-body ul { padding-left: 1.4rem; margin: 0 0 1rem; }
.pg-season__section-body li { margin-bottom: 0.6rem; line-height: 1.6; }

/* ─── Pair link (to other season) ─── */
.pg-season__pair {
	background: var(--ink);
	color: var(--paper);
	padding: 3rem 2rem;
	border-top: 3px solid var(--ink);
}
.pg-season__pair-inner { max-width: 900px; margin: 0 auto; }
.pg-season__pair-link {
	display: flex; flex-direction: column; gap: 0.4rem;
	padding: 2rem 2.5rem;
	background: var(--paper);
	color: var(--ink);
	border: 2px solid var(--paper);
	box-shadow: 6px 6px 0 var(--mustard);
	text-decoration: none;
	transition: transform 0.18s ease, box-shadow 0.18s ease;
}
.pg-season__pair-link:hover {
	transform: translate(-3px, -3px);
	box-shadow: 9px 9px 0 var(--mustard);
}
.pg-season__pair-eyebrow {
	font-family: 'Big Shoulders Display', sans-serif;
	font-weight: 700; text-transform: uppercase; letter-spacing: 0.22em;
	font-size: 0.72rem; color: var(--clay);
}
.pg-season__pair-title {
	font-family: 'Big Shoulders Display', sans-serif;
	font-weight: 900; text-transform: uppercase;
	font-size: 2rem; line-height: 1; color: var(--ink);
}
.pg-season__pair-title em {
	font-family: 'DM Serif Display', serif;
	font-style: italic; font-weight: 400;
	color: var(--teal); text-transform: none;
}
.pg-season__pair-months {
	font-family: 'Big Shoulders Display', sans-serif;
	font-weight: 700; text-transform: uppercase; letter-spacing: 0.2em;
	font-size: 0.85rem; color: var(--ink-soft);
}

/* ====================================================================
   COMMUNITY CPTs (school, library, government, nonprofit, cultural_site,
   religious_site). Shared archive + single styles. 2026-05-25.
   ==================================================================== */

/* ─── Archive ─── */
.community-archive { background: var(--paper-soft); }
.community-archive__hero {
	padding: 4rem 2rem 3rem;
	border-bottom: 3px solid var(--ink);
}
.community-archive__hero-inner { max-width: 1100px; margin: 0 auto; }
.community-archive__back {
	font-family: 'Big Shoulders Display', sans-serif;
	font-weight: 700; text-transform: uppercase; letter-spacing: 0.18em;
	font-size: 0.72rem;
	text-decoration: none; opacity: 0.85;
	margin-bottom: 1.5rem; display: inline-block;
}
.community-archive__back:hover { opacity: 1; }
.community-archive__eyebrow {
	font-family: 'Big Shoulders Display', sans-serif;
	font-weight: 700; text-transform: uppercase; letter-spacing: 0.28em;
	font-size: 0.82rem;
	margin: 0 0 1rem;
}
.community-archive__title {
	font-family: 'Big Shoulders Display', sans-serif;
	font-weight: 900; text-transform: uppercase;
	font-size: clamp(2.5rem, 6vw, 4rem);
	line-height: 0.95; letter-spacing: -0.015em;
	margin: 0 0 1rem;
}
.community-archive__title em {
	font-family: 'DM Serif Display', serif;
	font-style: italic; font-weight: 400; text-transform: none;
}
.community-archive__lede {
	font-family: 'DM Serif Display', serif; font-style: italic;
	font-size: clamp(1.1rem, 1.8vw, 1.4rem); line-height: 1.5;
	max-width: 50ch; margin: 0; opacity: 0.95;
}
.community-archive__results { padding: 3rem 2rem 4rem; }
.community-archive__results-inner { max-width: 1100px; margin: 0 auto; }
.community-archive__count {
	font-family: 'Big Shoulders Display', sans-serif;
	font-weight: 700; text-transform: uppercase; letter-spacing: 0.18em;
	font-size: 0.78rem; color: var(--clay);
	margin: 0 0 1.5rem;
}
.community-archive__grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
	gap: 1.5rem;
}
.community-archive__empty {
	font-family: 'DM Serif Display', serif; font-style: italic;
	font-size: 1.2rem; color: var(--ink-soft);
	text-align: center; padding: 3rem 0;
}

/* Note: legacy .community-card and .community-tag-* removed 2026-05-26.
   Their template-parts/cards/community-card.php partial was orphaned when
   the community archive template switched to inline .community-card-v2 markup. */

/* ─── Single ─── */
/* Legacy single-template styles (prose + sticky-sidebar layout) removed
   2026-06-11 (mobile pass follow-up). The block was superseded by the
   SHARED SINGLE TEMPLATE styles below (~line 11400) but kept leaking:
   a 3px hero border-bottom, a 1100px max-width on the absolute hero-inner,
   and .community-single__main p color/margins that overrode the live
   about-body styling. */

/* ─── /community/ hub ─── */
.pg-community { background: var(--paper-soft); }
.pg-community__hero {
	background: var(--ink);
	color: var(--paper);
	padding: 4rem 2rem 3rem;
	border-bottom: 3px solid var(--ink);
}
.pg-community__hero-inner { max-width: 1100px; margin: 0 auto; }
.pg-community__back {
	color: var(--paper); opacity: 0.85; text-decoration: none;
	font-family: 'Big Shoulders Display', sans-serif; font-weight: 700;
	text-transform: uppercase; letter-spacing: 0.18em; font-size: 0.72rem;
	margin-bottom: 1.5rem; display: inline-block;
}
.pg-community__back:hover { opacity: 1; color: var(--mustard); }
.pg-community__eyebrow {
	font-family: 'Big Shoulders Display', sans-serif;
	font-weight: 700; text-transform: uppercase; letter-spacing: 0.28em;
	font-size: 0.82rem; color: var(--mustard); margin: 0 0 1rem;
}
.pg-community__title {
	font-family: 'Big Shoulders Display', sans-serif;
	font-weight: 900; text-transform: uppercase;
	font-size: clamp(3.5rem, 9vw, 7rem);
	line-height: 0.9; letter-spacing: -0.02em;
	color: var(--paper); margin: 0 0 1.5rem;
}
.pg-community__title em {
	font-family: 'DM Serif Display', serif;
	font-style: italic; font-weight: 400;
	color: var(--mustard); text-transform: none;
}
.pg-community__lede {
	font-family: 'DM Serif Display', serif; font-style: italic;
	font-size: clamp(1.15rem, 2vw, 1.55rem); line-height: 1.5;
	max-width: 55ch; color: var(--paper); opacity: 0.95; margin: 0;
}
.pg-community__intro { padding: 3rem 2rem; background: var(--paper); border-bottom: 2px solid var(--ink); }
.pg-community__intro-inner { max-width: 1100px; margin: 0 auto; }
.pg-community__intro p { font-size: 1.05rem; line-height: 1.7; color: var(--ink); margin: 0 0 1.2rem; max-width: 65ch; }
.pg-community__intro p:last-child { margin-bottom: 0; }
.pg-community__intro a { color: var(--clay); text-decoration: underline; text-underline-offset: 3px; }
.pg-community__grid-section { padding: 3rem 2rem 5rem; }
.pg-community__grid {
	max-width: 1100px; margin: 0 auto;
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
	gap: 1.5rem;
}
.community-type-card {
	display: flex; flex-direction: column;
	background: var(--paper);
	border: 2px solid var(--ink);
	box-shadow: 6px 6px 0 var(--ink);
	text-decoration: none; color: var(--ink);
	transition: transform 0.18s ease, box-shadow 0.18s ease;
	overflow: hidden;
}
.community-type-card:hover {
	transform: translate(-3px, -3px);
	box-shadow: 9px 9px 0 var(--type-color, var(--clay));
}
.community-type-card__band {
	display: flex; justify-content: space-between; align-items: center;
	padding: 1.5rem 1.5rem 1.2rem;
	background: var(--type-color, var(--ink));
	color: var(--paper);
}
.community-type-card__band .dashicons {
	font-size: 2rem; width: 2rem; height: 2rem; color: var(--paper); opacity: 0.95;
}
.community-type-card__count {
	font-family: 'Big Shoulders Display', sans-serif;
	font-weight: 900; font-size: 2rem; color: var(--paper);
	line-height: 1;
}
.community-type-card__body { padding: 1.5rem; display: flex; flex-direction: column; gap: 0.6rem; flex: 1; }
.community-type-card__title {
	font-family: 'Big Shoulders Display', sans-serif;
	font-weight: 900; text-transform: uppercase;
	font-size: 1.5rem; line-height: 1; letter-spacing: -0.005em;
	margin: 0; color: var(--ink);
}
.community-type-card__lede { font-size: 0.95rem; line-height: 1.5; color: var(--ink-soft); margin: 0; flex: 1; }
.community-type-card__arrow {
	font-family: 'Big Shoulders Display', sans-serif;
	font-weight: 800; text-transform: uppercase; letter-spacing: 0.16em;
	font-size: 0.72rem; color: var(--clay);
	margin-top: 0.5rem;
}

/* ====================================================================
   /about/ — Mockup port: integrated section-headers, CSKT band,
   2-col distinctive section, dark about-site footer band (2026-05-25)
   ==================================================================== */

/* Default section band */
.pg-about__band { padding: 4rem 2rem; }
.pg-about__band:nth-of-type(even) { background: var(--paper); }
.pg-about__band-inner { max-width: 1100px; margin: 0 auto; }

/* Section header row: num + title + rule inline */
.pg-about__shead {
	display: flex; align-items: baseline; gap: 1.2rem;
	margin-bottom: 1.8rem;
}
.pg-about__shead-num {
	font-family: 'Big Shoulders Display', sans-serif;
	font-weight: 900;
	font-size: 2.5rem;
	color: var(--clay);
	line-height: 1;
	letter-spacing: -0.02em;
}
.pg-about__shead-title {
	font-family: 'Big Shoulders Display', sans-serif;
	font-weight: 900; text-transform: uppercase;
	font-size: clamp(1.8rem, 3.6vw, 2.6rem);
	line-height: 1; letter-spacing: -0.01em;
	color: var(--ink);
	margin: 0;
}
.pg-about__shead-title em {
	font-family: 'DM Serif Display', serif;
	font-style: italic; font-weight: 400;
	color: var(--teal); text-transform: none;
}
.pg-about__shead-rule {
	flex: 1; max-width: 220px;
	height: 2px; background: var(--ink);
	margin-left: auto;
	align-self: center;
}

.pg-about__band-body p { font-size: 1.05rem; line-height: 1.7; color: var(--ink); margin: 0 0 1rem; max-width: 70ch; }
.pg-about__band-body p:last-child { margin-bottom: 0; }
.pg-about__band-body strong { color: var(--clay); font-weight: 700; }
.pg-about__band-body a { color: var(--teal); text-decoration: underline; text-underline-offset: 3px; }

/* ─── CSKT band: full-width teal ─── */
.pg-about__band--cskt {
	background: var(--teal) !important;
	color: var(--paper);
	border-top: 3px solid var(--ink);
	border-bottom: 3px solid var(--ink);
}
.pg-about__band--cskt .pg-about__shead-num { color: var(--mustard); }
.pg-about__band--cskt .pg-about__shead-title { color: var(--paper); }
.pg-about__band--cskt .pg-about__shead-title em { color: var(--mustard); }
.pg-about__band--cskt .pg-about__shead-rule { background: var(--mustard); opacity: 0.55; }
.pg-about__band--cskt .pg-about__band-body p { color: var(--paper); }
.pg-about__band--cskt .pg-about__band-body a { color: var(--mustard); text-decoration: underline; text-decoration-color: var(--mustard); }
.pg-about__band--cskt .pg-about__band-body strong { color: var(--mustard); }

/* ─── Distinctive: 2-column with pull quote on right ─── */
.pg-about__band--distinctive .pg-about__two-col {
	display: grid; grid-template-columns: 1fr 1fr; gap: 4rem;
	align-items: start;
}
@media (max-width: 800px) {
	.pg-about__band--distinctive .pg-about__two-col { grid-template-columns: 1fr; gap: 2rem; }
}
.pg-about__band--distinctive .pg-about__two-col p { font-size: 1.05rem; line-height: 1.7; max-width: none; margin: 0; }
.pg-about__band--distinctive .pg-about__two-col blockquote.pg-about__pullquote {
	margin: 0; padding: 0 0 0 1.5rem;
	max-width: none;
	border-left: 6px solid var(--clay);
	font-family: 'DM Serif Display', serif;
	font-style: italic;
	font-size: clamp(1.6rem, 3vw, 2.2rem);
	line-height: 1.25;
	color: var(--ink);
	background: transparent;
	text-align: left;
}

/* ─── About-site footer band: dark with CTA ─── */
.pg-about__band--about-site {
	background: var(--ink) !important;
	color: var(--paper);
	padding: 4rem 2rem 4.5rem;
	border-top: 3px solid var(--ink);
	text-align: center;
}
.pg-about__band-inner--centered { text-align: center; max-width: 640px; margin: 0 auto; }
.pg-about__about-site-eyebrow {
	font-family: 'Big Shoulders Display', sans-serif;
	font-weight: 700; text-transform: uppercase; letter-spacing: 0.28em;
	font-size: 0.78rem; color: var(--mustard);
	margin: 0 0 1rem;
}
.pg-about__about-site-title {
	font-family: 'Big Shoulders Display', sans-serif;
	font-weight: 900; text-transform: uppercase;
	font-size: clamp(2rem, 4.5vw, 2.8rem); line-height: 1;
	color: var(--paper); margin: 0 0 1.2rem;
}
.pg-about__about-site-title em {
	font-family: 'DM Serif Display', serif;
	font-style: italic; font-weight: 400;
	color: var(--mustard); text-transform: none;
}
.pg-about__about-site-body p {
	font-size: 1rem; line-height: 1.65;
	color: var(--paper); opacity: 0.85;
	margin: 0 0 1.5rem; max-width: none;
}
.pg-about__about-site-body a { color: var(--mustard); text-decoration: underline; }
.pg-about__about-site-cta {
	display: inline-block;
	font-family: 'Big Shoulders Display', sans-serif;
	font-weight: 800; text-transform: uppercase; letter-spacing: 0.18em;
	font-size: 0.85rem;
	padding: 0.95rem 1.6rem;
	background: var(--clay); color: var(--paper);
	border: 2px solid var(--paper);
	box-shadow: 5px 5px 0 var(--mustard);
	text-decoration: none;
	transition: transform 0.18s ease, box-shadow 0.18s ease;
}
.pg-about__about-site-cta:hover {
	transform: translate(-2px, -2px);
	box-shadow: 7px 7px 0 var(--mustard);
	color: var(--paper);
}

/* ============================================================
   SINGLE SCHOOL TEMPLATE
   Mirrors mockups/single-school-polson-high.html
   ============================================================ */

.school-single { max-width: var(--max); margin: 0 auto; padding: 0 0 4rem; }

.school-single__crumbs {
	max-width: var(--max); margin: 0 auto;
	padding: 1rem var(--gutter) 0;
	font-family: var(--font-poster); font-weight: 700;
	letter-spacing: 0.18em; text-transform: uppercase; font-size: 0.72rem;
	color: var(--ink-soft);
}
.school-single__crumbs a { color: var(--clay); text-decoration: none; }
.school-single__crumbs a:hover { color: var(--ink); }
.school-single__crumbs .sep { margin: 0 0.4rem; color: var(--ink-soft); }

/* 1. Hero */
.school-single__hero { padding: 1.4rem var(--gutter) 0; }
.school-single__hero-frame {
	position: relative;
	border: 3px solid var(--ink);
	box-shadow: 8px 8px 0 var(--ink);
	overflow: hidden;
	background: var(--paper-soft);
}
.school-single__hero-img {
	aspect-ratio: 21 / 9;
	background-size: cover;
	background-position: center;
	position: relative;
}
.school-single__hero-img--placeholder {
	background: linear-gradient(160deg, var(--teal-deep) 0%, var(--teal) 45%, var(--clay-deep) 100%);
}
.school-single__hero-img--placeholder::after {
	content: ''; position: absolute; inset: 0;
	background-image: radial-gradient(circle, rgba(0,0,0,0.22) 0.8px, transparent 1.3px);
	background-size: 5px 5px; opacity: 0.55; mix-blend-mode: multiply;
}
.school-single__photo-tag {
	position: absolute; top: 1rem; right: 1rem; z-index: 2;
	background: var(--ink); color: var(--paper);
	padding: 0.34rem 0.6rem;
	font-family: var(--font-poster); font-weight: 800;
	font-size: 0.66rem; letter-spacing: 0.18em; text-transform: uppercase;
	border: 1.5px solid var(--mustard);
}
.school-single__hero-inner {
	position: absolute; left: 0; right: 0; bottom: 0;
	padding: 2rem var(--gutter);
	background: linear-gradient(to top, rgba(0,0,0,0.7), transparent);
	color: var(--paper); z-index: 1;
}
.school-single__eyebrow {
	font-family: var(--font-poster); font-weight: 800;
	letter-spacing: 0.24em; text-transform: uppercase; font-size: 0.78rem;
	color: var(--mustard); margin-bottom: 0.7rem; display: block;
}
.school-single__title {
	font-family: var(--font-poster); font-weight: 900;
	text-transform: uppercase; line-height: 0.9;
	font-size: clamp(2.2rem, 5.5vw, 4.6rem); letter-spacing: -0.018em;
	margin: 0 0 0.5rem; color: var(--paper);
}
.school-single__badges {
	display: flex; flex-wrap: wrap; gap: 0.5rem; margin-top: 0.9rem;
}
.school-badge {
	display: inline-flex; align-items: center; gap: 0.4rem;
	font-family: var(--font-poster); font-weight: 800;
	text-transform: uppercase; letter-spacing: 0.14em; font-size: 0.72rem;
	padding: 0.35rem 0.7rem;
	border: 2px solid var(--ink);
}
.school-badge--type-public  { background: var(--teal); color: var(--paper); border-color: var(--paper); }
.school-badge--type-private { background: var(--mustard); color: var(--ink); }
.school-badge--type-tribal  { background: var(--forest); color: var(--paper); border-color: var(--mustard); }
.school-badge--type-charter { background: var(--clay-deep); color: var(--paper); border-color: var(--mustard); }
.school-badge--grades { background: var(--paper); color: var(--ink); }
.school-badge--town   { background: var(--clay); color: var(--paper); border-color: var(--paper); }
.school-badge--status { background: var(--mustard); color: var(--ink); border-color: var(--ink); }
.school-badge--status::before {
	content: ''; width: 8px; height: 8px; border-radius: 50%;
	background: var(--clay); animation: school-pulse 1.8s infinite;
}
@keyframes school-pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.4; } }

/* 2. Identity strip */
.school-single__identity { max-width: var(--max); margin: 0 auto; padding: 2.4rem var(--gutter) 0; }
.school-single__identity-inner {
	display: grid; grid-template-columns: 1fr auto;
	gap: 2rem; align-items: center;
	padding: 1.5rem 0;
	border-top: 3px solid var(--ink); border-bottom: 3px solid var(--ink);
}
.school-single__crest-block { display: flex; align-items: center; gap: 1.2rem; }
.school-crest {
	width: 86px; height: 86px;
	border: 3px solid var(--ink);
	background: var(--ink); color: var(--mustard);
	display: flex; align-items: center; justify-content: center;
	flex: none; padding: 0.6rem;
}
.school-crest__body { display: flex; flex-direction: column; gap: 0.2rem; }
.school-crest__mascot {
	font-family: var(--font-poster); font-weight: 900;
	text-transform: uppercase; font-size: 1.6rem; line-height: 0.95;
	letter-spacing: 0.02em; margin: 0;
}
.school-crest__mascot em { font-family: var(--font-accent); font-style: italic; font-weight: 400; color: var(--clay); text-transform: none; }
.school-crest__motto {
	font-family: var(--font-accent); font-style: italic;
	font-size: 0.95rem; color: var(--ink-soft); margin: 0;
}
.school-single__colors {
	display: flex; flex-direction: column; gap: 0.5rem; align-items: flex-end;
}
.school-single__colors-label {
	font-family: var(--font-poster); font-weight: 800;
	letter-spacing: 0.18em; text-transform: uppercase; font-size: 0.7rem;
	color: var(--ink-soft);
}
.school-single__colors .swatches { display: flex; gap: 0.35rem; }
.school-single__colors .swatch { width: 30px; height: 30px; border: 2px solid var(--ink); display: inline-block; }
.school-single__colors .swatch--tbd {
	background:
		linear-gradient(45deg, transparent 46%, var(--ink) 47%, var(--ink) 53%, transparent 54%),
		var(--paper);
}
@media (max-width: 760px) {
	.school-single__identity-inner { grid-template-columns: 1fr; }
	.school-single__colors { align-items: flex-start; }
}

/* 3. Quick facts */
.school-single__facts { max-width: var(--max); margin: 0 auto; padding: 2rem var(--gutter) 0; }
.school-single__facts-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
	gap: 1rem;
}
.school-single__facts .fact {
	background: var(--paper-soft);
	border: 2px solid var(--ink);
	padding: 1rem 1.1rem;
	display: flex; flex-direction: column; gap: 0.25rem;
}
.school-single__facts .fact__lbl {
	font-family: var(--font-poster); font-weight: 800;
	letter-spacing: 0.18em; text-transform: uppercase; font-size: 0.66rem;
	color: var(--clay);
}
.school-single__facts .fact__val {
	font-family: var(--font-poster); font-weight: 700;
	font-size: 1.05rem; color: var(--ink); line-height: 1.2;
}
.school-single__facts .fact__val a { color: inherit; text-decoration: underline; text-decoration-color: var(--mustard); }
.school-single__facts .fact__sub {
	font-family: var(--font-body); font-size: 0.82rem;
	color: var(--ink-soft);
}

/* 4 + 6. Main + rail */
.school-single__main {
	max-width: var(--max); margin: 0 auto;
	padding: 4rem var(--gutter);
	display: grid; grid-template-columns: 1.6fr 1fr; gap: 3rem;
}
@media (max-width: 880px) { .school-single__main { grid-template-columns: 1fr; gap: 2.5rem; } }
.school-single__about-eyebrow {
	font-family: var(--font-poster); font-weight: 800;
	letter-spacing: 0.22em; text-transform: uppercase; font-size: 0.75rem;
	color: var(--clay); display: block; margin-bottom: 0.6rem;
}
.school-single__about-h2 {
	font-family: var(--font-poster); font-weight: 900;
	text-transform: uppercase; line-height: 0.95;
	font-size: clamp(1.8rem, 4vw, 2.8rem); letter-spacing: -0.01em;
	margin: 0 0 1.3rem;
}
.school-single__about-h2 em { font-family: var(--font-accent); font-style: italic; font-weight: 400; color: var(--teal); text-transform: none; }
.school-single__about-body { font-size: 1.05rem; line-height: 1.7; color: var(--ink-soft); }
.school-single__about-body p + p { margin-top: 1rem; }
.school-single__about-body p:first-child::first-letter {
	font-family: var(--font-poster); font-weight: 900;
	float: left; font-size: 3.8rem; line-height: 0.85;
	padding: 0.2rem 0.55rem 0 0; color: var(--clay);
}

.school-single__rail { display: flex; flex-direction: column; gap: 1.5rem; }
.school-single__rail .rail-card {
	background: var(--paper-soft);
	border: 2px solid var(--ink);
	box-shadow: 5px 5px 0 var(--ink);
	padding: 1.3rem 1.3rem 1.4rem;
}
.school-single__rail .rail-card h3 {
	font-family: var(--font-poster); font-weight: 900;
	text-transform: uppercase; font-size: 1.1rem; line-height: 1;
	letter-spacing: 0.04em; margin: 0 0 1rem;
	padding-bottom: 0.7rem; border-bottom: 2px solid var(--ink);
}
.school-single__rail .rail-card__list { display: grid; gap: 0.6rem; }
.school-single__rail .rail-card__list a {
	display: grid; grid-template-columns: 1fr auto; gap: 0.5rem; align-items: center;
	font-family: var(--font-poster); font-weight: 700;
	letter-spacing: 0.06em; font-size: 0.92rem;
	padding: 0.5rem 0.6rem;
	border: 1.5px solid var(--ink); background: var(--paper);
	transition: background 0.15s ease;
	color: var(--ink); text-decoration: none;
}
.school-single__rail .rail-card__list a:hover { background: var(--mustard); }
.school-single__rail .rail-card__list a .arrow { color: var(--clay); font-weight: 800; }
.school-single__rail .rail-card__list a.tbd { color: var(--ink-soft); border-style: dashed; background: transparent; pointer-events: none; }
.school-single__rail .rail-card__list a.tbd .arrow { color: var(--ink-soft); }

/* 5. Athletics strip */
.school-single__athletics {
	background: var(--teal-deep); color: var(--paper);
	border-top: 3px solid var(--ink); border-bottom: 3px solid var(--ink);
	padding: 4rem var(--gutter);
	position: relative;
	margin-top: 0;
}
.school-single__athletics::before {
	content: ''; position: absolute; top: -3px; left: 0; right: 0; height: 14px;
	background: repeating-linear-gradient(90deg, var(--ink) 0 14px, transparent 14px 28px);
}
.school-single__athletics-inner {
	max-width: var(--max); margin: 0 auto;
	display: grid; grid-template-columns: auto 1fr; gap: 3rem; align-items: center;
}
.school-single__athletics-mascot {
	width: 200px; height: 200px;
	border: 3px solid var(--mustard);
	background: var(--ink); color: var(--mustard);
	display: flex; align-items: center; justify-content: center;
	flex: none; padding: 1.4rem;
	box-shadow: 8px 8px 0 var(--clay-deep);
}
.school-single__athletics-eyebrow {
	font-family: var(--font-poster); font-weight: 800;
	letter-spacing: 0.24em; text-transform: uppercase; font-size: 0.78rem;
	color: var(--mustard); display: block; margin-bottom: 0.6rem;
}
.school-single__athletics-title {
	font-family: var(--font-poster); font-weight: 900;
	text-transform: uppercase; line-height: 0.9;
	font-size: clamp(2rem, 4.5vw, 3.4rem); letter-spacing: -0.015em;
	margin: 0 0 0.8rem; color: var(--paper);
}
.school-single__athletics-title em { font-family: var(--font-accent); font-style: italic; font-weight: 400; color: var(--mustard); text-transform: none; }
.school-single__athletics-conf {
	font-family: var(--font-accent); font-style: italic;
	font-size: 1.15rem; color: var(--paper-soft); margin: 0 0 1.3rem;
}
.school-single__sports {
	display: flex; flex-wrap: wrap; gap: 0.5rem;
}
.school-single__sports .chip {
	font-family: var(--font-poster); font-weight: 700;
	text-transform: uppercase; letter-spacing: 0.12em; font-size: 0.72rem;
	padding: 0.34rem 0.65rem;
	border: 1.5px solid var(--mustard);
	color: var(--paper); background: rgba(255,255,255,0.04);
}
@media (max-width: 760px) {
	.school-single__athletics-inner { grid-template-columns: 1fr; }
	.school-single__athletics-mascot { width: 150px; height: 150px; margin: 0 auto; }
}

/* 7. Events */
.school-single__events { max-width: var(--max); margin: 0 auto; padding: 4rem var(--gutter); }
.school-single__section-header {
	display: flex; justify-content: space-between; align-items: baseline;
	padding-bottom: 1rem; margin-bottom: 2rem;
	border-bottom: 3px solid var(--ink);
	flex-wrap: wrap; gap: 1rem;
}
.school-single__section-header h2 {
	font-family: var(--font-poster); font-weight: 900;
	text-transform: uppercase; font-size: clamp(1.6rem, 3.5vw, 2.4rem);
	letter-spacing: -0.01em; margin: 0;
}
.school-single__section-header h2 em { font-family: var(--font-accent); font-style: italic; font-weight: 400; color: var(--teal); text-transform: none; }
.school-single__section-header .link {
	font-family: var(--font-poster); font-weight: 700;
	text-transform: uppercase; letter-spacing: 0.14em; font-size: 0.78rem;
	color: var(--clay); text-decoration: none;
}
.school-single__events-grid {
	display: grid; gap: 1rem;
	grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
}
.school-single__events .event-card {
	background: var(--paper-soft);
	border: 2px solid var(--ink);
	box-shadow: 4px 4px 0 var(--ink);
	display: grid; grid-template-columns: 70px 1fr;
	gap: 0; min-height: 110px;
	transition: transform 0.2s ease, box-shadow 0.2s ease;
	text-decoration: none; color: inherit;
}
.school-single__events .event-card:hover { transform: translate(-2px, -2px); box-shadow: 7px 7px 0 var(--ink); }
.school-single__events .event-card__date {
	background: var(--clay); color: var(--paper);
	display: flex; flex-direction: column; align-items: center; justify-content: center;
	padding: 0.5rem; border-right: 2px solid var(--ink);
}
.school-single__events .event-card__date .month {
	font-family: var(--font-poster); font-weight: 900;
	font-size: 0.7rem; letter-spacing: 0.2em; text-transform: uppercase;
}
.school-single__events .event-card__date .day {
	font-family: var(--font-poster); font-weight: 900;
	font-size: 2.2rem; line-height: 1;
}
.school-single__events .event-card__body { padding: 0.85rem 1rem; display: flex; flex-direction: column; gap: 0.3rem; }
.school-single__events .event-card__title {
	font-family: var(--font-poster); font-weight: 800;
	text-transform: uppercase; font-size: 1rem; line-height: 1.1;
	color: var(--ink); margin: 0;
}
.school-single__events .event-card__meta {
	font-family: var(--font-poster); font-weight: 700;
	letter-spacing: 0.14em; text-transform: uppercase; font-size: 0.7rem;
	color: var(--ink-soft);
}
.school-single__events-empty {
	padding: 1.4rem;
	border: 2px dashed var(--ink-soft);
	background: transparent;
	font-family: var(--font-accent); font-style: italic;
	color: var(--ink-soft); text-align: center;
}

/* 8. Place in valley */
.school-single__place {
	background: var(--paper-deep);
	border-top: 3px solid var(--ink); border-bottom: 3px solid var(--ink);
	padding: 4rem var(--gutter);
}
.school-single__place-inner {
	max-width: var(--max); margin: 0 auto;
	display: grid; grid-template-columns: 1.2fr 1.8fr; gap: 3rem;
}
@media (max-width: 880px) { .school-single__place-inner { grid-template-columns: 1fr; gap: 2rem; } }
.school-single__place .place-town-card {
	background: var(--paper-soft);
	border: 2px solid var(--ink);
	box-shadow: 6px 6px 0 var(--mustard);
	padding: 1.6rem;
}
.school-single__place .place-town-card h3 {
	font-family: var(--font-poster); font-weight: 900;
	text-transform: uppercase; font-size: 1.8rem; line-height: 0.95;
	margin: 0 0 0.7rem;
}
.school-single__place .place-town-card h3 em { font-family: var(--font-accent); font-style: italic; font-weight: 400; color: var(--clay); text-transform: none; }
.school-single__place .place-town-card p { color: var(--ink-soft); margin: 0 0 1rem; line-height: 1.55; }
.school-single__place .place-town-card a {
	font-family: var(--font-poster); font-weight: 700;
	letter-spacing: 0.14em; text-transform: uppercase; font-size: 0.78rem;
	color: var(--clay); text-decoration: none;
}
.school-single__place .place-siblings h3 {
	font-family: var(--font-poster); font-weight: 800;
	letter-spacing: 0.18em; text-transform: uppercase; font-size: 0.8rem;
	color: var(--clay); margin: 0 0 1.2rem;
}
.school-single__place .place-siblings ul { list-style: none; display: grid; gap: 0.5rem; margin: 0; padding: 0; }
.school-single__place .place-siblings li a {
	display: grid; grid-template-columns: 1fr auto; gap: 0.5rem; align-items: center;
	font-family: var(--font-poster); font-weight: 700;
	letter-spacing: 0.04em; font-size: 1rem;
	padding: 0.7rem 0.9rem;
	background: var(--paper-soft); border: 1.5px solid var(--ink);
	transition: background 0.15s ease;
	color: var(--ink); text-decoration: none;
}
.school-single__place .place-siblings li a:hover { background: var(--mustard); }
.school-single__place .place-siblings li a .meta {
	font-family: var(--font-poster); font-weight: 700;
	font-size: 0.7rem; letter-spacing: 0.14em; text-transform: uppercase;
	color: var(--ink-soft);
}

/* 10. Admin CTA */
.school-single__cta {
	background: var(--paper-deep);
	border-top: 3px solid var(--ink); border-bottom: 3px solid var(--ink);
	padding: 3rem var(--gutter);
}
.school-single__cta-inner {
	max-width: var(--max); margin: 0 auto;
	display: grid; grid-template-columns: 1.6fr 1fr; gap: 2rem; align-items: center;
}
.school-single__cta-title {
	font-family: var(--font-poster); font-weight: 900;
	text-transform: uppercase; font-size: clamp(1.4rem, 3vw, 2rem);
	line-height: 1; color: var(--ink); margin: 0 0 0.6rem;
}
.school-single__cta-title em { font-family: var(--font-accent); font-style: italic; font-weight: 400; color: var(--teal); text-transform: none; }
.school-single__cta-lede { color: var(--ink-soft); max-width: 56ch; margin: 0; }
.school-single__cta-btn {
	justify-self: end;
	display: inline-flex; align-items: center; gap: 0.5rem;
	background: var(--clay); color: var(--paper);
	font-family: var(--font-poster); font-weight: 800;
	letter-spacing: 0.14em; text-transform: uppercase; font-size: 0.82rem;
	padding: 0.7rem 1.1rem;
	border: 2px solid var(--ink); box-shadow: 4px 4px 0 var(--ink);
	transition: transform 0.18s ease, box-shadow 0.18s ease;
	text-decoration: none;
}
.school-single__cta-btn:hover { transform: translate(-2px, -2px); box-shadow: 6px 6px 0 var(--ink); color: var(--paper); }
@media (max-width: 760px) {
	.school-single__cta-inner { grid-template-columns: 1fr; }
	.school-single__cta-btn { justify-self: start; }
}

/* School crest variant — when a real logo image is uploaded.
   Drops the fixed-square SVG box, lets the logo lay across at its natural
   aspect ratio (capped). Still sits on the dark "plate" for contrast. */
.school-crest--logo {
	width: auto;
	min-width: 86px;
	height: 86px;
	padding: 0.6rem 1rem;
}
.school-crest--logo img {
	max-height: 100%;
	max-width: 280px;
	width: auto;
	display: block;
}
@media (max-width: 760px) {
	.school-crest--logo { max-width: 100%; }
	.school-crest--logo img { max-width: 100%; }
}

/* ============================================================
   SCHOOLS ARCHIVE
   ============================================================ */
.schools-archive { padding: 0 0 4rem; }

.schools-archive__hero {
	background: var(--mustard);
	border-bottom: 3px solid var(--ink);
	padding: 4rem var(--gutter);
	position: relative;
}
.schools-archive__hero::before {
	content: ''; position: absolute; top: -3px; left: 0; right: 0; height: 14px;
	background: repeating-linear-gradient(90deg, var(--ink) 0 14px, transparent 14px 28px);
}
.schools-archive__hero-inner {
	max-width: var(--max); margin: 0 auto;
	display: grid; grid-template-columns: 1.4fr 1fr; gap: 3rem; align-items: center;
}
.schools-archive__eyebrow {
	font-family: var(--font-poster); font-weight: 800;
	letter-spacing: 0.22em; text-transform: uppercase; font-size: 0.8rem;
	color: var(--clay); margin-bottom: 1rem; display: block;
}
.schools-archive__title {
	font-family: var(--font-poster); font-weight: 900;
	text-transform: uppercase; line-height: 0.88;
	font-size: clamp(2.5rem, 6vw, 4.8rem); letter-spacing: -0.02em;
	color: var(--ink); margin: 0 0 1rem;
}
.schools-archive__title em { font-family: var(--font-accent); font-style: italic; font-weight: 400; color: var(--teal); text-transform: none; }
.schools-archive__lede { font-size: 1.05rem; line-height: 1.6; color: var(--ink-soft); max-width: 52ch; margin: 0; }

.schools-archive__stats { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.schools-archive__stat {
	background: var(--paper); color: var(--ink);
	border: 2px solid var(--ink); box-shadow: 4px 4px 0 var(--ink);
	padding: 1.2rem; text-align: center;
}
.schools-archive__stat .num {
	display: block;
	font-family: var(--font-poster); font-weight: 900;
	font-size: 2.6rem; line-height: 1; color: var(--clay);
}
.schools-archive__stat .lbl {
	display: block; margin-top: 0.4rem;
	font-family: var(--font-poster); font-weight: 800;
	text-transform: uppercase; letter-spacing: 0.14em; font-size: 0.78rem;
}
@media (max-width: 880px) { .schools-archive__hero-inner { grid-template-columns: 1fr; gap: 2rem; } }

/* Town bands */
.schools-archive__bands { max-width: var(--max); margin: 0 auto; padding: 4rem var(--gutter); }
.schools-archive__band { margin-bottom: 4rem; }
.schools-archive__band + .schools-archive__band { padding-top: 2rem; border-top: 2px dashed var(--ink-soft); }

.schools-archive__band-header {
	display: grid; grid-template-columns: 1fr auto; align-items: end;
	gap: 1.5rem; margin-bottom: 2rem; padding-bottom: 1rem;
	border-bottom: 3px solid var(--ink); position: relative;
}
.schools-archive__band-header::after {
	content: ''; position: absolute; bottom: -8px; left: 0; right: 0; height: 4px;
	background: repeating-linear-gradient(90deg, var(--ink) 0 6px, transparent 6px 12px);
}
.schools-archive__band-eyebrow {
	font-family: var(--font-poster); font-weight: 800;
	letter-spacing: 0.22em; text-transform: uppercase; font-size: 0.75rem;
	color: var(--clay); display: block; margin-bottom: 0.4rem;
}
.schools-archive__band-name {
	font-family: var(--font-poster); font-weight: 900;
	text-transform: uppercase; font-size: clamp(1.8rem, 4vw, 2.6rem);
	line-height: 0.95; letter-spacing: -0.01em; color: var(--ink);
	margin: 0;
}
.schools-archive__band-count {
	align-self: end;
	font-family: var(--font-poster); font-weight: 900;
	background: var(--ink); color: var(--paper);
	padding: 0.5rem 0.9rem;
	letter-spacing: 0.16em; text-transform: uppercase; font-size: 0.8rem;
	white-space: nowrap;
}
.schools-archive__grid {
	display: grid; gap: 1.5rem;
	grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
}

/* School cards */
.schools-archive .school-card {
	background: var(--paper-soft);
	border: 2px solid var(--ink);
	box-shadow: 4px 4px 0 var(--ink);
	display: flex; flex-direction: column;
	transition: transform 0.2s ease, box-shadow 0.2s ease;
	overflow: hidden;
	color: var(--ink); text-decoration: none;
}
.schools-archive .school-card:hover { transform: translate(-2px, -2px); box-shadow: 8px 8px 0 var(--ink); }
.schools-archive .school-card__plate {
	background: var(--ink);
	color: var(--mustard);
	border-bottom: 2px solid var(--ink);
	height: 100px;
	display: flex; align-items: center; justify-content: center;
	padding: 0.8rem 1rem;
	position: relative;
}
.schools-archive .school-card__plate::after {
	/* visual accent — thin color stripe at the bottom of the plate */
	content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 4px;
	background: var(--band-color, var(--teal));
}
.schools-archive .school-card__plate img {
	max-height: 70px;
	max-width: 220px;
	width: auto;
	display: block;
}
.schools-archive .school-card__plate-fallback {
	width: 60px; height: 60px;
}
.schools-archive .school-card__body {
	padding: 1.2rem 1.2rem 1.3rem;
	flex: 1;
	display: flex; flex-direction: column; gap: 0.6rem;
}
.schools-archive .school-card__name {
	font-family: var(--font-poster); font-weight: 800;
	text-transform: uppercase; line-height: 1; letter-spacing: -0.005em;
	font-size: 1.3rem; color: var(--ink); margin: 0;
}
.schools-archive .school-card__town {
	display: inline-block; align-self: flex-start;
	font-family: var(--font-poster); font-weight: 700;
	text-transform: uppercase; letter-spacing: 0.14em; font-size: 0.7rem;
	background: var(--ink); color: var(--paper);
	padding: 0.24rem 0.55rem;
}
.schools-archive .school-card__facts {
	font-family: var(--font-poster); font-weight: 700;
	font-size: 0.72rem; letter-spacing: 0.12em; text-transform: uppercase;
	color: var(--ink-soft);
	display: flex; flex-wrap: wrap; gap: 0.45rem;
	padding-top: 0.4rem; border-top: 1px dashed var(--ink-soft);
}
.schools-archive .school-card__facts span + span::before {
	content: '·'; color: var(--clay); margin-right: 0.45rem;
}
.schools-archive .school-card__arrow {
	margin-top: auto;
	font-family: var(--font-poster); font-weight: 700;
	text-transform: uppercase; letter-spacing: 0.14em; font-size: 0.78rem;
	color: var(--clay);
}

/* Archive CTA — reuse single-school styles where similar */
.schools-archive__cta {
	background: var(--paper-deep);
	border-top: 3px solid var(--ink); border-bottom: 3px solid var(--ink);
	padding: 3rem var(--gutter);
}
.schools-archive__cta-inner {
	max-width: var(--max); margin: 0 auto;
	display: grid; grid-template-columns: 1.6fr 1fr; gap: 2rem; align-items: center;
}
.schools-archive__cta-title {
	font-family: var(--font-poster); font-weight: 900;
	text-transform: uppercase; font-size: clamp(1.4rem, 3vw, 2rem);
	line-height: 1; color: var(--ink); margin: 0 0 0.6rem;
}
.schools-archive__cta-title em { font-family: var(--font-accent); font-style: italic; font-weight: 400; color: var(--teal); text-transform: none; }
.schools-archive__cta-lede { color: var(--ink-soft); max-width: 56ch; margin: 0; }
.schools-archive__cta-btn {
	justify-self: end;
	display: inline-flex; align-items: center; gap: 0.5rem;
	background: var(--clay); color: var(--paper);
	font-family: var(--font-poster); font-weight: 800;
	letter-spacing: 0.14em; text-transform: uppercase; font-size: 0.82rem;
	padding: 0.7rem 1.1rem;
	border: 2px solid var(--ink); box-shadow: 4px 4px 0 var(--ink);
	transition: transform 0.18s ease, box-shadow 0.18s ease;
	text-decoration: none;
}
.schools-archive__cta-btn:hover { transform: translate(-2px, -2px); box-shadow: 6px 6px 0 var(--ink); color: var(--paper); }
@media (max-width: 760px) {
	.schools-archive__cta-inner { grid-template-columns: 1fr; }
	.schools-archive__cta-btn { justify-self: start; }
}

/* ============================================================
   SHARED SINGLE TEMPLATE for 5 sibling community CPTs
   (library, government, nonprofit, cultural_site, religious_site)
   Mirrors .school-single__* visually.
   ============================================================ */

.community-single { max-width: var(--max); margin: 0 auto; padding: 0 0 4rem; }

.community-single__crumbs {
	max-width: var(--max); margin: 0 auto;
	padding: 1rem var(--gutter) 0;
	font-family: var(--font-poster); font-weight: 700;
	letter-spacing: 0.18em; text-transform: uppercase; font-size: 0.72rem;
	color: var(--ink-soft);
}
.community-single__crumbs a { color: var(--clay); text-decoration: none; }
.community-single__crumbs a:hover { color: var(--ink); }
.community-single__crumbs .sep { margin: 0 0.4rem; color: var(--ink-soft); }

/* Hero */
.community-single__hero { padding: 1.4rem var(--gutter) 0; }
.community-single__hero-frame {
	position: relative;
	border: 3px solid var(--ink);
	box-shadow: 8px 8px 0 var(--ink);
	overflow: hidden;
	background: var(--paper-soft);
}
.community-single__hero-img {
	aspect-ratio: 21 / 9;
	background-size: cover; background-position: center;
	position: relative;
}
.community-single__hero-img--placeholder {
	background: linear-gradient(160deg, var(--ink) 0%, var(--type-color, var(--teal)) 55%, var(--clay-deep) 100%);
}
.community-single__hero-img--placeholder::after {
	content: ''; position: absolute; inset: 0;
	background-image: radial-gradient(circle, rgba(0,0,0,0.22) 0.8px, transparent 1.3px);
	background-size: 5px 5px; opacity: 0.55; mix-blend-mode: multiply;
}
.community-single__photo-tag {
	position: absolute; top: 1rem; right: 1rem; z-index: 2;
	background: var(--ink); color: var(--paper);
	padding: 0.34rem 0.6rem;
	font-family: var(--font-poster); font-weight: 800;
	font-size: 0.66rem; letter-spacing: 0.18em; text-transform: uppercase;
	border: 1.5px solid var(--mustard);
}
.community-single__hero-inner {
	position: absolute; left: 0; right: 0; bottom: 0;
	padding: 2rem var(--gutter);
	background: linear-gradient(to top, rgba(0,0,0,0.7), transparent);
	color: var(--paper); z-index: 1;
}
.community-single__eyebrow {
	font-family: var(--font-poster); font-weight: 800;
	letter-spacing: 0.24em; text-transform: uppercase; font-size: 0.78rem;
	color: var(--mustard); margin-bottom: 0.7rem; display: block;
}
.community-single__title {
	font-family: var(--font-poster); font-weight: 900;
	text-transform: uppercase; line-height: 0.9;
	font-size: clamp(2rem, 5vw, 4.2rem); letter-spacing: -0.018em;
	margin: 0 0 0.6rem; color: var(--paper);
}
.community-single__tagline {
	font-family: var(--font-accent); font-style: italic;
	font-size: 1.1rem; color: var(--paper-soft);
	margin: 0 0 0.9rem; max-width: 56ch;
}
.community-single__badges { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.community-badge {
	display: inline-flex; align-items: center; gap: 0.4rem;
	font-family: var(--font-poster); font-weight: 800;
	text-transform: uppercase; letter-spacing: 0.14em; font-size: 0.72rem;
	padding: 0.35rem 0.7rem;
	border: 2px solid var(--ink);
}
.community-badge--library        { background: var(--forest); color: var(--paper); border-color: var(--paper); }
.community-badge--government     { background: var(--ink); color: var(--mustard); border-color: var(--mustard); }
.community-badge--nonprofit      { background: var(--clay); color: var(--paper); border-color: var(--paper); }
.community-badge--cultural_site  { background: var(--mustard); color: var(--ink); }
.community-badge--religious_site { background: var(--forest); color: var(--paper); border-color: var(--mustard); }
.community-badge--town           { background: var(--paper); color: var(--ink); }
.community-badge--est            { background: var(--mustard); color: var(--ink); border-color: var(--ink); }

/* Identity strip */
.community-single__identity { max-width: var(--max); margin: 0 auto; padding: 2.4rem var(--gutter) 0; }
.community-single__identity-inner {
	padding: 1.5rem 0;
	border-top: 3px solid var(--ink); border-bottom: 3px solid var(--ink);
}
.community-single__crest-block { display: flex; align-items: center; gap: 1.2rem; }
.community-crest {
	width: 86px; height: 86px;
	border: 3px solid var(--ink);
	background: var(--ink); color: var(--mustard);
	display: flex; align-items: center; justify-content: center;
	flex: none; padding: 0.6rem;
}
.community-crest__body { display: flex; flex-direction: column; gap: 0.3rem; }
.community-crest__type {
	font-family: var(--font-poster); font-weight: 900;
	text-transform: uppercase; font-size: 1.3rem; line-height: 0.95;
	margin: 0;
}
.community-crest__type em { font-family: var(--font-accent); font-style: italic; font-weight: 400; color: var(--clay); text-transform: none; }
.community-crest__descriptor {
	font-family: var(--font-accent); font-style: italic;
	font-size: 0.98rem; color: var(--ink-soft); margin: 0;
}

/* Facts */
.community-single__facts { max-width: var(--max); margin: 0 auto; padding: 2rem var(--gutter) 0; }
.community-single__facts-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
	gap: 1rem;
}
.community-single__facts .fact {
	background: var(--paper-soft);
	border: 2px solid var(--ink);
	padding: 1rem 1.1rem;
	display: flex; flex-direction: column; gap: 0.25rem;
}
.community-single__facts .fact__lbl {
	font-family: var(--font-poster); font-weight: 800;
	letter-spacing: 0.18em; text-transform: uppercase; font-size: 0.66rem;
	color: var(--clay);
}
.community-single__facts .fact__val {
	font-family: var(--font-poster); font-weight: 700;
	font-size: 1.05rem; color: var(--ink); line-height: 1.2;
	word-break: break-word;
}
.community-single__facts .fact__val a { color: inherit; text-decoration: underline; text-decoration-color: var(--mustard); }
.community-single__facts .fact__sub { font-family: var(--font-body); font-size: 0.82rem; color: var(--ink-soft); }

/* Main + rail */
.community-single__main {
	max-width: var(--max); margin: 0 auto;
	padding: 4rem var(--gutter);
	display: grid; grid-template-columns: 1.6fr 1fr; gap: 3rem;
}
@media (max-width: 880px) { .community-single__main { grid-template-columns: 1fr; gap: 2.5rem; } }
.community-single__about-eyebrow {
	font-family: var(--font-poster); font-weight: 800;
	letter-spacing: 0.22em; text-transform: uppercase; font-size: 0.75rem;
	color: var(--clay); display: block; margin-bottom: 0.6rem;
}
.community-single__about-h2 {
	font-family: var(--font-poster); font-weight: 900;
	text-transform: uppercase; line-height: 0.95;
	font-size: clamp(1.6rem, 3.5vw, 2.4rem); letter-spacing: -0.01em;
	margin: 0 0 1.3rem;
}
.community-single__about-h2 em { font-family: var(--font-accent); font-style: italic; font-weight: 400; color: var(--teal); text-transform: none; }
.community-single__about-body { font-size: 1.05rem; line-height: 1.7; color: var(--ink-soft); }
.community-single__about-body p + p { margin-top: 1rem; }
.community-single__about-body p:first-child::first-letter {
	font-family: var(--font-poster); font-weight: 900;
	float: left; font-size: 3.4rem; line-height: 0.85;
	padding: 0.2rem 0.55rem 0 0; color: var(--clay);
}

.community-single__rail { display: flex; flex-direction: column; gap: 1.5rem; }
.community-single__rail .rail-card {
	background: var(--paper-soft);
	border: 2px solid var(--ink);
	box-shadow: 5px 5px 0 var(--ink);
	padding: 1.3rem 1.3rem 1.4rem;
}
.community-single__rail .rail-card h3 {
	font-family: var(--font-poster); font-weight: 900;
	text-transform: uppercase; font-size: 1.1rem; line-height: 1;
	letter-spacing: 0.04em; margin: 0 0 1rem;
	padding-bottom: 0.7rem; border-bottom: 2px solid var(--ink);
}
.community-single__rail .rail-card__list { display: grid; gap: 0.6rem; }
.community-single__rail .rail-card__list a {
	display: grid; grid-template-columns: 1fr auto; gap: 0.5rem; align-items: center;
	font-family: var(--font-poster); font-weight: 700;
	letter-spacing: 0.06em; font-size: 0.92rem;
	padding: 0.5rem 0.6rem;
	border: 1.5px solid var(--ink); background: var(--paper);
	transition: background 0.15s ease;
	color: var(--ink); text-decoration: none;
}
.community-single__rail .rail-card__list a:hover { background: var(--mustard); }
.community-single__rail .rail-card__list a .arrow { color: var(--clay); font-weight: 800; }

/* Events */
.community-single__events { max-width: var(--max); margin: 0 auto; padding: 4rem var(--gutter); }
.community-single__section-header {
	display: flex; justify-content: space-between; align-items: baseline;
	padding-bottom: 1rem; margin-bottom: 2rem;
	border-bottom: 3px solid var(--ink);
	flex-wrap: wrap; gap: 1rem;
}
.community-single__section-header h2 {
	font-family: var(--font-poster); font-weight: 900;
	text-transform: uppercase; font-size: clamp(1.6rem, 3.5vw, 2.4rem);
	letter-spacing: -0.01em; margin: 0;
}
.community-single__section-header h2 em { font-family: var(--font-accent); font-style: italic; font-weight: 400; color: var(--teal); text-transform: none; }
.community-single__section-header .link {
	font-family: var(--font-poster); font-weight: 700;
	text-transform: uppercase; letter-spacing: 0.14em; font-size: 0.78rem;
	color: var(--clay); text-decoration: none;
}
.community-single__events-grid {
	display: grid; gap: 1rem;
	grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
}
.community-single__events .event-card {
	background: var(--paper-soft);
	border: 2px solid var(--ink); box-shadow: 4px 4px 0 var(--ink);
	display: grid; grid-template-columns: 70px 1fr;
	min-height: 110px;
	transition: transform 0.2s ease, box-shadow 0.2s ease;
	text-decoration: none; color: inherit;
}
.community-single__events .event-card:hover { transform: translate(-2px, -2px); box-shadow: 7px 7px 0 var(--ink); }
.community-single__events .event-card__date {
	background: var(--clay); color: var(--paper);
	display: flex; flex-direction: column; align-items: center; justify-content: center;
	padding: 0.5rem; border-right: 2px solid var(--ink);
}
.community-single__events .event-card__date .month { font-family: var(--font-poster); font-weight: 900; font-size: 0.7rem; letter-spacing: 0.2em; text-transform: uppercase; }
.community-single__events .event-card__date .day { font-family: var(--font-poster); font-weight: 900; font-size: 2.2rem; line-height: 1; }
.community-single__events .event-card__body { padding: 0.85rem 1rem; display: flex; flex-direction: column; gap: 0.3rem; }
.community-single__events .event-card__title { font-family: var(--font-poster); font-weight: 800; text-transform: uppercase; font-size: 1rem; line-height: 1.1; color: var(--ink); margin: 0; }
.community-single__events .event-card__meta { font-family: var(--font-poster); font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; font-size: 0.7rem; color: var(--ink-soft); }

/* Place in valley */
.community-single__place {
	background: var(--paper-deep);
	border-top: 3px solid var(--ink); border-bottom: 3px solid var(--ink);
	padding: 4rem var(--gutter);
}
.community-single__place-inner {
	max-width: var(--max); margin: 0 auto;
	display: grid; grid-template-columns: 1.2fr 1.8fr; gap: 3rem;
}
@media (max-width: 880px) { .community-single__place-inner { grid-template-columns: 1fr; gap: 2rem; } }
.community-single__place .place-town-card {
	background: var(--paper-soft);
	border: 2px solid var(--ink);
	box-shadow: 6px 6px 0 var(--mustard);
	padding: 1.6rem;
}
.community-single__place .place-town-card h3 {
	font-family: var(--font-poster); font-weight: 900;
	text-transform: uppercase; font-size: 1.8rem; line-height: 0.95;
	margin: 0 0 0.7rem;
}
.community-single__place .place-town-card h3 em { font-family: var(--font-accent); font-style: italic; font-weight: 400; color: var(--clay); text-transform: none; }
.community-single__place .place-town-card p { color: var(--ink-soft); margin: 0 0 1rem; line-height: 1.55; }
.community-single__place .place-town-card a { font-family: var(--font-poster); font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; font-size: 0.78rem; color: var(--clay); text-decoration: none; }
.community-single__place .place-siblings h3 {
	font-family: var(--font-poster); font-weight: 800;
	letter-spacing: 0.18em; text-transform: uppercase; font-size: 0.8rem;
	color: var(--clay); margin: 0 0 1.2rem;
}
.community-single__place .place-siblings ul { list-style: none; display: grid; gap: 0.5rem; margin: 0; padding: 0; }
.community-single__place .place-siblings li a {
	display: block;
	font-family: var(--font-poster); font-weight: 700;
	letter-spacing: 0.04em; font-size: 1rem;
	padding: 0.7rem 0.9rem;
	background: var(--paper-soft); border: 1.5px solid var(--ink);
	transition: background 0.15s ease;
	color: var(--ink); text-decoration: none;
}
.community-single__place .place-siblings li a:hover { background: var(--mustard); }

/* Admin CTA */
.community-single__cta {
	background: var(--paper-deep);
	border-top: 3px solid var(--ink); border-bottom: 3px solid var(--ink);
	padding: 3rem var(--gutter);
}
.community-single__cta-inner {
	max-width: var(--max); margin: 0 auto;
	display: grid; grid-template-columns: 1.6fr 1fr; gap: 2rem; align-items: center;
}
.community-single__cta-title {
	font-family: var(--font-poster); font-weight: 900;
	text-transform: uppercase; font-size: clamp(1.4rem, 3vw, 2rem);
	line-height: 1; color: var(--ink); margin: 0 0 0.6rem;
}
.community-single__cta-title em { font-family: var(--font-accent); font-style: italic; font-weight: 400; color: var(--teal); text-transform: none; }
.community-single__cta-lede { color: var(--ink-soft); max-width: 56ch; margin: 0; }
.community-single__cta-btn {
	justify-self: end;
	display: inline-flex; align-items: center; gap: 0.5rem;
	background: var(--clay); color: var(--paper);
	font-family: var(--font-poster); font-weight: 800;
	letter-spacing: 0.14em; text-transform: uppercase; font-size: 0.82rem;
	padding: 0.7rem 1.1rem;
	border: 2px solid var(--ink); box-shadow: 4px 4px 0 var(--ink);
	transition: transform 0.18s ease, box-shadow 0.18s ease;
	text-decoration: none;
}
.community-single__cta-btn:hover { transform: translate(-2px, -2px); box-shadow: 6px 6px 0 var(--ink); color: var(--paper); }
@media (max-width: 760px) {
	.community-single__cta-inner { grid-template-columns: 1fr; }
	.community-single__cta-btn { justify-self: start; }
}

/* ============================================================
   COMMUNITY ARCHIVE — town-banded grid for 5 sibling CPTs
   (schools have their own archive-school.php / styles)
   ============================================================ */

.community-archive { padding: 0 0 4rem; }

.community-archive__hero {
	background: var(--mustard);
	border-bottom: 3px solid var(--ink);
	padding: 4rem var(--gutter);
	position: relative;
}
.community-archive__hero::before {
	content: ''; position: absolute; top: -3px; left: 0; right: 0; height: 14px;
	background: repeating-linear-gradient(90deg, var(--ink) 0 14px, transparent 14px 28px);
}
.community-archive__hero-inner {
	max-width: var(--max); margin: 0 auto;
	display: grid; grid-template-columns: 1.4fr 1fr; gap: 3rem; align-items: center;
}
.community-archive__eyebrow {
	font-family: var(--font-poster); font-weight: 800;
	letter-spacing: 0.22em; text-transform: uppercase; font-size: 0.8rem;
	color: var(--clay); margin-bottom: 1rem; display: block;
}
.community-archive__title {
	font-family: var(--font-poster); font-weight: 900;
	text-transform: uppercase; line-height: 0.88;
	font-size: clamp(2.5rem, 6vw, 4.8rem); letter-spacing: -0.02em;
	color: var(--ink); margin: 0 0 1rem;
}
.community-archive__title em { font-family: var(--font-accent); font-style: italic; font-weight: 400; color: var(--teal); text-transform: none; }
.community-archive__lede { font-size: 1.05rem; line-height: 1.6; color: var(--ink-soft); max-width: 52ch; margin: 0; }
.community-archive__stats { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.community-archive__stat {
	background: var(--paper); color: var(--ink);
	border: 2px solid var(--ink); box-shadow: 4px 4px 0 var(--ink);
	padding: 1.2rem; text-align: center;
}
.community-archive__stat .num {
	display: block;
	font-family: var(--font-poster); font-weight: 900;
	font-size: 2.6rem; line-height: 1; color: var(--clay);
}
.community-archive__stat .lbl {
	display: block; margin-top: 0.4rem;
	font-family: var(--font-poster); font-weight: 800;
	text-transform: uppercase; letter-spacing: 0.14em; font-size: 0.78rem;
}
@media (max-width: 880px) { .community-archive__hero-inner { grid-template-columns: 1fr; gap: 2rem; } }

.community-archive__bands { max-width: var(--max); margin: 0 auto; padding: 4rem var(--gutter); }
.community-archive__band { margin-bottom: 4rem; }
.community-archive__band + .community-archive__band { padding-top: 2rem; border-top: 2px dashed var(--ink-soft); }

.community-archive__band-header {
	display: grid; grid-template-columns: 1fr auto; align-items: end;
	gap: 1.5rem; margin-bottom: 2rem; padding-bottom: 1rem;
	border-bottom: 3px solid var(--ink); position: relative;
}
.community-archive__band-header::after {
	content: ''; position: absolute; bottom: -8px; left: 0; right: 0; height: 4px;
	background: repeating-linear-gradient(90deg, var(--ink) 0 6px, transparent 6px 12px);
}
.community-archive__band-eyebrow {
	font-family: var(--font-poster); font-weight: 800;
	letter-spacing: 0.22em; text-transform: uppercase; font-size: 0.75rem;
	color: var(--clay); display: block; margin-bottom: 0.4rem;
}
.community-archive__band-name {
	font-family: var(--font-poster); font-weight: 900;
	text-transform: uppercase; font-size: clamp(1.8rem, 4vw, 2.6rem);
	line-height: 0.95; letter-spacing: -0.01em; color: var(--ink); margin: 0;
}
.community-archive__band-count {
	align-self: end;
	font-family: var(--font-poster); font-weight: 900;
	background: var(--ink); color: var(--paper);
	padding: 0.5rem 0.9rem;
	letter-spacing: 0.16em; text-transform: uppercase; font-size: 0.8rem;
	white-space: nowrap;
}
.community-archive__grid {
	display: grid; gap: 1.5rem;
	grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
}

/* Card v2 — used by the new town-banded archive */
.community-card-v2 {
	background: var(--paper-soft);
	border: 2px solid var(--ink);
	box-shadow: 4px 4px 0 var(--ink);
	display: flex; flex-direction: column;
	transition: transform 0.2s ease, box-shadow 0.2s ease;
	overflow: hidden;
	color: var(--ink); text-decoration: none;
}
.community-card-v2:hover { transform: translate(-2px, -2px); box-shadow: 8px 8px 0 var(--ink); }
.community-card-v2__plate {
	background: var(--ink);
	color: var(--mustard);
	border-bottom: 2px solid var(--ink);
	height: 130px;
	display: flex; align-items: center; justify-content: center;
	padding: 0.8rem;
	position: relative;
	overflow: hidden;
}
.community-card-v2__plate::after {
	content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 4px;
	background: var(--band-color, var(--teal));
}
.community-card-v2__img { position: absolute; inset: 0; background-size: cover; background-position: center; }
.community-card-v2__icon { width: 60px; height: 60px; }
.community-card-v2__body { padding: 1.2rem 1.2rem 1.3rem; flex: 1; display: flex; flex-direction: column; gap: 0.55rem; }
.community-card-v2__name {
	font-family: var(--font-poster); font-weight: 800;
	text-transform: uppercase; line-height: 1; letter-spacing: -0.005em;
	font-size: 1.25rem; color: var(--ink); margin: 0;
}
.community-card-v2__town {
	display: inline-block; align-self: flex-start;
	font-family: var(--font-poster); font-weight: 700;
	text-transform: uppercase; letter-spacing: 0.14em; font-size: 0.7rem;
	background: var(--ink); color: var(--paper);
	padding: 0.24rem 0.55rem;
}
.community-card-v2__tagline {
	font-family: var(--font-accent); font-style: italic;
	font-size: 0.92rem; line-height: 1.45; color: var(--ink-soft); margin: 0;
}
.community-card-v2__arrow {
	margin-top: auto;
	font-family: var(--font-poster); font-weight: 700;
	text-transform: uppercase; letter-spacing: 0.14em; font-size: 0.78rem;
	color: var(--clay);
	padding-top: 0.4rem; border-top: 1px dashed var(--ink-soft);
}

/* Archive CTA — shared shape with schools archive */
.community-archive__cta {
	background: var(--paper-deep);
	border-top: 3px solid var(--ink); border-bottom: 3px solid var(--ink);
	padding: 3rem var(--gutter);
}
.community-archive__cta-inner {
	max-width: var(--max); margin: 0 auto;
	display: grid; grid-template-columns: 1.6fr 1fr; gap: 2rem; align-items: center;
}
.community-archive__cta-title {
	font-family: var(--font-poster); font-weight: 900;
	text-transform: uppercase; font-size: clamp(1.4rem, 3vw, 2rem);
	line-height: 1; color: var(--ink); margin: 0 0 0.6rem;
}
.community-archive__cta-title em { font-family: var(--font-accent); font-style: italic; font-weight: 400; color: var(--teal); text-transform: none; }
.community-archive__cta-lede { color: var(--ink-soft); max-width: 56ch; margin: 0; }
.community-archive__cta-btn {
	justify-self: end;
	display: inline-flex; align-items: center; gap: 0.5rem;
	background: var(--clay); color: var(--paper);
	font-family: var(--font-poster); font-weight: 800;
	letter-spacing: 0.14em; text-transform: uppercase; font-size: 0.82rem;
	padding: 0.7rem 1.1rem;
	border: 2px solid var(--ink); box-shadow: 4px 4px 0 var(--ink);
	transition: transform 0.18s ease, box-shadow 0.18s ease;
	text-decoration: none;
}
.community-archive__cta-btn:hover { transform: translate(-2px, -2px); box-shadow: 6px 6px 0 var(--ink); color: var(--paper); }
@media (max-width: 760px) {
	.community-archive__cta-inner { grid-template-columns: 1fr; }
	.community-archive__cta-btn { justify-self: start; }
}

/* ============================================================
   STAGE 1 SPONSOR PLACEHOLDER — hidden until sponsors land
   Added 2026-05-26. Re-enable by removing this rule when Stage 3
   sponsor creative ships. Only affects the single-business and
   single-tribe_events placeholder sections.
   Town + directory house slots are NOT hidden — their bodies carry
   real CTAs (newsletter signup, list-your-business); they opt out
   via .sponsor--house (2026-06-11, mobile pass: house slots now use
   the .sponsor__* classes instead of inline styles).
   ============================================================ */
.sponsor:has(> .sponsor__inner > .sponsor__label):not(.sponsor--house) {
	display: none !important;
}

/* ============================================================
   ACCESSIBILITY — keyboard focus + reduced motion
   Added 2026-06-08 (audit B2). Visible focus ring for keyboard
   users on every interactive element; clay reads on both the cream
   paper and the dark forest/teal panels. Mouse clicks don't trigger
   :focus-visible, so the ring only shows for keyboard/AT navigation.
   ============================================================ */
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
summary:focus-visible,
[tabindex]:focus-visible,
.cta-btn:focus-visible,
.cat-card:focus-visible,
.biz-card:focus-visible,
.listing-card:focus-visible,
.ticket:focus-visible,
.story:focus-visible {
	outline: 3px solid var(--clay);
	outline-offset: 3px;
	border-radius: 2px;
}

/* Respect the OS "reduce motion" setting: collapse transitions/animations.
   The scroll-in reveal is also guarded in main.js so content stays visible. */
@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation-duration: 0.001ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.001ms !important;
		scroll-behavior: auto !important;
	}
}

/* ============================================================
   MOBILE RESPONSIVENESS PASS — 2026-06-11
   Full-site phone/tablet audit fixes. Every rule here is either
   a max-width media query or a net-new class — desktop rendering
   (the binding mockup spec) is untouched. Appended at end of file
   deliberately: several base selectors are declared more than once
   upstream and these must win the cascade.
   Sections: 1 shell/nav · 2 heroes · 3 directory/archives ·
   4 singles · 5 events · 6 static pages · 7 touch targets
   ============================================================ */

/* ---- 1. SHELL: mobile nav, masthead, press bar, footer ---- */

/* Hamburger (net-new element; desktop never shows it) */
.masthead-nav-toggle {
  display: none;
  background: transparent;
  border: 2px solid var(--ink);
  color: var(--ink);
  cursor: pointer;
  width: 44px; height: 44px;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 5px;
  padding: 0;
}
.masthead-nav-toggle__bar {
  display: block;
  width: 20px; height: 2.5px;
  background: currentColor;
  transition: transform 0.18s var(--ease), opacity 0.18s var(--ease);
}
.masthead-nav-toggle[aria-expanded="true"] { color: var(--clay); }
.masthead-nav-toggle[aria-expanded="true"] .masthead-nav-toggle__bar:nth-child(1) { transform: translateY(7.5px) rotate(45deg); }
.masthead-nav-toggle[aria-expanded="true"] .masthead-nav-toggle__bar:nth-child(2) { opacity: 0; }
.masthead-nav-toggle[aria-expanded="true"] .masthead-nav-toggle__bar:nth-child(3) { transform: translateY(-7.5px) rotate(-45deg); }

@media (max-width: 900px) {
  /* The base 900px block hides .nav with no replacement — this is it. */
  .masthead-nav-toggle { display: inline-flex; }
  .masthead-search-toggle { width: 44px; height: 44px; margin-right: 0; }
  .masthead { gap: 1rem; }
  .masthead > .masthead-actions { gap: 0.6rem; }
  /* Tagline wraps to 3-4 lines in the narrow brand column and inflates the
     masthead (breaking the filterbar offsets below); the press bar already
     carries the "printed in the valley" line. */
  .brand .wordmark .bot { display: none; }

  /* Slide-down panel: reuses the .nav element, opened by the toggle. */
  .nav.is-open {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    position: absolute;
    top: 100%; left: 0; right: 0;
    background: var(--paper);
    border-bottom: 3px solid var(--ink);
    box-shadow: 0 10px 0 -4px var(--clay);
    padding: 0.4rem var(--gutter) 0.9rem;
    max-height: calc(100vh - 90px);
    overflow-y: auto;
  }
  .nav.is-open a {
    padding: 0.85rem 0.25rem;
    font-size: 1.05rem;
    border-bottom: 1px dashed var(--ink-soft);
  }
  .nav.is-open li + li > a::before { display: none; } /* kill the desktop dot separators */
  .nav.is-open > a:last-child,
  .nav.is-open li:last-child > a { border-bottom: none; } /* both fallback (bare <a>) and wp_nav_menu (<li><a>) markup */
}

/* Masthead compaction so brand + 3 actions fit a 375px row.
   Heights: 541-900px ≈ 84px; ≤540px ≈ 74px (filterbar offsets below match). */
@media (max-width: 540px) {
  .masthead { padding: 0.85rem var(--gutter); gap: 0.75rem; }
  .brand .seal { height: 36px; width: auto; }
  .brand { gap: 0.5rem; }
  .brand .wordmark .top { font-size: 0.95rem; }
  .brand .wordmark .bot { font-size: 0.7rem; }
  .cta-btn { font-size: 0.66rem; padding: 0.5rem 0.6rem; letter-spacing: 0.1em; box-shadow: 3px 3px 0 var(--ink); }
  .nav.is-open { max-height: calc(100vh - 80px); }
}
@media (max-width: 360px) {
  /* 320px-class devices: newsletter CTA yields to the nav/search toggles */
  .masthead > .masthead-actions .cta-btn { display: none; }
}

/* Press bar mid line: keep it to one line beside its dashes */
@media (max-width: 480px) {
  .press-bar { font-size: 0.62rem; letter-spacing: 0.16em; }
  .press-bar .mid::before,
  .press-bar .mid::after { width: 16px; }
}

/* Search overlay: respect notch/safe-area on phones */
@media (max-width: 540px) {
  .search-overlay__close { top: max(1rem, env(safe-area-inset-top)); right: 1rem; }
}

/* Footer: 19 bare inline links — give them tappable height */
@media (max-width: 880px) {
  .footer-col a { display: inline-block; padding: 0.35rem 0; }
}

/* ---- 2. HEROES (home, town, business, story, towns-hub family) ---- */

/* Three letterspaced spans can't share one 375px row — stack them.
   Covers home + town + single-business (.hero-top) and single-story. */
@media (max-width: 640px) {
  .hero-top,
  .story-hero__top {
    flex-direction: column;
    gap: 0.3rem;
    text-align: center;
  }
  .story-hero__meta { flex-wrap: wrap; justify-content: center; gap: 0.4rem 1rem; }
}

/* Story hero: 100vh overshoots phone viewports with dynamic URL bars */
@media (max-width: 640px) {
  .story-hero,
  .story-hero__frame { min-height: 100svh; }
  .section-hero-full { min-height: 90svh; }
}

/* Long single-word titles (subcategory names like "Accommodations")
   outgrow the 4rem clamp floor inside an overflow:hidden hero. */
@media (max-width: 480px) {
  .section-hero-full__title .word-1 { font-size: clamp(2.75rem, 14vw, 4rem); }
  .section-hero-full__title { overflow-wrap: anywhere; }
}

/* Town chapter headers: num + title + meta never stacked */
@media (max-width: 640px) {
  .chapter-head { grid-template-columns: auto 1fr; gap: 0.4rem 1.25rem; }
  .chapter-meta { grid-column: 1 / -1; text-align: left; }
}

/* ---- 3. DIRECTORY + ARCHIVES ---- */

/* Sticky filterbar pinned at top:0 hid invisibly behind the sticky masthead
   (z-40 under z-50) — at every viewport, desktop included. Dock it beneath
   the masthead instead; main.js measures the masthead and maintains
   --masthead-h (height varies with wordmark wrap + mobile compaction).
   Fallback ≈ tablet masthead height for the no-JS case.
   Approved as a desktop fix 2026-06-11. */
.filterbar { top: var(--masthead-h, 84px); }
/* Feature archive renders TWO sticky filterbars (Category + Town) that
   pinned onto each other AND under the masthead (its own top:78px rule at
   ~line 5835 outranks the global fix above). Desktop: first bar scrolls
   normally, only the Town bar sticks, docked under the masthead. Mobile:
   both static — wrapped chip rows would eat half the viewport (same pattern
   the subcategory .filterstrip uses). */
.tax-business_feature .filterbar { position: static; }
.tax-business_feature .filterbar + .filterbar { position: sticky; top: var(--masthead-h, 84px); }
@media (max-width: 880px) {
  .tax-business_feature .filterbar,
  .tax-business_feature .filterbar + .filterbar { position: static; }
}

/* Sort/view actions row: don't clip the last button at 375px */
@media (max-width: 880px) {
  .filterbar__actions { flex-wrap: wrap; }
}

/* Editor's picks: mini cards are all-absolute children — zero intrinsic
   height once the 880px collapse breaks the row-stretch that sized them. */
@media (max-width: 880px) {
  .pick-stack { grid-template-rows: none; }
  .pick-mini { height: 240px; }
}

/* Category bar (Option O): the one-line clip strategy hides the tail pills
   and traps the dropdown panels on phones — wrap instead, and open the
   bar so the absolutely-positioned panels can escape. Extends coverage
   over the 761-880px dead zone. */
@media (max-width: 880px) {
  .cat-bar {
    flex-wrap: wrap;
    white-space: normal;
    overflow: visible;
    padding: 0.7rem 0.8rem;
  }
  .cat-bar__pills { flex-wrap: wrap; overflow: visible; flex: 1 1 100%; }
}

/* Long unbroken search queries / names can't wrap in the header title */
@media (max-width: 640px) {
  .dir-header__title { overflow-wrap: anywhere; }
  .listing-card__name { overflow-wrap: anywhere; }
}

/* Town blocks: meta column gets its own row at phone widths */
@media (max-width: 480px) {
  .townblock__head { grid-template-columns: auto 1fr; }
  .townblock__meta { grid-column: 1 / -1; text-align: left; }
}

/* Archive hero stat boxes: 2-up is too snug under 400px */
@media (max-width: 400px) {
  .schools-archive__stats,
  .community-archive__stats { grid-template-columns: 1fr; }
}

/* ---- 4. SINGLES (business, story, school, community CPTs) ---- */

/* School + community hero: 21:9 frame + absolute bottom overlay +
   overflow:hidden clips the eyebrow/title on phones. Put the photo and
   the title block in flow: photo stays a band, overlay becomes a solid
   ink panel below it (matches the gradient's bottom color). */
@media (max-width: 640px) {
  .school-single__hero-img,
  .community-single__hero-img { aspect-ratio: 16 / 9; }
  .school-single__hero-img--placeholder,
  .community-single__hero-img--placeholder { aspect-ratio: 3 / 1; }
  .school-single__hero-inner,
  .community-single__hero-inner {
    position: static;
    background: var(--ink);
    padding: 1.4rem var(--gutter) 1.6rem;
  }
}

/* Future-proof school fact values against long unbroken tokens
   (community twin already has this; current school content is unaffected) */
.school-single__facts .fact__val { word-break: break-word; overflow-wrap: anywhere; }

/* Polaroid captions: absolute bottom pinning overlaps the photo once
   captions wrap on narrow full-width cards */
@media (max-width: 480px) {
  .polaroid__cap { position: static; margin-top: 6px; padding: 0 4px; }
  .gallery__head { flex-wrap: wrap; gap: 0.3rem 1rem; }
}

/* Story newsletter callout: input + button outgrow the form card */
@media (max-width: 480px) {
  .newsletter__field { grid-template-columns: 1fr; }
  .newsletter__field input { min-width: 0; }
  .newsletter__field button { border-left: none; border-top: 2px solid var(--ink); padding: 0.85rem; }
}

/* Itinerary: slim the numeral column */
@media (max-width: 480px) {
  .itinerary li { grid-template-columns: 56px 1fr; column-gap: 1rem; }
}

/* ---- 5. EVENTS ---- */

/* Single event: related grid keeps its former inline-style gap
   (inline grid-template-columns removed — it broke the 900/600 collapses) */
.related__grid--events { gap: 1.4rem; }

/* Hero meta bar: same three-sliver problem as the other heroes */
@media (max-width: 640px) {
  .event-hero__top { flex-direction: column; gap: 0.3rem; text-align: center; }
}

/* Date strip: single-day events run month + day + dow + time on one
   non-wrapping line that clips at phone widths */
@media (max-width: 480px) {
  .event-hero__date {
    flex-wrap: wrap;
    justify-content: center;
    padding: 0.6rem 1.1rem;
    row-gap: 0.2rem;
  }
}

/* Poster hero: don't demand more height than a phone has */
@media (max-width: 640px) {
  .event-hero__frame { min-height: 480px; padding-top: 3rem; }
  .event-hero__frame.is-poster { min-height: 560px; }
}

/* Section headers with right-aligned italic notes: let them wrap */
@media (max-width: 640px) {
  .marquee__head,
  .past__head,
  .program__head,
  .recurring-strip__head,
  .event-gallery__head { flex-wrap: wrap; }
  .marquee__note,
  .program__note,
  .recurring-strip__note,
  .event-gallery__note { text-align: left; max-width: none; }
}

/* Past-events rows: city column gets its own line under the title */
@media (max-width: 760px) {
  .past__row { grid-template-columns: 84px 1fr; }
  .past__row .w { grid-column: 2; }
}

/* ---- 6. STATIC PAGES ---- */

/* Centered max-width cards with no horizontal inset sit flush against
   the screen edges once the viewport drops under their max-width. */
@media (max-width: 800px) {
  .pg-toc { margin-left: var(--gutter); margin-right: var(--gutter); }
}
@media (max-width: 720px) {
  .pg-land__protocol,
  .pg-newsletter__privacy { margin-left: var(--gutter); margin-right: var(--gutter); }
}
@media (max-width: 900px) {
  .pg-permits__disclaimer { margin-left: var(--gutter); margin-right: var(--gutter); }
}

/* Season landing: fixed 2rem paddings + oversized drop cap at 375px */
@media (max-width: 480px) {
  .pg-season__hero-inner,
  .pg-season__intro,
  .pg-season__section,
  .pg-season__pair { padding-left: 1.25rem; padding-right: 1.25rem; }
  .pg-season__intro p:first-of-type::first-letter { font-size: 4rem; }
  .pg-season__section-head { flex-wrap: wrap; }
  .pg-season__section-rule { display: none; }
  .pg-season__pair-link { padding: 1.5rem; }
}

/* Community hub: 300px min track overflows 320-360px screens */
@media (max-width: 400px) {
  .pg-community__grid { grid-template-columns: 1fr; }
  .pg-community__grid-section,
  .pg-community__hero,
  .pg-community__intro { padding-left: 1.25rem; padding-right: 1.25rem; }
}

/* ---- 7. TOUCH TARGETS (44px-ish guideline; phone/tablet only) ---- */
@media (max-width: 880px) {
  .pagination .page-numbers { padding: 0.4rem 0.6rem; }
  .school-single__rail .rail-card__list a,
  .community-single__rail .rail-card__list a { padding: 0.75rem 0.8rem; }
}
@media (max-width: 760px) {
  .cat-bar .tp { padding-top: 0.55rem; padding-bottom: 0.55rem; }
  .cb-dd__panel a { padding-top: 0.65rem; padding-bottom: 0.65rem; }
  .pill { padding-top: 0.55rem; padding-bottom: 0.55rem; }
}
@media (max-width: 640px) {
  .adv-hero__type-pill,
  .adv-hero__area-pill { padding: 0.45rem 0.8rem; }
  .adv-hero__types,
  .adv-hero__areas { gap: 0.55rem; }
  .adv-archive__filter-list a,
  .adv-features__list a { padding: 0.55rem 0.9rem; }
  .services-chip { min-height: 44px; }
  .cat-card__subs a { display: inline-block; padding: 0.2rem 0.1rem; }
}

/* Sponsor house slots (town + directory): top rule carried over from the
   retired inline styles; net-new modifier class. */
.sponsor--rule-top { border-top: 3px solid var(--ink); }

/* Single-business hero: the home hero's 2-col grid (text + sun art, ~line 905)
   leaks here by cascade order and scatters a fully-populated hero's children
   (tags / title / tagline / band) across two auto-flow columns. Sparse
   listings only render a title, which is why this hid until the first
   every-field listing (2026-06-12). Scoped by body class so home keeps
   its art column. */
.single-business .hero-body {
  grid-template-columns: 1fr;
  gap: 0;
}
