/*
 * variables.css - Design Tokens
 * Shared across all modules
 */

:root {
    /* =========================================================================
   * BRAND COLORS
   * ========================================================================= */
    --brand-primary: #2563eb;
    --brand-primary-hover: #1d4ed8;
    --brand-primary-active: #1e40af;
    --brand-primary-light: #dbeafe;
    --brand-primary-rgb: 37, 99, 235;
    --brand-secondary: #7c3aed;
    --brand-secondary-hover: #6d28d9;
    --brand-secondary-light: #ede9fe;
    --brand-accent: #d4af37;
    --brand-accent-hover: #ba9828;
    --brand-accent-light: #fdf5d2;
    --brand-accent-rgb: 212, 175, 55;
    /* Dual-language support track — amber, semantically distinct from --color-warning */
    --brand-support: #f59e0b;
    --brand-support-hover: #d97706;
    --brand-support-active: #b45309;
    --brand-support-light: #fef3c7;
    --brand-support-rgb: 245, 158, 11;
    /* Gradient - primary → secondary. Use for accent headers, chips, numbered badges. */
    --brand-gradient: linear-gradient(135deg, var(--brand-primary) 0%, var(--brand-secondary) 100%);
    --brand-gradient-light: linear-gradient(135deg, var(--brand-primary-light) 0%, var(--brand-secondary-light) 100%);
    --brand-gradient-rgb-start: var(--brand-primary-rgb);
    --brand-secondary-rgb: 124, 58, 237;
    /* =========================================================================
   * SEMANTIC COLORS
   * ========================================================================= */
    --color-success: #10b981;
    --color-success-hover: #059669;
    --color-success-light: #d1fae5;
    --color-success-rgb: 16, 185, 129;
    --color-warning: #f59e0b;
    --color-warning-hover: #d97706;
    --color-warning-light: #fef3c7;
    --color-warning-rgb: 245, 158, 11;
    --color-danger: #ef4444;
    --color-danger-hover: #dc2626;
    --color-danger-light: #fee2e2;
    --color-danger-rgb: 239, 68, 68;
    --color-info: #3b82f6;
    --color-info-hover: #2563eb;
    --color-info-light: #dbeafe;
    --color-info-rgb: 59, 130, 246;
    /* =========================================================================
   * NEUTRAL PALETTE
   * ========================================================================= */
    --gray-50: #f8fafc;
    --gray-100: #f1f5f9;
    --gray-200: #e2e8f0;
    --gray-300: #cbd5e1;
    --gray-400: #94a3b8;
    --gray-500: #64748b;
    --gray-600: #475569;
    --gray-700: #334155;
    --gray-800: #1e293b;
    --gray-900: #0f172a;
    --gray-950: #020617;
    /* =========================================================================
   * BACKGROUNDS
   * ========================================================================= */
    --bg-app: var(--gray-50);
    --bg-sidebar: #ffffff;
    --bg-panel: #ffffff;
    --bg-card: #ffffff;
    --bg-highlight: #fffef5;
    --bg-bright: #fefce8;
    --bg-input: var(--gray-100);
    --bg-input-focus: #ffffff;
    --bg-hover: var(--gray-200);
    --bg-active: var(--brand-primary-light);
    --bg-disabled: var(--gray-300);
    --bg-overlay: rgba(0, 0, 0, 0.5);
    --bg-tooltip: var(--gray-900);
    --bg-codeblock: var(--gray-900);
    /* =========================================================================
   * TEXT COLORS
   * ========================================================================= */
    --text-primary: var(--gray-900);
    --text-body: var(--gray-700); /* Definitions, descriptions — slightly softer than primary */
    --text-secondary: var(--gray-600);
    --text-support: var(--gray-500); /* Bilingual support content — between secondary and muted */
    --text-muted: var(--gray-400);
    --text-disabled: var(--gray-400);
    --text-inverse: #ffffff;
    --text-link: var(--brand-primary);
    --text-link-hover: var(--brand-primary-hover);
    --text-codeblock: var(--gray-100);
    /* =========================================================================
   * BORDERS
   * ========================================================================= */
    --border-light: var(--gray-200);
    --border-default: var(--gray-300);
    --border-dark: var(--gray-400);
    --border-focus: var(--brand-primary);
    --border-error: var(--color-danger);
    --border-success: var(--color-success);
    --border-radius-sm: 4px;
    --border-radius-md: 6px;
    --border-radius-lg: 8px;
    --border-radius-xl: 12px;
    --border-radius-2xl: 16px;
    --border-radius-full: 9999px;
    --border-codeblock: var(--gray-200);
    /* =========================================================================
   * SHADOWS
   * ========================================================================= */
    --shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.04);
    --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.06), 0 1px 2px rgba(0, 0, 0, 0.04);
    --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.08), 0 2px 4px -1px rgba(0, 0, 0, 0.04);
    --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.08), 0 4px 6px -2px rgba(0, 0, 0, 0.04);
    --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
    --shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
    --shadow-inner: inset 0 2px 4px rgba(0, 0, 0, 0.06);
    --shadow-glow: 0 0 20px rgba(37, 99, 235, 0.3);
    --shadow-glow-success: 0 0 20px rgba(16, 185, 129, 0.3);
    /* =========================================================================
   * SPACING SCALE
   * ========================================================================= */
    --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 */
    /* =========================================================================
   * TYPOGRAPHY
   * ========================================================================= */
    --font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
    --font-mono: 'JetBrains Mono', 'Fira Code', 'SF Mono', Monaco, Consolas, monospace;
    --text-2xs: 0.65rem; /* 10px */
    --text-xs: 0.75rem; /* 12px */
    --text-sm: 0.875rem; /* 14px */
    --text-base: 1rem; /* 16px */
    --text-lg: 1.125rem; /* 18px */
    --text-xl: 1.25rem; /* 20px */
    --text-2xl: 1.5rem; /* 24px */
    --text-3xl: 1.875rem; /* 30px */
    --text-4xl: 2.25rem; /* 36px */

    --leading-none: 1;
    --leading-tight: 1.25;
    --leading-snug: 1.375;
    --leading-normal: 1.5;
    --leading-relaxed: 1.625;
    --leading-loose: 2;
    --font-light: 300;
    --font-normal: 400;
    --font-medium: 500;
    --font-semibold: 600;
    --font-bold: 700;
    /* =========================================================================
   * LAYOUT
   * ========================================================================= */
    --sidebar-width: 280px;
    --sidebar-collapsed: 120px;
    --sidebar-compact: 240px;
    --sidebar-maxcompact: 180px;
    --header-height: 64px;
    --topbar-height: 56px;
    --control-bar-height: 72px;
    --panel-min-width: 300px;
    --panel-max-width: 400px;
    --content-max-width: 1200px;
    /* =========================================================================
   * Z-INDEX SCALE
   * ========================================================================= */
    --z-base: 0;
    --z-dropdown: 100;
    --z-sticky: 200;
    --z-fixed: 300;
    --z-modal-backdrop: 400;
    --z-modal: 500;
    --z-popover: 600;
    --z-tooltip: 700;
    --z-toast: 800;
    --z-max: 9999;
    /* =========================================================================
   * TRANSITIONS
   * ========================================================================= */
    --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);
    --duration-instant: 0ms;
    --duration-fast: 150ms;
    --duration-normal: 250ms;
    --duration-slow: 400ms;
    --duration-slower: 600ms;
    /* =========================================================================
   * COMPONENT-SPECIFIC
   * ========================================================================= */
    /* Buttons */
    --btn-height-xs: 28px;
    --btn-height-sm: 32px;
    --btn-height-md: 40px;
    --btn-height-lg: 48px;
    --btn-height-xl: 56px;
    /* Inputs */
    --input-height-sm: 32px;
    --input-height-md: 40px;
    --input-height-lg: 48px;
    /* Cards */
    --card-padding: var(--space-4);
    --card-radius: var(--border-radius-lg);
    /* Modal */
    --modal-width-sm: 400px;
    --modal-width-md: 560px;
    --modal-width-lg: 720px;
    --modal-width-xl: 900px;
}

/* =========================================================================
 * DARK MODE
 * ========================================================================= */
[data-theme="dark"],
.dark {
    --brand-primary: #60a5fa;
    --brand-primary-hover: #3b82f6;
    --brand-primary-active: #2563eb;
    --brand-primary-light: rgba(96, 165, 250, 0.15);
    --brand-primary-rgb: 96, 165, 250;
    --brand-secondary: #a78bfa;
    --brand-secondary-hover: #8b5cf6;
    --brand-secondary-light: rgba(167, 139, 250, 0.15);
    --brand-accent: #22d3ee;
    --brand-accent-hover: #06b6d4;
    --brand-accent-light: rgba(34, 211, 238, 0.15);
    --brand-secondary-rgb: 167, 139, 250;
    --brand-support: #fbbf24;
    --brand-support-hover: #f59e0b;
    --brand-support-active: #d97706;
    --brand-support-light: rgba(251, 191, 36, 0.15);
    --brand-support-rgb: 251, 191, 36;
    --color-success: #34d399;
    --color-success-hover: #10b981;
    --color-success-light: rgba(52, 211, 153, 0.15);
    --color-success-rgb: 52, 211, 153;
    --color-warning: #fbbf24;
    --color-warning-hover: #f59e0b;
    --color-warning-light: rgba(251, 191, 36, 0.15);
    --color-warning-rgb: 251, 191, 36;
    --color-danger: #f87171;
    --color-danger-hover: #ef4444;
    --color-danger-light: rgba(248, 113, 113, 0.15);
    --color-danger-rgb: 248, 113, 113;
    --color-info: #60a5fa;
    --color-info-hover: #3b82f6;
    --color-info-light: rgba(96, 165, 250, 0.15);
    --color-info-rgb: 96, 165, 250;
    --bg-app: var(--gray-900);
    --bg-sidebar: var(--gray-800);
    --bg-panel: var(--gray-800);
    --bg-card: var(--gray-800);
    --bg-highlight: var(--gray-700);
    --bg-bright: var(--gray-800);
    --bg-input: var(--gray-700);
    --bg-input-focus: var(--gray-600);
    --bg-hover: var(--gray-700);
    --bg-active: rgba(96, 165, 250, 0.2);
    --bg-disabled: var(--gray-700);
    --bg-overlay: rgba(0, 0, 0, 0.7);
    --bg-tooltip: var(--gray-700);
    --bg-codeblock: #1e1e1e;
    --text-primary: var(--gray-100);
    --text-body: var(--gray-300);
    --text-secondary: var(--gray-400);
    --text-support: var(--gray-500);
    --text-muted: var(--gray-500);
    --text-disabled: var(--gray-600);
    --text-link: var(--brand-primary);
    --text-link-hover: var(--brand-primary-hover);
    --text-codeblock: #e5e7eb;
    --border-light: var(--gray-700);
    --border-default: var(--gray-600);
    --border-dark: var(--gray-500);
    --border-focus: var(--brand-primary);
    --border-codeblock: var(--gray-700);
    --shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.2);
    --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.3);
    --shadow-md: 0 4px 6px rgba(0, 0, 0, 0.4);
    --shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.5);
    --shadow-xl: 0 20px 25px rgba(0, 0, 0, 0.5);
    --shadow-glow: 0 0 20px rgba(96, 165, 250, 0.3);
    --shadow-glow-success: 0 0 20px rgba(52, 211, 153, 0.3);
    --lang-en-color: #60a5fa;
    --lang-en-light: rgba(96, 165, 250, 0.15);
    --lang-vn-color: #f87171;
    --lang-vn-light: rgba(248, 113, 113, 0.15);
}

/* Auto dark mode based on system preference */
@media (prefers-color-scheme: dark) {
  :root {
    --brand-primary: #60a5fa;
    --brand-primary-hover: #3b82f6;
    --brand-primary-active: #2563eb;
    --brand-primary-light: rgba(96, 165, 250, 0.15);
    --brand-primary-rgb: 96, 165, 250;

    --brand-secondary: #a78bfa;
    --brand-secondary-hover: #8b5cf6;
    --brand-secondary-light: rgba(167, 139, 250, 0.15);
    --brand-support:        #fbbf24;
    --brand-support-hover:  #f59e0b;
    --brand-support-active: #d97706;
    --brand-support-light:  rgba(251, 191, 36, 0.15);
    --brand-support-rgb:    251, 191, 36;

    --brand-accent: #22d3ee;
    --brand-accent-hover: #06b6d4;
    --brand-accent-light: rgba(34, 211, 238, 0.15);

    --color-success: #34d399;
    --color-success-hover: #10b981;
    --color-success-light: rgba(52, 211, 153, 0.15);
    --color-success-rgb: 52, 211, 153;

    --color-warning: #fbbf24;
    --color-warning-hover: #f59e0b;
    --color-warning-light: rgba(251, 191, 36, 0.15);
    --color-warning-rgb: 251, 191, 36;

    --color-danger: #f87171;
    --color-danger-hover: #ef4444;
    --color-danger-light: rgba(248, 113, 113, 0.15);
    --color-danger-rgb: 248, 113, 113;

    --color-info: #60a5fa;
    --color-info-hover: #3b82f6;
    --color-info-light: rgba(96, 165, 250, 0.15);
    --color-info-rgb: 96, 165, 250;

    --bg-app: var(--gray-900);
    --bg-sidebar: var(--gray-800);
    --bg-panel: var(--gray-800);
    --bg-card: var(--gray-800);
    --bg-input: var(--gray-700);
    --bg-input-focus: var(--gray-600);
    --bg-hover: var(--gray-600);
    --bg-active: rgba(96, 165, 250, 0.2);
    --bg-disabled: var(--gray-500);
    --bg-overlay: rgba(0, 0, 0, 0.7);
    --bg-tooltip: var(--gray-700);

    --text-primary: var(--gray-100);
    --text-body: var(--gray-300);
    --text-secondary: var(--gray-400);
    --text-support: var(--gray-500);
    --text-muted: var(--gray-500);
    --text-disabled: var(--gray-600);
    --text-link: var(--brand-primary);
    --text-link-hover: var(--brand-primary-hover);

    --border-light: var(--gray-700);
    --border-default: var(--gray-600);
    --border-dark: var(--gray-500);
    --border-focus: var(--brand-primary);

    --shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.2);
    --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.3);
    --shadow-md: 0 4px 6px rgba(0, 0, 0, 0.4);
    --shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.5);
    --shadow-xl: 0 20px 25px rgba(0, 0, 0, 0.5);
    --shadow-glow: 0 0 20px rgba(96, 165, 250, 0.3);
    --shadow-glow-success: 0 0 20px rgba(52, 211, 153, 0.3);

    --lang-en-color: #60a5fa;
    --lang-en-light: rgba(96, 165, 250, 0.15);
    --lang-vn-color: #f87171;
    --lang-vn-light: rgba(248, 113, 113, 0.15);
  }
}

/* =========================================================================
 * LANGUAGE-SPECIFIC COLORS (Bilingual Support)
 * ========================================================================= */
:root {
  --lang-en-color: #2563eb;
  --lang-en-light: #dbeafe;
  --lang-vn-color: #dc2626;
  --lang-vn-light: #fee2e2;
}
