/* Theme Custom Properties & Global Overrides */
        :root,
        [data-theme="dark"] {
            --bg-main: #111827;
            --bg-sec: #1f2937;
            --bg-card: #1f2937;
            --bg-panel: #1f2937;
            --bg-container: #111827;
            --bg-grid: rgba(255, 255, 255, 0.04);
            --text-main: #f3f4f6;
            --text-sec: #d1d5db;
            --text-muted: #9ca3af;
            --border-main: #374151;
            --border-subtle: #4b5563;

            --node-locked-bg: #374151;
            --node-locked-border: #4b5563;
            --node-locked-text: #9ca3af;

            --node-avail-bg: #2563eb;
            --node-avail-border: #60a5fa;
            --node-avail-text: #ffffff;
            --node-avail-shadow: rgba(59, 130, 246, 0.5);

            --node-comp-bg: #16a34a;
            --node-comp-border: #4ade80;
            --node-comp-text: #ffffff;
            --node-comp-shadow: rgba(74, 222, 128, 0.7);

            --node-inprog-bg: #ea580c;
            --node-inprog-border: #f97316;
            --node-inprog-text: #ffffff;
            --node-inprog-shadow: rgba(234, 88, 12, 0.5);

            --node-satis-bg: #4a4a28;
            --node-satis-border: #fbbf24;
            --node-satis-text: #fde68a;

            --line-default: #4b5563;
            --line-active: #60a5fa;
        }

        [data-theme="light"] {
            --bg-main: #f8fafc;
            --bg-sec: #ffffff;
            --bg-card: #ffffff;
            --bg-panel: #f1f5f9;
            --bg-container: #f8fafc;
            --bg-grid: rgba(0, 0, 0, 0.06);
            --text-main: #0f172a;
            --text-sec: #334155;
            --text-muted: #64748b;
            --border-main: #e2e8f0;
            --border-subtle: #cbd5e1;

            --node-locked-bg: #e2e8f0;
            --node-locked-border: #94a3b8;
            --node-locked-text: #475569;

            --node-avail-bg: #2563eb;
            --node-avail-border: #1d4ed8;
            --node-avail-text: #ffffff;
            --node-avail-shadow: rgba(37, 99, 235, 0.3);

            --node-comp-bg: #16a34a;
            --node-comp-border: #15803d;
            --node-comp-text: #ffffff;
            --node-comp-shadow: rgba(22, 163, 74, 0.35);

            --node-inprog-bg: #ea580c;
            --node-inprog-border: #c2410c;
            --node-inprog-text: #ffffff;
            --node-inprog-shadow: rgba(234, 88, 12, 0.35);

            --node-satis-bg: #fef08a;
            --node-satis-border: #d97706;
            --node-satis-text: #78350f;

            --line-default: #94a3b8;
            --line-active: #2563eb;
        }

        [data-theme="utfpr"] {
            --bg-main: #0d0d0d;
            --bg-sec: #171717;
            --bg-card: #171717;
            --bg-panel: #262626;
            --bg-container: #0d0d0d;
            --bg-grid: rgba(245, 158, 11, 0.08);
            --text-main: #fffbeb;
            --text-sec: #fef08a;
            --text-muted: #d97706;
            --border-main: #451a03;
            --border-subtle: #78350f;

            --node-locked-bg: #262626;
            --node-locked-border: #404040;
            --node-locked-text: #a3a3a3;

            --node-avail-bg: #d97706;
            --node-avail-border: #fbbf24;
            --node-avail-text: #ffffff;
            --node-avail-shadow: rgba(245, 158, 11, 0.5);

            --node-comp-bg: #15803d;
            --node-comp-border: #4ade80;
            --node-comp-text: #ffffff;
            --node-comp-shadow: rgba(74, 222, 128, 0.5);

            --node-inprog-bg: #ea580c;
            --node-inprog-border: #fb923c;
            --node-inprog-text: #ffffff;
            --node-inprog-shadow: rgba(249, 115, 22, 0.5);

            --node-satis-bg: #713f12;
            --node-satis-border: #fef08a;
            --node-satis-text: #fef9c3;

            --line-default: #525252;
            --line-active: #f59e0b;
        }

        [data-theme="dracula"] {
            --bg-main: #181825;
            --bg-sec: #1e1e2e;
            --bg-card: #1e1e2e;
            --bg-panel: #313244;
            --bg-container: #11111b;
            --bg-grid: rgba(203, 166, 247, 0.08);
            --text-main: #cdd6f4;
            --text-sec: #bac2de;
            --text-muted: #a6adc8;
            --border-main: #45475a;
            --border-subtle: #585b70;

            --node-locked-bg: #313244;
            --node-locked-border: #45475a;
            --node-locked-text: #6c7086;

            --node-avail-bg: #89b4fa;
            --node-avail-border: #b4befe;
            --node-avail-text: #11111b;
            --node-avail-shadow: rgba(137, 180, 250, 0.5);

            --node-comp-bg: #a6e3a1;
            --node-comp-border: #94e2d5;
            --node-comp-text: #11111b;
            --node-comp-shadow: rgba(166, 227, 161, 0.6);

            --node-inprog-bg: #fab387;
            --node-inprog-border: #f9e2af;
            --node-inprog-text: #11111b;
            --node-inprog-shadow: rgba(250, 179, 135, 0.5);

            --node-satis-bg: #585b70;
            --node-satis-border: #f5c2e7;
            --node-satis-text: #cdd6f4;

            --line-default: #585b70;
            --line-active: #cba6f7;
        }

        /* Theme Global Overrides */
        html,
        body {
            background-color: var(--bg-main) !important;
            color: var(--text-sec) !important;
            transition: background-color 0.3s ease, color 0.3s ease;
        }

        .selection-card {
            background-color: var(--bg-card) !important;
            border-color: var(--border-main) !important;
        }

        details {
            background-color: var(--bg-sec) !important;
            border-color: var(--border-main) !important;
            color: var(--text-sec) !important;
        }

        footer {
            background-color: var(--bg-sec) !important;
            border-color: var(--border-main) !important;
        }

        .modal-box {
            background-color: var(--bg-card) !important;
            border-color: var(--border-main) !important;
            color: var(--text-sec) !important;
        }

        #main-container,
        #humanities-container,
        #optional-container {
            background-color: var(--bg-container) !important;
            background-image:
                linear-gradient(var(--bg-grid) 1px, transparent 1px),
                linear-gradient(90deg, var(--bg-grid) 1px, transparent 1px) !important;
        }

        #progress-panel,
        .bg-gray-700 {
            background-color: var(--bg-panel) !important;
            color: var(--text-main) !important;
            border: 1px solid var(--border-main) !important;
        }

        .subject-locked,
        .humanities-locked,
        .optional-locked {
            background-color: var(--node-locked-bg) !important;
            border-color: var(--node-locked-border) !important;
            color: var(--node-locked-text) !important;
        }

        .subject-available,
        .humanities-available,
        .optional-available {
            background-color: var(--node-avail-bg) !important;
            border-color: var(--node-avail-border) !important;
            color: var(--node-avail-text) !important;
            box-shadow: 0 0 15px var(--node-avail-shadow) !important;
        }

        .subject-completed,
        .humanities-completed,
        .optional-completed {
            background-color: var(--node-comp-bg) !important;
            border-color: var(--node-comp-border) !important;
            color: var(--node-comp-text) !important;
            box-shadow: 0 0 20px var(--node-comp-shadow) !important;
        }

        .subject-inprogress,
        .humanities-inprogress,
        .optional-inprogress {
            background-color: var(--node-inprog-bg) !important;
            border-color: var(--node-inprog-border) !important;
            color: var(--node-inprog-text) !important;
            box-shadow: 0 0 15px var(--node-inprog-shadow) !important;
        }

        .subject-satisfied,
        .humanities-satisfied,
        .optional-satisfied {
            background-color: var(--node-satis-bg) !important;
            border-color: var(--node-satis-border) !important;
            color: var(--node-satis-text) !important;
        }

        /* Light Mode Specific Utility Overrides */
        [data-theme="light"] .text-gray-200,
        [data-theme="light"] .text-gray-300 {
            color: #1e293b !important;
        }

        [data-theme="light"] .text-gray-400 {
            color: #475569 !important;
        }

        [data-theme="light"] .bg-gray-800 {
            background-color: #f1f5f9 !important;
            color: #0f172a !important;
            border-color: #cbd5e1 !important;
        }

        [data-theme="light"] .bg-gray-900 {
            background-color: #e2e8f0 !important;
            color: #0f172a !important;
        }

        [data-theme="light"] .bg-gray-600 {
            background-color: #cbd5e1 !important;
        }

        [data-theme="light"] .border-gray-600,
        [data-theme="light"] .border-gray-700 {
            border-color: #cbd5e1 !important;
        }

        /* Light Mode — Color Contrast Fixes */
        [data-theme="light"] .text-amber-300,
        [data-theme="light"] .text-amber-400 { color: #b45309 !important; }
        [data-theme="light"] .text-yellow-400 { color: #a16207 !important; }
        [data-theme="light"] .text-red-300 { color: #b91c1c !important; }
        [data-theme="light"] .text-purple-300 { color: #7e22ce !important; }
        [data-theme="light"] .text-emerald-300,
        [data-theme="light"] .text-emerald-400 { color: #047857 !important; }
        [data-theme="light"] .text-cyan-300 { color: #0e7490 !important; }
        [data-theme="light"] .text-blue-400 { color: #1d4ed8 !important; }
        [data-theme="light"] .text-pink-300 { color: #be185d !important; }
        [data-theme="light"] .text-rose-300 { color: #be123c !important; }

        /* UTFPR Gold Specific Utility Overrides */
        [data-theme="utfpr"] .bg-gray-800 {
            background-color: #171717 !important;
            color: #fef08a !important;
            border-color: #451a03 !important;
        }

        [data-theme="utfpr"] .bg-gray-900 {
            background-color: #0a0a0a !important;
        }

        /* Roxo Specific Utility Overrides */
        [data-theme="dracula"] .bg-gray-800 {
            background-color: #1e1e2e !important;
            color: #cdd6f4 !important;
            border-color: #45475a !important;
        }

        [data-theme="dracula"] .bg-gray-900 {
            background-color: #11111b !important;
        }

        /* =====================================================
           ALL MODALS — THEME OVERRIDES
           ===================================================== */

        /* Light theme overrides for all modals */
        [data-theme="light"] .modal-box {
            background-color: #ffffff !important;
            border-color: #cbd5e1 !important;
            color: #0f172a !important;
        }
        [data-theme="light"] .modal-box .text-gray-400 { color: #475569 !important; }
        [data-theme="light"] .modal-box .text-gray-200,
        [data-theme="light"] .modal-box .text-gray-300 { color: #1e293b !important; }
        [data-theme="light"] .modal-box .text-white { color: #0f172a !important; }
        [data-theme="light"] .modal-box .border-gray-700,
        [data-theme="light"] .modal-box .border-gray-600,
        [data-theme="light"] .modal-box [class*="border-gray-700"] { border-color: #cbd5e1 !important; }
        [data-theme="light"] .modal-box .bg-gray-800,
        [data-theme="light"] .modal-box .bg-gray-900,
        [data-theme="light"] .modal-box [class*="bg-gray-800"],
        [data-theme="light"] .modal-box [class*="bg-gray-900"] { background-color: #f1f5f9 !important; color: #0f172a !important; }
        [data-theme="light"] .modal-box select,
        [data-theme="light"] .modal-box input { background-color: #ffffff !important; color: #0f172a !important; border-color: #cbd5e1 !important; }
        [data-theme="light"] .modal-box .bg-gray-700,
        [data-theme="light"] .modal-box .bg-gray-500,
        [data-theme="light"] .modal-box .hover\:bg-gray-600:hover { background-color: #e2e8f0 !important; color: #0f172a !important; }
        [data-theme="light"] .modal-box .text-gray-500 { color: #64748b !important; }

        /* UTFPR Gold theme overrides for all modals */
        [data-theme="utfpr"] .modal-box {
            background-color: #171717 !important;
            border-color: #451a03 !important;
            color: #fef08a !important;
        }
        [data-theme="utfpr"] .modal-box .text-gray-400 { color: #d97706 !important; }
        [data-theme="utfpr"] .modal-box .text-gray-200,
        [data-theme="utfpr"] .modal-box .text-gray-300 { color: #fef08a !important; }
        [data-theme="utfpr"] .modal-box .text-white { color: #fffbeb !important; }
        [data-theme="utfpr"] .modal-box .border-gray-700,
        [data-theme="utfpr"] .modal-box .border-gray-600,
        [data-theme="utfpr"] .modal-box [class*="border-gray-700"] { border-color: #451a03 !important; }
        [data-theme="utfpr"] .modal-box .bg-gray-800,
        [data-theme="utfpr"] .modal-box .bg-gray-900,
        [data-theme="utfpr"] .modal-box [class*="bg-gray-800"],
        [data-theme="utfpr"] .modal-box [class*="bg-gray-900"] { background-color: rgba(10,10,10,0.9) !important; color: #fef08a !important; }
        [data-theme="utfpr"] .modal-box select,
        [data-theme="utfpr"] .modal-box input { background-color: #0d0d0d !important; color: #fef08a !important; border-color: #451a03 !important; }
        [data-theme="utfpr"] .modal-box .bg-gray-700,
        [data-theme="utfpr"] .modal-box .bg-gray-500,
        [data-theme="utfpr"] .modal-box .hover\:bg-gray-600:hover { background-color: #262626 !important; color: #fef08a !important; }
        [data-theme="utfpr"] .modal-box .text-gray-500 { color: #d97706 !important; }

        /* Dracula theme overrides for all modals */
        [data-theme="dracula"] .modal-box {
            background-color: #1e1e2e !important;
            border-color: #45475a !important;
            color: #bac2de !important;
        }
        [data-theme="dracula"] .modal-box .text-gray-400 { color: #a6adc8 !important; }
        [data-theme="dracula"] .modal-box .text-gray-200,
        [data-theme="dracula"] .modal-box .text-gray-300 { color: #cdd6f4 !important; }
        [data-theme="dracula"] .modal-box .text-white { color: #cdd6f4 !important; }
        [data-theme="dracula"] .modal-box .border-gray-700,
        [data-theme="dracula"] .modal-box .border-gray-600,
        [data-theme="dracula"] .modal-box [class*="border-gray-700"] { border-color: #45475a !important; }
        [data-theme="dracula"] .modal-box .bg-gray-800,
        [data-theme="dracula"] .modal-box .bg-gray-900,
        [data-theme="dracula"] .modal-box [class*="bg-gray-800"],
        [data-theme="dracula"] .modal-box [class*="bg-gray-900"] { background-color: rgba(17,17,27,0.9) !important; color: #cdd6f4 !important; }
        [data-theme="dracula"] .modal-box select,
        [data-theme="dracula"] .modal-box input { background-color: #11111b !important; color: #cdd6f4 !important; border-color: #45475a !important; }
        [data-theme="dracula"] .modal-box .bg-gray-700,
        [data-theme="dracula"] .modal-box .bg-gray-500,
        [data-theme="dracula"] .modal-box .hover\:bg-gray-600:hover { background-color: #313244 !important; color: #cdd6f4 !important; }
        [data-theme="dracula"] .modal-box .text-gray-500 { color: #6c7086 !important; }
