/**
 * GLASSTERMINAL DESIGN SYSTEM
 * variables.css - Design Tokens & Theming
 *
 * Comprehensive CSS custom properties for theming.
 * Supports dark/light modes and custom color themes.
 */

/* ============================================
   ROOT CONFIGURATION
   ============================================ */

:root {
  /* Font Size Scale - Configurable base */
  --font-size-base: 14px;
  --font-size-scale: 1.125; /* Minor third scale */

  /* Computed font sizes using scale */
  --font-size-3xs: calc(var(--font-size-base) / var(--font-size-scale) / var(--font-size-scale) / var(--font-size-scale));
  --font-size-2xs: calc(var(--font-size-base) / var(--font-size-scale) / var(--font-size-scale));
  --font-size-xs: calc(var(--font-size-base) / var(--font-size-scale));
  --font-size-sm: var(--font-size-base);
  --font-size-md: calc(var(--font-size-base) * var(--font-size-scale));
  --font-size-lg: calc(var(--font-size-base) * var(--font-size-scale) * var(--font-size-scale));
  --font-size-xl: calc(var(--font-size-base) * var(--font-size-scale) * var(--font-size-scale) * var(--font-size-scale));
  --font-size-2xl: calc(var(--font-size-base) * var(--font-size-scale) * var(--font-size-scale) * var(--font-size-scale) * var(--font-size-scale));
  --font-size-3xl: calc(var(--font-size-base) * var(--font-size-scale) * var(--font-size-scale) * var(--font-size-scale) * var(--font-size-scale) * var(--font-size-scale));

  /* Font Families - Configurable */
  --font-family-mono: 'JetBrains Mono', 'Fira Code', 'SF Mono', 'Cascadia Code', 'Consolas', monospace;
  --font-family-sans: 'Inter', 'SF Pro Display', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --font-family-display: 'Orbitron', 'Audiowide', var(--font-family-sans);

  /* Primary font selection */
  --font-family-primary: var(--font-family-mono);
  --font-family-heading: var(--font-family-display);
  --font-family-ui: var(--font-family-sans);

  /* Font Weights */
  --font-weight-light: 300;
  --font-weight-normal: 400;
  --font-weight-medium: 500;
  --font-weight-semibold: 600;
  --font-weight-bold: 700;

  /* Line Heights */
  --line-height-tight: 1.1;
  --line-height-snug: 1.25;
  --line-height-normal: 1.5;
  --line-height-relaxed: 1.625;
  --line-height-loose: 2;

  /* Letter Spacing */
  --letter-spacing-tighter: -0.05em;
  --letter-spacing-tight: -0.025em;
  --letter-spacing-normal: 0;
  --letter-spacing-wide: 0.025em;
  --letter-spacing-wider: 0.05em;
  --letter-spacing-widest: 0.1em;

  /* Spacing Scale */
  --space-unit: 4px;
  --space-0: 0;
  --space-1: calc(var(--space-unit) * 1);  /* 4px */
  --space-2: calc(var(--space-unit) * 2);  /* 8px */
  --space-3: calc(var(--space-unit) * 3);  /* 12px */
  --space-4: calc(var(--space-unit) * 4);  /* 16px */
  --space-5: calc(var(--space-unit) * 5);  /* 20px */
  --space-6: calc(var(--space-unit) * 6);  /* 24px */
  --space-8: calc(var(--space-unit) * 8);  /* 32px */
  --space-10: calc(var(--space-unit) * 10); /* 40px */
  --space-12: calc(var(--space-unit) * 12); /* 48px */
  --space-16: calc(var(--space-unit) * 16); /* 64px */
  --space-20: calc(var(--space-unit) * 20); /* 80px */
  --space-24: calc(var(--space-unit) * 24); /* 96px */

  /* Border Radius */
  --radius-none: 0;
  --radius-sm: 2px;
  --radius-md: 4px;
  --radius-lg: 8px;
  --radius-xl: 12px;
  --radius-2xl: 16px;
  --radius-full: 9999px;

  /* Border Widths */
  --border-width-thin: 1px;
  --border-width-medium: 2px;
  --border-width-thick: 3px;

  /* Transition Timing */
  --transition-fastest: 50ms;
  --transition-fast: 100ms;
  --transition-normal: 200ms;
  --transition-slow: 300ms;
  --transition-slower: 500ms;

  /* Easing Functions */
  --ease-linear: linear;
  --ease-in: cubic-bezier(0.4, 0, 1, 1);
  --ease-out: cubic-bezier(0, 0, 0.2, 1);
  --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
  --ease-bounce: cubic-bezier(0.68, -0.55, 0.265, 1.55);
  --ease-elastic: cubic-bezier(0.175, 0.885, 0.32, 1.275);

  /* Z-Index Scale */
  --z-negative: -1;
  --z-0: 0;
  --z-10: 10;
  --z-20: 20;
  --z-30: 30;
  --z-40: 40;
  --z-50: 50;
  --z-dropdown: 100;
  --z-sticky: 200;
  --z-modal: 300;
  --z-popover: 400;
  --z-tooltip: 500;
  --z-toast: 600;

  /* Glass Effect Configuration */
  --glass-blur-none: 0;
  --glass-blur-sm: 4px;
  --glass-blur-md: 8px;
  --glass-blur-lg: 16px;
  --glass-blur-xl: 24px;
  --glass-blur-2xl: 40px;

  /* Shadow Scale */
  --shadow-xs: 0 1px 2px 0;
  --shadow-sm: 0 1px 3px 0, 0 1px 2px -1px;
  --shadow-md: 0 4px 6px -1px, 0 2px 4px -2px;
  --shadow-lg: 0 10px 15px -3px, 0 4px 6px -4px;
  --shadow-xl: 0 20px 25px -5px, 0 8px 10px -6px;
  --shadow-2xl: 0 8px 40px -8px;
  --shadow-inner: inset 0 2px 4px 0;

  /* Grid Configuration */
  --grid-columns: 12;
  --grid-gap: var(--space-4);
  --container-max-width: 1440px;
  --container-padding: var(--space-4);
}

/* ============================================
   DARK THEME (DEFAULT)
   ============================================ */

[data-theme="dark"],
:root {
  /* Color scheme hint for browser */
  color-scheme: dark;

  /* Base Background Colors */
  --color-bg-deep: #050508;
  --color-bg-base: #0a0a0f;
  --color-bg-elevated: #12121a;
  --color-bg-surface: #1a1a24;
  --color-bg-overlay: #22222e;

  /* Glass Background Colors */
  --glass-bg-subtle: rgba(255, 255, 255, 0.02);
  --glass-bg-light: rgba(255, 255, 255, 0.04);
  --glass-bg-medium: rgba(255, 255, 255, 0.06);
  --glass-bg-strong: rgba(255, 255, 255, 0.08);
  --glass-bg-intense: rgba(255, 255, 255, 0.12);

  /* Text Colors */
  --color-text-primary: rgba(255, 255, 255, 0.95);
  --color-text-secondary: rgba(255, 255, 255, 0.70);
  --color-text-tertiary: rgba(255, 255, 255, 0.50);
  --color-text-muted: rgba(255, 255, 255, 0.45);
  --color-text-disabled: rgba(255, 255, 255, 0.20);

  /* Border Colors */
  --color-border-subtle: rgba(255, 255, 255, 0.06);
  --color-border-light: rgba(255, 255, 255, 0.10);
  --color-border-medium: rgba(255, 255, 255, 0.15);
  --color-border-strong: rgba(255, 255, 255, 0.20);
  --color-border-intense: rgba(255, 255, 255, 0.30);

  /* Accent Colors - Cyan/Teal Primary */
  --color-accent-50: #ecfeff;
  --color-accent-100: #cffafe;
  --color-accent-200: #a5f3fc;
  --color-accent-300: #67e8f9;
  --color-accent-400: #22d3ee;
  --color-accent-500: #06b6d4;
  --color-accent-600: #0891b2;
  --color-accent-700: #0e7490;
  --color-accent-800: #155e75;
  --color-accent-900: #164e63;

  --color-accent: var(--color-accent-400);
  --color-accent-hover: var(--color-accent-300);
  --color-accent-active: var(--color-accent-500);
  --color-accent-muted: rgba(34, 211, 238, 0.15);
  --color-accent-subtle: rgba(34, 211, 238, 0.08);

  /* Secondary Accent - Purple */
  --color-secondary-400: #a78bfa;
  --color-secondary-500: #8b5cf6;
  --color-secondary: var(--color-secondary-400);

  /* Semantic Colors - Success (Green) */
  --color-success-400: #4ade80;
  --color-success-500: #22c55e;
  --color-success: var(--color-success-400);
  --color-success-muted: rgba(74, 222, 128, 0.15);
  --color-success-subtle: rgba(74, 222, 128, 0.08);

  /* Semantic Colors - Warning (Amber) */
  --color-warning-400: #fbbf24;
  --color-warning-500: #f59e0b;
  --color-warning: var(--color-warning-400);
  --color-warning-muted: rgba(251, 191, 36, 0.15);
  --color-warning-subtle: rgba(251, 191, 36, 0.08);

  /* Semantic Colors - Error (Red) */
  --color-error-400: #f87171;
  --color-error-500: #ef4444;
  --color-error: var(--color-error-400);
  --color-error-muted: rgba(248, 113, 113, 0.15);
  --color-error-subtle: rgba(248, 113, 113, 0.08);

  /* Semantic Colors - Info (Blue) */
  --color-info-400: #60a5fa;
  --color-info-500: #3b82f6;
  --color-info: var(--color-info-400);
  --color-info-muted: rgba(96, 165, 250, 0.15);
  --color-info-subtle: rgba(96, 165, 250, 0.08);

  /* Data Visualization Colors */
  --color-data-positive: #4ade80;
  --color-data-negative: #f87171;
  --color-data-neutral: #94a3b8;
  --color-data-highlight: #22d3ee;

  /* Glow Effects */
  --glow-accent: 0 0 20px rgba(34, 211, 238, 0.3);
  --glow-accent-strong: 0 0 30px rgba(34, 211, 238, 0.5);
  --glow-success: 0 0 20px rgba(74, 222, 128, 0.3);
  --glow-error: 0 0 20px rgba(248, 113, 113, 0.3);
  --glow-warning: 0 0 20px rgba(251, 191, 36, 0.3);

  /* Shadow Colors */
  --shadow-color: rgba(0, 0, 0, 0.5);
  --shadow-color-strong: rgba(0, 0, 0, 0.8);

  /* Interactive States */
  --color-focus: var(--color-accent-400);
  --color-selection-bg: rgba(34, 211, 238, 0.30);
  --color-selection-text: inherit;

  /* Scrollbar */
  --color-scrollbar-track: transparent;
  --color-scrollbar-thumb: rgba(255, 255, 255, 0.15);
  --color-scrollbar-thumb-hover: rgba(255, 255, 255, 0.25);

  /* Glass Borders */
  --glass-border-light: rgba(255, 255, 255, 0.08);
  --glass-border-medium: rgba(255, 255, 255, 0.12);
  --glass-border-strong: rgba(255, 255, 255, 0.18);
  --glass-border-glow: rgba(34, 211, 238, 0.3);

  /* Glass Shadows */
  --glass-shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.3);
  --glass-shadow-md: 0 4px 16px rgba(0, 0, 0, 0.4);
  --glass-shadow-lg: 0 8px 32px rgba(0, 0, 0, 0.5);
  --glass-shadow-inset: inset 0 1px 1px rgba(255, 255, 255, 0.05);
}

/* ============================================
   LIGHT THEME
   ============================================ */

[data-theme="light"] {
  color-scheme: light;

  /* Base Background Colors */
  --color-bg-deep: #f8fafc;
  --color-bg-base: #ffffff;
  --color-bg-elevated: #f1f5f9;
  --color-bg-surface: #e2e8f0;
  --color-bg-overlay: #cbd5e1;

  /* Glass Background Colors */
  --glass-bg-subtle: rgba(0, 0, 0, 0.01);
  --glass-bg-light: rgba(0, 0, 0, 0.02);
  --glass-bg-medium: rgba(0, 0, 0, 0.04);
  --glass-bg-strong: rgba(0, 0, 0, 0.06);
  --glass-bg-intense: rgba(0, 0, 0, 0.10);

  /* Text Colors */
  --color-text-primary: rgba(15, 23, 42, 0.95);
  --color-text-secondary: rgba(15, 23, 42, 0.70);
  --color-text-tertiary: rgba(15, 23, 42, 0.50);
  --color-text-muted: rgba(15, 23, 42, 0.35);
  --color-text-disabled: rgba(15, 23, 42, 0.20);

  /* Border Colors */
  --color-border-subtle: rgba(0, 0, 0, 0.04);
  --color-border-light: rgba(0, 0, 0, 0.08);
  --color-border-medium: rgba(0, 0, 0, 0.12);
  --color-border-strong: rgba(0, 0, 0, 0.18);
  --color-border-intense: rgba(0, 0, 0, 0.25);

  /* Accent Colors - Deeper for light mode */
  --color-accent: var(--color-accent-600);
  --color-accent-hover: var(--color-accent-500);
  --color-accent-active: var(--color-accent-700);
  --color-accent-muted: rgba(8, 145, 178, 0.12);
  --color-accent-subtle: rgba(8, 145, 178, 0.06);

  /* Semantic Colors */
  --color-success: var(--color-success-500);
  --color-success-muted: rgba(34, 197, 94, 0.12);
  --color-success-subtle: rgba(34, 197, 94, 0.06);

  --color-warning: var(--color-warning-500);
  --color-warning-muted: rgba(245, 158, 11, 0.12);
  --color-warning-subtle: rgba(245, 158, 11, 0.06);

  --color-error: var(--color-error-500);
  --color-error-muted: rgba(239, 68, 68, 0.12);
  --color-error-subtle: rgba(239, 68, 68, 0.06);

  --color-info: var(--color-info-500);
  --color-info-muted: rgba(59, 130, 246, 0.12);
  --color-info-subtle: rgba(59, 130, 246, 0.06);

  /* Data Visualization */
  --color-data-positive: #16a34a;
  --color-data-negative: #dc2626;
  --color-data-neutral: #64748b;
  --color-data-highlight: #0891b2;

  /* Glow Effects - Subtler for light mode */
  --glow-accent: 0 0 15px rgba(8, 145, 178, 0.2);
  --glow-accent-strong: 0 0 25px rgba(8, 145, 178, 0.35);
  --glow-success: 0 0 15px rgba(34, 197, 94, 0.2);
  --glow-error: 0 0 15px rgba(239, 68, 68, 0.2);
  --glow-warning: 0 0 15px rgba(245, 158, 11, 0.2);

  /* Shadow Colors */
  --shadow-color: rgba(0, 0, 0, 0.1);
  --shadow-color-strong: rgba(0, 0, 0, 0.2);

  /* Scrollbar */
  --color-scrollbar-track: transparent;
  --color-scrollbar-thumb: rgba(0, 0, 0, 0.15);
  --color-scrollbar-thumb-hover: rgba(0, 0, 0, 0.25);

  /* Glass Borders */
  --glass-border-light: rgba(0, 0, 0, 0.06);
  --glass-border-medium: rgba(0, 0, 0, 0.10);
  --glass-border-strong: rgba(0, 0, 0, 0.15);
  --glass-border-glow: rgba(8, 145, 178, 0.25);

  /* Glass Shadows */
  --glass-shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.08);
  --glass-shadow-md: 0 4px 16px rgba(0, 0, 0, 0.12);
  --glass-shadow-lg: 0 8px 32px rgba(0, 0, 0, 0.16);
  --glass-shadow-inset: inset 0 1px 1px rgba(255, 255, 255, 0.8);
}

/* ============================================
   ALTERNATE COLOR THEMES
   ============================================ */

/* Cyberpunk Theme - Hot pink/magenta accent */
[data-accent="cyberpunk"] {
  --color-accent-400: #f472b6;
  --color-accent-500: #ec4899;
  --color-accent-600: #db2777;
  --color-accent: var(--color-accent-400);
  --color-accent-hover: #f9a8d4;
  --color-accent-active: var(--color-accent-500);
  --color-accent-muted: rgba(244, 114, 182, 0.15);
  --color-accent-subtle: rgba(244, 114, 182, 0.08);
  --glow-accent: 0 0 20px rgba(244, 114, 182, 0.4);
  --glow-accent-strong: 0 0 30px rgba(244, 114, 182, 0.6);
  --glass-border-glow: rgba(244, 114, 182, 0.3);
  --color-focus: var(--color-accent-400);
  --color-selection-bg: rgba(244, 114, 182, 0.30);
}

/* Matrix Theme - Green accent */
[data-accent="matrix"] {
  --color-accent-400: #4ade80;
  --color-accent-500: #22c55e;
  --color-accent-600: #16a34a;
  --color-accent: var(--color-accent-400);
  --color-accent-hover: #86efac;
  --color-accent-active: var(--color-accent-500);
  --color-accent-muted: rgba(74, 222, 128, 0.15);
  --color-accent-subtle: rgba(74, 222, 128, 0.08);
  --glow-accent: 0 0 20px rgba(74, 222, 128, 0.4);
  --glow-accent-strong: 0 0 30px rgba(74, 222, 128, 0.6);
  --glass-border-glow: rgba(74, 222, 128, 0.3);
  --color-focus: var(--color-accent-400);
  --color-selection-bg: rgba(74, 222, 128, 0.30);
}

/* Sunset Theme - Orange/amber accent */
[data-accent="sunset"] {
  --color-accent-400: #fb923c;
  --color-accent-500: #f97316;
  --color-accent-600: #ea580c;
  --color-accent: var(--color-accent-400);
  --color-accent-hover: #fdba74;
  --color-accent-active: var(--color-accent-500);
  --color-accent-muted: rgba(251, 146, 60, 0.15);
  --color-accent-subtle: rgba(251, 146, 60, 0.08);
  --glow-accent: 0 0 20px rgba(251, 146, 60, 0.4);
  --glow-accent-strong: 0 0 30px rgba(251, 146, 60, 0.6);
  --glass-border-glow: rgba(251, 146, 60, 0.3);
  --color-focus: var(--color-accent-400);
  --color-selection-bg: rgba(251, 146, 60, 0.30);
}

/* Arctic Theme - Ice blue accent */
[data-accent="arctic"] {
  --color-accent-400: #38bdf8;
  --color-accent-500: #0ea5e9;
  --color-accent-600: #0284c7;
  --color-accent: var(--color-accent-400);
  --color-accent-hover: #7dd3fc;
  --color-accent-active: var(--color-accent-500);
  --color-accent-muted: rgba(56, 189, 248, 0.15);
  --color-accent-subtle: rgba(56, 189, 248, 0.08);
  --glow-accent: 0 0 20px rgba(56, 189, 248, 0.4);
  --glow-accent-strong: 0 0 30px rgba(56, 189, 248, 0.6);
  --glass-border-glow: rgba(56, 189, 248, 0.3);
  --color-focus: var(--color-accent-400);
  --color-selection-bg: rgba(56, 189, 248, 0.30);
}

/* Violet Theme - Purple accent */
[data-accent="violet"] {
  --color-accent-400: #a78bfa;
  --color-accent-500: #8b5cf6;
  --color-accent-600: #7c3aed;
  --color-accent: var(--color-accent-400);
  --color-accent-hover: #c4b5fd;
  --color-accent-active: var(--color-accent-500);
  --color-accent-muted: rgba(167, 139, 250, 0.15);
  --color-accent-subtle: rgba(167, 139, 250, 0.08);
  --glow-accent: 0 0 20px rgba(167, 139, 250, 0.4);
  --glow-accent-strong: 0 0 30px rgba(167, 139, 250, 0.6);
  --glass-border-glow: rgba(167, 139, 250, 0.3);
  --color-focus: var(--color-accent-400);
  --color-selection-bg: rgba(167, 139, 250, 0.30);
}

/* ============================================
   FONT SIZE PRESETS
   ============================================ */

[data-font-size="compact"] {
  --font-size-base: 12px;
}

[data-font-size="normal"] {
  --font-size-base: 14px;
}

[data-font-size="comfortable"] {
  --font-size-base: 16px;
}

[data-font-size="large"] {
  --font-size-base: 18px;
}

/* ============================================
   GLASS INTENSITY PRESETS
   ============================================ */

[data-glass="subtle"] {
  --glass-blur-default: var(--glass-blur-sm);
  --glass-bg-default: var(--glass-bg-subtle);
  --glass-border-default: var(--glass-border-light);
}

[data-glass="normal"] {
  --glass-blur-default: var(--glass-blur-md);
  --glass-bg-default: var(--glass-bg-light);
  --glass-border-default: var(--glass-border-medium);
}

[data-glass="strong"] {
  --glass-blur-default: var(--glass-blur-lg);
  --glass-bg-default: var(--glass-bg-medium);
  --glass-border-default: var(--glass-border-strong);
}

[data-glass="intense"] {
  --glass-blur-default: var(--glass-blur-xl);
  --glass-bg-default: var(--glass-bg-strong);
  --glass-border-default: var(--glass-border-strong);
}

/* Default glass intensity */
:root {
  --glass-blur-default: var(--glass-blur-md);
  --glass-bg-default: var(--glass-bg-light);
  --glass-border-default: var(--glass-border-medium);
}
