/* Self-hosted webfonts (latin subset) */
@font-face {
  font-family: 'Fredoka';
  font-style: normal;
  font-weight: 400;
  font-stretch: 100%;
  font-display: swap;
  src:url('/assets/fonts/fredoka-400.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Fredoka';
  font-style: normal;
  font-weight: 500;
  font-stretch: 100%;
  font-display: swap;
  src:url('/assets/fonts/fredoka-500.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Fredoka';
  font-style: normal;
  font-weight: 600;
  font-stretch: 100%;
  font-display: swap;
  src:url('/assets/fonts/fredoka-600.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Fredoka';
  font-style: normal;
  font-weight: 700;
  font-stretch: 100%;
  font-display: swap;
  src:url('/assets/fonts/fredoka-700.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src:url('/assets/fonts/jetbrains-mono-400.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src:url('/assets/fonts/jetbrains-mono-500.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src:url('/assets/fonts/jetbrains-mono-600.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src:url('/assets/fonts/plus-jakarta-sans-400-italic.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: italic;
  font-weight: 500;
  font-display: swap;
  src:url('/assets/fonts/plus-jakarta-sans-500-italic.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src:url('/assets/fonts/plus-jakarta-sans-400.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src:url('/assets/fonts/plus-jakarta-sans-500.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src:url('/assets/fonts/plus-jakarta-sans-600.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src:url('/assets/fonts/plus-jakarta-sans-700.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 800;
  font-display: swap;
  src:url('/assets/fonts/plus-jakarta-sans-800.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Cultiv8 Digital - flattened design tokens (fonts loaded via <head>). */

/* ===== tokens/colors.css ===== */
/* Cultiv8 Digital — Colour system
   Hero: forest green sampled from the logo (#285820). Grounded natural support
   (clay/terracotta, oat/cream, teal, warm charcoal). Confidence-through-contrast,
   never neon. No bright pinks/yellows. */
:root {
  /* ---- Green (hero) ---- */
  --green-50:  #f3f8ec;
  --green-100: #e6f1da;
  --green-200: #c6e0b0;
  --green-300: #9bc77e;
  --green-400: #6fa84f;  /* sprout / bright pop */
  --green-500: #4c8b3c;  /* fresh */
  --green-600: #336b29;
  --green-700: #285820;  /* BRAND — the logo green */
  --green-800: #1b4416;
  --green-900: #12300e;  /* deepest */

  /* ---- Clay / terracotta (warm support) ---- */
  --clay-50:  #faefe8;
  --clay-100: #f5e3d9;
  --clay-200: #eac4ad;
  --clay-300: #dc9d7b;
  --clay-400: #cd7d54;
  --clay-500: #c56a43;  /* warm accent */
  --clay-600: #a9532f;
  --clay-700: #843e22;

  /* ---- Teal (cool depth) ---- */
  --teal-50:  #e6f2f0;
  --teal-100: #d6ece9;
  --teal-300: #7cc0b9;
  --teal-500: #1e8079;
  --teal-700: #12655e;
  --teal-900: #0b3f3a;

  /* ---- Oat / cream (soft surface) ---- */
  --oat-50:  #fbf7ee;
  --oat-100: #f5efe2;
  --oat-200: #ede4d1;
  --oat-300: #e2d5ba;

  /* ---- Stone (warm-tinted neutrals) ---- */
  --stone-50:  #faf8f3;
  --stone-100: #f2efe7;
  --stone-200: #e4dfd3;
  --stone-300: #cfc8b7;
  --stone-400: #a79e8a;
  --stone-500: #7c7565;
  --stone-600: #5a544a;
  --stone-700: #3e3a32;
  --stone-800: #2a2721;
  --stone-900: #201e19;

  /* ---- Warm-charcoal ink ---- */
  --ink-500: #5a6353;
  --ink-700: #333b2e;
  --ink-900: #1e241b;  /* near-black, green-tinted */

  --white: #ffffff;

  /* ---- Semantic status ---- */
  --status-success: #4c8b3c;
  --status-success-bg: #e6f1da;
  --status-warning: #c56a43;
  --status-warning-bg: #f5e3d9;
  --status-error: #b4432e;
  --status-error-bg: #f6ddd6;
  --status-info: #1e8079;
  --status-info-bg: #d6ece9;
}

/* ===== tokens/semantic.css ===== */
/* Cultiv8 Digital — Semantic aliases
   Map raw scales to intent. Consumers should reach for these first. */
:root {
  /* Brand */
  --brand: var(--green-700);
  --brand-deep: var(--green-800);
  --brand-fresh: var(--green-500);
  --brand-sprout: var(--green-400);
  --brand-clay: var(--clay-500);
  --brand-teal: var(--teal-500);

  /* Text */
  --text-strong: var(--ink-900);
  --text-body: var(--stone-700);
  --text-muted: var(--stone-500);
  --text-subtle: var(--stone-400);
  --text-on-brand: var(--oat-50);
  --text-link: var(--green-700);
  --text-link-hover: var(--green-800);

  /* Surfaces */
  --surface-page: var(--oat-50);
  --surface-card: var(--white);
  --surface-sunken: var(--stone-100);
  --surface-oat: var(--oat-100);
  --surface-brand: var(--green-700);
  --surface-brand-deep: var(--green-900);
  --surface-fresh: var(--green-50);

  /* Borders */
  --border-subtle: var(--stone-200);
  --border-default: var(--stone-300);
  --border-strong: var(--stone-400);
  --border-brand: var(--green-700);

  /* Interactive (primary button etc.) */
  --action: var(--green-700);
  --action-hover: var(--green-800);
  --action-active: var(--green-900);
  --action-text: var(--oat-50);
  --focus-ring: var(--green-400);
}

/* ===== tokens/typography.css ===== */
/* Cultiv8 Digital — Typography
   Display/headlines: Fredoka (rounded, characterful, confident, fun).
   Body: Plus Jakarta Sans (clean, modern, premium).
   Mono: JetBrains Mono (technical/SEO/code contexts). */
:root {
  --font-display: 'Fredoka', 'Trebuchet MS', system-ui, sans-serif;
  --font-body: 'Plus Jakarta Sans', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --font-mono: 'JetBrains Mono', ui-monospace, 'SF Mono', Menlo, monospace;

  /* Weights */
  --fw-regular: 400; /* @kind other */
  --fw-medium: 500; /* @kind other */
  --fw-semibold: 600; /* @kind other */
  --fw-bold: 700; /* @kind other */
  --fw-display: 600; /* @kind other */
  --fw-display-heavy: 700; /* @kind other */

  /* Type scale (1.25 major-third-ish, tuned) */
  --text-xs:   0.75rem;   /* 12 */
  --text-sm:   0.875rem;  /* 14 */
  --text-base: 1rem;      /* 16 */
  --text-lg:   1.125rem;  /* 18 */
  --text-xl:   1.375rem;  /* 22 */
  --text-2xl:  1.75rem;   /* 28 */
  --text-3xl:  2.25rem;   /* 36 */
  --text-4xl:  3rem;      /* 48 */
  --text-5xl:  3.75rem;   /* 60 */
  --text-6xl:  4.75rem;   /* 76 */

  /* Line heights */
  --leading-tight: 1.05;
  --leading-snug: 1.2;
  --leading-normal: 1.5;
  --leading-relaxed: 1.65;

  /* Letter spacing */
  --tracking-tight: -0.02em;
  --tracking-normal: 0;
  --tracking-wide: 0.02em;
  --tracking-caps: 0.14em;   /* DIGITAL-style spaced caps */
}

/* ===== tokens/spacing.css ===== */
/* Cultiv8 Digital — Spacing (4px base rhythm) */
:root {
  --space-0: 0;
  --space-1: 0.25rem;  /* 4  */
  --space-2: 0.5rem;   /* 8  */
  --space-3: 0.75rem;  /* 12 */
  --space-4: 1rem;     /* 16 */
  --space-5: 1.5rem;   /* 24 */
  --space-6: 2rem;     /* 32 */
  --space-7: 3rem;     /* 48 */
  --space-8: 4rem;     /* 64 */
  --space-9: 6rem;     /* 96 */
  --space-10: 8rem;    /* 128 */

  /* Layout */
  --container-sm: 640px;
  --container-md: 820px;
  --container-lg: 1080px;
  --container-xl: 1280px;
  --gutter: 1.5rem;
}

/* ===== tokens/effects.css ===== */
/* Cultiv8 Digital — Radii, shadows, motion
   The brand mark is built from soft, rounded, organic forms — radii are generous.
   Shadows are soft, warm-tinted and low-contrast (never harsh grey). */
:root {
  /* Corner radii — friendly & rounded, echoing the logo's soft terminals */
  --radius-xs: 6px;
  --radius-sm: 10px;
  --radius-md: 14px;
  --radius-lg: 20px;
  --radius-xl: 28px;
  --radius-2xl: 36px;
  --radius-pill: 999px;

  /* Shadows — warm green-grey, soft & lifted, never black */
  --shadow-xs: 0 1px 2px rgba(30, 36, 27, 0.06);
  --shadow-sm: 0 2px 6px rgba(30, 36, 27, 0.08);
  --shadow-md: 0 8px 20px rgba(30, 36, 27, 0.10);
  --shadow-lg: 0 16px 36px rgba(30, 36, 27, 0.12);
  --shadow-xl: 0 28px 60px rgba(30, 36, 27, 0.16);
  --shadow-brand: 0 10px 26px rgba(40, 88, 32, 0.28);  /* green-tinted lift for CTAs */

  /* Motion — quick, confident, a touch of bounce (playful but grounded) */
  --ease-standard: cubic-bezier(0.4, 0, 0.2, 1); /* @kind other */
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1); /* @kind other */
  --ease-bounce: cubic-bezier(0.34, 1.56, 0.64, 1); /* @kind other */
  --dur-fast: 120ms; /* @kind other */
  --dur-base: 200ms; /* @kind other */
  --dur-slow: 340ms; /* @kind other */
}

/* ===== tokens/base.css ===== */
/* Cultiv8 Digital — light base layer (opt-in helpers, kept minimal).
   Tokens carry the system; this just wires sensible defaults + a few utilities. */
:root {
  color-scheme: light;
}
.c8-body {
  font-family: var(--font-body);
  color: var(--text-body);
  background: var(--surface-page);
  font-size: var(--text-base);
  line-height: var(--leading-normal);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
.c8-display {
  font-family: var(--font-display);
  font-weight: var(--fw-display);
  color: var(--text-strong);
  line-height: var(--leading-tight);
  letter-spacing: var(--tracking-tight);
}
.c8-eyebrow {
  font-family: var(--font-body);
  font-weight: var(--fw-bold);
  font-size: var(--text-sm);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--brand-fresh);
}
a { color: var(--text-link); text-decoration: none; }
a:hover { color: var(--text-link-hover); text-decoration: underline; text-underline-offset: 3px; }
