/* ============================================================
   Everborn — everbornops.com
   Design system per docs/EVERBORN_BRAND.md (LOCKED palette/tokens)
   Green + gold + white · Cinzel display / Inter UI · 1.25 scale
   Gold = signature accent only, never large fills.
   ============================================================ */

:root {
  /* Palette — LOCKED */
  --evergreen: #0F3327;
  --evergreen-deep: #0A241C;
  --green: #1E6B4A;
  --green-dark: #17553B;
  --sage: #7FA08F;
  --mist: #E6EFEA;
  --gold: #D4A62A;
  --gold-hi: #EBB93B;
  --gold-ink: #856710;   /* engraved gold for TEXT on light grounds (>=4.5:1) */
  --champagne: #E9D18C;
  --white: #FFFFFF;
  --offwhite: #F5F5F0;
  --snow: #FCFCF9;
  --stone: #DEDFD8;
  --slate: #60645A;      /* >=4.5:1 on snow, offwhite, AND mist */
  --sage-ink: #57705F;   /* readable sage for small labels on light (>=4.5:1) */
  --ink: #16211B;
  --violet: #8E6FC6;

  /* On-dark text */
  --dark-body: #C9D6CE;
  --dark-muted: #93A89C;
  --dark-line: rgba(233, 209, 140, 0.16);

  /* Type — one 1.25 ratio governs everything */
  --font-display: "Cinzel", "Times New Roman", serif;
  --font-ui: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --fs-xs: 0.8125rem;   /* 13 */
  --fs-sm: 0.875rem;    /* 14 */
  --fs-base: 1rem;      /* 16 */
  --fs-md: 1.25rem;     /* 20 */
  --fs-lg: 1.5625rem;   /* 25 */
  --fs-xl: 1.953rem;    /* 31 */
  --fs-2xl: 2.441rem;   /* 39 */
  --fs-3xl: 3.052rem;   /* 49 */

  /* Space — 4px base */
  --s-1: 4px;  --s-2: 8px;  --s-3: 12px; --s-4: 16px; --s-5: 20px;
  --s-6: 24px; --s-8: 32px; --s-10: 40px; --s-12: 48px; --s-16: 64px;
  --s-20: 80px; --s-24: 96px; --s-32: 128px;

  /* Shape + depth (one light source, above) */
  --radius-ctl: 12px;
  --radius-card: 16px;
  --sh-1: 0 1px 2px rgba(16, 54, 42, 0.25);
  --sh-2: 0 10px 30px rgba(16, 54, 42, 0.10);
  --sh-3: 0 18px 50px rgba(22, 33, 27, 0.16);

  /* Motion */
  --ease: cubic-bezier(0.2, 0.6, 0.2, 1);
  --t-fast: 120ms;
  --t-base: 180ms;
  --t-slow: 240ms;

  --measure: 62ch;
  --page-max: 1160px;
}

/* ---------- Reset ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  font-family: var(--font-ui);
  font-size: var(--fs-base);
  line-height: 1.5;
  color: var(--ink);
  background: var(--offwhite);
  font-feature-settings: "kern" 1;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
}
img, svg { max-width: 100%; height: auto; display: block; }
a { color: var(--green); text-decoration: none; }
a:hover { text-decoration: underline; text-underline-offset: 3px; }
h1, h2, h3, h4 { margin: 0 0 var(--s-4); line-height: 1.15; font-weight: 600; text-wrap: balance; }
p { margin: 0 0 var(--s-4); max-width: var(--measure); }
ul, ol { margin: 0 0 var(--s-4); padding-left: 1.25em; }
li { margin-bottom: var(--s-2); }
:focus-visible {
  /* outline, not box-shadow: component shadows (.btn-primary, .card) share the
     box-shadow property and would silently clobber a shadow-based ring. */
  outline: 2px solid var(--green);
  outline-offset: 2px;
  border-radius: 4px;
}
/* On dark grounds the green ring is invisible (~2.1:1); champagne is 9:1. */
.on-dark :focus-visible, .hero :focus-visible, .ethos-band :focus-visible,
.site-header :focus-visible, .site-footer :focus-visible {
  outline-color: var(--champagne);
}
::selection { background: var(--mist); color: var(--ink); }
.skip-link {
  position: absolute; left: -9999px; top: 0; z-index: 200;
  background: var(--evergreen); color: var(--champagne);
  padding: var(--s-3) var(--s-5); border-radius: 0 0 var(--radius-ctl) 0;
}
.skip-link:focus { left: 0; }

/* ---------- Type helpers ---------- */
.kicker {
  display: block;
  font-size: var(--fs-xs);
  font-weight: 600;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--green);
  margin-bottom: var(--s-4);
}
.kicker::after {
  content: "";
  display: block;
  width: 40px;
  height: 2px;
  margin-top: var(--s-3);
  background: var(--gold);
}
.on-dark .kicker { color: var(--champagne); }
.center .kicker::after { margin-left: auto; margin-right: auto; }

.display {
  font-family: var(--font-display);
  font-weight: 600;
  letter-spacing: 0.015em;
}
.lede {
  font-size: var(--fs-md);
  line-height: 1.55;
  color: var(--slate);
  max-width: 56ch;
}
.on-dark .lede, .hero .lede { color: var(--dark-body); }
.hero .kicker { color: var(--champagne); }
.on-dark .muted { color: var(--dark-muted); }
.center { text-align: center; }
.center p, .center .lede { margin-left: auto; margin-right: auto; }
.muted { color: var(--slate); }

/* ---------- Header ---------- */
.site-header {
  position: sticky;
  top: 0;
  z-index: 100;
  background: rgba(15, 51, 39, 0.92);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  border-bottom: 1px solid var(--dark-line);
}
.nav-wrap {
  max-width: var(--page-max);
  margin: 0 auto;
  padding: 0 var(--s-6);
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: 68px;
}
.brand-lockup {
  display: flex;
  align-items: center;
  gap: var(--s-3);
  color: var(--white);
}
.brand-lockup:hover { text-decoration: none; }
.brand-lockup .mark { width: 34px; height: 34px; flex: none; }
.wordmark {
  font-family: var(--font-display);
  font-size: 1.19rem;
  font-weight: 600;
  letter-spacing: 0.26em;
  color: var(--white);
  transform: translateY(1px); /* optical: Cinzel caps sit high next to the mark */
}
.wordmark .om { color: var(--champagne); }

.site-nav { display: flex; align-items: center; gap: var(--s-8); }
.site-nav a {
  font-size: var(--fs-sm);
  font-weight: 500;
  color: var(--dark-body);
  letter-spacing: 0.01em;
  padding: var(--s-2) 0;
  position: relative;
}
.site-nav a:hover { color: var(--white); text-decoration: none; }
.site-nav a::after {
  content: "";
  position: absolute;
  left: 0; right: 100%;
  bottom: 0;
  height: 2px;
  background: var(--gold);
  transition: right var(--t-slow) var(--ease);
}
.site-nav a:hover::after, .site-nav a[aria-current="page"]::after { right: 0; }
.site-nav a[aria-current="page"] { color: var(--white); }
.site-nav .nav-cta {
  color: var(--evergreen);
  background: var(--champagne);
  padding: 10px var(--s-5);
  border-radius: var(--radius-ctl);
  font-weight: 600;
}
.site-nav .nav-cta:hover { background: var(--gold-hi); color: var(--evergreen-deep); }
.site-nav .nav-cta::after { display: none; }

/* Services hover-dropdown (the 4 offers, incl. the relocated flagship) */
.nav-drop { position: relative; display: inline-flex; }
.nav-drop-trigger { display: inline-flex; align-items: center; gap: 5px; }
.nav-caret { width: 10px; height: 7px; opacity: 0.75; transition: transform var(--t-base) var(--ease); }
.nav-drop:hover .nav-caret, .nav-drop:focus-within .nav-caret { transform: rotate(180deg); }
.nav-menu {
  position: absolute; top: calc(100% + 14px); left: 50%;
  transform: translateX(-50%) translateY(-6px);
  min-width: 310px; padding: var(--s-2);
  background: var(--evergreen); border: 1px solid var(--dark-line); border-radius: var(--radius-card);
  box-shadow: 0 24px 54px -14px rgba(0,0,0,0.5), 0 6px 16px rgba(0,0,0,0.2);
  display: grid; gap: 1px; z-index: 120;
  opacity: 0; visibility: hidden; pointer-events: none;
  transition: opacity var(--t-base) var(--ease), transform var(--t-base) var(--ease), visibility var(--t-base) var(--ease);
}
.nav-menu::before { content: ""; position: absolute; top: -14px; left: 0; right: 0; height: 14px; } /* hover bridge */
.nav-drop:hover .nav-menu, .nav-drop:focus-within .nav-menu {
  opacity: 1; visibility: visible; pointer-events: auto; transform: translateX(-50%) translateY(0);
}
.nav-menu a { display: block; padding: var(--s-3) var(--s-4); border-radius: var(--radius-ctl); }
.nav-menu a::after { display: none; }
.nav-menu a:hover { background: rgba(233,209,140,0.09); }
.nav-menu a b { display: block; font-weight: 600; font-size: var(--fs-sm); color: var(--white); letter-spacing: 0.005em; }
.nav-menu a em { display: block; font-style: normal; font-size: var(--fs-xs); color: var(--sage); margin-top: 2px; }

/* ============================================================
   Mock showcase — embed live product mocks in device frames on
   the offer pages (desktop browser + phone). Reuses funnel.css
   component styles for the mock content itself.
   ============================================================ */
.showcase { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--s-6); align-items: start; }
@media (min-width: 900px) { .showcase.showcase-split { grid-template-columns: 1.55fr 1fr; } }
.dv { position: relative; }
.dv-cap { display: block; margin-top: var(--s-3); font-size: var(--fs-xs); font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase; color: var(--sage-ink); }
/* the framed mock is a STATIC screenshot — nothing inside is clickable */
.dv-web, .dv-phone { pointer-events: none; }
/* desktop browser chrome */
.dv-web {
  border: 1px solid var(--stone); border-radius: 14px; overflow: hidden; background: var(--snow);
  box-shadow: 0 1px 2px rgba(15,51,39,0.05), 0 18px 44px -14px rgba(15,51,39,0.22);
}
.dv-web-bar { display: flex; align-items: center; gap: 6px; padding: 9px 12px; background: var(--offwhite); border-bottom: 1px solid var(--stone); }
.dv-web-bar i { width: 9px; height: 9px; border-radius: 50%; background: var(--stone); flex: none; }
.dv-web-url { margin-left: 8px; font-size: 11px; color: var(--slate); background: var(--white); border: 1px solid var(--stone); border-radius: 100px; padding: 3px 12px; }
.dv-web-screen { padding: var(--s-4); overflow: hidden; }
/* phone chrome — real device proportions (~9 : 19.5) */
.dv-phone {
  width: 100%; max-width: 288px; margin: 0 auto; padding: 10px; background: #12130f; border-radius: 34px;
  box-shadow: 0 1px 2px rgba(0,0,0,0.2), 0 26px 50px -16px rgba(15,51,39,0.34); border: 1px solid #23261d;
}
.dv-phone-screen {
  background: var(--snow); border-radius: 25px; overflow: hidden; position: relative;
  height: 544px; display: flex; flex-direction: column;
}
.dv-phone-notch { position: absolute; top: 8px; left: 50%; transform: translateX(-50%); width: 50px; height: 5px; border-radius: 100px; background: rgba(255,255,255,0.22); z-index: 3; }
/* the embedded mock fills the frame like a real app screen (no entrance jitter) */
.dv-web-screen .cc, .dv-phone-screen .cc { box-shadow: none; animation: none; }
.dv-web-screen .ccm, .dv-phone-screen .ccm { margin: 0; }
.dv-phone-screen .cc { display: flex; flex-direction: column; height: 100%; border: 0; border-radius: 0; }
.dv-phone-screen .cc-main { flex: 1; display: flex; flex-direction: column; min-height: 0; }
.dv-phone-screen .cc-stage { flex: 1; min-height: 0; }
/* the long "sample configuration" badge is redundant + overflows on a phone */
.dv-phone-screen .cc-live { display: none; }
.dv-phone-screen .cc-top { justify-content: flex-start; }
/* on a narrow desktop-preview, let long app titles wrap instead of clipping */
@media (max-width: 600px) {
  .dv-web-screen .cc-brand { white-space: normal; font-size: var(--fs-sm); line-height: 1.2; }
}

.nav-toggle {
  display: none;
  background: none;
  border: 0;
  width: 44px; height: 44px;
  padding: 10px;
  cursor: pointer;
  border-radius: var(--radius-ctl);
}
.nav-toggle span {
  display: block;
  height: 2px;
  background: var(--white);
  margin: 5px 0;
  border-radius: 2px;
  transition: transform var(--t-base) var(--ease), opacity var(--t-base) var(--ease);
}
.nav-open .nav-toggle span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.nav-open .nav-toggle span:nth-child(2) { opacity: 0; }
.nav-open .nav-toggle span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

/* ---------- Hero (dark, living surface) ---------- */
.hero {
  position: relative;
  background:
    radial-gradient(1100px 520px at 78% -10%, rgba(30, 107, 74, 0.55), transparent 62%),
    radial-gradient(800px 480px at 12% 108%, rgba(30, 107, 74, 0.30), transparent 60%),
    linear-gradient(178deg, var(--evergreen) 0%, var(--evergreen-deep) 100%);
  color: var(--white);
  overflow: hidden;
}
.hero .ember-field {
  position: absolute;
  inset: 0;
  pointer-events: none;
}
.hero-inner {
  position: relative;
  max-width: var(--page-max);
  margin: 0 auto;
  padding: var(--s-24) var(--s-6) var(--s-20);
}
.hero-home .hero-inner { padding-top: var(--s-32); padding-bottom: var(--s-24); }
.hero h1 {
  font-family: var(--font-display);
  font-size: clamp(2.2rem, 5.4vw, var(--fs-3xl));
  letter-spacing: 0.02em;
  color: var(--white);
  max-width: 21ch;
  margin-bottom: var(--s-6);
}
.hero h1 .gilt { color: var(--champagne); }
.hero .lede { margin-bottom: var(--s-8); }
.hero-mark {
  width: 64px;
  height: 64px;
  margin-bottom: var(--s-6);
  filter: drop-shadow(0 0 22px rgba(212, 166, 42, 0.35));
}
.hero-actions { display: flex; gap: var(--s-4); flex-wrap: wrap; align-items: center; }
.hero-actions.center { justify-content: center; }
.btn-row { display: flex; gap: var(--s-3); flex-wrap: wrap; align-items: center; margin-top: var(--s-4); }
.hero-rule {
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(212, 166, 42, 0.55), transparent);
}

/* Page hero (interior pages, shorter) */
.hero-page .hero-inner { padding: var(--s-20) var(--s-6) var(--s-16); }
.hero-page h1 { font-size: clamp(2rem, 4.4vw, var(--fs-2xl)); }

/* ---------- Buttons ---------- */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--s-2);
  min-height: 48px;
  padding: 0 var(--s-8);
  border-radius: var(--radius-ctl);
  border: 0;
  font-family: var(--font-ui);
  font-size: var(--fs-base);
  font-weight: 600;
  letter-spacing: 0.01em;
  cursor: pointer;
  text-decoration: none;
  transition: transform var(--t-fast) var(--ease), box-shadow var(--t-base) var(--ease), background-color var(--t-base) var(--ease);
}
.btn:hover { text-decoration: none; }

/* Primary — the signature CTA. Gold sheen on hover (~2.4s loop);
   click fires a fast burst: ~75% gold, thin violet streak in the trailing 25%. */
.btn-primary {
  position: relative;
  overflow: hidden;
  background: var(--green);
  color: var(--white);
  box-shadow: var(--sh-1);
}
.btn-primary:hover {
  background: var(--green-dark);
  transform: translateY(-1px);
  box-shadow: var(--sh-2);
}
.btn-primary::after {
  content: "";
  position: absolute;
  top: 0; bottom: 0;
  left: -70%;
  width: 55%;
  background: linear-gradient(
    105deg,
    transparent 0%,
    rgba(235, 185, 59, 0.34) 45%,
    rgba(235, 185, 59, 0.14) 62%,
    transparent 100%
  );
  transform: skewX(-18deg);
  opacity: 0;
  pointer-events: none;
}
.btn-primary:hover::after {
  opacity: 1;
  animation: sheen 2.4s var(--ease) infinite;
}
.btn-primary.bursting::after {
  opacity: 1;
  background: linear-gradient(
    105deg,
    transparent 0%,
    rgba(235, 185, 59, 0.55) 40%,
    rgba(235, 185, 59, 0.28) 70%,
    rgba(142, 111, 198, 0.42) 86%,
    transparent 100%
  );
  animation: sheen 0.5s var(--ease) 1;
}
.btn-primary.bursting {
  animation: goldglow 0.55s var(--ease) 1;
}
@keyframes sheen {
  from { left: -70%; }
  to { left: 130%; }
}
@keyframes goldglow {
  0% { box-shadow: 0 0 0 0 rgba(212, 166, 42, 0.45); }
  100% { box-shadow: 0 0 0 14px rgba(212, 166, 42, 0); }
}

.btn-ghost {
  background: transparent;
  color: var(--white);
  border: 1px solid rgba(233, 209, 140, 0.45);
}
.btn-ghost:hover { border-color: var(--champagne); background: rgba(233, 209, 140, 0.08); transform: translateY(-1px); }
.btn-ghost-light {
  background: transparent;
  color: var(--green);
  border: 1.5px solid var(--green);
}
.btn-ghost-light:hover { background: var(--mist); transform: translateY(-1px); }

.text-link {
  font-weight: 600;
  color: var(--green);
  white-space: nowrap;
}
.text-link::after { content: " \2192"; }

/* ---------- Sections ---------- */
.section { padding: var(--s-24) var(--s-6); }
.section-tight { padding: var(--s-20) var(--s-6); }
.section-inner { max-width: var(--page-max); margin: 0 auto; }
.section h2 {
  font-family: var(--font-display);
  font-size: clamp(1.7rem, 3.4vw, var(--fs-xl));
  letter-spacing: 0.015em;
  max-width: 28ch;
}
.center h2 { margin-left: auto; margin-right: auto; }
.section-head { margin-bottom: var(--s-12); }
.on-light { background: var(--offwhite); }
.on-snow { background: var(--snow); }
.on-mist { background: var(--mist); }
.on-dark {
  background: linear-gradient(178deg, var(--evergreen) 0%, var(--evergreen-deep) 100%);
  color: var(--dark-body);
}
.on-dark h2, .on-dark h3 { color: var(--white); }

/* ---------- Cards & grids ---------- */
.grid { display: grid; gap: var(--s-6); }
.grid-2 { grid-template-columns: repeat(2, 1fr); }
.grid-3 { grid-template-columns: repeat(3, 1fr); }
.grid-4 { grid-template-columns: repeat(4, 1fr); }

.card {
  background: var(--snow);
  border: 1px solid var(--stone);
  border-radius: var(--radius-card);
  padding: var(--s-8);
  box-shadow: var(--sh-1);
  transition: transform var(--t-base) var(--ease), box-shadow var(--t-base) var(--ease), border-color var(--t-base) var(--ease);
}
.card:hover {
  transform: translateY(-3px);
  box-shadow: var(--sh-2);
  border-color: var(--sage);
}
.card h3 { font-size: var(--fs-md); margin-bottom: var(--s-3); }
.card p { font-size: var(--fs-sm); color: var(--slate); margin-bottom: var(--s-3); }
.card p:last-child { margin-bottom: 0; }
.card .text-link { font-size: var(--fs-sm); }

.card-icon {
  width: 44px; height: 44px;
  border-radius: var(--radius-ctl);
  background: var(--mist);
  color: var(--green);
  display: grid;
  place-items: center;
  margin-bottom: var(--s-5);
}
.card-icon svg { width: 22px; height: 22px; }

.card-dark {
  background: rgba(252, 252, 249, 0.045);
  border: 1px solid var(--dark-line);
  box-shadow: none;
}
.card-dark:hover { border-color: rgba(233, 209, 140, 0.4); box-shadow: none; }
.card-dark h3 { color: var(--white); }
.card-dark p { color: var(--dark-body); }
.card-dark .card-icon { background: rgba(233, 209, 140, 0.1); color: var(--champagne); }

/* Offer cards */
.offer-No {
  font-family: var(--font-display);
  font-size: var(--fs-sm);
  letter-spacing: 0.22em;
  color: var(--gold-ink);
  display: block;
  margin-bottom: var(--s-4);
}
.on-dark .offer-No { color: var(--gold); }
.offer-meta {
  font-size: var(--fs-xs);
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--sage-ink);
  margin-bottom: var(--s-3);
}
.on-dark .offer-meta { color: var(--sage); }

/* Feature / checklist rows */
.check-list { list-style: none; padding: 0; }
.check-list li {
  position: relative;
  padding-left: var(--s-8);
  margin-bottom: var(--s-3);
}
.check-list li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.42em;
  width: 14px; height: 8px;
  border-left: 2.5px solid var(--gold);
  border-bottom: 2.5px solid var(--gold);
  transform: rotate(-45deg);
}
.on-dark .check-list li { color: var(--dark-body); }

/* Split layout */
.split {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--s-16);
  align-items: center;
}
.split > div { min-width: 0; }

/* ---------- Ethos band ---------- */
.ethos-band {
  position: relative;
  overflow: hidden;
  text-align: center;
  padding: var(--s-24) var(--s-6);
}
.ethos-band .ember-field { position: absolute; inset: 0; pointer-events: none; }
.ethos-band .mark { width: 56px; height: 56px; margin: 0 auto var(--s-6); }
.ethos-line {
  position: relative;
  font-family: var(--font-display);
  font-size: clamp(var(--fs-lg), 3.2vw, var(--fs-xl));
  line-height: 1.2;
  text-wrap: balance;
  letter-spacing: 0.06em;
  color: var(--champagne);
  margin: 0;
  max-width: none;
}

/* ---------- Process / numbered steps ---------- */
.steps { counter-reset: step; list-style: none; padding: 0; display: grid; gap: var(--s-6); }
.steps li {
  counter-increment: step;
  position: relative;
  padding: var(--s-6) var(--s-6) var(--s-6) 76px;
  background: var(--snow);
  border: 1px solid var(--stone);
  border-radius: var(--radius-card);
}
.steps li::before {
  content: counter(step, decimal-leading-zero);
  position: absolute;
  left: var(--s-6);
  top: var(--s-6);
  font-family: var(--font-display);
  font-size: var(--fs-md);
  font-weight: 600;
  color: var(--gold-ink);
  font-variant-numeric: tabular-nums;
}
.steps h3 { font-size: var(--fs-base); margin-bottom: var(--s-2); }
.steps p { font-size: var(--fs-sm); color: var(--slate); margin: 0; }

/* ---------- Stat-fact strip (verified facts only) ---------- */
.fact-strip {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--s-6);
  border-top: 1px solid var(--dark-line);
  border-bottom: 1px solid var(--dark-line);
  padding: var(--s-8) 0;
}
.fact {
  text-align: center;
  padding: 0 var(--s-4);
}
.fact strong {
  display: block;
  font-family: var(--font-display);
  font-size: var(--fs-xl);
  font-weight: 600; /* Cinzel 700 is not loaded; declare the loaded face */
  line-height: 1.2;
  color: var(--champagne);
  font-variant-numeric: tabular-nums;
  margin-bottom: var(--s-1);
}
.fact span { font-size: var(--fs-sm); color: var(--dark-muted); }

/* ---------- CTA band ---------- */
.cta-band { text-align: center; }
.cta-band h2 { margin-left: auto; margin-right: auto; }
.cta-band .kicker::after, .notfound .kicker::after { margin-left: auto; margin-right: auto; }
.cta-band .lede { margin-left: auto; margin-right: auto; margin-bottom: var(--s-8); }

/* ---------- Legal / prose pages ---------- */
.prose {
  max-width: 72ch;
  margin: 0 auto;
  padding: var(--s-16) var(--s-6) var(--s-24);
}
.prose h2 {
  font-family: var(--font-ui);
  font-size: var(--fs-md);
  margin-top: var(--s-12);
  padding-top: var(--s-6);
  border-top: 1px solid var(--stone);
}
.prose h2:first-of-type { margin-top: var(--s-8); border-top: 0; padding-top: 0; }
.prose h3 { font-size: var(--fs-base); margin-top: var(--s-8); }
.prose p, .prose li { color: #3A4038; }
.prose .doc-meta {
  font-size: var(--fs-sm);
  color: var(--slate);
  border-left: 3px solid var(--gold);
  padding-left: var(--s-4);
  margin-bottom: var(--s-8);
}
.prose table {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--fs-sm);
  margin: var(--s-6) 0;
}
.prose th, .prose td {
  text-align: left;
  padding: var(--s-3) var(--s-4);
  border-bottom: 1px solid var(--stone);
  vertical-align: top;
}
.prose th { font-weight: 600; color: var(--ink); background: var(--mist); }
.prose .table-scroll { overflow-x: auto; }

/* ---------- Contact ---------- */
.contact-card {
  background: var(--snow);
  border: 1px solid var(--stone);
  border-radius: var(--radius-card);
  box-shadow: var(--sh-2);
  padding: var(--s-10);
}
.contact-email {
  font-family: var(--font-display);
  font-size: clamp(1.2rem, 2.6vw, var(--fs-lg));
  letter-spacing: 0.02em;
  word-break: break-all;
}
.contact-list { list-style: none; padding: 0; margin: 0; }
.contact-list li {
  display: flex;
  gap: var(--s-4);
  padding: var(--s-4) 0;
  border-bottom: 1px solid var(--stone);
  font-size: var(--fs-sm);
  color: var(--slate);
}
.contact-list li:last-child { border-bottom: 0; }
.contact-list strong { color: var(--ink); flex: none; width: 132px; font-weight: 600; }

/* ---------- Footer ---------- */
.site-footer {
  background: var(--evergreen-deep);
  color: var(--dark-muted);
  padding: var(--s-16) var(--s-6) var(--s-10);
}
.footer-inner { max-width: var(--page-max); margin: 0 auto; }
.footer-top {
  display: grid;
  grid-template-columns: 1.4fr 1fr 1fr 1fr;
  gap: var(--s-10);
  padding-bottom: var(--s-10);
  border-bottom: 1px solid var(--dark-line);
}
.footer-brand .brand-lockup { margin-bottom: var(--s-4); }
.footer-brand p { font-size: var(--fs-sm); max-width: 34ch; }
.footer-tag {
  font-size: var(--fs-xs);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--champagne);
}
.site-footer h4 {
  font-size: var(--fs-xs);
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--white);
  margin-bottom: var(--s-4);
}
.site-footer ul { list-style: none; padding: 0; margin: 0; }
.site-footer li { margin-bottom: var(--s-3); }
.site-footer a { color: var(--dark-body); font-size: var(--fs-sm); }
.site-footer a:hover { color: var(--champagne); text-decoration: none; }
.footer-bottom {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--s-6);
  flex-wrap: wrap;
  padding-top: var(--s-8);
  font-size: var(--fs-xs);
}
.social-row { display: flex; gap: var(--s-4); }
.social-row a {
  width: 38px; height: 38px;
  display: grid;
  place-items: center;
  border: 1px solid var(--dark-line);
  border-radius: 50%;
  color: var(--dark-body);
  transition: border-color var(--t-base) var(--ease), color var(--t-base) var(--ease), transform var(--t-fast) var(--ease);
}
.social-row a:hover { color: var(--champagne); border-color: var(--champagne); transform: translateY(-1px); }
.social-row svg { width: 17px; height: 17px; }
.social-row[hidden] { display: none; }
.social-row a[hidden] { display: none; }

/* ---------- Reveal on scroll ---------- */
/* Hidden-until-revealed applies ONLY once JS registers (body.js-reveal):
   without JavaScript every element stays visible. */
.js-reveal .reveal {
  opacity: 0;
  transform: translateY(14px);
  transition: opacity 0.6s var(--ease), transform 0.6s var(--ease);
}
.js-reveal .reveal.in { opacity: 1; transform: none; }

/* ---------- 404 ---------- */
.notfound {
  min-height: 52vh;
  display: grid;
  place-items: center;
  text-align: center;
  padding: var(--s-20) var(--s-6);
}

/* ---------- Responsive ---------- */
@media (max-width: 960px) {
  .grid-4 { grid-template-columns: repeat(2, 1fr); }
  .grid-3 { grid-template-columns: repeat(2, 1fr); }
  .split { grid-template-columns: 1fr; gap: var(--s-10); }
  .footer-top { grid-template-columns: 1fr 1fr; }
}

/* Nav collapses earlier than the layout: at 721-800px the desktop nav's content
   physically collides with the brand lockup (measured 0px gap at 721px). */
@media (max-width: 820px) {
  .nav-toggle { display: block; }
  .site-nav {
    position: absolute;
    top: 68px;
    left: 0; right: 0;
    flex-direction: column;
    align-items: stretch;
    gap: 0;
    background: var(--evergreen-deep);
    border-bottom: 1px solid var(--dark-line);
    padding: var(--s-4) var(--s-5) var(--s-6);
    display: none;
  }
  .nav-open .site-nav { display: flex; }
  .site-nav a { padding: var(--s-4) var(--s-2); font-size: var(--fs-base); min-height: 44px; display: flex; align-items: center; }
  .site-nav a::after { display: none; }
  .site-nav a[aria-current="page"] { color: var(--champagne); }
  .site-nav .nav-cta { margin-top: var(--s-4); justify-content: center; text-align: center; display: flex; }
  /* dropdown becomes an inline, always-open sub-list in the mobile menu */
  .nav-drop { display: block; }
  .nav-caret { display: none; }
  .nav-menu {
    position: static; transform: none; opacity: 1; visibility: visible; pointer-events: auto;
    min-width: 0; background: transparent; border: 0; box-shadow: none;
    padding: 0 0 var(--s-2) var(--s-5); gap: 0;
  }
  .nav-menu::before { display: none; }
  .nav-menu a { padding: var(--s-2) var(--s-2); min-height: 40px; }
  .nav-menu a em { display: none; }
}

@media (max-width: 720px) {
  .section, .section-tight { padding-left: var(--s-5); padding-right: var(--s-5); }
  .section { padding-top: var(--s-16); padding-bottom: var(--s-16); }
  .hero-inner, .hero-home .hero-inner { padding: var(--s-16) var(--s-5) var(--s-12); }
  .hero-page .hero-inner { padding: var(--s-12) var(--s-5) var(--s-10); }
  .grid-2, .grid-3, .grid-4 { grid-template-columns: 1fr; }
  .fact-strip { grid-template-columns: 1fr; gap: var(--s-8); }
  .hero-actions .btn { width: 100%; }
  .lede { font-size: 1.125rem; } /* 20px in a 335px column is a 24-35ch measure; 18px restores ~35+ */

  .footer-top { grid-template-columns: 1fr; gap: var(--s-8); }
  .footer-bottom { flex-direction: column; align-items: flex-start; }
  .prose { padding-top: var(--s-10); }
  .contact-card { padding: var(--s-6); }
  .contact-list strong { width: 104px; }
}

/* ---------- Reduced motion: all ambient + shimmer OFF ---------- */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
  .btn-primary::after { display: none; }
  .ember-field { display: none; }
  .reveal { opacity: 1; transform: none; }
}

/* ---------- Pricing menus (offer pages — founding rates) ---------- */
.price-lead {
  max-width: var(--measure); margin: 0 auto var(--s-10);
  text-align: center; color: var(--slate); font-size: var(--fs-sm);
}
.price-lead b { color: var(--ink); font-weight: 600; }
.price-menus {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
  gap: var(--s-5); align-items: start;
}
.price-menu {
  background: var(--snow); border: 1px solid var(--stone);
  border-radius: var(--radius-card); box-shadow: var(--sh-2);
  padding: var(--s-6) var(--s-6) var(--s-5);
}
.price-menu.is-wide { grid-column: 1 / -1; }
.price-group-h {
  font-family: var(--font-display); font-size: var(--fs-xs);
  letter-spacing: 0.12em; text-transform: uppercase; color: var(--gold-ink);
  font-weight: 700; margin: 0 0 var(--s-2);
}
.price-row {
  display: flex; align-items: baseline; gap: var(--s-2);
  padding: var(--s-3) 0; border-bottom: 1px solid var(--mist);
}
.price-row:last-child { border-bottom: none; }
.price-name {
  font-family: var(--font-display); font-weight: 600;
  font-size: var(--fs-base); color: var(--ink); flex: 0 1 auto;
}
.price-name .q { font-family: var(--font-ui); font-weight: 400; color: var(--slate); font-size: var(--fs-sm); }
.price-dots {
  flex: 1 1 14px; min-width: 14px; align-self: center;
  border-bottom: 1px dotted var(--stone); transform: translateY(-3px);
}
.price-val {
  font-family: var(--font-display); font-weight: 700; color: var(--ink);
  font-size: var(--fs-md); white-space: nowrap; text-align: right; flex: none;
}
.price-val .sub {
  display: block; font-family: var(--font-ui); font-weight: 500;
  font-size: var(--fs-xs); color: var(--slate); white-space: normal;
}
.price-desc { color: var(--slate); font-size: var(--fs-sm); margin: var(--s-1) 0 0; max-width: 60ch; }
.price-desc b { color: var(--ink); font-weight: 600; }
.price-terms {
  max-width: 72ch; margin: var(--s-10) auto 0; padding-top: var(--s-6);
  border-top: 1px solid var(--stone); display: grid; gap: var(--s-3); list-style: none;
}
.price-terms li { display: grid; grid-template-columns: 18px 1fr; gap: var(--s-3); font-size: var(--fs-sm); color: var(--slate); }
.price-terms .mk { color: var(--gold-ink); font-family: var(--font-display); }
.price-terms b { color: var(--ink); font-weight: 600; }
@media (max-width: 560px) {
  .price-menus { grid-template-columns: 1fr; }
  .price-dots { display: none; }
  .price-name { flex: 1 1 auto; }
  .price-val { font-size: var(--fs-base); }
}

/* ---------- Print ---------- */
@media print {
  .site-header, .site-footer, .hero .ember-field, .cta-band { display: none; }
  body { background: #fff; color: #000; }
  .prose { max-width: none; padding: 0; }
}
