@import url('https://fonts.googleapis.com/css2?family=Lexend:wght@300;700&family=JetBrains+Mono:wght@400..700&display=swap');

/*!
 * Flux 2.0.0 — Kaptio design system
 * Tokens, fonts and base rules
 *
 * The one-line import. Loads Lexend 300/700 and JetBrains Mono Variable, defines every token, and applies the base rules Flux 1.x could only document.
 *
 * Canonical: https://flux.kaptio.com
 * Agent contract: https://flux.kaptio.com/llms.txt
 * Generated from src/tokens/. Do not edit by hand.
 */
@layer flux.primitive, flux.semantic, flux.component, flux.base;

/* ======================================================================
   TIER 1 — PRIMITIVES. Raw values, no meaning. Flux 1.x compatible.
   ====================================================================== */
@layer flux.primitive {
  :root {
    /* Teal — Kaptio Seagreen (primary) */
    --flux-primary-900: #021E24;
    --flux-primary-800: #032E36;
    --flux-primary-700: #034050;
    --flux-primary-600: #034955;
    --flux-primary-500: #056271;
    --flux-primary-400: #056F82;
    --flux-primary-300: #69A9B4;
    --flux-primary-200: #B4D4DA;
    --flux-primary-100: #E6F1F2;
    --flux-primary-50: #EFF5F5;

    /* Yellow — Bumble-Me (CTA only) */
    --flux-yellow-900: #3A2C10;
    --flux-yellow-800: #956000;
    --flux-yellow-600: #DC8E00;
    --flux-yellow-400: #FFBC42;
    --flux-yellow-300: #FFD78E;
    --flux-yellow-200: #FFEBC6;
    --flux-yellow-100: #FFF8EC;

    /* Pink — Fandango ("the dot", Edge) */
    --flux-pink-600: #AF0072;
    --flux-pink-400: #DE37A4;
    --flux-pink-300: #EB87C8;
    --flux-pink-200: #F5C3E4;
    --flux-pink-100: #FCEBF6;

    /* Orange — Puffin Beak */
    --flux-orange-900: #3D1D19;
    --flux-orange-800: #9C1500;
    --flux-orange-600: #CF1B00;
    --flux-orange-400: #FF6F59;
    --flux-orange-300: #FFA99B;
    --flux-orange-200: #FFD4CD;
    --flux-orange-100: #FFF1EE;

    /* Green — Poison Green */
    --flux-green-900: #16301A;
    --flux-green-800: #0E5600;
    --flux-green-600: #197C04;
    --flux-green-400: #2BA711;
    --flux-green-300: #80CA70;
    --flux-green-200: #BFE5B8;
    --flux-green-100: #EAF6E7;

    /* Blue */
    --flux-blue-600: #2F67CF;
    --flux-blue-400: #015BFF;
    --flux-blue-300: #8EB6FF;
    --flux-blue-200: #C6DAFF;
    --flux-blue-100: #ECF5FF;

    /* Purple */
    --flux-purple-600: #5A47D6;
    --flux-purple-400: #6149FF;
    --flux-purple-300: #ADA0FF;
    --flux-purple-200: #D5CFFF;
    --flux-purple-100: #F1EFFF;

    /* Neutrals (Flux 1.x — retained verbatim) */
    --flux-black: #212121;
    --flux-grey-700: #374151;
    --flux-grey-500: #646B78;
    --flux-grey-300: #6B6B6B;
    --flux-grey-200: #C3C3C3;
    --flux-grey-100: #EBEBEB;
    --flux-grey-50: #F5F5F5;
    --flux-white: #FFFFFF;

    /* Neutrals (2.0 ramp — powers the dark theme) */
    --flux-canvas: #F9FAF8;
    --flux-neutral-50: #F4F7F7;
    --flux-neutral-100: #E8EDEE;
    --flux-neutral-200: #D3DADC;
    --flux-neutral-300: #B2BCBF;
    --flux-neutral-400: #8C989C;
    --flux-neutral-500: #6B777B;
    --flux-neutral-600: #4E585C;
    --flux-neutral-700: #363F42;
    --flux-neutral-800: #242B2E;
    --flux-neutral-900: #171D1F;
    --flux-neutral-950: #0E1315;

    /* Status hues */
    --flux-success: #0A7954;
    --flux-error: #C1121F;
    --flux-warning: #945F06;
    --flux-info: #056F82;

    /* Product & platform-layer accents (graphic only) */
    --flux-product-core: #056F82;
    --flux-product-pex: #F18525;
    --flux-product-edge: #DE37A4;
    --flux-product-agents: #8B5CF6;
    --flux-product-quest: #4F46E5;
    --flux-product-voyage: #056F82;
    --flux-product-circle: #047857;
    --flux-layer-core: #056F82;
    --flux-layer-pex: #F18525;
    --flux-layer-edge: #DE37A4;
    --flux-layer-agents: #8B5CF6;
    --flux-quest-accent: #4F46E5;
    --flux-voyage-accent: #056F82;
    --flux-circle-accent: #047857;
    --flux-edge-accent: #DE37A4;
    --flux-agents-accent: #8B5CF6;

    /* Typography */
    --flux-font-sans: 'Lexend', system-ui, -apple-system, sans-serif;
    --flux-font-mono: 'JetBrains Mono Variable', 'JetBrains Mono', ui-monospace, SFMono-Regular, monospace;
    --flux-weight-light: 300;
    --flux-weight-bold: 700;
    --flux-weight-mono-regular: 400;
    --flux-weight-mono-medium: 500;
    --flux-weight-mono-bold: 700;
    --flux-text-xs: 0.75rem;
    --flux-text-sm: 0.875rem;
    --flux-text-base: 1rem;
    --flux-text-lg: 1.125rem;
    --flux-text-xl: 1.25rem;
    --flux-text-2xl: 1.5rem;
    --flux-text-3xl: 1.875rem;
    --flux-text-4xl: 2.25rem;
    --flux-text-5xl: 3rem;
    --flux-text-6xl: 3.75rem;
    --flux-display-sm: 4.5rem;
    --flux-display-md: 6rem;
    --flux-display-lg: 8rem;
    --flux-display-xl: 10.5rem;
    --flux-leading-display: 1;
    --flux-leading-tight: 1.15;
    --flux-leading-snug: 1.3;
    --flux-leading-normal: 1.55;
    --flux-leading-relaxed: 1.7;
    --flux-tracking-tight: -0.02em;
    --flux-tracking-normal: 0;
    --flux-tracking-wide: 0.05em;
    --flux-tracking-widest: 0.12em;

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

    /* Radius */
    --flux-radius-none: 0;
    --flux-radius-xs: 0.125rem;
    --flux-radius-sm: 0.25rem;
    --flux-radius-md: 0.5rem;
    --flux-radius-lg: 0.75rem;
    --flux-radius-xl: 1rem;
    --flux-radius-2xl: 1.5rem;
    --flux-radius-full: 9999px;

    /* Layout */
    --flux-measure-prose: 38rem;
    --flux-measure-content: 62rem;
    --flux-measure-wide: 78rem;
    --flux-gutter: clamp(1.25rem, 4vw, 3rem);
    --flux-seam-gap: 4.5rem;
    --flux-hairline: 1px;

    /* Motion */
    --flux-ease: cubic-bezier(0.4, 0, 0.2, 1);
    --flux-ease-productive: cubic-bezier(0.2, 0, 0.38, 0.9);
    --flux-ease-expressive: cubic-bezier(0.4, 0.14, 0.3, 1);
    --flux-ease-entrance: cubic-bezier(0, 0, 0.38, 0.9);
    --flux-ease-exit: cubic-bezier(0.2, 0, 1, 0.9);
    --flux-duration-fast: 150ms;
    --flux-duration-normal: 200ms;
    --flux-duration-slow: 300ms;
    --flux-duration-deliberate: 480ms;
  }
}

/* ======================================================================
   TIER 2 — SEMANTIC. Reference these. Theme-aware: light / dark / deep.
   ====================================================================== */
@layer flux.semantic {
  :root,
  [data-flux-theme="light"] {
    /* Text */
    --flux-text-primary: var(--flux-black);
    --flux-text-secondary: var(--flux-grey-700);
    --flux-text-subtle: var(--flux-grey-500);
    --flux-text-placeholder: var(--flux-grey-300);
    --flux-text-disabled: var(--flux-grey-200);
    --flux-text-on-color: var(--flux-white);
    --flux-text-on-cta: var(--flux-black);
    --flux-text-inverse: var(--flux-white);
    --flux-text-link: var(--flux-primary-400);
    --flux-text-link-hover: var(--flux-primary-600);
    --flux-text-brand: var(--flux-primary-600);
    --flux-text-error: var(--flux-error);
    --flux-text-success: var(--flux-success);
    --flux-text-warning: var(--flux-warning);
    --flux-text-info: var(--flux-info);

    /* Layer — elevation */
    --flux-layer-00: var(--flux-canvas);
    --flux-layer-01: var(--flux-white);
    --flux-layer-02: var(--flux-neutral-50);
    --flux-layer-03: var(--flux-neutral-100);
    --flux-layer-hover-01: var(--flux-neutral-50);
    --flux-layer-hover-02: var(--flux-neutral-100);
    --flux-layer-hover-03: var(--flux-neutral-200);

    /* Surface */
    --flux-surface-page: var(--flux-canvas);
    --flux-surface: var(--flux-white);
    --flux-surface-alt: var(--flux-grey-50);
    --flux-surface-raised: var(--flux-white);
    --flux-surface-overlay: var(--flux-white);
    --flux-surface-sunken: var(--flux-neutral-50);
    --flux-surface-hover: var(--flux-neutral-50);
    --flux-surface-active: var(--flux-neutral-100);
    --flux-surface-selected: var(--flux-primary-50);
    --flux-surface-disabled: var(--flux-grey-50);
    --flux-surface-inverse: var(--flux-primary-800);
    --flux-surface-brand: var(--flux-primary-600);
    --flux-surface-brand-hover: var(--flux-primary-500);
    --flux-surface-brand-active: var(--flux-primary-700);
    --flux-surface-brand-subtle: var(--flux-primary-100);
    --flux-surface-cta: var(--flux-yellow-400);
    --flux-surface-cta-hover: var(--flux-yellow-300);
    --flux-surface-success-subtle: var(--flux-green-100);
    --flux-surface-warning-subtle: var(--flux-yellow-100);
    --flux-surface-error-subtle: var(--flux-orange-100);
    --flux-surface-info-subtle: var(--flux-primary-100);
    --flux-surface-backdrop: rgba(3, 46, 54, 0.5);

    /* Border */
    --flux-border-subtle: var(--flux-grey-100);
    --flux-border-default: var(--flux-grey-200);
    --flux-border-strong: var(--flux-grey-300);
    --flux-border-interactive: var(--flux-primary-400);
    --flux-border-brand: var(--flux-primary-600);
    --flux-border-focus: var(--flux-primary-400);
    --flux-border-error: var(--flux-error);
    --flux-border-disabled: var(--flux-grey-100);
    --flux-border-inverse: var(--flux-primary-700);

    /* Icon */
    --flux-icon-primary: var(--flux-black);
    --flux-icon-secondary: var(--flux-grey-500);
    --flux-icon-subtle: var(--flux-grey-300);
    --flux-icon-on-color: var(--flux-white);
    --flux-icon-brand: var(--flux-primary-400);
    --flux-icon-disabled: var(--flux-grey-200);

    /* Focus */
    --flux-focus-ring: var(--flux-primary-400);
    --flux-focus-ring-inset: var(--flux-white);
    --flux-focus-ring-width: 2px;
    --flux-focus-ring-offset: 2px;

    /* Elevation shadow */
    --flux-shadow-sm: 0 1px 2px 0 rgba(3, 46, 54, 0.05);
    --flux-shadow-md: 0 4px 6px -1px rgba(3, 46, 54, 0.07), 0 2px 4px -2px rgba(3, 46, 54, 0.05);
    --flux-shadow-lg: 0 10px 15px -3px rgba(3, 46, 54, 0.08), 0 4px 6px -4px rgba(3, 46, 54, 0.04);
    --flux-shadow-xl: 0 20px 25px -5px rgba(3, 46, 54, 0.08), 0 8px 10px -6px rgba(3, 46, 54, 0.04);

    /* Flux 1.x semantic aliases */
    --flux-background: var(--flux-canvas);
    --flux-heading: var(--flux-primary-800);
  }

  [data-flux-theme="dark"] {
    /* Text */
    --flux-text-primary: var(--flux-neutral-50);
    --flux-text-secondary: var(--flux-neutral-100);
    --flux-text-subtle: var(--flux-neutral-200);
    --flux-text-placeholder: var(--flux-neutral-300);
    --flux-text-disabled: var(--flux-neutral-600);
    --flux-text-on-color: var(--flux-white);
    --flux-text-on-cta: var(--flux-black);
    --flux-text-inverse: var(--flux-black);
    --flux-text-link: var(--flux-primary-200);
    --flux-text-link-hover: var(--flux-primary-100);
    --flux-text-brand: var(--flux-primary-200);
    --flux-text-error: var(--flux-orange-300);
    --flux-text-success: var(--flux-green-300);
    --flux-text-warning: var(--flux-yellow-300);
    --flux-text-info: var(--flux-primary-200);

    /* Layer — elevation */
    --flux-layer-00: var(--flux-neutral-950);
    --flux-layer-01: var(--flux-neutral-900);
    --flux-layer-02: var(--flux-neutral-800);
    --flux-layer-03: var(--flux-neutral-700);
    --flux-layer-hover-01: var(--flux-neutral-800);
    --flux-layer-hover-02: var(--flux-neutral-700);
    --flux-layer-hover-03: var(--flux-neutral-600);

    /* Surface */
    --flux-surface-page: var(--flux-neutral-950);
    --flux-surface: var(--flux-neutral-900);
    --flux-surface-alt: var(--flux-neutral-800);
    --flux-surface-raised: var(--flux-neutral-800);
    --flux-surface-overlay: var(--flux-neutral-800);
    --flux-surface-sunken: var(--flux-neutral-950);
    --flux-surface-hover: var(--flux-neutral-800);
    --flux-surface-active: var(--flux-neutral-700);
    --flux-surface-selected: var(--flux-primary-800);
    --flux-surface-disabled: var(--flux-neutral-800);
    --flux-surface-inverse: var(--flux-neutral-50);
    --flux-surface-brand: var(--flux-primary-400);
    --flux-surface-brand-hover: color-mix(in srgb, var(--flux-primary-400) 85%, #FFFFFF);
    --flux-surface-brand-active: color-mix(in srgb, var(--flux-primary-400) 70%, #FFFFFF);
    --flux-surface-brand-subtle: var(--flux-primary-900);
    --flux-surface-cta: var(--flux-yellow-400);
    --flux-surface-cta-hover: var(--flux-yellow-300);
    --flux-surface-success-subtle: var(--flux-green-900);
    --flux-surface-warning-subtle: var(--flux-yellow-900);
    --flux-surface-error-subtle: var(--flux-orange-900);
    --flux-surface-info-subtle: var(--flux-primary-800);
    --flux-surface-backdrop: rgba(0, 0, 0, 0.65);

    /* Border */
    --flux-border-subtle: var(--flux-neutral-800);
    --flux-border-default: var(--flux-neutral-700);
    --flux-border-strong: var(--flux-neutral-400);
    --flux-border-interactive: var(--flux-primary-300);
    --flux-border-brand: var(--flux-primary-300);
    --flux-border-focus: var(--flux-primary-300);
    --flux-border-error: var(--flux-orange-300);
    --flux-border-disabled: var(--flux-neutral-800);
    --flux-border-inverse: var(--flux-neutral-100);

    /* Icon */
    --flux-icon-primary: var(--flux-neutral-50);
    --flux-icon-secondary: var(--flux-neutral-200);
    --flux-icon-subtle: var(--flux-neutral-400);
    --flux-icon-on-color: var(--flux-white);
    --flux-icon-brand: var(--flux-primary-300);
    --flux-icon-disabled: var(--flux-neutral-600);

    /* Focus */
    --flux-focus-ring: var(--flux-primary-300);
    --flux-focus-ring-inset: var(--flux-neutral-950);
    --flux-focus-ring-width: 2px;
    --flux-focus-ring-offset: 2px;

    /* Elevation shadow */
    --flux-shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.4);
    --flux-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.45), 0 2px 4px -2px rgba(0, 0, 0, 0.4);
    --flux-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.5), 0 4px 6px -4px rgba(0, 0, 0, 0.4);
    --flux-shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.55), 0 8px 10px -6px rgba(0, 0, 0, 0.4);

    /* Flux 1.x semantic aliases */
    --flux-background: var(--flux-neutral-950);
    --flux-heading: var(--flux-neutral-50);
  }

  [data-flux-theme="deep"] {
    /* Text */
    --flux-text-primary: var(--flux-white);
    --flux-text-secondary: var(--flux-primary-100);
    --flux-text-subtle: var(--flux-primary-200);
    --flux-text-placeholder: var(--flux-primary-200);
    --flux-text-disabled: var(--flux-primary-600);
    --flux-text-on-color: var(--flux-white);
    --flux-text-on-cta: var(--flux-black);
    --flux-text-inverse: var(--flux-black);
    --flux-text-link: var(--flux-primary-200);
    --flux-text-link-hover: var(--flux-white);
    --flux-text-brand: var(--flux-primary-200);
    --flux-text-error: var(--flux-orange-300);
    --flux-text-success: var(--flux-green-300);
    --flux-text-warning: var(--flux-yellow-300);
    --flux-text-info: var(--flux-primary-200);

    /* Layer — elevation */
    --flux-layer-00: var(--flux-primary-800);
    --flux-layer-01: var(--flux-primary-700);
    --flux-layer-02: var(--flux-primary-600);
    --flux-layer-03: var(--flux-primary-600);
    --flux-layer-hover-01: var(--flux-primary-600);
    --flux-layer-hover-02: var(--flux-primary-500);
    --flux-layer-hover-03: var(--flux-primary-500);

    /* Surface */
    --flux-surface-page: var(--flux-primary-800);
    --flux-surface: var(--flux-primary-700);
    --flux-surface-alt: var(--flux-primary-600);
    --flux-surface-raised: var(--flux-primary-700);
    --flux-surface-overlay: var(--flux-primary-700);
    --flux-surface-sunken: var(--flux-primary-900);
    --flux-surface-hover: var(--flux-primary-700);
    --flux-surface-active: var(--flux-primary-600);
    --flux-surface-selected: var(--flux-primary-600);
    --flux-surface-disabled: var(--flux-primary-700);
    --flux-surface-inverse: var(--flux-white);
    --flux-surface-brand: var(--flux-primary-400);
    --flux-surface-brand-hover: color-mix(in srgb, var(--flux-primary-400) 85%, #FFFFFF);
    --flux-surface-brand-active: color-mix(in srgb, var(--flux-primary-400) 70%, #FFFFFF);
    --flux-surface-brand-subtle: var(--flux-primary-700);
    --flux-surface-cta: var(--flux-yellow-400);
    --flux-surface-cta-hover: var(--flux-yellow-300);
    --flux-surface-success-subtle: var(--flux-green-900);
    --flux-surface-warning-subtle: var(--flux-yellow-900);
    --flux-surface-error-subtle: var(--flux-orange-900);
    --flux-surface-info-subtle: var(--flux-primary-500);
    --flux-surface-backdrop: rgba(2, 30, 36, 0.7);

    /* Border */
    --flux-border-subtle: var(--flux-primary-700);
    --flux-border-default: var(--flux-primary-600);
    --flux-border-strong: var(--flux-primary-300);
    --flux-border-interactive: var(--flux-primary-300);
    --flux-border-brand: var(--flux-primary-300);
    --flux-border-focus: var(--flux-primary-300);
    --flux-border-error: var(--flux-orange-300);
    --flux-border-disabled: var(--flux-primary-700);
    --flux-border-inverse: var(--flux-white);

    /* Icon */
    --flux-icon-primary: var(--flux-white);
    --flux-icon-secondary: var(--flux-primary-200);
    --flux-icon-subtle: var(--flux-primary-300);
    --flux-icon-on-color: var(--flux-white);
    --flux-icon-brand: var(--flux-primary-200);
    --flux-icon-disabled: var(--flux-primary-600);

    /* Focus */
    --flux-focus-ring: var(--flux-primary-300);
    --flux-focus-ring-inset: var(--flux-primary-800);
    --flux-focus-ring-width: 2px;
    --flux-focus-ring-offset: 2px;

    /* Elevation shadow */
    --flux-shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.35);
    --flux-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.4), 0 2px 4px -2px rgba(0, 0, 0, 0.35);
    --flux-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.45), 0 4px 6px -4px rgba(0, 0, 0, 0.35);
    --flux-shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.5), 0 8px 10px -6px rgba(0, 0, 0, 0.35);

    /* Flux 1.x semantic aliases */
    --flux-background: var(--flux-primary-800);
    --flux-heading: var(--flux-white);
  }
}

/* ======================================================================
   TIER 3 — COMPONENT. Per-component geometry and role bindings.
   ====================================================================== */
@layer flux.component {
  :root {
    /* Button */
    --flux-button-radius: var(--flux-radius-sm);
    --flux-button-font-weight: var(--flux-weight-bold);
    --flux-button-gap: var(--flux-space-2);
    --flux-button-height-sm: 1.875rem;
    --flux-button-height-md: 2.25rem;
    --flux-button-height-lg: 2.75rem;
    --flux-button-padding-x-sm: var(--flux-space-3);
    --flux-button-padding-x-md: var(--flux-space-4);
    --flux-button-padding-x-lg: var(--flux-space-6);
    --flux-button-font-size-sm: var(--flux-text-xs);
    --flux-button-font-size-md: var(--flux-text-sm);
    --flux-button-font-size-lg: var(--flux-text-base);

    /* Field — input, textarea, select, date picker */
    --flux-field-height: 2.25rem;
    --flux-field-radius: var(--flux-radius-sm);
    --flux-field-padding-x: var(--flux-space-3);
    --flux-field-font-size: var(--flux-text-sm);
    --flux-field-bg: var(--flux-surface);
    --flux-field-text: var(--flux-text-primary);
    --flux-field-placeholder: var(--flux-text-placeholder);
    --flux-field-border: var(--flux-border-strong);
    --flux-field-border-hover: var(--flux-border-interactive);
    --flux-field-border-focus: var(--flux-border-focus);
    --flux-field-border-error: var(--flux-border-error);
    --flux-field-label-gap: var(--flux-space-1);
    --flux-textarea-min-height: 6.25rem;
    --flux-select-chevron-size: var(--flux-space-4);
    --flux-select-panel-max-height: 12.5rem;
    --flux-multiselect-panel-max-height: 12.5rem;
    --flux-datepicker-trigger-icon-size: var(--flux-space-4);
    --flux-datepicker-panel-width: 18rem;
    --flux-datepicker-panel-padding: var(--flux-space-4);
    --flux-datepicker-panel-bg: var(--flux-surface-overlay);
    --flux-datepicker-panel-border: var(--flux-border-subtle);
    --flux-datepicker-nav-size: var(--flux-space-8);
    --flux-datepicker-day-size: var(--flux-space-8);
    --flux-datepicker-grid-gap: var(--flux-space-1);
    --flux-datepicker-day-text: var(--flux-text-primary);
    --flux-datepicker-weekday-text: var(--flux-text-subtle);
    --flux-datepicker-selected-bg: var(--flux-surface-brand);
    --flux-datepicker-selected-text: var(--flux-text-on-color);
    --flux-datepicker-range-bg: var(--flux-surface-selected);
    --flux-datepicker-today-border: var(--flux-border-interactive);

    /* Control — checkbox, radio, switch */
    --flux-control-size: 1.125rem;
    --flux-control-label-gap: var(--flux-space-2);
    --flux-control-checked-bg: var(--flux-surface-brand);
    --flux-control-unchecked-border: var(--flux-border-default);
    --flux-switch-track-width: 2.75rem;
    --flux-switch-track-height: 1.5rem;

    /* Card */
    --flux-card-radius: var(--flux-radius-sm);
    --flux-card-padding: var(--flux-space-5);
    --flux-card-bg: var(--flux-layer-01);
    --flux-card-border: var(--flux-border-subtle);
    --flux-card-border-hover: var(--flux-border-interactive);
    --flux-card-shadow-hover: var(--flux-shadow-md);

    /* Badge */
    --flux-badge-radius: var(--flux-radius-full);
    --flux-badge-height: 1.25rem;
    --flux-badge-padding-x: 0.625rem;
    --flux-badge-font-size: var(--flux-text-xs);
    --flux-badge-font-weight: var(--flux-weight-bold);

    /* Table */
    --flux-table-cell-padding-y: var(--flux-space-3);
    --flux-table-cell-padding-x: var(--flux-space-4);
    --flux-table-divider: var(--flux-border-subtle);
    --flux-table-header-text: var(--flux-text-subtle);
    --flux-table-header-font-size: var(--flux-text-xs);
    --flux-table-row-hover: var(--flux-layer-hover-01);
    --flux-table-font-size: var(--flux-text-sm);

    /* Modal */
    --flux-modal-radius: var(--flux-radius-sm);
    --flux-modal-bg: var(--flux-surface-overlay);
    --flux-modal-shadow: var(--flux-shadow-xl);
    --flux-modal-backdrop: var(--flux-surface-backdrop);
    --flux-modal-width-sm: 24rem;
    --flux-modal-width-md: 32rem;
    --flux-modal-width-lg: 48rem;
    --flux-modal-padding: var(--flux-space-5);

    /* Note */
    --flux-note-radius: var(--flux-radius-sm);
    --flux-note-padding: var(--flux-space-4);
    --flux-note-gap: var(--flux-space-3);

    /* Description list — labelled values for one object */
    --flux-dl-gap-x: var(--flux-space-8);
    --flux-dl-gap-y: var(--flux-space-4);
    --flux-dl-term-gap: var(--flux-space-1);
    --flux-dl-term-color: var(--flux-text-secondary);
    --flux-dl-term-size: var(--flux-text-sm);
    --flux-dl-detail-color: var(--flux-text-primary);
    --flux-dl-detail-size: var(--flux-text-base);

    /* Tabs */
    --flux-tab-height: 2.5rem;
    --flux-tab-padding-x: var(--flux-space-4);
    --flux-tab-font-size: var(--flux-text-sm);
    --flux-tab-indicator-width: 2px;
    --flux-tab-indicator: var(--flux-border-interactive);
    --flux-tab-text: var(--flux-text-subtle);
    --flux-tab-text-active: var(--flux-text-brand);

    /* Avatar */
    --flux-avatar-radius: var(--flux-radius-full);
    --flux-avatar-size-sm: 2rem;
    --flux-avatar-size-md: 2.5rem;
    --flux-avatar-size-lg: 3.5rem;
    --flux-avatar-bg: var(--flux-surface-brand-subtle);
    --flux-avatar-text: var(--flux-text-brand);

    /* Tooltip */
    --flux-tooltip-bg: var(--flux-surface-inverse);
    --flux-tooltip-text: var(--flux-text-inverse);
    --flux-tooltip-radius: var(--flux-radius-sm);
    --flux-tooltip-font-size: var(--flux-text-xs);
    --flux-tooltip-padding-x: var(--flux-space-3);
    --flux-tooltip-padding-y: var(--flux-space-2);

    /* Slide — deck geometry */
    --flux-slide-width: 80rem;
    --flux-slide-height: 45rem;
    --flux-slide-pad-x: var(--flux-space-16);
    --flux-slide-pad-y: var(--flux-space-12);
    --flux-slide-gap: var(--flux-space-10);
    --flux-slide-measure: 44rem;
    --flux-slide-measure-display: var(--flux-measure-content);
    --flux-slide-accent: var(--flux-product-core);
    --flux-slide-mark-opacity: 0.12;
    --flux-slide-plot-height: 18rem;
    --flux-slide-donut-size: 20rem;
    --flux-slide-donut-stroke: 5;

    /* Flow — outcome patterns (Flux 1.x, retained) */
    --flux-flow-header-height: 3.5rem;
    --flux-flow-header-bg: var(--flux-surface);
    --flux-flow-header-border: var(--flux-border-subtle);
    --flux-flow-entry-duration: var(--flux-duration-deliberate);
    --flux-flow-return-countdown: 8s;
  }
}

/* ======================================================================
   BASE — the rules a preset cannot enforce from tokens alone.
   ====================================================================== */
@layer flux.base {
  html {
    /* Fluid root. Every rem in Flux scales from 16px to 19px, not from a fixed 16px. */
    font-size: clamp(16px, 0.875rem + 0.4vw, 19px);
    font-family: var(--flux-font-sans);
    font-weight: var(--flux-weight-light);
    color: var(--flux-text-primary);
    background-color: var(--flux-surface-page);
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
  }

  /* Lexend ships two weights in Flux. Anything between collapses to one of them. */
  b, strong, h1, h2, h3, h4, h5, h6, th {
    font-weight: var(--flux-weight-bold);
  }

  code, kbd, samp, pre {
    font-family: var(--flux-font-mono);
    font-weight: var(--flux-weight-mono-regular);
  }

  /* Focus is Flux teal everywhere, never a browser or Tailwind default. */
  :where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
    outline: var(--flux-focus-ring-width) solid var(--flux-focus-ring);
    outline-offset: var(--flux-focus-ring-offset);
  }

  ::selection {
    background-color: var(--flux-surface-brand-subtle);
    color: var(--flux-text-primary);
  }
}

@media (prefers-reduced-motion: reduce) {
  @layer flux.base {
    *, *::before, *::after {
      animation-duration: 1ms !important;
      animation-iteration-count: 1 !important;
      transition-duration: 1ms !important;
      scroll-behavior: auto !important;
    }
  }
}
