:root {
  /* Primitive colors: gold */
  --nx-gold-50: #fff8e5;
  --nx-gold-100: #fdedba;
  --nx-gold-200: #f6da74;
  --nx-gold-300: #e9be3f;
  --nx-gold-400: #d7a823;
  --nx-gold-500: #c49317;
  --nx-gold-600: #a97812;
  --nx-gold-700: #815a0e;
  --nx-gold-800: #5e410b;
  --nx-gold-900: #3e2b09;

  /* Primitive colors: neutral */
  --nx-neutral-0: #ffffff;
  --nx-neutral-25: #fcfbf8;
  --nx-neutral-50: #f7f6f2;
  --nx-neutral-100: #efede7;
  --nx-neutral-200: #e2ded5;
  --nx-neutral-300: #cec8bd;
  --nx-neutral-400: #a8a197;
  --nx-neutral-500: #827b72;
  --nx-neutral-600: #666158;
  --nx-neutral-700: #4b4741;
  --nx-neutral-800: #34312d;
  --nx-neutral-900: #24221e;
  --nx-neutral-950: #181714;

  /* Typography primitives */
  --nx-font-family-sans: "Vazirmatn", Tahoma, Arial, sans-serif;

  --nx-font-size-12: 12px;
  --nx-font-size-13: 13px;
  --nx-font-size-14: 14px;
  --nx-font-size-16: 16px;
  --nx-font-size-20: 20px;
  --nx-font-size-24: 24px;
  --nx-font-size-30: 30px;
  --nx-font-size-32: 32px;

  --nx-line-height-18: 18px;
  --nx-line-height-20: 20px;
  --nx-line-height-22: 22px;
  --nx-line-height-26: 26px;
  --nx-line-height-32: 32px;
  --nx-line-height-38: 38px;
  --nx-line-height-40: 40px;
  --nx-line-height-48: 48px;

  --nx-font-weight-400: 400;
  --nx-font-weight-500: 500;
  --nx-font-weight-600: 600;
  --nx-font-weight-700: 700;

  --nx-letter-spacing-default: 0;
  --nx-numeric-variant: tabular-nums;

  /* Semantic typography roles */
  --nx-type-caption-size: var(--nx-font-size-12);
  --nx-type-caption-line: var(--nx-line-height-18);
  --nx-type-caption-weight: var(--nx-font-weight-500);

  --nx-type-body-sm-size: var(--nx-font-size-13);
  --nx-type-body-sm-line: var(--nx-line-height-20);
  --nx-type-body-sm-weight: var(--nx-font-weight-400);

  --nx-type-body-md-size: var(--nx-font-size-14);
  --nx-type-body-md-line: var(--nx-line-height-22);
  --nx-type-body-md-weight: var(--nx-font-weight-400);

  --nx-type-body-lg-size: var(--nx-font-size-16);
  --nx-type-body-lg-line: var(--nx-line-height-26);
  --nx-type-body-lg-weight: var(--nx-font-weight-400);

  --nx-type-label-size: var(--nx-font-size-13);
  --nx-type-label-line: var(--nx-line-height-20);
  --nx-type-label-weight: var(--nx-font-weight-600);

  --nx-type-title-size: var(--nx-font-size-16);
  --nx-type-title-line: var(--nx-line-height-26);
  --nx-type-title-weight: var(--nx-font-weight-600);

  --nx-type-heading-size: var(--nx-font-size-20);
  --nx-type-heading-line: var(--nx-line-height-32);
  --nx-type-heading-weight: var(--nx-font-weight-700);

  --nx-type-page-title-size: var(--nx-font-size-24);
  --nx-type-page-title-line: var(--nx-line-height-38);
  --nx-type-page-title-weight: var(--nx-font-weight-700);

  --nx-type-kpi-size: var(--nx-font-size-30);
  --nx-type-kpi-line: var(--nx-line-height-40);
  --nx-type-kpi-weight: var(--nx-font-weight-700);

  --nx-type-display-size: var(--nx-font-size-32);
  --nx-type-display-line: var(--nx-line-height-48);
  --nx-type-display-weight: var(--nx-font-weight-700);

  /* Brand */
  --nx-brand-primary: var(--nx-gold-400);
  --nx-brand-primary-hover: var(--nx-gold-500);
  --nx-brand-primary-pressed: var(--nx-gold-600);
  --nx-brand-subtle: var(--nx-gold-50);
  --nx-brand-subtle-strong: var(--nx-gold-100);
  --nx-brand-border: var(--nx-gold-200);
  --nx-brand-focus: var(--nx-gold-600);
  --nx-brand-foreground: var(--nx-neutral-950);

  /* Text */
  --nx-text-primary: var(--nx-neutral-900);
  --nx-text-secondary: var(--nx-neutral-700);
  --nx-text-tertiary: var(--nx-neutral-600);
  --nx-text-disabled: var(--nx-neutral-400);
  --nx-text-inverse: var(--nx-neutral-0);

  /* Surfaces */
  --nx-surface-canvas: var(--nx-neutral-50);
  --nx-surface-base: var(--nx-neutral-0);
  --nx-surface-subtle: var(--nx-neutral-25);
  --nx-surface-sunken: var(--nx-neutral-100);
  --nx-surface-selected: var(--nx-gold-50);
  --nx-surface-disabled: var(--nx-neutral-100);
  --nx-surface-overlay: var(--nx-neutral-0);

  /* Borders */
  --nx-border-subtle: #e9e5dc;
  --nx-border-default: var(--nx-neutral-200);
  --nx-border-strong: var(--nx-neutral-300);
  --nx-border-control: #cfc8bc;
  --nx-border-control-hover: var(--nx-neutral-400);
  --nx-border-control-focus: var(--nx-brand-focus);

  /* Success */
  --nx-success-fg: #17643e;
  --nx-success-bg: #ecf8f1;
  --nx-success-border: #bfe8d0;

  /* Warning */
  --nx-warning-fg: #914b00;
  --nx-warning-accent: #d97706;
  --nx-warning-bg: #fff2e2;
  --nx-warning-border: #f1be7a;

  /* Information */
  --nx-info-fg: #1d4ed8;
  --nx-info-bg: #eff5ff;
  --nx-info-border: #c9dbff;

  /* Critical status */
  --nx-critical-fg: #a31a13;
  --nx-critical-bg: #fef3f2;
  --nx-critical-border: #f5c4c0;

  /* Destructive action */
  --nx-destructive-bg: #b91c1c;
  --nx-destructive-hover: #991b1b;
  --nx-destructive-pressed: #7f1d1d;
  --nx-destructive-fg: #ffffff;

  /* Spacing */
  --nx-space-0: 0;
  --nx-space-1: 4px;
  --nx-space-2: 8px;
  --nx-space-3: 12px;
  --nx-space-4: 16px;
  --nx-space-5: 20px;
  --nx-space-6: 24px;
  --nx-space-8: 32px;
  --nx-space-10: 40px;
  --nx-space-12: 48px;
  --nx-space-16: 64px;

  /* Radius */
  --nx-radius-sm: 6px;
  --nx-radius-md: 10px;
  --nx-radius-lg: 14px;
  --nx-radius-full: 999px;

  /* Elevation primitives: reserved for actual layering */
  --nx-shadow-none: none;
  --nx-shadow-1: 0 8px 24px rgba(31, 28, 22, 0.10);
  --nx-shadow-2: 0 12px 32px rgba(31, 28, 22, 0.12);
  --nx-shadow-3: 0 18px 48px rgba(31, 28, 22, 0.16);

  /*
   * Semantic elevation:
   * - none: normal panels, cards, tables, and forms
   * - floating: dropdowns and popovers
   * - panel: drawers
   * - dialog: dialogs and modals
   */
  --nx-elevation-none: var(--nx-shadow-none);
  --nx-elevation-floating: var(--nx-shadow-1);
  --nx-elevation-panel: var(--nx-shadow-2);
  --nx-elevation-dialog: var(--nx-shadow-3);

  /* Signature */
  --nx-edge-color: var(--nx-brand-primary);
  --nx-edge-width: 3px;
  --nx-halo-bg: var(--nx-brand-subtle);
  --nx-halo-border: var(--nx-brand-border);

  /* Focus */
  --nx-focus-outline-width: 2px;
  --nx-focus-outline-color: var(--nx-brand-focus);
  --nx-focus-halo-color: var(--nx-brand-subtle-strong);

  /* Motion */
  --nx-motion-fast: 120ms;
  --nx-motion-standard: 180ms;
  --nx-motion-panel: 260ms;
  --nx-ease-standard: cubic-bezier(0.2, 0, 0, 1);
  --nx-ease-enter: cubic-bezier(0, 0, 0, 1);
  --nx-ease-exit: cubic-bezier(0.4, 0, 1, 1);

  /* Shell */
  --nx-sidebar-expanded: 248px;
  --nx-sidebar-collapsed: 72px;
  --nx-header-height: 64px;

  /* Control sizes */
  --nx-control-sm: 36px;
  --nx-control-md: 40px;
  --nx-control-lg: 44px;
  --nx-control-mobile-primary: 48px;
  --nx-touch-target-min: 44px;

  /* Charts */
  --nx-chart-1: #9b7418;
  --nx-chart-2: #406c78;
  --nx-chart-3: #6d5a91;
  --nx-chart-4: #55805c;
  --nx-chart-5: #a15e53;
  --nx-chart-6: #526f9e;
  --nx-chart-neutral: var(--nx-neutral-400);
}

/*
 * Nexus responsive composition contract:
 * - Mobile: 0–639px
 * - Tablet: 640–1023px
 * - Desktop: 1024px+
 * - Wide desktop: 1280px+
 * Breakpoint values are intentionally NOT represented as CSS custom properties
 * for use inside @media queries.
 */

@media (prefers-reduced-motion: reduce) {
  :root {
    --nx-motion-fast: 1ms;
    --nx-motion-standard: 1ms;
    --nx-motion-panel: 1ms;
  }
}
