:root {
  /* Primitives */
  --ines-primitive-purple-50: #faf3f8;
  --ines-primitive-purple-100: #f4e2ef;
  --ines-primitive-purple-200: #e9c5df;
  --ines-primitive-purple-300: #d99bc9;
  --ines-primitive-purple-400: #c36bae;
  --ines-primitive-purple-500: #a84091;
  --ines-primitive-purple-600: #812168;
  --ines-primitive-purple-700: #6b1b57;
  --ines-primitive-purple-800: #551646;
  --ines-primitive-purple-900: #3e1033;
  --ines-primitive-purple-950: #25091e;
  --ines-primitive-purple-focus-ring: rgba(129, 33, 104, 0.28);

  --ines-primitive-green-50: #eef9f4;
  --ines-primitive-green-100: #d7f1e6;
  --ines-primitive-green-200: #b2e5d0;
  --ines-primitive-green-300: #7dd3b0;
  --ines-primitive-green-400: #43bc8e;
  --ines-primitive-green-500: #18a174;
  --ines-primitive-green-600: #148a63;
  --ines-primitive-green-700: #106e50;
  --ines-primitive-green-800: #0d5740;
  --ines-primitive-green-900: #0a4634;
  --ines-primitive-green-950: #05271d;
  --ines-primitive-green-focus-ring: rgba(24, 161, 116, 0.24);

  --ines-primitive-warm-50: #fdfbf8;
  --ines-primitive-warm-100: #f8f3ec;
  --ines-primitive-warm-200: #ebe3d7;
  --ines-primitive-warm-300: #dacdbc;
  --ines-primitive-warm-400: #c4b09b;
  --ines-primitive-warm-500: #a99179;
  --ines-primitive-warm-600: #89745d;
  --ines-primitive-warm-700: #6f5c49;
  --ines-primitive-warm-800: #59493b;
  --ines-primitive-warm-900: #483b31;
  --ines-primitive-warm-950: #282019;

  --ines-primitive-neutral-0: #ffffff;
  --ines-primitive-neutral-50: #faf8f4;
  --ines-primitive-neutral-100: #f3f0ea;
  --ines-primitive-neutral-200: #e8e2d8;
  --ines-primitive-neutral-300: #d8cec1;
  --ines-primitive-neutral-400: #b6aa9b;
  --ines-primitive-neutral-500: #8e8377;
  --ines-primitive-neutral-600: #6b6258;
  --ines-primitive-neutral-700: #4d463f;
  --ines-primitive-neutral-800: #2e2a26;
  --ines-primitive-neutral-900: #1a1816;
  --ines-primitive-neutral-950: #0e0e0e;
  --ines-primitive-neutral-1000: #000000;
  --ines-primitive-neutral-border: rgba(14, 14, 14, 0.08);
  --ines-primitive-neutral-border-strong: rgba(14, 14, 14, 0.16);
  --ines-primitive-neutral-overlay: rgba(14, 14, 14, 0.64);

  --ines-primitive-info-50: #eff6ff;
  --ines-primitive-info-500: #2f6fed;
  --ines-primitive-info-700: #1d4ed8;
  --ines-primitive-warning-50: #fff7e6;
  --ines-primitive-warning-500: #c8871a;
  --ines-primitive-warning-700: #8a5a10;
  --ines-primitive-danger-50: #fff1f0;
  --ines-primitive-danger-500: #b3261e;
  --ines-primitive-danger-700: #7f1d1d;

  /* Legacy brand aliases */
  --ines-color-purple: var(--ines-primitive-purple-600);
  --ines-color-purple-hover: var(--ines-primitive-purple-700);
  --ines-color-purple-soft: var(--ines-primitive-purple-50);
  --ines-color-green: var(--ines-primitive-green-500);
  --ines-color-green-hover: var(--ines-primitive-green-600);
  --ines-color-green-soft: var(--ines-primitive-green-50);
  --ines-color-warm: var(--ines-primitive-warm-200);
  --ines-color-ink: var(--ines-primitive-neutral-950);
  --ines-color-ink-strong: var(--ines-primitive-neutral-1000);
  --ines-color-ink-muted: var(--ines-primitive-neutral-600);
  --ines-color-ink-subtle: var(--ines-primitive-neutral-500);
  --ines-color-surface: var(--ines-primitive-neutral-50);
  --ines-color-surface-elevated: var(--ines-primitive-neutral-0);
  --ines-color-border: var(--ines-primitive-neutral-border);
  --ines-color-border-strong: var(--ines-primitive-neutral-border-strong);
  --ines-color-dark: var(--ines-primitive-neutral-950);
  --ines-color-dark-surface: var(--ines-primitive-neutral-900);

  /* Semantic color layer */
  --ines-color-bg-default: var(--ines-primitive-neutral-50);
  --ines-color-bg-elevated: var(--ines-primitive-neutral-0);
  --ines-color-bg-subtle: var(--ines-primitive-neutral-100);
  --ines-color-bg-warm: var(--ines-primitive-warm-200);
  --ines-color-bg-dark: var(--ines-primitive-neutral-950);

  --ines-color-surface-default: var(--ines-primitive-neutral-0);
  --ines-color-surface-elevated: var(--ines-primitive-neutral-0);
  --ines-color-surface-warm: var(--ines-primitive-warm-100);
  --ines-color-surface-primary-soft: var(--ines-primitive-purple-50);
  --ines-color-surface-secondary-soft: var(--ines-primitive-green-50);
  --ines-color-surface-info-soft: var(--ines-primitive-info-50);
  --ines-color-surface-success-soft: var(--ines-primitive-green-50);
  --ines-color-surface-warning-soft: var(--ines-primitive-warning-50);
  --ines-color-surface-danger-soft: var(--ines-primitive-danger-50);
  --ines-color-surface-dark: var(--ines-primitive-neutral-900);

  --ines-color-text-primary: var(--ines-primitive-neutral-950);
  --ines-color-text-muted: var(--ines-primitive-neutral-600);
  --ines-color-text-subtle: var(--ines-primitive-neutral-500);
  --ines-color-text-inverse: var(--ines-primitive-neutral-0);
  --ines-color-text-brand: var(--ines-primitive-purple-600);
  --ines-color-text-success: var(--ines-primitive-green-700);
  --ines-color-text-warning: var(--ines-primitive-warning-700);
  --ines-color-text-danger: var(--ines-primitive-danger-700);
  --ines-color-text-info: var(--ines-primitive-info-700);

  --ines-color-border-default: var(--ines-primitive-neutral-border);
  --ines-color-border-strong: var(--ines-primitive-neutral-border-strong);
  --ines-color-border-focus-primary: var(--ines-primitive-purple-focus-ring);
  --ines-color-border-focus-secondary: var(--ines-primitive-green-focus-ring);
  --ines-color-border-on-dark: var(--ines-primitive-neutral-700);

  --ines-color-action-primary: var(--ines-primitive-purple-600);
  --ines-color-action-primary-hover: var(--ines-primitive-purple-700);
  --ines-color-action-primary-soft: var(--ines-primitive-purple-50);
  --ines-color-action-primary-fg: var(--ines-primitive-neutral-0);
  --ines-color-action-secondary: var(--ines-primitive-green-500);
  --ines-color-action-secondary-hover: var(--ines-primitive-green-600);
  --ines-color-action-secondary-soft: var(--ines-primitive-green-50);
  --ines-color-action-secondary-fg: var(--ines-primitive-neutral-0);
  --ines-color-action-neutral: var(--ines-primitive-neutral-950);
  --ines-color-action-neutral-hover: var(--ines-primitive-neutral-800);
  --ines-color-action-neutral-fg: var(--ines-primitive-neutral-0);
  --ines-color-action-disabled-bg: var(--ines-primitive-neutral-200);
  --ines-color-action-disabled-fg: var(--ines-primitive-neutral-500);

  --ines-color-role-citizen: var(--ines-primitive-purple-600);
  --ines-color-role-citizen-soft: var(--ines-primitive-purple-50);
  --ines-color-role-citizen-fg: var(--ines-primitive-purple-700);
  --ines-color-role-merchant: var(--ines-primitive-green-500);
  --ines-color-role-merchant-soft: var(--ines-primitive-green-50);
  --ines-color-role-merchant-fg: var(--ines-primitive-green-700);
  --ines-color-role-collectivity: var(--ines-primitive-warm-700);
  --ines-color-role-collectivity-soft: var(--ines-primitive-warm-100);
  --ines-color-role-collectivity-fg: var(--ines-primitive-warm-800);
  --ines-color-role-admin: var(--ines-primitive-neutral-950);
  --ines-color-role-admin-soft: var(--ines-primitive-neutral-100);
  --ines-color-role-admin-fg: var(--ines-primitive-neutral-950);

  --ines-color-product-balance-positive: var(--ines-primitive-green-600);
  --ines-color-product-balance-neutral: var(--ines-primitive-purple-600);
  --ines-color-product-payment-pending: var(--ines-primitive-warning-500);
  --ines-color-product-payment-failed: var(--ines-primitive-danger-500);
  --ines-color-product-info: var(--ines-primitive-info-500);

  --ines-color-icon-default: var(--ines-primitive-neutral-800);
  --ines-color-icon-muted: var(--ines-primitive-neutral-600);
  --ines-color-icon-brand: var(--ines-primitive-purple-600);
  --ines-color-icon-success: var(--ines-primitive-green-600);

  --ines-color-background: var(--ines-color-bg-default);
  --ines-color-foreground: var(--ines-color-text-primary);
  --ines-color-primary: var(--ines-color-action-primary);
  --ines-color-secondary: var(--ines-color-action-secondary);
  --ines-color-accent: var(--ines-color-bg-warm);

  /* Typography */
  --ines-font-display: "El Messiri", "Source Serif 4", serif;
  --ines-font-sans: "Source Sans 3", system-ui, sans-serif;
  --ines-font-serif: "Source Serif 4", Georgia, serif;
  --ines-text-display-2xl: 5.75rem;
  --ines-text-display-xl: 4.5rem;
  --ines-text-display-lg: 3.5rem;
  --ines-text-display-md: 2.5rem;
  --ines-text-heading-xl: 2rem;
  --ines-text-heading-lg: 1.5rem;
  --ines-text-heading-md: 1.25rem;
  --ines-text-body-lg: 1.25rem;
  --ines-text-body: 1.125rem;
  --ines-text-body-sm: 0.9375rem;
  --ines-text-body-xs: 0.8125rem;
  --ines-text-label-base: 0.875rem;
  --ines-text-label-sm: 0.75rem;
  --ines-text-eyebrow: 0.8125rem;
  --ines-text-button-md: 0.9375rem;
  --ines-text-button-sm: 0.8125rem;
  --ines-text-caption-xs: 0.75rem;

  /* Spacing */
  --ines-space-0: 0;
  --ines-space-1: 0.25rem;
  --ines-space-2: 0.5rem;
  --ines-space-3: 0.75rem;
  --ines-space-4: 1rem;
  --ines-space-5: 1.25rem;
  --ines-space-6: 1.5rem;
  --ines-space-8: 2rem;
  --ines-space-10: 2.5rem;
  --ines-space-12: 3rem;
  --ines-space-16: 4rem;
  --ines-space-20: 5rem;
  --ines-space-24: 6rem;
  --ines-space-section-sm: clamp(3.5rem, 7vh, 5.5rem);
  --ines-space-section: clamp(5rem, 11vh, 9.5rem);
  --ines-space-section-lg: clamp(6.5rem, 14vh, 12rem);

  /* Size */
  --ines-size-control-sm: 2.25rem;
  --ines-size-control-md: 2.75rem;
  --ines-size-control-lg: 3.25rem;
  --ines-size-control-xl: 3.75rem;
  --ines-size-icon-xs: 0.875rem;
  --ines-size-icon-sm: 1rem;
  --ines-size-icon-md: 1.25rem;
  --ines-size-icon-lg: 1.5rem;
  --ines-size-icon-xl: 2rem;
  --ines-size-avatar-sm: 2rem;
  --ines-size-avatar-md: 2.5rem;
  --ines-size-avatar-lg: 3.5rem;
  --ines-size-container-narrow: 760px;
  --ines-size-container-default: 1120px;
  --ines-size-container-wide: 1360px;

  /* Radius */
  --ines-radius-xs: 0.25rem;
  --ines-radius-sm: 0.5rem;
  --ines-radius-md: 0.75rem;
  --ines-radius-lg: 1rem;
  --ines-radius-xl: 1.5rem;
  --ines-radius-pill: 999px;
  --ines-radius-logo: 30px;

  /* Opacity */
  --ines-opacity-disabled: 0.42;
  --ines-opacity-muted: 0.62;
  --ines-opacity-overlay: 0.64;
  --ines-opacity-scrim: 0.72;
  --ines-opacity-focus-ring: 0.28;

  /* Shadows */
  --ines-shadow-surface: 0 1px 2px rgba(14, 14, 14, 0.02), 0 4px 16px rgba(14, 14, 14, 0.03);
  --ines-shadow-primary: 0 1px 2px rgba(14, 14, 14, 0.04), 0 4px 12px rgba(129, 33, 104, 0.18);
  --ines-shadow-secondary: 0 1px 2px rgba(14, 14, 14, 0.04), 0 4px 12px rgba(24, 161, 116, 0.18);

  /* Motion */
  --ines-ease-premium: cubic-bezier(0.16, 1, 0.3, 1);
  --ines-ease-soft: cubic-bezier(0.32, 0.72, 0, 1);
  --ines-duration-fast: 150ms;
  --ines-duration-default: 300ms;
  --ines-duration-entrance: 700ms;
}

/* Tailwind v4 bridge for INES apps. */
@theme inline {
  --color-primary: var(--ines-color-primary);
  --color-primary-hover: var(--ines-color-action-primary-hover);
  --color-primary-soft: var(--ines-color-action-primary-soft);
  --color-secondary: var(--ines-color-secondary);
  --color-secondary-hover: var(--ines-color-action-secondary-hover);
  --color-secondary-soft: var(--ines-color-action-secondary-soft);
  --color-accent-warm: var(--ines-color-bg-warm);
  --color-surface: var(--ines-color-surface-default);
  --color-surface-elevated: var(--ines-color-surface-elevated);
  --color-ink: var(--ines-color-text-primary);
  --color-ink-strong: var(--ines-color-ink-strong);
  --color-ink-muted: var(--ines-color-text-muted);
  --color-ink-subtle: var(--ines-color-text-subtle);
  --color-border: var(--ines-color-border-default);
  --color-border-strong: var(--ines-color-border-strong);
  --color-dark: var(--ines-color-dark);
  --color-dark-surface: var(--ines-color-dark-surface);
  --font-display: var(--ines-font-display);
  --font-sans: var(--ines-font-sans);
  --font-serif: var(--ines-font-serif);
  --text-display-2xl: var(--ines-text-display-2xl);
  --text-display-xl: var(--ines-text-display-xl);
  --text-display-lg: var(--ines-text-display-lg);
  --text-display-md: var(--ines-text-display-md);
  --text-body-lg: var(--ines-text-body-lg);
  --text-body: var(--ines-text-body);
  --text-body-sm: var(--ines-text-body-sm);
  --text-eyebrow: var(--ines-text-eyebrow);
  --spacing-section-sm: var(--ines-space-section-sm);
  --spacing-section: var(--ines-space-section);
  --spacing-section-lg: var(--ines-space-section-lg);
  --ease-premium: var(--ines-ease-premium);
  --ease-soft: var(--ines-ease-soft);
}
