body[class*="theme-"] {
  font-family: var(--bs-body-font-family);
  color: var(--bs-body-color);
  background-color: var(--bs-body-bg);
  --bs-link-color: var(--bs-primary);
  --bs-primary-bg-subtle: color-mix(in srgb, var(--bs-primary), var(--bs-body-bg) 85%);
  --bs-primary-border-subtle: color-mix(in srgb, var(--bs-primary), var(--bs-body-bg) 60%);
  --bs-primary-text-emphasis: color-mix(in srgb, var(--bs-primary), var(--bs-body-color) 40%);
  --bs-link-hover-color: color-mix(in srgb, var(--bs-link-color), var(--bs-body-color) 20%);
}
body[class*="theme-"] a:not(.btn):not(.btn-gold):not(.navbar-brand):not(.nav-link) {
  color: var(--bs-link-color);
}
body[class*="theme-"] a:not(.btn):not(.btn-gold):not(.navbar-brand):not(.nav-link):hover {
  color: var(--bs-link-hover-color);
}
body[class*="theme-"] h1, body[class*="theme-"] h2, body[class*="theme-"] h3,
body[class*="theme-"] h4, body[class*="theme-"] h5, body[class*="theme-"] h6,
body[class*="theme-"] .h1, body[class*="theme-"] .h2, body[class*="theme-"] .h3,
body[class*="theme-"] .h4, body[class*="theme-"] .h5, body[class*="theme-"] .h6 {
  font-family: var(--bs-heading-font-family, var(--bs-body-font-family));
  font-weight: var(--bs-heading-font-weight, 500);
  color: var(--bs-heading-color, var(--bs-body-color));
}
body[class*="theme-"] .btn-primary {
  --bs-btn-bg: var(--bs-primary); --bs-btn-border-color: var(--bs-primary);
  --bs-btn-hover-bg: color-mix(in srgb, var(--bs-primary), black 15%);
  --bs-btn-hover-border-color: color-mix(in srgb, var(--bs-primary), black 20%);
  --bs-btn-active-bg: color-mix(in srgb, var(--bs-primary), black 20%);
  --bs-btn-color: var(--theme-btn-primary-color, #fff);
  --bs-btn-disabled-bg: var(--bs-primary);
  --bs-btn-disabled-border-color: var(--bs-primary);
  --bs-btn-disabled-color: var(--theme-btn-primary-color, #fff);
}
body[class*="theme-"] .btn-outline-primary {
  --bs-btn-color: var(--bs-primary); --bs-btn-border-color: var(--bs-primary);
  --bs-btn-hover-bg: var(--bs-primary); --bs-btn-active-bg: var(--bs-primary);
  --bs-btn-hover-color: var(--theme-btn-primary-color, #fff);
}
body[class*="theme-"] .form-check-input:checked { background-color: var(--bs-primary); border-color: var(--bs-primary); }
body[class*="theme-"] .form-control:focus, body[class*="theme-"] .form-select:focus {
  border-color: var(--bs-primary); box-shadow: 0 0 0 .25rem rgba(var(--bs-primary-rgb), .25);
}
body[class*="theme-"] .nav-pills .nav-link.active,
body[class*="theme-"] .nav-pills .show > .nav-link {
  background-color: var(--bs-primary);
  color: var(--theme-btn-primary-color, #fff);
}
body[class*="theme-"] .nav-pills .nav-link:not(.active) { color: var(--bs-primary); }
body[class*="theme-"] .navbar {
  --bs-navbar-color: var(--bs-body-color);
  --bs-navbar-hover-color: var(--bs-primary);
  --bs-navbar-active-color: var(--bs-primary);
  --bs-navbar-brand-color: var(--bs-body-color);
  --bs-navbar-brand-hover-color: var(--bs-primary);
}
body[class*="theme-"] .navbar-dark,
body[class*="theme-"] .navbar[data-bs-theme="dark"] {
  --bs-navbar-color: rgba(255,255,255,.75);
  --bs-navbar-hover-color: #fff;
  --bs-navbar-active-color: #fff;
  --bs-navbar-brand-color: #fff;
  --bs-navbar-brand-hover-color: #fff;
}
body[class*="theme-"] .bg-primary {
  background-color: var(--bs-primary) !important;
  --bs-navbar-color: var(--theme-btn-primary-color, rgba(255,255,255,.75));
  --bs-navbar-hover-color: var(--theme-btn-primary-color, #fff);
  --bs-navbar-active-color: var(--theme-btn-primary-color, #fff);
  --bs-navbar-brand-color: var(--theme-btn-primary-color, #fff);
  --bs-navbar-brand-hover-color: var(--theme-btn-primary-color, #fff);
}
body[class*="theme-"] .bg-primary .navbar-brand,
body[class*="theme-"] .bg-primary .nav-link {
  color: var(--theme-btn-primary-color, #fff) !important;
}
body[class*="theme-"] .bg-primary .nav-pills .nav-link.active { color: var(--theme-btn-primary-color, #fff); }
body[class*="theme-"] .bg-primary .nav-pills .nav-link:not(.active) { color: var(--theme-btn-primary-color, rgba(255,255,255,.75)); }
body[class*="theme-"] .btn-primary.disabled,
body[class*="theme-"] .btn-primary.placeholder,
body[class*="theme-"] a.btn-primary.placeholder { background-color: var(--bs-primary) !important; border-color: var(--bs-primary) !important; }
body[class*="theme-"] .list-group-item.active {
  background-color: var(--bs-primary) !important;
  border-color: var(--bs-primary) !important;
  color: var(--theme-btn-primary-color, #fff) !important;
}
body[class*="theme-"] .page-item.active .page-link {
  background-color: var(--bs-primary);
  border-color: var(--bs-primary);
  color: var(--theme-btn-primary-color, #fff);
}
body[class*="theme-"] .form-range::-webkit-slider-thumb { background-color: var(--bs-primary); }
body[class*="theme-"] .form-range::-moz-range-thumb { background-color: var(--bs-primary); }
body[class*="theme-"] .form-range:focus::-webkit-slider-thumb {
  box-shadow: 0 0 0 1px var(--bs-body-bg), 0 0 0 .25rem rgba(var(--bs-primary-rgb), .25);
}
body[class*="theme-"] .form-range:focus::-moz-range-thumb {
  box-shadow: 0 0 0 1px var(--bs-body-bg), 0 0 0 .25rem rgba(var(--bs-primary-rgb), .25);
}
body[class*="theme-"] .accordion-button:not(.collapsed) { background-color: var(--bs-primary-bg-subtle); color: var(--bs-primary); }
body[class*="theme-"] .progress-bar { background-color: var(--bs-primary); }

/* ==================== LIGHT THEMES ==================== */

body.theme-kmx-io {
  --bs-body-font-family: 'computer_modern', 'Libre Baskerville', serif;
  --bs-heading-font-family: 'computer_modern', 'Libre Baskerville', serif;
  --bs-heading-color: #110033;
  --bs-body-bg: #ffffff; --bs-body-bg-rgb: 255,255,255;
  --bs-body-color: #212529; --bs-body-color-rgb: 33,37,41;
  --bs-primary: #242124; --bs-primary-rgb: 36,33,36;
  --bs-secondary-color: #555555;
  --bs-tertiary-bg: #eeeeff;
  --bs-border-color: #dee2e6;
}

body.theme-stripe-clean {
  --bs-body-font-family: 'Inter', sans-serif;
  --bs-heading-font-family: 'Plus Jakarta Sans', sans-serif;
  --bs-heading-font-weight: 700;
  --bs-heading-color: #1a1a2e;
  --bs-body-bg: #ffffff; --bs-body-bg-rgb: 255,255,255;
  --bs-body-color: #0a2540; --bs-body-color-rgb: 10,37,64;
  --bs-primary: #635bff; --bs-primary-rgb: 99,91,255;
  --bs-secondary-color: #425466;
  --bs-tertiary-bg: #f6f9fc;
  --bs-border-color: #e3e8ee;
}

body.theme-cloud {
  --bs-body-font-family: 'Lato', sans-serif;
  --bs-heading-font-family: 'Playfair Display', serif;
  --bs-heading-color: #0f0e0d;
  --bs-body-bg: #fafaf9; --bs-body-bg-rgb: 250,250,249;
  --bs-body-color: #1c1917; --bs-body-color-rgb: 28,25,23;
  --bs-primary: #0d9488; --bs-primary-rgb: 13,148,136;
  --bs-secondary-color: #78716c;
  --bs-tertiary-bg: #f0eee9;
  --bs-border-color: #e7e5e4;
}

body.theme-warm-corporate {
  --bs-body-font-family: 'Raleway', sans-serif;
  --bs-heading-font-family: 'Bitter', serif;
  --bs-heading-color: #0f0d0a;
  --bs-body-bg: #fffbf5; --bs-body-bg-rgb: 255,251,245;
  --bs-body-color: #1e1b18; --bs-body-color-rgb: 30,27,24;
  --bs-primary: #c2410c; --bs-primary-rgb: 194,65,12;
  --bs-secondary-color: #9c8b7a;
  --bs-tertiary-bg: #fff7ed;
  --bs-border-color: #e7e5e4;
}

body.theme-ocean-breeze {
  --bs-body-font-family: 'Nunito Sans', sans-serif;
  --bs-heading-font-family: 'Quicksand', sans-serif;
  --bs-heading-font-weight: 700;
  --bs-heading-color: #0a3835;
  --bs-body-bg: #f0fdfa; --bs-body-bg-rgb: 240,253,250;
  --bs-body-color: #134e4a; --bs-body-color-rgb: 19,78,74;
  --bs-primary: #0f766e; --bs-primary-rgb: 15,118,110;
  --bs-secondary-color: #3d7a74;
  --bs-tertiary-bg: #ccfbf1;
  --bs-border-color: #99f6e4;
}

body.theme-lavender-haze {
  --bs-body-font-family: 'Nunito', sans-serif;
  --bs-heading-font-family: 'Outfit', sans-serif;
  --bs-heading-font-weight: 700;
  --bs-heading-color: #1a0940;
  --bs-body-bg: #faf5ff; --bs-body-bg-rgb: 250,245,255;
  --bs-body-color: #2e1065; --bs-body-color-rgb: 46,16,101;
  --bs-primary: #a855f7; --bs-primary-rgb: 168,85,247;
  --bs-secondary-color: #6b5880;
  --bs-tertiary-bg: #f3e8ff;
  --bs-border-color: #e9d5ff;
}

body.theme-sunset-warm {
  --bs-body-font-family: 'Inter', sans-serif;
  --bs-heading-font-family: 'Sora', sans-serif;
  --bs-heading-font-weight: 700;
  --bs-heading-color: #2d1001;
  --bs-body-bg: #fffbeb; --bs-body-bg-rgb: 255,251,235;
  --bs-body-color: #451a03; --bs-body-color-rgb: 69,26,3;
  --bs-primary: #e11d48; --bs-primary-rgb: 225,29,72;
  --bs-secondary-color: #92400e;
  --bs-tertiary-bg: #fef3c7;
  --bs-border-color: #fde68a;
}

body.theme-sage-garden {
  --bs-body-font-family: 'Nunito Sans', sans-serif;
  --bs-heading-font-family: 'Merriweather', serif;
  --bs-heading-color: #0d1a02;
  --bs-body-bg: #f7fee7; --bs-body-bg-rgb: 247,254,231;
  --bs-body-color: #1a2e05; --bs-body-color-rgb: 26,46,5;
  --bs-primary: #4d7c0f; --bs-primary-rgb: 77,124,15;
  --bs-secondary-color: #6b7280;
  --bs-tertiary-bg: #ecfccb;
  --bs-border-color: #d9f99d;
}

body.theme-ocean {
  --bs-body-font-family: 'Source Sans 3', sans-serif;
  --bs-heading-font-family: 'Playfair Display', serif;
  --bs-heading-color: #012a60;
  --bs-body-bg: #f0f8ff; --bs-body-bg-rgb: 240,248,255;
  --bs-body-color: #023e8a; --bs-body-color-rgb: 2,62,138;
  --bs-primary: #0077b6; --bs-primary-rgb: 0,119,182;
  --bs-secondary-color: #4a7fad;
  --bs-tertiary-bg: #e0f0ff;
  --bs-border-color: #bae6fd;
}

body.theme-forest {
  --bs-body-font-family: 'Nunito Sans', sans-serif;
  --bs-heading-font-family: 'Lora', serif;
  --bs-heading-color: #0e2a1e;
  --bs-body-bg: #f1f8e9; --bs-body-bg-rgb: 241,248,233;
  --bs-body-color: #1b4332; --bs-body-color-rgb: 27,67,50;
  --bs-primary: #2d6a4f; --bs-primary-rgb: 45,106,79;
  --bs-secondary-color: #4a7a5f;
  --bs-tertiary-bg: #e0efd4;
  --bs-border-color: #c8e6c9;
}

body.theme-sunset {
  --bs-body-font-family: 'DM Sans', sans-serif;
  --bs-heading-font-family: 'DM Serif Display', serif;
  --bs-heading-color: #1a3640;
  --bs-body-bg: #fef9ef; --bs-body-bg-rgb: 254,249,239;
  --bs-body-color: #264653; --bs-body-color-rgb: 38,70,83;
  --bs-primary: #e76f51; --bs-primary-rgb: 231,111,81;
  --bs-secondary-color: #6b8290;
  --bs-tertiary-bg: #fdf0dd;
  --bs-border-color: #fcd5b5;
}

body.theme-royal {
  --bs-body-font-family: 'Outfit', sans-serif;
  --bs-heading-font-family: 'Fraunces', serif;
  --bs-heading-color: #250548;
  --bs-body-bg: #f5f0ff; --bs-body-bg-rgb: 245,240,255;
  --bs-body-color: #3c096c; --bs-body-color-rgb: 60,9,108;
  --bs-primary: #7b2cbf; --bs-primary-rgb: 123,44,191;
  --bs-secondary-color: #7a5a9e;
  --bs-tertiary-bg: #ece0ff;
  --bs-border-color: #d8b4fe;
}

body.theme-minimal {
  --bs-body-font-family: 'IBM Plex Sans', sans-serif;
  --bs-heading-font-family: 'IBM Plex Serif', serif;
  --bs-heading-color: #111215;
  --bs-body-bg: #fafafa; --bs-body-bg-rgb: 250,250,250;
  --bs-body-color: #212529; --bs-body-color-rgb: 33,37,41;
  --bs-primary: #3d5a80; --bs-primary-rgb: 61,90,128;
  --bs-secondary-color: #6c757d;
  --bs-tertiary-bg: #f0f0f0;
  --bs-border-color: #dee2e6;
}

/* ==================== DARK THEMES (shared) ==================== */

body.dark-theme {
  --bs-danger: #f06070; --bs-danger-rgb: 240,96,112;
  --bs-border-color: rgba(255,255,255,0.08);
  --bs-emphasis-color: #fff;
  --bs-emphasis-color-rgb: 255,255,255;
  --bs-secondary-bg-subtle: color-mix(in srgb, var(--bs-secondary), var(--bs-body-bg) 85%);
  --bs-success-bg-subtle: color-mix(in srgb, var(--bs-success), var(--bs-body-bg) 85%);
  --bs-info-bg-subtle: color-mix(in srgb, var(--bs-info), var(--bs-body-bg) 85%);
  --bs-warning-bg-subtle: color-mix(in srgb, var(--bs-warning), var(--bs-body-bg) 85%);
  --bs-danger-bg-subtle: color-mix(in srgb, var(--bs-danger), var(--bs-body-bg) 85%);
  --bs-light-bg-subtle: color-mix(in srgb, var(--bs-light), var(--bs-body-bg) 92%);
  --bs-dark-bg-subtle: color-mix(in srgb, var(--bs-dark), var(--bs-body-bg) 95%);
  --bs-secondary-border-subtle: color-mix(in srgb, var(--bs-secondary), var(--bs-body-bg) 70%);
  --bs-success-border-subtle: color-mix(in srgb, var(--bs-success), var(--bs-body-bg) 70%);
  --bs-info-border-subtle: color-mix(in srgb, var(--bs-info), var(--bs-body-bg) 70%);
  --bs-warning-border-subtle: color-mix(in srgb, var(--bs-warning), var(--bs-body-bg) 70%);
  --bs-danger-border-subtle: color-mix(in srgb, var(--bs-danger), var(--bs-body-bg) 70%);
  --bs-light-border-subtle: color-mix(in srgb, var(--bs-light), var(--bs-body-bg) 85%);
  --bs-dark-border-subtle: color-mix(in srgb, var(--bs-dark), var(--bs-body-bg) 90%);
  --bs-secondary-text-emphasis: color-mix(in srgb, var(--bs-secondary), white 40%);
  --bs-success-text-emphasis: color-mix(in srgb, var(--bs-success), white 40%);
  --bs-info-text-emphasis: color-mix(in srgb, var(--bs-info), white 40%);
  --bs-warning-text-emphasis: color-mix(in srgb, var(--bs-warning), white 40%);
  --bs-danger-text-emphasis: color-mix(in srgb, var(--bs-danger), white 40%);
  --bs-light-text-emphasis: color-mix(in srgb, var(--bs-light), white 20%);
  --bs-dark-text-emphasis: color-mix(in srgb, var(--bs-body-color), white 10%);
  --bs-border-color-translucent: color-mix(in srgb, var(--bs-body-color), transparent 85%);
  color-scheme: dark;
}
body.dark-theme .bg-light { color: #212529 !important; }
body.dark-theme .bg-warning { color: #212529; }
body.dark-theme .bg-info { color: #212529; }
body.dark-theme .card { background-color: var(--bs-tertiary-bg); border-color: var(--bs-border-color); color: var(--bs-body-color); }
body.dark-theme .card-header { background-color: color-mix(in srgb, var(--bs-tertiary-bg), black 10%); border-color: var(--bs-border-color); }
body.dark-theme .card-footer { background-color: color-mix(in srgb, var(--bs-tertiary-bg), black 10%); border-color: var(--bs-border-color); }
body.dark-theme .modal-content { background-color: var(--bs-tertiary-bg); color: var(--bs-body-color); }
body.dark-theme .modal-header, body.dark-theme .modal-footer { border-color: var(--bs-border-color); }
body.dark-theme .dropdown-menu { background-color: var(--bs-tertiary-bg); border-color: var(--bs-border-color); }
body.dark-theme .dropdown-item { color: var(--bs-body-color); }
body.dark-theme .dropdown-item:hover, body.dark-theme .dropdown-item:focus { background-color: var(--bs-primary-bg-subtle); color: var(--bs-primary); }
body.dark-theme .table { --bs-table-bg: transparent; --bs-table-color: var(--bs-body-color); --bs-table-border-color: var(--bs-border-color); }
body.dark-theme .form-control, body.dark-theme .form-select { background-color: var(--bs-tertiary-bg); border-color: var(--bs-border-color); color: var(--bs-body-color); }
body.dark-theme .input-group-text { background-color: color-mix(in srgb, var(--bs-tertiary-bg), black 10%); border-color: var(--bs-border-color); color: var(--bs-body-color); }
body.dark-theme .list-group-item { background-color: var(--bs-tertiary-bg); border-color: var(--bs-border-color); color: var(--bs-body-color); }
body.dark-theme .offcanvas { background-color: var(--bs-tertiary-bg); color: var(--bs-body-color); }
body.dark-theme .toast { background-color: var(--bs-tertiary-bg); color: var(--bs-body-color); }
body.dark-theme .toast-header { background-color: var(--bs-body-bg); color: var(--bs-body-color); border-color: var(--bs-border-color); }
body.dark-theme .accordion-item { background-color: var(--bs-tertiary-bg); border-color: var(--bs-border-color); }
body.dark-theme .accordion-button { background-color: var(--bs-tertiary-bg); color: var(--bs-body-color); }
body.dark-theme .page-link { background-color: var(--bs-tertiary-bg); border-color: var(--bs-border-color); color: var(--bs-body-color); }
body.dark-theme .progress { background-color: var(--bs-tertiary-bg); }
body.dark-theme code { background: var(--bs-tertiary-bg); color: var(--bs-primary); }
body.dark-theme .nav-tabs { border-bottom-color: var(--bs-border-color); }
body.dark-theme .nav-tabs .nav-link { color: var(--bs-link-color); }
body.dark-theme .nav-tabs .nav-link:hover { border-color: var(--bs-border-color); color: var(--bs-body-color); }
body.dark-theme .nav-tabs .nav-link.active { background-color: var(--bs-body-bg); color: var(--bs-body-color); border-color: var(--bs-border-color) var(--bs-border-color) var(--bs-body-bg); }
body.dark-theme .breadcrumb-item + .breadcrumb-item::before { color: var(--bs-secondary-color); }
body.dark-theme .breadcrumb-item.active { color: var(--bs-secondary-color); }
body.dark-theme .breadcrumb-item a { color: var(--bs-link-color); }
body.dark-theme .btn-close:not(.btn-close-white) { filter: invert(1) grayscale(100%) brightness(200%); }
body.dark-theme hr { border-color: var(--bs-border-color); opacity: .5; }
body.dark-theme .navbar .navbar-toggler-icon { filter: invert(1); }
body.dark-theme .alert-primary { --bs-alert-color: var(--bs-primary-text-emphasis); --bs-alert-bg: var(--bs-primary-bg-subtle); --bs-alert-border-color: var(--bs-primary-border-subtle); }
body.dark-theme .alert-secondary { --bs-alert-color: var(--bs-secondary-text-emphasis); --bs-alert-bg: var(--bs-secondary-bg-subtle); --bs-alert-border-color: var(--bs-secondary-border-subtle); }
body.dark-theme .alert-success { --bs-alert-color: var(--bs-success-text-emphasis); --bs-alert-bg: var(--bs-success-bg-subtle); --bs-alert-border-color: var(--bs-success-border-subtle); }
body.dark-theme .alert-danger { --bs-alert-color: var(--bs-danger-text-emphasis); --bs-alert-bg: var(--bs-danger-bg-subtle); --bs-alert-border-color: var(--bs-danger-border-subtle); }
body.dark-theme .alert-warning { --bs-alert-color: var(--bs-warning-text-emphasis); --bs-alert-bg: var(--bs-warning-bg-subtle); --bs-alert-border-color: var(--bs-warning-border-subtle); }
body.dark-theme .alert-info { --bs-alert-color: var(--bs-info-text-emphasis); --bs-alert-bg: var(--bs-info-bg-subtle); --bs-alert-border-color: var(--bs-info-border-subtle); }
body.dark-theme .alert-light { --bs-alert-color: var(--bs-body-color); --bs-alert-bg: var(--bs-light-bg-subtle); --bs-alert-border-color: var(--bs-light-border-subtle); }
body.dark-theme .alert-dark { --bs-alert-color: var(--bs-body-color); --bs-alert-bg: var(--bs-dark-bg-subtle); --bs-alert-border-color: var(--bs-dark-border-subtle); }
body.dark-theme .alert .btn-close { filter: invert(1) grayscale(100%) brightness(200%); }

/* ==================== DARK THEMES ==================== */

body.theme-lauren01 {
  --bs-body-font-family: 'Inter', sans-serif;
  --bs-heading-font-family: 'Cormorant Garamond', serif;
  --bs-heading-color: #fff;
  --theme-btn-primary-color: #000;
  --bs-body-bg: #0d0d0d; --bs-body-bg-rgb: 13,13,13;
  --bs-body-color: #f3f3f3; --bs-body-color-rgb: 243,243,243;
  --bs-primary: #c6a972; --bs-primary-rgb: 198,169,114;
  --bs-secondary-color: #9f9f9f;
  --bs-tertiary-bg: #161616;
}

body.theme-lauren02 {
  --bs-body-font-family: 'Inter', sans-serif;
  --bs-heading-font-family: 'Inter', sans-serif;
  --bs-heading-font-weight: 600;
  --bs-heading-color: #fff;
  --bs-body-bg: #0e0b12; --bs-body-bg-rgb: 14,11,18;
  --bs-body-color: #e6e6e6; --bs-body-color-rgb: 230,230,230;
  --bs-primary: #8e44ad; --bs-primary-rgb: 142,68,173;
  --bs-link-color: #6c5ce7;
  --bs-link-hover-color: #ff6fae;
  --bs-secondary-color: #2c3e50;
  --bs-tertiary-bg: #15111c;
}

body.theme-midnight {
  --bs-body-font-family: 'Inter', sans-serif;
  --bs-heading-font-family: 'Manrope', sans-serif;
  --bs-heading-font-weight: 700;
  --bs-heading-color: #fff;
  --bs-body-bg: #09090b; --bs-body-bg-rgb: 9,9,11;
  --bs-body-color: #fafafa; --bs-body-color-rgb: 250,250,250;
  --bs-primary: #3b82f6; --bs-primary-rgb: 59,130,246;
  --bs-secondary-color: #d4d4dc;
  --bs-tertiary-bg: #18181b;
}

body.theme-navy-dashboard {
  --bs-body-font-family: 'Nunito Sans', sans-serif;
  --bs-heading-font-family: 'Plus Jakarta Sans', sans-serif;
  --bs-heading-font-weight: 600;
  --bs-heading-color: #fff;
  --theme-btn-primary-color: #000;
  --bs-body-bg: #0a2540; --bs-body-bg-rgb: 10,37,64;
  --bs-body-color: #e8ecef; --bs-body-color-rgb: 232,236,239;
  --bs-primary: #00d4aa; --bs-primary-rgb: 0,212,170;
  --bs-secondary-color: #8b9caf;
  --bs-tertiary-bg: #0e3356;
}

body.theme-obsidian {
  --bs-body-font-family: 'Lato', sans-serif;
  --bs-heading-font-family: 'Playfair Display', serif;
  --bs-heading-color: #fff;
  --theme-btn-primary-color: #000;
  --bs-body-bg: #0c0a09; --bs-body-bg-rgb: 12,10,9;
  --bs-body-color: #f5f5f4; --bs-body-color-rgb: 245,245,244;
  --bs-primary: #d4a843; --bs-primary-rgb: 212,168,67;
  --bs-secondary-color: #c8c0b8;
  --bs-tertiary-bg: #1c1917;
}

body.theme-deep-slate {
  --bs-body-font-family: 'Inter', sans-serif;
  --bs-heading-font-family: 'Inter', sans-serif;
  --bs-heading-font-weight: 600;
  --bs-heading-color: #fff;
  --bs-body-bg: #111827; --bs-body-bg-rgb: 17,24,39;
  --bs-body-color: #f9fafb; --bs-body-color-rgb: 249,250,251;
  --bs-primary: #8b5cf6; --bs-primary-rgb: 139,92,246;
  --bs-secondary-color: #9ca3af;
  --bs-tertiary-bg: #1f2937;
}

body.theme-frosted-glass {
  --bs-body-font-family: 'Inter', sans-serif;
  --bs-heading-font-family: 'Space Grotesk', sans-serif;
  --bs-heading-font-weight: 700;
  --bs-heading-color: #fff;
  --theme-btn-primary-color: #000;
  --bs-body-bg: #0f172a; --bs-body-bg-rgb: 15,23,42;
  --bs-body-color: #e2e8f0; --bs-body-color-rgb: 226,232,240;
  --bs-primary: #38bdf8; --bs-primary-rgb: 56,189,248;
  --bs-secondary-color: #94a3b8;
  --bs-tertiary-bg: #1e293b;
  --bs-border-color: rgba(255,255,255,0.06);
}

body.theme-retro-terminal {
  --bs-body-font-family: 'JetBrains Mono', monospace;
  --bs-heading-font-family: 'Space Mono', monospace;
  --bs-heading-font-weight: 700;
  --bs-heading-color: #ff6b35;
  --theme-btn-primary-color: #000;
  --bs-body-bg: #0c0c0c; --bs-body-bg-rgb: 12,12,12;
  --bs-body-color: #33ff33; --bs-body-color-rgb: 51,255,51;
  --bs-primary: #ff6b35; --bs-primary-rgb: 255,107,53;
  --bs-secondary-color: #44cc44;
  --bs-tertiary-bg: #1a1a2e;
  --bs-border-color: rgba(51,255,51,0.08);
}

body.theme-cyber-noir {
  --bs-body-font-family: 'Fira Code', monospace;
  --bs-heading-font-family: 'Share Tech Mono', monospace;
  --bs-heading-font-weight: 700;
  --bs-heading-color: #ff4080;
  --bs-body-bg: #0a0a0f; --bs-body-bg-rgb: 10,10,15;
  --bs-body-color: #e0e0ff; --bs-body-color-rgb: 224,224,255;
  --bs-primary: #ff4080; --bs-primary-rgb: 255,64,128;
  --bs-secondary-color: #8888bb;
  --bs-tertiary-bg: #14141f;
  --bs-border-color: rgba(224,224,255,0.07);
}

body.theme-neon-grid {
  --bs-body-font-family: 'Source Code Pro', monospace;
  --bs-heading-font-family: 'Ubuntu Mono', monospace;
  --bs-heading-font-weight: 700;
  --bs-heading-color: #fff;
  --theme-btn-primary-color: #000;
  --bs-body-bg: #050510; --bs-body-bg-rgb: 5,5,16;
  --bs-body-color: #c8d6e5; --bs-body-color-rgb: 200,214,229;
  --bs-primary: #00c9a0; --bs-primary-rgb: 0,201,160;
  --bs-secondary-color: #7b8ca8;
  --bs-tertiary-bg: #0d0d20;
  --bs-border-color: rgba(0,255,204,0.06);
}

body.theme-phosphor-amber {
  --bs-body-font-family: 'Courier Prime', monospace;
  --bs-heading-font-family: 'IBM Plex Mono', monospace;
  --bs-heading-font-weight: 700;
  --bs-heading-color: #fff;
  --theme-btn-primary-color: #000;
  --bs-body-bg: #0a0800; --bs-body-bg-rgb: 10,8,0;
  --bs-body-color: #ffb833; --bs-body-color-rgb: 255,184,51;
  --bs-primary: #ff6600; --bs-primary-rgb: 255,102,0;
  --bs-secondary-color: #cc9944;
  --bs-tertiary-bg: #161200;
  --bs-border-color: rgba(255,184,51,0.06);
}

body.theme-pearl-ink {
  --bs-body-font-family: 'Hind', sans-serif;
  --bs-heading-font-family: 'Spectral', serif;
  --bs-heading-font-weight: 600;
  --bs-heading-color: #0c0c18;
  --bs-body-bg: #faf9f7; --bs-body-bg-rgb: 250,249,247;
  --bs-body-color: #161625; --bs-body-color-rgb: 22,22,37;
  --bs-primary: #2c5282; --bs-primary-rgb: 44,82,130;
  --bs-secondary-color: #5a6270;
  --bs-tertiary-bg: #f0eeeb;
  --bs-border-color: #e2e0dd;
}

body.theme-blush-paper {
  --bs-body-font-family: 'Poppins', sans-serif;
  --bs-heading-font-family: 'Josefin Sans', sans-serif;
  --bs-heading-font-weight: 600;
  --bs-heading-color: #100b09;
  --bs-body-bg: #fdf7f4; --bs-body-bg-rgb: 253,247,244;
  --bs-body-color: #1c1412; --bs-body-color-rgb: 28,20,18;
  --bs-primary: #b5485a; --bs-primary-rgb: 181,72,90;
  --bs-secondary-color: #7d6b68;
  --bs-tertiary-bg: #f5ede8;
  --bs-border-color: #e8ddd8;
}

body.theme-slate-mist {
  --bs-body-font-family: 'Archivo', sans-serif;
  --bs-heading-font-family: 'Newsreader', serif;
  --bs-heading-font-weight: 600;
  --bs-heading-color: #060b12;
  --bs-body-bg: #f5f7fa; --bs-body-bg-rgb: 245,247,250;
  --bs-body-color: #0c1520; --bs-body-color-rgb: 12,21,32;
  --bs-primary: #3b6098; --bs-primary-rgb: 59,96,152;
  --bs-secondary-color: #5c6b7d;
  --bs-tertiary-bg: #eaecf0;
  --bs-border-color: #dde0e5;
}

body.theme-velvet-dusk {
  --bs-body-font-family: 'Work Sans', sans-serif;
  --bs-heading-font-family: 'Crimson Pro', serif;
  --bs-heading-font-weight: 600;
  --bs-heading-color: #fff;
  --theme-btn-primary-color: #000;
  --bs-body-bg: #0d0a0e; --bs-body-bg-rgb: 13,10,14;
  --bs-body-color: #ede6ec; --bs-body-color-rgb: 237,230,236;
  --bs-primary: #c0567f; --bs-primary-rgb: 192,86,127;
  --bs-secondary-color: #9a8da0;
  --bs-tertiary-bg: #17131a;
  --bs-border-color: rgba(255,255,255,0.07);
}

body.theme-arctic-night {
  --bs-body-font-family: 'Karla', sans-serif;
  --bs-heading-font-family: 'Rubik', sans-serif;
  --bs-heading-font-weight: 700;
  --bs-heading-color: #fff;
  --theme-btn-primary-color: #000;
  --bs-body-bg: #080c12; --bs-body-bg-rgb: 8,12,18;
  --bs-body-color: #e5eaf0; --bs-body-color-rgb: 229,234,240;
  --bs-primary: #5ba8d9; --bs-primary-rgb: 91,168,217;
  --bs-secondary-color: #8a9db0;
  --bs-tertiary-bg: #101620;
  --bs-border-color: rgba(255,255,255,0.07);
}

body.theme-moss-shadow {
  --bs-body-font-family: 'Cabin', sans-serif;
  --bs-heading-font-family: 'Libre Baskerville', serif;
  --bs-heading-font-weight: 700;
  --bs-heading-color: #fff;
  --theme-btn-primary-color: #000;
  --bs-body-bg: #0a0d09; --bs-body-bg-rgb: 10,13,9;
  --bs-body-color: #e4e8e0; --bs-body-color-rgb: 228,232,224;
  --bs-primary: #7cb342; --bs-primary-rgb: 124,179,66;
  --bs-secondary-color: #98a88c;
  --bs-tertiary-bg: #121810;
  --bs-border-color: rgba(255,255,255,0.06);
}

body.theme-charcoal-rust {
  --bs-body-font-family: 'Atkinson Hyperlegible', sans-serif;
  --bs-heading-font-family: 'Vollkorn', serif;
  --bs-heading-font-weight: 600;
  --bs-heading-color: #fff;
  --theme-btn-primary-color: #000;
  --bs-body-bg: #0d0c0b; --bs-body-bg-rgb: 13,12,11;
  --bs-body-color: #eae5e0; --bs-body-color-rgb: 234,229,224;
  --bs-primary: #d0845c; --bs-primary-rgb: 208,132,92;
  --bs-secondary-color: #b0a298;
  --bs-tertiary-bg: #161412;
  --bs-border-color: rgba(255,255,255,0.07);
}

/* ==================== LINK EFFECTS (driven by body.effect-* class from JS) ==================== */

/* --- Baseline reset: no effects by default, effects override below --- */
body[class*="theme-"] a:not(.btn):not(.btn-gold):not(.navbar-brand):not(.nav-link) {
  animation: none;
  text-shadow: none;
  background-image: none;
}

/* --- Glitch --- */
@keyframes link-glitch {
  0%   { text-shadow: 2px 0 #ff0040, -2px 0 #0ff; }
  20%  { text-shadow: -2px 1px #ff0040, 2px -1px #0ff; }
  40%  { text-shadow: 2px -1px #ff0040, -2px 1px #0ff; }
  60%  { text-shadow: -1px 2px #ff0040, 1px -2px #0ff; }
  80%  { text-shadow: 1px -1px #ff0040, -1px 1px #0ff; }
  100% { text-shadow: -2px 0 #ff0040, 2px 0 #0ff; }
}
body.effect-glitch a:not(.btn):not(.btn-gold):not(.navbar-brand):not(.nav-link) {
  transition: text-shadow 0.1s;
}
body.effect-glitch a:not(.btn):not(.btn-gold):not(.navbar-brand):not(.nav-link):hover {
  animation: link-glitch 0.3s steps(6) 1;
  text-shadow: 1px 0 #ff0040, -1px 0 #0ff;
}

/* --- Neon glow --- */
body.effect-neon a:not(.btn):not(.btn-gold):not(.navbar-brand):not(.nav-link) {
  transition: text-shadow 0.3s, color 0.3s;
}
body.effect-neon a:not(.btn):not(.btn-gold):not(.navbar-brand):not(.nav-link):hover {
  text-shadow: 0 0 6px currentColor, 0 0 14px currentColor, 0 0 28px currentColor;
}

/* --- Underline slide --- */
body.effect-underline a:not(.btn):not(.btn-gold):not(.navbar-brand):not(.nav-link) {
  text-decoration: none;
  background-image: linear-gradient(currentColor, currentColor);
  background-size: 0% 1px;
  background-position: 0 100%;
  background-repeat: no-repeat;
  transition: background-size 0.35s ease;
}
body.effect-underline a:not(.btn):not(.btn-gold):not(.navbar-brand):not(.nav-link):hover {
  background-size: 100% 1px;
}

/* --- Soft lift --- */
body.effect-lift a:not(.btn):not(.btn-gold):not(.navbar-brand):not(.nav-link) {
  text-decoration: none;
  transition: color 0.25s, transform 0.25s;
}
body.effect-lift a:not(.btn):not(.btn-gold):not(.navbar-brand):not(.nav-link):hover {
  transform: translateY(-1px);
  filter: brightness(1.3);
}

/* ==================== GLOBAL THEME PICKER (floating) ==================== */

.tmg-fab {
  position: fixed;
  bottom: 1.5rem;
  left: 1.5rem;
  z-index: 1080;
  width: 48px;
  height: 48px;
  border-radius: 50%;
  border: none;
  background: var(--bs-primary, #0d6efd);
  color: #fff;
  font-size: 1.3rem;
  line-height: 1;
  cursor: pointer;
  box-shadow: 0 4px 14px rgba(0,0,0,.35);
  transition: transform .2s, opacity .2s;
}
.tmg-fab:hover { transform: scale(1.1); }
.tmg-fab.open { transform: scale(0.9); opacity: .7; }

.tmg-panel {
  position: fixed;
  bottom: 5rem;
  left: 1.5rem;
  z-index: 1081;
  width: 280px;
  max-height: 70vh;
  background: var(--bs-body-bg, #fff);
  color: var(--bs-body-color, #212529);
  border: 1px solid var(--bs-border-color, rgba(0,0,0,.15));
  border-radius: .75rem;
  box-shadow: 0 8px 30px rgba(0,0,0,.3);
  display: none;
  flex-direction: column;
  overflow: hidden;
}
.tmg-panel.open { display: flex; }

.tmg-panel-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: .75rem 1rem;
  border-bottom: 1px solid var(--bs-border-color, rgba(0,0,0,.1));
  font-weight: 700;
  font-size: .95rem;
}
.tmg-panel-close {
  background: none;
  border: none;
  font-size: 1.4rem;
  line-height: 1;
  cursor: pointer;
  color: var(--bs-body-color, #212529);
  opacity: .6;
}
.tmg-panel-close:hover { opacity: 1; }

.tmg-list {
  overflow-y: auto;
  padding: .5rem .75rem .75rem;
  flex: 1;
}
.tmg-group-label {
  font-size: .65rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .08em;
  color: var(--bs-secondary-color, #888);
  margin: .6rem 0 .25rem;
}
.tmg-group-label:first-child { margin-top: 0; }

.tmg-card {
  cursor: pointer;
  border: 2px solid transparent;
  border-radius: .5rem;
  padding: .4rem .5rem;
  margin-bottom: .3rem;
  transition: border-color .15s, background .15s;
}
.tmg-card:hover { background: var(--bs-tertiary-bg, rgba(0,0,0,.03)); }
.tmg-card.active {
  border-color: var(--bs-primary, #0d6efd);
  background: var(--bs-primary-bg-subtle, rgba(0,0,0,.05));
}
.tmg-colors {
  display: flex;
  height: 20px;
  border-radius: 3px;
  overflow: hidden;
  margin-bottom: .25rem;
}
.tmg-colors span { flex: 1; }
.tmg-name {
  display: block;
  font-weight: 600;
  font-size: .8rem;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* ==================== THEME SHOWCASE PAGE ==================== */

.section-anchor, [id] { scroll-margin-top: 1rem; }
.toc-sidebar { position: sticky; top: 1rem; }
.toc-sidebar a {
  font-size: 0.85rem;
  text-decoration: none;
  display: block;
  padding: 2px 0;
}
.toc-sidebar .toc-group { font-weight: bold; margin-top: 0.5rem; }
.toc-fab {
  position: fixed;
  bottom: 1.5rem;
  right: 1.5rem;
  z-index: 1060;
  width: 48px;
  height: 48px;
  border-radius: 50%;
  border: none;
  background: var(--bs-primary, #0d6efd);
  color: #fff;
  font-size: 1.4rem;
  line-height: 1;
  cursor: pointer;
  box-shadow: 0 4px 12px rgba(0,0,0,.3);
  transition: transform .2s, opacity .2s;
}
.toc-fab:hover { transform: scale(1.1); }
@media (min-width: 992px) { .toc-fab { display: none; } }
.toc-drawer {
  position: fixed;
  top: 0;
  right: -300px;
  width: 300px;
  height: 100vh;
  z-index: 1070;
  background: var(--bs-body-bg, #fff);
  color: var(--bs-body-color, #212529);
  border-left: 1px solid var(--bs-border-color);
  box-shadow: -4px 0 20px rgba(0,0,0,.2);
  overflow-y: auto;
  transition: right .3s ease;
  padding: 0 1rem 1rem;
}
.toc-drawer.open { right: 0; }
.toc-drawer-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 1rem 0;
  font-weight: 700;
  font-size: 1.1rem;
  border-bottom: 1px solid var(--bs-border-color);
  margin-bottom: .5rem;
}
.toc-drawer-close {
  background: none;
  border: none;
  font-size: 1.5rem;
  cursor: pointer;
  color: inherit;
  padding: 0 4px;
}
.toc-drawer-nav { position: static; }
.toc-overlay {
  display: none;
  position: fixed;
  inset: 0;
  z-index: 1065;
  background: rgba(0,0,0,.4);
}
.toc-overlay.open { display: block; }
@media (min-width: 992px) { .toc-drawer, .toc-overlay { display: none !important; } }
.heading-anchor {
  display: block;
}
.toc-sidebar a,
.toc-drawer-nav a {
  animation: none !important;
  text-shadow: none !important;
  transform: none !important;
  filter: none !important;
  background-image: none !important;
  background-size: initial !important;
}
.heading-anchor .anchor-hash {
  opacity: 0;
  margin-right: 0.3em;
  font-weight: 400;
  transition: opacity 0.2s;
}
.heading-anchor:hover .anchor-hash { opacity: 0.4; }
.heading-anchor:hover .anchor-hash:hover { opacity: 1; }
