/* style.css */

/* -------------------------------------------------------------------------- */
/*                                 VARIABLES                                  */
/* -------------------------------------------------------------------------- */
:root {
    /* Typography */
    --font-heading: 'Manrope', Arial, sans-serif;
    --font-body: 'Rubik', Arial, sans-serif;

    /* Analogous Color Scheme */
    --color-primary-hue: 217; /* Base Blue */
    --color-primary: hsl(var(--color-primary-hue), 91%, 55%); /* #3B82F6 */
    --color-primary-light: hsl(var(--color-primary-hue), 91%, 65%);
    --color-primary-dark: hsl(var(--color-primary-hue), 91%, 45%);

    --color-secondary-hue: 158; /* Green-Blue */
    --color-secondary: hsl(var(--color-secondary-hue), 79%, 44%); /* #10B981 */
    --color-secondary-light: hsl(var(--color-secondary-hue), 79%, 54%);
    --color-secondary-dark: hsl(var(--color-secondary-hue), 79%, 34%);

    --color-accent-hue: 258; /* Violet-Blue */
    --color-accent: hsl(var(--color-accent-hue), 86%, 66%); /* #6366F1 */
    --color-accent-light: hsl(var(--color-accent-hue), 86%, 76%);
    --color-accent-dark: hsl(var(--color-accent-hue), 86%, 56%);

    /* Neumorphism & UI Colors */
    --color-bg: #E0E5EC;
    --color-bg-alt: #F0F2F5;
    --color-bg-dark-neumorphic: #c8cdd3; /* For darker neumorphic elements if needed */
    
    --color-text-headings: #1A202C; /* Darker for strong headings */
    --color-text-body: #2D3748;    /* Main body text */
    --color-text-subtle: #4A5568;  /* Lighter for less emphasis */
    --color-text-light: #FFFFFF;   /* For dark backgrounds */
    --color-border: #CBD5E0;      /* Subtle borders */

    /* Shadows for Neumorphism */
    --shadow-neumorphic-distance: 7px;
    --shadow-neumorphic-blur: 15px;
    --shadow-neumorphic-light: rgba(255, 255, 255, 0.7);
    --shadow-neumorphic-dark: rgba(163, 177, 198, 0.6);
    
    --neumorphic-shadow: 
        var(--shadow-neumorphic-distance) var(--shadow-neumorphic-distance) var(--shadow-neumorphic-blur) var(--shadow-neumorphic-dark),
        calc(-1 * var(--shadow-neumorphic-distance)) calc(-1 * var(--shadow-neumorphic-distance)) var(--shadow-neumorphic-blur) var(--shadow-neumorphic-light);
    
    --neumorphic-shadow-inset:
        inset var(--shadow-neumorphic-distance) var(--shadow-neumorphic-distance) var(--shadow-neumorphic-blur) var(--shadow-neumorphic-dark),
        inset calc(-1 * var(--shadow-neumorphic-distance)) calc(-1 * var(--shadow-neumorphic-distance)) var(--shadow-neumorphic-blur) var(--shadow-neumorphic-light);

    --neumorphic-shadow-pressed: /* More pronounced inset for pressed state */
        inset calc(var(--shadow-neumorphic-distance) * 0.7) calc(var(--shadow-neumorphic-distance) * 0.7) calc(var(--shadow-neumorphic-blur) * 0.7) var(--shadow-neumorphic-dark),
        inset calc(-1 * var(--shadow-neumorphic-distance) * 0.7) calc(-1 * var(--shadow-neumorphic-distance) * 0.7) calc(var(--shadow-neumorphic-blur) * 0.7) var(--shadow-neumorphic-light);


    /* Layout & UI Elements */
    --border-radius-sm: 8px;
    --border-radius-md: 15px;
    --border-radius-lg: 25px;
    --transition-speed: 0.3s;
    --transition-easing: ease-in-out;

    /* Gradients */
    --gradient-primary: linear-gradient(135deg, var(--color-primary-light), var(--color-primary-dark));
    --gradient-accent: linear-gradient(135deg, var(--color-accent-light), var(--color-accent-dark));
    --gradient-subtle-bg: linear-gradient(180deg, var(--color-bg), #d1d9e6);
}

/* -------------------------------------------------------------------------- */
/*                               GLOBAL RESETS & BASE STYLES                  */
/* -------------------------------------------------------------------------- */
*,
*::before,
*::after {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

html {
    scroll-behavior: smooth;
    font-size: 16px; /* Base font size */
}

body {
    font-family: var(--font-body);
    background-color: var(--color-bg);
    color: var(--color-text-body);
    line-height: 1.7;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    overflow-x: hidden;
}

#particle-container {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: -1; /* Behind all content */
    /* Particle animation will be handled by JS, this is just the container */
    pointer-events: none; /* Particles should not interfere with interactions */
}

/* Headings */
h1, h2, h3, h4, h5, h6 {
    font-family: var(--font-heading);
    font-weight: 700;
    color: var(--color-text-headings);
    line-height: 1.3;
    margin-bottom: 0.75em;
    text-rendering: optimizeLegibility;
}

h1 { font-size: clamp(2rem, 5vw, 3.5rem); }
h2 { font-size: clamp(1.8rem, 4vw, 2.5rem); }
h3 { font-size: clamp(1.5rem, 3.5vw, 2rem); }
h4 { font-size: clamp(1.2rem, 3vw, 1.5rem); }

/* Paragraphs & Links */
p {
    margin-bottom: 1.25rem;
    color: var(--color-text-subtle);
}

a {
    color: var(--color-primary);
    text-decoration: none;
    transition: color var(--transition-speed) var(--transition-easing);
}

a:hover, a:focus {
    color: var(--color-primary-dark);
    text-decoration: underline;
}

img {
    max-width: 100%;
    height: auto;
    display: block;
}

/* Lists */
ul, ol {
    list-style-position: inside;
    padding-left: 0; /* Reset, use margin/padding on li if needed */
}


/* -------------------------------------------------------------------------- */
/*                               UTILITY CLASSES                              */
/* -------------------------------------------------------------------------- */
.text-center { text-align: center; }
.text-primary { color: var(--color-primary); }
.text-light { color: var(--color-text-light); }
.mb-1 { margin-bottom: 0.5rem; }
.mb-2 { margin-bottom: 1rem; }
.mb-3 { margin-bottom: 1.5rem; }
.mt-1 { margin-top: 0.5rem; }
.mt-2 { margin-top: 1rem; }
.mt-3 { margin-top: 1.5rem; }

/* Screen reader only */
.sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

/* -------------------------------------------------------------------------- */
/*                                  LAYOUT                                    */
/* -------------------------------------------------------------------------- */
.container {
    width: 90%;
    max-width: 1200px;
    margin-left: auto;
    margin-right: auto;
    padding-left: 15px;
    padding-right: 15px;
}

.content-column { /* For main text content, like on About/Privacy/Terms */
    max-width: 800px;
    margin-left: auto;
    margin-right: auto;
}
.content-column.is-two-thirds { /* Mimicking Bulma class if used in HTML */
    width: 100%; /* Will be constrained by parent .container */
}
@media (min-width: 769px) {
    .content-column.is-two-thirds {
        width: 66.666%;
    }
}


.grid {
    display: grid;
    gap: 30px;
}

/* Common grid layouts */
.grid-cols-1 { grid-template-columns: 1fr; }
.grid-cols-2 { grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); }
.grid-cols-3 { grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); }
.grid-cols-4 { grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); }

@media (min-width: 600px) {
    .grid-cols-2 { grid-template-columns: repeat(2, 1fr); }
    .grid-cols-3 { grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); } /* Stays adaptive */
    .grid-cols-4 { grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); } /* Stays adaptive */
}
@media (min-width: 900px) {
    .grid-cols-3 { grid-template-columns: repeat(3, 1fr); }
    .grid-cols-4 { grid-template-columns: repeat(4, 1fr); }
}


/* -------------------------------------------------------------------------- */
/*                          NEUMORPHIC COMPONENTS                             */
/* -------------------------------------------------------------------------- */

/* Global Button Styles */
.neumorphic-button, button, input[type="submit"], input[type="button"] {
    display: inline-block;
    padding: 0.75em 1.75em;
    font-family: var(--font-heading);
    font-size: 1rem; /* Base button font size */
    font-weight: 600;
    color: var(--color-primary);
    background-color: var(--color-bg);
    border: none;
    border-radius: var(--border-radius-md);
    box-shadow: var(--neumorphic-shadow);
    cursor: pointer;
    text-align: center;
    text-decoration: none;
    transition: all var(--transition-speed) var(--transition-easing);
    user-select: none; /* Prevent text selection on click */
    outline: none; /* Remove default outline, manage focus with box-shadow */
}

.neumorphic-button:hover, button:hover, input[type="submit"]:hover, input[type="button"]:hover {
    color: var(--color-accent);
    box-shadow: var(--neumorphic-shadow-inset);
}

.neumorphic-button:active, button:active, input[type="submit"]:active, input[type="button"]:active,
.neumorphic-button.pressed, button.pressed, input[type="submit"].pressed, input[type="button"].pressed {
    box-shadow: var(--neumorphic-shadow-pressed);
    transform: translateY(1px) translateX(1px);
}

.neumorphic-button:focus-visible, button:focus-visible, input[type="submit"]:focus-visible, input[type="button"]:focus-visible {
    box-shadow: var(--neumorphic-shadow-inset), 0 0 0 3px hsla(var(--color-primary-hue), 91%, 55%, 0.5);
}


.neumorphic-button-small {
    padding: 0.5em 1.25em;
    font-size: 0.9rem;
}

.neumorphic-input, .neumorphic-textarea {
    width: 100%;
    padding: 0.8em 1em;
    font-family: var(--font-body);
    font-size: 1rem;
    color: var(--color-text-body);
    background-color: var(--color-bg);
    border: none;
    border-radius: var(--border-radius-md);
    box-shadow: var(--neumorphic-shadow-inset);
    transition: box-shadow var(--transition-speed) var(--transition-easing);
    outline: none;
}

.neumorphic-input::placeholder, .neumorphic-textarea::placeholder {
    color: var(--color-text-subtle);
    opacity: 0.7;
}

.neumorphic-input:focus, .neumorphic-textarea:focus {
    box-shadow: var(--neumorphic-shadow-inset), 0 0 0 3px hsla(var(--color-primary-hue), 91%, 55%, 0.3);
}

.neumorphic-card, .neumorphic-element {
    background-color: var(--color-bg);
    border-radius: var(--border-radius-lg);
    padding: 25px;
    box-shadow: var(--neumorphic-shadow);
    transition: transform var(--transition-speed) var(--transition-easing),
                box-shadow var(--transition-speed) var(--transition-easing);
}
.neumorphic-card:hover, .neumorphic-element:hover {
    transform: translateY(-5px) scale(1.02);
    box-shadow: 
        calc(var(--shadow-neumorphic-distance) * 1.5) calc(var(--shadow-neumorphic-distance) * 1.5) calc(var(--shadow-neumorphic-blur) * 1.5) var(--shadow-neumorphic-dark),
        calc(-1 * var(--shadow-neumorphic-distance) * 1.5) calc(-1 * var(--shadow-neumorphic-distance) * 1.5) calc(var(--shadow-neumorphic-blur) * 1.5) var(--shadow-neumorphic-light);
}

/* Generic Card Structure Styling */
.card { /* This is a more generic card, can be neumorphic too by adding .neumorphic-card */
    background-color: var(--color-bg-alt); /* Slightly different from main bg for depth */
    border-radius: var(--border-radius-md);
    box-shadow: 0 4px 6px rgba(0,0,0,0.1); /* Standard shadow for non-neumorphic cards */
    overflow: hidden;
    display: flex;
    flex-direction: column;
    align-items: stretch; /* Default, children stretch. Override per card type if needed */
    text-align: left; /* Default, override per card type if needed */
    height: 100%; /* Ensure cards in a grid are same height */
}

.card-image { /* Container for the image */
    width: 100%;
    height: 200px; /* Fixed height for consistent card image sizes */
    overflow: hidden;
    display: flex; /* For centering image if needed, though object-fit usually handles it */
    justify-content: center;
    align-items: center;
    background-color: #ddd; /* Placeholder bg for images */
}

.card-image img {
    width: 100%;
    height: 100%;
    object-fit: cover; /* Ensures image covers the container without distortion */
    display: block; /* Removes extra space below image */
}

.card-content {
    padding: 20px;
    flex-grow: 1; /* Allows content to expand and push footer/button down */
    display: flex;
    flex-direction: column;
}
.card-content > *:last-child {
    margin-bottom: 0; /* Remove bottom margin from last element */
}
.card-title {
    margin-bottom: 0.5em;
    color: var(--color-primary-dark);
}

.card-content p {
    flex-grow: 1; /* Allow paragraph to take up space before button */
    font-size: 0.95rem;
}

/* "Read More" style links */
.read-more-link {
    display: inline-block;
    margin-top: 1rem;
    font-weight: 600;
    color: var(--color-accent);
    text-decoration: none;
    position: relative;
    padding-bottom: 3px;
}
.read-more-link::after {
    content: '→';
    margin-left: 8px;
    transition: transform var(--transition-speed) var(--transition-easing);
}
.read-more-link:hover::after {
    transform: translateX(5px);
}
.read-more-link:hover {
    color: var(--color-accent-dark);
    text-decoration: none; /* Already none, but ensure */
}


/* -------------------------------------------------------------------------- */
/*                            HEADER & NAVIGATION                             */
/* -------------------------------------------------------------------------- */
.site-header {
    background-color: hsla(0, 0%, 100%, 0.7); /* Glassmorphism: semi-transparent white */
    backdrop-filter: blur(10px) saturate(180%);
    -webkit-backdrop-filter: blur(10px) saturate(180%);
    padding: 1rem 0;
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    z-index: 1000;
    box-shadow: 0 2px 15px rgba(0,0,0,0.08);
    transition: background-color var(--transition-speed) var(--transition-easing),
                box-shadow var(--transition-speed) var(--transition-easing);
}
/* Add a class on scroll if desired:
.site-header.scrolled {
    background-color: hsla(0, 0%, 100%, 0.85);
    box-shadow: 0 5px 20px rgba(0,0,0,0.1);
}
*/

.header-container {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.logo {
    font-family: var(--font-heading);
    font-size: clamp(1.5rem, 3vw, 2rem);
    font-weight: 800;
    color: var(--color-primary);
    text-decoration: none;
    letter-spacing: -0.5px;
}
.logo:hover {
    color: var(--color-primary-dark);
}

.main-navigation .nav-menu {
    list-style: none;
    display: flex;
    align-items: center;
}

.main-navigation .nav-menu li {
    margin-left: clamp(15px, 3vw, 30px);
}

.main-navigation .nav-menu a {
    font-family: var(--font-body);
    font-weight: 500;
    font-size: 0.95rem;
    color: var(--color-text-subtle);
    text-decoration: none;
    padding: 0.5em 0.75em;
    border-radius: var(--border-radius-sm);
    position: relative;
    transition: color var(--transition-speed) var(--transition-easing), 
                background-color var(--transition-speed) var(--transition-easing);
}
.main-navigation .nav-menu a::after { /* Underline effect */
    content: '';
    position: absolute;
    bottom: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 0;
    height: 2px;
    background-color: var(--color-primary);
    transition: width var(--transition-speed) var(--transition-easing);
}

.main-navigation .nav-menu a:hover,
.main-navigation .nav-menu a:focus,
.main-navigation .nav-menu a.active { /* Add 'active' class with JS */
    color: var(--color-primary);
}
.main-navigation .nav-menu a:hover::after,
.main-navigation .nav-menu a:focus::after,
.main-navigation .nav-menu a.active::after {
    width: 70%;
}

/* Mobile Menu Toggle */
.menu-toggle {
    display: none;
    background: none;
    border: none;
    cursor: pointer;
    padding: 10px;
    z-index: 1001;
    --icon-color: var(--color-text-headings);
}
.hamburger-icon {
    display: block;
    width: 25px;
    height: 3px;
    background-color: var(--icon-color);
    position: relative;
    border-radius: 2px;
    transition: background-color 0s 0.3s; /* Delay disappearance of middle line */
}
.hamburger-icon::before,
.hamburger-icon::after {
    content: '';
    position: absolute;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: var(--icon-color);
    border-radius: 2px;
    transition: transform 0.3s var(--transition-easing), 
                top 0.3s var(--transition-easing) 0.3s;
}
.hamburger-icon::before { top: -8px; }
.hamburger-icon::after { top: 8px; }

.menu-toggle.active .hamburger-icon { background-color: transparent; }
.menu-toggle.active .hamburger-icon::before {
    top: 0;
    transform: rotate(45deg);
    transition: top 0.3s var(--transition-easing), 
                transform 0.3s var(--transition-easing) 0.3s;
}
.menu-toggle.active .hamburger-icon::after {
    top: 0;
    transform: rotate(-45deg);
    transition: top 0.3s var(--transition-easing), 
                transform 0.3s var(--transition-easing) 0.3s;
}


/* -------------------------------------------------------------------------- */
/*                                   FOOTER                                   */
/* -------------------------------------------------------------------------- */
.site-footer {
    background-color: #1A202C; /* Darker footer background */
    color: #A0AEC0; /* Lighter text for contrast */
    padding: 3rem 0 0 0;
    font-size: 0.9rem;
}

.footer-container {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 2rem;
    padding-bottom: 2rem;
}

.footer-column h4 {
    font-family: var(--font-heading);
    color: var(--color-text-light);
    font-size: 1.1rem;
    margin-bottom: 1rem;
    font-weight: 600;
}

.footer-column p {
    color: #CBD5E0; /* Slightly brighter than base footer text */
    line-height: 1.8;
    margin-bottom: 0.75rem;
}

.footer-column ul {
    list-style: none;
}

.footer-column ul li {
    margin-bottom: 0.6rem;
}

.footer-column ul a {
    color: #A0AEC0;
    text-decoration: none;
    transition: color var(--transition-speed) var(--transition-easing),
                padding-left var(--transition-speed) var(--transition-easing);
}

.footer-column ul a:hover, .footer-column ul a:focus {
    color: var(--color-text-light);
    padding-left: 5px; /* Slight indent on hover */
    text-decoration: none;
}

.social-links li {
    display: inline-block; /* For horizontal layout if desired */
    margin-right: 10px;
}
.social-links a { /* Text-based social links */
    font-weight: 500;
    /* Add specific styles if needed to make them look more like icons via text, e.g., border */
}
.social-links a:hover {
    color: var(--color-primary-light);
}


.footer-bottom {
    text-align: center;
    padding: 1.5rem 0;
    border-top: 1px solid #2D3748; /* Subtle separator */
    font-size: 0.85rem;
    color: #718096; /* Muted color for copyright */
}
.footer-bottom p {
    margin-bottom: 0;
}

/* -------------------------------------------------------------------------- */
/*                              SECTION STYLES                                */
/* -------------------------------------------------------------------------- */
.section {
    padding: 4rem 0; /* Natural height based on content */
    position: relative; /* For absolute positioned elements within sections */
}

.section:nth-child(even) {
    background-color: var(--color-bg-alt); /* Alternating section background */
}

.section-title {
    text-align: center;
    margin-bottom: 2.5rem;
    color: var(--color-text-headings);
    position: relative;
    padding-bottom: 0.5rem;
}
.section-title::after { /* Decorative underline */
    content: '';
    position: absolute;
    bottom: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 70px;
    height: 3px;
    background-color: var(--color-primary);
    border-radius: 2px;
}

.section-subtitle {
    text-align: center;
    font-size: 1.1rem;
    color: var(--color-text-subtle);
    margin-bottom: 3rem;
    max-width: 700px;
    margin-left: auto;
    margin-right: auto;
    line-height: 1.8;
}


/* Hero Section */
.hero-section {
    min-height: 80vh; /* Ensure it's substantial but not always full screen */
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    position: relative;
    background-size: cover;
    background-position: center center;
    background-repeat: no-repeat;
    color: var(--color-text-light); /* Ensured white text */
    padding-top: 100px; /* Account for fixed header */
    padding-bottom: 50px;
}
.hero-overlay {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: linear-gradient(rgba(0,0,0,0.5), rgba(0,0,0,0.7)); /* Darkening overlay */
    z-index: 1;
}
.hero-content {
    position: relative;
    z-index: 2;
    max-width: 800px;
}
.hero-title {
    color: var(--color-text-light); /* Explicitly white */
    text-shadow: 2px 2px 8px rgba(0,0,0,0.6); /* Enhanced shadow for readability */
    margin-bottom: 1rem;
}
.hero-subtitle {
    color: var(--color-text-light); /* Explicitly white */
    text-shadow: 1px 1px 6px rgba(0,0,0,0.5);
    font-size: clamp(1.1rem, 2.5vw, 1.4rem);
    margin-bottom: 2rem;
    line-height: 1.7;
}
.hero-cta { /* Extends global button styles */
    background-color: var(--color-primary);
    color: var(--color-text-light);
    padding: 0.9em 2.2em;
    font-size: 1.1rem;
    box-shadow: var(--neumorphic-shadow), 0 5px 15px hsla(var(--color-primary-hue), 91%, 55%, 0.4);
}
.hero-cta:hover {
    background-color: var(--color-primary-dark);
    color: var(--color-text-light);
    transform: translateY(-2px);
    box-shadow: var(--neumorphic-shadow-inset), 0 8px 20px hsla(var(--color-primary-hue), 91%, 45%, 0.5);
}
.parallax-layer {
    position: absolute;
    top: 0; left: 0; width: 100%; height: 100%;
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center bottom;
    z-index: 0;
    opacity: 0.3; /* Default opacity */
    /* JS will handle transform: translateY() for parallax */
}


/* Mission Section & Stats Widgets */
.mission-content {
    text-align: center;
    margin-bottom: 3rem;
}
.stats-widgets-container {
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 20px;
}
.stat-widget { /* Assumes .neumorphic-element is also applied */
    text-align: center;
    padding: 20px;
}
.stat-number {
    display: block;
    font-size: clamp(2.5rem, 5vw, 3.5rem);
    font-weight: 700;
    color: var(--color-primary);
    margin-bottom: 0.25em;
}
.stat-label {
    display: block;
    font-size: 1rem;
    color: var(--color-text-headings);
    font-weight: 500;
    margin-bottom: 0.5em;
}
.stat-description {
    font-size: 0.85rem;
    color: var(--color-text-subtle);
    line-height: 1.5;
}

/* Our Process Section (Timeline) */
.timeline {
    position: relative;
    max-width: 900px;
    margin: 2rem auto;
}
.timeline::after { /* Central line */
    content: '';
    position: absolute;
    width: 3px;
    background-color: var(--color-border);
    top: 0;
    bottom: 0;
    left: 50%;
    transform: translateX(-50%);
    border-radius: 3px;
    z-index: 1;
}
.timeline-item {
    padding: 10px 40px;
    position: relative;
    width: 50%;
}
.timeline-item:nth-child(odd) { left: 0; padding-right: 60px; text-align: right; }
.timeline-item:nth-child(even) { left: 50%; padding-left: 60px; text-align: left; }

.timeline-icon { /* Circular icon on the timeline */
    position: absolute;
    width: 50px;
    height: 50px;
    background-color: var(--color-bg);
    border: 3px solid var(--color-primary);
    top: 20px; /* Adjust vertical alignment */
    border-radius: 50%;
    z-index: 2;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: bold;
    font-size: 1.1rem;
    color: var(--color-primary);
    box-shadow: var(--neumorphic-shadow);
}
.timeline-item:nth-child(odd) .timeline-icon { right: -25px; transform: translateX(0); }
.timeline-item:nth-child(even) .timeline-icon { left: -25px; transform: translateX(0); }

.timeline-content { /* Assumes .neumorphic-card is also applied */
    position: relative;
    padding: 20px; /* Neumorphic card already has padding */
}
.timeline-title {
    font-size: 1.4rem;
    color: var(--color-primary-dark);
    margin-bottom: 0.5em;
}

/* Portfolio, Media, Customer Stories (Card-based sections) */
.portfolio-grid .card, .media-grid .card, .customer-stories-grid .card,
.team-grid .card, .resources-list .resource-item {
    /* Generic card styles already handle flex-direction: column */
    /* Specific centering for images in these cards */
    align-items: stretch; /* Override generic .card align-items:center if it was set */
    text-align: left;   /* Default to left, center specific text inside */
}

/* Forcing card content like titles/text to be centered if needed */
.portfolio-grid .card-content, .media-grid .card-content, .customer-stories-grid .card-content {
    text-align: center; /* Center text within the content area for these specific cards */
}
.portfolio-grid .card-title, .media-grid .card-title, .customer-stories-grid .card-title {
    text-align: center;
}


/* Customer Stories / Testimonials */
.testimonial-card { /* Assuming it uses .card and .neumorphic-card */
    display: flex;
    flex-direction: column;
    align-items: center; /* Center all content within the card */
    text-align: center;
}
.testimonial-image-container {
    margin-bottom: 1rem;
}
.testimonial-image {
    width: 100px;
    height: 100px;
    border-radius: 50%;
    object-fit: cover;
    box-shadow: var(--neumorphic-shadow); /* Enhance with neumorphic shadow */
    border: 3px solid var(--color-bg); /* Inner border to lift it */
}
.testimonial-quote {
    margin-bottom: 1rem;
}
.testimonial-quote p {
    font-style: italic;
    color: var(--color-text-subtle);
    font-size: 1rem;
    line-height: 1.6;
    position: relative;
    padding: 0 1.5rem; /* Space for quotes */
}
.testimonial-quote p::before, .testimonial-quote p::after {
    content: '"';
    font-family: Georgia, serif;
    font-size: 2.5rem;
    color: var(--color-primary-light);
    position: absolute;
    line-height: 1;
}
.testimonial-quote p::before { top: -0.2em; left: 0; }
.testimonial-quote p::after { bottom: -0.2em; right: 0; }

.testimonial-cite {
    font-weight: 600;
    color: var(--color-primary);
    display: block;
    font-size: 0.95rem;
}
.progress-indicator-container {
    margin-top: 1rem;
    width: 80%;
}
.progress-indicator-container label {
    font-size: 0.85rem;
    color: var(--color-text-subtle);
    display: block;
    margin-bottom: 0.3em;
}
.neumorphic-progress {
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    width: 100%;
    height: 12px;
    border-radius: var(--border-radius-sm);
    background-color: var(--color-bg); /* Track background */
    box-shadow: var(--neumorphic-shadow-inset);
    overflow: hidden;
}
.neumorphic-progress::-webkit-progress-bar { /* Track */
    background-color: transparent;
    border-radius: var(--border-radius-sm);
}
.neumorphic-progress::-webkit-progress-value { /* Fill */
    background-color: var(--color-secondary);
    border-radius: var(--border-radius-sm);
    transition: width 0.5s var(--transition-easing);
}
.neumorphic-progress::-moz-progress-bar { /* Fill for Firefox */
    background-color: var(--color-secondary);
    border-radius: var(--border-radius-sm);
    transition: width 0.5s var(--transition-easing);
}


/* Community Section */
.community-content {
    text-align: left;
    max-width: 900px;
    margin-left: auto;
    margin-right: auto;
}
.community-content p {
    font-size: 1.05rem;
    line-height: 1.8;
}
.community-image-container {
    margin-top: 2rem;
    text-align: center;
}
.community-image-container img {
    border-radius: var(--border-radius-md);
    box-shadow: var(--neumorphic-shadow);
}

/* External Resources Section */
.resources-list .resource-item { /* Assumes .neumorphic-element is used */
    margin-bottom: 1.5rem;
    /* Padding already from .neumorphic-element */
}
.resource-item:last-child { margin-bottom: 0; }
.resource-title a {
    font-size: 1.2rem;
    font-weight: 600;
    color: var(--color-primary);
}
.resource-description {
    font-size: 0.9rem;
    color: var(--color-text-subtle);
    margin-top: 0.5rem;
}


/* Contact Section */
.contact-wrapper {
    display: grid;
    grid-template-columns: 1fr;
    gap: 2.5rem;
    align-items: start;
}
@media (min-width: 992px) {
    .contact-wrapper {
        grid-template-columns: repeat(2, 1fr);
    }
}

.contact-form-container { /* Assuming .neumorphic-element */
    padding: 2rem;
}
.form-title, .details-title {
    font-size: 1.6rem;
    margin-bottom: 1.5rem;
    text-align: left; /* Or center if preferred */
    color: var(--color-primary-dark);
}
.form-group {
    margin-bottom: 1.25rem;
}
.form-group label {
    display: block;
    margin-bottom: 0.5rem;
    font-weight: 500;
    font-size: 0.9rem;
    color: var(--color-text-headings);
}
.form-group .checkbox-label {
    display: inline-flex; /* For better alignment */
    align-items: center;
    font-weight: normal;
    font-size: 0.9rem;
    color: var(--color-text-subtle);
    cursor: pointer;
}
.form-group input[type="checkbox"] {
    accent-color: var(--color-primary);
    width: 1.1em;
    height: 1.1em;
    margin-right: 0.5em;
    border: 1px solid var(--color-border); /* For browsers not supporting accent-color well */
    border-radius: 3px;
}

.contact-details-container .contact-info { /* Assuming .neumorphic-element */
    padding: 2rem;
}
.contact-info p {
    margin-bottom: 0.8rem;
    font-size: 0.95rem;
    line-height: 1.8;
}
.contact-info strong {
    color: var(--color-text-headings);
    font-weight: 600;
}
.contact-office-image {
    width: 100%;
    border-radius: var(--border-radius-md);
    margin-bottom: 1.5rem;
    box-shadow: var(--neumorphic-shadow);
}
.map-placeholder {
    margin-top: 1.5rem;
    padding: 1rem;
    border-radius: var(--border-radius-md);
    background-color: var(--color-bg-alt); /* Different bg for map area */
}
.map-placeholder img {
    border-radius: var(--border-radius-sm);
}


/* -------------------------------------------------------------------------- */
/*                            PAGE-SPECIFIC STYLES                            */
/* -------------------------------------------------------------------------- */
.page-hero { /* For About, Contact, Privacy, Terms pages */
    min-height: 40vh;
    max-height: 350px; /* Cap height */
    padding-top: 120px; /* Ample space for header */
    padding-bottom: 40px;
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
}
.page-hero .hero-overlay { /* Same overlay as main hero */
    background: linear-gradient(rgba(0,0,0,0.45), rgba(0,0,0,0.65));
}
.page-title {
    color: var(--color-text-light); /* White text */
    font-size: clamp(2.2rem, 4.5vw, 3rem);
    text-shadow: 2px 2px 8px rgba(0,0,0,0.6);
}
.page-subtitle {
    color: var(--color-text-light); /* White text */
    font-size: clamp(1rem, 2vw, 1.2rem);
    text-shadow: 1px 1px 6px rgba(0,0,0,0.5);
}

/* Privacy & Terms pages */
.privacy-page-section, .terms-page-section {
    padding-top: 120px !important; /* Ensure content doesn't overlap with fixed header */
}
.privacy-page-section .content-column h2, 
.terms-page-section .content-column h2 {
    margin-top: 2rem;
    margin-bottom: 0.75rem;
    font-size: 1.6rem;
    color: var(--color-primary-dark);
    padding-bottom: 0.25rem;
    border-bottom: 2px solid var(--color-primary-light);
}
.privacy-page-section .content-column h2:first-of-type, 
.terms-page-section .content-column h2:first-of-type {
    margin-top: 0;
}

.privacy-page-section .content-column ul,
.terms-page-section .content-column ul {
    margin-left: 1.5rem;
    margin-bottom: 1rem;
}
.privacy-page-section .content-column li,
.terms-page-section .content-column li {
    margin-bottom: 0.5rem;
}


/* About Page - Team Member Card */
.team-member-card { /* Extends .card and .neumorphic-card */
    display: flex;
    flex-direction: column;
    align-items: center; /* Center content */
    text-align: center;
}
.team-member-card .card-image { /* Container for team member photo */
    width: 150px; /* Fixed size for circular/square image */
    height: 150px;
    border-radius: 50%; /* Circular images */
    margin-bottom: 1rem;
    box-shadow: var(--neumorphic-shadow);
    border: 4px solid var(--color-bg);
}
.team-member-card .card-image img {
    border-radius: 50%;
}
.team-member-role {
    font-size: 0.9rem;
    color: var(--color-accent);
    font-weight: 500;
    margin-bottom: 0.5rem;
}
.values-list {
    list-style: none;
    padding: 1.5rem; /* Padding if .neumorphic-element is applied */
}
.values-list li {
    padding-left: 2em;
    position: relative;
    margin-bottom: 0.8em;
    font-size: 1rem;
}
.values-list li::before {
    content: '✓';
    color: var(--color-secondary);
    position: absolute;
    left: 0;
    top: 0.1em;
    font-size: 1.2em;
    font-weight: bold;
}


/* Success Page */
.success-page-section {
    min-height: calc(100vh - 100px); /* Full viewport height minus potential header height */
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    padding: 2rem 1rem; /* Padding for content */
}
.success-page-section img { /* Success icon */
    width: clamp(80px, 15vw, 120px);
    height: auto;
    margin-bottom: 1.5rem;
    /* Add neumorphic shadow if desired */
    /* box-shadow: var(--neumorphic-shadow); */
    /* border-radius: 50%; */
}
.success-page-section .section-title {
    font-size: clamp(1.8rem, 4vw, 2.5rem);
    color: var(--color-secondary-dark); /* Success color */
}
.success-page-section .section-title::after {
    background-color: var(--color-secondary);
}
.success-page-section .page-subtitle {
    color: var(--color-text-body);
    font-size: clamp(1rem, 2.5vw, 1.3rem);
}
.success-page-section p {
    margin-top: 1rem;
    font-size: 1rem;
    line-height: 1.7;
    max-width: 500px;
}


/* -------------------------------------------------------------------------- */
/*                                RESPONSIVE                                  */
/* -------------------------------------------------------------------------- */
@media (max-width: 991px) { /* Tablet */
    .timeline::after { left: 30px; transform: translateX(0); }
    .timeline-item { width: 100%; padding-left: 70px; padding-right: 15px; text-align: left !important; }
    .timeline-item:nth-child(even) { left: 0; } /* Stack items on one side */
    .timeline-icon { left: 5px; /* Adjust based on new line position */ }

    .stats-widgets-container { grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); }
}

@media (max-width: 768px) { /* Mobile landscape / Small tablet */
    .menu-toggle { display: block; }
    .main-navigation .nav-menu {
        display: none;
        flex-direction: column;
        position: absolute;
        top: 100%; /* Position below header */
        left: 0;
        width: 100%;
        background-color: hsla(0, 0%, 100%, 0.95); /* More opaque for readability */
        backdrop-filter: blur(8px);
        box-shadow: 0 10px 20px rgba(0,0,0,0.1);
        padding: 1rem 0;
        border-top: 1px solid var(--color-border);
    }
    .main-navigation .nav-menu.active { display: flex; }
    .main-navigation .nav-menu li { margin: 0; width: 100%; }
    .main-navigation .nav-menu a {
        display: block;
        padding: 0.8rem 1.5rem;
        text-align: center;
        border-bottom: 1px solid #e9ecef;
        font-size: 1rem;
    }
    .main-navigation .nav-menu li:last-child a { border-bottom: none; }
    .main-navigation .nav-menu a::after { display: none; /* Remove underline effect for mobile */ }
    .main-navigation .nav-menu a:hover,
    .main-navigation .nav-menu a.active {
        background-color: var(--color-primary-light);
        color: var(--color-text-light);
    }

    .hero-section { min-height: 70vh; }
    .hero-title { font-size: clamp(1.8rem, 6vw, 2.5rem); }
    .hero-subtitle { font-size: clamp(1rem, 3.5vw, 1.2rem); }

    .section { padding: 3rem 0; }
    .section-title { font-size: clamp(1.6rem, 5vw, 2rem); }
    .section-subtitle { font-size: 1rem; margin-bottom: 2rem; }

    .grid-cols-2, .grid-cols-3, .grid-cols-4 { grid-template-columns: 1fr; } /* Stack all grid items */
    .stats-widgets-container { grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); }


    .footer-container {
        grid-template-columns: 1fr; /* Stack footer columns */
        text-align: center;
    }
    .footer-column ul { text-align: center; }
}

@media (max-width: 480px) { /* Small mobile */
    html { font-size: 15px; }
    .hero-section { padding-top: 80px; }
    .page-hero { padding-top: 100px; min-height: 30vh; }

    .neumorphic-button, button, input[type="submit"], input[type="button"] {
        padding: 0.65em 1.5em;
        font-size: 0.95rem;
    }
     .contact-form-container, .contact-details-container .contact-info {
        padding: 1.5rem;
    }
}

/* Print styles */
@media print {
    body {
        background-color: #fff;
        color: #000;
    }
    .site-header, .site-footer, .menu-toggle, .hero-overlay, #particle-container, .neumorphic-button {
        display: none !important;
    }
    .section, .container, .card, .neumorphic-element {
        box-shadow: none !important;
        border: 1px solid #ccc;
        padding: 10px !important;
        margin-bottom: 10px !important;
    }
    a {
        color: #000 !important;
        text-decoration: underline !important;
    }
    a[href^="http"]::after {
        content: " (" attr(href) ")";
        font-size: 0.8em;
    }
}