/* GENERATED FILE — DO NOT EDIT BY HAND.
 * Run `npm run generate:tokens` (scripts/generate-tokens.ts) to regenerate.
 * Source of truth: src/tokens/contract.ts.
 * Every family's `primary` is legibility-adjusted against `background`
 * (ensureLegiblePrimary() in contract.ts, G11 follow-up) — a family below
 * marked "primary adjusted" got a different value than a pure hue rotation
 * would produce. A REAL palette must keep primary legible on background
 * too, in both modes. */

:root {
  /* TODO(design): family-1 colours — the current 98DollarWebsite defaults,
     not a chosen palette. Source: brand-sites/98DollarWebsite/src/styles.css
     :11-17 (light) and :37-43 (dark), the "ninetyeight"/"ninetyeight-dark"
     DaisyUI theme. background/surface/text map from DaisyUI's base-100/
     base-200/base-content; primary/secondary/accent keep the same names in
     both files. */
  --color-primary: #1f46d6;
  --color-secondary: #0f1b45;
  --color-accent: #ff5a45;
  --color-background: #ffffff;
  --color-surface: #f4f6ff;
  --color-text: #0f1b45;
  --color-primary-contrast: #ffffff;
  --color-dark-primary: #6b8cf4;
  --color-dark-secondary: #cdd7fb;
  --color-dark-accent: #ff6a57;
  --color-dark-background: #121b3e;
  --color-dark-surface: #0a1126;
  --color-dark-text: #e9edfc;
  --color-dark-primary-contrast: #121b3e;

  /* TODO(design): font defaults — the current 98DollarWebsite defaults.
     Source: brand-sites/98DollarWebsite/src/styles.css:260-261 (the
     @theme --font-display / --font-sans stacks). Real fallback stacks, not
     invented. */
  --font-heading: "Sora", "Inter", system-ui, sans-serif;
  --font-body: "Inter", system-ui, sans-serif;

  --type-scale: default;
  --step-xs: 0.64rem;
  --step-sm: 0.8rem;
  --step-base: 1rem;
  --step-lg: 1.25rem;
  --step-xl: 1.563rem;
  --step-2xl: 1.953rem;
  --step-3xl: 2.441rem;

  --leading-tight: 1.2;
  --leading-normal: 1.5;
  --leading-loose: 1.75;

  --space-3xs: 0.125rem;
  --space-2xs: 0.25rem;
  --space-xs: 0.5rem;
  --space-sm: 0.75rem;
  --space-lg: 1.5rem;
  --space-xl: 2rem;
  --space-2xl: 3rem;
  --space-3xl: 4rem;

  --radius-sm: 0.25rem;
  --radius-md: 0.5rem;
  --radius-lg: 1rem;
  --radius-pill: 999px;

  /* TODO(design): shadow colours — placeholders. 98DollarWebsite has ONE
     shadow token, not a three-step scale
     (brand-sites/98DollarWebsite/src/styles.css:111, a navy-tinted
     `rgba(15, 27, 69, ...)`), so there is no sourced value to map role for
     role onto sm/md/lg. The neutral `rgba(0, 0, 0, ...)` alphas below are
     invented and must be replaced along with the palettes. */
  --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.06);
  --shadow-md: 0 4px 8px rgba(0, 0, 0, 0.08);
  --shadow-lg: 0 12px 24px rgba(0, 0, 0, 0.12);

  --measure-narrow: 45ch;
  --measure-default: 65ch;
  --measure-wide: 80ch;
}

/* TODO(design): family-1 — the same sourced 98DollarWebsite defaults already
   carried on :root above, repeated so all eight families are
   attribute-selectable. */
[data-theme-family="family-1"] {
  --color-primary: #1f46d6;
  --color-secondary: #0f1b45;
  --color-accent: #ff5a45;
  --color-background: #ffffff;
  --color-surface: #f4f6ff;
  --color-text: #0f1b45;
  --color-primary-contrast: #ffffff;
  --color-dark-primary: #6b8cf4;
  --color-dark-secondary: #cdd7fb;
  --color-dark-accent: #ff6a57;
  --color-dark-background: #121b3e;
  --color-dark-surface: #0a1126;
  --color-dark-text: #e9edfc;
  --color-dark-primary-contrast: #121b3e;
}

/* TODO(design): family-2 — a mechanically DERIVED placeholder, not a design
   value. Rotates family-1's hue by a fixed step in HSL space
   (rotateHueHex() in contract.ts); primary may be further legibility-
   adjusted (see file header). Exists so eight visibly distinct blocks
   exist for the contrast gate (AC-41) — nobody should mistake this for a
   chosen palette. */
[data-theme-family="family-2"] {
  --color-primary: #811fd6;
  --color-secondary: #2b0f45;
  --color-accent: #ffe545;
  --color-background: #ffffff;
  --color-surface: #faf4ff;
  --color-text: #2b0f45;
  --color-primary-contrast: #ffffff;
  --color-dark-primary: #b16bf4;
  --color-dark-secondary: #e6cdfb;
  --color-dark-accent: #ffe857;
  --color-dark-background: #2a123e;
  --color-dark-surface: #180a26;
  --color-dark-text: #f3e9fc;
  --color-dark-primary-contrast: #2a123e;
}

/* TODO(design): family-3 — a mechanically DERIVED placeholder, not a design
   value. Rotates family-1's hue by a fixed step in HSL space
   (rotateHueHex() in contract.ts); primary may be further legibility-
   adjusted (see file header). Exists so eight visibly distinct blocks
   exist for the contrast gate (AC-41) — nobody should mistake this for a
   chosen palette. */
[data-theme-family="family-3"] {
  --color-primary: #d61fa1;
  --color-secondary: #450f36;
  --color-accent: #8dff45;
  --color-background: #ffffff;
  --color-surface: #fff4fc;
  --color-text: #450f36;
  --color-primary-contrast: #ffffff;
  --color-dark-primary: #f46bd0;
  --color-dark-secondary: #fbcdee;
  --color-dark-accent: #98ff57;
  --color-dark-background: #3e1231;
  --color-dark-surface: #260a1f;
  --color-dark-text: #fce9f7;
  --color-dark-primary-contrast: #3e1231;
}

/* TODO(design): family-4 — a mechanically DERIVED placeholder, not a design
   value. Rotates family-1's hue by a fixed step in HSL space
   (rotateHueHex() in contract.ts); primary may be further legibility-
   adjusted (see file header). Exists so eight visibly distinct blocks
   exist for the contrast gate (AC-41) — nobody should mistake this for a
   chosen palette. */
[data-theme-family="family-4"] {
  --color-primary: #d6261f;
  --color-secondary: #45100f;
  --color-accent: #45ff88;
  --color-background: #ffffff;
  --color-surface: #fff5f4;
  --color-text: #45100f;
  --color-primary-contrast: #ffffff;
  --color-dark-primary: #f46c6b;
  --color-dark-secondary: #fbcfcd;
  --color-dark-accent: #57ff94;
  --color-dark-background: #3e1412;
  --color-dark-surface: #260a0a;
  --color-dark-text: #fceae9;
  --color-dark-primary-contrast: #3e1412;
}

/* TODO(design): family-5 — a mechanically DERIVED placeholder, not a design
   value. Rotates family-1's hue by a fixed step in HSL space
   (rotateHueHex() in contract.ts); primary may be further legibility-
   adjusted (see file header). Exists so eight visibly distinct blocks
   exist for the contrast gate (AC-41) — nobody should mistake this for a
   chosen palette. */
[data-theme-family="family-5"] {
  --color-primary: #8a7114;
  --color-secondary: #45390f;
  --color-accent: #45eaff;
  --color-background: #ffffff;
  --color-surface: #fffdf4;
  --color-text: #45390f;
  --color-primary-contrast: #ffffff;
  --color-dark-primary: #f4d36b;
  --color-dark-secondary: #fbf1cd;
  --color-dark-accent: #57ecff;
  --color-dark-background: #3e3512;
  --color-dark-surface: #261f0a;
  --color-dark-text: #fcf8e9;
  --color-dark-primary-contrast: #3e3512;
}

/* TODO(design): family-6 — a mechanically DERIVED placeholder, not a design
   value. Rotates family-1's hue by a fixed step in HSL space
   (rotateHueHex() in contract.ts); primary may be further legibility-
   adjusted (see file header). Exists so eight visibly distinct blocks
   exist for the contrast gate (AC-41) — nobody should mistake this for a
   chosen palette. */
[data-theme-family="family-6"] {
  --color-primary: #468113;
  --color-secondary: #29450f;
  --color-accent: #455eff;
  --color-background: #ffffff;
  --color-surface: #f9fff4;
  --color-text: #29450f;
  --color-primary-contrast: #ffffff;
  --color-dark-primary: #aef46b;
  --color-dark-secondary: #e2fbcd;
  --color-dark-accent: #576eff;
  --color-dark-background: #263e12;
  --color-dark-surface: #18260a;
  --color-dark-text: #f2fce9;
  --color-dark-primary-contrast: #263e12;
}

/* TODO(design): family-7 — a mechanically DERIVED placeholder, not a design
   value. Rotates family-1's hue by a fixed step in HSL space
   (rotateHueHex() in contract.ts); primary may be further legibility-
   adjusted (see file header). Exists so eight visibly distinct blocks
   exist for the contrast gate (AC-41) — nobody should mistake this for a
   chosen palette. */
[data-theme-family="family-7"] {
  --color-primary: #138634;
  --color-secondary: #0f451e;
  --color-accent: #b745ff;
  --color-background: #ffffff;
  --color-surface: #f4fff8;
  --color-text: #0f451e;
  --color-primary-contrast: #ffffff;
  --color-dark-primary: #6bf48f;
  --color-dark-secondary: #cdfbda;
  --color-dark-accent: #be57ff;
  --color-dark-background: #123e1f;
  --color-dark-surface: #0a2611;
  --color-dark-text: #e9fcee;
  --color-dark-primary-contrast: #123e1f;
}

/* TODO(design): family-8 — a mechanically DERIVED placeholder, not a design
   value. Rotates family-1's hue by a fixed step in HSL space
   (rotateHueHex() in contract.ts); primary may be further legibility-
   adjusted (see file header). Exists so eight visibly distinct blocks
   exist for the contrast gate (AC-41) — nobody should mistake this for a
   chosen palette. */
[data-theme-family="family-8"] {
  --color-primary: #138186;
  --color-secondary: #0f4445;
  --color-accent: #ff45bb;
  --color-background: #ffffff;
  --color-surface: #f4feff;
  --color-text: #0f4445;
  --color-primary-contrast: #ffffff;
  --color-dark-primary: #6bf3f4;
  --color-dark-secondary: #cdf9fb;
  --color-dark-accent: #ff57c2;
  --color-dark-background: #123c3e;
  --color-dark-surface: #0a2626;
  --color-dark-text: #e9fbfc;
  --color-dark-primary-contrast: #123c3e;
}

/* Page-level rules (site-rhythm.ts) — the page background, and the outer
   gutter and vertical rhythm shared by every block host. Component-internal
   spacing stays in each variant's own styles.ts. */
body {
  background: var(--color-background);
}

ilq-hero-standard-centered,
ilq-hero-split-image-right,
ilq-about-standard,
ilq-services-standard-grid,
ilq-testimonials-card-row,
ilq-faq-accordion,
ilq-gallery-masonry,
ilq-contact-simple-form,
ilq-footer-standard-centered {
  display: block;
  padding-inline: var(--space-xl);
  padding-block: var(--space-2xl);
}
