/**
 * Virea Energy — Brand tokens (CSS custom properties)
 * GENERATED from tokens/virea.tokens.json by scripts/build-tokens.mjs — do not edit by hand.
 * Values without a comment are confirmed from the supplied brand assets.
 * Values tagged inferred come from recurring patterns in the reference mockups.
 * Values tagged proposed were added for system completeness and are NOT official brand specifications.
 */

@font-face {
  font-family: "Forma DJR Display";
  src: url("fonts/FormaDJRDisplay-Regular.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

:root {
  /* ── primitive.color ───────────────────────────────────────── */
  --virea-color-neutral-25: #F7F7F5; /* proposed */
  --virea-color-neutral-50: #F0F0ED; /* proposed */
  --virea-color-neutral-100: #E5E5E2; /* proposed */
  --virea-color-neutral-200: #D2D2CE; /* proposed */
  --virea-color-neutral-300: #B5B5B2; /* proposed */
  --virea-color-neutral-400: #6B6B6B; /* proposed */
  --virea-color-neutral-500: #5B5B5B;
  --virea-color-neutral-600: #474747; /* proposed */
  --virea-color-neutral-700: #333333; /* proposed */
  --virea-color-neutral-800: #232323; /* proposed */
  --virea-color-neutral-900: #161616; /* inferred */
  --virea-color-neutral-white: #FFFFFF;
  --virea-color-neutral-black: #000000;
  --virea-color-energy-lime: #E7FF41;
  --virea-color-energy-leaf: #93C641;
  --virea-color-energy-green: #00A16E;
  --virea-color-energy-teal: #06BEBF;
  --virea-color-energy-mint: #0DEFC0;
  --virea-color-energy-amber: #FFC002;
  --virea-color-energy-orange: #EE8009;
  --virea-color-energy-ember: #E86421;
  --virea-color-energy-green-deep: #007A53; /* proposed */
  --virea-color-energy-teal-deep: #00787A; /* proposed */
  --virea-color-energy-amber-deep: #8A5A00; /* proposed */
  --virea-color-energy-ember-deep: #B4461A; /* proposed */
  --virea-color-symbol-top-1: #E7FF41;
  --virea-color-symbol-top-2: #A3D141;
  --virea-color-symbol-top-3: #6CBC4D;
  --virea-color-symbol-top-4: #11A569;
  --virea-color-symbol-bottom-1: #00A376;
  --virea-color-symbol-bottom-2: #04B3A2;
  --virea-color-symbol-bottom-3: #06BFBF;
  --virea-color-symbol-bottom-4: #06E8BF;
  /* ── primitive.font-family ─────────────────────────────────── */
  --virea-font-family-brand: "Forma DJR Display", "Forma DJR Text", "Helvetica Neue", Helvetica, Arial, system-ui, sans-serif;
  --virea-font-family-mono: ui-monospace, SFMono-Regular, Menlo, monospace; /* proposed */
  /* ── primitive.font-weight ─────────────────────────────────── */
  --virea-font-weight-regular: 400;
  /* ── primitive.font-size ───────────────────────────────────── */
  --virea-font-size-12: 0.75rem; /* proposed */
  --virea-font-size-13: 0.8125rem; /* proposed */
  --virea-font-size-14: 0.875rem; /* proposed */
  --virea-font-size-15: 0.9375rem; /* proposed */
  --virea-font-size-16: 1rem; /* proposed */
  --virea-font-size-18: 1.125rem; /* proposed */
  --virea-font-size-20: 1.25rem; /* proposed */
  --virea-font-size-22: 1.375rem; /* proposed */
  --virea-font-size-24: 1.5rem; /* proposed */
  --virea-font-size-28: 1.75rem; /* proposed */
  --virea-font-size-32: 2rem; /* proposed */
  --virea-font-size-36: 2.25rem; /* proposed */
  --virea-font-size-40: 2.5rem; /* proposed */
  --virea-font-size-44: 2.75rem; /* proposed */
  --virea-font-size-48: 3rem; /* proposed */
  --virea-font-size-56: 3.5rem; /* proposed */
  --virea-font-size-64: 4rem; /* proposed */
  --virea-font-size-72: 4.5rem; /* proposed */
  --virea-font-size-80: 5rem; /* proposed */
  --virea-font-size-88: 5.5rem; /* proposed */
  --virea-font-size-96: 6rem; /* proposed */
  --virea-font-size-120: 7.5rem; /* proposed */
  /* ── primitive.line-height ─────────────────────────────────── */
  --virea-line-height-solid: 1; /* inferred */
  --virea-line-height-tight: 1.05; /* inferred */
  --virea-line-height-snug: 1.15; /* proposed */
  --virea-line-height-compact: 1.3; /* proposed */
  --virea-line-height-normal: 1.5; /* proposed */
  --virea-line-height-relaxed: 1.6; /* proposed */
  /* ── primitive.letter-spacing ──────────────────────────────── */
  --virea-letter-spacing-tighter: -0.03em; /* inferred */
  --virea-letter-spacing-tight: -0.02em; /* inferred */
  --virea-letter-spacing-snug: -0.01em; /* proposed */
  --virea-letter-spacing-normal: 0em;
  --virea-letter-spacing-wide: 0.04em; /* proposed */
  --virea-letter-spacing-caps: 0.08em; /* inferred */
  /* ── primitive.space ───────────────────────────────────────── */
  --virea-space-0: 0px; /* proposed */
  --virea-space-1: 0.25rem; /* proposed */
  --virea-space-2: 0.5rem; /* proposed */
  --virea-space-3: 0.75rem; /* proposed */
  --virea-space-4: 1rem; /* proposed */
  --virea-space-5: 1.25rem; /* proposed */
  --virea-space-6: 1.5rem; /* proposed */
  --virea-space-8: 2rem; /* proposed */
  --virea-space-10: 2.5rem; /* proposed */
  --virea-space-12: 3rem; /* proposed */
  --virea-space-16: 4rem; /* proposed */
  --virea-space-20: 5rem; /* proposed */
  --virea-space-24: 6rem; /* proposed */
  --virea-space-30: 7.5rem; /* proposed */
  --virea-space-40: 10rem; /* proposed */
  --virea-space-50: 12.5rem; /* proposed */
  /* ── primitive.border-width ────────────────────────────────── */
  --virea-border-width-none: 0px; /* proposed */
  --virea-border-width-hairline: 1px; /* inferred */
  --virea-border-width-focus: 2px; /* proposed */
  /* ── primitive.radius ──────────────────────────────────────── */
  --virea-radius-none: 0px; /* inferred */
  --virea-radius-xs: 2px; /* proposed */
  --virea-radius-full: 9999px; /* proposed */
  /* ── primitive.opacity ─────────────────────────────────────── */
  --virea-opacity-0: 0; /* proposed */
  --virea-opacity-8: 0.08; /* proposed */
  --virea-opacity-16: 0.16; /* proposed */
  --virea-opacity-24: 0.24; /* proposed */
  --virea-opacity-40: 0.4; /* proposed */
  --virea-opacity-64: 0.64; /* proposed */
  --virea-opacity-80: 0.8; /* proposed */
  --virea-opacity-100: 1; /* proposed */
  /* ── primitive.shadow ──────────────────────────────────────── */
  --virea-shadow-none: 0px 0px 0px 0px #00000000; /* inferred */
  --virea-shadow-overlay: 0px 16px 48px 0px #16161614; /* proposed */
  /* ── primitive.duration ────────────────────────────────────── */
  --virea-duration-instant: 80ms; /* proposed */
  --virea-duration-fast: 160ms; /* proposed */
  --virea-duration-base: 240ms; /* proposed */
  --virea-duration-slow: 400ms; /* proposed */
  --virea-duration-reveal: 720ms; /* proposed */
  --virea-duration-field: 1200ms; /* proposed */
  --virea-duration-ambient: 24000ms; /* proposed */
  /* ── primitive.easing ──────────────────────────────────────── */
  --virea-easing-standard: cubic-bezier(0.2, 0, 0, 1); /* proposed */
  --virea-easing-enter: cubic-bezier(0.16, 1, 0.3, 1); /* proposed */
  --virea-easing-exit: cubic-bezier(0.4, 0, 1, 1); /* proposed */
  --virea-easing-linear: cubic-bezier(0, 0, 1, 1); /* proposed */
  /* ── primitive.breakpoint ──────────────────────────────────── */
  --virea-breakpoint-tablet: 768px; /* proposed */
  --virea-breakpoint-desktop: 1280px; /* proposed */
  --virea-breakpoint-wide: 1600px; /* proposed */
  /* ── gradient ──────────────────────────────────────────────── */
  --virea-gradient-symbol: linear-gradient(180deg, var(--virea-color-symbol-top-1) 0%, var(--virea-color-symbol-top-2) 16%, var(--virea-color-symbol-top-3) 30%, var(--virea-color-symbol-top-4) 48%, var(--virea-color-symbol-bottom-1) 52%, var(--virea-color-symbol-bottom-2) 70%, var(--virea-color-symbol-bottom-3) 84%, var(--virea-color-symbol-bottom-4) 100%); /* inferred */
  --virea-gradient-horizon: linear-gradient(120deg, var(--virea-color-energy-lime) 0%, var(--virea-color-energy-leaf) 30%, var(--virea-color-energy-green) 62%, var(--virea-color-energy-teal) 100%); /* inferred */
  --virea-gradient-ignition: linear-gradient(120deg, var(--virea-color-energy-amber) 0%, var(--virea-color-energy-orange) 55%, var(--virea-color-energy-ember) 100%); /* inferred */
  --virea-gradient-transition: linear-gradient(90deg, var(--virea-color-energy-teal) 0%, var(--virea-color-energy-green) 25%, var(--virea-color-energy-leaf) 50%, var(--virea-color-energy-amber) 78%, var(--virea-color-energy-orange) 100%); /* inferred */
  --virea-gradient-headline-text: linear-gradient(90deg, var(--virea-color-energy-green) 0%, var(--virea-color-energy-leaf) 100%); /* inferred */
  /* ── color ─────────────────────────────────────────────────── */
  --virea-color-text-primary: var(--virea-color-neutral-500);
  --virea-color-text-strong: var(--virea-color-neutral-700); /* proposed */
  --virea-color-text-secondary: var(--virea-color-neutral-400); /* proposed */
  --virea-color-text-disabled: var(--virea-color-neutral-300); /* proposed */
  --virea-color-text-inverse: var(--virea-color-neutral-white);
  --virea-color-text-accent: var(--virea-color-energy-green-deep); /* proposed */
  --virea-color-text-accent-display: var(--virea-color-energy-green); /* inferred */
  --virea-color-text-warm-display: var(--virea-color-energy-orange); /* inferred */
  --virea-color-background-primary: var(--virea-color-neutral-white);
  --virea-color-background-subtle: var(--virea-color-neutral-25); /* proposed */
  --virea-color-background-muted: var(--virea-color-neutral-50); /* proposed */
  --virea-color-background-brand: var(--virea-color-neutral-500);
  --virea-color-background-inverse: var(--virea-color-neutral-900); /* inferred */
  --virea-color-border-subtle: var(--virea-color-neutral-100); /* proposed */
  --virea-color-border-default: var(--virea-color-neutral-200); /* proposed */
  --virea-color-border-strong: var(--virea-color-neutral-500); /* proposed */
  --virea-color-border-inverse: #FFFFFF3D; /* proposed */
  --virea-color-accent-primary: var(--virea-color-energy-green);
  --virea-color-accent-cool: var(--virea-color-energy-teal);
  --virea-color-accent-warm: var(--virea-color-energy-orange);
  --virea-color-accent-luminous: var(--virea-color-energy-lime);
  --virea-color-interactive-default: var(--virea-color-neutral-500); /* proposed */
  --virea-color-interactive-hover: var(--virea-color-neutral-700); /* proposed */
  --virea-color-interactive-pressed: var(--virea-color-neutral-800); /* proposed */
  --virea-color-interactive-focus: var(--virea-color-energy-green); /* proposed */
  --virea-color-status-success: var(--virea-color-energy-green-deep); /* proposed */
  --virea-color-status-info: var(--virea-color-energy-teal-deep); /* proposed */
  --virea-color-status-warning: var(--virea-color-energy-amber-deep); /* proposed */
  --virea-color-status-error: var(--virea-color-energy-ember-deep); /* proposed */
  --virea-color-data-1: var(--virea-color-energy-green); /* proposed */
  --virea-color-data-2: var(--virea-color-energy-teal); /* proposed */
  --virea-color-data-3: var(--virea-color-energy-orange); /* proposed */
  --virea-color-data-4: var(--virea-color-energy-leaf); /* proposed */
  --virea-color-data-5: var(--virea-color-energy-amber); /* proposed */
  --virea-color-data-6: var(--virea-color-neutral-400); /* proposed */
  /* ── typography ────────────────────────────────────────────── */
  --virea-typography-display-font-family: var(--virea-font-family-brand); /* inferred */
  --virea-typography-display-font-weight: var(--virea-font-weight-regular); /* inferred */
  --virea-typography-display-font-size: var(--virea-responsive-font-size-display); /* inferred */
  --virea-typography-display-line-height: var(--virea-line-height-solid); /* inferred */
  --virea-typography-display-letter-spacing: var(--virea-letter-spacing-tighter); /* inferred */
  --virea-typography-heading-1-font-family: var(--virea-font-family-brand); /* inferred */
  --virea-typography-heading-1-font-weight: var(--virea-font-weight-regular); /* inferred */
  --virea-typography-heading-1-font-size: var(--virea-responsive-font-size-heading-1); /* inferred */
  --virea-typography-heading-1-line-height: var(--virea-line-height-tight); /* inferred */
  --virea-typography-heading-1-letter-spacing: var(--virea-letter-spacing-tight); /* inferred */
  --virea-typography-heading-2-font-family: var(--virea-font-family-brand); /* inferred */
  --virea-typography-heading-2-font-weight: var(--virea-font-weight-regular); /* inferred */
  --virea-typography-heading-2-font-size: var(--virea-responsive-font-size-heading-2); /* inferred */
  --virea-typography-heading-2-line-height: var(--virea-line-height-tight); /* inferred */
  --virea-typography-heading-2-letter-spacing: var(--virea-letter-spacing-tight); /* inferred */
  --virea-typography-heading-3-font-family: var(--virea-font-family-brand); /* proposed */
  --virea-typography-heading-3-font-weight: var(--virea-font-weight-regular); /* proposed */
  --virea-typography-heading-3-font-size: var(--virea-responsive-font-size-heading-3); /* proposed */
  --virea-typography-heading-3-line-height: var(--virea-line-height-snug); /* proposed */
  --virea-typography-heading-3-letter-spacing: var(--virea-letter-spacing-tight); /* proposed */
  --virea-typography-heading-4-font-family: var(--virea-font-family-brand); /* proposed */
  --virea-typography-heading-4-font-weight: var(--virea-font-weight-regular); /* proposed */
  --virea-typography-heading-4-font-size: var(--virea-responsive-font-size-heading-4); /* proposed */
  --virea-typography-heading-4-line-height: var(--virea-line-height-compact); /* proposed */
  --virea-typography-heading-4-letter-spacing: var(--virea-letter-spacing-snug); /* proposed */
  --virea-typography-heading-5-font-family: var(--virea-font-family-brand); /* proposed */
  --virea-typography-heading-5-font-weight: var(--virea-font-weight-regular); /* proposed */
  --virea-typography-heading-5-font-size: var(--virea-font-size-20); /* proposed */
  --virea-typography-heading-5-line-height: var(--virea-line-height-compact); /* proposed */
  --virea-typography-heading-5-letter-spacing: var(--virea-letter-spacing-snug); /* proposed */
  --virea-typography-body-lead-font-family: var(--virea-font-family-brand); /* proposed */
  --virea-typography-body-lead-font-weight: var(--virea-font-weight-regular); /* proposed */
  --virea-typography-body-lead-font-size: var(--virea-responsive-font-size-body-lead); /* proposed */
  --virea-typography-body-lead-line-height: var(--virea-line-height-compact); /* proposed */
  --virea-typography-body-lead-letter-spacing: var(--virea-letter-spacing-snug); /* proposed */
  --virea-typography-body-default-font-family: var(--virea-font-family-brand); /* proposed */
  --virea-typography-body-default-font-weight: var(--virea-font-weight-regular); /* proposed */
  --virea-typography-body-default-font-size: var(--virea-responsive-font-size-body-default); /* proposed */
  --virea-typography-body-default-line-height: var(--virea-line-height-normal); /* proposed */
  --virea-typography-body-default-letter-spacing: var(--virea-letter-spacing-normal); /* proposed */
  --virea-typography-body-small-font-family: var(--virea-font-family-brand); /* proposed */
  --virea-typography-body-small-font-weight: var(--virea-font-weight-regular); /* proposed */
  --virea-typography-body-small-font-size: var(--virea-font-size-15); /* proposed */
  --virea-typography-body-small-line-height: var(--virea-line-height-normal); /* proposed */
  --virea-typography-body-small-letter-spacing: var(--virea-letter-spacing-normal); /* proposed */
  --virea-typography-caption-font-family: var(--virea-font-family-brand); /* proposed */
  --virea-typography-caption-font-weight: var(--virea-font-weight-regular); /* proposed */
  --virea-typography-caption-font-size: var(--virea-font-size-13); /* proposed */
  --virea-typography-caption-line-height: var(--virea-line-height-compact); /* proposed */
  --virea-typography-caption-letter-spacing: var(--virea-letter-spacing-wide); /* proposed */
  --virea-typography-label-font-family: var(--virea-font-family-brand); /* inferred */
  --virea-typography-label-font-weight: var(--virea-font-weight-regular); /* inferred */
  --virea-typography-label-font-size: var(--virea-font-size-13); /* inferred */
  --virea-typography-label-line-height: var(--virea-line-height-compact); /* inferred */
  --virea-typography-label-letter-spacing: var(--virea-letter-spacing-caps); /* inferred */
  --virea-typography-label-text-transform: uppercase; /* inferred */
  --virea-typography-ui-button-font-family: var(--virea-font-family-brand); /* proposed */
  --virea-typography-ui-button-font-weight: var(--virea-font-weight-regular); /* proposed */
  --virea-typography-ui-button-font-size: var(--virea-font-size-16); /* proposed */
  --virea-typography-ui-button-line-height: var(--virea-line-height-solid); /* proposed */
  --virea-typography-ui-button-letter-spacing: var(--virea-letter-spacing-normal); /* proposed */
  --virea-typography-ui-nav-font-family: var(--virea-font-family-brand); /* proposed */
  --virea-typography-ui-nav-font-weight: var(--virea-font-weight-regular); /* proposed */
  --virea-typography-ui-nav-font-size: var(--virea-font-size-15); /* proposed */
  --virea-typography-ui-nav-line-height: var(--virea-line-height-solid); /* proposed */
  --virea-typography-ui-nav-letter-spacing: var(--virea-letter-spacing-normal); /* proposed */
  --virea-typography-ui-input-font-family: var(--virea-font-family-brand); /* proposed */
  --virea-typography-ui-input-font-weight: var(--virea-font-weight-regular); /* proposed */
  --virea-typography-ui-input-font-size: var(--virea-font-size-16); /* proposed */
  --virea-typography-ui-input-line-height: var(--virea-line-height-compact); /* proposed */
  --virea-typography-ui-input-letter-spacing: var(--virea-letter-spacing-normal); /* proposed */
  --virea-typography-data-font-family: var(--virea-font-family-brand); /* proposed */
  --virea-typography-data-font-weight: var(--virea-font-weight-regular); /* proposed */
  --virea-typography-data-font-size: var(--virea-responsive-font-size-data); /* proposed */
  --virea-typography-data-line-height: var(--virea-line-height-solid); /* proposed */
  --virea-typography-data-letter-spacing: var(--virea-letter-spacing-tight); /* proposed */
  --virea-typography-data-font-feature-settings: "tnum" 1; /* proposed */
  /* ── spacing ───────────────────────────────────────────────── */
  --virea-spacing-inline-xs: var(--virea-space-1); /* proposed */
  --virea-spacing-inline-sm: var(--virea-space-2); /* proposed */
  --virea-spacing-inline-md: var(--virea-space-4); /* proposed */
  --virea-spacing-inline-lg: var(--virea-space-6); /* proposed */
  --virea-spacing-stack-xs: var(--virea-space-2); /* proposed */
  --virea-spacing-stack-sm: var(--virea-space-4); /* proposed */
  --virea-spacing-stack-md: var(--virea-space-6); /* proposed */
  --virea-spacing-stack-lg: var(--virea-space-12); /* proposed */
  --virea-spacing-stack-xl: var(--virea-space-20); /* proposed */
  --virea-spacing-section-desktop: var(--virea-space-40); /* inferred */
  --virea-spacing-section-tablet: var(--virea-space-24); /* proposed */
  --virea-spacing-section-mobile: var(--virea-space-16); /* proposed */
  /* ── grid ──────────────────────────────────────────────────── */
  --virea-grid-desktop-columns: 12; /* proposed */
  --virea-grid-desktop-gutter: var(--virea-space-6); /* proposed */
  --virea-grid-desktop-margin: var(--virea-space-20); /* inferred */
  --virea-grid-desktop-max-width: 1440px; /* proposed */
  --virea-grid-tablet-columns: 8; /* proposed */
  --virea-grid-tablet-gutter: var(--virea-space-5); /* proposed */
  --virea-grid-tablet-margin: var(--virea-space-10); /* proposed */
  --virea-grid-mobile-columns: 4; /* proposed */
  --virea-grid-mobile-gutter: var(--virea-space-4); /* proposed */
  --virea-grid-mobile-margin: var(--virea-space-5); /* proposed */
  /* ── motion ────────────────────────────────────────────────── */
  --virea-motion-hover: var(--virea-duration-fast) var(--virea-easing-standard) 0ms; /* proposed */
  --virea-motion-ui: var(--virea-duration-base) var(--virea-easing-standard) 0ms; /* proposed */
  --virea-motion-reveal: var(--virea-duration-reveal) var(--virea-easing-enter) 0ms; /* proposed */
  --virea-motion-exit: var(--virea-duration-base) var(--virea-easing-exit) 0ms; /* proposed */
  --virea-motion-reveal-distance: 24px; /* proposed */
  --virea-motion-reveal-stagger: 80ms; /* proposed */
  --virea-motion-image-scale: 1.03; /* proposed */
  /* ── logo ──────────────────────────────────────────────────── */
  --virea-logo-clear-space: 0.5; /* proposed */
  --virea-logo-min-height-horizontal: 20px; /* proposed */
  --virea-logo-min-height-stacked: 32px; /* proposed */
  --virea-logo-min-height-symbol: 16px; /* proposed */
  --virea-logo-aspect-ratio-horizontal: 5.6;
  --virea-logo-aspect-ratio-stacked: 2.69;
  --virea-logo-aspect-ratio-symbol: 1;
  --virea-logo-gap-ratio: 0.34;
  /* ── component ─────────────────────────────────────────────── */
  --virea-component-nav-height-desktop: 80px; /* proposed */
  --virea-component-nav-height-mobile: 64px; /* proposed */
  --virea-component-nav-background: var(--virea-color-background-primary); /* proposed */
  --virea-component-nav-logo-height: 24px; /* proposed */
  --virea-component-nav-link-gap: var(--virea-space-8); /* proposed */
  --virea-component-nav-link-color: var(--virea-color-text-primary); /* proposed */
  --virea-component-nav-link-color-hover: var(--virea-color-text-strong); /* proposed */
  --virea-component-nav-link-indicator: var(--virea-color-accent-primary); /* proposed */
  --virea-component-nav-border: var(--virea-color-border-subtle); /* proposed */
  --virea-component-button-height: 48px; /* proposed */
  --virea-component-button-height-sm: 40px; /* proposed */
  --virea-component-button-padding-x: var(--virea-space-6); /* proposed */
  --virea-component-button-gap: var(--virea-space-3); /* proposed */
  --virea-component-button-radius: var(--virea-radius-none); /* proposed */
  --virea-component-button-border-width: var(--virea-border-width-hairline); /* proposed */
  --virea-component-button-primary-background: var(--virea-color-interactive-default); /* proposed */
  --virea-component-button-primary-background-hover: var(--virea-color-interactive-hover); /* proposed */
  --virea-component-button-primary-text: var(--virea-color-text-inverse); /* proposed */
  --virea-component-button-secondary-background: #FFFFFF00; /* proposed */
  --virea-component-button-secondary-border: var(--virea-color-border-strong); /* proposed */
  --virea-component-button-secondary-text: var(--virea-color-text-primary); /* proposed */
  --virea-component-button-secondary-background-hover: var(--virea-color-background-muted); /* proposed */
  --virea-component-button-on-image-background: var(--virea-color-neutral-white); /* proposed */
  --virea-component-button-on-image-text: var(--virea-color-text-primary); /* proposed */
  --virea-component-button-on-image-background-hover: var(--virea-color-neutral-25); /* proposed */
  --virea-component-link-color: var(--virea-color-text-primary); /* proposed */
  --virea-component-link-color-hover: var(--virea-color-text-accent); /* proposed */
  --virea-component-link-underline-thickness: 1px; /* proposed */
  --virea-component-link-underline-offset: 0.25em; /* proposed */
  --virea-component-link-underline-color: var(--virea-color-border-default); /* proposed */
  --virea-component-link-underline-color-hover: var(--virea-color-accent-primary); /* proposed */
  --virea-component-heading-color: var(--virea-color-text-primary); /* inferred */
  --virea-component-heading-max-width: 16ch; /* inferred */
  --virea-component-heading-eyebrow-gap: var(--virea-space-6); /* proposed */
  --virea-component-section-padding-y: var(--virea-spacing-section-desktop); /* proposed */
  --virea-component-section-divider: var(--virea-color-border-subtle); /* proposed */
  --virea-component-card-background: var(--virea-color-background-primary); /* proposed */
  --virea-component-card-background-subtle: var(--virea-color-background-subtle); /* proposed */
  --virea-component-card-border: var(--virea-color-border-subtle); /* proposed */
  --virea-component-card-padding: var(--virea-space-8); /* proposed */
  --virea-component-card-radius: var(--virea-radius-none); /* proposed */
  --virea-component-card-shadow: var(--virea-shadow-none); /* proposed */
  --virea-component-form-input-height: 48px; /* proposed */
  --virea-component-form-input-padding-x: var(--virea-space-4); /* proposed */
  --virea-component-form-input-background: var(--virea-color-background-primary); /* proposed */
  --virea-component-form-input-border: var(--virea-color-border-default); /* proposed */
  --virea-component-form-input-border-hover: var(--virea-color-neutral-300); /* proposed */
  --virea-component-form-input-border-focus: var(--virea-color-border-strong); /* proposed */
  --virea-component-form-input-radius: var(--virea-radius-none); /* proposed */
  --virea-component-form-label-color: var(--virea-color-text-primary); /* proposed */
  --virea-component-form-help-color: var(--virea-color-text-secondary); /* proposed */
  --virea-component-form-error-color: var(--virea-color-status-error); /* proposed */
  --virea-component-form-focus-ring-width: var(--virea-border-width-focus); /* proposed */
  --virea-component-form-focus-ring-color: var(--virea-color-interactive-focus); /* proposed */
  --virea-component-form-focus-ring-offset: 2px; /* proposed */
  --virea-component-footer-background: var(--virea-color-background-inverse); /* proposed */
  --virea-component-footer-text: var(--virea-color-neutral-300); /* proposed */
  --virea-component-footer-text-strong: var(--virea-color-text-inverse); /* proposed */
  --virea-component-footer-divider: var(--virea-color-border-inverse); /* proposed */
  --virea-component-footer-padding-y: var(--virea-space-20); /* proposed */
  --virea-component-image-radius: var(--virea-radius-none); /* inferred */
  --virea-component-image-background: var(--virea-color-background-muted); /* proposed */
  --virea-component-image-ratio-wide: 16 / 9; /* inferred */
  --virea-component-image-ratio-panorama: 21 / 9; /* inferred */
  --virea-component-image-ratio-portrait: 4 / 5; /* inferred */
  --virea-component-image-ratio-standard: 3 / 2; /* proposed */
  --virea-component-image-ratio-square: 1 / 1; /* proposed */
  --virea-component-image-caption-gap: var(--virea-space-3); /* proposed */
  --virea-component-editorial-headline-span: 7; /* inferred */
  --virea-component-editorial-body-span: 5; /* proposed */
  --virea-component-editorial-body-offset: 7; /* proposed */
  --virea-component-editorial-measure: 64ch; /* proposed */
  --virea-component-editorial-field-coverage: 30% – 60%; /* inferred */
  --virea-component-field-blur: 64px; /* proposed */
  --virea-component-field-opacity: 1; /* proposed */
  /* ── responsive (mobile-first) ─────────────────────────────── */
  --virea-responsive-font-size-display: var(--virea-font-size-56);
  --virea-responsive-font-size-heading-1: var(--virea-font-size-44);
  --virea-responsive-font-size-heading-2: var(--virea-font-size-36);
  --virea-responsive-font-size-heading-3: var(--virea-font-size-28);
  --virea-responsive-font-size-heading-4: var(--virea-font-size-22);
  --virea-responsive-font-size-body-lead: var(--virea-font-size-20);
  --virea-responsive-font-size-body-default: var(--virea-font-size-16);
  --virea-responsive-font-size-data: var(--virea-font-size-32);
  --virea-responsive-spacing-section: var(--virea-spacing-section-mobile);
  --virea-responsive-spacing-page-margin: var(--virea-grid-mobile-margin);
  --virea-responsive-spacing-gutter: var(--virea-grid-mobile-gutter);
  --virea-responsive-grid-columns: var(--virea-grid-mobile-columns);
}

@media (min-width: 768px) {
  :root {
    --virea-responsive-font-size-display: var(--virea-font-size-88);
    --virea-responsive-font-size-heading-1: var(--virea-font-size-64);
    --virea-responsive-font-size-heading-2: var(--virea-font-size-48);
    --virea-responsive-font-size-heading-3: var(--virea-font-size-32);
    --virea-responsive-font-size-heading-4: var(--virea-font-size-24);
    --virea-responsive-font-size-body-lead: var(--virea-font-size-22);
    --virea-responsive-font-size-body-default: var(--virea-font-size-18);
    --virea-responsive-font-size-data: var(--virea-font-size-36);
    --virea-responsive-spacing-section: var(--virea-spacing-section-tablet);
    --virea-responsive-spacing-page-margin: var(--virea-grid-tablet-margin);
    --virea-responsive-spacing-gutter: var(--virea-grid-tablet-gutter);
    --virea-responsive-grid-columns: var(--virea-grid-tablet-columns);
  }
}

@media (min-width: 1280px) {
  :root {
    --virea-responsive-font-size-display: var(--virea-font-size-120);
    --virea-responsive-font-size-heading-1: var(--virea-font-size-80);
    --virea-responsive-font-size-heading-2: var(--virea-font-size-56);
    --virea-responsive-font-size-heading-3: var(--virea-font-size-40);
    --virea-responsive-font-size-heading-4: var(--virea-font-size-28);
    --virea-responsive-font-size-body-lead: var(--virea-font-size-24);
    --virea-responsive-font-size-body-default: var(--virea-font-size-18);
    --virea-responsive-font-size-data: var(--virea-font-size-40);
    --virea-responsive-spacing-section: var(--virea-spacing-section-desktop);
    --virea-responsive-spacing-page-margin: var(--virea-grid-desktop-margin);
    --virea-responsive-spacing-gutter: var(--virea-grid-desktop-gutter);
    --virea-responsive-grid-columns: var(--virea-grid-desktop-columns);
  }
}

/* Reduced motion: keep state changes, remove travel, scale and ambient drift. */
@media (prefers-reduced-motion: reduce) {
  :root {
    --virea-duration-reveal: 1ms;
    --virea-duration-field: 1ms;
    --virea-duration-ambient: 0ms;
    --virea-motion-reveal-distance: 0px;
    --virea-motion-reveal-stagger: 0ms;
    --virea-motion-image-scale: 1;
  }
}

/* ── Energy fields (proposed CSS approximations of the official GraphicElement artwork) ──
 * Soft, organic gradient forms that always dissolve into the background.
 * Prefer the official PNG/SVG GraphicElements for marketing; use these for digital UI. */
:root {
  --virea-field-horizon:
    radial-gradient(42% 52% at 74% 22%, var(--virea-color-energy-lime) 0%, var(--virea-color-energy-lime) 22%, transparent 70%),
    radial-gradient(52% 62% at 50% 58%, var(--virea-color-energy-green) 0%, var(--virea-color-energy-green) 30%, transparent 72%),
    radial-gradient(44% 54% at 88% 82%, var(--virea-color-energy-teal) 0%, var(--virea-color-energy-teal) 26%, transparent 70%);
  --virea-field-ignition:
    radial-gradient(46% 56% at 26% 66%, var(--virea-color-energy-amber) 0%, var(--virea-color-energy-amber) 28%, transparent 72%),
    radial-gradient(42% 52% at 60% 36%, var(--virea-color-energy-orange) 0%, var(--virea-color-energy-orange) 26%, transparent 70%),
    radial-gradient(36% 46% at 82% 70%, var(--virea-color-energy-ember) 0%, var(--virea-color-energy-ember) 22%, transparent 68%);
  --virea-field-transition:
    radial-gradient(34% 60% at 12% 44%, var(--virea-color-energy-teal) 0%, var(--virea-color-energy-teal) 24%, transparent 70%),
    radial-gradient(34% 60% at 38% 58%, var(--virea-color-energy-green) 0%, var(--virea-color-energy-green) 24%, transparent 70%),
    radial-gradient(34% 60% at 64% 42%, var(--virea-color-energy-leaf) 0%, var(--virea-color-energy-leaf) 22%, transparent 70%),
    radial-gradient(34% 60% at 90% 56%, var(--virea-color-energy-orange) 0%, var(--virea-color-energy-orange) 24%, transparent 70%);
}

/* ── Type role classes ─────────────────────────────────── */
.virea-type-display {
  font-family: var(--virea-typography-display-font-family);
  font-weight: var(--virea-typography-display-font-weight);
  font-size: var(--virea-typography-display-font-size);
  line-height: var(--virea-typography-display-line-height);
  letter-spacing: var(--virea-typography-display-letter-spacing);
}
.virea-type-heading-1 {
  font-family: var(--virea-typography-heading-1-font-family);
  font-weight: var(--virea-typography-heading-1-font-weight);
  font-size: var(--virea-typography-heading-1-font-size);
  line-height: var(--virea-typography-heading-1-line-height);
  letter-spacing: var(--virea-typography-heading-1-letter-spacing);
}
.virea-type-heading-2 {
  font-family: var(--virea-typography-heading-2-font-family);
  font-weight: var(--virea-typography-heading-2-font-weight);
  font-size: var(--virea-typography-heading-2-font-size);
  line-height: var(--virea-typography-heading-2-line-height);
  letter-spacing: var(--virea-typography-heading-2-letter-spacing);
}
.virea-type-heading-3 {
  font-family: var(--virea-typography-heading-3-font-family);
  font-weight: var(--virea-typography-heading-3-font-weight);
  font-size: var(--virea-typography-heading-3-font-size);
  line-height: var(--virea-typography-heading-3-line-height);
  letter-spacing: var(--virea-typography-heading-3-letter-spacing);
}
.virea-type-heading-4 {
  font-family: var(--virea-typography-heading-4-font-family);
  font-weight: var(--virea-typography-heading-4-font-weight);
  font-size: var(--virea-typography-heading-4-font-size);
  line-height: var(--virea-typography-heading-4-line-height);
  letter-spacing: var(--virea-typography-heading-4-letter-spacing);
}
.virea-type-heading-5 {
  font-family: var(--virea-typography-heading-5-font-family);
  font-weight: var(--virea-typography-heading-5-font-weight);
  font-size: var(--virea-typography-heading-5-font-size);
  line-height: var(--virea-typography-heading-5-line-height);
  letter-spacing: var(--virea-typography-heading-5-letter-spacing);
}
.virea-type-body-lead {
  font-family: var(--virea-typography-body-lead-font-family);
  font-weight: var(--virea-typography-body-lead-font-weight);
  font-size: var(--virea-typography-body-lead-font-size);
  line-height: var(--virea-typography-body-lead-line-height);
  letter-spacing: var(--virea-typography-body-lead-letter-spacing);
}
.virea-type-body-default {
  font-family: var(--virea-typography-body-default-font-family);
  font-weight: var(--virea-typography-body-default-font-weight);
  font-size: var(--virea-typography-body-default-font-size);
  line-height: var(--virea-typography-body-default-line-height);
  letter-spacing: var(--virea-typography-body-default-letter-spacing);
}
.virea-type-body-small {
  font-family: var(--virea-typography-body-small-font-family);
  font-weight: var(--virea-typography-body-small-font-weight);
  font-size: var(--virea-typography-body-small-font-size);
  line-height: var(--virea-typography-body-small-line-height);
  letter-spacing: var(--virea-typography-body-small-letter-spacing);
}
.virea-type-caption {
  font-family: var(--virea-typography-caption-font-family);
  font-weight: var(--virea-typography-caption-font-weight);
  font-size: var(--virea-typography-caption-font-size);
  line-height: var(--virea-typography-caption-line-height);
  letter-spacing: var(--virea-typography-caption-letter-spacing);
}
.virea-type-label {
  font-family: var(--virea-typography-label-font-family);
  font-weight: var(--virea-typography-label-font-weight);
  font-size: var(--virea-typography-label-font-size);
  line-height: var(--virea-typography-label-line-height);
  letter-spacing: var(--virea-typography-label-letter-spacing);
  text-transform: var(--virea-typography-label-text-transform);
}
.virea-type-ui-button {
  font-family: var(--virea-typography-ui-button-font-family);
  font-weight: var(--virea-typography-ui-button-font-weight);
  font-size: var(--virea-typography-ui-button-font-size);
  line-height: var(--virea-typography-ui-button-line-height);
  letter-spacing: var(--virea-typography-ui-button-letter-spacing);
}
.virea-type-ui-nav {
  font-family: var(--virea-typography-ui-nav-font-family);
  font-weight: var(--virea-typography-ui-nav-font-weight);
  font-size: var(--virea-typography-ui-nav-font-size);
  line-height: var(--virea-typography-ui-nav-line-height);
  letter-spacing: var(--virea-typography-ui-nav-letter-spacing);
}
.virea-type-ui-input {
  font-family: var(--virea-typography-ui-input-font-family);
  font-weight: var(--virea-typography-ui-input-font-weight);
  font-size: var(--virea-typography-ui-input-font-size);
  line-height: var(--virea-typography-ui-input-line-height);
  letter-spacing: var(--virea-typography-ui-input-letter-spacing);
}
.virea-type-data {
  font-family: var(--virea-typography-data-font-family);
  font-weight: var(--virea-typography-data-font-weight);
  font-size: var(--virea-typography-data-font-size);
  line-height: var(--virea-typography-data-line-height);
  letter-spacing: var(--virea-typography-data-letter-spacing);
  font-feature-settings: var(--virea-typography-data-font-feature-settings);
}
