/* ==========================================================================
 * DSTAIR — Global Design System
 * The foundational layer: tokens, reset, utilities, and shared components.
 * All page-specific styles inherit from this file.
 * ========================================================================== */


/* --------------------------------------------------------------------------
 * § 1. DESIGN TOKENS (Custom Properties)
 * -------------------------------------------------------------------------- */
:root {
    /* ── Brand Colors ─────────────────────────────── */
    --color-primary: #2E5E9A;
    --color-primary-rgb: 46, 94, 154;
    --color-dark: #0F223D;
    --color-dark-rgb: 15, 34, 61;
    --color-accent: #E47905;
    --color-accent-rgb: 228, 121, 5;
    --color-highlight: #CAFD04;
    --color-highlight-rgb: 202, 253, 4;
    --color-surface: #0B1A2F;
    --color-void: #050C16;

    /* ── Neutral Palette ──────────────────────────── */
    --white: #FFFFFF;
    --white-05: rgba(255, 255, 255, 0.05);
    --white-10: rgba(255, 255, 255, 0.10);
    --white-20: rgba(255, 255, 255, 0.20);
    --white-40: rgba(255, 255, 255, 0.40);
    --white-60: rgba(255, 255, 255, 0.60);
    --white-80: rgba(255, 255, 255, 0.80);

    /* ── Typography ───────────────────────────────── */
    --font-sans: 'Inter', system-ui, -apple-system, sans-serif;
    --font-mono: 'JetBrains Mono', ui-monospace, 'Cascadia Code', monospace;
    --font-serif: 'Playfair Display', 'Georgia', serif;
    --font-display: 'Outfit', var(--font-sans);

    /* ── Spacing Scale ────────────────────────────── */
    --space-xs: 0.25rem;
    --space-sm: 0.5rem;
    --space-md: 1rem;
    --space-lg: 1.5rem;
    --space-xl: 2rem;
    --space-2xl: 3rem;
    --space-3xl: 4rem;

    /* ── Border Radii ─────────────────────────────── */
    --radius-sm: 0.375rem;
    --radius-md: 0.75rem;
    --radius-lg: 1rem;
    --radius-xl: 1.5rem;
    --radius-pill: 9999px;

    /* ── Shadows ──────────────────────────────────── */
    --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);
    --shadow-md: 0 4px 16px rgba(0, 0, 0, 0.2);
    --shadow-lg: 0 8px 32px rgba(0, 0, 0, 0.3);
    --shadow-xl: 0 16px 48px rgba(0, 0, 0, 0.4);
    --shadow-glow-lime: 0 0 20px rgba(var(--color-highlight-rgb), 0.15);
    --shadow-glow-accent: 0 0 20px rgba(var(--color-accent-rgb), 0.15);

    /* ── Transitions ──────────────────────────────── */
    --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
    --ease-spring: cubic-bezier(0.175, 0.885, 0.32, 1.275);
    --ease-smooth: cubic-bezier(0.4, 0, 0.2, 1);
    --transition-fast: 150ms var(--ease-smooth);
    --transition-base: 300ms var(--ease-smooth);
    --transition-slow: 500ms var(--ease-out);

    /* ── Z-Index Scale ────────────────────────────── */
    --z-background: -1;
    --z-default: 1;
    --z-dropdown: 50;
    --z-sticky: 60;
    --z-overlay: 100;
    --z-modal: 101;
    --z-toast: 200;
}


/* --------------------------------------------------------------------------
 * § 2. MODERN RESET & BASE
 * -------------------------------------------------------------------------- */
*,
*::before,
*::after {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

html {
    scroll-behavior: smooth;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    text-rendering: optimizeLegibility;
}

body {
    background-color: var(--color-dark);
    color: var(--white);
    font-family: var(--font-sans);
    line-height: 1.6;
    overflow-x: hidden;
    min-height: 100vh;
}

/* Selection */
::selection {
    background: var(--color-highlight);
    color: var(--color-dark);
}

::-moz-selection {
    background: var(--color-highlight);
    color: var(--color-dark);
}

/* Scrollbar */
::-webkit-scrollbar {
    width: 6px;
}

::-webkit-scrollbar-track {
    background: var(--color-dark);
}

::-webkit-scrollbar-thumb {
    background: rgba(var(--color-primary-rgb), 0.4);
    border-radius: var(--radius-pill);
}

::-webkit-scrollbar-thumb:hover {
    background: rgba(var(--color-highlight-rgb), 0.6);
}

/* Focus Ring */
:focus-visible {
    outline: 2px solid var(--color-highlight);
    outline-offset: 2px;
}

/* Images */
img,
video {
    max-width: 100%;
    height: auto;
    display: block;
}

/* Links */
a {
    color: inherit;
    text-decoration: none;
}


/* --------------------------------------------------------------------------
 * § 3. TYPOGRAPHY UTILITIES
 * -------------------------------------------------------------------------- */
.font-mono {
    font-family: var(--font-mono);
}

.font-serif {
    font-family: var(--font-serif);
}

.font-display {
    font-family: var(--font-display);
}

.tracking-ultra {
    letter-spacing: 0.25em;
}

.leading-lux {
    line-height: 1.8;
}

/* Text Gradients */
.text-gradient {
    background: linear-gradient(135deg, var(--color-highlight) 0%, var(--color-primary) 100%);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
}

.text-gradient-primary {
    background: linear-gradient(to right, var(--color-highlight), var(--color-primary));
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
}

.text-gradient-accent {
    background: linear-gradient(to right, var(--color-accent), var(--color-highlight));
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
}


/* --------------------------------------------------------------------------
 * § 4. GLASS MORPHISM SYSTEM
 * -------------------------------------------------------------------------- */
.glass-panel,
.glass-card {
    background: rgba(255, 255, 255, 0.03);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    border: 1px solid var(--white-10);
    box-shadow: var(--shadow-lg);
    transition: all var(--transition-base);
}

.glass-panel:hover,
.glass-card:hover {
    background: rgba(255, 255, 255, 0.06);
    border-color: rgba(var(--color-highlight-rgb), 0.2);
    box-shadow: var(--shadow-xl);
}


/* --------------------------------------------------------------------------
 * § 5. INTERACTION EFFECTS
 * -------------------------------------------------------------------------- */

/* Hover Glow */
.hover-glow {
    transition: all var(--transition-base);
}

.hover-glow:hover {
    border-color: rgba(var(--color-highlight-rgb), 0.3);
    background: var(--white-05);
    box-shadow: var(--shadow-glow-lime);
}

/* Animated Gradient Border */
.border-gradient-animation {
    position: relative;
    overflow: hidden;
}

.border-gradient-animation::before {
    content: '';
    position: absolute;
    inset: 0;
    border-radius: inherit;
    padding: 1px;
    background: linear-gradient(45deg, var(--color-highlight), transparent, var(--color-accent));
    -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
    mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
    -webkit-mask-composite: xor;
    mask-composite: exclude;
    opacity: 0.5;
    transition: opacity var(--transition-base);
}

.border-gradient-animation:hover::before {
    opacity: 1;
}

/* Lift on Hover */
.hover-lift {
    transition: transform var(--transition-base), box-shadow var(--transition-base);
}

.hover-lift:hover {
    transform: translateY(-4px);
    box-shadow: var(--shadow-xl);
}

/* Shimmer Loading Effect */
@keyframes shimmer {
    0% {
        background-position: -200% 0;
    }

    100% {
        background-position: 200% 0;
    }
}

.shimmer {
    background: linear-gradient(90deg,
            var(--white-05) 25%,
            var(--white-10) 50%,
            var(--white-05) 75%);
    background-size: 200% 100%;
    animation: shimmer 2s infinite linear;
}


/* --------------------------------------------------------------------------
 * § 6. ANIMATION KEYFRAMES
 * -------------------------------------------------------------------------- */
@keyframes fade-in {
    from {
        opacity: 0;
    }

    to {
        opacity: 1;
    }
}

@keyframes fade-in-up {
    from {
        opacity: 0;
        transform: translateY(20px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes fade-in-down {
    from {
        opacity: 0;
        transform: translateY(-20px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes scale-in {
    from {
        opacity: 0;
        transform: scale(0.95);
    }

    to {
        opacity: 1;
        transform: scale(1);
    }
}

@keyframes slide-in-right {
    from {
        opacity: 0;
        transform: translateX(30px);
    }

    to {
        opacity: 1;
        transform: translateX(0);
    }
}

@keyframes slide-in-left {
    from {
        opacity: 0;
        transform: translateX(-30px);
    }

    to {
        opacity: 1;
        transform: translateX(0);
    }
}

@keyframes pulse-subtle {

    0%,
    100% {
        opacity: 1;
    }

    50% {
        opacity: 0.7;
    }
}

@keyframes float {

    0%,
    100% {
        transform: translateY(0);
    }

    50% {
        transform: translateY(-8px);
    }
}

@keyframes spin-slow {
    from {
        transform: rotate(0deg);
    }

    to {
        transform: rotate(360deg);
    }
}

/* Animation Utility Classes */
.animate-fade-in {
    animation: fade-in 0.5s var(--ease-out) forwards;
}

.animate-fade-in-up {
    animation: fade-in-up 0.6s var(--ease-out) forwards;
}

.animate-fade-in-down {
    animation: fade-in-down 0.6s var(--ease-out) forwards;
}

.animate-scale-in {
    animation: scale-in 0.6s var(--ease-out) forwards;
}

.animate-slide-right {
    animation: slide-in-right 0.5s var(--ease-out) forwards;
}

.animate-slide-left {
    animation: slide-in-left 0.5s var(--ease-out) forwards;
}

.animate-float {
    animation: float 3s ease-in-out infinite;
}

.animate-pulse-subtle {
    animation: pulse-subtle 2s ease-in-out infinite;
}

.animate-spin-slow {
    animation: spin-slow 8s linear infinite;
}

/* Stagger delays for lists */
.stagger-1 {
    animation-delay: 0.1s;
}

.stagger-2 {
    animation-delay: 0.2s;
}

.stagger-3 {
    animation-delay: 0.3s;
}

.stagger-4 {
    animation-delay: 0.4s;
}

.stagger-5 {
    animation-delay: 0.5s;
}

.stagger-6 {
    animation-delay: 0.6s;
}


/* --------------------------------------------------------------------------
 * § 7. BACKGROUND GLOBES (Shared decoration)
 * -------------------------------------------------------------------------- */
.background-globes {
    position: fixed;
    inset: 0;
    pointer-events: none;
    z-index: var(--z-background);
    overflow: hidden;
}

.globe {
    position: absolute;
    border-radius: 50%;
    filter: blur(80px);
    opacity: 0.15;
}

.globe-1 {
    width: 500px;
    height: 500px;
    background: radial-gradient(circle, rgba(var(--color-primary-rgb), 0.4), transparent);
    top: -10%;
    right: -5%;
    animation: float 20s ease-in-out infinite;
}

.globe-2 {
    width: 400px;
    height: 400px;
    background: radial-gradient(circle, rgba(var(--color-accent-rgb), 0.3), transparent);
    bottom: 10%;
    left: -10%;
    animation: float 25s ease-in-out infinite reverse;
}

.globe-3 {
    width: 300px;
    height: 300px;
    background: radial-gradient(circle, rgba(var(--color-highlight-rgb), 0.2), transparent);
    top: 50%;
    left: 50%;
    animation: float 18s ease-in-out infinite 3s;
}


/* --------------------------------------------------------------------------
 * § 8. RESPONSIVE UTILITIES
 * -------------------------------------------------------------------------- */

/* Hide scrollbar utility */
.no-scrollbar {
    -ms-overflow-style: none;
    scrollbar-width: none;
}

.no-scrollbar::-webkit-scrollbar {
    display: none;
}

/* Content wrapper */
.content-wrapper {
    position: relative;
    z-index: var(--z-default);
    min-height: 100vh;
}

/* --------------------------------------------------------------------------
 * § 9. PREMIUM MODAL CONTAINERS (Custom Implementation)
 * Purpose: Stable, high-fidelity modal windows with permanent "active" state design.
 * -------------------------------------------------------------------------- */
.premium-info-modal-container {
    /* Base Glass / Background Properties */
    background-color: #0F223D;
    /* Deep Royal Blue Base */
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);

    /* Layout & Box Model */
    border-radius: var(--radius-xl);
    /* rounded-2xl */
    overflow: hidden;
    position: relative;

    /* Shadows & Depth (Permanent Hover State of glass-card) */
    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.5);
    /* Enhanced Shadow */

    /* Transition for entry animation only, no hover effects */
    transition: transform var(--transition-base), opacity var(--transition-base);
}

/* Theme Variant: Lime (Questions) */
.premium-info-modal-container--theme-lime {
    border: 1px solid rgba(202, 253, 4, 0.2);
    /* --color-highlight / 20 */
}

/* Theme Variant: Blue (Tools & Comments) */
.premium-info-modal-container--theme-blue {
    border: 1px solid rgba(46, 94, 154, 0.2);
    /* --color-primary / 20 */
}