/**
 * Genesis UI — Design Tokens (Autonomize brand)
 *
 * Source of truth: --az-* (foundations) and --azp-* (product extensions),
 * matching the Autonomize Design System handoff. Existing --gn-* names are
 * preserved as aliases over the new values, so consumers do not need to
 * change any CSS that references --gn-*.
 *
 * Brand rules carried into tokens:
 *   - Deep purple #4d129d primary
 *   - PPNeue Montreal display + body
 *   - 4 / 6 / 8 px radii (no large corners outside badges)
 *   - No shadows except a single dropdown allowance
 *   - Dark band #1f0448 as a layoutable "section dark" surface
 *
 * Import once at app root:
 *   <link rel="stylesheet" href="@genesis/ui/styles">
 */

:root {
  /* ─────────────────────────────────────────────────────────
   * --az-* foundation tokens
   * Marketing-tier source of truth.
   * ───────────────────────────────────────────────────────── */

  --az-primary:        #4d129d;
  --az-primary-dark:   #29065a;
  --az-primary-light:  #731ee3;
  --az-on-primary:     #ffffff;

  --az-secondary:      #ae7def;   /* lavender — accents on dark band */
  --az-on-secondary:   #1a1a1a;

  --az-accent:         #e8af57;   /* gold — once per page max */
  --az-on-accent:      #1a1a1a;

  --az-surface:               #ffffff;
  --az-surface-form:          #5115a0;
  --az-on-surface:            #1a1a1a;
  --az-on-surface-variant:    #666666;
  --az-background:            #ffffff;
  --az-background-dark:       #1f0448;
  --az-on-background-dark:    #ffffff;

  --az-outline:           #999999;
  --az-outline-variant:   #ebe5f3;

  --az-error:        #e9040e;
  --az-error-input:  #ff4d4d;
  --az-success:      #069306;

  --az-gradient-button: linear-gradient(90deg, #4d129d 0%, #29065a 100%);
  --az-gradient-hero:   linear-gradient(135deg, #4d129d 0%, #29065a 60%, #1f0448 100%);

  --az-font-display: "PPNeue Montreal", "Manrope", system-ui, -apple-system, sans-serif;
  --az-font-body:    "PPNeue Montreal", "Manrope", system-ui, -apple-system, sans-serif;
  --az-font-medium:  "PPNeue Montreal", "Manrope", system-ui, -apple-system, sans-serif;
  --az-font-mono:    ui-monospace, "SF Mono", "JetBrains Mono", Menlo, monospace;

  --az-heading-lg: 48px;
  --az-heading-md: 36px;
  --az-heading-sm: 24px;
  --az-body-lg:    20px;
  --az-body-md:    16px;
  --az-body-sm:    14px;
  --az-label-lg:   16px;
  --az-label-md:   16px;

  --az-weight-regular: 400;
  --az-weight-medium:  500;

  --az-space-base: 8px;
  --az-space-xs:   8px;
  --az-space-sm:   16px;
  --az-space-md:   24px;
  --az-space-lg:   40px;
  --az-space-xl:   48px;
  --az-space-2xl:  64px;

  --az-section-y-mobile:  56px;
  --az-section-y-desktop: 120px;
  --az-container:         1280px;

  --az-radius-sm:   4px;
  --az-radius-md:   6px;
  --az-radius-lg:   8px;
  --az-radius-pill: 9999px;

  --az-duration-fast: 300ms;
  --az-duration-slow: 800ms;
  --az-ease:          ease;

  --az-shadow-dropdown: 0 4px 6px rgba(0, 0, 0, 0.2);

  /* ─────────────────────────────────────────────────────────
   * --azp-* product extensions
   * Adds product-scale type, severity ramps, dark surface chains,
   * and 3-tier code badge mappings on top of the --az-* foundation.
   * ───────────────────────────────────────────────────────── */

  --azp-text-xs:   12px;
  --azp-text-sm:   13px;
  --azp-text-md:   14px;
  --azp-text-lg:   16px;
  --azp-label-xs:  10px;
  --azp-label-sm:  11px;
  --azp-label-2xs: 9px;

  --azp-surface:           var(--az-surface);
  --azp-surface-muted:     #f7f5fb;
  --azp-surface-sunken:    #f1ecf7;
  --azp-surface-hover:     #ebe5f3;

  --azp-surface-dark:        #2b0e5e;
  --azp-surface-dark-muted:  #240952;
  --azp-surface-dark-hover:  #38158f;
  --azp-outline-dark:        rgba(255, 255, 255, 0.12);
  --azp-outline-dark-strong: rgba(255, 255, 255, 0.20);
  --azp-on-dark-muted:       rgba(255, 255, 255, 0.65);
  --azp-on-dark-faint:       rgba(255, 255, 255, 0.45);

  --azp-divider:      #ebe5f3;
  --azp-divider-dark: rgba(255, 255, 255, 0.08);
  --azp-row-hover:    #f4f1f8;

  /* Severity ramp — 4 tiers */
  --azp-sev-critical:    #c2182d;
  --azp-sev-critical-bg: #fdecee;
  --azp-sev-high:        #c25c1d;
  --azp-sev-high-bg:     #fdf0e6;
  --azp-sev-medium:      #b27420;
  --azp-sev-medium-bg:   #fbf3e3;
  --azp-sev-low:         #4f5763;
  --azp-sev-low-bg:      #f1f3f6;

  --azp-sev-critical-dark-bg: rgba(255, 99, 118, 0.14);
  --azp-sev-high-dark-bg:     rgba(255, 160,  90, 0.14);
  --azp-sev-medium-dark-bg:   rgba(232, 175,  87, 0.14);
  --azp-sev-low-dark-bg:      rgba(255, 255, 255, 0.06);
  --azp-sev-critical-dark-fg: #ffb1bb;
  --azp-sev-high-dark-fg:     #ffc89e;
  --azp-sev-medium-dark-fg:   #f3d59a;
  --azp-sev-low-dark-fg:      rgba(255, 255, 255, 0.7);

  /* Healthcare code-badge — 3 tiers (diagnosis / procedure / identifier) */
  --azp-code-dx: var(--az-primary);
  --azp-code-px: var(--az-primary-light);
  --azp-code-id: #4f5763;

  --azp-shadow-menu: 0 4px 6px rgba(31, 4, 72, 0.15);

  /* ─────────────────────────────────────────────────────────
   * --gn-* aliases
   * Preserve all existing component references over the new values.
   * ───────────────────────────────────────────────────────── */

  --gn-primary:       var(--az-primary);
  --gn-primary-hover: var(--az-primary-dark);
  --gn-primary-light: #ede4fa;
  --gn-primary-text:  var(--az-on-primary);

  --gn-success:       var(--az-success);
  --gn-success-light: #d1fae5;
  --gn-success-text:  #065f46;

  --gn-warning:       var(--azp-sev-medium);
  --gn-warning-light: var(--azp-sev-medium-bg);
  --gn-warning-text:  #6b4408;

  --gn-danger:        var(--az-error);
  --gn-danger-hover:  #b8030c;
  --gn-danger-light:  var(--azp-sev-critical-bg);
  --gn-danger-text:   #7a0d18;

  --gn-info:          var(--az-primary);
  --gn-info-light:    #ede4fa;
  --gn-info-text:     var(--az-primary-dark);

  --gn-neutral:       var(--azp-sev-low);
  --gn-neutral-light: var(--azp-sev-low-bg);
  --gn-neutral-text:  var(--az-on-surface);

  --gn-text-micro: var(--azp-label-xs);
  --gn-text-label: var(--azp-label-sm);

  --gn-brand-dark: var(--az-background-dark);
  --gn-brand-deep: #160233;

  --gn-danger-orange:       var(--azp-sev-high);
  --gn-danger-orange-light: var(--azp-sev-high-bg);
  --gn-danger-orange-text:  #6b310c;

  --gn-surface:        var(--az-surface);
  --gn-surface-alt:    var(--azp-surface-muted);
  --gn-surface-raised: var(--az-surface);

  --gn-border:        var(--az-outline-variant);
  --gn-border-strong: var(--az-outline);

  --gn-radius:        var(--az-radius-sm);
  --gn-radius-lg:     var(--az-radius-lg);
  --gn-radius-xl:     var(--az-radius-lg);
  --gn-radius-full:   var(--az-radius-pill);

  --gn-font-sans:  var(--az-font-body);
  --gn-font-mono:  var(--az-font-mono);
  --gn-text-xs:    var(--azp-text-xs);
  --gn-text-sm:    var(--azp-text-md);
  --gn-text-base:  var(--azp-text-lg);
  --gn-text-lg:    1.125rem;
  --gn-text-primary:   var(--az-on-surface);
  --gn-text-secondary: var(--az-on-surface-variant);
  --gn-text-muted:     #8a8a8a;
  --gn-line-height-tight:   1;
  --gn-line-height-normal:  1.5;
  --gn-line-height-relaxed: 1.65;

  --gn-space-1: 0.25rem;
  --gn-space-2: 0.5rem;
  --gn-space-3: 0.75rem;
  --gn-space-4: 1rem;
  --gn-space-5: 1.25rem;
  --gn-space-6: 1.5rem;
  --gn-space-7: 1.75rem;
  --gn-space-8: 2rem;

  /* Shadows — neutralised. The legacy tokens stay defined so existing
     declarations don't break, but they emit `none`. The single allowed
     shadow lives on --gn-shadow-dropdown / --azp-shadow-menu. */
  --gn-shadow-sm:    none;
  --gn-shadow:       none;
  --gn-shadow-md:    none;
  --gn-shadow-card:  none;
  --gn-shadow-inset: none;
  --gn-shadow-dropdown: var(--az-shadow-dropdown);

  --gn-duration-fast:   100ms;
  --gn-duration-normal: 200ms;
  --gn-duration-slow:   var(--az-duration-fast);
  --gn-duration-spin:   700ms;
  --gn-duration-blink:  900ms;
  --gn-duration-pulse:  1400ms;
  --gn-ease:            var(--az-ease);

  /* Healthcare code colours — 3-tier (dx / px / id) over the granular names */
  --gn-code-icd10:  var(--azp-code-dx);
  --gn-code-snomed: var(--azp-code-dx);
  --gn-code-drg:    var(--azp-code-dx);
  --gn-code-cpt:    var(--azp-code-px);
  --gn-code-hcpcs:  var(--azp-code-px);
  --gn-code-rxnorm: var(--azp-code-px);
  --gn-code-ndc:    var(--azp-code-px);
  --gn-code-cvx:    var(--azp-code-px);
  --gn-code-npi:    var(--azp-code-id);
  --gn-code-loinc:  var(--azp-code-id);

  /* Analytics / chart scale — violet intensity ramp on the new brand */
  --gn-chart-scale-0: var(--azp-surface-muted);
  --gn-chart-scale-1: #e9deff;
  --gn-chart-scale-2: #cdb1f5;
  --gn-chart-scale-3: var(--az-primary-light);
  --gn-chart-scale-4: var(--az-primary);
  --gn-chart-scale-5: var(--az-primary-dark);
  --gn-chart-grid:    var(--az-outline-variant);
  --gn-chart-axis:    var(--az-on-surface-variant);
}

@media (min-width: 1024px) {
  :root {
    --az-heading-lg: 68px;
    --az-heading-md: 56px;
    --az-heading-sm: 40px;
    --az-body-lg:    24px;
    --az-body-md:    20px;
    --az-body-sm:    16px;
    --az-label-lg:   20px;
    --az-label-md:   16px;
  }
}

/* ── Dark mode (class-based) ───────────────────────────────
 * Re-tinted to the new dark-band family. Note: this is distinct
 * from the .section--dark / on-dark variants used on a single
 * dark band within an otherwise-light page.
 * ─────────────────────────────────────────────────────────── */

.dark {
  --gn-surface:        var(--azp-surface-dark);
  --gn-surface-alt:    var(--az-background-dark);
  --gn-surface-raised: var(--azp-surface-dark-hover);
  --gn-border:         var(--azp-outline-dark);
  --gn-border-strong:  var(--azp-outline-dark-strong);
  --gn-text-primary:   #ffffff;
  --gn-text-secondary: var(--azp-on-dark-muted);
  --gn-text-muted:     var(--azp-on-dark-faint);
  --gn-primary-light:  rgba(174, 125, 239, 0.18);
  --gn-neutral-light:  var(--azp-surface-dark-hover);
  --gn-neutral-text:   var(--azp-on-dark-muted);
  --gn-success-light:  rgba(70, 210, 90, 0.16);
  --gn-success-text:   #6ee07e;
  --gn-warning-light:  var(--azp-sev-medium-dark-bg);
  --gn-warning-text:   var(--azp-sev-medium-dark-fg);
  --gn-danger-light:   var(--azp-sev-critical-dark-bg);
  --gn-danger-text:    var(--azp-sev-critical-dark-fg);
  --gn-info-light:     rgba(174, 125, 239, 0.18);
  --gn-info-text:      var(--az-secondary);
}

@media (prefers-color-scheme: dark) {
  :root:not(.light) {
    --gn-surface:        var(--azp-surface-dark);
    --gn-surface-alt:    var(--az-background-dark);
    --gn-surface-raised: var(--azp-surface-dark-hover);
    --gn-border:         var(--azp-outline-dark);
    --gn-border-strong:  var(--azp-outline-dark-strong);
    --gn-text-primary:   #ffffff;
    --gn-text-secondary: var(--azp-on-dark-muted);
    --gn-text-muted:     var(--azp-on-dark-faint);
    --gn-primary-light:  rgba(174, 125, 239, 0.18);
    --gn-neutral-light:  var(--azp-surface-dark-hover);
    --gn-neutral-text:   var(--azp-on-dark-muted);
    --gn-success-light:  rgba(70, 210, 90, 0.16);
    --gn-success-text:   #6ee07e;
    --gn-warning-light:  var(--azp-sev-medium-dark-bg);
    --gn-warning-text:   var(--azp-sev-medium-dark-fg);
    --gn-danger-light:   var(--azp-sev-critical-dark-bg);
    --gn-danger-text:    var(--azp-sev-critical-dark-fg);
    --gn-info-light:     rgba(174, 125, 239, 0.18);
    --gn-info-text:      var(--az-secondary);
  }
}
