/* 
 * Theme System
 * Controls for light/dark mode theming and transitions
 */

/* ===== THEME TRANSITIONS ===== */

/* Smooth transitions for theme changes */
body,
body * {
    transition-property: background-color, color, border-color, box-shadow;
    transition-duration: 0.3s;
    transition-timing-function: ease;
}

/* Prevent transition on page load */
body.no-transition,
body.no-transition * {
    transition: none !important;
}

/* ===== DARK MODE SPECIFIC ADJUSTMENTS ===== */

/* Ensure links are visible in dark mode, but exclude buttons to avoid conflicts */
[data-theme="dark"] a:not(.btn) {
    color: var(--primary-color);
}

[data-theme="dark"] a:not(.btn):hover {
    color: var(--primary-light);
}

/* Icon colors in dark mode (exclude icons inside buttons) */
[data-theme="dark"] .fas:not(.btn *),
[data-theme="dark"] .far:not(.btn *),
[data-theme="dark"] .fab:not(.btn *),
[data-theme="dark"] i:not(.btn *) {
    color: var(--text-color);
}

/* Maintain primary color for branded icons */
[data-theme="dark"] .nav-brand i.fas,
[data-theme="dark"] .brand-icon {
    color: var(--primary-color);
}

/* Form elements in dark mode */
[data-theme="dark"] input,
[data-theme="dark"] textarea,
[data-theme="dark"] select {
    background-color: var(--bg-dark);
    border-color: var(--border-color);
    color: var(--text-color);
}

[data-theme="dark"] input::placeholder,
[data-theme="dark"] textarea::placeholder,
[data-theme="dark"] select::placeholder {
    color: var(--text-color-muted);
}

[data-theme="dark"] input:focus,
[data-theme="dark"] textarea:focus,
[data-theme="dark"] select:focus {
    background-color: var(--bg-light);
    border-color: var(--primary-color);
}

/* Tables in dark mode */
[data-theme="dark"] table {
    border-color: var(--border-color);
}

[data-theme="dark"] th {
    background-color: var(--bg-dark);
    color: var(--text-color);
}

[data-theme="dark"] td {
    border-color: var(--border-color);
}

[data-theme="dark"] tr:hover {
    background-color: rgba(var(--primary-color-rgb), 0.1);
}

/* Code blocks in dark mode */
[data-theme="dark"] code,
[data-theme="dark"] pre {
    background-color: var(--bg-darker);
    color: var(--text-color);
}

/* Scrollbar in dark mode */
[data-theme="dark"] ::-webkit-scrollbar-track {
    background: var(--bg-darker);
}

[data-theme="dark"] ::-webkit-scrollbar-thumb {
    background: var(--border-color-dark);
}

[data-theme="dark"] ::-webkit-scrollbar-thumb:hover {
    background: var(--text-color-muted);
}

/* ===== THEME TOGGLE UTILITIES ===== */

/* Hide elements based on theme */
.light-only {
    display: block;
}

.dark-only {
    display: none;
}

[data-theme="dark"] .light-only {
    display: none;
}

[data-theme="dark"] .dark-only {
    display: block;
}

/* Inline theme variants */
.light-only-inline {
    display: inline;
}

.dark-only-inline {
    display: none;
}

[data-theme="dark"] .light-only-inline {
    display: none;
}

[data-theme="dark"] .dark-only-inline {
    display: inline;
}

/* ===== THEME PREFERENCE DETECTION ===== */

/* Respect system preference if no theme is set */
@media (prefers-color-scheme: dark) {
    :root:not([data-theme]) {
        /* Apply dark mode variables */
        --primary-color: #4cc9f0;
        --primary-color-rgb: 76, 201, 240;
        --primary-dark: #3db8df;
        --bg-color: #121212;
        --bg-light: #1e1e1e;
        --bg-dark: #2d2d2d;
        --text-color: #e9ecef;
        --border-color: #3a3a3a;
        /* Additional dark mode variables... */
    }
}

/* ===== REDUCED MOTION SUPPORT ===== */

/* Disable theme transitions for users who prefer reduced motion */
@media (prefers-reduced-motion: reduce) {
    body,
    body * {
        transition-duration: 0.01ms !important;
    }
}

/* ===== PRINT STYLES ===== */

/* Force light theme for printing */
@media print {
    :root,
    [data-theme="dark"] {
        --bg-color: #ffffff;
        --bg-light: #ffffff;
        --bg-dark: #f0f0f0;
        --text-color: #000000;
        --border-color: #cccccc;
    }
    
    /* Hide theme toggle button when printing */
    .theme-toggle,
    #themeToggleBtn {
        display: none !important;
    }
}
