/* Color Palette & Variables */
:root {
    --dark-brown: #2D1F1E;
    --terracotta: #D37D5C;
    --cream: #F6F0EB;
    --white: #ffffff;
    --text-main: #333333;
    --glass-bg: rgba(255, 255, 255, 0.7);
    --border-radius: 24px;
    --shadow: 0 10px 30px rgba(0, 0, 0, 0.08);
    --spacing: 2rem;
}
html {
    scroll-behavior: smooth;
}

* {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

body {
    font-family: 'Inter', 'Segoe UI', system-ui, sans-serif;
    line-height: 1.6;
    color: var(--text-main);
    background-color: var(--white);
    letter-spacing: -0.01em;
    display: flex;
    flex-direction: column;
    min-height: 100vh;
    /* 100% of the Viewport Height */
    margin: 0;
}

/* 2. Tell the main content area to grow and fill the space */
main,
.admin-main,
.portal-main,
.login-wrapper {
    flex: 1 0 auto;
    width: 100%;
    /* Forces the container to be wide */
    box-sizing: border-box;
    /* Prevents padding from causing overflow */
}


.container {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 var(--spacing);
    width: 90%;
    /* For mobile responsiveness */
}

/* Time-Sync Bar */
.top-bar {
    text-align: center;
    font-size: 0.85rem;
    padding: 0.5rem 0;
    background: var(--dark-brown);
    color: var(--cream);
    font-weight: 500;
}



/* Hero Section */
.hero {
    padding: 8rem 0 5rem;
    margin-top: -100px;
    /* Pulls hero under the floating nav */
    background: linear-gradient(135deg, var(--cream) 0%, var(--white) 100%);
}

.hero-grid {
    display: grid;
    grid-template-columns: 1.2fr 1fr;
    gap: 4rem;
    align-items: center;
}

.hero-content h1 {
    font-size: 4rem;
    line-height: 1.05;
    font-weight: 800;
    color: var(--dark-brown);
}

.hero-content .accent{
    color: var(--terracotta);
}

.btn-primary {
    background: var(--terracotta);
    color: var(--white) !important;
    padding: 1rem 2rem;
    border-radius: 50px;
    display: inline-block;
    text-decoration: none;
    font-weight: 700;
    box-shadow: 0 4px 15px rgba(211, 125, 92, 0.3);
}

.btn-secondary {
    border: 2px solid var(--dark-brown);
    padding: 1rem 2rem;
    margin-left: 1rem;
    text-decoration: none;
    color: var(--dark-brown);
    font-weight: 700;
    border-radius: 50px;
}

/* Bento Grid System */
.bento-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    grid-template-rows: repeat(2, 320px);
    gap: 1.5rem;
    padding: 4rem 0;
}

.bento-item {
    background: var(--cream);
    border-radius: var(--border-radius);
    padding: 2.5rem;
    position: relative;
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
    transition: transform 0.3s ease, box-shadow 0.3s ease;
    border: 1px solid rgba(0, 0, 0, 0.05);
}

.bento-item:hover {
    transform: translateY(-8px);
    box-shadow: var(--shadow);
}

.featured {
    grid-column: span 2;
    grid-row: span 2;
    background: var(--dark-brown);
    color: var(--cream);
}

.sourcing {
    grid-column: span 1;
    grid-row: span 2;
    background: var(--terracotta);
    color: var(--white);
}

.quick-update {
    grid-column: span 1;
    background: var(--white);
}

.badge {
    position: absolute;
    top: 1.5rem; /* Slightly tighter to the top */
    left: 1.5rem; /* Slightly tighter to the left */
    padding: 0.4rem 0.8rem;
    background: var(--terracotta);
    color: white;
    border-radius: 50px;
    font-size: 0.65rem;
    font-weight: 800;
    text-transform: uppercase;
    z-index: 10; /* Higher than everything else */
    box-shadow: 0 2px 8px rgba(0,0,0,0.2); /* Makes it pop off the photo */
}

.bento-content {
    position: relative;
    z-index: 5; /* Above the image, below the badge */
    width: 100%;
}

.btn-minimal {
    text-decoration: none;
    color: var(--dark-brown);
    font-weight: 700;
    transition: all 0.3s ease;
    display: inline-flex;
    align-items: center;
    gap: 5px;
}

.btn-minimal:hover {
    color: var(--terracotta);
}

.btn-minimal:hover span, 
.btn-minimal:hover::after {
    /* If you put the arrow in a span or use a pseudo-element */
    transform: translateX(5px);
}

/* 1. Prepare the item to hold a background */
.bento-item {
    position: relative;
    overflow: hidden; /* Important: keeps the image inside the rounded corners */
    z-index: 1;
}

/* 2. The Background Image Layer */
.bento-bg {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center;
    z-index: -1; /* Puts it behind the text */
    transition: transform 0.5s ease;
}

/* 3. The Dark Overlay (The Secret Sauce) */
/* This ensures white text is readable even if the photo is bright */
.featured::before {
    content: '';
    position: absolute;
    top: 0; left: 0; width: 100%; height: 100%;
    background: linear-gradient(to top, rgba(61, 43, 31, 0.85) 20%, transparent 80%);
    z-index: 0;
}


/* 5. Hover Effect: Zoom the photo slightly */
.bento-item:hover .bento-bg {
    transform: scale(1.08);
}

/* 6. Text Color Override for Featured with BG */
.featured .bento-content p {
    color: rgba(255, 255, 255, 0.9);
}

.featured .btn-minimal {
    color: var(--cream); /* Makes the link pop against the photo */
}

/* Apply overlay to any bento item containing a background image */
.bento-item:has(.bento-bg)::before {
    content: '';
    position: absolute;
    top: 0; 
    left: 0; 
    width: 100%; 
    height: 100%;
    /* Darkens the bottom 40% of the image */
    background: linear-gradient(to top, rgba(0, 0, 0, 0.7) 0%, transparent 60%);
    z-index: 1;
}

/* Ensure text and badges sit ABOVE the overlay */
.bento-item h3, 
.bento-item p, 
.bento-item .btn-minimal, 

/* Specific text color for items WITH images */
.bento-item:has(.bento-bg) h3,
.bento-item:has(.bento-bg) p {
    color: #ffffff;
    text-shadow: 0 1px 3px rgba(0,0,0,0.3); /* Extra crispness */
}

/* Build Portal Cards Upgrade */
.status-card {
    background: var(--white);
    padding: 2.5rem;
    border-radius: var(--border-radius);
    box-shadow: var(--shadow);
    border: 1px solid rgba(0, 0, 0, 0.03);
}

/* Footer Styling */
footer {
    padding: 4rem 0;
    background: var(--cream);
    border-top: 1px solid #ddd;
    text-align: center;
    flex-shrink: 0;
}

.socials {
    margin-top: 1rem;
    display: flex;
    justify-content: center;
    gap: 2rem;
}

.socials a {
    color: var(--dark-brown);
    font-weight: 700;
    text-decoration: none;
}


/* contant form */
/* Responsive Design / Media Queries */
@media (max-width: 992px) {
    .hero-grid {
        grid-template-columns: 1fr;
        text-align: center;
        gap: 2rem;
    }

    .hero-content h1 {
        font-size: 3rem;
    }

    .hero-btns {
        display: flex;
        flex-direction: column;
        gap: 1rem;
    }

    .btn-secondary {
        margin-left: 0;
    }

    .bento-grid {
        grid-template-columns: 1fr;
        /* Stack everything */
        grid-template-rows: auto;
        /* Let content dictate height */
    }

    .featured,
    .sourcing {
        grid-column: span 1;
        grid-row: span 1;
        min-height: 300px;
    }
}

/* Contact Form Styling */

.contact-section {
    padding: 5rem 0;
    background: var(--white);
}

.contact-container {
    /* Increased from 700px to 900px to handle the new checkbox grid */
    max-width: 900px; 
    margin: 0 auto;
    background: var(--cream);
    padding: 3rem;
    border-radius: var(--border-radius);
    box-shadow: var(--shadow);
}

/* NEW: This makes the Name, Email, and Locations sit in two columns */
.form-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1.5rem;
    margin-bottom: 1.5rem;
}

.form-group {
    margin-bottom: 1.5rem;
}

.form-group label {
    display: block;
    font-weight: 700;
    margin-bottom: 0.5rem;
    color: var(--dark-brown);
}

.form-group input,
.form-group textarea,
.form-group select {
    width: 100%;
    padding: 1rem;
    border: 1px solid rgba(0, 0, 0, 0.1);
    border-radius: 12px;
    font-family: inherit;
    background: var(--white);
    transition: border-color 0.3s ease;
}

.form-group input:focus {
    outline: none;
    border-color: var(--terracotta);
}

/* Radio styling for Land Approved */
.inline-radio .radio-options {
    display: flex;
    gap: 2rem;
    margin-top: 0.8rem;
    padding: 1rem;
    background: rgba(255, 255, 255, 0.5);
    border-radius: 10px;
}

.radio-options label {
    font-weight: 400 !important; /* Overrides the bold label style for options */
    margin-bottom: 0;
    cursor: pointer;
}

/* Checkbox Grid Styles */
.services-checkbox-grid {
    display: grid;
    /* This will automatically wrap columns on mobile */
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 2rem;
    background: var(--white); /* Match input background */
    padding: 2rem;
    border: 1px solid rgba(0, 0, 0, 0.1);
    border-radius: 12px;
    margin-top: 0.5rem;
}

.service-col {
    display: flex;
    flex-direction: column;
}

.service-col strong {
    color: var(--terracotta); /* Use accent color for sub-headers */
    font-size: 0.75rem;
    margin-bottom: 1rem;
    text-transform: uppercase;
    letter-spacing: 1px;
}

/* Fix for checkbox alignment */
.service-col label {
    font-weight: 400 !important;
    font-size: 0.85rem;
    margin-bottom: 0.8rem;
    cursor: pointer;
    display: flex;
    align-items: flex-start; /* Better for long labels */
    gap: 10px;
    line-height: 1.2;
}

/* Style the actual checkbox a bit */
input[type="checkbox"], input[type="radio"] {
    width: auto; /* Prevent them from stretching to 100% width */
    margin-top: 2px;
    accent-color: var(--terracotta); /* Modern browser support for brand colors */
}

@media (max-width: 768px) {
    .form-grid {
        grid-template-columns: 1fr;
    }
    .contact-container {
        padding: 1.5rem;
    }
    .services-checkbox-grid {
        grid-template-columns: 1fr 1fr; /* 2 columns on mobile instead of 4 */
    }
}


/* send form css */
.success-card {
    background: #f0f9f1;
    border: 1px solid #c3e6cb;
    padding: 3rem;
    border-radius: 15px;
    text-align: center;
    animation: fadeIn 0.5s ease;
}

.success-icon {
    background: #28a745;
    color: white;
    width: 60px;
    height: 60px;
    line-height: 60px;
    border-radius: 50%;
    font-size: 2rem;
    margin: 0 auto 1.5rem;
}

@keyframes fadeIn {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: translateY(0); }
}
/* end send form css */

/* end of contact form */

/* services section */

.services-area {
    padding: 100px 20px;
    background-color: var(--white); /* Keeps it bright between image sections */
}

.section-header.center {
    text-align: center;
    max-width: 700px;
    margin: 0 auto 4rem auto;
}

.services-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
    gap: 3rem;
}

.service-card {
    padding: 2rem;
    border-top: 1px solid #eee; /* A subtle "architectural" line */
    transition: all 0.3s ease;
}

.service-card:hover {
    border-top: 1px solid var(--dark-brown);
    transform: translateY(-5px);
}

.service-icon {
    font-family: 'Playfair Display', serif; /* Or your brand's elegant font */
    font-size: 3rem;
    color: rgba(61, 43, 31, 0.1); /* Very faint brown number */
    font-weight: 900;
    margin-bottom: 1rem;
    line-height: 1;
}

.service-card h3 {
    font-size: 1.4rem;
    color: var(--dark-brown);
    margin-bottom: 1rem;
    letter-spacing: -0.5px;
}

.service-card p {
    color: #666;
    line-height: 1.8;
    font-size: 0.95rem;
}

/* Mobile Tweaks */
@media (max-width: 768px) {
    .services-grid {
        gap: 1.5rem;
    }
    .services-area {
        padding: 60px 20px;
    }
}

/* end services section */
/* timeline section */
.timeline {
    position: relative;
    max-width: 800px;
    margin: 4rem auto;
    padding-left: 2rem;
    border-left: 3px solid var(--cream);
}

.timeline-item {
    position: relative;
    margin-bottom: 3rem;
    padding-left: 2rem;
}

/* The Dot on the line */
.timeline-item::before {
    content: '';
    position: absolute;
    left: -11px;
    top: 5px;
    width: 20px;
    height: 20px;
    background: var(--white);
    border: 3px solid var(--cream);
    border-radius: 50%;
}

.timeline-item.completed::before {
    background: var(--terracotta);
    border-color: var(--terracotta);
}

.timeline-item.current::before {
    background: var(--dark-brown);
    border-color: var(--terracotta);
    box-shadow: 0 0 10px rgba(211, 125, 92, 0.5);
}

.timeline-date {
    font-size: 0.85rem;
    font-weight: 800;
    color: var(--terracotta);
    margin-bottom: 0.5rem;
}

.timeline-content h4 {
    margin-bottom: 0.2rem;
    font-size: 1.2rem;
}

.status-label {
    font-size: 0.75rem;
    text-transform: uppercase;
    font-weight: 700;
    opacity: 0.6;
}

/* end timeline section */



/* login page */
/* Login Page Layout */
.login-wrapper {
    display: flex;
    justify-content: center;
    align-items: center;
    min-height: calc(100vh - 160px);
    /* Subtracts header/footer height to center accurately */
    padding: 2rem;
    background-color: var(--white);

}

.login-card {
    max-width: 450px;
    width: 100%;
    background: var(--cream);
    padding: 3rem;
    border-radius: var(--border-radius);
    box-shadow: var(--shadow);
    border: 1px solid #eee;
}

/* Fix for Light Text Issue */
.login-header h2 {
    color: var(--dark-brown);
    /* Ensuring high contrast */
    font-size: 1.8rem;
    margin-bottom: 0.5rem;
    text-align: center;
}

.login-header p {
    color: #666;
    /* Medium gray for readability */
    font-size: 0.95rem;
    margin-bottom: 2rem;
    text-align: center;
}

/* Form Contrast Fixes */
.login-card label {
    color: var(--dark-brown);
    font-weight: 700;
    display: block;
    margin-bottom: 0.5rem;
}

.login-card input {
    width: 100%;
    padding: 1rem;
    border: 1px solid #ddd;
    border-radius: 8px;
    margin-bottom: 1rem;
    background: var(--white);
    color: var(--text-main);
}

.login-btn {
    width: 100%;
    border: none;
    cursor: pointer;
    font-weight: 700;
}

.login-footer {
    margin-top: 1.5rem;
    text-align: center;
}

.login-footer a {
    color: var(--terracotta);
    text-decoration: none;
    font-size: 0.9rem;
    font-weight: 600;
}

.forgot-link {
    display: block;
    margin-top: 1rem;
    font-size: 0.85rem;
    color: var(--terracotta);
    text-decoration: none;
    font-weight: 600;
}
.forgot-link:hover { text-decoration: underline; }


/* for logo and navigation toggle */
.nav-list {
    display: flex;
    list-style: none;
    gap: 1.5rem; /* Slightly reduced from 2rem to accommodate new links */
    align-items: center;
}

.logo-group {
    display: flex;
    align-items: center;
    gap: 1.5rem;
}

.logo img {
    height: 45px; /* Adjust based on your logo's natural height */
    width: auto;
    display: block;
}

.logo-tagline {
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding-left: 1.5rem;
    border-left: 1px solid rgba(61, 43, 31, 0.2); /* Subtle brown separator */
}

.logo-tagline span {
    display: block;
    font-size: 0.65rem;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    font-weight: 700;
    color: var(--dark-brown);
    line-height: 1.4;
}

/* Mobile Tweaks: Hide or simplify the tagline on small screens */
@media (max-width: 768px) {
    .logo-group {
        gap: 1rem;
    }
    
    .logo-tagline {
        padding-left: 1rem;
    }
    
    /* Optional: Hide on very small phones if it crowds the hamburger */
    @media (max-width: 400px) {
        .logo-tagline {
            display: none;
        }
    }
}


/* Logo Size Restriction */
.logo img {
    height: auto;
    width: 100%;
    max-width: 160px;
    /* Limits the size so it stays sleek */
    display: block;
}

/* Desktop Navigation (Base) */
.main-nav {
    display: flex; /* Forces children (Logo and UL) to be side-by-side */
    justify-content: space-between; /* Pushes Logo to left, Nav to right */
    align-items: center; /* Centers them vertically */
    padding: 1rem 0; /* Gives it some breathing room */
    height: 80px; /* Optional: keeps it consistent */
}
.nav-list {
    display: flex;
    list-style: none;
    gap: 2rem;
    align-items: center;
    transition: all 0.3s ease;
    margin: 0;
    padding: 0;
}

/* --- Navigation Link Styling --- */
.nav-list li a {
    text-decoration: none;
    color: var(--dark-brown); /* Using your brand dark brown */
    font-weight: 600;
    font-size: 0.95rem;
    letter-spacing: 0.5px;
    transition: all 0.3s ease;
    position: relative;
    padding: 5px 0;
}

/* The Animated Underline Effect */
.nav-list li a::after {
    content: '';
    position: absolute;
    width: 0;
    height: 2px;
    bottom: 0;
    left: 0;
    background-color: var(--dark-brown);
    transition: width 0.3s ease;
}

.nav-list li a:hover::after {
    width: 100%;
}

/* Active Page State */
.nav-list li a.active {
    color: var(--dark-brown);
}
.nav-list li a.active::after {
    width: 100%;
}

/* --- Nav Button Overrides --- */
/* This ensures your login/logout buttons don't have the underline effect */
.nav-list li a.btn-primary, 
.nav-list li a.btn-secondary {
    padding: 10px 24px;
    border-radius: 50px; /* Pill shape */
    display: inline-block;
}

.nav-list li a.btn-primary::after, 
.nav-list li a.btn-secondary::after {
    display: none; /* Remove underline from buttons */
}

/* Specific Button Colors */
.btn-primary {
    background-color: var(--dark-brown);
    color: white !important;
}

.btn-primary:hover {
    background-color: #3d2b1f; /* A slightly darker shade for hover */
    transform: translateY(-2px);
    box-shadow: 0 4px 10px rgba(0,0,0,0.15);
}

.btn-secondary {
    border: 2px solid var(--dark-brown);
    color: var(--dark-brown) !important;
    background: transparent;
}

.btn-secondary:hover {
    background: var(--dark-brown);
    color: white !important;
}

/* Solid Modern Header */
header {
    background: var(--white);
    border-bottom: 1px solid #eeeeee;
    padding: 0.75rem 0;
    position: sticky;
    top: 0;
    z-index: 1000;
}

/* Logo Size Restriction */
.logo img {
    height: auto;
    width: 100%;
    max-width: 140px;
    /* Adjust this to fit your logo's aspect ratio */
    display: block;
}


/* Mobile Toggle Styles */
.menu-toggle {
    display: none;
    /* Hidden on desktop */
    flex-direction: column;
    cursor: pointer;
    gap: 5px;
}

.menu-toggle .bar {
    width: 25px;
    height: 3px;
    background-color: var(--dark-brown);
    border-radius: 3px;
    transition: all 0.3s ease;
}

/* Media Query for Mobile (max-width: 768px) */
@media (max-width: 768px) {
    /* Ensure the header container stays on top */
    header {
        position: relative;
        z-index: 2000; /* Higher than the menu */
        background: var(--cream); /* Or your header color */
    }
    .main-nav {
        display: flex;
        justify-content: space-between;
        align-items: center;
        height: 80px; /* Force a consistent height */
        position: relative;
    }
    .menu-toggle {
        display: flex;
        z-index: 1001;
    }

    /* Transform nav into a mobile dropdown */
    .nav-list {
        position: absolute;
        top: 80px;
        /* Just below the nav bar */
        left: 0;
        width: 100%;
        background: var(--cream);
        flex-direction: column;
        padding: 2rem 0;
        gap: 1.5rem;
        box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1);
        z-index: 1000;

        /* Hide by default */
        max-height: 0;
        overflow: hidden;
        opacity: 0;
        pointer-events: none;
    }

    /* Class to show menu (toggled by JS) */
    .nav-list.active {
        max-height: 500px;
        opacity: 1;
        pointer-events: auto;
        display: flex;
    }

    .nav-list li a {
        font-size: 1.2rem; /* Larger text for easier tapping on mobile */
        display: block;
        width: 100%;
    }

    .nav-list li a::after {
        display: none; /* Underlines look messy on mobile menus */
    }

    /* Center the buttons in the mobile dropdown */
    .nav-list li {
        width: 100%;
        display: flex;
        justify-content: center;
    }

    .logo img {
        max-width: 120px;
        /* Even smaller logo on mobile */
    }

    /* Make buttons full width on mobile if needed */
    .btn-primary,
    .btn-secondary {
        width: 80%;
        text-align: center;
    }

    @media (max-width: 768px) {
        /* ... your existing mobile styles ... */

        /* Animation: Turn bars into an X */
        #mobile-menu.is-active .bar:nth-child(2) {
            opacity: 0;
        }

        #mobile-menu.is-active .bar:nth-child(1) {
            transform: translateY(8px) rotate(45deg);
        }

        #mobile-menu.is-active .bar:nth-child(3) {
            transform: translateY(-8px) rotate(-45deg);
        }

        /* Ensure the nav-list sits on top of everything */
        .main-nav {
            position: relative;
        }
    }
}


/* Tablet & Mobile Adjustments */
@media (max-width: 992px) {
    .nav-list {
        gap: 1.5rem;
        /* Tighten spacing on smaller tablets */
    }
}

@media (max-width: 768px) {
    .menu-toggle {
        display: flex;
    }

    .nav-list {
        display: none;
        /* Hide for now until we trigger it with JS */
        position: absolute;
        top: 100%;
        left: 0;
        width: 100%;
        flex-direction: column;
        background: var(--white);
        padding: 2rem;
        border-bottom: 1px solid #eee;
    }

    .nav-list.active {
        display: flex;
    }
}

/* end logo and navigation toggle */

/* portal page */

.portal-main {
    padding: 4rem 0;
}

.portal-header {
    margin-bottom: 3rem;
}

.portal-header h1 {
    font-size: 2.5rem;
    margin-bottom: 0.5rem;
}

.portal-grid {
    display: grid;
    grid-template-columns: 1.5fr 1fr;
    gap: 2rem;
    align-items: start;
}

.timeline-box,
.vault-card,
.action-card {
    background: var(--white);
    padding: 2rem;
    border-radius: var(--border-radius);
    box-shadow: var(--shadow);
    margin-top: 2rem;
    border: 1px solid #eee;
}

/* Document Vault Styling */
.doc-list {
    list-style: none;
    margin-top: 1.5rem;
}

.doc-list li {
    display: flex;
    justify-content: space-between;
    padding: 1rem;
    background: var(--cream);
    margin-bottom: 0.8rem;
    border-radius: 8px;
    font-size: 0.9rem;
    font-weight: 600;
}

.doc-list li.locked {
    opacity: 0.6;
    cursor: not-allowed;
}

.status-tag {
    font-size: 0.7rem;
    background: #ddd;
    padding: 2px 8px;
    border-radius: 20px;
    text-transform: uppercase;
}

.vault-note {
    font-size: 0.8rem;
    color: #888;
    margin-top: 1rem;
    font-style: italic;
}

/* Responsive Dashboard */
@media (max-width: 992px) {
    .portal-grid {
        grid-template-columns: 1fr;
    }
}

/* end of portal page */

/* vault section of portal page */

.doc-list li {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 1.2rem;
    background: #fdfcfb;
    margin-bottom: 1rem;
    border: 1px solid #eee;
    border-radius: 12px;
    transition: all 0.2s ease;
}

.doc-list li:hover {
    border-color: var(--terracotta);
}

.doc-info {
    display: flex;
    flex-direction: column;
}

.doc-info strong {
    color: var(--dark-brown);
    font-size: 0.95rem;
}

.doc-date {
    font-size: 0.75rem;
    color: #999;
}

.btn-download {
    background: var(--dark-brown);
    color: var(--white);
    text-decoration: none;
    padding: 0.5rem 1rem;
    border-radius: 6px;
    font-size: 0.8rem;
    font-weight: 700;
}

.btn-download:hover {
    background: var(--terracotta);
}

.empty-vault {
    text-align: center;
    padding: 2rem;
    color: #aaa;
    font-style: italic;
}

/* end vault section of portal page */

/* admin page */
.admin-main {
    padding: 4rem 0;
}

.admin-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 2rem;
}

.admin-table-card {
    background: var(--white);
    border-radius: 12px;
    box-shadow: var(--shadow);
    overflow: hidden;
    /* Clips table corners to border-radius */
    border: 1px solid #eee;
}

.admin-table {
    width: 100%;
    border-collapse: collapse;
    text-align: left;
}

.admin-table th {
    background: var(--cream);
    padding: 1.2rem;
    font-size: 0.85rem;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: #888;
}

.admin-table td {
    padding: 1.2rem;
    border-bottom: 1px solid #f9f9f9;
    font-size: 0.95rem;
}

.admin-progress-pill {
    background: var(--terracotta);
    color: white;
    padding: 4px 10px;
    border-radius: 20px;
    font-size: 0.75rem;
    font-weight: 800;
    display: inline-block;
}

.btn-edit {
    text-decoration: none;
    color: var(--dark-brown);
    font-weight: 700;
    border: 1px solid var(--dark-brown);
    padding: 6px 12px;
    border-radius: 6px;
    transition: all 0.2s;
}

.btn-edit:hover {
    background: var(--dark-brown);
    color: white;
}

.section-label {
    font-size: 1.2rem;
    color: var(--dark-brown);
    margin-bottom: 1rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
}

.section-header-flex {
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
    margin-bottom: 1rem;
}

.view-all-link {
    color: var(--terracotta);
    text-decoration: none;
    font-weight: 700;
    font-size: 0.9rem;
}

.view-all-link:hover {
    text-decoration: underline;
}

.dimmed {
    opacity: 0.7;
}

.status-badge.success {
    background: #e6f4ea;
    color: #1e7e34;
    padding: 4px 12px;
    border-radius: 50px;
    font-size: 0.75rem;
    font-weight: 700;
}

.empty-row {
    text-align: center;
    padding: 2rem !important;
    color: #999;
    font-style: italic;
}

/* end admin page */


/* admin edit project */

.admin-edit-container {
    padding: 3rem 0;
}

.admin-back-nav {
    margin-bottom: 1.5rem;
}

.admin-back-nav a {
    text-decoration: none;
    color: var(--terracotta);
    font-weight: 700;
    font-size: 0.9rem;
}

.admin-edit-header {
    margin-bottom: 3rem;
    border-bottom: 2px solid var(--cream);
    padding-bottom: 2rem;
}

.admin-edit-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 2rem;
}

.admin-card {
    background: var(--white);
    padding: 2rem;
    border-radius: 12px;
    box-shadow: var(--shadow);
    border: 1px solid #eee;
}

.admin-card h3 {
    margin-bottom: 1.5rem;
    color: var(--dark-brown);
    font-size: 1.2rem;
    border-left: 4px solid var(--terracotta);
    padding-left: 10px;
}

/* Full width for the first card usually looks better */
.admin-card:first-child {
    grid-column: span 2;
}

@media (max-width: 768px) {
    .admin-edit-grid {
        grid-template-columns: 1fr;
    }

    .admin-card:first-child {
        grid-column: span 1;
    }
}
/* Featured Toggle Styling */
.featured-toggle-container {
    text-align: center;
    margin: 2rem auto;
    padding: 1.5rem;
    background: #fdfdfd;
    border: 1px solid #eee;
    border-radius: 12px;
    max-width: 400px;
}

.featured-label {
    display: block;
    font-weight: 800; /* Bold */
    font-size: 1.1rem;
    color: var(--dark-brown);
    margin-bottom: 1rem;
}

.switch-wrapper {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 15px;
}

.switch-status {
    font-weight: 700;
    font-size: 0.9rem;
    color: #555;
}

.featured-hint {
    font-size: 0.8rem;
    color: #888;
    margin-top: 10px;
}

/* --- THE TOGGLE SWITCH ENGINE --- */
.switch {
  position: relative;
  display: inline-block;
  width: 50px;
  height: 26px;
}

.switch input { 
  opacity: 0;
  width: 0;
  height: 0;
}

.slider {
  position: absolute;
  cursor: pointer;
  top: 0; left: 0; right: 0; bottom: 0;
  background-color: #ccc;
  transition: .4s;
}

.slider:before {
  position: absolute;
  content: "";
  height: 18px; width: 18px;
  left: 4px; bottom: 4px;
  background-color: white;
  transition: .4s;
}

input:checked + .slider {
  background-color: var(--dark-brown);
}

input:checked + .slider:before {
  transform: translateX(24px);
}

.slider.round {
  border-radius: 34px;
}

.slider.round:before {
  border-radius: 50%;
}

/* Ensure the card can contain the floating toggle */
.admin-card {
    position: relative; 
    padding-top: 3rem; /* Add space at the top so it doesn't overlap text */
}

/* Floating the toggle to the top-right corner */
.mini-toggle-box {
    position: absolute;
    top: 1.5rem;
    right: 1.5rem;
    display: flex;
    align-items: center;
    gap: 8px;
    background: #fdfdfd;
    padding: 6px 12px;
    border-radius: 25px;
    border: 1px solid #e2e8f0;
    box-shadow: 0 2px 4px rgba(0,0,0,0.05);
    width: auto; /* Keeps it from stretching */
    z-index: 5;
}

.mini-label {
    font-size: 0.7rem;
    font-weight: 800;
    color: var(--dark-brown);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

/* The Mini Switch Engine */
.switch.mini {
    position: relative;
    display: inline-block;
    width: 34px;
    height: 18px;
}

.switch.mini input { opacity: 0; width: 0; height: 0; }

.slider {
    position: absolute;
    cursor: pointer;
    top: 0; left: 0; right: 0; bottom: 0;
    background-color: #cbd5e1;
    transition: .3s;
    border-radius: 34px;
}

.slider:before {
    position: absolute;
    content: "";
    height: 12px; width: 12px;
    left: 3px; bottom: 3px;
    background-color: white;
    transition: .3s;
    border-radius: 50%;
}

input:checked + .slider {
    background-color: var(--dark-brown);
}

input:checked + .slider:before {
    transform: translateX(16px);
}

/* end admin edit project */


/* Styling for the Gallery "Empty" State */
.empty-msg {
    grid-column: 1 / -1; /* Spans all grid columns */
    text-align: center;
    padding: 4rem 2rem;
    background: #fdfdfd;
    border: 2px dashed #eee; /* Architectural "blueprint" feel */
    border-radius: 15px;
    
    /* Typography */
    color: var(--dark-brown);
    font-size: 1.2rem;
    font-weight: 600;
    letter-spacing: 0.5px;
    line-height: 1.6;
    
    /* Center it in the viewport */
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
}

/* Optional: Add a little icon or divider above the text */
.empty-msg::before {
    content: '🏗️'; /* Or a building icon */
    font-size: 2.5rem;
    margin-bottom: 1rem;
    display: block;
    opacity: 0.6;
}

/* end styling for projects home page */


/* manage clients */
.btn-danger {
    background: #f8d7da;
    color: #721c24;
    border: 1px solid #f5c6cb;
    padding: 5px 10px;
    border-radius: 4px;
    cursor: pointer;
    font-size: 0.8rem;
    font-weight: 700;
}

.btn-danger:hover {
    background: #721c24;
    color: white;
}

.wa-link {
    color: #25D366;
    text-decoration: none;
    font-weight: 700;
}

.wa-link:hover {
    text-decoration: underline;
}

.action-buttons {
    display: flex;
    gap: 10px;
}

.text-muted {
    color: #aaa;
    font-style: italic;
    font-size: 0.85rem;
}

/* end manage clients page */

/* Base Pill Style */
.btn-pill {
    display: inline-flex;
    align-items: center;
    padding: 6px 18px;
    border-radius: 50px;
    /* This creates the pill shape */
    font-size: 0.8rem;
    font-weight: 700;
    text-decoration: none;
    transition: all 0.2s ease;
    border: 1px solid transparent;
    cursor: pointer;
    white-space: nowrap;
}

/* Edit / View Pill (Muted Earthy Tones) */
.btn-edit-pill {
    background: var(--cream);
    color: var(--dark-brown);
    border-color: #ddd;
}

.btn-edit-pill:hover {
    background: var(--dark-brown);
    color: white;
    border-color: var(--dark-brown);
}

/* Danger / Delete Pill */
.btn-danger-pill {
    background: #fff5f5;
    color: #c53030;
    border-color: #feb2b2;
}

.btn-danger-pill:hover {
    background: #c53030;
    color: white;
    border-color: #c53030;
}

/* Adjust the table cell for alignment */
.action-buttons {
    display: flex;
    gap: 8px;
    align-items: center;
}

.wa-badge {
    display: inline-flex;
    align-items: center;
    background: #eafff1;
    color: #128c7e;
    padding: 4px 12px;
    border-radius: 50px;
    font-size: 0.75rem;
    font-weight: 700;
    text-decoration: none;
    border: 1px solid #c6f6d5;
}

.wa-badge:hover {
    background: #128c7e;
    color: white;
}

/* end clients page */

/* alerts styles */
.alert-container {
    margin-top: 1.5rem;
    margin-bottom: -1rem;
    /* Pulls the content below closer */
}

.alert {
    display: flex;
    align-items: center;
    padding: 1rem 1.5rem;
    border-radius: 12px;
    font-weight: 600;
    font-size: 0.9rem;
    animation: slideDown 0.3s ease-out;
}

.alert-success {
    background: #e6f4ea;
    color: #1e7e34;
    border: 1px solid #c3e6cb;
}

.alert-error {
    background: #fdf2f2;
    color: #9b1c1c;
    border: 1px solid #fbd5d5;
}

.alert-icon {
    margin-right: 12px;
    font-weight: 900;
}

@keyframes slideDown {
    from {
        opacity: 0;
        transform: translateY(-10px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* end alert styles */

/* milestone timeline listing on admin edit project page */

.status-badge {
    padding: 4px 12px;
    border-radius: 50px;
    font-size: 0.75rem;
    font-weight: 700;
    text-transform: uppercase;
}

.status-badge.completed {
    background: #e6f4ea;
    color: #1e7e34;
}

.status-badge.current {
    background: #fff4e6;
    color: #d97706;
    border: 1px solid #fbbf24;
}

.status-badge.upcoming {
    background: #f3f4f6;
    color: #6b7280;
}

/* end milestone lisitin on edit project page */

/* homepage project photos */

.gallery-section {
    padding: 80px 20px;
}

.section-header {
    text-align: center;
    margin-bottom: 3rem;
}

.subtitle {
    text-transform: uppercase;
    letter-spacing: 2px;
    font-size: 0.8rem;
    color: #888;
    font-weight: 700;
}

/* The Grid Engine */
.photo-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
    grid-auto-rows: 300px;
    gap: 20px;
}

.photo-item {
    position: relative;
    overflow: hidden;
    border-radius: 12px;
    background: #eee;
}

.photo-item img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.5s ease;
}

/* Make some items span 2 rows for interest */
.photo-item.tall {
    grid-row: span 2;
}

/* Hover Overlay */
.photo-overlay {
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    padding: 2rem;
    background: linear-gradient(to top, rgba(61, 43, 31, 0.9), transparent);
    color: white;
    transform: translateY(100%);
    transition: transform 0.3s ease;
}

.photo-item:hover img {
    transform: scale(1.1);
}

.photo-item:hover .photo-overlay {
    transform: translateY(0);
}

.photo-overlay .tag {
    font-size: 0.7rem;
    text-transform: uppercase;
    background: var(--cream);
    color: var(--dark-brown);
    padding: 4px 10px;
    border-radius: 50px;
    font-weight: 700;
}

.photo-overlay h3 {
    margin-top: 10px;
    font-size: 1.2rem;
}

/* end homepage projects photos */

/* about us page */
/* About Hero Layout */
.about-hero {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 4rem;
    padding: 100px 20px;
    align-items: center;
}

.lead-text {
    font-size: 1.25rem;
    color: var(--dark-brown);
    font-weight: 600;
    margin-bottom: 1.5rem;
    line-height: 1.6;
}

.about-image img {
    width: 100%;
    border-radius: 20px;
    box-shadow: 20px 20px 0px var(--cream); /* Architectural offset shadow */
}

/* Credentials Grid */
.credentials-section {
    background: #fcfcfc;
    padding: 100px 20px;
}

.credentials-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 2rem;
    margin-top: 3rem;
}

.cred-card {
    background: white;
    padding: 3rem 2rem;
    border-radius: 15px;
    border: 1px solid #eee;
    text-align: center;
}

.cred-card .years {
    display: block;
    font-family: 'Playfair Display', serif;
    font-size: 2.5rem;
    color: var(--terracotta);
    font-weight: 900;
    margin-bottom: 1rem;
}

.cred-card h3 {
    margin-bottom: 1rem;
    text-transform: uppercase;
    font-size: 0.9rem;
    letter-spacing: 1px;
}

/* Staggered Skills Pills */
.skills-staggered {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 15px;
    margin-top: 4rem;
}

.skill-item {
    background: var(--dark-brown);
    color: white;
    padding: 10px 25px;
    border-radius: 50px;
    font-size: 0.8rem;
    font-weight: 700;
}

/* Mobile Responsiveness */
@media (max-width: 992px) {
    .about-hero, .credentials-grid {
        grid-template-columns: 1fr;
    }
    .about-hero {
        text-align: center;
    }
}

/* end about us page */

/* solutions pages */
/* Solutions Hero */
.solutions-hero {
    padding: 120px 20px 60px;
    text-align: center;
    background: linear-gradient(to bottom, var(--cream) 0%, white 100%);
}

/* Signature Paths */
.signature-paths {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 2rem;
    margin-top: -40px; /* Overlaps into the hero slightly */
}

.path-card {
    background: white;
    padding: 3rem;
    border-radius: 20px;
    box-shadow: var(--shadow);
    text-align: center;
    border: 1px solid #eee;
}

.featured-path {
    background: var(--dark-brown);
    color: white;
    border: none;
}

.path-icon { font-size: 2.5rem; margin-bottom: 1rem; display: block; }

/* Service Master List */
.services-master-list {
    padding: 100px 20px;
}

.service-categories {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 4rem;
    margin-top: 4rem;
}

.category-group h4 {
    color: var(--terracotta);
    font-size: 1.2rem;
    margin-bottom: 1.5rem;
    display: flex;
    align-items: center;
    gap: 10px;
}

.check-list {
    list-style: none;
    padding: 0;
}

.check-list li {
    padding: 12px 0;
    border-bottom: 1px solid #f0f0f0;
    font-size: 0.95rem;
    color: #444;
    position: relative;
    padding-left: 25px;
}

.check-list li::before {
    content: '✓';
    position: absolute;
    left: 0;
    color: var(--terracotta);
    font-weight: bold;
}

/* The Promise CTA */
.promise-cta {
    background: var(--cream);
    padding: 80px 20px;
}

.promise-box {
    background: var(--white);
    padding: 4rem;
    border-radius: 20px;
    text-align: center;
    max-width: 800px;
    margin: 0 auto;
    border: 2px solid var(--dark-brown);
}

.promise-box h3 {
    text-transform: uppercase;
    letter-spacing: 2px;
    margin-bottom: 1.5rem;
}

.promise-box p {
    font-style: italic;
    font-size: 1.3rem;
    margin-bottom: 2rem;
}
/* end solutions page */

/* client account settings */
.read-only-profile {
    margin-top: 2rem;
    padding: 1.5rem;
    background: var(--cream); /* Light background to separate from main content */
    border-radius: 12px;
}

.read-only-profile h5 {
    color: var(--terracotta);
    text-transform: uppercase;
    font-size: 0.75rem;
    letter-spacing: 1px;
    margin-bottom: 1.5rem;
}

.info-block {
    margin-bottom: 1.2rem;
}

.info-block label {
    display: block;
    font-size: 0.7rem;
    font-weight: 700;
    color: #888;
    text-transform: uppercase;
    margin-bottom: 4px;
}

.info-block input {
    width: 100%;
    background: transparent;
    border: none;
    border-bottom: 1px solid rgba(61, 43, 31, 0.1);
    color: var(--dark-brown);
    font-size: 0.95rem;
    font-weight: 500;
    padding: 5px 0;
    cursor: default; /* Tells the user they can't type here */
}

.info-block input:focus {
    outline: none; /* No blue glow when clicked */
}

.admin-note {
    font-size: 0.75rem;
    color: #777;
    font-style: italic;
    margin-top: 1.5rem;
    line-height: 1.4;
}

.settings-content h4{margin-bottom:20px; }
.settings-content .form-group label {font-size:0.7em;}
/* end client account settings */

/* alerts messages*/

.alert {
    padding: 1rem 1.5rem;
    border-radius: 12px;
    margin-bottom: 2rem;
    font-size: 0.9rem;
    font-weight: 500;
    display: flex;
    align-items: center;
    gap: 12px;
    animation: fadeInDown 0.4s ease-out;
}

.alert-success {
    background-color: #f0fdf4; /* Soft Mint */
    color: #166534;
    border: 1px solid #bbf7d0;
}

.alert-error {
    background-color: #fef2f2; /* Soft Rose */
    color: #991b1b;
    border: 1px solid #fecaca;
}

.alert .icon {
    font-style: normal;
    font-weight: 900;
}

/* Subtle entry animation */
@keyframes fadeInDown {
    from {
        opacity: 0;
        transform: translateY(-10px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}
/* alerts message */

/* gallery styles portal page */

.gallery-grid {
    display: grid;
    /* This will fit as many 300px cards as possible in the wide row */
    grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); 
    gap: 1.5rem;
}

.gallery-item {
    background: white;
    border-radius: 15px;
    overflow: hidden;
    box-shadow: 0 4px 15px rgba(0,0,0,0.05);
    transition: transform 0.3s ease;
}

.gallery-item:hover {
    transform: translateY(-5px);
}

.image-wrapper {
    position: relative;
    aspect-ratio: 4/3;
    overflow: hidden;
}

.image-wrapper img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.image-overlay {
    position: absolute;
    top: 15px;
    left: 15px;
}

.category-badge {
    background: rgba(61, 43, 31, 0.8); /* Your brand dark brown */
    color: white;
    padding: 5px 12px;
    border-radius: 20px;
    font-size: 0.7rem;
    text-transform: uppercase;
    letter-spacing: 1px;
}

.gallery-info {
    padding: 1.5rem;
}

.upload-date {
    display: block;
    font-size: 0.75rem;
    color: var(--terracotta);
    font-weight: 700;
    margin-bottom: 0.5rem;
}

.caption {
    font-size: 0.9rem;
    color: #555;
    line-height: 1.4;
}

.portal-full-width{
    margin-top:20px;
}

/* end gallery styles portal page */

/* gallery styles admin page */
.admin-thumbnail-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
    gap: 1rem;
    margin-top: 1.5rem;
}

.thumb-item {
    position: relative;
    border-radius: 8px;
    overflow: hidden;
    border: 1px solid #eee;
    aspect-ratio: 1/1;
}

.thumb-item img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.thumb-meta {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    background: rgba(0,0,0,0.6);
    padding: 5px;
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.thumb-cat {
    color: white;
    font-size: 0.65rem;
    text-transform: uppercase;
}

.btn-delete-icon {
    background: #ff4444;
    color: white;
    border: none;
    border-radius: 4px;
    width: 18px;
    height: 18px;
    line-height: 18px;
    cursor: pointer;
    font-size: 12px;
}

/* end gallery styles admin page */

/* contact page */

.general-contact {
    padding: 8rem 0; /* More breathing room for a dedicated page */
    background: var(--white);
    min-height: 80vh;
}

.general-contact h1 {
    font-size: 2.5rem;
    color: var(--dark-brown);
    margin-bottom: 1rem;
}

/* We can reuse your existing .contact-container and .form-grid styles 
   so the look stays consistent across the whole site! */


.cta-banner {
    background: var(--dark-brown); /* High contrast */
    padding: 5rem 0;
    border: none;
}

.cta-text h2 {
    color: var(--white); /* Switch to light text */
}

.cta-text p {
    color: rgba(255, 255, 255, 0.8); /* Soft white for readability */
}

.cta-banner .cta-text h2 {
    color: var(--white);
    letter-spacing: 0.5px;
    font-size: 2rem;
}

.cta-banner .cta-text p {
    color: rgba(255, 255, 255, 0.85); /* Slightly off-white is easier on the eyes */
    line-height: 1.6;
}
 
/* Creating a specific button style for this call to action */
.btn-terracotta {
    background: var(--terracotta);
    color: white;
    padding: 1.2rem 2.5rem;
    border-radius: 50px; /* Rounded pill shape looks very modern */
    text-decoration: none;
    font-weight: 700;
    display: inline-block;
    transition: transform 0.3s ease, box-shadow 0.3s ease;
    white-space: nowrap;
}

.btn-terracotta:hover {
    transform: translateY(-3px);
    box-shadow: 0 10px 20px rgba(211, 125, 92, 0.2);
    color: white;
}

/* Responsive adjustment */
@media (max-width: 768px) {
    .cta-content {
        flex-direction: column;
        text-align: center;
    }
    .cta-text p {
        margin-bottom: 1.5rem;
    }
}


/* end contact form */