/**
 * Design Tokens - PPL Questions v2
 *
 * Central source of truth for colors, spacing, shadows, and other design values.
 * All components should reference these variables for consistency.
 *
 * Usage: var(--color-primary), var(--spacing-md), etc.
 */

:root {
    /* =========================================================================
       COLORS - Primary Brand
       ========================================================================= */
    --color-primary: #368BC1;
    --color-primary-hover: #2c6a96;
    --color-primary-dark: #2a6d96;
    --color-primary-light: #e8f4fc;
    --color-primary-rgb: 54, 139, 193; /* For rgba() usage */

    /* =========================================================================
       COLORS - Status/Semantic
       ========================================================================= */
    /* Success - Green */
    --color-success: #28a745;
    --color-success-hover: #218838;
    --color-success-light: #d4edda;
    --color-success-dark: #155724;
    --color-success-rgb: 40, 167, 69;

    /* Danger - Red */
    --color-danger: #dc3545;
    --color-danger-hover: #c82333;
    --color-danger-light: #f8d7da;
    --color-danger-dark: #721c24;
    --color-danger-rgb: 220, 53, 69;

    /* Warning - Yellow/Orange */
    --color-warning: #ffc107;
    --color-warning-hover: #e0a800;
    --color-warning-light: #fff3cd;
    --color-warning-dark: #856404;
    --color-warning-rgb: 255, 193, 7;

    /* Info - Cyan/Blue */
    --color-info: #17a2b8;
    --color-info-hover: #138496;
    --color-info-light: #d1ecf1;
    --color-info-dark: #0c5460;
    --color-info-rgb: 23, 162, 184;

    /* =========================================================================
       COLORS - Neutral/Gray Scale
       ========================================================================= */
    --color-white: #ffffff;
    --color-black: #000000;

    --color-gray-50: #f8f9fa;   /* Lightest - backgrounds */
    --color-gray-100: #f1f3f5;
    --color-gray-200: #e9ecef;  /* Borders, dividers */
    --color-gray-300: #dee2e6;  /* Input borders */
    --color-gray-400: #ced4da;
    --color-gray-500: #adb5bd;  /* Disabled text */
    --color-gray-600: #6c757d;  /* Secondary text */
    --color-gray-700: #495057;  /* Body text */
    --color-gray-800: #343a40;
    --color-gray-900: #212529;  /* Headings, primary text */

    /* =========================================================================
       COLORS - Background & Surface
       ========================================================================= */
    --color-bg-page: #f5f7fa;
    --color-bg-card: var(--color-white);
    --color-bg-input: var(--color-white);
    --color-bg-hover: var(--color-gray-50);
    --color-bg-selected: var(--color-primary-light);

    /* =========================================================================
       COLORS - Text
       ========================================================================= */
    --color-text-primary: var(--color-gray-900);
    --color-text-secondary: var(--color-gray-600);
    --color-text-muted: var(--color-gray-500);
    --color-text-inverse: var(--color-white);
    --color-text-link: var(--color-primary);

    /* =========================================================================
       COLORS - Borders
       ========================================================================= */
    --color-border: var(--color-gray-300);
    --color-border-light: var(--color-gray-200);
    --color-border-focus: var(--color-primary);

    /* =========================================================================
       SPACING SCALE
       Based on 4px (0.25rem) increments
       ========================================================================= */
    --spacing-0: 0;
    --spacing-1: 0.25rem;   /* 4px */
    --spacing-2: 0.5rem;    /* 8px */
    --spacing-3: 0.75rem;   /* 12px */
    --spacing-4: 1rem;      /* 16px */
    --spacing-5: 1.25rem;   /* 20px */
    --spacing-6: 1.5rem;    /* 24px */
    --spacing-8: 2rem;      /* 32px */
    --spacing-10: 2.5rem;   /* 40px */
    --spacing-12: 3rem;     /* 48px */
    --spacing-16: 4rem;     /* 64px */

    /* Semantic spacing aliases */
    --spacing-xs: var(--spacing-1);   /* 4px */
    --spacing-sm: var(--spacing-2);   /* 8px */
    --spacing-md: var(--spacing-4);   /* 16px */
    --spacing-lg: var(--spacing-6);   /* 24px */
    --spacing-xl: var(--spacing-8);   /* 32px */
    --spacing-2xl: var(--spacing-12); /* 48px */

    /* =========================================================================
       BORDER RADIUS
       ========================================================================= */
    --radius-none: 0;
    --radius-sm: 4px;
    --radius-md: 6px;
    --radius-lg: 8px;
    --radius-xl: 12px;
    --radius-2xl: 16px;
    --radius-full: 9999px;  /* Pill shape */
    --radius-circle: 50%;

    /* =========================================================================
       SHADOWS
       ========================================================================= */
    --shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.05);
    --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.1);
    --shadow-md: 0 2px 8px rgba(0, 0, 0, 0.08);
    --shadow-lg: 0 4px 12px rgba(0, 0, 0, 0.1);
    --shadow-xl: 0 10px 40px rgba(0, 0, 0, 0.15);
    --shadow-2xl: 0 20px 60px rgba(0, 0, 0, 0.3);

    /* Colored shadows for buttons */
    --shadow-primary: 0 4px 12px rgba(var(--color-primary-rgb), 0.3);
    --shadow-primary-hover: 0 6px 16px rgba(var(--color-primary-rgb), 0.4);
    --shadow-success: 0 4px 12px rgba(var(--color-success-rgb), 0.3);
    --shadow-danger: 0 4px 12px rgba(var(--color-danger-rgb), 0.3);

    /* =========================================================================
       Z-INDEX SCALE
       Organized layers to prevent conflicts
       Note: .top header uses z-index: 10000, so modals must be higher
       ========================================================================= */
    --z-below: -1;
    --z-base: 0;
    --z-dropdown: 100;
    --z-sticky: 500;
    --z-fixed: 1000;
    --z-header: 10000;
    --z-sidebar: 1100;
    --z-overlay: 10500;
    --z-modal-backdrop: 11000;
    --z-modal: 11500;
    --z-toast: 12000;
    --z-tooltip: 12500;

    /* =========================================================================
       TRANSITIONS
       ========================================================================= */
    --transition-fast: 150ms ease;
    --transition-normal: 300ms ease;
    --transition-slow: 500ms ease;
    --transition-bounce: 300ms cubic-bezier(0.34, 1.56, 0.64, 1);

    /* =========================================================================
       TYPOGRAPHY
       ========================================================================= */
    --font-family-base: 'Public Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
    --font-family-mono: 'Courier New', Consolas, monospace;

    /* Font sizes */
    --font-size-xs: 0.75rem;    /* 12px */
    --font-size-sm: 0.875rem;   /* 14px */
    --font-size-base: 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 weights */
    --font-weight-normal: 400;
    --font-weight-medium: 500;
    --font-weight-semibold: 600;
    --font-weight-bold: 700;

    /* Line heights */
    --line-height-tight: 1.25;
    --line-height-normal: 1.5;
    --line-height-relaxed: 1.75;

    /* =========================================================================
       BREAKPOINTS (for reference - use in media queries)
       ========================================================================= */
    /*
     * --bp-xs: 0;        Mobile first
     * --bp-sm: 480px;    Small phones
     * --bp-md: 768px;    Tablets / Large phones
     * --bp-lg: 1024px;   Laptops / Tablets landscape
     * --bp-xl: 1280px;   Desktops
     * --bp-2xl: 1536px;  Large desktops
     */

    /* =========================================================================
       COMPONENT-SPECIFIC TOKENS
       ========================================================================= */

    /* Modal */
    --modal-max-width-sm: 400px;
    --modal-max-width-md: 500px;
    --modal-max-width-lg: 700px;
    --modal-max-width-xl: 900px;
    --modal-backdrop-color: rgba(0, 0, 0, 0.6);
    --modal-backdrop-blur: 4px;

    /* Buttons */
    --btn-padding-y: 0.75rem;
    --btn-padding-x: 1.5rem;
    --btn-min-height: 44px;  /* Touch target */
    --btn-font-size: 1rem;
    --btn-font-weight: 600;
    --btn-border-radius: var(--radius-md);

    /* Cards */
    --card-padding: var(--spacing-lg);
    --card-border-radius: var(--radius-lg);
    --card-border-color: var(--color-border-light);
    --card-shadow: var(--shadow-sm);
    --card-shadow-hover: var(--shadow-lg);

    /* Forms */
    --input-padding-y: 0.75rem;
    --input-padding-x: 1rem;
    --input-border-radius: var(--radius-md);
    --input-border-color: var(--color-border);
    --input-focus-ring: 0 0 0 3px rgba(var(--color-primary-rgb), 0.15);

    /* Tables */
    --table-cell-padding: var(--spacing-4);
    --table-border-color: var(--color-border-light);
    --table-hover-bg: var(--color-gray-50);
}

/* =========================================================================
   DARK MODE
   Applied via .dark-mode class on <html> element
   ========================================================================= */

html.dark-mode {
    /* =========================================================================
       COLORS - Neutral/Gray Scale (Inverted for dark mode)
       ========================================================================= */
    --color-white: #1a1d23;
    --color-black: #ffffff;

    --color-gray-50: #22262e;   /* Darkest - card backgrounds */
    --color-gray-100: #2a2f38;
    --color-gray-200: #363c47;  /* Borders, dividers */
    --color-gray-300: #454d5a;  /* Input borders */
    --color-gray-400: #5c6370;
    --color-gray-500: #7a8290;  /* Disabled text */
    --color-gray-600: #9ca3af;  /* Secondary text */
    --color-gray-700: #c9cdd4;  /* Body text */
    --color-gray-800: #e4e6eb;
    --color-gray-900: #f3f4f6;  /* Headings, primary text */

    /* =========================================================================
       COLORS - Background & Surface
       ========================================================================= */
    --color-bg-page: #13161b;
    --color-bg-card: #1a1d23;
    --color-bg-input: #22262e;
    --color-bg-hover: #2a2f38;
    --color-bg-selected: rgba(54, 139, 193, 0.2);

    /* =========================================================================
       COLORS - Text
       ========================================================================= */
    --color-text-primary: #f3f4f6;
    --color-text-secondary: #9ca3af;
    --color-text-muted: #7a8290;
    --color-text-inverse: #1a1d23;
    --color-text-link: #5aa8d4;

    /* =========================================================================
       COLORS - Borders
       ========================================================================= */
    --color-border: #363c47;
    --color-border-light: #2a2f38;
    --color-border-focus: #5aa8d4;

    /* =========================================================================
       COLORS - Primary Brand (slightly adjusted for dark mode visibility)
       ========================================================================= */
    --color-primary: #4a9ed4;
    --color-primary-hover: #5aa8d4;
    --color-primary-dark: #368BC1;
    --color-primary-light: rgba(74, 158, 212, 0.15);

    /* =========================================================================
       COLORS - Status/Semantic (brighter for dark mode)
       ========================================================================= */
    /* Success - Green */
    --color-success: #4ade80;
    --color-success-hover: #22c55e;
    --color-success-light: rgba(74, 222, 128, 0.15);
    --color-success-dark: #166534;

    /* Danger - Red */
    --color-danger: #f87171;
    --color-danger-hover: #ef4444;
    --color-danger-light: rgba(248, 113, 113, 0.15);
    --color-danger-dark: #991b1b;

    /* Warning - Yellow/Orange */
    --color-warning: #fbbf24;
    --color-warning-hover: #f59e0b;
    --color-warning-light: rgba(251, 191, 36, 0.15);
    --color-warning-dark: #92400e;

    /* Info - Cyan/Blue */
    --color-info: #38bdf8;
    --color-info-hover: #0ea5e9;
    --color-info-light: rgba(56, 189, 248, 0.15);
    --color-info-dark: #0369a1;

    /* =========================================================================
       SHADOWS (darker, more subtle for dark mode)
       ========================================================================= */
    --shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.3);
    --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.4);
    --shadow-md: 0 2px 8px rgba(0, 0, 0, 0.4);
    --shadow-lg: 0 4px 12px rgba(0, 0, 0, 0.5);
    --shadow-xl: 0 10px 40px rgba(0, 0, 0, 0.6);
    --shadow-2xl: 0 20px 60px rgba(0, 0, 0, 0.7);

    /* Modal backdrop - darker */
    --modal-backdrop-color: rgba(0, 0, 0, 0.8);

    /* Card styling */
    --card-border-color: var(--color-border);
    --card-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
    --card-shadow-hover: 0 4px 12px rgba(0, 0, 0, 0.4);

    /* Table hover */
    --table-hover-bg: var(--color-gray-100);
}

/* Auto dark mode - follows system preference when theme is set to 'auto' */
@media (prefers-color-scheme: dark) {
    html.dark-mode-auto {
        /* =========================================================================
           COLORS - Neutral/Gray Scale (Inverted for dark mode)
           ========================================================================= */
        --color-white: #1a1d23;
        --color-black: #ffffff;

        --color-gray-50: #22262e;
        --color-gray-100: #2a2f38;
        --color-gray-200: #363c47;
        --color-gray-300: #454d5a;
        --color-gray-400: #5c6370;
        --color-gray-500: #7a8290;
        --color-gray-600: #9ca3af;
        --color-gray-700: #c9cdd4;
        --color-gray-800: #e4e6eb;
        --color-gray-900: #f3f4f6;

        /* =========================================================================
           COLORS - Background & Surface
           ========================================================================= */
        --color-bg-page: #13161b;
        --color-bg-card: #1a1d23;
        --color-bg-input: #22262e;
        --color-bg-hover: #2a2f38;
        --color-bg-selected: rgba(54, 139, 193, 0.2);

        /* =========================================================================
           COLORS - Text
           ========================================================================= */
        --color-text-primary: #f3f4f6;
        --color-text-secondary: #9ca3af;
        --color-text-muted: #7a8290;
        --color-text-inverse: #1a1d23;
        --color-text-link: #5aa8d4;

        /* =========================================================================
           COLORS - Borders
           ========================================================================= */
        --color-border: #363c47;
        --color-border-light: #2a2f38;
        --color-border-focus: #5aa8d4;

        /* =========================================================================
           COLORS - Primary Brand
           ========================================================================= */
        --color-primary: #4a9ed4;
        --color-primary-hover: #5aa8d4;
        --color-primary-dark: #368BC1;
        --color-primary-light: rgba(74, 158, 212, 0.15);

        /* =========================================================================
           COLORS - Status/Semantic
           ========================================================================= */
        --color-success: #4ade80;
        --color-success-hover: #22c55e;
        --color-success-light: rgba(74, 222, 128, 0.15);
        --color-success-dark: #166534;

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

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

        --color-info: #38bdf8;
        --color-info-hover: #0ea5e9;
        --color-info-light: rgba(56, 189, 248, 0.15);
        --color-info-dark: #0369a1;

        /* =========================================================================
           SHADOWS
           ========================================================================= */
        --shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.3);
        --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.4);
        --shadow-md: 0 2px 8px rgba(0, 0, 0, 0.4);
        --shadow-lg: 0 4px 12px rgba(0, 0, 0, 0.5);
        --shadow-xl: 0 10px 40px rgba(0, 0, 0, 0.6);
        --shadow-2xl: 0 20px 60px rgba(0, 0, 0, 0.7);

        --modal-backdrop-color: rgba(0, 0, 0, 0.8);
        --card-border-color: var(--color-border);
        --card-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
        --card-shadow-hover: 0 4px 12px rgba(0, 0, 0, 0.4);
        --table-hover-bg: var(--color-gray-100);
    }
}
