/* ============================================================
   DESIGN SYSTEM TOKENS
   Family Tree SaaS — Single source of truth for all design values
   ============================================================ */

:root {
  /* ── Color Palette ───────────────────────────────────────── */

  /* Brand */
  --color-brand-50:  #f0f4ff;
  --color-brand-100: #dde6ff;
  --color-brand-200: #c3d0ff;
  --color-brand-300: #9db1ff;
  --color-brand-400: #7088ff;
  --color-brand-500: #4a62f5;
  --color-brand-600: #3547e8;
  --color-brand-700: #2c38cc;
  --color-brand-800: #2631a4;
  --color-brand-900: #252e82;

  /* Neutral */
  --color-neutral-0:   #ffffff;
  --color-neutral-50:  #f8f9fc;
  --color-neutral-100: #f1f3f8;
  --color-neutral-200: #e4e7f0;
  --color-neutral-300: #cdd2e0;
  --color-neutral-400: #9ea7bc;
  --color-neutral-500: #6b7691;
  --color-neutral-600: #4e5872;
  --color-neutral-700: #353e57;
  --color-neutral-800: #1f2640;
  --color-neutral-900: #0d1226;

  /* Semantic */
  --color-success-light: #d1fae5;
  --color-success:       #059669;
  --color-success-dark:  #065f46;

  --color-warning-light: #fef3c7;
  --color-warning:       #d97706;
  --color-warning-dark:  #92400e;

  --color-danger-light:  #fee2e2;
  --color-danger:        #dc2626;
  --color-danger-dark:   #991b1b;

  --color-info-light:    #dbeafe;
  --color-info:          #2563eb;
  --color-info-dark:     #1e40af;

  /* Gender-specific node colors */
  --color-node-male:        #dde6ff;
  --color-node-male-border: #4a62f5;
  --color-node-female:      #fce7f3;
  --color-node-female-border: #db2777;
  --color-node-unknown:     #f1f3f8;
  --color-node-unknown-border: #9ea7bc;
  --color-node-selected:    #4a62f5;

  /* ── Semantic Aliases ────────────────────────────────────── */
  --color-bg-app:       var(--color-neutral-50);
  --color-bg-surface:   var(--color-neutral-0);
  --color-bg-elevated:  var(--color-neutral-0);
  --color-bg-overlay:   rgba(13, 18, 38, 0.55);

  --color-text-primary:   var(--color-neutral-900);
  --color-text-secondary: var(--color-neutral-600);
  --color-text-tertiary:  var(--color-neutral-400);
  --color-text-inverse:   var(--color-neutral-0);
  --color-text-brand:     var(--color-brand-600);

  --color-border-default: var(--color-neutral-200);
  --color-border-strong:  var(--color-neutral-300);
  --color-border-brand:   var(--color-brand-500);

  /* ── Typography ─────────────────────────────────────────── */

  --font-family-sans:  'Inter', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --font-family-mono:  'JetBrains Mono', 'Fira Code', 'Cascadia Code', monospace;

  /* Scale (Major Third — 1.25) */
  --font-size-2xs: 0.64rem;    /* 10.24px */
  --font-size-xs:  0.75rem;    /* 12px    */
  --font-size-sm:  0.875rem;   /* 14px    */
  --font-size-md:  1rem;       /* 16px    */
  --font-size-lg:  1.125rem;   /* 18px    */
  --font-size-xl:  1.25rem;    /* 20px    */
  --font-size-2xl: 1.5rem;     /* 24px    */
  --font-size-3xl: 1.875rem;   /* 30px    */
  --font-size-4xl: 2.25rem;    /* 36px    */

  --font-weight-regular: 400;
  --font-weight-medium:  500;
  --font-weight-semibold: 600;
  --font-weight-bold:    700;

  --line-height-tight:  1.25;
  --line-height-snug:   1.375;
  --line-height-normal: 1.5;
  --line-height-relaxed: 1.625;

  --letter-spacing-tight:  -0.025em;
  --letter-spacing-normal:  0em;
  --letter-spacing-wide:    0.025em;
  --letter-spacing-wider:   0.05em;

  /* ── Spacing (4px base grid) ─────────────────────────────── */
  --space-0:   0;
  --space-1:   0.25rem;   /* 4px  */
  --space-2:   0.5rem;    /* 8px  */
  --space-3:   0.75rem;   /* 12px */
  --space-4:   1rem;      /* 16px */
  --space-5:   1.25rem;   /* 20px */
  --space-6:   1.5rem;    /* 24px */
  --space-8:   2rem;      /* 32px */
  --space-10:  2.5rem;    /* 40px */
  --space-12:  3rem;      /* 48px */
  --space-16:  4rem;      /* 64px */
  --space-20:  5rem;      /* 80px */
  --space-24:  6rem;      /* 96px */

  /* ── Border Radius ───────────────────────────────────────── */
  --radius-sm:   0.25rem;   /* 4px  */
  --radius-md:   0.5rem;    /* 8px  */
  --radius-lg:   0.75rem;   /* 12px */
  --radius-xl:   1rem;      /* 16px */
  --radius-2xl:  1.5rem;    /* 24px */
  --radius-full: 9999px;

  /* ── Shadows ─────────────────────────────────────────────── */
  --shadow-xs:  0 1px 2px rgba(13,18,38,0.05);
  --shadow-sm:  0 1px 3px rgba(13,18,38,0.10), 0 1px 2px rgba(13,18,38,0.06);
  --shadow-md:  0 4px 6px rgba(13,18,38,0.07), 0 2px 4px rgba(13,18,38,0.06);
  --shadow-lg:  0 10px 15px rgba(13,18,38,0.10), 0 4px 6px rgba(13,18,38,0.05);
  --shadow-xl:  0 20px 25px rgba(13,18,38,0.10), 0 8px 10px rgba(13,18,38,0.04);
  --shadow-2xl: 0 25px 50px rgba(13,18,38,0.25);
  --shadow-inner: inset 0 2px 4px rgba(13,18,38,0.06);
  --shadow-focus: 0 0 0 3px rgba(74,98,245,0.35);

  /* ── Z-Index Scale ───────────────────────────────────────── */
  --z-below:    -1;
  --z-base:      0;
  --z-raised:    10;
  --z-dropdown:  100;
  --z-sticky:    200;
  --z-overlay:   300;
  --z-modal:     400;
  --z-toast:     500;
  --z-tooltip:   600;

  /* ── Transitions ─────────────────────────────────────────── */
  --transition-fast:   100ms ease;
  --transition-base:   200ms ease;
  --transition-slow:   350ms ease;
  --transition-spring: 400ms cubic-bezier(0.34, 1.56, 0.64, 1);

  /* ── Tree Layout Constants ───────────────────────────────── */
  /* ── [UPDATED] Node dimensions — taller to fit 2-line names ── */
  --tree-node-width:      200px;
  --tree-node-height:     105px;
  --tree-node-gap-h:      60px;
  --tree-node-gap-v:      110px;
  --tree-connector-color: var(--color-neutral-300);
  --tree-connector-width: 2px;
}

/* ── Dark mode overrides ────────────────────────────────────── */
@media (prefers-color-scheme: dark) {
  :root {
    --color-bg-app:       var(--color-neutral-900);
    --color-bg-surface:   var(--color-neutral-800);
    --color-bg-elevated:  var(--color-neutral-700);
    --color-text-primary:   var(--color-neutral-50);
    --color-text-secondary: var(--color-neutral-300);
    --color-text-tertiary:  var(--color-neutral-500);
    --color-border-default: var(--color-neutral-700);
    --color-border-strong:  var(--color-neutral-600);
    --color-node-male:        #1e2a4a;
    --color-node-female:      #3b1535;
    --color-node-unknown:     var(--color-neutral-800);
  }
}
