/* =============================================================================
   Evergreen Finance — main stylesheet
   Loaded on every page. /quiz and the lesson pages additionally load quiz.css;
   the calculator pages additionally load calculators.css.

   CONTENTS — each entry below is a banner comment; search for the name to jump.
   No line numbers on purpose: they would be wrong after the first edit.
   ---------------------------------------------------------------------------
   SELF-HOSTED FONTS
   DESIGN TOKENS
     BRAND COLOR PALETTE · SEMANTIC ALIASES · TYPOGRAPHY — FAMILIES
     TYPOGRAPHY — TYPE SCALE · SPACING SCALE · RADIUS SCALE
     SHADOW SCALE · MOTION
   RESET
   BASE
   SHARED COMPONENTS            .btn · .card · .badge · .card-chip
   SITE CHROME
     Site nav                   .site-nav
     Site footer                .site-footer
   PAGES
     Home — /                   .page-home
     About — /about             .page-about
     Learn index — /learn       .page-learn
     Lesson pages — /learn/*    .page-lesson
     Tools index — /tools       .page-tools
     Blog index — /blog         .page-blog
     Blog post — /blog/*        .page-post
     Privacy — /privacy         .page-privacy
     Terms — /terms             .page-terms
     Not found — /404.html      .page-404

   SCOPING: everything from "Site chrome" down is prefixed with a scope class,
   and each page carries its scope class on <body>. This is deliberate — class
   names like .brand, .lede, .section and .lesson-card legitimately mean
   different things on different pages, and the prefix keeps them apart. When
   adding page CSS, put it in that page's section and keep the prefix.
   ============================================================================= */

/* ==================== SELF-HOSTED FONTS ====================
   Extracted from the Fontsource packages so the site carries no npm
   dependency and every request stays same-origin (keeps the CSP at 'self'). */
@font-face {
  font-family: 'Zilla Slab';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('/assets/fonts/zilla-slab-latin-500-normal.woff2') format('woff2');
}
@font-face {
  font-family: 'Zilla Slab';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('/assets/fonts/zilla-slab-latin-600-normal.woff2') format('woff2');
}
@font-face {
  font-family: 'Zilla Slab';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('/assets/fonts/zilla-slab-latin-700-normal.woff2') format('woff2');
}
@font-face {
  font-family: 'Karla';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/assets/fonts/karla-latin-400-normal.woff2') format('woff2');
}
@font-face {
  font-family: 'Karla';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('/assets/fonts/karla-latin-500-normal.woff2') format('woff2');
}
@font-face {
  font-family: 'Karla';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('/assets/fonts/karla-latin-600-normal.woff2') format('woff2');
}
@font-face {
  font-family: 'Karla';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('/assets/fonts/karla-latin-700-normal.woff2') format('woff2');
}


/* ==================== DESIGN TOKENS ==================== */
/* Evergreen Finance — Design Tokens */
/* "Rooted in Knowledge. Free Forever." */
/* Single source of truth for color, type, space, radius, shadow, and motion tokens. */
/* Single light theme only — no dark mode. */

/* ==================== BRAND COLOR PALETTE ==================== */
:root {
  --color-primary: #0A3622;        /* brand green — deep British racing green */
  --color-primary-strong: #072819; /* darker shade — hover states, link text, text-on-tint */
  --color-primary-mid: #2E7D5C;    /* secondary tone — tri-color contexts like the budget chart */
  --color-primary-tint: #DCEFE4;   /* light tint — badge/icon-circle backgrounds */
  --color-bg: #F7F9F6;             /* page background — soft cream / light warm gray */
  --color-surface: #FFFFFF;        /* card/panel surface, lifted off the page bg */
  --color-surface-soft: #FBFCFB;   /* between --color-bg and --color-surface — cards resting on a same-toned section */
  --color-text: #191C1A;           /* body text — deep charcoal black */
  --color-text-muted: #55665D;     /* muted text */
  --color-error: #B3261E;          /* quiz "incorrect" feedback, functional (not brand) color */
}

/* ==================== SEMANTIC ALIASES ==================== */
:root {
  --color-cream: #FFFFFF;                   /* text placed on a solid colored surface (buttons, chart bars) */
  --color-mint-light: var(--color-primary-tint);
  --color-sage-mid: var(--color-primary-mid);
  --color-accent: #198754;                  /* CTA — vibrant meadow green, distinct from brand primary */
  --color-accent-hover: #146C43;            /* darkened accent for hover states */
  --color-border: rgba(10, 54, 34, 0.15);   /* primary-tinted hairline border */
  --color-border-soft: rgba(10, 54, 34, 0.08); /* fainter card outline — half the strength of --color-border */
  --color-on-accent: #FFFFFF;               /* text placed on --color-accent surfaces */
  --color-on-tint: var(--color-primary-strong); /* text placed on --color-primary-tint backgrounds (e.g. badges) */
  --color-success: var(--color-accent);     /* quiz "correct" feedback reuses the CTA green */
  --color-success-bg: rgba(25, 135, 84, 0.12);
  --color-error-bg: rgba(179, 38, 30, 0.12);
  --color-on-success: #FFFFFF;
  --color-on-error: #FFFFFF;
}

/* ==================== TYPOGRAPHY — FAMILIES ==================== */
:root {
  --font-heading: 'Zilla Slab', Georgia, 'Times New Roman', serif;
  --font-body: 'Karla', -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;

  --font-weight-heading: 700;        /* H1–H2 */
  --font-weight-heading-medium: 600; /* H3–H4 lower bound */
  --font-weight-body: 400;
  --font-weight-body-medium: 500;
}

/* ==================== TYPOGRAPHY — TYPE SCALE (1.25 ratio, 16px base) ==================== */
:root {
  --text-h1: 3rem;        --leading-h1: 1.1;
  --text-h2: 2.375rem;    --leading-h2: 1.15;
  --text-h3: 1.875rem;    --leading-h3: 1.2;
  --text-h4: 1.5rem;      --leading-h4: 1.25;
  --text-lede: 1.125rem;  --leading-lede: 1.6;
  --text-body: 1rem;      --leading-body: 1.6;
  --text-small: 0.8125rem; --leading-small: 1.5;
}

/* ==================== SPACING SCALE (4px base unit) ==================== */
:root {
  --space-4: 0.25rem;  /* 4px */
  --space-8: 0.5rem;   /* 8px */
  --space-12: 0.75rem; /* 12px */
  --space-16: 1rem;    /* 16px */
  --space-20: 1.25rem; /* 20px */
  --space-24: 1.5rem;  /* 24px */
  --space-32: 2rem;    /* 32px */
  --space-48: 3rem;    /* 48px */
  --space-64: 4rem;    /* 64px */
  --space-96: 6rem;    /* 96px */
  --space-128: 8rem;   /* 128px */
}

/* ==================== RADIUS SCALE (organic, rounded, trustworthy) ==================== */
:root {
  --radius-sm: 0.375rem;  /* 6px — inputs, chips */
  --radius-md: 0.75rem;   /* 12px — cards, buttons */
  --radius-lg: 1.25rem;   /* 20px — panels, hero blocks */
  --radius-leaf: 3.5rem;  /* 56px — the single swept corner on Learn/Tools "leaf" cards */
  --radius-pill: 999px;   /* fully rounded — badges, pill buttons */
}

/* ==================== SHADOW SCALE (soft, primary-green tinted, not pure black) ==================== */
:root {
  --shadow-sm: 0 1px 2px rgba(10, 54, 34, 0.06), 0 1px 1px rgba(10, 54, 34, 0.04);
  --shadow-md: 0 4px 12px rgba(10, 54, 34, 0.08), 0 2px 4px rgba(10, 54, 34, 0.05);
  --shadow-lg: 0 12px 28px rgba(10, 54, 34, 0.10), 0 4px 10px rgba(10, 54, 34, 0.06);
}

/* ==================== MOTION (smooth, tasteful micro-interactions) ==================== */
:root {
  --transition-fast: 150ms ease;
  --transition-base: 200ms ease;
  --transition-slow: 350ms ease;
  --ease-standard: cubic-bezier(0.4, 0, 0.2, 1);
  --ease-emphasized: cubic-bezier(0.16, 1, 0.3, 1);
}


/* ==================== RESET / BASE / SHARED COMPONENTS ==================== */
/* ==================== RESET ==================== */
*, *::before, *::after { box-sizing: border-box; }
* { margin: 0; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
img, picture, svg { display: block; max-width: 100%; }
input, button, textarea, select { font: inherit; color: inherit; }
button { cursor: pointer; }

@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;
  }
}

/* ==================== BASE ==================== */
body {
  background: var(--color-bg);
  color: var(--color-text);
  font-family: var(--font-body);
  font-size: var(--text-body);
  line-height: var(--leading-body);
  transition: background-color var(--transition-base), color var(--transition-base);
}

h1, h2, h3, h4 {
  font-family: var(--font-heading);
  font-weight: var(--font-weight-heading);
  line-height: 1.15;
  color: var(--color-text);
}
h1 { font-size: var(--text-h1); line-height: var(--leading-h1); }
h2 { font-size: var(--text-h2); line-height: var(--leading-h2); }
h3 { font-size: var(--text-h3); line-height: var(--leading-h3); font-weight: var(--font-weight-heading-medium); }
h4 { font-size: var(--text-h4); line-height: var(--leading-h4); font-weight: var(--font-weight-heading-medium); }

small, .text-small { font-size: var(--text-small); line-height: var(--leading-small); }

a { color: var(--color-accent-hover); }

a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, [tabindex]:focus-visible {
  outline: 2px solid var(--color-accent);
  outline-offset: 2px;
  border-radius: var(--radius-sm);
}

.container {
  width: 100%;
  max-width: 72rem;
  margin-inline: auto;
  padding-inline: var(--space-24);
}

.visually-hidden {
  position: absolute;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* ==================== SHARED COMPONENTS ==================== */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-8);
  padding: var(--space-12) var(--space-24);
  border-radius: var(--radius-pill);
  font-family: var(--font-body);
  font-weight: var(--font-weight-body-medium);
  font-size: var(--text-body);
  text-decoration: none;
  border: 1px solid transparent;
  transition: background-color var(--transition-base), color var(--transition-base), transform var(--transition-fast), box-shadow var(--transition-base);
}
.btn:hover { transform: translateY(-1px); }
.btn:active { transform: translateY(0); }

.btn-primary {
  background: var(--color-accent);
  color: var(--color-on-accent);
  box-shadow: var(--shadow-sm);
}
.btn-primary:hover { background: var(--color-accent-hover); box-shadow: var(--shadow-md); }

.btn-secondary {
  background: transparent;
  color: var(--color-text);
  border-color: var(--color-border);
}
.btn-secondary:hover { background: var(--color-surface); border-color: var(--color-primary); }

.card {
  background: var(--color-surface);
  border: 1px solid var(--color-border-soft);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
  transition: box-shadow var(--transition-base), transform var(--transition-base), background-color var(--transition-base);
}
.card:hover { box-shadow: var(--shadow-md); transform: translateY(-2px); }

/* Interactive cards (anchors) fill with the brand tint on hover/focus — the
   "page turn". Static .card containers (quiz island, calculator panels,
   feature blurbs) keep the plain lift above. */
a.card:hover, a.card:focus-visible {
  background: var(--color-primary-tint);
  box-shadow: var(--shadow-md);
  transform: translateY(-3px);
}
a.card:hover :is(h2, h3), a.card:focus-visible :is(h2, h3) { color: var(--color-primary-strong); }
/* A tint pill would vanish against the tint fill: invert it to white. */
a.card:hover .badge, a.card:focus-visible .badge { background: var(--color-surface); }

/* One swept corner — the leaf silhouette used on Learn/Tools listing cards. */
.card-leaf { border-radius: var(--radius-lg) var(--radius-lg) var(--radius-leaf) var(--radius-lg); }

/* Ghosted pine branch in the top-right corner (same asset as the Follow cards). */
.card-pine { position: relative; overflow: hidden; }
.card-pine::after {
  content: "";
  position: absolute;
  top: -1.75rem;
  right: -1.5rem;
  width: 8.5rem;
  height: 8.5rem;
  background: url("/assets/img/pine-branch-watermark.png") center / contain no-repeat;
  opacity: 0.12;
  transform: rotate(12deg);
  pointer-events: none;
  transition: opacity var(--transition-base);
}
.card-pine:hover::after, .card-pine:focus-visible::after { opacity: 0.2; }

/* Card footer: meta text left, arrow chip right. */
.card-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-16);
  margin-top: var(--space-16);
}
.card-foot-meta {
  font-size: var(--text-small);
  font-weight: var(--font-weight-body-medium);
  color: var(--color-primary);
}
.card-chip {
  flex: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.125rem;
  height: 2.125rem;
  border-radius: var(--radius-pill);
  background: var(--color-primary);
  color: var(--color-cream);
  transition: background-color var(--transition-base);
}
.card-chip svg { transition: transform var(--transition-base); }
a.card:hover .card-chip, a.card:focus-visible .card-chip { background: var(--color-accent); }
a.card:hover .card-chip svg, a.card:focus-visible .card-chip svg { transform: translateX(2px); }

.badge {
  display: inline-flex;
  align-items: center;
  padding: var(--space-4) var(--space-12);
  border-radius: var(--radius-pill);
  font-size: var(--text-small);
  font-weight: var(--font-weight-body-medium);
  background: var(--color-mint-light);
  color: var(--color-on-tint);
}

/* ==================== SITE CHROME ==================== */
/* ---------- Site nav  (scope: .site-nav) ---------- */
.site-nav {
  position: sticky;
  top: 0;
  z-index: 50;
  background: var(--color-bg);
  border-bottom: 1px solid var(--color-border);
}
.site-nav .nav-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding-block: var(--space-20);
  gap: var(--space-24);
}
.site-nav .brand {
  display: inline-flex;
  align-items: center;
  gap: var(--space-12);
  text-decoration: none;
  color: var(--color-text);
  transition: transform 280ms var(--ease-standard);
}
.site-nav .brand:hover, .site-nav .brand:focus-visible {
  transform: translateY(-2px);
}
.site-nav .brand-mark {
  color: var(--color-primary);
  flex-shrink: 0;
}
.site-nav .brand-word {
  position: relative;
  display: inline-block;
  font-family: var(--font-heading);
  font-weight: var(--font-weight-heading);
  font-size: 1.35rem;
}
.site-nav .brand-word::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: -2px;
  width: 100%;
  height: 2px;
  border-radius: var(--radius-pill);
  background: var(--color-accent);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 280ms var(--ease-standard);
}
.site-nav .brand:hover .brand-word::after, .site-nav .brand:focus-visible .brand-word::after {
  transform: scaleX(1);
}
.site-nav .nav-toggle {
  display: none;
  flex-direction: column;
  gap: 4px;
  background: none;
  border: none;
  padding: var(--space-8);
}
.site-nav .nav-toggle-bar {
  width: 22px;
  height: 2px;
  background: var(--color-text);
  border-radius: var(--radius-pill);
}
.site-nav .nav-menu {
  display: flex;
  align-items: center;
  gap: var(--space-32);
}
.site-nav .nav-links {
  list-style: none;
  display: flex;
  gap: var(--space-32);
  padding: 0;
}
.site-nav .nav-links a {
  position: relative;
  display: inline-block;
  text-decoration: none;
  color: var(--color-text);
  font-weight: var(--font-weight-body-medium);
  font-size: var(--text-body);
  padding-block: var(--space-4);
  transition: color var(--transition-base);
}
.site-nav .nav-links a::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
  height: 2px;
  border-radius: var(--radius-pill);
  background: var(--color-accent);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 280ms var(--ease-standard);
}
.site-nav .nav-links a:hover {
  color: var(--color-primary);
}
.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"] {
  color: var(--color-primary);
}
.site-nav .nav-links a[aria-current="page"]::after {
  transform: scaleX(1);
}
.site-nav .nav-actions {
  display: flex;
  align-items: center;
  gap: var(--space-12);
}
.site-nav .icon-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  border-radius: var(--radius-pill);
  color: var(--color-text);
  background: transparent;
  border: none;
  transition: background-color var(--transition-base), color var(--transition-base);
}
.site-nav .icon-link:hover {
  background: var(--color-surface);
  color: var(--color-primary);
}
@media (max-width: 720px) {
  .site-nav .nav-toggle {
    display: flex;
  }
  .site-nav .nav-menu {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    flex-direction: column;
    align-items: stretch;
    background: var(--color-bg);
    border-bottom: 1px solid var(--color-border);
    padding: var(--space-16) var(--space-24);
    display: none;
  }
  .site-nav .nav-menu.is-open {
    display: flex;
  }
  .site-nav .nav-links {
    flex-direction: column;
    gap: var(--space-12);
  }
  .site-nav .nav-actions {
    padding-top: var(--space-16);
    border-top: 1px solid var(--color-border);
  }
}

/* ---------- Site footer  (scope: .site-footer) ---------- */
.site-footer {
  margin-top: var(--space-96);
  padding-block: var(--space-64) var(--space-24);
  background: var(--color-surface);
}
.site-footer .footer-top {
  display: flex;
  justify-content: space-between;
  gap: var(--space-32);
  padding-bottom: var(--space-48);
}
.site-footer .footer-brand {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-24);
}
.site-footer .brand {
  display: inline-flex;
  align-items: center;
  gap: var(--space-8);
  text-decoration: none;
  color: var(--color-text);
}
.site-footer .brand-mark {
  color: var(--color-primary);
}
.site-footer .brand-word {
  font-family: var(--font-heading);
  font-weight: var(--font-weight-heading);
  font-size: 1.35rem;
}
.site-footer .footer-contact-label {
  font-weight: var(--font-weight-body-medium);
  color: var(--color-text);
  margin-bottom: var(--space-4);
}
.site-footer .footer-contact a {
  color: var(--color-text-muted);
  text-decoration: underline;
  text-underline-offset: 2px;
  transition: color var(--transition-base);
}
.site-footer .footer-contact a:hover {
  color: var(--color-primary);
}
.site-footer .social-icons {
  display: flex;
  gap: var(--space-12);
}
.site-footer .social-icons a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  border-radius: var(--radius-pill);
  color: var(--color-text);
  background: var(--color-bg);
  transition: background-color var(--transition-base), color var(--transition-base);
}
.site-footer .social-icons a:hover {
  background: var(--color-accent);
  color: var(--color-on-accent);
}
.site-footer .footer-nav-columns {
  display: flex;
  gap: var(--space-64);
  flex-shrink: 0;
}
.site-footer .footer-nav-columns ul {
  list-style: none;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-16);
}
.site-footer .footer-nav-columns a {
  text-decoration: none;
  color: var(--color-text-muted);
  font-size: var(--text-small);
  transition: color var(--transition-base);
}
.site-footer .footer-nav-columns a:hover {
  color: var(--color-primary);
}
.site-footer .footer-divider {
  border-top: 1px solid rgba(10, 54, 34, 0.28);
}
.site-footer .footer-bottom {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-24);
  padding-top: var(--space-24);
}
.site-footer .footer-fine-print {
  color: var(--color-text-muted);
}
.site-footer .footer-legal {
  display: flex;
  gap: var(--space-16);
  flex-shrink: 0;
}
.site-footer .footer-legal a {
  font-size: var(--text-small);
  color: var(--color-text-muted);
  text-decoration: none;
  transition: color var(--transition-base);
}
.site-footer .footer-legal a:hover {
  color: var(--color-primary);
}
@media (max-width: 720px) {
  .site-footer .footer-top {
    flex-direction: column;
    gap: var(--space-32);
  }
  .site-footer .footer-nav-columns {
    gap: var(--space-32);
  }
  .site-footer .footer-bottom {
    flex-direction: column;
    align-items: flex-start;
    gap: var(--space-12);
  }
}


/* ==================== PAGES ==================== */
/* ---------- Home — /  (scope: .page-home) ---------- */
.page-home .section {
  padding-block: var(--space-64);
}
.page-home .section:nth-of-type(even) {
  background: var(--color-surface);
}
.page-home h2 {
  margin-bottom: var(--space-16);
}
.page-home .section-intro {
  color: var(--color-text-muted);
  max-width: 60ch;
  margin-bottom: var(--space-32);
}
.page-home .section-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--space-16);
  margin-bottom: var(--space-32);
}
.page-home .section-head h2 {
  margin-bottom: 0;
}
.page-home .section-link {
  flex-shrink: 0;
  font-weight: var(--font-weight-body-medium);
  text-decoration: none;
  color: var(--color-accent-hover);
  transition: color var(--transition-base);
}
.page-home .section-link:hover {
  color: var(--color-accent);
}
.page-home .hero {
  height: calc(100svh - 75px);
  overflow: hidden;
  display: flex;
  align-items: center;
  padding-block: 0 var(--space-64);
}
.page-home .hero-inner {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  align-items: center;
  gap: var(--space-64);
}
.page-home .hero-content {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  text-align: left;
}
.page-home .hero h1 {
  max-width: 14ch;
  font-size: clamp(2.75rem, 5vw, 4.25rem);
}
.page-home .hero-heading-accent {
  display: block;
  color: var(--color-primary-mid);
}
.page-home .lede {
  margin-top: var(--space-24);
  max-width: 48ch;
  font-size: 1.125rem;
  color: var(--color-text-muted);
}
.page-home .hero-actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-16);
  margin-top: var(--space-32);
}
.page-home .hero-actions .btn {
  padding: var(--space-16) var(--space-32);
  font-size: 1.125rem;
}
.page-home .hero-graphic {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  height: 460px;
  transition: transform 320ms var(--ease-standard);
}
.page-home .hero-graphic:hover {
  transform: scale(1.04);
}
.page-home .graphic-blob {
  position: absolute;
  width: 380px;
  height: 380px;
  border-radius: 50%;
  background: var(--color-primary-tint);
}
.page-home .graphic-tree {
  position: absolute;
  left: 8%;
  bottom: 6%;
  width: 200px;
  height: 220px;
  filter: drop-shadow(var(--shadow-md));
}
.page-home .tree-tier {
  fill: url(#tree-gradient);
}
.page-home .tree-trunk {
  fill: url(#tree-gradient);
}
.page-home .tree-stop-top {
  stop-color: var(--color-primary-mid);
}
.page-home .tree-stop-mid {
  stop-color: var(--color-primary);
}
.page-home .tree-stop-bottom {
  stop-color: var(--color-primary-strong);
}
.page-home .graphic-dot {
  position: absolute;
  border-radius: 50%;
  box-shadow: var(--shadow-sm);
}
.page-home .graphic-dot-a {
  top: 8%;
  right: 18%;
  width: 22px;
  height: 22px;
  background: var(--color-accent);
}
.page-home .graphic-dot-b {
  bottom: 12%;
  left: 4%;
  width: 34px;
  height: 34px;
  background: var(--color-primary-tint);
  border: 2px solid var(--color-primary);
}
.page-home .graphic-dot-c {
  top: 42%;
  right: 4%;
  width: 16px;
  height: 16px;
  background: var(--color-primary-mid);
}
.page-home .graphic-card {
  position: relative;
  width: 240px;
  padding: var(--space-24);
  background: var(--color-surface);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-lg);
  transform: rotate(-4deg);
}
.page-home .graphic-card-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-size: var(--text-small);
  color: var(--color-text-muted);
}
.page-home .graphic-card-badge {
  color: var(--color-accent);
  font-weight: var(--font-weight-body-medium);
}
.page-home .graphic-card-value {
  margin-top: var(--space-8);
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-4);
  font-family: var(--font-heading);
  font-weight: var(--font-weight-heading);
  font-size: var(--text-h4);
  color: var(--color-text);
}
.page-home .graphic-card-number {
  font-variant-numeric: tabular-nums;
}
.page-home .graphic-card-gain {
  display: block;
  font-family: var(--font-body);
  font-size: var(--text-small);
  font-weight: var(--font-weight-body-medium);
  color: var(--color-accent);
  opacity: 0;
  transform: translateY(4px);
  transition: opacity var(--transition-base) 0.35s, transform var(--transition-base) 0.35s;
}
.page-home .hero-graphic:hover .graphic-card-gain {
  opacity: 1;
  transform: translateY(0);
}
.page-home .graphic-chart {
  display: block;
  width: 100%;
  height: 56px;
  margin-top: var(--space-16);
  overflow: hidden;
}
.page-home .graphic-chart-static {
  fill: none;
  stroke: var(--color-accent);
  stroke-width: 3;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-dasharray: 100;
  stroke-dashoffset: 0;
}
.page-home .hero-graphic:hover .graphic-chart-static {
  animation: graphic-chart-grow 1s var(--ease-standard) forwards;
}
@keyframes graphic-chart-grow {
    from { stroke-dashoffset: 100; }
    to { stroke-dashoffset: 0; }
  }
@media (prefers-reduced-motion: reduce) {
  .page-home .hero-graphic:hover .graphic-chart-static {
    animation: none;
  }
}
.page-home .graphic-card-foot {
  display: flex;
  justify-content: space-between;
  margin-top: var(--space-12);
  font-size: var(--text-small);
  color: var(--color-text-muted);
}
.page-home .covers-grid {
  list-style: none;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--space-16);
}
.page-home .covers-item {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-8);
  padding: var(--space-24);
  background: var(--color-surface-soft);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  border-bottom: 3px solid var(--color-primary-tint);
  text-decoration: none;
  color: var(--color-text);
  height: 100%;
  box-shadow: var(--shadow-sm);
  transition: border-color var(--transition-base), box-shadow var(--transition-base), transform var(--transition-base);
}
.page-home .covers-item:hover {
  border-bottom-color: var(--color-accent);
  box-shadow: var(--shadow-md);
  transform: translateY(-3px);
}
.page-home .covers-icon {
  color: var(--color-primary);
  transition: color var(--transition-base);
}
.page-home .covers-item:hover .covers-icon {
  color: var(--color-accent);
}
.page-home .covers-label {
  font-family: var(--font-heading);
  font-weight: var(--font-weight-heading-medium);
  font-size: var(--text-h4);
  color: var(--color-text);
}
.page-home .covers-desc {
  color: var(--color-text-muted);
}
.page-home .lessons-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--space-24);
}
.page-home .lesson-card {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: var(--space-8);
  padding: var(--space-24);
  text-decoration: none;
  color: var(--color-text);
  height: 100%;
}
.page-home .lesson-topic {
  font-size: var(--text-small);
  font-weight: var(--font-weight-heading);
  color: var(--color-primary);
  min-height: var(--space-24);
}
.page-home .lesson-card .badge {
  margin-top: var(--space-4);
}
.page-home .lesson-card h3 {
  font-size: var(--text-h4);
  color: var(--color-primary-strong);
  transition: color var(--transition-base);
}
.page-home .lesson-card p {
  color: var(--color-primary);
  flex-grow: 1;
}
.page-home .tools-grid {
  list-style: none;
  padding: 0;
  border-top: 1px solid var(--color-border);
}
.page-home .tool-row {
  display: flex;
  align-items: center;
  gap: var(--space-20);
  padding: var(--space-16) var(--space-8);
  border-bottom: 1px solid var(--color-border);
  text-decoration: none;
  color: var(--color-text);
  transition: transform var(--transition-base), background-color var(--transition-base);
}
.page-home .tool-row:hover {
  transform: translateX(var(--space-8));
  background: var(--color-surface);
}
.page-home .tool-index {
  flex-shrink: 0;
  width: 2.5ch;
  font-family: var(--font-heading);
  font-size: var(--text-h3);
  font-weight: var(--font-weight-heading);
  color: var(--color-primary-mid);
  opacity: 0.35;
}
.page-home .tool-row:hover .tool-index {
  opacity: 0.7;
}
.page-home .tool-info {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
  flex-grow: 1;
  min-width: 0;
}
.page-home .tool-title {
  font-family: var(--font-heading);
  font-weight: var(--font-weight-heading-medium);
  font-size: var(--text-h4);
}
.page-home .tool-desc {
  color: var(--color-text-muted);
}
.page-home .tool-arrow {
  align-self: center;
  flex-shrink: 0;
  color: var(--color-accent);
  transition: transform var(--transition-base);
}
.page-home .tool-row:hover .tool-arrow {
  transform: translateX(4px);
}
.page-home .follow-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--space-24);
}
.page-home .follow-card {
  position: relative;
  overflow: hidden;
  display: flex;
  align-items: center;
  gap: var(--space-16);
  padding: var(--space-24);
  border-radius: var(--radius-lg);
  text-decoration: none;
  color: var(--color-on-accent);
  box-shadow: var(--shadow-md);
  transition: transform var(--transition-base), box-shadow var(--transition-base);
}
.page-home .follow-card:hover {
  transform: translateY(-3px);
  box-shadow: var(--shadow-lg);
}
.page-home .follow-watermark {
  position: absolute;
  top: -6px;
  right: 2px;
  width: 130px;
  height: auto;
  opacity: 0.16;
  pointer-events: none;
}
.page-home .follow-card--youtube {
  background: var(--color-primary);
}
.page-home .follow-card--instagram {
  background: var(--color-accent);
}
.page-home .follow-icon {
  position: relative;
  z-index: 1;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 52px;
  height: 52px;
  flex-shrink: 0;
  color: var(--color-on-accent);
}
.page-home .follow-text {
  position: relative;
  z-index: 1;
  flex-grow: 1;
}
.page-home .follow-text strong {
  font-family: var(--font-heading);
  font-weight: var(--font-weight-heading-medium);
  font-size: var(--text-h4);
  color: var(--color-on-accent);
}
.page-home .follow-arrow {
  position: relative;
  z-index: 1;
  font-size: var(--text-h4);
  color: var(--color-on-accent);
  transition: transform var(--transition-base);
  flex-shrink: 0;
}
.page-home .follow-card:hover .follow-arrow {
  transform: translateX(4px);
}
@media (max-width: 960px) {
  .page-home .hero {
    height: auto;
  }
  .page-home .hero-inner {
    grid-template-columns: 1fr;
    gap: var(--space-48);
  }
  .page-home .hero-content {
    align-items: center;
    text-align: center;
  }
  .page-home .hero h1 {
    max-width: 16ch;
  }
  .page-home .lede {
    max-width: 52ch;
  }
  .page-home .hero-actions {
    justify-content: center;
  }
  .page-home .hero-graphic {
    height: 360px;
  }
}
@media (max-width: 720px) {
  .page-home .hero {
    padding-block: var(--space-48);
  }
  .page-home .hero-graphic {
    height: 280px;
    transform: scale(0.85);
  }
  .page-home .covers-grid, .page-home .lessons-grid, .page-home .follow-grid {
    grid-template-columns: 1fr;
  }
  .page-home .section-head {
    flex-direction: column;
    align-items: flex-start;
    gap: var(--space-8);
  }
  .page-home .follow-card {
    align-items: flex-start;
  }
}

/* ---------- About — /about  (scope: .page-about) ---------- */
.page-about .section {
  padding-block: var(--space-64);
}
.page-about .section:nth-of-type(even) {
  background: var(--color-surface);
}
.page-about h2 {
  margin-bottom: var(--space-16);
}
.page-about .section-intro {
  color: var(--color-text-muted);
  max-width: 60ch;
  margin-bottom: var(--space-32);
}
.page-about .about-hero {
  padding-block: var(--space-96) var(--space-64);
}
.page-about .about-hero h1 {
  max-width: 20ch;
}
.page-about .lede {
  margin-top: var(--space-16);
  max-width: 60ch;
  font-size: var(--text-h4);
  color: var(--color-text-muted);
  line-height: var(--leading-body);
}
.page-about .hero-actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-16);
  margin-top: var(--space-32);
}
.page-about .mission p + p {
  margin-top: var(--space-16);
}
.page-about .mission p {
  max-width: 70ch;
  color: var(--color-text);
}
.page-about .feature-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--space-24);
}
.page-about .feature-card {
  padding: var(--space-24);
}
.page-about .feature-card h3 {
  margin-bottom: var(--space-8);
}
.page-about .feature-card p {
  color: var(--color-text-muted);
}
.page-about .topic-grid {
  list-style: none;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--space-24);
}
.page-about .topic-card {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-8);
  padding: var(--space-24);
  height: 100%;
  text-decoration: none;
  color: var(--color-text);
}
.page-about .topic-icon {
  color: var(--color-primary);
  transition: color var(--transition-base);
}
.page-about .topic-card:hover .topic-icon {
  color: var(--color-accent);
}
.page-about .topic-card h3 {
  color: var(--color-text);
}
.page-about .topic-card p {
  color: var(--color-text-muted);
}
.page-about .follow-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--space-24);
}
.page-about .follow-card {
  position: relative;
  overflow: hidden;
  display: flex;
  align-items: center;
  gap: var(--space-16);
  padding: var(--space-24);
  border-radius: var(--radius-lg);
  text-decoration: none;
  color: var(--color-on-accent);
  box-shadow: var(--shadow-md);
  transition: transform var(--transition-base), box-shadow var(--transition-base);
}
.page-about .follow-card:hover {
  transform: translateY(-3px);
  box-shadow: var(--shadow-lg);
}
.page-about .follow-watermark {
  position: absolute;
  top: -6px;
  right: 2px;
  width: 130px;
  height: auto;
  opacity: 0.16;
  pointer-events: none;
}
.page-about .follow-card--youtube {
  background: var(--color-primary);
}
.page-about .follow-card--instagram {
  background: var(--color-accent);
}
.page-about .follow-icon {
  position: relative;
  z-index: 1;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 52px;
  height: 52px;
  flex-shrink: 0;
  color: var(--color-on-accent);
}
.page-about .follow-text {
  position: relative;
  z-index: 1;
  flex-grow: 1;
}
.page-about .follow-text strong {
  font-family: var(--font-heading);
  font-weight: var(--font-weight-heading-medium);
  font-size: var(--text-h4);
  color: var(--color-on-accent);
}
.page-about .follow-arrow {
  position: relative;
  z-index: 1;
  font-size: var(--text-h4);
  color: var(--color-on-accent);
  transition: transform var(--transition-base);
  flex-shrink: 0;
}
.page-about .follow-card:hover .follow-arrow {
  transform: translateX(4px);
}
@media (max-width: 720px) {
  .page-about .about-hero {
    padding-block: var(--space-64) var(--space-48);
  }
  .page-about .feature-grid, .page-about .topic-grid, .page-about .follow-grid {
    grid-template-columns: 1fr;
  }
  .page-about .follow-card {
    align-items: flex-start;
  }
}

/* ---------- Learn index — /learn  (scope: .page-learn) ---------- */
.page-learn .learn-hero {
  padding-block: var(--space-96) var(--space-48);
}
.page-learn .learn-hero h1 {
  max-width: 20ch;
}
.page-learn .lede {
  margin-top: var(--space-16);
  max-width: 60ch;
  font-size: var(--text-h4);
  color: var(--color-text-muted);
  line-height: var(--leading-body);
}
.page-learn .filter-bar {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-8);
  margin-top: var(--space-32);
}
.page-learn .filter-btn {
  padding: var(--space-8) var(--space-16);
  border-radius: var(--radius-pill);
  border: 1px solid var(--color-border);
  background: var(--color-surface);
  color: var(--color-text);
  font-size: var(--text-small);
  font-weight: var(--font-weight-body-medium);
  transition: background-color var(--transition-base), color var(--transition-base), border-color var(--transition-base);
}
.page-learn .filter-btn:hover {
  border-color: var(--color-primary);
}
.page-learn .filter-btn.is-active {
  background: var(--color-accent);
  border-color: var(--color-accent);
  color: var(--color-on-accent);
}
.page-learn .lessons {
  padding-block: var(--space-64);
}
.page-learn .lesson-grid {
  list-style: none;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  align-items: start;
  gap: var(--space-24);
}
.page-learn .lesson-card {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: var(--space-8);
  padding: var(--space-24);
  text-decoration: none;
  color: var(--color-text);
}
.page-learn .lesson-topic {
  font-size: var(--text-small);
  font-weight: var(--font-weight-heading);
  color: var(--color-primary);
  min-height: var(--space-24);
}
.page-learn .lesson-card h2 {
  font-size: var(--text-h4);
  color: var(--color-primary-strong);
  transition: color var(--transition-base);
}
.page-learn .lesson-card p {
  color: var(--color-primary);
}
.page-learn .empty-state {
  color: var(--color-text-muted);
  text-align: center;
  padding-block: var(--space-48);
}
@media (max-width: 720px) {
  .page-learn .learn-hero {
    padding-block: var(--space-64) var(--space-32);
  }
  .page-learn .lesson-grid {
    grid-template-columns: 1fr;
  }
}

/* ---------- Lesson pages — /learn/*  (scope: .page-lesson) ---------- */
.page-lesson .lesson {
  padding-block: var(--space-48) var(--space-96);
}
.page-lesson .back-link {
  display: inline-block;
  color: var(--color-text-muted);
  text-decoration: none;
  font-size: var(--text-small);
  margin-bottom: var(--space-24);
  transition: color var(--transition-base);
}
.page-lesson .back-link:hover {
  color: var(--color-primary);
}
.page-lesson .lesson-header {
  max-width: 70ch;
  margin-bottom: var(--space-48);
}
.page-lesson .lesson-header h1 {
  margin-top: var(--space-16);
}
.page-lesson .lesson-meta {
  color: var(--color-text-muted);
  margin-top: var(--space-8);
}
.page-lesson .lesson-content {
  max-width: 70ch;
  display: flex;
  flex-direction: column;
  gap: var(--space-48);
  margin-bottom: var(--space-64);
}
.page-lesson .lesson-content h2 {
  font-size: var(--text-h3);
  margin-bottom: var(--space-16);
}
.page-lesson .lesson-content p + p {
  margin-top: var(--space-16);
}
.page-lesson .lesson-content p {
  color: var(--color-text);
}
.page-lesson .lesson-quiz {
  max-width: 70ch;
  margin-bottom: var(--space-64);
}
.page-lesson .lesson-quiz h2 {
  font-size: var(--text-h3);
  margin-bottom: var(--space-24);
}
.page-lesson .lesson-nav {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: var(--space-16);
  max-width: 70ch;
  padding-top: var(--space-32);
  border-top: 1px solid var(--color-border);
}
.page-lesson .lesson-next-btn {
  max-width: 320px;
}
.page-lesson .lesson-next-static {
  flex-shrink: 0;
}
.page-lesson .lesson-next-title {
  min-width: 0;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}
@media (max-width: 720px) {
  .page-lesson .lesson {
    padding-block: var(--space-32) var(--space-64);
  }
  .page-lesson .lesson-nav {
    flex-direction: column;
    align-items: stretch;
  }
  .page-lesson .lesson-nav .btn {
    text-align: center;
  }
  .page-lesson .lesson-next-btn {
    max-width: none;
  }
}

/* ---------- Tools index — /tools  (scope: .page-tools) ---------- */
.page-tools .tools-hero {
  padding-block: var(--space-96) var(--space-48);
}
.page-tools .tools-hero h1 {
  max-width: 20ch;
}
.page-tools .lede {
  margin-top: var(--space-16);
  max-width: 60ch;
  font-size: var(--text-h4);
  color: var(--color-text-muted);
  line-height: var(--leading-body);
}
.page-tools .section {
  padding-block: var(--space-16) var(--space-96);
}
.page-tools .calc-grid-select {
  list-style: none;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: var(--space-24);
}
.page-tools .calc-select-card {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: var(--space-8);
  padding: var(--space-24);
  height: 100%;
  text-decoration: none;
  color: var(--color-text);
}
.page-tools .calc-select-icon {
  display: inline-flex;
  align-items: center;
  min-height: var(--space-24);
  color: var(--color-primary-mid);
}
.page-tools .calc-select-title {
  font-family: var(--font-heading);
  font-weight: var(--font-weight-heading-medium);
  font-size: var(--text-h4);
  color: var(--color-primary-strong);
  transition: color var(--transition-base);
}
.page-tools .calc-select-desc {
  color: var(--color-primary);
  flex-grow: 1;
}
@media (max-width: 720px) {
  .page-tools .tools-hero {
    padding-block: var(--space-64) var(--space-32);
  }
}

/* ---------- Blog index — /blog  (scope: .page-blog) ---------- */
.page-blog .blog-hero {
  padding-block: var(--space-96) var(--space-48);
}
.page-blog .blog-hero h1 {
  max-width: 20ch;
}
.page-blog .lede {
  margin-top: var(--space-16);
  max-width: 60ch;
  font-size: var(--text-h4);
  color: var(--color-text-muted);
  line-height: var(--leading-body);
}
.page-blog .post-grid {
  list-style: none;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: var(--space-24);
}
.page-blog .post-card {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-8);
  padding: var(--space-24);
  height: 100%;
  text-decoration: none;
  color: var(--color-text);
}
.page-blog .post-card-icon {
  color: var(--color-primary);
  transition: color var(--transition-base);
}
.page-blog .post-card:hover .post-card-icon {
  color: var(--color-accent);
}
.page-blog .post-card h2 {
  font-size: var(--text-h4);
}
.page-blog .post-card p {
  color: var(--color-text-muted);
}
.page-blog .post-meta {
  margin-top: auto;
  padding-top: var(--space-8);
  color: var(--color-text-muted);
}
.page-blog .empty-state {
  max-width: 48rem;
  margin-inline: auto;
  text-align: center;
  padding-block: var(--space-64);
}
.page-blog .empty-lede {
  color: var(--color-text-muted);
  font-size: var(--text-h4);
  line-height: var(--leading-body);
  margin-bottom: var(--space-32);
}
.page-blog .empty-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: var(--space-16);
}
@media (max-width: 960px) {
  .page-blog .post-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}
@media (max-width: 720px) {
  .page-blog .blog-hero {
    padding-block: var(--space-64) var(--space-32);
  }
  .page-blog .post-grid {
    grid-template-columns: 1fr;
  }
  .page-blog .empty-lede {
    font-size: var(--text-body);
  }
}

/* ---------- Blog post — /blog/*  (scope: .page-post) ---------- */
.page-post .post {
  padding-block: var(--space-48) var(--space-96);
}
.page-post .back-link {
  display: inline-block;
  color: var(--color-text-muted);
  text-decoration: none;
  font-size: var(--text-small);
  margin-bottom: var(--space-24);
  transition: color var(--transition-base);
}
.page-post .back-link:hover {
  color: var(--color-primary);
}
.page-post .post-header {
  max-width: 70ch;
  margin-bottom: var(--space-48);
}
.page-post .post-header h1 {
  margin-top: var(--space-16);
}
.page-post .post-meta {
  color: var(--color-text-muted);
  margin-top: var(--space-8);
}
.page-post .post-content {
  max-width: 70ch;
  color: var(--color-text);
  margin-bottom: var(--space-64);
}
.page-post .post-content :global(h2) {
  font-size: var(--text-h3);
  margin-top: var(--space-32);
  margin-bottom: var(--space-16);
}
.page-post .post-content :global(h3) {
  font-size: var(--text-h4);
  margin-top: var(--space-24);
  margin-bottom: var(--space-12);
}
.page-post .post-content :global(p) {
  margin-bottom: var(--space-16);
}
.page-post .post-content :global(ul), .page-post .post-content :global(ol) {
  margin-bottom: var(--space-16);
  padding-inline-start: var(--space-24);
}
.page-post .post-content :global(li) {
  margin-bottom: var(--space-8);
}
.page-post .post-content :global(a) {
  color: var(--color-accent-hover);
}
.page-post .post-content :global(strong) {
  font-weight: var(--font-weight-body-medium);
}
.page-post .post-nav {
  max-width: 70ch;
  padding-top: var(--space-32);
  border-top: 1px solid var(--color-border);
}
@media (max-width: 720px) {
  .page-post .post {
    padding-block: var(--space-32) var(--space-64);
  }
}

/* ---------- Privacy — /privacy  (scope: .page-privacy) ---------- */
.page-privacy .legal-hero {
  padding-block: var(--space-96) var(--space-48);
}
.page-privacy .legal-hero h1 {
  max-width: 20ch;
}
.page-privacy .legal-updated {
  margin-top: var(--space-8);
  color: var(--color-text-muted);
}
.page-privacy .lede {
  margin-top: var(--space-16);
  max-width: 60ch;
  font-size: var(--text-h4);
  color: var(--color-text-muted);
  line-height: var(--leading-body);
}
.page-privacy .legal-body {
  padding-block: 0 var(--space-96);
}
.page-privacy .legal-body p {
  max-width: 70ch;
  color: var(--color-text);
}
.page-privacy .legal-body p + p {
  margin-top: var(--space-16);
}
@media (max-width: 720px) {
  .page-privacy .legal-hero {
    padding-block: var(--space-64) var(--space-32);
  }
}

/* ---------- Terms — /terms  (scope: .page-terms) ---------- */
.page-terms .legal-hero {
  padding-block: var(--space-96) var(--space-48);
}
.page-terms .legal-hero h1 {
  max-width: 20ch;
}
.page-terms .legal-updated {
  margin-top: var(--space-8);
  color: var(--color-text-muted);
}
.page-terms .lede {
  margin-top: var(--space-16);
  max-width: 60ch;
  font-size: var(--text-h4);
  color: var(--color-text-muted);
  line-height: var(--leading-body);
}
.page-terms .legal-body {
  padding-block: 0 var(--space-96);
}
.page-terms .legal-body h2 {
  font-size: var(--text-h3);
  margin-top: var(--space-32);
  margin-bottom: var(--space-12);
}
.page-terms .legal-body h2:first-child {
  margin-top: 0;
}
.page-terms .legal-body p {
  max-width: 70ch;
  color: var(--color-text);
}
@media (max-width: 720px) {
  .page-terms .legal-hero {
    padding-block: var(--space-64) var(--space-32);
  }
}

/* ---------- Not found — /404.html  (scope: .page-404) ---------- */
.page-404 .not-found {
  padding-block: var(--space-64) var(--space-96);
}
.page-404 .not-found-inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  max-width: 40rem;
  margin-inline: auto;
}
.page-404 .not-found-visual {
  height: 160px;
  display: flex;
  align-items: flex-end;
  margin-bottom: var(--space-32);
}
.page-404 .not-found-tree {
  width: 140px;
  height: auto;
  filter: drop-shadow(var(--shadow-md));
}
.page-404 .tree-tier {
  fill: url(#not-found-tree-gradient);
}
.page-404 .tree-trunk {
  fill: url(#not-found-tree-gradient);
}
.page-404 .tree-stop-top {
  stop-color: var(--color-primary-mid);
}
.page-404 .tree-stop-mid {
  stop-color: var(--color-primary);
}
.page-404 .tree-stop-bottom {
  stop-color: var(--color-primary-strong);
}
.page-404 .not-found h1 {
  font-size: clamp(2rem, 4vw, 2.75rem);
  letter-spacing: -0.02em;
  text-wrap: balance;
}
.page-404 .lede {
  margin-top: var(--space-16);
  max-width: 42ch;
  color: var(--color-text-muted);
}
.page-404 .not-found-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: var(--space-16);
  margin-top: var(--space-32);
}
@media (max-width: 720px) {
  .page-404 .not-found {
    padding-block: var(--space-48) var(--space-64);
  }
}
