/* ===========================================================================
   ARiseMatic — design tokens (production copy of the design-system tokens).
   Source of truth: brand-assets/design-import/.../project/tokens/*.css
   Font paths adjusted for this site's layout. Do not edit values here without
   updating the design system first.
   =========================================================================== */

/* ---- Webfonts ---- */
/* Geist + Geist Mono are variable fonts (wght axis 100-900): one file covers the
   declared range and the browser renders each weight from the axis. */
@font-face { font-family: 'Geist'; font-style: normal; font-weight: 400 600; font-display: swap; src: url(../assets/fonts/geist-400.woff2) format('woff2'); }
@font-face { font-family: 'Geist Mono'; font-style: normal; font-weight: 400 500; font-display: swap; src: url(../assets/fonts/geist-mono-400.woff2) format('woff2'); }
@font-face { font-family: 'Libre Baskerville'; font-style: normal; font-weight: 400; font-display: swap; src: url(../assets/fonts/libre-baskerville-400.woff2) format('woff2'); }
@font-face { font-family: 'Libre Baskerville'; font-style: italic; font-weight: 400; font-display: swap; src: url(../assets/fonts/libre-baskerville-400-italic.woff2) format('woff2'); }
@font-face { font-family: 'Libre Baskerville'; font-style: normal; font-weight: 700; font-display: swap; src: url(../assets/fonts/libre-baskerville-700.woff2) format('woff2'); }

:root {
  /* ---- Brand core (raw) ---- */
  /* WCAG AA override 2026-06-11 (web only — design-system source unchanged):
     stone 7C7264→645B4E (4.05→5.7:1 on cream), stone-light A89C8B→716754
     (2.31→4.8:1).
     PALETTE v2 — redesign 2026-06-12 (decisions log): grounded green is the
     anchor. Pine = dark world + action color; straw = light accent on green;
     cream canvas unchanged; amber demoted to small warm highlights (and
     amber-deep darkened 9E6420→875415, 4.19→5.45:1 — clears the eyebrow flag).
     Verified pairs: pine/cream 9.6, straw/pine 9.45, straw-soft/pine 8.7,
     on-ink-muted/pine 6.2. Re-run tools/contrast.py before changing any pair. */
  --cream: #F3EDE2; --paper: #FBF8F2; --paper-sunk: #ECE4D6;
  --ink: #211C17; --ink-soft: #463E34; --stone: #645B4E; --stone-light: #716754;

  /* ---- Accents ---- */
  --pine: #16432F; --pine-deep: #0D2B1F; --pine-hover: #1D5C40; --pine-tint: #DFE7DC;
  --straw: #F5ECCB; --straw-soft: #E9E3D2;
  --amber: #BE7B2C; --amber-deep: #875415; --amber-tint: #F0E2CC;
  --terracotta: #B05236; --terracotta-deep: #8F3E27; --terracotta-tint: #F1DFD6;
  --sage: #7E835F; --sage-deep: #5E6344; --sage-tint: #E3E4D6;

  /* ---- Status ---- */
  --success: #5F7048; --success-tint: #E2E7D7;
  --warning: #DDA53A; --warning-tint: #F6E8C9;
  --error: #9E3322; --error-tint: #F1DBD3;

  /* ---- Hairlines ---- */
  --line: rgba(33, 28, 23, 0.14); --line-soft: rgba(33, 28, 23, 0.08);
  --line-strong: rgba(33, 28, 23, 0.22); --line-cream: rgba(245, 236, 203, 0.18);

  /* ---- Semantic aliases ---- */
  --surface-page: var(--cream); --surface-card: var(--paper); --surface-sunk: var(--paper-sunk);
  --surface-ink: var(--pine); --surface-hover: var(--pine-tint);
  --text-strong: var(--ink); --text-body: var(--ink-soft); --text-muted: var(--stone);
  --text-subtle: var(--stone-light); --text-on-ink: var(--straw-soft); --text-on-ink-muted: #B9C4B4;
  --text-link: var(--pine);
  --action: var(--pine); --action-hover: var(--pine-hover); --action-press: var(--pine-deep);
  --action-text: var(--straw);
  --focus-ring: var(--pine);
  --border: var(--line); --border-soft: var(--line-soft); --border-strong: var(--line-strong);
  --status-success: var(--success); --status-warning: #8A6312; --status-error: var(--error);

  /* ---- Type ---- */
  --font-serif: 'Libre Baskerville', Georgia, 'Times New Roman', serif;
  --font-sans: 'Geist', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --font-mono: 'Geist Mono', 'SF Mono', ui-monospace, 'Roboto Mono', monospace;
  --weight-regular: 400; --weight-medium: 500; --weight-semibold: 600; --weight-bold: 700;
  --display-2xl: 4.5rem; --display-xl: 3.5rem; --display-lg: 2.75rem; --display-md: 2rem; --display-sm: 1.5rem;
  --text-xl: 1.3125rem; --text-lg: 1.125rem; --text-md: 1rem; --text-sm: 0.875rem; --text-xs: 0.8125rem;
  --label-md: 0.75rem; --label-sm: 0.6875rem;
  --leading-tight: 1.15; --leading-snug: 1.3; --leading-normal: 1.6; --leading-relaxed: 1.75;
  --tracking-display: -0.01em; --tracking-normal: 0; --tracking-wide: 0.04em;
  --tracking-label: 0.2em; --tracking-descriptor: 0.5em;

  /* ---- Spacing / layout ---- */
  --space-1: 0.25rem; --space-2: 0.5rem; --space-3: 0.75rem; --space-4: 1rem;
  --space-5: 1.5rem; --space-6: 2rem; --space-7: 2.5rem; --space-8: 3.5rem;
  --space-9: 4.5rem; --space-10: 6rem; --space-11: 8rem;
  --measure: 62ch; --container-sm: 640px; --container-md: 880px;
  --container-lg: 1120px; --container-xl: 1320px; --gutter: 2rem;
  --radius-xs: 4px; --radius-sm: 8px; --radius-md: 10px; --radius-lg: 14px;
  --radius-xl: 20px; --radius-pill: 999px;
  --control-sm: 36px; --control-md: 44px; --control-lg: 52px;

  /* ---- Elevation / glow / motion ---- */
  --shadow-xs: 0 1px 2px rgba(33, 28, 23, 0.06);
  --shadow-sm: 0 1px 3px rgba(33, 28, 23, 0.07), 0 1px 2px rgba(33, 28, 23, 0.05);
  --shadow-md: 0 4px 12px rgba(33, 28, 23, 0.08), 0 1px 3px rgba(33, 28, 23, 0.05);
  --shadow-lg: 0 12px 32px rgba(33, 28, 23, 0.10), 0 3px 8px rgba(33, 28, 23, 0.06);
  --shadow-xl: 0 24px 60px rgba(33, 28, 23, 0.14), 0 6px 16px rgba(33, 28, 23, 0.07);
  --shadow-inset: inset 0 1px 2px rgba(33, 28, 23, 0.07);
  --glow-rest: 0 1px 2px rgba(33, 28, 23, 0.10), 0 0 0 0 rgba(22, 67, 47, 0.00);
  --glow-hover: 0 2px 10px rgba(33, 28, 23, 0.10), 0 0 0 4px rgba(22, 67, 47, 0.13), 0 0 18px 2px rgba(22, 67, 47, 0.24);
  --glow-press: 0 1px 3px rgba(33, 28, 23, 0.14), 0 0 0 5px rgba(22, 67, 47, 0.18), 0 0 26px 4px rgba(22, 67, 47, 0.32);
  --glow-focus: 0 0 0 3px var(--cream), 0 0 0 5px rgba(22, 67, 47, 0.55);
  --glow-neutral-hover: 0 2px 10px rgba(33, 28, 23, 0.12), 0 0 0 4px rgba(33, 28, 23, 0.05);
  --ease-out: cubic-bezier(0.22, 1, 0.36, 1);
  --ease-soft: cubic-bezier(0.4, 0, 0.2, 1);
  --ease-in: cubic-bezier(0.4, 0, 1, 1);
  --dur-fast: 140ms; --dur-base: 220ms; --dur-slow: 360ms; --dur-slower: 560ms;
  --transition-control: box-shadow var(--dur-base) var(--ease-soft), transform var(--dur-fast) var(--ease-soft), background-color var(--dur-base) var(--ease-soft), border-color var(--dur-base) var(--ease-soft), color var(--dur-base) var(--ease-soft);
}

/* ---- Base layer ---- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
  margin: 0; background: var(--surface-page); color: var(--text-body);
  font-family: var(--font-sans); font-size: var(--text-md);
  line-height: var(--leading-normal); font-weight: var(--weight-regular);
  -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-rendering: optimizeLegibility;
}
h1, h2, h3, h4 {
  font-family: var(--font-serif); font-weight: var(--weight-regular);
  line-height: var(--leading-tight); letter-spacing: var(--tracking-display);
  color: var(--text-strong); margin: 0; text-wrap: balance;
}
p { margin: 0 0 var(--space-4); text-wrap: pretty; }
a { color: inherit; text-decoration: none; transition: color var(--dur-base) var(--ease-soft); }
strong, b { font-weight: var(--weight-medium); }
::selection { background: var(--pine-tint); color: var(--pine-deep); }
:focus-visible { outline: 2px solid var(--focus-ring); outline-offset: 2px; }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 0.001ms !important; animation-iteration-count: 1 !important; transition-duration: 0.001ms !important; }
}
