:root {
    --x-bg-light: #ffffff;
    --x-text-light: #0f1419;
    --x-text-secondary-light: #536471;
    --x-primary: #1d9bf0;
    --x-primary-rgb: 29, 155, 240;
    --x-border-light: #eff3f4;
    --x-border-light-rgb: 239, 243, 244;
    --x-hover-bg-light: rgba(15, 20, 25, 0.05);
    --x-card-bg-light: #ffffff;
    --x-section-bg-light: #f7f9f9;
    --x-footer-bg-light: #ffffff;
    --x-footer-text-light: var(--x-text-secondary-light);
    --x-footer-heading-light: var(--x-text-light);
    --x-footer-link-light: var(--x-text-secondary-light);
    --x-footer-link-hover-light: var(--x-text-light);
    --x-footer-border-light: var(--x-border-light);
    --auth-container-bg: #ffffff;

    /* Bootstrap Overrides */
    --bs-body-bg: var(--x-bg-light);
    --bs-body-color: var(--x-text-light);
    --bs-secondary-color: var(--x-text-secondary-light);
    --bs-primary: var(--x-primary);
    --bs-primary-rgb: var(--x-primary-rgb);
    --bs-link-color: var(--x-primary);
    --bs-link-color-rgb: var(--x-primary-rgb);
    --bs-link-hover-color: var(--x-primary);
    --bs-border-color: var(--x-border-light);
    --bs-border-color-translucent: rgba(var(--x-text-light), 0.175);
    --bs-card-bg: var(--x-card-bg-light);
    --bs-light-bg-subtle: var(--x-section-bg-light);
    --bs-body-font-family: system-ui, -apple-system, BlinkMacSystemFont, Roboto, Ubuntu, sans-serif;
    --bs-tertiary-bg: var(--x-section-bg-light);
}

[data-bs-theme="dark"] {
    --x-bg-dark: #000000;
    --x-text-dark: #e7e9ea;
    --x-text-secondary-dark: #71767b;
    --x-border-dark: #2f3336;
    --x-border-dark-rgb: 47, 51, 54;
    --x-hover-bg-dark: rgba(231, 233, 234, 0.08);
    --x-card-bg-dark: #000000;
    --x-section-bg-dark: #16181c;
    --x-footer-bg-dark: #000000;
    --x-footer-text-dark: var(--x-text-secondary-dark);
    --x-footer-heading-dark: var(--x-text-dark);
    --x-footer-link-dark: var(--x-text-secondary-dark);
    --x-footer-link-hover-dark: var(--x-text-dark);
    --x-footer-border-dark: var(--x-border-dark);
    --auth-container-bg: #000000;

    /* Bootstrap Overrides */
    --bs-body-bg: var(--x-bg-dark);
    --bs-body-color: var(--x-text-dark);
    --bs-secondary-color: var(--x-text-secondary-dark);
    --bs-primary: var(--x-primary);
    --bs-primary-rgb: var(--x-primary-rgb);
    --bs-link-color: var(--x-primary);
    --bs-link-color-rgb: var(--x-primary-rgb);
    --bs-link-hover-color: var(--x-primary);
    --bs-border-color: var(--x-border-dark);
    --bs-border-color-translucent: rgba(var(--x-text-dark), 0.175);
    --bs-card-bg: var(--x-card-bg-dark);
    --bs-light-bg-subtle: var(--x-section-bg-dark);
    --bs-emphasis-color: #f8f9fa;
    --bs-secondary-bg: #16181c;
    --bs-tertiary-bg: #202327;

    --bs-dropdown-bg: #16181c; 
    --bs-dropdown-link-color: var(--x-text-dark); 
    --bs-dropdown-link-hover-color: var(--bs-emphasis-color);
    --bs-dropdown-link-hover-bg: #202327; 
    --bs-dropdown-border-color: var(--x-border-dark); 
    --bs-dropdown-divider-bg: var(--x-border-dark); 
}

[data-bs-theme="dark"] .navbar { background-color: var(--bs-body-bg) !important; border-bottom: 1px solid var(--bs-border-color); box-shadow: none; }
[data-bs-theme="dark"] .navbar .navbar-brand, 
[data-bs-theme="dark"] .navbar .nav-link { color: var(--bs-body-color); }
[data-bs-theme="dark"] .navbar .nav-link:hover { color: var(--bs-secondary-color); background-color: transparent; }
[data-bs-theme="dark"] .navbar .nav-link.active { color: var(--bs-body-color); font-weight: bold; }
[data-bs-theme="dark"] .btn-primary { background-color: var(--bs-primary); border-color: var(--bs-primary); color: #fff; }
[data-bs-theme="dark"] .btn-primary:hover { filter: brightness(0.9); }
[data-bs-theme="dark"] .btn-outline-primary { color: var(--bs-primary); border-color: var(--bs-primary); }
[data-bs-theme="dark"] .btn-outline-primary:hover { background-color: rgba(var(--bs-primary-rgb), 0.1); color: var(--bs-primary); }
[data-bs-theme="dark"] .btn-outline-secondary { color: var(--bs-body-color); border-color: var(--bs-border-color); }
[data-bs-theme="dark"] .btn-outline-secondary:hover { background-color: var(--x-hover-bg-dark); color: var(--bs-body-color); }
[data-bs-theme="dark"] .card { background-color: var(--bs-card-bg); border: 1px solid var(--bs-border-color); box-shadow: none; border-radius: 1rem; }
[data-bs-theme="dark"] .card-header { background-color: transparent; border-bottom: 1px solid var(--bs-border-color); padding: 0.75rem 1rem; }
[data-bs-theme="dark"] .form-control, 
[data-bs-theme="dark"] .form-select { background-color: var(--bs-body-bg); color: var(--bs-body-color); border: 1px solid var(--bs-border-color); }
[data-bs-theme="dark"] .form-control:focus, 
[data-bs-theme="dark"] .form-select:focus { background-color: var(--bs-body-bg); color: var(--bs-body-color); border-color: var(--bs-primary); box-shadow: 0 0 0 1px var(--bs-primary); }
[data-bs-theme="dark"] .form-label { color: var(--bs-body-color); }
[data-bs-theme="dark"] footer { background-color: var(--x-footer-bg-dark) !important; border-top: 1px solid var(--x-footer-border-dark); }
[data-bs-theme="dark"] footer, 
[data-bs-theme="dark"] footer .text-body-secondary { color: var(--x-footer-text-dark) !important; }
[data-bs-theme="dark"] footer h5, 
[data-bs-theme="dark"] footer h6 { color: var(--x-footer-heading-dark) !important; }
[data-bs-theme="dark"] footer a { color: var(--x-footer-link-dark) !important; text-decoration: none; }
[data-bs-theme="dark"] footer a:hover { color: var(--x-footer-link-hover-dark) !important; }
[data-bs-theme="dark"] footer hr { border-top-color: var(--x-footer-border-dark) !important; opacity: 0.25; }
[data-bs-theme="dark"] .accordion-item { background-color: var(--bs-card-bg); border: 1px solid var(--bs-border-color); }
[data-bs-theme="dark"] .accordion-button { color: var(--bs-body-color); background-color: var(--bs-card-bg); }
[data-bs-theme="dark"] .accordion-button:not(.collapsed) { color: var(--bs-body-color); background-color: var(--bs-body-bg); }
[data-bs-theme="dark"] .accordion-button::after { filter: brightness(0) invert(1); }
[data-bs-theme="dark"] .accordion-button:focus { box-shadow: 0 0 0 1px var(--bs-primary); border-color: var(--bs-primary); }
[data-bs-theme="dark"] .login-container, 
[data-bs-theme="dark"] .register-container, 
[data-bs-theme="dark"] .tfa-container, 
[data-bs-theme="dark"] .reset-container, 
[data-bs-theme="dark"] .request-container { background-color: var(--auth-container-bg); border: 1px solid var(--bs-border-color); box-shadow: none; }
[data-bs-theme="dark"] .error-icon { color: var(--bs-warning); }
[data-bs-theme="dark"] .feature-icon, 
[data-bs-theme="dark"] .feature-icon-lg, 
[data-bs-theme="dark"] .step-icon { color: var(--bs-primary); }
[data-bs-theme="dark"] .dropdown-menu { background-color: var(--bs-dropdown-bg); border-color: var(--bs-dropdown-border-color); }
[data-bs-theme="dark"] .dropdown-item { color: var(--bs-dropdown-link-color); }
[data-bs-theme="dark"] .dropdown-item:hover, 
[data-bs-theme="dark"] .dropdown-item:focus { color: var(--bs-dropdown-link-hover-color); background-color: var(--bs-dropdown-link-hover-bg); }
[data-bs-theme="dark"] .dropdown-item.active, 
[data-bs-theme="dark"] .dropdown-item:active { color: #fff !important; background-color: var(--bs-primary) !important; }
[data-bs-theme="dark"] .dropdown-divider { background-color: var(--bs-dropdown-divider-bg); }
[data-bs-theme="dark"] .table { --bs-table-color: var(--bs-body-color); --bs-table-bg: var(--bs-body-bg); --bs-table-border-color: var(--bs-border-color); --bs-table-striped-bg: var(--bs-secondary-bg); --bs-table-hover-bg: var(--bs-tertiary-bg); }
[data-bs-theme="dark"] .page-link { background-color: var(--bs-secondary-bg); border-color: var(--bs-border-color); color: var(--bs-body-color); }
[data-bs-theme="dark"] .page-link:hover { background-color: var(--bs-tertiary-bg); }
[data-bs-theme="dark"] .page-item.active .page-link { background-color: var(--bs-primary); border-color: var(--bs-primary); color: #fff; }
[data-bs-theme="dark"] .page-item.disabled .page-link { background-color: var(--bs-secondary-bg); border-color: var(--bs-border-color); color: var(--bs-secondary-color); }
[data-bs-theme="dark"] .slider { background-color: #495057; border-color: var(--bs-border-color); }
[data-bs-theme="dark"] input:checked + .slider { background-color: var(--bs-primary); border-color: var(--bs-primary); }
[data-bs-theme="dark"] .slider:before { background-color: #000; border: 1px solid var(--bs-border-color); }
[data-bs-theme="dark"] .slider .icon-moon { color: var(--bs-secondary-color); }
[data-bs-theme="dark"] .slider .icon-sun { color: #fff; }
[data-bs-theme="dark"] input:checked + .slider .icon-moon { color: #fff; }
[data-bs-theme="dark"] input:checked + .slider .icon-sun { color: var(--bs-primary); }

body {
    display: flex; flex-direction: column;
    min-height: 100vh;
    font-family: var(--bs-body-font-family);
    transition: background-color 0.2s ease, color 0.2s ease;
    background-color: var(--bs-body-bg);
    color: var(--bs-body-color);
}
main {
    flex-grow: 1;
}

h1, h2, h3, h4, h5, h6 {
    color: var(--bs-body-color);
}
.text-muted {
    color: var(--bs-secondary-color) !important;
}

footer {
    margin-top: auto; padding-top: 2rem; padding-bottom: 2rem;
    background-color: var(--x-footer-bg-light);
    border-top: 1px solid var(--bs-border-color);
    transition: background-color 0.2s ease, border-color 0.2s ease;
    color: var(--x-footer-text-light);
}
footer h5, footer h6 {
    color: var(--x-footer-heading-light);
}
footer a {
    color: var(--x-footer-link-light); text-decoration: none;
}
footer a:hover {
    color: var(--x-footer-link-hover-light);
}
footer hr {
    border-top-color: var(--x-footer-border-light); opacity: 0.25;
}
footer .text-body-secondary {
    color: var(--x-footer-text-light) !important;
}

.navbar {
    box-shadow: none;
    border-bottom: 1px solid var(--bs-border-color);
    transition: background-color 0.2s ease, border-color 0.2s ease;
    background-color: var(--bs-body-bg) !important;
}

.card {
    transition: background-color 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease-in-out, transform 0.2s ease-in-out;
    border-radius: 1rem;
    border: 1px solid var(--bs-border-color);
    box-shadow: none;
    background-color: var(--bs-card-bg);
}

.card:hover {
    transform: translateY(-3px);
    box-shadow: 0 0.3rem 0.8rem rgba(0,0,0,0.08);
}
.card:hover[data-bs-theme="dark"] { 
    background-color: var(--x-hover-bg-dark);
    box-shadow: 0 0.3rem 0.8rem rgba(255,255,255,0.05);
}

.card-header { padding: 0.75rem 1rem; }

.login-container, .register-container, .tfa-container, .reset-container, .request-container {
    max-width: 450px;
    width: 100%;
    padding: 2rem;
    border-radius: 1rem;
    position: relative;
    border: 1px solid var(--bs-border-color);
    background-color: var(--auth-container-bg);
    box-shadow: none;
    transition: background-color 0.2s ease, border-color 0.2s ease;
    margin: 2rem auto;
    z-index: 1;
}

.error-container {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    min-height: calc(100vh - 250px);
    text-align: center;
    padding: 2rem 0;
}
.error-icon {
    font-size: 4rem;
    margin-bottom: 1rem;
    color: var(--bs-secondary-color);
}

.feature-icon, .feature-icon-lg, .step-icon {
    font-size: 2.8rem;
    margin-bottom: 1rem;
    color: var(--bs-primary);
}
.step-icon {
    color: var(--bs-secondary-color);
    font-size: 3.2rem;
}

.section-bg-light {
    background-color: var(--bs-light-bg-subtle);
}

.dashboard-main-content {
    padding: 1.5rem;
}
.dashboard-sidebar {
    background-color: var(--bs-tertiary-bg);
    padding: 1rem;
    border-right: 1px solid var(--bs-border-color);
}
[data-bs-theme="dark"] .dashboard-sidebar {
    background-color: var(--bs-tertiary-bg);
}
.dashboard-card {
    margin-bottom: 1.5rem;
}
.pagination {
    margin-top: 1.5rem;
}

/* Theme Switcher */
.theme-switch {
  display: inline-block;
  height: 26px;
  position: relative;
  width: 50px;
  cursor: pointer;
  user-select: none;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  vertical-align: middle;
}
.theme-switch input {
    opacity: 0;
    width: 0;
    height: 0;
    position: absolute;
}
.slider {
  position: absolute;
  cursor: pointer;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: #ccc;
  transition: .3s ease;
  border: 1px solid var(--bs-border-color);
}
.slider:before {
  position: absolute;
  content: "";
  height: 20px;
  width: 20px;
  left: 2px;
  bottom: 2px;
  background-color: white;
  transition: .3s ease;
  z-index: 2;
}
.slider.round {
    border-radius: 26px;
}
.slider.round:before {
    border-radius: 50%;
}
.slider .icon-container {
    position: absolute;
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0 4px;
    box-sizing: border-box;
    z-index: 1;
    overflow: hidden;
}
.slider .icon-container i {
    font-size: 14px;
    line-height: 1;
    color: #fff;
    transition: color 0.3s ease;
    flex-shrink: 0;
}
.slider .icon-moon {
    color: var(--bs-secondary-color);
}
.slider .icon-sun {
    color: #fff;
}
input:checked + .slider {
    background-color: var(--bs-primary);
    border-color: var(--bs-primary);
}
input:checked + .slider:before {
    transform: translateX(24px);
}
input:checked + .slider .icon-moon {
    color: #fff;
}
input:checked + .slider .icon-sun {
    color: var(--bs-primary);
}

/* Logo Styles */
.navbar-brand img.logo {
    height: 32px;
    width: auto;
    vertical-align: middle;
}
.logo-bottom {
    height: 38px;
    width: auto;
    opacity: 0.9;
    transition: opacity 0.2s ease;
    vertical-align: middle;
}
.logo-bottom:hover {
     opacity: 1;
}

/* Default state (light theme) */
.logo-light {
    display: inline-block !important;
}
.logo-dark {
    display: none !important;
}

/* Dark theme overrides */
[data-bs-theme="dark"] .logo-light {
    display: none !important;
}
[data-bs-theme="dark"] .logo-dark {
    display: inline-block !important;
}

/* Custom VK Icon */
.bi-vk::before {
    content: "";
    display: inline-block;
    width: 1em;
    height: 1em;
    background-color: currentColor;
    -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3e%3cpath d='M1.2621749999999998 1.2621749999999998C0.16 2.3643464285714284 0.16 4.138485714285714 0.16 7.6864v0.6271999999999999c0 3.5479142857142856 0 5.322064285714285 1.102175 6.424214285714285C2.3643464285714284 15.839999999999998 4.138485714285714 15.839999999999998 7.6864 15.839999999999998h0.6271999999999999c3.5479142857142856 0 5.322064285714285 0 6.424214285714285 -1.1021857142857143 1.1021857142857143 -1.10215 1.1021857142857143 -2.8762999999999996 1.1021857142857143 -6.424214285714285v-0.6271999999999999c0 -3.5479142857142856 0 -5.3220535714285715 -1.1021857142857143 -6.424225C13.635664285714286 0.16 11.861514285714286 0.16 8.3136 0.16h-0.6271999999999999c-3.5479142857142856 0 -5.3220535714285715 0 -6.424225 1.102175ZM2.8059999999999996 4.929346428571429h1.7901464285714284c0.0588 2.9922535714285714 1.3785071428571427 4.259707142857143 2.4238535714285714 4.521053571428571V4.929346428571429h1.6856V7.51c1.0322535714285712 -0.11105357142857143 2.1168 -1.2870535714285714 2.4826535714285716 -2.5806535714285714h1.6856c-0.1379 0.6708785714285714 -0.4127535714285714 1.3060571428571428 -0.807342857142857 1.865917857142857 -0.39455714285714283 0.559825 -0.9003749999999999 1.0322214285714286 -1.4858571428571428 1.3876821428571429 0.6536964285714285 0.3245178571428571 1.231092857142857 0.7841035714285713 1.6939678571428571 1.3483392857142857 0.462875 0.5642678571428571 0.8007285714285715 1.2203428571428572 0.9912321428571428 1.9248607142857141h-1.8554535714285714c-0.170975 -0.611975 -0.5189107142857142 -1.1597964285714284 -1.000125 -1.574757142857143 -0.48117857142857146 -0.414925 -1.0742214285714284 -0.6785107142857143 -1.704675 -0.7576428571428571v2.3324h-0.20254642857142854c-3.5737071428571427 0 -5.612117857142857 -2.4499999999999997 -5.6970535714285715 -6.5268Z'/%3e%3c/svg%3e");
    mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3e%3cpath d='M1.2621749999999998 1.2621749999999998C0.16 2.3643464285714284 0.16 4.138485714285714 0.16 7.6864v0.6271999999999999c0 3.5479142857142856 0 5.322064285714285 1.102175 6.424214285714285C2.3643464285714284 15.839999999999998 4.138485714285714 15.839999999999998 7.6864 15.839999999999998h0.6271999999999999c3.5479142857142856 0 5.322064285714285 0 6.424214285714285 -1.1021857142857143 1.1021857142857143 -1.10215 1.1021857142857143 -2.8762999999999996 1.1021857142857143 -6.424214285714285v-0.6271999999999999c0 -3.5479142857142856 0 -5.3220535714285715 -1.1021857142857143 -6.424225C13.635664285714286 0.16 11.861514285714286 0.16 8.3136 0.16h-0.6271999999999999c-3.5479142857142856 0 -5.3220535714285715 0 -6.424225 1.102175ZM2.8059999999999996 4.929346428571429h1.7901464285714284c0.0588 2.9922535714285714 1.3785071428571427 4.259707142857143 2.4238535714285714 4.521053571428571V4.929346428571429h1.6856V7.51c1.0322535714285712 -0.11105357142857143 2.1168 -1.2870535714285714 2.4826535714285716 -2.5806535714285714h1.6856c-0.1379 0.6708785714285714 -0.4127535714285714 1.3060571428571428 -0.807342857142857 1.865917857142857 -0.39455714285714283 0.559825 -0.9003749999999999 1.0322214285714286 -1.4858571428571428 1.3876821428571429 0.6536964285714285 0.3245178571428571 1.231092857142857 0.7841035714285713 1.6939678571428571 1.3483392857142857 0.462875 0.5642678571428571 0.8007285714285715 1.2203428571428572 0.9912321428571428 1.9248607142857141h-1.8554535714285714c-0.170975 -0.611975 -0.5189107142857142 -1.1597964285714284 -1.000125 -1.574757142857143 -0.48117857142857146 -0.414925 -1.0742214285714284 -0.6785107142857143 -1.704675 -0.7576428571428571v2.3324h-0.20254642857142854c-3.5737071428571427 0 -5.612117857142857 -2.4499999999999997 -5.6970535714285715 -6.5268Z'/%3e%3c/svg%3e");
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-size: 1em;
    mask-size: 1em;
}
