/* Castle Mountain Advisory — Design Tokens
   ──────────────────────────────────────────
   Anchored by the logo's black/white. Warm-toned neutrals
   (not cool gray) reference stone and weathered paper.
   Accents are conservative: deep navy primary, warm stone
   secondary, muted brass tertiary. */

:root {
  /* ── Type families ─────────────────────────────── */
  --font-display: "Source Serif 4", "Source Serif Pro", Georgia, serif;
  --font-body: "Geist", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;

  /* ── Type scale (modular, 1.25 ratio above body) ── */
  --fs-mono: 11px;       /* eyebrow / metadata */
  --fs-caption: 13px;
  --fs-body-sm: 14px;
  --fs-body: 16px;
  --fs-body-lg: 18px;
  --fs-lede: 22px;
  --fs-h4: 24px;
  --fs-h3: 32px;
  --fs-h2: 44px;
  --fs-h1: 64px;
  --fs-display: 96px;

  --lh-tight: 1.05;
  --lh-snug: 1.2;
  --lh-normal: 1.45;
  --lh-loose: 1.65;

  /* ── 8pt spacing scale ───────────────────────────── */
  --s-1: 4px;
  --s-2: 8px;
  --s-3: 12px;
  --s-4: 16px;
  --s-5: 24px;
  --s-6: 32px;
  --s-7: 48px;
  --s-8: 64px;
  --s-9: 96px;
  --s-10: 128px;
  --s-11: 192px;

  /* ── Radii (restrained — premium reads as flat) ─── */
  --r-0: 0px;
  --r-1: 2px;
  --r-2: 4px;
  --r-3: 8px;

  /* ── Light mode colors (warm-toned) ──────────────── */
  --bg: oklch(0.985 0.004 80);          /* warm paper */
  --bg-sunken: oklch(0.965 0.005 80);
  --bg-raised: oklch(1 0 0);
  --bg-inverse: oklch(0.16 0.006 60);

  --ink: oklch(0.16 0.006 60);          /* warm near-black */
  --ink-2: oklch(0.32 0.006 60);        /* secondary */
  --ink-3: oklch(0.52 0.006 60);        /* tertiary, captions */
  --ink-4: oklch(0.72 0.006 60);        /* placeholder, faded */
  --ink-inverse: oklch(0.985 0.004 80);

  --rule: oklch(0.88 0.005 70);         /* divider lines */
  --rule-strong: oklch(0.78 0.006 70);

  /* Accents — all share similar chroma/lightness */
  --navy: oklch(0.30 0.045 255);        /* deep navy primary */
  --navy-ink: oklch(0.20 0.04 255);     /* deeper, for hover */
  --stone: oklch(0.58 0.035 70);        /* warm stone */
  --brass: oklch(0.62 0.075 78);        /* muted brass */
  --pine: oklch(0.38 0.045 155);        /* forest accent */

  --accent: var(--navy);
  --accent-ink: var(--navy-ink);
  --accent-soft: oklch(0.93 0.018 255);

  /* Functional */
  --focus: oklch(0.55 0.15 255);
}

[data-accent="stone"] {
  --accent: oklch(0.45 0.025 65);
  --accent-ink: oklch(0.35 0.025 65);
  --accent-soft: oklch(0.94 0.012 70);
}
[data-accent="brass"] {
  --accent: oklch(0.50 0.06 78);
  --accent-ink: oklch(0.40 0.06 78);
  --accent-soft: oklch(0.95 0.02 78);
}
[data-accent="pine"] {
  --accent: oklch(0.38 0.045 155);
  --accent-ink: oklch(0.28 0.045 155);
  --accent-soft: oklch(0.94 0.015 155);
}
[data-accent="mono"] {
  --accent: oklch(0.16 0.006 60);
  --accent-ink: oklch(0.05 0 0);
  --accent-soft: oklch(0.93 0.004 70);
}

/* ── Dark mode ──────────────────────────────────── */
[data-theme="dark"] {
  --bg: oklch(0.135 0.005 60);
  --bg-sunken: oklch(0.105 0.005 60);
  --bg-raised: oklch(0.175 0.005 60);
  --bg-inverse: oklch(0.985 0.004 80);

  --ink: oklch(0.96 0.004 80);
  --ink-2: oklch(0.78 0.005 70);
  --ink-3: oklch(0.58 0.006 70);
  --ink-4: oklch(0.40 0.006 70);
  --ink-inverse: oklch(0.16 0.006 60);

  --rule: oklch(0.28 0.006 70);
  --rule-strong: oklch(0.38 0.008 70);

  --accent: oklch(0.72 0.05 250);
  --accent-ink: oklch(0.82 0.04 250);
  --accent-soft: oklch(0.25 0.02 250);
}
[data-theme="dark"][data-accent="stone"] {
  --accent: oklch(0.78 0.025 70);
  --accent-ink: oklch(0.88 0.025 70);
  --accent-soft: oklch(0.26 0.015 70);
}
[data-theme="dark"][data-accent="brass"] {
  --accent: oklch(0.80 0.07 80);
  --accent-ink: oklch(0.88 0.06 80);
  --accent-soft: oklch(0.28 0.03 80);
}
[data-theme="dark"][data-accent="pine"] {
  --accent: oklch(0.78 0.04 155);
  --accent-ink: oklch(0.86 0.04 155);
  --accent-soft: oklch(0.25 0.02 155);
}
[data-theme="dark"][data-accent="mono"] {
  --accent: oklch(0.96 0.004 80);
  --accent-ink: oklch(1 0 0);
  --accent-soft: oklch(0.22 0.005 70);
}

/* Logo art inversion for dark mode (since logo is black on white) */
[data-theme="dark"] .logo-invert {
  filter: invert(1) brightness(0.95);
}

/* ── Base reset ─────────────────────────────────── */
* {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}
html {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  background: var(--bg);
}
body {
  font-family: var(--font-body);
  font-size: var(--fs-body);
  line-height: var(--lh-normal);
  color: var(--ink);
  background: var(--bg);
  font-feature-settings: "ss01", "cv01";
}

/* Display & headline type */
.serif { font-family: var(--font-display); font-weight: 400; letter-spacing: -0.01em; }
.mono { font-family: var(--font-mono); font-size: var(--fs-mono); letter-spacing: 0.08em; text-transform: uppercase; color: var(--ink-3); }

/* Selection */
::selection { background: var(--accent); color: var(--ink-inverse); }
