/* ── Reset ─────────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }

/* ── Design tokens ──────────────────────────────────── */
:root {
  --green:      #365341;
  --green-hover:#4A6E57;
  --tatami:     #D7C9A4;
  --charcoal:   #2E2E2E;
  --rice-paper: #FAF8F2;
  --bamboo:     #7A8E62;
  --stone:      #C8C6BF;

  --radius-sm:  4px;
  --radius-md:  8px;
  --radius-lg:  12px;

  --space-sm:   16px;
  --space-md:   32px;
  --space-lg:   64px;
  --space-xl:   96px;
  --space-2xl:  128px;

  --max-w:      1280px;
  --pad-x:      clamp(24px, 5.6vw, 80px);
}

body {
  background: var(--rice-paper);
  color: var(--charcoal);
  font-family: Inter, sans-serif;
  -webkit-font-smoothing: antialiased;
}

/* ── Keyframes ──────────────────────────────────────── */
@keyframes heroFadeIn {
  from { opacity: 0; transform: translateY(18px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes fadeUp {
  from { opacity: 0; transform: translateY(24px); }
  to   { opacity: 1; transform: translateY(0); }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    transition-duration: 0.01ms !important;
  }
}

/* ── Utility ────────────────────────────────────────── */
.eyebrow-rule {
  width: 36px; height: 2px;
  background: var(--green);
  margin-bottom: 22px;
}
.eyebrow {
  font-family: Inter, sans-serif;
  font-size: 11px; font-weight: 500;
  letter-spacing: 0.24em; text-transform: uppercase;
  color: var(--green); margin-bottom: 32px; line-height: 1;
}

/* ═══════════════════════════════════════════════════
   NAVIGATION
═══════════════════════════════════════════════════ */

/*
 * <nav> and .nav-scrim are direct children of <body>,
 * NOT nested inside <header>. This prevents stacking-context issues
 * with backdrop-filter / transform on the header.
 *
 * z-index stack:
 *   page content    → default
 *   .nav-scrim      → 199
 *   .site-nav       → 200  (drawer)
 *   .site-header    → 201  (hamburger stays tappable above drawer)
 *   desktop nav overlay → 202 (pointer-events: none, links restore)
 */

.site-header {
  position: fixed; top: 0; left: 0; right: 0; z-index: 201;
  background: transparent;
  border-bottom: 1px solid transparent;
  transition: background 0.38s ease, border-color 0.38s ease;
}
.site-header.scrolled {
  background: var(--rice-paper);
  border-bottom-color: rgba(46,46,46,0.08);
}

.nav-inner {
  max-width: 1440px; margin: 0 auto;
  padding: 0 var(--pad-x);
  height: 76px;
  display: flex; align-items: center; justify-content: space-between;
}

/* ── Logo ───────────────────────────────────────── */
.nav-logo {
  display: flex; align-items: center; gap: 14px;
  text-decoration: none; flex-shrink: 0; outline-offset: 4px;
}

/* Logo mark: the brush-calligraphy image */
.nav-logo-mark {
  width: 44px; height: 44px;
  flex-shrink: 0; overflow: hidden;
  border-radius: var(--radius-sm);
}
.nav-logo-img {
  width: 100%; height: 100%;
  object-fit: cover;
  object-position: center;
  display: block;
}

.nav-logo-text { display: flex; flex-direction: column; gap: 3px; }
.nav-logo-name {
  font-family: 'Cormorant Garamond', serif;
  font-size: 14px; font-weight: 400;
  letter-spacing: 0.16em; text-transform: uppercase;
  white-space: nowrap; line-height: 1;
  color: rgba(250,248,242,0.92);
  transition: color 0.38s ease;
}
.nav-logo-since {
  font-family: Inter, sans-serif;
  font-size: 9px; font-weight: 500;
  letter-spacing: 0.22em; text-transform: uppercase; line-height: 1;
  color: rgba(250,248,242,0.52);
  transition: color 0.38s ease;
}
.site-header.scrolled .nav-logo-name { color: var(--charcoal); }
.site-header.scrolled .nav-logo-since { color: var(--bamboo); }

.btn-primary {
  font-family: Inter, sans-serif; font-size: 13px; font-weight: 500;
  color: var(--rice-paper); background: var(--green);
  border: 1px solid var(--green);
  padding: 10px 20px; border-radius: var(--radius-md);
  cursor: pointer; letter-spacing: 0.02em; line-height: 1;
  text-decoration: none; display: inline-flex; align-items: center;
  transition: background 0.2s, border-color 0.2s;
  white-space: nowrap;
}
.btn-primary:hover { background: var(--green-hover); border-color: var(--green-hover); }

/* ── Hamburger toggle ───────────────────────────── */
/* All animation is CSS-only via aria-expanded selector.
   JS only flips the attribute — no inline styles ever. */
.nav-toggle {
  display: none; /* desktop: hidden; mobile: flex (see media query) */
  flex-direction: column; align-items: center; justify-content: center;
  gap: 5px;
  width: 44px; height: 44px; padding: 0;
  background: none; border: none; cursor: pointer;
  color: rgba(250,248,242,0.92);
  flex-shrink: 0;
}
.site-header.scrolled .nav-toggle { color: var(--charcoal); }

.nav-toggle__bar {
  display: block; width: 22px; height: 2px;
  background: currentColor;
  transition: transform 250ms ease, opacity 250ms ease;
}
/* translateY = gap(5px) + bar-height(2px) = 7px */
.nav-toggle[aria-expanded="true"] .nav-toggle__bar:nth-child(1) {
  transform: translateY(7px) rotate(45deg);
}
.nav-toggle[aria-expanded="true"] .nav-toggle__bar:nth-child(2) {
  opacity: 0;
}
.nav-toggle[aria-expanded="true"] .nav-toggle__bar:nth-child(3) {
  transform: translateY(-7px) rotate(-45deg);
}

/* ── Primary nav (sibling of header) ────────────── */
/* Desktop: fixed transparent overlay; only the UL captures clicks */
@media (min-width: 48rem) {
  .nav-toggle { display: none !important; }

  .site-nav {
    position: fixed;
    top: 0; left: 0; right: 0;
    height: 76px;
    display: flex; align-items: center; justify-content: center;
    pointer-events: none; /* pass clicks through to header elements */
    z-index: 202;         /* above header (201) */
    background: transparent;
  }

  .site-nav .nav-links {
    display: flex;
    align-items: center;
    gap: clamp(16px, 2.4vw, 40px);
    list-style: none;
    pointer-events: auto; /* restore clicks on links only */
  }
  .site-nav .nav-links a {
    font-family: Inter, sans-serif;
    font-size: 13.5px; font-weight: 400;
    color: rgba(250,248,242,0.92);
    text-decoration: none; letter-spacing: 0.01em; white-space: nowrap;
    transition: color 0.38s ease;
    position: relative;
  }
  .site-nav .nav-links a::after {
    content: '';
    position: absolute;
    bottom: -4px;
    left: 0; right: 0;
    height: 2px;
    background: currentColor;
    transform: scaleX(0);
    transform-origin: left;
    transition: transform 0.2s ease;
  }
  .site-nav .nav-links a:hover::after,
  .site-nav .nav-links a:focus-visible::after {
    transform: scaleX(1);
  }
  .site-nav .nav-links a[aria-current="page"] {
    font-weight: 500;
  }
  .site-nav .nav-links a[aria-current="page"]::after {
    transform: scaleX(1);
    transition: none;
  }
  /* nav is outside header, so JS adds .scrolled to nav directly */
  .site-nav.scrolled .nav-links a { color: var(--charcoal); }
}

/* Mobile: full-height right-side drawer */
@media (max-width: 47.99rem) {
  .nav-toggle { display: flex; }

  .site-nav {
    display: flex !important;
    flex-direction: column;
    position: fixed;
    top: 0; right: 0; bottom: 0;
    width: min(80vw, 320px);
    transform: translateX(100%);
    transition: transform 300ms ease;
    z-index: 200;
    background: var(--rice-paper);
    padding: 100px 0 40px; /* top clears the 76px header */
    overflow-y: auto;
    box-shadow: -4px 0 32px rgba(0,0,0,0.14);
  }
  .site-nav.is-open { transform: translateX(0); }

  .site-nav .nav-links {
    list-style: none;
    display: flex;
    flex-direction: column;
    width: 100%;
  }
  .site-nav .nav-links li:first-child a {
    border-top: 1px solid var(--stone);
  }
  .site-nav .nav-links a {
    display: block;
    font-family: Inter, sans-serif;
    font-size: 15px; font-weight: 400;
    color: var(--charcoal);
    text-decoration: none; letter-spacing: 0.01em;
    padding: 17px 32px;
    border-bottom: 1px solid var(--stone);
    border-left: 3px solid transparent;
    transition: color 0.18s, background 0.18s;
  }
  .site-nav .nav-links a:hover {
    color: var(--green);
    background: rgba(54,83,65,0.04);
  }
  .site-nav .nav-links a[aria-current="page"] {
    color: var(--green);
    font-weight: 500;
    border-left-color: var(--green);
    padding-left: 29px;
    background: rgba(54,83,65,0.04);
  }

  /* Scrim */
  .nav-scrim {
    display: none;
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,0.35);
    z-index: 199;
  }
  .nav-scrim.is-open { display: block; }
}

/* ═══════════════════════════════════════════════════
   HERO
═══════════════════════════════════════════════════ */
.hero {
  position: relative; height: 100vh; min-height: 560px; overflow: hidden;
}

/* Photo — replace background with real <img> when photo is ready */
.hero-photo {
  position: absolute; inset: 0;
  background:
    repeating-linear-gradient(
      0deg,
      rgba(255,255,255,0.014) 0, rgba(255,255,255,0.014) 1px,
      transparent 1px, transparent 56px
    ),
    repeating-linear-gradient(
      90deg,
      rgba(255,255,255,0.009) 0, rgba(255,255,255,0.009) 1px,
      transparent 1px, transparent 112px
    ),
    radial-gradient(ellipse 58% 42% at 74% 0%, rgba(215,178,96,0.17) 0%, transparent 52%),
    linear-gradient(160deg, #1a1510 0%, #26201a 20%, #382a1d 44%, #2e2419 68%, #1d1711 100%);
}
/* To use a real photo, add: <img class="hero-photo-img" src="..." alt=""> */
.hero-photo-img {
  position: absolute; inset: 0;
  width: 100%; height: 100%; object-fit: cover; object-position: center;
}

.hero-photo-label {
  position: absolute; bottom: 20px; right: 28px;
  font-family: monospace; font-size: 9.5px; letter-spacing: 0.1em;
  text-transform: uppercase; color: rgba(255,255,255,0.2);
  line-height: 1.8; text-align: right; pointer-events: none; user-select: none;
}

/* Overlay */
.hero-overlay {
  position: absolute; inset: 0;
  background: rgba(0,0,0,0.26); z-index: 1;
}

/* Content */
.hero-content {
  position: absolute; inset: 0; z-index: 2;
  display: flex; align-items: flex-end;
}
.hero-content-inner {
  width: 100%;
  padding-bottom: clamp(64px, 11vh, 110px);
}
.hero-content-wrap {
  max-width: var(--max-w); margin: 0 auto;
  padding: 0 var(--pad-x);
}
.hero-text {
  max-width: 550px;
  animation: heroFadeIn 0.95s ease 0.15s both;
}
.hero-eyebrow {
  font-family: Inter, sans-serif; font-size: 11px; font-weight: 500;
  letter-spacing: 0.24em; text-transform: uppercase;
  color: rgba(250,248,242,0.58); margin-bottom: 22px; line-height: 1;
}
.hero-h1 {
  font-family: 'Cormorant Garamond', serif; font-weight: 300;
  font-size: clamp(56px, 7vw, 88px); color: var(--rice-paper);
  line-height: 1.03; letter-spacing: -0.01em; margin-bottom: 24px;
}
.hero-tagline {
  font-family: Inter, sans-serif; font-size: 17px; font-weight: 400;
  color: rgba(250,248,242,0.76); margin-bottom: 40px;
  line-height: 1.5; letter-spacing: 0.03em;
}
.hero-cta {
  font-family: Inter, sans-serif; font-size: 14.5px; font-weight: 500;
  color: var(--rice-paper); background: var(--green);
  padding: 15px 28px; border-radius: var(--radius-md);
  text-decoration: none; letter-spacing: 0.025em; line-height: 1;
  display: inline-flex; align-items: center;
  transition: background 0.2s;
}
.hero-cta:hover { background: var(--green-hover); }

/* ═══════════════════════════════════════════════════
   SECTION 2 — THE PRACTICE
═══════════════════════════════════════════════════ */
.section-philosophy {
  background: var(--rice-paper);
  padding: var(--space-2xl) var(--pad-x);
}
.section-philosophy .inner {
  max-width: 780px; margin: 0 auto;
}
.philosophy-h2 {
  font-family: 'Cormorant Garamond', serif; font-weight: 300;
  font-size: clamp(36px, 4.5vw, 54px); color: var(--charcoal);
  line-height: 1.13; letter-spacing: -0.005em;
  margin-bottom: 48px;
}
.philosophy-body {
  font-family: Inter, sans-serif; font-size: 17px; font-weight: 400;
  color: var(--charcoal); line-height: 1.74; margin-bottom: 26px;
}
.philosophy-heritage {
  font-family: 'Cormorant Garamond', serif; font-style: italic;
  font-weight: 300; font-size: clamp(20px, 2.5vw, 28px); color: var(--green);
  line-height: 1.5;
  border-top: 1px solid var(--stone);
  padding-top: 44px; margin-top: 46px;
}

/* ═══════════════════════════════════════════════════
   SECTION 3 — INSTRUCTOR QUOTE
═══════════════════════════════════════════════════ */
.instructor-quote {
  border-left: 2px solid var(--green);
  padding: 4px 0 4px 28px;
}
.instructor-quote p {
  font-family: 'Cormorant Garamond', serif; font-style: italic;
  font-weight: 300; font-size: clamp(20px, 2.2vw, 26px); color: var(--charcoal);
  line-height: 1.52;
}
.instructor-quote cite {
  display: block; margin-top: 18px;
  font-family: Inter, sans-serif; font-size: 11px; font-weight: 500;
  letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--green); font-style: normal;
}

/* ═══════════════════════════════════════════════════
   SECTION 4 — SCHEDULE
═══════════════════════════════════════════════════ */
.section-schedule {
  background: var(--rice-paper);
  padding: var(--space-lg) var(--pad-x) var(--space-md);
}
.section-schedule .inner {
  max-width: var(--max-w); margin: 0 auto;
}
.schedule-header {
  display: flex; align-items: flex-end;
  justify-content: space-between; gap: 32px;
  margin-bottom: 56px; flex-wrap: wrap;
}
.schedule-h2 {
  font-family: 'Cormorant Garamond', serif; font-weight: 300;
  font-size: clamp(36px, 4.5vw, 54px); color: var(--charcoal);
  line-height: 1.1;
}
.schedule-link {
  font-family: Inter, sans-serif; font-size: 13px; font-weight: 500;
  color: var(--green); text-decoration: none; letter-spacing: 0.04em;
  border-bottom: 1px solid var(--green); padding-bottom: 2px;
  white-space: nowrap; transition: opacity 0.18s;
}
.schedule-link:hover { opacity: 0.65; }

.schedule-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 2px;
}
.schedule-card {
  background: var(--rice-paper);
  border: 1px solid var(--stone);
  border-radius: var(--radius-lg);
  padding: 32px 28px;
  transition: border-color 0.2s;
}
.schedule-card:hover { border-color: var(--bamboo); }
.schedule-day {
  font-family: Inter, sans-serif; font-size: 10px; font-weight: 500;
  letter-spacing: 0.22em; text-transform: uppercase;
  color: var(--bamboo); margin-bottom: 10px; line-height: 1;
}
.schedule-time {
  font-family: 'Cormorant Garamond', serif; font-weight: 300;
  font-size: 32px; color: var(--charcoal); line-height: 1;
  margin-bottom: 14px;
}
.schedule-desc {
  font-family: Inter, sans-serif; font-size: 13.5px; font-weight: 400;
  color: var(--charcoal); line-height: 1.6; margin-bottom: 16px;
  opacity: 0.75;
}
.schedule-instructor {
  font-family: Inter, sans-serif; font-size: 11px; font-weight: 500;
  letter-spacing: 0.1em; text-transform: uppercase;
  color: var(--green); line-height: 1;
}
.schedule-badge {
  display: inline-block;
  font-family: Inter, sans-serif; font-size: 9.5px; font-weight: 500;
  letter-spacing: 0.12em; text-transform: uppercase;
  color: var(--green); background: rgba(54,83,65,0.08);
  border-radius: var(--radius-sm);
  padding: 4px 8px; margin-bottom: 12px; line-height: 1;
}

.schedule-closure-notice {
  margin-top: 32px;
  background: rgba(54,83,65,0.05);
  border: 1px solid var(--stone);
  border-radius: var(--radius-lg);
  padding: 32px 28px;
}
.schedule-closure-lede {
  font-family: Inter, sans-serif; font-size: 11px; font-weight: 500;
  letter-spacing: 0.1em; text-transform: uppercase;
  color: var(--green); line-height: 1.4; margin-bottom: 16px;
}
.schedule-closure-notice p {
  font-family: Inter, sans-serif; font-size: 13.5px; font-weight: 400;
  color: var(--charcoal); line-height: 1.6; opacity: 0.85;
  margin-bottom: 12px; max-width: 640px;
}
.schedule-closure-notice p:last-child { margin-bottom: 0; }
.schedule-closure-notice a {
  color: var(--green); text-decoration: underline; text-underline-offset: 2px;
}

/* ═══════════════════════════════════════════════════
   SECTION 5 — SOFT CTA
═══════════════════════════════════════════════════ */
.section-soft-cta {
  background: var(--green);
  padding: 96px var(--pad-x);
}
.section-soft-cta .inner {
  max-width: 680px; margin: 0 auto; text-align: center;
}
.soft-cta-h2 {
  font-family: 'Cormorant Garamond', serif; font-weight: 300;
  font-size: clamp(36px, 4vw, 52px); color: var(--rice-paper);
  line-height: 1.18; margin-bottom: 24px;
}
.soft-cta-body {
  font-family: Inter, sans-serif; font-size: 16px; font-weight: 400;
  color: rgba(250,248,242,0.72); line-height: 1.7;
  margin-bottom: 44px;
}
.soft-cta-actions {
  display: flex; align-items: center; justify-content: center;
  gap: 16px; flex-wrap: wrap;
}
.btn-outline-light {
  font-family: Inter, sans-serif; font-size: 14px; font-weight: 500;
  color: rgba(250,248,242,0.88);
  background: transparent;
  border: 1px solid rgba(250,248,242,0.38);
  padding: 14px 26px; border-radius: var(--radius-md);
  text-decoration: none; letter-spacing: 0.02em; line-height: 1;
  transition: background 0.2s, border-color 0.2s;
  cursor: pointer;
}
.btn-outline-light:hover {
  background: rgba(255,255,255,0.1);
  border-color: rgba(250,248,242,0.6);
}
.btn-light {
  font-family: Inter, sans-serif; font-size: 14px; font-weight: 500;
  color: var(--green); background: var(--rice-paper);
  border: 1px solid var(--rice-paper);
  padding: 14px 26px; border-radius: var(--radius-md);
  text-decoration: none; letter-spacing: 0.02em; line-height: 1;
  transition: background 0.2s;
}
.btn-light:hover { background: #ede9e1; }

/* ═══════════════════════════════════════════════════
   FOOTER
═══════════════════════════════════════════════════ */
.site-footer {
  background: var(--charcoal);
  padding: 72px var(--pad-x) 48px;
}
.footer-inner {
  max-width: var(--max-w); margin: 0 auto;
}
.footer-top {
  display: flex; gap: 64px; justify-content: space-between;
  flex-wrap: wrap; margin-bottom: 64px;
}
.footer-brand { max-width: 320px; }
.footer-logo-name {
  font-family: 'Cormorant Garamond', serif; font-size: 18px; font-weight: 400;
  letter-spacing: 0.1em; text-transform: uppercase;
  color: var(--rice-paper); margin-bottom: 6px; line-height: 1;
}
.footer-logo-since {
  font-family: Inter, sans-serif; font-size: 9px; font-weight: 500;
  letter-spacing: 0.22em; text-transform: uppercase;
  color: var(--bamboo); margin-bottom: 24px; line-height: 1;
}
.footer-tagline {
  font-family: Inter, sans-serif; font-size: 13.5px; font-weight: 400;
  color: rgba(250,248,242,0.45); line-height: 1.7;
}
.footer-nav-col h4 {
  font-family: Inter, sans-serif; font-size: 10px; font-weight: 500;
  letter-spacing: 0.22em; text-transform: uppercase;
  color: var(--bamboo); margin-bottom: 20px; line-height: 1;
}
.footer-nav-col ul { list-style: none; }
.footer-nav-col ul li { margin-bottom: 12px; }
.footer-nav-col ul li a {
  font-family: Inter, sans-serif; font-size: 13.5px; font-weight: 400;
  color: rgba(250,248,242,0.55); text-decoration: none;
  transition: color 0.18s;
}
.footer-nav-col ul li a:hover { color: var(--rice-paper); }
.footer-contact p {
  font-family: Inter, sans-serif; font-size: 13.5px; font-weight: 400;
  color: rgba(250,248,242,0.55); line-height: 1.8;
}
.footer-contact a {
  color: rgba(250,248,242,0.55); text-decoration: none;
  transition: color 0.18s;
}
.footer-contact a:hover { color: var(--rice-paper); }
.footer-bottom {
  border-top: 1px solid rgba(250,248,242,0.08);
  padding-top: 28px;
  display: flex; justify-content: space-between; align-items: center;
  flex-wrap: wrap; gap: 16px;
}
.footer-copy {
  font-family: Inter, sans-serif; font-size: 11.5px; font-weight: 400;
  color: rgba(250,248,242,0.3); line-height: 1;
}
.site-meta {
  font-family: Inter, sans-serif;
  font-size: 11.5px;
  font-weight: 400;
  color: rgba(250,248,242,0.3);
  line-height: 1.7;
}
.site-meta a {
  color: inherit;
  text-decoration: none;
  transition: opacity 0.2s ease;
}
.site-meta a:hover {
  opacity: 0.7;
  text-decoration: underline;
}
.site-meta .separator {
  margin: 0 0.5rem;
  opacity: 0.45;
}

/* ═══════════════════════════════════════════════════
   PAGE HERO (interior pages)
   Reusable across Start Here / Learn / Events / About /
   Visit Us. Unlike the homepage .hero, this has no
   full-bleed photo — background is a solid design-token
   colour (tasteful placeholder per DESIGN.md §9 rather
   than stock photography). Because there's no dark photo
   for the fixed header to sit on, main.js keeps the header
   "scrolled" (solid) at all times on pages that don't have
   a .hero element — see main.js hasFullHero.
═══════════════════════════════════════════════════ */
.page-hero {
  background: var(--tatami);
  padding: calc(76px + var(--space-xl)) var(--pad-x) var(--space-xl);
}
.page-hero .inner { max-width: 760px; margin: 0 auto; }
.page-hero-eyebrow {
  font-family: Inter, sans-serif; font-size: 11px; font-weight: 500;
  letter-spacing: 0.24em; text-transform: uppercase;
  color: var(--green); margin-bottom: 22px; line-height: 1;
}
.page-hero-h1 {
  font-family: 'Cormorant Garamond', serif; font-weight: 300;
  font-size: clamp(40px, 5.5vw, 64px); color: var(--charcoal);
  line-height: 1.08; letter-spacing: -0.005em; margin-bottom: 22px;
}
.page-hero-lede {
  font-family: Inter, sans-serif; font-size: 16.5px; font-weight: 400;
  color: var(--charcoal); opacity: 0.78; line-height: 1.7;
  max-width: 560px;
}

/* Small "Next Seminar" highlight — populated by script/seminars.js from
   the first entry in data/seminars.js. Deliberately quiet: a text link,
   not a banner or badge, per DESIGN.md's no-urgency-tactics principle. */
.page-hero-next {
  display: inline-flex; align-items: baseline; flex-wrap: wrap;
  gap: 10px; margin-top: 32px;
  padding: 14px 20px;
  background: rgba(250,248,242,0.55);
  border: 1px solid var(--stone);
  border-radius: var(--radius-md);
  text-decoration: none;
  transition: border-color 0.2s;
}
.page-hero-next:hover { border-color: var(--bamboo); }
.page-hero-next-label {
  font-family: Inter, sans-serif; font-size: 10px; font-weight: 500;
  letter-spacing: 0.18em; text-transform: uppercase; color: var(--green);
}
.page-hero-next-title {
  font-family: Inter, sans-serif; font-size: 13.5px; font-weight: 500;
  color: var(--charcoal);
}
.page-hero-next-date {
  font-family: Inter, sans-serif; font-size: 13px; font-weight: 400;
  color: var(--charcoal); opacity: 0.65;
}

/* Photo variant — optional. Add class="page-hero page-hero--photo" and an
   <img class="page-hero-photo-img"> + <div class="page-hero-overlay"> (see
   sample-event.html) for pages that have a real photo to show. Shorter and
   less dramatic than the homepage's full-bleed .hero — this is a banner,
   not the primary first impression. Text switches to light-on-dark. */
.page-hero--photo {
  position: relative;
  min-height: 420px;
  display: flex; align-items: flex-end;
  padding: 76px var(--pad-x) var(--space-xl);
  overflow: hidden;
  background: var(--charcoal); /* shows briefly if the image 404s/loads slowly */
}
.page-hero-photo-img {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover; object-position: center;
}
.page-hero-overlay {
  position: absolute; inset: 0;
  background: rgba(0,0,0,0.4);
}
.page-hero--photo .inner { position: relative; z-index: 1; }
.page-hero--photo .page-hero-eyebrow { color: rgba(250,248,242,0.72); }
.page-hero--photo .page-hero-h1 { color: var(--rice-paper); }
.page-hero--photo .page-hero-lede { color: rgba(250,248,242,0.85); opacity: 1; }
.page-hero--photo .page-hero-lede a {
  color: var(--rice-paper); text-decoration: underline; text-underline-offset: 2px;
}

/* ═══════════════════════════════════════════════════
   NOTICE SECTION
   Thin wrapper around .schedule-closure-notice so the
   same alert component can be reused outside the schedule
   section (e.g. Visit Us).
   Padding is symmetric top/bottom (not the previous 0
   bottom) so the boxed notice gets breathing room before
   whatever section follows — on Events, .section-notice
   (rice-paper) sits directly above .section-seminars
   (tatami), and the zero bottom padding made the notice
   box look like it was pasted right at the color seam
   between the two sections instead of sitting inside its
   own section with a proper margin.
═══════════════════════════════════════════════════ */
.section-notice {
  background: var(--rice-paper);
  padding: var(--space-md) var(--pad-x);
}
.section-notice .inner { max-width: var(--max-w); margin: 0 auto; }

/* ═══════════════════════════════════════════════════
   LOCATION SECTION
═══════════════════════════════════════════════════ */
.section-location {
  background: var(--rice-paper);
  padding: var(--space-2xl) var(--pad-x);
}
.section-location .inner { max-width: var(--max-w); margin: 0 auto; }

.location-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 64px;
  align-items: start;
  margin-top: 8px;
}
.location-address {
  font-family: Inter, sans-serif; font-size: 15.5px; font-weight: 500;
  color: var(--charcoal); line-height: 1.6; letter-spacing: 0.01em;
  margin-bottom: 28px;
}
.location-directions {
  display: inline-flex; align-items: center;
  font-family: Inter, sans-serif; font-size: 13px; font-weight: 500;
  color: var(--green); text-decoration: none; letter-spacing: 0.04em;
  border-bottom: 1px solid var(--green); padding-bottom: 2px;
  transition: opacity 0.18s;
}
.location-directions:hover { opacity: 0.65; }

.location-map {
  border-radius: var(--radius-lg);
  overflow: hidden;
  border: 1px solid var(--stone);
  background: var(--stone);
}
.location-map iframe {
  display: block; width: 100%; height: 340px; border: 0;
}
.location-map figcaption {
  font-family: Inter, sans-serif; font-size: 11.5px; font-weight: 500;
  letter-spacing: 0.08em; text-transform: uppercase;
  color: var(--charcoal); opacity: 0.6;
  padding: 14px 18px; background: var(--rice-paper);
  border-top: 1px solid var(--stone);
}

/* ═══════════════════════════════════════════════════
   FIRST CLASS SECTION
═══════════════════════════════════════════════════ */
.section-first-class {
  background: var(--tatami);
  padding: var(--space-2xl) var(--pad-x);
}
.section-first-class .inner { max-width: 780px; margin: 0 auto; }
.first-class-quote {
  margin: 40px 0;
  background: rgba(250,248,242,0.55);
  padding: 28px 32px;
  border-radius: var(--radius-md);
}

/* ═══════════════════════════════════════════════════
   SCHEDULE FOOTNOTE (Events page)
═══════════════════════════════════════════════════ */
.schedule-footnote { margin-top: 32px; margin-bottom: 0; }
.schedule-footnote a {
  color: var(--green); text-decoration: underline; text-underline-offset: 2px;
}

/* ═══════════════════════════════════════════════════
   SEMINARS & GRADINGS SECTION (Events page)
═══════════════════════════════════════════════════ */
.section-seminars {
  background: var(--tatami);
  padding: var(--space-2xl) var(--pad-x);
}
.section-seminars .inner { max-width: 780px; margin: 0 auto; }

/* ═══════════════════════════════════════════════════
   PAST EVENTS SECTION (Events page)
   Curated migrated-history highlights — rice-paper background to
   alternate with Seminars & Gradings' tatami above it. Reuses the
   same .seminars-list / .event-card grid as Seminars & Gradings
   (rendered by script/past-events.js from data/past-events.js).
═══════════════════════════════════════════════════ */
.section-past-events {
  background: var(--rice-paper);
  padding: var(--space-2xl) var(--pad-x);
}
.section-past-events .inner { max-width: 780px; margin: 0 auto; }

/* ═══════════════════════════════════════════════════
   EVENT CARDS (Events page — Seminars & Gradings)
   Rendered by script/seminars.js from data/seminars.js.
   See COMPONENTS.md → Cards → Event Card.
═══════════════════════════════════════════════════ */
.seminars-list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 20px;
  margin: 40px 0;
}
.event-card {
  background: var(--rice-paper);
  border: 1px solid var(--stone);
  border-radius: var(--radius-lg);
  padding: 30px 26px;
  transition: border-color 0.2s;
}
.event-card:hover { border-color: var(--bamboo); }
.event-card-date {
  font-family: Inter, sans-serif; font-size: 10px; font-weight: 500;
  letter-spacing: 0.2em; text-transform: uppercase;
  color: var(--bamboo); margin-bottom: 12px; line-height: 1;
}
.event-card-title {
  font-family: 'Cormorant Garamond', serif; font-weight: 400;
  font-size: 24px; color: var(--charcoal); line-height: 1.2;
  margin-bottom: 8px;
}
.event-card-meta {
  font-family: Inter, sans-serif; font-size: 12.5px; font-weight: 500;
  letter-spacing: 0.03em; color: var(--green); margin-bottom: 14px;
  line-height: 1.5;
}
.event-card-desc {
  font-family: Inter, sans-serif; font-size: 14px; font-weight: 400;
  color: var(--charcoal); opacity: 0.8; line-height: 1.65;
  margin-bottom: 16px;
}
.event-card-link {
  font-family: Inter, sans-serif; font-size: 13px; font-weight: 500;
  color: var(--green); text-decoration: none; letter-spacing: 0.02em;
  border-bottom: 1px solid var(--green); padding-bottom: 2px;
  transition: opacity 0.18s;
}
.event-card-link:hover { opacity: 0.65; }

/* ═══════════════════════════════════════════════════
   EVENT FLYER
   Full flyer/poster image for an event detail page.
   See COMPONENTS.md → Event Flyer.
═══════════════════════════════════════════════════ */
.section-flyer {
  background: var(--tatami);
  padding: var(--space-2xl) var(--pad-x);
}
.section-flyer .inner { max-width: 780px; margin: 0 auto; }
.event-flyer {
  max-width: 380px; margin: 40px auto 0;
  border: 1px solid var(--stone);
  border-radius: var(--radius-lg);
  overflow: hidden;
  background: var(--rice-paper);
}
.event-flyer img {
  display: block; width: 100%; height: auto;
}
.event-flyer figcaption {
  font-family: Inter, sans-serif; font-size: 12px; font-weight: 400;
  color: var(--charcoal); opacity: 0.65; line-height: 1.5;
  padding: 16px 20px; border-top: 1px solid var(--stone);
  text-align: center;
}

/* ═══════════════════════════════════════════════════
   ABOUT PAGE SECTION WRAPPERS
   Content typography reuses .philosophy-h2 / .philosophy-body
   throughout — only background/padding/width differ per section.
═══════════════════════════════════════════════════ */
.section-story {
  background: var(--rice-paper);
  padding: var(--space-2xl) var(--pad-x);
}
.section-story .inner { max-width: 780px; margin: 0 auto; }

.section-instructors {
  background: var(--tatami);
  padding: var(--space-2xl) var(--pad-x);
}
.section-instructors .inner { max-width: var(--max-w); margin: 0 auto; }
.section-instructors .philosophy-body { max-width: 720px; }

.section-lineage {
  background: var(--rice-paper);
  padding: var(--space-2xl) var(--pad-x);
}
.section-lineage .inner { max-width: 780px; margin: 0 auto; }

.section-affiliation {
  background: var(--tatami);
  padding: var(--space-2xl) var(--pad-x);
}
.section-affiliation .inner { max-width: 780px; margin: 0 auto; }

/* Start Here page */
.section-what-is-aikido {
  background: var(--rice-paper);
  padding: var(--space-2xl) var(--pad-x);
}
.section-what-is-aikido .inner { max-width: 780px; margin: 0 auto; }

.section-what-to-expect {
  background: var(--tatami);
  padding: var(--space-2xl) var(--pad-x);
}
.section-what-to-expect .inner { max-width: 780px; margin: 0 auto; }

.section-faq {
  background: var(--rice-paper);
  padding: var(--space-2xl) var(--pad-x);
}
.section-faq .inner { max-width: 780px; margin: 0 auto; }

/* FAQ accordion — native <details>/<summary>, no JS needed */
.faq-list { margin: 0 0 8px; }
.faq-item {
  border-bottom: 1px solid var(--stone);
  padding: 18px 0;
}
.faq-item:first-child { border-top: 1px solid var(--stone); }
.faq-item summary {
  font-family: 'Cormorant Garamond', serif; font-weight: 500;
  font-size: clamp(18px, 2vw, 21px); color: var(--charcoal);
  cursor: pointer; list-style: none; position: relative; padding-right: 32px;
}
.faq-item summary::-webkit-details-marker { display: none; }
.faq-item summary::after {
  content: '+';
  position: absolute; right: 0; top: 0;
  font-family: Inter, sans-serif; font-size: 22px; color: var(--green);
}
.faq-item[open] summary::after { content: '\2212'; }
.faq-item .philosophy-body { margin-top: 14px; }

/* Events page — Community Traditions */
.section-traditions {
  background: var(--rice-paper);
  padding: var(--space-2xl) var(--pad-x);
}
.section-traditions .inner { max-width: 780px; margin: 0 auto; }
.traditions-photo {
  margin: 32px 0 40px;
  border-radius: var(--radius-lg);
  overflow: hidden;
  border: 1px solid var(--stone);
  background: var(--tatami);
}
.traditions-photo img {
  display: block; width: 100%;
  /* Fixed min/max banner height that scales fluidly with viewport width in
     between — same crop proportions on mobile, tablet, and desktop, rather
     than the tall/squashed heights a plain width:100%/height:auto photo
     produces at different container widths. object-position pushes the
     visible crop down toward the group, away from the blank ceiling space
     at the top of the original photo. */
  height: clamp(220px, 32vw, 420px);
  object-fit: cover;
  object-position: center 62%;
}
.traditions-photo figcaption {
  font-family: Inter, sans-serif; font-size: 12px; font-weight: 400;
  color: var(--charcoal); opacity: 0.65; line-height: 1.5;
  padding: 14px 20px; border-top: 1px solid var(--stone);
  text-align: center;
}

/* ═══════════════════════════════════════════════════
   INSTRUCTOR CARDS
   Built for About's full 6-instructor "Our Instructors"
   grid; reused as-is on the homepage's curated 3-card
   introduction. See COMPONENTS.md → Cards → Instructor Card.
═══════════════════════════════════════════════════ */
.instructors-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
  gap: 36px;
  margin-top: 8px;
}
.instructor-card-portrait {
  width: 100%; aspect-ratio: 4 / 5;
  background: var(--stone);
  border-radius: var(--radius-lg);
  overflow: hidden; position: relative;
  margin-bottom: 20px;
}
.instructor-card-portrait img {
  width: 100%; height: 100%; object-fit: cover;
}
.instructor-card-portrait-label {
  position: absolute; inset: 0;
  display: flex; flex-direction: column;
  align-items: center; justify-content: center;
  font-family: monospace; font-size: 8.5px; letter-spacing: 0.08em;
  text-transform: uppercase; color: rgba(46,46,46,0.35);
  line-height: 1.9; text-align: center; padding: 12px;
}
.instructor-card-name {
  font-family: 'Cormorant Garamond', serif; font-weight: 400;
  font-size: 24px; color: var(--charcoal); line-height: 1.15;
  margin-bottom: 6px;
}
.instructor-card-rank {
  font-family: Inter, sans-serif; font-size: 11px; font-weight: 500;
  letter-spacing: 0.1em; text-transform: uppercase;
  color: var(--green); margin-bottom: 14px; line-height: 1.4;
}
.instructor-card-bio {
  font-family: Inter, sans-serif; font-size: 14px; font-weight: 400;
  color: var(--charcoal); opacity: 0.82; line-height: 1.65;
}
.instructor-card-quote {
  margin-top: 16px;
  border-left: 2px solid var(--green);
  padding: 2px 0 2px 16px;
}
.instructor-card-quote p {
  font-family: 'Cormorant Garamond', serif; font-style: italic;
  font-weight: 300; font-size: 16.5px; color: var(--charcoal);
  line-height: 1.5;
}

/* ═══════════════════════════════════════════════════
   CONTACT SECTION
═══════════════════════════════════════════════════ */
.section-contact {
  background: var(--rice-paper);
  padding: var(--space-2xl) var(--pad-x);
}
.section-contact .inner {
  max-width: var(--max-w); margin: 0 auto;
  display: flex; gap: 88px; align-items: flex-start;
}
.contact-intro { flex: 1; min-width: 0; max-width: 420px; }
.contact-channels { list-style: none; margin-top: 40px; }
.contact-channels li {
  display: flex; flex-direction: column; gap: 4px;
  padding: 18px 0; border-top: 1px solid var(--stone);
}
.contact-channels li:last-child { border-bottom: 1px solid var(--stone); }
.contact-channel-label {
  font-family: Inter, sans-serif; font-size: 10px; font-weight: 500;
  letter-spacing: 0.2em; text-transform: uppercase; color: var(--bamboo);
}
.contact-channels a, .contact-channels span:not(.contact-channel-label) {
  font-family: Inter, sans-serif; font-size: 14.5px; font-weight: 400;
  color: var(--charcoal); line-height: 1.5;
}
.contact-channels a { text-decoration: none; }
.contact-channels a:hover { color: var(--green); }

.contact-form {
  flex: 1; min-width: 0; max-width: 480px;
  display: flex; flex-direction: column; gap: 24px;
}
.form-group { display: flex; flex-direction: column; gap: 8px; }
.form-label {
  font-family: Inter, sans-serif; font-size: 13px; font-weight: 500;
  color: var(--charcoal);
}
.form-optional { font-weight: 400; opacity: 0.55; }
.form-input {
  font-family: Inter, sans-serif; font-size: 15px;
  color: var(--charcoal); background: var(--rice-paper);
  border: 1px solid var(--stone); border-radius: var(--radius-md);
  padding: 13px 16px; line-height: 1.4;
  transition: border-color 0.18s;
  min-height: 44px;
}
.form-input:focus {
  outline: 2px solid var(--bamboo); outline-offset: 1px;
  border-color: var(--bamboo);
}
.form-input[aria-invalid="true"] { border-color: #b3413a; }
.form-textarea { resize: vertical; min-height: 120px; }
.form-error {
  font-family: Inter, sans-serif; font-size: 12.5px; font-weight: 400;
  color: #b3413a;
}
.form-submit {
  align-self: flex-start; border: none; margin-top: 4px;
  min-height: 44px;
}
.form-note {
  font-family: Inter, sans-serif; font-size: 12.5px; font-weight: 400;
  color: var(--charcoal); opacity: 0.62; line-height: 1.6;
  border-top: 1px solid var(--stone); padding-top: 18px;
}
.form-note a { color: var(--green); }
.form-note--flash { opacity: 1; color: var(--green); }

/* ═══════════════════════════════════════════════════
   ARTICLES — index page (articles.html)
   Card grid linking out to individual essay pages under
   src/articles/. See COMPONENTS.md → Cards → Article Card.
═══════════════════════════════════════════════════ */
.section-articles-intro {
  background: var(--rice-paper);
  padding: var(--space-2xl) var(--pad-x) var(--space-lg);
}
.section-articles-intro .inner { max-width: 780px; margin: 0 auto; }

.section-articles-index {
  background: var(--rice-paper);
  padding: 0 var(--pad-x) var(--space-2xl);
}
.section-articles-index .inner { max-width: var(--max-w); margin: 0 auto; }
.articles-cluster { margin-top: 12px; }
.articles-cluster + .articles-cluster { margin-top: 64px; }
.articles-cluster-label {
  font-family: Inter, sans-serif; font-size: 11px; font-weight: 500;
  letter-spacing: 0.15em; text-transform: uppercase;
  color: var(--bamboo); margin-bottom: 20px;
}
.articles-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 20px;
}
.article-card {
  background: var(--tatami);
  border-radius: var(--radius-lg);
  padding: 30px 26px;
  transition: background 0.2s;
}
.article-card:hover { background: var(--stone); }
.article-card-source {
  font-family: Inter, sans-serif; font-size: 10px; font-weight: 500;
  letter-spacing: 0.15em; text-transform: uppercase;
  color: var(--green); margin-bottom: 12px; line-height: 1;
}
.article-card-title {
  font-family: 'Cormorant Garamond', serif; font-weight: 400;
  font-size: 23px; color: var(--charcoal); line-height: 1.25;
  margin-bottom: 10px;
}
.article-card-teaser {
  font-family: Inter, sans-serif; font-size: 14px; font-weight: 400;
  color: var(--charcoal); opacity: 0.8; line-height: 1.65;
  margin-bottom: 16px;
}
.article-card-link {
  font-family: Inter, sans-serif; font-size: 13px; font-weight: 500;
  color: var(--green); text-decoration: none; letter-spacing: 0.02em;
  border-bottom: 1px solid var(--green); padding-bottom: 2px;
  transition: opacity 0.18s;
}
.article-card-link:hover { opacity: 0.65; }

/* ═══════════════════════════════════════════════════
   ARTICLE (individual essay page, src/articles/*.html)
═══════════════════════════════════════════════════ */
.section-article {
  background: var(--rice-paper);
  padding: var(--space-2xl) var(--pad-x);
}
.section-article .inner { max-width: 720px; margin: 0 auto; }
.section-article ol, .section-article ul {
  margin: 0 0 26px; padding-left: 22px;
}
.section-article li {
  font-family: Inter, sans-serif; font-size: 17px; font-weight: 400;
  color: var(--charcoal); line-height: 1.74; margin-bottom: 12px;
}
.section-article li:last-child { margin-bottom: 0; }
.article-subhead {
  font-family: 'Cormorant Garamond', serif; font-weight: 500;
  font-size: clamp(22px, 2.6vw, 28px); color: var(--charcoal);
  line-height: 1.3; margin: 44px 0 18px;
}

/* Inline photo within a migrated article's body — distinct from
   .page-hero--photo (banner) and .traditions-photo (fixed-crop featured
   photo): this one keeps the image's natural aspect ratio, since it's a
   supporting photo inside the reading flow, not a cropped banner. */
.article-photo {
  margin: 8px 0 34px;
  border-radius: var(--radius-lg);
  overflow: hidden;
  border: 1px solid var(--stone);
  background: var(--tatami);
}
.article-photo img { display: block; width: 100%; height: auto; }
.article-photo figcaption {
  font-family: Inter, sans-serif; font-size: 12px; font-weight: 400;
  color: var(--charcoal); opacity: 0.65; line-height: 1.5;
  padding: 14px 20px; border-top: 1px solid var(--stone);
  text-align: center;
}
/* Modifier for near-square/portrait photos (e.g. a headshot) that look
   better centered and constrained, rather than stretched full-width. */
.article-photo--narrow { max-width: 360px; margin-left: auto; margin-right: auto; }

/* ═══════════════════════════════════════════════════
   VIDEO EMBED
   Responsive 16:9 YouTube/video wrapper — replaces the legacy site's
   fixed 560×315 iframes, which didn't resize on mobile. Reusable for
   any future migrated article or event with embedded video.
   See COMPONENTS.md → Video Embed.
═══════════════════════════════════════════════════ */
.video-embed {
  position: relative;
  padding-top: 56.25%; /* 16:9 */
  margin: 0 0 28px;
  border-radius: var(--radius-lg);
  overflow: hidden;
  background: var(--charcoal);
}
.video-embed iframe {
  position: absolute; inset: 0;
  width: 100%; height: 100%; border: 0;
}

.article-back-link {
  display: inline-block; margin-top: 8px;
  font-family: Inter, sans-serif; font-size: 13px; font-weight: 500;
  color: var(--green); text-decoration: none; letter-spacing: 0.02em;
  border-bottom: 1px solid var(--green); padding-bottom: 2px;
  transition: opacity 0.18s;
}
.article-back-link:hover { opacity: 0.65; }

/* ═══════════════════════════════════════════════════
   CONTENT LIST
   Two-column "Browse All" list — used on articles-list.html and
   events-list.html once there are enough entries that a scannable
   table reads faster than scrolling a card grid. Each row is a single
   clickable link (not just a small "read more"), since a title+date
   list with dozens of rows benefits from a large hit target.
   See COMPONENTS.md → Content List.
═══════════════════════════════════════════════════ */
.section-content-list { background: var(--rice-paper); padding: var(--space-2xl) var(--pad-x); }
.section-content-list .inner { max-width: var(--max-w); margin: 0 auto; }
.content-list { border-top: 1px solid var(--stone); margin-top: 8px; }
.content-list-row {
  display: flex; gap: 40px;
  padding: 26px 0;
  border-bottom: 1px solid var(--stone);
  text-decoration: none;
  transition: opacity 0.18s;
}
.content-list-row:hover { opacity: 0.7; }
.content-list-meta { flex: 0 0 260px; }
.content-list-title {
  font-family: 'Cormorant Garamond', serif; font-weight: 500;
  font-size: 20px; color: var(--charcoal); line-height: 1.3; margin-bottom: 8px;
}
.content-list-date {
  font-family: Inter, sans-serif; font-size: 10.5px; font-weight: 500;
  letter-spacing: 0.14em; text-transform: uppercase; color: var(--bamboo);
}
.content-list-desc {
  flex: 1; min-width: 0;
  font-family: Inter, sans-serif; font-size: 14.5px; font-weight: 400;
  color: var(--charcoal); opacity: 0.8; line-height: 1.65;
}

/* Pagination — Prev/Next controls under a paginated Content List.
   Rendered by script/pagination.js; see COMPONENTS.md → Content List. */
.pagination {
  display: flex; align-items: center; justify-content: center; gap: 28px;
  margin-top: var(--space-md);
}
.pagination-btn {
  font-family: Inter, sans-serif; font-size: 13px; font-weight: 500;
  color: var(--green); text-decoration: none; letter-spacing: 0.02em;
  border-bottom: 1px solid var(--green); padding-bottom: 2px;
  transition: opacity 0.18s;
}
.pagination-btn:hover { opacity: 0.65; }
.pagination-btn[aria-disabled="true"] {
  color: var(--stone); border-bottom-color: var(--stone);
  pointer-events: none;
}
.pagination-status {
  font-family: Inter, sans-serif; font-size: 10.5px; font-weight: 500;
  letter-spacing: 0.14em; text-transform: uppercase; color: var(--bamboo);
}

/* ═══════════════════════════════════════════════════
   RESPONSIVE
═══════════════════════════════════════════════════ */
@media (max-width: 900px) {
  .location-grid { grid-template-columns: 1fr; gap: 40px; }
  .section-contact .inner { flex-direction: column; gap: 56px; }
  .contact-intro, .contact-form { max-width: none; }
}

@media (max-width: 640px) {
  .schedule-grid { grid-template-columns: 1fr; }
  .footer-top { flex-direction: column; gap: 40px; }

  .page-hero { padding: calc(76px + var(--space-lg)) var(--pad-x) var(--space-lg); }
  .page-hero--photo { min-height: 320px; padding: 76px var(--pad-x) var(--space-lg); }
  .section-first-class, .section-location, .section-contact, .section-seminars, .section-flyer,
  .section-traditions, .section-story, .section-instructors, .section-lineage, .section-affiliation,
  .section-article, .section-past-events {
    padding: var(--space-xl) var(--pad-x);
  }
  .section-articles-intro { padding: var(--space-xl) var(--pad-x) var(--space-md); }
  .section-articles-index { padding: 0 var(--pad-x) var(--space-xl); }
  .section-content-list { padding: var(--space-xl) var(--pad-x); }
  .content-list-row { flex-direction: column; gap: 10px; }
  .content-list-meta { flex-basis: auto; }
  .pagination { gap: 16px; }
  .pagination-status { text-align: center; }
}
