/**
 * AURAL UI - Main Entry Point
 *
 * Import this file to get the complete design system.
 * For custom builds, import only what you need from individual files.
 *
 * Build: postcss src/aural-ui.css -o dist/aural-ui.css
 */
 *
 * BROWSER SUPPORT & FALLBACKS
 * ============================
 * This design system includes fallbacks for modern CSS features to ensure
 * compatibility with older browsers:
 *
 * 1. color-mix() - Chrome 111+, Safari 16.2+, Firefox 113+
 *    Fallback: Static rgba() values for alpha transparency
 *    Usage: All --primary-alpha-* and hover/active color variants
 *
 * 2. backdrop-filter - Chrome 76+, Safari 9+, Firefox 103+
 *    Fallback: More opaque backgrounds wrapped in @supports
 *    Usage: Cards, modals, toasts, and glass-morphism effects
 *
 * 3. aspect-ratio - Chrome 88+, Safari 15+, Firefox 89+
 *    Fallback: padding-bottom technique with pseudo-elements
 *    Usage: Carousels, image containers, and responsive media
 *
 * Target Support: Modern browsers + graceful degradation for older versions
 */

/* ========================================
   ALL IMPORTS MUST BE FIRST
   ======================================== */

/* Core Tokens (Primitives) */

/**
 * AURAL UI - Core Color Tokens
 *
 * These are primitive color values that should NEVER change.
 * Semantic tokens (in tokens/semantic/) map to these values.
 *
 * Scale: 50 (lightest) → 950 (darkest)
 */

:root {
    /* ========================================
       Neutral Scale (Grays)
       ======================================== */
    --neutral-50: #fafafa;
    --neutral-100: #f5f5f5;
    --neutral-200: #e5e5e5;
    --neutral-300: #d4d4d4;
    --neutral-400: #a3a3a3;
    --neutral-500: #737373;
    --neutral-600: #525252;
    --neutral-700: #404040;
    --neutral-800: #262626;
    --neutral-900: #171717;
    --neutral-950: #0a0a0a;

    /* ========================================
       Primary Scale (Teal/Green)
       ======================================== */
    --primary-50: #edfdf7;
    --primary-100: #d3fae8;
    --primary-200: #aaf4d5;
    --primary-300: #71e9bb;
    --primary-400: #5ebd8f;  /* Main brand color - vibrant green */
    --primary-500: #4da77a;
    --primary-600: #3d8a64;
    --primary-700: #326d51;
    --primary-800: #2a5842;
    --primary-900: #244837;
    --primary-950: #11281f;

    /* ========================================
       Secondary Scale (Cyan/Blue)
       ======================================== */
    --secondary-50: #ecfeff;
    --secondary-100: #cffafe;
    --secondary-200: #a5f3fc;
    --secondary-300: #67e8f9;
    --secondary-400: #22d3ee;
    --secondary-500: #06b6d4;  /* Secondary brand */
    --secondary-600: #0891b2;
    --secondary-700: #0e7490;
    --secondary-800: #155e75;
    --secondary-900: #164e63;
    --secondary-950: #083344;

    /* ========================================
       Success Scale (Green)
       ======================================== */
    --success-50: #f0fdf4;
    --success-100: #dcfce7;
    --success-200: #bbf7d0;
    --success-300: #86efac;
    --success-400: #4ade80;
    --success-500: #22c55e;  /* Success indicator */
    --success-600: #16a34a;
    --success-700: #15803d;
    --success-800: #166534;
    --success-900: #14532d;
    --success-950: #052e16;

    /* ========================================
       Warning Scale (Yellow/Orange)
       ======================================== */
    --warning-50: #fffbeb;
    --warning-100: #fef3c7;
    --warning-200: #fde68a;
    --warning-300: #fcd34d;
    --warning-400: #fbbf24;
    --warning-500: #f59e0b;  /* Warning indicator */
    --warning-600: #d97706;
    --warning-700: #b45309;
    --warning-800: #92400e;
    --warning-900: #78350f;
    --warning-950: #451a03;

    /* ========================================
       Error/Danger Scale (Red)
       ======================================== */
    --error-50: #fef2f2;
    --error-100: #fee2e2;
    --error-200: #fecaca;
    --error-300: #fca5a5;
    --error-400: #f87171;
    --error-500: #ef4444;  /* Error indicator */
    --error-600: #dc2626;
    --error-700: #b91c1c;
    --error-800: #991b1b;
    --error-900: #7f1d1d;
    --error-950: #450a0a;

    /* ========================================
       Info Scale (Blue)
       ======================================== */
    --info-50: #eff6ff;
    --info-100: #dbeafe;
    --info-200: #bfdbfe;
    --info-300: #93c5fd;
    --info-400: #60a5fa;
    --info-500: #3b82f6;  /* Info indicator */
    --info-600: #2563eb;
    --info-700: #1d4ed8;
    --info-800: #1e40af;
    --info-900: #1e3a8a;
    --info-950: #172554;

    /* ========================================
       Extended Colors (for item types, badges, etc.)
       ======================================== */

    /* Purple */
    --purple-50: #faf5ff;
    --purple-100: #f3e8ff;
    --purple-200: #e9d5ff;
    --purple-300: #d8b4fe;
    --purple-400: #c084fc;
    --purple-500: #a855f7;
    --purple-600: #9333ea;
    --purple-700: #7e22ce;
    --purple-800: #6b21a8;
    --purple-900: #581c87;
    --purple-950: #3b0764;

    /* Pink */
    --pink-50: #fdf2f8;
    --pink-100: #fce7f3;
    --pink-200: #fbcfe8;
    --pink-300: #f9a8d4;
    --pink-400: #f472b6;
    --pink-500: #ec4899;
    --pink-600: #db2777;
    --pink-700: #be185d;
    --pink-800: #9d174d;
    --pink-900: #831843;
    --pink-950: #500724;

    /* Amber */
    --amber-50: #fffbeb;
    --amber-100: #fef3c7;
    --amber-200: #fde68a;
    --amber-300: #fcd34d;
    --amber-400: #fbbf24;
    --amber-500: #f59e0b;
    --amber-600: #d97706;
    --amber-700: #b45309;
    --amber-800: #92400e;
    --amber-900: #78350f;
    --amber-950: #451a03;

    /* ========================================
       Primary Color Opacity Variants
       (For hover states, backgrounds, etc.)
       These reference --color-primary for dynamic updates
       ======================================== */

       Browser Support:
       - rgba() fallbacks: All browsers
       - color-mix(): Chrome 111+, Safari 16.2+, Firefox 113+
    /* Fallback for browsers without color-mix() support (pre-2023) */
    --primary-alpha-5: rgba(94, 189, 143, 0.05);
    --primary-alpha-8: rgba(94, 189, 143, 0.08);
    --primary-alpha-10: rgba(94, 189, 143, 0.10);
    --primary-alpha-12: rgba(94, 189, 143, 0.12);
    --primary-alpha-15: rgba(94, 189, 143, 0.15);
    --primary-alpha-20: rgba(94, 189, 143, 0.20);
    --primary-alpha-30: rgba(94, 189, 143, 0.30);
    --primary-alpha-40: rgba(94, 189, 143, 0.40);
    --primary-alpha-50: rgba(94, 189, 143, 0.50);

    /* Modern color-mix() for dynamic theme support */
    --primary-alpha-5: color-mix(in srgb, var(--color-primary, var(--primary-500)) 5%, transparent);
    --primary-alpha-8: color-mix(in srgb, var(--color-primary, var(--primary-500)) 8%, transparent);
    --primary-alpha-10: color-mix(in srgb, var(--color-primary, var(--primary-500)) 10%, transparent);
    --primary-alpha-12: color-mix(in srgb, var(--color-primary, var(--primary-500)) 12%, transparent);
    --primary-alpha-15: color-mix(in srgb, var(--color-primary, var(--primary-500)) 15%, transparent);
    --primary-alpha-20: color-mix(in srgb, var(--color-primary, var(--primary-500)) 20%, transparent);
    --primary-alpha-30: color-mix(in srgb, var(--color-primary, var(--primary-500)) 30%, transparent);
    --primary-alpha-40: color-mix(in srgb, var(--color-primary, var(--primary-500)) 40%, transparent);
    --primary-alpha-50: color-mix(in srgb, var(--color-primary, var(--primary-500)) 50%, transparent);
}

/**
 * AURAL UI - Core Spacing Tokens
 *
 * Base unit: 0.25rem (4px)
 * Scale follows 4px increments for consistency
 */

:root {
    /* ========================================
       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-7: 1.75rem;   /* 28px */
    --space-8: 2rem;      /* 32px */
    --space-10: 2.5rem;   /* 40px */
    --space-12: 3rem;     /* 48px */
    --space-14: 3.5rem;   /* 56px */
    --space-16: 4rem;     /* 64px */
    --space-20: 5rem;     /* 80px */
    --space-24: 6rem;     /* 96px */
    --space-28: 7rem;     /* 112px */
    --space-32: 8rem;     /* 128px */
    --space-36: 9rem;     /* 144px */
    --space-40: 10rem;    /* 160px */
    --space-44: 11rem;    /* 176px */
    --space-48: 12rem;    /* 192px */
    --space-52: 13rem;    /* 208px */
    --space-56: 14rem;    /* 224px */
    --space-60: 15rem;    /* 240px */
    --space-64: 16rem;    /* 256px */
    --space-72: 18rem;    /* 288px */
    --space-80: 20rem;    /* 320px */
    --space-96: 24rem;    /* 384px */
}

/**
 * AURAL UI - Core Typography Tokens
 *
 * Font families, sizes, weights, and line heights
 */

:root {
    /* ========================================
       Font Families
       ======================================== */
    --font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
    --font-serif: Georgia, Cambria, "Times New Roman", Times, serif;
    --font-mono: "SF Mono", Monaco, "Cascadia Code", "Roboto Mono", Consolas, "Courier New", monospace;

    /* ========================================
       Font Sizes
       ======================================== */
    --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 */
    --text-5xl: 3rem;       /* 48px */
    --text-6xl: 3.75rem;    /* 60px */
    --text-7xl: 4.5rem;     /* 72px */
    --text-8xl: 6rem;       /* 96px */
    --text-9xl: 8rem;       /* 128px */

    /* ========================================
       Font Weights
       ======================================== */
    --font-thin: 100;
    --font-extralight: 200;
    --font-light: 300;
    --font-normal: 400;
    --font-medium: 500;
    --font-semibold: 600;
    --font-bold: 700;
    --font-extrabold: 800;
    --font-black: 900;

    /* ========================================
       Line Heights
       ======================================== */
    --leading-none: 1;
    --leading-tight: 1.25;
    --leading-snug: 1.375;
    --leading-normal: 1.5;
    --leading-relaxed: 1.625;
    --leading-loose: 2;

    /* ========================================
       Letter Spacing
       ======================================== */
    --tracking-tighter: -0.05em;
    --tracking-tight: -0.025em;
    --tracking-normal: 0;
    --tracking-wide: 0.025em;
    --tracking-wider: 0.05em;
    --tracking-widest: 0.1em;
}

/**
 * AURAL UI - Core Shadow Tokens
 *
 * Elevation levels for components
 */

:root {
    /* ========================================
       Shadows
       ======================================== */
    --shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
    --shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1);
    --shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
    --shadow-md: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);
    --shadow-lg: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1);
    --shadow-xl: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
    --shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, 0.5);
    --shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, 0.05);
    --shadow-none: 0 0 #0000;

    /* ========================================
       Colored Shadows (for accents)
       ======================================== */
    --shadow-primary: 0 4px 16px rgba(16, 185, 129, 0.2);
    --shadow-primary-lg: 0 8px 32px rgba(16, 185, 129, 0.3);
    --shadow-secondary: 0 4px 16px rgba(6, 182, 212, 0.2);
    --shadow-success: 0 4px 16px rgba(34, 197, 94, 0.2);
    --shadow-warning: 0 4px 16px rgba(245, 158, 11, 0.2);
    --shadow-error: 0 4px 16px rgba(239, 68, 68, 0.2);

    /* ========================================
       Directional Shadows
       ======================================== */
    --shadow-top: 0 -4px 6px -1px rgba(0, 0, 0, 0.1), 0 -2px 4px -2px rgba(0, 0, 0, 0.1);
    --shadow-bottom: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
    --shadow-left: -4px 0 6px -1px rgba(0, 0, 0, 0.1), -2px 0 4px -2px rgba(0, 0, 0, 0.1);
    --shadow-right: 4px 0 6px -1px rgba(0, 0, 0, 0.1), 2px 0 4px -2px rgba(0, 0, 0, 0.1);

    /* ========================================
       Base Glow Effects
       ======================================== */
    --glow-sm: 0 0 4px rgba(255, 255, 255, 0.5);
    --glow-md: 0 0 8px rgba(255, 255, 255, 0.6);
    --glow-lg: 0 0 16px rgba(255, 255, 255, 0.7);
    --glow-xl: 0 0 24px rgba(255, 255, 255, 0.8);
    --glow-2xl: 0 0 32px rgba(255, 255, 255, 0.9);

    /* ========================================
       Colored Glow Effects - Primary
       ======================================== */
    --glow-primary-sm: 0 0 4px rgba(16, 185, 129, 0.5);
    --glow-primary-md: 0 0 8px rgba(16, 185, 129, 0.6);
    --glow-primary-lg: 0 0 16px rgba(16, 185, 129, 0.7);
    --glow-primary-xl: 0 0 24px rgba(16, 185, 129, 0.8);

    /* ========================================
       Colored Glow Effects - Secondary
       ======================================== */
    --glow-secondary-sm: 0 0 4px rgba(6, 182, 212, 0.5);
    --glow-secondary-md: 0 0 8px rgba(6, 182, 212, 0.6);
    --glow-secondary-lg: 0 0 16px rgba(6, 182, 212, 0.7);
    --glow-secondary-xl: 0 0 24px rgba(6, 182, 212, 0.8);

    /* ========================================
       Colored Glow Effects - Success
       ======================================== */
    --glow-success-sm: 0 0 4px rgba(34, 197, 94, 0.5);
    --glow-success-md: 0 0 8px rgba(34, 197, 94, 0.6);
    --glow-success-lg: 0 0 16px rgba(34, 197, 94, 0.7);
    --glow-success-xl: 0 0 24px rgba(34, 197, 94, 0.8);

    /* ========================================
       Colored Glow Effects - Error
       ======================================== */
    --glow-error-sm: 0 0 4px rgba(239, 68, 68, 0.5);
    --glow-error-md: 0 0 8px rgba(239, 68, 68, 0.6);
    --glow-error-lg: 0 0 16px rgba(239, 68, 68, 0.7);
    --glow-error-xl: 0 0 24px rgba(239, 68, 68, 0.8);

    /* ========================================
       Colored Glow Effects - Warning
       ======================================== */
    --glow-warning-sm: 0 0 4px rgba(245, 158, 11, 0.5);
    --glow-warning-md: 0 0 8px rgba(245, 158, 11, 0.6);
    --glow-warning-lg: 0 0 16px rgba(245, 158, 11, 0.7);
    --glow-warning-xl: 0 0 24px rgba(245, 158, 11, 0.8);

    /* ========================================
       Colored Glow Effects - Info
       ======================================== */
    --glow-info-sm: 0 0 4px rgba(59, 130, 246, 0.5);
    --glow-info-md: 0 0 8px rgba(59, 130, 246, 0.6);
    --glow-info-lg: 0 0 16px rgba(59, 130, 246, 0.7);
    --glow-info-xl: 0 0 24px rgba(59, 130, 246, 0.8);

    /* ========================================
       Inner Glow Effects
       ======================================== */
    --glow-inner-sm: inset 0 0 8px rgba(255, 255, 255, 0.3);
    --glow-inner-md: inset 0 0 16px rgba(255, 255, 255, 0.4);
    --glow-inner-lg: inset 0 0 24px rgba(255, 255, 255, 0.5);

    /* ========================================
       Neon Glow Effects (Multi-layer Cyberpunk)
       ======================================== */
    --glow-neon-primary:
        0 0 5px rgba(16, 185, 129, 0.8),
        0 0 10px rgba(16, 185, 129, 0.6),
        0 0 20px rgba(16, 185, 129, 0.4),
        0 0 40px rgba(16, 185, 129, 0.2);

    --glow-neon-secondary:
        0 0 5px rgba(6, 182, 212, 0.8),
        0 0 10px rgba(6, 182, 212, 0.6),
        0 0 20px rgba(6, 182, 212, 0.4),
        0 0 40px rgba(6, 182, 212, 0.2);

    --glow-neon-error:
        0 0 5px rgba(239, 68, 68, 0.8),
        0 0 10px rgba(239, 68, 68, 0.6),
        0 0 20px rgba(239, 68, 68, 0.4),
        0 0 40px rgba(239, 68, 68, 0.2);

    /* ========================================
       Depth Glow Effects (Multi-layer 3D)
       ======================================== */
    --glow-depth-sm:
        0 0 4px rgba(255, 255, 255, 0.4),
        0 2px 8px rgba(0, 0, 0, 0.2);

    --glow-depth-md:
        0 0 8px rgba(255, 255, 255, 0.5),
        0 4px 16px rgba(0, 0, 0, 0.3);

    --glow-depth-lg:
        0 0 16px rgba(255, 255, 255, 0.6),
        0 8px 24px rgba(0, 0, 0, 0.4);
}

/**
 * AURAL UI - Core Border Radius Tokens
 *
 * Rounding scale for components
 */

:root {
    /* ========================================
       Border Radius
       ======================================== */
    --radius-none: 0;
    --radius-sm: 0.25rem;    /* 4px */
    --radius: 0.5rem;        /* 8px */
    --radius-md: 0.75rem;    /* 12px */
    --radius-lg: 1rem;       /* 16px */
    --radius-xl: 1.25rem;    /* 20px */
    --radius-2xl: 1.5rem;    /* 24px */
    --radius-3xl: 2rem;      /* 32px */
    --radius-full: 9999px;
}

/**
 * AURAL UI - Core Animation Tokens
 *
 * Durations, easing functions, and transitions
 */

:root {
    /* ========================================
       Durations
       ======================================== */
    --duration-instant: 0ms;
    --duration-fast: 150ms;
    --duration-normal: 300ms;
    --duration-slow: 500ms;
    --duration-slower: 750ms;
    --duration-slowest: 1000ms;

    /* ========================================
       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-spring: cubic-bezier(0.175, 0.885, 0.32, 1.275);

    /* ========================================
       Common Transitions
       ======================================== */
    --transition-fast: var(--duration-fast) var(--ease-in-out);
    --transition-normal: var(--duration-normal) var(--ease-in-out);
    --transition-slow: var(--duration-slow) var(--ease-in-out);
    --transition-all-fast: all var(--duration-fast) var(--ease-in-out);
    --transition-all-normal: all var(--duration-normal) var(--ease-in-out);
    --transition-colors: color var(--duration-fast) var(--ease-in-out),
                         background-color var(--duration-fast) var(--ease-in-out),
                         border-color var(--duration-fast) var(--ease-in-out);
    --transition-transform: transform var(--duration-fast) var(--ease-in-out);
    --transition-opacity: opacity var(--duration-normal) var(--ease-in-out);
}

/* Semantic Tokens (System Behavior) */

/**
 * AURAL UI - Semantic Color Tokens
 *
 * These map to core tokens and define the system's color behavior.
 * Themes override these tokens to change the entire color scheme.
 *
 * IMPORTANT: Never use core tokens directly in components.
 * Always use these semantic tokens.
 */

:root {
    /* ========================================
       Brand Colors (Interactive Elements)
       ======================================== */
    --color-primary: var(--primary-400);
    /* Fallback for hover/active states */
    --color-primary-hover: #4da77a;  /* Approximation: 85% primary + 15% black */
    --color-primary-active: #3d8a64;  /* Approximation: 70% primary + 30% black */
    /* Modern color-mix() for precise hover/active states */
    --color-primary-hover: color-mix(in srgb, var(--color-primary) 85%, black);
    --color-primary-active: color-mix(in srgb, var(--color-primary) 70%, black);
    --color-primary-muted: var(--primary-100);

    --color-secondary: var(--secondary-500);
    --color-secondary-hover: var(--secondary-600);
    --color-secondary-active: var(--secondary-700);
    --color-secondary-muted: var(--secondary-100);

    /* ========================================
       State Colors (Feedback)
       ======================================== */
    --color-success: var(--success-500);
    --color-success-hover: var(--success-600);
    --color-success-muted: var(--success-100);

    --color-warning: var(--warning-500);
    --color-warning-hover: var(--warning-600);
    --color-warning-muted: var(--warning-100);

    --color-error: var(--error-500);
    --color-error-hover: var(--error-600);
    --color-error-muted: var(--error-100);

    --color-info: var(--info-500);
    --color-info-hover: var(--info-600);
    --color-info-muted: var(--info-100);

    /* ========================================
       Background Colors
       ======================================== */
    --color-bg-primary: var(--neutral-950);
    --color-bg-secondary: var(--neutral-900);
    --color-bg-tertiary: var(--neutral-800);
    --color-bg-elevated: var(--neutral-800);
    --color-bg-overlay: rgba(0, 0, 0, 0.85);
    --color-bg-hover: var(--primary-alpha-10);
    --color-bg-active: var(--primary-alpha-15);
    --color-bg-inverse: var(--neutral-50);

    /* Glass/frosted backgrounds */
    --color-bg-glass: rgba(10, 10, 18, 0.7);
    --color-bg-glass-light: rgba(255, 255, 255, 0.05);

    /* ========================================
       Text Colors
       ======================================== */
    --color-text-primary: var(--neutral-50);
    --color-text-secondary: var(--neutral-400);
    --color-text-tertiary: var(--neutral-500);
    --color-text-muted: var(--neutral-600);
    --color-text-disabled: var(--neutral-700);
    --color-text-inverse: var(--neutral-900);

    /* On colored backgrounds */
    --color-text-on-primary: white;
    --color-text-on-success: white;
    --color-text-on-warning: var(--neutral-950);
    --color-text-on-error: white;
    --color-text-on-info: white;

    /* ========================================
       Border Colors
       ======================================== */
    --color-border-subtle: rgba(255, 255, 255, 0.08);
    --color-border-medium: rgba(255, 255, 255, 0.12);
    --color-border-strong: rgba(255, 255, 255, 0.16);
    --color-border-inverse: var(--neutral-700);

    /* State borders */
    --color-border-focus: var(--color-primary);
    --color-border-success: var(--color-success);
    --color-border-warning: var(--color-warning);
    --color-border-error: var(--color-error);

    /* ========================================
       Component-Specific Colors
       ======================================== */

    /* Buttons */
    --color-button-primary-bg: var(--color-primary);
    --color-button-primary-hover: var(--color-primary-hover);
    --color-button-primary-text: white;

    --color-button-secondary-bg: rgba(255, 255, 255, 0.05);
    --color-button-secondary-hover: var(--primary-alpha-12);
    --color-button-secondary-text: var(--color-text-primary);
    --color-button-secondary-border: var(--color-border-subtle);

    --color-button-danger-bg: var(--color-error);
    --color-button-danger-hover: var(--color-error-hover);
    --color-button-danger-text: white;

    --color-button-ghost-bg: transparent;
    --color-button-ghost-hover: var(--primary-alpha-8);
    --color-button-ghost-text: var(--color-text-secondary);

    /* Inputs */
    --color-input-bg: rgba(255, 255, 255, 0.03);
    --color-input-border: var(--color-border-subtle);
    --color-input-border-hover: var(--primary-alpha-30);
    --color-input-border-focus: var(--color-primary);
    --color-input-text: var(--color-text-primary);
    --color-input-placeholder: var(--color-text-muted);
    --color-input-disabled-bg: rgba(255, 255, 255, 0.01);

    /* Cards */
    --color-card-bg: var(--color-bg-secondary);
    --color-card-border: var(--color-border-subtle);
    --color-card-hover-border: var(--primary-alpha-30);

    /* Badges */
    --color-badge-primary-bg: rgba(16, 185, 129, 0.15);
    --color-badge-primary-text: var(--primary-400);
    --color-badge-success-bg: rgba(34, 197, 94, 0.15);
    --color-badge-success-text: var(--success-400);
    --color-badge-warning-bg: rgba(245, 158, 11, 0.15);
    --color-badge-warning-text: var(--warning-400);
    --color-badge-error-bg: rgba(239, 68, 68, 0.15);
    --color-badge-error-text: var(--error-400);
    --color-badge-info-bg: rgba(59, 130, 246, 0.15);
    --color-badge-info-text: var(--info-400);

    /* Toast */
    --color-toast-bg: var(--color-bg-elevated);
    --color-toast-border: var(--color-border-medium);
    --color-toast-success-border: var(--color-success);
    --color-toast-warning-border: var(--color-warning);
    --color-toast-error-border: var(--color-error);
    --color-toast-info-border: var(--color-info);

    /* Modal */
    --color-modal-bg: var(--color-bg-primary);
    --color-modal-overlay: var(--color-bg-overlay);
    --color-modal-border: var(--color-border-subtle);

    /* Skeleton */
    --color-skeleton-from: rgba(255, 255, 255, 0.03);
    --color-skeleton-via: rgba(255, 255, 255, 0.06);
    --color-skeleton-to: rgba(255, 255, 255, 0.03);

    /* Checkbox */
    --color-checkbox-bg: rgba(255, 255, 255, 0.03);
    --color-checkbox-border: var(--color-border-subtle);
    --color-checkbox-border-hover: var(--primary-alpha-40);
    --color-checkbox-checked-bg: var(--color-primary);
    --color-checkbox-checked-border: var(--color-primary);
    --color-checkbox-checkmark: white;
    --color-checkbox-indeterminate-bg: var(--color-primary);

    /* Radio */
    --color-radio-bg: rgba(255, 255, 255, 0.03);
    --color-radio-border: var(--color-border-subtle);
    --color-radio-border-hover: var(--primary-alpha-40);
    --color-radio-checked-bg: var(--color-primary);
    --color-radio-checked-border: var(--color-primary);
    --color-radio-dot: white;

    /* Toggle */
    --color-toggle-track-off: var(--color-bg-tertiary);
    --color-toggle-track-on: var(--color-primary);
    --color-toggle-track-hover: var(--primary-alpha-20);
    --color-toggle-thumb: white;
    --color-toggle-thumb-shadow: rgba(0, 0, 0, 0.2);

    /* Select */
    --color-select-bg: rgba(255, 255, 255, 0.03);
    --color-select-border: var(--color-border-subtle);
    --color-select-border-hover: var(--primary-alpha-30);
    --color-select-border-focus: var(--color-primary);
    --color-select-text: var(--color-text-primary);
    --color-select-dropdown-bg: var(--color-bg-elevated);
    --color-select-dropdown-border: var(--color-border-medium);
    --color-select-option-hover: var(--color-bg-hover);
    --color-select-option-selected: var(--color-bg-active);
    --color-select-option-selected-text: var(--color-primary);

    /* Divider */
    --color-divider: var(--color-border-subtle);
    --color-divider-text: var(--color-text-muted);

    /* Avatar */
    --color-avatar-bg: var(--color-bg-tertiary);
    --color-avatar-text: var(--color-text-primary);
    --color-avatar-border: var(--color-border-subtle);
    --color-avatar-status-online: var(--success-500);
    --color-avatar-status-offline: var(--neutral-500);
    --color-avatar-status-busy: var(--error-500);
    --color-avatar-status-away: var(--warning-500);

    /* Progress */
    --color-progress-bg: var(--color-bg-tertiary);
    --color-progress-fill: var(--color-primary);
    --color-progress-fill-success: var(--color-success);
    --color-progress-fill-warning: var(--color-warning);
    --color-progress-fill-error: var(--color-error);
    --color-progress-fill-info: var(--color-info);
    --color-progress-text: var(--color-text-secondary);

    /* Breadcrumb */
    --color-breadcrumb-link: var(--color-text-secondary);
    --color-breadcrumb-link-hover: var(--color-text-primary);
    --color-breadcrumb-current: var(--color-text-primary);
    --color-breadcrumb-separator: var(--color-text-muted);

    /* Pagination */
    --color-pagination-bg: transparent;
    --color-pagination-border: var(--color-border-subtle);
    --color-pagination-hover-bg: var(--primary-alpha-10);
    --color-pagination-hover-border: var(--primary-alpha-30);
    --color-pagination-active-bg: var(--color-primary);
    --color-pagination-active-text: white;
    --color-pagination-active-border: var(--color-primary);
    --color-pagination-disabled-text: var(--color-text-disabled);

    /* Tabs */
    --color-tabs-border: var(--color-border-subtle);
    --color-tabs-text: var(--color-text-secondary);
    --color-tabs-text-hover: var(--color-text-primary);
    --color-tabs-active-text: var(--color-text-primary);
    --color-tabs-active-border: var(--color-primary);
    --color-tabs-active-bg: transparent;
    --color-tabs-hover-bg: var(--primary-alpha-8);
    --color-tabs-pill-bg: var(--color-bg-tertiary);
    --color-tabs-pill-active-bg: var(--color-primary);

    /* Tooltip */
    --color-tooltip-bg: var(--color-bg-elevated);
    --color-tooltip-text: var(--color-text-primary);
    --color-tooltip-border: var(--color-border-medium);

    /* Dropdown */
    --color-dropdown-bg: var(--color-bg-elevated);
    --color-dropdown-border: var(--color-border-medium);
    --color-dropdown-item-text: var(--color-text-primary);
    --color-dropdown-item-hover: var(--primary-alpha-10);
    --color-dropdown-item-active: var(--primary-alpha-15);
    --color-dropdown-divider: var(--color-border-subtle);
    --color-dropdown-header-text: var(--color-text-muted);

    /* Accordion */
    --color-accordion-bg: transparent;
    --color-accordion-border: var(--color-border-subtle);
    --color-accordion-header-bg: transparent;
    --color-accordion-header-hover: var(--primary-alpha-8);
    --color-accordion-header-text: var(--color-text-primary);
    --color-accordion-panel-bg: transparent;
    --color-accordion-panel-text: var(--color-text-secondary);
    --color-accordion-icon: var(--color-text-muted);

    /* Popover */
    --color-popover-bg: var(--color-bg-elevated);
    --color-popover-border: var(--color-border-medium);
    --color-popover-header-bg: var(--color-bg-secondary);
    --color-popover-header-text: var(--color-text-primary);
    --color-popover-body-text: var(--color-text-secondary);
    --color-popover-arrow: var(--color-popover-bg);

    /* Table */
    --color-table-bg: transparent;
    --color-table-border: var(--color-border-subtle);
    --color-table-header-bg: var(--color-bg-secondary);
    --color-table-header-text: var(--color-text-primary);
    --color-table-row-text: var(--color-text-primary);
    --color-table-row-hover: var(--primary-alpha-8);
    --color-table-row-striped: rgba(255, 255, 255, 0.02);
    --color-table-row-selected: var(--primary-alpha-10);
    --color-table-row-selected-border: var(--color-primary);
    --color-table-sort-icon: var(--color-text-muted);

    /* Slider */
    --color-slider-track-bg: var(--color-bg-tertiary);
    --color-slider-track-hover: var(--primary-alpha-15);
    --color-slider-thumb-bg: var(--color-primary);
    --color-slider-thumb-border: var(--color-bg-primary);
    --color-slider-label: var(--color-text-secondary);
    --color-slider-value: var(--color-primary);

    /* Chips */
    --color-chip-bg: var(--color-bg-secondary);
    --color-chip-text: var(--color-text-primary);
    --color-chip-remove: var(--color-text-secondary);
    --color-chip-remove-hover: var(--color-primary);
    --color-chip-input-bg: var(--color-bg-primary);
    --color-chip-input-border: var(--color-border-subtle);
    --color-chip-input-border-focus: var(--color-primary);

    /* Code Block */
    --color-code-bg: var(--color-bg-tertiary);
    --color-code-border: var(--color-border-subtle);
    --color-code-header-bg: var(--color-bg-secondary);
    --color-code-text: var(--color-text-primary);
    --color-code-language: var(--color-text-secondary);
    --color-code-line-numbers: var(--color-text-muted);
    --color-code-scrollbar-track: var(--color-bg-secondary);
    --color-code-scrollbar-thumb: var(--color-border-subtle);
    --color-code-inline-bg: var(--color-bg-tertiary);
    --color-code-inline-text: var(--color-primary);

    /* Dialog */
    --color-dialog-bg: var(--color-bg-primary);
    --color-dialog-border: var(--color-border-subtle);
    --color-dialog-backdrop: rgba(0, 0, 0, 0.5);
    --color-dialog-title: var(--color-text-primary);
    --color-dialog-message: var(--color-text-secondary);
    --color-dialog-close: var(--color-text-muted);
    --color-dialog-close-hover: var(--color-primary);
    --color-dialog-footer-border: var(--color-border-subtle);

    /* File Upload */
    --color-upload-dropzone-bg: var(--color-bg-primary);
    --color-upload-dropzone-border: var(--color-border-subtle);
    --color-upload-dropzone-hover: var(--primary-alpha-8);
    --color-upload-dropzone-active: var(--primary-alpha-15);
    --color-upload-file-bg: var(--color-bg-secondary);
    --color-upload-file-border: var(--color-border-subtle);
    --color-upload-filename: var(--color-text-primary);
    --color-upload-filesize: var(--color-text-muted);
    --color-upload-progress-bg: var(--color-bg-tertiary);
    --color-upload-progress-fill: var(--color-primary);
    --color-upload-remove: var(--color-text-muted);
    --color-upload-remove-hover: var(--color-error);

    /* Command Palette */
    --color-palette-bg: var(--color-bg-primary);
    --color-palette-border: var(--color-border-subtle);
    --color-palette-backdrop: rgba(0, 0, 0, 0.5);
    --color-palette-search-border: var(--color-border-subtle);
    --color-palette-group-label: var(--color-text-muted);
    --color-palette-item-text: var(--color-text-primary);
    --color-palette-item-hover: var(--primary-alpha-10);
    --color-palette-item-selected: var(--color-primary);
    --color-palette-item-description: var(--color-text-muted);
    --color-palette-key-bg: var(--color-bg-tertiary);
    --color-palette-key-border: var(--color-border-subtle);
    --color-palette-key-text: var(--color-text-secondary);
    --color-palette-footer-bg: var(--color-bg-secondary);
    --color-palette-footer-border: var(--color-border-subtle);
    --color-palette-footer-text: var(--color-text-muted);
}

/* Components */

/**
 * AURAL UI - Button Component
 *
 * Unified button system with variants, sizes, and states
 *
 * Usage:
 *   <button class="btn btn-primary">Primary</button>
 *   <button class="btn btn-secondary btn-sm">Small Secondary</button>
 *   <button class="btn btn-danger btn-lg" disabled>Large Disabled</button>
 */

.btn {
    /* Layout */
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--space-2);

    /* Spacing */
    padding: var(--space-3) var(--space-6);

    /* Typography */
    font-family: var(--font-sans);
    font-size: var(--text-base);
    font-weight: var(--font-medium);
    line-height: var(--leading-none);
    text-decoration: none;
    white-space: nowrap;

    /* Appearance */
    border: none;
    border-radius: var(--radius-md);
    background: transparent;
    color: var(--color-text-primary);
    cursor: pointer;

    /* Transitions */
    transition: var(--transition-all-fast);

    /* Accessibility */
    min-height: 44px;  /* iOS/Android minimum touch target */
    outline: none;
    -webkit-user-select: none;
       -moz-user-select: none;
            user-select: none;
    touch-action: manipulation;  /* Prevent double-tap zoom on mobile */
}

.btn svg {
        width: 1em;
        height: 1em;
        flex-shrink: 0;
    }

/* ========================================
   SIZES
   ======================================== */

.btn-sm {
    padding: var(--space-2) var(--space-4);
    font-size: var(--text-sm);
    min-height: 44px;  /* Mobile-friendly touch target */
}

@media (min-width: 768px) {
    .btn-sm {
        min-height: 36px;  /* Smaller on desktop */
    }
}

.btn-lg {
    padding: var(--space-4) var(--space-8);
    font-size: var(--text-lg);
    min-height: 52px;
}

/* ========================================
   VARIANTS
   ======================================== */

/* Primary */

.btn-primary {
    background: var(--color-button-primary-bg);
    color: var(--color-button-primary-text);
    box-shadow: var(--shadow-primary);
}

    @media (hover: hover) and (pointer: fine) {
        .btn-primary:hover:not(:disabled) {
        background: var(--color-button-primary-hover);
        transform: translateY(-2px);
        box-shadow: var(--shadow-primary-lg);
            }
    }

    .btn-primary:active:not(:disabled) {
        background: var(--color-button-primary-hover);
        transform: translateY(-2px);
        box-shadow: var(--shadow-primary-lg);
        }

.btn-primary:active:not(:disabled) {
        transform: translateY(0);
    }

/* Secondary */

.btn-secondary {
    background: var(--color-button-secondary-bg);
    color: var(--color-button-secondary-text);
    border: 1px solid var(--color-button-secondary-border);
}

    @media (hover: hover) and (pointer: fine) {
        .btn-secondary:hover:not(:disabled) {
        background: var(--color-button-secondary-hover);
        border-color: var(--color-border-medium);
        transform: translateY(-2px);
            }
    }

    .btn-secondary:active:not(:disabled) {
        background: var(--color-button-secondary-hover);
        border-color: var(--color-border-medium);
        transform: translateY(-2px);
        }

.btn-secondary:active:not(:disabled) {
        transform: translateY(0);
    }

/* Danger */

.btn-danger {
    background: var(--color-button-danger-bg);
    color: var(--color-button-danger-text);
    box-shadow: var(--shadow-error);
}

    @media (hover: hover) and (pointer: fine) {
        .btn-danger:hover:not(:disabled) {
        background: var(--color-button-danger-hover);
        transform: translateY(-2px);
        box-shadow: 0 4px 16px rgba(239, 68, 68, 0.3);
            }
    }

    .btn-danger:active:not(:disabled) {
        background: var(--color-button-danger-hover);
        transform: translateY(-2px);
        box-shadow: 0 4px 16px rgba(239, 68, 68, 0.3);
        }

.btn-danger:active:not(:disabled) {
        transform: translateY(0);
    }

/* Ghost */

.btn-ghost {
    background: var(--color-button-ghost-bg);
    color: var(--color-button-ghost-text);
}

    @media (hover: hover) and (pointer: fine) {
        .btn-ghost:hover:not(:disabled) {
        background: var(--color-button-ghost-hover);
        color: var(--color-text-primary);
            }
    }

    .btn-ghost:active:not(:disabled) {
        background: var(--color-button-ghost-hover);
        color: var(--color-text-primary);
        }

/* Link (text-only button) */

.btn-link {
    background: transparent;
    color: var(--color-primary);
    padding: 0;
    min-height: auto;
    text-decoration: underline;
}

    @media (hover: hover) and (pointer: fine) {
        .btn-link:hover:not(:disabled) {
        color: var(--color-primary-hover);
            }
    }

    .btn-link:active:not(:disabled) {
        color: var(--color-primary-hover);
        }

/* ========================================
   STATES
   ======================================== */

/* Disabled */

.btn:disabled {
    opacity: 0.5;
    cursor: not-allowed;
    pointer-events: none;
}

/* Loading */

.btn-loading {
    position: relative;
    color: transparent;
    pointer-events: none;
}

.btn-loading::after {
        content: '';
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        width: 16px;
        height: 16px;
        border: 2px solid currentColor;
        border-top-color: transparent;
        border-radius: 50%;
        animation: spin 0.6s linear infinite;
    }

@keyframes spin {
    to { transform: translate(-50%, -50%) rotate(360deg); }
}

/* Focus (keyboard navigation) */

.btn:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}

/* ========================================
   BUTTON GROUPS
   ======================================== */

.btn-group {
    display: inline-flex;
    gap: var(--space-2);
}

.btn-group-attached {
    display: inline-flex;
}

.btn-group-attached > .btn {
        border-radius: 0;
        margin-left: -1px;
    }

.btn-group-attached > .btn:first-child {
        border-top-left-radius: var(--radius-md);
        border-bottom-left-radius: var(--radius-md);
        margin-left: 0;
    }

.btn-group-attached > .btn:last-child {
        border-top-right-radius: var(--radius-md);
        border-bottom-right-radius: var(--radius-md);
    }

/**
 * AURAL UI - Input Component
 *
 * Text inputs with validation states and form helpers
 *
 * Usage:
 *   <input type="text" class="input" placeholder="Enter text">
 *   <input type="email" class="input error" placeholder="Invalid email">
 *   <div class="form-group">
 *     <label class="label">Email</label>
 *     <input type="email" class="input">
 *     <p class="form-helper">We'll never share your email</p>
 *   </div>
 */

/* ========================================
   INPUT FIELD
   ======================================== */

.input {
    /* Layout */
    width: 100%;
    display: block;

    /* Spacing */
    padding: var(--space-3) var(--space-4);

    /* Typography */
    font-family: var(--font-sans);
    font-size: var(--text-base);
    line-height: var(--leading-normal);
    color: var(--color-input-text);

    /* Appearance */
    background: var(--color-input-bg);
    border: 1px solid var(--color-input-border);
    border-radius: var(--radius-md);

    /* Transitions */
    transition: var(--transition-all-fast);

    /* Accessibility */
    min-height: 44px;
    outline: none;
}

.input::-moz-placeholder {
        color: var(--color-input-placeholder);
    }

.input::placeholder {
        color: var(--color-input-placeholder);
    }

/* Hover state */

    @media (hover: hover) and (pointer: fine) {
        .input:hover:not(:disabled) {
        border-color: var(--color-primary);
        background: var(--color-bg-hover);
            }
    }

    .input:active:not(:disabled) {
        border-color: var(--color-primary);
        background: var(--color-bg-hover);
        }

/* Focus state */

.input:focus {
        outline: 2px solid var(--color-primary);
        outline-offset: 2px;
        border-color: var(--color-primary);
    }

/* Disabled state */

.input:disabled {
        opacity: 0.5;
        cursor: not-allowed;
        background: var(--color-bg-tertiary);
    }

/* Read-only state */

.input:-moz-read-only {
        background: var(--color-input-disabled-bg);
        cursor: default;
    }

.input:read-only {
        background: var(--color-input-disabled-bg);
        cursor: default;
    }

/* ========================================
   NUMBER INPUT WITH CUSTOM SPINNERS
   ======================================== */

/* Hide default browser spinners */

input[type="number"]::-webkit-outer-spin-button,
input[type="number"]::-webkit-inner-spin-button {
    -webkit-appearance: none;
    appearance: none;
    margin: 0;
}

input[type="number"] {
    -moz-appearance: textfield;
    -webkit-appearance: textfield;
            appearance: textfield;
}

/* Number input with custom spinners wrapper */

.input-number {
    position: relative;
    display: inline-flex;
    width: 100%;
}

.input-number .input {
    padding-right: var(--space-10);
}

/* Spinner buttons container */

.input-number__controls {
    position: absolute;
    right: 0;
    top: 0;
    bottom: 0;
    display: flex;
    flex-direction: column;
    background: var(--color-bg-tertiary);
    border-radius: 0 var(--radius-md) var(--radius-md) 0;
    overflow: hidden;
    border-left: 1px solid var(--color-border-medium);
}

/* Individual spinner button */

.input-number__button {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    flex: 1;
    background: transparent;
    border: none;
    color: var(--color-text-secondary);
    cursor: pointer;
    transition: var(--transition-all-fast);
    padding: 0;
    -webkit-user-select: none;
       -moz-user-select: none;
            user-select: none;
    position: relative;
}

.input-number__button:hover:not(:disabled) {
    background: var(--color-bg-hover);
    color: var(--color-primary);
}

.input-number__button:active:not(:disabled) {
    background: var(--color-primary);
    color: white;
}

.input-number__button:disabled {
    opacity: 0.4;
    cursor: not-allowed;
}

.input-number__button svg {
    width: 14px;
    height: 14px;
    stroke-width: 2.5;
}

/* Divider between buttons */

.input-number__button + .input-number__button {
    border-top: 1px solid var(--color-border-medium);
}

/* Size variants */

.input-number--sm .input {
    padding-right: var(--space-8);
}

.input-number--sm .input-number__button {
    width: 24px;
}

.input-number--sm .input-number__button svg {
    width: 12px;
    height: 12px;
}

.input-number--lg .input {
    padding-right: calc(var(--space-10) + 4px);
}

.input-number--lg .input-number__button {
    width: 32px;
}

.input-number--lg .input-number__button svg {
    width: 16px;
    height: 16px;
}

/* Touch device optimizations */

@media (pointer: coarse) {
    .input-number__button {
        width: 44px;
        min-height: 24px;
    }

    .input-number .input {
        padding-right: var(--space-12);
        min-height: 48px;
    }
}

/* ========================================
   VALIDATION STATES
   ======================================== */

/* Error state */

.input.error {
    border-color: var(--color-border-error);
}

.input.error:focus {
        outline: 2px solid var(--color-border-error);
        outline-offset: 2px;
        border-color: var(--color-border-error);
    }

/* Success state */

.input.success {
    border-color: var(--color-border-success);
}

.input.success:focus {
        outline: 2px solid var(--color-border-success);
        outline-offset: 2px;
        border-color: var(--color-border-success);
    }

/* Warning state */

.input.warning {
    border-color: var(--color-border-warning);
}

.input.warning:focus {
        outline: 2px solid var(--color-border-warning);
        outline-offset: 2px;
        border-color: var(--color-border-warning);
    }

/* ========================================
   FORM GROUP (Label + Input + Helper)
   ======================================== */

.form-group {
    display: flex;
    flex-direction: column;
    gap: var(--space-2);
}

.label {
    font-size: var(--text-sm);
    font-weight: var(--font-semibold);
    color: var(--color-text-primary);
}

.form-helper {
    font-size: var(--text-xs);
    color: var(--color-text-muted);
    margin-top: 0.25rem;
}

.form-error {
    font-size: var(--text-xs);
    color: var(--color-error);
    margin-top: 0.25rem;
}

.form-success {
    font-size: var(--text-xs);
    color: var(--color-success);
    margin-top: 0.25rem;
}

/* ========================================
   TEXTAREA
   ======================================== */

textarea.input,
.textarea {
    min-height: 100px;
    resize: vertical;
}

/* ========================================
   INPUT SIZES
   ======================================== */

.input-sm {
    padding: var(--space-2) var(--space-3);
    font-size: var(--text-sm);
    min-height: 36px;
}

.input-lg {
    padding: var(--space-4) var(--space-6);
    font-size: var(--text-lg);
    min-height: 52px;
}

/* ========================================
   INPUT GROUP (With Icons)
   ======================================== */

.input-group {
    position: relative;
    display: flex;
    align-items: center;
}

.input-group .input {
    flex: 1;
}

/* Input with prefix icon */

.input-group-prefix .input {
    padding-left: var(--space-10);
}

/* Input with suffix icon */

.input-group-suffix .input {
    padding-right: var(--space-10);
}

/* Icon positioning */

.input-group-icon {
    position: absolute;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--color-text-tertiary);
    pointer-events: none;
    z-index: 1;
}

.input-group-icon svg,
.input-group-icon i {
    width: 18px;
    height: 18px;
}

.input-group-icon-left {
    left: var(--space-3);
}

.input-group-icon-right {
    right: var(--space-3);
}

/**
 * AURAL UI - Search Bar
 *
 * Search input with autocomplete suggestions, keyboard navigation,
 * and recent searches support.
 */

/* ========================================
   Search Bar Container
   ======================================== */

.aural-search-bar {
    position: relative;
    display: flex;
    width: 100%;
    max-width: 600px;
}

/* ========================================
   Search Input
   ======================================== */

.aural-search-bar__wrapper {
    position: relative;
    display: flex;
    align-items: center;
    width: 100%;
    background: var(--color-bg-secondary);
    border: 1px solid var(--color-border-medium);
    border-radius: var(--radius-md);
    transition: var(--transition-all-fast);
}

.aural-search-bar__wrapper:hover {
    border-color: var(--color-primary);
    background: var(--color-bg-hover);
}

.aural-search-bar__wrapper:focus-within {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
    border-color: var(--color-primary);
}

.aural-search-bar__icon {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0 var(--space-3);
    color: var(--color-text-secondary);
    flex-shrink: 0;
}

.aural-search-bar__icon svg {
    width: 20px;
    height: 20px;
}

.aural-search-bar__input {
    flex: 1;
    min-width: 0; /* Prevent flex overflow */
    padding: var(--space-3) var(--space-4);
    padding-left: 0;
    background: transparent;
    color: var(--color-text-primary);
    border: none;
    font-size: var(--text-base);
    font-family: inherit;
    outline: none;
}

.aural-search-bar__input::-moz-placeholder {
    color: var(--color-text-secondary);
}

.aural-search-bar__input::placeholder {
    color: var(--color-text-secondary);
}

.aural-search-bar__clear {
    display: none;
    align-items: center;
    justify-content: center;
    min-width: 44px;
    min-height: 44px;
    padding: var(--space-2);
    margin-right: var(--space-2);
    background: transparent;
    color: var(--color-text-secondary);
    border: none;
    border-radius: var(--radius-md);
    cursor: pointer;
    transition: var(--transition-all-fast);
}

.aural-search-bar__clear:hover {
    background: var(--color-bg-hover);
    color: var(--color-text-primary);
}

.aural-search-bar__clear:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}

.aural-search-bar__clear svg {
    width: 18px;
    height: 18px;
}

.aural-search-bar__wrapper:has(.aural-search-bar__input:not(:-moz-placeholder)) .aural-search-bar__clear {
    display: flex;
}

.aural-search-bar__wrapper:has(.aural-search-bar__input:not(:placeholder-shown)) .aural-search-bar__clear {
    display: flex;
}

/* ========================================
   Keyboard Shortcut Hint
   ======================================== */

.aural-search-bar__shortcut {
    display: flex;
    align-items: center;
    gap: 4px;
    padding: 0 var(--space-3);
    font-size: var(--text-xs);
    color: var(--color-text-tertiary);
    font-family: var(--font-mono);
    border-left: 1px solid var(--color-border-subtle);
    flex-shrink: 0;
}

.aural-search-bar__wrapper:focus-within .aural-search-bar__shortcut,
.aural-search-bar__wrapper:has(.aural-search-bar__input:not(:placeholder-shown)) .aural-search-bar__shortcut {
    display: none;
}

.aural-search-bar__key {
    padding: 2px 6px;
    background: var(--color-bg-tertiary);
    border: 1px solid var(--color-border-subtle);
    border-radius: var(--radius-sm);
    font-size: 0.7rem;
    line-height: 1;
}

/* ========================================
   Suggestions Dropdown
   ======================================== */

.aural-search-bar__suggestions {
    position: absolute;
    top: calc(100% + var(--space-2));
    left: 0;
    right: 0;
    z-index: 1000;
    max-height: 400px;
    overflow-y: auto;
    background: var(--color-bg-secondary);
    border: 1px solid var(--color-border-medium);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-lg);
    opacity: 0;
    visibility: hidden;
    transform: translateY(-8px);
    transition: opacity 0.2s ease, transform 0.2s ease, visibility 0.2s;
}

.aural-search-bar__suggestions--open {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
}

.aural-search-bar__suggestions::-webkit-scrollbar {
    width: 8px;
}

.aural-search-bar__suggestions::-webkit-scrollbar-track {
    background: var(--color-bg-tertiary);
    border-radius: var(--radius-sm);
}

.aural-search-bar__suggestions::-webkit-scrollbar-thumb {
    background: var(--color-border-medium);
    border-radius: var(--radius-sm);
}

.aural-search-bar__suggestions::-webkit-scrollbar-thumb:hover {
    background: var(--color-text-tertiary);
}

/* ========================================
   Suggestion Groups
   ======================================== */

.aural-search-bar__group {
    padding: var(--space-2) 0;
}

.aural-search-bar__group:not(:last-child) {
    border-bottom: 1px solid var(--color-border-subtle);
}

.aural-search-bar__group-title {
    padding: var(--space-2) var(--space-4);
    font-size: var(--text-xs);
    font-weight: var(--font-semibold);
    color: var(--color-text-tertiary);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

/* ========================================
   Suggestion Items
   ======================================== */

.aural-search-bar__item {
    display: flex;
    align-items: center;
    gap: var(--space-3);
    padding: var(--space-3) var(--space-4);
    min-height: 44px;
    background: transparent;
    color: var(--color-text-primary);
    border: none;
    text-align: left;
    cursor: pointer;
    transition: var(--transition-all-fast);
    width: 100%;
}

.aural-search-bar__item:hover {
    background: var(--color-bg-hover);
    color: var(--color-primary);
}

.aural-search-bar__item--active {
    background: var(--color-bg-hover);
    color: var(--color-primary);
}

.aural-search-bar__item:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: -2px;
}

.aural-search-bar__item-icon {
    flex-shrink: 0;
    width: 20px;
    height: 20px;
    color: var(--color-text-secondary);
}

.aural-search-bar__item:hover .aural-search-bar__item-icon,
.aural-search-bar__item--active .aural-search-bar__item-icon {
    color: var(--color-primary);
}

.aural-search-bar__item-content {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.aural-search-bar__item-title {
    font-size: var(--text-sm);
    font-weight: var(--font-medium);
    line-height: var(--leading-tight);
}

.aural-search-bar__item-description {
    font-size: var(--text-xs);
    color: var(--color-text-secondary);
    line-height: var(--leading-tight);
}

.aural-search-bar__item-meta {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    gap: var(--space-2);
    font-size: var(--text-xs);
    color: var(--color-text-tertiary);
}

.aural-search-bar__item-shortcut {
    padding: 2px 6px;
    background: var(--color-bg-tertiary);
    border: 1px solid var(--color-border-subtle);
    border-radius: var(--radius-sm);
    font-family: var(--font-mono);
    font-size: 0.7rem;
}

/* ========================================
   Empty State
   ======================================== */

.aural-search-bar__empty {
    padding: var(--space-6) var(--space-4);
    text-align: center;
    color: var(--color-text-secondary);
}

.aural-search-bar__empty-icon {
    width: 48px;
    height: 48px;
    margin: 0 auto var(--space-3);
    color: var(--color-text-tertiary);
    opacity: 0.5;
}

.aural-search-bar__empty-text {
    font-size: var(--text-sm);
}

/* ========================================
   Loading State
   ======================================== */

.aural-search-bar__loading {
    padding: var(--space-4);
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--space-3);
    color: var(--color-text-secondary);
    font-size: var(--text-sm);
}

/* ========================================
   Size Variants
   ======================================== */

.aural-search-bar--sm .aural-search-bar__input {
    padding: var(--space-2) var(--space-3);
    font-size: var(--text-sm);
}

.aural-search-bar--sm .aural-search-bar__icon svg,
.aural-search-bar--sm .aural-search-bar__clear svg {
    width: 16px;
    height: 16px;
}

.aural-search-bar--sm .aural-search-bar__item {
    padding: var(--space-2) var(--space-3);
}

.aural-search-bar--lg .aural-search-bar__input {
    padding: var(--space-4) var(--space-5);
    font-size: var(--text-lg);
}

.aural-search-bar--lg .aural-search-bar__icon svg {
    width: 24px;
    height: 24px;
}

.aural-search-bar--lg .aural-search-bar__item {
    padding: var(--space-4) var(--space-5);
}

/* ========================================
   Pill Variant
   ======================================== */

.aural-search-bar--pill .aural-search-bar__wrapper {
    border-radius: 999px;
}

.aural-search-bar--pill .aural-search-bar__suggestions {
    border-radius: var(--radius-xl);
}

/* ========================================
   Accessibility
   ======================================== */

@media (prefers-reduced-motion: reduce) {
    .aural-search-bar__suggestions {
        transition: none;
    }

    .aural-search-bar__item {
        transition: none;
    }
}

/* ========================================
   Responsive
   ======================================== */

@media (max-width: 640px) {
    .aural-search-bar {
        max-width: 100%;
    }

    .aural-search-bar__shortcut {
        display: none;
    }

    .aural-search-bar__suggestions {
        max-height: 300px;
    }

    .aural-search-bar__item-description {
        display: none;
    }
}

/**
 * AURAL UI - Card Component
 *
 * Container component with consistent padding and styling
 *
 * Usage:
 *   <div class="card">
 *     <h3>Card Title</h3>
 *     <p>Card content</p>
 *   </div>
 */

.card {
    /* Appearance */
    background: var(--color-card-bg);
    -webkit-backdrop-filter: blur(20px);
    backdrop-filter: blur(20px);
    border: 1px solid var(--color-card-border);
    border-radius: var(--radius-lg);

    /* Spacing */
    padding: var(--space-6);

    /* Transitions */
    transition: var(--transition-all-fast);
}

/* Compact variant */

.card-compact {
    padding: var(--space-4);
}

/* Hover variant */

.card-hover {
    cursor: pointer;
}

    @media (hover: hover) and (pointer: fine) {
        .card-hover:hover {
        border-color: var(--color-card-hover-border);
        transform: translateY(-2px);
        box-shadow: var(--shadow-md);
            }
    }

    .card-hover:active {
        border-color: var(--color-card-hover-border);
        transform: translateY(-2px);
        box-shadow: var(--shadow-md);
        }

.card-hover:focus-visible {
        outline: 2px solid var(--color-primary);
        outline-offset: 2px;
        border-color: var(--color-primary);
    }

.card-hover:active {
        transform: translateY(0);
    }

/* Active state */

.card-active {
    border-color: var(--color-primary);
    background: rgba(16, 185, 129, 0.05);
}

/* Bordered variant (left accent) */

.card-bordered {
    border-left-width: 3px;
}

/* Color variants for bordered cards */

.card-primary { border-left-color: var(--color-primary); }

.card-success { border-left-color: var(--color-success); }

.card-warning { border-left-color: var(--color-warning); }

.card-error { border-left-color: var(--color-error); }

.card-info { border-left-color: var(--color-info); }

/* Card Structure Components */

.card-header {
    padding: var(--space-5) var(--space-6);
    border-bottom: 1px solid var(--color-border-subtle);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-4);
    margin: calc(-1 * var(--space-6)) calc(-1 * var(--space-6)) var(--space-5);
}

.card-title {
    margin: 0;
    font-size: var(--text-lg);
    font-weight: var(--font-semibold);
    color: var(--color-text-primary);
}

.card-body {
    padding: var(--space-6);
    margin: calc(-1 * var(--space-6));
}

/* When card-body follows card-header or comes before card-footer */

.card-header + .card-body {
    margin-top: 0;
    padding-top: 0;
}

.card-body:has(+ .card-footer) {
    margin-bottom: 0;
    padding-bottom: 0;
}

.card-footer {
    padding: var(--space-5) var(--space-6);
    border-top: 1px solid var(--color-border-subtle);
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: var(--space-3);
    margin: var(--space-5) calc(-1 * var(--space-6)) calc(-1 * var(--space-6));
}

.card-image {
    margin: calc(-1 * var(--space-6)) calc(-1 * var(--space-6)) var(--space-5);
    overflow: hidden;
    border-radius: var(--radius-lg) var(--radius-lg) 0 0;
}

.card-image img {
    width: 100%;
    height: 100%;
    -o-object-fit: cover;
       object-fit: cover;
    display: block;
}

/* ========================================
   ACCESSIBILITY & MOBILE
   ======================================== */

/* Reduced motion support */

@media (prefers-reduced-motion: reduce) {
    .card-hover {
        transition: none;
    }

    .card-hover:hover,
    .card-hover:active {
        transform: none;
    }
}

/* Mobile responsive spacing */

@media (max-width: 640px) {
    .card {
        padding: var(--space-5);
    }

    .card-compact {
        padding: var(--space-3);
    }

    .card-header,
    .card-footer {
        padding: var(--space-4) var(--space-5);
        margin-left: calc(-1 * var(--space-5));
        margin-right: calc(-1 * var(--space-5));
    }

    .card-header {
        margin-top: calc(-1 * var(--space-5));
        margin-bottom: var(--space-4);
    }

    .card-footer {
        margin-top: var(--space-4);
        margin-bottom: calc(-1 * var(--space-5));
        flex-wrap: wrap;
    }

    .card-body {
        padding: var(--space-5);
        margin: calc(-1 * var(--space-5));
    }

    .card-image {
        margin: calc(-1 * var(--space-5)) calc(-1 * var(--space-5)) var(--space-4);
    }
}

/**
 * AURAL UI - Badge Component
 *
 * Small status indicators and labels
 *
 * Usage:
 *   <span class="badge badge-primary">New</span>
 *   <span class="badge badge-success">Active</span>
 */

.badge {
    /* Layout */
    display: inline-flex;
    align-items: center;
    gap: var(--space-1);

    /* Spacing */
    padding: 0.25rem var(--space-2);

    /* Typography */
    font-size: var(--text-xs);
    font-weight: var(--font-semibold);
    text-transform: uppercase;
    letter-spacing: var(--tracking-wide);
    line-height: var(--leading-none);

    /* Appearance */
    border-radius: var(--radius-full);
    white-space: nowrap;
}

/* ========================================
   VARIANTS
   ======================================== */

.badge-primary {
    background: var(--color-badge-primary-bg);
    color: var(--color-badge-primary-text);
}

.badge-success {
    background: var(--color-badge-success-bg);
    color: var(--color-badge-success-text);
}

.badge-warning {
    background: var(--color-badge-warning-bg);
    color: var(--color-badge-warning-text);
}

.badge-error {
    background: var(--color-badge-error-bg);
    color: var(--color-badge-error-text);
}

.badge-info {
    background: var(--color-badge-info-bg);
    color: var(--color-badge-info-text);
}

/* Neutral badge */

.badge-neutral {
    background: rgba(255, 255, 255, 0.1);
    color: var(--color-text-secondary);
}

/* ========================================
   SIZES
   ======================================== */

.badge-sm {
    padding: 0.125rem var(--space-1);
    font-size: 0.625rem; /* 10px */
}

.badge-lg {
    padding: 0.375rem var(--space-3);
    font-size: var(--text-sm);
}

/* ========================================
   DOT VARIANT (with indicator)
   ======================================== */

.badge-dot .dot {
        width: 6px;
        height: 6px;
        border-radius: 50%;
        background: currentColor;
    }

/**
 * AURAL UI - Toast Component
 *
 * Non-intrusive notifications
 *
 * Usage (via JavaScript):
 *   Aural.showToast('Success message', 'success');
 *   Aural.showToast('Error occurred', 'error');
 */

.toast-container {
    position: fixed;
    top: var(--space-6);
    right: var(--space-6);
    z-index: 9999;
    display: flex;
    flex-direction: column;
    gap: var(--space-3);
    pointer-events: none;
    max-width: 420px;
}

.toast {
    /* Layout */
    display: flex;
    align-items: flex-start;
    gap: var(--space-3);

    /* Spacing */
    padding: var(--space-4) var(--space-6);
    min-width: 320px;

    /* Appearance */
    background: var(--color-toast-bg);
    border: 1px solid var(--color-toast-border);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-xl);
    -webkit-backdrop-filter: blur(20px);
    backdrop-filter: blur(20px);

    /* Interactions */
    pointer-events: auto;

    /* Animation */
    animation: slideInRight var(--duration-normal) var(--ease-out);
}

/* ========================================
   VARIANTS (Left border accent)
   ======================================== */

.toast-success { border-left: 3px solid var(--color-toast-success-border); }

.toast-error { border-left: 3px solid var(--color-toast-error-border); }

.toast-warning { border-left: 3px solid var(--color-toast-warning-border); }

.toast-info { border-left: 3px solid var(--color-toast-info-border); }

/* ========================================
   TOAST PARTS
   ======================================== */

.toast-icon {
    flex-shrink: 0;
    width: 20px;
    height: 20px;
}

.toast-content {
    flex: 1;
    min-width: 0;
}

.toast-title {
    font-weight: var(--font-semibold);
    font-size: var(--text-base);
    color: var(--color-text-primary);
    margin-bottom: 0.25rem;
}

.toast-message {
    font-size: var(--text-sm);
    color: var(--color-text-secondary);
}

.toast-close {
    /* Reset button styles */
    background: transparent;
    border: none;
    padding: 0;
    cursor: pointer;

    /* Layout */
    flex-shrink: 0;
    width: 20px;
    height: 20px;
    display: flex;
    align-items: center;
    justify-content: center;

    /* Appearance */
    color: var(--color-text-muted);
    border-radius: var(--radius-sm);
    transition: var(--transition-all-fast);
}

.toast-close:hover {
        background: rgba(255, 255, 255, 0.05);
        color: var(--color-text-primary);
    }

/* ========================================
   ANIMATIONS
   ======================================== */

@keyframes slideInRight {
    from {
        transform: translateX(100%);
        opacity: 0;
    }
    to {
        transform: translateX(0);
        opacity: 1;
    }
}

@keyframes slideOutRight {
    from {
        transform: translateX(0);
        opacity: 1;
    }
    to {
        transform: translateX(100%);
        opacity: 0;
    }
}

.toast-exit {
    animation: slideOutRight var(--duration-fast) var(--ease-in) forwards;
}

/**
 * AURAL UI - Snackbar
 *
 * Brief notification messages at screen edge (alternative to toast).
 * Features: Auto-dismiss, action buttons, position variants, stacking.
 */

/* ========================================
   Snackbar Container
   ======================================== */

.aural-snackbar-container {
    position: fixed;
    z-index: 10000;
    display: flex;
    flex-direction: column;
    gap: var(--space-2);
    padding: var(--space-4);
    pointer-events: none;
}

/* ========================================
   Position Variants
   ======================================== */

.aural-snackbar-container--bottom-left {
    bottom: 0;
    left: 0;
}

.aural-snackbar-container--bottom-center {
    bottom: 0;
    left: 50%;
    transform: translateX(-50%);
}

.aural-snackbar-container--bottom-right {
    bottom: 0;
    right: 0;
}

.aural-snackbar-container--top-left {
    top: 0;
    left: 0;
}

.aural-snackbar-container--top-center {
    top: 0;
    left: 50%;
    transform: translateX(-50%);
}

.aural-snackbar-container--top-right {
    top: 0;
    right: 0;
}

/* ========================================
   Snackbar
   ======================================== */

.aural-snackbar {
    display: flex;
    align-items: center;
    gap: var(--space-3);
    min-height: 48px;
    min-width: 320px;
    max-width: 560px;
    padding: var(--space-3) var(--space-4);
    background: var(--color-bg-inverse);
    color: var(--color-text-inverse);
    border-radius: var(--radius-md);
    box-shadow: var(--shadow-xl);
    opacity: 0;
    transform: translateY(100%);
    transition: opacity 0.3s ease, transform 0.3s ease;
    pointer-events: auto;
}

.aural-snackbar--show {
    opacity: 1;
    transform: translateY(0);
}

.aural-snackbar--hide {
    opacity: 0;
    transform: translateY(100%);
}

/* Top position animations */

.aural-snackbar-container--top-left .aural-snackbar,
.aural-snackbar-container--top-center .aural-snackbar,
.aural-snackbar-container--top-right .aural-snackbar {
    transform: translateY(-100%);
}

.aural-snackbar-container--top-left .aural-snackbar--show,
.aural-snackbar-container--top-center .aural-snackbar--show,
.aural-snackbar-container--top-right .aural-snackbar--show {
    transform: translateY(0);
}

.aural-snackbar-container--top-left .aural-snackbar--hide,
.aural-snackbar-container--top-center .aural-snackbar--hide,
.aural-snackbar-container--top-right .aural-snackbar--hide {
    transform: translateY(-100%);
}

/* ========================================
   Icon
   ======================================== */

.aural-snackbar__icon {
    flex-shrink: 0;
    width: 20px;
    height: 20px;
    color: currentColor;
}

/* ========================================
   Content
   ======================================== */

.aural-snackbar__content {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.aural-snackbar__message {
    font-size: var(--text-sm);
    font-weight: var(--font-medium);
    line-height: 1.5;
    color: inherit;
}

.aural-snackbar__description {
    font-size: var(--text-xs);
    line-height: 1.4;
    color: rgba(255, 255, 255, 0.8);
}

/* ========================================
   Actions
   ======================================== */

.aural-snackbar__actions {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    flex-shrink: 0;
}

.aural-snackbar__action {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 32px;
    padding: var(--space-1) var(--space-3);
    background: transparent;
    color: var(--color-primary-light);
    border: none;
    border-radius: var(--radius-sm);
    font-size: var(--text-sm);
    font-weight: var(--font-semibold);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    cursor: pointer;
    transition: var(--transition-all-fast);
}

.aural-snackbar__action:hover {
    background: rgba(255, 255, 255, 0.1);
}

.aural-snackbar__action:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}

/* ========================================
   Close Button
   ======================================== */

.aural-snackbar__close {
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 32px;
    min-height: 32px;
    padding: var(--space-1);
    background: transparent;
    color: var(--color-text-inverse);
    border: none;
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: var(--transition-all-fast);
    flex-shrink: 0;
}

.aural-snackbar__close:hover {
    background: rgba(0, 0, 0, 0.1);
    color: var(--color-bg-primary);
}

.aural-snackbar__close:focus-visible {
    outline: 2px solid white;
    outline-offset: 2px;
}

.aural-snackbar__close svg {
    width: 18px;
    height: 18px;
}

/* ========================================
   Progress Bar
   ======================================== */

.aural-snackbar__progress {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    height: 3px;
    background: rgba(255, 255, 255, 0.2);
    border-radius: 0 0 var(--radius-md) var(--radius-md);
    overflow: hidden;
}

.aural-snackbar__progress-bar {
    height: 100%;
    background: var(--color-primary-light);
    width: 100%;
    transform-origin: left;
    animation: aural-snackbar-progress linear;
}

@keyframes aural-snackbar-progress {
    from {
        transform: scaleX(1);
    }
    to {
        transform: scaleX(0);
    }
}

/* ========================================
   Color Variants
   ======================================== */

.aural-snackbar--success {
    background: var(--color-success);
    color: white;
}

.aural-snackbar--success .aural-snackbar__action {
    color: white;
}

.aural-snackbar--success .aural-snackbar__close {
    color: rgba(255, 255, 255, 0.8);
}

.aural-snackbar--success .aural-snackbar__close:hover {
    background: rgba(255, 255, 255, 0.1);
    color: white;
}

.aural-snackbar--success .aural-snackbar__progress-bar {
    background: rgba(255, 255, 255, 0.9);
}

.aural-snackbar--error {
    background: var(--color-error);
    color: white;
}

.aural-snackbar--error .aural-snackbar__action {
    color: white;
}

.aural-snackbar--error .aural-snackbar__close {
    color: rgba(255, 255, 255, 0.8);
}

.aural-snackbar--error .aural-snackbar__close:hover {
    background: rgba(255, 255, 255, 0.1);
    color: white;
}

.aural-snackbar--error .aural-snackbar__progress-bar {
    background: rgba(255, 255, 255, 0.9);
}

.aural-snackbar--warning {
    background: var(--color-warning);
    color: var(--color-bg-primary);
}

.aural-snackbar--warning .aural-snackbar__action {
    color: var(--color-bg-primary);
}

.aural-snackbar--warning .aural-snackbar__close {
    color: rgba(0, 0, 0, 0.7);
}

.aural-snackbar--warning .aural-snackbar__close:hover {
    color: black;
}

.aural-snackbar--warning .aural-snackbar__progress-bar {
    background: rgba(0, 0, 0, 0.3);
}

.aural-snackbar--info {
    background: var(--color-info);
    color: white;
}

.aural-snackbar--info .aural-snackbar__action {
    color: white;
}

.aural-snackbar--info .aural-snackbar__close {
    color: rgba(255, 255, 255, 0.8);
}

.aural-snackbar--info .aural-snackbar__close:hover {
    background: rgba(255, 255, 255, 0.1);
    color: white;
}

.aural-snackbar--info .aural-snackbar__progress-bar {
    background: rgba(255, 255, 255, 0.9);
}

/* ========================================
   Size Variants
   ======================================== */

.aural-snackbar--sm {
    min-height: 40px;
    min-width: 280px;
    padding: var(--space-2) var(--space-3);
}

.aural-snackbar--sm .aural-snackbar__message {
    font-size: var(--text-xs);
}

.aural-snackbar--sm .aural-snackbar__icon {
    width: 16px;
    height: 16px;
}

.aural-snackbar--lg {
    min-height: 56px;
    min-width: 400px;
    padding: var(--space-4) var(--space-6);
}

.aural-snackbar--lg .aural-snackbar__message {
    font-size: var(--text-base);
}

.aural-snackbar--lg .aural-snackbar__icon {
    width: 24px;
    height: 24px;
}

/* ========================================
   Full Width Variant
   ======================================== */

.aural-snackbar--full-width {
    width: 100vw;
    max-width: none;
    border-radius: 0;
}

.aural-snackbar-container--bottom-center .aural-snackbar--full-width,
.aural-snackbar-container--top-center .aural-snackbar--full-width {
    transform: translateX(-50%);
}

.aural-snackbar-container--bottom-left .aural-snackbar--full-width,
.aural-snackbar-container--bottom-right .aural-snackbar--full-width,
.aural-snackbar-container--top-left .aural-snackbar--full-width,
.aural-snackbar-container--top-right .aural-snackbar--full-width {
    transform: translateX(0);
}

/* ========================================
   Elevated Variant (with border)
   ======================================== */

.aural-snackbar--elevated {
    background: var(--color-bg-secondary);
    color: var(--color-text-primary);
    border: 1px solid var(--color-border-medium);
}

.aural-snackbar--elevated .aural-snackbar__description {
    color: var(--color-text-tertiary);
}

.aural-snackbar--elevated .aural-snackbar__action {
    color: var(--color-primary);
}

.aural-snackbar--elevated .aural-snackbar__close {
    color: var(--color-text-secondary);
}

.aural-snackbar--elevated .aural-snackbar__close:hover {
    color: var(--color-text-primary);
}

/* ========================================
   With Avatar/Image
   ======================================== */

.aural-snackbar__avatar {
    flex-shrink: 0;
    width: 36px;
    height: 36px;
    border-radius: 50%;
    -o-object-fit: cover;
       object-fit: cover;
    border: 2px solid rgba(255, 255, 255, 0.2);
}

.aural-snackbar__image {
    flex-shrink: 0;
    width: 56px;
    height: 56px;
    border-radius: var(--radius-sm);
    -o-object-fit: cover;
       object-fit: cover;
}

/* ========================================
   Loading State
   ======================================== */

.aural-snackbar--loading .aural-snackbar__icon {
    animation: aural-snackbar-spin 1s linear infinite;
}

@keyframes aural-snackbar-spin {
    to {
        transform: rotate(360deg);
    }
}

/* ========================================
   Compact Mode (Icon only)
   ======================================== */

.aural-snackbar--compact {
    min-width: auto;
    padding: var(--space-2);
}

.aural-snackbar--compact .aural-snackbar__content {
    display: none;
}

.aural-snackbar--compact .aural-snackbar__actions {
    display: none;
}

/* ========================================
   Accessibility
   ======================================== */

@media (prefers-reduced-motion: reduce) {
    .aural-snackbar,
    .aural-snackbar__progress-bar,
    .aural-snackbar__icon {
        transition: none;
        animation: none;
    }
}

/* Screen reader announcements */

.aural-snackbar[role="alert"],
.aural-snackbar[role="status"] {
    /* Automatically announced by screen readers */
}

/* ========================================
   Responsive
   ======================================== */

@media (max-width: 640px) {
    .aural-snackbar-container {
        padding: var(--space-2);
    }

    .aural-snackbar {
        min-width: auto;
        max-width: calc(100vw - var(--space-4));
    }

    .aural-snackbar--sm {
        min-width: auto;
    }

    .aural-snackbar--lg {
        min-width: auto;
        padding: var(--space-3) var(--space-4);
    }

    /* Stack actions vertically on mobile */
    .aural-snackbar--mobile-stack .aural-snackbar__actions {
        flex-direction: column;
        align-items: stretch;
        width: 100%;
    }

    .aural-snackbar--mobile-stack .aural-snackbar__action {
        width: 100%;
    }

    /* Full width on mobile by default */
    .aural-snackbar-container--bottom-center,
    .aural-snackbar-container--bottom-left,
    .aural-snackbar-container--bottom-right {
        left: 0;
        right: 0;
        transform: none;
        padding: 0;
    }

    .aural-snackbar-container--bottom-center .aural-snackbar,
    .aural-snackbar-container--bottom-left .aural-snackbar,
    .aural-snackbar-container--bottom-right .aural-snackbar {
        width: 100%;
        max-width: none;
        border-radius: 0;
        border-bottom: none;
    }
}

/* iOS safe area support */

@supports (padding-bottom: env(safe-area-inset-bottom)) {
    .aural-snackbar-container--bottom-left,
    .aural-snackbar-container--bottom-center,
    .aural-snackbar-container--bottom-right {
        padding-bottom: calc(var(--space-4) + env(safe-area-inset-bottom));
    }
}

/**
 * AURAL UI - Alert Banner
 *
 * Prominent page-level notifications and alerts.
 * Supports multiple variants, icons, and dismissible functionality.
 */

/* ========================================
   Alert Banner Container
   ======================================== */

.aural-alert-banner {
    display: flex;
    align-items: flex-start;
    gap: var(--space-3);
    padding: var(--space-4);
    background: var(--color-bg-secondary);
    border: 1px solid var(--color-border-medium);
    border-left-width: 4px;
    border-radius: var(--radius-md);
    position: relative;
    max-width: 800px;
    animation: aural-alert-banner-slide-in 0.3s ease-out;
}

@keyframes aural-alert-banner-slide-in {
    from {
        opacity: 0;
        transform: translateY(-10px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* ========================================
   Alert Icon
   ======================================== */

.aural-alert-banner__icon {
    flex-shrink: 0;
    width: 24px;
    height: 24px;
    margin-top: 2px;
}

/* ========================================
   Alert Content
   ======================================== */

.aural-alert-banner__content {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: var(--space-2);
}

.aural-alert-banner__title {
    font-size: var(--text-base);
    font-weight: var(--font-semibold);
    color: var(--color-text-primary);
    line-height: var(--leading-tight);
}

.aural-alert-banner__message {
    font-size: var(--text-sm);
    color: var(--color-text-secondary);
    line-height: var(--leading-relaxed);
}

.aural-alert-banner__actions {
    display: flex;
    gap: var(--space-2);
    margin-top: var(--space-2);
    flex-wrap: wrap;
}

.aural-alert-banner__action {
    padding: var(--space-2) var(--space-4);
    min-height: 44px;
    background: transparent;
    color: var(--color-text-primary);
    border: 1px solid var(--color-border-medium);
    border-radius: var(--radius-md);
    font-size: var(--text-sm);
    font-weight: var(--font-medium);
    cursor: pointer;
    transition: var(--transition-all-fast);
}

.aural-alert-banner__action:hover {
    background: var(--color-bg-hover);
    border-color: var(--color-primary);
    color: var(--color-primary);
}

.aural-alert-banner__action:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}

.aural-alert-banner__action--primary {
    background: var(--color-primary);
    color: white;
    border-color: var(--color-primary);
}

.aural-alert-banner__action--primary:hover {
    background: var(--color-primary-hover);
    border-color: var(--color-primary-hover);
    color: white;
}

/* ========================================
   Close Button
   ======================================== */

.aural-alert-banner__close {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 44px;
    min-height: 44px;
    padding: var(--space-2);
    background: transparent;
    color: var(--color-text-secondary);
    border: none;
    border-radius: var(--radius-md);
    cursor: pointer;
    transition: var(--transition-all-fast);
}

.aural-alert-banner__close:hover {
    background: var(--color-bg-hover);
    color: var(--color-text-primary);
}

.aural-alert-banner__close:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}

.aural-alert-banner__close-icon {
    width: 20px;
    height: 20px;
}

/* ========================================
   Variant: Info (Default)
   ======================================== */

.aural-alert-banner--info {
    background: var(--color-info-bg);
    border-left-color: var(--color-info);
    border-color: var(--color-info-border);
}

.aural-alert-banner--info .aural-alert-banner__icon {
    color: var(--color-info);
}

.aural-alert-banner--info .aural-alert-banner__title {
    color: var(--color-info);
}

/* ========================================
   Variant: Success
   ======================================== */

.aural-alert-banner--success {
    background: var(--color-success-bg);
    border-left-color: var(--color-success);
    border-color: var(--color-success-border);
}

.aural-alert-banner--success .aural-alert-banner__icon {
    color: var(--color-success);
}

.aural-alert-banner--success .aural-alert-banner__title {
    color: var(--color-success);
}

/* ========================================
   Variant: Warning
   ======================================== */

.aural-alert-banner--warning {
    background: var(--color-warning-bg);
    border-left-color: var(--color-warning);
    border-color: var(--color-warning-border);
}

.aural-alert-banner--warning .aural-alert-banner__icon {
    color: var(--color-warning);
}

.aural-alert-banner--warning .aural-alert-banner__title {
    color: var(--color-warning);
}

/* ========================================
   Variant: Error
   ======================================== */

.aural-alert-banner--error {
    background: var(--color-error-bg);
    border-left-color: var(--color-error);
    border-color: var(--color-error-border);
}

.aural-alert-banner--error .aural-alert-banner__icon {
    color: var(--color-error);
}

.aural-alert-banner--error .aural-alert-banner__title {
    color: var(--color-error);
}

/* ========================================
   Variant: Solid
   ======================================== */

.aural-alert-banner--solid {
    border: none;
}

.aural-alert-banner--solid.aural-alert-banner--info {
    background: var(--color-info);
    color: white;
}

.aural-alert-banner--solid.aural-alert-banner--info .aural-alert-banner__title,
.aural-alert-banner--solid.aural-alert-banner--info .aural-alert-banner__message,
.aural-alert-banner--solid.aural-alert-banner--info .aural-alert-banner__icon,
.aural-alert-banner--solid.aural-alert-banner--info .aural-alert-banner__close {
    color: white;
}

.aural-alert-banner--solid.aural-alert-banner--success {
    background: var(--color-success);
    color: white;
}

.aural-alert-banner--solid.aural-alert-banner--success .aural-alert-banner__title,
.aural-alert-banner--solid.aural-alert-banner--success .aural-alert-banner__message,
.aural-alert-banner--solid.aural-alert-banner--success .aural-alert-banner__icon,
.aural-alert-banner--solid.aural-alert-banner--success .aural-alert-banner__close {
    color: white;
}

.aural-alert-banner--solid.aural-alert-banner--warning {
    background: var(--color-warning);
    color: white;
}

.aural-alert-banner--solid.aural-alert-banner--warning .aural-alert-banner__title,
.aural-alert-banner--solid.aural-alert-banner--warning .aural-alert-banner__message,
.aural-alert-banner--solid.aural-alert-banner--warning .aural-alert-banner__icon,
.aural-alert-banner--solid.aural-alert-banner--warning .aural-alert-banner__close {
    color: white;
}

.aural-alert-banner--solid.aural-alert-banner--error {
    background: var(--color-error);
    color: white;
}

.aural-alert-banner--solid.aural-alert-banner--error .aural-alert-banner__title,
.aural-alert-banner--solid.aural-alert-banner--error .aural-alert-banner__message,
.aural-alert-banner--solid.aural-alert-banner--error .aural-alert-banner__icon,
.aural-alert-banner--solid.aural-alert-banner--error .aural-alert-banner__close {
    color: white;
}

.aural-alert-banner--solid .aural-alert-banner__close:hover {
    background: rgba(255, 255, 255, 0.2);
}

.aural-alert-banner--solid .aural-alert-banner__action {
    background: rgba(255, 255, 255, 0.2);
    color: white;
    border-color: rgba(255, 255, 255, 0.3);
}

.aural-alert-banner--solid .aural-alert-banner__action:hover {
    background: rgba(255, 255, 255, 0.3);
    border-color: rgba(255, 255, 255, 0.5);
}

/* ========================================
   Size Variants
   ======================================== */

.aural-alert-banner--sm {
    padding: var(--space-3);
    gap: var(--space-2);
}

.aural-alert-banner--sm .aural-alert-banner__icon {
    width: 20px;
    height: 20px;
}

.aural-alert-banner--sm .aural-alert-banner__title {
    font-size: var(--text-sm);
}

.aural-alert-banner--sm .aural-alert-banner__message {
    font-size: var(--text-xs);
}

.aural-alert-banner--lg {
    padding: var(--space-6);
    gap: var(--space-4);
}

.aural-alert-banner--lg .aural-alert-banner__icon {
    width: 28px;
    height: 28px;
}

.aural-alert-banner--lg .aural-alert-banner__title {
    font-size: var(--text-lg);
}

.aural-alert-banner--lg .aural-alert-banner__message {
    font-size: var(--text-base);
}

/* ========================================
   Position Variants (Fixed positioning)
   ======================================== */

.aural-alert-banner--fixed-top {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    z-index: 9999;
    max-width: none;
    border-radius: 0;
    animation: aural-alert-banner-slide-down 0.3s ease-out;
}

@keyframes aural-alert-banner-slide-down {
    from {
        transform: translateY(-100%);
    }
    to {
        transform: translateY(0);
    }
}

.aural-alert-banner--fixed-bottom {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    z-index: 9999;
    max-width: none;
    border-radius: 0;
    animation: aural-alert-banner-slide-up 0.3s ease-out;
}

@keyframes aural-alert-banner-slide-up {
    from {
        transform: translateY(100%);
    }
    to {
        transform: translateY(0);
    }
}

/* ========================================
   Dismissing Animation
   ======================================== */

.aural-alert-banner--dismissing {
    animation: aural-alert-banner-fade-out 0.3s ease-out forwards;
}

@keyframes aural-alert-banner-fade-out {
    from {
        opacity: 1;
        transform: translateY(0);
    }
    to {
        opacity: 0;
        transform: translateY(-10px);
    }
}

/* ========================================
   Accessibility
   ======================================== */

@media (prefers-reduced-motion: reduce) {
    .aural-alert-banner {
        animation: none;
    }

    .aural-alert-banner--fixed-top,
    .aural-alert-banner--fixed-bottom,
    .aural-alert-banner--dismissing {
        animation: none;
    }
}

/* ========================================
   Responsive
   ======================================== */

@media (max-width: 640px) {
    .aural-alert-banner {
        flex-direction: column;
        align-items: stretch;
    }

    .aural-alert-banner__close {
        position: absolute;
        top: var(--space-2);
        right: var(--space-2);
    }

    .aural-alert-banner__actions {
        flex-direction: column;
    }

    .aural-alert-banner__action {
        width: 100%;
    }
}

/**
 * AURAL UI - Modal Component
 *
 * Dialog overlays
 *
 * Usage:
 *   <div class="modal-overlay open">
 *     <div class="modal">
 *       <div class="modal-header">...</div>
 *       <div class="modal-body">...</div>
 *       <div class="modal-footer">...</div>
 *     </div>
 *   </div>
 */

.modal-overlay {
    /* Layout */
    position: fixed;
    inset: 0;
    z-index: 2000;

    /* Appearance */
    background: var(--color-modal-overlay);
    -webkit-backdrop-filter: blur(8px);
    backdrop-filter: blur(8px);

    /* Center content */
    display: flex;
    align-items: center;
    justify-content: center;

    /* State */
    opacity: 0;
    visibility: hidden;
    pointer-events: none;

    /* Transitions */
    transition: all var(--duration-normal) var(--ease-in-out);
}

.modal-overlay.open {
        opacity: 1;
        visibility: visible;
        pointer-events: auto;
    }

.modal {
    /* Layout */
    width: 100%;
    max-width: 480px;
    max-height: 90vh;
    overflow-y: auto;

    /* Spacing */
    padding: var(--space-8);
    margin: var(--space-4);

    /* Appearance */
    background: var(--color-modal-bg);
    border: 1px solid var(--color-modal-border);
    border-radius: var(--radius-xl);
    box-shadow: var(--shadow-2xl);

    /* Animation */
    transform: translateY(20px) scale(0.95);
    transition: all var(--duration-normal) var(--ease-out);
}

.modal-overlay.open .modal {
        transform: translateY(0) scale(1);
    }

/* ========================================
   MODAL PARTS
   ======================================== */

.modal-header {
    display: flex;
    align-items: center;
    gap: var(--space-4);
    margin-bottom: var(--space-6);
}

.modal-icon {
    /* Layout */
    width: 56px;
    height: 56px;
    flex-shrink: 0;

    /* Appearance */
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: var(--radius-lg);
    background: linear-gradient(135deg, rgba(16, 185, 129, 0.2), rgba(6, 182, 212, 0.2));
    color: var(--color-primary);
}

.modal-icon svg {
        width: 28px;
        height: 28px;
    }

.modal-title {
    font-size: var(--text-xl);
    font-weight: var(--font-bold);
    background: linear-gradient(135deg, var(--color-text-primary), var(--color-primary));
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
    margin-bottom: 0.25rem;
}

.modal-subtitle {
    font-size: var(--text-sm);
    color: var(--color-text-secondary);
}

.modal-body {
    display: flex;
    flex-direction: column;
    gap: var(--space-6);
}

.modal-footer {
    display: flex;
    gap: var(--space-3);
    margin-top: var(--space-6);
}

.modal-footer .btn {
        flex: 1;
    }

.modal-close {
    /* Position in top-right */
    position: absolute;
    top: var(--space-4);
    right: var(--space-4);

    /* Reset button styles */
    background: transparent;
    border: none;
    padding: var(--space-2);
    cursor: pointer;

    /* Appearance */
    color: var(--color-text-muted);
    border-radius: var(--radius-sm);
    transition: var(--transition-all-fast);
}

.modal-close svg {
        width: 20px;
        height: 20px;
    }

    @media (hover: hover) and (pointer: fine) {
        .modal-close:hover {
        background: rgba(255, 255, 255, 0.05);
        color: var(--color-text-primary);
            }
    }

    .modal-close:active {
        background: rgba(255, 255, 255, 0.05);
        color: var(--color-text-primary);
        }

/* ========================================
   MODAL SIZES
   ======================================== */

.modal-sm {
    max-width: 360px;
}

.modal-md {
    max-width: 480px;
}

.modal-lg {
    max-width: 640px;
}

.modal-xl {
    max-width: 800px;
}

.modal-full {
    max-width: 95vw;
    max-height: 95vh;
}

/**
 * AURAL UI - Skeleton Component
 *
 * Loading placeholders
 *
 * Usage:
 *   <div class="skeleton skeleton-text"></div>
 *   <div class="skeleton skeleton-circle" style="width: 40px; height: 40px;"></div>
 */

.skeleton {
    /* Appearance */
    background: linear-gradient(
        90deg,
        var(--color-skeleton-from) 0%,
        var(--color-skeleton-via) 50%,
        var(--color-skeleton-to) 100%
    );
    background-size: 200% 100%;
    border-radius: var(--radius-md);

    /* Animation */
    animation: shimmer var(--duration-slower) infinite;
}

/* ========================================
   VARIANTS
   ======================================== */

.skeleton-text {
    height: 16px;
    margin-bottom: var(--space-2);
}

.skeleton-text-sm {
    height: 12px;
}

.skeleton-text-lg {
    height: 20px;
}

.skeleton-title {
    height: 24px;
    width: 60%;
    margin-bottom: var(--space-4);
}

.skeleton-circle {
    border-radius: 50%;
}

.skeleton-button {
    height: 44px;
    width: 120px;
}

.skeleton-card {
    height: 200px;
    width: 100%;
}

/* ========================================
   ANIMATION
   ======================================== */

@keyframes shimmer {
    0% {
        background-position: 200% 0;
    }
    100% {
        background-position: -200% 0;
    }
}

/* ========================================
   ACCESSIBILITY
   ======================================== */

/* Reduced motion support */

@media (prefers-reduced-motion: reduce) {
    .skeleton {
        animation: none;
        background: var(--color-skeleton-from);
    }
}

/* Screen reader text for skeletons */

.skeleton-sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border-width: 0;
}

/**
 * AURAL UI - Loading Spinner
 *
 * Circular loading indicators with multiple variants and sizes.
 * Supports different colors and animation speeds.
 */

/* ========================================
   Spinner Container
   ======================================== */

.aural-spinner {
    display: inline-block;
    position: relative;
}

/* ========================================
   Spinner Circle
   ======================================== */

.aural-spinner__circle {
    display: block;
    width: 40px;
    height: 40px;
    border: 3px solid var(--color-border-subtle);
    border-top-color: var(--color-primary);
    border-radius: 50%;
    animation: aural-spinner-rotate 0.8s linear infinite;
}

@keyframes aural-spinner-rotate {
    0% {
        transform: rotate(0deg);
    }
    100% {
        transform: rotate(360deg);
    }
}

/* ========================================
   Dual Ring Variant
   ======================================== */

.aural-spinner--dual .aural-spinner__circle {
    border-width: 3px;
    border-style: solid;
    border-color: var(--color-primary) transparent var(--color-primary) transparent;
    animation: aural-spinner-dual 1.2s linear infinite;
}

@keyframes aural-spinner-dual {
    0% {
        transform: rotate(0deg);
    }
    100% {
        transform: rotate(360deg);
    }
}

/* ========================================
   Dots Variant
   ======================================== */

.aural-spinner--dots {
    display: flex;
    gap: var(--space-2);
}

.aural-spinner--dots .aural-spinner__dot {
    width: 12px;
    height: 12px;
    background: var(--color-primary);
    border-radius: 50%;
    animation: aural-spinner-bounce 1.4s ease-in-out infinite both;
}

.aural-spinner--dots .aural-spinner__dot:nth-child(1) {
    animation-delay: -0.32s;
}

.aural-spinner--dots .aural-spinner__dot:nth-child(2) {
    animation-delay: -0.16s;
}

@keyframes aural-spinner-bounce {
    0%, 80%, 100% {
        transform: scale(0.8);
        opacity: 0.5;
    }
    40% {
        transform: scale(1.2);
        opacity: 1;
    }
}

/* ========================================
   Pulse Variant
   ======================================== */

.aural-spinner--pulse .aural-spinner__circle {
    border: none;
    background: var(--color-primary);
    animation: aural-spinner-pulse 1.5s ease-in-out infinite;
}

@keyframes aural-spinner-pulse {
    0%, 100% {
        transform: scale(0.8);
        opacity: 0.5;
    }
    50% {
        transform: scale(1.2);
        opacity: 1;
    }
}

/* ========================================
   Grow Variant
   ======================================== */

.aural-spinner--grow {
    display: flex;
    gap: var(--space-2);
}

.aural-spinner--grow .aural-spinner__circle {
    width: 16px;
    height: 16px;
    background: var(--color-primary);
    border: none;
    animation: aural-spinner-grow 1.4s ease-in-out infinite both;
}

.aural-spinner--grow .aural-spinner__circle:nth-child(1) {
    animation-delay: -0.32s;
}

.aural-spinner--grow .aural-spinner__circle:nth-child(2) {
    animation-delay: -0.16s;
}

@keyframes aural-spinner-grow {
    0%, 80%, 100% {
        transform: scale(0);
        opacity: 0.5;
    }
    40% {
        transform: scale(1);
        opacity: 1;
    }
}

/* ========================================
   Bars Variant
   ======================================== */

.aural-spinner--bars {
    display: flex;
    gap: 4px;
    align-items: flex-end;
}

.aural-spinner--bars .aural-spinner__bar {
    width: 4px;
    height: 32px;
    background: var(--color-primary);
    border-radius: var(--radius-sm);
    animation: aural-spinner-bars 1.2s ease-in-out infinite;
}

.aural-spinner--bars .aural-spinner__bar:nth-child(1) {
    animation-delay: -0.4s;
}

.aural-spinner--bars .aural-spinner__bar:nth-child(2) {
    animation-delay: -0.3s;
}

.aural-spinner--bars .aural-spinner__bar:nth-child(3) {
    animation-delay: -0.2s;
}

.aural-spinner--bars .aural-spinner__bar:nth-child(4) {
    animation-delay: -0.1s;
}

@keyframes aural-spinner-bars {
    0%, 40%, 100% {
        transform: scaleY(0.4);
        opacity: 0.5;
    }
    20% {
        transform: scaleY(1);
        opacity: 1;
    }
}

/* ========================================
   Color Variants
   ======================================== */

.aural-spinner--primary .aural-spinner__circle,
.aural-spinner--primary .aural-spinner__dot,
.aural-spinner--primary .aural-spinner__bar {
    border-top-color: var(--color-primary);
    background: var(--color-primary);
}

.aural-spinner--primary.aural-spinner--dual .aural-spinner__circle {
    border-color: var(--color-primary) transparent var(--color-primary) transparent;
}

.aural-spinner--secondary .aural-spinner__circle,
.aural-spinner--secondary .aural-spinner__dot,
.aural-spinner--secondary .aural-spinner__bar {
    border-top-color: var(--color-text-secondary);
    background: var(--color-text-secondary);
}

.aural-spinner--secondary.aural-spinner--dual .aural-spinner__circle {
    border-color: var(--color-text-secondary) transparent var(--color-text-secondary) transparent;
}

.aural-spinner--success .aural-spinner__circle,
.aural-spinner--success .aural-spinner__dot,
.aural-spinner--success .aural-spinner__bar {
    border-top-color: var(--color-success);
    background: var(--color-success);
}

.aural-spinner--success.aural-spinner--dual .aural-spinner__circle {
    border-color: var(--color-success) transparent var(--color-success) transparent;
}

.aural-spinner--warning .aural-spinner__circle,
.aural-spinner--warning .aural-spinner__dot,
.aural-spinner--warning .aural-spinner__bar {
    border-top-color: var(--color-warning);
    background: var(--color-warning);
}

.aural-spinner--warning.aural-spinner--dual .aural-spinner__circle {
    border-color: var(--color-warning) transparent var(--color-warning) transparent;
}

.aural-spinner--error .aural-spinner__circle,
.aural-spinner--error .aural-spinner__dot,
.aural-spinner--error .aural-spinner__bar {
    border-top-color: var(--color-error);
    background: var(--color-error);
}

.aural-spinner--error.aural-spinner--dual .aural-spinner__circle {
    border-color: var(--color-error) transparent var(--color-error) transparent;
}

.aural-spinner--white .aural-spinner__circle,
.aural-spinner--white .aural-spinner__dot,
.aural-spinner--white .aural-spinner__bar {
    border-top-color: white;
    background: white;
    border-color: rgba(255, 255, 255, 0.3);
}

.aural-spinner--white.aural-spinner--dual .aural-spinner__circle {
    border-color: white transparent white transparent;
}

/* ========================================
   Size Variants
   ======================================== */

/* Extra Small */

.aural-spinner--xs .aural-spinner__circle {
    width: 16px;
    height: 16px;
    border-width: 2px;
}

.aural-spinner--xs.aural-spinner--dots .aural-spinner__dot {
    width: 6px;
    height: 6px;
}

.aural-spinner--xs.aural-spinner--grow .aural-spinner__circle {
    width: 8px;
    height: 8px;
}

.aural-spinner--xs.aural-spinner--bars .aural-spinner__bar {
    width: 3px;
    height: 16px;
}

/* Small */

.aural-spinner--sm .aural-spinner__circle {
    width: 24px;
    height: 24px;
    border-width: 2px;
}

.aural-spinner--sm.aural-spinner--dots .aural-spinner__dot {
    width: 8px;
    height: 8px;
}

.aural-spinner--sm.aural-spinner--grow .aural-spinner__circle {
    width: 10px;
    height: 10px;
}

.aural-spinner--sm.aural-spinner--bars .aural-spinner__bar {
    width: 3px;
    height: 20px;
}

/* Medium (default) is already defined */

/* Large */

.aural-spinner--lg .aural-spinner__circle {
    width: 56px;
    height: 56px;
    border-width: 4px;
}

.aural-spinner--lg.aural-spinner--dots .aural-spinner__dot {
    width: 16px;
    height: 16px;
}

.aural-spinner--lg.aural-spinner--grow .aural-spinner__circle {
    width: 20px;
    height: 20px;
}

.aural-spinner--lg.aural-spinner--bars .aural-spinner__bar {
    width: 6px;
    height: 48px;
}

/* Extra Large */

.aural-spinner--xl .aural-spinner__circle {
    width: 72px;
    height: 72px;
    border-width: 5px;
}

.aural-spinner--xl.aural-spinner--dots .aural-spinner__dot {
    width: 20px;
    height: 20px;
}

.aural-spinner--xl.aural-spinner--grow .aural-spinner__circle {
    width: 24px;
    height: 24px;
}

.aural-spinner--xl.aural-spinner--bars .aural-spinner__bar {
    width: 8px;
    height: 64px;
}

/* ========================================
   Speed Variants
   ======================================== */

.aural-spinner--slow .aural-spinner__circle {
    animation-duration: 1.5s;
}

.aural-spinner--fast .aural-spinner__circle {
    animation-duration: 0.5s;
}

/* ========================================
   With Text
   ======================================== */

.aural-spinner--with-text {
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    gap: var(--space-3);
}

.aural-spinner__text {
    font-size: var(--text-sm);
    color: var(--color-text-secondary);
    font-weight: var(--font-medium);
}

/* ========================================
   Overlay Variant
   ======================================== */

.aural-spinner-overlay {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(0, 0, 0, 0.5);
    -webkit-backdrop-filter: blur(4px);
    backdrop-filter: blur(4px);
    z-index: 9999;
}

.aural-spinner-overlay .aural-spinner {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--space-4);
    padding: var(--space-6);
    background: var(--color-bg-secondary);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-xl);
}

/* ========================================
   Accessibility
   ======================================== */

@media (prefers-reduced-motion: reduce) {
    .aural-spinner__circle,
    .aural-spinner__dot,
    .aural-spinner__bar {
        animation-duration: 2s;
    }
}

/* Screen reader only text */

.aural-spinner[aria-label]::after {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border-width: 0;
    content: attr(aria-label);
}

/**
 * AURAL UI - Empty State Component
 *
 * Helpful placeholders for empty content
 *
 * Usage:
 *   <div class="empty-state">
 *     <svg class="empty-state-icon">...</svg>
 *     <h3 class="empty-state-title">No items yet</h3>
 *     <p class="empty-state-description">Get started by creating your first item</p>
 *     <button class="btn btn-primary">Create Item</button>
 *   </div>
 */

.empty-state {
    /* Layout */
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;

    /* Spacing */
    padding: var(--space-12);

    /* Typography */
    color: var(--color-text-secondary);
}

.empty-state-icon {
    /* Size */
    width: 64px;
    height: 64px;

    /* Spacing */
    margin-bottom: var(--space-6);

    /* Appearance */
    opacity: 0.4;
    stroke-width: 1.5;
}

.empty-state-title {
    /* Typography */
    font-size: var(--text-lg);
    font-weight: var(--font-semibold);
    color: var(--color-text-primary);

    /* Spacing */
    margin-bottom: var(--space-2);
}

.empty-state-description {
    /* Typography */
    font-size: var(--text-sm);
    color: var(--color-text-muted);

    /* Spacing */
    margin-bottom: var(--space-6);
    max-width: 400px;
}

.empty-state .btn {
    margin-top: var(--space-2);
}

/* ========================================
   VARIANTS
   ======================================== */

.empty-state-compact {
    padding: var(--space-8);
}

.empty-state-compact .empty-state-icon {
        width: 48px;
        height: 48px;
        margin-bottom: var(--space-4);
    }

.empty-state-compact .empty-state-title {
        font-size: var(--text-base);
    }

/* ========================================
   MOBILE RESPONSIVE
   ======================================== */

@media (max-width: 640px) {
    .empty-state {
        padding: var(--space-8) var(--space-4);
    }

    .empty-state-icon {
        width: 56px;
        height: 56px;
        margin-bottom: var(--space-5);
    }

    .empty-state-title {
        font-size: var(--text-base);
    }

    .empty-state-description {
        font-size: var(--text-sm);
        max-width: 100%;
    }

    .empty-state-compact {
        padding: var(--space-6) var(--space-4);
    }
}

/* Form Controls */

/**
 * AURAL UI - Checkbox Component
 *
 * Custom styled checkboxes with indeterminate state support
 *
 * Usage:
 *   <label class="checkbox">
 *     <input type="checkbox">
 *     <span>Label Text</span>
 *   </label>
 *   <label class="checkbox checkbox-lg">
 *     <input type="checkbox" checked>
 *     <span>Large Checkbox</span>
 *   </label>
 */

.checkbox {
    /* Layout */
    display: inline-flex;
    align-items: center;
    gap: 0;
    position: relative;

    /* Typography */
    font-family: var(--font-sans);
    font-size: var(--text-base);
    color: var(--color-text-primary);
    line-height: var(--leading-normal);

    /* Interaction */
    cursor: pointer;
    -webkit-user-select: none;
       -moz-user-select: none;
            user-select: none;

    /* Accessibility */
    min-height: 44px;
}

.checkbox > input[type="checkbox"] {
        /* Hide native checkbox */
        position: absolute;
        opacity: 0;
        width: 0;
        height: 0;
    }

.checkbox > input[type="checkbox"] + span {
        display: inline-flex;
        align-items: center;
        gap: var(--space-3);
    }

.checkbox > input[type="checkbox"] + span::before {
        content: '';
        display: flex;
        align-items: center;
        justify-content: center;
        flex-shrink: 0;

        /* Size (default: medium) */
        width: 20px;
        height: 20px;

        /* Appearance */
        background: var(--color-checkbox-bg);
        border: 2px solid var(--color-checkbox-border);
        border-radius: var(--radius-sm);

        /* Transitions */
        transition: var(--transition-all-fast);
    }

/* Hover state */

.checkbox:hover > input[type="checkbox"]:not(:disabled) + span::before {
        border-color: var(--color-checkbox-border-hover);
        background: rgba(255, 255, 255, 0.05);
    }

/* Checked state */

.checkbox > input[type="checkbox"]:checked + span::before {
        background: var(--color-checkbox-checked-bg);
        border-color: var(--color-checkbox-checked-border);
        background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='white'%3E%3Cpath d='M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z'/%3E%3C/svg%3E");
        background-repeat: no-repeat;
        background-position: center center;
        background-size: 12px 12px;
    }

/* Indeterminate state */

.checkbox > input[type="checkbox"]:indeterminate + span::before {
        background: var(--color-checkbox-indeterminate-bg);
        border-color: var(--color-checkbox-checked-border);
        background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='white'%3E%3Cpath d='M4 8a.75.75 0 01.75-.75h6.5a.75.75 0 010 1.5h-6.5A.75.75 0 014 8z'/%3E%3C/svg%3E");
        background-repeat: no-repeat;
        background-position: center center;
        background-size: 12px 12px;
    }

/* Focus state */

.checkbox > input[type="checkbox"]:focus-visible + span::before {
        outline: 2px solid var(--color-primary);
        outline-offset: 2px;
    }

/* Disabled state */

.checkbox > input[type="checkbox"]:disabled + span {
        opacity: 0.5;
        cursor: not-allowed;
    }

.checkbox:has(input[type="checkbox"]:disabled) {
        cursor: not-allowed;
    }

/* ========================================
   SIZES
   ======================================== */

.checkbox-sm {
    font-size: var(--text-sm);
    min-height: 36px;
}

.checkbox-sm > input[type="checkbox"] + span {
        gap: var(--space-2);
    }

.checkbox-sm > input[type="checkbox"] + span::before {
        width: 16px;
        height: 16px;
    }

.checkbox-sm > input[type="checkbox"]:checked + span::before,
    .checkbox-sm > input[type="checkbox"]:indeterminate + span::before {
        background-size: 10px 10px;
    }

.checkbox-lg {
    font-size: var(--text-lg);
    min-height: 52px;
}

.checkbox-lg > input[type="checkbox"] + span {
        gap: var(--space-4);
    }

.checkbox-lg > input[type="checkbox"] + span::before {
        width: 24px;
        height: 24px;
    }

.checkbox-lg > input[type="checkbox"]:checked + span::before,
    .checkbox-lg > input[type="checkbox"]:indeterminate + span::before {
        background-size: 16px 16px;
    }

/* ========================================
   VARIANTS
   ======================================== */

/* Checkbox without label */

.checkbox-only {
    min-height: auto;
}

.checkbox-only > input[type="checkbox"] + span {
        gap: 0;
    }

.checkbox-only > span:not(::before) {
        display: none;
    }

/* Checkbox with description */

.checkbox-with-description {
    align-items: flex-start;
}

.checkbox-with-description > input[type="checkbox"] + span {
        align-items: flex-start;
    }

.checkbox-with-description > input[type="checkbox"] + span::before {
        margin-top: 2px;
    }

.checkbox-with-description > span {
        display: flex;
        flex-direction: column;
        gap: var(--space-1);
    }

.checkbox-with-description > span > .checkbox-description {
        color: var(--color-text-secondary);
        font-size: var(--text-sm);
        font-weight: var(--font-normal);
        line-height: var(--leading-relaxed);
    }

/* ========================================
   CHECKBOX GROUP
   ======================================== */

.checkbox-group {
    display: flex;
    flex-direction: column;
    gap: var(--space-3);
}

.checkbox-group > .checkbox-group-label {
        color: var(--color-text-primary);
        font-size: var(--text-sm);
        font-weight: var(--font-semibold);
        margin-bottom: var(--space-1);
    }

.checkbox-group > .checkbox-group-description {
        color: var(--color-text-secondary);
        font-size: var(--text-sm);
        margin-top: calc(-1 * var(--space-2));
        margin-bottom: var(--space-2);
    }

/* Horizontal layout */

.checkbox-group-horizontal {
    flex-direction: row;
    flex-wrap: wrap;
    gap: var(--space-6);
}

.checkbox-group-horizontal > .checkbox-group-label {
        flex-basis: 100%;
    }

.checkbox-group-horizontal > .checkbox-group-description {
        flex-basis: 100%;
    }

/* ========================================
   ACCESSIBILITY
   ======================================== */

/* High contrast mode support */

@media (prefers-contrast: high) {
    .checkbox > input[type="checkbox"] + span::before {
        border-width: 3px;
    }
}

/* Reduced motion */

@media (prefers-reduced-motion: reduce) {
    .checkbox > input[type="checkbox"] + span::before {
        transition: none;
    }
}

/**
 * AURAL UI - Radio Component
 *
 * Custom styled radio buttons for single selection
 *
 * Usage:
 *   <label class="radio">
 *     <input type="radio" name="option">
 *     <span>Option 1</span>
 *   </label>
 *   <label class="radio radio-lg">
 *     <input type="radio" name="option" checked>
 *     <span>Option 2</span>
 *   </label>
 */

.radio {
    /* Layout */
    display: inline-flex;
    align-items: center;
    gap: var(--space-3);
    position: relative;

    /* Typography */
    font-family: var(--font-sans);
    font-size: var(--text-base);
    color: var(--color-text-primary);
    line-height: var(--leading-normal);

    /* Interaction */
    cursor: pointer;
    -webkit-user-select: none;
       -moz-user-select: none;
            user-select: none;

    /* Accessibility */
    min-height: 44px;
}

.radio > input[type="radio"] {
        /* Hide native radio */
        position: absolute;
        opacity: 0;
        width: 0;
        height: 0;
    }

.radio > input[type="radio"] + span {
        position: relative;
        padding-left: calc(20px + var(--space-3));
    }

.radio > input[type="radio"] + span::before {
        content: '';
        position: absolute;
        left: 0;
        top: 50%;
        transform: translateY(-50%);

        /* Size (default: medium) */
        width: 20px;
        height: 20px;

        /* Appearance */
        background: var(--color-radio-bg);
        border: 2px solid var(--color-radio-border);
        border-radius: 50%;

        /* Transitions */
        transition: var(--transition-all-fast);
    }

/* Hover state */

.radio:hover > input[type="radio"]:not(:disabled) + span::before {
        border-color: var(--color-radio-border-hover);
        background: rgba(255, 255, 255, 0.05);
    }

/* Checked state - outer ring */

.radio > input[type="radio"]:checked + span::before {
        background: var(--color-radio-checked-bg);
        border-color: var(--color-radio-checked-border);
    }

/* Checked state - inner dot */

.radio > input[type="radio"]:checked + span::after {
        content: '';
        position: absolute;
        left: 6px;
        top: 50%;

        /* Size - inner dot is 50% of outer circle */
        width: 8px;
        height: 8px;

        /* Appearance */
        background: var(--color-radio-dot);
        border-radius: 50%;

        /* Animation */
        transform: translateY(-50%) scale(0);
        animation: radio-pop 0.2s ease forwards;
    }

/* Focus state */

.radio > input[type="radio"]:focus-visible + span::before {
        outline: 2px solid var(--color-primary);
        outline-offset: 2px;
    }

/* Disabled state */

.radio > input[type="radio"]:disabled + span {
        opacity: 0.5;
        cursor: not-allowed;
    }

.radio:has(input[type="radio"]:disabled) {
        cursor: not-allowed;
    }

@keyframes radio-pop {
    0% {
        transform: translateY(-50%) scale(0);
    }
    50% {
        transform: translateY(-50%) scale(1.2);
    }
    100% {
        transform: translateY(-50%) scale(1);
    }
}

/* ========================================
   SIZES
   ======================================== */

.radio-sm {
    font-size: var(--text-sm);
    min-height: 36px;
}

.radio-sm > input[type="radio"] + span {
        padding-left: calc(16px + var(--space-2));
    }

.radio-sm > input[type="radio"] + span::before {
        width: 16px;
        height: 16px;
    }

.radio-sm > input[type="radio"]:checked + span::after {
        width: 6px;
        height: 6px;
        left: 5px;
    }

.radio-lg {
    font-size: var(--text-lg);
    min-height: 52px;
}

.radio-lg > input[type="radio"] + span {
        padding-left: calc(24px + var(--space-4));
    }

.radio-lg > input[type="radio"] + span::before {
        width: 24px;
        height: 24px;
    }

.radio-lg > input[type="radio"]:checked + span::after {
        width: 10px;
        height: 10px;
        left: 7px;
    }

/* ========================================
   VARIANTS
   ======================================== */

/* Radio without label */

.radio-only {
    min-height: auto;
}

.radio-only > input[type="radio"] + span {
        padding-left: 0;
    }

.radio-only > span:not(::before):not(::after) {
        display: none;
    }

/* Radio with description */

.radio-with-description {
    align-items: flex-start;
}

.radio-with-description > span {
        display: flex;
        flex-direction: column;
        gap: var(--space-1);
    }

.radio-with-description > span > .radio-description {
        color: var(--color-text-secondary);
        font-size: var(--text-sm);
        font-weight: var(--font-normal);
    }

/* Radio button style (like tabs) */

.radio-button {
    min-height: auto;
    padding: var(--space-3) var(--space-6);
    border: 1px solid var(--color-border-subtle);
    border-radius: var(--radius-md);
    background: rgba(255, 255, 255, 0.03);
    transition: var(--transition-all-fast);
    justify-content: center;
    text-align: center;
}

.radio-button > input[type="radio"] + span {
        padding-left: 0;
    }

.radio-button > input[type="radio"] + span::before,
    .radio-button > input[type="radio"]:checked + span::after {
        display: none;
    }

.radio-button:hover {
        border-color: var(--color-border-medium);
        background: rgba(255, 255, 255, 0.05);
    }

.radio-button > input[type="radio"]:checked + span {
        /* Checked state for button variant */
    }

.radio-button:has(input[type="radio"]:checked) {
        background: var(--color-primary);
        border-color: var(--color-primary);
        color: white;
    }

.radio-button:has(input[type="radio"]:focus-visible) {
        outline: 2px solid var(--color-primary);
        outline-offset: 2px;
    }

/* ========================================
   RADIO GROUP
   ======================================== */

.radio-group {
    display: flex;
    flex-direction: column;
    gap: var(--space-3);
}

.radio-group > .radio-group-label {
        color: var(--color-text-primary);
        font-size: var(--text-sm);
        font-weight: var(--font-semibold);
        margin-bottom: var(--space-1);
    }

.radio-group > .radio-group-description {
        color: var(--color-text-secondary);
        font-size: var(--text-sm);
        margin-top: calc(-1 * var(--space-2));
        margin-bottom: var(--space-2);
    }

/* Horizontal layout */

.radio-group-horizontal {
    flex-direction: row;
    flex-wrap: wrap;
    gap: var(--space-6);
}

.radio-group-horizontal > .radio-group-label {
        flex-basis: 100%;
    }

.radio-group-horizontal > .radio-group-description {
        flex-basis: 100%;
    }

/* Button group layout */

.radio-group-buttons {
    flex-direction: row;
    gap: var(--space-2);
}

.radio-group-buttons > .radio-button {
        flex: 1;
    }

/* Attached button group */

.radio-group-attached {
    flex-direction: row;
    gap: 0;
}

.radio-group-attached > .radio-button {
        border-radius: 0 !important;
        margin-left: -1px;
    }

.radio-group-attached > .radio-button:first-of-type {
        border-top-left-radius: var(--radius-md) !important;
        border-bottom-left-radius: var(--radius-md) !important;
        margin-left: 0;
    }

.radio-group-attached > .radio-button:last-of-type {
        border-top-right-radius: var(--radius-md) !important;
        border-bottom-right-radius: var(--radius-md) !important;
    }

.radio-group-attached > .radio-button:has(input[type="radio"]:checked) {
        z-index: 1;
    }

/* ========================================
   ACCESSIBILITY
   ======================================== */

/* High contrast mode support */

@media (prefers-contrast: high) {
    .radio > input[type="radio"] + span::before {
        border-width: 3px;
    }
}

/* Reduced motion */

@media (prefers-reduced-motion: reduce) {
    .radio > input[type="radio"] + span::before,
    .radio-button {
        transition: none;
    }

    .radio > input[type="radio"]:checked + span::after {
        animation: none;
        transform: scale(1);
    }
}

/**
 * AURAL UI - Toggle (Switch) Component
 *
 * On/off toggle switches with smooth animations
 *
 * Usage:
 *   <label class="toggle">
 *     <input type="checkbox" role="switch">
 *     <span>Enable notifications</span>
 *   </label>
 *   <label class="toggle toggle-lg">
 *     <input type="checkbox" role="switch" checked>
 *     <span>Auto-save</span>
 *   </label>
 */

.toggle {
    /* Layout */
    display: inline-flex;
    align-items: center;
    gap: var(--space-3);
    position: relative;

    /* Typography */
    font-family: var(--font-sans);
    font-size: var(--text-base);
    color: var(--color-text-primary);
    line-height: var(--leading-normal);

    /* Interaction */
    cursor: pointer;
    -webkit-user-select: none;
       -moz-user-select: none;
            user-select: none;

    /* Accessibility */
    min-height: 44px;
}

.toggle > input[type="checkbox"][role="switch"] {
        /* Hide native checkbox */
        position: absolute;
        opacity: 0;
        width: 0;
        height: 0;
    }

.toggle > input[type="checkbox"][role="switch"] + span {
        position: relative;
        padding-left: calc(44px + var(--space-3));
    }

/* Toggle track */

.toggle > input[type="checkbox"][role="switch"] + span::before {
        content: '';
        position: absolute;
        left: 0;
        top: 50%;
        transform: translateY(-50%);

        /* Size (default: medium) */
        width: 44px;
        height: 24px;

        /* Appearance */
        background: var(--color-toggle-track-off);
        border-radius: var(--radius-full);
        box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.1);

        /* Transitions */
        transition: var(--transition-all-fast);
    }

/* Toggle thumb */

.toggle > input[type="checkbox"][role="switch"] + span::after {
        content: '';
        position: absolute;
        left: 2px;
        top: 50%;
        transform: translateY(-50%);

        /* Size - thumb is slightly smaller than track height */
        width: 20px;
        height: 20px;

        /* Appearance */
        background: var(--color-toggle-thumb);
        border-radius: 50%;
        box-shadow: 0 2px 4px var(--color-toggle-thumb-shadow);

        /* Transitions */
        transition: var(--transition-all-fast);
    }

/* Hover state */

.toggle:hover > input[type="checkbox"][role="switch"]:not(:disabled) + span::before {
        background: var(--color-toggle-track-hover);
    }

/* Checked state - track */

.toggle > input[type="checkbox"][role="switch"]:checked + span::before {
        background: var(--color-toggle-track-on);
        box-shadow: 0 2px 8px rgba(16, 185, 129, 0.3);
    }

/* Checked state - thumb position */

.toggle > input[type="checkbox"][role="switch"]:checked + span::after {
        left: 22px;
    }

/* Focus state */

.toggle > input[type="checkbox"][role="switch"]:focus-visible + span::before {
        outline: 2px solid var(--color-primary);
        outline-offset: 2px;
    }

/* Disabled state */

.toggle > input[type="checkbox"][role="switch"]:disabled + span {
        opacity: 0.5;
        cursor: not-allowed;
    }

.toggle:has(input[type="checkbox"][role="switch"]:disabled) {
        cursor: not-allowed;
    }

/* ========================================
   SIZES
   ======================================== */

.toggle-sm {
    font-size: var(--text-sm);
    min-height: 36px;
}

.toggle-sm > input[type="checkbox"][role="switch"] + span {
        padding-left: calc(36px + var(--space-2));
    }

.toggle-sm > input[type="checkbox"][role="switch"] + span::before {
        width: 36px;
        height: 20px;
    }

.toggle-sm > input[type="checkbox"][role="switch"] + span::after {
        width: 16px;
        height: 16px;
    }

.toggle-sm > input[type="checkbox"][role="switch"]:checked + span::after {
        left: 18px;
    }

.toggle-lg {
    font-size: var(--text-lg);
    min-height: 52px;
}

.toggle-lg > input[type="checkbox"][role="switch"] + span {
        padding-left: calc(56px + var(--space-4));
    }

.toggle-lg > input[type="checkbox"][role="switch"] + span::before {
        width: 56px;
        height: 32px;
    }

.toggle-lg > input[type="checkbox"][role="switch"] + span::after {
        width: 28px;
        height: 28px;
    }

.toggle-lg > input[type="checkbox"][role="switch"]:checked + span::after {
        left: 26px;
    }

/* ========================================
   VARIANTS
   ======================================== */

/* Toggle without label */

.toggle-only {
    min-height: auto;
}

.toggle-only > input[type="checkbox"][role="switch"] + span {
        padding-left: 0;
    }

.toggle-only > span:not(::before):not(::after) {
        display: none;
    }

/* Toggle with description */

.toggle-with-description {
    align-items: flex-start;
}

.toggle-with-description > span {
        display: flex;
        flex-direction: column;
        gap: var(--space-1);
    }

.toggle-with-description > span > .toggle-description {
        color: var(--color-text-secondary);
        font-size: var(--text-sm);
        font-weight: var(--font-normal);
    }

/* Toggle with icons */

.toggle-with-icons > input[type="checkbox"][role="switch"] + span::before {
        display: flex;
        align-items: center;
        justify-content: space-between;
        padding: 0 var(--space-1);
    }

.toggle-with-icons > input[type="checkbox"][role="switch"] + span .toggle-icon {
        width: 12px;
        height: 12px;
        color: var(--color-text-muted);
        z-index: 1;
        opacity: 0.6;
        transition: opacity 0.2s ease;
    }

.toggle-with-icons > input[type="checkbox"][role="switch"]:checked + span .toggle-icon-on {
        opacity: 1;
        color: white;
    }

.toggle-with-icons > input[type="checkbox"][role="switch"]:not(:checked) + span .toggle-icon-off {
        opacity: 1;
        color: var(--color-text-secondary);
    }

/* Label on left */

.toggle-label-left {
    flex-direction: row-reverse;
}

.toggle-label-left > input[type="checkbox"][role="switch"] + span {
        padding-left: 0;
        padding-right: calc(44px + var(--space-3));
    }

.toggle-label-left > input[type="checkbox"][role="switch"] + span::before {
        left: auto;
        right: 0;
    }

.toggle-label-left > input[type="checkbox"][role="switch"] + span::after {
        left: auto;
        right: 2px;
    }

.toggle-label-left > input[type="checkbox"][role="switch"]:checked + span::after {
        right: 22px;
    }

.toggle-label-left.toggle-sm > input[type="checkbox"][role="switch"] + span {
        padding-right: calc(36px + var(--space-2));
    }

.toggle-label-left.toggle-sm > input[type="checkbox"][role="switch"]:checked + span::after {
        right: 18px;
    }

.toggle-label-left.toggle-lg > input[type="checkbox"][role="switch"] + span {
        padding-right: calc(56px + var(--space-4));
    }

.toggle-label-left.toggle-lg > input[type="checkbox"][role="switch"]:checked + span::after {
        right: 26px;
    }

/* ========================================
   COLOR VARIANTS
   ======================================== */

.toggle-success > input[type="checkbox"][role="switch"]:checked + span::before {
    background: var(--color-success);
}

.toggle-warning > input[type="checkbox"][role="switch"]:checked + span::before {
    background: var(--color-warning);
}

.toggle-error > input[type="checkbox"][role="switch"]:checked + span::before {
    background: var(--color-error);
}

.toggle-info > input[type="checkbox"][role="switch"]:checked + span::before {
    background: var(--color-info);
}

/* ========================================
   TOGGLE GROUP
   ======================================== */

.toggle-group {
    display: flex;
    flex-direction: column;
    gap: var(--space-4);
}

.toggle-group > .toggle-group-label {
        color: var(--color-text-primary);
        font-size: var(--text-sm);
        font-weight: var(--font-semibold);
        margin-bottom: var(--space-1);
    }

.toggle-group > .toggle-group-description {
        color: var(--color-text-secondary);
        font-size: var(--text-sm);
        margin-top: calc(-1 * var(--space-2));
        margin-bottom: var(--space-2);
    }

/* ========================================
   ACCESSIBILITY
   ======================================== */

/* High contrast mode support */

@media (prefers-contrast: high) {
    .toggle > input[type="checkbox"][role="switch"] + span::before {
        border: 2px solid currentColor;
    }

    .toggle > input[type="checkbox"][role="switch"] + span::after {
        border: 1px solid currentColor;
    }
}

/* Reduced motion */

@media (prefers-reduced-motion: reduce) {
    .toggle > input[type="checkbox"][role="switch"] + span::before,
    .toggle > input[type="checkbox"][role="switch"] + span::after {
        transition: none;
    }
}

/**
 * AURAL UI - Switch Component
 *
 * iOS-style toggle switch component
 * Uses real DOM elements for better rendering and alignment
 *
 * Usage:
 *   <label class="switch">
 *     <input type="checkbox" class="switch__input" role="switch">
 *     <div class="switch__track">
 *       <div class="switch__thumb"></div>
 *     </div>
 *     <span class="switch__label">Enable notifications</span>
 *   </label>
 */

/* ========================================
   BASE SWITCH
   ======================================== */

.switch {
    display: inline-flex;
    align-items: center;
    gap: var(--space-3);
    cursor: pointer;
    -webkit-user-select: none;
       -moz-user-select: none;
            user-select: none;
    font-family: var(--font-sans);
    font-size: var(--text-base);
    color: var(--color-text-primary);
    line-height: var(--leading-normal);
    min-height: 44px;
}

.switch__input {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border-width: 0;
}

.switch__track {
    position: relative;
    display: flex;
    align-items: center;
    width: 44px;
    height: 24px;
    background: var(--color-border-strong);
    border-radius: var(--radius-full);
    transition: background-color 0.2s ease, box-shadow 0.2s ease;
    flex-shrink: 0;
}

.switch:hover .switch__track {
    background: var(--color-border-stronger);
}

.switch__input:checked + .switch__track {
    background: var(--color-primary);
}

.switch:hover .switch__input:checked + .switch__track {
    background: var(--color-primary-hover);
}

.switch__input:focus-visible + .switch__track {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}

.switch__thumb {
    position: absolute;
    left: 2px;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 20px;
    height: 20px;
    background: white;
    border-radius: 50%;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
    transition: transform 0.2s ease;
}

.switch__input:checked + .switch__track .switch__thumb {
    transform: translateX(20px);
}

.switch__label {
    font-size: var(--text-base);
    font-weight: var(--font-medium);
    color: var(--color-text-primary);
    line-height: 1.5;
}

/* Disabled state */

.switch__input:disabled + .switch__track {
    opacity: 0.5;
    cursor: not-allowed;
}

.switch:has(.switch__input:disabled) {
    cursor: not-allowed;
}

/* ========================================
   SIZES
   ======================================== */

/* Small */

.switch-sm {
    font-size: var(--text-sm);
    min-height: 36px;
}

.switch-sm .switch__track {
    width: 36px;
    height: 20px;
}

.switch-sm .switch__thumb {
    width: 16px;
    height: 16px;
}

.switch-sm .switch__input:checked + .switch__track .switch__thumb {
    transform: translateX(16px);
}

.switch-sm .switch__label {
    font-size: var(--text-sm);
}

/* Large */

.switch-lg {
    font-size: var(--text-lg);
    min-height: 52px;
}

.switch-lg .switch__track {
    width: 56px;
    height: 32px;
}

.switch-lg .switch__thumb {
    width: 28px;
    height: 28px;
}

.switch-lg .switch__input:checked + .switch__track .switch__thumb {
    transform: translateX(24px);
}

.switch-lg .switch__label {
    font-size: var(--text-lg);
}

/* ========================================
   COLOR VARIANTS
   ======================================== */

.switch-primary .switch__input:checked + .switch__track {
    background: var(--color-primary);
}

.switch-primary:hover .switch__input:checked + .switch__track {
    background: var(--color-primary-hover);
}

.switch-success .switch__input:checked + .switch__track {
    background: var(--color-success);
}

.switch-success:hover .switch__input:checked + .switch__track {
    background: var(--success-600, var(--color-success));
}

.switch-warning .switch__input:checked + .switch__track {
    background: var(--color-warning);
}

.switch-warning:hover .switch__input:checked + .switch__track {
    background: var(--warning-600, var(--color-warning));
}

.switch-error .switch__input:checked + .switch__track {
    background: var(--color-error);
}

.switch-error:hover .switch__input:checked + .switch__track {
    background: var(--error-600, var(--color-error));
}

.switch-info .switch__input:checked + .switch__track {
    background: var(--color-info);
}

.switch-info:hover .switch__input:checked + .switch__track {
    background: var(--info-600, var(--color-info));
}

/* ========================================
   VARIANTS
   ======================================== */

/* Switch with description */

.switch-with-description {
    align-items: flex-start;
}

.switch-with-description .switch__track {
    margin-top: 2px;
}

.switch-with-description .switch__label {
    display: flex;
    flex-direction: column;
    gap: var(--space-1);
}

.switch__description {
    font-size: var(--text-sm);
    color: var(--color-text-secondary);
    font-weight: var(--font-normal);
    line-height: var(--leading-relaxed);
}

/* Label on left */

.switch-label-left {
    flex-direction: row-reverse;
}

/* Switch without visible label */

.switch-only {
    min-height: auto;
}

.switch-only .switch__label {
    display: none;
}

/* ========================================
   SWITCH GROUP
   ======================================== */

.switch-group {
    display: flex;
    flex-direction: column;
    gap: var(--space-4);
}

.switch-group-label {
    color: var(--color-text-primary);
    font-size: var(--text-sm);
    font-weight: var(--font-semibold);
    margin-bottom: var(--space-1);
}

.switch-group-description {
    color: var(--color-text-secondary);
    font-size: var(--text-sm);
    margin-top: calc(-1 * var(--space-2));
    margin-bottom: var(--space-2);
}

/* ========================================
   BACKWARDS COMPATIBILITY
   ======================================== */

/* Support legacy .toggle class */

.toggle {
    display: inline-flex;
    align-items: center;
    gap: var(--space-3);
    cursor: pointer;
    -webkit-user-select: none;
       -moz-user-select: none;
            user-select: none;
    font-family: var(--font-sans);
    font-size: var(--text-base);
    color: var(--color-text-primary);
    line-height: var(--leading-normal);
    min-height: 44px;
    position: relative;
}

.toggle > input[type="checkbox"][role="switch"] {
        position: absolute;
        opacity: 0;
        width: 0;
        height: 0;
    }

.toggle > input[type="checkbox"][role="switch"] + span {
        position: relative;
        padding-left: calc(44px + var(--space-3));
        display: flex;
        align-items: center;
    }

.toggle > input[type="checkbox"][role="switch"] + span::before {
        content: '';
        position: absolute;
        left: 0;
        top: 50%;
        transform: translateY(-50%);
        width: 44px;
        height: 24px;
        background: var(--color-border-strong);
        border-radius: var(--radius-full);
        box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.1);
        transition: var(--transition-all-fast);
    }

.toggle > input[type="checkbox"][role="switch"] + span::after {
        content: '';
        position: absolute;
        left: 2px;
        top: 50%;
        transform: translateY(-50%);
        width: 20px;
        height: 20px;
        background: white;
        border-radius: 50%;
        box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
        transition: var(--transition-all-fast);
    }

.toggle:hover > input[type="checkbox"][role="switch"]:not(:disabled) + span::before {
        background: var(--color-border-stronger);
    }

.toggle > input[type="checkbox"][role="switch"]:checked + span::before {
        background: var(--color-primary);
        box-shadow: 0 2px 8px rgba(16, 185, 129, 0.3);
    }

.toggle > input[type="checkbox"][role="switch"]:checked + span::after {
        left: 22px;
    }

.toggle > input[type="checkbox"][role="switch"]:focus-visible + span::before {
        outline: 2px solid var(--color-primary);
        outline-offset: 2px;
    }

.toggle > input[type="checkbox"][role="switch"]:disabled + span {
        opacity: 0.5;
        cursor: not-allowed;
    }

.toggle:has(input[type="checkbox"][role="switch"]:disabled) {
        cursor: not-allowed;
    }

.toggle-sm {
    font-size: var(--text-sm);
    min-height: 36px;
}

.toggle-sm > input[type="checkbox"][role="switch"] + span {
        padding-left: calc(36px + var(--space-2));
    }

.toggle-sm > input[type="checkbox"][role="switch"] + span::before {
        width: 36px;
        height: 20px;
    }

.toggle-sm > input[type="checkbox"][role="switch"] + span::after {
        width: 16px;
        height: 16px;
    }

.toggle-sm > input[type="checkbox"][role="switch"]:checked + span::after {
        left: 18px;
    }

.toggle-lg {
    font-size: var(--text-lg);
    min-height: 52px;
}

.toggle-lg > input[type="checkbox"][role="switch"] + span {
        padding-left: calc(56px + var(--space-4));
    }

.toggle-lg > input[type="checkbox"][role="switch"] + span::before {
        width: 56px;
        height: 32px;
    }

.toggle-lg > input[type="checkbox"][role="switch"] + span::after {
        width: 28px;
        height: 28px;
    }

.toggle-lg > input[type="checkbox"][role="switch"]:checked + span::after {
        left: 26px;
    }

.toggle-primary > input[type="checkbox"][role="switch"]:checked + span::before {
    background: var(--color-primary);
}

.toggle-success > input[type="checkbox"][role="switch"]:checked + span::before {
    background: var(--color-success);
}

.toggle-warning > input[type="checkbox"][role="switch"]:checked + span::before {
    background: var(--color-warning);
}

.toggle-error > input[type="checkbox"][role="switch"]:checked + span::before {
    background: var(--color-error);
}

.toggle-info > input[type="checkbox"][role="switch"]:checked + span::before {
    background: var(--color-info);
}

/* ========================================
   ACCESSIBILITY
   ======================================== */

@media (prefers-reduced-motion: reduce) {
    .switch__track,
    .switch__thumb,
    .toggle > input[type="checkbox"][role="switch"] + span::before,
    .toggle > input[type="checkbox"][role="switch"] + span::after {
        transition: none;
    }
}

@media (prefers-contrast: high) {
    .switch__track {
        border: 2px solid currentColor;
    }

    .switch__thumb {
        border: 2px solid currentColor;
    }
}

/**
 * AURAL UI - Select Component
 *
 * Dropdown selection with both native and custom variants
 *
 * Usage (Native):
 *   <div class="select">
 *     <select>
 *       <option>Option 1</option>
 *       <option>Option 2</option>
 *     </select>
 *   </div>
 *
 * Usage (Custom):
 *   <div class="select-custom" id="my-select">
 *     <button class="select-trigger" aria-haspopup="listbox" aria-expanded="false">
 *       <span>Select option...</span>
 *       <svg class="select-icon">...</svg>
 *     </button>
 *     <div class="select-dropdown" role="listbox" hidden>
 *       <div class="select-option" role="option" data-value="1">Option 1</div>
 *       <div class="select-option" role="option" data-value="2">Option 2</div>
 *     </div>
 *   </div>
 */

/* ========================================
   NATIVE SELECT
   ======================================== */

.select {
    /* Layout */
    display: inline-flex;
    position: relative;
    width: 100%;
    max-width: 320px;
}

.select > select {
        /* Layout */
        width: 100%;
        appearance: none;
        -webkit-appearance: none;
        -moz-appearance: none;

        /* Spacing */
        padding: var(--space-3) var(--space-10) var(--space-3) var(--space-4);

        /* Typography */
        font-family: var(--font-sans);
        font-size: var(--text-base);
        color: var(--color-select-text);
        line-height: var(--leading-normal);

        /* Appearance */
        background: var(--color-select-bg);
        border: 1px solid var(--color-select-border);
        border-radius: var(--radius-md);
        cursor: pointer;

        /* Transitions */
        transition: var(--transition-all-fast);

        /* Accessibility */
        min-height: 44px;
        outline: none;

        /* Custom dropdown arrow */
        background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='rgba(255,255,255,0.5)'%3E%3Cpath d='M4.22 6.22a.75.75 0 011.06 0L8 8.94l2.72-2.72a.75.75 0 111.06 1.06l-3.25 3.25a.75.75 0 01-1.06 0L4.22 7.28a.75.75 0 010-1.06z'/%3E%3C/svg%3E");
        background-repeat: no-repeat;
        background-position: right var(--space-3) center;
        background-size: 20px;
    }

        @media (hover: hover) and (pointer: fine) {
            .select > select:hover:not(:disabled) {
            border-color: var(--color-select-border-hover);
            background-color: rgba(255, 255, 255, 0.05);
                    }
        }

        .select > select:active:not(:disabled) {
            border-color: var(--color-select-border-hover);
            background-color: rgba(255, 255, 255, 0.05);
                }

.select > select:focus {
            border-color: var(--color-select-border-focus);
        }

.select > select:focus-visible {
            outline: 2px solid var(--color-primary);
            outline-offset: 2px;
        }

.select > select:disabled {
            opacity: 0.5;
            cursor: not-allowed;
            pointer-events: none;
        }

/* Option styling */

.select > select > option {
            background: var(--color-select-dropdown-bg);
            color: var(--color-select-text);
            padding: var(--space-2);
        }

.select > select > optgroup {
            font-weight: var(--font-semibold);
            color: var(--color-text-secondary);
        }

/* ========================================
   NATIVE SELECT SIZES
   ======================================== */

.select-sm {
    max-width: 240px;
}

.select-sm > select {
        padding: var(--space-2) var(--space-8) var(--space-2) var(--space-3);
        font-size: var(--text-sm);
        min-height: 36px;
        background-size: 16px;
        background-position: right var(--space-2) center;
    }

.select-lg {
    max-width: 400px;
}

.select-lg > select {
        padding: var(--space-4) var(--space-12) var(--space-4) var(--space-5);
        font-size: var(--text-lg);
        min-height: 52px;
        background-size: 24px;
        background-position: right var(--space-4) center;
    }

/* Full width */

.select-full {
    max-width: none;
}

/* ========================================
   CUSTOM SELECT
   ======================================== */

.select-custom {
    /* Layout */
    display: inline-flex;
    position: relative;
    width: 100%;
    max-width: 320px;
}

/* Trigger button */

.select-trigger {
    /* Layout */
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-3);
    width: 100%;

    /* Spacing */
    padding: var(--space-3) var(--space-4);

    /* Typography */
    font-family: var(--font-sans);
    font-size: var(--text-base);
    color: var(--color-select-text);
    line-height: var(--leading-normal);
    text-align: left;

    /* Appearance */
    background: var(--color-select-bg);
    border: 1px solid var(--color-select-border);
    border-radius: var(--radius-md);
    cursor: pointer;

    /* Transitions */
    transition: var(--transition-all-fast);

    /* Accessibility */
    min-height: 44px;
    outline: none;
}

.select-trigger > span {
        flex: 1;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

    @media (hover: hover) and (pointer: fine) {
        .select-trigger:hover:not(:disabled) {
        border-color: var(--color-select-border-hover);
        background: rgba(255, 255, 255, 0.05);
            }
    }

    .select-trigger:active:not(:disabled) {
        border-color: var(--color-select-border-hover);
        background: rgba(255, 255, 255, 0.05);
        }

.select-trigger[aria-expanded="true"] {
        border-color: var(--color-select-border-focus);
    }

.select-trigger:focus-visible {
        outline: 2px solid var(--color-primary);
        outline-offset: 2px;
    }

.select-trigger:disabled {
        opacity: 0.5;
        cursor: not-allowed;
        pointer-events: none;
    }

/* Dropdown icon */

.select-icon {
    width: 20px;
    height: 20px;
    flex-shrink: 0;
    color: var(--color-text-muted);
    transition: transform 0.2s ease;
}

.select-trigger[aria-expanded="true"] .select-icon {
    transform: rotate(180deg);
}

/* Dropdown panel */

.select-dropdown {
    /* Layout */
    position: absolute;
    top: calc(100% + var(--space-1));
    left: 0;
    right: 0;
    z-index: 1000;
    overflow: auto;
    max-height: 300px;

    /* Appearance */
    background: var(--color-select-dropdown-bg);
    border: 1px solid var(--color-select-dropdown-border);
    border-radius: var(--radius-md);
    box-shadow: var(--shadow-lg);

    /* Animation */
    opacity: 0;
    transform: translateY(-8px);
    transition: opacity 0.2s ease, transform 0.2s ease;
    pointer-events: none;

    /* Custom scrollbar */
    scrollbar-width: thin;
    scrollbar-color: var(--color-border-medium) transparent;
}

.select-dropdown:not([hidden]) {
        opacity: 1;
        transform: translateY(0);
        pointer-events: auto;
    }

.select-dropdown::-webkit-scrollbar {
        width: 8px;
    }

.select-dropdown::-webkit-scrollbar-track {
        background: transparent;
    }

.select-dropdown::-webkit-scrollbar-thumb {
        background: var(--color-border-medium);
        border-radius: var(--radius-full);
    }

/* Select options */

.select-option {
    /* Spacing */
    padding: var(--space-3) var(--space-4);

    /* Typography */
    font-size: var(--text-base);
    color: var(--color-dropdown-item-text);
    line-height: var(--leading-normal);

    /* Interaction */
    cursor: pointer;
    transition: var(--transition-all-fast);

    /* Accessibility */
    outline: none;
    -webkit-user-select: none;
       -moz-user-select: none;
            user-select: none;
    touch-action: manipulation;  /* Prevent double-tap zoom on mobile */
}

.select-option:hover,
    .select-option:focus {
        background: var(--color-select-option-hover);
    }

.select-option[aria-selected="true"] {
        background: var(--color-select-option-selected);
        color: var(--color-select-option-selected-text);
        font-weight: var(--font-medium);
    }

.select-option[data-disabled="true"] {
        opacity: 0.5;
        cursor: not-allowed;
        pointer-events: none;
    }

/* Option group */

.select-optgroup > .select-optgroup-label {
        padding: var(--space-2) var(--space-4);
        font-size: var(--text-xs);
        font-weight: var(--font-semibold);
        color: var(--color-text-muted);
        text-transform: uppercase;
        letter-spacing: 0.05em;
    }

.select-optgroup > .select-option {
        padding-left: var(--space-6);
    }

.select-optgroup:not(:first-child) {
        border-top: 1px solid var(--color-dropdown-divider);
        margin-top: var(--space-1);
        padding-top: var(--space-1);
    }

/* ========================================
   CUSTOM SELECT SIZES
   ======================================== */

.select-custom.select-sm {
    max-width: 240px;
}

.select-custom.select-sm .select-trigger {
        padding: var(--space-2) var(--space-3);
        font-size: var(--text-sm);
        min-height: 36px;
    }

.select-custom.select-sm .select-icon {
        width: 16px;
        height: 16px;
    }

.select-custom.select-sm .select-option {
        padding: var(--space-2) var(--space-3);
        font-size: var(--text-sm);
    }

.select-custom.select-lg {
    max-width: 400px;
}

.select-custom.select-lg .select-trigger {
        padding: var(--space-4) var(--space-5);
        font-size: var(--text-lg);
        min-height: 52px;
    }

.select-custom.select-lg .select-icon {
        width: 24px;
        height: 24px;
    }

.select-custom.select-lg .select-option {
        padding: var(--space-4) var(--space-5);
        font-size: var(--text-lg);
    }

/* Full width */

.select-custom.select-full {
    max-width: none;
}

/* ========================================
   SELECT WITH LABEL
   ======================================== */

.select-wrapper {
    display: flex;
    flex-direction: column;
    gap: var(--space-2);
}

.select-wrapper > .select-label {
        color: var(--color-text-primary);
        font-size: var(--text-sm);
        font-weight: var(--font-semibold);
    }

.select-wrapper > .select-description {
        color: var(--color-text-secondary);
        font-size: var(--text-sm);
        margin-top: calc(-1 * var(--space-1));
    }

.select-wrapper > .select-error {
        color: var(--color-error);
        font-size: var(--text-sm);
        margin-top: calc(-1 * var(--space-1));
    }

/* Error state */

.select-wrapper.has-error .select > select,
    .select-wrapper.has-error .select-trigger {
        border-color: var(--color-error);
    }

/* ========================================
   ACCESSIBILITY
   ======================================== */

/* Reduced motion */

@media (prefers-reduced-motion: reduce) {
    .select > select,
    .select-trigger,
    .select-dropdown,
    .select-option,
    .select-icon {
        transition: none;
    }

    .select-trigger[aria-expanded="true"] .select-icon {
        transform: none;
    }
}

/**
 * AURAL UI - Rating
 *
 * Star rating component with interactive and read-only modes.
 * Supports half-star ratings and custom icons.
 */

/* ========================================
   Rating Container
   ======================================== */

.aural-rating {
    display: inline-flex;
    align-items: center;
    gap: var(--space-1);
}

/* ========================================
   Rating Stars
   ======================================== */

.aural-rating__stars {
    display: inline-flex;
    gap: 4px;
}

.aural-rating__star {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 44px;
    min-height: 44px;
    padding: var(--space-2);
    background: transparent;
    color: var(--color-border-medium);
    border: none;
    cursor: pointer;
    transition: var(--transition-all-fast);
    position: relative;
}

.aural-rating__star:hover {
    color: var(--color-warning);
    transform: scale(1.1);
}

.aural-rating__star:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
    border-radius: var(--radius-sm);
}

.aural-rating__star-icon {
    width: 24px;
    height: 24px;
    fill: currentColor;
}

/* Star States */

.aural-rating__star--filled {
    color: var(--color-warning);
}

.aural-rating__star--half {
    color: var(--color-warning);
}

.aural-rating__star--empty {
    color: var(--color-border-medium);
}

/* Half Star Implementation */

.aural-rating__star--half .aural-rating__star-icon {
    position: relative;
}

.aural-rating__star--half .aural-rating__star-icon::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 50%;
    height: 100%;
    background: var(--color-warning);
    -webkit-clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%);
    clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%);
}

/* ========================================
   Rating Value Display
   ======================================== */

.aural-rating__value {
    font-size: var(--text-sm);
    font-weight: var(--font-semibold);
    color: var(--color-text-primary);
    margin-left: var(--space-2);
}

.aural-rating__count {
    font-size: var(--text-sm);
    color: var(--color-text-secondary);
    margin-left: var(--space-1);
}

/* ========================================
   Read-Only Mode
   ======================================== */

.aural-rating--readonly .aural-rating__star {
    cursor: default;
    pointer-events: none;
}

.aural-rating--readonly .aural-rating__star:hover {
    transform: none;
}

/* ========================================
   Disabled State
   ======================================== */

.aural-rating--disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

.aural-rating--disabled .aural-rating__star {
    cursor: not-allowed;
    pointer-events: none;
}

/* ========================================
   Size Variants
   ======================================== */

/* Extra Small */

.aural-rating--xs .aural-rating__star {
    min-width: 24px;
    min-height: 24px;
    padding: var(--space-1);
}

.aural-rating--xs .aural-rating__star-icon {
    width: 12px;
    height: 12px;
}

.aural-rating--xs .aural-rating__value,
.aural-rating--xs .aural-rating__count {
    font-size: var(--text-xs);
}

/* Small */

.aural-rating--sm .aural-rating__star {
    min-width: 32px;
    min-height: 32px;
    padding: var(--space-1);
}

.aural-rating--sm .aural-rating__star-icon {
    width: 16px;
    height: 16px;
}

.aural-rating--sm .aural-rating__value,
.aural-rating--sm .aural-rating__count {
    font-size: var(--text-xs);
}

/* Medium (default is already 24px) */

/* Large */

.aural-rating--lg .aural-rating__star {
    min-width: 56px;
    min-height: 56px;
    padding: var(--space-3);
}

.aural-rating--lg .aural-rating__star-icon {
    width: 32px;
    height: 32px;
}

.aural-rating--lg .aural-rating__value,
.aural-rating--lg .aural-rating__count {
    font-size: var(--text-base);
}

/* Extra Large */

.aural-rating--xl .aural-rating__star {
    min-width: 64px;
    min-height: 64px;
    padding: var(--space-4);
}

.aural-rating--xl .aural-rating__star-icon {
    width: 40px;
    height: 40px;
}

.aural-rating--xl .aural-rating__value,
.aural-rating--xl .aural-rating__count {
    font-size: var(--text-lg);
}

/* ========================================
   Color Variants
   ======================================== */

.aural-rating--primary .aural-rating__star--filled,
.aural-rating--primary .aural-rating__star--half,
.aural-rating--primary .aural-rating__star:hover {
    color: var(--color-primary);
}

.aural-rating--success .aural-rating__star--filled,
.aural-rating--success .aural-rating__star--half,
.aural-rating--success .aural-rating__star:hover {
    color: var(--color-success);
}

.aural-rating--error .aural-rating__star--filled,
.aural-rating--error .aural-rating__star--half,
.aural-rating--error .aural-rating__star:hover {
    color: var(--color-error);
}

.aural-rating--info .aural-rating__star--filled,
.aural-rating--info .aural-rating__star--half,
.aural-rating--info .aural-rating__star:hover {
    color: var(--color-info);
}

/* ========================================
   Heart Icon Variant
   ======================================== */

.aural-rating--heart .aural-rating__star--filled,
.aural-rating--heart .aural-rating__star:hover {
    color: var(--color-error);
}

/* ========================================
   With Labels
   ======================================== */

.aural-rating__label {
    font-size: var(--text-sm);
    color: var(--color-text-secondary);
    margin-left: var(--space-2);
    font-weight: var(--font-medium);
}

.aural-rating:hover .aural-rating__label {
    color: var(--color-text-primary);
}

/* ========================================
   Compact Variant
   ======================================== */

.aural-rating--compact {
    gap: 0;
}

.aural-rating--compact .aural-rating__stars {
    gap: 0;
}

.aural-rating--compact .aural-rating__star {
    min-width: 32px;
    min-height: 32px;
    padding: var(--space-1);
}

.aural-rating--compact .aural-rating__star-icon {
    width: 16px;
    height: 16px;
}

/* ========================================
   Hover Effects
   ======================================== */

.aural-rating:not(.aural-rating--readonly):not(.aural-rating--disabled) .aural-rating__star:hover ~ .aural-rating__star {
    color: var(--color-border-medium);
}

/* Glow Effect on Hover */

.aural-rating--glow .aural-rating__star:hover,
.aural-rating--glow .aural-rating__star--filled {
    filter: drop-shadow(0 0 8px currentColor);
}

/* ========================================
   Fractional Display (CSS-based half stars)
   ======================================== */

.aural-rating__star--fractional {
    position: relative;
    overflow: hidden;
}

.aural-rating__star--fractional::after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    height: 100%;
    background: var(--color-warning);
    z-index: 1;
}

.aural-rating__star--fractional[data-fill="0.1"]::after { width: 10%; }

.aural-rating__star--fractional[data-fill="0.2"]::after { width: 20%; }

.aural-rating__star--fractional[data-fill="0.3"]::after { width: 30%; }

.aural-rating__star--fractional[data-fill="0.4"]::after { width: 40%; }

.aural-rating__star--fractional[data-fill="0.5"]::after { width: 50%; }

.aural-rating__star--fractional[data-fill="0.6"]::after { width: 60%; }

.aural-rating__star--fractional[data-fill="0.7"]::after { width: 70%; }

.aural-rating__star--fractional[data-fill="0.8"]::after { width: 80%; }

.aural-rating__star--fractional[data-fill="0.9"]::after { width: 90%; }

/* ========================================
   Accessibility
   ======================================== */

@media (prefers-reduced-motion: reduce) {
    .aural-rating__star {
        transition: none;
    }

    .aural-rating__star:hover {
        transform: none;
    }

    .aural-rating--glow .aural-rating__star:hover,
    .aural-rating--glow .aural-rating__star--filled {
        filter: none;
    }
}

/* ========================================
   Print Styles
   ======================================== */

@media print {
    .aural-rating__star {
        color: #000;
        -webkit-print-color-adjust: exact;
        print-color-adjust: exact;
    }

    .aural-rating__star--filled {
        color: #FFB800;
    }
}

/**
 * AURAL UI - Color Picker
 *
 * Visual color selection tool with HSL/RGB/HEX input modes.
 * Includes saturation/lightness picker, hue slider, and alpha control.
 */

/* ========================================
   Color Picker Container
   ======================================== */

.aural-color-picker {
    display: inline-flex;
    flex-direction: column;
    gap: var(--space-4);
    padding: var(--space-4);
    background: var(--color-bg-secondary);
    border: 1px solid var(--color-border-medium);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-lg);
    width: 280px;
}

/* ========================================
   Color Preview
   ======================================== */

.aural-color-picker__preview {
    display: flex;
    align-items: center;
    gap: var(--space-3);
}

.aural-color-picker__swatch {
    position: relative;
    width: 56px;
    height: 56px;
    border-radius: var(--radius-md);
    border: 2px solid var(--color-border-medium);
    overflow: hidden;
    cursor: pointer;
    transition: var(--transition-all-fast);
}

.aural-color-picker__swatch:hover {
    transform: scale(1.05);
    box-shadow: var(--shadow-md);
}

.aural-color-picker__swatch-color {
    width: 100%;
    height: 100%;
    background: var(--color-value, #000);
}

/* Checkerboard pattern for transparency */

.aural-color-picker__swatch::before {
    content: '';
    position: absolute;
    inset: 0;
    background-image:
        linear-gradient(45deg, #ccc 25%, transparent 25%),
        linear-gradient(-45deg, #ccc 25%, transparent 25%),
        linear-gradient(45deg, transparent 75%, #ccc 75%),
        linear-gradient(-45deg, transparent 75%, #ccc 75%);
    background-size: 8px 8px;
    background-position: 0 0, 0 4px, 4px -4px, -4px 0px;
    z-index: -1;
}

.aural-color-picker__value {
    flex: 1;
    max-width: 140px;
    padding: var(--space-2) var(--space-3);
    background: var(--color-bg-primary);
    border: 1px solid var(--color-border-medium);
    border-radius: var(--radius-md);
    font-size: var(--text-sm);
    font-family: var(--font-mono);
    color: var(--color-text-primary);
    text-transform: uppercase;
    text-align: center;
}

.aural-color-picker__value:hover {
    border-color: var(--color-primary);
    background: var(--color-bg-hover);
}

.aural-color-picker__value:focus {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
    border-color: var(--color-primary);
}

/* ========================================
   Saturation/Lightness Picker
   ======================================== */

.aural-color-picker__canvas {
    position: relative;
    width: 100%;
    height: 160px;
    border-radius: var(--radius-md);
    cursor: crosshair;
    overflow: hidden;
}

.aural-color-picker__saturation {
    position: absolute;
    inset: 0;
    background: linear-gradient(to right, #fff, transparent);
}

.aural-color-picker__lightness {
    position: absolute;
    inset: 0;
    background: linear-gradient(to bottom, transparent, #000);
}

.aural-color-picker__cursor {
    position: absolute;
    width: 16px;
    height: 16px;
    border: 2px solid white;
    border-radius: 50%;
    box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.3), 0 2px 4px rgba(0, 0, 0, 0.3);
    transform: translate(-50%, -50%);
    pointer-events: none;
}

/* ========================================
   Hue Slider
   ======================================== */

.aural-color-picker__hue {
    position: relative;
    width: 100%;
    height: 12px;
    border-radius: var(--radius-full);
    background: linear-gradient(to right,
        #ff0000 0%,
        #ffff00 17%,
        #00ff00 33%,
        #00ffff 50%,
        #0000ff 67%,
        #ff00ff 83%,
        #ff0000 100%);
    cursor: pointer;
}

.aural-color-picker__hue-handle {
    position: absolute;
    top: 50%;
    width: 18px;
    height: 18px;
    background: white;
    border: 2px solid var(--color-border-medium);
    border-radius: 50%;
    box-shadow: var(--shadow-md);
    transform: translate(-50%, -50%);
    pointer-events: none;
    transition: transform 0.1s ease;
}

.aural-color-picker__hue:active .aural-color-picker__hue-handle {
    transform: translate(-50%, -50%) scale(1.2);
}

/* ========================================
   Alpha Slider
   ======================================== */

.aural-color-picker__alpha {
    position: relative;
    width: 100%;
    height: 12px;
    border-radius: var(--radius-full);
    cursor: pointer;
    overflow: hidden;
}

.aural-color-picker__alpha::before {
    content: '';
    position: absolute;
    inset: 0;
    background-image:
        linear-gradient(45deg, #ccc 25%, transparent 25%),
        linear-gradient(-45deg, #ccc 25%, transparent 25%),
        linear-gradient(45deg, transparent 75%, #ccc 75%),
        linear-gradient(-45deg, transparent 75%, #ccc 75%);
    background-size: 8px 8px;
    background-position: 0 0, 0 4px, 4px -4px, -4px 0px;
}

.aural-color-picker__alpha-gradient {
    position: absolute;
    inset: 0;
    background: linear-gradient(to right, transparent, var(--color-value, #000));
}

.aural-color-picker__alpha-handle {
    position: absolute;
    top: 50%;
    width: 18px;
    height: 18px;
    background: white;
    border: 2px solid var(--color-border-medium);
    border-radius: 50%;
    box-shadow: var(--shadow-md);
    transform: translate(-50%, -50%);
    pointer-events: none;
    transition: transform 0.1s ease;
}

.aural-color-picker__alpha:active .aural-color-picker__alpha-handle {
    transform: translate(-50%, -50%) scale(1.2);
}

/* ========================================
   Input Mode Tabs
   ======================================== */

.aural-color-picker__modes {
    display: flex;
    gap: var(--space-1);
    padding: 2px;
    background: var(--color-bg-tertiary);
    border-radius: var(--radius-md);
}

.aural-color-picker__mode {
    flex: 1;
    padding: var(--space-1) var(--space-2);
    background: transparent;
    color: var(--color-text-secondary);
    border: none;
    border-radius: var(--radius-sm);
    font-size: var(--text-xs);
    font-weight: var(--font-medium);
    cursor: pointer;
    transition: var(--transition-all-fast);
}

.aural-color-picker__mode:hover {
    background: var(--color-bg-hover);
    color: var(--color-text-primary);
}

.aural-color-picker__mode--active {
    background: var(--color-bg-primary);
    color: var(--color-primary);
    font-weight: var(--font-semibold);
}

/* ========================================
   Color Inputs
   ======================================== */

.aural-color-picker__inputs {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: var(--space-2);
}

.aural-color-picker__inputs--rgba,
.aural-color-picker__inputs--hsla {
    grid-template-columns: repeat(4, 1fr);
}

.aural-color-picker__input-group {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.aural-color-picker__input-label {
    font-size: var(--text-xs);
    color: var(--color-text-tertiary);
    text-transform: uppercase;
    font-weight: var(--font-semibold);
}

.aural-color-picker__input {
    padding: var(--space-1) var(--space-2);
    background: var(--color-bg-primary);
    border: 1px solid var(--color-border-medium);
    border-radius: var(--radius-sm);
    font-size: var(--text-sm);
    font-family: var(--font-mono);
    color: var(--color-text-primary);
    text-align: center;
}

.aural-color-picker__input:hover {
    border-color: var(--color-primary);
    background: var(--color-bg-hover);
}

.aural-color-picker__input:focus {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
    border-color: var(--color-primary);
}

/* ========================================
   Preset Colors
   ======================================== */

.aural-color-picker__presets {
    display: flex;
    flex-direction: column;
    gap: var(--space-2);
}

.aural-color-picker__preset-label {
    font-size: var(--text-xs);
    color: var(--color-text-tertiary);
    text-transform: uppercase;
    font-weight: var(--font-semibold);
}

.aural-color-picker__preset-grid {
    display: grid;
    grid-template-columns: repeat(8, 1fr);
    gap: var(--space-2);
}

.aural-color-picker__preset {
    position: relative;
    width: 100%;
    aspect-ratio: 1;
    border: 2px solid transparent;
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: var(--transition-all-fast);
    overflow: hidden;
}

.aural-color-picker__preset::before {
    content: '';
    position: absolute;
    inset: 0;
    background-image:
        linear-gradient(45deg, #ccc 25%, transparent 25%),
        linear-gradient(-45deg, #ccc 25%, transparent 25%),
        linear-gradient(45deg, transparent 75%, #ccc 75%),
        linear-gradient(-45deg, transparent 75%, #ccc 75%);
    background-size: 4px 4px;
    background-position: 0 0, 0 2px, 2px -2px, -2px 0px;
    z-index: -1;
}

.aural-color-picker__preset-color {
    width: 100%;
    height: 100%;
}

.aural-color-picker__preset:hover {
    transform: scale(1.1);
    box-shadow: var(--shadow-md);
    border-color: var(--color-primary);
}

.aural-color-picker__preset--active {
    border-color: var(--color-primary);
    box-shadow: 0 0 0 2px var(--primary-alpha-20);
}

/* ========================================
   Recent Colors
   ======================================== */

.aural-color-picker__recent {
    display: flex;
    flex-direction: column;
    gap: var(--space-2);
}

.aural-color-picker__recent-label {
    font-size: var(--text-xs);
    color: var(--color-text-tertiary);
    text-transform: uppercase;
    font-weight: var(--font-semibold);
}

.aural-color-picker__recent-grid {
    display: grid;
    grid-template-columns: repeat(8, 1fr);
    gap: var(--space-2);
}

/* ========================================
   Eyedropper Button
   ======================================== */

.aural-color-picker__eyedropper {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--space-2);
    padding: var(--space-2) var(--space-3);
    background: var(--color-bg-primary);
    color: var(--color-text-primary);
    border: 1px solid var(--color-border-medium);
    border-radius: var(--radius-md);
    font-size: var(--text-sm);
    font-weight: var(--font-medium);
    cursor: pointer;
    transition: var(--transition-all-fast);
}

.aural-color-picker__eyedropper:hover {
    background: var(--color-bg-hover);
    border-color: var(--color-primary);
    color: var(--color-primary);
}

.aural-color-picker__eyedropper:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

.aural-color-picker__eyedropper svg {
    width: 16px;
    height: 16px;
}

/* ========================================
   Compact Variant
   ======================================== */

.aural-color-picker--compact {
    width: 240px;
    padding: var(--space-3);
    gap: var(--space-3);
}

.aural-color-picker--compact .aural-color-picker__canvas {
    height: 120px;
}

.aural-color-picker--compact .aural-color-picker__swatch {
    width: 48px;
    height: 48px;
}

.aural-color-picker--compact .aural-color-picker__value {
    max-width: 120px;
    font-size: var(--text-xs);
    padding: var(--space-1) var(--space-2);
}

.aural-color-picker--compact .aural-color-picker__preset-grid,
.aural-color-picker--compact .aural-color-picker__recent-grid {
    grid-template-columns: repeat(6, 1fr);
}

/* ========================================
   Inline Variant (no border/padding)
   ======================================== */

.aural-color-picker--inline {
    background: transparent;
    border: none;
    box-shadow: none;
    padding: 0;
}

/* ========================================
   Popover Variant
   ======================================== */

.aural-color-picker-trigger {
    display: inline-flex;
    align-items: center;
    gap: var(--space-2);
    padding: var(--space-2) var(--space-3);
    background: var(--color-bg-primary);
    border: 1px solid var(--color-border-medium);
    border-radius: var(--radius-md);
    cursor: pointer;
    transition: var(--transition-all-fast);
}

.aural-color-picker-trigger:hover {
    border-color: var(--color-primary);
}

.aural-color-picker-trigger:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}

.aural-color-picker-trigger__swatch {
    width: 24px;
    height: 24px;
    border-radius: var(--radius-sm);
    border: 1px solid var(--color-border-medium);
    background: var(--color-value, #000);
}

.aural-color-picker-trigger__label {
    font-size: var(--text-sm);
    font-weight: var(--font-medium);
    color: var(--color-text-primary);
}

.aural-color-picker-popover {
    position: absolute;
    z-index: 1000;
    margin-top: var(--space-2);
    opacity: 0;
    visibility: hidden;
    transform: translateY(-8px);
    transition: opacity 0.2s ease, transform 0.2s ease, visibility 0.2s;
}

.aural-color-picker-popover--open {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
}

/* ========================================
   Accessibility
   ======================================== */

@media (prefers-reduced-motion: reduce) {
    .aural-color-picker__swatch,
    .aural-color-picker__preset,
    .aural-color-picker__mode,
    .aural-color-picker__eyedropper,
    .aural-color-picker-trigger,
    .aural-color-picker-popover {
        transition: none;
    }

    .aural-color-picker__hue-handle,
    .aural-color-picker__alpha-handle {
        transition: none;
    }
}

/* Screen reader only */

.aural-color-picker__sr-label {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border-width: 0;
}

/* ========================================
   Responsive
   ======================================== */

@media (max-width: 640px) {
    .aural-color-picker {
        width: 100%;
        max-width: 320px;
    }

    .aural-color-picker__preset-grid,
    .aural-color-picker__recent-grid {
        grid-template-columns: repeat(6, 1fr);
    }
}

/* ========================================
   Touch Optimizations
   ======================================== */

@media (pointer: coarse) {
    /* Larger touch targets for hue/alpha sliders */
    .aural-color-picker__hue {
        height: 44px;
        padding: 16px 0;
    }

    .aural-color-picker__alpha {
        height: 44px;
        padding: 16px 0;
    }

    /* Larger handles for touch devices */
    .aural-color-picker__hue-handle,
    .aural-color-picker__alpha-handle {
        width: 28px;
        height: 28px;
    }

    /* Larger cursor for canvas */
    .aural-color-picker__cursor {
        width: 24px;
        height: 24px;
        border-width: 3px;
    }

    /* Ensure preset buttons are touch-friendly */
    .aural-color-picker__preset {
        min-width: 44px;
        min-height: 44px;
    }

    /* Larger mode buttons for touch */
    .aural-color-picker__mode {
        min-height: 44px;
        padding: var(--space-2) var(--space-3);
    }

    /* More comfortable canvas height on touch devices */
    .aural-color-picker__canvas {
        height: 180px;
    }
}

/**
 * AURAL UI - Range Slider
 *
 * Dual-handle slider for selecting min/max range values.
 * Based on the slider component with identical styling and accessibility.
 */

/* ========================================
   Base Range Slider Container
   ======================================== */

.aural-range-slider {
    position: relative;
    width: 100%;
    display: flex;
    flex-direction: column;
    gap: var(--space-2);
}

.aural-range-slider__label-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.aural-range-slider__label {
    font-size: var(--text-sm);
    color: var(--color-text-secondary);
    font-weight: var(--font-medium);
}

/* ========================================
   Range Slider Track Container
   ======================================== */

.aural-range-slider__wrapper {
    position: relative;
    width: 100%;
    height: 44px;
    display: flex;
    align-items: center;
}

.aural-range-slider__track-bg {
    position: absolute;
    width: 100%;
    height: 6px;
    background: var(--color-bg-tertiary);
    border-radius: var(--radius-full);
    top: 50%;
    transform: translateY(-50%);
}

.aural-range-slider__track-fill {
    position: absolute;
    height: 6px;
    background: var(--color-primary);
    border-radius: var(--radius-full);
    top: 50%;
    transform: translateY(-50%);
    transition: background-color 0.2s ease;
}

/* ========================================
   Range Handles (identical to slider thumb)
   ======================================== */

.aural-range-slider__handle {
    position: absolute;
    top: 50%;
    width: 1.25rem;
    height: 1.25rem;
    background: var(--color-primary);
    border: 3px solid var(--color-bg-primary);
    border-radius: var(--radius-full);
    box-shadow: var(--shadow-sm);
    cursor: pointer;
    transform: translate(-50%, -50%);
    transition: all 0.2s ease;
    z-index: 2;
}

.aural-range-slider__handle:hover {
    box-shadow: var(--glow-primary-sm), var(--shadow-md);
    transform: translate(-50%, -50%) scale(1.1);
}

.aural-range-slider__handle:active {
    transform: translate(-50%, -50%) scale(0.95);
}

.aural-range-slider__handle:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}

/* Handle label (value inside the handle) - hidden by default */

.aural-range-slider__handle .aural-range-slider__label {
    display: none;
}

.aural-range-slider__handle--min {
    z-index: 3;
}

.aural-range-slider__handle--max {
    z-index: 3;
}

/* Active handle has higher z-index */

.aural-range-slider__handle--active {
    z-index: 4;
}

/* ========================================
   Value Display (matching slider)
   ======================================== */

.aural-range-slider__values {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: var(--space-2);
}

.aural-range-slider__value {
    font-size: var(--text-sm);
    color: var(--color-primary);
    font-weight: var(--font-semibold);
    min-width: 2.5rem;
}

.aural-range-slider__value--min {
    text-align: left;
}

.aural-range-slider__value--max {
    text-align: right;
}

.aural-range-slider__value-label {
    font-size: var(--text-xs);
    color: var(--color-text-tertiary);
    font-weight: var(--font-medium);
    margin-right: var(--space-1);
}

/* ========================================
   Input Fields (for manual value entry)
   ======================================== */

.aural-range-slider__inputs {
    display: flex;
    gap: var(--space-3);
    margin-bottom: var(--space-3);
}

.aural-range-slider__input-group {
    display: flex;
    flex-direction: column;
    gap: var(--space-1);
    flex: 1;
}

.aural-range-slider__input-label {
    font-size: var(--text-xs);
    color: var(--color-text-secondary);
    font-weight: var(--font-medium);
}

.aural-range-slider__input {
    width: 100%;
    min-height: 36px;
    padding: var(--space-2) var(--space-3);
    background: var(--color-bg-primary);
    color: var(--color-text-primary);
    border: 1px solid var(--color-border-medium);
    border-radius: var(--radius-md);
    font-size: var(--text-sm);
    font-family: inherit;
    transition: var(--transition-all-fast);
}

.aural-range-slider__input:hover {
    border-color: var(--color-primary);
    background: var(--color-bg-hover);
}

.aural-range-slider__input:focus {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
    border-color: var(--color-primary);
}

.aural-range-slider__input::-moz-placeholder {
    color: var(--color-text-secondary);
}

.aural-range-slider__input::placeholder {
    color: var(--color-text-secondary);
}

/* ========================================
   Min/Max Labels
   ======================================== */

.aural-range-slider__limits {
    display: flex;
    justify-content: space-between;
    font-size: var(--text-xs);
    color: var(--color-text-muted);
    margin-top: var(--space-1);
}

/* ========================================
   Size Variants (matching slider exactly)
   ======================================== */

/* Small */

.aural-range-slider--sm .aural-range-slider__track-bg,
.aural-range-slider--sm .aural-range-slider__track-fill {
    height: 4px;
}

.aural-range-slider--sm .aural-range-slider__handle {
    width: 1rem;
    height: 1rem;
}

/* Large */

.aural-range-slider--lg .aural-range-slider__track-bg,
.aural-range-slider--lg .aural-range-slider__track-fill {
    height: 8px;
}

.aural-range-slider--lg .aural-range-slider__handle {
    width: 1.5rem;
    height: 1.5rem;
}

/* ========================================
   Color Variants (matching slider)
   ======================================== */

/* Success */

.aural-range-slider--success .aural-range-slider__track-fill {
    background: var(--color-success);
}

.aural-range-slider--success .aural-range-slider__handle {
    background: var(--color-success);
}

.aural-range-slider--success .aural-range-slider__value {
    color: var(--color-success);
}

.aural-range-slider--success .aural-range-slider__handle:hover {
    box-shadow: var(--glow-success-md), var(--shadow-md);
}

/* Warning */

.aural-range-slider--warning .aural-range-slider__track-fill {
    background: var(--color-warning);
}

.aural-range-slider--warning .aural-range-slider__handle {
    background: var(--color-warning);
}

.aural-range-slider--warning .aural-range-slider__value {
    color: var(--color-warning);
}

.aural-range-slider--warning .aural-range-slider__handle:hover {
    box-shadow: var(--glow-warning-md), var(--shadow-md);
}

/* Error */

.aural-range-slider--error .aural-range-slider__track-fill {
    background: var(--color-error);
}

.aural-range-slider--error .aural-range-slider__handle {
    background: var(--color-error);
}

.aural-range-slider--error .aural-range-slider__value {
    color: var(--color-error);
}

.aural-range-slider--error .aural-range-slider__handle:hover {
    box-shadow: var(--glow-error-md), var(--shadow-md);
}

/* ========================================
   Vertical Orientation (matching slider)
   ======================================== */

.aural-range-slider--vertical {
    width: auto;
    height: 250px;
    flex-direction: row;
    align-items: center;
    gap: var(--space-4);
}

.aural-range-slider--vertical .aural-range-slider__label-row {
    flex-direction: column;
    gap: var(--space-2);
    writing-mode: vertical-rl;
    text-orientation: mixed;
}

.aural-range-slider--vertical .aural-range-slider__label {
    writing-mode: horizontal-tb;
}

.aural-range-slider--vertical .aural-range-slider__wrapper {
    height: 100%;
    width: 44px;
    min-height: 200px;
    flex-direction: column;
}

.aural-range-slider--vertical .aural-range-slider__track-bg,
.aural-range-slider--vertical .aural-range-slider__track-fill {
    width: 6px;
    height: auto;
    left: 50%;
    transform: translateX(-50%);
    top: auto;
}

.aural-range-slider--vertical .aural-range-slider__track-bg {
    height: 100%;
}

.aural-range-slider--vertical .aural-range-slider__handle {
    left: 50%;
    top: auto;
    transform: translate(-50%, 50%);
}

.aural-range-slider--vertical .aural-range-slider__handle:hover {
    transform: translate(-50%, 50%) scale(1.1);
}

.aural-range-slider--vertical .aural-range-slider__handle:active {
    transform: translate(-50%, 50%) scale(0.95);
}

.aural-range-slider--vertical .aural-range-slider__values {
    flex-direction: column;
    align-items: flex-start;
}

.aural-range-slider--vertical .aural-range-slider__value {
    writing-mode: horizontal-tb;
    text-align: center;
}

.aural-range-slider--vertical .aural-range-slider__limits {
    flex-direction: column-reverse;
    margin-top: 0;
    margin-left: var(--space-1);
}

.aural-range-slider--vertical.aural-range-slider--sm .aural-range-slider__track-bg,
.aural-range-slider--vertical.aural-range-slider--sm .aural-range-slider__track-fill {
    width: 4px;
}

.aural-range-slider--vertical.aural-range-slider--lg .aural-range-slider__track-bg,
.aural-range-slider--vertical.aural-range-slider--lg .aural-range-slider__track-fill {
    width: 8px;
}

/* ========================================
   Disabled State
   ======================================== */

.aural-range-slider--disabled {
    opacity: 0.5;
    pointer-events: none;
}

.aural-range-slider--disabled .aural-range-slider__handle {
    cursor: not-allowed;
}

/* ========================================
   Step Markers (matching slider)
   ======================================== */

.aural-range-slider__steps {
    position: absolute;
    inset: 0;
    display: flex;
    justify-content: space-between;
    align-items: center;
    pointer-events: none;
}

.aural-range-slider__step {
    width: 2px;
    height: 0.5rem;
    background: var(--color-border);
    border-radius: var(--radius-sm);
}

.aural-range-slider__step--in-range {
    background: var(--primary-alpha-50);
}

.aural-range-slider--vertical .aural-range-slider__steps {
    flex-direction: column;
}

.aural-range-slider--vertical .aural-range-slider__step {
    width: 0.5rem;
    height: 2px;
}

/* ========================================
   Accessibility
   ======================================== */

@media (prefers-reduced-motion: reduce) {
    .aural-range-slider__handle,
    .aural-range-slider__track-fill {
        transition: none;
    }
}

/* Screen reader only */

.aural-range-slider__sr-label {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border-width: 0;
}

/* ========================================
   Responsive
   ======================================== */

@media (max-width: 640px) {
    .aural-range-slider__handle {
        width: 1.5rem;
        height: 1.5rem;
    }

    .aural-range-slider--sm .aural-range-slider__handle {
        width: 1.25rem;
        height: 1.25rem;
    }
}

/* ========================================
   Touch Optimizations
   ======================================== */

@media (pointer: coarse) {
    .aural-range-slider__handle {
        width: 44px;
        height: 44px;
    }

    .aural-range-slider__wrapper {
        height: 48px;
    }

    .aural-range-slider__track-bg,
    .aural-range-slider__track-fill {
        height: 8px;
    }

    .aural-range-slider--vertical .aural-range-slider__wrapper {
        width: 48px;
    }

    .aural-range-slider--vertical .aural-range-slider__track-bg,
    .aural-range-slider--vertical .aural-range-slider__track-fill {
        width: 8px;
    }
}

/**
 * AURAL UI - Multi-Select Dropdown
 *
 * Select multiple options with chips/tags display.
 * Supports search/filter, checkboxes, select all, and keyboard navigation.
 */

/* ========================================
   Multi-Select Container
   ======================================== */

.aural-multi-select {
    position: relative;
    width: 100%;
}

/* ========================================
   Multi-Select Trigger
   ======================================== */

.aural-multi-select__trigger {
    display: flex;
    align-items: center;
    justify-content: flex-start;
    flex-wrap: wrap;
    gap: var(--space-2);
    min-height: 44px;
    padding: var(--space-2) var(--space-3);
    background: var(--color-bg-primary);
    border: 1px solid var(--color-border-medium);
    border-radius: var(--radius-md);
    cursor: pointer;
    transition: var(--transition-all-fast);
}

.aural-multi-select__trigger:hover {
    border-color: var(--color-primary);
    background: var(--color-bg-hover);
}

.aural-multi-select__trigger:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}

.aural-multi-select--open .aural-multi-select__trigger {
    border-top-color: var(--color-primary);
    border-left-color: var(--color-primary);
    border-right-color: var(--color-primary);
    border-bottom-color: var(--color-primary);
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;
}

/* ========================================
   Selected Tags/Chips
   ======================================== */

.aural-multi-select__tags {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-2);
    flex: 1 1 auto;
    min-width: 0;
}

.aural-multi-select__tag {
    display: inline-flex;
    align-items: center;
    gap: var(--space-1);
    padding: 2px 6px;
    background: var(--primary-alpha-10);
    color: var(--color-primary);
    border-radius: var(--radius-sm);
    font-size: var(--text-xs);
    font-weight: var(--font-medium);
    line-height: 1.5;
}

.aural-multi-select__tag-remove {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 2px;
    background: transparent;
    color: var(--color-primary);
    border: none;
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: var(--transition-all-fast);
}

.aural-multi-select__tag-remove:hover {
    background: var(--primary-alpha-20);
}

.aural-multi-select__tag-remove svg {
    width: 12px;
    height: 12px;
}

/* ========================================
   Placeholder
   ======================================== */

.aural-multi-select__placeholder {
    color: var(--color-text-muted);
    font-size: var(--text-sm);
    flex: 0 1 auto;
    text-align: left;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 100%;
    margin-right: auto;
}

.aural-multi-select__tags:not(:empty) + .aural-multi-select__placeholder {
    display: none;
}

.aural-multi-select__tags:empty {
    display: none;
}

/* ========================================
   Arrow Icon
   ======================================== */

.aural-multi-select__arrow {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 20px;
    height: 20px;
    color: var(--color-text-secondary);
    transition: transform 0.2s ease;
}

.aural-multi-select--open .aural-multi-select__arrow {
    transform: rotate(180deg);
}

.aural-multi-select__arrow svg {
    width: 16px;
    height: 16px;
}

/* ========================================
   Clear Button
   ======================================== */

.aural-multi-select__clear {
    display: none;
    align-items: center;
    justify-content: center;
    min-width: 20px;
    min-height: 20px;
    padding: 2px;
    background: transparent;
    color: var(--color-text-secondary);
    border: none;
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: var(--transition-all-fast);
}

.aural-multi-select__tags:not(:empty) ~ .aural-multi-select__clear {
    display: flex;
}

.aural-multi-select__clear:hover {
    background: var(--color-bg-hover);
    color: var(--color-error);
}

.aural-multi-select__clear svg {
    width: 14px;
    height: 14px;
}

/* ========================================
   Dropdown
   ======================================== */

.aural-multi-select__dropdown {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    z-index: 1000;
    max-height: 0;
    overflow: hidden;
    background: var(--color-bg-primary);
    border: none;
    border-radius: 0 0 var(--radius-md) var(--radius-md);
    box-shadow: var(--shadow-lg);
    transition: max-height 0.3s ease;
}

.aural-multi-select--open .aural-multi-select__dropdown {
    max-height: 300px;
    border-left: 1px solid var(--color-border-medium);
    border-right: 1px solid var(--color-border-medium);
    border-bottom: 1px solid var(--color-border-medium);
}

/* ========================================
   Search Input
   ======================================== */

.aural-multi-select__search {
    position: -webkit-sticky;
    position: sticky;
    top: 0;
    z-index: 10;
    background: var(--color-bg-primary);
    border-bottom: 1px solid var(--color-border-subtle);
}

.aural-multi-select__search-input {
    width: 100%;
    padding: var(--space-2) var(--space-3);
    background: transparent;
    border: none;
    font-size: var(--text-sm);
    color: var(--color-text-primary);
}

.aural-multi-select__search-input:focus {
    outline: none;
}

.aural-multi-select__search-input::-moz-placeholder {
    color: var(--color-text-muted);
}

.aural-multi-select__search-input::placeholder {
    color: var(--color-text-muted);
}

/* ========================================
   Options List
   ======================================== */

.aural-multi-select__options {
    max-height: 240px;
    overflow-y: auto;
    padding: var(--space-1) 0;
}

.aural-multi-select__options::-webkit-scrollbar {
    width: 8px;
}

.aural-multi-select__options::-webkit-scrollbar-track {
    background: var(--color-bg-tertiary);
}

.aural-multi-select__options::-webkit-scrollbar-thumb {
    background: var(--color-border-medium);
    border-radius: var(--radius-sm);
}

/* ========================================
   Option Item
   ======================================== */

.aural-multi-select__option {
    display: flex;
    align-items: center;
    gap: var(--space-3);
    padding: var(--space-2) var(--space-3);
    background: transparent;
    color: var(--color-text-primary);
    border: none;
    text-align: left;
    font-size: var(--text-sm);
    cursor: pointer;
    transition: var(--transition-all-fast);
    width: 100%;
}

.aural-multi-select__option:hover {
    background: var(--color-bg-hover);
    color: var(--color-primary);
}

.aural-multi-select__option:focus-visible {
    outline: none;
    background: var(--color-bg-hover);
}

.aural-multi-select__option--selected {
    background: var(--primary-alpha-10);
    font-weight: var(--font-semibold);
}

.aural-multi-select__option--disabled {
    opacity: 0.5;
    cursor: not-allowed;
    pointer-events: none;
}

/* ========================================
   Option Checkbox
   ======================================== */

.aural-multi-select__checkbox {
    flex-shrink: 0;
    width: 18px;
    height: 18px;
    background: var(--color-bg-secondary);
    border: 2px solid var(--color-border-medium);
    border-radius: var(--radius-sm);
    transition: var(--transition-all-fast);
    position: relative;
}

.aural-multi-select__option--selected .aural-multi-select__checkbox {
    background: var(--color-primary);
    border-color: var(--color-primary);
}

.aural-multi-select__checkbox svg {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    color: white;
    opacity: 0;
    transition: opacity 0.2s ease;
}

.aural-multi-select__option--selected .aural-multi-select__checkbox svg {
    opacity: 1;
}

/* ========================================
   Option Label
   ======================================== */

.aural-multi-select__option-label {
    flex: 1;
}

/* ========================================
   Option Icon
   ======================================== */

.aural-multi-select__option-icon {
    flex-shrink: 0;
    width: 20px;
    height: 20px;
    color: var(--color-text-secondary);
}

.aural-multi-select__option:hover .aural-multi-select__option-icon {
    color: var(--color-primary);
}

/* ========================================
   Select All Option
   ======================================== */

.aural-multi-select__select-all {
    position: -webkit-sticky;
    position: sticky;
    top: 0;
    z-index: 10;
    background: var(--color-bg-primary);
    border-bottom: 1px solid var(--color-border-subtle);
    font-weight: var(--font-semibold);
}

/* ========================================
   Option Group
   ======================================== */

.aural-multi-select__group-label {
    padding: var(--space-2) var(--space-3);
    font-size: var(--text-xs);
    font-weight: var(--font-semibold);
    color: var(--color-text-tertiary);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

/* ========================================
   Empty State
   ======================================== */

.aural-multi-select__empty {
    padding: var(--space-6) var(--space-4);
    text-align: center;
    color: var(--color-text-tertiary);
    font-size: var(--text-sm);
}

.aural-multi-select__empty-icon {
    width: 48px;
    height: 48px;
    margin: 0 auto var(--space-2);
    color: var(--color-text-muted);
}

/* ========================================
   Selected Count Badge
   ======================================== */

.aural-multi-select__count {
    flex-shrink: 0;
    padding: 2px 6px;
    background: var(--primary-alpha-10);
    color: var(--color-primary);
    border-radius: var(--radius-full);
    font-size: var(--text-xs);
    font-weight: var(--font-bold);
    line-height: 1;
}

/* ========================================
   Disabled State
   ======================================== */

.aural-multi-select--disabled {
    opacity: 0.5;
    pointer-events: none;
}

.aural-multi-select--disabled .aural-multi-select__trigger {
    cursor: not-allowed;
    background: var(--color-bg-tertiary);
}

/* ========================================
   Size Variants
   ======================================== */

.aural-multi-select--sm .aural-multi-select__trigger {
    min-height: 36px;
    padding: var(--space-1) var(--space-2);
}

.aural-multi-select--sm .aural-multi-select__tag {
    font-size: 0.65rem;
}

.aural-multi-select--lg .aural-multi-select__trigger {
    min-height: 52px;
    padding: var(--space-3) var(--space-4);
}

.aural-multi-select--lg .aural-multi-select__tag {
    padding: 4px 8px;
    font-size: var(--text-sm);
}

/* ========================================
   Error State
   ======================================== */

.aural-multi-select--error .aural-multi-select__trigger {
    border-color: var(--color-error);
}

.aural-multi-select--error .aural-multi-select__trigger:hover,
.aural-multi-select--error .aural-multi-select__trigger:focus-visible {
    border-color: var(--color-error);
}

/* ========================================
   Success State
   ======================================== */

.aural-multi-select--success .aural-multi-select__trigger {
    border-color: var(--color-success);
}

/* ========================================
   Compact Tags (show count instead)
   ======================================== */

.aural-multi-select--compact-tags .aural-multi-select__tags {
    display: none;
}

.aural-multi-select--compact-tags .aural-multi-select__count {
    display: flex;
}

.aural-multi-select--compact-tags .aural-multi-select__placeholder {
    display: block;
}

/* ========================================
   Accessibility
   ======================================== */

@media (prefers-reduced-motion: reduce) {
    .aural-multi-select__trigger,
    .aural-multi-select__dropdown,
    .aural-multi-select__option,
    .aural-multi-select__checkbox,
    .aural-multi-select__arrow {
        transition: none;
    }
}

/* Screen reader only */

.aural-multi-select__sr-label {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border-width: 0;
}

/* ========================================
   Responsive
   ======================================== */

@media (max-width: 640px) {
    .aural-multi-select__dropdown {
        position: fixed;
        top: auto;
        bottom: 0;
        left: 0;
        right: 0;
        max-height: 70vh;
        border-radius: var(--radius-lg) var(--radius-lg) 0 0;
        border: 1px solid var(--color-border-medium);
        border-bottom: none;
    }

    .aural-multi-select--open .aural-multi-select__dropdown {
        max-height: 70vh;
    }

    .aural-multi-select--open .aural-multi-select__trigger {
        border-radius: var(--radius-md);
    }
}

/**
 * AURAL UI - Combobox
 *
 * Combination of input and dropdown with autocomplete/search.
 * Features: Type-ahead filtering, keyboard navigation, async loading, creatable options.
 */

/* ========================================
   Combobox Container
   ======================================== */

.aural-combobox {
    position: relative;
    width: 100%;
}

/* ========================================
   Label
   ======================================== */

.aural-combobox__label {
    display: block;
    font-size: var(--text-sm);
    font-weight: var(--font-medium);
    color: var(--color-text-primary);
    margin-bottom: var(--space-1);
}

/* ========================================
   Input Wrapper
   ======================================== */

.aural-combobox__wrapper {
    position: relative;
    display: flex;
    align-items: center;
}

.aural-combobox__input {
    flex: 1;
    min-height: 44px;
    padding: var(--space-2) var(--space-3);
    padding-right: var(--space-10);
    background: var(--color-bg-primary);
    border: 1px solid var(--color-border-medium);
    border-radius: var(--radius-md);
    font-size: var(--text-sm);
    color: var(--color-text-primary);
    transition: var(--transition-all-fast);
}

.aural-combobox__input:hover {
    border-color: var(--color-primary);
    background: var(--color-bg-hover);
}

.aural-combobox__input:focus {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
    border-color: var(--color-primary);
}

.aural-combobox__input::-moz-placeholder {
    color: var(--color-text-muted);
}

.aural-combobox__input::placeholder {
    color: var(--color-text-muted);
}

.aural-combobox--open .aural-combobox__input {
    border-top-color: var(--color-primary);
    border-left-color: var(--color-primary);
    border-right-color: var(--color-primary);
    border-bottom-color: var(--color-primary);
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;
}

/* ========================================
   Icons Container
   ======================================== */

.aural-combobox__icons {
    position: absolute;
    right: var(--space-3);
    top: 50%;
    transform: translateY(-50%);
    display: flex;
    align-items: center;
    gap: var(--space-1);
}

/* ========================================
   Clear Button
   ======================================== */

.aural-combobox__clear {
    display: none;
    align-items: center;
    justify-content: center;
    min-width: 24px;
    min-height: 24px;
    padding: 2px;
    background: transparent;
    color: var(--color-text-secondary);
    border: none;
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: var(--transition-all-fast);
}

.aural-combobox--has-value .aural-combobox__clear {
    display: flex;
}

.aural-combobox__clear:hover {
    background: var(--color-bg-hover);
    color: var(--color-error);
}

.aural-combobox__clear svg {
    width: 14px;
    height: 14px;
}

/* ========================================
   Dropdown Arrow
   ======================================== */

.aural-combobox__arrow {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 20px;
    height: 20px;
    color: var(--color-text-secondary);
    background: transparent;
    border: none;
    transition: transform 0.2s ease;
    cursor: pointer;
}

.aural-combobox--open .aural-combobox__arrow {
    transform: rotate(180deg);
}

.aural-combobox__arrow svg {
    width: 16px;
    height: 16px;
}

/* ========================================
   Loading Spinner
   ======================================== */

.aural-combobox__spinner {
    display: none;
    width: 16px;
    height: 16px;
    border: 2px solid var(--color-border-medium);
    border-top-color: var(--color-primary);
    border-radius: 50%;
    animation: aural-combobox-spin 0.6s linear infinite;
}

.aural-combobox--loading .aural-combobox__spinner {
    display: block;
}

.aural-combobox--loading .aural-combobox__arrow {
    display: none;
}

@keyframes aural-combobox-spin {
    to {
        transform: rotate(360deg);
    }
}

/* ========================================
   Dropdown
   ======================================== */

.aural-combobox__dropdown {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    z-index: 1000;
    max-height: 0;
    overflow: hidden;
    background: var(--color-bg-primary);
    border: none;
    border-radius: 0 0 var(--radius-md) var(--radius-md);
    box-shadow: var(--shadow-lg);
    transition: max-height 0.3s ease;
}

.aural-combobox--open .aural-combobox__dropdown {
    max-height: 300px;
    border-left: 1px solid var(--color-border-medium);
    border-right: 1px solid var(--color-border-medium);
    border-bottom: 1px solid var(--color-border-medium);
}

/* ========================================
   Options List
   ======================================== */

.aural-combobox__options {
    max-height: 280px;
    overflow-y: auto;
    padding: var(--space-1) 0;
}

.aural-combobox__options::-webkit-scrollbar {
    width: 8px;
}

.aural-combobox__options::-webkit-scrollbar-track {
    background: var(--color-bg-tertiary);
}

.aural-combobox__options::-webkit-scrollbar-thumb {
    background: var(--color-border-medium);
    border-radius: var(--radius-sm);
}

/* ========================================
   Option Item
   ======================================== */

.aural-combobox__option {
    display: flex;
    align-items: center;
    gap: var(--space-3);
    min-height: 40px;
    padding: var(--space-2) var(--space-3);
    background: transparent;
    color: var(--color-text-primary);
    border: none;
    text-align: left;
    font-size: var(--text-sm);
    cursor: pointer;
    transition: var(--transition-all-fast);
    width: 100%;
}

.aural-combobox__option:hover {
    background: var(--color-bg-hover);
    color: var(--color-primary);
}

.aural-combobox__option:focus-visible {
    outline: none;
    background: var(--color-bg-hover);
    box-shadow: inset 2px 0 0 var(--color-primary);
}

.aural-combobox__option--selected {
    background: var(--primary-alpha-10);
    font-weight: var(--font-semibold);
    color: var(--color-primary);
}

.aural-combobox__option--highlighted {
    background: var(--color-bg-hover);
}

.aural-combobox__option--disabled {
    opacity: 0.5;
    cursor: not-allowed;
    pointer-events: none;
}

/* ========================================
   Option Icon
   ======================================== */

.aural-combobox__option-icon {
    flex-shrink: 0;
    width: 20px;
    height: 20px;
    color: var(--color-text-secondary);
}

.aural-combobox__option:hover .aural-combobox__option-icon,
.aural-combobox__option--selected .aural-combobox__option-icon {
    color: var(--color-primary);
}

/* ========================================
   Option Content
   ======================================== */

.aural-combobox__option-content {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.aural-combobox__option-label {
    font-size: var(--text-sm);
    line-height: 1.4;
}

.aural-combobox__option-description {
    font-size: var(--text-xs);
    color: var(--color-text-tertiary);
    line-height: 1.3;
}

/* ========================================
   Option Check Mark
   ======================================== */

.aural-combobox__option-check {
    flex-shrink: 0;
    width: 18px;
    height: 18px;
    color: var(--color-primary);
    opacity: 0;
    transition: opacity 0.2s ease;
}

.aural-combobox__option--selected .aural-combobox__option-check {
    opacity: 1;
}

/* ========================================
   Highlight Matching Text
   ======================================== */

.aural-combobox__option-label mark {
    background: var(--warning-alpha-20);
    color: var(--color-text-primary);
    font-weight: var(--font-semibold);
    padding: 0 2px;
    border-radius: 2px;
}

/* ========================================
   Group
   ======================================== */

.aural-combobox__group-label {
    display: flex;
    align-items: center;
    padding: var(--space-2) var(--space-3);
    font-size: var(--text-xs);
    font-weight: var(--font-semibold);
    color: var(--color-text-tertiary);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    background: var(--color-bg-tertiary);
    position: -webkit-sticky;
    position: sticky;
    top: 0;
    z-index: 10;
}

/* ========================================
   Divider
   ======================================== */

.aural-combobox__divider {
    height: 1px;
    background: var(--color-border-subtle);
    margin: var(--space-1) 0;
}

/* ========================================
   Empty State
   ======================================== */

.aural-combobox__empty {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: var(--space-6) var(--space-4);
    text-align: center;
    color: var(--color-text-tertiary);
}

.aural-combobox__empty-icon {
    width: 48px;
    height: 48px;
    margin-bottom: var(--space-2);
    color: var(--color-text-muted);
}

.aural-combobox__empty-text {
    font-size: var(--text-sm);
}

/* ========================================
   Create Option
   ======================================== */

.aural-combobox__create {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    padding: var(--space-2) var(--space-3);
    background: var(--color-bg-tertiary);
    color: var(--color-primary);
    border: none;
    border-top: 1px solid var(--color-border-subtle);
    text-align: left;
    font-size: var(--text-sm);
    font-weight: var(--font-medium);
    cursor: pointer;
    transition: var(--transition-all-fast);
    width: 100%;
    position: -webkit-sticky;
    position: sticky;
    bottom: 0;
    z-index: 10;
}

.aural-combobox__create:hover {
    background: var(--primary-alpha-10);
}

.aural-combobox__create svg {
    width: 16px;
    height: 16px;
}

.aural-combobox__create-value {
    font-weight: var(--font-semibold);
}

/* ========================================
   Helper Text
   ======================================== */

.aural-combobox__helper {
    display: flex;
    align-items: center;
    gap: var(--space-1);
    margin-top: var(--space-1);
    font-size: var(--text-xs);
    color: var(--color-text-tertiary);
}

.aural-combobox__helper svg {
    width: 14px;
    height: 14px;
    flex-shrink: 0;
}

/* ========================================
   Error State
   ======================================== */

.aural-combobox--error .aural-combobox__input {
    border-color: var(--color-error);
}

.aural-combobox--error .aural-combobox__input:focus {
    box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.1);
}

.aural-combobox__error {
    display: flex;
    align-items: center;
    gap: var(--space-1);
    margin-top: var(--space-1);
    font-size: var(--text-xs);
    color: var(--color-error);
}

.aural-combobox__error svg {
    width: 14px;
    height: 14px;
    flex-shrink: 0;
}

/* ========================================
   Success State
   ======================================== */

.aural-combobox--success .aural-combobox__input {
    border-color: var(--color-success);
}

/* ========================================
   Disabled State
   ======================================== */

.aural-combobox--disabled {
    opacity: 0.5;
    pointer-events: none;
}

.aural-combobox--disabled .aural-combobox__input {
    background: var(--color-bg-tertiary);
    cursor: not-allowed;
}

/* ========================================
   Size Variants
   ======================================== */

.aural-combobox--sm .aural-combobox__input {
    min-height: 36px;
    padding: var(--space-1) var(--space-2);
    padding-right: var(--space-8);
    font-size: var(--text-xs);
}

.aural-combobox--sm .aural-combobox__option {
    min-height: 32px;
    padding: var(--space-1) var(--space-2);
}

.aural-combobox--lg .aural-combobox__input {
    min-height: 52px;
    padding: var(--space-3) var(--space-4);
    padding-right: var(--space-12);
    font-size: var(--text-base);
}

.aural-combobox--lg .aural-combobox__option {
    min-height: 48px;
    padding: var(--space-3) var(--space-4);
}

/* ========================================
   Prefix Icon
   ======================================== */

.aural-combobox--has-prefix .aural-combobox__input {
    padding-left: var(--space-10);
}

.aural-combobox__prefix {
    position: absolute;
    left: var(--space-3);
    top: 50%;
    transform: translateY(-50%);
    display: flex;
    align-items: center;
    justify-content: center;
    width: 20px;
    height: 20px;
    color: var(--color-text-secondary);
    pointer-events: none;
}

.aural-combobox__prefix svg {
    width: 18px;
    height: 18px;
}

/* ========================================
   Accessibility
   ======================================== */

@media (prefers-reduced-motion: reduce) {
    .aural-combobox__dropdown,
    .aural-combobox__option,
    .aural-combobox__arrow,
    .aural-combobox__spinner {
        transition: none;
        animation: none;
    }
}

/* Screen reader only */

.aural-combobox__sr-label {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border-width: 0;
}

/* ========================================
   Responsive
   ======================================== */

@media (max-width: 640px) {
    .aural-combobox__dropdown {
        position: fixed;
        top: auto;
        bottom: 0;
        left: 0;
        right: 0;
        border-radius: var(--radius-lg) var(--radius-lg) 0 0;
        border: 1px solid var(--color-border-medium);
        border-bottom: none;
    }

    .aural-combobox--open .aural-combobox__dropdown {
        max-height: 70vh;
    }

    .aural-combobox--open .aural-combobox__input {
        border-radius: var(--radius-md);
    }

    .aural-combobox__options {
        max-height: calc(70vh - 60px);
    }
}

/**
 * AURAL UI - Time Picker
 *
 * Time selection component with AM/PM support.
 * Features: 12/24 hour format, manual input, dropdown selection, keyboard navigation.
 */

/* ========================================
   Time Picker Container
   ======================================== */

.aural-time-picker {
    position: relative;
    display: inline-flex;
    flex-direction: column;
    gap: var(--space-2);
    width: 100%;
    max-width: 300px;
}

/* ========================================
   Label
   ======================================== */

.aural-time-picker__label {
    display: block;
    font-size: var(--text-sm);
    font-weight: var(--font-medium);
    color: var(--color-text-primary);
    margin-bottom: var(--space-1);
}

/* ========================================
   Input Container
   ======================================== */

.aural-time-picker__input-wrapper {
    position: relative;
    display: flex;
    align-items: center;
    gap: var(--space-2);
}

.aural-time-picker__input {
    flex: 1;
    min-height: 44px;
    padding: var(--space-2) var(--space-3);
    padding-right: var(--space-10);
    background: var(--color-bg-primary);
    border: 1px solid var(--color-border-medium);
    border-radius: var(--radius-md);
    font-size: var(--text-sm);
    color: var(--color-text-primary);
    font-family: var(--font-mono);
    letter-spacing: 0.05em;
    transition: var(--transition-all-fast);
}

.aural-time-picker__input:hover {
    border-color: var(--color-primary);
    background: var(--color-bg-hover);
}

.aural-time-picker__input:focus {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
    border-color: var(--color-primary);
}

.aural-time-picker__input::-moz-placeholder {
    color: var(--color-text-muted);
    font-family: var(--font-sans);
    letter-spacing: normal;
}

.aural-time-picker__input::placeholder {
    color: var(--color-text-muted);
    font-family: var(--font-sans);
    letter-spacing: normal;
}

/* ========================================
   Clock Icon
   ======================================== */

.aural-time-picker__icon {
    position: absolute;
    right: var(--space-3);
    top: 50%;
    transform: translateY(-50%);
    width: 20px;
    height: 20px;
    color: var(--color-text-secondary);
    pointer-events: none;
    transition: var(--transition-all-fast);
}

.aural-time-picker__input:focus ~ .aural-time-picker__icon {
    color: var(--color-primary);
}

/* ========================================
   Dropdown Toggle
   ======================================== */

.aural-time-picker__toggle {
    position: absolute;
    right: var(--space-3);
    top: 50%;
    transform: translateY(-50%);
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 32px;
    min-height: 32px;
    padding: var(--space-1);
    background: transparent;
    color: var(--color-text-secondary);
    border: none;
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: var(--transition-all-fast);
}

.aural-time-picker__toggle:hover {
    background: var(--color-bg-hover);
    color: var(--color-primary);
}

.aural-time-picker__toggle svg {
    width: 18px;
    height: 18px;
}

/* ========================================
   Dropdown Panel
   ======================================== */

.aural-time-picker__dropdown {
    position: absolute;
    top: calc(100% + 4px);
    left: 0;
    z-index: 1000;
    min-width: 240px;
    background: var(--color-bg-secondary);
    border: 1px solid var(--color-border-medium);
    border-radius: var(--radius-md);
    box-shadow: var(--shadow-xl);
    opacity: 0;
    visibility: hidden;
    transform: translateY(-8px);
    transition: opacity 0.2s ease, transform 0.2s ease, visibility 0.2s;
}

.aural-time-picker--open .aural-time-picker__dropdown {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
}

/* ========================================
   Time Selectors
   ======================================== */

.aural-time-picker__selectors {
    display: flex;
    gap: var(--space-2);
    padding: var(--space-3);
}

.aural-time-picker__selector {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: var(--space-1);
}

.aural-time-picker__selector-label {
    font-size: var(--text-xs);
    font-weight: var(--font-semibold);
    color: var(--color-text-tertiary);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    text-align: center;
}

/* ========================================
   Scrollable Lists
   ======================================== */

.aural-time-picker__list {
    height: 160px;
    overflow-y: auto;
    border: 1px solid var(--color-border-subtle);
    border-radius: var(--radius-sm);
    background: var(--color-bg-primary);
}

.aural-time-picker__list::-webkit-scrollbar {
    width: 6px;
}

.aural-time-picker__list::-webkit-scrollbar-track {
    background: var(--color-bg-tertiary);
}

.aural-time-picker__list::-webkit-scrollbar-thumb {
    background: var(--color-border-medium);
    border-radius: var(--radius-sm);
}

.aural-time-picker__list::-webkit-scrollbar-thumb:hover {
    background: var(--color-border-strong);
}

/* ========================================
   List Items
   ======================================== */

.aural-time-picker__item {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 36px;
    padding: var(--space-2);
    background: transparent;
    color: var(--color-text-primary);
    border: none;
    text-align: center;
    font-size: var(--text-sm);
    font-family: var(--font-mono);
    cursor: pointer;
    transition: var(--transition-all-fast);
    width: 100%;
}

.aural-time-picker__item:hover {
    background: var(--color-bg-hover);
    color: var(--color-primary);
}

.aural-time-picker__item:focus-visible {
    outline: none;
    background: var(--color-bg-hover);
    box-shadow: inset 0 0 0 2px var(--color-primary);
}

.aural-time-picker__item--selected {
    background: var(--primary-alpha-10);
    color: var(--color-primary);
    font-weight: var(--font-semibold);
}

.aural-time-picker__item--disabled {
    opacity: 0.4;
    cursor: not-allowed;
    pointer-events: none;
}

/* ========================================
   Period Selector (AM/PM)
   ======================================== */

.aural-time-picker__period {
    display: flex;
    flex-direction: column;
    gap: var(--space-1);
}

.aural-time-picker__period-btn {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 36px;
    padding: var(--space-2);
    background: var(--color-bg-primary);
    color: var(--color-text-primary);
    border: 1px solid var(--color-border-subtle);
    border-radius: var(--radius-sm);
    font-size: var(--text-sm);
    font-weight: var(--font-medium);
    cursor: pointer;
    transition: var(--transition-all-fast);
}

.aural-time-picker__period-btn:hover {
    background: var(--color-bg-hover);
    border-color: var(--color-primary);
    color: var(--color-primary);
}

.aural-time-picker__period-btn:focus-visible {
    outline: none;
    box-shadow: 0 0 0 2px var(--color-primary);
}

.aural-time-picker__period-btn--selected {
    background: var(--color-primary);
    border-color: var(--color-primary);
    color: white;
    font-weight: var(--font-semibold);
}

/* ========================================
   Actions
   ======================================== */

.aural-time-picker__actions {
    display: flex;
    gap: var(--space-2);
    padding: var(--space-3);
    border-top: 1px solid var(--color-border-subtle);
}

.aural-time-picker__action-btn {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--space-2);
    min-height: 36px;
    padding: var(--space-2) var(--space-3);
    background: transparent;
    color: var(--color-text-primary);
    border: 1px solid var(--color-border-medium);
    border-radius: var(--radius-md);
    font-size: var(--text-sm);
    font-weight: var(--font-medium);
    cursor: pointer;
    transition: var(--transition-all-fast);
}

.aural-time-picker__action-btn:hover {
    background: var(--color-bg-hover);
    border-color: var(--color-primary);
    color: var(--color-primary);
}

.aural-time-picker__action-btn--primary {
    background: var(--color-primary);
    border-color: var(--color-primary);
    color: white;
}

.aural-time-picker__action-btn--primary:hover {
    background: var(--color-primary-hover);
    border-color: var(--color-primary-hover);
    color: white;
}

/* ========================================
   Now Button
   ======================================== */

.aural-time-picker__now {
    padding: var(--space-2) var(--space-3);
    border-top: 1px solid var(--color-border-subtle);
}

.aural-time-picker__now-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--space-2);
    width: 100%;
    min-height: 36px;
    padding: var(--space-2);
    background: transparent;
    color: var(--color-primary);
    border: 1px dashed var(--color-border-medium);
    border-radius: var(--radius-md);
    font-size: var(--text-sm);
    font-weight: var(--font-medium);
    cursor: pointer;
    transition: var(--transition-all-fast);
}

.aural-time-picker__now-btn:hover {
    background: var(--primary-alpha-10);
    border-color: var(--color-primary);
    border-style: solid;
}

.aural-time-picker__now-btn svg {
    width: 16px;
    height: 16px;
}

/* ========================================
   Error State
   ======================================== */

.aural-time-picker--error .aural-time-picker__input {
    border-color: var(--color-error);
}

.aural-time-picker--error .aural-time-picker__input:focus {
    box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.1);
}

.aural-time-picker__error {
    display: flex;
    align-items: center;
    gap: var(--space-1);
    margin-top: var(--space-1);
    font-size: var(--text-xs);
    color: var(--color-error);
}

.aural-time-picker__error svg {
    width: 14px;
    height: 14px;
    flex-shrink: 0;
}

/* ========================================
   Success State
   ======================================== */

.aural-time-picker--success .aural-time-picker__input {
    border-color: var(--color-success);
}

/* ========================================
   Disabled State
   ======================================== */

.aural-time-picker--disabled {
    opacity: 0.5;
    pointer-events: none;
}

.aural-time-picker--disabled .aural-time-picker__input {
    background: var(--color-bg-tertiary);
    cursor: not-allowed;
}

/* ========================================
   Size Variants
   ======================================== */

.aural-time-picker--sm .aural-time-picker__input {
    min-height: 36px;
    padding: var(--space-1) var(--space-2);
    font-size: var(--text-xs);
}

.aural-time-picker--sm .aural-time-picker__dropdown {
    min-width: 200px;
}

.aural-time-picker--sm .aural-time-picker__list {
    height: 120px;
}

.aural-time-picker--lg .aural-time-picker__input {
    min-height: 52px;
    padding: var(--space-3) var(--space-4);
    font-size: var(--text-base);
}

.aural-time-picker--lg .aural-time-picker__dropdown {
    min-width: 280px;
}

.aural-time-picker--lg .aural-time-picker__list {
    height: 200px;
}

/* ========================================
   24 Hour Format
   ======================================== */

.aural-time-picker--24h .aural-time-picker__period {
    display: none;
}

.aural-time-picker--24h .aural-time-picker__selectors {
    gap: var(--space-3);
}

/* ========================================
   Inline Variant
   ======================================== */

.aural-time-picker--inline .aural-time-picker__dropdown {
    position: static;
    opacity: 1;
    visibility: visible;
    transform: none;
    margin-top: var(--space-2);
}

.aural-time-picker--inline .aural-time-picker__toggle {
    display: none;
}

/* ========================================
   Accessibility
   ======================================== */

@media (prefers-reduced-motion: reduce) {
    .aural-time-picker__dropdown,
    .aural-time-picker__item,
    .aural-time-picker__period-btn,
    .aural-time-picker__action-btn {
        transition: none;
    }
}

/* Screen reader only */

.aural-time-picker__sr-label {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border-width: 0;
}

/* ========================================
   Responsive
   ======================================== */

@media (max-width: 640px) {
    .aural-time-picker__dropdown {
        position: fixed;
        top: auto;
        bottom: 0;
        left: 0;
        right: 0;
        min-width: 100%;
        border-radius: var(--radius-lg) var(--radius-lg) 0 0;
        border-bottom: none;
    }

    .aural-time-picker--open .aural-time-picker__dropdown {
        transform: translateY(0);
    }

    .aural-time-picker__selectors {
        padding: var(--space-4);
    }

    .aural-time-picker__list {
        height: 180px;
    }
}

/* Navigation */

/**
 * AURAL UI - Navigation Bar
 *
 * Horizontal top navigation with logo, links, dropdowns, and mobile menu.
 * Supports sticky positioning, transparent/blur backgrounds, and search.
 */

/* ========================================
   Navbar Container
   ======================================== */

.aural-navbar {
    position: relative;
    width: 100%;
    background: var(--color-bg-primary);
    border-bottom: 1px solid var(--color-border-medium);
    z-index: 100;
}

.aural-navbar__inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-4);
    max-width: 1280px;
    margin: 0 auto;
    padding: var(--space-3) var(--space-4);
}

/* ========================================
   Sticky Navbar
   ======================================== */

.aural-navbar--sticky {
    position: -webkit-sticky;
    position: sticky;
    top: 0;
    z-index: 1000;
}

/* ========================================
   Fixed Navbar
   ======================================== */

.aural-navbar--fixed {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    z-index: 1000;
}

/* Add padding to body when fixed navbar is used */

body.has-navbar-fixed {
    padding-top: 64px;
}

/* ========================================
   Navbar Brand/Logo
   ======================================== */

.aural-navbar__brand {
    display: flex;
    align-items: center;
    gap: var(--space-3);
    text-decoration: none;
    color: var(--color-text-primary);
    font-weight: var(--font-bold);
    font-size: var(--text-lg);
    transition: var(--transition-all-fast);
}

.aural-navbar__brand:hover {
    color: var(--color-primary);
}

.aural-navbar__brand:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
    border-radius: var(--radius-sm);
}

.aural-navbar__logo {
    height: 32px;
    width: auto;
}

/* ========================================
   Navigation Links
   ======================================== */

.aural-navbar__nav {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    flex: 1;
    justify-content: center;
}

.aural-navbar__link {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    padding: var(--space-2) var(--space-3);
    color: var(--color-text-secondary);
    text-decoration: none;
    font-size: var(--text-sm);
    font-weight: var(--font-medium);
    border-radius: var(--radius-md);
    transition: var(--transition-all-fast);
    white-space: nowrap;
}

.aural-navbar__link:hover {
    background: var(--color-bg-hover);
    color: var(--color-text-primary);
}

.aural-navbar__link:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}

.aural-navbar__link--active {
    background: var(--primary-alpha-10);
    color: var(--color-primary);
    font-weight: var(--font-semibold);
}

.aural-navbar__link-icon {
    width: 18px;
    height: 18px;
}

/* ========================================
   Navbar Actions
   ======================================== */

.aural-navbar__actions {
    display: flex;
    align-items: center;
    gap: var(--space-2);
}

.aural-navbar__action {
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 40px;
    min-height: 40px;
    padding: var(--space-2);
    background: transparent;
    color: var(--color-text-secondary);
    border: none;
    border-radius: var(--radius-md);
    cursor: pointer;
    transition: var(--transition-all-fast);
    position: relative;
}

.aural-navbar__action:hover {
    background: var(--color-bg-hover);
    color: var(--color-text-primary);
}

.aural-navbar__action:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}

.aural-navbar__action svg {
    width: 20px;
    height: 20px;
}

/* Avatar as action button - ensure proper containment */
.aural-navbar__action.avatar {
    padding: 0;
    min-width: 32px;
    min-height: 32px;
    width: 32px;
    height: 32px;
}

.aural-navbar__action.avatar.avatar-sm {
    min-width: 28px;
    min-height: 28px;
    width: 28px;
    height: 28px;
}

.aural-navbar__action.avatar.avatar-xs {
    min-width: 24px;
    min-height: 24px;
    width: 24px;
    height: 24px;
}

/* ========================================
   Action Badge (notification count)
   ======================================== */

.aural-navbar__badge {
    position: absolute;
    top: 4px;
    right: 4px;
    min-width: 18px;
    height: 18px;
    padding: 0 4px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--color-error);
    color: white;
    border: 2px solid var(--color-bg-primary);
    border-radius: var(--radius-full);
    font-size: 0.65rem;
    font-weight: var(--font-bold);
    line-height: 1;
}

.aural-navbar__badge--pulse {
    animation: aural-navbar-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}

@keyframes aural-navbar-pulse {
    0%, 100% {
        opacity: 1;
    }
    50% {
        opacity: 0.7;
    }
}

/* ========================================
   Search Bar
   ======================================== */

.aural-navbar__search {
    position: relative;
    width: 240px;
}

.aural-navbar__search-input {
    width: 100%;
    padding: var(--space-2) var(--space-3) var(--space-2) var(--space-9);
    background: var(--color-bg-secondary);
    border: 1px solid var(--color-border-medium);
    border-radius: var(--radius-full);
    font-size: var(--text-sm);
    color: var(--color-text-primary);
    transition: var(--transition-all-fast);
}

.aural-navbar__search-input:focus {
    outline: none;
    border-color: var(--color-primary);
    background: var(--color-bg-primary);
}

.aural-navbar__search-input::-moz-placeholder {
    color: var(--color-text-muted);
}

.aural-navbar__search-input::placeholder {
    color: var(--color-text-muted);
}

.aural-navbar__search-icon {
    position: absolute;
    left: var(--space-3);
    top: 50%;
    transform: translateY(-50%);
    width: 16px;
    height: 16px;
    color: var(--color-text-tertiary);
    pointer-events: none;
}

/* ========================================
   Mobile Menu Toggle
   ======================================== */

.aural-navbar__toggle {
    display: none;
    align-items: center;
    justify-content: center;
    min-width: 44px;
    min-height: 44px;
    padding: var(--space-2);
    background: transparent;
    color: var(--color-text-primary);
    border: none;
    border-radius: var(--radius-md);
    cursor: pointer;
    transition: var(--transition-all-fast);
}

.aural-navbar__toggle:hover {
    background: var(--color-bg-hover);
}

.aural-navbar__toggle:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}

.aural-navbar__toggle svg {
    width: 24px;
    height: 24px;
}

/* ========================================
   Dropdown Menu
   ======================================== */

.aural-navbar__dropdown {
    position: relative;
}

.aural-navbar__dropdown-toggle {
    display: flex;
    align-items: center;
    gap: var(--space-2);
}

.aural-navbar__dropdown-arrow {
    width: 12px;
    height: 12px;
    transition: transform 0.2s ease;
}

.aural-navbar__dropdown--open .aural-navbar__dropdown-arrow {
    transform: rotate(180deg);
}

.aural-navbar__dropdown-menu {
    position: absolute;
    top: calc(100% + 8px);
    left: 0;
    min-width: 200px;
    background: var(--color-bg-secondary);
    border: 1px solid var(--color-border-medium);
    border-radius: var(--radius-md);
    box-shadow: var(--shadow-xl);
    padding: var(--space-2) 0;
    opacity: 0;
    visibility: hidden;
    transform: translateY(-8px);
    transition: opacity 0.2s ease, transform 0.2s ease, visibility 0.2s;
    z-index: 1000;
}

.aural-navbar__dropdown--open .aural-navbar__dropdown-menu {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
}

.aural-navbar__dropdown-item {
    display: flex;
    align-items: center;
    gap: var(--space-3);
    padding: var(--space-2) var(--space-3);
    color: var(--color-text-primary);
    text-decoration: none;
    font-size: var(--text-sm);
    transition: var(--transition-all-fast);
}

.aural-navbar__dropdown-item:hover {
    background: var(--color-bg-hover);
    color: var(--color-primary);
}

.aural-navbar__dropdown-divider {
    height: 1px;
    background: var(--color-border-subtle);
    margin: var(--space-2) 0;
}

/* ========================================
   Transparent/Blur Variants
   ======================================== */

.aural-navbar--transparent {
    background: transparent;
    border-bottom-color: transparent;
}

.aural-navbar--blur {
    background: rgba(var(--color-bg-primary-rgb), 0.8);
    -webkit-backdrop-filter: blur(12px);
    backdrop-filter: blur(12px);
}

.aural-navbar--dark {
    background: rgba(0, 0, 0, 0.9);
    border-bottom-color: rgba(255, 255, 255, 0.1);
}

.aural-navbar--dark .aural-navbar__link {
    color: rgba(255, 255, 255, 0.7);
}

.aural-navbar--dark .aural-navbar__link:hover,
.aural-navbar--dark .aural-navbar__link--active {
    color: white;
    background: rgba(255, 255, 255, 0.1);
}

/* ========================================
   Size Variants
   ======================================== */

.aural-navbar--sm .aural-navbar__inner {
    padding: var(--space-2) var(--space-4);
}

.aural-navbar--sm .aural-navbar__link {
    padding: var(--space-1) var(--space-2);
    font-size: var(--text-xs);
}

.aural-navbar--lg .aural-navbar__inner {
    padding: var(--space-4) var(--space-6);
}

.aural-navbar--lg .aural-navbar__link {
    padding: var(--space-3) var(--space-4);
    font-size: var(--text-base);
}

/* ========================================
   Centered Layout
   ======================================== */

.aural-navbar--centered .aural-navbar__nav {
    order: 0;
}

.aural-navbar--centered .aural-navbar__brand {
    order: -1;
}

.aural-navbar--centered .aural-navbar__actions {
    order: 1;
}

/* ========================================
   Accessibility
   ======================================== */

@media (prefers-reduced-motion: reduce) {
    .aural-navbar__link,
    .aural-navbar__action,
    .aural-navbar__dropdown-menu,
    .aural-navbar__dropdown-arrow {
        transition: none;
    }

    .aural-navbar__badge--pulse {
        animation: none;
    }
}

/* ========================================
   Responsive (Mobile)
   ======================================== */

@media (max-width: 768px) {
    .aural-navbar__toggle {
        display: flex;
    }

    .aural-navbar__nav {
        position: fixed;
        top: 100%;
        left: 0;
        right: 0;
        flex-direction: column;
        align-items: stretch;
        background: var(--color-bg-primary);
        border-top: 1px solid var(--color-border-medium);
        padding: var(--space-4);
        gap: var(--space-2);
        max-height: 0;
        overflow: hidden;
        transition: max-height 0.3s ease;
        box-shadow: var(--shadow-xl);
    }

    .aural-navbar--menu-open .aural-navbar__nav {
        max-height: calc(100vh - 64px);
        max-height: calc(100dvh - 64px);
        overflow-y: auto;
    }

    .aural-navbar__link {
        width: 100%;
        justify-content: flex-start;
    }

    .aural-navbar__search {
        width: 100%;
        order: -1;
    }

    .aural-navbar__dropdown-menu {
        position: static;
        box-shadow: none;
        border: none;
        background: var(--color-bg-tertiary);
        margin-left: var(--space-4);
        margin-top: var(--space-2);
        transform: none;
        opacity: 1;
        visibility: visible;
        max-height: 0;
        overflow: hidden;
        transition: max-height 0.3s ease;
    }

    .aural-navbar__dropdown--open .aural-navbar__dropdown-menu {
        max-height: 500px;
    }

    .aural-navbar__actions {
        display: none;
    }

    .aural-navbar--menu-open .aural-navbar__actions {
        display: flex;
        width: 100%;
        flex-direction: column;
        align-items: stretch;
        padding-top: var(--space-4);
        border-top: 1px solid var(--color-border-subtle);
    }

    .aural-navbar__action {
        width: 100%;
        justify-content: flex-start;
        min-width: auto;
    }
}

@media (max-width: 640px) {
    .aural-navbar__inner {
        padding: var(--space-2) var(--space-3);
    }

    .aural-navbar__brand {
        font-size: var(--text-base);
    }

    .aural-navbar__logo {
        height: 28px;
    }
}

/**
 * AURAL UI - Tabs Component
 *
 * Tabbed navigation for organizing content
 *
 * Usage:
 *   <div class="tabs" role="tablist" aria-label="Content tabs">
 *     <button class="tab tab-active" role="tab" aria-selected="true" aria-controls="panel-1">
 *       Tab 1
 *     </button>
 *     <button class="tab" role="tab" aria-selected="false" aria-controls="panel-2">
 *       Tab 2
 *     </button>
 *   </div>
 *   <div id="panel-1" role="tabpanel" tabindex="0">Content 1</div>
 *   <div id="panel-2" role="tabpanel" tabindex="0" hidden>Content 2</div>
 */

.tabs {
    /* Layout */
    display: flex;
    position: relative;

    /* Appearance */
    border-bottom: 1px solid var(--color-tabs-border);

    /* Accessibility */
    outline: none;
}

/* ========================================
   TAB ITEMS (Default: Underline Style)
   ======================================== */

.tab {
    /* Layout */
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--space-2);
    position: relative;

    /* Spacing */
    padding: var(--space-3) var(--space-4);
    margin-bottom: -1px;

    /* Typography */
    font-family: var(--font-sans);
    font-size: var(--text-base);
    font-weight: var(--font-medium);
    color: var(--color-tabs-text);
    line-height: var(--leading-normal);
    white-space: nowrap;
    text-decoration: none;

    /* Appearance */
    background: transparent;
    border: none;
    border-bottom: 2px solid transparent;

    /* Transitions */
    transition: var(--transition-all-fast);

    /* Accessibility */
    min-height: 44px;
    outline: none;
    cursor: pointer;
    -webkit-user-select: none;
       -moz-user-select: none;
            user-select: none;
}

.tab > svg {
        width: 18px;
        height: 18px;
        flex-shrink: 0;
    }

    @media (hover: hover) and (pointer: fine) {
        .tab:hover:not(.tab-active):not(:disabled) {
        color: var(--color-tabs-text-hover);
        background: var(--color-tabs-hover-bg);
            }
    }

    .tab:active:not(.tab-active):not(:disabled) {
        color: var(--color-tabs-text-hover);
        background: var(--color-tabs-hover-bg);
        }

.tab:focus-visible {
        outline: 2px solid var(--color-primary);
        outline-offset: 2px;
    }

.tab:disabled {
        opacity: 0.5;
        cursor: not-allowed;
        pointer-events: none;
    }

/* Active tab */

.tab-active,
.tab[aria-selected="true"] {
    color: var(--color-tabs-active-text);
    border-bottom-color: var(--color-tabs-active-border);
    background: var(--color-tabs-active-bg);
}

/* ========================================
   SIZES
   ======================================== */

.tabs-sm .tab {
    padding: var(--space-2) var(--space-3);
    font-size: var(--text-sm);
    min-height: 36px;
}

.tabs-sm .tab > svg {
        width: 16px;
        height: 16px;
    }

.tabs-lg .tab {
    padding: var(--space-4) var(--space-6);
    font-size: var(--text-lg);
    min-height: 52px;
}

.tabs-lg .tab > svg {
        width: 20px;
        height: 20px;
    }

/* ========================================
   PILL VARIANT
   ======================================== */

.tabs-pills {
    border-bottom: none;
    gap: var(--space-2);
}

.tabs-pills .tab {
        border: none;
        border-radius: var(--radius-md);
        margin-bottom: 0;
        background: var(--color-tabs-pill-bg);
    }

.tabs-pills .tab:hover:not(.tab-active):not(:disabled) {
            background: var(--color-tabs-hover-bg);
        }

.tabs-pills .tab-active,
    .tabs-pills .tab[aria-selected="true"] {
        background: var(--color-tabs-pill-active-bg);
        color: white;
    }

/* ========================================
   BOXED VARIANT
   ======================================== */

.tabs-boxed {
    border: 1px solid var(--color-tabs-border);
    border-radius: var(--radius-md);
    padding: var(--space-1);
    background: rgba(255, 255, 255, 0.03);
}

.tabs-boxed .tab {
        border: none;
        border-radius: var(--radius-sm);
        margin-bottom: 0;
    }

.tabs-boxed .tab:hover:not(.tab-active):not(:disabled) {
            background: var(--color-tabs-hover-bg);
        }

.tabs-boxed .tab-active,
    .tabs-boxed .tab[aria-selected="true"] {
        background: var(--color-primary);
        color: white;
        box-shadow: var(--shadow-sm);
    }

/* ========================================
   VERTICAL VARIANT
   ======================================== */

.tabs-vertical {
    flex-direction: column;
    border-bottom: none;
    border-right: 1px solid var(--color-tabs-border);
}

.tabs-vertical .tab {
        justify-content: flex-start;
        width: 100%;
        border-bottom: none;
        border-right: 2px solid transparent;
        margin-bottom: 0;
        margin-right: -1px;
    }

.tabs-vertical .tab-active,
    .tabs-vertical .tab[aria-selected="true"] {
        border-right-color: var(--color-tabs-active-border);
        border-bottom-color: transparent;
    }

/* Vertical pills */

.tabs-vertical.tabs-pills {
    border-right: none;
}

.tabs-vertical.tabs-pills .tab {
        border: none;
        margin-right: 0;
    }

/* Vertical boxed */

.tabs-vertical.tabs-boxed {
    border: 1px solid var(--color-tabs-border);
}

/* ========================================
   CENTERED VARIANT
   ======================================== */

.tabs-center {
    justify-content: center;
}

/* ========================================
   FULL WIDTH VARIANT
   ======================================== */

.tabs-full .tab {
        flex: 1;
    }

/* ========================================
   WITH BADGE/COUNT
   ======================================== */

.tab-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 20px;
    height: 20px;
    padding: 0 var(--space-1);
    font-size: var(--text-xs);
    font-weight: var(--font-semibold);
    background: var(--color-bg-tertiary);
    color: var(--color-text-secondary);
    border-radius: var(--radius-full);
    margin-left: var(--space-1);
}

.tab-active .tab-badge,
.tab[aria-selected="true"] .tab-badge {
    background: rgba(255, 255, 255, 0.2);
    color: currentColor;
}

.tabs-pills .tab-active .tab-badge,
.tabs-boxed .tab-active .tab-badge {
    background: rgba(255, 255, 255, 0.25);
    color: white;
}

/* ========================================
   TAB PANELS
   ======================================== */

.tab-panel {
    /* Spacing */
    padding: var(--space-6);

    /* Animation */
    animation: tab-panel-fade-in 0.2s ease;

    /* Accessibility */
    outline: none;
}

.tab-panel:focus-visible {
        outline: 2px solid var(--color-primary);
        outline-offset: 2px;
    }

.tab-panel[hidden] {
        display: none;
    }

@keyframes tab-panel-fade-in {
    from {
        opacity: 0;
        transform: translateY(8px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* ========================================
   TAB PANELS CONTAINER
   ======================================== */

.tab-panels > .tab-panel {
        border: 1px solid var(--color-tabs-border);
        border-top: none;
        border-radius: 0 0 var(--radius-md) var(--radius-md);
    }

.tab-panels > .tab-panel:first-child {
        border-top-left-radius: 0;
    }

/* For pills and boxed variants */

.tabs-pills + .tab-panels > .tab-panel,
.tabs-boxed + .tab-panels > .tab-panel {
    border: 1px solid var(--color-tabs-border);
    border-radius: var(--radius-md);
    margin-top: var(--space-4);
}

/* ========================================
   SCROLLABLE TABS
   ======================================== */

.tabs-scrollable {
    overflow-x: auto;
    overflow-y: hidden;
    scrollbar-width: thin;
    scrollbar-color: var(--color-border-medium) transparent;
}

.tabs-scrollable::-webkit-scrollbar {
        height: 4px;
    }

.tabs-scrollable::-webkit-scrollbar-track {
        background: transparent;
    }

.tabs-scrollable::-webkit-scrollbar-thumb {
        background: var(--color-border-medium);
        border-radius: var(--radius-full);
    }

/* ========================================
   TAB CLOSE BUTTON
   ======================================== */

.tab-close {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 18px;
    height: 18px;
    margin-left: var(--space-2);
    border: none;
    background: transparent;
    color: var(--color-text-muted);
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: var(--transition-all-fast);
}

.tab-close > svg {
        width: 14px;
        height: 14px;
    }

.tab-close:hover {
        background: rgba(255, 255, 255, 0.1);
        color: var(--color-text-primary);
    }

.tab-close:focus-visible {
        outline: 2px solid var(--color-primary);
        outline-offset: 1px;
    }

/* ========================================
   ACCESSIBILITY
   ======================================== */

/* Reduced motion */

@media (prefers-reduced-motion: reduce) {
    .tab {
        transition: none;
    }

    .tab-panel {
        animation: none;
    }
}

/**
 * AURAL UI - Breadcrumb Component
 *
 * Navigation hierarchy showing user's location
 *
 * Usage:
 *   <nav class="breadcrumb" aria-label="Breadcrumb">
 *     <ol>
 *       <li><a href="/">Home</a></li>
 *       <li><a href="/products">Products</a></li>
 *       <li aria-current="page">Widget</li>
 *     </ol>
 *   </nav>
 */

.breadcrumb {
    /* Layout */
    display: flex;

    /* Accessibility */
    outline: none;
}

.breadcrumb > ol,
    .breadcrumb > ul {
        /* Layout */
        display: flex;
        align-items: center;
        flex-wrap: wrap;
        gap: var(--space-2);

        /* Reset list styles */
        list-style: none;
        margin: 0;
        padding: 0;
    }

.breadcrumb li {
        /* Layout */
        display: flex;
        align-items: center;
        gap: var(--space-2);

        /* Typography */
        font-family: var(--font-sans);
        font-size: var(--text-sm);
        line-height: var(--leading-normal);
    }

.breadcrumb a {
        /* Appearance */
        color: var(--color-breadcrumb-link);
        text-decoration: none;
        transition: var(--transition-all-fast);

        /* Interaction */
        outline: none;
    }

.breadcrumb a:hover {
            color: var(--color-breadcrumb-link-hover);
            text-decoration: underline;
        }

.breadcrumb a:focus-visible {
            outline: 2px solid var(--color-primary);
            outline-offset: 2px;
            border-radius: var(--radius-sm);
        }

.breadcrumb li[aria-current="page"] {
        color: var(--color-breadcrumb-current);
        font-weight: var(--font-medium);
    }

/* Separator */

.breadcrumb li:not(:last-child)::after {
        content: '/';
        color: var(--color-breadcrumb-separator);
        margin-left: var(--space-2);
        -webkit-user-select: none;
           -moz-user-select: none;
                user-select: none;
    }

/* ========================================
   SEPARATOR VARIANTS
   ======================================== */

/* Chevron separator */

.breadcrumb-chevron li:not(:last-child)::after {
        content: '';
        width: 16px;
        height: 16px;
        background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='rgba(255,255,255,0.3)'%3E%3Cpath fill-rule='evenodd' d='M6.22 4.22a.75.75 0 011.06 0l3.25 3.25a.75.75 0 010 1.06l-3.25 3.25a.75.75 0 01-1.06-1.06L8.94 8 6.22 5.28a.75.75 0 010-1.06z'/%3E%3C/svg%3E");
        background-repeat: no-repeat;
        background-position: center;
    }

/* Dash separator */

.breadcrumb-dash li:not(:last-child)::after {
        content: '—';
    }

/* Dot separator */

.breadcrumb-dot li:not(:last-child)::after {
        content: '•';
    }

/* Arrow separator */

.breadcrumb-arrow li:not(:last-child)::after {
        content: '→';
    }

/* ========================================
   SIZES
   ======================================== */

.breadcrumb-sm li {
        font-size: var(--text-xs);
    }

.breadcrumb-sm li:not(:last-child)::after {
        font-size: var(--text-xs);
    }

.breadcrumb-lg li {
        font-size: var(--text-base);
    }

.breadcrumb-lg li:not(:last-child)::after {
        font-size: var(--text-base);
    }

.breadcrumb-lg > ol,
    .breadcrumb-lg > ul {
        gap: var(--space-3);
    }

.breadcrumb-lg li {
        gap: var(--space-3);
    }

.breadcrumb-lg li:not(:last-child)::after {
        margin-left: var(--space-3);
    }

/* ========================================
   COLLAPSED VARIANT
   ======================================== */

.breadcrumb-collapsed > ol > li:not(:first-child):not(:last-child):not(.breadcrumb-expanded), .breadcrumb-collapsed > ul > li:not(:first-child):not(:last-child):not(.breadcrumb-expanded) {
            display: none;
        }

.breadcrumb-collapsed > ol > li:nth-last-child(2)::before, .breadcrumb-collapsed > ul > li:nth-last-child(2)::before {
            content: '...';
            color: var(--color-breadcrumb-separator);
            margin-right: var(--space-2);
            cursor: pointer;
            padding: var(--space-1) var(--space-2);
            border-radius: var(--radius-sm);
            transition: var(--transition-all-fast);
        }

.breadcrumb-collapsed > ol > li:nth-last-child(2)::before:hover, .breadcrumb-collapsed > ul > li:nth-last-child(2)::before:hover {
                background: var(--color-bg-hover);
            }

.breadcrumb-collapsed.breadcrumb-expanded > ol > li, .breadcrumb-collapsed.breadcrumb-expanded > ul > li {
                display: flex !important;
            }

.breadcrumb-collapsed.breadcrumb-expanded > ol > li:nth-last-child(2)::before, .breadcrumb-collapsed.breadcrumb-expanded > ul > li:nth-last-child(2)::before {
                display: none;
            }

/* ========================================
   WITH ICONS
   ======================================== */

.breadcrumb-with-icons li {
        gap: var(--space-2);
    }

.breadcrumb-with-icons .breadcrumb-icon {
        width: 16px;
        height: 16px;
        flex-shrink: 0;
        color: currentColor;
    }

/* ========================================
   BACKGROUND VARIANT
   ======================================== */

.breadcrumb-bg {
    padding: var(--space-3) var(--space-4);
    background: rgba(255, 255, 255, 0.03);
    border-radius: var(--radius-md);
    border: 1px solid var(--color-border-subtle);
}

/* ========================================
   ACCESSIBILITY
   ======================================== */

/* Screen reader only text */

.breadcrumb-sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border-width: 0;
}

/* Reduced motion */

@media (prefers-reduced-motion: reduce) {
    .breadcrumb a {
        transition: none;
    }
}

/**
 * AURAL UI - Pagination Component
 *
 * Page navigation for multi-page content
 *
 * Usage:
 *   <nav class="pagination" aria-label="Pagination">
 *     <a href="#" class="pagination-prev">Previous</a>
 *     <a href="#" class="pagination-item">1</a>
 *     <a href="#" class="pagination-item pagination-active" aria-current="page">2</a>
 *     <a href="#" class="pagination-item">3</a>
 *     <a href="#" class="pagination-next">Next</a>
 *   </nav>
 */

.pagination {
    /* Layout */
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--space-2);

    /* Typography */
    font-family: var(--font-sans);
    font-size: var(--text-sm);

    /* Accessibility */
    outline: none;
}

/* ========================================
   PAGINATION ITEMS
   ======================================== */

.pagination-item,
.pagination-prev,
.pagination-next {
    /* Layout */
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--space-2);

    /* Spacing */
    padding: var(--space-2) var(--space-3);
    min-width: 40px;

    /* Typography */
    font-size: var(--text-sm);
    font-weight: var(--font-medium);
    color: var(--color-text-primary);
    text-decoration: none;
    line-height: var(--leading-none);

    /* Appearance */
    background: var(--color-pagination-bg);
    border: 1px solid var(--color-pagination-border);
    border-radius: var(--radius-md);

    /* Transitions */
    transition: var(--transition-all-fast);

    /* Accessibility */
    outline: none;
    -webkit-user-select: none;
       -moz-user-select: none;
            user-select: none;
    cursor: pointer;
}

.pagination-item:hover:not(.pagination-active):not([disabled]):not(.pagination-disabled), .pagination-prev:hover:not(.pagination-active):not([disabled]):not(.pagination-disabled), .pagination-next:hover:not(.pagination-active):not([disabled]):not(.pagination-disabled) {
        background: var(--color-pagination-hover-bg);
        border-color: var(--color-pagination-hover-border);
    }

.pagination-item:focus-visible, .pagination-prev:focus-visible, .pagination-next:focus-visible {
        outline: 2px solid var(--color-primary);
        outline-offset: 2px;
    }

.pagination-item > svg, .pagination-prev > svg, .pagination-next > svg {
        width: 16px;
        height: 16px;
        flex-shrink: 0;
    }

/* Active page */

.pagination-active {
    background: var(--color-pagination-active-bg);
    border-color: var(--color-pagination-active-border);
    color: var(--color-pagination-active-text);
    pointer-events: none;
}

/* Disabled state */

.pagination-disabled,
.pagination-item[disabled],
.pagination-prev[disabled],
.pagination-next[disabled] {
    color: var(--color-pagination-disabled-text);
    cursor: not-allowed;
    pointer-events: none;
    opacity: 0.5;
}

/* Ellipsis */

.pagination-ellipsis {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: var(--space-2) var(--space-1);
    min-width: 40px;
    color: var(--color-text-muted);
    -webkit-user-select: none;
       -moz-user-select: none;
            user-select: none;
    pointer-events: none;
}

/* ========================================
   SIZES
   ======================================== */

.pagination-sm {
    font-size: var(--text-xs);
}

.pagination-sm .pagination-item,
    .pagination-sm .pagination-prev,
    .pagination-sm .pagination-next {
        padding: var(--space-1) var(--space-2);
        min-width: 32px;
        font-size: var(--text-xs);
    }

.pagination-sm .pagination-ellipsis {
        min-width: 32px;
    }

.pagination-sm svg {
        width: 14px !important;
        height: 14px !important;
    }

.pagination-lg {
    font-size: var(--text-base);
}

.pagination-lg .pagination-item,
    .pagination-lg .pagination-prev,
    .pagination-lg .pagination-next {
        padding: var(--space-3) var(--space-4);
        min-width: 48px;
        font-size: var(--text-base);
    }

.pagination-lg .pagination-ellipsis {
        min-width: 48px;
    }

.pagination-lg svg {
        width: 20px !important;
        height: 20px !important;
    }

/* ========================================
   VARIANTS
   ======================================== */

/* Simple variant (no borders) */

.pagination-simple .pagination-item,
    .pagination-simple .pagination-prev,
    .pagination-simple .pagination-next {
        border: none;
    }

.pagination-simple .pagination-active {
        background: var(--color-pagination-active-bg);
    }

/* Rounded variant */

.pagination-rounded .pagination-item,
    .pagination-rounded .pagination-prev,
    .pagination-rounded .pagination-next {
        border-radius: var(--radius-full);
    }

/* Compact variant (attached buttons) */

.pagination-compact {
    gap: 0;
}

.pagination-compact .pagination-item,
    .pagination-compact .pagination-prev,
    .pagination-compact .pagination-next {
        border-radius: 0;
        margin-left: -1px;
    }

.pagination-compact .pagination-prev,
    .pagination-compact > a:first-child,
    .pagination-compact > button:first-child {
        border-top-left-radius: var(--radius-md);
        border-bottom-left-radius: var(--radius-md);
        margin-left: 0;
    }

.pagination-compact .pagination-next,
    .pagination-compact > a:last-child,
    .pagination-compact > button:last-child {
        border-top-right-radius: var(--radius-md);
        border-bottom-right-radius: var(--radius-md);
    }

.pagination-compact .pagination-active {
        z-index: 1;
    }

/* ========================================
   LAYOUT VARIANTS
   ======================================== */

/* Left aligned */

.pagination-left {
    justify-content: flex-start;
}

/* Right aligned */

.pagination-right {
    justify-content: flex-end;
}

/* Space between */

.pagination-between {
    justify-content: space-between;
}

.pagination-between .pagination-list {
        display: flex;
        gap: var(--space-2);
    }

/* ========================================
   WITH INFO TEXT
   ======================================== */

.pagination-with-info {
    display: flex;
    flex-direction: column;
    gap: var(--space-3);
    align-items: center;
}

.pagination-with-info > .pagination-info {
        color: var(--color-text-secondary);
        font-size: var(--text-sm);
    }

/* ========================================
   RESPONSIVE
   ======================================== */

/* Hide page numbers on small screens */

@media (max-width: 640px) {
        .pagination-responsive .pagination-item:not(.pagination-active) {
            display: none;
        }

        .pagination-responsive .pagination-ellipsis {
            display: none;
        }
}

/* ========================================
   JUMP TO PAGE
   ======================================== */

.pagination-with-jumper {
    display: flex;
    align-items: center;
    gap: var(--space-4);
}

.pagination-with-jumper .pagination-jumper {
        display: flex;
        align-items: center;
        gap: var(--space-2);
        font-size: var(--text-sm);
        color: var(--color-text-secondary);
    }

.pagination-with-jumper .pagination-jumper input {
            width: 60px;
            padding: var(--space-2);
            font-size: var(--text-sm);
            text-align: center;
            background: var(--color-input-bg);
            border: 1px solid var(--color-input-border);
            border-radius: var(--radius-md);
            color: var(--color-text-primary);
            outline: none;
        }

.pagination-with-jumper .pagination-jumper input:focus {
                border-color: var(--color-primary);
            }

.pagination-with-jumper .pagination-jumper input:focus-visible {
                outline: 2px solid var(--color-primary);
                outline-offset: 2px;
            }

/* ========================================
   ACCESSIBILITY
   ======================================== */

/* Screen reader only text */

.pagination-sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border-width: 0;
}

/* Reduced motion */

@media (prefers-reduced-motion: reduce) {
    .pagination-item,
    .pagination-prev,
    .pagination-next {
        transition: none;
    }
}

/**
 * AURAL UI - Stepper
 *
 * Step indicator for multi-step processes like forms, checkouts,
 * and onboarding flows. Supports horizontal and vertical layouts.
 */

/* ========================================
   Stepper Container
   ======================================== */

.aural-stepper {
    display: flex;
    width: 100%;
}

.aural-stepper--horizontal {
    flex-direction: row;
    align-items: flex-start;
}

.aural-stepper--vertical {
    flex-direction: column;
    align-items: stretch;
}

/* ========================================
   Step Item
   ======================================== */

.aural-step {
    display: flex;
    flex: 1;
    position: relative;
}

.aural-stepper--horizontal .aural-step {
    flex-direction: column;
    align-items: center;
    text-align: center;
}

.aural-stepper--vertical .aural-step {
    flex-direction: row;
    align-items: flex-start;
    padding-bottom: var(--space-6);
}

.aural-stepper--vertical .aural-step:last-child {
    padding-bottom: 0;
}

/* ========================================
   Step Indicator (Circle)
   ======================================== */

.aural-step__indicator {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 44px;
    min-height: 44px;
    width: 44px;
    height: 44px;
    background: var(--color-bg-secondary);
    color: var(--color-text-secondary);
    border: 2px solid var(--color-border-medium);
    border-radius: 50%;
    font-size: var(--text-base);
    font-weight: var(--font-semibold);
    transition: var(--transition-all-fast);
    z-index: 2;
    flex-shrink: 0;
}

/* Step States */

.aural-step--active .aural-step__indicator {
    background: var(--color-primary);
    color: white;
    border-color: var(--color-primary);
    box-shadow: 0 0 0 4px var(--primary-alpha-20);
}

.aural-step--completed .aural-step__indicator {
    background: var(--color-success);
    color: white;
    border-color: var(--color-success);
}

.aural-step--error .aural-step__indicator {
    background: var(--color-error);
    color: white;
    border-color: var(--color-error);
}

.aural-step--disabled .aural-step__indicator {
    background: var(--color-bg-tertiary);
    color: var(--color-text-disabled);
    border-color: var(--color-border-subtle);
    opacity: 0.5;
}

/* Clickable Steps */

.aural-step--clickable .aural-step__indicator {
    cursor: pointer;
}

.aural-step--clickable .aural-step__indicator:hover:not(.aural-step--disabled .aural-step__indicator) {
    border-color: var(--color-primary);
    transform: scale(1.05);
}

.aural-step--clickable .aural-step__indicator:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}

/* ========================================
   Step Connector Line
   ======================================== */

.aural-step__connector {
    position: absolute;
    background: var(--color-border-medium);
    transition: var(--transition-all-fast);
    z-index: 1;
}

/* Horizontal Connector */

.aural-stepper--horizontal .aural-step__connector {
    top: 22px;
    left: 50%;
    right: -50%;
    height: 2px;
    width: 100%;
}

.aural-stepper--horizontal .aural-step:last-child .aural-step__connector {
    display: none;
}

/* Vertical Connector */

.aural-stepper--vertical .aural-step__connector {
    top: 44px;
    left: 22px;
    bottom: 0;
    width: 2px;
    height: calc(100% - 44px);
}

.aural-stepper--vertical .aural-step:last-child .aural-step__connector {
    display: none;
}

/* Connector States */

.aural-step--completed .aural-step__connector {
    background: var(--color-success);
}

.aural-step--active .aural-step__connector {
    background: linear-gradient(
        to right,
        var(--color-primary) 0%,
        var(--color-border-medium) 100%
    );
}

.aural-stepper--vertical .aural-step--active .aural-step__connector {
    background: linear-gradient(
        to bottom,
        var(--color-primary) 0%,
        var(--color-border-medium) 100%
    );
}

/* ========================================
   Step Content
   ======================================== */

.aural-step__content {
    display: flex;
    flex-direction: column;
    gap: var(--space-1);
}

.aural-stepper--horizontal .aural-step__content {
    margin-top: var(--space-3);
    align-items: center;
}

.aural-stepper--vertical .aural-step__content {
    margin-left: var(--space-4);
    flex: 1;
}

.aural-step__title {
    font-size: var(--text-sm);
    font-weight: var(--font-semibold);
    color: var(--color-text-secondary);
    transition: var(--transition-all-fast);
}

.aural-step--active .aural-step__title {
    color: var(--color-primary);
    font-weight: var(--font-bold);
}

.aural-step--completed .aural-step__title {
    color: var(--color-text-primary);
}

.aural-step--disabled .aural-step__title {
    color: var(--color-text-disabled);
    opacity: 0.5;
}

.aural-step__description {
    font-size: var(--text-xs);
    color: var(--color-text-tertiary);
    line-height: var(--leading-relaxed);
}

.aural-step--active .aural-step__description {
    color: var(--color-text-secondary);
}

/* ========================================
   Step Icon Support
   ======================================== */

.aural-step__indicator-icon {
    width: 20px;
    height: 20px;
}

/* Hide number when icon is present */

.aural-step__indicator:has(.aural-step__indicator-icon) .aural-step__number {
    display: none;
}

/* ========================================
   Size Variants
   ======================================== */

.aural-stepper--sm .aural-step__indicator {
    min-width: 36px;
    min-height: 36px;
    width: 36px;
    height: 36px;
    font-size: var(--text-sm);
}

.aural-stepper--sm.aural-stepper--horizontal .aural-step__connector {
    top: 18px;
}

.aural-stepper--sm.aural-stepper--vertical .aural-step__connector {
    left: 18px;
    top: 36px;
    height: calc(100% - 36px);
}

.aural-stepper--sm .aural-step__title {
    font-size: var(--text-xs);
}

.aural-stepper--sm .aural-step__description {
    font-size: 0.7rem;
}

.aural-stepper--lg .aural-step__indicator {
    min-width: 56px;
    min-height: 56px;
    width: 56px;
    height: 56px;
    font-size: var(--text-lg);
}

.aural-stepper--lg.aural-stepper--horizontal .aural-step__connector {
    top: 28px;
}

.aural-stepper--lg.aural-stepper--vertical .aural-step__connector {
    left: 28px;
    top: 56px;
    height: calc(100% - 56px);
}

.aural-stepper--lg .aural-step__title {
    font-size: var(--text-base);
}

.aural-stepper--lg .aural-step__description {
    font-size: var(--text-sm);
}

/* ========================================
   Numbered Variant
   ======================================== */

.aural-stepper--numbered .aural-step__indicator::before {
    content: attr(data-step);
}

/* ========================================
   Accessibility
   ======================================== */

@media (prefers-reduced-motion: reduce) {
    .aural-step__indicator,
    .aural-step__connector,
    .aural-step__title {
        transition: none;
    }
}

/* ========================================
   Responsive
   ======================================== */

@media (max-width: 640px) {
    /* Stack horizontally on mobile if too many steps */
    .aural-stepper--horizontal.aural-stepper--responsive {
        flex-direction: column;
    }

    .aural-stepper--horizontal.aural-stepper--responsive .aural-step {
        flex-direction: row;
        align-items: flex-start;
        text-align: left;
        padding-bottom: var(--space-6);
    }

    .aural-stepper--horizontal.aural-stepper--responsive .aural-step__content {
        margin-top: 0;
        margin-left: var(--space-4);
        align-items: flex-start;
    }

    .aural-stepper--horizontal.aural-stepper--responsive .aural-step__connector {
        top: 44px;
        left: 22px;
        right: auto;
        bottom: 0;
        width: 2px;
        height: calc(100% - 44px);
    }

    .aural-stepper--horizontal.aural-stepper--responsive .aural-step:last-child {
        padding-bottom: 0;
    }
}

/**
 * AURAL UI - Drawer
 *
 * Sliding side panel for navigation, filters, or additional content.
 * Supports left, right, top, and bottom positions.
 */

/* ========================================
   Drawer Backdrop
   ======================================== */

.aural-drawer-backdrop {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 9998;
    background: rgba(0, 0, 0, 0.5);
    -webkit-backdrop-filter: blur(4px);
    backdrop-filter: blur(4px);
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.3s ease, visibility 0.3s ease;
}

.aural-drawer-backdrop--open {
    opacity: 1;
    visibility: visible;
}

/* ========================================
   Drawer Container
   ======================================== */

.aural-drawer {
    position: fixed;
    z-index: 9999;
    background: var(--color-bg-primary);
    box-shadow: var(--shadow-xl);
    display: flex;
    flex-direction: column;
    transition: transform 0.3s ease;
    overflow: hidden;
}

/* Prevent body scroll when drawer is open */

body.aural-drawer-open {
    overflow: hidden;
}

/* ========================================
   Drawer Positions
   ======================================== */

/* Left Drawer */

.aural-drawer--left {
    top: 0;
    left: 0;
    bottom: 0;
    width: 320px;
    max-width: 90vw;
    transform: translateX(-100%);
    border-right: 1px solid var(--color-border-medium);
}

.aural-drawer--left.aural-drawer--open {
    transform: translateX(0);
}

/* Right Drawer */

.aural-drawer--right {
    top: 0;
    right: 0;
    bottom: 0;
    width: 320px;
    max-width: 90vw;
    transform: translateX(100%);
    border-left: 1px solid var(--color-border-medium);
}

.aural-drawer--right.aural-drawer--open {
    transform: translateX(0);
}

/* Top Drawer */

.aural-drawer--top {
    top: 0;
    left: 0;
    right: 0;
    height: 400px;
    max-height: 90vh;
    transform: translateY(-100%);
    border-bottom: 1px solid var(--color-border-medium);
}

.aural-drawer--top.aural-drawer--open {
    transform: translateY(0);
}

/* Bottom Drawer */

.aural-drawer--bottom {
    bottom: 0;
    left: 0;
    right: 0;
    height: 400px;
    max-height: 90vh;
    transform: translateY(100%);
    border-top: 1px solid var(--color-border-medium);
}

.aural-drawer--bottom.aural-drawer--open {
    transform: translateY(0);
}

/* ========================================
   Drawer Header
   ======================================== */

.aural-drawer__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: var(--space-4) var(--space-5);
    border-bottom: 1px solid var(--color-border-subtle);
    flex-shrink: 0;
}

.aural-drawer__title {
    font-size: var(--text-lg);
    font-weight: var(--font-semibold);
    color: var(--color-text-primary);
    margin: 0;
}

.aural-drawer__close {
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 44px;
    min-height: 44px;
    padding: var(--space-2);
    background: transparent;
    color: var(--color-text-secondary);
    border: none;
    border-radius: var(--radius-md);
    cursor: pointer;
    transition: var(--transition-all-fast);
}

.aural-drawer__close:hover {
    background: var(--color-bg-hover);
    color: var(--color-text-primary);
}

.aural-drawer__close:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}

.aural-drawer__close-icon {
    width: 24px;
    height: 24px;
}

/* ========================================
   Drawer Body
   ======================================== */

.aural-drawer__body {
    flex: 1;
    padding: var(--space-5);
    overflow-y: auto;
    overflow-x: hidden;
}

.aural-drawer__body::-webkit-scrollbar {
    width: 8px;
}

.aural-drawer__body::-webkit-scrollbar-track {
    background: var(--color-bg-secondary);
}

.aural-drawer__body::-webkit-scrollbar-thumb {
    background: var(--color-border-medium);
    border-radius: var(--radius-sm);
}

.aural-drawer__body::-webkit-scrollbar-thumb:hover {
    background: var(--color-text-tertiary);
}

/* ========================================
   Drawer Footer
   ======================================== */

.aural-drawer__footer {
    display: flex;
    align-items: center;
    gap: var(--space-3);
    padding: var(--space-4) var(--space-5);
    border-top: 1px solid var(--color-border-subtle);
    flex-shrink: 0;
}

.aural-drawer__footer--right {
    justify-content: flex-end;
}

.aural-drawer__footer--center {
    justify-content: center;
}

.aural-drawer__footer--between {
    justify-content: space-between;
}

/* ========================================
   Drawer Size Variants
   ======================================== */

/* Small */

.aural-drawer--sm.aural-drawer--left,
.aural-drawer--sm.aural-drawer--right {
    width: 240px;
}

.aural-drawer--sm.aural-drawer--top,
.aural-drawer--sm.aural-drawer--bottom {
    height: 280px;
}

/* Medium (default is already 320px/400px) */

/* Large */

.aural-drawer--lg.aural-drawer--left,
.aural-drawer--lg.aural-drawer--right {
    width: 480px;
}

.aural-drawer--lg.aural-drawer--top,
.aural-drawer--lg.aural-drawer--bottom {
    height: 560px;
}

/* Extra Large */

.aural-drawer--xl.aural-drawer--left,
.aural-drawer--xl.aural-drawer--right {
    width: 640px;
}

.aural-drawer--xl.aural-drawer--top,
.aural-drawer--xl.aural-drawer--bottom {
    height: 720px;
}

/* Full Width/Height */

.aural-drawer--full.aural-drawer--left,
.aural-drawer--full.aural-drawer--right {
    width: 100vw;
    max-width: 100vw;
}

.aural-drawer--full.aural-drawer--top,
.aural-drawer--full.aural-drawer--bottom {
    height: 100vh;
    height: 100dvh;
    max-height: 100vh;
    max-height: 100dvh;
}

/* ========================================
   Drawer Navigation List
   ======================================== */

.aural-drawer__nav {
    display: flex;
    flex-direction: column;
    gap: var(--space-1);
}

.aural-drawer__nav-item {
    display: flex;
    align-items: center;
    gap: var(--space-3);
    padding: var(--space-3) var(--space-4);
    min-height: 44px;
    background: transparent;
    color: var(--color-text-primary);
    border: none;
    border-radius: var(--radius-md);
    text-align: left;
    text-decoration: none;
    font-size: var(--text-base);
    font-weight: var(--font-medium);
    cursor: pointer;
    transition: var(--transition-all-fast);
}

.aural-drawer__nav-item:hover {
    background: var(--color-bg-hover);
    color: var(--color-primary);
}

.aural-drawer__nav-item:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}

.aural-drawer__nav-item--active {
    background: var(--primary-alpha-10);
    color: var(--color-primary);
    font-weight: var(--font-semibold);
}

.aural-drawer__nav-icon {
    flex-shrink: 0;
    width: 20px;
    height: 20px;
    color: var(--color-text-secondary);
}

.aural-drawer__nav-item:hover .aural-drawer__nav-icon,
.aural-drawer__nav-item--active .aural-drawer__nav-icon {
    color: var(--color-primary);
}

.aural-drawer__nav-label {
    flex: 1;
}

.aural-drawer__nav-badge {
    flex-shrink: 0;
    padding: 2px 8px;
    background: var(--color-primary);
    color: white;
    border-radius: var(--radius-full);
    font-size: var(--text-xs);
    font-weight: var(--font-semibold);
}

/* ========================================
   Drawer Section
   ======================================== */

.aural-drawer__section {
    margin-bottom: var(--space-6);
}

.aural-drawer__section:last-child {
    margin-bottom: 0;
}

.aural-drawer__section-title {
    padding: 0 var(--space-4) var(--space-2);
    font-size: var(--text-xs);
    font-weight: var(--font-semibold);
    color: var(--color-text-tertiary);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

/* ========================================
   Overlay Variants
   ======================================== */

/* No backdrop blur */

.aural-drawer-backdrop--no-blur {
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
}

/* Darker backdrop */

.aural-drawer-backdrop--dark {
    background: rgba(0, 0, 0, 0.75);
}

/* Lighter backdrop */

.aural-drawer-backdrop--light {
    background: rgba(0, 0, 0, 0.3);
}

/* No backdrop at all (persistent drawer) */

.aural-drawer--persistent {
    position: relative;
    box-shadow: none;
}

.aural-drawer--persistent.aural-drawer--left,
.aural-drawer--persistent.aural-drawer--right {
    position: static;
    transform: none;
}

/* ========================================
   Accessibility
   ======================================== */

@media (prefers-reduced-motion: reduce) {
    .aural-drawer,
    .aural-drawer-backdrop {
        transition: none;
    }
}

/* ========================================
   Responsive
   ======================================== */

@media (max-width: 640px) {
    .aural-drawer--left,
    .aural-drawer--right {
        width: 100vw;
        max-width: 100vw;
    }

    .aural-drawer--top,
    .aural-drawer--bottom {
        height: 100vh;
        height: 100dvh;
        max-height: 100vh;
        max-height: 100dvh;
    }

    /* Make large drawers full screen on mobile */
    .aural-drawer--lg.aural-drawer--left,
    .aural-drawer--lg.aural-drawer--right,
    .aural-drawer--xl.aural-drawer--left,
    .aural-drawer--xl.aural-drawer--right {
        width: 100vw;
    }

    .aural-drawer--lg.aural-drawer--top,
    .aural-drawer--lg.aural-drawer--bottom,
    .aural-drawer--xl.aural-drawer--top,
    .aural-drawer--xl.aural-drawer--bottom {
        height: 100vh;
        height: 100dvh;
    }
}

/**
 * AURAL UI - Context Menu
 *
 * Right-click menu with keyboard navigation and nested submenus.
 * Supports icons, shortcuts, separators, and disabled items.
 */

/* ========================================
   Context Menu Container
   ======================================== */

.aural-context-menu {
    position: fixed;
    z-index: 9999;
    min-width: 200px;
    max-width: 320px;
    background: var(--color-bg-secondary);
    border: 1px solid var(--color-border-medium);
    border-radius: var(--radius-md);
    box-shadow: var(--shadow-xl);
    padding: var(--space-2) 0;
    opacity: 0;
    visibility: hidden;
    transform: scale(0.95);
    transform-origin: top left;
    transition: opacity 0.15s ease, transform 0.15s ease, visibility 0.15s;
}

.aural-context-menu--open {
    opacity: 1;
    visibility: visible;
    transform: scale(1);
}

/* ========================================
   Menu Items
   ======================================== */

.aural-context-menu__item {
    display: flex;
    align-items: center;
    gap: var(--space-3);
    padding: var(--space-2) var(--space-4);
    min-height: 36px;
    background: transparent;
    color: var(--color-text-primary);
    border: none;
    text-align: left;
    font-size: var(--text-sm);
    font-weight: var(--font-medium);
    cursor: pointer;
    transition: var(--transition-all-fast);
    width: 100%;
    position: relative;
}

.aural-context-menu__item:hover:not(.aural-context-menu__item--disabled) {
    background: var(--color-bg-hover);
    color: var(--color-primary);
}

.aural-context-menu__item:focus-visible {
    outline: none;
    background: var(--color-bg-hover);
    color: var(--color-primary);
}

/* Item Icon */

.aural-context-menu__item-icon {
    flex-shrink: 0;
    width: 16px;
    height: 16px;
    color: var(--color-text-secondary);
}

.aural-context-menu__item:hover .aural-context-menu__item-icon,
.aural-context-menu__item:focus-visible .aural-context-menu__item-icon {
    color: var(--color-primary);
}

/* Item Label */

.aural-context-menu__item-label {
    flex: 1;
}

/* Item Shortcut */

.aural-context-menu__item-shortcut {
    flex-shrink: 0;
    font-size: var(--text-xs);
    color: var(--color-text-tertiary);
    font-family: var(--font-mono);
}

/* Submenu Arrow */

.aural-context-menu__item-arrow {
    flex-shrink: 0;
    width: 12px;
    height: 12px;
    color: var(--color-text-tertiary);
    margin-left: auto;
}

/* ========================================
   Item States
   ======================================== */

.aural-context-menu__item--disabled {
    opacity: 0.5;
    cursor: not-allowed;
    pointer-events: none;
}

.aural-context-menu__item--danger {
    color: var(--color-error);
}

.aural-context-menu__item--danger:hover {
    background: var(--color-error-bg);
    color: var(--color-error);
}

.aural-context-menu__item--active {
    background: var(--primary-alpha-10);
    color: var(--color-primary);
}

/* ========================================
   Checkable Items
   ======================================== */

.aural-context-menu__item--checkable {
    padding-left: var(--space-8);
    position: relative;
}

.aural-context-menu__item-check {
    position: absolute;
    left: var(--space-4);
    width: 16px;
    height: 16px;
    color: var(--color-primary);
    opacity: 0;
    transition: var(--transition-all-fast);
}

.aural-context-menu__item--checked .aural-context-menu__item-check {
    opacity: 1;
}

/* ========================================
   Separator
   ======================================== */

.aural-context-menu__separator {
    height: 1px;
    background: var(--color-border-subtle);
    margin: var(--space-2) var(--space-4);
}

/* ========================================
   Group Header
   ======================================== */

.aural-context-menu__header {
    padding: var(--space-2) var(--space-4);
    font-size: var(--text-xs);
    font-weight: var(--font-semibold);
    color: var(--color-text-tertiary);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

/* ========================================
   Submenu
   ======================================== */

.aural-context-menu__submenu {
    position: absolute;
    left: 100%;
    top: -var(--space-2);
    margin-left: 4px;
    z-index: 10000;
}

.aural-context-menu__item:hover > .aural-context-menu__submenu,
.aural-context-menu__item:focus-visible > .aural-context-menu__submenu {
    opacity: 1;
    visibility: visible;
    transform: scale(1);
}

/* Submenu positioning when near edge */

.aural-context-menu__submenu--left {
    left: auto;
    right: 100%;
    margin-left: 0;
    margin-right: 4px;
}

/* ========================================
   Compact Variant
   ======================================== */

.aural-context-menu--compact .aural-context-menu__item {
    padding: var(--space-1) var(--space-3);
    min-height: 28px;
    font-size: var(--text-xs);
}

.aural-context-menu--compact .aural-context-menu__item-icon {
    width: 14px;
    height: 14px;
}

/* ========================================
   With Icons Only
   ======================================== */

.aural-context-menu--icons-only {
    min-width: auto;
}

.aural-context-menu--icons-only .aural-context-menu__item {
    justify-content: center;
    padding: var(--space-2);
}

.aural-context-menu--icons-only .aural-context-menu__item-label,
.aural-context-menu--icons-only .aural-context-menu__item-shortcut {
    display: none;
}

/* ========================================
   Dark Variant
   ======================================== */

.aural-context-menu--dark {
    background: rgba(0, 0, 0, 0.9);
    border-color: rgba(255, 255, 255, 0.1);
    -webkit-backdrop-filter: blur(12px);
    backdrop-filter: blur(12px);
}

.aural-context-menu--dark .aural-context-menu__item {
    color: rgba(255, 255, 255, 0.9);
}

.aural-context-menu--dark .aural-context-menu__item:hover {
    background: rgba(255, 255, 255, 0.1);
}

.aural-context-menu--dark .aural-context-menu__separator {
    background: rgba(255, 255, 255, 0.1);
}

/* ========================================
   Trigger Context (for element-specific menus)
   ======================================== */

.aural-context-menu-trigger {
    position: relative;
}

/* ========================================
   Loading State
   ======================================== */

.aural-context-menu__item--loading {
    pointer-events: none;
}

.aural-context-menu__item--loading::after {
    content: '';
    position: absolute;
    right: var(--space-4);
    width: 12px;
    height: 12px;
    border: 2px solid var(--color-border-subtle);
    border-top-color: var(--color-primary);
    border-radius: 50%;
    animation: aural-context-menu-spin 0.8s linear infinite;
}

@keyframes aural-context-menu-spin {
    to {
        transform: rotate(360deg);
    }
}

/* ========================================
   Nested Menu Indicator
   ======================================== */

.aural-context-menu__item--has-submenu {
    position: relative;
}

/* ========================================
   Accessibility
   ======================================== */

@media (prefers-reduced-motion: reduce) {
    .aural-context-menu {
        transition: none;
    }

    .aural-context-menu__item {
        transition: none;
    }

    .aural-context-menu__item--loading::after {
        animation: none;
        border-top-color: var(--color-border-subtle);
    }
}

/* Screen reader only text */

.aural-context-menu__sr-label {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border-width: 0;
}

/* ========================================
   Mobile Adaptations
   ======================================== */

@media (max-width: 640px) {
    .aural-context-menu {
        position: fixed;
        bottom: 0;
        left: 0;
        right: 0;
        top: auto;
        max-width: 100%;
        border-radius: var(--radius-lg) var(--radius-lg) 0 0;
        transform-origin: bottom center;
        max-height: 80vh;
        overflow-y: auto;
    }

    .aural-context-menu--open {
        transform: translateY(0);
    }

    .aural-context-menu:not(.aural-context-menu--open) {
        transform: translateY(100%);
    }

    /* Mobile submenu behavior - stack instead of fly out */
    .aural-context-menu__submenu {
        position: static;
        margin: 0;
        padding-left: var(--space-4);
        max-height: 0;
        overflow: hidden;
        transition: max-height 0.3s ease;
    }

    .aural-context-menu__item:hover > .aural-context-menu__submenu,
    .aural-context-menu__item:focus-visible > .aural-context-menu__submenu {
        max-height: 500px;
    }

    .aural-context-menu__item-arrow {
        transform: rotate(90deg);
    }

    .aural-context-menu__item:hover .aural-context-menu__item-arrow,
    .aural-context-menu__item:focus-visible .aural-context-menu__item-arrow {
        transform: rotate(90deg) rotate(180deg);
    }
}

/* ========================================
   Touch Optimizations
   ======================================== */

@media (pointer: coarse) {
    .aural-context-menu__item {
        min-height: 44px;
        padding: var(--space-3) var(--space-4);
    }
}

/**
 * AURAL UI - Bottom Navigation
 *
 * Mobile-first bottom navigation bar with icons and labels.
 * Perfect for mobile apps and responsive web applications.
 */

/* ========================================
   Bottom Nav Container
   ======================================== */

.aural-bottom-nav {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    z-index: 1000;
    display: flex;
    align-items: center;
    justify-content: space-around;
    background: var(--color-bg-primary);
    border-top: 1px solid var(--color-border-medium);
    padding: var(--space-2) var(--space-1);
    box-shadow: var(--shadow-xl);
}

/* Ensure content doesn't get hidden behind bottom nav */

body.has-bottom-nav {
    padding-bottom: 72px;
}

/* ========================================
   Nav Item
   ======================================== */

.aural-bottom-nav__item {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 4px;
    padding: var(--space-2) var(--space-3);
    min-width: 64px;
    min-height: 56px;
    background: transparent;
    color: var(--color-text-secondary);
    border: none;
    border-radius: var(--radius-md);
    text-decoration: none;
    cursor: pointer;
    transition: var(--transition-all-fast);
    position: relative;
    flex: 1;
    max-width: 120px;
}

.aural-bottom-nav__item:hover {
    background: var(--color-bg-hover);
    color: var(--color-text-primary);
}

.aural-bottom-nav__item:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: -2px;
    background: var(--color-bg-hover);
}

/* ========================================
   Active State
   ======================================== */

.aural-bottom-nav__item--active {
    color: var(--color-primary);
    font-weight: var(--font-semibold);
}

.aural-bottom-nav__item--active .aural-bottom-nav__icon {
    color: var(--color-primary);
    transform: scale(1.1);
}

/* ========================================
   Nav Item Icon
   ======================================== */

.aural-bottom-nav__icon {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    transition: var(--transition-all-fast);
}

.aural-bottom-nav__icon svg {
    width: 24px;
    height: 24px;
}

/* ========================================
   Nav Item Label
   ======================================== */

.aural-bottom-nav__label {
    font-size: var(--text-xs);
    line-height: 1;
    text-align: center;
}

/* ========================================
   Badge/Notification
   ======================================== */

.aural-bottom-nav__badge {
    position: absolute;
    top: 4px;
    right: calc(50% - 20px);
    min-width: 18px;
    height: 18px;
    padding: 0 4px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--color-error);
    color: white;
    border: 2px solid var(--color-bg-primary);
    border-radius: var(--radius-full);
    font-size: 0.65rem;
    font-weight: var(--font-bold);
    line-height: 1;
}

.aural-bottom-nav__badge--pulse {
    animation: aural-bottom-nav-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}

@keyframes aural-bottom-nav-pulse {
    0%, 100% {
        opacity: 1;
    }
    50% {
        opacity: 0.7;
    }
}

/* Badge dot variant (no number) */

.aural-bottom-nav__badge--dot {
    min-width: 8px;
    width: 8px;
    height: 8px;
    padding: 0;
    top: 6px;
    right: calc(50% - 16px);
}

/* ========================================
   Floating Action Button (FAB) Variant
   ======================================== */

.aural-bottom-nav--with-fab {
    padding-bottom: var(--space-3);
}

.aural-bottom-nav__fab {
    position: absolute;
    bottom: 24px;
    left: 50%;
    transform: translateX(-50%);
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 56px;
    min-height: 56px;
    padding: var(--space-3);
    background: var(--color-primary);
    color: white;
    border: none;
    border-radius: var(--radius-full);
    box-shadow: var(--shadow-xl);
    cursor: pointer;
    transition: var(--transition-all-fast);
    z-index: 10;
}

.aural-bottom-nav__fab:hover {
    background: var(--color-primary-hover);
    transform: translateX(-50%) scale(1.1);
}

.aural-bottom-nav__fab:focus-visible {
    outline: 2px solid white;
    outline-offset: 2px;
}

.aural-bottom-nav__fab:active {
    transform: translateX(-50%) scale(0.95);
}

.aural-bottom-nav__fab svg {
    width: 24px;
    height: 24px;
}

/* Adjust items spacing for FAB */

.aural-bottom-nav--with-fab .aural-bottom-nav__item:nth-child(2) {
    margin-right: 48px;
}

.aural-bottom-nav--with-fab .aural-bottom-nav__item:nth-child(3) {
    margin-left: 48px;
}

/* ========================================
   Compact Variant (Icon Only)
   ======================================== */

.aural-bottom-nav--compact .aural-bottom-nav__item {
    min-height: 48px;
    gap: 0;
}

.aural-bottom-nav--compact .aural-bottom-nav__label {
    display: none;
}

.aural-bottom-nav--compact .aural-bottom-nav__icon {
    width: 28px;
    height: 28px;
}

.aural-bottom-nav--compact .aural-bottom-nav__icon svg {
    width: 28px;
    height: 28px;
}

/* ========================================
   Labeled On Active Variant
   ======================================== */

.aural-bottom-nav--labeled-active .aural-bottom-nav__label {
    max-height: 0;
    overflow: hidden;
    opacity: 0;
    transition: max-height 0.2s ease, opacity 0.2s ease;
}

.aural-bottom-nav--labeled-active .aural-bottom-nav__item--active .aural-bottom-nav__label {
    max-height: 20px;
    opacity: 1;
}

/* ========================================
   Color Variants
   ======================================== */

.aural-bottom-nav--primary {
    background: var(--color-primary);
    border-top-color: var(--color-primary);
}

.aural-bottom-nav--primary .aural-bottom-nav__item {
    color: rgba(255, 255, 255, 0.7);
}

.aural-bottom-nav--primary .aural-bottom-nav__item:hover,
.aural-bottom-nav--primary .aural-bottom-nav__item--active {
    color: white;
    background: rgba(255, 255, 255, 0.1);
}

.aural-bottom-nav--dark {
    background: rgba(0, 0, 0, 0.9);
    border-top-color: rgba(255, 255, 255, 0.1);
    -webkit-backdrop-filter: blur(12px);
    backdrop-filter: blur(12px);
}

.aural-bottom-nav--dark .aural-bottom-nav__item {
    color: rgba(255, 255, 255, 0.7);
}

.aural-bottom-nav--dark .aural-bottom-nav__item:hover,
.aural-bottom-nav--dark .aural-bottom-nav__item--active {
    color: white;
    background: rgba(255, 255, 255, 0.1);
}

/* ========================================
   Blur Background Variant
   ======================================== */

.aural-bottom-nav--blur {
    background: rgba(var(--color-bg-primary-rgb), 0.8);
    -webkit-backdrop-filter: blur(12px);
    backdrop-filter: blur(12px);
}

/* ========================================
   Divider Between Items
   ======================================== */

.aural-bottom-nav--divided .aural-bottom-nav__item:not(:last-child)::after {
    content: '';
    position: absolute;
    right: 0;
    top: 50%;
    transform: translateY(-50%);
    width: 1px;
    height: 24px;
    background: var(--color-border-subtle);
}

/* ========================================
   Safe Area Support (iOS notch)
   ======================================== */

@supports (padding-bottom: env(safe-area-inset-bottom)) {
    .aural-bottom-nav {
        padding-bottom: calc(var(--space-2) + env(safe-area-inset-bottom));
    }

    .aural-bottom-nav--with-fab {
        padding-bottom: calc(var(--space-3) + env(safe-area-inset-bottom));
    }

    .aural-bottom-nav__fab {
        bottom: calc(24px + env(safe-area-inset-bottom));
    }

    body.has-bottom-nav {
        padding-bottom: calc(72px + env(safe-area-inset-bottom));
    }
}

/* ========================================
   Slide In/Out Animations
   ======================================== */

.aural-bottom-nav--slide-out {
    transform: translateY(100%);
    transition: transform 0.3s ease;
}

.aural-bottom-nav--slide-in {
    transform: translateY(0);
    transition: transform 0.3s ease;
}

/* ========================================
   Accessibility
   ======================================== */

@media (prefers-reduced-motion: reduce) {
    .aural-bottom-nav,
    .aural-bottom-nav__item,
    .aural-bottom-nav__icon,
    .aural-bottom-nav__fab {
        transition: none;
    }

    .aural-bottom-nav__badge--pulse {
        animation: none;
    }
}

/* Screen reader only */

.aural-bottom-nav__sr-label {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border-width: 0;
}

/* ========================================
   Desktop (Hide on Large Screens)
   ======================================== */

@media (min-width: 1024px) {
    .aural-bottom-nav--mobile-only {
        display: none;
    }

    body.has-bottom-nav.has-bottom-nav--mobile-only {
        padding-bottom: 0;
    }
}

/* ========================================
   Tablet Adjustments
   ======================================== */

@media (max-width: 768px) and (min-width: 641px) {
    .aural-bottom-nav__item {
        max-width: 100px;
    }
}

/* ========================================
   Small Mobile
   ======================================== */

@media (max-width: 360px) {
    .aural-bottom-nav__item {
        padding: var(--space-2) var(--space-1);
        min-width: 56px;
    }

    .aural-bottom-nav__label {
        font-size: 0.65rem;
    }
}

/* Data Display */

/**
 * AURAL UI - Table Component
 *
 * Structured data display with various styles
 *
 * Usage:
 *   <div class="table-wrapper">
 *     <table class="table">
 *       <thead>
 *         <tr>
 *           <th>Name</th>
 *           <th>Email</th>
 *           <th>Role</th>
 *         </tr>
 *       </thead>
 *       <tbody>
 *         <tr>
 *           <td>John Doe</td>
 *           <td>john@example.com</td>
 *           <td>Admin</td>
 *         </tr>
 *       </tbody>
 *     </table>
 *   </div>
 */

.table {
    /* Layout */
    width: 100%;
    border-collapse: collapse;
    border-spacing: 0;

    /* Typography */
    font-family: var(--font-sans);
    font-size: var(--text-sm);
    color: var(--color-table-row-text);
    line-height: var(--leading-normal);

    /* Appearance */
    background: var(--color-table-bg);
}

/* ========================================
   TABLE HEADER
   ======================================== */

.table thead {
    background: var(--color-table-header-bg);
    border-bottom: 2px solid var(--color-table-border);
}

.table th {
    /* Spacing */
    padding: var(--space-4) var(--space-4);

    /* Typography */
    font-size: var(--text-xs);
    font-weight: var(--font-semibold);
    color: var(--color-table-header-text);
    text-align: left;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    white-space: nowrap;

    /* Accessibility */
    -webkit-user-select: none;
       -moz-user-select: none;
            user-select: none;

    /* Border */
    border-bottom: 2px solid var(--color-table-border);
}

/* ========================================
   TABLE BODY
   ======================================== */

.table tbody tr {
    border-bottom: 1px solid var(--color-table-border);
    transition: var(--transition-all-fast);
}

.table tbody tr:last-child {
        border-bottom: none;
    }

.table tbody tr:hover {
        background: var(--color-table-row-hover);
    }

.table td {
    /* Spacing */
    padding: var(--space-4) var(--space-4);

    /* Typography */
    vertical-align: middle;

    /* Border */
    border-bottom: 1px solid var(--color-table-border);
}

.table tbody tr:last-child td {
    border-bottom: none;
}

/* ========================================
   TABLE FOOTER
   ======================================== */

.table tfoot {
    background: var(--color-table-header-bg);
    border-top: 2px solid var(--color-table-border);
}

.table tfoot td,
.table tfoot th {
    padding: var(--space-4) var(--space-4);
    font-weight: var(--font-semibold);
    border-top: 2px solid var(--color-table-border);
}

/* ========================================
   SIZES
   ======================================== */

.table-sm {
    font-size: var(--text-xs);
}

.table-sm th,
    .table-sm td {
        padding: var(--space-2) var(--space-3);
    }

.table-lg {
    font-size: var(--text-base);
}

.table-lg th,
    .table-lg td {
        padding: var(--space-5) var(--space-5);
    }

/* ========================================
   VARIANTS
   ======================================== */

/* Striped rows */

.table-striped tbody tr:nth-child(even) {
    background: var(--color-table-row-striped);
}

/* Bordered */

.table-bordered {
    border: 1px solid var(--color-table-border);
}

.table-bordered th,
    .table-bordered td {
        border: 1px solid var(--color-table-border);
    }

/* Borderless */

.table-borderless th,
    .table-borderless td,
    .table-borderless thead,
    .table-borderless tbody tr {
        border: none;
    }

/* Hoverable */

.table-hover tbody tr {
    cursor: pointer;
}

.table-hover tbody tr:hover {
        background: var(--color-table-row-hover);
    }

/* Fixed layout */

.table-fixed {
    table-layout: fixed;
}

.table-fixed th,
    .table-fixed td {
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

/* ========================================
   CELL ALIGNMENT
   ======================================== */

.table th.text-center,
.table td.text-center {
    text-align: center;
}

.table th.text-right,
.table td.text-right {
    text-align: right;
}

.table th.text-left,
.table td.text-left {
    text-align: left;
}

/* Vertical alignment */

.table td.align-top {
    vertical-align: top;
}

.table td.align-middle {
    vertical-align: middle;
}

.table td.align-bottom {
    vertical-align: bottom;
}

/* ========================================
   SORTABLE COLUMNS
   ======================================== */

.table th.sortable {
    cursor: pointer;
    -webkit-user-select: none;
       -moz-user-select: none;
            user-select: none;
    position: relative;
    padding-right: var(--space-8);
}

.table th.sortable:hover {
        background: rgba(255, 255, 255, 0.03);
    }

.table th.sortable::after {
        content: '';
        position: absolute;
        right: var(--space-3);
        top: 50%;
        transform: translateY(-50%);
        width: 16px;
        height: 16px;
        opacity: 0.3;
        background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='rgba(255,255,255,0.5)'%3E%3Cpath d='M4.5 7.5l3.5-3.5 3.5 3.5M11.5 8.5l-3.5 3.5-3.5-3.5'/%3E%3C/svg%3E");
        background-repeat: no-repeat;
        background-position: center;
    }

.table th.sortable.sort-asc::after {
        opacity: 1;
        background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='rgba(16,185,129,1)'%3E%3Cpath d='M4.5 10.5l3.5-3.5 3.5 3.5'/%3E%3C/svg%3E");
    }

.table th.sortable.sort-desc::after {
        opacity: 1;
        background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='rgba(16,185,129,1)'%3E%3Cpath d='M11.5 5.5l-3.5 3.5-3.5-3.5'/%3E%3C/svg%3E");
    }

/* ========================================
   SELECTABLE ROWS
   ======================================== */

.table tbody tr.selected,
.table tbody tr[aria-selected="true"] {
    background: var(--color-table-row-selected);
    border-left: 3px solid var(--color-table-row-selected-border);
}

.table tbody tr.selectable {
    cursor: pointer;
}

.table tbody tr.selectable:active {
        background: var(--color-table-row-selected);
    }

/* Checkbox column */

.table th.checkbox-cell,
.table td.checkbox-cell {
    width: 44px;
    padding: var(--space-2);
    text-align: center;
}

/* ========================================
   STICKY HEADER
   ======================================== */

.table-sticky thead th {
    position: -webkit-sticky;
    position: sticky;
    top: 0;
    z-index: 10;
    background: var(--color-table-header-bg);
    box-shadow: 0 1px 0 var(--color-table-border);
}

/* ========================================
   STICKY COLUMN
   ======================================== */

.table th.sticky-left,
.table td.sticky-left {
    position: -webkit-sticky;
    position: sticky;
    left: 0;
    z-index: 5;
    background: var(--color-table-bg);
    box-shadow: 1px 0 0 var(--color-table-border);
}

.table thead th.sticky-left {
    z-index: 15;
    background: var(--color-table-header-bg);
}

.table th.sticky-right,
.table td.sticky-right {
    position: -webkit-sticky;
    position: sticky;
    right: 0;
    z-index: 5;
    background: var(--color-table-bg);
    box-shadow: -1px 0 0 var(--color-table-border);
}

.table thead th.sticky-right {
    z-index: 15;
    background: var(--color-table-header-bg);
}

/* ========================================
   TABLE WRAPPER (for responsiveness)
   ======================================== */

.table-wrapper {
    width: 100%;
    overflow-x: auto;
    overflow-y: visible;
    border-radius: var(--radius-md);
    border: 1px solid var(--color-table-border);

    /* Custom scrollbar */
    scrollbar-width: thin;
    scrollbar-color: var(--color-border-medium) transparent;
}

.table-wrapper::-webkit-scrollbar {
        height: 8px;
    }

.table-wrapper::-webkit-scrollbar-track {
        background: transparent;
    }

.table-wrapper::-webkit-scrollbar-thumb {
        background: var(--color-border-medium);
        border-radius: var(--radius-full);
    }

/* ========================================
   RESPONSIVE VARIANTS
   ======================================== */

.table-responsive {
    display: block;
    width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

/* Stack on mobile */

@media (max-width: 640px) {
        .table-stack thead {
            display: none;
        }

        .table-stack tbody,
        .table-stack tr,
        .table-stack td {
            display: block;
            width: 100%;
        }

        .table-stack tr {
            margin-bottom: var(--space-4);
            border: 1px solid var(--color-table-border);
            border-radius: var(--radius-md);
            padding: var(--space-2);
        }

        .table-stack td {
            text-align: right;
            padding-left: 50%;
            position: relative;
            border: none;
        }

            .table-stack td::before {
                content: attr(data-label);
                position: absolute;
                left: var(--space-4);
                width: calc(50% - var(--space-4));
                text-align: left;
                font-weight: var(--font-semibold);
                color: var(--color-text-secondary);
            }
}

/* ========================================
   TABLE CAPTION
   ======================================== */

.table caption {
    padding: var(--space-4);
    caption-side: bottom;
    font-size: var(--text-sm);
    color: var(--color-text-secondary);
    text-align: left;
}

.table-caption-top caption {
    caption-side: top;
}

/* ========================================
   EMPTY STATE
   ======================================== */

.table-empty tbody tr td {
        padding: var(--space-12) var(--space-4);
        text-align: center;
        color: var(--color-text-muted);
        font-style: italic;
    }

/* ========================================
   LOADING STATE
   ======================================== */

.table-loading {
    position: relative;
    pointer-events: none;
}

.table-loading::after {
        content: '';
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
        background: rgba(0, 0, 0, 0.3);
        display: flex;
        align-items: center;
        justify-content: center;
    }

/* ========================================
   CELL WITH ACTIONS
   ======================================== */

.table-actions {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    justify-content: flex-end;
}

.table-actions > button,
    .table-actions > a {
        padding: var(--space-1) var(--space-2);
        font-size: var(--text-xs);
    }

/* ========================================
   CELL WITH BADGE
   ======================================== */

.table td .badge {
    display: inline-flex;
}

/* ========================================
   ACCESSIBILITY
   ======================================== */

/* Focus indicators for interactive rows */

.table tbody tr.selectable:focus,
.table tbody tr[role="button"]:focus {
    outline: 2px solid var(--color-primary);
    outline-offset: -2px;
}

/* Reduced motion */

@media (prefers-reduced-motion: reduce) {
    .table tbody tr {
        transition: none;
    }
}

/* ========================================
   MOBILE RESPONSIVE
   ======================================== */

@media (max-width: 768px) {
    /* Ensure table-wrapper provides horizontal scroll */
    .table-wrapper {
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
    }

    /* Slightly reduce padding on mobile */
    .table th,
    .table td {
        padding: var(--space-3);
    }

    /* Make text slightly smaller on mobile */
    .table {
        font-size: 0.8125rem; /* 13px */
    }

    /* Ensure minimum cell widths for readability */
    .table th,
    .table td {
        min-width: 100px;
    }

    .table th:first-child,
    .table td:first-child {
        position: -webkit-sticky;
        position: sticky;
        left: 0;
        z-index: 2;
        background: var(--color-table-bg);
    }

    .table thead th:first-child {
        z-index: 11;
        background: var(--color-table-header-bg);
    }
}

/**
 * AURAL UI - Avatar Component
 *
 * User profile images with initials fallback and status indicators
 *
 * Usage:
 *   <div class="avatar">
 *     <img src="..." alt="User Name">
 *   </div>
 *   <div class="avatar avatar-lg">
 *     <span>JD</span>
 *   </div>
 *   <div class="avatar avatar-status-online">
 *     <img src="..." alt="...">
 *   </div>
 */

.avatar {
    /* Layout */
    display: inline-flex;
    align-items: center;
    justify-content: center;
    position: relative;
    flex-shrink: 0;

    /* Size (default: medium) */
    width: 40px;
    height: 40px;

    /* Appearance */
    background: var(--color-avatar-bg);
    border: 1px solid var(--color-avatar-border);
    border-radius: 50%;
    color: var(--color-avatar-text);
    font-family: var(--font-sans);
    font-size: var(--text-sm);
    font-weight: var(--font-semibold);
    overflow: hidden;

    /* Accessibility */
    -webkit-user-select: none;
       -moz-user-select: none;
            user-select: none;
}

.avatar > img {
        width: 100%;
        height: 100%;
        -o-object-fit: cover;
           object-fit: cover;
        display: block;
    }

.avatar > svg {
        width: 60%;
        height: 60%;
        color: var(--color-text-muted);
    }

.avatar > span {
        text-transform: uppercase;
    }

/* ========================================
   SIZES
   ======================================== */

.avatar-xs {
    width: 24px;
    height: 24px;
    font-size: 0.625rem; /* 10px */
    border-width: 1px;
}

.avatar-xs > svg {
        width: 45%;
        height: 45%;
    }

.avatar-sm {
    width: 32px;
    height: 32px;
    font-size: var(--text-xs);
}

.avatar-sm > svg {
        width: 50%;
        height: 50%;
    }

.avatar-lg {
    width: 56px;
    height: 56px;
    font-size: var(--text-base);
}

.avatar-xl {
    width: 80px;
    height: 80px;
    font-size: var(--text-xl);
}

/* ========================================
   SHAPE VARIANTS
   ======================================== */

.avatar-square {
    border-radius: var(--radius-md);
}

.avatar-rounded {
    border-radius: var(--radius-lg);
}

/* ========================================
   STATUS INDICATORS
   ======================================== */

.avatar-status-online::after,
.avatar-status-offline::after,
.avatar-status-busy::after,
.avatar-status-away::after {
    content: '';
    position: absolute;
    bottom: 0;
    right: 0;
    width: 25%;
    height: 25%;
    min-width: 8px;
    min-height: 8px;
    border-radius: 50%;
    border: 2px solid var(--color-bg-primary);
    z-index: 10;
}

.avatar-status-online::after {
    background: var(--color-avatar-status-online);
}

.avatar-status-offline::after {
    background: var(--color-avatar-status-offline);
}

.avatar-status-busy::after {
    background: var(--color-avatar-status-busy);
}

.avatar-status-away::after {
    background: var(--color-avatar-status-away);
}

/* ========================================
   AVATAR GROUPS
   ======================================== */

.avatar-group {
    display: inline-flex;
    align-items: center;
    flex-direction: row-reverse;
}

.avatar-group > .avatar {
        margin-left: calc(-1 * var(--space-3));
        border: 2px solid var(--color-bg-primary);
        transition: var(--transition-all-fast);
    }

.avatar-group > .avatar:hover {
        transform: translateY(-2px);
        z-index: 10;
    }

.avatar-group > .avatar:first-child {
        margin-left: 0;
    }

/* Stacked variant */

.avatar-group-stacked {
    flex-direction: column-reverse;
    align-items: flex-start;
}

.avatar-group-stacked > .avatar {
        margin-left: 0;
        margin-top: calc(-1 * var(--space-3));
    }

.avatar-group-stacked > .avatar:first-child {
        margin-top: 0;
    }

/* ========================================
   AVATAR WITH BADGE
   ======================================== */

.avatar-wrapper {
    position: relative;
    display: inline-flex;
}

.avatar-wrapper > .badge {
        position: absolute;
        top: -4px;
        right: -4px;
        min-width: 20px;
        height: 20px;
        padding: 0 var(--space-1);
        font-size: var(--text-xs);
        border: 2px solid var(--color-bg-primary);
    }

/* ========================================
   CLICKABLE AVATARS
   ======================================== */

.avatar-clickable {
    cursor: pointer;
    transition: var(--transition-all-fast);
}

.avatar-clickable:hover {
        transform: scale(1.05);
        border-color: var(--color-border-medium);
    }

.avatar-clickable:active {
        transform: scale(0.95);
    }

.avatar-clickable:focus-visible {
        outline: 2px solid var(--color-primary);
        outline-offset: 2px;
    }

/* ========================================
   TOUCH DEVICE OPTIMIZATIONS
   ======================================== */

/* Larger status indicators on touch devices for better visibility */

@media (pointer: coarse) {
    .avatar-status-online::after,
    .avatar-status-offline::after,
    .avatar-status-busy::after,
    .avatar-status-away::after {
        min-width: 10px;
        min-height: 10px;
        border-width: 2.5px;
    }

    /* Ensure clickable avatars meet touch target size */
    .avatar-clickable {
        min-width: 44px;
        min-height: 44px;
    }

    .avatar-clickable.avatar-sm,
    .avatar-clickable.avatar-xs {
        min-width: 44px;
        min-height: 44px;
    }
}

/* ========================================
   ACCESSIBILITY
   ======================================== */

/* Reduced motion support */

@media (prefers-reduced-motion: reduce) {
    .avatar-clickable,
    .avatar-group > .avatar {
        transition: none;
    }

    .avatar-clickable:hover,
    .avatar-clickable:active,
    .avatar-group > .avatar:hover {
        transform: none;
    }
}

/**
 * AURAL UI - Progress Component
 *
 * Progress indicators for loading states and task completion
 *
 * Usage:
 *   <div class="progress" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100">
 *     <div class="progress-bar" style="width: 60%"></div>
 *   </div>
 *   <div class="progress progress-indeterminate">
 *     <div class="progress-bar"></div>
 *   </div>
 */

.progress {
    /* Layout */
    display: flex;
    position: relative;
    overflow: hidden;
    width: 100%;

    /* Size (default: medium) */
    height: 8px;

    /* Appearance */
    background: var(--color-progress-bg);
    border-radius: var(--radius-full);

    /* Accessibility */
    outline: none;
}

/* ========================================
   PROGRESS BAR (FILL)
   ======================================== */

.progress-bar {
    /* Layout */
    display: flex;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    height: 100%;

    /* Appearance */
    background: var(--color-progress-fill);
    border-radius: var(--radius-full);
    color: white;
    font-size: var(--text-xs);
    font-weight: var(--font-semibold);
    white-space: nowrap;

    /* Transitions */
    transition: width 0.3s ease;

    /* Accessibility */
    overflow: hidden;
}

/* ========================================
   SIZES
   ======================================== */

.progress-sm {
    height: 4px;
}

.progress-sm > .progress-bar {
        font-size: 0;
    }

.progress-md {
    height: 8px;
}

.progress-md > .progress-bar {
        font-size: 0;
    }

.progress-lg {
    height: 12px;
}

.progress-xl {
    height: 20px;
}

.progress-xl > .progress-bar {
        font-size: var(--text-sm);
    }

/* ========================================
   COLOR VARIANTS
   ======================================== */

.progress-primary > .progress-bar {
    background: var(--color-progress-fill);
}

.progress-success > .progress-bar {
    background: var(--color-progress-fill-success);
}

.progress-warning > .progress-bar {
    background: var(--color-progress-fill-warning);
}

.progress-error > .progress-bar {
    background: var(--color-progress-fill-error);
}

.progress-info > .progress-bar {
    background: var(--color-progress-fill-info);
}

/* ========================================
   INDETERMINATE STATE
   ======================================== */

.progress-indeterminate > .progress-bar {
    width: 100% !important;
    background: linear-gradient(
        90deg,
        transparent 0%,
        var(--color-progress-fill) 50%,
        transparent 100%
    );
    background-size: 200% 100%;
    animation: progress-indeterminate 1.5s ease-in-out infinite;
}

@keyframes progress-indeterminate {
    0% {
        background-position: 200% 0;
    }
    100% {
        background-position: -200% 0;
    }
}

/* Color variants for indeterminate */

.progress-indeterminate.progress-success > .progress-bar {
    background: linear-gradient(
        90deg,
        transparent 0%,
        var(--color-progress-fill-success) 50%,
        transparent 100%
    );
    background-size: 200% 100%;
}

.progress-indeterminate.progress-warning > .progress-bar {
    background: linear-gradient(
        90deg,
        transparent 0%,
        var(--color-progress-fill-warning) 50%,
        transparent 100%
    );
    background-size: 200% 100%;
}

.progress-indeterminate.progress-error > .progress-bar {
    background: linear-gradient(
        90deg,
        transparent 0%,
        var(--color-progress-fill-error) 50%,
        transparent 100%
    );
    background-size: 200% 100%;
}

.progress-indeterminate.progress-info > .progress-bar {
    background: linear-gradient(
        90deg,
        transparent 0%,
        var(--color-progress-fill-info) 50%,
        transparent 100%
    );
    background-size: 200% 100%;
}

/* ========================================
   STRIPED VARIANT
   ======================================== */

.progress-striped > .progress-bar {
    background-image: linear-gradient(
        45deg,
        rgba(255, 255, 255, 0.15) 25%,
        transparent 25%,
        transparent 50%,
        rgba(255, 255, 255, 0.15) 50%,
        rgba(255, 255, 255, 0.15) 75%,
        transparent 75%,
        transparent
    );
    background-size: 1rem 1rem;
}

.progress-striped.progress-animated > .progress-bar {
    animation: progress-striped 1s linear infinite;
}

@keyframes progress-striped {
    0% {
        background-position: 1rem 0;
    }
    100% {
        background-position: 0 0;
    }
}

/* ========================================
   WITH LABEL
   ======================================== */

.progress-with-label {
    display: flex;
    align-items: center;
    gap: var(--space-3);
}

.progress-with-label > .progress {
        flex: 1;
    }

.progress-with-label > .progress-label {
        flex-shrink: 0;
        color: var(--color-progress-text);
        font-size: var(--text-sm);
        font-weight: var(--font-medium);
        font-variant-numeric: tabular-nums;
        min-width: 3ch;
        text-align: right;
    }

/* ========================================
   ACCESSIBILITY
   ======================================== */

/* Reduced motion */

@media (prefers-reduced-motion: reduce) {
    .progress-bar {
        transition: none;
    }

    .progress-indeterminate > .progress-bar,
    .progress-striped.progress-animated > .progress-bar {
        animation: none;
    }
}

/**
 * AURAL UI - Divider Component
 *
 * Simple separator for visually dividing content
 *
 * Usage:
 *   <hr class="divider">
 *   <hr class="divider divider-vertical">
 *   <div class="divider divider-with-text">
 *     <span>OR</span>
 *   </div>
 */

.divider {
    /* Layout */
    display: block;
    border: none;
    margin: var(--space-6) 0;

    /* Appearance */
    height: 1px;
    background: var(--color-divider);

    /* Accessibility */
    overflow: visible;
}

/* ========================================
   VARIANTS
   ======================================== */

/* Vertical */

.divider-vertical {
    display: inline-block;
    width: 1px;
    height: auto;
    min-height: 1em;
    margin: 0 var(--space-4);
    vertical-align: middle;
    align-self: stretch;
}

/* With Text */

.divider-with-text {
    display: flex;
    align-items: center;
    gap: var(--space-4);
    background: transparent;
    height: auto;
}

.divider-with-text::before,
    .divider-with-text::after {
        content: '';
        flex: 1;
        height: 1px;
        background: var(--color-divider);
    }

.divider-with-text > * {
        flex-shrink: 0;
        color: var(--color-divider-text);
        font-size: var(--text-sm);
        font-weight: var(--font-medium);
        text-transform: uppercase;
        letter-spacing: 0.05em;
    }

/* ========================================
   SPACING VARIANTS
   ======================================== */

.divider-sm {
    margin: var(--space-4) 0;
}

.divider-lg {
    margin: var(--space-8) 0;
}

.divider-xl {
    margin: var(--space-12) 0;
}

/* Vertical spacing */

.divider-vertical.divider-sm {
    margin: 0 var(--space-2);
}

.divider-vertical.divider-lg {
    margin: 0 var(--space-6);
}

.divider-vertical.divider-xl {
    margin: 0 var(--space-8);
}

/* ========================================
   STYLE VARIANTS
   ======================================== */

.divider-dashed {
    background: none;
    border-top: 1px dashed var(--color-divider);
}

.divider-vertical.divider-dashed {
    border-top: none;
    border-left: 1px dashed var(--color-divider);
}

.divider-dotted {
    background: none;
    border-top: 1px dotted var(--color-divider);
}

.divider-vertical.divider-dotted {
    border-top: none;
    border-left: 1px dotted var(--color-divider);
}

/**
 * AURAL UI - Timeline
 *
 * Vertical and horizontal timeline for displaying chronological events,
 * history, activity logs, and process steps.
 */

/* ========================================
   Timeline Container
   ======================================== */

.aural-timeline {
    display: flex;
    position: relative;
}

.aural-timeline--vertical {
    flex-direction: column;
}

.aural-timeline--horizontal {
    flex-direction: row;
    align-items: flex-start;
    overflow-x: auto;
    padding-bottom: var(--space-4);
}

.aural-timeline--horizontal::-webkit-scrollbar {
    height: 8px;
}

.aural-timeline--horizontal::-webkit-scrollbar-track {
    background: var(--color-bg-secondary);
    border-radius: var(--radius-sm);
}

.aural-timeline--horizontal::-webkit-scrollbar-thumb {
    background: var(--color-border-medium);
    border-radius: var(--radius-sm);
}

/* ========================================
   Timeline Item
   ======================================== */

.aural-timeline__item {
    position: relative;
    display: flex;
}

.aural-timeline--vertical .aural-timeline__item {
    padding-bottom: var(--space-6);
}

.aural-timeline--vertical .aural-timeline__item:last-child {
    padding-bottom: 0;
}

.aural-timeline--horizontal .aural-timeline__item {
    flex-direction: column;
    min-width: 280px;
    padding-right: var(--space-6);
}

.aural-timeline--horizontal .aural-timeline__item:last-child {
    padding-right: 0;
}

/* ========================================
   Timeline Connector (Line)
   ======================================== */

.aural-timeline__connector {
    position: absolute;
    background: var(--color-border-medium);
    z-index: 1;
}

/* Vertical Connector */

.aural-timeline--vertical .aural-timeline__connector {
    left: 16px;
    top: 40px;
    bottom: 0;
    width: 2px;
}

.aural-timeline--vertical .aural-timeline__item:last-child .aural-timeline__connector {
    display: none;
}

/* Horizontal Connector */

.aural-timeline--horizontal .aural-timeline__connector {
    top: 16px;
    left: 40px;
    right: 0;
    height: 2px;
}

.aural-timeline--horizontal .aural-timeline__item:last-child .aural-timeline__connector {
    display: none;
}

/* Active/Completed Connectors */

.aural-timeline__item--completed .aural-timeline__connector {
    background: var(--color-success);
}

.aural-timeline__item--active .aural-timeline__connector {
    background: linear-gradient(
        to bottom,
        var(--color-primary) 0%,
        var(--color-border-medium) 100%
    );
}

.aural-timeline--horizontal .aural-timeline__item--active .aural-timeline__connector {
    background: linear-gradient(
        to right,
        var(--color-primary) 0%,
        var(--color-border-medium) 100%
    );
}

/* ========================================
   Timeline Marker (Dot/Icon)
   ======================================== */

.aural-timeline__marker {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 32px;
    min-height: 32px;
    width: 32px;
    height: 32px;
    background: var(--color-bg-secondary);
    color: var(--color-text-secondary);
    border: 2px solid var(--color-border-medium);
    border-radius: 50%;
    flex-shrink: 0;
    z-index: 2;
    transition: var(--transition-all-fast);
}

.aural-timeline__marker-icon {
    width: 16px;
    height: 16px;
}

/* Marker States */

.aural-timeline__item--completed .aural-timeline__marker {
    background: var(--color-success);
    color: white;
    border-color: var(--color-success);
}

.aural-timeline__item--active .aural-timeline__marker {
    background: var(--color-primary);
    color: white;
    border-color: var(--color-primary);
    box-shadow: 0 0 0 4px var(--primary-alpha-20);
}

.aural-timeline__item--pending .aural-timeline__marker {
    background: var(--color-bg-tertiary);
    border-color: var(--color-border-subtle);
}

.aural-timeline__item--error .aural-timeline__marker {
    background: var(--color-error);
    color: white;
    border-color: var(--color-error);
}

.aural-timeline__item--warning .aural-timeline__marker {
    background: var(--color-warning);
    color: white;
    border-color: var(--color-warning);
}

/* ========================================
   Timeline Content
   ======================================== */

.aural-timeline__content {
    flex: 1;
    display: flex;
    flex-direction: column;
}

.aural-timeline--vertical .aural-timeline__content {
    margin-left: var(--space-4);
    padding-top: 4px;
}

.aural-timeline--horizontal .aural-timeline__content {
    margin-top: var(--space-4);
}

.aural-timeline__time {
    font-size: var(--text-xs);
    font-weight: var(--font-medium);
    color: var(--color-text-tertiary);
    margin-bottom: var(--space-2);
}

.aural-timeline__title {
    font-size: var(--text-base);
    font-weight: var(--font-semibold);
    color: var(--color-text-primary);
    margin-bottom: var(--space-1);
    line-height: var(--leading-tight);
}

.aural-timeline__description {
    font-size: var(--text-sm);
    color: var(--color-text-secondary);
    line-height: var(--leading-relaxed);
    margin-bottom: var(--space-2);
}

.aural-timeline__meta {
    display: flex;
    gap: var(--space-3);
    flex-wrap: wrap;
    margin-top: var(--space-2);
}

.aural-timeline__tag {
    padding: 2px 8px;
    background: var(--color-bg-tertiary);
    color: var(--color-text-secondary);
    border: 1px solid var(--color-border-subtle);
    border-radius: var(--radius-sm);
    font-size: var(--text-xs);
    font-weight: var(--font-medium);
}

/* ========================================
   Timeline Card Variant
   ======================================== */

.aural-timeline--card .aural-timeline__content {
    background: var(--color-bg-secondary);
    border: 1px solid var(--color-border-medium);
    border-radius: var(--radius-lg);
    padding: var(--space-4);
    box-shadow: var(--shadow-sm);
    transition: var(--transition-all-fast);
}

.aural-timeline--card .aural-timeline__content:hover {
    border-color: var(--color-primary);
    box-shadow: var(--shadow-md);
}

.aural-timeline--card.aural-timeline--vertical .aural-timeline__content {
    margin-left: var(--space-6);
}

/* ========================================
   Timeline with Avatars
   ======================================== */

.aural-timeline__marker--avatar {
    padding: 0;
    overflow: hidden;
}

.aural-timeline__marker--avatar img {
    width: 100%;
    height: 100%;
    -o-object-fit: cover;
       object-fit: cover;
}

/* ========================================
   Alternating Layout (Vertical Only)
   ======================================== */

.aural-timeline--alternating.aural-timeline--vertical {
    position: relative;
    padding-left: 50%;
}

.aural-timeline--alternating .aural-timeline__item:nth-child(odd) {
    flex-direction: row-reverse;
    padding-right: 50%;
    padding-left: 0;
}

.aural-timeline--alternating .aural-timeline__item:nth-child(even) {
    padding-left: var(--space-6);
}

.aural-timeline--alternating .aural-timeline__connector {
    left: 50%;
    transform: translateX(-50%);
}

.aural-timeline--alternating .aural-timeline__marker {
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
}

.aural-timeline--alternating .aural-timeline__item:nth-child(odd) .aural-timeline__content {
    margin-right: var(--space-6);
    margin-left: 0;
    text-align: right;
}

/* ========================================
   Centered Layout (Horizontal)
   ======================================== */

.aural-timeline--centered.aural-timeline--horizontal {
    justify-content: center;
}

/* ========================================
   Size Variants
   ======================================== */

/* Small */

.aural-timeline--sm .aural-timeline__marker {
    min-width: 24px;
    min-height: 24px;
    width: 24px;
    height: 24px;
}

.aural-timeline--sm .aural-timeline__marker-icon {
    width: 12px;
    height: 12px;
}

.aural-timeline--sm .aural-timeline__title {
    font-size: var(--text-sm);
}

.aural-timeline--sm .aural-timeline__description {
    font-size: var(--text-xs);
}

/* Large */

.aural-timeline--lg .aural-timeline__marker {
    min-width: 48px;
    min-height: 48px;
    width: 48px;
    height: 48px;
}

.aural-timeline--lg .aural-timeline__marker-icon {
    width: 24px;
    height: 24px;
}

.aural-timeline--lg .aural-timeline__title {
    font-size: var(--text-lg);
}

.aural-timeline--lg .aural-timeline__description {
    font-size: var(--text-base);
}

/* ========================================
   Dense Variant
   ======================================== */

.aural-timeline--dense.aural-timeline--vertical .aural-timeline__item {
    padding-bottom: var(--space-4);
}

.aural-timeline--dense .aural-timeline__content {
    margin-left: var(--space-3);
}

.aural-timeline--dense .aural-timeline__time {
    margin-bottom: var(--space-1);
}

.aural-timeline--dense .aural-timeline__description {
    margin-bottom: 0;
}

/* ========================================
   Interactive Variant
   ======================================== */

.aural-timeline--interactive .aural-timeline__item {
    cursor: pointer;
}

.aural-timeline--interactive .aural-timeline__content {
    transition: var(--transition-all-fast);
}

.aural-timeline--interactive .aural-timeline__item:hover .aural-timeline__content {
    background: var(--color-bg-hover);
}

.aural-timeline--interactive .aural-timeline__item:hover .aural-timeline__marker {
    transform: scale(1.1);
}

.aural-timeline--interactive .aural-timeline__item:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
    border-radius: var(--radius-md);
}

/* ========================================
   Accessibility
   ======================================== */

@media (prefers-reduced-motion: reduce) {
    .aural-timeline__marker,
    .aural-timeline__content {
        transition: none;
    }

    .aural-timeline--interactive .aural-timeline__item:hover .aural-timeline__marker {
        transform: none;
    }
}

/* ========================================
   Responsive
   ======================================== */

@media (max-width: 768px) {
    /* Convert horizontal to vertical on mobile */
    .aural-timeline--horizontal.aural-timeline--responsive {
        flex-direction: column;
        overflow-x: visible;
    }

    .aural-timeline--horizontal.aural-timeline--responsive .aural-timeline__item {
        flex-direction: row;
        min-width: auto;
        padding-right: 0;
        padding-bottom: var(--space-6);
    }

    .aural-timeline--horizontal.aural-timeline--responsive .aural-timeline__content {
        margin-top: 0;
        margin-left: var(--space-4);
    }

    .aural-timeline--horizontal.aural-timeline--responsive .aural-timeline__connector {
        top: 40px;
        left: 16px;
        right: auto;
        bottom: 0;
        width: 2px;
        height: auto;
    }

    /* Disable alternating on mobile */
    .aural-timeline--alternating {
        padding-left: 0;
    }

    .aural-timeline--alternating .aural-timeline__item:nth-child(odd) {
        flex-direction: row;
        padding-right: 0;
        padding-left: 0;
    }

    .aural-timeline--alternating .aural-timeline__marker {
        position: static;
        transform: none;
    }

    .aural-timeline--alternating .aural-timeline__connector {
        left: 16px;
        transform: none;
    }

    .aural-timeline--alternating .aural-timeline__item:nth-child(odd) .aural-timeline__content {
        margin-right: 0;
        margin-left: var(--space-4);
        text-align: left;
    }
}

/**
 * AURAL UI - Stats Card
 *
 * Metric display cards with trends, comparisons, and visual indicators.
 * Perfect for dashboards and analytics displays.
 */

/* ========================================
   Stats Card Container
   ======================================== */

.aural-stats-card {
    display: flex;
    flex-direction: column;
    gap: var(--space-3);
    padding: var(--space-5);
    background: var(--color-bg-secondary);
    border: 1px solid var(--color-border-medium);
    border-radius: var(--radius-lg);
    transition: var(--transition-all-fast);
}

.aural-stats-card:hover {
    border-color: var(--color-primary);
    box-shadow: var(--shadow-md);
}

/* ========================================
   Stats Card Header
   ======================================== */

.aural-stats-card__header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: var(--space-3);
}

.aural-stats-card__label {
    font-size: var(--text-sm);
    font-weight: var(--font-medium);
    color: var(--color-text-secondary);
    line-height: var(--leading-tight);
}

.aural-stats-card__icon {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    background: var(--color-bg-tertiary);
    color: var(--color-text-secondary);
    border-radius: var(--radius-md);
}

.aural-stats-card__icon svg {
    width: 20px;
    height: 20px;
}

/* Icon color variants */

.aural-stats-card--primary .aural-stats-card__icon {
    background: var(--primary-alpha-10);
    color: var(--color-primary);
}

.aural-stats-card--success .aural-stats-card__icon {
    background: var(--color-success-bg);
    color: var(--color-success);
}

.aural-stats-card--warning .aural-stats-card__icon {
    background: var(--color-warning-bg);
    color: var(--color-warning);
}

.aural-stats-card--error .aural-stats-card__icon {
    background: var(--color-error-bg);
    color: var(--color-error);
}

.aural-stats-card--info .aural-stats-card__icon {
    background: var(--color-info-bg);
    color: var(--color-info);
}

/* ========================================
   Stats Value
   ======================================== */

.aural-stats-card__value {
    font-size: var(--text-3xl);
    font-weight: var(--font-bold);
    color: var(--color-text-primary);
    line-height: 1.2;
}

.aural-stats-card__value--large {
    font-size: var(--text-4xl);
}

.aural-stats-card__value--small {
    font-size: var(--text-2xl);
}

/* ========================================
   Trend Indicator
   ======================================== */

.aural-stats-card__trend {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 2px 8px;
    background: var(--color-bg-tertiary);
    border-radius: var(--radius-sm);
    font-size: var(--text-xs);
    font-weight: var(--font-semibold);
    line-height: 1;
}

.aural-stats-card__trend-icon {
    width: 12px;
    height: 12px;
}

/* Trend variants */

.aural-stats-card__trend--up {
    background: var(--color-success-bg);
    color: var(--color-success);
}

.aural-stats-card__trend--down {
    background: var(--color-error-bg);
    color: var(--color-error);
}

.aural-stats-card__trend--neutral {
    background: var(--color-bg-tertiary);
    color: var(--color-text-secondary);
}

/* ========================================
   Stats Footer
   ======================================== */

.aural-stats-card__footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-2);
    padding-top: var(--space-3);
    border-top: 1px solid var(--color-border-subtle);
}

.aural-stats-card__description {
    font-size: var(--text-xs);
    color: var(--color-text-tertiary);
    line-height: var(--leading-relaxed);
}

.aural-stats-card__link {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: var(--text-xs);
    font-weight: var(--font-medium);
    color: var(--color-primary);
    text-decoration: none;
    transition: var(--transition-all-fast);
}

.aural-stats-card__link:hover {
    color: var(--color-primary-hover);
    gap: 6px;
}

.aural-stats-card__link svg {
    width: 12px;
    height: 12px;
}

/* ========================================
   Progress Bar Variant
   ======================================== */

.aural-stats-card__progress {
    width: 100%;
    height: 6px;
    background: var(--color-bg-tertiary);
    border-radius: var(--radius-full);
    overflow: hidden;
    margin-top: var(--space-2);
}

.aural-stats-card__progress-bar {
    height: 100%;
    background: var(--color-primary);
    border-radius: var(--radius-full);
    transition: width 0.5s ease;
}

.aural-stats-card--success .aural-stats-card__progress-bar {
    background: var(--color-success);
}

.aural-stats-card--warning .aural-stats-card__progress-bar {
    background: var(--color-warning);
}

.aural-stats-card--error .aural-stats-card__progress-bar {
    background: var(--color-error);
}

/* ========================================
   Comparison Variant
   ======================================== */

.aural-stats-card__comparison {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    margin-top: var(--space-2);
}

.aural-stats-card__comparison-label {
    font-size: var(--text-xs);
    color: var(--color-text-tertiary);
}

.aural-stats-card__comparison-value {
    font-size: var(--text-sm);
    font-weight: var(--font-semibold);
    color: var(--color-text-secondary);
}

/* ========================================
   Sparkline Variant
   ======================================== */

.aural-stats-card__sparkline {
    width: 100%;
    height: 40px;
    margin-top: var(--space-2);
}

.aural-stats-card__sparkline svg {
    width: 100%;
    height: 100%;
}

.aural-stats-card__sparkline-path {
    fill: none;
    stroke: var(--color-primary);
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.aural-stats-card__sparkline-area {
    fill: var(--primary-alpha-10);
}

.aural-stats-card--success .aural-stats-card__sparkline-path {
    stroke: var(--color-success);
}

.aural-stats-card--success .aural-stats-card__sparkline-area {
    fill: var(--color-success-bg);
}

.aural-stats-card--error .aural-stats-card__sparkline-path {
    stroke: var(--color-error);
}

.aural-stats-card--error .aural-stats-card__sparkline-area {
    fill: var(--color-error-bg);
}

/* ========================================
   Size Variants
   ======================================== */

.aural-stats-card--sm {
    padding: var(--space-3) var(--space-4);
    gap: var(--space-2);
}

.aural-stats-card--sm .aural-stats-card__value {
    font-size: var(--text-2xl);
}

.aural-stats-card--sm .aural-stats-card__icon {
    width: 32px;
    height: 32px;
}

.aural-stats-card--sm .aural-stats-card__icon svg {
    width: 16px;
    height: 16px;
}

.aural-stats-card--lg {
    padding: var(--space-6) var(--space-8);
    gap: var(--space-4);
}

.aural-stats-card--lg .aural-stats-card__value {
    font-size: var(--text-5xl);
}

.aural-stats-card--lg .aural-stats-card__icon {
    width: 56px;
    height: 56px;
}

.aural-stats-card--lg .aural-stats-card__icon svg {
    width: 28px;
    height: 28px;
}

/* ========================================
   Horizontal Layout
   ======================================== */

.aural-stats-card--horizontal {
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
}

.aural-stats-card--horizontal .aural-stats-card__header {
    flex-direction: column;
    align-items: flex-start;
}

.aural-stats-card--horizontal .aural-stats-card__footer {
    border-top: none;
    padding-top: 0;
    border-left: 1px solid var(--color-border-subtle);
    padding-left: var(--space-4);
    flex-direction: column;
    align-items: flex-end;
}

/* ========================================
   Clickable Variant
   ======================================== */

.aural-stats-card--clickable {
    cursor: pointer;
}

.aural-stats-card--clickable:hover {
    transform: translateY(-2px);
    box-shadow: var(--shadow-lg);
}

.aural-stats-card--clickable:active {
    transform: translateY(0);
}

/* ========================================
   Loading State
   ======================================== */

.aural-stats-card--loading {
    pointer-events: none;
    opacity: 0.6;
}

.aural-stats-card--loading .aural-stats-card__value,
.aural-stats-card--loading .aural-stats-card__label {
    background: linear-gradient(90deg, var(--color-bg-tertiary) 25%, var(--color-bg-hover) 50%, var(--color-bg-tertiary) 75%);
    background-size: 200% 100%;
    animation: aural-stats-card-loading 1.5s ease-in-out infinite;
    color: transparent;
    border-radius: var(--radius-sm);
}

@keyframes aural-stats-card-loading {
    0% {
        background-position: 200% 0;
    }
    100% {
        background-position: -200% 0;
    }
}

/* ========================================
   Accessibility
   ======================================== */

.aural-stats-card--clickable:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}

@media (prefers-reduced-motion: reduce) {
    .aural-stats-card,
    .aural-stats-card__progress-bar,
    .aural-stats-card--clickable {
        transition: none;
    }

    .aural-stats-card--loading .aural-stats-card__value,
    .aural-stats-card--loading .aural-stats-card__label {
        animation: none;
    }
}

/* ========================================
   Responsive
   ======================================== */

@media (max-width: 640px) {
    .aural-stats-card--horizontal {
        flex-direction: column;
        align-items: stretch;
    }

    .aural-stats-card--horizontal .aural-stats-card__footer {
        border-left: none;
        border-top: 1px solid var(--color-border-subtle);
        padding-left: 0;
        padding-top: var(--space-3);
        flex-direction: row;
        align-items: center;
        justify-content: space-between;
    }
}

/**
 * AURAL UI - Carousel
 *
 * Image/content slider with navigation dots, arrows, and auto-play.
 * Supports touch gestures and keyboard navigation.
 */

/* ========================================
   Carousel Container
   ======================================== */

.aural-carousel {
    position: relative;
    width: 100%;
    overflow: hidden;
    border-radius: var(--radius-lg);
}

/* ========================================
   Carousel Track
   ======================================== */

.aural-carousel__track {
    display: flex;
    transition: transform 0.5s ease;
}

.aural-carousel__track--no-transition {
    transition: none;
}

/* ========================================
   Carousel Slide
   ======================================== */

.aural-carousel__slide {
    min-width: 100%;
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--color-bg-secondary);
}

.aural-carousel__slide img {
    width: 100%;
    height: 100%;
    -o-object-fit: cover;
       object-fit: cover;
}

.aural-carousel__slide-content {
    padding: var(--space-6);
    text-align: center;
}

/* ========================================
   Navigation Arrows
   ======================================== */

.aural-carousel__arrow {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    z-index: 10;
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 44px;
    min-height: 44px;
    padding: var(--space-3);
    background: rgba(0, 0, 0, 0.5);
    -webkit-backdrop-filter: blur(8px);
    backdrop-filter: blur(8px);
    color: white;
    border: none;
    border-radius: var(--radius-full);
    cursor: pointer;
    transition: var(--transition-all-fast);
    opacity: 0;
}

.aural-carousel:hover .aural-carousel__arrow {
    opacity: 1;
}

.aural-carousel__arrow:hover {
    background: rgba(0, 0, 0, 0.7);
    transform: translateY(-50%) scale(1.1);
}

.aural-carousel__arrow:focus-visible {
    outline: 2px solid white;
    outline-offset: 2px;
    opacity: 1;
}

.aural-carousel__arrow:disabled {
    opacity: 0.3;
    cursor: not-allowed;
}

.aural-carousel__arrow:disabled:hover {
    transform: translateY(-50%);
}

.aural-carousel__arrow--prev {
    left: var(--space-4);
}

.aural-carousel__arrow--next {
    right: var(--space-4);
}

.aural-carousel__arrow svg {
    width: 20px;
    height: 20px;
}

/* ========================================
   Pagination Dots
   ======================================== */

.aural-carousel__pagination {
    position: absolute;
    bottom: var(--space-4);
    left: 50%;
    transform: translateX(-50%);
    z-index: 10;
    display: flex;
    gap: var(--space-2);
    padding: var(--space-2) var(--space-3);
    background: rgba(0, 0, 0, 0.5);
    -webkit-backdrop-filter: blur(8px);
    backdrop-filter: blur(8px);
    border-radius: var(--radius-full);
}

.aural-carousel__dot {
    width: 8px;
    height: 8px;
    padding: 0;
    background: rgba(255, 255, 255, 0.5);
    border: none;
    border-radius: 50%;
    cursor: pointer;
    transition: var(--transition-all-fast);
}

.aural-carousel__dot:hover {
    background: rgba(255, 255, 255, 0.8);
    transform: scale(1.2);
}

.aural-carousel__dot--active {
    background: white;
    width: 24px;
    border-radius: var(--radius-full);
}

.aural-carousel__dot:focus-visible {
    outline: 2px solid white;
    outline-offset: 2px;
}

/* ========================================
   Slide Counter
   ======================================== */

.aural-carousel__counter {
    position: absolute;
    top: var(--space-4);
    right: var(--space-4);
    z-index: 10;
    padding: var(--space-2) var(--space-3);
    background: rgba(0, 0, 0, 0.5);
    -webkit-backdrop-filter: blur(8px);
    backdrop-filter: blur(8px);
    color: white;
    border-radius: var(--radius-md);
    font-size: var(--text-sm);
    font-weight: var(--font-medium);
}

/* ========================================
   Thumbnails Variant
   ======================================== */

.aural-carousel__thumbnails {
    display: flex;
    gap: var(--space-2);
    margin-top: var(--space-4);
    overflow-x: auto;
    padding-bottom: var(--space-2);
}

.aural-carousel__thumbnails::-webkit-scrollbar {
    height: 4px;
}

.aural-carousel__thumbnails::-webkit-scrollbar-track {
    background: var(--color-bg-tertiary);
    border-radius: var(--radius-sm);
}

.aural-carousel__thumbnails::-webkit-scrollbar-thumb {
    background: var(--color-border-medium);
    border-radius: var(--radius-sm);
}

.aural-carousel__thumbnail {
    min-width: 80px;
    height: 60px;
    padding: 0;
    background: transparent;
    border: 2px solid transparent;
    border-radius: var(--radius-md);
    overflow: hidden;
    cursor: pointer;
    transition: var(--transition-all-fast);
}

.aural-carousel__thumbnail:hover {
    border-color: var(--color-primary);
}

.aural-carousel__thumbnail--active {
    border-color: var(--color-primary);
    box-shadow: 0 0 0 2px var(--primary-alpha-20);
}

.aural-carousel__thumbnail img {
    width: 100%;
    height: 100%;
    -o-object-fit: cover;
       object-fit: cover;
}

/* ========================================
   Caption
   ======================================== */

.aural-carousel__caption {
    position: absolute;
    bottom: var(--space-4);
    left: var(--space-4);
    right: var(--space-4);
    z-index: 10;
    padding: var(--space-4);
    background: rgba(0, 0, 0, 0.7);
    -webkit-backdrop-filter: blur(8px);
    backdrop-filter: blur(8px);
    color: white;
    border-radius: var(--radius-md);
}

.aural-carousel__caption-title {
    font-size: var(--text-lg);
    font-weight: var(--font-semibold);
    margin-bottom: var(--space-1);
    line-height: var(--leading-tight);
}

.aural-carousel__caption-description {
    font-size: var(--text-sm);
    line-height: var(--leading-relaxed);
    opacity: 0.9;
}

/* ========================================
   Fade Variant
   ======================================== */

.aural-carousel--fade .aural-carousel__track {
    position: relative;
}

.aural-carousel--fade .aural-carousel__slide {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    opacity: 0;
    transition: opacity 0.5s ease;
}

.aural-carousel--fade .aural-carousel__slide--active {
    position: relative;
    opacity: 1;
}

/* ========================================
   Auto Height
   ======================================== */

.aural-carousel--auto-height {
    height: auto;
}

.aural-carousel--auto-height .aural-carousel__track {
    height: auto;
}

.aural-carousel--auto-height .aural-carousel__slide {
    height: auto;
}

/* ========================================
   Size Variants
   ======================================== */

.aural-carousel--sm {
    max-height: 300px;
}

.aural-carousel--sm .aural-carousel__slide {
    max-height: 300px;
}

.aural-carousel--md {
    max-height: 500px;
}

.aural-carousel--md .aural-carousel__slide {
    max-height: 500px;
}

.aural-carousel--lg {
    max-height: 700px;
}

.aural-carousel--lg .aural-carousel__slide {
    max-height: 700px;
}

.aural-carousel--full {
    height: 100vh;
    height: 100dvh;
}

.aural-carousel--full .aural-carousel__slide {
    height: 100vh;
    height: 100dvh;
}

/* ========================================
   Aspect Ratios
   ======================================== */

.aural-carousel--16x9 {
    aspect-ratio: 16 / 9;
}

.aural-carousel--4x3 {
    aspect-ratio: 4 / 3;
}

.aural-carousel--1x1 {
    aspect-ratio: 1 / 1;
}

.aural-carousel--21x9 {
    aspect-ratio: 21 / 9;
}

/* ========================================
   Multiple Slides Per View
   ======================================== */

.aural-carousel--2-per-view .aural-carousel__slide {
    min-width: 50%;
}

.aural-carousel--3-per-view .aural-carousel__slide {
    min-width: 33.333%;
}

.aural-carousel--4-per-view .aural-carousel__slide {
    min-width: 25%;
}

/* ========================================
   Centered Slides
   ======================================== */

.aural-carousel--centered .aural-carousel__slide {
    padding: 0 var(--space-6);
}

/* ========================================
   Loop Effect
   ======================================== */

.aural-carousel--loop .aural-carousel__track {
    transition: transform 0.5s ease;
}

/* ========================================
   Autoplay Indicator
   ======================================== */

.aural-carousel__autoplay-progress {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    height: 3px;
    background: rgba(255, 255, 255, 0.3);
    z-index: 11;
}

.aural-carousel__autoplay-bar {
    height: 100%;
    background: var(--color-primary);
    width: 0;
    transition: width linear;
}

/* ========================================
   Pause/Play Button
   ======================================== */

.aural-carousel__play-button {
    position: absolute;
    top: var(--space-4);
    left: var(--space-4);
    z-index: 10;
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 44px;
    min-height: 44px;
    padding: var(--space-2);
    background: rgba(0, 0, 0, 0.5);
    -webkit-backdrop-filter: blur(8px);
    backdrop-filter: blur(8px);
    color: white;
    border: none;
    border-radius: var(--radius-full);
    cursor: pointer;
    transition: var(--transition-all-fast);
}

.aural-carousel__play-button:hover {
    background: rgba(0, 0, 0, 0.7);
}

.aural-carousel__play-button svg {
    width: 16px;
    height: 16px;
}

/* ========================================
   Accessibility
   ======================================== */

@media (prefers-reduced-motion: reduce) {
    .aural-carousel__track,
    .aural-carousel__slide,
    .aural-carousel__arrow,
    .aural-carousel__dot {
        transition: none;
    }
}

/* Screen reader announcements */

.aural-carousel__sr-status {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border-width: 0;
}

/* ========================================
   Responsive
   ======================================== */

@media (max-width: 768px) {
    .aural-carousel--3-per-view .aural-carousel__slide,
    .aural-carousel--4-per-view .aural-carousel__slide {
        min-width: 50%;
    }

    .aural-carousel__arrow {
        opacity: 1;
    }

    .aural-carousel__caption {
        padding: var(--space-3);
    }

    .aural-carousel__caption-title {
        font-size: var(--text-base);
    }

    .aural-carousel__caption-description {
        font-size: var(--text-xs);
    }
}

@media (max-width: 640px) {
    .aural-carousel--2-per-view .aural-carousel__slide,
    .aural-carousel--3-per-view .aural-carousel__slide,
    .aural-carousel--4-per-view .aural-carousel__slide {
        min-width: 100%;
    }

    .aural-carousel__arrow {
        min-width: 36px;
        min-height: 36px;
        padding: var(--space-2);
    }

    .aural-carousel__arrow svg {
        width: 16px;
        height: 16px;
    }

    .aural-carousel__arrow--prev {
        left: var(--space-2);
    }

    .aural-carousel__arrow--next {
        right: var(--space-2);
    }
}

/**
 * AURAL UI - Tree View
 *
 * Hierarchical tree structure for files, folders, and nested navigation.
 * Supports expand/collapse, icons, checkboxes, and keyboard navigation.
 */

/* ========================================
   Tree Container
   ======================================== */

.aural-tree {
    list-style: none;
    padding: 0;
    margin: 0;
    width: 100%;
    background: var(--color-bg-primary);
    border: 1px solid var(--color-border-medium);
    border-radius: var(--radius-lg);
    overflow: hidden;
}

.aural-tree ul {
    list-style: none;
    padding: 0;
    margin: 0;
}

/* ========================================
   Tree Item
   ======================================== */

.aural-tree__item {
    position: relative;
}

.aural-tree__content {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    padding: var(--space-2) var(--space-3);
    min-height: 40px;
    background: transparent;
    color: var(--color-text-primary);
    border: none;
    text-align: left;
    font-size: var(--text-sm);
    font-weight: var(--font-medium);
    cursor: pointer;
    transition: var(--transition-all-fast);
    width: 100%;
    border-bottom: 1px solid transparent;
}

.aural-tree__content:hover {
    background: var(--color-bg-hover);
    color: var(--color-primary);
}

.aural-tree__content:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: -2px;
    background: var(--color-bg-hover);
}

/* ========================================
   Tree Item States
   ======================================== */

.aural-tree__item--selected > .aural-tree__content {
    background: var(--primary-alpha-10);
    color: var(--color-primary);
    font-weight: var(--font-semibold);
}

.aural-tree__item--disabled > .aural-tree__content {
    opacity: 0.5;
    cursor: not-allowed;
    pointer-events: none;
}

/* ========================================
   Expand/Collapse Toggle
   ======================================== */

.aural-tree__toggle {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 20px;
    height: 20px;
    color: var(--color-text-secondary);
    transition: var(--transition-all-fast);
}

.aural-tree__toggle svg {
    width: 16px;
    height: 16px;
}

.aural-tree__item--expanded > .aural-tree__content .aural-tree__toggle {
    transform: rotate(90deg);
}

.aural-tree__item--leaf .aural-tree__toggle {
    opacity: 0;
    pointer-events: none;
}

/* ========================================
   Tree Item Icon
   ======================================== */

.aural-tree__icon {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 20px;
    height: 20px;
    color: var(--color-text-secondary);
}

.aural-tree__icon svg {
    width: 16px;
    height: 16px;
}

.aural-tree__item--expanded > .aural-tree__content .aural-tree__icon {
    color: var(--color-primary);
}

/* Color variants for icons */

.aural-tree__icon--primary {
    color: var(--color-primary);
}

.aural-tree__icon--success {
    color: var(--color-success);
}

.aural-tree__icon--warning {
    color: var(--color-warning);
}

.aural-tree__icon--error {
    color: var(--color-error);
}

.aural-tree__icon--info {
    color: var(--color-info);
}

/* ========================================
   Tree Item Label
   ======================================== */

.aural-tree__label {
    flex: 1;
    line-height: var(--leading-tight);
}

/* ========================================
   Tree Item Badge/Count
   ======================================== */

.aural-tree__badge {
    flex-shrink: 0;
    padding: 2px 6px;
    background: var(--color-bg-tertiary);
    color: var(--color-text-tertiary);
    border-radius: var(--radius-full);
    font-size: var(--text-xs);
    font-weight: var(--font-semibold);
    line-height: 1;
}

.aural-tree__item--selected .aural-tree__badge {
    background: var(--primary-alpha-20);
    color: var(--color-primary);
}

/* ========================================
   Tree Item Actions
   ======================================== */

.aural-tree__actions {
    display: none;
    align-items: center;
    gap: var(--space-1);
    margin-left: auto;
}

.aural-tree__content:hover .aural-tree__actions,
.aural-tree__content:focus-visible .aural-tree__actions {
    display: flex;
}

.aural-tree__action {
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 28px;
    min-height: 28px;
    padding: var(--space-1);
    background: transparent;
    color: var(--color-text-secondary);
    border: none;
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: var(--transition-all-fast);
}

.aural-tree__action:hover {
    background: var(--color-bg-tertiary);
    color: var(--color-primary);
}

.aural-tree__action svg {
    width: 14px;
    height: 14px;
}

/* ========================================
   Nested Tree (Children)
   ======================================== */

.aural-tree__children {
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.3s ease;
    padding-left: var(--space-6);
    background: var(--color-bg-secondary);
}

.aural-tree__item--expanded > .aural-tree__children {
    max-height: 2000px;
}

.aural-tree__children .aural-tree__content {
    border-bottom: 1px solid var(--color-border-subtle);
}

.aural-tree__children .aural-tree__item:last-child .aural-tree__content {
    border-bottom: none;
}

/* ========================================
   Checkbox Variant
   ======================================== */

.aural-tree--with-checkboxes .aural-tree__content {
    padding-left: var(--space-2);
}

.aural-tree__checkbox {
    flex-shrink: 0;
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 18px;
    height: 18px;
    background: var(--color-bg-secondary);
    border: 2px solid var(--color-border-medium);
    border-radius: var(--radius-sm);
    transition: var(--transition-all-fast);
}

.aural-tree__checkbox svg {
    width: 12px;
    height: 12px;
    opacity: 0;
    color: white;
    transition: var(--transition-all-fast);
}

.aural-tree__item--checked .aural-tree__checkbox {
    background: var(--color-primary);
    border-color: var(--color-primary);
}

.aural-tree__item--checked .aural-tree__checkbox svg {
    opacity: 1;
}

.aural-tree__item--indeterminate .aural-tree__checkbox {
    background: var(--primary-alpha-20);
    border-color: var(--color-primary);
}

.aural-tree__item--indeterminate .aural-tree__checkbox::after {
    content: '';
    position: absolute;
    width: 8px;
    height: 2px;
    background: var(--color-primary);
    border-radius: 1px;
}

/* ========================================
   Connection Lines
   ======================================== */

.aural-tree--with-lines .aural-tree__item {
    position: relative;
}

.aural-tree--with-lines .aural-tree__item::before {
    content: '';
    position: absolute;
    left: 10px;
    top: 0;
    bottom: 0;
    width: 1px;
    background: var(--color-border-subtle);
}

.aural-tree--with-lines .aural-tree__item::after {
    content: '';
    position: absolute;
    left: 10px;
    top: 20px;
    width: 16px;
    height: 1px;
    background: var(--color-border-subtle);
}

.aural-tree--with-lines .aural-tree__item:last-child::before {
    bottom: auto;
    height: 20px;
}

.aural-tree--with-lines > .aural-tree__item::before,
.aural-tree--with-lines > .aural-tree__item::after {
    display: none;
}

/* ========================================
   Compact Variant
   ======================================== */

.aural-tree--compact .aural-tree__content {
    padding: var(--space-1) var(--space-2);
    min-height: 32px;
    font-size: var(--text-xs);
}

.aural-tree--compact .aural-tree__icon,
.aural-tree--compact .aural-tree__toggle {
    width: 16px;
    height: 16px;
}

.aural-tree--compact .aural-tree__icon svg,
.aural-tree--compact .aural-tree__toggle svg {
    width: 12px;
    height: 12px;
}

.aural-tree--compact .aural-tree__children {
    padding-left: var(--space-4);
}

/* ========================================
   Large Variant
   ======================================== */

.aural-tree--large .aural-tree__content {
    padding: var(--space-3) var(--space-4);
    min-height: 48px;
    font-size: var(--text-base);
}

.aural-tree--large .aural-tree__icon,
.aural-tree--large .aural-tree__toggle {
    width: 24px;
    height: 24px;
}

.aural-tree--large .aural-tree__icon svg,
.aural-tree--large .aural-tree__toggle svg {
    width: 20px;
    height: 20px;
}

.aural-tree--large .aural-tree__children {
    padding-left: var(--space-8);
}

/* ========================================
   Loading State
   ======================================== */

.aural-tree__item--loading > .aural-tree__content {
    pointer-events: none;
}

.aural-tree__item--loading .aural-tree__toggle {
    animation: aural-tree-spin 1s linear infinite;
}

@keyframes aural-tree-spin {
    to {
        transform: rotate(360deg);
    }
}

/* ========================================
   Draggable Variant
   ======================================== */

.aural-tree--draggable .aural-tree__content {
    cursor: grab;
}

.aural-tree__item--dragging > .aural-tree__content {
    opacity: 0.5;
    cursor: grabbing;
}

.aural-tree__item--drop-target > .aural-tree__content {
    background: var(--primary-alpha-10);
    border: 2px dashed var(--color-primary);
}

/* ========================================
   Search Highlight
   ======================================== */

.aural-tree__label mark {
    background: var(--color-warning-bg);
    color: var(--color-warning);
    padding: 0 2px;
    border-radius: var(--radius-sm);
}

/* ========================================
   Empty State
   ======================================== */

.aural-tree__empty {
    padding: var(--space-8) var(--space-4);
    text-align: center;
    color: var(--color-text-tertiary);
    font-size: var(--text-sm);
}

.aural-tree__empty-icon {
    width: 48px;
    height: 48px;
    margin: 0 auto var(--space-3);
    color: var(--color-text-muted);
}

/* ========================================
   Accessibility
   ======================================== */

@media (prefers-reduced-motion: reduce) {
    .aural-tree__content,
    .aural-tree__toggle,
    .aural-tree__children,
    .aural-tree__checkbox {
        transition: none;
    }

    .aural-tree__item--loading .aural-tree__toggle {
        animation: none;
    }
}

/* Screen reader only */

.aural-tree__sr-label {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border-width: 0;
}

/* ========================================
   Hover Effects
   ======================================== */

.aural-tree--highlight-hover .aural-tree__content:hover {
    box-shadow: inset 4px 0 0 var(--color-primary);
}

/* ========================================
   Responsive
   ======================================== */

@media (max-width: 640px) {
    .aural-tree__content {
        padding: var(--space-2);
        min-height: 44px;
    }

    .aural-tree__actions {
        display: flex;
    }

    .aural-tree__children {
        padding-left: var(--space-4);
    }
}

/**
 * AURAL UI - Image Gallery
 *
 * Responsive grid gallery with lightbox modal for full-size viewing.
 * Supports captions, thumbnails, navigation, and keyboard controls.
 */

/* ========================================
   Gallery Grid
   ======================================== */

.aural-gallery {
    display: grid;
    gap: var(--space-4);
    width: 100%;
}

/* Grid columns */

.aural-gallery--cols-2 {
    grid-template-columns: repeat(2, 1fr);
}

.aural-gallery--cols-3 {
    grid-template-columns: repeat(3, 1fr);
}

.aural-gallery--cols-4 {
    grid-template-columns: repeat(4, 1fr);
}

.aural-gallery--cols-5 {
    grid-template-columns: repeat(5, 1fr);
}

.aural-gallery--cols-6 {
    grid-template-columns: repeat(6, 1fr);
}

/* Auto-responsive */

.aural-gallery--auto {
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
}

/* ========================================
   Gallery Item
   ======================================== */

.aural-gallery__item {
    position: relative;
    aspect-ratio: 1 / 1;
    overflow: hidden;
    background: var(--color-bg-secondary);
    border-radius: var(--radius-md);
    cursor: pointer;
    transition: var(--transition-all-fast);
}

.aural-gallery__item:hover {
    transform: translateY(-4px);
    box-shadow: var(--shadow-lg);
}

.aural-gallery__item:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}

/* ========================================
   Gallery Image
   ======================================== */

.aural-gallery__image {
    width: 100%;
    height: 100%;
    -o-object-fit: cover;
       object-fit: cover;
    transition: transform 0.3s ease;
}

.aural-gallery__item:hover .aural-gallery__image {
    transform: scale(1.05);
}

/* ========================================
   Image Overlay
   ======================================== */

.aural-gallery__overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(to bottom, transparent 50%, rgba(0, 0, 0, 0.7));
    opacity: 0;
    transition: var(--transition-all-fast);
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
    padding: var(--space-4);
    color: white;
}

.aural-gallery__item:hover .aural-gallery__overlay,
.aural-gallery__item:focus-visible .aural-gallery__overlay {
    opacity: 1;
}

.aural-gallery__title {
    font-size: var(--text-sm);
    font-weight: var(--font-semibold);
    margin-bottom: var(--space-1);
    line-height: var(--leading-tight);
}

.aural-gallery__description {
    font-size: var(--text-xs);
    opacity: 0.9;
    line-height: var(--leading-relaxed);
}

/* ========================================
   Image Badge/Icon
   ======================================== */

.aural-gallery__badge {
    position: absolute;
    top: var(--space-2);
    right: var(--space-2);
    padding: 4px 8px;
    background: rgba(0, 0, 0, 0.7);
    -webkit-backdrop-filter: blur(8px);
    backdrop-filter: blur(8px);
    color: white;
    border-radius: var(--radius-sm);
    font-size: var(--text-xs);
    font-weight: var(--font-semibold);
    z-index: 2;
}

.aural-gallery__icon {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    display: flex;
    align-items: center;
    justify-content: center;
    width: 48px;
    height: 48px;
    background: rgba(0, 0, 0, 0.5);
    -webkit-backdrop-filter: blur(8px);
    backdrop-filter: blur(8px);
    color: white;
    border-radius: var(--radius-full);
    opacity: 0;
    transition: var(--transition-all-fast);
    z-index: 2;
}

.aural-gallery__item:hover .aural-gallery__icon {
    opacity: 1;
}

.aural-gallery__icon svg {
    width: 24px;
    height: 24px;
}

/* ========================================
   Lightbox Modal
   ======================================== */

.aural-lightbox {
    position: fixed;
    inset: 0;
    z-index: 10000;
    background: rgba(0, 0, 0, 0.95);
    -webkit-backdrop-filter: blur(8px);
    backdrop-filter: blur(8px);
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.3s ease, visibility 0.3s;
}

.aural-lightbox--open {
    opacity: 1;
    visibility: visible;
}

/* ========================================
   Lightbox Content
   ======================================== */

.aural-lightbox__content {
    position: relative;
    max-width: 90vw;
    max-height: 90vh;
    display: flex;
    flex-direction: column;
    align-items: center;
}

.aural-lightbox__image-wrapper {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    max-width: 100%;
    max-height: calc(90vh - 100px);
}

.aural-lightbox__image {
    max-width: 100%;
    max-height: calc(90vh - 100px);
    -o-object-fit: contain;
       object-fit: contain;
    border-radius: var(--radius-md);
    box-shadow: var(--shadow-2xl);
}

/* ========================================
   Lightbox Navigation
   ======================================== */

.aural-lightbox__nav {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 48px;
    min-height: 48px;
    padding: var(--space-3);
    background: rgba(0, 0, 0, 0.5);
    -webkit-backdrop-filter: blur(8px);
    backdrop-filter: blur(8px);
    color: white;
    border: none;
    border-radius: var(--radius-full);
    cursor: pointer;
    transition: var(--transition-all-fast);
    z-index: 10;
}

.aural-lightbox__nav:hover {
    background: rgba(0, 0, 0, 0.7);
    transform: translateY(-50%) scale(1.1);
}

.aural-lightbox__nav:focus-visible {
    outline: 2px solid white;
    outline-offset: 2px;
}

.aural-lightbox__nav:disabled {
    opacity: 0.3;
    cursor: not-allowed;
}

.aural-lightbox__nav:disabled:hover {
    transform: translateY(-50%);
}

.aural-lightbox__nav--prev {
    left: var(--space-4);
}

.aural-lightbox__nav--next {
    right: var(--space-4);
}

.aural-lightbox__nav svg {
    width: 24px;
    height: 24px;
}

/* ========================================
   Lightbox Close Button
   ======================================== */

.aural-lightbox__close {
    position: absolute;
    top: var(--space-4);
    right: var(--space-4);
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 44px;
    min-height: 44px;
    padding: var(--space-2);
    background: rgba(0, 0, 0, 0.5);
    -webkit-backdrop-filter: blur(8px);
    backdrop-filter: blur(8px);
    color: white;
    border: none;
    border-radius: var(--radius-full);
    cursor: pointer;
    transition: var(--transition-all-fast);
    z-index: 10;
}

.aural-lightbox__close:hover {
    background: rgba(0, 0, 0, 0.7);
    transform: scale(1.1);
}

.aural-lightbox__close:focus-visible {
    outline: 2px solid white;
    outline-offset: 2px;
}

.aural-lightbox__close svg {
    width: 20px;
    height: 20px;
}

/* ========================================
   Lightbox Caption
   ======================================== */

.aural-lightbox__caption {
    margin-top: var(--space-4);
    text-align: center;
    color: white;
    max-width: 600px;
}

.aural-lightbox__caption-title {
    font-size: var(--text-lg);
    font-weight: var(--font-semibold);
    margin-bottom: var(--space-1);
    line-height: var(--leading-tight);
}

.aural-lightbox__caption-description {
    font-size: var(--text-sm);
    opacity: 0.9;
    line-height: var(--leading-relaxed);
}

/* ========================================
   Lightbox Counter
   ======================================== */

.aural-lightbox__counter {
    position: absolute;
    bottom: var(--space-4);
    left: 50%;
    transform: translateX(-50%);
    padding: var(--space-2) var(--space-3);
    background: rgba(0, 0, 0, 0.5);
    -webkit-backdrop-filter: blur(8px);
    backdrop-filter: blur(8px);
    color: white;
    border-radius: var(--radius-md);
    font-size: var(--text-sm);
    font-weight: var(--font-medium);
    z-index: 10;
}

/* ========================================
   Lightbox Zoom Controls
   ======================================== */

.aural-lightbox__zoom {
    position: absolute;
    top: var(--space-4);
    left: var(--space-4);
    display: flex;
    gap: var(--space-2);
    z-index: 10;
}

.aural-lightbox__zoom-button {
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 40px;
    min-height: 40px;
    padding: var(--space-2);
    background: rgba(0, 0, 0, 0.5);
    -webkit-backdrop-filter: blur(8px);
    backdrop-filter: blur(8px);
    color: white;
    border: none;
    border-radius: var(--radius-md);
    cursor: pointer;
    transition: var(--transition-all-fast);
}

.aural-lightbox__zoom-button:hover {
    background: rgba(0, 0, 0, 0.7);
}

.aural-lightbox__zoom-button svg {
    width: 18px;
    height: 18px;
}

/* Zoomed state */

.aural-lightbox__image--zoomed {
    cursor: grab;
    max-width: none;
    max-height: none;
    width: auto;
    height: auto;
}

.aural-lightbox__image--dragging {
    cursor: grabbing;
}

/* ========================================
   Thumbnails Strip
   ======================================== */

.aural-lightbox__thumbnails {
    position: absolute;
    bottom: var(--space-4);
    left: 50%;
    transform: translateX(-50%);
    display: flex;
    gap: var(--space-2);
    padding: var(--space-2);
    background: rgba(0, 0, 0, 0.5);
    -webkit-backdrop-filter: blur(8px);
    backdrop-filter: blur(8px);
    border-radius: var(--radius-md);
    max-width: 90vw;
    overflow-x: auto;
    z-index: 10;
}

.aural-lightbox__thumbnails::-webkit-scrollbar {
    height: 4px;
}

.aural-lightbox__thumbnails::-webkit-scrollbar-track {
    background: rgba(255, 255, 255, 0.1);
    border-radius: 2px;
}

.aural-lightbox__thumbnails::-webkit-scrollbar-thumb {
    background: rgba(255, 255, 255, 0.3);
    border-radius: 2px;
}

.aural-lightbox__thumbnail {
    width: 60px;
    height: 60px;
    padding: 0;
    background: transparent;
    border: 2px solid transparent;
    border-radius: var(--radius-sm);
    overflow: hidden;
    cursor: pointer;
    transition: var(--transition-all-fast);
    flex-shrink: 0;
}

.aural-lightbox__thumbnail:hover {
    border-color: rgba(255, 255, 255, 0.5);
}

.aural-lightbox__thumbnail--active {
    border-color: var(--color-primary);
    box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.2);
}

.aural-lightbox__thumbnail img {
    width: 100%;
    height: 100%;
    -o-object-fit: cover;
       object-fit: cover;
}

/* ========================================
   Loading State
   ======================================== */

.aural-gallery__item--loading {
    pointer-events: none;
}

.aural-gallery__item--loading::after {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(90deg, transparent 25%, rgba(255, 255, 255, 0.1) 50%, transparent 75%);
    background-size: 200% 100%;
    animation: aural-gallery-shimmer 1.5s ease-in-out infinite;
}

@keyframes aural-gallery-shimmer {
    0% {
        background-position: 200% 0;
    }
    100% {
        background-position: -200% 0;
    }
}

/* ========================================
   Masonry Layout
   ======================================== */

.aural-gallery--masonry {
    display: block;
    -moz-column-count: 3;
         column-count: 3;
    -moz-column-gap: var(--space-4);
         column-gap: var(--space-4);
}

.aural-gallery--masonry .aural-gallery__item {
    aspect-ratio: auto;
    margin-bottom: var(--space-4);
    -moz-column-break-inside: avoid;
         break-inside: avoid;
}

/* ========================================
   Compact Gap
   ======================================== */

.aural-gallery--compact {
    gap: var(--space-2);
}

.aural-gallery--compact.aural-gallery--masonry {
    -moz-column-gap: var(--space-2);
         column-gap: var(--space-2);
}

.aural-gallery--compact.aural-gallery--masonry .aural-gallery__item {
    margin-bottom: var(--space-2);
}

/* ========================================
   No Borders Variant
   ======================================== */

.aural-gallery--borderless .aural-gallery__item {
    border-radius: 0;
}

/* ========================================
   Accessibility
   ======================================== */

@media (prefers-reduced-motion: reduce) {
    .aural-gallery__item,
    .aural-gallery__image,
    .aural-gallery__overlay,
    .aural-lightbox,
    .aural-lightbox__nav,
    .aural-lightbox__close {
        transition: none;
    }

    .aural-gallery__item--loading::after {
        animation: none;
    }
}

/* Screen reader only */

.aural-gallery__sr-label {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border-width: 0;
}

/* ========================================
   Responsive
   ======================================== */

@media (max-width: 1024px) {
    .aural-gallery--cols-6 {
        grid-template-columns: repeat(4, 1fr);
    }

    .aural-gallery--masonry {
        -moz-column-count: 2;
             column-count: 2;
    }
}

@media (max-width: 768px) {
    .aural-gallery--cols-4,
    .aural-gallery--cols-5,
    .aural-gallery--cols-6 {
        grid-template-columns: repeat(3, 1fr);
    }

    .aural-lightbox__nav {
        min-width: 40px;
        min-height: 40px;
        padding: var(--space-2);
    }

    .aural-lightbox__nav svg {
        width: 20px;
        height: 20px;
    }

    .aural-lightbox__thumbnails {
        display: none;
    }
}

@media (max-width: 640px) {
    .aural-gallery--cols-2,
    .aural-gallery--cols-3,
    .aural-gallery--cols-4,
    .aural-gallery--cols-5,
    .aural-gallery--cols-6 {
        grid-template-columns: repeat(2, 1fr);
    }

    .aural-gallery--masonry {
        -moz-column-count: 1;
             column-count: 1;
    }

    .aural-lightbox__content {
        max-width: 100vw;
        max-height: 100vh;
        max-height: 100dvh;
    }

    .aural-lightbox__image {
        max-height: calc(100vh - 100px);
        max-height: calc(100dvh - 100px);
        border-radius: 0;
    }

    .aural-lightbox__nav--prev {
        left: var(--space-2);
    }

    .aural-lightbox__nav--next {
        right: var(--space-2);
    }

    .aural-lightbox__close {
        top: var(--space-2);
        right: var(--space-2);
    }
}

/* Interactive */

/**
 * AURAL UI - Tooltip Component
 *
 * Contextual information on hover/focus
 *
 * Usage:
 *   <button class="btn" data-tooltip="Tooltip text" data-tooltip-position="top">
 *     Hover me
 *   </button>
 *
 * Or with custom trigger:
 *   <div class="tooltip-wrapper">
 *     <button id="trigger">Hover me</button>
 *     <div class="tooltip tooltip-top" role="tooltip">
 *       Tooltip content
 *     </div>
 *   </div>
 */

.tooltip {
    /* Layout */
    position: absolute;
    z-index: 9999;
    max-width: 320px;

    /* Spacing */
    padding: var(--space-2) var(--space-3);

    /* Typography */
    font-family: var(--font-sans);
    font-size: var(--text-sm);
    color: var(--color-tooltip-text);
    line-height: var(--leading-normal);
    text-align: left;

    /* Appearance */
    background: var(--color-tooltip-bg);
    border: 1px solid var(--color-tooltip-border);
    border-radius: var(--radius-md);
    box-shadow: var(--shadow-lg);
    word-wrap: break-word;

    /* Animation */
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.2s ease, transform 0.2s ease;

    /* Backdrop blur */
    -webkit-backdrop-filter: blur(8px);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
}

/* Show state */

.tooltip.tooltip-show {
    opacity: 1;
    pointer-events: auto;
}

/* ========================================
   POSITIONS
   ======================================== */

/* Top */

.tooltip-top {
    bottom: 100%;
    left: 50%;
    transform: translateX(-50%) translateY(-8px);
    margin-bottom: 8px;
}

.tooltip-top.tooltip-show {
        transform: translateX(-50%) translateY(0);
    }

/* Bottom */

.tooltip-bottom {
    top: 100%;
    left: 50%;
    transform: translateX(-50%) translateY(8px);
    margin-top: 8px;
}

.tooltip-bottom.tooltip-show {
        transform: translateX(-50%) translateY(0);
    }

/* Left */

.tooltip-left {
    right: 100%;
    top: 50%;
    transform: translateY(-50%) translateX(-8px);
    margin-right: 8px;
}

.tooltip-left.tooltip-show {
        transform: translateY(-50%) translateX(0);
    }

/* Right */

.tooltip-right {
    left: 100%;
    top: 50%;
    transform: translateY(-50%) translateX(8px);
    margin-left: 8px;
}

.tooltip-right.tooltip-show {
        transform: translateY(-50%) translateX(0);
    }

/* ========================================
   ARROW (optional)
   ======================================== */

.tooltip-with-arrow::before {
    content: '';
    position: absolute;
    width: 0;
    height: 0;
    border: 6px solid transparent;
}

/* Top arrow */

.tooltip-top.tooltip-with-arrow::before {
    top: 100%;
    left: 50%;
    transform: translateX(-50%);
    border-top-color: var(--color-tooltip-border);
}

.tooltip-top.tooltip-with-arrow::after {
    content: '';
    position: absolute;
    top: 100%;
    left: 50%;
    transform: translateX(-50%);
    width: 0;
    height: 0;
    border: 5px solid transparent;
    border-top-color: var(--color-tooltip-bg);
    margin-top: -1px;
}

/* Bottom arrow */

.tooltip-bottom.tooltip-with-arrow::before {
    bottom: 100%;
    left: 50%;
    transform: translateX(-50%);
    border-bottom-color: var(--color-tooltip-border);
}

.tooltip-bottom.tooltip-with-arrow::after {
    content: '';
    position: absolute;
    bottom: 100%;
    left: 50%;
    transform: translateX(-50%);
    width: 0;
    height: 0;
    border: 5px solid transparent;
    border-bottom-color: var(--color-tooltip-bg);
    margin-bottom: -1px;
}

/* Left arrow */

.tooltip-left.tooltip-with-arrow::before {
    left: 100%;
    top: 50%;
    transform: translateY(-50%);
    border-left-color: var(--color-tooltip-border);
}

.tooltip-left.tooltip-with-arrow::after {
    content: '';
    position: absolute;
    left: 100%;
    top: 50%;
    transform: translateY(-50%);
    width: 0;
    height: 0;
    border: 5px solid transparent;
    border-left-color: var(--color-tooltip-bg);
    margin-left: -1px;
}

/* Right arrow */

.tooltip-right.tooltip-with-arrow::before {
    right: 100%;
    top: 50%;
    transform: translateY(-50%);
    border-right-color: var(--color-tooltip-border);
}

.tooltip-right.tooltip-with-arrow::after {
    content: '';
    position: absolute;
    right: 100%;
    top: 50%;
    transform: translateY(-50%);
    width: 0;
    height: 0;
    border: 5px solid transparent;
    border-right-color: var(--color-tooltip-bg);
    margin-right: -1px;
}

/* ========================================
   SIZES
   ======================================== */

.tooltip-sm {
    max-width: 200px;
    padding: var(--space-1) var(--space-2);
    font-size: var(--text-xs);
}

.tooltip-lg {
    max-width: 400px;
    padding: var(--space-3) var(--space-4);
    font-size: var(--text-base);
}

/* ========================================
   WRAPPER FOR POSITIONING
   ======================================== */

.tooltip-wrapper {
    position: relative;
    display: inline-flex;
}

/* ========================================
   DATA ATTRIBUTE TOOLTIPS
   ======================================== */

[data-tooltip] {
    position: relative;
}

[data-tooltip]::after {
        content: attr(data-tooltip);
        position: absolute;
        z-index: 9999;
        max-width: 320px;
        padding: var(--space-2) var(--space-3);
        font-family: var(--font-sans);
        font-size: var(--text-sm);
        color: var(--color-tooltip-text);
        line-height: var(--leading-normal);
        background: var(--color-tooltip-bg);
        border: 1px solid var(--color-tooltip-border);
        border-radius: var(--radius-md);
        box-shadow: var(--shadow-lg);
        -webkit-backdrop-filter: blur(8px);
        backdrop-filter: blur(8px);
        -webkit-backdrop-filter: blur(8px);
        white-space: normal;
        word-wrap: break-word;
        opacity: 0;
        pointer-events: none;
        transition: opacity 0.2s ease, transform 0.2s ease;
    }

[data-tooltip]:hover::after,
    [data-tooltip]:focus::after {
        opacity: 1;
    }

/* Position variants for data-tooltip */

[data-tooltip][data-tooltip-position="top"]::after,
[data-tooltip]:not([data-tooltip-position])::after {
    bottom: 100%;
    left: 50%;
    transform: translateX(-50%) translateY(-8px);
    margin-bottom: 8px;
}

[data-tooltip][data-tooltip-position="top"]:hover::after,
[data-tooltip]:not([data-tooltip-position]):hover::after {
    transform: translateX(-50%) translateY(0);
}

[data-tooltip][data-tooltip-position="bottom"]::after {
    top: 100%;
    left: 50%;
    transform: translateX(-50%) translateY(8px);
    margin-top: 8px;
}

[data-tooltip][data-tooltip-position="bottom"]:hover::after {
    transform: translateX(-50%) translateY(0);
}

[data-tooltip][data-tooltip-position="left"]::after {
    right: 100%;
    top: 50%;
    transform: translateY(-50%) translateX(-8px);
    margin-right: 8px;
}

[data-tooltip][data-tooltip-position="left"]:hover::after {
    transform: translateY(-50%) translateX(0);
}

[data-tooltip][data-tooltip-position="right"]::after {
    left: 100%;
    top: 50%;
    transform: translateY(-50%) translateX(8px);
    margin-left: 8px;
}

[data-tooltip][data-tooltip-position="right"]:hover::after {
    transform: translateY(-50%) translateX(0);
}

/* ========================================
   COLOR VARIANTS
   ======================================== */

.tooltip-dark {
    background: rgba(0, 0, 0, 0.9);
    border-color: rgba(255, 255, 255, 0.1);
}

.tooltip-light {
    background: rgba(255, 255, 255, 0.9);
    border-color: rgba(0, 0, 0, 0.1);
    color: var(--color-text-inverse);
}

.tooltip-primary {
    background: var(--color-primary);
    border-color: var(--color-primary);
    color: white;
}

.tooltip-success {
    background: var(--color-success);
    border-color: var(--color-success);
    color: white;
}

.tooltip-warning {
    background: var(--color-warning);
    border-color: var(--color-warning);
    color: var(--color-text-inverse);
}

.tooltip-error {
    background: var(--color-error);
    border-color: var(--color-error);
    color: white;
}

/* ========================================
   ACCESSIBILITY
   ======================================== */

/* Ensure tooltips are keyboard accessible */

.tooltip:focus-within {
    opacity: 1;
    pointer-events: auto;
}

/* Reduced motion */

@media (prefers-reduced-motion: reduce) {
    .tooltip,
    [data-tooltip]::after {
        transition: none;
    }

    .tooltip-show,
    [data-tooltip]:hover::after {
        transform: none !important;
    }
}

/**
 * AURAL UI - Dropdown Component
 *
 * Action menus and dropdown panels
 *
 * Usage:
 *   <div class="dropdown" id="my-dropdown">
 *     <button class="dropdown-trigger" aria-haspopup="true" aria-expanded="false">
 *       Menu
 *     </button>
 *     <div class="dropdown-menu" role="menu" hidden>
 *       <a href="#" class="dropdown-item" role="menuitem">Action</a>
 *       <a href="#" class="dropdown-item" role="menuitem">Another action</a>
 *       <div class="dropdown-divider"></div>
 *       <a href="#" class="dropdown-item" role="menuitem">Separated link</a>
 *     </div>
 *   </div>
 */

.dropdown {
    /* Layout */
    position: relative;
    display: inline-flex;
}

/* ========================================
   TRIGGER BUTTON
   ======================================== */

.dropdown-trigger {
    /* Layout */
    display: inline-flex;
    align-items: center;
    gap: var(--space-2);

    /* Interaction */
    cursor: pointer;
    outline: none;
}

.dropdown-trigger[aria-expanded="true"] {
        /* Optional: style for open state */
    }

.dropdown-trigger:focus-visible {
        outline: 2px solid var(--color-primary);
        outline-offset: 2px;
    }

/* ========================================
   DROPDOWN MENU
   ======================================== */

.dropdown-menu {
    /* Layout */
    position: absolute;
    top: 100%;
    left: 0;
    z-index: 1000;
    min-width: 200px;
    margin-top: var(--space-1);
    overflow: auto;
    max-height: 400px;
    display: block;

    /* Appearance */
    background: var(--color-dropdown-bg);
    border: 1px solid var(--color-dropdown-border);
    border-radius: var(--radius-md);
    box-shadow: var(--shadow-lg);

    /* Animation */
    opacity: 0;
    transform: translateY(-8px);
    transition: opacity 0.2s ease, transform 0.2s ease;
    pointer-events: none;

    /* Backdrop blur */
    -webkit-backdrop-filter: blur(8px);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);

    /* Typography */
    font-family: var(--font-sans);

    /* Accessibility */
    outline: none;
}

/* Override browser default hidden behavior */

.dropdown-menu[hidden] {
    display: block;
}

/* Custom scrollbar */

.dropdown-menu {
    scrollbar-width: thin;
    scrollbar-color: var(--color-border-medium) transparent;
}

.dropdown-menu::-webkit-scrollbar {
        width: 8px;
    }

.dropdown-menu::-webkit-scrollbar-track {
        background: transparent;
    }

.dropdown-menu::-webkit-scrollbar-thumb {
        background: var(--color-border-medium);
        border-radius: var(--radius-full);
    }

/* Open state */

.dropdown.dropdown-open .dropdown-menu {
    opacity: 1;
    transform: translateY(0);
    pointer-events: auto;
}

/* ========================================
   DROPDOWN ITEMS
   ======================================== */

.dropdown-item {
    /* Layout */
    display: flex;
    align-items: center;
    gap: var(--space-2);
    width: 100%;

    /* Spacing */
    padding: var(--space-3) var(--space-4);

    /* Typography */
    font-size: var(--text-sm);
    color: var(--color-dropdown-item-text);
    line-height: var(--leading-normal);
    text-decoration: none;
    white-space: nowrap;

    /* Appearance */
    background: transparent;
    border: none;
    text-align: left;

    /* Transitions */
    transition: var(--transition-all-fast);

    /* Interaction */
    cursor: pointer;
    outline: none;
    -webkit-user-select: none;
       -moz-user-select: none;
            user-select: none;
}

.dropdown-item > svg {
        width: 18px;
        height: 18px;
        flex-shrink: 0;
        color: var(--color-text-muted);
    }

.dropdown-item:hover,
    .dropdown-item:focus {
        background: var(--color-dropdown-item-hover);
    }

.dropdown-item:active {
        background: var(--color-dropdown-item-active);
    }

.dropdown-item:focus-visible {
        outline: 2px solid var(--color-primary);
        outline-offset: -2px;
    }

.dropdown-item[disabled],
    .dropdown-item.dropdown-item-disabled {
        opacity: 0.5;
        cursor: not-allowed;
        pointer-events: none;
    }

/* Active/selected item */

.dropdown-item-active,
.dropdown-item[aria-current="true"] {
    background: var(--color-dropdown-item-active);
    color: var(--color-primary);
    font-weight: var(--font-medium);
}

/* Destructive action */

.dropdown-item-danger {
    color: var(--color-error);
}

.dropdown-item-danger:hover,
    .dropdown-item-danger:focus {
        background: rgba(239, 68, 68, 0.1);
    }

/* ========================================
   DROPDOWN HEADER
   ======================================== */

.dropdown-header {
    /* Spacing */
    padding: var(--space-2) var(--space-4);

    /* Typography */
    font-size: var(--text-xs);
    font-weight: var(--font-semibold);
    color: var(--color-dropdown-header-text);
    text-transform: uppercase;
    letter-spacing: 0.05em;

    /* Interaction */
    -webkit-user-select: none;
       -moz-user-select: none;
            user-select: none;
    pointer-events: none;
}

/* ========================================
   DROPDOWN DIVIDER
   ======================================== */

.dropdown-divider {
    /* Appearance */
    height: 1px;
    background: var(--color-dropdown-divider);
    margin: var(--space-1) 0;

    /* Accessibility */
    overflow: hidden;
}

/* ========================================
   DROPDOWN FOOTER
   ======================================== */

.dropdown-footer {
    /* Spacing */
    padding: var(--space-3) var(--space-4);

    /* Appearance */
    border-top: 1px solid var(--color-dropdown-divider);

    /* Typography */
    font-size: var(--text-sm);
    color: var(--color-text-secondary);
}

/* ========================================
   POSITIONS
   ======================================== */

/* Right aligned */

.dropdown-right .dropdown-menu,
.dropdown-menu.dropdown-menu-right {
    right: 0;
    left: auto;
}

/* Center aligned */

.dropdown-center .dropdown-menu {
    left: 50%;
    transform: translateX(-50%) translateY(-8px);
}

.dropdown-center .dropdown-menu:not([hidden]) {
        transform: translateX(-50%) translateY(0);
    }

/* Dropup (above) */

.dropdown-up .dropdown-menu {
    top: auto;
    bottom: 100%;
    margin-top: 0;
    margin-bottom: var(--space-1);
    transform: translateY(8px);
}

.dropdown-up .dropdown-menu:not([hidden]) {
        transform: translateY(0);
    }

/* Dropstart (left) */

.dropdown-start .dropdown-menu {
    top: 0;
    left: auto;
    right: 100%;
    margin-top: 0;
    margin-right: var(--space-1);
    transform: translateX(8px);
}

.dropdown-start .dropdown-menu:not([hidden]) {
        transform: translateX(0);
    }

/* Dropend (right) */

.dropdown-end .dropdown-menu {
    top: 0;
    left: 100%;
    margin-top: 0;
    margin-left: var(--space-1);
    transform: translateX(-8px);
}

.dropdown-end .dropdown-menu:not([hidden]) {
        transform: translateX(0);
    }

/* ========================================
   SIZES
   ======================================== */

.dropdown-sm .dropdown-menu {
    min-width: 150px;
}

.dropdown-sm .dropdown-item {
    padding: var(--space-2) var(--space-3);
    font-size: var(--text-xs);
}

.dropdown-lg .dropdown-menu {
    min-width: 280px;
}

.dropdown-lg .dropdown-item {
    padding: var(--space-4) var(--space-5);
    font-size: var(--text-base);
}

/* Full width */

.dropdown-full .dropdown-menu {
    width: 100%;
    min-width: 100%;
}

/* ========================================
   ITEM WITH DESCRIPTION
   ======================================== */

.dropdown-item-with-description {
    flex-direction: column;
    align-items: flex-start;
    gap: var(--space-1);
}

.dropdown-item-with-description .dropdown-item-title {
        font-weight: var(--font-medium);
        color: var(--color-text-primary);
    }

.dropdown-item-with-description .dropdown-item-description {
        font-size: var(--text-xs);
        color: var(--color-text-secondary);
        white-space: normal;
    }

/* ========================================
   ITEM WITH SHORTCUT
   ======================================== */

.dropdown-item-with-shortcut {
    justify-content: space-between;
}

.dropdown-item-with-shortcut .dropdown-item-shortcut {
        margin-left: var(--space-4);
        font-size: var(--text-xs);
        color: var(--color-text-muted);
        font-family: var(--font-mono);
    }

/* ========================================
   NESTED DROPDOWNS
   ======================================== */

.dropdown-submenu {
    position: relative;
}

.dropdown-submenu > .dropdown-item::after {
        content: '';
        width: 16px;
        height: 16px;
        margin-left: auto;
        background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='rgba(255,255,255,0.5)'%3E%3Cpath fill-rule='evenodd' d='M6.22 4.22a.75.75 0 011.06 0l3.25 3.25a.75.75 0 010 1.06l-3.25 3.25a.75.75 0 01-1.06-1.06L8.94 8 6.22 5.28a.75.75 0 010-1.06z'/%3E%3C/svg%3E");
        background-repeat: no-repeat;
        background-position: center;
    }

.dropdown-submenu:hover > .dropdown-menu,
    .dropdown-submenu:focus-within > .dropdown-menu {
        opacity: 1;
        transform: translateX(0);
        pointer-events: auto;
    }

/* ========================================
   ACCESSIBILITY
   ======================================== */

/* Focus trap for keyboard navigation */

.dropdown-menu:focus {
    outline: none;
}

/* Reduced motion */

@media (prefers-reduced-motion: reduce) {
    .dropdown-menu,
    .dropdown-item {
        transition: none;
    }

    .dropdown.dropdown-open .dropdown-menu,
    .dropdown-menu:not([hidden]),
    .dropdown-center .dropdown-menu:not([hidden]),
    .dropdown-up .dropdown-menu:not([hidden]),
    .dropdown-start .dropdown-menu:not([hidden]),
    .dropdown-end .dropdown-menu:not([hidden]) {
        transform: none !important;
    }
}

/**
 * AURAL UI - Accordion Component
 *
 * Collapsible sections for organizing content
 *
 * Usage:
 *   <div class="accordion">
 *     <div class="accordion-item">
 *       <button class="accordion-header" aria-expanded="false" aria-controls="panel-1">
 *         <span>Section 1</span>
 *         <svg class="accordion-icon">...</svg>
 *       </button>
 *       <div id="panel-1" class="accordion-panel" role="region" hidden>
 *         <div class="accordion-content">
 *           Content for section 1
 *         </div>
 *       </div>
 *     </div>
 *   </div>
 */

.accordion {
    /* Layout */
    display: flex;
    flex-direction: column;

    /* Appearance */
    border: 1px solid var(--color-accordion-border);
    border-radius: var(--radius-md);
    overflow: hidden;

    /* Typography */
    font-family: var(--font-sans);
}

/* ========================================
   ACCORDION ITEM
   ======================================== */

.accordion-item {
    /* Appearance */
    background: var(--color-accordion-bg);
    border-bottom: 1px solid var(--color-accordion-border);
}

.accordion-item:last-child {
        border-bottom: none;
    }

/* ========================================
   ACCORDION HEADER
   ======================================== */

.accordion-header {
    /* Layout */
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-4);
    width: 100%;

    /* Spacing */
    padding: var(--space-4) var(--space-5);

    /* Typography */
    font-size: var(--text-base);
    font-weight: var(--font-semibold);
    color: var(--color-accordion-header-text);
    text-align: left;
    line-height: var(--leading-normal);

    /* Appearance */
    background: var(--color-accordion-header-bg);
    border: none;

    /* Transitions */
    transition: var(--transition-all-fast);

    /* Interaction */
    cursor: pointer;
    outline: none;
    -webkit-user-select: none;
       -moz-user-select: none;
            user-select: none;

    /* Accessibility */
    min-height: 44px;
}

.accordion-header > span {
        flex: 1;
    }

.accordion-header:hover {
        background: var(--color-accordion-header-hover);
    }

.accordion-header:focus-visible {
        outline: 2px solid var(--color-primary);
        outline-offset: -2px;
    }

.accordion-header[disabled] {
        opacity: 0.5;
        cursor: not-allowed;
        pointer-events: none;
    }

/* ========================================
   ACCORDION ICON
   ======================================== */

.accordion-icon {
    /* Size */
    width: 20px;
    height: 20px;
    flex-shrink: 0;

    /* Appearance */
    color: var(--color-accordion-icon);

    /* Transitions */
    transition: transform 0.2s ease;
}

/* Rotate icon when expanded */

.accordion-header[aria-expanded="true"] .accordion-icon {
    transform: rotate(180deg);
}

/* ========================================
   ACCORDION PANEL
   ======================================== */

.accordion-panel {
    /* Animation */
    overflow: hidden;
    max-height: 0;
    opacity: 0;
    transition: max-height 0.3s ease, opacity 0.3s ease;

    /* Appearance */
    background: var(--color-accordion-panel-bg);
}

.accordion-panel:not([hidden]) {
        max-height: 2000px; /* Large enough for most content */
        opacity: 1;
    }

/* ========================================
   ACCORDION CONTENT
   ======================================== */

.accordion-content {
    /* Spacing */
    padding: var(--space-4) var(--space-5);

    /* Typography */
    font-size: var(--text-base);
    color: var(--color-accordion-panel-text);
    line-height: var(--leading-relaxed);

    /* Accessibility */
    outline: none;
}

.accordion-content:focus-visible {
        outline: 2px solid var(--color-primary);
        outline-offset: -2px;
    }

/* ========================================
   SIZES
   ======================================== */

.accordion-sm .accordion-header {
        padding: var(--space-3) var(--space-4);
        font-size: var(--text-sm);
    }

.accordion-sm .accordion-content {
        padding: var(--space-3) var(--space-4);
        font-size: var(--text-sm);
    }

.accordion-sm .accordion-icon {
        width: 16px;
        height: 16px;
    }

.accordion-lg .accordion-header {
        padding: var(--space-5) var(--space-6);
        font-size: var(--text-lg);
    }

.accordion-lg .accordion-content {
        padding: var(--space-5) var(--space-6);
        font-size: var(--text-lg);
    }

.accordion-lg .accordion-icon {
        width: 24px;
        height: 24px;
    }

/* ========================================
   VARIANTS
   ======================================== */

/* Flush variant (no borders) */

.accordion-flush {
    border: none;
    border-radius: 0;
}

.accordion-flush .accordion-item {
        border-bottom: 1px solid var(--color-accordion-border);
    }

.accordion-flush .accordion-item:first-child {
            border-top: 1px solid var(--color-accordion-border);
        }

/* Separated variant */

.accordion-separated {
    border: none;
    gap: var(--space-2);
}

.accordion-separated .accordion-item {
        border: 1px solid var(--color-accordion-border);
        border-radius: var(--radius-md);
    }

/* Filled variant */

.accordion-filled .accordion-header {
        background: rgba(255, 255, 255, 0.03);
    }

.accordion-filled .accordion-header:hover {
            background: rgba(255, 255, 255, 0.05);
        }

.accordion-filled .accordion-header[aria-expanded="true"] {
        background: rgba(255, 255, 255, 0.05);
    }

/* ========================================
   ACCORDION WITH ICON
   ======================================== */

.accordion-header-with-icon > .accordion-header-icon {
        width: 20px;
        height: 20px;
        flex-shrink: 0;
        margin-right: var(--space-2);
        color: var(--color-text-muted);
    }

/* ========================================
   ACCORDION WITH DESCRIPTION
   ======================================== */

.accordion-header-with-description > span {
        display: flex;
        flex-direction: column;
        gap: var(--space-1);
    }

.accordion-header-with-description .accordion-header-title {
        font-weight: var(--font-semibold);
        color: var(--color-accordion-header-text);
    }

.accordion-header-with-description .accordion-header-description {
        font-size: var(--text-sm);
        font-weight: var(--font-normal);
        color: var(--color-text-secondary);
    }

/* ========================================
   ACCORDION WITH BADGE
   ======================================== */

.accordion-header-with-badge .accordion-badge {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        min-width: 20px;
        height: 20px;
        padding: 0 var(--space-1);
        font-size: var(--text-xs);
        font-weight: var(--font-semibold);
        background: var(--color-bg-tertiary);
        color: var(--color-text-secondary);
        border-radius: var(--radius-full);
        margin-right: var(--space-2);
    }

/* ========================================
   ALWAYS OPEN VARIANT
   ======================================== */

.accordion-always-open {
    /* No special styles needed - handled by JS */
}

/* ========================================
   NESTED ACCORDIONS
   ======================================== */

.accordion-nested {
    margin-top: var(--space-2);
}

.accordion-nested .accordion-item {
        border-left: 2px solid var(--color-accordion-border);
        padding-left: var(--space-4);
    }

/* ========================================
   LOADING STATE
   ======================================== */

.accordion-loading .accordion-header {
        position: relative;
        pointer-events: none;
    }

.accordion-loading .accordion-header::after {
            content: '';
            position: absolute;
            right: var(--space-5);
            width: 16px;
            height: 16px;
            border: 2px solid var(--color-border-medium);
            border-top-color: var(--color-primary);
            border-radius: 50%;
            animation: spin 0.6s linear infinite;
        }

.accordion-loading .accordion-icon {
        display: none;
    }

@keyframes spin {
    to {
        transform: rotate(360deg);
    }
}

/* ========================================
   ACCESSIBILITY
   ======================================== */

/* Ensure proper focus management */

.accordion-panel:focus {
    outline: none;
}

/* Reduced motion */

@media (prefers-reduced-motion: reduce) {
    .accordion-header,
    .accordion-icon,
    .accordion-panel {
        transition: none;
    }

    .accordion-header[aria-expanded="true"] .accordion-icon {
        transform: none;
    }

    .accordion-panel:not([hidden]) {
        max-height: none;
    }

    .accordion-loading .accordion-header::after {
        animation: none;
    }
}

/**
 * AURAL UI - Popover Component
 *
 * Rich content overlays with positioning
 *
 * Usage:
 *   <div class="popover-wrapper">
 *     <button id="trigger" class="btn">Show Popover</button>
 *     <div class="popover popover-top" role="dialog" aria-labelledby="popover-title" hidden>
 *       <div class="popover-header">
 *         <h3 id="popover-title">Popover Title</h3>
 *         <button class="popover-close" aria-label="Close">×</button>
 *       </div>
 *       <div class="popover-body">
 *         Popover content goes here
 *       </div>
 *     </div>
 *   </div>
 */

.popover {
    /* Layout */
    position: absolute;
    z-index: 9999;
    max-width: 400px;
    display: block;

    /* Appearance */
    background: var(--color-popover-bg);
    border: 1px solid var(--color-popover-border);
    border-radius: var(--radius-md);
    box-shadow: var(--shadow-xl);

    /* Animation */
    opacity: 0;
    transform: scale(0.95);
    transition: opacity 0.2s ease, transform 0.2s ease;
    pointer-events: none;

    /* Backdrop blur */
    -webkit-backdrop-filter: blur(12px);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);

    /* Typography */
    font-family: var(--font-sans);

    /* Accessibility */
    outline: none;
}

/* Override browser default hidden behavior */

.popover[hidden] {
    display: block;
}

/* Show state */

.popover.popover-show,
.popover:not([hidden]) {
    opacity: 1;
    transform: scale(1);
    pointer-events: auto;
}

/* ========================================
   POPOVER HEADER
   ======================================== */

.popover-header {
    /* Layout */
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-3);

    /* Spacing */
    padding: var(--space-4) var(--space-5);

    /* Appearance */
    background: var(--color-popover-header-bg);
    border-bottom: 1px solid var(--color-popover-border);
    border-radius: var(--radius-md) var(--radius-md) 0 0;
}

.popover-header > h3,
    .popover-header > h4,
    .popover-header > h5 {
        margin: 0;
        font-size: var(--text-base);
        font-weight: var(--font-semibold);
        color: var(--color-popover-header-text);
        line-height: var(--leading-normal);
    }

/* ========================================
   POPOVER BODY
   ======================================== */

.popover-body {
    /* Spacing */
    padding: var(--space-4) var(--space-5);

    /* Typography */
    font-size: var(--text-sm);
    color: var(--color-popover-body-text);
    line-height: var(--leading-relaxed);

    /* Handle overflow */
    overflow-y: auto;
    max-height: 400px;

    /* Custom scrollbar */
    scrollbar-width: thin;
    scrollbar-color: var(--color-border-medium) transparent;
}

.popover-body::-webkit-scrollbar {
        width: 8px;
    }

.popover-body::-webkit-scrollbar-track {
        background: transparent;
    }

.popover-body::-webkit-scrollbar-thumb {
        background: var(--color-border-medium);
        border-radius: var(--radius-full);
    }

.popover-body:focus-visible {
        outline: 2px solid var(--color-primary);
        outline-offset: -2px;
    }

/* ========================================
   POPOVER FOOTER
   ======================================== */

.popover-footer {
    /* Layout */
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: var(--space-2);

    /* Spacing */
    padding: var(--space-4) var(--space-5);

    /* Appearance */
    border-top: 1px solid var(--color-popover-border);
    border-radius: 0 0 var(--radius-md) var(--radius-md);
}

/* ========================================
   POPOVER CLOSE BUTTON
   ======================================== */

.popover-close {
    /* Layout */
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;

    /* Size */
    width: 32px;
    height: 32px;

    /* Typography */
    font-size: var(--text-xl);
    color: var(--color-text-muted);
    line-height: 1;

    /* Appearance */
    background: transparent;
    border: none;
    border-radius: var(--radius-sm);

    /* Transitions */
    transition: var(--transition-all-fast);

    /* Interaction */
    cursor: pointer;
    outline: none;
}

.popover-close:hover {
        background: rgba(255, 255, 255, 0.05);
        color: var(--color-text-primary);
    }

.popover-close:focus-visible {
        outline: 2px solid var(--color-primary);
        outline-offset: 2px;
    }

.popover-close > svg {
        width: 18px;
        height: 18px;
    }

/* ========================================
   POSITIONS
   ======================================== */

/* Top */

.popover-top {
    bottom: 100%;
    left: 50%;
    transform: translateX(-50%) translateY(-8px) scale(0.95);
    margin-bottom: 12px;
}

.popover-top.popover-show,
    .popover-top:not([hidden]) {
        transform: translateX(-50%) translateY(0) scale(1);
    }

/* Bottom */

.popover-bottom {
    top: 100%;
    left: 50%;
    transform: translateX(-50%) translateY(8px) scale(0.95);
    margin-top: 12px;
}

.popover-bottom.popover-show,
    .popover-bottom:not([hidden]) {
        transform: translateX(-50%) translateY(0) scale(1);
    }

/* Left */

.popover-left {
    right: 100%;
    top: 50%;
    transform: translateY(-50%) translateX(-8px) scale(0.95);
    margin-right: 12px;
}

.popover-left.popover-show,
    .popover-left:not([hidden]) {
        transform: translateY(-50%) translateX(0) scale(1);
    }

/* Right */

.popover-right {
    left: 100%;
    top: 50%;
    transform: translateY(-50%) translateX(8px) scale(0.95);
    margin-left: 12px;
}

.popover-right.popover-show,
    .popover-right:not([hidden]) {
        transform: translateY(-50%) translateX(0) scale(1);
    }

/* ========================================
   ARROW
   ======================================== */

.popover-with-arrow::before {
    content: '';
    position: absolute;
    width: 0;
    height: 0;
    border: 8px solid transparent;
}

.popover-with-arrow::after {
    content: '';
    position: absolute;
    width: 0;
    height: 0;
    border: 7px solid transparent;
}

/* Top arrow */

.popover-top.popover-with-arrow::before {
    top: 100%;
    left: 50%;
    transform: translateX(-50%);
    border-top-color: var(--color-popover-border);
}

.popover-top.popover-with-arrow::after {
    top: 100%;
    left: 50%;
    transform: translateX(-50%);
    border-top-color: var(--color-popover-bg);
    margin-top: -1px;
}

/* Bottom arrow */

.popover-bottom.popover-with-arrow::before {
    bottom: 100%;
    left: 50%;
    transform: translateX(-50%);
    border-bottom-color: var(--color-popover-border);
}

.popover-bottom.popover-with-arrow::after {
    bottom: 100%;
    left: 50%;
    transform: translateX(-50%);
    border-bottom-color: var(--color-popover-header-bg);
    margin-bottom: -1px;
}

/* Left arrow */

.popover-left.popover-with-arrow::before {
    left: 100%;
    top: 50%;
    transform: translateY(-50%);
    border-left-color: var(--color-popover-border);
}

.popover-left.popover-with-arrow::after {
    left: 100%;
    top: 50%;
    transform: translateY(-50%);
    border-left-color: var(--color-popover-bg);
    margin-left: -1px;
}

/* Right arrow */

.popover-right.popover-with-arrow::before {
    right: 100%;
    top: 50%;
    transform: translateY(-50%);
    border-right-color: var(--color-popover-border);
}

.popover-right.popover-with-arrow::after {
    right: 100%;
    top: 50%;
    transform: translateY(-50%);
    border-right-color: var(--color-popover-bg);
    margin-right: -1px;
}

/* ========================================
   SIZES
   ======================================== */

.popover-sm {
    max-width: 250px;
}

.popover-sm .popover-header,
    .popover-sm .popover-body,
    .popover-sm .popover-footer {
        padding: var(--space-3) var(--space-4);
    }

.popover-sm .popover-header > h3,
    .popover-sm .popover-header > h4,
    .popover-sm .popover-header > h5 {
        font-size: var(--text-sm);
    }

.popover-sm .popover-body {
        font-size: var(--text-xs);
    }

.popover-lg {
    max-width: 600px;
}

.popover-lg .popover-header,
    .popover-lg .popover-body,
    .popover-lg .popover-footer {
        padding: var(--space-5) var(--space-6);
    }

.popover-lg .popover-header > h3,
    .popover-lg .popover-header > h4,
    .popover-lg .popover-header > h5 {
        font-size: var(--text-lg);
    }

.popover-lg .popover-body {
        font-size: var(--text-base);
    }

.popover-xl {
    max-width: 800px;
}

.popover-xl .popover-header,
    .popover-xl .popover-body,
    .popover-xl .popover-footer {
        padding: var(--space-6) var(--space-8);
    }

.popover-xl .popover-header > h3,
    .popover-xl .popover-header > h4,
    .popover-xl .popover-header > h5 {
        font-size: var(--text-xl);
    }

.popover-xl .popover-body {
        font-size: var(--text-lg);
    }

/* ========================================
   WRAPPER FOR POSITIONING
   ======================================== */

.popover-wrapper {
    position: relative;
    display: inline-flex;
}

/* ========================================
   VARIANTS
   ======================================== */

/* No header */

.popover-no-header .popover-body {
    border-radius: var(--radius-md) var(--radius-md) 0 0;
}

/* No footer */

.popover-no-footer .popover-body {
    border-radius: 0 0 var(--radius-md) var(--radius-md);
}

/* Simple (no header or footer) */

.popover-simple .popover-body {
    border-radius: var(--radius-md);
}

/* ========================================
   BACKDROP
   ======================================== */

.popover-backdrop {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 9998;
    background: rgba(0, 0, 0, 0.3);
    opacity: 0;
    transition: opacity 0.2s ease;
    pointer-events: none;
}

.popover-backdrop.popover-backdrop-show {
        opacity: 1;
        pointer-events: auto;
    }

/* ========================================
   ACCESSIBILITY
   ======================================== */

/* Ensure popover is keyboard accessible */

.popover:focus {
    outline: none;
}

/* Focus trap indicator */

.popover-focus-trap {
    position: relative;
}

/* Reduced motion */

@media (prefers-reduced-motion: reduce) {
    .popover,
    .popover-backdrop,
    .popover-close {
        transition: none;
    }

    .popover.popover-show,
    .popover:not([hidden]) {
        transform: none !important;
    }
}

/**
 * AURAL UI - Notification Center
 *
 * Bell icon with dropdown notification list.
 * Supports unread badges, categories, and actions.
 */

/* ========================================
   Notification Center Container
   ======================================== */

.aural-notification-center {
    position: relative;
    display: inline-block;
}

/* ========================================
   Notification Bell/Trigger
   ======================================== */

.aural-notification-center__trigger {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 44px;
    min-height: 44px;
    padding: var(--space-2);
    background: transparent;
    color: var(--color-text-primary);
    border: 1px solid var(--color-border-medium);
    border-radius: var(--radius-md);
    cursor: pointer;
    transition: var(--transition-all-fast);
}

.aural-notification-center__trigger:hover {
    background: var(--color-bg-hover);
    border-color: var(--color-primary);
    color: var(--color-primary);
}

.aural-notification-center__trigger:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}

.aural-notification-center__trigger--active {
    background: var(--primary-alpha-10);
    border-color: var(--color-primary);
    color: var(--color-primary);
}

.aural-notification-center__icon {
    width: 20px;
    height: 20px;
}

/* ========================================
   Notification Badge
   ======================================== */

.aural-notification-center__badge {
    position: absolute;
    top: 6px;
    right: 6px;
    min-width: 18px;
    height: 18px;
    padding: 0 4px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--color-error);
    color: white;
    border: 2px solid var(--color-bg-primary);
    border-radius: var(--radius-full);
    font-size: 0.65rem;
    font-weight: var(--font-bold);
    line-height: 1;
}

.aural-notification-center__badge--pulse {
    animation: aural-notification-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}

@keyframes aural-notification-pulse {
    0%, 100% {
        opacity: 1;
    }
    50% {
        opacity: 0.7;
    }
}

/* Hide badge when count is 0 */

.aural-notification-center__badge:empty {
    display: none;
}

/* ========================================
   Notification Dropdown
   ======================================== */

.aural-notification-center__dropdown {
    position: absolute;
    top: calc(100% + var(--space-2));
    right: 0;
    z-index: 1000;
    width: 380px;
    max-width: 90vw;
    max-height: 480px;
    background: var(--color-bg-secondary);
    border: 1px solid var(--color-border-medium);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-xl);
    opacity: 0;
    visibility: hidden;
    transform: translateY(-8px);
    transition: opacity 0.2s ease, transform 0.2s ease, visibility 0.2s;
    display: flex;
    flex-direction: column;
}

.aural-notification-center__dropdown--open {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
}

/* ========================================
   Dropdown Header
   ======================================== */

.aural-notification-center__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: var(--space-4) var(--space-5);
    border-bottom: 1px solid var(--color-border-subtle);
    flex-shrink: 0;
}

.aural-notification-center__title {
    font-size: var(--text-base);
    font-weight: var(--font-semibold);
    color: var(--color-text-primary);
}

.aural-notification-center__actions {
    display: flex;
    gap: var(--space-2);
}

.aural-notification-center__action {
    padding: var(--space-1) var(--space-2);
    background: transparent;
    color: var(--color-primary);
    border: none;
    border-radius: var(--radius-sm);
    font-size: var(--text-xs);
    font-weight: var(--font-medium);
    cursor: pointer;
    transition: var(--transition-all-fast);
}

.aural-notification-center__action:hover {
    background: var(--primary-alpha-10);
}

/* ========================================
   Notification Tabs/Filters
   ======================================== */

.aural-notification-center__tabs {
    display: flex;
    gap: var(--space-2);
    padding: var(--space-3) var(--space-5);
    border-bottom: 1px solid var(--color-border-subtle);
    overflow-x: auto;
    flex-shrink: 0;
}

.aural-notification-center__tab {
    padding: var(--space-2) var(--space-3);
    background: transparent;
    color: var(--color-text-secondary);
    border: 1px solid transparent;
    border-radius: var(--radius-md);
    font-size: var(--text-sm);
    font-weight: var(--font-medium);
    cursor: pointer;
    white-space: nowrap;
    transition: var(--transition-all-fast);
}

.aural-notification-center__tab:hover {
    background: var(--color-bg-hover);
    color: var(--color-text-primary);
}

.aural-notification-center__tab--active {
    background: var(--primary-alpha-10);
    color: var(--color-primary);
    border-color: var(--color-primary);
}

/* ========================================
   Notification List
   ======================================== */

.aural-notification-center__list {
    flex: 1;
    overflow-y: auto;
    padding: var(--space-2) 0;
}

.aural-notification-center__list::-webkit-scrollbar {
    width: 8px;
}

.aural-notification-center__list::-webkit-scrollbar-track {
    background: var(--color-bg-tertiary);
}

.aural-notification-center__list::-webkit-scrollbar-thumb {
    background: var(--color-border-medium);
    border-radius: var(--radius-sm);
}

.aural-notification-center__list::-webkit-scrollbar-thumb:hover {
    background: var(--color-text-tertiary);
}

/* ========================================
   Notification Item
   ======================================== */

.aural-notification-center__item {
    display: flex;
    gap: var(--space-3);
    padding: var(--space-3) var(--space-5);
    background: transparent;
    border: none;
    border-left: 3px solid transparent;
    text-align: left;
    cursor: pointer;
    transition: var(--transition-all-fast);
    width: 100%;
}

.aural-notification-center__item:hover {
    background: var(--color-bg-hover);
}

.aural-notification-center__item--unread {
    background: var(--primary-alpha-5);
    border-left-color: var(--color-primary);
}

.aural-notification-center__item--unread:hover {
    background: var(--primary-alpha-10);
}

.aural-notification-center__item-icon {
    flex-shrink: 0;
    width: 40px;
    height: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--color-bg-tertiary);
    color: var(--color-text-secondary);
    border-radius: var(--radius-md);
}

.aural-notification-center__item-icon svg {
    width: 20px;
    height: 20px;
}

/* Icon color variants */

.aural-notification-center__item--info .aural-notification-center__item-icon {
    background: var(--color-info-bg);
    color: var(--color-info);
}

.aural-notification-center__item--success .aural-notification-center__item-icon {
    background: var(--color-success-bg);
    color: var(--color-success);
}

.aural-notification-center__item--warning .aural-notification-center__item-icon {
    background: var(--color-warning-bg);
    color: var(--color-warning);
}

.aural-notification-center__item--error .aural-notification-center__item-icon {
    background: var(--color-error-bg);
    color: var(--color-error);
}

.aural-notification-center__item-content {
    flex: 1;
    min-width: 0;
}

.aural-notification-center__item-title {
    font-size: var(--text-sm);
    font-weight: var(--font-semibold);
    color: var(--color-text-primary);
    margin-bottom: 2px;
    line-height: var(--leading-tight);
}

.aural-notification-center__item-message {
    font-size: var(--text-xs);
    color: var(--color-text-secondary);
    line-height: var(--leading-relaxed);
    margin-bottom: var(--space-1);
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.aural-notification-center__item-time {
    font-size: var(--text-xs);
    color: var(--color-text-tertiary);
}

.aural-notification-center__item-dot {
    flex-shrink: 0;
    width: 8px;
    height: 8px;
    background: var(--color-primary);
    border-radius: 50%;
    margin-top: 6px;
}

/* ========================================
   Empty State
   ======================================== */

.aural-notification-center__empty {
    padding: var(--space-8) var(--space-5);
    text-align: center;
    color: var(--color-text-secondary);
}

.aural-notification-center__empty-icon {
    width: 64px;
    height: 64px;
    margin: 0 auto var(--space-4);
    color: var(--color-text-tertiary);
    opacity: 0.5;
}

.aural-notification-center__empty-text {
    font-size: var(--text-sm);
    font-weight: var(--font-medium);
}

/* ========================================
   Dropdown Footer
   ======================================== */

.aural-notification-center__footer {
    display: flex;
    justify-content: center;
    padding: var(--space-3) var(--space-5);
    border-top: 1px solid var(--color-border-subtle);
    flex-shrink: 0;
}

.aural-notification-center__footer-link {
    padding: var(--space-2) var(--space-4);
    background: transparent;
    color: var(--color-primary);
    border: none;
    border-radius: var(--radius-md);
    font-size: var(--text-sm);
    font-weight: var(--font-medium);
    text-decoration: none;
    cursor: pointer;
    transition: var(--transition-all-fast);
}

.aural-notification-center__footer-link:hover {
    background: var(--primary-alpha-10);
}

/* ========================================
   Size Variants
   ======================================== */

.aural-notification-center--sm .aural-notification-center__dropdown {
    width: 300px;
    max-height: 360px;
}

.aural-notification-center--lg .aural-notification-center__dropdown {
    width: 480px;
    max-height: 600px;
}

/* ========================================
   Position Variants
   ======================================== */

.aural-notification-center__dropdown--left {
    right: auto;
    left: 0;
}

.aural-notification-center__dropdown--center {
    right: auto;
    left: 50%;
    transform: translateX(-50%) translateY(-8px);
}

.aural-notification-center__dropdown--center.aural-notification-center__dropdown--open {
    transform: translateX(-50%) translateY(0);
}

/* ========================================
   Accessibility
   ======================================== */

@media (prefers-reduced-motion: reduce) {
    .aural-notification-center__dropdown {
        transition: none;
    }

    .aural-notification-center__badge--pulse {
        animation: none;
    }
}

/* ========================================
   Responsive
   ======================================== */

@media (max-width: 640px) {
    .aural-notification-center__dropdown {
        position: fixed;
        top: auto;
        bottom: 0;
        left: 0;
        right: 0;
        width: 100%;
        max-width: 100%;
        max-height: 70vh;
        border-radius: var(--radius-lg) var(--radius-lg) 0 0;
        transform: translateY(100%);
    }

    .aural-notification-center__dropdown--open {
        transform: translateY(0);
    }

    .aural-notification-center__tabs {
        overflow-x: auto;
    }
}

/* New Components */

/**
 * AURAL UI - Slider Component
 *
 * Custom-styled range input with variants and animations
 */

/* ========================================
   Base Slider Container
   ======================================== */

.aural-slider {
    position: relative;
    width: 100%;
    display: flex;
    flex-direction: column;
    gap: var(--space-2);
}

.aural-slider__label-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.aural-slider__label {
    font-size: var(--text-sm);
    color: var(--color-text-secondary);
    font-weight: var(--font-medium);
}

.aural-slider__value {
    font-size: var(--text-sm);
    color: var(--color-primary);
    font-weight: var(--font-semibold);
    min-width: 2.5rem;
    text-align: right;
}

/* ========================================
   Slider Input Track
   ======================================== */

.aural-slider__track {
    position: relative;
    width: 100%;
}

.aural-slider__input {
    -webkit-appearance: none;
    -moz-appearance: none;
         appearance: none;
    width: 100%;
    height: 44px;
    background: linear-gradient(to right, var(--color-primary) 50%, var(--color-bg-tertiary) 50%);
    background-size: 100% 6px;
    background-position: center;
    background-repeat: no-repeat;
    outline: none;
    cursor: pointer;
    transition: all 0.2s ease;
}

/* Track - Webkit/Blink */

.aural-slider__input::-webkit-slider-track {
    width: 100%;
    height: 6px;
    background: transparent;
    border-radius: var(--radius-full);
}

/* Track - Firefox */

.aural-slider__input::-moz-range-track {
    width: 100%;
    height: 6px;
    background: var(--color-bg-tertiary);
    border-radius: var(--radius-full);
}

/* Filled portion - Firefox */

.aural-slider__input::-moz-range-progress {
    height: 6px;
    background: var(--color-primary);
    border-radius: var(--radius-full);
}

/* ========================================
   Slider Thumb
   ======================================== */

/* Thumb - Webkit/Blink */

.aural-slider__input::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 1.25rem;
    height: 1.25rem;
    background: var(--color-primary);
    border: 3px solid var(--color-bg-primary);
    border-radius: var(--radius-full);
    cursor: pointer;
    -webkit-transition: all 0.2s ease;
    transition: all 0.2s ease;
    box-shadow: var(--shadow-sm);
}

/* Thumb - Firefox */

.aural-slider__input::-moz-range-thumb {
    width: 1.25rem;
    height: 1.25rem;
    background: var(--color-primary);
    border: 3px solid var(--color-bg-primary);
    border-radius: var(--radius-full);
    cursor: pointer;
    -moz-transition: all 0.2s ease;
    transition: all 0.2s ease;
    box-shadow: var(--shadow-sm);
}

/* ========================================
   Hover & Focus States
   ======================================== */

.aural-slider__input:hover {
    opacity: 0.9;
}

.aural-slider__input:hover::-webkit-slider-thumb {
    box-shadow: var(--glow-primary-sm), var(--shadow-md);
    transform: scale(1.1);
}

.aural-slider__input:hover::-moz-range-thumb {
    box-shadow: var(--glow-primary-sm), var(--shadow-md);
    transform: scale(1.1);
}

.aural-slider__input:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}

.aural-slider__input:focus-visible::-webkit-slider-thumb {
    box-shadow: var(--glow-primary-md), var(--shadow-lg);
}

.aural-slider__input:focus-visible::-moz-range-thumb {
    box-shadow: var(--glow-primary-md), var(--shadow-lg);
}

/* ========================================
   Active State
   ======================================== */

.aural-slider__input:active::-webkit-slider-thumb {
    transform: scale(0.95);
}

.aural-slider__input:active::-moz-range-thumb {
    transform: scale(0.95);
}

/* ========================================
   Size Variants
   ======================================== */

/* Small */

.aural-slider--sm .aural-slider__input {
    background-size: 100% 4px;
}

.aural-slider--sm .aural-slider__input::-webkit-slider-track {
    height: 4px;
}

.aural-slider--sm .aural-slider__input::-moz-range-track {
    height: 4px;
}

.aural-slider--sm .aural-slider__input::-moz-range-progress {
    height: 4px;
}

.aural-slider--sm .aural-slider__input::-webkit-slider-thumb {
    width: 1rem;
    height: 1rem;
}

.aural-slider--sm .aural-slider__input::-moz-range-thumb {
    width: 1rem;
    height: 1rem;
}

/* Large */

.aural-slider--lg .aural-slider__input {
    background-size: 100% 8px;
}

.aural-slider--lg .aural-slider__input::-webkit-slider-track {
    height: 8px;
}

.aural-slider--lg .aural-slider__input::-moz-range-track {
    height: 8px;
}

.aural-slider--lg .aural-slider__input::-moz-range-progress {
    height: 8px;
}

.aural-slider--lg .aural-slider__input::-webkit-slider-thumb {
    width: 1.5rem;
    height: 1.5rem;
}

.aural-slider--lg .aural-slider__input::-moz-range-thumb {
    width: 1.5rem;
    height: 1.5rem;
}

/* ========================================
   Color Variants
   ======================================== */

/* Success */

.aural-slider--success .aural-slider__input::-webkit-slider-thumb {
    background: var(--color-success);
}

.aural-slider--success .aural-slider__input::-moz-range-thumb {
    background: var(--color-success);
}

.aural-slider--success .aural-slider__value {
    color: var(--color-success);
}

.aural-slider--success .aural-slider__input:hover::-webkit-slider-thumb,
.aural-slider--success .aural-slider__input:focus-visible::-webkit-slider-thumb {
    box-shadow: var(--glow-success-md), var(--shadow-md);
}

.aural-slider--success .aural-slider__input:hover::-moz-range-thumb,
.aural-slider--success .aural-slider__input:focus-visible::-moz-range-thumb {
    box-shadow: var(--glow-success-md), var(--shadow-md);
}

/* Warning */

.aural-slider--warning .aural-slider__input::-webkit-slider-thumb {
    background: var(--color-warning);
}

.aural-slider--warning .aural-slider__input::-moz-range-thumb {
    background: var(--color-warning);
}

.aural-slider--warning .aural-slider__value {
    color: var(--color-warning);
}

.aural-slider--warning .aural-slider__input:hover::-webkit-slider-thumb,
.aural-slider--warning .aural-slider__input:focus-visible::-webkit-slider-thumb {
    box-shadow: var(--glow-warning-md), var(--shadow-md);
}

.aural-slider--warning .aural-slider__input:hover::-moz-range-thumb,
.aural-slider--warning .aural-slider__input:focus-visible::-moz-range-thumb {
    box-shadow: var(--glow-warning-md), var(--shadow-md);
}

/* Error */

.aural-slider--error .aural-slider__input::-webkit-slider-thumb {
    background: var(--color-error);
}

.aural-slider--error .aural-slider__input::-moz-range-thumb {
    background: var(--color-error);
}

.aural-slider--error .aural-slider__value {
    color: var(--color-error);
}

.aural-slider--error .aural-slider__input:hover::-webkit-slider-thumb,
.aural-slider--error .aural-slider__input:focus-visible::-webkit-slider-thumb {
    box-shadow: var(--glow-error-md), var(--shadow-md);
}

.aural-slider--error .aural-slider__input:hover::-moz-range-thumb,
.aural-slider--error .aural-slider__input:focus-visible::-moz-range-thumb {
    box-shadow: var(--glow-error-md), var(--shadow-md);
}

/* ========================================
   Stepped Slider with Tick Marks
   ======================================== */

.aural-slider--stepped .aural-slider__ticks {
    display: flex;
    justify-content: space-between;
    padding: 0 0.625rem;
    margin-top: var(--space-1);
}

.aural-slider__tick {
    width: 2px;
    height: 0.5rem;
    background: var(--color-border);
    border-radius: var(--radius-sm);
}

/* ========================================
   Min/Max Labels
   ======================================== */

.aural-slider__minmax {
    display: flex;
    justify-content: space-between;
    margin-top: var(--space-1);
}

.aural-slider__min,
.aural-slider__max {
    font-size: var(--text-xs);
    color: var(--color-text-muted);
}

/* ========================================
   Disabled State
   ======================================== */

.aural-slider__input:disabled {
    cursor: not-allowed;
    opacity: 0.5;
}

.aural-slider__input:disabled::-webkit-slider-thumb {
    cursor: not-allowed;
}

.aural-slider__input:disabled::-moz-range-thumb {
    cursor: not-allowed;
}

/* ========================================
   Accessibility
   ======================================== */

@media (prefers-reduced-motion: reduce) {
    .aural-slider__input,
    .aural-slider__input::-webkit-slider-thumb,
    .aural-slider__input::-moz-range-thumb {
        -webkit-transition: none;
        -moz-transition: none;
        transition: none;
    }
}

/* ========================================
   Vertical Slider
   ======================================== */

.aural-slider--vertical {
    width: auto;
    height: 250px;
    flex-direction: row;
    align-items: center;
    gap: var(--space-4);
}

.aural-slider--vertical .aural-slider__label-row {
    flex-direction: column;
    gap: var(--space-2);
    writing-mode: vertical-rl;
    text-orientation: mixed;
}

.aural-slider--vertical .aural-slider__label {
    writing-mode: horizontal-tb;
}

.aural-slider--vertical .aural-slider__value {
    writing-mode: horizontal-tb;
    min-width: auto;
    text-align: center;
}

.aural-slider--vertical .aural-slider__input {
    writing-mode: vertical-lr;
    direction: rtl;
    width: 44px;
    height: 100%;
    min-height: 200px;
    margin: 0;
}

.aural-slider--vertical .aural-slider__input::-webkit-slider-track {
    width: 6px;
    height: 100%;
}

.aural-slider--vertical .aural-slider__input::-moz-range-track {
    width: 6px;
    height: 100%;
}

.aural-slider--vertical .aural-slider__input::-moz-range-progress {
    width: 6px;
}

.aural-slider--vertical.aural-slider--sm .aural-slider__input::-webkit-slider-track {
    width: 4px;
}

.aural-slider--vertical.aural-slider--sm .aural-slider__input::-moz-range-track {
    width: 4px;
}

.aural-slider--vertical.aural-slider--sm .aural-slider__input::-moz-range-progress {
    width: 4px;
}

.aural-slider--vertical.aural-slider--lg .aural-slider__input::-webkit-slider-track {
    width: 8px;
}

.aural-slider--vertical.aural-slider--lg .aural-slider__input::-moz-range-track {
    width: 8px;
}

.aural-slider--vertical.aural-slider--lg .aural-slider__input::-moz-range-progress {
    width: 8px;
}

/**
 * AURAL UI - Chips/Tags Component
 *
 * Tag input with add/remove functionality and variants
 */

/* ========================================
   Chips Input Container
   ======================================== */

.aural-chips {
    position: relative;
    width: 100%;
}

.aural-chips__container {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-2);
    padding: var(--space-3);
    background: var(--color-bg-primary);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    min-height: 2.75rem;
    transition: all 0.2s ease;
}

.aural-chips__container:hover {
    border-color: var(--color-primary);
    background: var(--color-bg-hover);
}

.aural-chips__container:focus-within {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
    border-color: var(--color-primary);
}

/* ========================================
   Individual Chip/Tag
   ======================================== */

.aural-chip {
    display: inline-flex;
    align-items: center;
    gap: var(--space-2);
    padding: var(--space-1) var(--space-3);
    background: var(--color-bg-secondary);
    color: var(--color-text-primary);
    border-radius: var(--radius-full);
    font-size: var(--text-sm);
    font-weight: var(--font-medium);
    transition: all 0.2s ease;
    max-width: 100%;
}

.aural-chip__text {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.aural-chip__remove {
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 44px;
    min-height: 44px;
    padding: 0;
    background: transparent;
    border: none;
    border-radius: var(--radius-full);
    color: var(--color-text-secondary);
    cursor: pointer;
    transition: all 0.2s ease;
    flex-shrink: 0;
    /* Visual icon size remains small */
    font-size: 1rem;
}

.aural-chip__remove:hover {
    background: rgba(0, 0, 0, 0.1);
    color: var(--color-text-primary);
}

.aural-chip__remove:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 1px;
}

.aural-chip__remove::before {
    content: '×';
    font-size: 1.125rem;
    line-height: 1;
}

/* ========================================
   Chip Input Field
   ======================================== */

.aural-chips__input {
    flex: 1;
    min-width: 8rem;
    border: none;
    outline: none;
    background: transparent;
    padding: var(--space-1) var(--space-2);
    font-size: var(--text-sm);
    color: var(--color-text-primary);
}

.aural-chips__input::-moz-placeholder {
    color: var(--color-text-muted);
}

.aural-chips__input::placeholder {
    color: var(--color-text-muted);
}

/* ========================================
   Color Variants
   ======================================== */

/* Primary */

.aural-chip--primary {
    background: var(--color-primary);
    color: white;
}

.aural-chip--primary .aural-chip__remove {
    color: rgba(255, 255, 255, 0.8);
}

.aural-chip--primary .aural-chip__remove:hover {
    background: rgba(255, 255, 255, 0.2);
    color: white;
}

/* Success */

.aural-chip--success {
    background: var(--color-success);
    color: white;
}

.aural-chip--success .aural-chip__remove {
    color: rgba(255, 255, 255, 0.8);
}

.aural-chip--success .aural-chip__remove:hover {
    background: rgba(255, 255, 255, 0.2);
    color: white;
}

/* Error */

.aural-chip--error {
    background: var(--color-error);
    color: white;
}

.aural-chip--error .aural-chip__remove {
    color: rgba(255, 255, 255, 0.8);
}

.aural-chip--error .aural-chip__remove:hover {
    background: rgba(255, 255, 255, 0.2);
    color: white;
}

/* Warning */

.aural-chip--warning {
    background: var(--color-warning);
    color: white;
}

.aural-chip--warning .aural-chip__remove {
    color: rgba(255, 255, 255, 0.8);
}

.aural-chip--warning .aural-chip__remove:hover {
    background: rgba(255, 255, 255, 0.2);
    color: white;
}

/* Info */

.aural-chip--info {
    background: var(--color-info);
    color: white;
}

.aural-chip--info .aural-chip__remove {
    color: rgba(255, 255, 255, 0.8);
}

.aural-chip--info .aural-chip__remove:hover {
    background: rgba(255, 255, 255, 0.2);
    color: white;
}

/* ========================================
   Size Variants
   ======================================== */

/* Small */

.aural-chip--sm {
    padding: var(--space-1) var(--space-2);
    font-size: var(--text-xs);
    gap: var(--space-1);
}

.aural-chip--sm .aural-chip__remove {
    /* Maintain minimum 44×44px touch target */
    min-width: 44px;
    min-height: 44px;
    font-size: 0.875rem;
}

.aural-chip--sm .aural-chip__remove::before {
    font-size: 1rem;
}

/* Large */

.aural-chip--lg {
    padding: var(--space-2) var(--space-4);
    font-size: var(--text-base);
    gap: var(--space-3);
}

.aural-chip--lg .aural-chip__remove {
    width: 1.25rem;
    height: 1.25rem;
}

.aural-chip--lg .aural-chip__remove::before {
    font-size: 1.375rem;
}

/* ========================================
   Chip with Avatar/Icon
   ======================================== */

.aural-chip--with-avatar {
    padding-left: var(--space-1);
}

.aural-chip__avatar {
    width: 1.5rem;
    height: 1.5rem;
    border-radius: var(--radius-full);
    -o-object-fit: cover;
       object-fit: cover;
    flex-shrink: 0;
}

.aural-chip__icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 1rem;
    height: 1rem;
    flex-shrink: 0;
}

/* ========================================
   Standalone Chip (not in input)
   ======================================== */

.aural-chip--standalone {
    display: inline-flex;
}

.aural-chip--clickable {
    cursor: pointer;
}

.aural-chip--clickable:hover {
    transform: translateY(-1px);
    box-shadow: var(--shadow-sm);
}

.aural-chip--clickable:active {
    transform: translateY(0);
}

/* ========================================
   Chip List (for displaying chips only)
   ======================================== */

.aural-chips-list {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-2);
}

/* ========================================
   Disabled State
   ======================================== */

.aural-chips__container--disabled {
    opacity: 0.5;
    cursor: not-allowed;
    background: var(--color-bg-tertiary);
}

.aural-chips__container--disabled .aural-chip__remove {
    cursor: not-allowed;
    pointer-events: none;
}

.aural-chips__container--disabled .aural-chips__input {
    cursor: not-allowed;
}

/* ========================================
   Error State
   ======================================== */

.aural-chips__container--error {
    border-color: var(--color-error);
}

.aural-chips__container--error:focus-within {
    border-color: var(--color-error);
    box-shadow: var(--glow-error-sm);
}

.aural-chips__error-message {
    margin-top: var(--space-2);
    font-size: var(--text-sm);
    color: var(--color-error);
}

/* ========================================
   Chip Limit Indicator
   ======================================== */

.aural-chips__limit {
    margin-top: var(--space-2);
    font-size: var(--text-xs);
    color: var(--color-text-muted);
    text-align: right;
}

.aural-chips__limit--warning {
    color: var(--color-warning);
}

.aural-chips__limit--max {
    color: var(--color-error);
}

/* ========================================
   Accessibility
   ======================================== */

@media (prefers-reduced-motion: reduce) {
    .aural-chip,
    .aural-chip__remove,
    .aural-chips__container,
    .aural-chip--clickable {
        transition: none;
    }
}

/* Screen reader only text */

.aural-chip__sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border-width: 0;
}

/**
 * AURAL UI - Code Block Component
 *
 * Syntax-highlighted code blocks with copy functionality
 */

/* ========================================
   Base Code Block Container
   ======================================== */

.aural-code-block {
    position: relative;
    background: var(--color-bg-tertiary);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    overflow: hidden;
    font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace;
    font-size: var(--text-sm);
}

/* ========================================
   Code Block Header
   ======================================== */

.aural-code-block__header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: var(--space-3) var(--space-4);
    background: var(--color-bg-secondary);
    border-bottom: 1px solid var(--color-border);
}

.aural-code-block__language {
    font-size: var(--text-xs);
    color: var(--color-text-secondary);
    font-weight: var(--font-semibold);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.aural-code-block__copy {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    padding: var(--space-2) var(--space-3);
    background: transparent;
    border: 1px solid var(--color-border);
    border-radius: var(--radius);
    color: var(--color-text-secondary);
    font-size: var(--text-xs);
    cursor: pointer;
    transition: all 0.2s ease;
}

.aural-code-block__copy:hover {
    background: var(--color-bg-tertiary);
    border-color: var(--color-primary);
    color: var(--color-primary);
}

.aural-code-block__copy:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}

.aural-code-block__copy:active {
    transform: scale(0.98);
}

.aural-code-block__copy--copied {
    background: var(--color-success);
    border-color: var(--color-success);
    color: white;
}

.aural-code-block__copy-icon::before {
    content: '📋';
}

.aural-code-block__copy--copied .aural-code-block__copy-icon::before {
    content: '✓';
}

/* ========================================
   Code Content Area
   ======================================== */

.aural-code-block__content {
    position: relative;
    overflow-x: auto;
    max-height: 500px;
    overflow-y: auto;
}

.aural-code-block__pre {
    margin: 0;
    padding: var(--space-4);
}

.aural-code-block__code {
    display: block;
    color: var(--color-text-primary);
    line-height: 1.6;
    white-space: pre;
    word-wrap: normal;
}

/* ========================================
   Line Numbers
   ======================================== */

.aural-code-block--with-line-numbers .aural-code-block__content {
    display: flex;
}

.aural-code-block__line-numbers {
    padding: var(--space-4) var(--space-3);
    padding-right: var(--space-2);
    background: var(--color-bg-secondary);
    border-right: 1px solid var(--color-border);
    color: var(--color-text-muted);
    font-size: var(--text-sm);
    line-height: 1.6;
    text-align: right;
    -webkit-user-select: none;
       -moz-user-select: none;
            user-select: none;
    flex-shrink: 0;
}

.aural-code-block__line-number {
    display: block;
}

/* ========================================
   Highlighted Lines
   ======================================== */

.aural-code-block__line {
    display: block;
    width: 100%;
}

.aural-code-block__line--highlight {
    background: rgba(16, 185, 129, 0.1);
    border-left: 3px solid var(--color-primary);
    padding-left: var(--space-2);
    margin-left: calc(-1 * var(--space-2));
}

.aural-code-block__line--success {
    background: rgba(34, 197, 94, 0.1);
    border-left: 3px solid var(--color-success);
    padding-left: var(--space-2);
    margin-left: calc(-1 * var(--space-2));
}

.aural-code-block__line--error {
    background: rgba(239, 68, 68, 0.1);
    border-left: 3px solid var(--color-error);
    padding-left: var(--space-2);
    margin-left: calc(-1 * var(--space-2));
}

/* ========================================
   Terminal Variant
   ======================================== */

.aural-code-block--terminal {
    background: var(--color-bg-elevated, #1a1a1a);
    border-color: var(--color-border-medium, #333);
}

.aural-code-block--terminal .aural-code-block__header {
    background: var(--color-bg-secondary, #2a2a2a);
    border-bottom-color: var(--color-border-medium, #333);
}

.aural-code-block--terminal .aural-code-block__code {
    color: var(--color-success, #00ff00);
}

.aural-code-block--terminal::before {
    content: '';
    position: absolute;
    top: 0.75rem;
    left: 1rem;
    display: flex;
    gap: 0.5rem;
    z-index: 1;
}

/* ========================================
   Size Variants
   ======================================== */

/* Small */

.aural-code-block--sm {
    font-size: var(--text-xs);
}

.aural-code-block--sm .aural-code-block__pre {
    padding: var(--space-3);
}

.aural-code-block--sm .aural-code-block__line-numbers {
    padding: var(--space-3) var(--space-2);
    font-size: var(--text-xs);
}

/* Large */

.aural-code-block--lg {
    font-size: var(--text-base);
}

.aural-code-block--lg .aural-code-block__pre {
    padding: var(--space-6);
}

.aural-code-block--lg .aural-code-block__line-numbers {
    padding: var(--space-6) var(--space-4);
    font-size: var(--text-base);
}

/* ========================================
   Inline Code
   ======================================== */

.aural-code-inline {
    display: inline-block;
    padding: 0.125rem 0.375rem;
    background: var(--color-bg-tertiary);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace;
    font-size: 0.875em;
    color: var(--color-primary);
}

/* ========================================
   Custom Scrollbar
   ======================================== */

.aural-code-block__content::-webkit-scrollbar {
    width: 8px;
    height: 8px;
}

.aural-code-block__content::-webkit-scrollbar-track {
    background: var(--color-bg-secondary);
}

.aural-code-block__content::-webkit-scrollbar-thumb {
    background: var(--color-border);
    border-radius: var(--radius-sm);
}

.aural-code-block__content::-webkit-scrollbar-thumb:hover {
    background: var(--color-text-muted);
}

/* ========================================
   Syntax Highlighting (Basic)
   ======================================== */

.aural-code-block__code .token-comment {
    color: #6a737d;
    font-style: italic;
}

.aural-code-block__code .token-string {
    color: #22c55e;
}

.aural-code-block__code .token-number {
    color: #f59e0b;
}

.aural-code-block__code .token-keyword {
    color: #8b5cf6;
    font-weight: var(--font-semibold);
}

.aural-code-block__code .token-function {
    color: #06b6d4;
}

.aural-code-block__code .token-operator {
    color: #ef4444;
}

.aural-code-block__code .token-variable {
    color: #ec4899;
}

.aural-code-block__code .token-class {
    color: #f59e0b;
    font-weight: var(--font-semibold);
}

.aural-code-block__code .token-property {
    color: #10b981;
}

.aural-code-block__code .token-punctuation {
    color: var(--color-text-secondary);
}

/* ========================================
   Loading State
   ======================================== */

.aural-code-block--loading {
    opacity: 0.6;
}

.aural-code-block--loading .aural-code-block__copy {
    cursor: not-allowed;
    pointer-events: none;
}

/* ========================================
   Accessibility
   ======================================== */

@media (prefers-reduced-motion: reduce) {
    .aural-code-block__copy {
        transition: none;
    }
}

/* High contrast support */

@media (prefers-contrast: high) {
    .aural-code-block {
        border-width: 2px;
    }

    .aural-code-block__line--highlight,
    .aural-code-block__line--success,
    .aural-code-block__line--error {
        border-left-width: 4px;
    }
}

/**
 * AURAL UI - Dialog Component
 *
 * Lightweight confirmation dialogs with variants
 */

/* ========================================
   Dialog Backdrop
   ======================================== */

.aural-dialog-backdrop {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.5);
    -webkit-backdrop-filter: blur(4px);
    backdrop-filter: blur(4px);
    z-index: 9999;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: var(--space-4);
    opacity: 0;
    transition: opacity 0.2s ease;
}

.aural-dialog-backdrop.is-open {
    opacity: 1;
}

.aural-dialog-backdrop:not(.is-open) {
    pointer-events: none;
}

/* ========================================
   Dialog Container
   ======================================== */

.aural-dialog {
    position: relative;
    background: var(--color-bg-primary);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-2xl);
    max-width: 28rem;
    width: 100%;
    max-height: 90vh;
    overflow-y: auto;
    transform: scale(0.95) translateY(-10px);
    transition: transform 0.2s ease;
}

.aural-dialog-backdrop.is-open .aural-dialog {
    transform: scale(1) translateY(0);
}

/* ========================================
   Dialog Header
   ======================================== */

.aural-dialog__header {
    display: flex;
    align-items: flex-start;
    gap: var(--space-3);
    padding: var(--space-6);
    padding-bottom: var(--space-4);
}

.aural-dialog__icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 3rem;
    height: 3rem;
    border-radius: var(--radius-full);
    flex-shrink: 0;
    font-size: 1.5rem;
}

.aural-dialog__title-group {
    flex: 1;
}

.aural-dialog__title {
    font-size: var(--text-lg);
    font-weight: var(--font-semibold);
    color: var(--color-text-primary);
    margin: 0;
}

/* ========================================
   Dialog Body
   ======================================== */

.aural-dialog__body {
    padding: 0 var(--space-6);
    padding-bottom: var(--space-4);
}

.aural-dialog__message {
    font-size: var(--text-sm);
    color: var(--color-text-secondary);
    line-height: 1.6;
    margin: 0;
}

/* ========================================
   Dialog Footer (Actions)
   ======================================== */

.aural-dialog__footer {
    display: flex;
    gap: var(--space-3);
    padding: var(--space-4) var(--space-6);
    padding-top: var(--space-6);
    border-top: 1px solid var(--color-border);
}

.aural-dialog__footer--reverse {
    flex-direction: row-reverse;
}

.aural-dialog__footer--stacked {
    flex-direction: column;
}

.aural-dialog__action {
    flex: 1;
}

/* ========================================
   Dialog Variants - Alert (Info)
   ======================================== */

.aural-dialog--alert .aural-dialog__icon {
    background: rgba(59, 130, 246, 0.1);
    color: var(--color-info);
}

.aural-dialog--alert .aural-dialog__icon::before {
    content: 'ℹ️';
}

/* ========================================
   Dialog Variants - Success
   ======================================== */

.aural-dialog--success .aural-dialog__icon {
    background: rgba(34, 197, 94, 0.1);
    color: var(--color-success);
}

.aural-dialog--success .aural-dialog__icon::before {
    content: '✓';
}

/* ========================================
   Dialog Variants - Warning
   ======================================== */

.aural-dialog--warning .aural-dialog__icon {
    background: rgba(245, 158, 11, 0.1);
    color: var(--color-warning);
}

.aural-dialog--warning .aural-dialog__icon::before {
    content: '⚠️';
}

/* ========================================
   Dialog Variants - Destructive (Error)
   ======================================== */

.aural-dialog--destructive .aural-dialog__icon {
    background: rgba(239, 68, 68, 0.1);
    color: var(--color-error);
}

.aural-dialog--destructive .aural-dialog__icon::before {
    content: '⚠';
}

.aural-dialog--destructive .aural-dialog__title {
    color: var(--color-error);
}

/* ========================================
   Dialog without Icon
   ======================================== */

.aural-dialog--no-icon .aural-dialog__header {
    padding-top: var(--space-6);
}

.aural-dialog--no-icon .aural-dialog__icon {
    display: none;
}

/* ========================================
   Close Button
   ======================================== */

.aural-dialog__close {
    position: absolute;
    top: var(--space-4);
    right: var(--space-4);
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 44px;
    min-height: 44px;
    padding: 0;
    background: transparent;
    border: none;
    border-radius: var(--radius);
    color: var(--color-text-muted);
    cursor: pointer;
    transition: all 0.2s ease;
}

.aural-dialog__close:hover {
    background: var(--color-bg-secondary);
    color: var(--color-text-primary);
}

.aural-dialog__close:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}

.aural-dialog__close::before {
    content: '×';
    font-size: 1.5rem;
    line-height: 1;
}

/* ========================================
   Responsive Adjustments
   ======================================== */

@media (max-width: 640px) {
    .aural-dialog {
        max-width: 100%;
        margin: var(--space-4);
    }

    .aural-dialog__header,
    .aural-dialog__body,
    .aural-dialog__footer {
        padding-left: var(--space-4);
        padding-right: var(--space-4);
    }

    .aural-dialog__footer--stacked {
        flex-direction: column-reverse;
    }
}

/* ========================================
   Accessibility
   ======================================== */

/* Prevent body scroll when dialog is open */

body.aural-dialog-open {
    overflow: hidden;
}

/* Focus trap helper */

.aural-dialog[aria-hidden="true"] {
    display: none;
}

.aural-dialog[aria-hidden="false"] {
    display: block;
}

/* Reduced motion */

@media (prefers-reduced-motion: reduce) {
    .aural-dialog-backdrop,
    .aural-dialog {
        transition: none;
    }

    .aural-dialog-backdrop.is-open .aural-dialog {
        transform: scale(1) translateY(0);
    }

    .aural-dialog {
        transform: scale(1) translateY(0);
    }
}

/* ========================================
   Custom Scrollbar
   ======================================== */

.aural-dialog::-webkit-scrollbar {
    width: 8px;
}

.aural-dialog::-webkit-scrollbar-track {
    background: var(--color-bg-secondary);
}

.aural-dialog::-webkit-scrollbar-thumb {
    background: var(--color-border);
    border-radius: var(--radius-sm);
}

.aural-dialog::-webkit-scrollbar-thumb:hover {
    background: var(--color-text-muted);
}

/**
 * AURAL UI - File Upload Component
 *
 * Drag-and-drop file upload with progress and validation
 *
 * Usage:
 *   <div class="file-upload">
 *     <label class="file-upload__zone">
 *       <input type="file" class="file-upload__input" multiple>
 *       <div class="file-upload__content">
 *         <i data-lucide="upload"></i>
 *         <span class="file-upload__text">Drop files or click to browse</span>
 *       </div>
 *     </label>
 *   </div>
 */

/* ========================================
   FILE UPLOAD CONTAINER
   ======================================== */

.file-upload {
    width: 100%;
    font-family: var(--font-sans);
}

/* ========================================
   DROP ZONE
   ======================================== */

.file-upload__zone {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: var(--space-8);
    background: var(--color-bg-secondary);
    border: 2px dashed var(--color-border);
    border-radius: var(--radius-lg);
    cursor: pointer;
    transition: var(--transition-all-fast);
    min-height: 200px;
    text-align: center;
}

.file-upload__zone:hover:not(.file-upload__zone--disabled) {
    border-color: var(--color-primary);
    background: var(--color-bg-primary);
}

.file-upload__zone:focus-within {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}

/* Active (dragging) state */

.file-upload__zone--active {
    border-color: var(--color-primary);
    background: var(--primary-alpha-5);
    box-shadow: 0 0 0 3px var(--primary-alpha-10);
}

/* Error state */

.file-upload__zone--error {
    border-color: var(--color-error);
    background: rgba(239, 68, 68, 0.03);
}

/* Disabled state */

.file-upload__zone--disabled {
    cursor: not-allowed;
    opacity: 0.5;
    background: var(--color-bg-tertiary);
}

/* ========================================
   DROP ZONE CONTENT
   ======================================== */

.file-upload__content {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--space-3);
    pointer-events: none;
}

.file-upload__icon {
    width: 48px;
    height: 48px;
    color: var(--color-text-tertiary);
    opacity: 0.7;
}

.file-upload__zone--active .file-upload__icon {
    color: var(--color-primary);
    opacity: 1;
    transform: scale(1.1);
    transition: var(--transition-all-fast);
}

.file-upload__text {
    font-size: var(--text-base);
    font-weight: var(--font-medium);
    color: var(--color-text-primary);
}

.file-upload__subtext {
    font-size: var(--text-sm);
    color: var(--color-text-tertiary);
    margin-top: var(--space-1);
}

.file-upload__browse {
    color: var(--color-primary);
    font-weight: var(--font-semibold);
    text-decoration: underline;
}

.file-upload__input {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border-width: 0;
}

/* ========================================
   SIZE VARIANTS
   ======================================== */

/* Small */

.file-upload--sm .file-upload__zone {
    padding: var(--space-6);
    min-height: 140px;
}

.file-upload--sm .file-upload__icon {
    width: 32px;
    height: 32px;
}

.file-upload--sm .file-upload__text {
    font-size: var(--text-sm);
}

/* Large */

.file-upload--lg .file-upload__zone {
    padding: var(--space-10);
    min-height: 260px;
}

.file-upload--lg .file-upload__icon {
    width: 64px;
    height: 64px;
}

.file-upload--lg .file-upload__text {
    font-size: var(--text-lg);
}

/* ========================================
   FILE LIST
   ======================================== */

.file-upload__list {
    margin-top: var(--space-4);
    display: flex;
    flex-direction: column;
    gap: var(--space-3);
}

/* ========================================
   FILE ITEM
   ======================================== */

.file-upload__item {
    display: flex;
    align-items: center;
    gap: var(--space-3);
    padding: var(--space-3) var(--space-4);
    background: var(--color-bg-secondary);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    transition: var(--transition-all-fast);
}

.file-upload__item:hover {
    box-shadow: var(--shadow-sm);
}

/* ========================================
   FILE PREVIEW/THUMBNAIL
   ======================================== */

.file-upload__preview {
    width: 48px;
    height: 48px;
    border-radius: var(--radius-md);
    flex-shrink: 0;
    background: var(--color-bg-tertiary);
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    position: relative;
}

.file-upload__preview img {
    width: 100%;
    height: 100%;
    -o-object-fit: cover;
       object-fit: cover;
}

.file-upload__preview-icon {
    width: 24px;
    height: 24px;
    color: var(--color-text-tertiary);
}

/* ========================================
   FILE INFO
   ======================================== */

.file-upload__info {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: var(--space-1);
}

.file-upload__filename {
    font-size: var(--text-sm);
    font-weight: var(--font-medium);
    color: var(--color-text-primary);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.file-upload__meta {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    font-size: var(--text-xs);
    color: var(--color-text-tertiary);
}

.file-upload__filesize {
    display: inline-flex;
}

.file-upload__status {
    display: inline-flex;
    align-items: center;
    gap: var(--space-1);
}

/* ========================================
   UPLOAD PROGRESS
   ======================================== */

.file-upload__progress {
    margin-top: var(--space-2);
    width: 100%;
}

.file-upload__progress-bar {
    height: 4px;
    background: var(--color-bg-tertiary);
    border-radius: var(--radius-full);
    overflow: hidden;
}

.file-upload__progress-fill {
    height: 100%;
    background: var(--color-primary);
    border-radius: var(--radius-full);
    transition: width 0.3s ease;
    box-shadow: 0 0 8px var(--color-primary);
}

.file-upload__progress-text {
    font-size: var(--text-xs);
    color: var(--color-text-muted);
    margin-top: var(--space-1);
}

/* ========================================
   FILE STATES
   ======================================== */

/* Pending */

.file-upload__item--pending {
    border-color: var(--color-border);
}

/* Uploading */

.file-upload__item--uploading {
    border-color: var(--color-primary);
    background: var(--primary-alpha-5);
}

.file-upload__item--uploading .file-upload__status {
    color: var(--color-primary);
}

/* Success */

.file-upload__item--success {
    border-color: var(--color-success);
    background: rgba(34, 197, 94, 0.05);
}

.file-upload__item--success .file-upload__status {
    color: var(--color-success);
}

.file-upload__item--success .file-upload__progress-fill {
    background: var(--color-success);
    box-shadow: 0 0 8px var(--color-success);
}

/* Error */

.file-upload__item--error {
    border-color: var(--color-error);
    background: rgba(239, 68, 68, 0.05);
}

.file-upload__item--error .file-upload__status {
    color: var(--color-error);
}

.file-upload__error-message {
    font-size: var(--text-xs);
    color: var(--color-error);
    margin-top: var(--space-1);
}

/* ========================================
   FILE ACTIONS
   ======================================== */

.file-upload__actions {
    display: flex;
    gap: var(--space-2);
    flex-shrink: 0;
}

.file-upload__action {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    padding: 0;
    background: transparent;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    color: var(--color-text-tertiary);
    cursor: pointer;
    transition: var(--transition-all-fast);
}

.file-upload__action:hover {
    background: var(--color-bg-tertiary);
    border-color: var(--color-border-medium);
    color: var(--color-text-primary);
}

.file-upload__action--remove:hover {
    background: var(--color-error);
    border-color: var(--color-error);
    color: white;
}

.file-upload__action:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}

.file-upload__action svg,
.file-upload__action i {
    width: 16px;
    height: 16px;
}

/* ========================================
   BUTTON VARIANT
   ======================================== */

.file-upload--button .file-upload__zone {
    display: inline-flex;
    flex-direction: row;
    padding: var(--space-3) var(--space-6);
    min-height: auto;
    border: none;
    background: var(--color-button-primary-bg);
    color: var(--color-button-primary-text);
    border-radius: var(--radius-md);
    gap: var(--space-2);
}

.file-upload--button .file-upload__zone:hover:not(.file-upload__zone--disabled) {
    background: var(--color-button-primary-hover);
    transform: translateY(-2px);
    box-shadow: var(--shadow-primary-lg);
}

.file-upload--button .file-upload__icon {
    width: 20px;
    height: 20px;
    color: currentColor;
    opacity: 1;
}

.file-upload--button .file-upload__text {
    font-size: var(--text-base);
    color: currentColor;
}

.file-upload--button .file-upload__subtext {
    display: none;
}

/* ========================================
   IMAGE GRID VARIANT
   ======================================== */

.file-upload--image-grid .file-upload__list {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
    gap: var(--space-3);
}

.file-upload--image-grid .file-upload__item {
    flex-direction: column;
    padding: var(--space-3);
    aspect-ratio: 1;
}

.file-upload--image-grid .file-upload__preview {
    width: 100%;
    height: 100%;
    max-height: 120px;
}

.file-upload--image-grid .file-upload__info {
    width: 100%;
}

.file-upload--image-grid .file-upload__filename {
    text-align: center;
}

.file-upload--image-grid .file-upload__actions {
    position: absolute;
    top: var(--space-2);
    right: var(--space-2);
    opacity: 0;
    transition: opacity 0.2s ease;
}

.file-upload--image-grid .file-upload__item:hover .file-upload__actions {
    opacity: 1;
}

/* ========================================
   CONSTRAINTS / HELPER TEXT
   ======================================== */

.file-upload__constraints {
    margin-top: var(--space-2);
    font-size: var(--text-xs);
    color: var(--color-text-muted);
    text-align: center;
}

.file-upload__error-text {
    margin-top: var(--space-2);
    padding: var(--space-3) var(--space-4);
    background: rgba(239, 68, 68, 0.1);
    border: 1px solid var(--color-error);
    border-radius: var(--radius-md);
    font-size: var(--text-sm);
    color: var(--color-error);
    display: flex;
    align-items: center;
    gap: var(--space-2);
}

.file-upload__error-text svg,
.file-upload__error-text i {
    width: 16px;
    height: 16px;
    flex-shrink: 0;
}

/* ========================================
   ACCESSIBILITY
   ======================================== */

@media (prefers-reduced-motion: reduce) {
    .file-upload__zone,
    .file-upload__item,
    .file-upload__progress-fill,
    .file-upload__action,
    .file-upload__icon {
        transition: none;
        animation: none;
    }
}

/* Focus visible for keyboard navigation */

.file-upload__input:focus-visible + .file-upload__zone {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}

/* Screen reader only text */

.file-upload__sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border-width: 0;
}

/* ========================================
   MOBILE RESPONSIVE
   ======================================== */

@media (max-width: 640px) {
    .file-upload__zone {
        padding: var(--space-6);
        min-height: 160px;
    }

    .file-upload__icon {
        width: 40px;
        height: 40px;
    }

    .file-upload__text {
        font-size: var(--text-sm);
    }

    .file-upload__item {
        padding: var(--space-3);
    }

    .file-upload__preview {
        width: 40px;
        height: 40px;
    }

    .file-upload--image-grid .file-upload__list {
        grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
    }
}

/**
 * AURAL UI - Command Palette Component
 *
 * Keyboard-driven command interface with search and navigation
 */

/* ========================================
   Command Palette Backdrop
   ======================================== */

.aural-command-palette-backdrop {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.5);
    -webkit-backdrop-filter: blur(4px);
    backdrop-filter: blur(4px);
    z-index: 10000;
    display: flex;
    align-items: flex-start;
    justify-content: center;
    padding-top: 15vh;
    opacity: 0;
    transition: opacity 0.2s ease;
}

.aural-command-palette-backdrop.is-open {
    opacity: 1;
}

.aural-command-palette-backdrop:not(.is-open) {
    pointer-events: none;
}

/* ========================================
   Command Palette Container
   ======================================== */

.aural-command-palette {
    position: relative;
    background: var(--color-bg-primary);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-2xl), var(--glow-primary-sm);
    max-width: 40rem;
    width: 100%;
    max-height: 70vh;
    display: flex;
    flex-direction: column;
    transform: scale(0.95) translateY(-10px);
    transition: transform 0.2s ease;
    overflow: hidden;
}

.aural-command-palette-backdrop.is-open .aural-command-palette {
    transform: scale(1) translateY(0);
}

/* ========================================
   Search Input
   ======================================== */

.aural-command-palette__search {
    position: relative;
    border-bottom: 1px solid var(--color-border);
}

.aural-command-palette__search-icon {
    position: absolute;
    left: var(--space-4);
    top: 50%;
    transform: translateY(-50%);
    font-size: 1.25rem;
    color: var(--color-text-muted);
}

.aural-command-palette__search-icon::before {
    content: '🔍';
}

.aural-command-palette__input {
    width: 100%;
    padding: var(--space-4);
    padding-left: calc(var(--space-4) + 2rem);
    background: transparent;
    border: none;
    outline: none;
    font-size: var(--text-base);
    color: var(--color-text-primary);
}

.aural-command-palette__input::-moz-placeholder {
    color: var(--color-text-muted);
}

.aural-command-palette__input::placeholder {
    color: var(--color-text-muted);
}

/* ========================================
   Results Container
   ======================================== */

.aural-command-palette__results {
    overflow-y: auto;
    max-height: calc(70vh - 4rem - 3rem);
    padding: var(--space-2);
}

/* ========================================
   Command Groups
   ======================================== */

.aural-command-palette__group {
    margin-bottom: var(--space-3);
}

.aural-command-palette__group:last-child {
    margin-bottom: 0;
}

.aural-command-palette__group-label {
    padding: var(--space-2) var(--space-3);
    font-size: var(--text-xs);
    font-weight: var(--font-semibold);
    color: var(--color-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

/* ========================================
   Command Items
   ======================================== */

.aural-command-palette__items {
    display: flex;
    flex-direction: column;
    gap: var(--space-1);
}

.aural-command-palette__item {
    display: flex;
    align-items: center;
    gap: var(--space-3);
    padding: var(--space-3);
    background: transparent;
    border: none;
    border-radius: var(--radius-md);
    color: var(--color-text-primary);
    cursor: pointer;
    transition: all 0.15s ease;
    text-align: left;
    width: 100%;
}

.aural-command-palette__item:hover {
    background: var(--color-bg-secondary);
}

.aural-command-palette__item--selected {
    background: var(--color-primary);
    color: white;
    box-shadow: var(--glow-primary-sm);
}

.aural-command-palette__item--selected .aural-command-palette__item-icon,
.aural-command-palette__item--selected .aural-command-palette__item-description {
    color: rgba(255, 255, 255, 0.9);
}

/* ========================================
   Command Item Content
   ======================================== */

.aural-command-palette__item-icon {
    font-size: 1.25rem;
    flex-shrink: 0;
    width: 1.5rem;
    height: 1.5rem;
    display: flex;
    align-items: center;
    justify-content: center;
}

.aural-command-palette__item-content {
    flex: 1;
    min-width: 0;
}

.aural-command-palette__item-title {
    font-size: var(--text-sm);
    font-weight: var(--font-medium);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.aural-command-palette__item-description {
    font-size: var(--text-xs);
    color: var(--color-text-muted);
    margin-top: var(--space-1);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* ========================================
   Keyboard Shortcut Display
   ======================================== */

.aural-command-palette__shortcut {
    display: flex;
    gap: var(--space-1);
    flex-shrink: 0;
}

.aural-command-palette__key {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 1.5rem;
    height: 1.5rem;
    padding: 0 var(--space-2);
    background: var(--color-bg-tertiary);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    font-size: var(--text-xs);
    font-family: var(--font-mono);
    color: var(--color-text-secondary);
    box-shadow: var(--shadow-xs);
}

.aural-command-palette__item--selected .aural-command-palette__key {
    background: rgba(255, 255, 255, 0.2);
    border-color: rgba(255, 255, 255, 0.3);
    color: white;
}

/* ========================================
   Empty State
   ======================================== */

.aural-command-palette__empty {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: var(--space-8);
    text-align: center;
}

.aural-command-palette__empty-icon {
    font-size: 3rem;
    opacity: 0.3;
    margin-bottom: var(--space-3);
}

.aural-command-palette__empty-icon::before {
    content: '🔍';
}

.aural-command-palette__empty-text {
    font-size: var(--text-sm);
    color: var(--color-text-muted);
}

/* ========================================
   Footer Hints
   ======================================== */

.aural-command-palette__footer {
    display: flex;
    align-items: center;
    gap: var(--space-4);
    padding: var(--space-3) var(--space-4);
    background: var(--color-bg-secondary);
    border-top: 1px solid var(--color-border);
    font-size: var(--text-xs);
    color: var(--color-text-muted);
}

.aural-command-palette__hint {
    display: flex;
    align-items: center;
    gap: var(--space-2);
}

.aural-command-palette__hint-keys {
    display: flex;
    gap: var(--space-1);
}

/* ========================================
   Loading State
   ======================================== */

.aural-command-palette__loading {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: var(--space-8);
}

.aural-command-palette__spinner {
    width: 2rem;
    height: 2rem;
    border: 3px solid var(--color-border);
    border-top-color: var(--color-primary);
    border-radius: var(--radius-full);
    animation: spin 0.8s linear infinite;
}

@keyframes spin {
    to {
        transform: rotate(360deg);
    }
}

/* ========================================
   Responsive Adjustments
   ======================================== */

@media (max-width: 640px) {
    .aural-command-palette-backdrop {
        padding-top: 10vh;
        padding-left: var(--space-4);
        padding-right: var(--space-4);
    }

    .aural-command-palette {
        max-width: 100%;
    }

    .aural-command-palette__footer {
        flex-wrap: wrap;
    }
}

/* ========================================
   Accessibility
   ======================================== */

/* Prevent body scroll when palette is open */

body.aural-command-palette-open {
    overflow: hidden;
}

/* Focus visible indicator */

.aural-command-palette__item:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}

/* Reduced motion */

@media (prefers-reduced-motion: reduce) {
    .aural-command-palette-backdrop,
    .aural-command-palette,
    .aural-command-palette__item {
        transition: none;
    }

    .aural-command-palette__spinner {
        animation: none;
        border-top-color: var(--color-border);
    }

    .aural-command-palette-backdrop.is-open .aural-command-palette {
        transform: scale(1) translateY(0);
    }
}

/* Custom Scrollbar */

.aural-command-palette__results::-webkit-scrollbar {
    width: 8px;
}

.aural-command-palette__results::-webkit-scrollbar-track {
    background: var(--color-bg-secondary);
}

.aural-command-palette__results::-webkit-scrollbar-thumb {
    background: var(--color-border);
    border-radius: var(--radius-sm);
}

.aural-command-palette__results::-webkit-scrollbar-thumb:hover {
    background: var(--color-text-muted);
}

/* ========================================
   Match Highlighting
   ======================================== */

.aural-command-palette__match {
    color: var(--color-primary);
    font-weight: var(--font-semibold);
}

.aural-command-palette__item--selected .aural-command-palette__match {
    color: white;
    text-decoration: underline;
}

/**
 * AURAL UI - Date Picker
 *
 * Calendar component with date selection, month/year navigation,
 * and keyboard navigation support.
 */

/* ========================================
   Date Picker Container
   ======================================== */

.aural-date-picker {
    position: relative;
    display: inline-block;
    width: 100%;
    max-width: 320px;
}

.aural-date-picker__input-wrapper {
    position: relative;
    display: flex;
    align-items: center;
    gap: var(--space-2);
}

.aural-date-picker__input {
    flex: 1;
    padding: var(--space-3) var(--space-4);
    padding-right: var(--space-10);
    background: var(--color-bg-secondary);
    color: var(--color-text-primary);
    border: 1px solid var(--color-border-medium);
    border-radius: var(--radius-md);
    font-size: var(--text-base);
    font-family: inherit;
    cursor: pointer;
    transition: var(--transition-all-fast);
}

.aural-date-picker__input:hover {
    border-color: var(--color-primary);
    background: var(--color-bg-hover);
}

.aural-date-picker__input:focus {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
    border-color: var(--color-primary);
}

.aural-date-picker__input::-moz-placeholder {
    color: var(--color-text-secondary);
}

.aural-date-picker__input::placeholder {
    color: var(--color-text-secondary);
}

.aural-date-picker__icon {
    position: absolute;
    right: var(--space-3);
    top: 50%;
    transform: translateY(-50%);
    pointer-events: auto;
    cursor: pointer;
    color: var(--color-text-secondary);
    width: 20px;
    height: 20px;
    transition: var(--transition-all-fast);
}

.aural-date-picker__icon:hover {
    color: var(--color-primary);
}

/* ========================================
   Calendar Dropdown
   ======================================== */

.aural-date-picker__calendar {
    position: absolute;
    top: calc(100% + var(--space-2));
    left: 0;
    z-index: 1000;
    min-width: 300px;
    background: var(--color-bg-secondary);
    border: 1px solid var(--color-border-medium);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-lg);
    padding: var(--space-4);
    opacity: 0;
    visibility: hidden;
    transform: translateY(-8px);
    transition: opacity 0.2s ease, transform 0.2s ease, visibility 0.2s;
}

.aural-date-picker__calendar.aural-date-picker__calendar--open {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
}

/* ========================================
   Calendar Header
   ======================================== */

.aural-date-picker__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: var(--space-4);
    gap: var(--space-2);
}

.aural-date-picker__nav-button {
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 44px;
    min-height: 44px;
    padding: var(--space-2);
    background: transparent;
    color: var(--color-text-primary);
    border: 1px solid var(--color-border-subtle);
    border-radius: var(--radius-md);
    cursor: pointer;
    transition: var(--transition-all-fast);
}

.aural-date-picker__nav-button:hover {
    background: var(--color-bg-hover);
    border-color: var(--color-primary);
    color: var(--color-primary);
}

.aural-date-picker__nav-button:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}

.aural-date-picker__current-month {
    flex: 1;
    text-align: center;
    font-size: var(--text-base);
    font-weight: var(--font-semibold);
    color: var(--color-text-primary);
}

/* ========================================
   Calendar Grid
   ======================================== */

.aural-date-picker__weekdays {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: var(--space-1);
    margin-bottom: var(--space-2);
}

.aural-date-picker__weekday {
    text-align: center;
    font-size: var(--text-sm);
    font-weight: var(--font-semibold);
    color: var(--color-text-secondary);
    padding: var(--space-2);
}

.aural-date-picker__days {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: var(--space-1);
}

.aural-date-picker__day {
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 44px;
    min-height: 44px;
    padding: var(--space-2);
    background: transparent;
    color: var(--color-text-primary);
    border: 1px solid transparent;
    border-radius: var(--radius-md);
    font-size: var(--text-sm);
    cursor: pointer;
    transition: var(--transition-all-fast);
}

.aural-date-picker__day:hover:not(.aural-date-picker__day--disabled) {
    background: var(--color-bg-hover);
    border-color: var(--color-primary-alpha-20);
    color: var(--color-primary);
}

.aural-date-picker__day:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}

/* Day States */

.aural-date-picker__day--other-month {
    color: var(--color-text-tertiary);
    opacity: 0.5;
}

.aural-date-picker__day--today {
    border-color: var(--color-primary);
    font-weight: var(--font-semibold);
}

.aural-date-picker__day--selected {
    background: var(--color-primary);
    color: white;
    font-weight: var(--font-semibold);
}

.aural-date-picker__day--selected:hover {
    background: var(--color-primary-hover);
    color: white;
}

.aural-date-picker__day--disabled {
    color: var(--color-text-disabled);
    cursor: not-allowed;
    opacity: 0.4;
}

.aural-date-picker__day--range-start,
.aural-date-picker__day--range-end {
    background: var(--color-primary);
    color: white;
}

.aural-date-picker__day--in-range {
    background: var(--primary-alpha-20);
    color: var(--color-text-primary);
}

.aural-date-picker__day--hover-range {
    background: var(--primary-alpha-10);
    color: var(--color-text-primary);
}

/* ========================================
   Calendar Footer
   ======================================== */

.aural-date-picker__footer {
    display: flex;
    gap: var(--space-2);
    margin-top: var(--space-4);
    padding-top: var(--space-4);
    border-top: 1px solid var(--color-border-subtle);
}

.aural-date-picker__footer-button {
    flex: 1;
    min-height: 44px;
    padding: var(--space-2) var(--space-4);
    background: transparent;
    color: var(--color-text-primary);
    border: 1px solid var(--color-border-medium);
    border-radius: var(--radius-md);
    font-size: var(--text-sm);
    font-weight: var(--font-medium);
    cursor: pointer;
    transition: var(--transition-all-fast);
}

.aural-date-picker__footer-button:hover {
    background: var(--color-bg-hover);
    border-color: var(--color-primary);
    color: var(--color-primary);
}

.aural-date-picker__footer-button--primary {
    background: var(--color-primary);
    color: white;
    border-color: var(--color-primary);
}

.aural-date-picker__footer-button--primary:hover {
    background: var(--color-primary-hover);
    border-color: var(--color-primary-hover);
    color: white;
}

/* ========================================
   Size Variants
   ======================================== */

.aural-date-picker--sm .aural-date-picker__input {
    padding: var(--space-2) var(--space-3);
    padding-right: var(--space-8);
    font-size: var(--text-sm);
}

.aural-date-picker--sm .aural-date-picker__calendar {
    min-width: 260px;
}

.aural-date-picker--lg .aural-date-picker__input {
    padding: var(--space-4) var(--space-5);
    padding-right: var(--space-12);
    font-size: var(--text-lg);
}

.aural-date-picker--lg .aural-date-picker__calendar {
    min-width: 340px;
}

/* ========================================
   Accessibility
   ======================================== */

@media (prefers-reduced-motion: reduce) {
    .aural-date-picker__calendar {
        transition: none;
    }

    .aural-date-picker__day,
    .aural-date-picker__nav-button,
    .aural-date-picker__footer-button {
        transition: none;
    }
}

/* ========================================
   Responsive
   ======================================== */

@media (max-width: 640px) {
    .aural-date-picker__calendar {
        left: 50%;
        transform: translateX(-50%) translateY(-8px);
        min-width: 280px;
    }

    .aural-date-picker__calendar.aural-date-picker__calendar--open {
        transform: translateX(-50%) translateY(0);
    }

    .aural-date-picker__input {
        font-size: 16px; /* Prevents iOS zoom on focus */
    }
}

/* Touch device optimizations */

@media (pointer: coarse) {
    .aural-date-picker__day {
        min-width: 48px;
        min-height: 48px;
    }

    .aural-date-picker__nav-button {
        min-width: 48px;
        min-height: 48px;
    }

    .aural-date-picker__footer-button {
        min-height: 48px;
        padding: var(--space-3) var(--space-4);
    }

    .aural-date-picker__input {
        min-height: 48px;
        font-size: 16px;
    }
}

/**
 * AURAL UI - Calendar
 *
 * Full month view calendar component with date selection,
 * navigation, and keyboard support. Can be embedded inline.
 */

/* ========================================
   Calendar Container
   ======================================== */

.aural-calendar {
    display: inline-block;
    width: 100%;
    max-width: 400px;
    background: var(--color-bg-secondary);
    border: 1px solid var(--color-border-medium);
    border-radius: var(--radius-lg);
    padding: var(--space-4);
    box-shadow: var(--shadow-md);
}

/* Inline variant (no border/shadow) */

.aural-calendar--inline {
    background: transparent;
    border: none;
    box-shadow: none;
    padding: 0;
}

/* ========================================
   Calendar Header
   ======================================== */

.aural-calendar__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: var(--space-4);
    gap: var(--space-2);
}

.aural-calendar__nav-button {
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 44px;
    min-height: 44px;
    padding: var(--space-2);
    background: transparent;
    color: var(--color-text-primary);
    border: 1px solid var(--color-border-subtle);
    border-radius: var(--radius-md);
    cursor: pointer;
    transition: var(--transition-all-fast);
}

.aural-calendar__nav-button:hover {
    background: var(--color-bg-hover);
    border-color: var(--color-primary);
    color: var(--color-primary);
}

.aural-calendar__nav-button:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}

.aural-calendar__nav-button:disabled {
    opacity: 0.4;
    cursor: not-allowed;
    border-color: var(--color-border-subtle);
}

.aural-calendar__nav-button:disabled:hover {
    background: transparent;
    border-color: var(--color-border-subtle);
    color: var(--color-text-primary);
}

.aural-calendar__current-month {
    flex: 1;
    text-align: center;
    font-size: var(--text-lg);
    font-weight: var(--font-semibold);
    color: var(--color-text-primary);
}

/* Month/Year selectors */

.aural-calendar__month-year-selectors {
    display: flex;
    gap: var(--space-2);
    flex: 1;
    justify-content: center;
}

.aural-calendar__select {
    padding: var(--space-2) var(--space-3);
    background: var(--color-bg-primary);
    color: var(--color-text-primary);
    border: 1px solid var(--color-border-medium);
    border-radius: var(--radius-md);
    font-size: var(--text-sm);
    font-family: inherit;
    cursor: pointer;
    transition: var(--transition-all-fast);
}

.aural-calendar__select:hover {
    border-color: var(--color-primary);
    background: var(--color-bg-hover);
}

.aural-calendar__select:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}

/* ========================================
   Calendar Grid
   ======================================== */

.aural-calendar__weekdays {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: var(--space-1);
    margin-bottom: var(--space-2);
}

.aural-calendar__weekday {
    text-align: center;
    font-size: var(--text-sm);
    font-weight: var(--font-semibold);
    color: var(--color-text-secondary);
    padding: var(--space-2);
}

.aural-calendar__days {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: var(--space-1);
}

.aural-calendar__day {
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 44px;
    min-height: 44px;
    padding: var(--space-2);
    background: transparent;
    color: var(--color-text-primary);
    border: 1px solid transparent;
    border-radius: var(--radius-md);
    font-size: var(--text-sm);
    cursor: pointer;
    transition: var(--transition-all-fast);
    position: relative;
}

.aural-calendar__day:hover:not(.aural-calendar__day--disabled):not(.aural-calendar__day--other-month) {
    background: var(--color-bg-hover);
    border-color: var(--color-primary-alpha-20);
    color: var(--color-primary);
}

.aural-calendar__day:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}

/* Day States */

.aural-calendar__day--other-month {
    color: var(--color-text-tertiary);
    opacity: 0.4;
}

.aural-calendar__day--today {
    border-color: var(--color-primary);
    font-weight: var(--font-semibold);
}

.aural-calendar__day--selected {
    background: var(--color-primary);
    color: white;
    font-weight: var(--font-semibold);
}

.aural-calendar__day--selected:hover {
    background: var(--color-primary-hover);
    color: white;
}

.aural-calendar__day--disabled {
    color: var(--color-text-disabled);
    cursor: not-allowed;
    opacity: 0.3;
}

/* Weekend days */

.aural-calendar__day--weekend {
    color: var(--color-warning);
}

/* Event indicator */

.aural-calendar__day--has-event::after {
    content: '';
    position: absolute;
    bottom: 4px;
    left: 50%;
    transform: translateX(-50%);
    width: 4px;
    height: 4px;
    background: var(--color-primary);
    border-radius: 50%;
}

.aural-calendar__day--selected.aural-calendar__day--has-event::after {
    background: white;
}

/* ========================================
   Calendar Footer
   ======================================== */

.aural-calendar__footer {
    display: flex;
    gap: var(--space-2);
    margin-top: var(--space-4);
    padding-top: var(--space-4);
    border-top: 1px solid var(--color-border-subtle);
}

.aural-calendar__footer-button {
    flex: 1;
    min-height: 44px;
    padding: var(--space-2) var(--space-4);
    background: transparent;
    color: var(--color-text-primary);
    border: 1px solid var(--color-border-medium);
    border-radius: var(--radius-md);
    font-size: var(--text-sm);
    font-weight: var(--font-medium);
    cursor: pointer;
    transition: var(--transition-all-fast);
}

.aural-calendar__footer-button:hover {
    background: var(--color-bg-hover);
    border-color: var(--color-primary);
    color: var(--color-primary);
}

.aural-calendar__footer-button:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}

.aural-calendar__footer-button--primary {
    background: var(--color-primary);
    color: white;
    border-color: var(--color-primary);
}

.aural-calendar__footer-button--primary:hover {
    background: var(--color-primary-hover);
    border-color: var(--color-primary-hover);
    color: white;
}

/* ========================================
   Size Variants
   ======================================== */

.aural-calendar--sm {
    max-width: 320px;
    padding: var(--space-3);
}

.aural-calendar--sm .aural-calendar__day {
    min-width: 36px;
    min-height: 36px;
    font-size: var(--text-xs);
}

.aural-calendar--sm .aural-calendar__current-month {
    font-size: var(--text-base);
}

.aural-calendar--lg {
    max-width: 480px;
    padding: var(--space-6);
}

.aural-calendar--lg .aural-calendar__day {
    min-width: 52px;
    min-height: 52px;
    font-size: var(--text-base);
}

.aural-calendar--lg .aural-calendar__current-month {
    font-size: var(--text-xl);
}

/* ========================================
   Multi-month View
   ======================================== */

.aural-calendar--multi {
    max-width: none;
    width: 100%;
}

.aural-calendar__months-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
    gap: var(--space-6);
}

/* ========================================
   Accessibility
   ======================================== */

@media (prefers-reduced-motion: reduce) {
    .aural-calendar__day,
    .aural-calendar__nav-button,
    .aural-calendar__footer-button,
    .aural-calendar__select {
        transition: none;
    }
}

/* ========================================
   Responsive
   ======================================== */

@media (max-width: 640px) {
    .aural-calendar {
        max-width: 100%;
    }

    .aural-calendar__day {
        min-width: 40px;
        min-height: 40px;
        font-size: var(--text-xs);
    }

    .aural-calendar__current-month {
        font-size: var(--text-base);
    }

    .aural-calendar__months-grid {
        grid-template-columns: 1fr;
    }
}

/**
 * AURAL UI - Date Range Picker
 *
 * Component for selecting a date range (start and end date).
 * Displays two calendars side-by-side for easy range selection.
 */

/* ========================================
   Date Range Picker Container
   ======================================== */

.aural-date-range-picker {
    position: relative;
    display: inline-block;
    width: 100%;
    max-width: 100%;
}

.aural-date-range-picker__input-wrapper {
    position: relative;
    display: flex;
    align-items: center;
    gap: var(--space-2);
}

.aural-date-range-picker__inputs {
    flex: 1;
    display: flex;
    align-items: center;
    gap: var(--space-2);
}

.aural-date-range-picker__input {
    flex: 1;
    padding: var(--space-3) var(--space-4);
    background: var(--color-bg-secondary);
    color: var(--color-text-primary);
    border: 1px solid var(--color-border-medium);
    border-radius: var(--radius-md);
    font-size: var(--text-base);
    font-family: inherit;
    cursor: pointer;
    transition: var(--transition-all-fast);
}

.aural-date-range-picker__input:hover {
    border-color: var(--color-primary);
    background: var(--color-bg-hover);
}

.aural-date-range-picker__input:focus {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
    border-color: var(--color-primary);
}

.aural-date-range-picker__input::-moz-placeholder {
    color: var(--color-text-secondary);
}

.aural-date-range-picker__input::placeholder {
    color: var(--color-text-secondary);
}

.aural-date-range-picker__separator {
    color: var(--color-text-secondary);
    font-size: var(--text-sm);
    flex-shrink: 0;
}

.aural-date-range-picker__icon {
    position: absolute;
    right: var(--space-3);
    top: 50%;
    transform: translateY(-50%);
    pointer-events: none;
    color: var(--color-text-secondary);
    width: 20px;
    height: 20px;
}

/* ========================================
   Calendar Dropdown
   ======================================== */

.aural-date-range-picker__dropdown {
    position: absolute;
    top: calc(100% + var(--space-2));
    left: 0;
    z-index: 1000;
    background: var(--color-bg-secondary);
    border: 1px solid var(--color-border-medium);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-lg);
    padding: var(--space-4);
    opacity: 0;
    visibility: hidden;
    transform: translateY(-8px);
    transition: opacity 0.2s ease, transform 0.2s ease, visibility 0.2s;
}

.aural-date-range-picker__dropdown--open {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
}

/* ========================================
   Calendars Container
   ======================================== */

.aural-date-range-picker__calendars {
    display: flex;
    gap: var(--space-6);
}

.aural-date-range-picker__calendar {
    flex: 1;
    min-width: 300px;
}

/* Calendar header */

.aural-date-range-picker__calendar-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: var(--space-4);
    gap: var(--space-2);
}

.aural-date-range-picker__nav-button {
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 44px;
    min-height: 44px;
    padding: var(--space-2);
    background: transparent;
    color: var(--color-text-primary);
    border: 1px solid var(--color-border-subtle);
    border-radius: var(--radius-md);
    cursor: pointer;
    transition: var(--transition-all-fast);
}

.aural-date-range-picker__nav-button:hover {
    background: var(--color-bg-hover);
    border-color: var(--color-primary);
    color: var(--color-primary);
}

.aural-date-range-picker__nav-button:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}

.aural-date-range-picker__nav-button:disabled {
    opacity: 0.4;
    cursor: not-allowed;
}

.aural-date-range-picker__month-label {
    flex: 1;
    text-align: center;
    font-size: var(--text-base);
    font-weight: var(--font-semibold);
    color: var(--color-text-primary);
}

/* Calendar grid */

.aural-date-range-picker__weekdays {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: var(--space-1);
    margin-bottom: var(--space-2);
}

.aural-date-range-picker__weekday {
    text-align: center;
    font-size: var(--text-sm);
    font-weight: var(--font-semibold);
    color: var(--color-text-secondary);
    padding: var(--space-2);
}

.aural-date-range-picker__days {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: var(--space-1);
}

.aural-date-range-picker__day {
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 44px;
    min-height: 44px;
    padding: var(--space-2);
    background: transparent;
    color: var(--color-text-primary);
    border: 1px solid transparent;
    border-radius: var(--radius-md);
    font-size: var(--text-sm);
    cursor: pointer;
    transition: var(--transition-all-fast);
    position: relative;
}

.aural-date-range-picker__day:hover:not(.aural-date-range-picker__day--disabled):not(.aural-date-range-picker__day--other-month) {
    background: var(--color-bg-hover);
    border-color: var(--color-primary-alpha-20);
    color: var(--color-primary);
}

.aural-date-range-picker__day:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}

/* Day States */

.aural-date-range-picker__day--other-month {
    color: var(--color-text-tertiary);
    opacity: 0.4;
}

.aural-date-range-picker__day--today {
    border-color: var(--color-primary);
    font-weight: var(--font-semibold);
}

.aural-date-range-picker__day--disabled {
    color: var(--color-text-disabled);
    cursor: not-allowed;
    opacity: 0.3;
}

/* Range selection states */

.aural-date-range-picker__day--range-start,
.aural-date-range-picker__day--range-end {
    background: var(--color-primary);
    color: white;
    font-weight: var(--font-semibold);
}

.aural-date-range-picker__day--range-start:hover,
.aural-date-range-picker__day--range-end:hover {
    background: var(--color-primary-hover);
    color: white;
}

.aural-date-range-picker__day--in-range {
    background: var(--color-primary-alpha-20);
    color: var(--color-text-primary);
    border-radius: 0;
}

.aural-date-range-picker__day--range-start {
    border-radius: var(--radius-md) 0 0 var(--radius-md);
}

.aural-date-range-picker__day--range-end {
    border-radius: 0 var(--radius-md) var(--radius-md) 0;
}

.aural-date-range-picker__day--range-start.aural-date-range-picker__day--range-end {
    border-radius: var(--radius-md);
}

/* ========================================
   Footer
   ======================================== */

.aural-date-range-picker__footer {
    display: flex;
    gap: var(--space-2);
    margin-top: var(--space-4);
    padding-top: var(--space-4);
    border-top: 1px solid var(--color-border-subtle);
}

.aural-date-range-picker__footer-button {
    flex: 1;
    min-height: 44px;
    padding: var(--space-2) var(--space-4);
    background: transparent;
    color: var(--color-text-primary);
    border: 1px solid var(--color-border-medium);
    border-radius: var(--radius-md);
    font-size: var(--text-sm);
    font-weight: var(--font-medium);
    cursor: pointer;
    transition: var(--transition-all-fast);
}

.aural-date-range-picker__footer-button:hover {
    background: var(--color-bg-hover);
    border-color: var(--color-primary);
    color: var(--color-primary);
}

.aural-date-range-picker__footer-button:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}

.aural-date-range-picker__footer-button--primary {
    background: var(--color-primary);
    color: white;
    border-color: var(--color-primary);
}

.aural-date-range-picker__footer-button--primary:hover {
    background: var(--color-primary-hover);
    border-color: var(--color-primary-hover);
    color: white;
}

/* ========================================
   Preset Ranges
   ======================================== */

.aural-date-range-picker__presets {
    min-width: 160px;
    padding-right: var(--space-4);
    border-right: 1px solid var(--color-border-subtle);
}

.aural-date-range-picker__preset-label {
    font-size: var(--text-sm);
    font-weight: var(--font-semibold);
    color: var(--color-text-secondary);
    margin-bottom: var(--space-3);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.aural-date-range-picker__preset-list {
    display: flex;
    flex-direction: column;
    gap: var(--space-1);
}

.aural-date-range-picker__preset-button {
    display: block;
    width: 100%;
    text-align: left;
    padding: var(--space-2) var(--space-3);
    background: transparent;
    color: var(--color-text-primary);
    border: 1px solid transparent;
    border-radius: var(--radius-md);
    font-size: var(--text-sm);
    cursor: pointer;
    transition: var(--transition-all-fast);
}

.aural-date-range-picker__preset-button:hover {
    background: var(--color-bg-hover);
    border-color: var(--color-primary-alpha-20);
    color: var(--color-primary);
}

.aural-date-range-picker__preset-button--active {
    background: var(--color-primary-alpha-20);
    border-color: var(--color-primary);
    color: var(--color-primary);
}

/* ========================================
   Responsive
   ======================================== */

@media (max-width: 768px) {
    .aural-date-range-picker__calendars {
        flex-direction: column;
    }

    .aural-date-range-picker__dropdown {
        left: 50%;
        transform: translateX(-50%) translateY(-8px);
        max-width: calc(100vw - var(--space-8));
    }

    .aural-date-range-picker__dropdown--open {
        transform: translateX(-50%) translateY(0);
    }

    .aural-date-range-picker__calendar {
        min-width: 280px;
    }
}

/* ========================================
   Accessibility
   ======================================== */

@media (prefers-reduced-motion: reduce) {
    .aural-date-range-picker__dropdown,
    .aural-date-range-picker__day,
    .aural-date-range-picker__nav-button,
    .aural-date-range-picker__footer-button,
    .aural-date-range-picker__preset-button {
        transition: none;
    }
}

/* Utilities */

/**
 * AURAL UI - Typography Utilities
 *
 * Utility classes for typography
 */

/* Font Families */

.font-sans {
    font-family: var(--font-sans);
}

.font-serif {
    font-family: var(--font-serif);
}

.font-mono {
    font-family: var(--font-mono);
}

/* Font Sizes */

.text-xs { font-size: var(--text-xs); }

.text-sm { font-size: var(--text-sm); }

.text-base { font-size: var(--text-base); }

.text-lg { font-size: var(--text-lg); }

.text-xl { font-size: var(--text-xl); }

.text-2xl { font-size: var(--text-2xl); }

.text-3xl { font-size: var(--text-3xl); }

.text-4xl { font-size: var(--text-4xl); }

.text-5xl { font-size: var(--text-5xl); }

.text-6xl { font-size: var(--text-6xl); }

.text-7xl { font-size: var(--text-7xl); }

.text-8xl { font-size: var(--text-8xl); }

.text-9xl { font-size: var(--text-9xl); }

/* Font Weights */

.font-thin { font-weight: var(--font-thin); }

.font-extralight { font-weight: var(--font-extralight); }

.font-light { font-weight: var(--font-light); }

.font-normal { font-weight: var(--font-normal); }

.font-medium { font-weight: var(--font-medium); }

.font-semibold { font-weight: var(--font-semibold); }

.font-bold { font-weight: var(--font-bold); }

.font-extrabold { font-weight: var(--font-extrabold); }

.font-black { font-weight: var(--font-black); }

/* Line Heights */

.leading-none { line-height: var(--leading-none); }

.leading-tight { line-height: var(--leading-tight); }

.leading-snug { line-height: var(--leading-snug); }

.leading-normal { line-height: var(--leading-normal); }

.leading-relaxed { line-height: var(--leading-relaxed); }

.leading-loose { line-height: var(--leading-loose); }

/* Letter Spacing */

.tracking-tighter { letter-spacing: var(--tracking-tighter); }

.tracking-tight { letter-spacing: var(--tracking-tight); }

.tracking-normal { letter-spacing: var(--tracking-normal); }

.tracking-wide { letter-spacing: var(--tracking-wide); }

.tracking-wider { letter-spacing: var(--tracking-wider); }

.tracking-widest { letter-spacing: var(--tracking-widest); }

/* Text Alignment */

.text-left { text-align: left; }

.text-center { text-align: center; }

.text-right { text-align: right; }

.text-justify { text-align: justify; }

/* Text Transform */

.uppercase { text-transform: uppercase; }

.lowercase { text-transform: lowercase; }

.capitalize { text-transform: capitalize; }

.normal-case { text-transform: none; }

/* Text Decoration */

.underline { text-decoration: underline; }

.line-through { text-decoration: line-through; }

.no-underline { text-decoration: none; }

/* Text Colors */

.text-primary { color: var(--color-text-primary); }

.text-secondary { color: var(--color-text-secondary); }

.text-muted { color: var(--color-text-muted); }

/* Truncate */

.truncate {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Line Clamp */

.line-clamp-2 {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.line-clamp-3 {
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

/**
 * AURAL UI - Grid System
 *
 * Mobile-first responsive grid system with best UX practices
 *
 * Breakpoints:
 * - sm: 640px (mobile landscape)
 * - md: 768px (tablet)
 * - lg: 1024px (desktop)
 * - xl: 1280px (large desktop)
 */

/* ========================================
   CONTAINER
   ======================================== */

.container {
    width: 100%;
    margin-left: auto;
    margin-right: auto;
    padding-left: var(--space-4);
    padding-right: var(--space-4);
}

@media (min-width: 640px) {
    .container {
        max-width: 640px;
    }
}

@media (min-width: 768px) {
    .container {
        max-width: 768px;
        padding-left: var(--space-6);
        padding-right: var(--space-6);
    }
}

@media (min-width: 1024px) {
    .container {
        max-width: 1024px;
    }
}

@media (min-width: 1280px) {
    .container {
        max-width: 1280px;
    }
}

/* Full width container */

.container-fluid {
    width: 100%;
    padding-left: var(--space-4);
    padding-right: var(--space-4);
}

@media (min-width: 768px) {
    .container-fluid {
        padding-left: var(--space-6);
        padding-right: var(--space-6);
    }
}

/* ========================================
   GRID
   ======================================== */

.grid {
    display: grid;
    gap: var(--space-4);
}

/* Grid columns (1-12) */

.grid-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); }

.grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }

.grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }

.grid-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }

.grid-cols-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }

.grid-cols-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }

.grid-cols-7 { grid-template-columns: repeat(7, minmax(0, 1fr)); }

.grid-cols-8 { grid-template-columns: repeat(8, minmax(0, 1fr)); }

.grid-cols-9 { grid-template-columns: repeat(9, minmax(0, 1fr)); }

.grid-cols-10 { grid-template-columns: repeat(10, minmax(0, 1fr)); }

.grid-cols-11 { grid-template-columns: repeat(11, minmax(0, 1fr)); }

.grid-cols-12 { grid-template-columns: repeat(12, minmax(0, 1fr)); }

/* Auto-fit grid (responsive without media queries) */

.grid-auto-fit {
    grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
}

.grid-auto-fit-sm {
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
}

.grid-auto-fit-lg {
    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
}

/* Column span */

.col-span-1 { grid-column: span 1 / span 1; }

.col-span-2 { grid-column: span 2 / span 2; }

.col-span-3 { grid-column: span 3 / span 3; }

.col-span-4 { grid-column: span 4 / span 4; }

.col-span-5 { grid-column: span 5 / span 5; }

.col-span-6 { grid-column: span 6 / span 6; }

.col-span-7 { grid-column: span 7 / span 7; }

.col-span-8 { grid-column: span 8 / span 8; }

.col-span-9 { grid-column: span 9 / span 9; }

.col-span-10 { grid-column: span 10 / span 10; }

.col-span-11 { grid-column: span 11 / span 11; }

.col-span-12 { grid-column: span 12 / span 12; }

.col-span-full { grid-column: 1 / -1; }

/* Row span */

.row-span-1 { grid-row: span 1 / span 1; }

.row-span-2 { grid-row: span 2 / span 2; }

.row-span-3 { grid-row: span 3 / span 3; }

.row-span-4 { grid-row: span 4 / span 4; }

.row-span-5 { grid-row: span 5 / span 5; }

.row-span-6 { grid-row: span 6 / span 6; }

/* Gap utilities */

.gap-0 { gap: 0; }

.gap-1 { gap: var(--space-1); }

.gap-2 { gap: var(--space-2); }

.gap-3 { gap: var(--space-3); }

.gap-4 { gap: var(--space-4); }

.gap-6 { gap: var(--space-6); }

.gap-8 { gap: var(--space-8); }

.gap-12 { gap: var(--space-12); }

/* ========================================
   RESPONSIVE GRID (Mobile-first)
   ======================================== */

/* Small devices (640px and up) */

@media (min-width: 640px) {
    .sm\:grid-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); }
    .sm\:grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .sm\:grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .sm\:grid-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
    .sm\:grid-cols-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
    .sm\:grid-cols-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }
    .sm\:grid-cols-12 { grid-template-columns: repeat(12, minmax(0, 1fr)); }

    .sm\:col-span-1 { grid-column: span 1 / span 1; }
    .sm\:col-span-2 { grid-column: span 2 / span 2; }
    .sm\:col-span-3 { grid-column: span 3 / span 3; }
    .sm\:col-span-4 { grid-column: span 4 / span 4; }
    .sm\:col-span-5 { grid-column: span 5 / span 5; }
    .sm\:col-span-6 { grid-column: span 6 / span 6; }
    .sm\:col-span-12 { grid-column: span 12 / span 12; }
    .sm\:col-span-full { grid-column: 1 / -1; }

    .sm\:gap-4 { gap: var(--space-4); }
    .sm\:gap-6 { gap: var(--space-6); }
}

/* Medium devices (768px and up) */

@media (min-width: 768px) {
    .md\:grid-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); }
    .md\:grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .md\:grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .md\:grid-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
    .md\:grid-cols-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
    .md\:grid-cols-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }
    .md\:grid-cols-12 { grid-template-columns: repeat(12, minmax(0, 1fr)); }

    .md\:col-span-1 { grid-column: span 1 / span 1; }
    .md\:col-span-2 { grid-column: span 2 / span 2; }
    .md\:col-span-3 { grid-column: span 3 / span 3; }
    .md\:col-span-4 { grid-column: span 4 / span 4; }
    .md\:col-span-5 { grid-column: span 5 / span 5; }
    .md\:col-span-6 { grid-column: span 6 / span 6; }
    .md\:col-span-8 { grid-column: span 8 / span 8; }
    .md\:col-span-12 { grid-column: span 12 / span 12; }
    .md\:col-span-full { grid-column: 1 / -1; }

    .md\:gap-6 { gap: var(--space-6); }
    .md\:gap-8 { gap: var(--space-8); }
}

/* Large devices (1024px and up) */

@media (min-width: 1024px) {
    .lg\:grid-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); }
    .lg\:grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .lg\:grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .lg\:grid-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
    .lg\:grid-cols-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
    .lg\:grid-cols-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }
    .lg\:grid-cols-12 { grid-template-columns: repeat(12, minmax(0, 1fr)); }

    .lg\:col-span-1 { grid-column: span 1 / span 1; }
    .lg\:col-span-2 { grid-column: span 2 / span 2; }
    .lg\:col-span-3 { grid-column: span 3 / span 3; }
    .lg\:col-span-4 { grid-column: span 4 / span 4; }
    .lg\:col-span-5 { grid-column: span 5 / span 5; }
    .lg\:col-span-6 { grid-column: span 6 / span 6; }
    .lg\:col-span-8 { grid-column: span 8 / span 8; }
    .lg\:col-span-9 { grid-column: span 9 / span 9; }
    .lg\:col-span-12 { grid-column: span 12 / span 12; }
    .lg\:col-span-full { grid-column: 1 / -1; }

    .lg\:gap-8 { gap: var(--space-8); }
}

/* Extra large devices (1280px and up) */

@media (min-width: 1280px) {
    .xl\:grid-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); }
    .xl\:grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .xl\:grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .xl\:grid-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
    .xl\:grid-cols-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
    .xl\:grid-cols-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }
    .xl\:grid-cols-12 { grid-template-columns: repeat(12, minmax(0, 1fr)); }

    .xl\:col-span-1 { grid-column: span 1 / span 1; }
    .xl\:col-span-2 { grid-column: span 2 / span 2; }
    .xl\:col-span-3 { grid-column: span 3 / span 3; }
    .xl\:col-span-4 { grid-column: span 4 / span 4; }
    .xl\:col-span-6 { grid-column: span 6 / span 6; }
    .xl\:col-span-8 { grid-column: span 8 / span 8; }
    .xl\:col-span-12 { grid-column: span 12 / span 12; }
    .xl\:col-span-full { grid-column: 1 / -1; }
}

/* ========================================
   COMMON PATTERNS
   ======================================== */

/* Sidebar layout (sidebar + main content) */

.grid-sidebar {
    display: grid;
    gap: var(--space-6);
    grid-template-columns: 1fr;
}

@media (min-width: 1024px) {
    .grid-sidebar {
        grid-template-columns: 280px 1fr;
    }
}

/* Two column layout */

.grid-2-col {
    display: grid;
    gap: var(--space-6);
    grid-template-columns: 1fr;
}

@media (min-width: 768px) {
    .grid-2-col {
        grid-template-columns: repeat(2, 1fr);
    }
}

/* Three column layout */

.grid-3-col {
    display: grid;
    gap: var(--space-6);
    grid-template-columns: 1fr;
}

@media (min-width: 768px) {
    .grid-3-col {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (min-width: 1024px) {
    .grid-3-col {
        grid-template-columns: repeat(3, 1fr);
    }
}

/* Four column layout */

.grid-4-col {
    display: grid;
    gap: var(--space-6);
    grid-template-columns: 1fr;
}

@media (min-width: 640px) {
    .grid-4-col {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (min-width: 1024px) {
    .grid-4-col {
        grid-template-columns: repeat(4, 1fr);
    }
}

/* Card grid (auto-responsive) */

.grid-cards {
    display: grid;
    gap: var(--space-6);
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
}

/**
 * AURAL UI - Shadow Utilities
 *
 * Comprehensive shadow utility classes for elevation and depth
 */

/* ========================================
   Base Shadow Utilities
   ======================================== */

.shadow-none {
    box-shadow: var(--shadow-none);
}

.shadow-xs {
    box-shadow: var(--shadow-xs);
}

.shadow-sm {
    box-shadow: var(--shadow-sm);
}

.shadow {
    box-shadow: var(--shadow);
}

.shadow-md {
    box-shadow: var(--shadow-md);
}

.shadow-lg {
    box-shadow: var(--shadow-lg);
}

.shadow-xl {
    box-shadow: var(--shadow-xl);
}

.shadow-2xl {
    box-shadow: var(--shadow-2xl);
}

.shadow-inner {
    box-shadow: var(--shadow-inner);
}

/* ========================================
   Colored Shadow Utilities
   ======================================== */

.shadow-primary {
    box-shadow: var(--shadow-primary);
}

.shadow-primary-lg {
    box-shadow: var(--shadow-primary-lg);
}

.shadow-secondary {
    box-shadow: var(--shadow-secondary);
}

.shadow-success {
    box-shadow: var(--shadow-success);
}

.shadow-warning {
    box-shadow: var(--shadow-warning);
}

.shadow-error {
    box-shadow: var(--shadow-error);
}

/* ========================================
   Directional Shadow Utilities
   ======================================== */

.shadow-top {
    box-shadow: var(--shadow-top);
}

.shadow-bottom {
    box-shadow: var(--shadow-bottom);
}

.shadow-left {
    box-shadow: var(--shadow-left);
}

.shadow-right {
    box-shadow: var(--shadow-right);
}

/* ========================================
   Hover Variants
   ======================================== */

.hover\:shadow-none:hover {
    box-shadow: var(--shadow-none);
}

.hover\:shadow-xs:hover {
    box-shadow: var(--shadow-xs);
}

.hover\:shadow-sm:hover {
    box-shadow: var(--shadow-sm);
}

.hover\:shadow:hover {
    box-shadow: var(--shadow);
}

.hover\:shadow-md:hover {
    box-shadow: var(--shadow-md);
}

.hover\:shadow-lg:hover {
    box-shadow: var(--shadow-lg);
}

.hover\:shadow-xl:hover {
    box-shadow: var(--shadow-xl);
}

.hover\:shadow-2xl:hover {
    box-shadow: var(--shadow-2xl);
}

.hover\:shadow-primary:hover {
    box-shadow: var(--shadow-primary);
}

.hover\:shadow-secondary:hover {
    box-shadow: var(--shadow-secondary);
}

/* ========================================
   Responsive Variants - Small (sm)
   ======================================== */

@media (min-width: 640px) {
    .sm\:shadow-none {
        box-shadow: var(--shadow-none);
    }

    .sm\:shadow-xs {
        box-shadow: var(--shadow-xs);
    }

    .sm\:shadow-sm {
        box-shadow: var(--shadow-sm);
    }

    .sm\:shadow {
        box-shadow: var(--shadow);
    }

    .sm\:shadow-md {
        box-shadow: var(--shadow-md);
    }

    .sm\:shadow-lg {
        box-shadow: var(--shadow-lg);
    }

    .sm\:shadow-xl {
        box-shadow: var(--shadow-xl);
    }

    .sm\:shadow-2xl {
        box-shadow: var(--shadow-2xl);
    }
}

/* ========================================
   Responsive Variants - Medium (md)
   ======================================== */

@media (min-width: 768px) {
    .md\:shadow-none {
        box-shadow: var(--shadow-none);
    }

    .md\:shadow-xs {
        box-shadow: var(--shadow-xs);
    }

    .md\:shadow-sm {
        box-shadow: var(--shadow-sm);
    }

    .md\:shadow {
        box-shadow: var(--shadow);
    }

    .md\:shadow-md {
        box-shadow: var(--shadow-md);
    }

    .md\:shadow-lg {
        box-shadow: var(--shadow-lg);
    }

    .md\:shadow-xl {
        box-shadow: var(--shadow-xl);
    }

    .md\:shadow-2xl {
        box-shadow: var(--shadow-2xl);
    }
}

/* ========================================
   Responsive Variants - Large (lg)
   ======================================== */

@media (min-width: 1024px) {
    .lg\:shadow-none {
        box-shadow: var(--shadow-none);
    }

    .lg\:shadow-xs {
        box-shadow: var(--shadow-xs);
    }

    .lg\:shadow-sm {
        box-shadow: var(--shadow-sm);
    }

    .lg\:shadow {
        box-shadow: var(--shadow);
    }

    .lg\:shadow-md {
        box-shadow: var(--shadow-md);
    }

    .lg\:shadow-lg {
        box-shadow: var(--shadow-lg);
    }

    .lg\:shadow-xl {
        box-shadow: var(--shadow-xl);
    }

    .lg\:shadow-2xl {
        box-shadow: var(--shadow-2xl);
    }
}

/* ========================================
   Responsive Variants - Extra Large (xl)
   ======================================== */

@media (min-width: 1280px) {
    .xl\:shadow-none {
        box-shadow: var(--shadow-none);
    }

    .xl\:shadow-xs {
        box-shadow: var(--shadow-xs);
    }

    .xl\:shadow-sm {
        box-shadow: var(--shadow-sm);
    }

    .xl\:shadow {
        box-shadow: var(--shadow);
    }

    .xl\:shadow-md {
        box-shadow: var(--shadow-md);
    }

    .xl\:shadow-lg {
        box-shadow: var(--shadow-lg);
    }

    .xl\:shadow-xl {
        box-shadow: var(--shadow-xl);
    }

    .xl\:shadow-2xl {
        box-shadow: var(--shadow-2xl);
    }
}

/* ========================================
   Transition for smooth shadow changes
   ======================================== */

.shadow-transition {
    transition: box-shadow 0.2s ease-in-out;
}

/**
 * AURAL UI - Glow Utilities
 *
 * Comprehensive glow effect utility classes with animations
 */

/* ========================================
   Base Glow Utilities
   ======================================== */

.glow-sm {
    box-shadow: var(--glow-sm);
}

.glow-md {
    box-shadow: var(--glow-md);
}

.glow-lg {
    box-shadow: var(--glow-lg);
}

.glow-xl {
    box-shadow: var(--glow-xl);
}

.glow-2xl {
    box-shadow: var(--glow-2xl);
}

/* ========================================
   Colored Glow Utilities - Primary
   ======================================== */

.glow-primary-sm {
    box-shadow: var(--glow-primary-sm);
}

.glow-primary-md {
    box-shadow: var(--glow-primary-md);
}

.glow-primary-lg {
    box-shadow: var(--glow-primary-lg);
}

.glow-primary-xl {
    box-shadow: var(--glow-primary-xl);
}

/* ========================================
   Colored Glow Utilities - Secondary
   ======================================== */

.glow-secondary-sm {
    box-shadow: var(--glow-secondary-sm);
}

.glow-secondary-md {
    box-shadow: var(--glow-secondary-md);
}

.glow-secondary-lg {
    box-shadow: var(--glow-secondary-lg);
}

.glow-secondary-xl {
    box-shadow: var(--glow-secondary-xl);
}

/* ========================================
   Colored Glow Utilities - Success
   ======================================== */

.glow-success-sm {
    box-shadow: var(--glow-success-sm);
}

.glow-success-md {
    box-shadow: var(--glow-success-md);
}

.glow-success-lg {
    box-shadow: var(--glow-success-lg);
}

.glow-success-xl {
    box-shadow: var(--glow-success-xl);
}

/* ========================================
   Colored Glow Utilities - Error
   ======================================== */

.glow-error-sm {
    box-shadow: var(--glow-error-sm);
}

.glow-error-md {
    box-shadow: var(--glow-error-md);
}

.glow-error-lg {
    box-shadow: var(--glow-error-lg);
}

.glow-error-xl {
    box-shadow: var(--glow-error-xl);
}

/* ========================================
   Colored Glow Utilities - Warning
   ======================================== */

.glow-warning-sm {
    box-shadow: var(--glow-warning-sm);
}

.glow-warning-md {
    box-shadow: var(--glow-warning-md);
}

.glow-warning-lg {
    box-shadow: var(--glow-warning-lg);
}

.glow-warning-xl {
    box-shadow: var(--glow-warning-xl);
}

/* ========================================
   Colored Glow Utilities - Info
   ======================================== */

.glow-info-sm {
    box-shadow: var(--glow-info-sm);
}

.glow-info-md {
    box-shadow: var(--glow-info-md);
}

.glow-info-lg {
    box-shadow: var(--glow-info-lg);
}

.glow-info-xl {
    box-shadow: var(--glow-info-xl);
}

/* ========================================
   Inner Glow Utilities
   ======================================== */

.glow-inner-sm {
    box-shadow: var(--glow-inner-sm);
}

.glow-inner-md {
    box-shadow: var(--glow-inner-md);
}

.glow-inner-lg {
    box-shadow: var(--glow-inner-lg);
}

/* ========================================
   Neon Glow Effects
   ======================================== */

.glow-neon-primary {
    box-shadow: var(--glow-neon-primary);
}

.glow-neon-secondary {
    box-shadow: var(--glow-neon-secondary);
}

.glow-neon-error {
    box-shadow: var(--glow-neon-error);
}

/* ========================================
   Depth Glow Effects
   ======================================== */

.glow-depth-sm {
    box-shadow: var(--glow-depth-sm);
}

.glow-depth-md {
    box-shadow: var(--glow-depth-md);
}

.glow-depth-lg {
    box-shadow: var(--glow-depth-lg);
}

/* ========================================
   Glow Animations
   ======================================== */

@keyframes glow-pulse {
    0%, 100% {
        opacity: 1;
    }
    50% {
        opacity: 0.5;
    }
}

@keyframes glow-breathing {
    0%, 100% {
        filter: brightness(1);
    }
    50% {
        filter: brightness(1.3);
    }
}

@keyframes glow-flicker {
    0%, 100% {
        opacity: 1;
    }
    50% {
        opacity: 0.9;
    }
}

/* Animated Glow Classes */

.glow-pulse {
    animation: glow-pulse 2s ease-in-out infinite;
}

.glow-breathing {
    animation: glow-breathing 3s ease-in-out infinite;
}

.glow-primary-breathing {
    box-shadow: var(--glow-primary-lg);
    animation: glow-breathing 3s ease-in-out infinite;
}

.glow-secondary-breathing {
    box-shadow: var(--glow-secondary-lg);
    animation: glow-breathing 3s ease-in-out infinite;
}

.glow-success-breathing {
    box-shadow: var(--glow-success-lg);
    animation: glow-breathing 3s ease-in-out infinite;
}

.glow-error-breathing {
    box-shadow: var(--glow-error-lg);
    animation: glow-breathing 3s ease-in-out infinite;
}

.glow-flicker {
    animation: glow-flicker 0.15s ease-in-out infinite;
}

/* Respect prefers-reduced-motion */

@media (prefers-reduced-motion: reduce) {
    .glow-pulse,
    .glow-breathing,
    .glow-primary-breathing,
    .glow-secondary-breathing,
    .glow-success-breathing,
    .glow-error-breathing,
    .glow-flicker {
        animation: none;
    }
}

/* ========================================
   Hover Variants
   ======================================== */

.hover\:glow-sm:hover {
    box-shadow: var(--glow-sm);
}

.hover\:glow-md:hover {
    box-shadow: var(--glow-md);
}

.hover\:glow-lg:hover {
    box-shadow: var(--glow-lg);
}

.hover\:glow-xl:hover {
    box-shadow: var(--glow-xl);
}

.hover\:glow-2xl:hover {
    box-shadow: var(--glow-2xl);
}

.hover\:glow-primary-md:hover {
    box-shadow: var(--glow-primary-md);
}

.hover\:glow-secondary-md:hover {
    box-shadow: var(--glow-secondary-md);
}

.hover\:glow-success-md:hover {
    box-shadow: var(--glow-success-md);
}

.hover\:glow-error-md:hover {
    box-shadow: var(--glow-error-md);
}

.hover\:glow-neon-primary:hover {
    box-shadow: var(--glow-neon-primary);
}

/* ========================================
   Responsive Variants - Small (sm)
   ======================================== */

@media (min-width: 640px) {
    .sm\:glow-sm {
        box-shadow: var(--glow-sm);
    }

    .sm\:glow-md {
        box-shadow: var(--glow-md);
    }

    .sm\:glow-lg {
        box-shadow: var(--glow-lg);
    }

    .sm\:glow-xl {
        box-shadow: var(--glow-xl);
    }

    .sm\:glow-2xl {
        box-shadow: var(--glow-2xl);
    }

    .sm\:glow-primary-md {
        box-shadow: var(--glow-primary-md);
    }

    .sm\:glow-neon-primary {
        box-shadow: var(--glow-neon-primary);
    }
}

/* ========================================
   Responsive Variants - Medium (md)
   ======================================== */

@media (min-width: 768px) {
    .md\:glow-sm {
        box-shadow: var(--glow-sm);
    }

    .md\:glow-md {
        box-shadow: var(--glow-md);
    }

    .md\:glow-lg {
        box-shadow: var(--glow-lg);
    }

    .md\:glow-xl {
        box-shadow: var(--glow-xl);
    }

    .md\:glow-2xl {
        box-shadow: var(--glow-2xl);
    }

    .md\:glow-primary-md {
        box-shadow: var(--glow-primary-md);
    }

    .md\:glow-neon-primary {
        box-shadow: var(--glow-neon-primary);
    }
}

/* ========================================
   Responsive Variants - Large (lg)
   ======================================== */

@media (min-width: 1024px) {
    .lg\:glow-sm {
        box-shadow: var(--glow-sm);
    }

    .lg\:glow-md {
        box-shadow: var(--glow-md);
    }

    .lg\:glow-lg {
        box-shadow: var(--glow-lg);
    }

    .lg\:glow-xl {
        box-shadow: var(--glow-xl);
    }

    .lg\:glow-2xl {
        box-shadow: var(--glow-2xl);
    }

    .lg\:glow-primary-md {
        box-shadow: var(--glow-primary-md);
    }

    .lg\:glow-neon-primary {
        box-shadow: var(--glow-neon-primary);
    }
}

/* ========================================
   Responsive Variants - Extra Large (xl)
   ======================================== */

@media (min-width: 1280px) {
    .xl\:glow-sm {
        box-shadow: var(--glow-sm);
    }

    .xl\:glow-md {
        box-shadow: var(--glow-md);
    }

    .xl\:glow-lg {
        box-shadow: var(--glow-lg);
    }

    .xl\:glow-xl {
        box-shadow: var(--glow-xl);
    }

    .xl\:glow-2xl {
        box-shadow: var(--glow-2xl);
    }

    .xl\:glow-primary-md {
        box-shadow: var(--glow-primary-md);
    }

    .xl\:glow-neon-primary {
        box-shadow: var(--glow-neon-primary);
    }
}

/* ========================================
   Transition for smooth glow changes
   ======================================== */

.glow-transition {
    transition: box-shadow 0.3s ease-in-out;
}

/**
 * AURAL UI - Spacing Utilities
 *
 * Margin and padding utilities following Tailwind-like conventions
 * Based on the 4px spacing scale from design tokens
 */

/* ========================================
   Margin Utilities
   ======================================== */

/* All sides */

.m-0 { margin: var(--space-0); }

.m-1 { margin: var(--space-1); }

.m-2 { margin: var(--space-2); }

.m-3 { margin: var(--space-3); }

.m-4 { margin: var(--space-4); }

.m-5 { margin: var(--space-5); }

.m-6 { margin: var(--space-6); }

.m-8 { margin: var(--space-8); }

.m-10 { margin: var(--space-10); }

.m-12 { margin: var(--space-12); }

.m-16 { margin: var(--space-16); }

.m-20 { margin: var(--space-20); }

.m-24 { margin: var(--space-24); }

/* Margin auto */

.m-auto { margin: auto; }

/* Margin top */

.mt-0 { margin-top: var(--space-0); }

.mt-1 { margin-top: var(--space-1); }

.mt-2 { margin-top: var(--space-2); }

.mt-3 { margin-top: var(--space-3); }

.mt-4 { margin-top: var(--space-4); }

.mt-5 { margin-top: var(--space-5); }

.mt-6 { margin-top: var(--space-6); }

.mt-8 { margin-top: var(--space-8); }

.mt-10 { margin-top: var(--space-10); }

.mt-12 { margin-top: var(--space-12); }

.mt-16 { margin-top: var(--space-16); }

.mt-20 { margin-top: var(--space-20); }

.mt-24 { margin-top: var(--space-24); }

/* Margin right */

.mr-0 { margin-right: var(--space-0); }

.mr-1 { margin-right: var(--space-1); }

.mr-2 { margin-right: var(--space-2); }

.mr-3 { margin-right: var(--space-3); }

.mr-4 { margin-right: var(--space-4); }

.mr-5 { margin-right: var(--space-5); }

.mr-6 { margin-right: var(--space-6); }

.mr-8 { margin-right: var(--space-8); }

.mr-10 { margin-right: var(--space-10); }

.mr-12 { margin-right: var(--space-12); }

/* Margin right auto */

.mr-auto { margin-right: auto; }

/* Margin bottom */

.mb-0 { margin-bottom: var(--space-0); }

.mb-1 { margin-bottom: var(--space-1); }

.mb-2 { margin-bottom: var(--space-2); }

.mb-3 { margin-bottom: var(--space-3); }

.mb-4 { margin-bottom: var(--space-4); }

.mb-5 { margin-bottom: var(--space-5); }

.mb-6 { margin-bottom: var(--space-6); }

.mb-8 { margin-bottom: var(--space-8); }

.mb-10 { margin-bottom: var(--space-10); }

.mb-12 { margin-bottom: var(--space-12); }

.mb-16 { margin-bottom: var(--space-16); }

.mb-20 { margin-bottom: var(--space-20); }

.mb-24 { margin-bottom: var(--space-24); }

/* Margin left */

.ml-0 { margin-left: var(--space-0); }

.ml-1 { margin-left: var(--space-1); }

.ml-2 { margin-left: var(--space-2); }

.ml-3 { margin-left: var(--space-3); }

.ml-4 { margin-left: var(--space-4); }

.ml-5 { margin-left: var(--space-5); }

.ml-6 { margin-left: var(--space-6); }

.ml-8 { margin-left: var(--space-8); }

.ml-10 { margin-left: var(--space-10); }

.ml-12 { margin-left: var(--space-12); }

/* Margin left auto */

.ml-auto { margin-left: auto; }

/* Margin horizontal (left + right) */

.mx-0 { margin-left: var(--space-0); margin-right: var(--space-0); }

.mx-1 { margin-left: var(--space-1); margin-right: var(--space-1); }

.mx-2 { margin-left: var(--space-2); margin-right: var(--space-2); }

.mx-3 { margin-left: var(--space-3); margin-right: var(--space-3); }

.mx-4 { margin-left: var(--space-4); margin-right: var(--space-4); }

.mx-5 { margin-left: var(--space-5); margin-right: var(--space-5); }

.mx-6 { margin-left: var(--space-6); margin-right: var(--space-6); }

.mx-8 { margin-left: var(--space-8); margin-right: var(--space-8); }

.mx-10 { margin-left: var(--space-10); margin-right: var(--space-10); }

.mx-12 { margin-left: var(--space-12); margin-right: var(--space-12); }

/* Margin horizontal auto (center element) */

.mx-auto { margin-left: auto; margin-right: auto; }

/* Margin vertical (top + bottom) */

.my-0 { margin-top: var(--space-0); margin-bottom: var(--space-0); }

.my-1 { margin-top: var(--space-1); margin-bottom: var(--space-1); }

.my-2 { margin-top: var(--space-2); margin-bottom: var(--space-2); }

.my-3 { margin-top: var(--space-3); margin-bottom: var(--space-3); }

.my-4 { margin-top: var(--space-4); margin-bottom: var(--space-4); }

.my-5 { margin-top: var(--space-5); margin-bottom: var(--space-5); }

.my-6 { margin-top: var(--space-6); margin-bottom: var(--space-6); }

.my-8 { margin-top: var(--space-8); margin-bottom: var(--space-8); }

.my-10 { margin-top: var(--space-10); margin-bottom: var(--space-10); }

.my-12 { margin-top: var(--space-12); margin-bottom: var(--space-12); }

.my-16 { margin-top: var(--space-16); margin-bottom: var(--space-16); }

.my-20 { margin-top: var(--space-20); margin-bottom: var(--space-20); }

.my-24 { margin-top: var(--space-24); margin-bottom: var(--space-24); }

/* ========================================
   Padding Utilities
   ======================================== */

/* All sides */

.p-0 { padding: var(--space-0); }

.p-1 { padding: var(--space-1); }

.p-2 { padding: var(--space-2); }

.p-3 { padding: var(--space-3); }

.p-4 { padding: var(--space-4); }

.p-5 { padding: var(--space-5); }

.p-6 { padding: var(--space-6); }

.p-8 { padding: var(--space-8); }

.p-10 { padding: var(--space-10); }

.p-12 { padding: var(--space-12); }

.p-16 { padding: var(--space-16); }

.p-20 { padding: var(--space-20); }

.p-24 { padding: var(--space-24); }

/* Padding top */

.pt-0 { padding-top: var(--space-0); }

.pt-1 { padding-top: var(--space-1); }

.pt-2 { padding-top: var(--space-2); }

.pt-3 { padding-top: var(--space-3); }

.pt-4 { padding-top: var(--space-4); }

.pt-5 { padding-top: var(--space-5); }

.pt-6 { padding-top: var(--space-6); }

.pt-8 { padding-top: var(--space-8); }

.pt-10 { padding-top: var(--space-10); }

.pt-12 { padding-top: var(--space-12); }

.pt-16 { padding-top: var(--space-16); }

.pt-20 { padding-top: var(--space-20); }

.pt-24 { padding-top: var(--space-24); }

/* Padding right */

.pr-0 { padding-right: var(--space-0); }

.pr-1 { padding-right: var(--space-1); }

.pr-2 { padding-right: var(--space-2); }

.pr-3 { padding-right: var(--space-3); }

.pr-4 { padding-right: var(--space-4); }

.pr-5 { padding-right: var(--space-5); }

.pr-6 { padding-right: var(--space-6); }

.pr-8 { padding-right: var(--space-8); }

.pr-10 { padding-right: var(--space-10); }

.pr-12 { padding-right: var(--space-12); }

/* Padding bottom */

.pb-0 { padding-bottom: var(--space-0); }

.pb-1 { padding-bottom: var(--space-1); }

.pb-2 { padding-bottom: var(--space-2); }

.pb-3 { padding-bottom: var(--space-3); }

.pb-4 { padding-bottom: var(--space-4); }

.pb-5 { padding-bottom: var(--space-5); }

.pb-6 { padding-bottom: var(--space-6); }

.pb-8 { padding-bottom: var(--space-8); }

.pb-10 { padding-bottom: var(--space-10); }

.pb-12 { padding-bottom: var(--space-12); }

.pb-16 { padding-bottom: var(--space-16); }

.pb-20 { padding-bottom: var(--space-20); }

.pb-24 { padding-bottom: var(--space-24); }

/* Padding left */

.pl-0 { padding-left: var(--space-0); }

.pl-1 { padding-left: var(--space-1); }

.pl-2 { padding-left: var(--space-2); }

.pl-3 { padding-left: var(--space-3); }

.pl-4 { padding-left: var(--space-4); }

.pl-5 { padding-left: var(--space-5); }

.pl-6 { padding-left: var(--space-6); }

.pl-8 { padding-left: var(--space-8); }

.pl-10 { padding-left: var(--space-10); }

.pl-12 { padding-left: var(--space-12); }

/* Padding horizontal (left + right) */

.px-0 { padding-left: var(--space-0); padding-right: var(--space-0); }

.px-1 { padding-left: var(--space-1); padding-right: var(--space-1); }

.px-2 { padding-left: var(--space-2); padding-right: var(--space-2); }

.px-3 { padding-left: var(--space-3); padding-right: var(--space-3); }

.px-4 { padding-left: var(--space-4); padding-right: var(--space-4); }

.px-5 { padding-left: var(--space-5); padding-right: var(--space-5); }

.px-6 { padding-left: var(--space-6); padding-right: var(--space-6); }

.px-8 { padding-left: var(--space-8); padding-right: var(--space-8); }

.px-10 { padding-left: var(--space-10); padding-right: var(--space-10); }

.px-12 { padding-left: var(--space-12); padding-right: var(--space-12); }

/* Padding vertical (top + bottom) */

.py-0 { padding-top: var(--space-0); padding-bottom: var(--space-0); }

.py-1 { padding-top: var(--space-1); padding-bottom: var(--space-1); }

.py-2 { padding-top: var(--space-2); padding-bottom: var(--space-2); }

.py-3 { padding-top: var(--space-3); padding-bottom: var(--space-3); }

.py-4 { padding-top: var(--space-4); padding-bottom: var(--space-4); }

.py-5 { padding-top: var(--space-5); padding-bottom: var(--space-5); }

.py-6 { padding-top: var(--space-6); padding-bottom: var(--space-6); }

.py-8 { padding-top: var(--space-8); padding-bottom: var(--space-8); }

.py-10 { padding-top: var(--space-10); padding-bottom: var(--space-10); }

.py-12 { padding-top: var(--space-12); padding-bottom: var(--space-12); }

.py-16 { padding-top: var(--space-16); padding-bottom: var(--space-16); }

.py-20 { padding-top: var(--space-20); padding-bottom: var(--space-20); }

.py-24 { padding-top: var(--space-24); padding-bottom: var(--space-24); }

/* ========================================
   Negative Margins (for advanced layouts)
   ======================================== */

.-m-1 { margin: calc(var(--space-1) * -1); }

.-m-2 { margin: calc(var(--space-2) * -1); }

.-m-3 { margin: calc(var(--space-3) * -1); }

.-m-4 { margin: calc(var(--space-4) * -1); }

.-m-6 { margin: calc(var(--space-6) * -1); }

.-m-8 { margin: calc(var(--space-8) * -1); }

.-mt-1 { margin-top: calc(var(--space-1) * -1); }

.-mt-2 { margin-top: calc(var(--space-2) * -1); }

.-mt-3 { margin-top: calc(var(--space-3) * -1); }

.-mt-4 { margin-top: calc(var(--space-4) * -1); }

.-mt-6 { margin-top: calc(var(--space-6) * -1); }

.-mt-8 { margin-top: calc(var(--space-8) * -1); }

.-mr-1 { margin-right: calc(var(--space-1) * -1); }

.-mr-2 { margin-right: calc(var(--space-2) * -1); }

.-mr-3 { margin-right: calc(var(--space-3) * -1); }

.-mr-4 { margin-right: calc(var(--space-4) * -1); }

.-mb-1 { margin-bottom: calc(var(--space-1) * -1); }

.-mb-2 { margin-bottom: calc(var(--space-2) * -1); }

.-mb-3 { margin-bottom: calc(var(--space-3) * -1); }

.-mb-4 { margin-bottom: calc(var(--space-4) * -1); }

.-mb-6 { margin-bottom: calc(var(--space-6) * -1); }

.-mb-8 { margin-bottom: calc(var(--space-8) * -1); }

.-ml-1 { margin-left: calc(var(--space-1) * -1); }

.-ml-2 { margin-left: calc(var(--space-2) * -1); }

.-ml-3 { margin-left: calc(var(--space-3) * -1); }

.-ml-4 { margin-left: calc(var(--space-4) * -1); }

/* ========================================
   Responsive Spacing Utilities
   ======================================== */

@media (min-width: 640px) {
    .sm\:m-0 { margin: var(--space-0); }
    .sm\:m-2 { margin: var(--space-2); }
    .sm\:m-4 { margin: var(--space-4); }
    .sm\:m-6 { margin: var(--space-6); }
    .sm\:m-8 { margin: var(--space-8); }

    .sm\:p-0 { padding: var(--space-0); }
    .sm\:p-2 { padding: var(--space-2); }
    .sm\:p-4 { padding: var(--space-4); }
    .sm\:p-6 { padding: var(--space-6); }
    .sm\:p-8 { padding: var(--space-8); }

    .sm\:mx-auto { margin-left: auto; margin-right: auto; }
}

@media (min-width: 768px) {
    .md\:m-0 { margin: var(--space-0); }
    .md\:m-2 { margin: var(--space-2); }
    .md\:m-4 { margin: var(--space-4); }
    .md\:m-6 { margin: var(--space-6); }
    .md\:m-8 { margin: var(--space-8); }

    .md\:p-0 { padding: var(--space-0); }
    .md\:p-2 { padding: var(--space-2); }
    .md\:p-4 { padding: var(--space-4); }
    .md\:p-6 { padding: var(--space-6); }
    .md\:p-8 { padding: var(--space-8); }

    .md\:mx-auto { margin-left: auto; margin-right: auto; }
}

@media (min-width: 1024px) {
    .lg\:m-0 { margin: var(--space-0); }
    .lg\:m-2 { margin: var(--space-2); }
    .lg\:m-4 { margin: var(--space-4); }
    .lg\:m-6 { margin: var(--space-6); }
    .lg\:m-8 { margin: var(--space-8); }
    .lg\:m-12 { margin: var(--space-12); }

    .lg\:p-0 { padding: var(--space-0); }
    .lg\:p-2 { padding: var(--space-2); }
    .lg\:p-4 { padding: var(--space-4); }
    .lg\:p-6 { padding: var(--space-6); }
    .lg\:p-8 { padding: var(--space-8); }
    .lg\:p-12 { padding: var(--space-12); }
}

@media (min-width: 1280px) {
    .xl\:m-0 { margin: var(--space-0); }
    .xl\:m-4 { margin: var(--space-4); }
    .xl\:m-8 { margin: var(--space-8); }
    .xl\:m-12 { margin: var(--space-12); }
    .xl\:m-16 { margin: var(--space-16); }

    .xl\:p-0 { padding: var(--space-0); }
    .xl\:p-4 { padding: var(--space-4); }
    .xl\:p-8 { padding: var(--space-8); }
    .xl\:p-12 { padding: var(--space-12); }
    .xl\:p-16 { padding: var(--space-16); }
}

/**
 * AURAL UI - Display Utilities
 *
 * Display, flexbox, grid, and visibility utilities
 */

/* ========================================
   Display Properties
   ======================================== */

.hidden { display: none; }

.block { display: block; }

.inline-block { display: inline-block; }

.inline { display: inline; }

.flex { display: flex; }

.inline-flex { display: inline-flex; }

.grid { display: grid; }

.inline-grid { display: inline-grid; }

/* ========================================
   Flexbox Direction
   ======================================== */

.flex-row { flex-direction: row; }

.flex-row-reverse { flex-direction: row-reverse; }

.flex-col { flex-direction: column; }

.flex-col-reverse { flex-direction: column-reverse; }

/* ========================================
   Flexbox Wrap
   ======================================== */

.flex-wrap { flex-wrap: wrap; }

.flex-wrap-reverse { flex-wrap: wrap-reverse; }

.flex-nowrap { flex-wrap: nowrap; }

/* ========================================
   Flexbox Justify Content
   ======================================== */

.justify-start { justify-content: flex-start; }

.justify-end { justify-content: flex-end; }

.justify-center { justify-content: center; }

.justify-between { justify-content: space-between; }

.justify-around { justify-content: space-around; }

.justify-evenly { justify-content: space-evenly; }

/* ========================================
   Flexbox Align Items
   ======================================== */

.items-start { align-items: flex-start; }

.items-end { align-items: flex-end; }

.items-center { align-items: center; }

.items-baseline { align-items: baseline; }

.items-stretch { align-items: stretch; }

/* ========================================
   Flexbox Align Self
   ======================================== */

.self-auto { align-self: auto; }

.self-start { align-self: flex-start; }

.self-end { align-self: flex-end; }

.self-center { align-self: center; }

.self-stretch { align-self: stretch; }

.self-baseline { align-self: baseline; }

/* ========================================
   Flexbox Align Content
   ======================================== */

.content-start { align-content: flex-start; }

.content-end { align-content: flex-end; }

.content-center { align-content: center; }

.content-between { align-content: space-between; }

.content-around { align-content: space-around; }

.content-evenly { align-content: space-evenly; }

/* ========================================
   Flexbox Flex
   ======================================== */

.flex-1 { flex: 1 1 0%; }

.flex-auto { flex: 1 1 auto; }

.flex-initial { flex: 0 1 auto; }

.flex-none { flex: none; }

/* ========================================
   Flexbox Grow & Shrink
   ======================================== */

.flex-grow { flex-grow: 1; }

.flex-grow-0 { flex-grow: 0; }

.flex-shrink { flex-shrink: 1; }

.flex-shrink-0 { flex-shrink: 0; }

/* ========================================
   Gap (for flexbox and grid)
   ======================================== */

.gap-0 { gap: var(--space-0); }

.gap-1 { gap: var(--space-1); }

.gap-2 { gap: var(--space-2); }

.gap-3 { gap: var(--space-3); }

.gap-4 { gap: var(--space-4); }

.gap-5 { gap: var(--space-5); }

.gap-6 { gap: var(--space-6); }

.gap-8 { gap: var(--space-8); }

.gap-10 { gap: var(--space-10); }

.gap-12 { gap: var(--space-12); }

/* Gap X (column gap) */

.gap-x-0 { -moz-column-gap: var(--space-0); column-gap: var(--space-0); }

.gap-x-1 { -moz-column-gap: var(--space-1); column-gap: var(--space-1); }

.gap-x-2 { -moz-column-gap: var(--space-2); column-gap: var(--space-2); }

.gap-x-3 { -moz-column-gap: var(--space-3); column-gap: var(--space-3); }

.gap-x-4 { -moz-column-gap: var(--space-4); column-gap: var(--space-4); }

.gap-x-6 { -moz-column-gap: var(--space-6); column-gap: var(--space-6); }

.gap-x-8 { -moz-column-gap: var(--space-8); column-gap: var(--space-8); }

/* Gap Y (row gap) */

.gap-y-0 { row-gap: var(--space-0); }

.gap-y-1 { row-gap: var(--space-1); }

.gap-y-2 { row-gap: var(--space-2); }

.gap-y-3 { row-gap: var(--space-3); }

.gap-y-4 { row-gap: var(--space-4); }

.gap-y-6 { row-gap: var(--space-6); }

.gap-y-8 { row-gap: var(--space-8); }

/* ========================================
   Grid Template Columns
   ======================================== */

.grid-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); }

.grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }

.grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }

.grid-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }

.grid-cols-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }

.grid-cols-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }

.grid-cols-12 { grid-template-columns: repeat(12, minmax(0, 1fr)); }

/* Grid auto-fit and auto-fill */

.grid-cols-auto-fit { grid-template-columns: repeat(auto-fit, minmax(0, 1fr)); }

.grid-cols-auto-fill { grid-template-columns: repeat(auto-fill, minmax(0, 1fr)); }

/* ========================================
   Grid Template Rows
   ======================================== */

.grid-rows-1 { grid-template-rows: repeat(1, minmax(0, 1fr)); }

.grid-rows-2 { grid-template-rows: repeat(2, minmax(0, 1fr)); }

.grid-rows-3 { grid-template-rows: repeat(3, minmax(0, 1fr)); }

.grid-rows-4 { grid-template-rows: repeat(4, minmax(0, 1fr)); }

.grid-rows-5 { grid-template-rows: repeat(5, minmax(0, 1fr)); }

.grid-rows-6 { grid-template-rows: repeat(6, minmax(0, 1fr)); }

/* ========================================
   Grid Column Span
   ======================================== */

.col-span-1 { grid-column: span 1 / span 1; }

.col-span-2 { grid-column: span 2 / span 2; }

.col-span-3 { grid-column: span 3 / span 3; }

.col-span-4 { grid-column: span 4 / span 4; }

.col-span-5 { grid-column: span 5 / span 5; }

.col-span-6 { grid-column: span 6 / span 6; }

.col-span-12 { grid-column: span 12 / span 12; }

.col-span-full { grid-column: 1 / -1; }

/* ========================================
   Grid Row Span
   ======================================== */

.row-span-1 { grid-row: span 1 / span 1; }

.row-span-2 { grid-row: span 2 / span 2; }

.row-span-3 { grid-row: span 3 / span 3; }

.row-span-4 { grid-row: span 4 / span 4; }

.row-span-full { grid-row: 1 / -1; }

/* ========================================
   Position
   ======================================== */

.static { position: static; }

.fixed { position: fixed; }

.absolute { position: absolute; }

.relative { position: relative; }

.sticky { position: sticky; }

/* ========================================
   Positioning (Top, Right, Bottom, Left)
   ======================================== */

.inset-0 { top: 0; right: 0; bottom: 0; left: 0; }

.inset-auto { top: auto; right: auto; bottom: auto; left: auto; }

.top-0 { top: 0; }

.right-0 { right: 0; }

.bottom-0 { bottom: 0; }

.left-0 { left: 0; }

.top-auto { top: auto; }

.right-auto { right: auto; }

.bottom-auto { bottom: auto; }

.left-auto { left: auto; }

/* ========================================
   Z-Index
   ======================================== */

.z-0 { z-index: 0; }

.z-10 { z-index: 10; }

.z-20 { z-index: 20; }

.z-30 { z-index: 30; }

.z-40 { z-index: 40; }

.z-50 { z-index: 50; }

.z-auto { z-index: auto; }

/* ========================================
   Overflow
   ======================================== */

.overflow-auto { overflow: auto; }

.overflow-hidden { overflow: hidden; }

.overflow-visible { overflow: visible; }

.overflow-scroll { overflow: scroll; }

.overflow-x-auto { overflow-x: auto; }

.overflow-x-hidden { overflow-x: hidden; }

.overflow-x-visible { overflow-x: visible; }

.overflow-x-scroll { overflow-x: scroll; }

.overflow-y-auto { overflow-y: auto; }

.overflow-y-hidden { overflow-y: hidden; }

.overflow-y-visible { overflow-y: visible; }

.overflow-y-scroll { overflow-y: scroll; }

/* ========================================
   Visibility
   ======================================== */

.visible { visibility: visible; }

.invisible { visibility: hidden; }

/* ========================================
   Responsive Display Utilities
   ======================================== */

@media (min-width: 640px) {
    .sm\:hidden { display: none; }
    .sm\:block { display: block; }
    .sm\:flex { display: flex; }
    .sm\:grid { display: grid; }

    .sm\:flex-row { flex-direction: row; }
    .sm\:flex-col { flex-direction: column; }

    .sm\:grid-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); }
    .sm\:grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .sm\:grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .sm\:grid-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

@media (min-width: 768px) {
    .md\:hidden { display: none; }
    .md\:block { display: block; }
    .md\:flex { display: flex; }
    .md\:grid { display: grid; }

    .md\:flex-row { flex-direction: row; }
    .md\:flex-col { flex-direction: column; }

    .md\:grid-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); }
    .md\:grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .md\:grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .md\:grid-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
    .md\:grid-cols-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }
}

@media (min-width: 1024px) {
    .lg\:hidden { display: none; }
    .lg\:block { display: block; }
    .lg\:flex { display: flex; }
    .lg\:grid { display: grid; }

    .lg\:flex-row { flex-direction: row; }
    .lg\:flex-col { flex-direction: column; }

    .lg\:grid-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); }
    .lg\:grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .lg\:grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .lg\:grid-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
    .lg\:grid-cols-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
    .lg\:grid-cols-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }
    .lg\:grid-cols-12 { grid-template-columns: repeat(12, minmax(0, 1fr)); }
}

@media (min-width: 1280px) {
    .xl\:hidden { display: none; }
    .xl\:block { display: block; }
    .xl\:flex { display: flex; }
    .xl\:grid { display: grid; }

    .xl\:flex-row { flex-direction: row; }
    .xl\:flex-col { flex-direction: column; }

    .xl\:grid-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); }
    .xl\:grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .xl\:grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .xl\:grid-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
    .xl\:grid-cols-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
    .xl\:grid-cols-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }
    .xl\:grid-cols-12 { grid-template-columns: repeat(12, minmax(0, 1fr)); }
}

/* ========================================
   Width & Height Utilities
   ======================================== */

.w-auto { width: auto; }

.w-full { width: 100%; }

.w-screen { width: 100vw; }

.w-min { width: -moz-min-content; width: min-content; }

.w-max { width: -moz-max-content; width: max-content; }

.w-fit { width: -moz-fit-content; width: fit-content; }

.h-auto { height: auto; }

.h-full { height: 100%; }

.h-screen { height: 100vh; height: 100dvh; }

.h-min { height: -moz-min-content; height: min-content; }

.h-max { height: -moz-max-content; height: max-content; }

.h-fit { height: -moz-fit-content; height: fit-content; }

/* Fixed width sizes */

.w-0 { width: 0; }

.w-px { width: 1px; }

.w-1 { width: var(--space-1); }

.w-2 { width: var(--space-2); }

.w-4 { width: var(--space-4); }

.w-8 { width: var(--space-8); }

.w-12 { width: var(--space-12); }

.w-16 { width: var(--space-16); }

.w-20 { width: var(--space-20); }

.w-24 { width: var(--space-24); }

/* Fixed height sizes */

.h-0 { height: 0; }

.h-px { height: 1px; }

.h-1 { height: var(--space-1); }

.h-2 { height: var(--space-2); }

.h-4 { height: var(--space-4); }

.h-8 { height: var(--space-8); }

.h-12 { height: var(--space-12); }

.h-16 { height: var(--space-16); }

.h-20 { height: var(--space-20); }

.h-24 { height: var(--space-24); }

/* Max width */

.max-w-xs { max-width: 20rem; }

.max-w-sm { max-width: 24rem; }

.max-w-md { max-width: 28rem; }

.max-w-lg { max-width: 32rem; }

.max-w-xl { max-width: 36rem; }

.max-w-2xl { max-width: 42rem; }

.max-w-3xl { max-width: 48rem; }

.max-w-4xl { max-width: 56rem; }

.max-w-5xl { max-width: 64rem; }

.max-w-6xl { max-width: 72rem; }

.max-w-7xl { max-width: 80rem; }

.max-w-full { max-width: 100%; }

.max-w-screen { max-width: 100vw; }

/* Max height */

.max-h-full { max-height: 100%; }

.max-h-screen { max-height: 100vh; max-height: 100dvh; }

/**
 * AURAL UI - Color Utilities
 *
 * Text, background, and border color utilities
 */

/* ========================================
   Text Colors
   ======================================== */

/* Primary colors */

.text-primary { color: var(--color-primary); }

.text-secondary { color: var(--color-secondary); }

/* Semantic colors */

.text-success { color: var(--color-success); }

.text-warning { color: var(--color-warning); }

.text-error { color: var(--color-error); }

.text-danger { color: var(--color-error); }

.text-info { color: var(--color-info); }

/* Neutral text colors */

.text-muted { color: var(--color-text-muted); }

.text-tertiary { color: var(--color-text-tertiary); }

.text-disabled { color: var(--color-text-disabled); }

/* White and black */

.text-white { color: #ffffff; }

.text-black { color: #000000; }

/* ========================================
   Background Colors
   ======================================== */

/* Primary backgrounds */

.bg-primary { background-color: var(--color-primary); }

.bg-primary-hover { background-color: var(--color-primary-hover); }

.bg-primary-alpha { background-color: var(--color-primary-alpha); }

.bg-secondary { background-color: var(--color-secondary); }

.bg-secondary-hover { background-color: var(--color-secondary-hover); }

/* Semantic backgrounds */

.bg-success { background-color: var(--color-success); }

.bg-success-alpha { background-color: var(--color-success-alpha); }

.bg-warning { background-color: var(--color-warning); }

.bg-warning-alpha { background-color: var(--color-warning-alpha); }

.bg-error { background-color: var(--color-error); }

.bg-error-alpha { background-color: var(--color-error-alpha); }

.bg-danger { background-color: var(--color-error); }

.bg-danger-alpha { background-color: var(--color-error-alpha); }

.bg-info { background-color: var(--color-info); }

.bg-info-alpha { background-color: var(--color-info-alpha); }

/* Neutral backgrounds */

.bg-transparent { background-color: transparent; }

.bg-white { background-color: #ffffff; }

.bg-black { background-color: #000000; }

/* ========================================
   Border Colors
   ======================================== */

/* Primary borders */

.border-primary { border-color: var(--color-primary); }

.border-secondary { border-color: var(--color-secondary); }

/* Semantic borders */

.border-success { border-color: var(--color-success); }

.border-warning { border-color: var(--color-warning); }

.border-error { border-color: var(--color-error); }

.border-danger { border-color: var(--color-error); }

.border-info { border-color: var(--color-info); }

/* Neutral borders */

.border-subtle { border-color: var(--color-border-subtle); }

.border-medium { border-color: var(--color-border-medium); }

.border-strong { border-color: var(--color-border-strong); }

.border-white { border-color: #ffffff; }

.border-black { border-color: #000000; }

.border-transparent { border-color: transparent; }

/**
 * AURAL UI - Border Utilities
 *
 * Border width, radius, and style utilities
 */

/* ========================================
   Border Width
   ======================================== */

/* All sides */

.border { border-width: 1px; border-style: solid; }

.border-0 { border-width: 0; }

.border-2 { border-width: 2px; border-style: solid; }

.border-4 { border-width: 4px; border-style: solid; }

.border-8 { border-width: 8px; border-style: solid; }

/* Individual sides */

.border-t { border-top-width: 1px; border-top-style: solid; }

.border-t-0 { border-top-width: 0; }

.border-t-2 { border-top-width: 2px; border-top-style: solid; }

.border-t-4 { border-top-width: 4px; border-top-style: solid; }

.border-r { border-right-width: 1px; border-right-style: solid; }

.border-r-0 { border-right-width: 0; }

.border-r-2 { border-right-width: 2px; border-right-style: solid; }

.border-r-4 { border-right-width: 4px; border-right-style: solid; }

.border-b { border-bottom-width: 1px; border-bottom-style: solid; }

.border-b-0 { border-bottom-width: 0; }

.border-b-2 { border-bottom-width: 2px; border-bottom-style: solid; }

.border-b-4 { border-bottom-width: 4px; border-bottom-style: solid; }

.border-l { border-left-width: 1px; border-left-style: solid; }

.border-l-0 { border-left-width: 0; }

.border-l-2 { border-left-width: 2px; border-left-style: solid; }

.border-l-4 { border-left-width: 4px; border-left-style: solid; }

/* Horizontal and vertical */

.border-x { border-left-width: 1px; border-right-width: 1px; border-left-style: solid; border-right-style: solid; }

.border-y { border-top-width: 1px; border-bottom-width: 1px; border-top-style: solid; border-bottom-style: solid; }

/* ========================================
   Border Radius
   ======================================== */

/* All corners */

.rounded-none { border-radius: var(--radius-none); }

.rounded-sm { border-radius: var(--radius-sm); }

.rounded { border-radius: var(--radius); }

.rounded-md { border-radius: var(--radius-md); }

.rounded-lg { border-radius: var(--radius-lg); }

.rounded-xl { border-radius: var(--radius-xl); }

.rounded-2xl { border-radius: var(--radius-2xl); }

.rounded-3xl { border-radius: var(--radius-3xl); }

.rounded-full { border-radius: var(--radius-full); }

/* Individual corners */

.rounded-t-none { border-top-left-radius: var(--radius-none); border-top-right-radius: var(--radius-none); }

.rounded-t-sm { border-top-left-radius: var(--radius-sm); border-top-right-radius: var(--radius-sm); }

.rounded-t { border-top-left-radius: var(--radius); border-top-right-radius: var(--radius); }

.rounded-t-md { border-top-left-radius: var(--radius-md); border-top-right-radius: var(--radius-md); }

.rounded-t-lg { border-top-left-radius: var(--radius-lg); border-top-right-radius: var(--radius-lg); }

.rounded-t-xl { border-top-left-radius: var(--radius-xl); border-top-right-radius: var(--radius-xl); }

.rounded-t-full { border-top-left-radius: var(--radius-full); border-top-right-radius: var(--radius-full); }

.rounded-r-none { border-top-right-radius: var(--radius-none); border-bottom-right-radius: var(--radius-none); }

.rounded-r-sm { border-top-right-radius: var(--radius-sm); border-bottom-right-radius: var(--radius-sm); }

.rounded-r { border-top-right-radius: var(--radius); border-bottom-right-radius: var(--radius); }

.rounded-r-md { border-top-right-radius: var(--radius-md); border-bottom-right-radius: var(--radius-md); }

.rounded-r-lg { border-top-right-radius: var(--radius-lg); border-bottom-right-radius: var(--radius-lg); }

.rounded-r-xl { border-top-right-radius: var(--radius-xl); border-bottom-right-radius: var(--radius-xl); }

.rounded-r-full { border-top-right-radius: var(--radius-full); border-bottom-right-radius: var(--radius-full); }

.rounded-b-none { border-bottom-left-radius: var(--radius-none); border-bottom-right-radius: var(--radius-none); }

.rounded-b-sm { border-bottom-left-radius: var(--radius-sm); border-bottom-right-radius: var(--radius-sm); }

.rounded-b { border-bottom-left-radius: var(--radius); border-bottom-right-radius: var(--radius); }

.rounded-b-md { border-bottom-left-radius: var(--radius-md); border-bottom-right-radius: var(--radius-md); }

.rounded-b-lg { border-bottom-left-radius: var(--radius-lg); border-bottom-right-radius: var(--radius-lg); }

.rounded-b-xl { border-bottom-left-radius: var(--radius-xl); border-bottom-right-radius: var(--radius-xl); }

.rounded-b-full { border-bottom-left-radius: var(--radius-full); border-bottom-right-radius: var(--radius-full); }

.rounded-l-none { border-top-left-radius: var(--radius-none); border-bottom-left-radius: var(--radius-none); }

.rounded-l-sm { border-top-left-radius: var(--radius-sm); border-bottom-left-radius: var(--radius-sm); }

.rounded-l { border-top-left-radius: var(--radius); border-bottom-left-radius: var(--radius); }

.rounded-l-md { border-top-left-radius: var(--radius-md); border-bottom-left-radius: var(--radius-md); }

.rounded-l-lg { border-top-left-radius: var(--radius-lg); border-bottom-left-radius: var(--radius-lg); }

.rounded-l-xl { border-top-left-radius: var(--radius-xl); border-bottom-left-radius: var(--radius-xl); }

.rounded-l-full { border-top-left-radius: var(--radius-full); border-bottom-left-radius: var(--radius-full); }

/* Specific corners */

.rounded-tl-none { border-top-left-radius: var(--radius-none); }

.rounded-tl-sm { border-top-left-radius: var(--radius-sm); }

.rounded-tl { border-top-left-radius: var(--radius); }

.rounded-tl-md { border-top-left-radius: var(--radius-md); }

.rounded-tl-lg { border-top-left-radius: var(--radius-lg); }

.rounded-tl-full { border-top-left-radius: var(--radius-full); }

.rounded-tr-none { border-top-right-radius: var(--radius-none); }

.rounded-tr-sm { border-top-right-radius: var(--radius-sm); }

.rounded-tr { border-top-right-radius: var(--radius); }

.rounded-tr-md { border-top-right-radius: var(--radius-md); }

.rounded-tr-lg { border-top-right-radius: var(--radius-lg); }

.rounded-tr-full { border-top-right-radius: var(--radius-full); }

.rounded-br-none { border-bottom-right-radius: var(--radius-none); }

.rounded-br-sm { border-bottom-right-radius: var(--radius-sm); }

.rounded-br { border-bottom-right-radius: var(--radius); }

.rounded-br-md { border-bottom-right-radius: var(--radius-md); }

.rounded-br-lg { border-bottom-right-radius: var(--radius-lg); }

.rounded-br-full { border-bottom-right-radius: var(--radius-full); }

.rounded-bl-none { border-bottom-left-radius: var(--radius-none); }

.rounded-bl-sm { border-bottom-left-radius: var(--radius-sm); }

.rounded-bl { border-bottom-left-radius: var(--radius); }

.rounded-bl-md { border-bottom-left-radius: var(--radius-md); }

.rounded-bl-lg { border-bottom-left-radius: var(--radius-lg); }

.rounded-bl-full { border-bottom-left-radius: var(--radius-full); }

/* ========================================
   Border Style
   ======================================== */

.border-solid { border-style: solid; }

.border-dashed { border-style: dashed; }

.border-dotted { border-style: dotted; }

.border-double { border-style: double; }

.border-none { border-style: none; }

/**
 * AURAL UI - Animation Presets Library
 *
 * Pre-built animation classes for common UI patterns
 * All animations respect prefers-reduced-motion
 */

/* ========================================
   Base Animation Settings
   ======================================== */

@keyframes fadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
}

@keyframes fadeOut {
    from { opacity: 1; }
    to { opacity: 0; }
}

@keyframes slideInUp {
    from {
        opacity: 0;
        transform: translateY(30px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes slideInDown {
    from {
        opacity: 0;
        transform: translateY(-30px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes slideInLeft {
    from {
        opacity: 0;
        transform: translateX(-30px);
    }
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

@keyframes slideInRight {
    from {
        opacity: 0;
        transform: translateX(30px);
    }
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

@keyframes slideOutUp {
    from {
        opacity: 1;
        transform: translateY(0);
    }
    to {
        opacity: 0;
        transform: translateY(-30px);
    }
}

@keyframes slideOutDown {
    from {
        opacity: 1;
        transform: translateY(0);
    }
    to {
        opacity: 0;
        transform: translateY(30px);
    }
}

@keyframes zoomIn {
    from {
        opacity: 0;
        transform: scale(0.9);
    }
    to {
        opacity: 1;
        transform: scale(1);
    }
}

@keyframes zoomOut {
    from {
        opacity: 1;
        transform: scale(1);
    }
    to {
        opacity: 0;
        transform: scale(0.9);
    }
}

@keyframes bounceIn {
    0% {
        opacity: 0;
        transform: scale(0.3);
    }
    50% {
        opacity: 1;
        transform: scale(1.05);
    }
    70% {
        transform: scale(0.9);
    }
    100% {
        transform: scale(1);
    }
}

@keyframes pulse {
    0%, 100% {
        opacity: 1;
    }
    50% {
        opacity: 0.5;
    }
}

@keyframes shake {
    0%, 100% {
        transform: translateX(0);
    }
    10%, 30%, 50%, 70%, 90% {
        transform: translateX(-10px);
    }
    20%, 40%, 60%, 80% {
        transform: translateX(10px);
    }
}

@keyframes wobble {
    0%, 100% {
        transform: translateX(0);
    }
    15% {
        transform: translateX(-25px) rotate(-5deg);
    }
    30% {
        transform: translateX(20px) rotate(3deg);
    }
    45% {
        transform: translateX(-15px) rotate(-3deg);
    }
    60% {
        transform: translateX(10px) rotate(2deg);
    }
    75% {
        transform: translateX(-5px) rotate(-1deg);
    }
}

@keyframes bounce {
    0%, 20%, 50%, 80%, 100% {
        transform: translateY(0);
    }
    40% {
        transform: translateY(-30px);
    }
    60% {
        transform: translateY(-15px);
    }
}

@keyframes heartbeat {
    0%, 100% {
        transform: scale(1);
    }
    10%, 30% {
        transform: scale(0.9);
    }
    20%, 40%, 60%, 80% {
        transform: scale(1.1);
    }
    50%, 70% {
        transform: scale(1.05);
    }
}

@keyframes spin {
    from {
        transform: rotate(0deg);
    }
    to {
        transform: rotate(360deg);
    }
}

@keyframes ping {
    75%, 100% {
        transform: scale(2);
        opacity: 0;
    }
}

/* ========================================
   Entrance Animations
   ======================================== */

.animate-fade-in {
    animation: fadeIn 0.3s ease-out;
}

.animate-slide-in-up {
    animation: slideInUp 0.4s ease-out;
}

.animate-slide-in-down {
    animation: slideInDown 0.4s ease-out;
}

.animate-slide-in-left {
    animation: slideInLeft 0.4s ease-out;
}

.animate-slide-in-right {
    animation: slideInRight 0.4s ease-out;
}

.animate-zoom-in {
    animation: zoomIn 0.3s ease-out;
}

.animate-bounce-in {
    animation: bounceIn 0.6s ease-out;
}

/* ========================================
   Exit Animations
   ======================================== */

.animate-fade-out {
    animation: fadeOut 0.3s ease-in;
}

.animate-slide-out-up {
    animation: slideOutUp 0.4s ease-in;
}

.animate-slide-out-down {
    animation: slideOutDown 0.4s ease-in;
}

.animate-zoom-out {
    animation: zoomOut 0.3s ease-in;
}

/* ========================================
   Attention Seekers
   ======================================== */

.animate-pulse {
    animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}

.animate-shake {
    animation: shake 0.82s cubic-bezier(0.36, 0.07, 0.19, 0.97);
}

.animate-wobble {
    animation: wobble 1s ease-in-out;
}

.animate-bounce {
    animation: bounce 1s infinite;
}

.animate-heartbeat {
    animation: heartbeat 1.5s ease-in-out infinite;
}

.animate-spin {
    animation: spin 1s linear infinite;
}

.animate-ping {
    animation: ping 1s cubic-bezier(0, 0, 0.2, 1) infinite;
}

/* ========================================
   Animation Modifiers
   ======================================== */

/* Duration */

.animate-fast {
    animation-duration: 200ms !important;
}

.animate-slow {
    animation-duration: 800ms !important;
}

.animate-slower {
    animation-duration: 1200ms !important;
}

/* Delay */

.animate-delay-1 {
    animation-delay: 100ms;
}

.animate-delay-2 {
    animation-delay: 200ms;
}

.animate-delay-3 {
    animation-delay: 300ms;
}

.animate-delay-4 {
    animation-delay: 400ms;
}

.animate-delay-5 {
    animation-delay: 500ms;
}

/* Repeat */

.animate-repeat {
    animation-iteration-count: 2;
}

.animate-infinite {
    animation-iteration-count: infinite;
}

/* Fill Mode */

.animate-fill-forwards {
    animation-fill-mode: forwards;
}

.animate-fill-backwards {
    animation-fill-mode: backwards;
}

.animate-fill-both {
    animation-fill-mode: both;
}

/* ========================================
   Transition Utilities
   ======================================== */

.transition-none {
    transition: none;
}

.transition-all {
    transition: all 0.15s ease-in-out;
}

.transition-colors {
    transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, color 0.15s ease-in-out;
}

.transition-opacity {
    transition: opacity 0.15s ease-in-out;
}

.transition-transform {
    transition: transform 0.15s ease-in-out;
}

/* Duration */

.duration-75 {
    transition-duration: 75ms;
}

.duration-100 {
    transition-duration: 100ms;
}

.duration-150 {
    transition-duration: 150ms;
}

.duration-200 {
    transition-duration: 200ms;
}

.duration-300 {
    transition-duration: 300ms;
}

.duration-500 {
    transition-duration: 500ms;
}

.duration-700 {
    transition-duration: 700ms;
}

.duration-1000 {
    transition-duration: 1000ms;
}

/* Timing Function */

.ease-linear {
    transition-timing-function: linear;
}

.ease-in {
    transition-timing-function: cubic-bezier(0.4, 0, 1, 1);
}

.ease-out {
    transition-timing-function: cubic-bezier(0, 0, 0.2, 1);
}

.ease-in-out {
    transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}

/* ========================================
   Opacity Utilities
   ======================================== */

.opacity-0 { opacity: 0; }

.opacity-5 { opacity: 0.05; }

.opacity-10 { opacity: 0.1; }

.opacity-20 { opacity: 0.2; }

.opacity-25 { opacity: 0.25; }

.opacity-30 { opacity: 0.3; }

.opacity-40 { opacity: 0.4; }

.opacity-50 { opacity: 0.5; }

.opacity-60 { opacity: 0.6; }

.opacity-70 { opacity: 0.7; }

.opacity-75 { opacity: 0.75; }

.opacity-80 { opacity: 0.8; }

.opacity-90 { opacity: 0.9; }

.opacity-95 { opacity: 0.95; }

.opacity-100 { opacity: 1; }

/* Hover opacity modifiers */

.hover\:opacity-0:hover { opacity: 0; }

.hover\:opacity-50:hover { opacity: 0.5; }

.hover\:opacity-75:hover { opacity: 0.75; }

.hover\:opacity-100:hover { opacity: 1; }

/* ========================================
   Transform Utilities
   ======================================== */

/* Scale */

.scale-0 { transform: scale(0); }

.scale-50 { transform: scale(0.5); }

.scale-75 { transform: scale(0.75); }

.scale-90 { transform: scale(0.9); }

.scale-95 { transform: scale(0.95); }

.scale-100 { transform: scale(1); }

.scale-105 { transform: scale(1.05); }

.scale-110 { transform: scale(1.1); }

.scale-125 { transform: scale(1.25); }

.scale-150 { transform: scale(1.5); }

/* Rotate */

.rotate-0 { transform: rotate(0deg); }

.rotate-45 { transform: rotate(45deg); }

.rotate-90 { transform: rotate(90deg); }

.rotate-180 { transform: rotate(180deg); }

.rotate-270 { transform: rotate(270deg); }

.-rotate-45 { transform: rotate(-45deg); }

.-rotate-90 { transform: rotate(-90deg); }

.-rotate-180 { transform: rotate(-180deg); }

/* Translate */

.translate-x-0 { transform: translateX(0); }

.translate-x-1 { transform: translateX(var(--space-1)); }

.translate-x-2 { transform: translateX(var(--space-2)); }

.translate-x-4 { transform: translateX(var(--space-4)); }

.translate-x-8 { transform: translateX(var(--space-8)); }

.translate-x-12 { transform: translateX(var(--space-12)); }

.translate-x-16 { transform: translateX(var(--space-16)); }

.-translate-x-1 { transform: translateX(calc(var(--space-1) * -1)); }

.-translate-x-2 { transform: translateX(calc(var(--space-2) * -1)); }

.-translate-x-4 { transform: translateX(calc(var(--space-4) * -1)); }

.-translate-x-8 { transform: translateX(calc(var(--space-8) * -1)); }

.-translate-x-12 { transform: translateX(calc(var(--space-12) * -1)); }

.translate-y-0 { transform: translateY(0); }

.translate-y-1 { transform: translateY(var(--space-1)); }

.translate-y-2 { transform: translateY(var(--space-2)); }

.translate-y-4 { transform: translateY(var(--space-4)); }

.translate-y-8 { transform: translateY(var(--space-8)); }

.translate-y-12 { transform: translateY(var(--space-12)); }

.translate-y-16 { transform: translateY(var(--space-16)); }

.-translate-y-1 { transform: translateY(calc(var(--space-1) * -1)); }

.-translate-y-2 { transform: translateY(calc(var(--space-2) * -1)); }

.-translate-y-4 { transform: translateY(calc(var(--space-4) * -1)); }

.-translate-y-8 { transform: translateY(calc(var(--space-8) * -1)); }

.-translate-y-12 { transform: translateY(calc(var(--space-12) * -1)); }

/* Translate by percentage */

.translate-x-1\/2 { transform: translateX(50%); }

.translate-x-full { transform: translateX(100%); }

.-translate-x-1\/2 { transform: translateX(-50%); }

.-translate-x-full { transform: translateX(-100%); }

.translate-y-1\/2 { transform: translateY(50%); }

.translate-y-full { transform: translateY(100%); }

.-translate-y-1\/2 { transform: translateY(-50%); }

.-translate-y-full { transform: translateY(-100%); }

/* Skew */

.skew-x-0 { transform: skewX(0deg); }

.skew-x-3 { transform: skewX(3deg); }

.skew-x-6 { transform: skewX(6deg); }

.skew-x-12 { transform: skewX(12deg); }

.-skew-x-3 { transform: skewX(-3deg); }

.-skew-x-6 { transform: skewX(-6deg); }

.-skew-x-12 { transform: skewX(-12deg); }

.skew-y-0 { transform: skewY(0deg); }

.skew-y-3 { transform: skewY(3deg); }

.skew-y-6 { transform: skewY(6deg); }

.skew-y-12 { transform: skewY(12deg); }

.-skew-y-3 { transform: skewY(-3deg); }

.-skew-y-6 { transform: skewY(-6deg); }

.-skew-y-12 { transform: skewY(-12deg); }

/* Transform Origin */

.origin-center { transform-origin: center; }

.origin-top { transform-origin: top; }

.origin-top-right { transform-origin: top right; }

.origin-right { transform-origin: right; }

.origin-bottom-right { transform-origin: bottom right; }

.origin-bottom { transform-origin: bottom; }

.origin-bottom-left { transform-origin: bottom left; }

.origin-left { transform-origin: left; }

.origin-top-left { transform-origin: top left; }

/* ========================================
   Accessibility: Respect Reduced Motion
   ======================================== */

@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
        scroll-behavior: auto !important;
    }

    /* Disable specific animations */
    .animate-pulse,
    .animate-shake,
    .animate-wobble,
    .animate-bounce,
    .animate-heartbeat,
    .animate-spin,
    .animate-ping {
        animation: none !important;
    }
}

/* ========================================
   BASE STYLES
   Global resets and defaults
   ======================================== */

* {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

*::before,
*::after {
    box-sizing: border-box;
}

html {
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    scroll-behavior: smooth;
}

body {
    font-family: var(--font-sans);
    font-size: var(--text-base);
    line-height: var(--leading-normal);
    background: var(--color-bg-primary);
    color: var(--color-text-primary);
    min-height: 100vh;
    min-height: 100dvh;
}

/* ========================================
   ACCESSIBILITY
   ======================================== */

/* Touch action for mobile devices - prevents double-tap zoom on interactive elements */

a:not([href^="#"]),
button,
[role="button"],
[role="tab"],
[role="menuitem"],
input[type="button"],
input[type="submit"],
input[type="reset"] {
    touch-action: manipulation;
}

/* Focus visible for keyboard navigation - Base styles */

:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}

/* Enhanced focus for specific interactive elements */

a:focus-visible,
button:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible,
[role="button"]:focus-visible,
[role="link"]:focus-visible,
[tabindex]:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}

/* Enhanced focus for form inputs with border glow */

input:focus-visible,
textarea:focus-visible,
select:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 0;
    box-shadow: 0 0 0 3px rgba(94, 189, 143, 0.2);
}

/* Visually hidden but accessible to screen readers */

.visually-hidden,
.sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border-width: 0;
}

/* Skip to main content link */

.skip-to-main {
    position: absolute;
    top: -40px;
    left: 0;
    background: var(--color-bg-primary);
    color: var(--color-text-primary);
    padding: var(--space-2) var(--space-4);
    text-decoration: none;
    z-index: 100;
}

.skip-to-main:focus {
    top: 0;
}

/* High contrast mode support */

@media (prefers-contrast: high) {
    /* Stronger focus indicators in high contrast */
    a:focus-visible,
    button:focus-visible,
    input:focus-visible,
    textarea:focus-visible,
    select:focus-visible,
    [tabindex]:focus-visible {
        outline-width: 3px;
    }
}

/* Respect reduced motion preference */

@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
        scroll-behavior: auto !important;
    }
}

/* Selection color */

::-moz-selection {
    background: rgba(16, 185, 129, 0.3);
    color: var(--color-text-primary);
}

::selection {
    background: rgba(16, 185, 129, 0.3);
    color: var(--color-text-primary);
}

/* ========================================
   UTILITIES
   Helper classes for common patterns
   ======================================== */

/* Display */

.hidden { display: none !important; }

.block { display: block; }

.inline-block { display: inline-block; }

.inline { display: inline; }

.flex { display: flex; }

.inline-flex { display: inline-flex; }

.grid { display: grid; }

/* Flex utilities */

.flex-row { flex-direction: row; }

.flex-col { flex-direction: column; }

.items-start { align-items: flex-start; }

.items-center { align-items: center; }

.items-end { align-items: flex-end; }

.justify-start { justify-content: flex-start; }

.justify-center { justify-content: center; }

.justify-end { justify-content: flex-end; }

.justify-between { justify-content: space-between; }

.flex-1 { flex: 1 1 0%; }

.flex-shrink-0 { flex-shrink: 0; }

/* Gap */

.gap-1 { gap: var(--space-1); }

.gap-2 { gap: var(--space-2); }

.gap-3 { gap: var(--space-3); }

.gap-4 { gap: var(--space-4); }

.gap-6 { gap: var(--space-6); }

.gap-8 { gap: var(--space-8); }

/* Text alignment */

.text-left { text-align: left; }

.text-center { text-align: center; }

.text-right { text-align: right; }

/* Font weights */

.font-normal { font-weight: var(--font-normal); }

.font-medium { font-weight: var(--font-medium); }

.font-semibold { font-weight: var(--font-semibold); }

.font-bold { font-weight: var(--font-bold); }

/* Text sizes */

.text-xs { font-size: var(--text-xs); }

.text-sm { font-size: var(--text-sm); }

.text-base { font-size: var(--text-base); }

.text-lg { font-size: var(--text-lg); }

.text-xl { font-size: var(--text-xl); }

.text-2xl { font-size: var(--text-2xl); }

/* Text colors */

.text-primary { color: var(--color-text-primary); }

.text-secondary { color: var(--color-text-secondary); }

.text-muted { color: var(--color-text-muted); }

/* Spacing (margin & padding) */

.m-0 { margin: 0; }

.m-auto { margin: auto; }

.mt-0 { margin-top: 0; }

.mt-2 { margin-top: var(--space-2); }

.mt-4 { margin-top: var(--space-4); }

.mt-6 { margin-top: var(--space-6); }

.mt-8 { margin-top: var(--space-8); }

.mb-0 { margin-bottom: 0; }

.mb-2 { margin-bottom: var(--space-2); }

.mb-4 { margin-bottom: var(--space-4); }

.mb-6 { margin-bottom: var(--space-6); }

.mb-8 { margin-bottom: var(--space-8); }

.p-0 { padding: 0; }

.p-2 { padding: var(--space-2); }

.p-4 { padding: var(--space-4); }

.p-6 { padding: var(--space-6); }

.p-8 { padding: var(--space-8); }

/* Width */

.w-full { width: 100%; }

.w-auto { width: auto; }

/* Border radius */

.rounded { border-radius: var(--radius); }

.rounded-md { border-radius: var(--radius-md); }

.rounded-lg { border-radius: var(--radius-lg); }

.rounded-full { border-radius: var(--radius-full); }

/* ========================================
   BROWSER COMPATIBILITY NOTES
   ======================================== */

/*
 * BACKDROP-FILTER SUPPORT
 * Browser Support: Chrome 76+, Safari 9+, Firefox 103+
 *
 * Components using backdrop-filter for glass-morphism effects:
 * - .card (cards with translucent backgrounds)
 * - .toast (notification toasts)
 * - .modal-overlay (modal backdrop)
 * - .aural-modal__overlay
 * - .lightbox-overlay
 * - .navbar (navigation bars with blur)
 * - .dropdown (dropdown menus)
 *
 * Fallback Strategy:
 * For browsers without backdrop-filter support, these components
 * use more opaque backgrounds to maintain readability.
 * The -webkit- prefix is included for Safari compatibility.
 *
 * ASPECT-RATIO SUPPORT
 * Browser Support: Chrome 88+, Safari 15+, Firefox 89+
 *
 * Components using aspect-ratio:
 * - .aural-carousel--16x9, --4x3, --1x1, --21x9 (carousel aspect ratios)
 * - .aural-color-picker__preset (color picker swatches)
 * - .avatar (user avatars)
 *
 * Fallback Strategy:
 * Uses the padding-bottom technique with pseudo-elements to maintain
 * aspect ratios in older browsers. The modern aspect-ratio property
 * takes precedence when supported.
 *
 * COLOR-MIX SUPPORT
 * Browser Support: Chrome 111+, Safari 16.2+, Firefox 113+
 *
 * All --primary-alpha-* and hover/active color variants use color-mix()
 * with static rgba() fallbacks for older browsers. The fallbacks use
 * the primary-400 color (#5ebd8f / rgb(94, 189, 143)) with appropriate
 * alpha values.
 */
