/* Generated by scripts/build-tokens.js from tokens/*.tokens.json on 2026-09-14T14:52:30.170Z. Do not edit. */
:root {
  --rnx-color-white: #FFFFFF;
  --rnx-color-black: #000000;
  --rnx-color-neutral-0: #F7F9FB;
  --rnx-color-neutral-1: #EDF1F5;
  --rnx-color-neutral-2: #D7DDE4;
  --rnx-color-neutral-3: #B4BDC7;
  --rnx-color-neutral-4: #8B96A3;
  --rnx-color-neutral-5: #6E7681;
  --rnx-color-neutral-6: #4E565F;
  --rnx-color-neutral-7: #343B44;
  --rnx-color-neutral-8: #2A3038;
  --rnx-color-neutral-9: #161B22;
  --rnx-color-neutral-10: #0B0E14;
  --rnx-color-blue-100: #D6E8F7;
  --rnx-color-blue-200: #A8CCEC;
  --rnx-color-blue-300: #6FA9DB;
  --rnx-color-blue-350: #4D9FE0;
  --rnx-color-blue-400: #3584C7;
  --rnx-color-blue-500: #005FAE;  /* RAIE blue */
  --rnx-color-blue-600: #004C8C;
  --rnx-color-blue-700: #003A6B;
  --rnx-color-blue-800: #002A4D;
  --rnx-color-red-100: #F8D9D9;
  --rnx-color-red-200: #EFA9A9;
  --rnx-color-red-300: #E37070;
  --rnx-color-red-350: #E05252;
  --rnx-color-red-400: #D13A3A;
  --rnx-color-red-500: #B90000;  /* NOX red */
  --rnx-color-red-600: #8F0000;
  --rnx-color-red-700: #6B0000;
  --rnx-color-red-800: #3A0000;
  --rnx-color-steel-100: #E3EBF0;
  --rnx-color-steel-300: #AFC2CE;
  --rnx-color-steel-500: #8CA7B8;  /* Circuit-trace steel from the mark */
  --rnx-color-steel-700: #5F7A8C;
  --rnx-color-steel-900: #3E5261;
  --rnx-color-green-100: #E6F7ED;
  --rnx-color-green-300: #4CC38A;
  --rnx-color-green-500: #1B7448;
  --rnx-color-green-800: #0F3D27;
  --rnx-color-amber-100: #FBEBD0;
  --rnx-color-amber-300: #E2A336;
  --rnx-color-amber-500: #9A5B00;
  --rnx-color-amber-800: #4A2C00;
  --rnx-space-1: 0.25rem;
  --rnx-space-2: 0.5rem;
  --rnx-space-3: 0.75rem;
  --rnx-space-4: 1rem;
  --rnx-space-5: 1.5rem;
  --rnx-space-6: 2rem;
  --rnx-space-7: 3rem;
  --rnx-space-8: 4rem;
  --rnx-space-9: 6rem;
  --rnx-space-10: 8rem;
  --rnx-radius-s: 6px;
  --rnx-radius-m: 10px;
  --rnx-radius-l: 16px;
  --rnx-radius-pill: 999px;
  --rnx-size-control-s: 32px;
  --rnx-size-control-m: 40px;
  --rnx-size-control-l: 48px;
  --rnx-size-icon-s: 16px;
  --rnx-size-icon-m: 20px;
  --rnx-size-icon-l: 24px;
  --rnx-size-container: 1280px;
  --rnx-size-container-narrow: 760px;
  --rnx-size-measure: 72;  /* Maximum line length for prose, in ch */
  --rnx-size-logo-header: 350px;  /* Proven in UAT. Trial sizes 240 to 300 are offered separately. */
  --rnx-size-logo-header-tablet: 260px;
  --rnx-size-logo-header-phone: 200px;
  --rnx-font-family-display: Sora, "Segoe UI", "Trebuchet MS", system-ui, sans-serif;
  --rnx-font-family-body: Inter, "Segoe UI", Roboto, system-ui, sans-serif;
  --rnx-font-family-mono: "JetBrains Mono", Consolas, "Courier New", monospace;
  --rnx-font-weight-regular: 400;
  --rnx-font-weight-medium: 500;
  --rnx-font-weight-semibold: 600;
  --rnx-font-weight-bold: 700;
  --rnx-font-size-hero: clamp(2.25rem, 1.35rem + 2.2vw, 3rem);  /* The hero title, fluid: 36px on a phone, 48px from 1200px (Manoj's UAT review, 14 September 2026) */
  --rnx-font-size-display-xl: 3rem;
  --rnx-font-size-display: 3.052rem;
  --rnx-font-size-h1: 2.441rem;
  --rnx-font-size-h2: 1.953rem;
  --rnx-font-size-h3: 1.563rem;
  --rnx-font-size-h4: 1.25rem;
  --rnx-font-size-lead: 1.25rem;
  --rnx-font-size-body: 1rem;
  --rnx-font-size-small: 0.875rem;
  --rnx-font-size-caption: 0.8rem;
  --rnx-font-size-overline: 0.75rem;
  --rnx-font-size-micro: 0.6875rem;
  --rnx-font-size-code: 0.9375rem;
  --rnx-font-line-height-tight: 1.1;
  --rnx-font-line-height-heading: 1.2;
  --rnx-font-line-height-sub: 1.35;
  --rnx-font-line-height-body: 1.6;
  --rnx-font-line-height-small: 1.5;
  --rnx-font-line-height-dense: 1.45;
  --rnx-font-tracking-display: -0.015em;
  --rnx-font-tracking-h1: -0.01em;
  --rnx-font-tracking-h2: -0.005em;
  --rnx-font-tracking-overline: 0.08em;
  --rnx-font-tracking-mono-tag: 0.04em;
  --rnx-duration-fast: 120ms;
  --rnx-duration-base: 200ms;
  --rnx-duration-slow: 320ms;
  --rnx-duration-loop: 6s;  /* Hero attack-path animation cycle. */
  --rnx-ease-standard: cubic-bezier(0.2, 0.6, 0.2, 1);
  --rnx-ease-enter: cubic-bezier(0, 0, 0.2, 1);
  --rnx-ease-exit: cubic-bezier(0.4, 0, 1, 1);
  --rnx-shadow-1: 0px 1px 3px 0px rgb(11 14 20 / 0.08);
  --rnx-shadow-2: 0px 4px 12px 0px rgb(11 14 20 / 0.10);
  --rnx-shadow-3: 0px 12px 32px 0px rgb(11 14 20 / 0.16);
  --rnx-z-header: 100;
  --rnx-z-subnav: 90;
  --rnx-z-dropdown: 200;
  --rnx-z-overlay: 300;
  --rnx-z-toast: 400;
  --rnx-opacity-disabled: 0.55;
  --rnx-opacity-hero-lead: 0.82;
  --rnx-breakpoint-phone: 480px;
  --rnx-breakpoint-tablet: 820px;
  --rnx-breakpoint-laptop: 1024px;
  --rnx-breakpoint-desktop: 1280px;
  --rnx-breakpoint-wide: 1440px;
  --rnx-color-bg: var(--rnx-color-neutral-0);  /* Page ground */
  --rnx-color-surface: var(--rnx-color-white);  /* Cards, panels, table rows */
  --rnx-color-surface-raised: var(--rnx-color-white);  /* Menus, popovers */
  --rnx-color-surface-tint: var(--rnx-color-neutral-1);  /* Alternate section band */
  --rnx-color-overlay: var(--rnx-color-white);
  --rnx-color-scrim: rgb(11 14 20 / 0.45);
  --rnx-color-border: var(--rnx-color-neutral-2);  /* Hairlines. Dark uses neutral.6 so it stays visible (2.6:1). */
  --rnx-color-border-strong: var(--rnx-color-neutral-3);
  --rnx-color-border-input: var(--rnx-color-neutral-4);  /* Form control borders, at or above 3:1 against the surface */
  --rnx-color-text: var(--rnx-color-neutral-8);
  --rnx-color-text-secondary: var(--rnx-color-neutral-7);
  --rnx-color-text-muted: var(--rnx-color-neutral-6);  /* Meta, captions; AA in both themes */
  --rnx-color-text-disabled: var(--rnx-color-neutral-5);  /* Exempt from WCAG but kept at or above 3:1 on the page ground */
  --rnx-color-link: var(--rnx-color-blue-500);
  --rnx-color-link-hover: var(--rnx-color-blue-600);
  --rnx-color-accent: var(--rnx-color-blue-500);  /* The one action colour */
  --rnx-color-accent-hover: var(--rnx-color-blue-600);
  --rnx-color-accent-active: var(--rnx-color-blue-700);
  --rnx-color-accent-bg: var(--rnx-color-blue-500);  /* Filled button ground in both themes; white text stays 6.5:1 */
  --rnx-color-accent-bg-hover: var(--rnx-color-blue-600);  /* Filled button ground on hover, both themes; white text stays 8.7:1 (the link hover colour is too light on dark ground) */
  --rnx-color-accent-bg-active: var(--rnx-color-blue-700);  /* Filled button ground while pressed, both themes; white text stays 11.5:1 */
  --rnx-color-accent-soft: var(--rnx-color-blue-100);  /* Soft badge and hover wash */
  --rnx-color-on-accent: var(--rnx-color-white);
  --rnx-color-focus: var(--rnx-color-blue-500);
  --rnx-color-nox: var(--rnx-color-red-500);  /* The brand red: logo, section tick, danger */
  --rnx-color-danger: var(--rnx-color-red-500);
  --rnx-color-danger-hover: var(--rnx-color-red-600);
  --rnx-color-danger-bg: var(--rnx-color-red-500);  /* Filled danger button ground; white text stays AA in both themes */
  --rnx-color-danger-soft: var(--rnx-color-red-100);
  --rnx-color-on-danger: var(--rnx-color-white);
  --rnx-color-success: var(--rnx-color-green-500);
  --rnx-color-success-soft: var(--rnx-color-green-100);
  --rnx-color-warning: var(--rnx-color-amber-500);
  --rnx-color-warning-soft: var(--rnx-color-amber-100);
  --rnx-color-info: var(--rnx-color-blue-500);
  --rnx-color-info-soft: var(--rnx-color-blue-100);
  --rnx-color-code-bg: var(--rnx-color-neutral-1);
  --rnx-color-hero-bg: var(--rnx-color-neutral-10);  /* The hero is dark in both themes */
  --rnx-color-hero-text: var(--rnx-color-neutral-1);
  --rnx-color-hero-rule: var(--rnx-color-neutral-7);
  --rnx-color-hero-motif: var(--rnx-color-steel-500);
  --rnx-color-motif: var(--rnx-color-steel-500);
  --rnx-color-proof-bg: var(--rnx-color-red-100);
  --rnx-color-proof-text: var(--rnx-color-red-700);
  --rnx-color-rung-1: var(--rnx-color-blue-200);
  --rnx-color-rung-2: var(--rnx-color-blue-300);
  --rnx-color-rung-3: var(--rnx-color-blue-400);
  --rnx-color-rung-4: var(--rnx-color-blue-500);
  --rnx-color-header-bg: rgb(247 249 251 / 0.88);
  --rnx-color-chart-1: var(--rnx-color-blue-500);
  --rnx-color-chart-2: var(--rnx-color-steel-700);
  --rnx-color-chart-3: var(--rnx-color-blue-800);
  --rnx-color-chart-4: var(--rnx-color-red-400);
  --rnx-color-chart-5: var(--rnx-color-blue-400);
  --rnx-color-chart-6: var(--rnx-color-neutral-5);
  --rnx-color-chart-7: var(--rnx-color-amber-500);
  --rnx-color-chart-8: var(--rnx-color-green-500);
  --rnx-color-chart-grid: var(--rnx-color-neutral-2);
  --rnx-color-chart-axis: var(--rnx-color-neutral-5);
  --rnx-opacity-motif: 0.32;  /* Ray, trace and shield-field strength per theme */
  --rnx-opacity-hero-motif: 0.22;
  --rnx-shadow-card: var(--rnx-shadow-1);
  --rnx-shadow-raised: var(--rnx-shadow-2);
  --rnx-shadow-overlay: var(--rnx-shadow-3);
  --rnx-density-type-scale: 1;  /* Multiplier applied to heading sizes */
  --rnx-density-space-scale: 1;  /* Multiplier applied to section and component spacing */
  --rnx-density-radius-step: 0;  /* 0 = as primitives, -1 = one step smaller */
  --rnx-density-control: var(--rnx-size-control-l);
  --rnx-density-body: var(--rnx-font-size-body);
  --rnx-density-line-height: var(--rnx-font-line-height-body);
  --rnx-density-table-pad: var(--rnx-space-4);
  --rnx-density-section-gap: var(--rnx-space-6);
}

:root[data-theme="dark"] {
  --rnx-color-bg: var(--rnx-color-neutral-10);  /* Page ground */
  --rnx-color-surface: var(--rnx-color-neutral-9);  /* Cards, panels, table rows */
  --rnx-color-surface-raised: var(--rnx-color-neutral-8);  /* Menus, popovers */
  --rnx-color-surface-tint: var(--rnx-color-neutral-9);  /* Alternate section band */
  --rnx-color-overlay: var(--rnx-color-neutral-8);
  --rnx-color-scrim: rgb(11 14 20 / 0.60);
  --rnx-color-border: var(--rnx-color-neutral-6);  /* Hairlines. Dark uses neutral.6 so it stays visible (2.6:1). */
  --rnx-color-border-strong: var(--rnx-color-neutral-5);
  --rnx-color-border-input: var(--rnx-color-neutral-5);  /* Form control borders, at or above 3:1 against the surface */
  --rnx-color-text: var(--rnx-color-neutral-1);
  --rnx-color-text-secondary: var(--rnx-color-neutral-3);
  --rnx-color-text-muted: var(--rnx-color-neutral-4);  /* Meta, captions; AA in both themes */
  --rnx-color-text-disabled: var(--rnx-color-neutral-5);  /* Exempt from WCAG but kept at or above 3:1 on the page ground */
  --rnx-color-link: var(--rnx-color-blue-350);
  --rnx-color-link-hover: var(--rnx-color-blue-300);
  --rnx-color-accent: var(--rnx-color-blue-350);  /* The one action colour */
  --rnx-color-accent-hover: var(--rnx-color-blue-300);
  --rnx-color-accent-active: var(--rnx-color-blue-400);
  --rnx-color-accent-bg: var(--rnx-color-blue-500);  /* Filled button ground in both themes; white text stays 6.5:1 */
  --rnx-color-accent-bg-hover: var(--rnx-color-blue-600);  /* Filled button ground on hover, both themes; white text stays 8.7:1 (the link hover colour is too light on dark ground) */
  --rnx-color-accent-bg-active: var(--rnx-color-blue-700);  /* Filled button ground while pressed, both themes; white text stays 11.5:1 */
  --rnx-color-accent-soft: var(--rnx-color-blue-800);  /* Soft badge and hover wash */
  --rnx-color-on-accent: var(--rnx-color-white);
  --rnx-color-focus: var(--rnx-color-blue-350);
  --rnx-color-nox: var(--rnx-color-red-350);  /* The brand red: logo, section tick, danger */
  --rnx-color-danger: var(--rnx-color-red-350);
  --rnx-color-danger-hover: var(--rnx-color-red-300);
  --rnx-color-danger-bg: var(--rnx-color-red-400);  /* Filled danger button ground; white text stays AA in both themes */
  --rnx-color-danger-soft: var(--rnx-color-red-800);
  --rnx-color-on-danger: var(--rnx-color-white);
  --rnx-color-success: var(--rnx-color-green-300);
  --rnx-color-success-soft: var(--rnx-color-green-800);
  --rnx-color-warning: var(--rnx-color-amber-300);
  --rnx-color-warning-soft: var(--rnx-color-amber-800);
  --rnx-color-info: var(--rnx-color-blue-350);
  --rnx-color-info-soft: var(--rnx-color-blue-800);
  --rnx-color-code-bg: var(--rnx-color-neutral-9);
  --rnx-color-hero-bg: var(--rnx-color-neutral-10);  /* The hero is dark in both themes */
  --rnx-color-hero-text: var(--rnx-color-neutral-1);
  --rnx-color-hero-rule: var(--rnx-color-neutral-7);
  --rnx-color-hero-motif: var(--rnx-color-steel-500);
  --rnx-color-motif: var(--rnx-color-steel-700);
  --rnx-color-proof-bg: var(--rnx-color-red-700);
  --rnx-color-proof-text: var(--rnx-color-red-100);
  --rnx-color-rung-1: var(--rnx-color-blue-700);
  --rnx-color-rung-2: var(--rnx-color-blue-500);
  --rnx-color-rung-3: var(--rnx-color-blue-400);
  --rnx-color-rung-4: var(--rnx-color-blue-350);
  --rnx-color-header-bg: rgb(11 14 20 / 0.85);
  --rnx-color-chart-1: var(--rnx-color-blue-350);
  --rnx-color-chart-2: var(--rnx-color-steel-300);
  --rnx-color-chart-3: var(--rnx-color-blue-200);
  --rnx-color-chart-4: var(--rnx-color-red-300);
  --rnx-color-chart-5: var(--rnx-color-blue-400);
  --rnx-color-chart-6: var(--rnx-color-neutral-4);
  --rnx-color-chart-7: var(--rnx-color-amber-300);
  --rnx-color-chart-8: var(--rnx-color-green-300);
  --rnx-color-chart-grid: var(--rnx-color-neutral-7);
  --rnx-color-chart-axis: var(--rnx-color-neutral-4);
  --rnx-opacity-motif: 0.22;  /* Ray, trace and shield-field strength per theme */
  --rnx-opacity-hero-motif: 0.2;
  --rnx-shadow-card: none;  /* No shadows in dark; borders carry separation */
  --rnx-shadow-raised: var(--rnx-shadow-2);
  --rnx-shadow-overlay: var(--rnx-shadow-3);
}

@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) {
  --rnx-color-bg: var(--rnx-color-neutral-10);  /* Page ground */
  --rnx-color-surface: var(--rnx-color-neutral-9);  /* Cards, panels, table rows */
  --rnx-color-surface-raised: var(--rnx-color-neutral-8);  /* Menus, popovers */
  --rnx-color-surface-tint: var(--rnx-color-neutral-9);  /* Alternate section band */
  --rnx-color-overlay: var(--rnx-color-neutral-8);
  --rnx-color-scrim: rgb(11 14 20 / 0.60);
  --rnx-color-border: var(--rnx-color-neutral-6);  /* Hairlines. Dark uses neutral.6 so it stays visible (2.6:1). */
  --rnx-color-border-strong: var(--rnx-color-neutral-5);
  --rnx-color-border-input: var(--rnx-color-neutral-5);  /* Form control borders, at or above 3:1 against the surface */
  --rnx-color-text: var(--rnx-color-neutral-1);
  --rnx-color-text-secondary: var(--rnx-color-neutral-3);
  --rnx-color-text-muted: var(--rnx-color-neutral-4);  /* Meta, captions; AA in both themes */
  --rnx-color-text-disabled: var(--rnx-color-neutral-5);  /* Exempt from WCAG but kept at or above 3:1 on the page ground */
  --rnx-color-link: var(--rnx-color-blue-350);
  --rnx-color-link-hover: var(--rnx-color-blue-300);
  --rnx-color-accent: var(--rnx-color-blue-350);  /* The one action colour */
  --rnx-color-accent-hover: var(--rnx-color-blue-300);
  --rnx-color-accent-active: var(--rnx-color-blue-400);
  --rnx-color-accent-bg: var(--rnx-color-blue-500);  /* Filled button ground in both themes; white text stays 6.5:1 */
  --rnx-color-accent-bg-hover: var(--rnx-color-blue-600);  /* Filled button ground on hover, both themes; white text stays 8.7:1 (the link hover colour is too light on dark ground) */
  --rnx-color-accent-bg-active: var(--rnx-color-blue-700);  /* Filled button ground while pressed, both themes; white text stays 11.5:1 */
  --rnx-color-accent-soft: var(--rnx-color-blue-800);  /* Soft badge and hover wash */
  --rnx-color-on-accent: var(--rnx-color-white);
  --rnx-color-focus: var(--rnx-color-blue-350);
  --rnx-color-nox: var(--rnx-color-red-350);  /* The brand red: logo, section tick, danger */
  --rnx-color-danger: var(--rnx-color-red-350);
  --rnx-color-danger-hover: var(--rnx-color-red-300);
  --rnx-color-danger-bg: var(--rnx-color-red-400);  /* Filled danger button ground; white text stays AA in both themes */
  --rnx-color-danger-soft: var(--rnx-color-red-800);
  --rnx-color-on-danger: var(--rnx-color-white);
  --rnx-color-success: var(--rnx-color-green-300);
  --rnx-color-success-soft: var(--rnx-color-green-800);
  --rnx-color-warning: var(--rnx-color-amber-300);
  --rnx-color-warning-soft: var(--rnx-color-amber-800);
  --rnx-color-info: var(--rnx-color-blue-350);
  --rnx-color-info-soft: var(--rnx-color-blue-800);
  --rnx-color-code-bg: var(--rnx-color-neutral-9);
  --rnx-color-hero-bg: var(--rnx-color-neutral-10);  /* The hero is dark in both themes */
  --rnx-color-hero-text: var(--rnx-color-neutral-1);
  --rnx-color-hero-rule: var(--rnx-color-neutral-7);
  --rnx-color-hero-motif: var(--rnx-color-steel-500);
  --rnx-color-motif: var(--rnx-color-steel-700);
  --rnx-color-proof-bg: var(--rnx-color-red-700);
  --rnx-color-proof-text: var(--rnx-color-red-100);
  --rnx-color-rung-1: var(--rnx-color-blue-700);
  --rnx-color-rung-2: var(--rnx-color-blue-500);
  --rnx-color-rung-3: var(--rnx-color-blue-400);
  --rnx-color-rung-4: var(--rnx-color-blue-350);
  --rnx-color-header-bg: rgb(11 14 20 / 0.85);
  --rnx-color-chart-1: var(--rnx-color-blue-350);
  --rnx-color-chart-2: var(--rnx-color-steel-300);
  --rnx-color-chart-3: var(--rnx-color-blue-200);
  --rnx-color-chart-4: var(--rnx-color-red-300);
  --rnx-color-chart-5: var(--rnx-color-blue-400);
  --rnx-color-chart-6: var(--rnx-color-neutral-4);
  --rnx-color-chart-7: var(--rnx-color-amber-300);
  --rnx-color-chart-8: var(--rnx-color-green-300);
  --rnx-color-chart-grid: var(--rnx-color-neutral-7);
  --rnx-color-chart-axis: var(--rnx-color-neutral-4);
  --rnx-opacity-motif: 0.22;  /* Ray, trace and shield-field strength per theme */
  --rnx-opacity-hero-motif: 0.2;
  --rnx-shadow-card: none;  /* No shadows in dark; borders carry separation */
  --rnx-shadow-raised: var(--rnx-shadow-2);
  --rnx-shadow-overlay: var(--rnx-shadow-3);
}}

[data-density="product"] {
  --rnx-density-type-scale: 0.85;  /* Multiplier applied to heading sizes */
  --rnx-density-space-scale: 0.75;  /* Multiplier applied to section and component spacing */
  --rnx-density-radius-step: 0;  /* 0 = as primitives, -1 = one step smaller */
  --rnx-density-control: var(--rnx-size-control-m);
  --rnx-density-body: var(--rnx-font-size-small);
  --rnx-density-line-height: var(--rnx-font-line-height-dense);
  --rnx-density-table-pad: var(--rnx-space-3);
  --rnx-density-section-gap: var(--rnx-space-7);
}

[data-density="admin"] {
  --rnx-density-type-scale: 0.75;  /* Multiplier applied to heading sizes */
  --rnx-density-space-scale: 0.6;  /* Multiplier applied to section and component spacing */
  --rnx-density-radius-step: -1;  /* 0 = as primitives, -1 = one step smaller */
  --rnx-density-control: var(--rnx-size-control-s);
  --rnx-density-body: var(--rnx-font-size-small);
  --rnx-density-line-height: var(--rnx-font-line-height-dense);
  --rnx-density-table-pad: var(--rnx-space-2);
  --rnx-density-section-gap: var(--rnx-space-6);
}