        :root {
            --envirodex-blue: #5784BD;
            --envirodex-green: #57BD84;
        }
        html {
            height: 100%;
            margin: 0;
        }
        body {
            min-height: 100vh;
            margin: 0;
            background: linear-gradient(to bottom, var(--envirodex-blue), var(--envirodex-green));
            background-attachment: fixed;
            display: flex;
            flex-direction: column;
            font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
            line-height: 1.6;
        }

        /* Navigation Bar - Single consolidated header */
        .navbar-envirodex {
            background-color: var(--envirodex-blue) !important;
            flex-shrink: 0;
            padding: 0.5rem 0;
        }
        /* Navbar container - extends 30px beyond white box edges */
        .navbar-content {
            max-width: 1460px;  /* 1400px + 60px (30px overhang each side) */
            margin: 0 auto;
            padding: 0 0.625rem;  /* 10px → 0.625rem */
            width: 100%;
            display: grid;
            grid-template-columns: auto 1fr auto;
            align-items: center;
            gap: 0.25rem;  /* Match Dashboard|Logout spacing */
        }
        .navbar-envirodex .navbar-brand {
            padding: 0;
        }
        .navbar-envirodex .navbar-brand img {
            height: 3.6rem;  /* 58px (15% larger than 50px) */
            width: auto;
            border-radius: 50%;
        }
        /* NOTE: Do NOT set display:flex on .navbar-collapse unconditionally!
           Bootstrap 5's collapse plugin needs control of the display property.
           See: https://getbootstrap.com/docs/5.3/components/navbar/
           The display:flex is applied via .navbar-expand-lg at the lg breakpoint. */
        @media (min-width: 992px) {
            .navbar-envirodex .navbar-collapse {
                display: flex !important;
                justify-content: flex-start;  /* Align menu items to left */
            }
        }
        .navbar-envirodex .navbar-nav {
            display: flex;
            flex-wrap: wrap;
            justify-content: flex-start;  /* Align menu items to left */
            gap: 0;
        }
        .navbar-envirodex .navbar-nav .nav-link {
            padding: 0.5rem 0.25rem;
            font-weight: 500;
            font-size: 0.875rem;  /* 14px → 0.875rem */
            color: rgba(255,255,255,0.9);
            border-right: none;
        }
        .navbar-envirodex .navbar-nav .nav-item + .nav-item .nav-link {
            border-left: 1px solid rgba(255,255,255,0.3);
            margin-left: 0.25rem;  /* Clean spacing value */
            padding-left: 0.50rem; /* Clean spacing value */
        }
        .navbar-envirodex .nav-item.nav-donate .btn {
            margin-left: 0.3rem;
        }
        .navbar-envirodex .navbar-nav .nav-link.active {
            border-bottom: 2px solid #FFD700;
        }
        .navbar-envirodex .btn-warning {
            font-size: 0.81rem;  /* 13px → 0.81rem (rounded from 0.8125rem) */
            padding: 0.35rem 0.75rem;
        }
        /* User profile section in navbar */
        .nav-user-profile {
            margin-left: 0;
            padding-left: 1rem;
            border-left: 1px solid rgba(255,255,255,0.3);
            justify-self: end;
        }
        .nav-user-actions {
            display: flex;
            gap: 0.25rem;
            align-items: center;
        }
        .nav-user-actions .nav-link {
            padding: 0.5rem 0.75rem !important;
            font-weight: 500;
            font-size: 14px;
            color: rgba(255,255,255,0.9);
        }
        .nav-user-actions .nav-link.active {
            border-bottom: 2px solid #FFD700;
        }
        .nav-user-actions button.nav-link {
            font-weight: 700;
        }
        .nav-user-actions a.nav-link[href*="login"] {
            font-weight: 700;
        }
        .user-info-text {
            font-size: 0.65rem;
            color: rgba(255,255,255,0.6);
            margin-top: -2px; /* Pulls text tighter under Dashboard/Logout */
        }

        .btn-primary {
            background-color: var(--envirodex-blue);
            border-color: var(--envirodex-blue);
        }
        .btn-primary:hover {
            background-color: #4a73a8;
            border-color: #4a73a8;
        }
        .btn-outline-primary {
            color: var(--envirodex-blue);
            border-color: var(--envirodex-blue);
        }
        .btn-outline-primary:hover {
            background-color: var(--envirodex-blue);
            border-color: var(--envirodex-blue);
        }

        /* Main content - flex-grow to push footer down */
        main {
            flex: 1 0 auto;
            display: flex;
            align-items: center;
            padding: 3rem 0;
        }
        main > .container {
            max-width: 1400px;
            background-color: rgba(255, 255, 255, 0.95);
            border-radius: 12px;
            padding: 2rem;
            box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);
        }

        /* Typography & Spacing System */
        h1 {
            font-size: 32px;
            font-weight: 700;
            line-height: 1.2;
            margin-bottom: 20px;
        }
        h2 {
            font-size: 22px;
            font-weight: 600;
            margin-bottom: 16px;
            margin-top: 28px;
        }
        p {
            margin-bottom: 16px;
        }
        ul {
            margin: 16px 0 24px 0;
            padding-left: 24px;
        }
        li {
            margin-bottom: 10px;
            line-height: 1.5;
        }
        .btn-primary, button[type="submit"] {
            padding: 12px 28px;
            font-size: 15px;
            font-weight: 600;
            border-radius: 6px;
            cursor: pointer;
            transition: all 0.2s;
        }

        /* Footer - scrolls with content */
        .site-footer {
            flex-shrink: 0;
            background: rgba(255, 255, 255, 0.95);
            border-top: 1px solid rgba(0, 0, 0, 0.1);
            padding: 20px 0;
        }
        .footer-content {
            max-width: 1400px;
            margin: 0 auto;
            padding: 0 10px;
            display: flex;
            gap: 24px;
        }
        /* Left column: Sitemap */
        .footer-left {
            flex: 0 0 20%;
        }
        .sitemap-header {
            font-size: 11px;
            font-weight: 600;
            color: #6c757d;
            text-transform: uppercase;
            letter-spacing: 0.5px;
            margin-bottom: 6px;
        }
        .footer-nav {
            display: flex;
            flex-direction: column;
            gap: 2px;
        }
        .footer-nav a {
            color: #495057;
            text-decoration: none;
            font-size: 11px;
            line-height: 1.4;
        }
        .footer-nav a:hover {
            color: var(--envirodex-blue);
        }
        /* Center column: WMFO branding */
        .footer-center {
            flex: 1;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            text-align: center;
        }
        .footer-center img {
            height: 40px;
            width: auto;
            opacity: 0.9;
            margin-bottom: 4px;
        }
        .footer-center .wmfo-text {
            font-size: 11px;
            color: #6c757d;
            margin: 0;
        }
        /* Right column: Contact info */
        .footer-right {
            flex: 0 0 auto;
            display: flex;
            flex-direction: column;
            justify-content: center;
        }
        .footer-contact {
            text-align: right;
        }
        .footer-contact a {
            font-size: 12px;
            color: #495057;
            text-decoration: none;
        }
        .footer-contact a:hover {
            color: var(--envirodex-blue);
        }
        .footer-contact .build-info {
            font-size: 9px;
            color: #adb5bd;
            margin: 2px 0 0 0;
        }
        /* Center+Right wrapper for copyright spanning both */
        .footer-main {
            flex: 1;
            display: flex;
            flex-direction: column;
        }
        .footer-main-top {
            display: flex;
            gap: 24px;
            margin-bottom: 12px;
        }
        .footer-bottom {
            margin-top: 0;
            padding-top: 12px;
            border-top: 1px solid rgba(0, 0, 0, 0.1);
            width: 100%;
            display: flex;
        }
        .footer-copyright {
            text-align: right;
            flex: 0 0 auto;
        }
        .footer-copyright p {
            font-size: 10px;
            color: #adb5bd;
            margin: 0;
        }

        /* -1.1: 2-column sitemap layout for authenticated users */
        .footer-nav-two-cols {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 12px;
        }
        .footer-nav-col {
            display: flex;
            flex-direction: column;
            gap: 2px;
        }

        /* -1.2: Mobile user section styling (inside hamburger) */
        .mobile-user-section {
            border-top: 1px solid rgba(255,255,255,0.2);
            margin-top: 0.5rem;
            padding-top: 0.5rem;
        }
        .mobile-user-section .nav-link {
            color: rgba(255,255,255,0.9);
        }
        .mobile-user-section .btn-link {
            color: rgba(255,255,255,0.9);
            text-decoration: none;
            text-align: left;
        }

        /* -1.2: WCAG 2.5.5 Touch Targets (44x44px minimum) + Mobile menu fixes (UI-4) */
        @media (max-width: 991.98px) {
            /* Fix navbar collapse layout on mobile */
            .navbar-envirodex .navbar-collapse {
                width: 100%;
                background: var(--envirodex-blue);
                margin-top: 0.5rem;
                border-radius: 8px;
                padding: 0.5rem 0;
            }
            /* Make nav items stack properly without left borders */
            .navbar-envirodex .navbar-nav {
                flex-direction: column;
                width: 100%;
            }
            .navbar-envirodex .navbar-nav .nav-item {
                width: 100%;
            }
            .navbar-envirodex .navbar-nav .nav-item + .nav-item .nav-link {
                border-left: none;
                margin-left: 0;
                padding-left: 16px;
            }
            /* Fix alignment and touch targets - must match specificity of desktop rule */
            .navbar-envirodex .navbar-nav .nav-link {
                min-height: 44px;
                display: flex;
                align-items: center;
                padding: 12px 16px;
                width: 100%;
                justify-content: flex-start;
            }
            .navbar-toggler {
                min-width: 44px;
                min-height: 44px;
            }
            /* Fix Donate button on mobile */
            .navbar-envirodex .nav-item.nav-donate {
                padding: 12px 16px;
            }
            .navbar-envirodex .nav-item.nav-donate .btn {
                margin-left: 0;
                width: 100%;
            }
        }

        /* -1.2: Responsive logo sizing */
        @media (max-width: 991.98px) {
            .navbar-envirodex .navbar-brand img {
                height: 40px;
            }
        }
        @media (max-width: 575.98px) {
            .navbar-envirodex .navbar-brand img {
                height: 32px;
            }
        }

        /* User actions separator via vertical divider */
        .nav-user-actions {
            line-height: 1;
            gap: 0;
        }
        .nav-user-actions form {
            display: inline;
        }
        .nav-divider {
            display: inline-block;
            width: 1px;
            height: 0.875rem;  /* 14px → 0.875rem */
            background-color: rgba(255,255,255,0.3);
            margin: 0 0.25rem;  /* Tighter Dashboard|Logout spacing */
        }

        /* Navbar Spacing Refinements - Session 10 Final Polish */
        /* 1) Less space after globe logo */
        .navbar-envirodex .navbar-brand {
            margin-right: 0.4rem !important; /* overrides me-3 */
        }

        /* 2) Slightly more readable spacing between menu items */
        .navbar-envirodex .navbar-nav .nav-link {
            padding: 0.5rem 0.2rem; /* tight horizontal padding */
        }
        .navbar-envirodex .navbar-nav .nav-item + .nav-item .nav-link {
            margin-left: 0.3rem;    /* subtle gap */
            padding-left: 0.4rem;   /* balances separator */
        }

        /* 3) Tighter Dashboard | Logout */
        .nav-user-actions {
            gap: 0.1rem;
        }
        .nav-user-actions .nav-link {
            padding: 0.4rem 0.5rem !important;
        }

        /* Optional divider adjustment */
        .nav-divider {
            margin: 0 0.35rem;
        }

        /* Mobile responsive */
        @media (max-width: 992px) {
            .navbar-content {
                grid-template-columns: auto 1fr;
            }
            .nav-user-profile {
                grid-column: 1 / -1;
                border-left: 0;
                padding-left: 0;
                margin-top: 0.5rem;
            }
        }
        @media (max-width: 768px) {
            .footer-content {
                flex-direction: column;
                align-items: center;
                text-align: center;
            }
            .footer-left, .footer-center, .footer-right {
                flex: 1 1 100%;
            }
            .footer-nav {
                flex-direction: row;
                flex-wrap: wrap;
                gap: 4px 12px;
                justify-content: center;
            }
            .footer-contact {
                text-align: center;
                margin-top: 12px;
            }
            main {
                padding: 2rem 0;
            }
        }

        /* -1.1: Mobile override - single column footer on small screens */
        @media (max-width: 575px) {
            .footer-nav-two-cols {
                grid-template-columns: 1fr;
            }
        }

/* Animations */
@keyframes fadeInSlideUp {
    from {
        opacity: 0;
        transform: translateY(30px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}
