:root {
    --bg-color: #ffffff;
    --text-color: #0a0a12;
    --nav-bg: rgba(255, 255, 255, 0.8);
    --dropdown-bg: rgba(240, 240, 255, 0.9);
    --gradient-bg: linear-gradient(135deg, #ffffff, #f0f4ff);
    --border-color: rgba(0, 0, 0, 0.08);
    --text-description: rgba(0, 0, 0, 0.7);
}

.hidden {
    display: none;
}

/* Minimal sensible defaults; page styles can override freely */
html,
body {
    background: var(--bg-color);
    color: var(--text-color);
}

/* Active Page Indicator */
.nav-link.active {
    position: relative;
}

.nav-link.active::after {
    content: '';
    position: absolute;
    bottom: -8px;
    left: 50%;
    transform: translateX(-50%);
    width: 6px;
    height: 6px;
    background: currentColor;
    border-radius: 50%;
    box-shadow: 0 0 10px currentColor;
    animation: pulse 2s ease-in-out infinite;
}

@keyframes pulse {

    0%,
    100% {
        opacity: 1;
        transform: translateX(-50%) scale(1);
    }

    50% {
        opacity: 0.6;
        transform: translateX(-50%) scale(1.3);
    }
}

/* Dark mode adjustments */
body.dark-mode {
    --gislib-gradient: linear-gradient(135deg, #8b9dff 0%, #a78bfa 100%);
    --gislib-glow: 0 0 25px rgba(139, 157, 255, 0.7), 0 0 50px rgba(167, 139, 250, 0.5);
}

/* Navbar: hide secondary logos on smaller widths to avoid wrapping */
@media (max-width: 1399px) {
    .nav-logo-secondary {
        display: none !important;
    }
}