/* Dark Mode CSS Variables and Styles */
:root {
    --bg-primary: #f5f5f5;
    --bg-secondary: #ffffff;
    --text-primary: #333;
    --text-secondary: #666;
    --text-tertiary: #999;
    --border-color: #e0e0e0;
    --shadow: rgba(0,0,0,0.1);
    --input-bg: #f8f9fa;
    --hover-bg: #f0f0f0;
    --card-bg: #fff;
    
    /* Page transition system */
    --transition-duration: 0.5s;
}

body.dark-mode,
html.dark-mode {
    --bg-primary: #1a1a1a;
    --bg-secondary: #2d2d2d;
    --text-primary: #e0e0e0;
    --text-secondary: #b0b0b0;
    --text-tertiary: #808080;
    --border-color: #404040;
    --shadow: rgba(255,255,255,0.1);
    --input-bg: #3a3a3a;
    --hover-bg: #404040;
    --card-bg: #2d2d2d;
}

/* Apply dark mode to html element immediately */
html.dark-mode {
    background-color: #1a1a1a !important;
    color: #e0e0e0 !important;
}

/* Smooth transitions for theme changes */
body, html {
    transition: background-color 0.3s ease, color 0.3s ease;
}

body.dark-mode {
    background-color: var(--bg-primary);
    color: var(--text-primary);
}

/* Universal Page Loader System */
.page-loader {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: var(--bg-primary);
    z-index: 9999;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: opacity var(--transition-duration) ease;
}

.page-loader.hidden {
    opacity: 0;
    pointer-events: none;
    /* Don't use display:none as it prevents the fade transition */
    /* The element will fade out and be non-interactive */
}

/* After fade completes, completely remove from layout */
@keyframes removeLoader {
    to {
        visibility: hidden;
        display: none;
    }
}

.page-loader.hidden {
    animation: removeLoader 0s var(--transition-duration) forwards;
}

/* Universal fade-in for body content */
body {
    opacity: 0;
    transition: opacity var(--transition-duration) ease;
}

body.loaded {
    opacity: 1;
}
