/* TrueLife Foods — CSS variables v2.0. Generated from DESIGN_TOKENS.json. Do not hand-edit values; edit tokens. */
/* Fonts: load DM Serif Display (400 + italic) + Figtree + JetBrains Mono. See 04_Typography/README.md */

:root {
  color-scheme: light;
  /* Palette */
  --palette-bakehouse-50: #eef5f1;
  --palette-bakehouse-100: #d8e8e0;
  --palette-bakehouse-200: #b0cec0;
  --palette-bakehouse-300: #7fae9a;
  --palette-bakehouse-400: #4e8a72;
  --palette-bakehouse-500: #2a6b53;
  --palette-bakehouse-600: #1b5540;
  --palette-bakehouse-700: #123f2e;
  --palette-bakehouse-800: #0d3024;
  --palette-bakehouse-900: #08211a;
  --palette-gold-50: #fbf4e8;
  --palette-gold-100: #f5e3c2;
  --palette-gold-200: #eccb91;
  --palette-gold-300: #e0b266;
  --palette-gold-400: #d29a45;
  --palette-gold-500: #b98030;
  --palette-gold-600: #9a6a24;
  --palette-gold-700: #7a531c;
  --palette-gold-800: #5a3d15;
  --palette-gold-900: #3d290e;
  --palette-pepper-50: #fbeeea;
  --palette-pepper-100: #f5d3ca;
  --palette-pepper-200: #eba898;
  --palette-pepper-300: #de7d66;
  --palette-pepper-400: #cf5d44;
  --palette-pepper-500: #c24e37;
  --palette-pepper-600: #b8432f;
  --palette-pepper-700: #963625;
  --palette-pepper-800: #72291c;
  --palette-pepper-900: #4e1c13;
  --palette-neutral-0: #ffffff;
  --palette-neutral-25: #fdfaf4;
  --palette-neutral-50: #f6efe3;
  --palette-neutral-100: #eee5d5;
  --palette-neutral-200: #e2d7c4;
  --palette-neutral-300: #cbbda6;
  --palette-neutral-400: #a79a86;
  --palette-neutral-500: #73685a;
  --palette-neutral-600: #5d5448;
  --palette-neutral-700: #463f36;
  --palette-neutral-800: #2e2a25;
  --palette-neutral-900: #1b1a17;
  --palette-neutral-950: #11100e;
  --palette-success-50: #e8f4ec;
  --palette-success-300: #7cc59a;
  --palette-success-600: #2c7a4b;
  --palette-success-700: #215e3a;
  --palette-warning-50: #fdf1dc;
  --palette-warning-300: #f2c063;
  --palette-warning-600: #a3650b;
  --palette-warning-700: #83520a;
  --palette-danger-50: #fbe9e7;
  --palette-danger-300: #f0928a;
  --palette-danger-600: #b3302a;
  --palette-danger-700: #952720;
  --palette-info-50: #e7f0f7;
  --palette-info-300: #8db8da;
  --palette-info-600: #2f6690;
  --palette-info-700: #244f70;
  --palette-plum-50: #f3ecf6;
  --palette-plum-300: #bfa3d4;
  --palette-plum-600: #6b4a86;
  --palette-plum-700: #553a6b;

  /* Semantic (light) */
  --color-bg-page: var(--palette-neutral-50);
  --color-bg-surface: var(--palette-neutral-0);
  --color-bg-surface-raised: var(--palette-neutral-25);
  --color-bg-subtle: var(--palette-neutral-100);
  --color-bg-inverse: var(--palette-bakehouse-700);
  --color-bg-brand: var(--palette-bakehouse-700);
  --color-bg-brand-subtle: var(--palette-bakehouse-50);
  --color-bg-secondary: var(--palette-pepper-600);
  --color-bg-secondary-subtle: var(--palette-pepper-50);
  --color-bg-accent: var(--palette-gold-400);
  --color-bg-accent-subtle: var(--palette-gold-50);
  --color-text-primary: var(--palette-neutral-900);
  --color-text-secondary: var(--palette-neutral-600);
  --color-text-muted: var(--palette-neutral-500);
  --color-text-inverse: var(--palette-neutral-50);
  --color-text-on-brand: var(--palette-neutral-50);
  --color-text-on-secondary: var(--palette-neutral-0);
  --color-text-on-accent: var(--palette-neutral-900);
  --color-text-brand: var(--palette-bakehouse-700);
  --color-text-link: var(--palette-bakehouse-600);
  --color-text-link-hover: var(--palette-bakehouse-800);
  --color-border-default: var(--palette-neutral-200);
  --color-border-strong: var(--palette-neutral-500);
  --color-border-subtle: var(--palette-neutral-100);
  --color-border-focus: var(--palette-gold-600);
  --color-brand-primary: var(--palette-bakehouse-700);
  --color-brand-primary-hover: var(--palette-bakehouse-600);
  --color-brand-primary-active: var(--palette-bakehouse-800);
  --color-brand-secondary: var(--palette-pepper-600);
  --color-brand-secondary-hover: var(--palette-pepper-700);
  --color-brand-accent: var(--palette-gold-400);
  --color-success: var(--palette-success-600);
  --color-success-bg: var(--palette-success-50);
  --color-warning: var(--palette-warning-600);
  --color-warning-bg: var(--palette-warning-50);
  --color-error: var(--palette-danger-600);
  --color-error-bg: var(--palette-danger-50);
  --color-info: var(--palette-info-600);
  --color-info-bg: var(--palette-info-50);
  --color-status-operational: var(--palette-success-600);
  --color-status-degraded: var(--palette-warning-600);
  --color-status-warning: var(--palette-warning-600);
  --color-status-critical: var(--palette-danger-600);
  --color-status-offline: var(--palette-neutral-500);
  --color-status-maintenance: var(--palette-plum-600);
  --color-status-pending: var(--palette-gold-600);
  --color-status-resolved: var(--palette-bakehouse-500);
  --color-disabled-bg: var(--palette-neutral-100);
  --color-disabled-text: var(--palette-neutral-400);
  --color-overlay: rgba(17, 16, 14, 0.56);

  /* Typography */
  --font-display: 'DM Serif Display', Georgia, 'Times New Roman', serif;
  --font-sans: 'Figtree', 'Figtree Fallback', system-ui, -apple-system, 'Segoe UI', Roboto, Arial, sans-serif;
  --font-mono: 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  --text-display-size: 3.125rem;
  --text-display-line: 1.04;
  --text-display-weight: 400;
  --text-display-tracking: -0.015em;
  --text-display-family: var(--font-display);
  --text-h1-size: 2.625rem;
  --text-h1-line: 1.1;
  --text-h1-weight: 400;
  --text-h1-tracking: -0.01em;
  --text-h1-family: var(--font-display);
  --text-h2-size: 2.062rem;
  --text-h2-line: 1.15;
  --text-h2-weight: 400;
  --text-h2-tracking: -0.005em;
  --text-h2-family: var(--font-display);
  --text-h3-size: 1.562rem;
  --text-h3-line: 1.24;
  --text-h3-weight: 400;
  --text-h3-tracking: 0;
  --text-h3-family: var(--font-display);
  --text-h4-size: 1.188rem;
  --text-h4-line: 1.37;
  --text-h4-weight: 700;
  --text-h4-tracking: 0;
  --text-h4-family: var(--font-sans);
  --text-body-lg-size: 1.125rem;
  --text-body-lg-line: 1.56;
  --text-body-lg-weight: 400;
  --text-body-lg-tracking: 0;
  --text-body-lg-family: var(--font-sans);
  --text-body-size: 1rem;
  --text-body-line: 1.5;
  --text-body-weight: 400;
  --text-body-tracking: 0;
  --text-body-family: var(--font-sans);
  --text-body-sm-size: 0.875rem;
  --text-body-sm-line: 1.43;
  --text-body-sm-weight: 400;
  --text-body-sm-tracking: 0;
  --text-body-sm-family: var(--font-sans);
  --text-caption-size: 0.75rem;
  --text-caption-line: 1.33;
  --text-caption-weight: 500;
  --text-caption-tracking: 0.01em;
  --text-caption-family: var(--font-sans);
  --text-overline-size: 0.75rem;
  --text-overline-line: 1.33;
  --text-overline-weight: 600;
  --text-overline-tracking: 0.24em;
  --text-overline-family: var(--font-sans);
  --text-button-size: 1rem;
  --text-button-line: 1.25;
  --text-button-weight: 650;
  --text-button-tracking: 0.005em;
  --text-button-family: var(--font-sans);
  --text-button-sm-size: 0.875rem;
  --text-button-sm-line: 1.29;
  --text-button-sm-weight: 650;
  --text-button-sm-tracking: 0.005em;
  --text-button-sm-family: var(--font-sans);
  --text-label-size: 0.875rem;
  --text-label-line: 1.43;
  --text-label-weight: 600;
  --text-label-tracking: 0;
  --text-label-family: var(--font-sans);
  --text-price-size: 1.125rem;
  --text-price-line: 1.22;
  --text-price-weight: 700;
  --text-price-tracking: 0;
  --text-price-family: var(--font-sans);
  --text-mono-size: 0.8125rem;
  --text-mono-line: 1.38;
  --text-mono-weight: 500;
  --text-mono-tracking: 0;
  --text-mono-family: var(--font-mono);

  /* Spacing (4px base) */
  --space-0: 0rem;
  --space-0-5: 0.125rem;
  --space-1: 0.25rem;
  --space-2: 0.5rem;
  --space-3: 0.75rem;
  --space-4: 1rem;
  --space-5: 1.25rem;
  --space-6: 1.5rem;
  --space-8: 2rem;
  --space-10: 2.5rem;
  --space-12: 3rem;
  --space-16: 4rem;
  --space-20: 5rem;
  --space-24: 6rem;
  --space-32: 8rem;

  /* Radius — UI components only, never logos */
  --radius-none: 0px;
  --radius-xs: 4px;
  --radius-sm: 6px;
  --radius-md: 10px;
  --radius-lg: 16px;
  --radius-xl: 24px;
  --radius-2xl: 32px;
  --radius-pill: 999px;

  /* Shadow */
  --shadow-xs: 0 1px 1px rgba(27, 26, 23, 0.06);
  --shadow-sm: 0 1px 2px rgba(27, 26, 23, 0.08), 0 1px 1px rgba(27, 26, 23, 0.04);
  --shadow-md: 0 4px 12px rgba(27, 26, 23, 0.1), 0 1px 3px rgba(27, 26, 23, 0.06);
  --shadow-lg: 0 12px 32px rgba(27, 26, 23, 0.14), 0 2px 6px rgba(27, 26, 23, 0.06);
  --shadow-xl: 0 24px 56px rgba(27, 26, 23, 0.18);
  --shadow-focus: 0 0 0 2px var(--color-bg-page), 0 0 0 4px var(--color-border-focus);

  /* Layout */
  --container-narrow: 720px;
  --container-default: 1200px;
  --container-wide: 1360px;
  --breakpoint-sm: 480px; /* reference only; CSS vars cannot be used in @media */
  --breakpoint-md: 768px; /* reference only; CSS vars cannot be used in @media */
  --breakpoint-lg: 1024px; /* reference only; CSS vars cannot be used in @media */
  --breakpoint-xl: 1280px; /* reference only; CSS vars cannot be used in @media */
  --breakpoint-2xl: 1536px; /* reference only; CSS vars cannot be used in @media */
  --gutter: 1rem;
  --header-height: 4rem;

  /* Motion & layers */
  --duration-fast: 120ms;
  --duration-base: 200ms;
  --duration-slow: 320ms;
  --duration-reveal: 640ms;
  --duration-draw: 1400ms;
  --ease-standard: cubic-bezier(0.2, 0.8, 0.2, 1);
  --ease-exit: cubic-bezier(0.4, 0, 1, 1);
  --ease-out-soft: cubic-bezier(0.16, 1, 0.3, 1);
  --z-base: 0;
  --z-dropdown: 1000;
  --z-sticky: 1100;
  --z-overlay: 1300;
  --z-modal: 1400;
  --z-toast: 1500;
  --z-tooltip: 1600;
}

@media (min-width: 768px) {
  :root {
    --gutter: 1.5rem;
    --text-display-size: 5.25rem;
    --text-display-line: 1.02;
    --text-h1-size: 3.875rem;
    --text-h1-line: 1.06;
    --text-h2-size: 2.875rem;
    --text-h2-line: 1.13;
    --text-h3-size: 1.938rem;
    --text-h3-line: 1.19;
    --text-h4-size: 1.375rem;
    --text-h4-line: 1.27;
    --text-body-lg-size: 1.188rem;
    --text-body-lg-line: 1.58;
    --text-body-size: 1rem;
    --text-body-line: 1.56;
    --text-body-sm-size: 0.875rem;
    --text-body-sm-line: 1.5;
    --text-caption-size: 0.75rem;
    --text-caption-line: 1.33;
    --text-overline-size: 0.75rem;
    --text-overline-line: 1.33;
    --text-button-size: 1rem;
    --text-button-line: 1.25;
    --text-button-sm-size: 0.875rem;
    --text-button-sm-line: 1.29;
    --text-label-size: 0.875rem;
    --text-label-line: 1.43;
    --text-price-size: 1.25rem;
    --text-price-line: 1.2;
    --text-mono-size: 0.875rem;
    --text-mono-line: 1.43;
  }
}
@media (min-width: 1024px) {
  :root {
    --gutter: 2rem;
    --header-height: 4.5rem;
  }
}

/* Dark mode: follows OS unless the app sets data-theme */
@media (prefers-color-scheme: dark) {
  :root:not([data-theme='light']) {
    color-scheme: dark;
    --color-bg-page: var(--palette-neutral-950);
    --color-bg-surface: var(--palette-neutral-900);
    --color-bg-surface-raised: var(--palette-neutral-800);
    --color-bg-subtle: var(--palette-neutral-800);
    --color-bg-inverse: var(--palette-neutral-50);
    --color-bg-brand: var(--palette-gold-300);
    --color-bg-brand-subtle: var(--palette-bakehouse-900);
    --color-bg-secondary: var(--palette-pepper-300);
    --color-bg-secondary-subtle: var(--palette-pepper-900);
    --color-bg-accent: var(--palette-gold-400);
    --color-bg-accent-subtle: var(--palette-gold-900);
    --color-text-primary: var(--palette-neutral-50);
    --color-text-secondary: var(--palette-neutral-300);
    --color-text-muted: var(--palette-neutral-400);
    --color-text-inverse: var(--palette-neutral-900);
    --color-text-on-brand: var(--palette-neutral-950);
    --color-text-on-secondary: var(--palette-neutral-950);
    --color-text-on-accent: var(--palette-neutral-900);
    --color-text-brand: var(--palette-gold-300);
    --color-text-link: var(--palette-gold-300);
    --color-text-link-hover: var(--palette-gold-200);
    --color-border-default: var(--palette-neutral-700);
    --color-border-strong: var(--palette-neutral-500);
    --color-border-subtle: var(--palette-neutral-800);
    --color-border-focus: var(--palette-gold-300);
    --color-brand-primary: var(--palette-gold-300);
    --color-brand-primary-hover: var(--palette-gold-200);
    --color-brand-primary-active: var(--palette-gold-100);
    --color-brand-secondary: var(--palette-pepper-300);
    --color-brand-secondary-hover: var(--palette-pepper-200);
    --color-brand-accent: var(--palette-gold-400);
    --color-success: var(--palette-success-300);
    --color-success-bg: var(--palette-bakehouse-900);
    --color-warning: var(--palette-warning-300);
    --color-warning-bg: var(--palette-gold-900);
    --color-error: var(--palette-danger-300);
    --color-error-bg: var(--palette-pepper-900);
    --color-info: var(--palette-info-300);
    --color-info-bg: var(--palette-neutral-800);
    --color-status-operational: var(--palette-success-300);
    --color-status-degraded: var(--palette-warning-300);
    --color-status-warning: var(--palette-warning-300);
    --color-status-critical: var(--palette-danger-300);
    --color-status-offline: var(--palette-neutral-400);
    --color-status-maintenance: var(--palette-plum-300);
    --color-status-pending: var(--palette-gold-300);
    --color-status-resolved: var(--palette-bakehouse-300);
    --color-disabled-bg: var(--palette-neutral-800);
    --color-disabled-text: var(--palette-neutral-500);
    --color-overlay: rgba(0, 0, 0, 0.64);
    --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.4);
    --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.45);
    --shadow-lg: 0 12px 32px rgba(0, 0, 0, 0.5);
  }
}
:root[data-theme='dark'] {
  color-scheme: dark;
  --color-bg-page: var(--palette-neutral-950);
  --color-bg-surface: var(--palette-neutral-900);
  --color-bg-surface-raised: var(--palette-neutral-800);
  --color-bg-subtle: var(--palette-neutral-800);
  --color-bg-inverse: var(--palette-neutral-50);
  --color-bg-brand: var(--palette-gold-300);
  --color-bg-brand-subtle: var(--palette-bakehouse-900);
  --color-bg-secondary: var(--palette-pepper-300);
  --color-bg-secondary-subtle: var(--palette-pepper-900);
  --color-bg-accent: var(--palette-gold-400);
  --color-bg-accent-subtle: var(--palette-gold-900);
  --color-text-primary: var(--palette-neutral-50);
  --color-text-secondary: var(--palette-neutral-300);
  --color-text-muted: var(--palette-neutral-400);
  --color-text-inverse: var(--palette-neutral-900);
  --color-text-on-brand: var(--palette-neutral-950);
  --color-text-on-secondary: var(--palette-neutral-950);
  --color-text-on-accent: var(--palette-neutral-900);
  --color-text-brand: var(--palette-gold-300);
  --color-text-link: var(--palette-gold-300);
  --color-text-link-hover: var(--palette-gold-200);
  --color-border-default: var(--palette-neutral-700);
  --color-border-strong: var(--palette-neutral-500);
  --color-border-subtle: var(--palette-neutral-800);
  --color-border-focus: var(--palette-gold-300);
  --color-brand-primary: var(--palette-gold-300);
  --color-brand-primary-hover: var(--palette-gold-200);
  --color-brand-primary-active: var(--palette-gold-100);
  --color-brand-secondary: var(--palette-pepper-300);
  --color-brand-secondary-hover: var(--palette-pepper-200);
  --color-brand-accent: var(--palette-gold-400);
  --color-success: var(--palette-success-300);
  --color-success-bg: var(--palette-bakehouse-900);
  --color-warning: var(--palette-warning-300);
  --color-warning-bg: var(--palette-gold-900);
  --color-error: var(--palette-danger-300);
  --color-error-bg: var(--palette-pepper-900);
  --color-info: var(--palette-info-300);
  --color-info-bg: var(--palette-neutral-800);
  --color-status-operational: var(--palette-success-300);
  --color-status-degraded: var(--palette-warning-300);
  --color-status-warning: var(--palette-warning-300);
  --color-status-critical: var(--palette-danger-300);
  --color-status-offline: var(--palette-neutral-400);
  --color-status-maintenance: var(--palette-plum-300);
  --color-status-pending: var(--palette-gold-300);
  --color-status-resolved: var(--palette-bakehouse-300);
  --color-disabled-bg: var(--palette-neutral-800);
  --color-disabled-text: var(--palette-neutral-500);
  --color-overlay: rgba(0, 0, 0, 0.64);
  --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.4);
  --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.45);
  --shadow-lg: 0 12px 32px rgba(0, 0, 0, 0.5);
}

@media (prefers-reduced-motion: reduce) {
  :root {
    --duration-fast: 0ms;
    --duration-base: 0ms;
    --duration-slow: 0ms;
    --duration-reveal: 0ms;
    --duration-draw: 0ms;
  }
}
