:root {
    color-scheme: light;
    --lv-focus: var(--lv-primary);
    --lv-muted: var(--lv-text-secondary);
    --lv-control-bg: var(--lv-surface);
    --lv-control-text: var(--lv-text);
    --lv-control-border: var(--lv-border);
    --lv-overlay: color-mix(in srgb, var(--lv-sidebar) 68%, transparent);
    --lv-sidebar-mark: color-mix(in srgb, var(--lv-sidebar-text) 12%, transparent);
    --lv-map-marker-outline: var(--lv-surface);
    --lv-map-marker-shadow: 0 1px 5px color-mix(in srgb, var(--lv-sidebar) 72%, transparent);
}

:root[data-theme="night"] {
    color-scheme: dark;
}

html,
body {
    background: var(--lv-bg);
    color: var(--lv-text);
}

body,
.modal-content,
.card,
.panel,
.topbar,
.map-sidebar,
.groups-panel,
.sites-layer-panel {
    transition: background-color .2s ease, color .2s ease, border-color .2s ease;
}

.sidebar {
    background: var(--lv-sidebar) !important;
    color: var(--lv-sidebar-text) !important;
}

.sidebar-brand,
.sidebar-footer {
    border-color: var(--lv-divider) !important;
}

.nav-section-title,
.sidebar .brand-subtitle,
.sidebar .coming-soon,
.sidebar .system-status,
.sidebar .version {
    color: var(--lv-sidebar-muted) !important;
}

.sidebar .nav-link {
    color: var(--lv-sidebar-muted);
}

.sidebar .nav-link:hover,
.sidebar .nav-link.active {
    color: var(--lv-sidebar-text) !important;
}

.sidebar .nav-link:hover {
    background: var(--lv-sidebar-hover);
}

.sidebar .nav-link.active {
    background: var(--lv-sidebar-active);
    box-shadow: var(--lv-shadow-sm);
}

.main-content,
.workspace {
    background: var(--lv-bg);
    color: var(--lv-text);
}

.topbar,
.mobile-menu-button,
.icon-button,
.user-dropdown {
    background: var(--lv-surface) !important;
    color: var(--lv-text);
    border-color: var(--lv-border);
}

.icon-button:hover,
.user-dropdown a:hover {
    background: var(--lv-hover) !important;
    color: var(--lv-primary) !important;
}

.user-dropdown .logout-link:hover {
    background: var(--lv-danger-soft) !important;
    color: var(--lv-danger) !important;
}

.module-card:not(.module-card-disabled):hover {
    border-color: var(--lv-accent) !important;
}

.module-card-primary {
    border-color: color-mix(in srgb, var(--lv-accent) 55%, var(--lv-border)) !important;
}

.module-card-primary::before {
    background: linear-gradient(90deg, var(--lv-accent), var(--lv-accent-secondary));
}

.network-icon {
    background: var(--lv-network-soft) !important;
    color: var(--lv-network) !important;
}

.inventory-icon {
    background: var(--lv-inventory-soft) !important;
    color: var(--lv-inventory) !important;
}

.stat-icon.purple,
.cog-icon {
    background: var(--lv-purple-soft) !important;
    color: var(--lv-purple) !important;
}

.stat-icon.orange,
.transport-icon {
    background: var(--lv-orange-soft) !important;
    color: var(--lv-orange) !important;
}

.btn-primary,
.btn-primary:hover,
.btn-primary:focus-visible {
    background: var(--lv-primary) !important;
    border-color: var(--lv-primary) !important;
    color: var(--lv-primary-contrast) !important;
}

.btn-primary:hover {
    filter: brightness(1.08);
}

.btn-outline-primary {
    --bs-btn-color: var(--lv-primary);
    --bs-btn-border-color: var(--lv-primary);
    --bs-btn-hover-bg: var(--lv-primary);
    --bs-btn-hover-border-color: var(--lv-primary);
    --bs-btn-hover-color: var(--lv-primary-contrast);
}

.btn-success {
    --bs-btn-bg: var(--lv-success);
    --bs-btn-border-color: var(--lv-success);
    color: var(--lv-success-contrast) !important;
}

.btn-warning {
    --bs-btn-bg: var(--lv-warning);
    --bs-btn-border-color: var(--lv-warning);
    color: var(--lv-warning-contrast) !important;
}

.btn-danger {
    --bs-btn-bg: var(--lv-danger);
    --bs-btn-border-color: var(--lv-danger);
    color: var(--lv-danger-contrast) !important;
}

.btn-info {
    --bs-btn-bg: var(--lv-info);
    --bs-btn-border-color: var(--lv-info);
    color: var(--lv-info-contrast) !important;
}

.alert-success {
    --bs-alert-color: var(--lv-success);
    --bs-alert-bg: var(--lv-success-soft);
}

.alert-warning {
    --bs-alert-color: var(--lv-warning);
    --bs-alert-bg: var(--lv-warning-soft);
}

.alert-danger {
    --bs-alert-color: var(--lv-danger);
    --bs-alert-bg: var(--lv-danger-soft);
}

.alert-info {
    --bs-alert-color: var(--lv-info);
    --bs-alert-bg: var(--lv-info-soft);
}

.form-control,
.form-select,
.input-group-text,
textarea.form-control,
.login-modal .form-control,
.login-modal .input-group-text {
    background-color: var(--lv-input-bg) !important;
    color: var(--lv-text) !important;
    border-color: var(--lv-border) !important;
}

.form-control::placeholder,
textarea.form-control::placeholder {
    color: var(--lv-text-muted) !important;
    opacity: 1;
}

input[type="checkbox"],
input[type="radio"],
input[type="range"] {
    accent-color: var(--lv-primary);
}

.login-modal {
    background: var(--lv-surface) !important;
    color: var(--lv-text) !important;
    border-color: var(--lv-border) !important;
}

.login-modal .modal-header,
.login-modal .modal-footer {
    border-color: var(--lv-border) !important;
}

.login-modal .form-label,
.login-modal .form-check-label {
    color: var(--lv-text-secondary) !important;
}

.login-modal .password-toggle {
    background: var(--lv-input-bg) !important;
    color: var(--lv-text-secondary) !important;
    border-color: var(--lv-border) !important;
}

.login-modal .password-toggle:hover {
    color: var(--lv-primary) !important;
}

.login-modal .form-control:focus,
.login-modal .input-group-text:focus {
    border-color: var(--lv-focus) !important;
    box-shadow: 0 0 0 .22rem color-mix(in srgb, var(--lv-focus) 24%, transparent) !important;
}

.login-modal .form-check-input {
    background-color: var(--lv-input-bg);
    border-color: var(--lv-border);
}

.login-modal .form-check-input:checked {
    background-color: var(--lv-primary);
    border-color: var(--lv-primary);
}

.brand-accent,
.hero-badge,
.section-kicker,
.feature-status,
.footer-brand span,
.modal-kicker,
.forgot-password,
.map-sidebar .eyebrow {
    color: var(--lv-accent-text) !important;
}

.gradient-text {
    background-image: linear-gradient(100deg, var(--lv-accent-text), var(--lv-accent-text-secondary));
}

.dropdown-menu,
.list-group-item,
.accordion-item,
.accordion-button {
    background-color: var(--lv-surface) !important;
    color: var(--lv-text) !important;
    border-color: var(--lv-border) !important;
}

.dropdown-item {
    color: var(--lv-text-secondary);
}

.dropdown-item:hover,
.dropdown-item:focus,
.list-group-item-action:hover {
    background: var(--lv-hover) !important;
    color: var(--lv-text) !important;
}

.accordion-button:not(.collapsed) {
    background: var(--lv-primary-soft) !important;
    color: var(--lv-primary) !important;
}

.table {
    --bs-table-bg: transparent;
    --bs-table-color: var(--lv-text);
    --bs-table-border-color: var(--lv-border);
    --bs-table-striped-bg: var(--lv-surface-soft);
    --bs-table-striped-color: var(--lv-text);
    --bs-table-hover-bg: var(--lv-hover);
    --bs-table-hover-color: var(--lv-text);
    color: var(--lv-text);
}

.table> :not(caption)>*>* {
    background-color: transparent;
    color: inherit;
    border-color: var(--lv-border);
}

.table thead th {
    background: var(--lv-surface-soft) !important;
    color: var(--lv-text-secondary);
}

.table tbody tr:hover>* {
    background: var(--lv-hover) !important;
    color: var(--lv-text);
}

.map-header,
.view-header {
    background: var(--lv-sidebar) !important;
    color: var(--lv-sidebar-text) !important;
}

.map-header .brand,
.view-header .brand {
    color: var(--lv-sidebar-text) !important;
}

.map-header .brand small,
.view-header .brand small {
    color: var(--lv-sidebar-muted) !important;
}

.map-sidebar,
.groups-panel {
    background: var(--lv-bg-secondary) !important;
    color: var(--lv-text) !important;
    border-color: var(--lv-border) !important;
}

.map-sidebar .sidebar-title,
.groups-panel .groups-title {
    background: var(--lv-bg-secondary);
    color: var(--lv-text);
    border-color: var(--lv-border) !important;
}

.map-sidebar .panel,
.groups-panel .groups-content {
    background: transparent;
    color: var(--lv-text);
    border-color: var(--lv-divider) !important;
}

.map-sidebar .panel-heading,
.groups-panel .groups-title span {
    color: var(--lv-text);
}

.map-toolbar {
    background: var(--lv-surface) !important;
    border-color: var(--lv-border) !important;
    box-shadow: var(--lv-shadow);
}

.map-toolbar button {
    color: var(--lv-text-secondary) !important;
}

.map-toolbar button:hover,
.map-toolbar button:focus-visible,
.map-toolbar button[aria-pressed="true"] {
    background: var(--lv-primary-soft) !important;
    color: var(--lv-primary) !important;
}

.layer-item:hover,
.sites-layer-row:hover {
    background: var(--lv-hover) !important;
}

::selection {
    background: var(--lv-selected);
    color: var(--lv-text);
}

* {
    scrollbar-color: var(--lv-border) var(--lv-surface-soft);
}

.lv-theme-toggle {
    position: fixed;
    right: 18px;
    bottom: 18px;
    z-index: 2000;
    min-width: 92px;
    height: 42px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 0 14px;
    border: 1px solid var(--lv-control-border);
    border-radius: 999px;
    background: var(--lv-control-bg);
    color: var(--lv-control-text);
    box-shadow: var(--lv-shadow-lg, 0 12px 35px #0f172a26);
    font: 700 12px/1 Inter, system-ui, sans-serif;
    letter-spacing: .02em;
}

.lv-theme-toggle:hover {
    background: var(--lv-primary-soft);
    color: var(--lv-primary);
    transform: translateY(-1px);
}

.lv-theme-toggle i {
    font-size: 15px;
}

:where(a, button, input, select, textarea, [tabindex]):focus-visible {
    outline: 3px solid color-mix(in srgb, var(--lv-focus) 72%, transparent) !important;
    outline-offset: 2px !important;
}

.modal-content,
.dropdown-menu,
.user-dropdown,
.card,
.stat-card,
.module-card,
.project-modal {
    background-color: var(--lv-surface) !important;
    color: var(--lv-text);
    border-color: var(--lv-border) !important;
}

.modal-header,
.modal-footer,
.dropdown-divider {
    border-color: var(--lv-border) !important;
}

.modal-backdrop {
    --bs-backdrop-bg: var(--lv-sidebar);
    --bs-backdrop-opacity: .42;
}

dialog::backdrop {
    background: var(--lv-overlay);
}

.form-control,
.form-select,
.input-group-text,
textarea.form-control {
    background-color: var(--lv-input-bg, var(--lv-surface)) !important;
    color: var(--lv-text) !important;
    border-color: var(--lv-border) !important;
}

.form-control::placeholder,
textarea.form-control::placeholder {
    color: var(--lv-text-muted) !important;
    opacity: 1;
}

.form-control:focus,
.form-select:focus {
    border-color: var(--lv-primary) !important;
    box-shadow: 0 0 0 .22rem color-mix(in srgb, var(--lv-primary) 22%, transparent) !important;
}

.table {
    --bs-table-bg: transparent;
    --bs-table-color: var(--lv-text);
    --bs-table-border-color: var(--lv-border);
    color: var(--lv-text);
}

.table> :not(caption)>*>* {
    background-color: transparent;
    color: inherit;
    border-color: var(--lv-border);
}

.alert {
    border-color: color-mix(in srgb, currentColor 22%, transparent);
}

.text-muted,
.form-text {
    color: var(--lv-text-secondary) !important;
}

.btn-light {
    --bs-btn-bg: var(--lv-surface);
    --bs-btn-color: var(--lv-text);
    --bs-btn-border-color: var(--lv-border);
    --bs-btn-hover-bg: var(--lv-primary-soft);
    --bs-btn-hover-color: var(--lv-primary);
}

.btn-secondary {
    --bs-btn-bg: var(--lv-surface-soft);
    --bs-btn-color: var(--lv-text);
    --bs-btn-border-color: var(--lv-border);
}

.topbar,
.map-toolbar,
.sites-map-toolbar,
.sites-map-status {
    background-color: var(--lv-surface) !important;
    color: var(--lv-text) !important;
    border-color: var(--lv-border) !important;
}

.main-content,
.map-shell,
.map-area,
.dashboard-content {
    background-color: var(--lv-bg);
    color: var(--lv-text);
}

.panel,
.sidebar-title,
.groups-title,
.sites-layer-row,
.customPopup th,
.customPopup td {
    border-color: var(--lv-border) !important;
}

.layer-item:hover,
.user-dropdown a:hover {
    background: var(--lv-surface-soft) !important;
}

.presentation-content>p,
.presentation-steps span,
.form-label {
    color: var(--lv-text-secondary) !important;
}

.presentation-steps article {
    background: var(--lv-surface) !important;
    color: var(--lv-text);
    border-color: var(--lv-border) !important;
    box-shadow: var(--lv-shadow-sm);
}

.table thead th {
    background: var(--lv-surface-soft) !important;
}

.popup-carte,
.customPopup table {
    color: var(--lv-text);
}

.map-area #map {
    background: var(--lv-map-empty) !important;
}

.map-toolbar button {
    color: var(--lv-text) !important;
}

.map-toolbar button:hover,
.map-toolbar button:focus-visible,
.map-toolbar button[aria-pressed="true"] {
    color: var(--lv-primary) !important;
    background: var(--lv-primary-soft) !important;
}

.login-error {
    background: var(--lv-danger-soft) !important;
    border-color: var(--lv-danger) !important;
    color: var(--lv-danger) !important;
}

.form-control:disabled,
.form-select:disabled,
.form-control[readonly] {
    background: var(--lv-surface-soft) !important;
    color: var(--lv-text-muted) !important;
}

@media (max-width:600px) {
    .lv-theme-toggle {
        right: 10px;
        bottom: 10px;
        min-width: 42px;
        width: 42px;
        padding: 0;
    }

    .lv-theme-toggle span {
        position: absolute;
        width: 1px;
        height: 1px;
        overflow: hidden;
        clip: rect(0, 0, 0, 0);
    }
}