* {
    scrollbar-width: thin;
    scrollbar-color: #94a3b8 transparent
}

::-webkit-scrollbar {
    width: 6px;
    height: 6px
}

::-webkit-scrollbar-track {
    background: transparent
}

::-webkit-scrollbar-thumb {
    background: #94a3b8;
    border-radius: 3px
}

.dark ::-webkit-scrollbar-thumb {
    background: #475569
}

body {
    font-family: 'Inter', sans-serif
}

.font-jakarta {
    font-family: 'Plus Jakarta Sans', sans-serif
}

.sidebar-link {
    transition: all .2s ease
}

.sidebar-link:hover {
    background: rgba(59, 130, 246, 0.08)
}

.sidebar-link.active {
    background: linear-gradient(135deg, rgba(59, 130, 246, 0.15), rgba(59, 130, 246, 0.08));
    color: #3b82f6;
    border-right: 3px solid #3b82f6
}

.dark .sidebar-link:hover {
    background: rgba(59, 130, 246, 0.15)
}

.dark .sidebar-link.active {
    background: linear-gradient(135deg, rgba(59, 130, 246, 0.25), rgba(59, 130, 246, 0.1))
}

.kpi-card {
    transition: all .3s ease
}

.kpi-card:hover {
    transform: translateY(-4px);
    box-shadow: 0 20px 40px -12px rgba(0, 0, 0, 0.15)
}

.dark .kpi-card:hover {
    box-shadow: 0 20px 40px -12px rgba(0, 0, 0, 0.4)
}

.status-badge {
    font-size: .7rem;
    padding: .2rem .6rem;
    border-radius: 9999px;
    font-weight: 600;
    white-space: nowrap
}

.toast-enter {
    animation: toastIn .4s ease
}

.toast-exit {
    animation: toastOut .3s ease forwards
}

@keyframes toastIn {
    from {
        transform: translateX(100%);
        opacity: 0
    }

    to {
        transform: translateX(0);
        opacity: 1
    }
}

@keyframes toastOut {
    from {
        transform: translateX(0);
        opacity: 1
    }

    to {
        transform: translateX(100%);
        opacity: 0
    }
}

@keyframes fadeInUp {
    from {
        opacity: 0;
        transform: translateY(16px)
    }

    to {
        opacity: 1;
        transform: translateY(0)
    }
}

.fade-in-up {
    animation: fadeInUp .5s ease forwards
}

.fade-in-up-d1 {
    animation-delay: .05s;
    opacity: 0
}

.fade-in-up-d2 {
    animation-delay: .1s;
    opacity: 0
}

.fade-in-up-d3 {
    animation-delay: .15s;
    opacity: 0
}

.fade-in-up-d4 {
    animation-delay: .2s;
    opacity: 0
}

@keyframes pulseDot {

    0%,
    100% {
        opacity: 1
    }

    50% {
        opacity: .4
    }
}

.pulse-dot {
    animation: pulseDot 2s ease-in-out infinite
}

.dropdown-panel {
    transform: scale(.95);
    opacity: 0;
    pointer-events: none;
    transition: all .2s ease
}

.dropdown-panel.open {
    transform: scale(1);
    opacity: 1;
    pointer-events: auto
}

.modal-overlay {
    opacity: 0;
    pointer-events: none;
    transition: opacity .3s ease
}

.modal-overlay.open {
    opacity: 1;
    pointer-events: auto
}

.modal-content {
    transform: scale(.95) translateY(10px);
    transition: transform .3s ease
}

.modal-overlay.open .modal-content {
    transform: scale(1) translateY(0)
}

@media(max-width:1023px) {
    .sidebar {
        transform: translateX(-100%);
        transition: transform .3s ease
    }

    .sidebar.open {
        transform: translateX(0)
    }
}

.overlay {
    opacity: 0;
    pointer-events: none;
    transition: opacity .3s ease
}

.overlay.open {
    opacity: 1;
    pointer-events: auto
}

.tab-btn {
    transition: all .2s ease;
    cursor: pointer
}

.tab-btn.active {
    background: white;
    color: #2563eb;
    box-shadow: 0 1px 3px rgba(0, 0, 0, .1)
}

.dark .tab-btn.active {
    background: #334155;
    color: #60a5fa
}

.action-btn {
    transition: all .15s ease;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center
}

.action-btn:hover {
    transform: scale(1.1)
}

.view-btn {
    transition: all .2s ease;
    cursor: pointer
}

.view-btn.active {
    background: #3b82f6;
    color: white
}

.wh-card {
    transition: all .3s ease;
    cursor: pointer;
    border: 2px solid transparent
}

.wh-card:hover {
    transform: translateY(-4px);
    box-shadow: 0 15px 35px -10px rgba(0, 0, 0, .15)
}

.wh-card.selected {
    border-color: #3b82f6
}

#whMap {
    z-index: 1
}

.leaflet-container {
    font-family: 'Inter', sans-serif
}

.custom-marker {
    background: none;
    border: none
}

.wh-marker {
    width: 36px;
    height: 36px;
    border-radius: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: white;
    box-shadow: 0 4px 12px rgba(0, 0, 0, .3);
    border: 3px solid white;
    transform: rotate(0deg)
}

.capacity-bar {
    height: 8px;
    border-radius: 9999px;
    overflow: hidden;
    background: #e2e8f0
}

.dark .capacity-bar {
    background: #334155
}

@media(prefers-reduced-motion:reduce) {

    *,
    *::before,
    *::after {
        animation-duration: .01ms !important;
        transition-duration: .01ms !important
    }
}