/*
 * assets/css/main.css — Beco Local
 *
 * All front-end styles. Enqueued via functions.php → beco_enqueue_assets().
 *
 * Structure:
 *   1.  Design Tokens (CSS variables)
 *   2.  Reset & Base
 *   3.  Utility Classes
 *   4.  Navigation
 *   5.  Hero
 *   6.  City Strip
 *   7.  Spots Grid
 *   8.  Editorial
 *   9.  Neighborhoods
 *   10. Newsletter
 *   11. Instagram
 *   12. Footer
 *   13. Animations & Transitions
 *   14. Responsive (mobile breakpoints)
 */


/* ═══════════════════════════════════════════════════════
   1. DESIGN TOKENS
   All brand colors and spacing as CSS custom properties.
   Change one value here and it cascades across the whole site.
════════════════════════════════════════════════════════════ */
:root {
  --terracotta: #B5673A;
  --stone:      #2E2A25;
  --cream:      #FAF7F2;
  --fog:        #F0EBE3;
  --clay:       #C9A882;
  --moss:       #4A5240;
  --dusk:       #8B7355;

  --space-xs:  0.5rem;
  --space-sm:  1rem;
  --space-md:  2rem;
  --space-lg:  4rem;
  --space-xl:  7rem;

  --radius-sm: 4px;
  --radius-md: 8px;
}


/* ═══════════════════════════════════════════════════════
   2. RESET & BASE
════════════════════════════════════════════════════════════ */
*, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }
html { scroll-behavior: smooth; }

body {
  background: var(--cream);
  color: var(--stone);
  font-family: 'Instrument Sans', sans-serif;
  font-weight: 400;
  line-height: 1.6;
  overflow-x: hidden;
}

img  { display: block; width: 100%; object-fit: cover; }
a    { color: inherit; text-decoration: none; }
ul   { list-style: none; }

/* WordPress-added classes — prevent layout issues */
.alignwide  { max-width: 1200px; }
.alignfull  { width: 100%; }
.wp-caption { max-width: 100%; }


/* ═══════════════════════════════════════════════════════
   3. UTILITY CLASSES
   Reusable micro-styles.
════════════════════════════════════════════════════════════ */
.label {
  font-family: 'DM Mono', monospace;
  font-size: 0.65rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--dusk);
}
.label--accent { color: var(--terracotta); }
.label--moss   { color: var(--moss); }

.rule {
  width: 40px; height: 1px;
  background: var(--clay);
  display: inline-block;
  vertical-align: middle;
}

.container {
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 2.5rem;
}

/* Beco wordmark — used in nav and footer */
.beco-wordmark {
  font-family: 'Playfair Display', serif;
  font-weight: 700;
  letter-spacing: -0.02em;
  color: var(--stone);
}
.beco-wordmark em {
  color: var(--terracotta);
  font-style: italic;
  font-weight: 400;
}


/* ═══════════════════════════════════════════════════════
   4. NAVIGATION
   Design: full-width bar with a thin terracotta top accent,
   large logo left, hamburger right. Clean and architectural.
   The terracotta top line is the only decoration — everything
   else is whitespace and typography.
════════════════════════════════════════════════════════════ */

/*
 * The ::before pseudo-element draws the thin terracotta accent
 * line at the very top of the nav without adding DOM elements.
 * position:sticky on the nav keeps it pinned; z-index:100 keeps
 * it above page content while the drawer sits at z-index:300.
 */
/* ── Nav bar ─────────────────────────────────────────────────────────────────
 * Sticky 72px bar. Logo left, CTA + hamburger right.
 * The hamburger opens a side drawer (#navDrawer) on all screen sizes.
 * No inline nav links — everything lives in the drawer.
 */
.nav {
  position: sticky;
  top: 0;
  z-index: 100;
  background: var(--cream);
  border-bottom: 1px solid rgba(201,168,130,0.18);
  padding: 0 2.5rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: 72px;
  box-shadow: 0 1px 0 rgba(201,168,130,0.18), 0 4px 24px rgba(46,42,37,0.04);
}
/* Terracotta accent line across the very top */
.nav::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0; height: 2px;
  background: linear-gradient(to right, transparent 0%, var(--terracotta) 15%, var(--terracotta) 85%, transparent 100%);
}

/* Logo */
.nav-logo-link { display: flex; align-items: center; text-decoration: none; line-height: 0; }
.nav-logo      { width: 110px; height: auto; display: block; }

/* Right cluster */
.nav-right { display: flex; align-items: center; gap: 1rem; }

/* CTA pill */
.nav-cta-btn {
  font-family: 'DM Mono', monospace;
  font-size: 0.6rem; letter-spacing: 0.18em; text-transform: uppercase;
  color: var(--cream); background: var(--terracotta);
  padding: 0.6rem 1.4rem; border-radius: 2px;
  text-decoration: none; white-space: nowrap;
  transition: background 0.2s ease; display: inline-block;
}
.nav-cta-btn:hover { background: var(--stone); color: var(--cream); }

/* Keep old alias for drawer CTA */
.nav-cta {
  font-family: 'DM Mono', monospace;
  font-size: 0.65rem; letter-spacing: 0.15em; text-transform: uppercase;
  color: var(--cream); background: var(--terracotta);
  padding: 0.75rem 1.6rem; border-radius: 2px;
  text-decoration: none; display: inline-block;
  transition: background 0.2s ease;
}
.nav-cta:hover { background: var(--stone); color: var(--cream); }

/* Hamburger */
.nav-hamburger {
  display: flex; flex-direction: column; justify-content: center; gap: 5px;
  width: 40px; height: 40px;
  background: none; border: 1px solid rgba(201,168,130,0.3);
  border-radius: 2px; cursor: pointer; padding: 0; align-items: center;
  transition: border-color 0.2s ease, background 0.2s ease; flex-shrink: 0;
}
.nav-hamburger:hover { border-color: var(--terracotta); background: rgba(181,103,58,0.04); }
.nav-hamburger-line {
  display: block; width: 18px; height: 1.5px;
  background: var(--stone); border-radius: 1px;
  transform-origin: center;
  transition: transform 0.3s ease, opacity 0.25s ease;
}
.nav-hamburger-line:nth-child(2) { width: 12px; align-self: flex-start; margin-left: 11px; }
/* Animate to × when open */
.nav-hamburger.is-open { border-color: var(--terracotta); }
.nav-hamburger.is-open .nav-hamburger-line:nth-child(1) { transform: translateY(6.5px) rotate(45deg); width: 18px; }
.nav-hamburger.is-open .nav-hamburger-line:nth-child(2) { opacity: 0; transform: scaleX(0); }
.nav-hamburger.is-open .nav-hamburger-line:nth-child(3) { transform: translateY(-6.5px) rotate(-45deg); width: 18px; }

/* Overlay */
.nav-overlay {
  position: fixed; inset: 0; z-index: 200;
  background: rgba(46,42,37,0.45);
  opacity: 0; pointer-events: none;
  transition: opacity 0.3s ease;
}
.nav-overlay.is-open { opacity: 1; pointer-events: auto; }

/* Drawer */
.nav-drawer {
  position: fixed; top: 0; right: 0; bottom: 0;
  width: min(420px, 92vw);
  z-index: 300;
  background: var(--stone);
  border-left: 3px solid var(--terracotta);
  display: flex; flex-direction: column;
  transform: translateX(100%);
  visibility: hidden;
  transition: transform 0.35s cubic-bezier(0.4,0,0.2,1), visibility 0.35s;
  overflow-y: auto;
}
.nav-drawer.is-open { transform: translateX(0); visibility: visible; }

.nav-drawer-header {
  display: flex; align-items: center; justify-content: space-between;
  padding: 1.5rem 2rem;
  border-bottom: 1px solid rgba(201,168,130,0.1);
  flex-shrink: 0;
}
.nav-drawer-logo-link { display: block; line-height: 0; }
.nav-drawer-logo { width: 80px; height: auto; display: block;
  filter: brightness(0) invert(1); opacity: 0.9; }

.nav-drawer-close {
  width: 36px; height: 36px; border-radius: 50%;
  background: none; border: 1px solid rgba(201,168,130,0.2);
  color: var(--cream); font-size: 1.4rem; line-height: 1;
  cursor: pointer; display: flex; align-items: center; justify-content: center;
  transition: background 0.2s ease, border-color 0.2s ease;
}
.nav-drawer-close:hover { background: rgba(201,168,130,0.1); border-color: var(--clay); }

.nav-drawer-body {
  flex: 1; padding: 1.5rem 2rem 2rem;
  display: flex; flex-direction: column; gap: 2rem; overflow-y: auto;
}

/* Drawer menu list */
.nav-drawer-menu { list-style: none; padding: 0; margin: 0; }
.nav-drawer-menu > li { border-bottom: 1px solid rgba(201,168,130,0.08); }
.nav-drawer-menu > li > a {
  display: block; padding: 1rem 0;
  font-family: 'Playfair Display', serif; font-size: 1.35rem; font-weight: 700;
  color: rgba(250,247,242,0.9); text-decoration: none;
  transition: color 0.2s ease, padding-left 0.2s ease;
}
.nav-drawer-menu > li > a:hover { color: var(--clay); padding-left: 0.5rem; }
.nav-drawer-menu > li.current-menu-item > a,
.nav-drawer-menu > li.current-menu-ancestor > a { color: var(--clay); }

/* Accordion toggle injected by JS */
.nav-accordion-toggle {
  position: absolute; right: 0; top: 0.55rem;
  width: 32px; height: 32px;
  background: none; border: 1px solid rgba(201,168,130,0.15);
  border-radius: 2px; color: rgba(201,168,130,0.6);
  font-size: 1.1rem; line-height: 1; cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  transition: background 0.2s ease, border-color 0.2s ease, color 0.2s ease;
}
.nav-accordion-toggle:hover { background: rgba(201,168,130,0.08); border-color: var(--clay); color: var(--clay); }
.nav-drawer-menu > li.is-open > .nav-accordion-toggle { color: var(--terracotta); border-color: var(--terracotta); }
.nav-drawer-menu > li.menu-item-has-children { position: relative; }
.nav-drawer-menu > li.menu-item-has-children > a { padding-right: 3rem; }

/* Sub-menu accordion */
.nav-drawer-menu .sub-menu {
  list-style: none; padding: 0; margin: 0;
  max-height: 0; overflow: hidden;
  transition: max-height 0.3s ease;
}
.nav-drawer-menu > li.is-open > .sub-menu { max-height: 400px; }
.nav-drawer-menu .sub-menu li { border-top: 1px solid rgba(201,168,130,0.06); }
.nav-drawer-menu .sub-menu a {
  display: flex; align-items: center; gap: 0.7rem;
  padding: 0.65rem 0 0.65rem 0.5rem;
  font-family: 'Instrument Sans', sans-serif; font-size: 0.88rem;
  color: rgba(201,168,130,0.65); text-decoration: none;
  transition: color 0.15s ease, padding-left 0.15s ease;
}
.nav-drawer-menu .sub-menu a::before { content: '—'; font-size: 0.65rem; color: rgba(201,168,130,0.3); }
.nav-drawer-menu .sub-menu a:hover { color: var(--cream); padding-left: 1rem; }
.nav-drawer-menu .sub-menu li.current-menu-item a { color: var(--clay); }

/* City pills */
.nav-drawer-cities { padding-top: 0.5rem; }
.nav-drawer-city-pills { display: flex; flex-wrap: wrap; gap: 0.5rem; margin-top: 0.8rem; }
.nav-drawer-city-pill {
  font-family: 'DM Mono', monospace; font-size: 0.58rem;
  letter-spacing: 0.15em; text-transform: uppercase;
  color: rgba(201,168,130,0.55); border: 1px solid rgba(201,168,130,0.18);
  padding: 0.35rem 0.85rem; border-radius: 100px;
  text-decoration: none; transition: all 0.2s ease;
}
.nav-drawer-city-pill:hover { border-color: var(--clay); color: var(--clay); }
.nav-drawer-city-pill.active { border-color: var(--terracotta); color: var(--terracotta); }

/* Drawer CTA */
.nav-drawer-cta { display: block; text-align: center; }

/* Shared city pill (used in other contexts) */
.nav-city-pill {
  font-family: 'DM Mono', monospace; font-size: 0.58rem;
  letter-spacing: 0.15em; text-transform: uppercase;
  color: var(--dusk); border: 1px solid rgba(139,115,85,0.2);
  padding: 0.3rem 0.75rem; border-radius: 100px;
  text-decoration: none; display: inline-block; transition: all 0.2s ease;
}
.nav-city-pill:hover,
.nav-city-pill.active { border-color: var(--terracotta); color: var(--terracotta); background: rgba(181,103,58,0.06); }

/* Prevent body scroll when drawer is open */
body.nav-is-open { overflow: hidden; }

/* Filter bar sticky offsets */
.filter-bar,
.sa-filters,
.nb-city-filter { top: 72px; }


/* ═══════════════════════════════════════════════════════
   5. HERO
════════════════════════════════════════════════════════════ */
.hero {
  min-height: 92vh;
  display: grid;
  grid-template-columns: 1fr 1.1fr;
  align-items: stretch;
  position: relative;
  overflow: hidden;
}

.hero-text {
  padding: var(--space-xl) 2.5rem;
  display: flex;
  flex-direction: column;
  justify-content: center;
  position: relative;
  z-index: 2;
}
.hero-text::before {
  content: '';
  position: absolute;
  inset: 0;
  background: radial-gradient(ellipse 70% 60% at 0% 60%, rgba(181,103,58,0.07) 0%, transparent 70%);
  pointer-events: none;
}

.hero-eyebrow {
  display: flex;
  align-items: center;
  gap: 1rem;
  margin-bottom: 2rem;
  opacity: 0;
  animation: fadeUp 0.7s ease forwards 0.2s;
}

.hero-headline {
  font-family: 'Playfair Display', serif;
  font-size: clamp(3rem, 5.5vw, 5.5rem);
  font-weight: 400;
  line-height: 1.05;
  letter-spacing: -0.02em;
  color: var(--stone);
  margin-bottom: 2rem;
  opacity: 0;
  animation: fadeUp 0.9s ease forwards 0.4s;
}

.hero-noun {
  display: inline-block;
  position: relative;
  vertical-align: bottom;
  height: 1.1em;
  overflow: hidden;
  min-width: max(180px, 50vw);
}
.hero-noun span {
  position: absolute;
  top: 0; left: 0;
  color: var(--terracotta);
  font-style: italic;
  opacity: 0;
  transform: translateY(10px);
  transition: opacity 0.5s ease, transform 0.5s ease;
  white-space: nowrap;
}
.hero-noun span.active { opacity: 1; transform: translateY(0); }

.hero-subhead {
  font-size: 1rem;
  color: var(--dusk);
  max-width: 420px;
  line-height: 1.7;
  margin-bottom: 3rem;
  opacity: 0;
  animation: fadeUp 0.9s ease forwards 0.6s;
}

.hero-actions {
  display: flex;
  align-items: center;
  gap: 1.5rem;
  opacity: 0;
  animation: fadeUp 0.9s ease forwards 0.8s;
}

.btn-primary {
  font-family: 'Instrument Sans', sans-serif;
  font-size: 0.85rem;
  font-weight: 600;
  background: var(--terracotta);
  color: var(--cream);
  padding: 0.9rem 2rem;
  border-radius: var(--radius-sm);
  border: none;
  cursor: pointer;
  transition: background 0.2s ease, transform 0.15s ease;
  letter-spacing: 0.02em;
  display: inline-block;
}
.btn-primary:hover { background: var(--stone); transform: translateY(-2px); color: var(--cream); }

.btn-ghost {
  font-family: 'DM Mono', monospace;
  font-size: 0.65rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--dusk);
  display: inline-flex;
  align-items: center;
  gap: 0.6rem;
  transition: color 0.2s ease, gap 0.2s ease;
}
.btn-ghost:hover { color: var(--stone); gap: 0.9rem; }

.hero-scroll {
  margin-top: auto;
  padding-top: 3rem;
  display: flex;
  align-items: center;
  gap: 1rem;
  opacity: 0;
  animation: fadeUp 0.7s ease forwards 1.2s;
}
.hero-scroll-line {
  width: 1px; height: 40px;
  background: var(--clay);
  position: relative;
  overflow: hidden;
}
.hero-scroll-line::after {
  content: '';
  position: absolute;
  top: -100%; left: 0;
  width: 100%; height: 100%;
  background: var(--terracotta);
  animation: scrollDrop 1.5s ease infinite 1.5s;
}

.hero-image { position: relative; overflow: hidden; }
.hero-image img,
.hero-img-main { width: 100%; height: 100%; object-fit: cover; }

.hero-img-placeholder {
  background: var(--fog);
  display: flex;
  align-items: center;
  justify-content: center;
}

.hero-badge {
  position: absolute;
  bottom: 2.5rem;
  left: -1.5rem;
  background: var(--cream);
  border: 1px solid rgba(201,168,130,0.3);
  border-radius: var(--radius-md);
  padding: 1.2rem 1.5rem;
  box-shadow: 0 8px 32px rgba(46,42,37,0.1);
  min-width: 200px;
  opacity: 0;
  animation: slideInRight 0.8s ease forwards 1s;
}
.hero-badge-name {
  font-family: 'Playfair Display', serif;
  font-size: 1rem;
  font-weight: 700;
  color: var(--stone);
  margin-bottom: 0.3rem;
}
.hero-badge-name a { color: inherit; }


/* ═══════════════════════════════════════════════════════
   6. CITY STRIP — REMOVED
   (section hidden; styles kept here as a stub in case it's re-enabled)
════════════════════════════════════════════════════════════ */


/* ═══════════════════════════════════════════════════════
   7. SPOTS GRID
════════════════════════════════════════════════════════════ */
.spots { padding: var(--space-xl) 0; }

.spots-header {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  margin-bottom: 3rem;
  padding: 0 2.5rem;
}
.spots-title {
  font-family: 'Playfair Display', serif;
  font-size: clamp(2rem, 3.5vw, 3rem);
  font-weight: 400;
  line-height: 1.1;
  letter-spacing: -0.02em;
}
.spots-title em { font-style: italic; color: var(--terracotta); }

.spots-view-all {
  font-family: 'DM Mono', monospace;
  font-size: 0.65rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--terracotta);
  display: flex;
  align-items: center;
  gap: 0.5rem;
  transition: gap 0.2s ease;
  white-space: nowrap;
  padding-bottom: 0.3rem;
}
.spots-view-all:hover { gap: 0.9rem; }

.spots-grid {
  display: grid;
  grid-template-columns: 1.4fr 1fr 1fr;
  grid-template-rows: 1fr 1fr;
  gap: 1.5px;
  padding: 0 2.5rem;
}

/* Feature card spans both rows — tall left column */
.spot-card--feature {
  grid-column: 1;
  grid-row: 1 / 3;
}

/* Feature image fills the full card height via the grid */
.spot-card--feature .spot-img {
  height: 100%;
  min-height: 500px;
}

/* Medium cards — 4 cells in a 2×2 right block */
.spot-card--medium .spot-img  { height: 220px; }
.spot-card--medium .spot-name { font-size: 1.05rem; }

.spot-card {
  position: relative;
  overflow: hidden;
  background: var(--fog);
  cursor: pointer;
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 0.6s ease, transform 0.6s ease;
}
.spot-card.visible { opacity: 1; transform: translateY(0); }
.spot-card:hover .spot-img-inner { transform: scale(1.04); }

.spot-img       { overflow: hidden; position: relative; }
/* .spot-card--feature .spot-img height is auto — determined by CSS Grid row span */
.spot-card--small   .spot-img { height: 270px; }

.spot-img-inner, .spot-img img {
  width: 100%; height: 100%;
  object-fit: cover;
  transition: transform 0.6s ease;
}
.spot-img-ph {
  width: 100%; height: 100%;
  background: var(--fog);
  display: flex;
  align-items: center;
  justify-content: center;
}

.spot-category {
  position: absolute;
  top: 1rem; left: 1rem;
  background: rgba(250,247,242,0.92);
  backdrop-filter: blur(6px);
  padding: 0.35rem 0.75rem;
  border-radius: var(--radius-sm);
  font-family: 'DM Mono', monospace;
  font-size: 0.6rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--stone);
}

.spot-body { padding: 1.4rem 1.6rem 1.6rem; background: var(--cream); }
.spot-meta { display: flex; align-items: center; gap: 0.8rem; margin-bottom: 0.6rem; }
.spot-neighborhood {
  font-family: 'DM Mono', monospace;
  font-size: 0.6rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--moss);
}
.spot-name {
  font-family: 'Playfair Display', serif;
  font-size: 1.25rem;
  font-weight: 700;
  line-height: 1.2;
  color: var(--stone);
  margin-bottom: 0.5rem;
}
.spot-name a { color: inherit; }
.spot-card--feature .spot-name { font-size: 1.6rem; }
.spot-desc { font-size: 0.85rem; color: var(--dusk); line-height: 1.55; }

/* .spots-right no longer used — spots use CSS Grid named placement */


/* ═══════════════════════════════════════════════════════
   8. EDITORIAL
════════════════════════════════════════════════════════════ */
.editorial {
  padding: var(--space-xl) 2.5rem;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 6rem;
  align-items: center;
  background: var(--fog);
  position: relative;
  overflow: hidden;
}
.editorial::before {
  content: '"';
  position: absolute;
  top: -2rem; left: 1rem;
  font-family: 'Playfair Display', serif;
  font-size: 30rem;
  color: rgba(181,103,58,0.05);
  line-height: 1;
  pointer-events: none;
  user-select: none;
}
.editorial-quote {
  font-family: 'Playfair Display', serif;
  font-size: clamp(1.8rem, 3vw, 2.8rem);
  font-weight: 400;
  font-style: italic;
  line-height: 1.25;
  color: var(--stone);
  position: relative;
}
.editorial-quote em { color: var(--terracotta); }
.editorial-content { position: relative; }
.editorial-body {
  font-size: 0.95rem;
  color: var(--dusk);
  line-height: 1.75;
  margin: 1.5rem 0 2rem;
}
.editorial-link {
  display: inline-flex;
  align-items: center;
  gap: 0.6rem;
  font-family: 'Playfair Display', serif;
  font-style: italic;
  font-size: 1.05rem;
  color: var(--terracotta);
  border-bottom: 1px solid rgba(181,103,58,0.3);
  padding-bottom: 0.2rem;
  transition: border-color 0.2s ease, gap 0.2s ease;
}
.editorial-link:hover { border-color: var(--terracotta); gap: 0.9rem; }


/* ═══════════════════════════════════════════════════════
   9. NEIGHBORHOODS
════════════════════════════════════════════════════════════ */
.neighborhoods { padding: var(--space-xl) 2.5rem; }

.section-header { margin-bottom: 3rem; }
.section-header .label { display: block; margin-bottom: 0.8rem; }
.section-title {
  font-family: 'Playfair Display', serif;
  font-size: clamp(2rem, 3vw, 2.8rem);
  font-weight: 400;
  letter-spacing: -0.02em;
  line-height: 1.1;
}
.section-title em { font-style: italic; color: var(--terracotta); }

.neighborhood-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem; }

.neighborhood-card {
  position: relative;
  height: 340px;
  overflow: hidden;
  cursor: pointer;
  border-radius: var(--radius-md);
  display: block;
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.5s ease, transform 0.5s ease;
}
.neighborhood-card.visible { opacity: 1; transform: translateY(0); }
.neighborhood-card::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, rgba(46,42,37,0.75) 0%, rgba(46,42,37,0.1) 60%, transparent 100%);
  transition: opacity 0.3s ease;
  border-radius: var(--radius-md);
}
.neighborhood-card:hover .neighborhood-img { transform: scale(1.06); }

.neighborhood-img {
  width: 100%; height: 100%;
  object-fit: cover;
  transition: transform 0.6s ease;
  border-radius: var(--radius-md);
}
.neighborhood-img.ph-1 { background: #C9A882; }
.neighborhood-img.ph-2 { background: #B5673A; opacity: 0.7; }
.neighborhood-img.ph-3 { background: #4A5240; }

.neighborhood-info {
  position: absolute;
  bottom: 1.5rem;
  left: 1.5rem;
  right: 1.5rem;
  z-index: 1;
}
.neighborhood-count {
  font-family: 'DM Mono', monospace;
  font-size: 0.6rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: rgba(250,247,242,0.65);
  margin-bottom: 0.4rem;
}
.neighborhood-name {
  font-family: 'Playfair Display', serif;
  font-size: 1.5rem;
  font-weight: 700;
  color: var(--cream);
  line-height: 1.1;
}


/* ═══════════════════════════════════════════════════════
   9b. SECTION FEATURES
   Used on front-page.php and page-city.php.
   Reuses the .feat-hero-story and .feat-card patterns from
   archive-beco_post.php — no new card styles needed here.
   This block only defines the section shell, header, and
   the grid sub-layout specific to this embedded context.
════════════════════════════════════════════════════════════ */

/*
 * Section shell — cream background, full-bleed.
 * The inner wrapper (.section-features-inner) handles the
 * max-width cap and side padding so the section background
 * can still bleed edge-to-edge if we ever want it to.
 */
.section-features {
  background: var(--cream);
  padding: 4rem 0 5rem;
}

/*
 * Inner wrapper — mirrors .container (1200px, centred).
 * Applied to header, hero card, and grid so all three
 * share the same left/right edge. Max-width prevents the
 * two-column hero from becoming comically wide on large screens.
 */
.section-features-inner {
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 2.5rem;
}

/*
 * Section header: heading left, "View all" link right.
 * flex-wrap: nowrap + white-space: nowrap on the link
 * prevents the link from ever falling below the heading.
 * align-items: flex-end baseline-aligns the link to the
 * bottom of a multi-line heading.
 */
.section-features-header {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 2rem;
  flex-wrap: nowrap;
  margin-bottom: 2.5rem;
}
.section-features-header .btn-ghost {
  white-space: nowrap;
  flex-shrink: 0;
}

/*
 * Hero card — reuses .feat-hero-story from archive styles.
 * Override the archive's generous 4rem padding down to something
 * proportionate for an embedded section.
 *
 * justify-content: flex-start overrides the archive's 'center',
 * which was designed for a standalone page. In an embedded section
 * the vertically-centred layout creates a blank gap at the top
 * because the image forces the row to be ~400px tall.
 *
 * aspect-ratio: 4/3 on the image trims the card height slightly
 * vs. the archive's 3/2, keeping it readable without being towering.
 */
.section-features-hero {
  margin-bottom: 2rem;
}
.section-features-hero .feat-hero-body {
  padding: 2.5rem 3rem;
  justify-content: flex-start;
}
.section-features-hero .feat-hero-image {
  aspect-ratio: 4 / 3;
}

/*
 * 3-column card grid — same structure as .feat-grid but without
 * the fog background that .feat-grid-section adds on the archive.
 * .feat-card inherits all its existing card styles.
 */
.section-features-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 2rem;
}

/* ── Responsive ── */
@media (max-width: 900px) {
  .section-features { padding: 3rem 0 4rem; }
  .section-features-inner { padding: 0 1.5rem; }
  .section-features-grid { grid-template-columns: 1fr; }
  .section-features-hero .feat-hero-body { padding: 2rem 1.5rem; }
}
@media (max-width: 600px) {
  .section-features-header { flex-wrap: wrap; gap: 0.75rem; }
}


/* ═══════════════════════════════════════════════════════
   10. NEWSLETTER
════════════════════════════════════════════════════════════ */
.newsletter {
  background: var(--stone);
  padding: var(--space-xl) 2.5rem;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 4rem;
  align-items: center;
  position: relative;
  overflow: hidden;
}
.newsletter::before {
  content: '';
  position: absolute;
  right: -8rem; top: 50%;
  transform: translateY(-50%);
  width: 500px; height: 500px;
  border-radius: 50%;
  border: 1px solid rgba(201,168,130,0.1);
  pointer-events: none;
}
.newsletter::after {
  content: '';
  position: absolute;
  right: -5rem; top: 50%;
  transform: translateY(-50%);
  width: 300px; height: 300px;
  border-radius: 50%;
  border: 1px solid rgba(201,168,130,0.1);
  pointer-events: none;
}

.newsletter-eyebrow {
  font-family: 'DM Mono', monospace;
  font-size: 0.65rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--terracotta);
  margin-bottom: 1.2rem;
}
.newsletter-heading {
  font-family: 'Playfair Display', serif;
  font-size: clamp(2rem, 3.5vw, 3rem);
  font-weight: 400;
  color: var(--cream);
  line-height: 1.1;
}
.newsletter-heading em { font-style: italic; color: var(--clay); }
.newsletter-sub {
  font-size: 0.9rem;
  color: rgba(201,168,130,0.7);
  line-height: 1.6;
  margin-top: 1rem;
}

.newsletter-form { display: flex; flex-direction: column; gap: 1.2rem; }
.form-field { position: relative; }

.form-input {
  width: 100%;
  background: transparent;
  border: none;
  border-bottom: 1px solid rgba(201,168,130,0.3);
  padding: 0.9rem 0;
  font-family: 'Instrument Sans', sans-serif;
  font-size: 0.9rem;
  color: var(--cream);
  outline: none;
  transition: border-color 0.2s ease;
}
.form-input::placeholder { color: rgba(201,168,130,0.35); }
.form-input:focus { border-color: var(--clay); }
.form-input option { background: var(--stone); color: var(--cream); }

.form-note {
  font-family: 'DM Mono', monospace;
  font-size: 0.6rem;
  letter-spacing: 0.12em;
  color: rgba(201,168,130,0.35);
}
.form-submit {
  display: flex;
  align-items: center;
  justify-content: space-between;
  background: var(--terracotta);
  color: var(--cream);
  border: none;
  padding: 1rem 1.8rem;
  font-family: 'Instrument Sans', sans-serif;
  font-size: 0.85rem;
  font-weight: 600;
  cursor: pointer;
  border-radius: var(--radius-sm);
  transition: background 0.2s ease, transform 0.15s ease;
  letter-spacing: 0.02em;
}
.form-submit:hover {
  background: var(--clay);
  color: var(--stone);
  transform: translateY(-1px);
}


/* ═══════════════════════════════════════════════════════
   11. INSTAGRAM
════════════════════════════════════════════════════════════ */
.instagram { padding: var(--space-lg) 2.5rem; }
.instagram-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 1.5rem;
}
.instagram-handle {
  font-family: 'DM Mono', monospace;
  font-size: 0.75rem;
  letter-spacing: 0.15em;
  color: var(--terracotta);
}
.instagram-grid {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: 3px;
}
.ig-tile {
  aspect-ratio: 1;
  overflow: hidden;
  position: relative;
  cursor: pointer;
  display: block;
}
.ig-tile:hover .ig-overlay { opacity: 1; }
.ig-overlay {
  position: absolute;
  inset: 0;
  background: rgba(181,103,58,0.4);
  opacity: 0;
  transition: opacity 0.3s ease;
  display: flex;
  align-items: center;
  justify-content: center;
}
.ig-overlay-icon { color: var(--cream); font-size: 1.2rem; }


/* ═══════════════════════════════════════════════════════
   12. FOOTER
════════════════════════════════════════════════════════════ */
.footer {
  background: var(--stone);
  padding: var(--space-lg) 2.5rem var(--space-md);
  border-top: 1px solid rgba(201,168,130,0.1);
}
.footer-inner {
  display: grid;
  grid-template-columns: 1.5fr 1fr 1fr;
  gap: 4rem;
  padding-bottom: var(--space-lg);
  border-bottom: 1px solid rgba(201,168,130,0.1);
}

.footer-wordmark {
  font-family: 'Playfair Display', serif;
  font-size: 2.2rem;
  font-weight: 700;
  color: var(--cream);
  letter-spacing: -0.02em;
  margin-bottom: 1rem;
}
.footer-wordmark em { color: var(--terracotta); font-style: italic; font-weight: 400; }
.footer-tagline {
  font-size: 0.85rem;
  color: rgba(201,168,130,0.55);
  line-height: 1.6;
  max-width: 280px;
}

.footer-col-title {
  font-family: 'DM Mono', monospace;
  font-size: 0.6rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--clay);
  margin-bottom: 1.5rem;
}
.footer-links { display: flex; flex-direction: column; gap: 0.8rem; }
.footer-links a {
  font-size: 0.85rem;
  color: rgba(201,168,130,0.55);
  transition: color 0.2s ease;
}
.footer-links a:hover { color: var(--cream); }

/* WordPress adds <ul class="menu"> from wp_nav_menu() */
.footer .menu { display: flex; flex-direction: column; gap: 0.8rem; }
.footer .menu li a {
  font-size: 0.85rem;
  color: rgba(201,168,130,0.55);
  transition: color 0.2s ease;
}
.footer .menu li a:hover { color: var(--cream); }

.footer-cities { display: flex; flex-wrap: wrap; gap: 0.5rem; margin-top: 1.5rem; }
.city-pill {
  font-family: 'DM Mono', monospace;
  font-size: 0.55rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--dusk);
  border: 1px solid rgba(139,115,85,0.25);
  padding: 0.3rem 0.7rem;
  border-radius: 100px;
  transition: border-color 0.2s ease, color 0.2s ease;
  cursor: pointer;
}
.city-pill:hover,
.city-pill.active {
  border-color: var(--terracotta);
  color: var(--terracotta);
}

.footer-bottom {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding-top: 1.5rem;
}
.footer-copy {
  font-family: 'DM Mono', monospace;
  font-size: 0.6rem;
  letter-spacing: 0.12em;
  color: rgba(139,115,85,0.45);
}
.footer-legal { display: flex; gap: 1.5rem; }
.footer-legal a {
  font-family: 'DM Mono', monospace;
  font-size: 0.6rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: rgba(139,115,85,0.35);
  transition: color 0.2s ease;
}
.footer-legal a:hover { color: var(--clay); }


/* ═══════════════════════════════════════════════════════
   13. ANIMATIONS & TRANSITIONS
════════════════════════════════════════════════════════════ */
@keyframes fadeUp {
  from { opacity: 0; transform: translateY(18px); }
  to   { opacity: 1; transform: translateY(0);    }
}
@keyframes slideInRight {
  from { opacity: 0; transform: translateX(20px); }
  to   { opacity: 1; transform: translateX(0);    }
}
@keyframes scrollDrop {
  0%   { top: -100%; }
  100% { top: 200%;  }
}
@keyframes marquee {
  from { transform: translateX(0);    }
  to   { transform: translateX(-50%); }
}

/* Accessibility: respect reduced-motion preference */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}


/* ═══════════════════════════════════════════════════════
   14. RESPONSIVE — MOBILE BREAKPOINTS
   Below 768px: collapse all multi-column layouts to single column.
════════════════════════════════════════════════════════════ */
@media (max-width: 768px) {

  .hero { grid-template-columns: 1fr; min-height: auto; }
  .hero-image { height: 55vw; }
  .hero-text  { padding: 3rem 1.5rem; }
  .hero-badge { display: none; }

  .spots-grid {
    grid-template-columns: 1fr 1fr;
    grid-template-rows: auto;
    padding: 0 1.5rem;
  }
  /* Feature card takes full width on tablet */
  .spot-card--feature { grid-column: 1 / 3; grid-row: auto; }
  .spot-card--feature .spot-img { min-height: 320px; }

  .editorial { grid-template-columns: 1fr; gap: 2rem; padding: 3rem 1.5rem; }
  .editorial::before { display: none; }

  .neighborhood-grid { grid-template-columns: 1fr; }
  .neighborhoods     { padding: 3rem 1.5rem; }

  .newsletter { grid-template-columns: 1fr; gap: 2.5rem; padding: 3rem 1.5rem; }

  .instagram-grid { grid-template-columns: repeat(3, 1fr); }

  .footer-inner  { grid-template-columns: 1fr; gap: 2rem; }
  .footer-bottom { flex-direction: column; gap: 1rem; text-align: center; }

  .spots-header,
  .instagram-header { padding: 0 1.5rem; }
}

@media (max-width: 600px) {
  .spots-grid {
    grid-template-columns: 1fr;
    grid-template-rows: auto;
  }
  .spot-card--feature,
  .spot-card--medium { grid-column: auto !important; grid-row: auto !important; }
  .spot-card--feature .spot-img { min-height: 240px; }
  .spot-card--medium  .spot-img { height: 180px; }
}


/* ═══════════════════════════════════════════════════════
   CITY PAGE — page-city.php styles
   Appended to main.css and loaded on all pages.
   City-page-specific rules are scoped under .city-page
   where possible to avoid conflicts with other templates.
════════════════════════════════════════════════════════════ */

/* ── City Hero ── */
.city-hero {
  min-height: 88vh;
  display: grid;
  grid-template-columns: 1fr 1fr;
  align-items: stretch;
  position: relative;
  overflow: hidden;
}

.city-hero-text {
  padding: 6rem 2.5rem 4rem;
  display: flex; flex-direction: column; justify-content: center;
  position: relative; z-index: 2;
}
.city-hero-text::before {
  content: '';
  position: absolute; inset: 0;
  background: radial-gradient(ellipse 80% 70% at 10% 60%, rgba(181,103,58,0.06) 0%, transparent 70%);
  pointer-events: none;
}

.city-hero-eyebrow {
  display: flex; align-items: center; gap: 1rem;
  margin-bottom: 2.5rem;
  opacity: 0; animation: fadeUp 0.7s ease forwards 0.2s;
}

.city-hero-name {
  font-family: 'Playfair Display', serif;
  font-size: clamp(4rem, 8vw, 8rem);
  font-weight: 700; line-height: 0.95; letter-spacing: -0.03em;
  color: var(--stone); margin-bottom: 1.5rem;
  opacity: 0; animation: fadeUp 0.9s ease forwards 0.35s;
}
.city-hero-name em { color: var(--terracotta); font-style: italic; font-weight: 400; display: inline; }

.city-hero-tagline {
  font-family: 'Playfair Display', serif; font-style: italic;
  font-size: clamp(1rem, 1.8vw, 1.3rem); color: var(--dusk);
  line-height: 1.6; max-width: 400px; margin-bottom: 3rem;
  opacity: 0; animation: fadeUp 0.9s ease forwards 0.5s;
}

.city-stats {
  display: flex; gap: 2.5rem; margin-bottom: 3rem;
  opacity: 0; animation: fadeUp 0.9s ease forwards 0.65s;
}
.city-stat { border-left: 2px solid rgba(201,168,130,0.4); padding-left: 1rem; }
.city-stat-number { font-family: 'Playfair Display', serif; font-size: 2rem; font-weight: 700; color: var(--stone); line-height: 1; }
.city-stat-number em { color: var(--terracotta); font-style: normal; }
.city-stat-label { font-family: 'DM Mono', monospace; font-size: 0.58rem; letter-spacing: 0.18em; text-transform: uppercase; color: var(--dusk); margin-top: 0.3rem; }

.city-hero-actions {
  display: flex; align-items: center; gap: 1.2rem;
  opacity: 0; animation: fadeUp 0.9s ease forwards 0.8s;
}

.btn-outline {
  font-family: 'DM Mono', monospace;
  font-size: 0.62rem; letter-spacing: 0.18em; text-transform: uppercase;
  color: var(--stone); border: 1px solid rgba(46,42,37,0.25);
  padding: 0.7rem 1.4rem; border-radius: 4px;
  transition: border-color 0.2s ease, color 0.2s ease; display: inline-block;
}
.btn-outline:hover { border-color: var(--terracotta); color: var(--terracotta); }

/*
 * City hero image column.
 * The outer .city-hero-images is the right column in the hero grid.
 * We set a fixed aspect-ratio (3/4 portrait) on it so the column
 * is ALWAYS that proportion regardless of what photo was uploaded.
 * The <img> is absolutely positioned to fill the box — object-fit:cover
 * handles cropping. No matter the upload, the column never changes size.
 */
.city-hero-images {
  position: relative;
  overflow: hidden;
  background: var(--fog);
  aspect-ratio: 3 / 4;      /* portrait column — same every time */
  min-height: 400px;         /* floor on very narrow viewports */
}
.city-hero-img-main {
  position: absolute;
  inset: 0 0 2px 0;         /* leave 2px gap for the divider */
  width: 100%;
  height: 60%;
  object-fit: cover;
  object-position: center;
  display: block;
}
.city-hero-img-secondary {
  position: absolute;
  bottom: 0; left: 0; right: 0;
  width: 100%;
  height: calc(40% - 2px);
  object-fit: cover;
  object-position: center;
  display: block;
}
.city-hero-img-divider { position: absolute; top: 60%; left: 0; right: 0; height: 2px; background: var(--cream); z-index: 1; }
/* Placeholder: gives the image column visible height before real photos are added */
.city-hero-img-ph { position: absolute; inset: 0; background: var(--fog); display: flex; align-items: center; justify-content: center; }

.city-hero-chip {
  position: absolute; top: 2rem; left: -1rem;
  background: var(--cream); border: 1px solid rgba(201,168,130,0.3);
  border-radius: 8px; padding: 1rem 1.4rem;
  box-shadow: 0 6px 24px rgba(46,42,37,0.08);
  opacity: 0; animation: slideInRight 0.8s ease forwards 1s; z-index: 5;
}
.city-hero-chip-label { font-family: 'DM Mono', monospace; font-size: 0.58rem; letter-spacing: 0.18em; text-transform: uppercase; color: var(--terracotta); margin-bottom: 0.3rem; }
.city-hero-chip-value { font-family: 'Playfair Display', serif; font-size: 1.1rem; font-weight: 700; color: var(--stone); }
.city-hero-chip-value a { color: inherit; }

/* ── Filter Bar ── */
.filter-bar {
  position: sticky; top: 65px; z-index: 90;
  background: rgba(250,247,242,0.95); backdrop-filter: blur(8px);
  border-bottom: 1px solid rgba(201,168,130,0.15);
  padding: 0.9rem 2.5rem;
  display: flex; align-items: center; gap: 0.8rem; overflow-x: auto;
}
.filter-bar::-webkit-scrollbar { display: none; }
.filter-label { white-space: nowrap; flex-shrink: 0; }

.filter-pill {
  font-family: 'DM Mono', monospace;
  font-size: 0.62rem; letter-spacing: 0.15em; text-transform: uppercase;
  color: var(--dusk); border: 1px solid rgba(139,115,85,0.25); background: none;
  padding: 0.45rem 1rem; border-radius: 100px; cursor: pointer;
  white-space: nowrap; flex-shrink: 0; transition: all 0.2s ease;
}
.filter-pill:hover { border-color: var(--terracotta); color: var(--terracotta); }
.filter-pill.active { background: var(--terracotta); border-color: var(--terracotta); color: var(--cream); }

.filter-divider { width: 1px; height: 18px; background: rgba(201,168,130,0.3); flex-shrink: 0; }
.filter-count { margin-left: auto; flex-shrink: 0; font-family: 'DM Mono', monospace; font-size: 0.6rem; letter-spacing: 0.15em; color: var(--dusk); white-space: nowrap; }

/* ── Spots Section (city page variant) ── */
.spots-section { padding: 4rem 2.5rem 5rem; }
.spots-section-header { display: flex; align-items: flex-end; justify-content: space-between; margin-bottom: 2.5rem; }
.spots-section-header .section-title em { font-style: italic; color: var(--terracotta); }

.spots-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem; }

.spot-card { background: var(--cream); overflow: hidden; cursor: pointer; opacity: 0; transform: translateY(20px); transition: opacity 0.5s ease, transform 0.5s ease, box-shadow 0.3s ease; }
.spot-card.visible { opacity: 1; transform: translateY(0); }
.spot-card:hover { box-shadow: 0 12px 40px rgba(46,42,37,0.1); }
.spot-card:hover .spot-img-inner { transform: scale(1.04); }

/*
 * .spot-img uses aspect-ratio instead of a fixed pixel height.
 * This means every card image is ALWAYS the same proportional size
 * regardless of what photo was uploaded — no tall cards, no squashed ones.
 * 4/3 is a classic editorial ratio (landscape, generous height).
 * object-fit: cover fills the box and crops excess.
 */
.spot-img { overflow: hidden; position: relative; aspect-ratio: 4/3; background: var(--fog); }
.spot-img-inner, .spot-img img { width: 100%; height: 100%; object-fit: cover; object-position: center; transition: transform 0.6s ease; display: block; }
.spot-img-ph { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; }
.spot-category { position: absolute; top: 0.8rem; left: 0.8rem; background: rgba(250,247,242,0.92); backdrop-filter: blur(6px); padding: 0.3rem 0.65rem; border-radius: 3px; font-family: 'DM Mono', monospace; font-size: 0.58rem; letter-spacing: 0.18em; text-transform: uppercase; color: var(--stone); }
.spot-badge-new { position: absolute; top: 0.8rem; right: 0.8rem; background: var(--terracotta); color: var(--cream); padding: 0.25rem 0.6rem; border-radius: 3px; font-family: 'DM Mono', monospace; font-size: 0.55rem; letter-spacing: 0.15em; text-transform: uppercase; }

.spot-body { padding: 1.2rem 1.3rem 1.4rem; border: 1px solid rgba(201,168,130,0.15); border-top: none; }
.spot-meta { display: flex; align-items: center; gap: 0.6rem; margin-bottom: 0.5rem; }
.spot-neighborhood { font-family: 'DM Mono', monospace; font-size: 0.58rem; letter-spacing: 0.15em; text-transform: uppercase; color: var(--moss); }
.spot-name { font-family: 'Playfair Display', serif; font-size: 1.1rem; font-weight: 700; line-height: 1.2; color: var(--stone); margin-bottom: 0.4rem; }
.spot-name a { color: inherit; }
.spot-desc { font-size: 0.82rem; color: var(--dusk); line-height: 1.55; }
.spots-load-more { text-align: center; margin-top: 3rem; }

/* ── Neighborhood Scroll ── */
.neighborhoods-section { padding: 1rem 0 5rem; background: var(--fog); }
.neighborhoods-header { padding: 3.5rem 2.5rem 2rem; display: flex; align-items: flex-end; justify-content: space-between; }
.neighborhoods-scroll { display: flex; gap: 1rem; padding: 0 2.5rem 1.5rem; overflow-x: auto; }
.neighborhoods-scroll::-webkit-scrollbar { height: 3px; }
.neighborhoods-scroll::-webkit-scrollbar-thumb { background: var(--clay); border-radius: 100px; }

.neighborhood-tile { flex-shrink: 0; width: 280px; height: 360px; position: relative; overflow: hidden; border-radius: 6px; cursor: pointer; display: block; }
.neighborhood-tile::after { content: ''; position: absolute; inset: 0; background: linear-gradient(to top, rgba(46,42,37,0.75) 0%, rgba(46,42,37,0.05) 55%, transparent 100%); }
.neighborhood-tile:hover .nt-img { transform: scale(1.05); }
.nt-img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.6s ease; }
.nt-ph-1 { background: #C9A882; } .nt-ph-2 { background: #9B7A5C; } .nt-ph-3 { background: #4A5240; } .nt-ph-4 { background: #7A6652; } .nt-ph-5 { background: #B5885A; }
.nt-info { position: absolute; bottom: 1.4rem; left: 1.4rem; right: 1.4rem; z-index: 1; }
.nt-count { font-family: 'DM Mono', monospace; font-size: 0.58rem; letter-spacing: 0.18em; text-transform: uppercase; color: rgba(250,247,242,0.6); margin-bottom: 0.3rem; }
.nt-name { font-family: 'Playfair Display', serif; font-size: 1.4rem; font-weight: 700; color: var(--cream); line-height: 1.1; }

/* ── City Story ── */
.city-story { padding: 6rem 2.5rem; display: grid; grid-template-columns: 1fr 1fr; gap: 7rem; align-items: center; position: relative; overflow: hidden; }
.city-story::before { content: attr(data-city-initial); position: absolute; top: -3rem; right: -2rem; font-family: 'Playfair Display', serif; font-size: 28rem; font-weight: 700; color: rgba(181,103,58,0.04); line-height: 1; pointer-events: none; user-select: none; }
.city-story-quote { font-family: 'Playfair Display', serif; font-size: clamp(1.8rem, 2.8vw, 2.6rem); font-style: italic; font-weight: 400; line-height: 1.25; color: var(--stone); }
.city-story-quote em { color: var(--terracotta); }
.city-story-body { font-size: 0.95rem; color: var(--dusk); line-height: 1.75; margin: 1.5rem 0 2rem; }
.city-story-link { font-family: 'Playfair Display', serif; font-style: italic; font-size: 1rem; color: var(--terracotta); border-bottom: 1px solid rgba(181,103,58,0.3); padding-bottom: 0.15rem; display: inline-flex; align-items: center; gap: 0.5rem; transition: gap 0.2s ease, border-color 0.2s ease; }
.city-story-link:hover { gap: 0.8rem; border-color: var(--terracotta); }

/* ── Quick Picks ── */
.quick-picks { padding: 0 2.5rem 5rem; }
.quick-picks-header { display: flex; align-items: flex-end; justify-content: space-between; margin-bottom: 2rem; }
.quick-picks-header .section-title em { font-style: italic; color: var(--terracotta); }
.picks-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1px; background: rgba(201,168,130,0.2); border: 1px solid rgba(201,168,130,0.2); }
.pick-item { background: var(--cream); padding: 1.8rem 1.5rem; display: flex; flex-direction: column; gap: 0.8rem; transition: background 0.2s ease; cursor: pointer; }
.pick-item:hover { background: var(--fog); }
.pick-item:hover .pick-name { color: var(--terracotta); }
.pick-rank { font-family: 'Playfair Display', serif; font-size: 2.5rem; font-weight: 700; color: rgba(201,168,130,0.35); line-height: 1; }
.pick-name { font-family: 'Playfair Display', serif; font-size: 1.05rem; font-weight: 700; color: var(--stone); line-height: 1.2; transition: color 0.2s ease; }
.pick-neighborhood { font-size: 0.8rem; color: var(--dusk); margin-top: auto; }

/* ── Instagram CTA ── */
.ig-cta { background: var(--stone); padding: 4rem 2.5rem; display: flex; align-items: center; justify-content: space-between; gap: 2rem; }
.ig-cta-left { display: flex; align-items: center; gap: 2rem; }
.ig-cta-icon { font-size: 1.8rem; color: var(--clay); flex-shrink: 0; }
.ig-cta-heading { font-family: 'Playfair Display', serif; font-size: clamp(1.4rem, 2.5vw, 2rem); font-weight: 400; color: var(--cream); line-height: 1.2; }
.ig-cta-heading em { color: var(--clay); font-style: italic; }
.ig-cta-handle { font-family: 'DM Mono', monospace; font-size: 0.75rem; letter-spacing: 0.15em; color: var(--terracotta); margin-top: 0.4rem; display: block; }
.btn-primary-light { font-family: 'Instrument Sans', sans-serif; font-size: 0.85rem; font-weight: 600; background: var(--clay); color: var(--stone); padding: 0.85rem 2rem; border-radius: 4px; transition: background 0.2s ease, transform 0.15s ease; white-space: nowrap; flex-shrink: 0; display: inline-block; }
.btn-primary-light:hover { background: var(--cream); transform: translateY(-2px); }

/* ── Nav city switcher ── */
.nav-cities { display: flex; align-items: center; gap: 0.4rem; }
.nav-city-pill { font-family: 'DM Mono', monospace; font-size: 0.58rem; letter-spacing: 0.15em; text-transform: uppercase; color: var(--dusk); border: 1px solid rgba(139,115,85,0.2); padding: 0.3rem 0.75rem; border-radius: 100px; transition: all 0.2s ease; cursor: pointer; }
.nav-city-pill:hover { border-color: var(--terracotta); color: var(--terracotta); }
.nav-city-pill.active { border-color: var(--terracotta); color: var(--terracotta); background: rgba(181,103,58,0.06); }

/* ── Other Cities ── */
.other-cities { padding: 5rem 2.5rem; background: var(--linen, #EDE8DF); }
.other-cities-header { margin-bottom: 2.5rem; }
.other-cities-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; }
.city-tile { border: 1px solid rgba(201,168,130,0.25); padding: 2rem; background: var(--cream); transition: border-color 0.2s ease, box-shadow 0.2s ease; cursor: pointer; display: block; }
.city-tile:hover { border-color: var(--terracotta); box-shadow: 0 6px 24px rgba(46,42,37,0.06); }
.city-tile:hover .city-tile-arrow { transform: translateX(4px); }
.city-tile--collective { background: var(--stone); border-color: rgba(201,168,130,0.15); }
.city-tile-label { margin-bottom: 0.8rem; display: block; }
.city-tile-name { font-family: 'Playfair Display', serif; font-size: 1.8rem; font-weight: 700; color: var(--stone); letter-spacing: -0.02em; margin-bottom: 0.8rem; line-height: 1; }
.city-tile-desc { font-size: 0.82rem; color: var(--dusk); line-height: 1.55; margin-bottom: 1.5rem; }
.city-tile-footer { display: flex; align-items: center; justify-content: space-between; }
.city-tile-count { font-family: 'DM Mono', monospace; font-size: 0.58rem; letter-spacing: 0.18em; text-transform: uppercase; color: var(--clay); }
.city-tile-arrow { font-size: 1rem; color: var(--terracotta); transition: transform 0.2s ease; }

/* ── City Page Responsive ── */
@media (max-width: 900px) {
  .city-hero { grid-template-columns: 1fr; }
  /* city-hero-images uses aspect-ratio: 3/4 — auto-scales, no height override needed */
  .city-hero-text { padding: 3rem 1.5rem; }
  .city-hero-chip { display: none; }
  .city-story { grid-template-columns: 1fr; gap: 2rem; padding: 3rem 1.5rem; }
  .city-story::before { display: none; }
  .spots-grid { grid-template-columns: repeat(2, 1fr); }
  .picks-grid { grid-template-columns: repeat(2, 1fr); }
  .other-cities-grid { grid-template-columns: 1fr; }
  .ig-cta { flex-direction: column; align-items: flex-start; padding: 3rem 1.5rem; }
  .nav-cities { display: none; }
}
@media (max-width: 600px) {
  .spots-grid { grid-template-columns: 1fr; }
  .picks-grid { grid-template-columns: 1fr; }
  .city-stats { gap: 1.5rem; }
  .filter-bar { padding: 0.8rem 1.5rem; }
  .spots-section, .quick-picks, .other-cities { padding-left: 1.5rem; padding-right: 1.5rem; }
  .neighborhoods-scroll { padding-left: 1.5rem; }
}




/* ═══════════════════════════════════════════════════════
   PAGE.PHP — Standard WordPress page template
════════════════════════════════════════════════════════════ */

/* ── Page hero header ── */
/*
 * Full-width title strip. The radial glow behind the title
 * uses the same terracotta warmth as the city hero.
 */
.page-hero {
  padding: 5rem 2.5rem 4rem;
  position: relative;
  overflow: hidden;
  border-bottom: 1px solid rgba(201,168,130,0.15);
}
.page-hero::before {
  content: '';
  position: absolute; inset: 0;
  background: radial-gradient(ellipse 60% 80% at 15% 50%, rgba(181,103,58,0.06) 0%, transparent 70%);
  pointer-events: none;
}
.page-hero-inner { position: relative; max-width: 800px; }

.page-hero-eyebrow {
  display: flex; align-items: center; gap: 1rem;
  margin-bottom: 1.5rem;
}

.page-hero-title {
  font-family: 'Playfair Display', serif;
  font-size: clamp(2.5rem, 5vw, 4.5rem);
  font-weight: 700;
  letter-spacing: -0.02em;
  line-height: 1.05;
  color: var(--stone);
}

.page-hero-subtitle {
  font-family: 'Playfair Display', serif;
  font-style: italic;
  font-size: clamp(1rem, 1.8vw, 1.25rem);
  color: var(--dusk);
  line-height: 1.6;
  margin-top: 1.2rem;
  max-width: 560px;
}

/* ── Page content column ── */
/*
 * Centered reading column — max 740px keeps line length
 * comfortable (~70 characters), a standard readability target.
 */
.page-content-wrap {
  padding: 4rem 2.5rem 6rem;
}
.page-content {
  max-width: 740px;
}

/* ── Typography inside page content ── */
/* These rules style whatever the block editor outputs */

.page-content p {
  font-size: 1rem;
  line-height: 1.8;
  color: var(--dusk);
  margin-bottom: 1.5rem;
}
.page-content p:last-child { margin-bottom: 0; }

.page-content h2 {
  font-family: 'Playfair Display', serif;
  font-size: clamp(1.6rem, 2.5vw, 2rem);
  font-weight: 700;
  color: var(--stone);
  letter-spacing: -0.02em;
  margin: 3rem 0 1rem;
  line-height: 1.15;
}
.page-content h3 {
  font-family: 'Playfair Display', serif;
  font-size: clamp(1.2rem, 2vw, 1.5rem);
  font-weight: 400;
  font-style: italic;
  color: var(--stone);
  margin: 2.5rem 0 0.8rem;
}
.page-content h4 {
  font-family: 'DM Mono', monospace;
  font-size: 0.7rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--terracotta);
  margin: 2rem 0 0.6rem;
}

.page-content ul,
.page-content ol {
  padding-left: 1.5rem;
  margin-bottom: 1.5rem;
  color: var(--dusk);
  line-height: 1.8;
}
.page-content li { margin-bottom: 0.4rem; }

.page-content a {
  color: var(--terracotta);
  text-decoration: underline;
  text-underline-offset: 3px;
  text-decoration-color: rgba(181,103,58,0.3);
  transition: text-decoration-color 0.2s ease;
}
.page-content a:hover { text-decoration-color: var(--terracotta); }

.page-content blockquote {
  border-left: 2px solid var(--terracotta);
  padding: 0.5rem 0 0.5rem 1.8rem;
  margin: 2.5rem 0;
  font-family: 'Playfair Display', serif;
  font-style: italic;
  font-size: clamp(1.1rem, 2vw, 1.4rem);
  color: var(--stone);
  line-height: 1.45;
}

/* Images inside page content */
.page-content img {
  width: 100%;
  height: auto;
  border-radius: 4px;
  margin: 2rem 0;
  display: block;
}
.page-content figure { margin: 2rem 0; }
.page-content figcaption {
  font-family: 'DM Mono', monospace;
  font-size: 0.62rem;
  letter-spacing: 0.12em;
  color: var(--clay);
  text-transform: uppercase;
  margin-top: 0.6rem;
}

/* Horizontal rule */
.page-content hr {
  border: none;
  height: 1px;
  background: rgba(201,168,130,0.3);
  margin: 3rem 0;
}

/* Paginated content links */
.page-links {
  display: flex; align-items: center; gap: 0.5rem;
  margin-top: 3rem; padding-top: 2rem;
  border-top: 1px solid rgba(201,168,130,0.2);
}
.page-links a, .page-links > span:not(.label) {
  font-family: 'DM Mono', monospace;
  font-size: 0.65rem; letter-spacing: 0.15em;
  padding: 0.3rem 0.7rem;
  border: 1px solid rgba(201,168,130,0.3);
  border-radius: 3px;
  color: var(--dusk);
}
.page-links a:hover { border-color: var(--terracotta); color: var(--terracotta); }

/* ── Responsive ── */
@media (max-width: 600px) {
  .page-hero { padding: 3rem 1.5rem 2.5rem; }
  .page-content-wrap { padding: 2.5rem 1.5rem 4rem; }
}


/* ═══════════════════════════════════════════════════════
   CITIES PARENT PAGE — page-cities.php
════════════════════════════════════════════════════════════ */

/* ── Shared hero pattern (Cities + Neighborhoods) ── */
/*
 * Dark full-bleed hero with optional background image.
 * The overlay darkens the image enough to keep white text legible.
 * Without an image, falls back to the stone color.
 */
.cp-hero,
.nb-hero {
  position: relative;
  min-height: 70vh;
  display: flex;
  align-items: flex-end;
  overflow: hidden;
  background: var(--stone);
}

.cp-hero-bg,
.nb-hero-bg {
  position: absolute;
  inset: 0;
}
.cp-hero-bg-img,
.nb-hero-bg-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}
.cp-hero-bg-overlay,
.nb-hero-bg-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to top,
    rgba(46,42,37,0.85) 0%,
    rgba(46,42,37,0.4)  50%,
    rgba(46,42,37,0.15) 100%
  );
}
.cp-hero-bg--plain,
.nb-hero-bg--plain {
  background: radial-gradient(ellipse 80% 60% at 30% 40%, rgba(181,103,58,0.15) 0%, transparent 70%), var(--stone);
}

.cp-hero-content,
.nb-hero-content {
  position: relative;
  z-index: 2;
  padding: 5rem 2.5rem 4rem;
  max-width: 680px;
}

.cp-hero-eyebrow,
.nb-hero-eyebrow {
  display: flex;
  align-items: center;
  gap: 1rem;
  margin-bottom: 2rem;
  opacity: 0;
  animation: fadeUp 0.7s ease forwards 0.2s;
}

/* Light rule variant for dark backgrounds */
.rule--light { background: rgba(201,168,130,0.4); }

.cp-hero-title,
.nb-hero-title {
  font-family: 'Playfair Display', serif;
  font-size: clamp(3.5rem, 7vw, 7rem);
  font-weight: 700;
  letter-spacing: -0.03em;
  line-height: 0.95;
  color: var(--cream);
  margin-bottom: 1.5rem;
  opacity: 0;
  animation: fadeUp 0.9s ease forwards 0.35s;
}
.cp-hero-title em,
.nb-hero-title em {
  color: var(--clay);
  font-style: italic;
  font-weight: 400;
  display: block;
}

.cp-hero-tagline,
.nb-hero-tagline {
  font-family: 'Playfair Display', serif;
  font-style: italic;
  font-size: clamp(1rem, 1.8vw, 1.25rem);
  color: rgba(201,168,130,0.8);
  line-height: 1.6;
  max-width: 480px;
  margin-bottom: 2.5rem;
  opacity: 0;
  animation: fadeUp 0.9s ease forwards 0.5s;
}

.cp-hero-stats,
.nb-hero-stats {
  display: flex;
  gap: 2.5rem;
  opacity: 0;
  animation: fadeUp 0.9s ease forwards 0.65s;
}
.cp-hero-stat,
.nb-hero-stat {
  border-left: 2px solid rgba(201,168,130,0.3);
  padding-left: 1rem;
}
.cp-hero-stat-number,
.nb-hero-stat-number {
  font-family: 'Playfair Display', serif;
  font-size: 2rem;
  font-weight: 700;
  color: var(--cream);
  line-height: 1;
}
.cp-hero-stat-label,
.nb-hero-stat-label {
  font-family: 'DM Mono', monospace;
  font-size: 0.58rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: rgba(201,168,130,0.5);
  margin-top: 0.3rem;
}


/* ── Intro strip ── */
.cp-intro,
.nb-intro {
  background: var(--fog);
  padding: 4rem 2.5rem;
  border-bottom: 1px solid rgba(201,168,130,0.15);
}
.cp-intro-inner,
.nb-intro-inner {
  max-width: 720px;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 4rem;
  align-items: center;
}
.cp-intro-quote,
.nb-intro-quote {
  font-family: 'Playfair Display', serif;
  font-size: clamp(1.3rem, 2.2vw, 1.8rem);
  color: var(--stone);
  line-height: 1.3;
  font-style: normal;
}
.cp-intro-quote em,
.nb-intro-quote em { color: var(--terracotta); }
.cp-intro-sub,
.nb-intro-sub {
  font-size: 0.9rem;
  color: var(--dusk);
  line-height: 1.75;
}


/* ── Cities section ── */
.cp-cities { padding: 0; }
.cp-cities-header {
  padding: 3.5rem 2.5rem 0;
  margin-bottom: 0;
}

/*
 * City cards — full-width editorial feature cards.
 * Each card is a 50/50 image + content split.
 * Even cards flip image to the right using CSS order.
 */
.cp-city-card {
  display: grid;
  grid-template-columns: 1fr 1fr;
  min-height: 480px;
  border-bottom: 1px solid rgba(201,168,130,0.12);
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 0.6s ease, transform 0.6s ease;
}
.cp-city-card.visible { opacity: 1; transform: translateY(0); }

/* Flip even cards: image moves to right */
.cp-city-card:nth-child(even) .cp-city-card-image { order: 2; }
.cp-city-card:nth-child(even) .cp-city-card-body   { order: 1; }

/*
 * Cities page — image side of each editorial card.
 * aspect-ratio: 4/3 locks the image column to that proportion.
 * The <img> is absolutely positioned to fill the locked box.
 * This means the image is ALWAYS 4:3 regardless of:
 *   - what photo was uploaded
 *   - how tall the content side gets
 * The grid column stretches but the image itself never distorts.
 */
.cp-city-card-image {
  position: relative;
  overflow: hidden;
  background: var(--fog);
  aspect-ratio: 4 / 3;
  min-height: 320px;        /* floor for very narrow screens */
  align-self: stretch;      /* column fills the card height */
}
.cp-city-card-image img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  transition: transform 0.7s ease;
  display: block;
}
.cp-city-card:hover .cp-city-card-image img { transform: scale(1.04); }
.cp-city-card-image-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(135deg, rgba(181,103,58,0.08) 0%, transparent 60%);
  pointer-events: none;
}

/* Placeholder when no image is set */
.cp-city-card-placeholder {
  width: 100%; height: 100%;
  display: flex; align-items: center; justify-content: center;
  background: var(--linen, #EDE8DF);
}
.cp-city-card-placeholder span {
  font-family: 'Playfair Display', serif;
  font-size: 8rem;
  font-weight: 700;
  color: rgba(201,168,130,0.25);
  line-height: 1;
  user-select: none;
}

.cp-city-card-body {
  padding: 3.5rem;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 0;
  background: var(--cream);
}

.cp-city-card-eyebrow {
  display: flex;
  align-items: center;
  margin-bottom: 1.2rem;
}

.cp-city-card-name {
  font-family: 'Playfair Display', serif;
  font-size: clamp(2.5rem, 4.5vw, 4rem);
  font-weight: 700;
  letter-spacing: -0.03em;
  line-height: 0.95;
  color: var(--stone);
  margin-bottom: 1rem;
}

.cp-city-card-tagline {
  font-family: 'Playfair Display', serif;
  font-style: italic;
  font-size: 1.05rem;
  color: var(--dusk);
  line-height: 1.55;
  margin-bottom: 2rem;
  max-width: 380px;
}

.cp-city-card-stats {
  display: flex;
  align-items: center;
  gap: 1.5rem;
  margin-bottom: 2rem;
}
.cp-city-card-stat {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
}
.cp-city-card-stat strong {
  font-family: 'Playfair Display', serif;
  font-size: 1.8rem;
  font-weight: 700;
  color: var(--stone);
  line-height: 1;
}
.cp-city-card-stat span {
  font-family: 'DM Mono', monospace;
  font-size: 0.58rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--dusk);
}
.cp-city-card-stat-divider {
  width: 1px;
  height: 2.5rem;
  background: rgba(201,168,130,0.3);
}

.cp-city-card-cta { align-self: flex-start; margin-top: auto; }


/* ── Beco Collective nudge ── */
.cp-collective-nudge {
  background: var(--stone);
  padding: 4rem 2.5rem;
}
.cp-collective-nudge-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 2rem;
  max-width: 900px;
}
.cp-collective-nudge-heading {
  font-family: 'Playfair Display', serif;
  font-size: clamp(1.4rem, 2.5vw, 2rem);
  font-weight: 400;
  color: var(--cream);
  line-height: 1.2;
  margin-bottom: 0.5rem;
}
.cp-collective-nudge-heading em { color: var(--clay); font-style: italic; display: block; }
.cp-collective-nudge-sub {
  font-size: 0.88rem;
  color: rgba(201,168,130,0.5);
  line-height: 1.6;
  max-width: 480px;
  margin-top: 0.5rem;
}


/* ═══════════════════════════════════════════════════════
   NEIGHBORHOODS PARENT PAGE — page-neighborhoods.php
════════════════════════════════════════════════════════════ */

/* ── City filter bar ── */
/*
 * Sticky anchor-link bar to jump to each city's section.
 * Same visual pattern as the spot filter bar on city pages.
 */
.nb-city-filter {
  position: sticky;
  top: 65px;
  z-index: 90;
  background: rgba(250,247,242,0.95);
  backdrop-filter: blur(8px);
  border-bottom: 1px solid rgba(201,168,130,0.15);
  padding: 0.9rem 2.5rem;
  display: flex;
  align-items: center;
  gap: 0.6rem;
  overflow-x: auto;
}
.nb-city-filter::-webkit-scrollbar { display: none; }

.nb-city-pill {
  font-family: 'DM Mono', monospace;
  font-size: 0.62rem;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--dusk);
  border: 1px solid rgba(139,115,85,0.25);
  padding: 0.45rem 1rem;
  border-radius: 100px;
  white-space: nowrap;
  flex-shrink: 0;
  transition: all 0.2s ease;
  text-decoration: none;
}
.nb-city-pill:hover { border-color: var(--terracotta); color: var(--terracotta); }
.nb-city-pill.active { background: var(--terracotta); border-color: var(--terracotta); color: var(--cream); }


/* ── Neighborhood sections container ── */
.nb-sections { padding-bottom: 2rem; }

/* ── Per-city section ── */
.nb-city-section {
  padding: 4rem 2.5rem 3rem;
  border-bottom: 1px solid rgba(201,168,130,0.1);
}
.nb-city-section:last-child { border-bottom: none; }

.nb-city-section-header {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  margin-bottom: 2rem;
}
.nb-city-section-title {
  font-family: 'Playfair Display', serif;
  font-size: clamp(1.8rem, 2.8vw, 2.5rem);
  font-weight: 400;
  letter-spacing: -0.02em;
  line-height: 1.1;
  color: var(--stone);
}
.nb-city-section-title em { font-style: italic; color: var(--terracotta); }


/* ── Neighborhood tile grid ── */
/*
 * 4 columns on desktop, 3 on tablet, 2 on mobile.
 * Each tile is a portrait card — image fills top 75%,
 * text info sits in the bottom quarter with a gradient overlay.
 */
.nb-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1rem;
}

/*
 * Neighborhood tile — portrait card on the neighborhoods page.
 * aspect-ratio: 3/4 enforces portrait shape regardless of upload.
 * The .nb-tile-img wrapper fills the tile (position:absolute + inset:0)
 * and the <img> fills that wrapper the same way.
 */
.nb-tile {
  position: relative;
  aspect-ratio: 3 / 4;
  border-radius: 6px;
  overflow: hidden;
  display: block;
  text-decoration: none;
}
.nb-tile:hover .nb-tile-img img,
.nb-tile:hover .nb-tile-img-ph { transform: scale(1.05); }
.nb-tile:hover .nb-tile-desc { opacity: 1; transform: translateY(0); }

.nb-tile-img {
  position: absolute;
  inset: 0;
}
.nb-tile-img img {
  position: absolute;
  inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
  object-position: center;
  transition: transform 0.6s ease;
  display: block;
}
.nb-tile-img-ph {
  position: absolute;
  inset: 0;
  transition: transform 0.6s ease;
}
.nb-tile-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to top,
    rgba(46,42,37,0.82) 0%,
    rgba(46,42,37,0.1)  55%,
    transparent         100%
  );
}

.nb-tile-info {
  position: absolute;
  bottom: 1.2rem;
  left: 1.2rem;
  right: 1.2rem;
  z-index: 2;
}
.nb-tile-count {
  font-family: 'DM Mono', monospace;
  font-size: 0.58rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: rgba(250,247,242,0.55);
  margin-bottom: 0.25rem;
}
.nb-tile-name {
  font-family: 'Playfair Display', serif;
  font-size: 1.2rem;
  font-weight: 700;
  color: var(--cream);
  line-height: 1.15;
}
.nb-tile-city {
  font-family: 'DM Mono', monospace;
  font-size: 0.55rem;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: rgba(201,168,130,0.55);
  margin-top: 0.2rem;
}

/* Hover description — slides up from below the name */
.nb-tile-desc {
  position: absolute;
  bottom: calc(1.2rem + 3.5rem);
  left: 1.2rem;
  right: 1.2rem;
  z-index: 2;
  font-family: 'Instrument Sans', sans-serif;
  font-size: 0.8rem;
  color: rgba(250,247,242,0.75);
  line-height: 1.5;
  opacity: 0;
  transform: translateY(6px);
  transition: opacity 0.3s ease, transform 0.3s ease;
}


/* ── Cities strip at bottom of neighborhoods page ── */
.nb-cities-strip {
  background: var(--linen, #EDE8DF);
  padding: 4rem 2.5rem;
}
.nb-cities-strip-inner { max-width: 900px; }
.nb-cities-strip-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1rem;
}


/* ── Responsive — both pages ── */
@media (max-width: 900px) {
  .cp-hero-content, .nb-hero-content { padding: 3rem 1.5rem; }

  .cp-intro-inner, .nb-intro-inner { grid-template-columns: 1fr; gap: 1.5rem; }

  .cp-city-card { grid-template-columns: 1fr; }
  .cp-city-card:nth-child(even) .cp-city-card-image { order: 0; }
  .cp-city-card:nth-child(even) .cp-city-card-body   { order: 0; }
  /* No height override — aspect-ratio handles sizing automatically */
  .cp-city-card-body  { padding: 2.5rem 1.5rem; }

  .nb-grid { grid-template-columns: repeat(2, 1fr); }
  /* nb-tile uses aspect-ratio: 3/4 — no height override needed */

  .nb-city-section { padding: 3rem 1.5rem 2rem; }
  .nb-cities-strip { padding: 3rem 1.5rem; }
  .nb-cities-strip-grid { grid-template-columns: 1fr; }

  .cp-collective-nudge-inner { flex-direction: column; align-items: flex-start; }
  .cp-cities-header { padding: 2.5rem 1.5rem 0; }
}

@media (max-width: 600px) {
  .nb-grid { grid-template-columns: repeat(2, 1fr); gap: 0.6rem; }
  /* nb-tile aspect-ratio scales naturally — no height needed */
  .cp-hero-stats, .nb-hero-stats { gap: 1.5rem; }
  .nb-city-filter { padding: 0.8rem 1.5rem; }
}



/* ═══════════════════════════════════════════════════════
   ABOUT PAGE — page-about.php
════════════════════════════════════════════════════════════ */

/* ── ① Hero ── */
.about-hero {
  position: relative;
  min-height: 100vh;
  display: flex;
  align-items: center;
  overflow: hidden;
  background: var(--stone);
}
.about-hero-bg { position: absolute; inset: 0; }
.about-hero-bg-img { width: 100%; height: 100%; object-fit: cover; object-position: center; display: block; }
.about-hero-bg-overlay {
  position: absolute; inset: 0;
  background: linear-gradient(
    to right,
    rgba(46,42,37,0.82) 0%,
    rgba(46,42,37,0.55) 50%,
    rgba(46,42,37,0.25) 100%
  );
}
.about-hero-bg--plain {
  background: radial-gradient(ellipse 90% 70% at 20% 50%, rgba(181,103,58,0.18) 0%, transparent 65%), var(--stone);
}
.about-hero-content {
  position: relative; z-index: 2;
  padding: 6rem 2.5rem;
  max-width: 640px;
  display: flex; flex-direction: column; gap: 0;
}

/* Large wordmark in hero — the brand statement IS the headline */
.about-hero-wordmark {
  width: 220px;
  height: auto;
  display: block;
  margin-bottom: 2.5rem;
  /* Invert to white since the PNG is cream-coloured text */
  filter: brightness(0) invert(1);
  opacity: 0.9;
}

.about-hero-tagline {
  font-family: 'Playfair Display', serif;
  font-style: italic;
  font-size: clamp(1.3rem, 2.5vw, 2rem);
  color: rgba(201,168,130,0.85);
  line-height: 1.4;
  max-width: 500px;
  margin-bottom: 3rem;
}

.about-hero-stats { display: flex; gap: 2.5rem; margin-bottom: 4rem; }
.about-hero-stat { border-left: 2px solid rgba(201,168,130,0.3); padding-left: 1rem; }
.about-hero-stat-number { font-family: 'Playfair Display', serif; font-size: 2.2rem; font-weight: 700; color: var(--cream); line-height: 1; }
.about-hero-stat-label { font-family: 'DM Mono', monospace; font-size: 0.55rem; letter-spacing: 0.18em; text-transform: uppercase; color: rgba(201,168,130,0.5); margin-top: 0.3rem; }

.about-hero-scroll { display: flex; flex-direction: column; align-items: flex-start; gap: 0.8rem; }
.about-hero-scroll-line { width: 1px; height: 48px; background: rgba(201,168,130,0.3); }


/* ── ② Mission strip ── */
.about-mission {
  background: var(--terracotta);
  padding: 4rem 2.5rem;
}
.about-mission-inner {
  display: flex; align-items: flex-start; gap: 2rem; max-width: 820px;
}
.about-mission-inner .rule { background: rgba(250,247,242,0.4); flex-shrink: 0; margin-top: 0.5rem; }
.about-mission-text {
  font-family: 'Playfair Display', serif;
  font-size: clamp(1.4rem, 2.5vw, 2.2rem);
  font-weight: 400; line-height: 1.35;
  color: var(--cream);
}


/* ── ③ Pillars ── */
.about-pillars {
  padding: 6rem 2.5rem 5rem;
  background: var(--cream);
}
.about-pillars-header { margin-bottom: 3.5rem; }
.about-pillars-eyebrow { display: flex; align-items: center; gap: 1rem; }
.about-pillars-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 0;
  border: 1px solid rgba(201,168,130,0.2);
}
.about-pillar {
  padding: 3rem 2.5rem;
  border-right: 1px solid rgba(201,168,130,0.2);
  transition: background 0.2s ease;
}
.about-pillar:last-child { border-right: none; }
.about-pillar:hover { background: var(--fog); }
.about-pillar-num {
  font-family: 'Playfair Display', serif;
  font-size: 4rem; font-weight: 700; line-height: 1;
  color: rgba(201,168,130,0.2);
  margin-bottom: 1.2rem;
}
.about-pillar-title {
  font-family: 'Playfair Display', serif;
  font-size: 1.4rem; font-weight: 700;
  color: var(--stone); line-height: 1.2;
  margin-bottom: 1rem;
}
.about-pillar-body {
  font-size: 0.9rem; color: var(--dusk); line-height: 1.75;
}


/* ── ④ Story section ── */
/*
 * Two-column split: large pull quote left, editorial paragraphs right.
 * Same grid as .city-story — consistent design language.
 */
.about-story {
  padding: 7rem 2.5rem;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 7rem;
  align-items: start;
  background: var(--fog);
  position: relative; overflow: hidden;
}
.about-story::before {
  content: '"';
  position: absolute; top: -2rem; left: -1rem;
  font-family: 'Playfair Display', serif;
  font-size: 30rem; font-weight: 700;
  color: rgba(181,103,58,0.04);
  line-height: 1; pointer-events: none; user-select: none;
}
.about-story-quote {
  font-family: 'Playfair Display', serif;
  font-size: clamp(1.8rem, 3vw, 2.8rem);
  font-style: normal; font-weight: 400;
  line-height: 1.25; color: var(--stone);
  position: sticky; top: calc(72px + 2rem);
}
.about-story-quote em { color: var(--terracotta); font-style: italic; }
.about-story-cite {
  display: block; margin-top: 1.5rem;
  font-family: 'DM Mono', monospace;
  font-size: 0.6rem; letter-spacing: 0.2em;
  text-transform: uppercase; color: var(--clay);
  font-style: normal;
}
.about-story-eyebrow { display: flex; align-items: center; gap: 1rem; margin-bottom: 2rem; }
.about-story-p {
  font-size: 1rem; color: var(--dusk);
  line-height: 1.85; margin-bottom: 1.5rem;
}


/* ── ⑤ Cities ── */
.about-cities {
  padding: 6rem 2.5rem 5rem;
  background: var(--cream);
}
.about-cities-header { margin-bottom: 3rem; }
.about-cities-eyebrow { display: flex; align-items: center; gap: 1rem; margin-bottom: 1rem; }
.about-cities-title {
  font-family: 'Playfair Display', serif;
  font-size: clamp(2rem, 4vw, 3.5rem);
  font-weight: 700; letter-spacing: -0.03em;
  line-height: 1; color: var(--stone);
}
.about-cities-title em { color: var(--terracotta); font-style: italic; font-weight: 400; }

/*
 * City cards — portrait aspect-ratio tiles.
 * Same fixed-ratio pattern as neighborhood tiles.
 * Image is absolutely positioned; content sits below.
 */
.about-cities-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem;
}
.about-city-card {
  display: flex; flex-direction: column;
  text-decoration: none;
  border: 1px solid rgba(201,168,130,0.18);
  overflow: hidden;
  transition: box-shadow 0.25s ease, transform 0.25s ease;
}
.about-city-card:hover { box-shadow: 0 12px 40px rgba(46,42,37,0.1); transform: translateY(-3px); }
.about-city-card:hover .about-city-card-img img { transform: scale(1.04); }

.about-city-card-img {
  position: relative;
  aspect-ratio: 4 / 3;   /* fixed ratio — consistent regardless of upload */
  overflow: hidden;
  background: var(--fog);
}
.about-city-card-img img {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover; object-position: center;
  transition: transform 0.7s ease; display: block;
}
.about-city-card-img-ph {
  position: absolute; inset: 0;
  display: flex; align-items: center; justify-content: center;
  background: var(--linen, #EDE8DF);
}
.about-city-card-img-ph span {
  font-family: 'Playfair Display', serif; font-size: 6rem;
  font-weight: 700; color: rgba(201,168,130,0.25);
}
.about-city-card-img-overlay {
  position: absolute; inset: 0;
  background: linear-gradient(to top, rgba(46,42,37,0.15) 0%, transparent 50%);
}

.about-city-card-body {
  padding: 1.8rem;
  display: flex; flex-direction: column;
  background: var(--cream); flex: 1;
}
.about-city-card-name {
  font-family: 'Playfair Display', serif;
  font-size: 1.8rem; font-weight: 700;
  letter-spacing: -0.02em; color: var(--stone);
  line-height: 1; margin-bottom: 0.6rem;
}
.about-city-card-tagline {
  font-family: 'Playfair Display', serif; font-style: italic;
  font-size: 0.9rem; color: var(--dusk); line-height: 1.55;
  margin-bottom: 1rem;
}
.about-city-card-count { color: var(--clay); margin-bottom: 1.2rem; }
.about-city-card-cta {
  font-family: 'DM Mono', monospace; font-size: 0.6rem;
  letter-spacing: 0.18em; text-transform: uppercase;
  color: var(--terracotta); margin-top: auto;
  transition: letter-spacing 0.2s ease;
}
.about-city-card:hover .about-city-card-cta { letter-spacing: 0.26em; }


/* ── ⑥ Brand marks ── */
/*
 * Dark stone background showcasing the full city wordmark suite.
 * Logos are displayed side by side with a label underneath.
 * The city logo PNGs have solid backgrounds — we display them
 * as-is (they're designed for dark placement).
 */
.about-marks {
  background: var(--stone);
  padding: 6rem 2.5rem;
}
.about-marks-inner { max-width: 1100px; }
.about-marks-header { margin-bottom: 4rem; }
.about-marks-sub {
  font-family: 'Playfair Display', serif; font-style: italic;
  font-size: clamp(1rem, 1.8vw, 1.4rem);
  color: rgba(201,168,130,0.55); line-height: 1.5;
  max-width: 520px; margin-top: 0.8rem;
}
.about-marks-logos {
  display: grid;
  grid-template-columns: 2fr 1fr 1fr 1fr 1fr;
  gap: 1px;
  background: rgba(201,168,130,0.1);
  border: 1px solid rgba(201,168,130,0.1);
}
.about-marks-logo {
  padding: 2.5rem 2rem;
  display: flex; flex-direction: column;
  align-items: flex-start; gap: 1.2rem;
  background: var(--stone);
  transition: background 0.2s ease;
}
.about-marks-logo:hover { background: rgba(201,168,130,0.05); }
.about-marks-logo--main { border-right: 1px solid rgba(201,168,130,0.1); }
.about-marks-logo-img {
  height: 48px; width: auto; display: block;
  object-fit: contain; object-position: left center;
}
.about-marks-logo--main .about-marks-logo-img { height: 56px; }
.about-marks-logo-label {
  font-family: 'DM Mono', monospace;
  font-size: 0.55rem; letter-spacing: 0.2em;
  text-transform: uppercase;
  color: rgba(201,168,130,0.4);
}


/* ── Responsive ── */
@media (max-width: 1000px) {
  .about-marks-logos { grid-template-columns: 1fr 1fr 1fr; }
  .about-marks-logo--main { grid-column: span 3; border-right: none; border-bottom: 1px solid rgba(201,168,130,0.1); }
}
@media (max-width: 900px) {
  .about-hero-content { padding: 4rem 1.5rem; }
  .about-hero-wordmark { width: 160px; }
  .about-mission-inner { flex-direction: column; gap: 1rem; }
  .about-pillars { padding: 4rem 1.5rem; }
  .about-pillars-grid { grid-template-columns: 1fr; }
  .about-pillar { border-right: none; border-bottom: 1px solid rgba(201,168,130,0.2); }
  .about-pillar:last-child { border-bottom: none; }
  .about-story { grid-template-columns: 1fr; gap: 3rem; padding: 4rem 1.5rem; }
  .about-story-quote { position: static; }
  .about-story::before { display: none; }
  .about-cities { padding: 4rem 1.5rem; }
  .about-cities-grid { grid-template-columns: 1fr 1fr; }
  .about-marks { padding: 4rem 1.5rem; }
  .about-hero-stats { gap: 1.5rem; }
}
@media (max-width: 600px) {
  .about-cities-grid { grid-template-columns: 1fr; }
  .about-marks-logos { grid-template-columns: 1fr 1fr; }
  .about-marks-logo--main { grid-column: span 2; }
}


/* ═══════════════════════════════════════════════════════
   HOMEPAGE — page-home.php
════════════════════════════════════════════════════════════ */

/* ── ① Hero ── */
.home-hero {
  position: relative;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  justify-content: center;
  overflow: hidden;
  background: var(--stone);
}
.home-hero-bg { position: absolute; inset: 0; }
.home-hero-bg-img { width: 100%; height: 100%; object-fit: cover; object-position: center; display: block; }
.home-hero-bg-overlay {
  position: absolute; inset: 0;
  background:
    linear-gradient(to right, rgba(46,42,37,0.82) 0%, rgba(46,42,37,0.45) 60%, rgba(46,42,37,0.15) 100%),
    linear-gradient(to top,   rgba(46,42,37,0.6)  0%, transparent 50%);
}
.home-hero-bg--plain {
  background: radial-gradient(ellipse 80% 60% at 25% 45%, rgba(181,103,58,0.18) 0%, transparent 65%), var(--stone);
}

.home-hero-content {
  position: relative; z-index: 2;
  padding: 8rem 2.5rem 3rem;
  max-width: 720px;
}
.home-hero-eyebrow { display: flex; align-items: center; gap: 1rem; margin-bottom: 2rem; }

/* Big rotating headline */
.home-hero-headline {
  font-family: 'Playfair Display', serif;
  font-size: clamp(3.2rem, 7vw, 7.5rem);
  font-weight: 700; letter-spacing: -0.03em; line-height: 1;
  color: var(--cream); margin-bottom: 1.5rem;
}

/*
 * .home-hero-noun — the rotating word container.
 * Each <span> is stacked; only .active is visible.
 * JS cycles the .active class on a timer (same as original hero).
 */
.home-hero-noun {
  display: block;
  color: var(--clay);
  font-style: italic;
  font-weight: 400;
  position: relative;
  height: 1em;
  overflow: hidden;
}
.home-hero-noun span {
  position: absolute; top: 0; left: 0;
  opacity: 0;
  transform: translateY(100%);
  transition: opacity 0.5s ease, transform 0.5s ease;
}
.home-hero-noun span.active {
  opacity: 1;
  transform: translateY(0);
}

.home-hero-tagline {
  font-family: 'Playfair Display', serif; font-style: italic;
  font-size: clamp(1rem, 1.8vw, 1.25rem);
  color: rgba(201,168,130,0.75); line-height: 1.65;
  max-width: 520px; margin-bottom: 2.5rem;
}
.home-hero-actions { display: flex; align-items: center; gap: 1rem; flex-wrap: wrap; }
.btn-ghost--light {
  border-color: rgba(250,247,242,0.3);
  color: var(--cream);
}
.btn-ghost--light:hover { border-color: var(--cream); background: rgba(250,247,242,0.08); }

/* Stats bar — pinned to bottom of hero */
.home-hero-stats {
  position: absolute; bottom: 0; left: 0; right: 0; z-index: 2;
  display: flex; align-items: stretch;
  background: rgba(46,42,37,0.55);
  backdrop-filter: blur(8px);
  border-top: 1px solid rgba(201,168,130,0.15);
}
.home-hero-stat {
  display: flex; flex-direction: column; justify-content: center;
  padding: 1.2rem 2rem;
  border-right: 1px solid rgba(201,168,130,0.1);
  gap: 0.2rem;
}
.home-hero-stat-n {
  font-family: 'Playfair Display', serif; font-size: 1.6rem; font-weight: 700;
  color: var(--cream); line-height: 1;
}
.home-hero-stat-l {
  font-family: 'DM Mono', monospace; font-size: 0.52rem;
  letter-spacing: 0.18em; text-transform: uppercase;
  color: rgba(201,168,130,0.5);
}
/* Featured badge — pushes to the right */
.home-hero-badge {
  margin-left: auto;
  padding: 1rem 2rem;
  display: flex; flex-direction: column; justify-content: center;
}
.home-hero-badge-name {
  font-family: 'Playfair Display', serif; font-style: italic;
  font-size: 1rem; color: var(--cream); text-decoration: none;
  line-height: 1.2; margin-top: 0.2rem;
}
.home-hero-badge-name:hover { color: var(--clay); }

.home-hero-scroll {
  position: absolute; bottom: 80px; right: 2.5rem; z-index: 2;
  display: flex; align-items: center;
}
.home-hero-scroll-line {
  width: 1px; height: 48px;
  background: linear-gradient(to bottom, transparent, rgba(201,168,130,0.4));
}


/* ── ③ Spots section ── */
.home-spots {
  padding: 5rem 2.5rem;
  background: var(--cream);
}
.home-spots-header {
  display: flex; align-items: flex-end; justify-content: space-between;
  margin-bottom: 2.5rem;
}
.home-spots-title {
  font-family: 'Playfair Display', serif;
  font-size: clamp(2rem, 4vw, 3.5rem);
  font-weight: 700; letter-spacing: -0.03em; line-height: 1;
  color: var(--stone);
}
.home-spots-title em { color: var(--terracotta); font-style: italic; font-weight: 400; }


/* ── ④ Cities section ── */
.home-cities {
  padding: 5rem 0;
  background: var(--fog);
}
.home-cities-header { padding: 0 2.5rem 3rem; }
.home-cities-eyebrow { display: flex; align-items: center; gap: 1rem; margin-bottom: 1rem; }
.home-cities-title {
  font-family: 'Playfair Display', serif;
  font-size: clamp(2rem, 4vw, 3.5rem);
  font-weight: 700; letter-spacing: -0.03em; line-height: 1; color: var(--stone);
}
.home-cities-title em { color: var(--terracotta); font-style: italic; font-weight: 400; }

/*
 * Each .home-city-card is a full-width 50/50 grid.
 * Even cards flip the image to the right.
 * Image is locked to aspect-ratio: 3/2 — consistent regardless of upload.
 */
.home-city-card {
  display: grid; grid-template-columns: 1fr 1fr;
  border-top: 1px solid rgba(201,168,130,0.12);
}
.home-city-card[data-index]:nth-child(even) .home-city-card-image { order: 2; }
.home-city-card[data-index]:nth-child(even) .home-city-card-body   { order: 1; }

.home-city-card-image {
  position: relative; overflow: hidden;
  background: var(--linen, #EDE8DF);
  aspect-ratio: 3 / 2;
  min-height: 300px;
}
.home-city-card-image img {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover; object-position: center;
  transition: transform 0.7s ease; display: block;
}
.home-city-card:hover .home-city-card-image img { transform: scale(1.03); }
.home-city-card-img-overlay {
  position: absolute; inset: 0;
  background: linear-gradient(135deg, rgba(181,103,58,0.06) 0%, transparent 55%);
  pointer-events: none;
}
.home-city-card-ph {
  position: absolute; inset: 0;
  display: flex; align-items: center; justify-content: center;
}
.home-city-card-ph span {
  font-family: 'Playfair Display', serif; font-size: 8rem; font-weight: 700;
  color: rgba(201,168,130,0.2); user-select: none;
}
.home-city-card-body {
  padding: 4rem 3.5rem;
  display: flex; flex-direction: column; justify-content: center;
  background: var(--cream); gap: 0;
}
.home-city-card-eyebrow { display: flex; align-items: center; gap: 1rem; margin-bottom: 1.2rem; }
.home-city-card-name {
  font-family: 'Playfair Display', serif;
  font-size: clamp(2.5rem, 4vw, 4rem);
  font-weight: 700; letter-spacing: -0.03em; line-height: 1;
  color: var(--stone); margin-bottom: 1rem;
}
.home-city-card-tagline {
  font-family: 'Playfair Display', serif; font-style: italic;
  font-size: 1rem; color: var(--dusk); line-height: 1.6; margin-bottom: 1rem;
}
.home-city-card-meta { color: var(--clay); }


/* ── ⑤ Editorial strip ── */
.home-editorial { background: var(--terracotta); padding: 5rem 2.5rem; }
.home-editorial-inner {
  display: flex; align-items: flex-start; gap: 2rem; max-width: 860px;
}
.home-editorial-inner .rule { background: rgba(250,247,242,0.4); flex-shrink: 0; margin-top: 0.6rem; }
.home-editorial-quote {
  font-family: 'Playfair Display', serif;
  font-size: clamp(1.5rem, 3vw, 2.4rem);
  font-weight: 400; line-height: 1.3; color: var(--cream); flex: 1;
}
.home-editorial-quote em { font-style: italic; }
.home-editorial-link {
  font-family: 'DM Mono', monospace; font-size: 0.6rem;
  letter-spacing: 0.18em; text-transform: uppercase;
  color: rgba(250,247,242,0.65); text-decoration: none; white-space: nowrap;
  align-self: center; transition: color 0.2s ease; flex-shrink: 0;
}
.home-editorial-link:hover { color: var(--cream); }


/* ── ⑥ Neighborhoods ── */
.home-neighborhoods { padding: 5rem 0; background: var(--fog); }
.home-nb-header {
  display: flex; align-items: flex-end; justify-content: space-between;
  padding: 0 2.5rem 2rem;
}
.home-nb-title {
  font-family: 'Playfair Display', serif;
  font-size: clamp(1.8rem, 3vw, 2.8rem);
  font-weight: 700; letter-spacing: -0.02em; color: var(--stone);
}


/* ── Responsive ── */
@media (max-width: 900px) {
  .home-hero-content { padding: 5rem 1.5rem 3rem; }
  .home-hero-stats { position: static; flex-wrap: wrap; }
  .home-hero-badge { margin-left: 0; border-top: 1px solid rgba(201,168,130,0.1); width: 100%; }
  .home-hero-scroll { display: none; }
  .home-spots { padding: 3.5rem 1.5rem; }
  .home-city-card { grid-template-columns: 1fr; }
  .home-city-card[data-index]:nth-child(even) .home-city-card-image { order: 0; }
  .home-city-card[data-index]:nth-child(even) .home-city-card-body   { order: 0; }
  .home-city-card-body { padding: 2.5rem 1.5rem; }
  .home-cities-header { padding: 0 1.5rem 2rem; }
  .home-editorial { padding: 3.5rem 1.5rem; }
  .home-editorial-inner { flex-direction: column; gap: 1.5rem; }
  .home-neighborhoods { padding: 3.5rem 0; }
  .home-nb-header { padding: 0 1.5rem 1.5rem; }
}


/* ═══════════════════════════════════════════════════════
   FEATURES — archive-beco_post.php + single-beco_post.php
════════════════════════════════════════════════════════════ */

/* ── Shared: format chip badges ─────────────────────────────── */
/*
 * .feat-format-chip — the small label pill showing format type.
 * Colour-coded by format slug so each type is instantly scannable.
 * The --default fallback covers any custom term added later.
 */
.feat-format-chip {
  font-family: 'DM Mono', monospace;
  font-size: 0.53rem; letter-spacing: 0.2em; text-transform: uppercase;
  padding: 0.28rem 0.7rem; border-radius: 2px; display: inline-block;
  background: rgba(181,103,58,0.1); color: var(--terracotta);
  white-space: nowrap;
}
.feat-format-chip--feature  { background: rgba(181,103,58,0.12); color: var(--terracotta); }
.feat-format-chip--city-guide,
.feat-format-chip--guide    { background: rgba(74,82,64,0.12);  color: var(--moss); }
.feat-format-chip--essay    { background: rgba(46,42,37,0.08);  color: var(--stone); }
.feat-format-chip--dispatch { background: rgba(201,168,130,0.2); color: var(--dusk); }

/* Shared byline elements */
.feat-byline-sep    { color: rgba(201,168,130,0.4); margin: 0 0.3rem; }
.feat-meta-city     { color: var(--moss); }


/* ── ① Masthead ── */
.feat-masthead {
  position: relative;
  min-height: 55vh;
  background: var(--stone);
  display: flex; align-items: flex-end;
  overflow: hidden;
}
.feat-masthead-bg {
  position: absolute; inset: 0;
  background:
    radial-gradient(ellipse 60% 80% at 80% 50%, rgba(181,103,58,0.12) 0%, transparent 60%),
    radial-gradient(ellipse 40% 60% at 10% 80%, rgba(74,82,64,0.08)   0%, transparent 55%),
    var(--stone);
}
/* Decorative large "B" watermark */
.feat-masthead-bg::after {
  content: 'B';
  position: absolute; right: -2rem; top: -4rem;
  font-family: 'Playfair Display', serif;
  font-size: 35rem; font-weight: 700;
  color: rgba(201,168,130,0.03);
  line-height: 1; pointer-events: none; user-select: none;
}
.feat-masthead-content {
  position: relative; z-index: 2;
  padding: 5rem 2.5rem 4rem;
  max-width: 800px;
}
.feat-masthead-eyebrow { display: flex; align-items: center; gap: 1rem; margin-bottom: 2rem; }
.feat-masthead-title {
  font-family: 'Playfair Display', serif;
  font-size: clamp(4rem, 9vw, 9rem);
  font-weight: 700; letter-spacing: -0.04em; line-height: 0.92;
  color: var(--cream); margin-bottom: 1.2rem;
}
.feat-masthead-tagline {
  font-family: 'Playfair Display', serif; font-style: italic;
  font-size: clamp(1rem, 1.8vw, 1.2rem);
  color: rgba(201,168,130,0.65); line-height: 1.55;
  max-width: 500px; margin-bottom: 2rem;
}
/* Quick-filter badges in masthead — clicking pre-selects a filter pill */
.feat-masthead-formats { display: flex; flex-wrap: wrap; gap: 0.5rem; margin-bottom: 2.5rem; }
.feat-format-badge {
  font-family: 'DM Mono', monospace; font-size: 0.55rem;
  letter-spacing: 0.18em; text-transform: uppercase;
  color: rgba(201,168,130,0.55);
  border: 1px solid rgba(201,168,130,0.18);
  padding: 0.35rem 0.85rem; border-radius: 100px;
  background: none; cursor: pointer;
  transition: border-color 0.2s ease, color 0.2s ease;
}
.feat-format-badge:hover { border-color: var(--clay); color: var(--clay); }
.feat-masthead-stat { display: flex; align-items: baseline; gap: 0.6rem; }
.feat-masthead-stat-n {
  font-family: 'Playfair Display', serif;
  font-size: 2.5rem; font-weight: 700; color: var(--cream); line-height: 1;
}


/* ── ② Filter bar ── */
/*
 * Reuses .sa-filters, .sa-filter-row, .sa-pills, .sa-filter-count,
 * and .filter-pill from the spots archive. Only the sticky top value
 * changes (already set in the nav section via .sa-filters { top: 72px }).
 */
.feat-filters {
  position: sticky; top: 72px; z-index: 90;
  background: rgba(250,247,242,0.96); backdrop-filter: blur(8px);
  border-bottom: 1px solid rgba(201,168,130,0.15);
  padding: 1rem 2.5rem;
  display: flex; flex-direction: column; gap: 0.6rem;
}


/* ── ③ Hero story ── */
/*
 * Full-width 50/50 card — the most recent post.
 * Image right (on desktop), content left.
 * Border separates it visually from the grid below.
 */
.feat-hero-story {
  display: grid; grid-template-columns: 1fr 1fr;
  border-bottom: 1px solid rgba(201,168,130,0.15);
  background: var(--cream);
}
.feat-hero-body {
  padding: 4rem 3.5rem;
  display: flex; flex-direction: column; justify-content: center; gap: 0;
}
.feat-hero-meta { display: flex; align-items: center; gap: 0.8rem; margin-bottom: 1.2rem; }
.feat-hero-title {
  font-family: 'Playfair Display', serif;
  font-size: clamp(2rem, 3.5vw, 3.4rem);
  font-weight: 700; letter-spacing: -0.03em; line-height: 1.05;
  color: var(--stone); margin-bottom: 1rem;
}
.feat-hero-title a { color: inherit; text-decoration: none; transition: color 0.2s ease; }
.feat-hero-title a:hover { color: var(--terracotta); }
.feat-hero-subtitle {
  font-family: 'Playfair Display', serif; font-style: italic;
  font-size: 1.05rem; color: var(--dusk); line-height: 1.65;
  max-width: 420px; margin-bottom: 1.8rem;
}
.feat-hero-byline {
  font-family: 'DM Mono', monospace; font-size: 0.6rem;
  letter-spacing: 0.1em; color: var(--dusk);
  margin-bottom: 2rem; display: flex; align-items: center; flex-wrap: wrap;
}
.feat-byline-author { font-weight: 500; color: var(--stone); }
.feat-hero-cta { align-self: flex-start; }
/* Image side — fixed 3:2 ratio */
.feat-hero-image {
  position: relative; overflow: hidden;
  background: var(--fog); aspect-ratio: 3 / 2; min-height: 340px;
}
.feat-hero-image img {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover; object-position: center;
  transition: transform 0.7s ease; display: block;
}
.feat-hero-story:hover .feat-hero-image img { transform: scale(1.03); }
.feat-hero-image-overlay {
  position: absolute; inset: 0;
  background: linear-gradient(135deg, rgba(181,103,58,0.07) 0%, transparent 55%);
  pointer-events: none;
}
.feat-hero-image-ph {
  position: absolute; inset: 0;
  display: flex; align-items: center; justify-content: center;
  background: var(--linen, #EDE8DF);
}
.feat-hero-image-ph span {
  font-family: 'Playfair Display', serif; font-size: 9rem; font-weight: 700;
  color: rgba(201,168,130,0.2); user-select: none;
}


/* ── ④ Story grid ── */
.feat-grid-section { padding: 3rem 2.5rem 5rem; background: var(--fog); }
.feat-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 2rem;
}

/*
 * .feat-card — standard 1-column card.
 * .feat-card--wide — spans 2 of the 3 columns (every 4th card).
 * Image uses aspect-ratio: 16/9 so every card photo is identical in height.
 */
.feat-card {
  display: flex; flex-direction: column;
  background: var(--cream);
  border: 1px solid rgba(201,168,130,0.15);
  overflow: hidden;
  opacity: 0; transform: translateY(20px);
  transition: opacity 0.5s ease, transform 0.5s ease, box-shadow 0.25s ease;
}
.feat-card.visible { opacity: 1; transform: translateY(0); }
.feat-card:hover { box-shadow: 0 12px 40px rgba(46,42,37,0.09); }
.feat-card:hover .feat-card-img img { transform: scale(1.04); }
.feat-card--wide { grid-column: span 2; display: grid; grid-template-columns: 1fr 1fr; }
.feat-card--wide .feat-card-img { aspect-ratio: auto; min-height: 100%; }
.feat-card--wide .feat-card-body { padding: 2.5rem; }

.feat-card-img-link { display: block; }
.feat-card-img {
  position: relative; overflow: hidden;
  background: var(--linen, #EDE8DF);
  aspect-ratio: 16 / 9;   /* fixed ratio — every card image the same height */
}
.feat-card-img img {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover; object-position: center;
  transition: transform 0.6s ease; display: block;
}
.feat-card-img-overlay {
  position: absolute; inset: 0;
  background: linear-gradient(to top, rgba(46,42,37,0.08) 0%, transparent 40%);
  pointer-events: none;
}
.feat-card-img-ph {
  position: absolute; inset: 0;
  display: flex; align-items: center; justify-content: center;
}
.feat-card-img-ph span {
  font-family: 'Playfair Display', serif; font-size: 5rem; font-weight: 700;
  color: rgba(201,168,130,0.22); user-select: none;
}

.feat-card-body { padding: 1.5rem; display: flex; flex-direction: column; flex: 1; }
.feat-card-meta { display: flex; align-items: center; gap: 0.6rem; margin-bottom: 0.9rem; }
.feat-card-title {
  font-family: 'Playfair Display', serif;
  font-size: 1.15rem; font-weight: 700;
  letter-spacing: -0.01em; line-height: 1.25;
  color: var(--stone); margin-bottom: 0.6rem;
}
.feat-card-title a { color: inherit; text-decoration: none; transition: color 0.2s ease; }
.feat-card-title a:hover { color: var(--terracotta); }
.feat-card--wide .feat-card-title { font-size: 1.5rem; }
.feat-card-desc {
  font-family: 'Playfair Display', serif; font-style: italic;
  font-size: 0.85rem; color: var(--dusk); line-height: 1.6;
  margin-bottom: 1rem; flex: 1;
}
.feat-card-byline {
  font-family: 'DM Mono', monospace; font-size: 0.58rem;
  letter-spacing: 0.1em; color: var(--dusk); margin-top: auto;
  display: flex; align-items: center; flex-wrap: wrap;
}

/* Empty state */
.feat-grid-empty { grid-column: span 3; }


/* ── Single article ── */

/* Header — full-bleed image, text overlay */
.feat-article-header {
  position: relative;
  background: var(--stone);
  min-height: 70vh;
  display: flex; align-items: flex-end;
  overflow: hidden;
}
.feat-article-header-img {
  position: absolute; inset: 0;
  aspect-ratio: auto;
}
.feat-article-header-img-el {
  width: 100%; height: 100%;
  object-fit: cover; object-position: center; display: block;
}
.feat-article-header-img-overlay {
  position: absolute; inset: 0;
  background:
    linear-gradient(to top, rgba(46,42,37,0.92) 0%, rgba(46,42,37,0.55) 40%, rgba(46,42,37,0.1) 80%);
}
.feat-article-header-img--plain {
  position: absolute; inset: 0;
  background: radial-gradient(ellipse 70% 60% at 30% 40%, rgba(181,103,58,0.15) 0%, transparent 60%), var(--stone);
}

.feat-article-header-content {
  position: relative; z-index: 2;
  padding: 4rem 2.5rem 5rem;
  max-width: 820px; width: 100%;
}
.feat-article-breadcrumb {
  display: flex; align-items: center; gap: 1rem;
  margin-bottom: 2rem;
}
.feat-breadcrumb-link {
  font-family: 'DM Mono', monospace; font-size: 0.58rem;
  letter-spacing: 0.15em; text-transform: uppercase;
  color: rgba(201,168,130,0.6); text-decoration: none;
  transition: color 0.2s ease;
}
.feat-breadcrumb-link:hover { color: var(--clay); }
.feat-article-title {
  font-family: 'Playfair Display', serif;
  font-size: clamp(2.2rem, 5vw, 4.5rem);
  font-weight: 700; letter-spacing: -0.03em; line-height: 1.05;
  color: var(--cream); margin-bottom: 1rem;
}
.feat-article-subtitle {
  font-family: 'Playfair Display', serif; font-style: italic;
  font-size: clamp(1rem, 1.8vw, 1.3rem);
  color: rgba(201,168,130,0.75); line-height: 1.55;
  max-width: 580px; margin-bottom: 1.8rem;
}
.feat-article-byline {
  font-family: 'DM Mono', monospace; font-size: 0.62rem;
  letter-spacing: 0.1em; color: rgba(201,168,130,0.55);
  display: flex; align-items: center; flex-wrap: wrap;
}
.feat-article-byline-author { color: var(--clay); font-weight: 500; }


/* Article body — centred reading column */
.feat-article-body { background: var(--cream); }
.feat-article-column {
  max-width: 700px;
  margin: 0 auto;
  padding: 4rem 2.5rem 3rem;
}

/*
 * Pull quote — displayed full-width before the body if set.
 * Large, italic, terracotta — visually distinct from body text.
 */
.feat-pull-quote {
  font-family: 'Playfair Display', serif; font-style: normal;
  font-size: clamp(1.5rem, 2.5vw, 2.2rem); font-weight: 400;
  line-height: 1.3; color: var(--stone);
  border-left: 3px solid var(--terracotta);
  padding: 1rem 0 1rem 2rem;
  margin: 0 0 3rem;
}
.feat-pull-quote em { color: var(--terracotta); font-style: italic; }

/* Running body text — same rules as .page-content */
.feat-article-column p {
  font-size: 1.05rem; color: var(--dusk); line-height: 1.85;
  margin-bottom: 1.5rem;
}
.feat-article-column h2 {
  font-family: 'Playfair Display', serif;
  font-size: 1.8rem; font-weight: 700;
  color: var(--stone); margin: 2.5rem 0 1rem;
  letter-spacing: -0.02em; line-height: 1.15;
}
.feat-article-column h3 {
  font-family: 'Playfair Display', serif;
  font-size: 1.3rem; font-weight: 700;
  color: var(--stone); margin: 2rem 0 0.8rem;
}
.feat-article-column blockquote {
  border-left: 2px solid var(--terracotta);
  padding: 0.5rem 0 0.5rem 1.8rem;
  margin: 2rem 0;
  font-family: 'Playfair Display', serif; font-style: italic;
  font-size: 1.15rem; color: var(--stone); line-height: 1.5;
}
.feat-article-column ul,
.feat-article-column ol { padding-left: 1.5rem; margin-bottom: 1.5rem; }
.feat-article-column li { font-size: 1rem; color: var(--dusk); line-height: 1.75; margin-bottom: 0.4rem; }
.feat-article-column a { color: var(--terracotta); text-decoration: underline; text-decoration-color: rgba(181,103,58,0.35); }
.feat-article-column a:hover { text-decoration-color: var(--terracotta); }
.feat-article-column img { width: 100%; height: auto; display: block; margin: 2rem 0; border-radius: 2px; }
.feat-article-column hr { border: none; border-top: 1px solid rgba(201,168,130,0.2); margin: 3rem 0; }
.feat-article-column p:first-child::first-letter {
  font-family: 'Playfair Display', serif;
  font-size: 4.2rem; font-weight: 700;
  color: var(--terracotta); float: left;
  line-height: 0.75; margin: 0.15em 0.12em 0 0;
}

/* Article footer */
.feat-article-footer {
  background: var(--fog);
  border-top: 1px solid rgba(201,168,130,0.15);
}
.feat-article-footer-inner {
  max-width: 700px; margin: 0 auto;
  padding: 2rem 2.5rem;
  display: flex; align-items: center; gap: 1.2rem; flex-wrap: wrap;
}
.feat-article-city-link {
  font-family: 'DM Mono', monospace; font-size: 0.6rem;
  letter-spacing: 0.15em; text-transform: uppercase;
  color: var(--moss); text-decoration: none;
  transition: color 0.2s ease; margin-left: auto;
}
.feat-article-city-link:hover { color: var(--stone); }
.feat-article-back {
  font-family: 'DM Mono', monospace; font-size: 0.6rem;
  letter-spacing: 0.15em; text-transform: uppercase;
  color: var(--dusk); text-decoration: none; transition: color 0.2s ease;
}
.feat-article-back:hover { color: var(--terracotta); }


/* ── Related stories ── */
.feat-related {
  padding: 5rem 2.5rem;
  background: var(--cream);
  border-top: 1px solid rgba(201,168,130,0.15);
}
.feat-related-header {
  display: flex; align-items: center; gap: 1.5rem;
  margin-bottom: 2.5rem;
}
.feat-related-title {
  font-family: 'Playfair Display', serif;
  font-size: 1.8rem; font-weight: 700;
  color: var(--stone); letter-spacing: -0.02em;
}
.feat-related-grid {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem;
}


/* ── Responsive ── */
@media (max-width: 900px) {
  .feat-masthead-content { padding: 3.5rem 1.5rem 3rem; }
  .feat-filters { padding: 0.8rem 1.5rem; }
  .feat-hero-story { grid-template-columns: 1fr; }
  .feat-hero-body  { padding: 2.5rem 1.5rem; }
  .feat-hero-image { min-height: 220px; }
  .feat-grid-section { padding: 2.5rem 1.5rem 4rem; }
  .feat-grid { grid-template-columns: repeat(2, 1fr); }
  .feat-card--wide { grid-column: span 2; }
  .feat-grid-empty { grid-column: span 2; }
  .feat-article-header { min-height: 55vh; }
  .feat-article-header-content { padding: 3rem 1.5rem 4rem; }
  .feat-article-column { padding: 3rem 1.5rem; }
  .feat-related { padding: 3.5rem 1.5rem; }
  .feat-related-grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 600px) {
  .feat-grid { grid-template-columns: 1fr; }
  .feat-card--wide { grid-column: span 1; display: flex; flex-direction: column; }
  .feat-card--wide .feat-card-img { min-height: auto; aspect-ratio: 16/9; }
  .feat-grid-empty { grid-column: span 1; }
  .feat-related-grid { grid-template-columns: 1fr; }
}


/* ═══════════════════════════════════════════════════════
   SPOTS ARCHIVE — archive-beco_spot.php
   Shared filter components (.sa-filter-row, .sa-pills,
   .sa-filter-label, .sa-filter-count) also used by
   archive-beco_post.php (features).
════════════════════════════════════════════════════════════ */

/* ── ① Hero ── */
.sa-hero {
  position: relative;
  min-height: 52vh;
  display: flex; align-items: flex-end;
  overflow: hidden;
  background: var(--stone);
}
.sa-hero-bg {
  position: absolute; inset: 0;
}
.sa-hero-bg--plain {
  background:
    radial-gradient(ellipse 70% 80% at 75% 40%, rgba(181,103,58,0.14) 0%, transparent 60%),
    radial-gradient(ellipse 50% 60% at 15% 70%, rgba(74,82,64,0.1)   0%, transparent 55%),
    var(--stone);
}
/* Large decorative watermark letter */
.sa-hero-bg--plain::after {
  content: 'S';
  position: absolute; right: -1rem; top: -5rem;
  font-family: 'Playfair Display', serif;
  font-size: 32rem; font-weight: 700;
  color: rgba(201,168,130,0.04);
  line-height: 1; pointer-events: none; user-select: none;
}
.sa-hero-content {
  position: relative; z-index: 2;
  padding: 4rem 2.5rem 4rem;
  max-width: 820px;
}
.sa-hero-eyebrow { display: flex; align-items: center; gap: 1rem; margin-bottom: 1.8rem; }
.sa-hero-title {
  font-family: 'Playfair Display', serif;
  font-size: clamp(3.5rem, 8vw, 8rem);
  font-weight: 700; letter-spacing: -0.04em; line-height: 0.93;
  color: var(--cream); margin-bottom: 1.2rem;
}
.sa-hero-title em { color: var(--clay); font-style: italic; font-weight: 400; }
.sa-hero-tagline {
  font-family: 'Playfair Display', serif; font-style: italic;
  font-size: clamp(0.9rem, 1.6vw, 1.1rem);
  color: rgba(201,168,130,0.65); line-height: 1.6;
  max-width: 480px; margin-bottom: 2.5rem;
}
/* Stats row */
.sa-hero-stats { display: flex; align-items: stretch; gap: 0; }
.sa-hero-stat {
  padding: 0.8rem 1.8rem 0.8rem 0;
  border-right: 1px solid rgba(201,168,130,0.12);
  margin-right: 1.8rem;
  display: flex; flex-direction: column; gap: 0.15rem;
}
.sa-hero-stat:last-child { border-right: none; }
.sa-hero-stat-number {
  font-family: 'Playfair Display', serif;
  font-size: 2rem; font-weight: 700; color: var(--cream); line-height: 1;
}
.sa-hero-stat-label {
  font-family: 'DM Mono', monospace; font-size: 0.52rem;
  letter-spacing: 0.2em; text-transform: uppercase;
  color: rgba(201,168,130,0.45);
}

/* ── ② Filter bar (shared with features archive) ── */
/*
 * .sa-filters wraps two .sa-filter-rows (Type + City) and a count.
 * Sticky below the nav. backdrop-filter blurs page content beneath.
 * These shared classes are also used by .feat-filters in the features archive.
 */
.sa-filters {
  position: sticky;
  top: 72px; z-index: 90;
  background: rgba(250,247,242,0.96); backdrop-filter: blur(8px);
  border-bottom: 1px solid rgba(201,168,130,0.15);
  padding: 0.85rem 2.5rem;
  display: flex; flex-direction: column; gap: 0.55rem;
}
/* One row = label + scrollable pill row */
.sa-filter-row {
  display: flex; align-items: center; gap: 0.75rem;
  overflow-x: auto; -webkit-overflow-scrolling: touch;
}
.sa-filter-row::-webkit-scrollbar { display: none; }
.sa-filter-label {
  white-space: nowrap; flex-shrink: 0;
  color: var(--dusk);
}
/* Pill group */
.sa-pills { display: flex; gap: 0.45rem; flex-wrap: nowrap; }
/* Count badge — pushes to the right */
.sa-filter-count {
  display: flex; align-items: center; gap: 0.3rem;
  margin-left: auto; padding-top: 0.1rem;
  font-family: 'DM Mono', monospace; font-size: 0.62rem;
  letter-spacing: 0.12em; color: var(--dusk);
  white-space: nowrap; flex-shrink: 0;
}
.sa-filter-count span:first-child { color: var(--terracotta); font-weight: 600; }

/* ── ③ Editorial feature cards ── */
/*
 * Each .sa-spot-card is a full-width 50/50 grid.
 * Even cards (data-index % 2 = 1) flip image to the right via CSS.
 * Image is aspect-ratio: 4/3 — consistent across all uploads.
 */
.sa-cards { background: var(--fog); }

.sa-spot-card {
  display: grid;
  grid-template-columns: 1fr 1fr;
  border-bottom: 1px solid rgba(201,168,130,0.12);
  background: var(--cream);
  opacity: 0; transform: translateY(24px);
  transition: opacity 0.55s ease, transform 0.55s ease;
}
.sa-spot-card.visible { opacity: 1; transform: translateY(0); }

/* Alternate: even cards flip image right */
.sa-spot-card[data-index]:nth-child(even) .sa-spot-card-image { order: 2; }
.sa-spot-card[data-index]:nth-child(even) .sa-spot-card-body   { order: 1; }

/* Image column */
.sa-spot-card-image {
  position: relative; overflow: hidden;
  background: var(--linen, #EDE8DF);
  aspect-ratio: 4 / 3;
  min-height: 320px;
}
.sa-spot-card-image img {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover; object-position: center;
  display: block;
  transition: transform 0.65s ease;
}
.sa-spot-card:hover .sa-spot-card-image img { transform: scale(1.03); }
.sa-spot-card-image-overlay {
  position: absolute; inset: 0;
  background: linear-gradient(135deg, rgba(181,103,58,0.06) 0%, transparent 55%);
  pointer-events: none;
}
/* Placeholder when no featured image is set */
.sa-spot-card-placeholder {
  position: absolute; inset: 0;
  display: flex; align-items: center; justify-content: center;
  background: var(--linen, #EDE8DF);
}
.sa-spot-card-placeholder span {
  font-family: 'Playfair Display', serif; font-size: 9rem; font-weight: 700;
  color: rgba(201,168,130,0.2); user-select: none;
}
/* Category badge — sits over the image, top-left */
.sa-spot-card-cat {
  position: absolute; top: 1.2rem; left: 1.2rem;
  font-family: 'DM Mono', monospace; font-size: 0.52rem;
  letter-spacing: 0.2em; text-transform: uppercase;
  color: var(--cream);
  background: rgba(46,42,37,0.72); backdrop-filter: blur(4px);
  padding: 0.28rem 0.7rem; border-radius: 2px;
}
/* "New" badge — top-right */
.sa-spot-card-new {
  position: absolute; top: 1.2rem; right: 1.2rem;
  font-family: 'DM Mono', monospace; font-size: 0.5rem;
  letter-spacing: 0.22em; text-transform: uppercase;
  color: var(--cream);
  background: var(--terracotta);
  padding: 0.28rem 0.65rem; border-radius: 2px;
}

/* Content column */
.sa-spot-card-body {
  padding: 3.5rem;
  display: flex; flex-direction: column; justify-content: center; gap: 0;
  background: var(--cream);
}
.sa-spot-card-eyebrow {
  display: flex; align-items: center; margin-bottom: 0.9rem;
}
.sa-spot-card-name {
  font-family: 'Playfair Display', serif;
  font-size: clamp(1.8rem, 3vw, 2.8rem);
  font-weight: 700; letter-spacing: -0.025em; line-height: 1.05;
  color: var(--stone); margin-bottom: 0.9rem;
}
.sa-spot-card-name a { color: inherit; text-decoration: none; transition: color 0.2s ease; }
.sa-spot-card-name a:hover { color: var(--terracotta); }
.sa-spot-card-note {
  font-family: 'Playfair Display', serif; font-style: italic;
  font-size: 1rem; color: var(--dusk); line-height: 1.65;
  max-width: 420px; margin-bottom: 1.5rem;
}
/* Price / hours / address row */
.sa-spot-card-details {
  display: flex; flex-wrap: wrap; gap: 0.5rem 1.4rem;
  margin-bottom: 1.8rem;
}
.sa-spot-detail {
  font-family: 'DM Mono', monospace; font-size: 0.6rem;
  letter-spacing: 0.1em; color: var(--dusk);
  display: flex; align-items: center; gap: 0.4rem;
}
.sa-spot-detail-icon { color: var(--clay); flex-shrink: 0; }
/* CTA + links row */
.sa-spot-card-actions {
  display: flex; align-items: center; flex-wrap: wrap;
  gap: 0.6rem; margin-bottom: 1.2rem;
}
.sa-spot-cta { padding: 0.65rem 1.6rem; }  /* slightly compact for the card */
.sa-spot-ig-link {
  font-family: 'DM Mono', monospace; font-size: 0.58rem;
  letter-spacing: 0.12em; color: var(--dusk); text-decoration: none;
  transition: color 0.2s ease; padding: 0.65rem 0.2rem;
}
.sa-spot-ig-link:hover { color: var(--terracotta); }
/* "More in [City]" footer link */
.sa-spot-city-link {
  font-family: 'DM Mono', monospace; font-size: 0.58rem;
  letter-spacing: 0.15em; text-transform: uppercase;
  color: rgba(181,103,58,0.6); text-decoration: none;
  transition: color 0.2s ease; align-self: flex-start;
}
.sa-spot-city-link:hover { color: var(--terracotta); }

/* Empty state */
.sa-empty { background: var(--fog); }

/* ── ④ City strip footer ── */
.sa-city-strip {
  background: var(--stone);
  padding: 4rem 2.5rem;
}
.sa-city-strip-inner { max-width: 900px; margin: 0 auto; }
.sa-city-strip-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 1rem;
  margin-top: 1.5rem;
}

/* ── Responsive ── */
@media (max-width: 900px) {
  .sa-hero-content { padding: 3rem 1.5rem 3.5rem; }
  .sa-filters { padding: 0.75rem 1.5rem; top: 72px; }
  .sa-spot-card { grid-template-columns: 1fr; }
  /* Reset alternating on mobile — stack image then content */
  .sa-spot-card[data-index]:nth-child(even) .sa-spot-card-image { order: 0; }
  .sa-spot-card[data-index]:nth-child(even) .sa-spot-card-body   { order: 0; }
  .sa-spot-card-image { min-height: 56vw; aspect-ratio: 16 / 9; }
  .sa-spot-card-body  { padding: 2rem 1.5rem 2.5rem; }
  .sa-spot-card-name  { font-size: 1.6rem; }
  .sa-city-strip { padding: 3rem 1.5rem; }
}


/* ═══════════════════════════════════════════════════════════
   ABOUT PAGE — ④ THE NAME  (etymology / dictionary section)
   .about-name sits between Pillars and Story.
   Two .about-def cards side by side, framed by an oversized
   decorative "beco" display word in the background.
════════════════════════════════════════════════════════════ */

.about-name {
  background: var(--stone);
  padding: 6rem 2.5rem;
  position: relative;
  overflow: hidden;
}

/* ── Eyebrow label ── */
.about-name-eyebrow {
  display: flex; align-items: center; gap: 1rem;
  margin-bottom: 3.5rem;
  position: relative; z-index: 2;
}
.about-name-eyebrow .rule { background: rgba(201,168,130,0.3); }
.about-name-eyebrow .label { color: rgba(201,168,130,0.55); }

/* ── Oversized decorative word — sits in the background ── */
/*
 * Pure CSS element. Absolutely positioned so it bleeds off the
 * right edge, providing depth without competing with the content.
 * aria-hidden="true" in the template means screen readers skip it.
 */
.about-name-display {
  position: absolute;
  right: -2rem; top: 50%;
  transform: translateY(-50%);
  font-family: 'Playfair Display', serif;
  font-size: clamp(12rem, 28vw, 26rem);
  font-weight: 700; font-style: italic;
  letter-spacing: -0.06em; line-height: 1;
  color: rgba(201,168,130,0.04);
  pointer-events: none; user-select: none;
  white-space: nowrap;
}

/* ── Definition cards grid ── */
/*
 * Two cards side by side on desktop, stacked on mobile.
 * A thin terracotta rule separates them on desktop via the gap.
 */
.about-name-defs {
  position: relative; z-index: 2;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0;
  max-width: 900px;
}

/* Vertical divider between the two cards */
.about-name-defs::before {
  content: '';
  position: absolute;
  left: 50%; top: 0; bottom: 0;
  width: 1px;
  background: rgba(201,168,130,0.12);
  pointer-events: none;
}

/* ── Individual definition card ── */
.about-def {
  padding: 0 3rem 0 0;
}
.about-def:last-child {
  padding: 0 0 0 3rem;
  border-left: none; /* divider is handled by ::before */
}

/* Header row: word  /phonetic/  noun, Portuguese */
.about-def-head {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 0.6rem;
  margin-bottom: 1.2rem;
}

/* The word itself — Playfair italic, large */
.about-def-word {
  font-family: 'Playfair Display', serif;
  font-size: clamp(1.8rem, 3.5vw, 2.8rem);
  font-weight: 700; font-style: italic;
  color: var(--clay);
  letter-spacing: -0.02em; line-height: 1;
}

/* /ˈbe.ku/ — DM Mono, smaller, muted */
.about-def-phonetic {
  font-family: 'DM Mono', monospace;
  font-size: 0.75rem;
  letter-spacing: 0.04em;
  color: rgba(201,168,130,0.5);
}

/* noun, Portuguese — DM Mono italic tag */
.about-def-type {
  font-family: 'DM Mono', monospace;
  font-size: 0.62rem;
  letter-spacing: 0.12em;
  font-style: italic;
  color: rgba(201,168,130,0.35);
  text-transform: lowercase;
}

/* Definition body text */
.about-def-body {
  font-family: 'Playfair Display', serif;
  font-size: clamp(1rem, 1.8vw, 1.15rem);
  line-height: 1.7;
  color: rgba(250,247,242,0.7);
  max-width: 380px;
}

/* ── Responsive ── */
@media (max-width: 700px) {
  .about-name { padding: 4rem 1.5rem; }
  .about-name-defs { grid-template-columns: 1fr; gap: 3rem; }
  .about-name-defs::before { display: none; }
  .about-def { padding: 0; }
  .about-def:last-child { padding: 0; border-top: 1px solid rgba(201,168,130,0.12); padding-top: 3rem; }
  .about-name-display { font-size: 50vw; }
}


/* ═══════════════════════════════════════════════════════════════
   CONTACT PAGE — page-contact.php
   Sections: hero · type picker · form + side copy
═══════════════════════════════════════════════════════════════ */

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

.contact-hero {
  position: relative;
  min-height: 60vh;
  display: flex;
  align-items: flex-end;
  overflow: hidden;
  background: var(--stone);
}

.contact-hero-bg,
.contact-hero-bg--plain {
  position: absolute;
  inset: 0;
  background: var(--stone);
}

.contact-hero-bg-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}

.contact-hero-bg-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to bottom,
    rgba(42,38,34,0.3) 0%,
    rgba(42,38,34,0.85) 100%
  );
}

.contact-hero-content {
  position: relative;
  z-index: 2;
  max-width: 900px;
  padding: 8rem 6vw 5rem;
}

.contact-hero-eyebrow {
  display: flex;
  align-items: center;
  gap: 1rem;
  margin-bottom: 1.8rem;
}

.contact-hero-title {
  font-family: 'Playfair Display', Georgia, serif;
  font-size: clamp(3.5rem, 8vw, 7rem);
  font-weight: 700;
  color: var(--cream);
  line-height: 1.0;
  margin: 0 0 1.6rem;
  letter-spacing: -0.02em;
}

.contact-hero-title em {
  font-style: italic;
  color: var(--terracotta);
  display: block;
}

.contact-hero-tagline {
  font-family: 'Instrument Sans', sans-serif;
  font-size: 1.1rem;
  color: rgba(245,240,232,0.7);
  margin: 0;
  max-width: 480px;
}

/* Large decorative "?" — positions bottom-right of the hero */
.contact-hero-letter {
  position: absolute;
  bottom: -0.15em;
  right: 4vw;
  font-family: 'Playfair Display', Georgia, serif;
  font-size: clamp(12rem, 22vw, 22rem);
  font-weight: 700;
  font-style: italic;
  color: rgba(181,103,58,0.08);
  line-height: 1;
  pointer-events: none;
  user-select: none;
  z-index: 1;
}

/* ── ② Type picker ────────────────────────────────────────────── */

.contact-types {
  background: var(--fog);
  padding: 5rem 6vw;
  border-bottom: 1px solid rgba(42,38,34,0.08);
}

.contact-types-inner {
  max-width: 1100px;
  margin: 0 auto;
}

.contact-types-heading {
  font-family: 'Playfair Display', Georgia, serif;
  font-size: clamp(1.4rem, 2.5vw, 2rem);
  font-weight: 700;
  color: var(--stone);
  margin: 0 0 2.5rem;
  letter-spacing: -0.02em;
}

.contact-types-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.25rem;
}

/* Each inquiry type is a <button> that looks like a card */
.contact-type-card {
  background: var(--cream);
  border: 2px solid rgba(42,38,34,0.1);
  border-radius: 6px;
  padding: 2rem 1.8rem;
  text-align: left;
  cursor: pointer;
  transition: border-color 0.2s ease, box-shadow 0.2s ease, transform 0.15s ease;
  position: relative;
  overflow: hidden;
}

/* Subtle terracotta top-edge on hover */
.contact-type-card::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 3px;
  background: var(--terracotta);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 0.25s ease;
}

.contact-type-card:hover { border-color: rgba(181,103,58,0.3); transform: translateY(-2px); }
.contact-type-card:hover::before { transform: scaleX(1); }

.contact-type-card.is-active {
  border-color: var(--terracotta);
  box-shadow: 0 4px 20px rgba(181,103,58,0.15);
}
.contact-type-card.is-active::before { transform: scaleX(1); }

.contact-type-icon {
  display: block;
  font-size: 1.4rem;
  color: var(--terracotta);
  margin-bottom: 1rem;
  line-height: 1;
}

.contact-type-title {
  font-family: 'Playfair Display', Georgia, serif;
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--stone);
  margin: 0 0 0.6rem;
  letter-spacing: -0.01em;
}

.contact-type-body {
  font-family: 'Instrument Sans', sans-serif;
  font-size: 0.9rem;
  color: var(--dusk);
  line-height: 1.55;
  margin: 0;
}

/* ── ③ Form section ───────────────────────────────────────────── */

.contact-form-section {
  background: var(--cream);
  padding: 6rem 6vw;
}

/* Two-column layout: side copy left (40%) | form right (60%) */
.contact-form-inner {
  max-width: 1100px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 2fr 3fr;
  gap: 6rem;
  align-items: start;
}

/* ── Side copy ── */

.contact-form-side {
  position: sticky;
  top: calc(72px + 2rem); /* accounts for the fixed nav height */
}

.contact-form-side-heading {
  font-family: 'Playfair Display', Georgia, serif;
  font-size: clamp(1.3rem, 2vw, 1.7rem);
  font-weight: 700;
  color: var(--stone);
  line-height: 1.2;
  margin: 0 0 1.5rem;
  letter-spacing: -0.02em;
}

.contact-form-side-body {
  font-family: 'Instrument Sans', sans-serif;
  font-size: 0.95rem;
  color: var(--dusk);
  line-height: 1.7;
  margin: 0 0 1rem;
}

.contact-form-side-note {
  font-family: 'DM Mono', monospace;
  font-size: 0.78rem;
  color: rgba(42,38,34,0.45);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  margin: 1.5rem 0 0;
  padding-top: 1.5rem;
  border-top: 1px solid rgba(42,38,34,0.12);
}

.contact-form-side-mark {
  display: flex;
  align-items: center;
  gap: 1rem;
  margin-top: 2rem;
}

.contact-form-brand-mark {
  font-family: 'Playfair Display', Georgia, serif;
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--stone);
}

.contact-form-brand-mark em {
  font-style: italic;
  color: var(--terracotta);
}

/* ── Form heading ── */

.contact-form-heading {
  font-family: 'Playfair Display', Georgia, serif;
  font-size: clamp(1.4rem, 2vw, 1.8rem);
  font-weight: 700;
  color: var(--stone);
  margin: 0 0 2rem;
  letter-spacing: -0.02em;
}

/* ── Form layout ── */

.contact-form {
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
}

.cf-row { width: 100%; }

.cf-row--two {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1.25rem;
}

.cf-field { display: flex; flex-direction: column; gap: 0.45rem; }

.cf-label {
  font-family: 'DM Mono', monospace;
  font-size: 0.75rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--stone);
}

.cf-required { color: var(--terracotta); }

.cf-optional {
  font-family: 'Instrument Sans', sans-serif;
  font-size: 0.75rem;
  font-weight: 400;
  text-transform: none;
  letter-spacing: 0;
  color: rgba(42,38,34,0.4);
}

/* All text inputs and textarea share the same base styles */
.cf-input,
.cf-textarea,
.cf-select {
  font-family: 'Instrument Sans', sans-serif;
  font-size: 0.95rem;
  color: var(--stone);
  background: var(--fog);
  border: 1.5px solid rgba(42,38,34,0.15);
  border-radius: 4px;
  padding: 0.75rem 1rem;
  width: 100%;
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
  outline: none;
  -webkit-appearance: none;
  appearance: none;
}

.cf-input::placeholder,
.cf-textarea::placeholder { color: rgba(42,38,34,0.35); }

.cf-input:focus,
.cf-textarea:focus,
.cf-select:focus {
  border-color: var(--terracotta);
  box-shadow: 0 0 0 3px rgba(181,103,58,0.12);
}

.cf-textarea { resize: vertical; min-height: 140px; }

/* Custom select arrow wrapper */
.cf-select-wrap { position: relative; }

.cf-select {
  cursor: pointer;
  padding-right: 2.5rem; /* room for the arrow */
}

.cf-select-arrow {
  position: absolute;
  right: 0.9rem;
  top: 50%;
  transform: translateY(-50%);
  font-size: 0.8rem;
  color: var(--dusk);
  pointer-events: none;
  font-family: 'Instrument Sans', sans-serif;
}

/* Honeypot — visually hidden from real users, bots fill it in */
.cf-honeypot {
  position: absolute;
  left: -9999px;
  opacity: 0;
  pointer-events: none;
  tab-index: -1;
}

/* Submit row */
.cf-row--submit {
  display: flex;
  align-items: center;
  gap: 1.5rem;
  padding-top: 0.5rem;
}

.cf-submit {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  cursor: pointer;
  border: none;
  flex-shrink: 0;
}

.cf-submit-arrow {
  transition: transform 0.2s ease;
  display: inline-block;
}

.cf-submit:hover .cf-submit-arrow { transform: translateX(4px); }

.cf-footnote {
  font-family: 'Instrument Sans', sans-serif;
  font-size: 0.82rem;
  color: rgba(42,38,34,0.4);
  margin: 0;
  line-height: 1.4;
}

/* ── Error state ── */

.contact-form-error {
  background: rgba(181,103,58,0.08);
  border: 1.5px solid rgba(181,103,58,0.3);
  border-radius: 4px;
  padding: 0.85rem 1.1rem;
  font-family: 'Instrument Sans', sans-serif;
  font-size: 0.9rem;
  color: var(--stone);
  margin-bottom: 0.5rem;
}

/* ── Success state ── */

.contact-success {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 1rem;
  padding: 3rem 2.5rem;
  background: var(--fog);
  border-radius: 6px;
  border-left: 3px solid var(--terracotta);
}

.contact-success-icon {
  font-size: 1.8rem;
  color: var(--terracotta);
  line-height: 1;
}

.contact-success-message {
  font-family: 'Playfair Display', Georgia, serif;
  font-size: 1.3rem;
  font-style: italic;
  color: var(--stone);
  margin: 0;
}

/* ── Responsive ── */

@media ( max-width: 900px ) {
  .contact-types-grid { grid-template-columns: 1fr; gap: 0.75rem; }
  .contact-form-inner { grid-template-columns: 1fr; gap: 3rem; }
  .contact-form-side { position: static; }
}

@media ( max-width: 600px ) {
  .contact-hero-content { padding: 6rem 1.5rem 3rem; }
  .contact-types { padding: 3rem 1.5rem; }
  .contact-form-section { padding: 3rem 1.5rem; }
  .cf-row--two { grid-template-columns: 1fr; }
  .cf-row--submit { flex-direction: column; align-items: flex-start; }
  .contact-hero-letter { display: none; }
}


/* ═══════════════════════════════════════════════════════════════
   SPOTS COLLECTION PAGE — page-spots.php
   Sections: hero · intro · filter bar · spots by category · cities
   Prefix: sp-  (avoids collision with archive-beco_spot sa- prefix)
═══════════════════════════════════════════════════════════════ */

/* ── ① Hero — mirrors nb-hero exactly ──────────────────────────── */

.sp-hero {
  position: relative;
  min-height: 55vh;
  display: flex;
  align-items: flex-end;
  overflow: hidden;
  background: var(--stone);
}

.sp-hero-bg,
.sp-hero-bg--plain {
  position: absolute;
  inset: 0;
  background: var(--stone);
}

.sp-hero-bg-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}

.sp-hero-bg-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to bottom,
    rgba(42,38,34,0.2) 0%,
    rgba(42,38,34,0.88) 100%
  );
}

.sp-hero-content {
  position: relative;
  z-index: 2;
  padding: 8rem 6vw 4.5rem;
  max-width: 1100px;
}

.sp-hero-eyebrow {
  display: flex;
  align-items: center;
  gap: 1rem;
  margin-bottom: 1.5rem;
}

.sp-hero-title {
  font-family: 'Playfair Display', Georgia, serif;
  font-size: clamp(3.5rem, 8vw, 7rem);
  font-weight: 700;
  color: var(--cream);
  line-height: 1.0;
  margin: 0 0 1.4rem;
  letter-spacing: -0.02em;
}

.sp-hero-title em {
  font-style: italic;
  color: var(--terracotta);
  display: block;
}

.sp-hero-tagline {
  font-family: 'Instrument Sans', sans-serif;
  font-size: 1.05rem;
  color: rgba(245,240,232,0.7);
  margin: 0 0 2.5rem;
  max-width: 520px;
}

.sp-hero-stats {
  display: flex;
  gap: 2.5rem;
  flex-wrap: wrap;
}

.sp-hero-stat {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
}

.sp-hero-stat-number {
  font-family: 'Playfair Display', Georgia, serif;
  font-size: 2.2rem;
  font-weight: 700;
  color: var(--cream);
  line-height: 1;
}

.sp-hero-stat-label {
  font-family: 'DM Mono', monospace;
  font-size: 0.65rem;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  color: rgba(201,168,130,0.65);
}

/* ── ② Intro strip ────────────────────────────────────────────── */

.sp-intro {
  background: var(--fog);
  padding: 3.5rem 6vw;
  border-bottom: 1px solid rgba(42,38,34,0.07);
}

.sp-intro-inner {
  max-width: 780px;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

.sp-intro-quote {
  font-family: 'Playfair Display', Georgia, serif;
  font-size: clamp(1.3rem, 2.5vw, 1.75rem);
  font-style: normal;
  color: var(--stone);
  margin: 0;
  line-height: 1.35;
}

.sp-intro-quote em { color: var(--terracotta); }

.sp-intro-sub {
  font-family: 'Instrument Sans', sans-serif;
  font-size: 0.95rem;
  color: var(--dusk);
  line-height: 1.65;
  margin: 0;
}

/* ── ③ Filter bar ─────────────────────────────────────────────── */

.sp-filters {
  position: sticky;
  top: 72px;       /* sits directly under the 72px nav bar */
  z-index: 90;
  background: var(--cream);
  border-bottom: 1px solid rgba(42,38,34,0.1);
  padding: 0 6vw;
}

.sp-filter-row {
  display: flex;
  align-items: center;
  gap: 1rem;
  padding: 0.75rem 0;
  overflow-x: auto;
  scrollbar-width: none;
  -ms-overflow-style: none;
}

.sp-filter-row::-webkit-scrollbar { display: none; }

/* Thin divider between the two rows */
.sp-filter-row--cities {
  border-top: 1px solid rgba(42,38,34,0.07);
}

.sp-filter-label {
  white-space: nowrap;
  flex-shrink: 0;
  color: rgba(42,38,34,0.5);
}

.sp-pills {
  display: flex;
  gap: 0.5rem;
  flex-wrap: nowrap;
}

/* Base pill style — same visual grammar as the nav filter pills */
.sp-pill {
  font-family: 'DM Mono', monospace;
  font-size: 0.7rem;
  font-weight: 500;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  padding: 0.4rem 0.9rem;
  border-radius: 100px;
  border: 1.5px solid rgba(42,38,34,0.15);
  background: transparent;
  color: var(--dusk);
  white-space: nowrap;
  text-decoration: none;
  cursor: pointer;
  transition: border-color 0.2s, background 0.2s, color 0.2s;
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
}

.sp-pill:hover {
  border-color: var(--terracotta);
  color: var(--stone);
}

.sp-pill.is-active {
  background: var(--stone);
  border-color: var(--stone);
  color: var(--cream);
}

/* Small count badge inside pill */
.sp-pill-count {
  font-size: 0.6rem;
  opacity: 0.6;
  padding: 0.1em 0.35em;
  background: rgba(255,255,255,0.15);
  border-radius: 100px;
}

.sp-pill.is-active .sp-pill-count { background: rgba(255,255,255,0.2); opacity: 0.8; }

/* Live spot count label */
.sp-filter-count {
  font-family: 'DM Mono', monospace;
  font-size: 0.65rem;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--terracotta);
  padding: 0.5rem 0;
  min-height: 2rem;
}

/* ── ④ Spots by category ──────────────────────────────────────── */

.sp-sections {
  padding: 0 0 2rem;
}

.sp-cat-section {
  padding: 4rem 6vw;
  border-bottom: 1px solid rgba(42,38,34,0.08);
}

.sp-cat-section:last-child { border-bottom: none; }

/* Hidden via JS city/cat filter */
.sp-cat-section.sp-section--hidden { display: none; }

.sp-cat-header {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 1.5rem;
  margin-bottom: 2.5rem;
  flex-wrap: wrap;
}

.sp-cat-title {
  font-family: 'Playfair Display', Georgia, serif;
  font-size: clamp(1.6rem, 3vw, 2.4rem);
  font-weight: 700;
  color: var(--stone);
  margin: 0;
  line-height: 1.1;
  letter-spacing: -0.02em;
}

.sp-cat-title em {
  font-style: italic;
  color: var(--terracotta);
}

/* Tile grid — 4 columns desktop, 3 tablet, 2 mobile, 1 on phones */
.sp-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1.25rem;
}

/* ── Spot tile ── */

.sp-tile {
  display: block;
  text-decoration: none;
  border-radius: 4px;
  overflow: hidden;
  background: var(--fog);
  border: 1px solid rgba(42,38,34,0.07);
  transition: box-shadow 0.25s ease, transform 0.2s ease;

  /* Scroll-reveal: start invisible, JS adds .sp-tile--visible */
  opacity: 0;
  transform: translateY(12px);
  transition: opacity 0.4s ease, transform 0.4s ease, box-shadow 0.25s ease;
}

/* Stagger the reveal via nth-child delay */
.sp-tile:nth-child(2) { transition-delay: 0.05s; }
.sp-tile:nth-child(3) { transition-delay: 0.10s; }
.sp-tile:nth-child(4) { transition-delay: 0.15s; }
.sp-tile:nth-child(n+5) { transition-delay: 0.05s; }

.sp-tile--visible {
  opacity: 1;
  transform: translateY(0);
}

.sp-tile--hidden { display: none; }

.sp-tile:hover {
  box-shadow: 0 8px 32px rgba(42,38,34,0.12);
  transform: translateY(-3px);
}

/* Photo */
.sp-tile-img {
  position: relative;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  background: var(--linen);
}

.sp-tile-img img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.4s ease;
}

.sp-tile:hover .sp-tile-img img { transform: scale(1.04); }

.sp-tile-img-ph {
  position: absolute;
  inset: 0;
  opacity: 0.7;
}

.sp-tile-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, rgba(42,38,34,0.3) 0%, transparent 60%);
  pointer-events: none;
}

/* Category badge sits on the image, top-left */
.sp-tile-badge {
  position: absolute;
  top: 0.65rem;
  left: 0.65rem;
  font-family: 'DM Mono', monospace;
  font-size: 0.58rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--cream);
  background: rgba(42,38,34,0.65);
  backdrop-filter: blur(4px);
  padding: 0.25em 0.6em;
  border-radius: 2px;
}

/* Text info below the photo */
.sp-tile-info {
  padding: 1rem 1rem 1.1rem;
}

.sp-tile-meta {
  font-family: 'DM Mono', monospace;
  font-size: 0.62rem;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--terracotta);
  margin-bottom: 0.35rem;
}

.sp-tile-name {
  font-family: 'Playfair Display', Georgia, serif;
  font-size: 1rem;
  font-weight: 700;
  color: var(--stone);
  line-height: 1.2;
  letter-spacing: -0.01em;
  margin-bottom: 0.4rem;
}

.sp-tile-note {
  font-family: 'Instrument Sans', sans-serif;
  font-size: 0.82rem;
  color: var(--dusk);
  line-height: 1.5;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/* ── Responsive ── */

@media ( max-width: 1100px ) {
  .sp-grid { grid-template-columns: repeat(3, 1fr); }
}

@media ( max-width: 768px ) {
  .sp-grid { grid-template-columns: repeat(2, 1fr); gap: 0.85rem; }
  .sp-cat-section { padding: 3rem 1.5rem; }
  .sp-hero-content { padding: 6rem 1.5rem 3.5rem; }
  .sp-intro { padding: 2.5rem 1.5rem; }
  .sp-filters { padding: 0 1.5rem; }
}

@media ( max-width: 480px ) {
  .sp-grid { grid-template-columns: 1fr 1fr; gap: 0.6rem; }
  .sp-tile-info { padding: 0.75rem 0.75rem 0.85rem; }
  .sp-tile-name { font-size: 0.9rem; }
  .sp-tile-note { display: none; }
}


/* ═══════════════════════════════════════════════════════════════
   SINGLE SPOT PAGE — single-beco_spot.php
   Prefix: sv-  (spot view)
   Sections: hero · action bar · body · gallery · features · more
═══════════════════════════════════════════════════════════════ */

/* ── Shared scroll-reveal base ──────────────────────────────── */
/* Any .sv-reveal element starts invisible + shifted down.
   JS adds .sv-reveal--in when it enters the viewport. */
.sv-reveal {
  opacity: 0;
  transform: translateY(14px);
  transition: opacity 0.45s ease, transform 0.45s ease;
}
.sv-reveal:nth-child(2) { transition-delay: 0.06s; }
.sv-reveal:nth-child(3) { transition-delay: 0.12s; }
.sv-reveal:nth-child(4) { transition-delay: 0.18s; }
.sv-reveal--in { opacity: 1; transform: translateY(0); }


/* ── ① HERO ─────────────────────────────────────────────────── */

.sv-hero {
  position: relative;
  min-height: 62vh;
  display: flex;
  align-items: flex-end;
  overflow: hidden;
  background: var(--stone);
}

/* Full-bleed background image + gradient overlay */
.sv-hero-bg { position: absolute; inset: 0; background: var(--stone); }
.sv-hero-bg--plain { background: linear-gradient(135deg, var(--stone) 0%, #3a342e 100%); }
.sv-hero-bg-img {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover; object-position: center;
}
.sv-hero-bg-overlay {
  position: absolute; inset: 0;
  /* Strong gradient so text is always legible regardless of photo */
  background: linear-gradient(
    to bottom,
    rgba(42,38,34,0.1) 0%,
    rgba(42,38,34,0.4) 50%,
    rgba(42,38,34,0.92) 100%
  );
}

/* Content positioned at the bottom-left of the hero */
.sv-hero-content {
  position: relative;
  z-index: 2;
  padding: 7rem 6vw 4rem;
  max-width: 900px;
  width: 100%;
}

/* Breadcrumb */
.sv-breadcrumb {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  flex-wrap: wrap;
  margin-bottom: 1.25rem;
}
.sv-breadcrumb a,
.sv-breadcrumb span {
  font-family: 'DM Mono', monospace;
  font-size: 0.65rem;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: rgba(245,240,232,0.55);
  text-decoration: none;
  transition: color 0.2s;
}
.sv-breadcrumb a:hover { color: rgba(245,240,232,0.9); }
.sv-breadcrumb-sep { color: rgba(245,240,232,0.3); font-size: 0.6rem; }

/* Category + price pills */
.sv-hero-pills {
  display: flex;
  gap: 0.5rem;
  flex-wrap: wrap;
  margin-bottom: 1rem;
}
.sv-hero-pill {
  font-family: 'DM Mono', monospace;
  font-size: 0.65rem;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--cream);
  background: rgba(255,255,255,0.12);
  border: 1px solid rgba(255,255,255,0.2);
  backdrop-filter: blur(4px);
  padding: 0.3em 0.75em;
  border-radius: 2px;
}
.sv-hero-pill--price {
  background: rgba(181,103,58,0.45);
  border-color: rgba(181,103,58,0.6);
  color: #ffd9c0;
}

/* Spot name */
.sv-hero-title {
  font-family: 'Playfair Display', Georgia, serif;
  font-size: clamp(2.6rem, 7vw, 5.5rem);
  font-weight: 700;
  color: var(--cream);
  line-height: 1.0;
  letter-spacing: -0.025em;
  margin: 0 0 0.8rem;
}

/* Location sub-line */
.sv-hero-loc {
  font-family: 'Instrument Sans', sans-serif;
  font-size: 1rem;
  color: rgba(245,240,232,0.6);
  margin: 0;
  letter-spacing: 0.01em;
}

/* Decorative oversized letter — same pattern as Contact/About pages */
.sv-hero-watermark {
  position: absolute;
  bottom: -0.15em;
  right: 4vw;
  font-family: 'Playfair Display', Georgia, serif;
  font-size: clamp(12rem, 28vw, 22rem);
  font-weight: 700;
  font-style: italic;
  color: rgba(255,255,255,0.04);
  line-height: 1;
  pointer-events: none;
  user-select: none;
  z-index: 1;
}


/* ── ② STICKY ACTION BAR ────────────────────────────────────── */
/* Starts off-screen above the viewport; JS toggles .sv-action-bar--visible */

.sv-action-bar {
  position: fixed;
  top: 72px;        /* sits flush under the 72px nav */
  left: 0;
  right: 0;
  z-index: 80;
  background: var(--stone);
  border-bottom: 1px solid rgba(201,168,130,0.15);
  transform: translateY(-100%);
  opacity: 0;
  transition: transform 0.3s ease, opacity 0.3s ease;
  /* Hidden until hero leaves viewport — prevents covering page on load */
  pointer-events: none;
}
.sv-action-bar--visible {
  transform: translateY(0);
  opacity: 1;
  pointer-events: auto;
}

.sv-action-bar-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.5rem;
  padding: 0.85rem 6vw;
  max-width: 1300px;
  margin: 0 auto;
}

.sv-action-bar-name {
  font-family: 'Playfair Display', Georgia, serif;
  font-size: 1rem;
  font-weight: 700;
  color: var(--cream);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  flex-shrink: 1;
  min-width: 0;
}

.sv-action-bar-links {
  display: flex;
  gap: 0.6rem;
  flex-wrap: nowrap;
  flex-shrink: 0;
}

.sv-action-btn {
  font-family: 'DM Mono', monospace;
  font-size: 0.68rem;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-weight: 500;
  padding: 0.45em 1em;
  border-radius: 2px;
  border: 1.5px solid rgba(201,168,130,0.3);
  color: rgba(245,240,232,0.7);
  text-decoration: none;
  white-space: nowrap;
  transition: border-color 0.2s, color 0.2s, background 0.2s;
}
.sv-action-btn:hover { border-color: var(--terracotta); color: var(--cream); }
.sv-action-btn--primary {
  background: var(--terracotta);
  border-color: var(--terracotta);
  color: var(--cream);
}
.sv-action-btn--primary:hover { background: #a0582f; border-color: #a0582f; }
.sv-action-btn--phone { display: none; } /* shown only on mobile */


/* ── ③ BODY — two-column ────────────────────────────────────── */

.sv-body {
  background: var(--cream);
  padding: 4.5rem 6vw 5rem;
}

.sv-body-inner {
  display: grid;
  grid-template-columns: 2fr 1fr;
  gap: 4.5rem;
  max-width: 1140px;
  margin: 0 auto;
  align-items: start;
}

/* ── Left: editorial column ── */

.sv-main { min-width: 0; }  /* prevents grid blowout on long words */

/* Editorial voice opener — larger, italicised, terracotta tinted */
.sv-beco-note {
  font-family: 'Playfair Display', Georgia, serif;
  font-size: clamp(1.15rem, 2vw, 1.45rem);
  font-style: italic;
  color: var(--stone);
  line-height: 1.5;
  margin: 0 0 2.5rem;
  border-left: 3px solid var(--terracotta);
  padding-left: 1.25rem;
}

.sv-content { margin-bottom: 2.5rem; }

/* Pull quote — oversized italic, no other decoration */
.sv-pull-quote {
  font-family: 'Playfair Display', Georgia, serif;
  font-size: clamp(1.25rem, 2.5vw, 1.75rem);
  font-style: normal;
  color: var(--stone);
  line-height: 1.35;
  margin: 3rem 0;
  padding: 2rem 2rem 2rem 2.5rem;
  border-left: 3px solid var(--terracotta);
  background: var(--fog);
}
.sv-pull-quote em { font-style: italic; color: var(--terracotta); }

/* What to order + Insider tip blocks — share the same shell */
.sv-editorial-block {
  margin: 2.5rem 0;
  padding: 1.5rem 1.75rem;
  background: var(--fog);
  border-radius: 2px;
  border-left: 3px solid transparent;
}
.sv-editorial-block--order  { border-left-color: var(--terracotta); }
.sv-editorial-block--insider { border-left-color: var(--moss); }

.sv-block-label {
  margin-bottom: 0.6rem;
  display: block;
}

.sv-block-text {
  font-family: 'Instrument Sans', sans-serif;
  font-size: 0.98rem;
  color: var(--stone);
  line-height: 1.65;
  margin: 0;
}

/* Back navigation */
.sv-back-links {
  display: flex;
  gap: 1rem;
  flex-wrap: wrap;
  margin-top: 3.5rem;
  padding-top: 2.5rem;
  border-top: 1px solid rgba(42,38,34,0.1);
}

/* ── Right: sidebar ── */

.sv-sidebar {
  position: sticky;
  top: calc(72px + 1.5rem);  /* below the nav; action bar adds extra offset when visible */
  display: flex;
  flex-direction: column;
  gap: 1px;  /* hairline gap between cards acts as a divider */
}

/* Info card — the core unit of the sidebar */
.sv-card {
  background: var(--fog);
  padding: 1.25rem 1.5rem;
}
.sv-card:first-child { border-radius: 2px 2px 0 0; }
.sv-card:last-child  { border-radius: 0 0 2px 2px; }

.sv-card-title {
  margin-bottom: 0.6rem;
  display: block;
  color: rgba(42,38,34,0.5);
}

.sv-card-value {
  font-family: 'Instrument Sans', sans-serif;
  font-size: 0.92rem;
  color: var(--stone);
  line-height: 1.55;
  margin: 0 0 0.5rem;
}
.sv-card-hint {
  font-family: 'Instrument Sans', sans-serif;
  font-size: 0.82rem;
  color: var(--dusk);
  line-height: 1.5;
  margin: 0.25rem 0 0.65rem;
}
.sv-card-note {
  font-family: 'DM Mono', monospace;
  font-size: 0.65rem;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--terracotta);
  margin: 0.75rem 0 0;
}
.sv-card-link {
  font-family: 'Instrument Sans', sans-serif;
  font-size: 0.88rem;
  color: var(--terracotta);
  text-decoration: none;
  display: inline-block;
  margin-top: 0.5rem;
  transition: color 0.2s;
}
.sv-card-link:hover { color: var(--stone); }

/* Hours display — each line from the textarea becomes one row */
.sv-hours { display: flex; flex-direction: column; gap: 0.25rem; }
.sv-hours-row {
  font-family: 'DM Mono', monospace;
  font-size: 0.75rem;
  color: var(--stone);
  line-height: 1.6;
  white-space: pre;  /* preserves spacing e.g. "Mon–Fri  7am–3pm" alignment */
}

/* Price display — three $ marks, filled = terracotta, empty = muted */
.sv-price-display {
  display: flex;
  align-items: baseline;
  gap: 0.15rem;
}
.sv-price-mark {
  font-family: 'DM Mono', monospace;
  font-size: 1.1rem;
  font-weight: 700;
  color: rgba(42,38,34,0.2);
  line-height: 1;
}
.sv-price-mark--on { color: var(--terracotta); }
.sv-price-label {
  font-family: 'Instrument Sans', sans-serif;
  font-size: 0.78rem;
  color: var(--dusk);
  margin-left: 0.5rem;
}

/* Contact list — removes default list bullets */
.sv-contact-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
}

/* Vibe tags — small, pill-shaped, moss-tinted */
.sv-vibe-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  margin-top: 0.25rem;
}
.sv-vibe-tag {
  font-family: 'DM Mono', monospace;
  font-size: 0.62rem;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--moss);
  border: 1px solid rgba(74,82,64,0.3);
  border-radius: 100px;
  padding: 0.25em 0.65em;
}


/* ── ④ GALLERY ──────────────────────────────────────────────── */

.sv-gallery {
  background: var(--stone);
  padding: 4rem 6vw;
}

.sv-gallery-inner { max-width: 1140px; margin: 0 auto; }

.sv-section-eyebrow {
  display: flex;
  align-items: center;
  gap: 1rem;
  margin-bottom: 2rem;
}

/* Auto-responsive grid — adapts to 1-6 images:
   1 image = full width, 2 = two columns, 3+ = three columns */
.sv-gallery-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 0.5rem;
}
.sv-gallery-grid[data-count="1"] { grid-template-columns: 1fr; max-width: 700px; }
.sv-gallery-grid[data-count="2"] { grid-template-columns: repeat(2, 1fr); }

.sv-gallery-item {
  display: block;
  position: relative;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  background: rgba(255,255,255,0.05);
}
.sv-gallery-item img {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
  transition: transform 0.4s ease;
}
.sv-gallery-item:hover img { transform: scale(1.04); }

.sv-gallery-item-overlay {
  position: absolute; inset: 0;
  background: rgba(42,38,34,0);
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background 0.25s ease;
}
.sv-gallery-item:hover .sv-gallery-item-overlay { background: rgba(42,38,34,0.35); }

.sv-gallery-expand-icon {
  font-size: 1.4rem;
  color: var(--cream);
  opacity: 0;
  transform: scale(0.7);
  transition: opacity 0.25s ease, transform 0.25s ease;
}
.sv-gallery-item:hover .sv-gallery-expand-icon {
  opacity: 1;
  transform: scale(1);
}


/* ── ⑤ RELATED FEATURES ─────────────────────────────────────── */

.sv-features-section {
  background: var(--fog);
  padding: 5rem 6vw;
  border-top: 1px solid rgba(42,38,34,0.08);
}

.sv-features-inner { max-width: 1140px; margin: 0 auto; }

/* Shared section header pattern — heading left, CTA right */
.sv-section-header {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 1.5rem;
  margin-bottom: 2.5rem;
  flex-wrap: wrap;
}

.sv-section-heading {
  font-family: 'Playfair Display', Georgia, serif;
  font-size: clamp(1.6rem, 3vw, 2.4rem);
  font-weight: 700;
  color: var(--stone);
  margin: 0;
  line-height: 1.1;
  letter-spacing: -0.02em;
}
.sv-section-heading em { font-style: italic; color: var(--terracotta); }

/* 3-column grid; falls back to 2-col on tablet, 1-col on mobile */
.sv-features-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem;
}


/* ── ⑥ MORE SPOTS ───────────────────────────────────────────── */

.sv-more-spots {
  background: var(--cream);
  padding: 5rem 6vw;
  border-top: 1px solid rgba(42,38,34,0.08);
}

.sv-more-inner { max-width: 1140px; margin: 0 auto; }

.sv-more-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.25rem;
}

/* More-spot card — same visual language as sp-tile */
.sv-more-card {
  background: var(--fog);
  border: 1px solid rgba(42,38,34,0.07);
  border-radius: 3px;
  overflow: hidden;
  transition: box-shadow 0.25s ease, transform 0.2s ease;
}
.sv-more-card:hover {
  box-shadow: 0 8px 28px rgba(42,38,34,0.1);
  transform: translateY(-3px);
}

.sv-more-card-img {
  position: relative;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  background: var(--linen);
}
.sv-more-card-img img {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
  transition: transform 0.4s ease;
}
.sv-more-card:hover .sv-more-card-img img { transform: scale(1.04); }
.sv-more-card-ph { position: absolute; inset: 0; background: var(--clay); opacity: 0.5; }
.sv-more-card-overlay {
  position: absolute; inset: 0;
  background: linear-gradient(to top, rgba(42,38,34,0.35) 0%, transparent 55%);
}
.sv-more-card-badge {
  position: absolute; top: 0.6rem; left: 0.6rem;
  font-family: 'DM Mono', monospace;
  font-size: 0.58rem; text-transform: uppercase; letter-spacing: 0.1em;
  color: var(--cream);
  background: rgba(42,38,34,0.6);
  backdrop-filter: blur(4px);
  padding: 0.25em 0.55em;
  border-radius: 2px;
}
.sv-more-card-img-link { display: block; text-decoration: none; }

.sv-more-card-body { padding: 1rem 1.1rem 1.2rem; }

.sv-more-card-meta {
  margin-bottom: 0.35rem;
  color: var(--terracotta);
}
.sv-more-card-name {
  font-family: 'Playfair Display', Georgia, serif;
  font-size: 1.05rem;
  font-weight: 700;
  line-height: 1.2;
  margin: 0 0 0.4rem;
  letter-spacing: -0.01em;
}
.sv-more-card-name a { color: var(--stone); text-decoration: none; }
.sv-more-card-name a:hover { color: var(--terracotta); }

.sv-more-card-note {
  font-family: 'Instrument Sans', sans-serif;
  font-size: 0.82rem;
  color: var(--dusk);
  line-height: 1.5;
  margin: 0;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}


/* ── Responsive ─────────────────────────────────────────────── */

/* Large tablet */
@media (max-width: 1100px) {
  .sv-body-inner { grid-template-columns: 3fr 2fr; gap: 3rem; }
  .sv-features-grid { grid-template-columns: repeat(2, 1fr); }
  .sv-more-grid { grid-template-columns: repeat(3, 1fr); }
  .sv-gallery-grid { grid-template-columns: repeat(2, 1fr); }
  .sv-gallery-grid[data-count="1"] { grid-template-columns: 1fr; }
}

/* Tablet */
@media (max-width: 860px) {
  .sv-body-inner {
    grid-template-columns: 1fr;
    gap: 0;
  }
  /* Sidebar moves below main content; un-sticky it */
  .sv-sidebar {
    position: static;
    margin-top: 2.5rem;
    /* Show cards as a 2-col grid for efficient use of horizontal space */
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 1px;
  }
  .sv-card { border-radius: 0; }
  .sv-more-grid { grid-template-columns: repeat(2, 1fr); }
  .sv-action-btn--phone { display: inline-flex; }
}

/* Mobile */
@media (max-width: 600px) {
  .sv-hero-content { padding: 5.5rem 1.5rem 3rem; }
  .sv-body { padding: 3rem 1.5rem 4rem; }
  .sv-gallery { padding: 3rem 1.5rem; }
  .sv-features-section,
  .sv-more-spots { padding: 4rem 1.5rem; }
  .sv-sidebar { grid-template-columns: 1fr; }
  .sv-more-grid { grid-template-columns: 1fr; }
  .sv-features-grid { grid-template-columns: 1fr; }
  .sv-gallery-grid { grid-template-columns: repeat(2, 1fr); }
  .sv-hero-watermark { display: none; }
  .sv-action-bar-name { display: none; }
  .sv-action-bar-inner { justify-content: flex-end; }
  .sv-action-bar-links { flex-wrap: wrap; }
}


/* ═══════════════════════════════════════════════════════════════
   CITY NAV BAR — section-city-bar.php
   Dark strip below the hero. Shows active cities as links + a
   Collective link. Same visual language as the intake tab nav.
════════════════════════════════════════════════════════════════ */

/*
 * Full-width near-black strip. border-top is a subtle separator
 * from the hero section above — 1px at low opacity.
 */
.city-nav-bar {
  background: var(--stone);
  border-top: 1px solid rgba(255,255,255,0.07);
  border-bottom: 1px solid rgba(255,255,255,0.05);
  display: flex;
  align-items: stretch;
  overflow-x: auto;
  scrollbar-width: none;
  position: relative;
  z-index: 10;
}
.city-nav-bar::-webkit-scrollbar { display: none; }

/*
 * Inner wrapper keeps the items centred on wide screens
 * but lets them overflow on mobile for horizontal scroll.
 */
.city-nav-bar-inner {
  display: flex;
  align-items: stretch;
  width: 100%;
  max-width: 1200px;
  margin: 0 auto;
}

/*
 * Each city item. flex: 1 distributes space evenly across
 * however many cities are active. min-width prevents the label
 * squashing below legibility on narrow screens.
 */
.city-nav-item {
  flex: 1;
  min-width: 130px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 1rem 1.5rem;
  text-decoration: none;
  border-right: 1px solid rgba(255,255,255,0.06);
  transition: background 0.18s ease;
  cursor: pointer;
}
.city-nav-item:last-child { border-right: none; }
.city-nav-item:hover { background: rgba(255,255,255,0.04); }

/*
 * Two-line treatment: small mono label on top, Playfair name below.
 * Mirrors the intake tab nav's .tab-brand / .tab-tier pattern.
 */
.city-nav-label {
  font-family: 'DM Mono', monospace;
  font-size: 0.55rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: rgba(194,107,73,0.6);       /* muted terracotta */
  margin-bottom: 0.2rem;
  transition: color 0.18s;
}
.city-nav-name {
  font-family: 'Playfair Display', serif;
  font-size: 0.95rem;
  color: rgba(245,240,232,0.6);      /* muted cream */
  transition: color 0.18s;
}
.city-nav-item:hover .city-nav-label { color: var(--terracotta); }
.city-nav-item:hover .city-nav-name  { color: var(--cream); }

/*
 * Collective tile — gold accent instead of terracotta.
 * border-left creates a visual divider between Local cities
 * and the Collective entry.
 */
.city-nav-item--collective {
  border-left: 1px solid rgba(255,255,255,0.1);
}
.city-nav-item--collective .city-nav-label {
  color: rgba(168,137,74,0.6);       /* muted gold */
}
.city-nav-item--collective .city-nav-name {
  display: flex;
  align-items: center;
  gap: 0.4rem;
}
.city-nav-item--collective:hover .city-nav-label { color: var(--gold); }
.city-nav-item--collective:hover .city-nav-name  { color: var(--gold); }

/* ── Mobile ── */
@media (max-width: 768px) {
  .city-nav-item { min-width: 110px; padding: 0.85rem 1rem; }
  .city-nav-name { font-size: 0.85rem; }
}


/* ═══════════════════════════════════════════════════════════════
   INTAKE FORMS — shared by page-intake.php and the 4 standalone
   templates (page-intake-local-free.php etc.)
   Extracted from the inline <style> block in page-intake.php.
   page-intake.php still has inline styles as a fallback — these
   rules are identical so there's no conflict.
════════════════════════════════════════════════════════════════ */

.intake-page { background: var(--cream); min-height: 100vh; }

/* Tab nav — used only by the all-in-one page-intake.php */
.intake-tab-nav {
  background: var(--near-black, #2A2622);
  border-top: 1px solid rgba(255,255,255,0.07);
  display: flex;
  gap: 0;
  overflow-x: auto;
  scrollbar-width: none;
  position: sticky;
  top: 0;
  z-index: 50;
}
.intake-tab-nav::-webkit-scrollbar { display: none; }
.intake-tab-btn {
  flex: 1;
  min-width: 180px;
  padding: 1rem 1.5rem;
  background: none;
  border: none;
  border-bottom: 2px solid transparent;
  cursor: pointer;
  text-align: left;
  transition: all 0.2s;
}
.intake-tab-btn .tab-brand {
  font-family: 'DM Mono', monospace;
  font-size: 0.57rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  margin-bottom: 0.2rem;
  transition: color 0.2s;
}
.intake-tab-btn .tab-tier {
  font-family: 'Playfair Display', serif;
  font-size: 0.9rem;
  color: var(--fog);
  transition: color 0.2s;
}
.intake-tab-btn:hover .tab-tier                            { color: var(--cream); }
.intake-tab-btn[data-tab="local-free"]  .tab-brand,
.intake-tab-btn[data-tab="local-paid"]  .tab-brand        { color: rgba(194,107,73,0.5); }
.intake-tab-btn[data-tab="local-free"].active  .tab-brand,
.intake-tab-btn[data-tab="local-paid"].active  .tab-brand { color: var(--terracotta); }
.intake-tab-btn[data-tab="collective-free"] .tab-brand,
.intake-tab-btn[data-tab="collective-paid"] .tab-brand    { color: rgba(168,137,74,0.5); }
.intake-tab-btn[data-tab="collective-free"].active .tab-brand,
.intake-tab-btn[data-tab="collective-paid"].active .tab-brand { color: var(--gold); }
.intake-tab-btn.active .tab-tier                          { color: var(--cream); }
.intake-tab-btn[data-tab="local-free"].active,
.intake-tab-btn[data-tab="local-paid"].active             { border-bottom-color: var(--terracotta); }
.intake-tab-btn[data-tab="collective-free"].active,
.intake-tab-btn[data-tab="collective-paid"].active        { border-bottom-color: var(--gold); }

.intake-pane         { display: none; }
.intake-pane.active  { display: block; }

/* Form page shell */
.form-page {
  max-width: 720px;
  margin: 0 auto;
  padding: 3rem 2rem 5rem;
}
.form-header { margin-bottom: 2rem; }
.form-eyebrow {
  font-family: 'DM Mono', monospace;
  font-size: 0.6rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  margin-bottom: 0.6rem;
}
.form-eyebrow.local      { color: var(--terracotta); }
.form-eyebrow.collective { color: var(--gold); }
.form-title {
  font-family: 'Playfair Display', serif;
  font-size: 2.1rem;
  line-height: 1.2;
  color: var(--near-black, #2A2622);
  margin-bottom: 0.8rem;
}
.form-title em        { font-style: italic; color: var(--terracotta); }
.form-title em.gold   { color: var(--gold); }
.form-intro {
  font-family: 'Instrument Sans', sans-serif;
  font-size: 0.95rem;
  line-height: 1.65;
  color: var(--stone);
  margin-bottom: 1.2rem;
}
.tier-badge {
  display: inline-block;
  font-family: 'DM Mono', monospace;
  font-size: 0.6rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  padding: 0.35rem 0.85rem;
  border-radius: 2px;
}
.tier-badge.free            { background: rgba(194,107,73,0.1); color: var(--terracotta); }
.tier-badge.paid            { background: var(--terracotta); color: white; }
.tier-badge.collective-free { background: rgba(168,137,74,0.12); color: var(--gold); }
.tier-badge.collective-paid { background: var(--gold); color: white; }

/* Callout */
.callout {
  border-radius: 4px;
  padding: 1.2rem 1.5rem;
  margin-bottom: 2rem;
  font-family: 'Instrument Sans', sans-serif;
  font-size: 0.88rem;
  line-height: 1.6;
  color: var(--stone);
}
.callout.local      { background: rgba(194,107,73,0.08); border-left: 3px solid var(--terracotta); }
.callout.collective { background: rgba(168,137,74,0.08); border-left: 3px solid var(--gold); }
.callout strong {
  display: block;
  margin-bottom: 0.25rem;
  font-size: 0.72rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  font-family: 'DM Mono', monospace;
}

/* Sections */
.form-section {
  margin-bottom: 2.5rem;
  padding-bottom: 2.5rem;
  border-bottom: 1px solid rgba(42,38,34,0.12);
}
.form-section:last-of-type { border-bottom: none; }
.section-label {
  font-family: 'DM Mono', monospace;
  font-size: 0.6rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--fog);
  margin-bottom: 1.5rem;
  display: flex;
  align-items: center;
  gap: 0.6rem;
}
.section-label.gold { color: var(--gold); }
.section-num { font-size: 0.75rem; color: var(--near-black, #2A2622); font-weight: 500; }

/* Questions */
.question { margin-bottom: 1.4rem; }
.question-tag {
  display: inline-block;
  font-family: 'DM Mono', monospace;
  font-size: 0.55rem;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  padding: 0.2rem 0.55rem;
  border-radius: 2px;
  margin-bottom: 0.4rem;
}
.tag-ops     { background: rgba(42,38,34,0.08); color: var(--stone); }
.tag-story   { background: rgba(92,107,74,0.1);  color: #4a5a3a; }
.tag-content { background: rgba(194,107,73,0.1); color: var(--clay); }
.tag-paid    { background: var(--terracotta); color: white; }
.tag-brand   { background: rgba(168,137,74,0.12); color: var(--gold); }
.question-label {
  font-family: 'Instrument Sans', sans-serif;
  font-size: 0.92rem;
  font-weight: 500;
  color: var(--near-black, #2A2622);
  margin-bottom: 0.25rem;
}
.question-sub {
  font-family: 'Instrument Sans', sans-serif;
  font-size: 0.8rem;
  color: var(--fog);
  margin-bottom: 0.5rem;
  line-height: 1.5;
}

/* Inputs */
.intake-page input[type="text"],
.intake-page input[type="email"],
.intake-page input[type="url"],
.intake-page input[type="tel"],
.intake-page select,
.intake-page textarea {
  width: 100%;
  padding: 0.7rem 0.9rem;
  font-family: 'Instrument Sans', sans-serif;
  font-size: 0.88rem;
  color: var(--near-black, #2A2622);
  background: white;
  border: 1px solid rgba(42,38,34,0.18);
  border-radius: 3px;
  transition: border-color 0.2s;
  -webkit-appearance: none;
  appearance: none;
}
.intake-page input:focus,
.intake-page select:focus,
.intake-page textarea:focus {
  outline: none;
  border-color: var(--terracotta);
  box-shadow: 0 0 0 3px rgba(194,107,73,0.1);
}
/* Gold focus ring for Collective standalone forms */
.intake-page.intake-collective input:focus,
.intake-page.intake-collective select:focus,
.intake-page.intake-collective textarea:focus {
  border-color: var(--gold);
  box-shadow: 0 0 0 3px rgba(168,137,74,0.1);
}
.intake-page textarea { min-height: 110px; resize: vertical; line-height: 1.5; }
.input-row { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }

/* Radios & checkboxes */
.radio-group, .checkbox-group { display: flex; flex-direction: column; gap: 0.55rem; }
.radio-item, .checkbox-item {
  display: flex;
  align-items: flex-start;
  gap: 0.7rem;
  cursor: pointer;
  font-family: 'Instrument Sans', sans-serif;
  font-size: 0.88rem;
  color: var(--stone);
  line-height: 1.45;
}
.radio-item input[type="radio"],
.checkbox-item input[type="checkbox"] {
  width: 16px; height: 16px;
  flex-shrink: 0;
  margin-top: 2px;
  accent-color: var(--terracotta);
  cursor: pointer;
}
.intake-page.intake-collective .radio-item input,
.intake-page.intake-collective .checkbox-item input { accent-color: var(--gold); }
.radio-text strong, .checkbox-text strong {
  display: block;
  font-size: 0.85rem;
  color: var(--near-black, #2A2622);
  margin-bottom: 0.1rem;
}

/* Form footer */
.form-footer {
  margin-top: 2.5rem;
  padding-top: 2rem;
  border-top: 1px solid rgba(42,38,34,0.12);
  display: flex;
  flex-direction: column;
  gap: 1rem;
}
.submit-note {
  font-family: 'DM Mono', monospace;
  font-size: 0.62rem;
  letter-spacing: 0.12em;
  color: var(--fog);
  line-height: 1.6;
}
.submit-btn {
  align-self: flex-start;
  padding: 0.85rem 2rem;
  font-family: 'DM Mono', monospace;
  font-size: 0.68rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  border: none;
  border-radius: 3px;
  cursor: pointer;
  transition: opacity 0.2s;
}
.submit-btn:hover:not(:disabled) { opacity: 0.85; }
.submit-btn:disabled              { opacity: 0.5; cursor: not-allowed; }
.submit-btn.local                 { background: var(--terracotta); color: white; }
.submit-btn.collective            { background: var(--gold); color: white; }

/* Success / error */
.form-success, .form-error {
  display: none;
  max-width: 720px;
  margin: 4rem auto;
  padding: 3rem 2rem;
  text-align: center;
}
.form-success.visible, .form-error.visible { display: block; }
.form-success-icon, .form-error-icon { font-size: 2.5rem; margin-bottom: 1.5rem; }
.form-success h2, .form-error h2 {
  font-family: 'Playfair Display', serif;
  font-size: 1.8rem;
  margin-bottom: 0.8rem;
  color: var(--near-black, #2A2622);
}
.form-success p, .form-error p {
  font-family: 'Instrument Sans', sans-serif;
  font-size: 0.92rem;
  color: var(--stone);
  line-height: 1.65;
  max-width: 440px;
  margin: 0 auto;
}

/* Standalone form header bar — replaces the tab nav on single-form pages */
.intake-form-bar {
  background: var(--near-black, #2A2622);
  border-top: 1px solid rgba(255,255,255,0.07);
  padding: 1rem 2rem;
  display: flex;
  align-items: center;
  gap: 1rem;
  position: sticky;
  top: 0;
  z-index: 50;
}
.intake-form-bar-brand {
  font-family: 'DM Mono', monospace;
  font-size: 0.57rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
}
.intake-form-bar-brand.local      { color: var(--terracotta); }
.intake-form-bar-brand.collective { color: var(--gold); }
.intake-form-bar-sep {
  font-family: 'DM Mono', monospace;
  font-size: 0.7rem;
  color: rgba(255,255,255,0.2);
}
.intake-form-bar-tier {
  font-family: 'Playfair Display', serif;
  font-size: 0.92rem;
  color: var(--cream);
}

/* Responsive */
@media (max-width: 640px) {
  .form-page { padding: 2rem 1.25rem 4rem; }
  .input-row { grid-template-columns: 1fr; }
  .form-title { font-size: 1.65rem; }
  .intake-tab-btn { min-width: 140px; padding: 0.85rem 1rem; }
}


/* ═══════════════════════════════════════════════════════════════
   INTAKE PHOTO UPLOAD — shared by all 4 standalone form templates
   The drop zone is entirely CSS + JS — no library dependency.
════════════════════════════════════════════════════════════════ */

/*
 * Drop zone container. border-style: dashed signals it's interactive.
 * The .drag-over class is added by JS on dragenter and removed on dragleave.
 * cursor: pointer makes it feel clickable (the hidden <input> handles clicks).
 */
.photo-drop-zone {
  border: 1.5px dashed rgba(42,38,34,0.25);
  border-radius: 4px;
  padding: 2rem 1.5rem;
  text-align: center;
  cursor: pointer;
  transition: border-color 0.2s, background 0.2s;
  position: relative;
  background: rgba(255,255,255,0.6);
}
.photo-drop-zone:hover,
.photo-drop-zone.drag-over {
  border-color: var(--terracotta);
  background: rgba(194,107,73,0.04);
}
.intake-page.intake-collective .photo-drop-zone:hover,
.intake-page.intake-collective .photo-drop-zone.drag-over {
  border-color: var(--gold);
  background: rgba(168,137,74,0.04);
}

/* Hidden native file input — sits on top of the whole zone so any click
   on the drop zone opens the file picker */
.photo-drop-zone input[type="file"] {
  position: absolute;
  inset: 0;
  opacity: 0;
  cursor: pointer;
  width: 100%;
  height: 100%;
  border: none;
  background: none;
  padding: 0;
}
.photo-drop-zone input[type="file"]:focus { box-shadow: none; border: none; }

/* Upload icon + label inside the zone */
.photo-drop-icon {
  font-size: 1.5rem;
  margin-bottom: 0.5rem;
  opacity: 0.35;
  pointer-events: none;
}
.photo-drop-label {
  font-family: 'Instrument Sans', sans-serif;
  font-size: 0.88rem;
  color: var(--stone);
  pointer-events: none;
}
.photo-drop-label strong {
  color: var(--near-black, #2A2622);
  font-weight: 600;
}
.photo-drop-hint {
  font-family: 'DM Mono', monospace;
  font-size: 0.58rem;
  letter-spacing: 0.12em;
  color: var(--fog);
  margin-top: 0.4rem;
  pointer-events: none;
}

/*
 * Preview grid — shown below the drop zone once files are selected.
 * 4-column grid on desktop, wraps naturally on narrow screens.
 * Each .photo-thumb wraps the <img> and a remove button.
 */
.photo-preview-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 0.75rem;
  margin-top: 1rem;
}
.photo-thumb {
  position: relative;
  aspect-ratio: 1;
  border-radius: 3px;
  overflow: hidden;
  background: var(--linen);
}
.photo-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  border: none;
}
/* Remove button — small × in the top-right corner of each thumb */
.photo-thumb-remove {
  position: absolute;
  top: 4px;
  right: 4px;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background: rgba(42,38,34,0.7);
  color: var(--cream);
  font-size: 0.7rem;
  border: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  line-height: 1;
  transition: background 0.15s;
}
.photo-thumb-remove:hover { background: rgba(42,38,34,0.95); }

/* File count / validation message below the grid */
.photo-file-count {
  font-family: 'DM Mono', monospace;
  font-size: 0.58rem;
  letter-spacing: 0.12em;
  color: var(--fog);
  margin-top: 0.5rem;
}
.photo-file-count.error { color: #b94a48; }

/* Responsive */
@media (max-width: 640px) {
  .photo-preview-grid { grid-template-columns: repeat(3, 1fr); }
}


/* ═══════════════════════════════════════════════════════════════
   FEATURE ARTICLE — THREE-COLUMN LAYOUT
   Added v1.6.0 — single-beco_post.php sidebar redesign
   ───────────────────────────────────────────────────────────────
   .feat-article-layout   Grid wrapper replacing the old centred column.
                          Left sidebar | Article body | Right sidebar.
   .feat-sidebar          Base class shared by both sidebars.
   .feat-sidebar--left    Spot detail cards (sticky).
   .feat-sidebar--right   Share, tags, "more from city" list (sticky).
   .feat-spot-card        One card per linked beco_spot.
   .feat-sidebar-block    Discrete section inside the right sidebar.
═══════════════════════════════════════════════════════════════ */

/* ── Layout grid ─────────────────────────────────────────────── */
.feat-article-layout {
  display: grid;
  grid-template-columns: 260px 1fr 220px;
  grid-template-rows: auto;
  align-items: start;
  gap: 0;
  background: var(--cream);
}

/* ── Shared sidebar base ─────────────────────────────────────── */
.feat-sidebar {
  position: sticky;
  top: 5rem;                          /* clears the fixed nav */
  max-height: calc(100vh - 6rem);
  overflow-y: auto;
  padding: 2.5rem 1.5rem;
  scrollbar-width: thin;
  scrollbar-color: rgba(201,168,130,0.25) transparent;
}
.feat-sidebar::-webkit-scrollbar { width: 4px; }
.feat-sidebar::-webkit-scrollbar-track { background: transparent; }
.feat-sidebar::-webkit-scrollbar-thumb { background: rgba(201,168,130,0.3); border-radius: 4px; }

/* ── Left sidebar colours ────────────────────────────────────── */
.feat-sidebar--left {
  background: var(--fog, #EDEBE4);
  border-right: 1px solid rgba(201,168,130,0.18);
  grid-column: 1;
}

/* ── Right sidebar colours ───────────────────────────────────── */
.feat-sidebar--right {
  background: var(--cream);
  border-left: 1px solid rgba(201,168,130,0.18);
  grid-column: 3;
}

/* ── Article body stays in the centre column ─────────────────── */
.feat-article-layout > .feat-article-column {
  grid-column: 2;
  max-width: none;
  margin: 0;
  padding: 4rem 3rem 3rem;
}

/* ═══════════════════════════════════════════════════════════════
   LEFT SIDEBAR: SPOT CARDS
═══════════════════════════════════════════════════════════════ */

.feat-spot-card {
  background: #fff;
  border-radius: 6px;
  border: 1px solid rgba(201,168,130,0.2);
  overflow: hidden;
  margin-bottom: 1.5rem;
}
.feat-spot-card:last-child { margin-bottom: 0; }

/* Card header: thumbnail + title stack */
.feat-spot-card-header {
  display: flex;
  gap: 0.75rem;
  align-items: flex-start;
  padding: 1rem 1rem 0.75rem;
}
.feat-spot-card-thumb {
  flex-shrink: 0;
  width: 52px; height: 52px;
  border-radius: 4px;
  overflow: hidden;
}
.feat-spot-card-thumb img {
  width: 100%; height: 100%;
  object-fit: cover; display: block;
}
.feat-spot-card-title-wrap {
  display: flex; flex-direction: column; gap: 0.2rem;
  min-width: 0;
}
.feat-spot-card-name {
  font-family: 'Playfair Display', serif;
  font-size: 0.95rem; font-weight: 700;
  color: var(--stone); text-decoration: none;
  line-height: 1.25;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.feat-spot-card-name:hover { color: var(--terracotta); }
.feat-spot-card-cat,
.feat-spot-card-hood {
  font-family: 'DM Mono', monospace;
  font-size: 0.55rem; letter-spacing: 0.12em; text-transform: uppercase;
  color: var(--dusk); opacity: 0.75;
}

/* Beco editorial note */
.feat-spot-card-note {
  font-family: 'Playfair Display', serif;
  font-size: 0.78rem; font-style: italic;
  color: var(--stone); line-height: 1.55;
  padding: 0 1rem 0.75rem;
  border-bottom: 1px solid rgba(201,168,130,0.15);
  margin: 0;
}

/* Detail rows list */
.feat-spot-detail-list {
  list-style: none; margin: 0; padding: 0.5rem 0;
}
.feat-spot-detail-row {
  display: flex; gap: 0.6rem; align-items: flex-start;
  padding: 0.45rem 1rem;
  border-bottom: 1px solid rgba(201,168,130,0.1);
}
.feat-spot-detail-row:last-child { border-bottom: none; }
.feat-spot-detail-icon {
  flex-shrink: 0;
  font-size: 0.75rem; line-height: 1.6;
  width: 1.1rem; text-align: center;
  opacity: 0.65;
}
.feat-spot-detail-text {
  font-family: 'Instrument Sans', sans-serif;
  font-size: 0.75rem; color: var(--dusk); line-height: 1.55;
  display: flex; flex-direction: column; gap: 0.1rem;
}
.feat-spot-detail-text a {
  color: var(--terracotta); text-decoration: none;
}
.feat-spot-detail-text a:hover { text-decoration: underline; }
.feat-spot-detail-hint {
  font-size: 0.68rem; color: var(--dusk); opacity: 0.6; font-style: italic;
}
.feat-spot-hours-line {
  display: block; font-size: 0.72rem;
}

/* Vibe tags */
.feat-spot-detail-vibes { flex-direction: row; flex-wrap: wrap; gap: 0.3rem; }
.feat-spot-vibe-tag {
  display: inline-block;
  font-family: 'DM Mono', monospace;
  font-size: 0.55rem; letter-spacing: 0.1em; text-transform: uppercase;
  background: rgba(194,107,73,0.08);
  color: var(--terracotta);
  border: 1px solid rgba(194,107,73,0.2);
  border-radius: 3px;
  padding: 0.15rem 0.45rem;
}

/* Price icon — plain text 'P' for parking, '$$' for price */
.feat-spot-detail-icon--text {
  font-family: 'DM Mono', monospace;
  font-size: 0.6rem; font-weight: 700;
  color: var(--dusk); opacity: 0.55;
}

/* CTA link row */
.feat-spot-card-links {
  padding: 0.75rem 1rem 0.5rem;
  display: flex; flex-direction: column; gap: 0.4rem;
}
.feat-spot-cta {
  display: block;
  font-family: 'DM Mono', monospace;
  font-size: 0.6rem; letter-spacing: 0.12em; text-transform: uppercase;
  text-decoration: none;
  border-radius: 3px;
  padding: 0.5rem 0.75rem;
  text-align: center;
  transition: background 0.2s ease, color 0.2s ease;
}
.feat-spot-cta--primary {
  background: var(--terracotta);
  color: #fff;
}
.feat-spot-cta--primary:hover { background: var(--clay, #9e5538); }
.feat-spot-cta--secondary {
  background: transparent;
  color: var(--terracotta);
  border: 1px solid rgba(194,107,73,0.35);
}
.feat-spot-cta--secondary:hover { border-color: var(--terracotta); background: rgba(194,107,73,0.06); }

/* "Full spot profile" subtle link */
.feat-spot-card-profile-link {
  display: block;
  font-family: 'DM Mono', monospace;
  font-size: 0.58rem; letter-spacing: 0.1em; text-transform: uppercase;
  color: var(--dusk); opacity: 0.6;
  text-decoration: none;
  text-align: center;
  padding: 0.5rem 1rem 0.9rem;
  transition: opacity 0.2s ease;
}
.feat-spot-card-profile-link:hover { opacity: 1; color: var(--terracotta); }

/* Fallback when no spots are linked */
.feat-sidebar-empty {
  padding: 1.5rem;
  text-align: center;
}
.feat-sidebar-empty-label {
  font-family: 'DM Mono', monospace;
  font-size: 0.65rem; letter-spacing: 0.1em; text-transform: uppercase;
  color: var(--dusk); opacity: 0.45;
}


/* ═══════════════════════════════════════════════════════════════
   RIGHT SIDEBAR: BLOCKS
═══════════════════════════════════════════════════════════════ */

.feat-sidebar-block {
  margin-bottom: 1.75rem;
  padding-bottom: 1.75rem;
  border-bottom: 1px solid rgba(201,168,130,0.15);
}
.feat-sidebar-block:last-child { margin-bottom: 0; border-bottom: none; padding-bottom: 0; }

.feat-sidebar-block-label {
  font-family: 'DM Mono', monospace;
  font-size: 0.58rem; letter-spacing: 0.15em; text-transform: uppercase;
  color: var(--dusk); opacity: 0.55;
  margin: 0 0 0.75rem;
}

/* Share row */
.feat-share-row {
  display: flex; gap: 0.5rem; flex-wrap: wrap;
}
.feat-share-btn {
  display: inline-flex; align-items: center; gap: 0.4rem;
  font-family: 'DM Mono', monospace;
  font-size: 0.6rem; letter-spacing: 0.1em; text-transform: uppercase;
  background: transparent;
  border: 1px solid rgba(201,168,130,0.3);
  border-radius: 3px;
  padding: 0.45rem 0.7rem;
  color: var(--dusk); text-decoration: none;
  cursor: pointer; transition: border-color 0.2s ease, color 0.2s ease;
}
.feat-share-btn:hover { border-color: var(--terracotta); color: var(--terracotta); }
.feat-share-icon { font-size: 0.8rem; line-height: 1; }

/* Tags row */
.feat-sidebar-tag-row {
  display: flex; flex-wrap: wrap; gap: 0.4rem; align-items: center;
}
.feat-sidebar-tag {
  font-family: 'DM Mono', monospace;
  font-size: 0.55rem; letter-spacing: 0.12em; text-transform: uppercase;
  background: rgba(201,168,130,0.12);
  color: var(--dusk);
  border: 1px solid rgba(201,168,130,0.25);
  border-radius: 3px;
  padding: 0.2rem 0.5rem;
}
.feat-sidebar-tag--city {
  background: rgba(194,107,73,0.08);
  color: var(--terracotta);
  border-color: rgba(194,107,73,0.2);
}

/* "More from city" list */
.feat-sidebar-more-list { list-style: none; margin: 0; padding: 0; }
.feat-sidebar-more-item { margin-bottom: 0.75rem; }
.feat-sidebar-more-item:last-child { margin-bottom: 0; }
.feat-sidebar-more-link {
  display: flex; gap: 0.6rem; align-items: flex-start;
  text-decoration: none;
  padding: 0.5rem;
  border-radius: 4px;
  transition: background 0.15s ease;
}
.feat-sidebar-more-link:hover { background: rgba(201,168,130,0.1); }
.feat-sidebar-more-thumb {
  flex-shrink: 0; width: 44px; height: 44px;
  border-radius: 3px; overflow: hidden;
}
.feat-sidebar-more-thumb img {
  width: 100%; height: 100%; object-fit: cover; display: block;
}
.feat-sidebar-more-text {
  display: flex; flex-direction: column; gap: 0.2rem; min-width: 0;
}
.feat-format-chip--xs {
  font-size: 0.5rem !important; padding: 0.1rem 0.35rem !important;
}
.feat-sidebar-more-title {
  font-family: 'Instrument Sans', sans-serif;
  font-size: 0.75rem; font-weight: 600;
  color: var(--stone); line-height: 1.3;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.feat-sidebar-more-sub {
  font-family: 'Instrument Sans', sans-serif;
  font-size: 0.65rem; color: var(--dusk); opacity: 0.7;
  line-height: 1.35;
  display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; overflow: hidden;
}

/* "Explore city" button */
.feat-sidebar-city-btn {
  display: block; margin-top: 0.75rem;
  font-family: 'DM Mono', monospace;
  font-size: 0.58rem; letter-spacing: 0.12em; text-transform: uppercase;
  color: var(--terracotta); text-decoration: none;
  border: 1px solid rgba(194,107,73,0.3);
  border-radius: 3px;
  padding: 0.5rem 0.75rem;
  text-align: center;
  transition: background 0.2s ease;
}
.feat-sidebar-city-btn:hover { background: rgba(194,107,73,0.06); border-color: var(--terracotta); }

/* Back link */
.feat-sidebar-nav-link {
  font-family: 'DM Mono', monospace;
  font-size: 0.58rem; letter-spacing: 0.12em; text-transform: uppercase;
  color: var(--dusk); opacity: 0.65;
  text-decoration: none;
  transition: opacity 0.2s ease, color 0.2s ease;
}
.feat-sidebar-nav-link:hover { opacity: 1; color: var(--terracotta); }


/* ═══════════════════════════════════════════════════════════════
   RESPONSIVE — collapse to single column below 1050px
   Order: Left sidebar first (spot info), then body, then right.
   At mobile sizes the right sidebar hides (nav + share live in footer).
═══════════════════════════════════════════════════════════════ */

@media (max-width: 1050px) {
  .feat-article-layout {
    grid-template-columns: 1fr;
    grid-template-rows: auto;
  }
  .feat-sidebar--left  { grid-column: 1; position: static; max-height: none; padding: 2rem 1.5rem 0; }
  .feat-article-layout > .feat-article-column { grid-column: 1; padding: 2.5rem 1.5rem; }
  .feat-sidebar--right { grid-column: 1; position: static; max-height: none; padding: 0 1.5rem 2rem; border-left: none; border-top: 1px solid rgba(201,168,130,0.18); }
}

@media (max-width: 900px) {
  .feat-article-header { min-height: 55vh; }
  .feat-article-header-content { padding: 3rem 1.5rem 4rem; }
  .feat-related { padding: 3.5rem 1.5rem; }
  .feat-related-grid { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 600px) {
  .feat-sidebar--right { display: none; } /* share + city link live in article footer on small screens */
  .feat-related-grid { grid-template-columns: 1fr; }
}
