/* ============================================================================
   Monterey Skates — site styles.
   Derived from DESIGN.md v1.0. When a value or rule seems missing here, add it
   to DESIGN.md first and only then to this stylesheet.
   ============================================================================ */

/* ---- 1. Reset ----------------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body { margin: 0; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
img, svg, video { display: block; max-width: 100%; height: auto; }
video { object-fit: cover; }
button { font: inherit; color: inherit; background: none; border: 0; padding: 0; cursor: pointer; }
a { color: inherit; }
ul { margin: 0; padding: 0; list-style: none; }
p { margin: 0 0 1em 0; }
p:last-child { margin-bottom: 0; }

/* ---- 2. Design tokens --------------------------------------------------- */
:root {
  /* Palette */
  --paper: #f6f5f2;
  --paper-card: #ffffff;
  --paper-border: #e2ddd2;
  --cream: #fbfaf6;

  --navy: #003e6d;
  --navy-deep: #075791;
  --navy-darker: #003e6d;

  --cocoa: #422c18;
  --slate: #5f5750;

  --orange: #dc8637;
  --orange-deep: #b96e28;
  --orange-darker: #a75100;

  --green: #92c83e;
  --green-deep: #719f32;
  --green-darker: #527923;
  --green-darkest: #34540e;

  --danger: #c4392b;
  --success: #527923;
  --focus-ring: rgba(0, 110, 181, 0.5);

  /* Radii */
  --radius-xs: 4px;
  --radius-sm: 8px;
  --radius-md: 14px;
  --radius-lg: 22px;
  --radius-xl: 32px;
  --radius-full: 999px;

  /* Spacing */
  --space-xs: 4px;
  --space-sm: 8px;
  --space-md: 16px;
  --space-lg: 24px;
  --space-xl: 40px;
  --space-2xl: 64px;
  --space-3xl: 96px;

  --band-pad: clamp(80px, 6vw + 40px, 120px);
  --band-pad-tight: clamp(60px, 4vw + 24px, 88px);
  /* Adjacent paper bands don't need the full band-pad on both sides — the
     paper→paper join reads as one section otherwise. 50px each side ≈ 100px
     total, distinct but not shouty. */
  --band-pad-join: 50px;

  /* Layout */
  --container: 1160px;
  --container-narrow: 720px;
  --gutter: clamp(20px, 4vw, 32px);

  /* Type */
  --font-display: 'Fraunces', Georgia, 'Iowan Old Style', 'Times New Roman', serif;
  --font-body:    'Lora',     Georgia, 'Iowan Old Style', 'Times New Roman', serif;
  --font-ui:      'Lato',     -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;

  /* Elevation */
  --shadow-card:      0 8px 24px rgba(0, 62, 109, 0.10);
  --shadow-card-lg:   0 14px 40px rgba(0, 62, 109, 0.16);
  --shadow-band-in:   inset 0  50px 60px -30px rgba(0, 0, 0, 0.45),
                      inset 0 -50px 60px -30px rgba(0, 0, 0, 0.45);

  /* Motion */
  --tx-quick: 150ms cubic-bezier(0.4, 0, 0.2, 1);
  --tx-panel: 250ms cubic-bezier(0.4, 0, 0.2, 1);
}

/* ---- 3. Base typography ------------------------------------------------- */
html {
  font-family: var(--font-body);
  font-size: 17px;
  line-height: 1.65;
  color: var(--navy);
  background: var(--paper);
  scroll-behavior: smooth;
}

body {
  font-family: var(--font-body);
  font-weight: 400;
  background: var(--paper);
  color: var(--navy);
}

h1, h2, h3, h4 {
  font-family: var(--font-display);
  font-weight: 900;
  text-wrap: balance;
  margin: 0 0 0.5em 0;
  color: inherit;
}

h1 {
  font-size: clamp(2.5rem, 5vw + 0.5rem, 3.8rem);
  line-height: 1.05;
  letter-spacing: -0.025em;
  font-variation-settings: 'opsz' 144, 'SOFT' 40;
}
h2 {
  font-size: clamp(1.75rem, 3vw + 0.5rem, 2.5rem);
  line-height: 1.1;
  letter-spacing: -0.02em;
  font-variation-settings: 'opsz' 96, 'SOFT' 40;
}
h3 {
  font-size: 1.6rem;
  line-height: 1.2;
  letter-spacing: -0.015em;
  font-variation-settings: 'opsz' 48, 'SOFT' 35;
}
h4 {
  font-size: 1.2rem;
  line-height: 1.3;
  letter-spacing: -0.01em;
  font-variation-settings: 'opsz' 24, 'SOFT' 30;
}

p { max-width: 65ch; }

.lead {
  font-family: var(--font-body);
  font-size: 1.25rem;
  line-height: 1.55;
  max-width: 60ch;
}

.small { font-size: 0.9rem; line-height: 1.5; }

.eyebrow {
  font-family: var(--font-ui);
  font-weight: 700;
  font-size: 0.75rem;
  line-height: 1;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: currentColor;
  opacity: 0.95;
  margin: 0 0 var(--space-md) 0;
  display: inline-block;
  padding-bottom: 6px;
  border-bottom: 2px solid currentColor;
}

.text-center { text-align: center; }
.text-center p, p.text-center { margin-left: auto; margin-right: auto; max-width: none; }

/* ---- 4. Utilities ------------------------------------------------------- */
.container {
  max-width: var(--container);
  margin: 0 auto;
  padding: 0 var(--gutter);
}
.container--narrow {
  max-width: var(--container-narrow);
  margin: 0 auto;
  padding: 0 var(--gutter);
}

.skip-link {
  position: absolute;
  left: -9999px;
  top: 0;
  padding: 12px 16px;
  background: var(--navy);
  color: #fff;
  z-index: 999;
  font-family: var(--font-ui);
  font-weight: 700;
}
.skip-link:focus { left: 8px; top: 8px; }

/* ---- 5. Tier 1 — Tippy top --------------------------------------------- */
.tippy-top {
  background: var(--navy);
  color: #ffffff;
  height: 40px;
  display: flex;
  align-items: center;
}
.tippy-top__inner {
  max-width: var(--container);
  margin: 0 auto;
  padding: 0 var(--gutter);
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: flex-start;
}
.tippy-top__nav {
  font-family: var(--font-ui);
  font-weight: 700;
  font-size: 1rem;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  display: flex;
  align-items: center;
  gap: 12px;
}
.tippy-top__nav a {
  color: #ffffff;
  text-decoration: none;
  transition: color var(--tx-quick);
}
.tippy-top__nav a:hover { color: var(--orange); }
.tippy-top__dot { opacity: 0.5; }

/* ---- 6. Tier 2 — Site header ------------------------------------------- */
.site-header {
  background: var(--paper);
  padding: var(--space-lg) 0;
  border-bottom: 1px solid var(--paper-border);
}
.site-header__inner {
  max-width: var(--container);
  margin: 0 auto;
  padding: 0 var(--gutter);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-2xl);
}
.brand {
  display: inline-block;
  line-height: 0;
  flex-shrink: 0;
}
.brand img {
  height: 120px;
  width: auto;
}
@media (min-width: 900px) {
  .brand img { height: 160px; }
}
@media (min-width: 1160px) {
  .brand img { height: 180px; }
}

.site-header__right {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: var(--space-lg);
}
@media (max-width: 899px) {
  .site-header__right { display: none; }
}

.quicklinks {
  display: flex;
  align-items: center;
  gap: var(--space-xl);
  font-family: var(--font-ui);
  font-weight: 700;
  font-size: 1rem;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}
.quicklinks a {
  color: var(--navy);
  text-decoration: none;
  transition: color var(--tx-quick);
}
.quicklinks a:hover { color: var(--orange); }

/* Social icons */
.social {
  display: flex;
  align-items: center;
  gap: 10px;
}
.social__link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  border-radius: var(--radius-full);
  background: rgba(0, 62, 109, 0.08);
  color: var(--navy);
  text-decoration: none;
  transition: background var(--tx-quick), color var(--tx-quick), transform var(--tx-quick);
}
.social__link:hover {
  background: var(--navy);
  color: #ffd764;
  transform: translateY(-1px);
}

/* ---- 7. Tier 3 — Main nav (orange bar) --------------------------------- */
.mainnav {
  background: var(--orange);
  color: #ffffff;
  border-top: 1px solid rgba(255, 255, 255, 0.2);
  border-bottom: 1px solid rgba(0, 0, 0, 0.1);
  position: sticky;
  top: 0;
  z-index: 20;
  box-shadow: 0 6px 18px rgba(0, 0, 0, 0.12);
}
.mainnav__inner {
  max-width: var(--container);
  margin: 0 auto;
  padding: 0 var(--gutter);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-md);
  min-height: 56px;
}
.mainnav__list {
  display: flex;
  align-items: center;
  gap: 0;
  overflow-x: auto;
  scrollbar-width: none;
}
.mainnav__list::-webkit-scrollbar { display: none; }

.mainnav__link {
  display: inline-flex;
  align-items: center;
  padding: 18px 22px;
  font-family: var(--font-ui);
  font-weight: 700;
  font-size: 0.95rem;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: #ffffff;
  text-decoration: none;
  white-space: nowrap;
  transition: background var(--tx-quick), color var(--tx-quick);
}
.mainnav__link:hover { background: rgba(255, 255, 255, 0.15); }
.mainnav__link.is-active {
  background: #ffffff;
  color: var(--orange-darker);
}

.mainnav__search {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  border-radius: var(--radius-full);
  background: rgba(255, 255, 255, 0.15);
  color: #ffffff;
  transition: background var(--tx-quick), transform var(--tx-quick);
  flex-shrink: 0;
}
.mainnav__search:hover { background: rgba(255, 255, 255, 0.3); }

/* Mobile toggle */
.nav-toggle {
  display: none;
  align-items: center;
  gap: 10px;
  padding: 14px 18px;
  font-family: var(--font-ui);
  font-weight: 700;
  font-size: 0.9rem;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: #ffffff;
  border-radius: var(--radius-full);
  background: rgba(255, 255, 255, 0.15);
}
.nav-toggle__bars {
  display: inline-block;
  width: 20px;
  height: 2px;
  background: currentColor;
  position: relative;
}
.nav-toggle__bars::before,
.nav-toggle__bars::after {
  content: '';
  position: absolute;
  left: 0;
  right: 0;
  height: 2px;
  background: currentColor;
}
.nav-toggle__bars::before { top: -6px; }
.nav-toggle__bars::after  { top:  6px; }

@media (max-width: 899px) {
  .nav-toggle { display: inline-flex; }
  .mainnav__list {
    display: none;
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    background: var(--orange);
    flex-direction: column;
    padding: var(--space-sm) 0;
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2);
  }
  .mainnav__list.is-open { display: flex; }
  .mainnav__link {
    width: 100%;
    padding: 16px var(--gutter);
    border-top: 1px solid rgba(255, 255, 255, 0.15);
  }
  .mainnav { position: relative; }
}

/* ---- 8. Buttons -------------------------------------------------------- */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding: 14px 28px;
  font-family: var(--font-ui);
  font-weight: 700;
  font-size: 0.95rem;
  line-height: 1;
  letter-spacing: 0.02em;
  text-decoration: none;
  border-radius: var(--radius-full);
  transition: background var(--tx-quick), color var(--tx-quick), transform var(--tx-quick), box-shadow var(--tx-quick);
  cursor: pointer;
  border: 2px solid transparent;
  white-space: nowrap;
}
.btn:hover { transform: translateY(-1px); }
.btn:focus-visible {
  outline: 3px solid var(--focus-ring);
  outline-offset: 3px;
}
.btn--lg { padding: 18px 36px; font-size: 1.05rem; }

.btn--primary {
  background: var(--navy);
  color: #ffffff;
}
.btn--primary:hover { background: var(--navy-deep); }

.btn--secondary {
  background: transparent;
  color: var(--navy);
  border-color: var(--navy);
}
.btn--secondary:hover { background: var(--navy); color: #ffffff; }

/* Buttons on colored bands invert to point toward the accent. */
.band--orange .btn--primary,
.band--orange-solid .btn--primary {
  background: var(--orange-darker);
  color: #ffffff;
}
.band--orange .btn--primary:hover,
.band--orange-solid .btn--primary:hover { background: #872400; }

.band--orange .btn--secondary,
.band--orange-solid .btn--secondary {
  background: #ffffff;
  color: var(--orange-darker);
  border-color: #ffffff;
}
.band--orange .btn--secondary:hover,
.band--orange-solid .btn--secondary:hover { background: transparent; color: #ffffff; border-color: #ffffff; }

.band--navy .btn--primary {
  background: var(--orange);
  color: #ffffff;
}
.band--navy .btn--primary:hover { background: var(--orange-deep); }

.band--navy .btn--secondary {
  background: transparent;
  color: #ffffff;
  border-color: #ffffff;
}
.band--navy .btn--secondary:hover { background: #ffffff; color: var(--navy); }

.band--green .btn--primary {
  background: var(--green-darkest);
  color: #ffffff;
}
.band--green .btn--primary:hover { background: var(--green-darker); }
.band--green .btn--secondary {
  background: transparent;
  color: #ffffff;
  border-color: #ffffff;
}
.band--green .btn--secondary:hover { background: #ffffff; color: var(--green-darker); }

/* ---- 9. Bands ---------------------------------------------------------- */
.band {
  position: relative;
  overflow: hidden;
  padding: var(--band-pad) 0;
  isolation: isolate;
}

.band--paper {
  background: var(--paper);
  color: var(--navy);
}
/* Tighten the join between two adjacent paper bands (about 100px total gap
   instead of the ~240px you get with full band-pad on both sides). Only
   applies when both neighbors are paper — a paper→colored transition keeps
   the full pad so the color break feels intentional. */
.band--paper + .band--paper { padding-top: var(--band-pad-join); }
.band--paper:has(+ .band--paper) { padding-bottom: var(--band-pad-join); }

.band--colored,
.band--orange,
.band--navy,
.band--green {
  color: #ffffff;
}
.band--colored h1, .band--colored h2, .band--colored h3, .band--colored h4,
.band--orange h1,  .band--orange h2,  .band--orange h3,  .band--orange h4,
.band--navy h1,    .band--navy h2,    .band--navy h3,    .band--navy h4,
.band--green h1,   .band--green h2,   .band--green h3,   .band--green h4 { color: #ffffff; }

/* Photo layer */
.band__bg {
  position: absolute;
  inset: 0;
  z-index: -2;
  overflow: hidden;
}
.band__photo {
  width: 100%;
  height: 100%;
  object-fit: cover;
  position: absolute;
  inset: 0;
}
.band__photo--orange { filter: url(#duotone-orange); }
.band__photo--navy   { filter: url(#duotone-navy); }
.band__photo--green  { filter: url(#duotone-green); }

/* Base color fallback if photo is missing / while it loads */
.band--orange .band__bg { background: var(--orange); }
.band--navy   .band__bg { background: var(--navy); }
.band--green  .band__bg { background: var(--green-darker); }

/* Scrim — hoists text contrast over bright duotones */
.band__scrim {
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg,
    rgba(0, 0, 0, 0.10) 0%,
    rgba(0, 0, 0, 0.20) 40%,
    rgba(0, 0, 0, 0.35) 100%);
  z-index: -1;
}

/* Inner shadow — top + bottom fade give the photo weight, separate it from paper */
.band--colored::before,
.band--orange::before,
.band--navy::before,
.band--green::before {
  content: '';
  position: absolute;
  inset: 0;
  pointer-events: none;
  box-shadow: var(--shadow-band-in);
  z-index: 1;
}

/* Tight band variant — hero and closing CTA */
.band--tight { padding: var(--band-pad-tight) 0; }

/* ---- 10. Light beams (gobos) ------------------------------------------- */
.gobos {
  position: absolute;
  inset: 0;
  overflow: hidden;
  pointer-events: none;
  z-index: 0;
}
.gobo {
  position: absolute;
  top: -20%;
  bottom: -20%;
  transform-origin: center top;
  will-change: transform;
  filter: blur(14px);
}

/* Bright beams (screen) */
.gobo--warm-thin {
  width: 45px;
  left: 15%;
  background: linear-gradient(180deg, rgba(255, 210, 130, 0.7) 0%, rgba(255, 200, 120, 0) 100%);
  mix-blend-mode: screen;
  opacity: 0.525;
  transform: rotate(20deg);
  animation: gobo-sweep-a 14s ease-in-out infinite alternate;
}
.gobo--warm-thick {
  width: 95px;
  left: 40%;
  background: linear-gradient(180deg, rgba(255, 195, 110, 0.55) 0%, rgba(255, 180, 90, 0) 100%);
  mix-blend-mode: screen;
  opacity: 0.525;
  transform: rotate(-6deg);
  animation: gobo-pulse-a 18s ease-in-out infinite alternate;
}
.gobo--cool-thin {
  width: 50px;
  left: 68%;
  background: linear-gradient(180deg, rgba(180, 220, 255, 0.65) 0%, rgba(180, 220, 255, 0) 100%);
  mix-blend-mode: screen;
  opacity: 0.525;
  transform: rotate(-22deg);
  animation: gobo-sweep-b 11s ease-in-out infinite alternate;
}
.gobo--cool-thick {
  width: 100px;
  left: 55%;
  background: linear-gradient(180deg, rgba(160, 210, 255, 0.5) 0%, rgba(160, 210, 255, 0) 100%);
  mix-blend-mode: screen;
  opacity: 0.525;
  transform: rotate(6deg);
  animation: gobo-pulse-b 16s ease-in-out infinite alternate;
}
.gobo--white-thin {
  width: 40px;
  left: 25%;
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%);
  mix-blend-mode: screen;
  opacity: 0.525;
  transform: rotate(4deg);
  animation: gobo-sweep-c 9s ease-in-out infinite alternate;
}
.gobo--white-medium {
  width: 70px;
  left: 78%;
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.55) 0%, rgba(255, 255, 255, 0) 100%);
  mix-blend-mode: screen;
  opacity: 0.525;
  transform: rotate(-14deg);
  animation: gobo-sweep-d 13s ease-in-out infinite alternate;
}

/* Dark beams (multiply) */
.gobo--shadow-narrow {
  width: 55px;
  left: 50%;
  background: linear-gradient(180deg, rgba(0, 20, 40, 0.55) 0%, rgba(0, 20, 40, 0) 100%);
  mix-blend-mode: multiply;
  opacity: 0.41;
  transform: rotate(-16deg);
  animation: gobo-sweep-e 15s ease-in-out infinite alternate;
}
.gobo--shadow-wide {
  width: 85px;
  left: 8%;
  background: linear-gradient(180deg, rgba(0, 20, 40, 0.5) 0%, rgba(0, 20, 40, 0) 100%);
  mix-blend-mode: multiply;
  opacity: 0.41;
  transform: rotate(10deg);
  animation: gobo-pulse-c 17s ease-in-out infinite alternate;
}

/* Stagger entry so beams don't reset in unison */
.gobo--warm-thin      { animation-delay: -3s; }
.gobo--warm-thick     { animation-delay: -7s; }
.gobo--cool-thin      { animation-delay: -2s; }
.gobo--cool-thick     { animation-delay: -5s; }
.gobo--white-thin     { animation-delay: -1s; }
.gobo--white-medium   { animation-delay: -4s; }
.gobo--shadow-narrow  { animation-delay: -6s; }
.gobo--shadow-wide    { animation-delay: -8s; }

@keyframes gobo-sweep-a { from { transform: rotate(12deg); } to { transform: rotate(28deg); } }
@keyframes gobo-sweep-b { from { transform: rotate(-14deg); } to { transform: rotate(-30deg); } }
@keyframes gobo-sweep-c { from { transform: rotate(-4deg); } to { transform: rotate(12deg); } }
@keyframes gobo-sweep-d { from { transform: rotate(-6deg); } to { transform: rotate(-22deg); } }
@keyframes gobo-sweep-e { from { transform: rotate(-8deg); } to { transform: rotate(-24deg); } }
@keyframes gobo-pulse-a { from { transform: rotate(-6deg) scaleX(1); } to { transform: rotate(-6deg) scaleX(1.28); } }
@keyframes gobo-pulse-b { from { transform: rotate(6deg) scaleX(1); }  to { transform: rotate(6deg) scaleX(1.22); } }
@keyframes gobo-pulse-c { from { transform: rotate(10deg) scaleX(1); } to { transform: rotate(10deg) scaleX(1.18); } }

@media (prefers-reduced-motion: reduce) {
  .gobo { animation: none !important; }
}

/* ---- 11. Cards --------------------------------------------------------- */
.card {
  background: var(--paper-card);
  color: var(--navy);
  border: 1px solid var(--paper-border);
  border-radius: var(--radius-md);
  padding: var(--space-lg);
}

/* On colored bands, cards go translucent white with a soft glass blur. */
.band--colored .card,
.band--orange .card,
.band--navy .card,
.band--green .card {
  background: rgba(255, 255, 255, 0.86);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  border: 1px solid rgba(255, 255, 255, 0.6);
  box-shadow: var(--shadow-card);
  color: var(--navy);
}
.band--colored .card h2, .band--colored .card h3, .band--colored .card h4,
.band--orange .card h2,  .band--orange .card h3,  .band--orange .card h4,
.band--navy .card h2,    .band--navy .card h3,    .band--navy .card h4,
.band--green .card h2,   .band--green .card h3,   .band--green .card h4 { color: var(--navy); }

/* Colored card variants — used on paper sections for balance.
   Doubled selector beats base .card no matter the source order. */
.card.card--navy {
  background: var(--navy);
  color: #ffffff;
  border-color: transparent;
}
.card.card--orange {
  background: var(--orange-darker);
  color: #ffffff;
  border-color: transparent;
}
.card.card--green {
  background: var(--green-darker);
  color: #ffffff;
  border-color: transparent;
}
.card.card--navy h2,   .card.card--navy h3,   .card.card--navy h4,
.card.card--orange h2, .card.card--orange h3, .card.card--orange h4,
.card.card--green h2,  .card.card--green h3,  .card.card--green h4 { color: #ffffff; }

/* Grids
   grid--2 and grid--3 use EXPLICIT column counts at each breakpoint so item
   counts that don't divide evenly (e.g. 4 in a --2 or 6 in a --3) still lay
   out as 2×2 or 3+3 rather than the awkward 3+1 / 4+2 that auto-fit gives at
   1096px container width. grid--4 stays auto-fit for hero stat rows. */
.grid { display: grid; gap: var(--space-lg); }
.grid--2 { grid-template-columns: 1fr; }
@media (min-width: 640px) {
  .grid--2 { grid-template-columns: repeat(2, 1fr); }
}
.grid--3 { grid-template-columns: 1fr; }
@media (min-width: 640px) {
  .grid--3 { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 960px) {
  .grid--3 { grid-template-columns: repeat(3, 1fr); }
}
.grid--4 { grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); }

/* Services grid: 4 in a row on desktop, 2 on tablet, 1 on mobile. Tighter than
   .grid--4's auto-fit because we want an explicit 4-across when there's room. */
.grid--services { grid-template-columns: 1fr; gap: var(--space-md); }
@media (min-width: 640px) {
  .grid--services { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 960px) {
  .grid--services { grid-template-columns: repeat(4, 1fr); }
}
/* Services cards: tighter padding + smaller title so 4 fit comfortably. */
.grid--services .card { padding: var(--space-lg) var(--space-md); }
.grid--services .card h3 { font-size: 1.25rem; }

/* Stat card — big number, small caption */
.stat { text-align: center; padding: var(--space-xl) var(--space-lg); }
.stat__num {
  display: block;
  font-family: var(--font-display);
  font-weight: 900;
  font-size: clamp(2.5rem, 4vw + 0.5rem, 3.5rem);
  line-height: 1;
  letter-spacing: -0.03em;
  font-variation-settings: 'opsz' 96, 'SOFT' 40;
  margin-bottom: var(--space-sm);
}
.stat__label {
  font-family: var(--font-ui);
  font-weight: 700;
  font-size: 0.85rem;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  opacity: 0.85;
}

/* Trust markers row */
.trust-row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: var(--space-md);
  margin-top: var(--space-xl);
}
.trust {
  display: flex;
  align-items: flex-start;
  gap: var(--space-md);
  padding: var(--space-md) var(--space-lg);
  background: rgba(255, 255, 255, 0.95);
  border-radius: var(--radius-md);
  color: var(--navy);
  box-shadow: var(--shadow-card);
}
.trust__icon { font-size: 1.5rem; line-height: 1; flex-shrink: 0; }
.trust__label {
  font-family: var(--font-ui);
  font-weight: 700;
  font-size: 0.9rem;
  line-height: 1.3;
}
.trust__note {
  font-family: var(--font-body);
  font-size: 0.8rem;
  color: var(--slate);
  display: block;
  margin-top: 4px;
}

/* Service block on paper */
.service {
  display: flex;
  flex-direction: column;
  gap: var(--space-md);
  padding: var(--space-xl) var(--space-lg);
  background: var(--paper-card);
  border: 1px solid var(--paper-border);
  border-radius: var(--radius-md);
  transition: transform var(--tx-quick), box-shadow var(--tx-quick), border-color var(--tx-quick);
}
.service:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-card);
  border-color: var(--orange);
}
.service__icon { font-size: 2rem; line-height: 1; }
.service__title { margin: 0; }
.service__link {
  font-family: var(--font-ui);
  font-weight: 700;
  font-size: 0.9rem;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--orange-darker);
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-top: auto;
}
.service__link:hover { color: var(--navy); }

/* How-it-works step block on paper */
.step {
  padding: var(--space-xl) var(--space-lg);
  background: var(--paper-card);
  border: 1px solid var(--paper-border);
  border-radius: var(--radius-md);
  position: relative;
}
.step__num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  border-radius: var(--radius-full);
  background: var(--orange);
  color: #ffffff;
  font-family: var(--font-display);
  font-weight: 900;
  font-size: 1.4rem;
  line-height: 1;
  margin-bottom: var(--space-md);
  font-variation-settings: 'opsz' 24, 'SOFT' 30;
}
.step:nth-child(2) .step__num { background: var(--navy); }
.step:nth-child(3) .step__num { background: var(--green-darker); }
.step:nth-child(4) .step__num { background: var(--orange-darker); }

/* ---- 12. Footer -------------------------------------------------------- */
.site-footer {
  background: var(--navy);
  color: #d8e0e8;
  padding: var(--space-3xl) 0 var(--space-xl);
  position: relative;
}
.site-footer__inner {
  max-width: var(--container);
  margin: 0 auto;
  padding: 0 var(--gutter);
}
.site-footer__grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: var(--space-xl);
  margin-bottom: var(--space-2xl);
}
.site-footer h2 {
  font-family: var(--font-ui);
  font-weight: 700;
  font-size: 0.75rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: #ffd764;
  margin-bottom: var(--space-md);
}
.site-footer ul li { margin-bottom: 8px; }
.site-footer a {
  color: #d8e0e8;
  text-decoration: none;
  transition: color var(--tx-quick);
}
.site-footer a:hover { color: #ffd764; }

.site-footer__brand img {
  height: 100px;
  width: auto;
  /* Stacked white drop-shadows create a soft white halo around the logo so
     its native colors read against the navy footer. Layered rather than a
     single big shadow so the outline stays crisp. */
  filter: drop-shadow(0 0 1px #ffffff)
          drop-shadow(0 0 2px #ffffff)
          drop-shadow(0 0 4px rgba(255, 255, 255, 0.6));
  margin-bottom: var(--space-md);
}
.site-footer__blurb {
  font-size: 0.95rem;
  color: #a9b7c4;
  margin-bottom: var(--space-md);
}

.social--footer .social__link {
  background: rgba(255, 255, 255, 0.1);
  color: #ffffff;
}
.social--footer .social__link:hover {
  background: #ffd764;
  color: var(--navy);
}

.site-footer__legal {
  border-top: 1px solid rgba(255, 255, 255, 0.12);
  padding-top: var(--space-lg);
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-md);
  font-size: 0.85rem;
  color: #8a99a8;
}
.site-footer__legal nav a { margin-left: var(--space-md); }

/* ---- 12b. Subpage hero + prose (About, Legal, single-topic pages) ----- */

/* A shorter colored hero for subpages — title + optional subtitle, no CTA row.
   Combine with .band--orange / .band--navy / .band--green as usual. */
.band--hero-sub { padding: var(--band-pad-tight) 0; }
.band--hero-sub h1 {
  font-size: clamp(2.2rem, 4vw + 0.5rem, 3.2rem);
  margin-bottom: var(--space-sm);
}
.band--hero-sub .hero-sub__meta {
  font-family: var(--font-ui);
  font-weight: 700;
  font-size: 0.85rem;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  opacity: 0.85;
  margin-top: var(--space-lg);
}

/* Long-form prose — legal pages, about narrative, FAQ answers. */
.prose { max-width: 68ch; margin: 0 auto; }
.prose > * + * { margin-top: 1em; }
.prose h2 {
  margin-top: 2em;
  padding-top: 1em;
  border-top: 1px solid var(--paper-border);
}
.prose h2:first-of-type {
  border-top: 0;
  padding-top: 0;
  margin-top: 1em;
}
.prose h3 { margin-top: 1.6em; }
.prose ul, .prose ol {
  padding-left: 1.5em;
  list-style: disc;
}
.prose ol { list-style: decimal; }
.prose li { margin-bottom: 0.4em; }
.prose li > p { margin: 0.3em 0; }
.prose strong { font-weight: 600; }
.prose a {
  color: var(--orange-darker);
  text-decoration: underline;
  text-decoration-thickness: 1.5px;
  text-underline-offset: 3px;
}
.prose a:hover { color: var(--navy); }

/* Legal pages get a slightly denser leading and a "last updated" caption. */
.legal-meta {
  font-family: var(--font-ui);
  font-weight: 700;
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--slate);
  margin-bottom: var(--space-lg);
}
.legal-meta__label { color: var(--navy); }

/* Draft banner — internal-visible marker for pages pending review. Remove the
   banner (and this class from the view) once the copy is approved. */
.draft-banner {
  background: #fff5cf;
  border-left: 4px solid #b96e28;
  padding: var(--space-md) var(--space-lg);
  border-radius: var(--radius-sm);
  margin-bottom: var(--space-xl);
  font-family: var(--font-ui);
  font-weight: 700;
  font-size: 0.85rem;
  color: var(--cocoa);
  text-transform: uppercase;
  letter-spacing: 0.08em;
}
.draft-banner strong { color: var(--orange-darker); }

/* Team bios: 1 col mobile/tablet, 3 col desktop. Avatar centered on top,
   name + role centered under it, bio prose left-aligned for readability. */
.team {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-2xl);
}
@media (min-width: 1000px) {
  .team {
    grid-template-columns: repeat(3, 1fr);
    gap: var(--space-xl);
  }
}
.bio {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-md);
}
.bio__avatar {
  width: 160px;
  height: 160px;
  border-radius: var(--radius-full);
  background: var(--navy);
  color: #ffffff;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-display);
  font-weight: 900;
  font-size: 3rem;
  line-height: 1;
  font-variation-settings: 'opsz' 96, 'SOFT' 40;
  overflow: hidden;
  flex-shrink: 0;
  border: 3px solid var(--paper-card);
  box-shadow: 0 6px 18px rgba(0, 62, 109, 0.14);
}
.bio__avatar--orange { background: var(--orange-darker); }
.bio__avatar--green { background: var(--green-darkest); }
.bio__avatar img { width: 100%; height: 100%; object-fit: cover; display: block; }
.bio__meta { text-align: center; }
.bio__name {
  margin: 0 0 4px 0;
  font-size: 1.35rem;
  line-height: 1.1;
}
.bio__role {
  font-family: var(--font-ui);
  font-weight: 700;
  font-size: 0.8rem;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--slate);
  display: block;
}
.bio__body {
  align-self: stretch;
  text-align: left;
  max-width: 100%;
}
.bio__body p {
  max-width: none;
  font-size: 0.95rem;
}
.bio__body p + p { margin-top: 0.75em; }

/* ---- 12c. Long-page patterns (Testimonials, FAQ) ---------------------- */

/* Anchor targets inside prose need scroll-margin so the sticky orange nav
   doesn't cover the heading when a ToC link jumps to it. */
.prose [id] { scroll-margin-top: 100px; }

/* Table of contents at the top of a long page. */
.toc {
  background: var(--cream);
  border: 1px solid var(--paper-border);
  border-radius: var(--radius-md);
  padding: var(--space-lg) var(--space-xl);
  margin: 0 0 var(--space-xl) 0;
}
.toc__label {
  font-family: var(--font-ui);
  font-weight: 700;
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--slate);
  margin-bottom: var(--space-md);
}
.toc ul {
  list-style: none;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: 8px var(--space-lg);
}
.toc li { margin: 0; }
.toc a {
  font-family: var(--font-ui);
  font-weight: 700;
  font-size: 0.95rem;
  color: var(--navy);
  text-decoration: none;
  border-bottom: 1.5px solid transparent;
  transition: color var(--tx-quick), border-color var(--tx-quick);
}
.toc a:hover { color: var(--orange-darker); border-bottom-color: var(--orange-darker); }

/* FAQ groups — one <section> per category with an anchor id. */
.faq-group + .faq-group {
  margin-top: var(--space-2xl);
  padding-top: var(--space-2xl);
  border-top: 2px solid var(--paper-border);
}
.faq-group h2 { margin-top: 0; padding-top: 0; border-top: 0; }
.faq-group h3 {
  margin-top: 1.5em;
  color: var(--navy);
  font-size: 1.25rem;
  line-height: 1.3;
}
.faq-group h3:first-of-type { margin-top: 0.8em; }

/* Pullquote — big centered attributed quote. */
.pullquote {
  max-width: 40em;
  margin: 0 auto;
  padding: var(--space-xl) var(--space-lg);
  text-align: center;
  border: 0;
}
.pullquote__mark {
  font-family: var(--font-display);
  font-weight: 900;
  font-size: 4rem;
  line-height: 0.5;
  color: var(--orange);
  display: block;
  margin-bottom: var(--space-md);
}
.pullquote__body {
  font-family: var(--font-display);
  font-weight: 900;
  font-size: clamp(1.4rem, 2vw + 0.5rem, 1.8rem);
  line-height: 1.3;
  color: inherit;
  font-style: italic;
  margin: 0 0 var(--space-lg) 0;
  font-variation-settings: 'opsz' 48, 'SOFT' 40;
}
.pullquote__attr {
  font-family: var(--font-ui);
  font-weight: 700;
  font-size: 0.85rem;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  opacity: 0.85;
  display: block;
}

/* Press / media citation list — one card per outlet, wraps 2-3 across. */
.press-list {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: var(--space-md);
  margin: var(--space-lg) 0;
}
.press-list .press {
  padding: var(--space-lg);
  background: var(--paper-card);
  border: 1px solid var(--paper-border);
  border-radius: var(--radius-md);
}
.press__outlet {
  font-family: var(--font-display);
  font-weight: 900;
  font-size: 1.1rem;
  color: var(--navy);
  margin: 0 0 var(--space-sm) 0;
  font-variation-settings: 'opsz' 24, 'SOFT' 35;
}
.press__note {
  font-family: var(--font-body);
  font-size: 0.95rem;
  color: var(--cocoa);
  margin: 0;
}

/* Share your story block. */
.share-story {
  background: var(--cream);
  border: 1px solid var(--paper-border);
  border-radius: var(--radius-md);
  padding: var(--space-xl);
  margin: var(--space-xl) 0 0 0;
}
.share-story ul { list-style: none; padding: 0; margin: var(--space-md) 0 0 0; }
.share-story li { padding: 6px 0; }
.share-story a {
  font-family: var(--font-ui);
  font-weight: 700;
  color: var(--orange-darker);
  text-decoration: underline;
  text-underline-offset: 3px;
}

/* ---- 12d. Package tiers (Parties, Lessons, Corporate) ---------------- */

/* Tier cards — 3 across on desktop, stacked on mobile. Middle tier gets a
   subtle highlight to nudge the eye toward the recommended option. */
.tiers {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-lg);
  margin: var(--space-xl) 0 0 0;
}
@media (min-width: 720px) {
  .tiers { grid-template-columns: repeat(3, 1fr); }
}
.tier {
  background: var(--paper-card);
  border: 1px solid var(--paper-border);
  border-radius: var(--radius-md);
  padding: var(--space-xl) var(--space-lg);
  display: flex;
  flex-direction: column;
  position: relative;
}
.tier--recommended {
  border-color: var(--orange);
  border-width: 2px;
  box-shadow: var(--shadow-card);
  transform: translateY(-4px);
}
.tier--recommended::before {
  content: 'Most popular';
  position: absolute;
  top: -12px;
  left: 50%;
  transform: translateX(-50%);
  background: var(--orange-darker);
  color: #ffffff;
  font-family: var(--font-ui);
  font-weight: 700;
  font-size: 0.7rem;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  padding: 5px 14px;
  border-radius: var(--radius-full);
  white-space: nowrap;
}
.tier__name {
  font-family: var(--font-display);
  font-weight: 900;
  font-size: 1.4rem;
  color: var(--navy);
  margin: 0 0 var(--space-sm) 0;
  font-variation-settings: 'opsz' 48, 'SOFT' 35;
}
.tier__meta {
  font-family: var(--font-ui);
  font-weight: 700;
  font-size: 0.8rem;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--slate);
  margin-bottom: var(--space-lg);
  padding-bottom: var(--space-md);
  border-bottom: 1px solid var(--paper-border);
}
.tier__list {
  list-style: none;
  padding: 0;
  margin: 0 0 var(--space-lg) 0;
  flex-grow: 1;
}
.tier__list li {
  padding: 6px 0 6px 22px;
  position: relative;
  font-size: 0.95rem;
}
.tier__list li::before {
  content: '';
  position: absolute;
  left: 0;
  top: 12px;
  width: 12px;
  height: 6px;
  border-left: 2px solid var(--orange-darker);
  border-bottom: 2px solid var(--orange-darker);
  transform: rotate(-45deg);
}
.tier__cta {
  margin-top: auto;
  text-align: center;
}

/* Applications grid — the "who this works for" list used across verticals. */
.apps {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: var(--space-md);
  margin: var(--space-lg) 0 0 0;
}
.app {
  padding: var(--space-lg);
  background: var(--paper-card);
  border: 1px solid var(--paper-border);
  border-radius: var(--radius-md);
}
.app__title {
  font-family: var(--font-display);
  font-weight: 900;
  font-size: 1.15rem;
  color: var(--navy);
  margin: 0 0 var(--space-sm) 0;
  font-variation-settings: 'opsz' 24, 'SOFT' 30;
}
.app__body {
  font-size: 0.95rem;
  margin: 0;
  color: var(--cocoa);
}

/* Size / audience grid — smaller than tiers, used for "who this is for". */
.sizes {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: var(--space-md);
  margin: var(--space-lg) 0 0 0;
}
.size {
  padding: var(--space-md) var(--space-lg);
  background: var(--cream);
  border-left: 3px solid var(--orange);
  border-radius: var(--radius-sm);
}
.size__label {
  font-family: var(--font-ui);
  font-weight: 700;
  font-size: 0.8rem;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--orange-darker);
  display: block;
  margin-bottom: 4px;
}
.size__body {
  font-family: var(--font-body);
  font-size: 0.95rem;
  color: var(--cocoa);
}

/* ---- 12e. Forms (contact, newsletter, book) --------------------------- */

/* Success / error banners at the top of a form page after a POST-Redirect-GET. */
.alert {
  display: flex;
  align-items: flex-start;
  gap: var(--space-md);
  padding: var(--space-md) var(--space-lg);
  border-radius: var(--radius-md);
  border-left: 4px solid transparent;
  margin: 0 0 var(--space-xl) 0;
  font-family: var(--font-body);
  font-size: 1rem;
}
.alert__label {
  font-family: var(--font-ui);
  font-weight: 700;
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  flex-shrink: 0;
  padding-top: 2px;
}
.alert p { margin: 0; }
.alert--success {
  background: #eaf4d9;
  border-color: var(--green-darker);
  color: var(--cocoa);
}
.alert--success .alert__label { color: var(--green-darker); }
.alert--error {
  background: #fbe4e0;
  border-color: var(--danger);
  color: var(--cocoa);
}
.alert--error .alert__label { color: var(--danger); }

/* Form structure */
.form {
  max-width: 620px;
  margin: 0 auto;
}
.form__field {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin-bottom: var(--space-lg);
}
.form__field--split {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-lg);
}
@media (min-width: 640px) {
  .form__field--split { grid-template-columns: 1fr 1fr; }
}
.form__label {
  font-family: var(--font-ui);
  font-weight: 700;
  font-size: 0.85rem;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--navy);
}
.form__hint {
  font-family: var(--font-body);
  font-size: 0.85rem;
  color: var(--slate);
  margin-top: -2px;
}
.form__input,
.form__textarea,
.form__select {
  font: inherit;
  color: var(--navy);
  background: var(--paper-card);
  border: 1px solid var(--paper-border);
  border-radius: var(--radius-sm);
  padding: 12px 14px;
  min-height: 48px;
  width: 100%;
  transition: border-color var(--tx-quick), box-shadow var(--tx-quick);
}
.form__textarea {
  min-height: 140px;
  resize: vertical;
  font-family: var(--font-body);
  line-height: 1.55;
}
.form__input:focus,
.form__textarea:focus,
.form__select:focus {
  outline: none;
  border-color: var(--orange);
  box-shadow: 0 0 0 3px var(--focus-ring);
}
.form__input:invalid:not(:placeholder-shown),
.form__textarea:invalid:not(:placeholder-shown) {
  border-color: var(--danger);
}
/* Honeypot — hidden from users and screen readers, present in the DOM so bots
   fill it in and give themselves away. */
.form__honeypot {
  position: absolute;
  left: -9999px;
  width: 1px;
  height: 1px;
  overflow: hidden;
}
.form__actions {
  margin-top: var(--space-lg);
  display: flex;
  gap: var(--space-md);
  align-items: center;
  flex-wrap: wrap;
}
.form__note {
  font-family: var(--font-body);
  font-size: 0.85rem;
  color: var(--slate);
  max-width: 60ch;
}

/* Contact-page split layout — form + sidebar with phone/email */
.contact-layout {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-2xl);
  align-items: start;
}
@media (min-width: 900px) {
  .contact-layout { grid-template-columns: 2fr 1fr; }
}
.contact-side {
  padding: var(--space-lg);
  background: var(--cream);
  border-radius: var(--radius-md);
  border: 1px solid var(--paper-border);
}
.contact-side h3 {
  margin: 0 0 var(--space-md) 0;
  font-size: 1.2rem;
}
.contact-side p { margin: 0 0 var(--space-md) 0; font-size: 0.95rem; }
.contact-side a {
  font-family: var(--font-ui);
  font-weight: 700;
  color: var(--orange-darker);
  text-decoration: none;
  border-bottom: 1.5px solid currentColor;
}
.contact-side a:hover { color: var(--navy); }

/* ---- 12f. Blog (list view + detail view) ------------------------------ */

.blog-list {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-2xl);
  margin: var(--space-xl) 0;
}
@media (min-width: 900px) {
  .blog-list { grid-template-columns: repeat(2, 1fr); }
}

.post-card {
  display: flex;
  flex-direction: column;
  background: var(--paper-card);
  border: 1px solid var(--paper-border);
  border-radius: var(--radius-md);
  overflow: hidden;
  transition: transform var(--tx-quick), box-shadow var(--tx-quick), border-color var(--tx-quick);
  text-decoration: none;
  color: inherit;
}
.post-card:hover {
  transform: translateY(-3px);
  box-shadow: var(--shadow-card);
  border-color: var(--orange);
}
.post-card__image {
  aspect-ratio: 16 / 9;
  overflow: hidden;
  background: var(--paper);
}
.post-card__image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.post-card__image--empty {
  aspect-ratio: 16 / 9;
  background: linear-gradient(135deg, var(--navy) 0%, var(--orange-darker) 100%);
}
.post-card__body {
  padding: var(--space-lg) var(--space-lg) var(--space-xl);
  display: flex;
  flex-direction: column;
  gap: var(--space-sm);
  flex-grow: 1;
}
.post-card__date {
  font-family: var(--font-ui);
  font-weight: 700;
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--orange-darker);
}
.post-card__title {
  font-family: var(--font-display);
  font-weight: 900;
  font-size: 1.35rem;
  line-height: 1.15;
  letter-spacing: -0.015em;
  color: var(--navy);
  margin: 0;
  font-variation-settings: 'opsz' 48, 'SOFT' 35;
  text-wrap: balance;
}
.post-card__excerpt {
  font-family: var(--font-body);
  font-size: 0.95rem;
  color: var(--cocoa);
  margin: 0;
  max-width: none;
}
.post-card__more {
  font-family: var(--font-ui);
  font-weight: 700;
  font-size: 0.85rem;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--orange-darker);
  margin-top: auto;
  padding-top: var(--space-sm);
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

/* Pager */
.pager {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-md);
  margin: var(--space-2xl) 0 0 0;
  padding-top: var(--space-lg);
  border-top: 1px solid var(--paper-border);
}
.pager__link {
  font-family: var(--font-ui);
  font-weight: 700;
  font-size: 0.9rem;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--navy);
  text-decoration: none;
  padding: 10px 16px;
  border-radius: var(--radius-full);
  border: 2px solid var(--navy);
  transition: background var(--tx-quick), color var(--tx-quick);
}
.pager__link:hover { background: var(--navy); color: #ffffff; }
.pager__link--disabled {
  color: var(--slate);
  border-color: var(--paper-border);
  pointer-events: none;
  opacity: 0.5;
}
.pager__page {
  font-family: var(--font-ui);
  font-weight: 700;
  font-size: 0.85rem;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--slate);
}

/* --- Detail view ------------------------------------------------------- */

.post-header {
  text-align: center;
  max-width: 720px;
  margin: 0 auto var(--space-xl);
}
.post-header__date {
  font-family: var(--font-ui);
  font-weight: 700;
  font-size: 0.8rem;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--orange-darker);
  margin-bottom: var(--space-md);
}
.post-header__title {
  font-size: clamp(2rem, 4vw + 0.5rem, 3rem);
  line-height: 1.05;
  letter-spacing: -0.025em;
  margin-bottom: var(--space-md);
  text-wrap: balance;
}

.post-hero {
  max-width: var(--container);
  margin: 0 auto var(--space-xl);
  border-radius: var(--radius-lg);
  overflow: hidden;
  aspect-ratio: 16 / 9;
  background: var(--paper);
}
.post-hero img { width: 100%; height: 100%; object-fit: cover; display: block; }

/* Blog body reuses .prose but wants slightly relaxed image handling */
.prose img {
  max-width: 100%;
  height: auto;
  border-radius: var(--radius-md);
  margin: var(--space-lg) 0;
}
.prose hr {
  border: 0;
  border-top: 1px solid var(--paper-border);
  margin: var(--space-xl) 0;
}
.prose blockquote {
  border-left: 3px solid var(--orange);
  padding-left: var(--space-md);
  color: var(--cocoa);
  font-style: italic;
  margin: var(--space-lg) 0;
}

/* Prev/next post navigation at the bottom of a post */
.post-nav {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-md);
  max-width: var(--container);
  margin: var(--space-2xl) auto var(--space-lg);
  padding-top: var(--space-xl);
  border-top: 1px solid var(--paper-border);
}
@media (min-width: 720px) {
  .post-nav { grid-template-columns: 1fr 1fr; }
}
.post-nav__link {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: var(--space-lg);
  background: var(--paper-card);
  border: 1px solid var(--paper-border);
  border-radius: var(--radius-md);
  text-decoration: none;
  color: inherit;
  transition: border-color var(--tx-quick), box-shadow var(--tx-quick), transform var(--tx-quick);
}
.post-nav__link:hover {
  border-color: var(--orange);
  box-shadow: var(--shadow-card);
  transform: translateY(-1px);
}
.post-nav__link--next {
  text-align: right;
  align-items: flex-end;
}
.post-nav__link--empty {
  /* Placeholder at start/end of the timeline — keeps the grid balanced without
     showing an empty card border on the missing side. */
  visibility: hidden;
  display: none;
}
@media (min-width: 720px) {
  .post-nav__link--empty { display: block; }
}
.post-nav__label {
  font-family: var(--font-ui);
  font-weight: 700;
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--orange-darker);
}
.post-nav__title {
  font-family: var(--font-display);
  font-weight: 900;
  font-size: 1.05rem;
  line-height: 1.2;
  color: var(--navy);
  font-variation-settings: 'opsz' 24, 'SOFT' 35;
  text-wrap: balance;
}

/* Return link at the bottom of a post */
.post-return {
  text-align: center;
  padding-top: var(--space-2xl);
  margin-top: var(--space-2xl);
  border-top: 1px solid var(--paper-border);
}
.post-return a {
  font-family: var(--font-ui);
  font-weight: 700;
  font-size: 0.9rem;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--orange-darker);
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
.post-return a:hover { color: var(--navy); }

/* ---- 13. Reveal animations --------------------------------------------- */
.reveal {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 700ms cubic-bezier(0.2, 0.6, 0.2, 1),
              transform 700ms cubic-bezier(0.2, 0.6, 0.2, 1);
  will-change: opacity, transform;
}
.reveal.is-in { opacity: 1; transform: none; }
.reveal[data-delay="1"] { transition-delay: 80ms; }
.reveal[data-delay="2"] { transition-delay: 160ms; }
.reveal[data-delay="3"] { transition-delay: 240ms; }
.reveal[data-delay="4"] { transition-delay: 320ms; }

@media (prefers-reduced-motion: reduce) {
  .reveal { opacity: 1; transform: none; transition: none; }
  html { scroll-behavior: auto; }
}

/* ---- 14. Focus states -------------------------------------------------- */
:focus-visible {
  outline: 3px solid var(--focus-ring);
  outline-offset: 3px;
  border-radius: var(--radius-sm);
}
