/* ═══════════════════════════════════════════════════════════════════
   Hearth v2 — Design System Foundation
   For the Dottie rebrand. Additive only — existing pages unaffected.

   HOW TO USE:
   - Add class="hearth" to any container to scope these tokens in.
   - Or use .hearth-body on <body> when a page is fully reskinned.
   - Utility classes (.h-bg-cream, .h-text-clay, etc.) apply tokens
     without requiring scoped parents.

   IMPORTANT: This file does NOT modify any existing styles.
   The rebrand applies page-by-page as routes are migrated.
   ═══════════════════════════════════════════════════════════════════ */

/* ── Fallback fonts — CLS prevention for Inter Tight + JetBrains Mono ── */

@font-face {
  font-family: 'InterTight-fallback';
  src: local('Arial');
  size-adjust: 105%;
  ascent-override: 90%;
  descent-override: 22%;
  line-gap-override: 0%;
}

@font-face {
  font-family: 'JetBrainsMono-fallback';
  src: local('Courier New');
  size-adjust: 87%;
  ascent-override: 95%;
  descent-override: 25%;
  line-gap-override: 0%;
}

/* ── CSS Custom Properties — Hearth v2 Token Set ── */

:root {
  /* ── Colors ───────────────────────────────────────────────────────── */

  /* Backgrounds */
  --h-cream:         #F4EFE6;  /* page background */
  --h-paper:         #FBF7EE;  /* cards / elevated surfaces */
  --h-warm-tan:      #EDE5D5;  /* alternate section background */

  /* Text */
  --h-ink:           #2A2622;  /* body text — primary */
  --h-ink-soft:      #4A453E;  /* secondary text */
  --h-ink-muted:     #7A7165;  /* tertiary / captions */

  /* Accent / CTA */
  --h-clay:          #C97B5E;  /* primary CTA / accent */
  --h-clay-deep:     #A65A40;  /* hover / links / eyebrows */

  /* Semantic */
  --h-sage:          #7A8E73;  /* success / tags */
  --h-sage-deep:     #4F6049;  /* journey moments / dark sections */
  --h-butter:        #E8C77E;  /* highlights on dark backgrounds */

  /* Borders / Dividers */
  --h-rule:          #D9CFB9;

  /* ── Typography ───────────────────────────────────────────────────── */

  --h-font-display:  'Inter Tight', 'InterTight-fallback', -apple-system, sans-serif;
  --h-font-body:     'Inter Tight', 'InterTight-fallback', -apple-system, sans-serif;
  --h-font-mono:     'JetBrains Mono', 'JetBrainsMono-fallback', 'Courier New', monospace;

  /* Display scale — 0.96 line-height, tight tracking */
  --h-display-weight:    600;
  --h-display-tracking:  -0.04em;
  --h-display-leading:   0.96;

  /* Heading scale */
  --h-heading-weight:    600;
  --h-heading-tracking:  -0.025em;
  --h-heading-leading:   1.15;

  /* Body */
  --h-body-weight:       400;
  --h-body-tracking:     -0.005em;
  --h-body-leading:      1.55;
  --h-body-size-min:     17px;

  /* Eyebrow (mono, uppercase, spaced) */
  --h-eyebrow-weight:    500;
  --h-eyebrow-tracking:  0.16em;

  /* ── Spacing Scale (px → rem) ─────────────────────────────────────── */
  --h-space-1:   0.25rem;  /*  4px */
  --h-space-2:   0.5rem;   /*  8px */
  --h-space-3:   0.75rem;  /* 12px */
  --h-space-4:   1rem;     /* 16px */
  --h-space-6:   1.5rem;   /* 24px */
  --h-space-8:   2rem;     /* 32px */
  --h-space-12:  3rem;     /* 48px */
  --h-space-14:  3.5rem;   /* 56px */
  --h-space-18:  4.5rem;   /* 72px */
  --h-space-22:  5.5rem;   /* 88px */

  /* ── Focus Ring ───────────────────────────────────────────────────── */
  --h-focus-ring: 2px solid var(--h-clay-deep);
  --h-focus-offset: 2px;

  /* ── Tap Target minimum ───────────────────────────────────────────── */
  --h-tap-min: 44px;
}

/* ════════════════════════════════════════════════════════════════════
   SCOPED BASE STYLES
   Applied only inside .hearth or .hearth-body containers.
   Pages without these classes are completely unaffected.
   ════════════════════════════════════════════════════════════════════ */

.hearth,
.hearth-body {
  font-family: var(--h-font-body);
  font-size: var(--h-body-size-min);
  font-weight: var(--h-body-weight);
  letter-spacing: var(--h-body-tracking);
  line-height: var(--h-body-leading);
  color: var(--h-ink);
  background-color: var(--h-cream);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* When applied to body (full reskin) */
body.hearth-body {
  background-color: var(--h-cream);
  min-font-size: var(--h-body-size-min);
}

/* Headings inside hearth scope */
.hearth h1, .hearth-body h1,
.hearth h2, .hearth-body h2,
.hearth h3, .hearth-body h3,
.hearth h4, .hearth-body h4,
.hearth h5, .hearth-body h5,
.hearth h6, .hearth-body h6 {
  font-family: var(--h-font-display);
  font-weight: var(--h-heading-weight);
  letter-spacing: var(--h-heading-tracking);
  line-height: var(--h-heading-leading);
  color: var(--h-ink);
}

/* Links inside hearth scope */
.hearth a, .hearth-body a {
  color: var(--h-clay-deep);
  text-decoration-color: color-mix(in srgb, var(--h-clay-deep) 40%, transparent);
  transition: color 0.2s ease, text-decoration-color 0.2s ease;
}
.hearth a:hover, .hearth-body a:hover {
  color: var(--h-clay);
  text-decoration-color: var(--h-clay);
}

/* Focus ring — all interactive elements */
.hearth *:focus-visible,
.hearth-body *:focus-visible {
  outline: var(--h-focus-ring);
  outline-offset: var(--h-focus-offset);
  border-radius: 2px;
}

/* Tap targets */
.hearth button,
.hearth [role="button"],
.hearth input[type="submit"],
.hearth input[type="button"],
.hearth-body button,
.hearth-body [role="button"],
.hearth-body input[type="submit"],
.hearth-body input[type="button"] {
  min-height: var(--h-tap-min);
  min-width: var(--h-tap-min);
}

/* Horizontal rules / borders */
.hearth hr, .hearth-body hr {
  border: none;
  border-top: 1px solid var(--h-rule);
}

/* ════════════════════════════════════════════════════════════════════
   TYPOGRAPHY UTILITIES
   Prefix: h- to avoid collisions with existing tailwind.css classes
   ════════════════════════════════════════════════════════════════════ */

/* Display — hero headings */
.h-display {
  font-family: var(--h-font-display);
  font-weight: var(--h-display-weight);
  letter-spacing: var(--h-display-tracking);
  line-height: var(--h-display-leading);
}

/* Heading */
.h-heading {
  font-family: var(--h-font-display);
  font-weight: var(--h-heading-weight);
  letter-spacing: var(--h-heading-tracking);
  line-height: var(--h-heading-leading);
}

/* Body (explicit utility) */
.h-body {
  font-family: var(--h-font-body);
  font-weight: var(--h-body-weight);
  letter-spacing: var(--h-body-tracking);
  line-height: var(--h-body-leading);
  font-size: var(--h-body-size-min);
}

/* Eyebrow — label above headings, mono uppercase */
.h-eyebrow {
  font-family: var(--h-font-mono);
  font-weight: var(--h-eyebrow-weight);
  letter-spacing: var(--h-eyebrow-tracking);
  text-transform: uppercase;
  font-size: 0.75rem;
}

/* Mono */
.h-mono {
  font-family: var(--h-font-mono);
  font-weight: 400;
}

/* ════════════════════════════════════════════════════════════════════
   COLOR UTILITIES — Background
   ════════════════════════════════════════════════════════════════════ */

.h-bg-cream      { background-color: var(--h-cream); }
.h-bg-paper      { background-color: var(--h-paper); }
.h-bg-warm-tan   { background-color: var(--h-warm-tan); }
.h-bg-clay       { background-color: var(--h-clay); }
.h-bg-clay-deep  { background-color: var(--h-clay-deep); }
.h-bg-sage       { background-color: var(--h-sage); }
.h-bg-sage-deep  { background-color: var(--h-sage-deep); }
.h-bg-butter     { background-color: var(--h-butter); }
.h-bg-ink        { background-color: var(--h-ink); }

/* ════════════════════════════════════════════════════════════════════
   COLOR UTILITIES — Text
   ════════════════════════════════════════════════════════════════════ */

.h-text-ink       { color: var(--h-ink); }
.h-text-soft      { color: var(--h-ink-soft); }
.h-text-muted     { color: var(--h-ink-muted); }
.h-text-clay      { color: var(--h-clay); }
.h-text-clay-deep { color: var(--h-clay-deep); }
.h-text-sage      { color: var(--h-sage); }
.h-text-sage-deep { color: var(--h-sage-deep); }
.h-text-butter    { color: var(--h-butter); }
.h-text-cream     { color: var(--h-cream); }

/* ════════════════════════════════════════════════════════════════════
   BORDER UTILITIES
   ════════════════════════════════════════════════════════════════════ */

.h-border         { border: 1px solid var(--h-rule); }
.h-border-clay    { border: 1px solid var(--h-clay); }
.h-border-sage    { border: 1px solid var(--h-sage); }
.h-divide > * + * { border-top: 1px solid var(--h-rule); }

/* ════════════════════════════════════════════════════════════════════
   SPACING UTILITIES
   ════════════════════════════════════════════════════════════════════ */

.h-p-1  { padding: var(--h-space-1); }
.h-p-2  { padding: var(--h-space-2); }
.h-p-3  { padding: var(--h-space-3); }
.h-p-4  { padding: var(--h-space-4); }
.h-p-6  { padding: var(--h-space-6); }
.h-p-8  { padding: var(--h-space-8); }
.h-p-12 { padding: var(--h-space-12); }
.h-p-14 { padding: var(--h-space-14); }
.h-p-18 { padding: var(--h-space-18); }
.h-p-22 { padding: var(--h-space-22); }

.h-px-4  { padding-left: var(--h-space-4); padding-right: var(--h-space-4); }
.h-px-6  { padding-left: var(--h-space-6); padding-right: var(--h-space-6); }
.h-px-8  { padding-left: var(--h-space-8); padding-right: var(--h-space-8); }
.h-py-4  { padding-top: var(--h-space-4); padding-bottom: var(--h-space-4); }
.h-py-6  { padding-top: var(--h-space-6); padding-bottom: var(--h-space-6); }
.h-py-8  { padding-top: var(--h-space-8); padding-bottom: var(--h-space-8); }
.h-py-12 { padding-top: var(--h-space-12); padding-bottom: var(--h-space-12); }
.h-py-18 { padding-top: var(--h-space-18); padding-bottom: var(--h-space-18); }

.h-gap-2  { gap: var(--h-space-2); }
.h-gap-4  { gap: var(--h-space-4); }
.h-gap-6  { gap: var(--h-space-6); }
.h-gap-8  { gap: var(--h-space-8); }
.h-gap-12 { gap: var(--h-space-12); }

/* ════════════════════════════════════════════════════════════════════
   COMPONENT PRIMITIVES
   Minimal, rebrand-ready components. Not wired to any page yet.
   ════════════════════════════════════════════════════════════════════ */

/* Card */
.h-card {
  background-color: var(--h-paper);
  border: 1px solid var(--h-rule);
  border-radius: 6px;
  padding: var(--h-space-6);
}

/* Section alternating backgrounds */
.h-section-cream    { background-color: var(--h-cream); }
.h-section-paper    { background-color: var(--h-paper); }
.h-section-warm-tan { background-color: var(--h-warm-tan); }
.h-section-sage     { background-color: var(--h-sage-deep); color: var(--h-butter); }

/* CTA button */
.h-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--h-space-2);
  min-height: var(--h-tap-min);
  padding: 0 var(--h-space-6);
  background-color: var(--h-clay);
  color: #fff;
  font-family: var(--h-font-body);
  font-weight: 600;
  font-size: 1rem;
  letter-spacing: -0.01em;
  border: none;
  border-radius: 4px;
  cursor: pointer;
  text-decoration: none;
  transition: background-color 0.2s ease, transform 0.15s ease, box-shadow 0.2s ease;
}
.h-btn:hover {
  background-color: var(--h-clay-deep);
  transform: translateY(-1px);
  box-shadow: 0 4px 16px color-mix(in srgb, var(--h-clay) 30%, transparent);
}
.h-btn:active {
  transform: translateY(0);
}

/* Ghost button */
.h-btn-ghost {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--h-space-2);
  min-height: var(--h-tap-min);
  padding: 0 var(--h-space-6);
  background-color: transparent;
  color: var(--h-clay-deep);
  font-family: var(--h-font-body);
  font-weight: 600;
  font-size: 1rem;
  border: 1.5px solid var(--h-clay-deep);
  border-radius: 4px;
  cursor: pointer;
  text-decoration: none;
  transition: background-color 0.2s ease, color 0.2s ease;
}
.h-btn-ghost:hover {
  background-color: var(--h-clay-deep);
  color: #fff;
}

/* Tag / badge */
.h-tag {
  display: inline-flex;
  align-items: center;
  gap: var(--h-space-1);
  padding: 2px var(--h-space-2);
  background-color: color-mix(in srgb, var(--h-sage) 15%, var(--h-paper));
  color: var(--h-sage-deep);
  font-family: var(--h-font-mono);
  font-weight: 500;
  font-size: 0.75rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  border-radius: 3px;
  border: 1px solid color-mix(in srgb, var(--h-sage) 30%, transparent);
}

/* Eyebrow + heading pair (common pattern) */
.h-section-header {
  display: flex;
  flex-direction: column;
  gap: var(--h-space-3);
}
.h-section-header .h-eyebrow {
  color: var(--h-clay-deep);
}
.h-section-header h2 {
  margin: 0;
  color: var(--h-ink);
}

/* Divider with optional label */
.h-rule {
  display: flex;
  align-items: center;
  gap: var(--h-space-4);
  color: var(--h-ink-muted);
  font-family: var(--h-font-mono);
  font-size: 0.7rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}
.h-rule::before,
.h-rule::after {
  content: '';
  flex: 1;
  border-top: 1px solid var(--h-rule);
}
