/* SCENIC Website Styles */
/* Based on StyleGuide.md - Mobile-first approach */

/* ============================================
   CSS Custom Properties (Design Tokens)
   ============================================ */
:root {
  /* Brand Colors */
  --color-primary-blue: #00308C;
  --color-accent-red: #EE3D33;
  --color-accent-teal: #34CBC2;
  --color-accent-yellow: #FAC813;
  --color-light-blue: #12AEE7;
  --color-purple: #600040;

  /* Neutral Colors */
  --color-white: #FFFFFF;
  --color-black: #000000;
  --color-gray-light: #F5F5F5;
  --color-gray-medium: #C7C9D4;
  --color-gray-dark: #84858D;
  --color-off-white: #F1F1F4;

  /* Typography */
  --font-family-primary: "din-2014", sans-serif;
  --font-size-xs: 0.75rem;    /* 12px */
  --font-size-sm: 0.875rem;   /* 14px */
  --font-size-base: 1rem;     /* 16px */
  --font-size-lg: 1.125rem;   /* 18px */
  --font-size-xl: 1.5rem;     /* 24px */
  --font-size-2xl: 2rem;      /* 32px */
  --font-size-3xl: 3rem;      /* 48px */

  /* Spacing */
  --spacing-xs: 0.25rem;      /* 4px */
  --spacing-sm: 0.5rem;       /* 8px */
  --spacing-md: 1rem;         /* 16px */
  --spacing-lg: 1.5rem;       /* 24px */
  --spacing-xl: 2rem;         /* 32px */
  --spacing-2xl: 3rem;        /* 48px */

  /* Layout */
  --max-width-content: 1200px;
  --border-radius-sm: 4px;
  --border-radius-md: 8px;
  --border-radius-lg: 16px;

  /* Transitions */
  --transition-fast: 150ms ease;
  --transition-normal: 300ms ease;
  --transition-slow: 500ms ease;

  /* Z-Index Scale */
  --z-index-dropdown: 100;
  --z-index-sticky: 200;
  --z-index-modal: 1000;
}

/* =================================================================== */
/* SUBTLE SCROLL ANIMATIONS (Task 3.3)                                 */
/* Remove .enable-animations from body to disable                      */
/* =================================================================== */

/* Elements waiting to animate */
.enable-animations .animate-on-scroll {
  opacity: 0;
  transform: translateY(16px);
  transition: opacity 0.5s ease-out, transform 0.5s ease-out;
}

/* Elements now in view */
.enable-animations .animate-on-scroll.in-view {
  opacity: 1;
  transform: translateY(0);
}

/* Respect reduced motion preference */
@media (prefers-reduced-motion: reduce) {
  .enable-animations .animate-on-scroll {
    opacity: 1;
    transform: none;
    transition: none;
  }
}

/* =================================================================== */
/* FONT LOADING                                                       */
/* Adobe Fonts (Typekit) handles DIN 2014 loading - no @font-face     */
/* declaration needed here.                                           */
/* =================================================================== */

/* =================================================================== */
/* LAZY LOADING IMAGE STATES                                          */
/* Images with class="lazy" won't load until they enter viewport      */
/* =================================================================== */

img.lazy {
    opacity: 0;
    transition: opacity 0.3s ease-in;
}

img.loaded {
    opacity: 1;
}

/* =================================================================== */
/* END LAZY LOADING IMAGE STATES                                      */
/* =================================================================== */

/* =================================================================== */
/* ACCESSIBILITY - SKIP TO CONTENT LINK                               */
/* Visible only when focused (keyboard navigation)                    */
/* =================================================================== */

.skip-to-content {
    position: absolute;
    top: -60px;
    left: 0;
    background: var(--color-primary-blue);
    color: var(--color-white);
    /* Touch optimization: Increased padding to meet 44px minimum height */
    padding: 0.85rem 1.5rem; /* 13.6px + 14px + 13.6px ≈ 48px height */
    text-decoration: none;
    font-family: var(--font-family-primary);
    font-size: 14px;
    font-weight: 500;
    z-index: 1000;
    transition: top 0.3s, transform 0.1s ease;
    border-radius: 4px;
    /* Prevent double-tap zoom */
    touch-action: manipulation;
}

.skip-to-content:focus {
    top: 0;
}

/* Touch feedback */
.skip-to-content:active {
    transform: scale(0.98); /* Haptic feedback via scale */
}

/* =================================================================== */
/* END SKIP TO CONTENT LINK                                           */
/* =================================================================== */

/* =================================================================== */
/* ACCESSIBILITY - VISUALLY HIDDEN UTILITY                            */
/* Hides content visually but keeps it available for screen readers   */
/* =================================================================== */

.visually-hidden {
    position: absolute;
    width: 1px;
    height: 1px;
    margin: -1px;
    padding: 0;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

/* =================================================================== */
/* END VISUALLY HIDDEN UTILITY                                        */
/* =================================================================== */

/* =================================================================== */
/* ACCESSIBILITY - ENHANCED FOCUS STATES                              */
/* Visible keyboard focus indicators for all interactive elements     */
/* =================================================================== */

a:focus,
button:focus,
input:focus,
textarea:focus,
select:focus {
    outline: 3px solid var(--color-light-blue); /* Light Blue for high visibility */
    outline-offset: 2px;
}

a:focus-visible,
button:focus-visible {
    outline: 3px solid var(--color-light-blue);
    outline-offset: 2px;
}

/* Remove outline for mouse users only */
a:focus:not(:focus-visible),
button:focus:not(:focus-visible) {
    outline: none;
}

/* =================================================================== */
/* END ENHANCED FOCUS STATES                                          */
/* =================================================================== */

/* =================================================================== */
/* DEVELOPMENT DEBUG SYSTEM - BOUNDING BOXES                          */
/* Add class="dev-debug" to <body> to enable visual debugging         */
/* =================================================================== */

.dev-debug body {
    outline: 3px solid #FF0000 !important; /* Red - Body */
}

.dev-debug div {
    outline: 2px solid #0066FF !important; /* Blue - Generic Divs */
}

.dev-debug section {
    outline: 3px solid #00CC00 !important; /* Green - Sections */
}

.dev-debug header {
    outline: 3px solid #FF6600 !important; /* Orange - Header */
}

.dev-debug nav {
    outline: 2px solid #9933FF !important; /* Purple - Navigation */
}

.dev-debug footer {
    outline: 3px solid #666666 !important; /* Gray - Footer */
}

.dev-debug ul {
    outline: 2px solid #FFFF00 !important; /* Yellow - Lists */
}

.dev-debug li {
    outline: 1px solid #FF99CC !important; /* Pink - List Items */
}

.dev-debug main {
    outline: 3px solid #00FFFF !important; /* Cyan - Main Content */
}

.dev-debug article {
    outline: 2px solid #FFCC00 !important; /* Gold - Articles */
}

.dev-debug aside {
    outline: 2px solid #CC6600 !important; /* Brown - Aside */
}

/* Special container classes */
.dev-debug .main-container {
    border: 3px solid #FF0000 !important; /* Red border - Main Container (development visibility) */
    outline: 4px solid #FF0066 !important; /* Hot Pink - Main Container */
}

.dev-debug .header-container,
.dev-debug .services-container,
.dev-debug .team-info-container,
.dev-debug .team-photos-container,
.dev-debug .portfolio-container,
.dev-debug .cta-container,
.dev-debug .footer-content {
    outline: 2px solid #00FF99 !important; /* Mint Green - Content Containers */
}

.dev-debug .geo-grid {
    outline: 2px solid #FF3366 !important; /* Red-Pink - Grid Systems */
}

.dev-debug .geo-tile {
    outline: 1px solid #CCCCCC !important; /* Light Gray - Grid Tiles */
}

.dev-debug .service-card,
.dev-debug .team-member,
.dev-debug .portfolio-item {
    outline: 2px dashed #0066FF !important; /* Blue dashed - Service card containers */
}

/* New debug styles for service card internal areas */
.dev-debug .service-icon-area,
.dev-debug .service-text-area {
    outline: 2px dashed #00FF00 !important; /* Green dashed - Internal areas */
}

.dev-debug .service-hover-overlay {
    outline: 2px dashed #FF00FF !important; /* Pink dashed - Hover overlay areas */
}

/* =================================================================== */
/* END DEVELOPMENT DEBUG SYSTEM                                       */
/* =================================================================== */

/* Reset and Base Styles */
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

/* Typography - DIN 2014 from Adobe Fonts */
body {
    font-family: var(--font-family-primary);
    font-weight: 400;
    font-style: normal;
    font-size: 18px; /* Base font size - minimum */
    line-height: 1.6;
    color: var(--color-black); /* Black from palette */
    background-color: var(--color-white); /* White from palette */
}

/* Main Container - Maximum 2240px width */
.main-container {
    max-width: 2240px;
    width: 100%;
    margin: 0 auto;
    position: relative;
    background-color: var(--color-white);
}

/* Header Section */
.header {
    background-color: var(--color-white);
    padding: 1rem 5rem;
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
    position: relative;
    z-index: 100;
}

.header-container {
    display: flex;
    justify-content: space-between;
    align-items: center;
    max-width: 2240px; /* Match main container width */
    margin: 0 auto;
}

.logo {
    display: none; /* Hide empty logo div - content removed in v2.6.5 */
}

/* =================================================================== */
/* DEPRECATED: Blue SCENIC Logo Image (Removed in v2.6.0)            */
/* Header now displays "SCENIC" text instead of scenic-inc-blue.svg  */
/* =================================================================== */

/* .scenic-logo-img - Removed (blue logo no longer in header) */
/* .scenic-inc - Removed */

/* Version Indicator - Shows deployment version */
.version-indicator {
    display: flex;
    align-items: center;
    gap: 0.25rem;
    font-family: var(--font-family-primary);
    font-size: 11px;
    color: var(--color-gray-dark); /* Medium Gray */
    text-transform: uppercase;
    letter-spacing: 0.5px;
    padding: 0.25rem 0.75rem;
    background-color: var(--color-off-white); /* Off-white background */
    border-radius: 12px;
    border: 1px solid var(--color-gray-medium); /* Light gray border */
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
    user-select: none; /* Prevent text selection */
}

.version-label {
    font-weight: 300;
    opacity: 0.7;
}

.version-number {
    font-weight: 500;
    color: var(--color-primary-blue); /* Navy Blue */
}

/* Navigation */
.nav {
    position: relative; /* Needed for mobile dropdown positioning */
    flex: 1; /* Allow nav to fill available space so margin-left: auto works */
}

.nav-list {
    display: flex;
    list-style: none;
    gap: 2rem;
}

/* Push "GET IN TOUCH" (last item) to the right */
.nav-list > li:last-child {
    margin-left: auto;
}

.nav-list > li > a {
    font-family: var(--font-family-primary);
    text-decoration: none;
    color: var(--color-gray-dark); /* Medium Gray from palette */
    font-size: 14px; /* Desktop size - increased for readability */
    font-weight: 600; /* Semibold for nav prominence */
    transition: color 0.3s ease, background-color 0.3s ease, transform 0.1s ease;
    /* Touch optimization: Ensure minimum 44x44px tap target */
    padding: 0.7rem 1rem; /* 11.2px + 18px + 11.2px = 40.4px + line-height ≈ 48px */
    display: inline-block;
    border-radius: 4px;
    /* Prevent double-tap zoom */
    touch-action: manipulation;
}

.nav-list > li > a:hover {
    color: var(--color-accent-red); /* Red accent */
    background-color: rgba(238, 61, 51, 0.05); /* Subtle red background */
}

/* Touch feedback for mobile */
.nav-list > li > a:active {
    background-color: rgba(238, 61, 51, 0.1);
    transform: scale(0.98); /* Haptic feedback via scale */
}

/* Active state for current page navigation */
.nav-list > li > a.active {
    color: var(--color-primary-blue); /* Blue for active/current page */
    text-decoration: underline; /* Subtle underline only under text */
    text-underline-offset: 4px; /* Small gap between text and underline */
    text-decoration-thickness: 1px; /* Thin line */
}

/* GET IN TOUCH - Special border box styling (desktop/tablet only) */
.nav-list > li:last-child > a {
    border: 1px solid var(--color-primary-blue);
    padding: 0.5rem 1rem; /* More breathing room: 8px 16px */
    border-radius: 4px;
}

.nav-list > li:last-child > a:hover {
    background-color: var(--color-primary-blue);
    color: var(--color-white);
    border-color: var(--color-primary-blue);
}

/* =================================================================== */
/* DROPDOWN SUBNAV STYLES                                              */
/* Desktop hover-based dropdown for EVENT SERVICES navigation          */
/* =================================================================== */

/* Parent list item with dropdown */
.has-dropdown {
    position: relative;
}

/* Dropdown container */
.subnav-dropdown {
    position: absolute;
    top: 100%;
    left: 0;
    min-width: 230px;
    background-color: var(--color-white);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
    border: 1px solid var(--color-gray-medium);
    border-radius: var(--border-radius-sm);
    padding: 0.5rem 0;
    margin-top: 0.5rem;
    z-index: var(--z-index-dropdown);

    /* Hidden by default */
    opacity: 0;
    visibility: hidden;
    transform: translateY(-8px);

    /* Smooth transition */
    transition: opacity var(--transition-normal),
                visibility var(--transition-normal),
                transform var(--transition-normal);
}

/* Show dropdown on hover */
.has-dropdown:hover .subnav-dropdown,
.has-dropdown:focus-within .subnav-dropdown {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
}

/* Subnav list */
.subnav-list {
    list-style: none;
    padding: 0;
    margin: 0;
}

/* Subnav links */
.subnav-link {
    display: block;
    padding: 0.75rem 1.25rem;
    font-family: var(--font-family-primary);
    font-size: 12px;
    font-weight: 500; /* Medium weight for dropdown items */
    color: var(--color-gray-dark);
    text-decoration: none;
    transition: background-color var(--transition-fast),
                color var(--transition-fast);
    white-space: nowrap;
}

/* Subnav link hover state */
.subnav-link:hover,
.subnav-link:focus {
    background-color: var(--color-off-white);
    color: var(--color-primary-blue);
}

/* Touch feedback for subnav links */
.subnav-link:active {
    background-color: var(--color-gray-medium);
    transform: scale(0.98);
}

/* Dropdown arrow indicator (optional visual cue) */
.has-dropdown > a::after {
    content: '';
    display: inline-block;
    width: 0;
    height: 0;
    margin-left: 0.4rem;
    vertical-align: middle;
    border-left: 4px solid transparent;
    border-right: 4px solid transparent;
    border-top: 4px solid currentColor;
    transition: transform var(--transition-fast);
}

/* Rotate arrow when dropdown is open */
.has-dropdown:hover > a::after,
.has-dropdown:focus-within > a::after {
    transform: rotate(180deg);
}

/* =================================================================== */
/* END DROPDOWN SUBNAV STYLES                                          */
/* =================================================================== */

/* Hamburger Menu - Hidden on desktop */
.hamburger {
    display: none;
    flex-direction: column;
    background: none;
    border: none;
    cursor: pointer;
    /* Touch optimization: Increased from 0.5rem to meet 44x44px minimum */
    padding: 0.75rem; /* 12px padding = 25px + (12px × 2) = 49px total tap area */
    /* Prevent double-tap zoom */
    touch-action: manipulation;
    transition: background-color 0.2s ease, transform 0.1s ease;
    border-radius: 4px;
}

/* Touch feedback for hamburger */
.hamburger:active {
    background-color: rgba(0, 0, 0, 0.05);
    transform: scale(0.95); /* Haptic feedback via scale */
}

.hamburger span {
    width: 25px;
    height: 3px;
    background-color: var(--color-black);
    margin: 3px 0;
    transition: 0.3s;
}

/* Hero Section */
.hero {
    position: relative;
    height: 400px;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: var(--color-white); /* White background */
}

/* Hero Section - Responsive Heights */

/* Hero Tablet (max-width: 1024px) */
@media (max-width: 1024px) {
    .hero {
        height: 300px; /* Match geometric grid height */
    }
}

/* Hero Mobile (max-width: 768px) - Height rule moved to main mobile section (line 1600) */

.geometric-background {
    position: absolute;
    top: 0;
    left: 50%;
    transform: translateX(-50%);
    max-width: 1600px;
    min-width: 1600px; /* Fixed width at desktop - proportional to 8 columns (1200 * 8/6 = 1600) */
    max-height: 400px;
    min-height: 400px; /* Fixed height at desktop - no resize */
    width: 100%;
    height: 100%;
    z-index: 1;
    background: transparent; /* Remove gray background */
    overflow: hidden;
    display: flex;
    align-items: flex-start; /* Align to top instead of center */
    justify-content: center;
}

/* Grid container for geometric tiles - 2 rows x 8 columns, full width */
.geo-grid {
    display: grid;
    grid-template-columns: repeat(8, 1fr); /* 8 equal columns spanning full width */
    grid-template-rows: repeat(2, 1fr); /* 2 equal rows */
    gap: 0; /* No gaps between tiles */
    width: 100%; /* Full width of container (1600px max) */
    max-width: 1600px; /* Match geometric-background */
    min-width: 1600px; /* Match geometric-background */
    height: 400px; /* Fixed height for the grid */
    max-height: 400px; /* Constrain maximum height to prevent excessive growth at large viewports */
    min-height: 400px; /* Match geometric-background */
}

/* Individual grid tile */
.geo-tile {
    background-color: var(--color-white); /* White background */
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 12px;
    color: var(--color-gray-dark);
    font-family: var(--font-family-primary);
}

/* Images within geo tiles */
.geo-tile-image {
    width: 100%;
    height: 100%;
    object-fit: cover; /* Ensures image covers the entire tile */
    position: absolute;
    top: 0;
    left: 0;
    z-index: 1; /* Behind the hero content */
}

/* Fix SVG baseline alignment in Lottie pattern containers */
.lottie-pattern svg {
    display: block; /* Removes inline baseline space below SVG */
}

/* Transform classes for geo tile images */
.geo-tile-image.flipped-vertical {
    transform: scaleY(-1); /* Flip vertically */
}

.geo-tile-image.rotate-90 {
    transform: rotate(90deg);
}

.geo-tile-image.rotate-180 {
    transform: rotate(180deg);
}

/* Combined transforms - rotation + flip */
.geo-tile-image.rotate-90.flipped-vertical {
    transform: rotate(90deg) scaleY(-1);
}

.geo-tile-image.rotate-180.flipped-vertical {
    transform: rotate(180deg) scaleY(-1);
}

/* Ensure hero content stays above geometric background */
.hero-content {
    position: absolute; /* Changed from relative to absolute for explicit centering */
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 10; /* Higher than geometric background */
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 2rem; /* Add padding to prevent logo from touching edges */
}

/* Hero Logo - Large white SCENIC logo centered over pattern blocks */
.hero-logo {
    width: 60%; /* Desktop: Reduced from 70% to 60% for better containment */
    max-width: 1200px; /* Reduced from 1400px - prevents logo from extending beyond pattern */
    max-height: 300px; /* New constraint: limits vertical size to stay within pattern bounds */
    height: auto; /* Maintain SVG aspect ratio */
    object-fit: contain;
    z-index: 10; /* Above geometric background */
}

/* Geometric Grid - Responsive Scaling */

/* Geo Grid Tablet (max-width: 1024px) */
@media (max-width: 1024px) {
    .geo-grid {
        max-width: 1200px; /* Match geometric-background at tablet */
        min-width: 1200px; /* Match geometric-background at tablet */
        height: 300px; /* Proportionally smaller for tablets */
        max-height: 300px; /* Match geometric-background at tablet */
        min-height: 300px; /* Match geometric-background at tablet */
    }

    .hero-content {
        padding: 1.5rem; /* Slightly less padding on tablet */
    }

    .hero-logo {
        width: 65%; /* Reduced from 80% for better containment on tablet */
        max-height: 220px; /* Tablet max-height constraint to stay within 300px pattern */
    }
}

/* Geo Grid Mobile (max-width: 768px) */
@media (max-width: 768px) {
    .geo-grid {
        max-height: 200px;
        min-height: 200px; /* Fixed height at mobile - prevents white space gaps */
        max-width: 800px;
        min-width: 800px; /* Fixed width at mobile - 8 columns (600px × 8/6) */
    }

    .geo-tile {
        font-size: 8px;
    }

    .hero-content {
        padding: 1rem; /* Less padding on mobile for more logo space */
        align-items: center; /* Center logo vertically */
        justify-content: center; /* Center logo horizontally */
        height: 200px; /* Constrain to geo-grid height (200px) for proper centering on pattern */
        top: 0; /* Align with geo-grid position */
    }

    .hero-logo {
        width: 75%; /* Reduced from 90% for better containment on mobile */
        max-height: 180px; /* Mobile max-height constraint to stay within 250px pattern */
    }
}

/* =================================================================== */
/* TEAM SECTION - REDESIGNED TO MATCH ADOBE XD                        */
/* =================================================================== */

.team-section {
    background: linear-gradient(to bottom,
        transparent 0%,
        transparent calc(4rem + 110px),
        var(--color-gray-medium) calc(4rem + 110px),
        var(--color-gray-medium) 100%); /* Light Gray starts below arcs */
    padding: 4rem 2rem;
}

.team-container {
    max-width: 2240px;
    margin: 0 auto;
}

.team-members {
    display: flex;
    justify-content: center;
    gap: 0; /* No gap between cards for seamless row */
    margin-bottom: 3rem;
    flex-wrap: wrap;
}

/* Individual Team Member Card */
.team-member-card {
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 220px; /* Desktop width */
}

/* CSS Arc Shape (Top Dome) */
.member-arc {
    width: 220px;
    height: 110px; /* Half of width for semicircle */
    border-radius: 220px 220px 0 0; /* Top half circle */
    display: flex;
    flex-direction: column;
    justify-content: flex-start; /* Changed from flex-end to allow absolute positioning */
    align-items: center;
    text-align: center;
    padding: 0; /* Removed padding to allow precise positioning */
    position: relative;
    z-index: 2;
    overflow: hidden; /* Clip any content extending beyond arc */
}

.member-arc .member-name {
    font-family: var(--font-family-primary);
    font-size: 14px;
    font-weight: bold;
    color: var(--color-white);
    margin: 0;
    letter-spacing: 0.5px;
    line-height: 1; /* Tight line height to eliminate extra space */
    position: absolute;
    top: 50%; /* Position at mid-height */
    left: 50%;
    transform: translate(-50%, -50%); /* Center horizontally and vertically */
    width: 90%; /* Prevent text from touching edges */
}

.member-arc .member-title {
    font-family: var(--font-family-primary);
    font-size: 11px;
    color: var(--color-white);
    margin: 0;
    opacity: 0.95;
    letter-spacing: 0.3px;
    line-height: 1; /* Tight line height to eliminate extra space */
    position: absolute;
    top: 80%; /* Position at 4/5 down from top */
    left: 50%;
    transform: translate(-50%, -50%); /* Center horizontally */
    width: 90%; /* Prevent text from touching edges */
}

/* Arc Colors - Original brand colors */
.arc-purple { background-color: #600040; } /* Purple */
.arc-teal { background-color: #34CBC2; } /* Teal */
.arc-red { background-color: #EE3D33; } /* Red */
.arc-navy { background-color: #00308C; } /* Navy Blue */
.arc-lightblue { background-color: #12AEE7; } /* Light Blue */

/* Photo Container (Vertical Pill/Capsule) */
.member-photo {
    width: 220px;
    height: 300px; /* Vertical pill */
    border-radius: 0 0 110px 110px; /* Rounded bottom, flat top connects to arc */
    position: relative;
    overflow: hidden;
    margin-top: 0; /* No margin - arc and photo edges align perfectly */
}

.headshot-image {
    width: 100%;
    height: 100%;
    object-fit: cover;
    filter: grayscale(100%); /* Black & white */
    position: absolute;
    top: 0;
    left: 0;
}

/* Color Overlay with Transparency */
.photo-overlay {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    mix-blend-mode: multiply; /* Creates duotone effect */
    opacity: 0.7;
}

/* Overlay Colors */
.overlay-red { background-color: var(--color-accent-red); }
.overlay-teal { background-color: var(--color-accent-teal); }
.overlay-purple { background-color: #905fa2; } /* Medium purple for Sean Key Ketter */
.overlay-yellow { background-color: var(--color-accent-yellow); }
.overlay-lightblue { background-color: var(--color-light-blue); }

/* Team Info (Below Cards) */
.team-info {
    text-align: center;
    max-width: 800px;
    margin: 0 auto;
    padding-top: 2rem;
}

.team-title {
    font-family: var(--font-family-primary);
    font-size: 2rem; /* 32px - reduced for single line fit at desktop */
    font-weight: bold;
    color: var(--color-primary-blue); /* Navy Blue */
    margin-bottom: 1.5rem;
    letter-spacing: 2px;
}

.team-description {
    font-family: var(--font-family-primary);
    font-size: 1.1rem;
    color: var(--color-primary-blue); /* Navy Blue for lorem ipsum */
    line-height: 1.8;
    max-width: 700px;
    margin: 0 auto;
}

/* =================================================================== */
/* END TEAM SECTION                                                   */
/* =================================================================== */

/* Portfolio Section */
.portfolio {
    background-color: var(--color-white);
    padding: 2rem 1rem; /* Increased from 1rem to 2rem for better breathing room */
}

.portfolio-container {
    max-width: 2240px;
    margin: 0 auto;
}

.portfolio-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 16px;
    grid-auto-rows: auto;
    opacity: 0;
}

.portfolio-grid.masonry-loaded {
    opacity: 1;
    transition: opacity 0.4s ease;
}

.portfolio-item {
    /* CSS Grid will stretch items by default - no width needed */
    background-color: var(--color-off-white);
    overflow: hidden;
    position: relative;
    border: none;
    justify-self: stretch; /* Ensure item stretches to fill grid cell */
    align-self: start; /* Align to top, natural height */
}

.portfolio-item img {
    width: 100%;
    height: auto;
    object-fit: cover;
    display: block;
}

/* Portfolio Overlay — hidden; captions now shown only in GLightbox */
.portfolio-overlay {
    display: none;
}

.portfolio-item:hover .portfolio-overlay {
    opacity: 1;
}

.portfolio-caption-h1 {
    font-family: var(--font-family-primary);
    font-size: 1.5rem; /* 24px */
    font-weight: bold;
    color: var(--color-white);
    text-transform: uppercase;
    letter-spacing: 0.1em;
    margin: 0 0 0.5rem 0;
    text-align: center;
    padding: 0 1rem;
}

.portfolio-caption-h2 {
    font-family: var(--font-family-primary);
    font-size: 1rem; /* 16px */
    font-weight: normal;
    color: #00bcd4; /* Teal/cyan color */
    text-transform: uppercase;
    letter-spacing: 0.08em;
    margin: 0;
    text-align: center;
    padding: 0 1rem;
}

/* Hover effect */
.portfolio-item:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
    cursor: pointer;
    transition: all 0.3s ease;
}

/* Home page Masonry layout override */
.home-page .portfolio-grid {
    display: block;
    position: relative;
}

.home-page .portfolio-item {
    width: calc(33.333% - 11px);
    margin-bottom: 16px;
}

/* GLightbox anchor reset */
.portfolio-item .glightbox {
    display: block;
    position: relative;
    text-decoration: none;
    color: inherit;
}

/* GLightbox caption styling */
.gslide-description {
    background: #000 !important;
}

.gdesc-inner {
    display: flex !important;
    align-items: baseline;
    gap: 0.75rem;
}

.gslide-title {
    font-family: var(--font-family-primary);
    font-size: 1rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: #fff !important;
    margin: 0 !important;
}

.gslide-desc {
    font-family: var(--font-family-primary);
    font-size: 0.85rem;
    font-weight: 400;
    color: #fff !important;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    margin: 0 !important;
}

/* CTA Section */
.cta-section {
    background-color: var(--color-accent-red); /* Red background */
    padding: 3.5rem 2rem; /* Compact vertical padding to match reference */
    text-align: center;
}

.cta-container {
    max-width: 800px;
    margin: 0 auto;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1.5rem; /* Tight spacing between title and button */
}

.cta-title {
    font-family: var(--font-family-primary);
    font-size: 1.65rem; /* 45% reduction from 3rem */
    font-weight: bold;
    color: var(--color-white);
    margin-bottom: 0;
    letter-spacing: 2px;
}

/* =================================================================== */
/* EXPERIMENTAL CTA STYLING - EASILY REMOVABLE                        */
/* Remove this entire block if styling is not approved                */
/* =================================================================== */
.experimental-cta-styling {
    /* UI Properties from user specification */
    text-align: center;
    font: normal normal normal 48px/62px var(--font-family-primary);
    letter-spacing: 0px;
    color: var(--color-white);
    text-transform: uppercase;
    opacity: 1;
    
    /* Override existing cta-title styles */
    font-size: 35px !important;
    line-height: 62px !important;
    font-weight: normal !important;
    letter-spacing: 0px !important;
    margin-bottom: 2rem;
}
/* =================================================================== */
/* END EXPERIMENTAL CTA STYLING                                       */
/* =================================================================== */

.cta-btn {
    font-family: var(--font-family-primary);
    border: none;
    cursor: pointer;
    text-decoration: none;
    transition: all 0.3s ease;
    display: inline-flex;
    align-items: stretch;
    overflow: hidden;
    border-radius: 35px; /* Half of button height (33px / 2) */
    /* Prevent double-tap zoom */
    touch-action: manipulation;
    /* Minimum tap target achieved with padding */
    height: 45px;
}

.cta-btn-text {
    background-color: var(--color-white);
    color: var(--color-primary-blue); /* Navy blue text */
    padding: 0 2.25rem; /* Horizontal padding - proportionally reduced */
    font-size: 1.05rem; /* 45% reduction from 1.15rem */
    font-weight: normal;
    letter-spacing: 0.5px;
    display: flex;
    align-items: center;
}

.cta-btn-arrow {
    background-color: var(--color-accent-yellow); /* Yellow/Gold */
    color: var(--color-white);
    width: 38px; /* 45% reduction from 50px */
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 2rem; /* 45% reduction from 2.6rem */
    font-weight: normal;
    line-height: 0.9;
    padding-bottom: 3px; /* Proportionally reduced from 6px */
}


.cta-btn:hover {
    background-color: var(--color-off-white);
    transform: translateY(-2px);
}

/* Touch feedback for CTA button */
.cta-btn:active {
    background-color: #E8E8EB;
    transform: translateY(0) scale(0.98); /* Haptic feedback via scale */
}

/* Footer */
.footer {
    background-color: var(--color-primary-blue); /* Navy background */
    padding: 0; /* Remove padding, handle spacing in footer-content */
    position: relative;
    overflow: hidden;
}

.footer-geometric-background {
    position: absolute;
    top: 0;
    left: 50%;
    transform: translateX(-50%);
    max-width: 1600px; /* Expanded to match hero 8-column grid (1600px) */
    min-width: 1600px; /* Fixed width at desktop - matches hero 8-column expansion */
    max-height: 400px;
    min-height: 400px; /* Fixed height at desktop - matches hero (was 150px) */
    width: 100%;
    height: 400px; /* Match hero height */
    overflow: hidden;
}

.footer-geo-grid {
    display: grid;
    grid-template-columns: repeat(8, 1fr); /* 8 equal columns - matches hero grid expansion (v2.13.0) */
    grid-template-rows: 1fr; /* Single explicit row to force square tiles */
    height: 200px; /* Set to match tile height */
    width: 100%;
    max-height: 200px; /* Match hero constraints */
    position: absolute;
    top: 0;
    left: 0;
    z-index: 1; /* Behind footer content (z-index: 2) but above background */
}

.footer-geo-tile {
    width: 100%;
    height: 100%;
    overflow: hidden;
    position: relative;
}

.footer-geo-image {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: top; /* Force SVG content to align to top */
    display: block;
}

.footer-geo-image svg {
    object-fit: none;
    object-position: top left;
}

/* Transform classes for footer geometric images */
.footer-geo-image.rotate-180 {
    transform: rotate(180deg);
}

.footer-geo-image.flip-horizontal {
    transform: scaleX(-1);
}

.footer-content {
    position: relative;
    z-index: 2;
    display: flex;
    justify-content: space-between;
    align-items: center; /* Center logo and columns vertically */
    max-width: 2240px; /* Match header max-width */
    margin: 0 auto;
    padding-top: 15rem;
    padding-bottom: 5rem;
    gap: 5rem; /* Reduced gap between logo and columns */
}

.footer-logo {
    margin-left: 3rem; /* Move logo to the right */
}

.footer-logo-img {
    height: 65px; /* Reduced from 50px to match reference */
    width: auto;

}

.footer-info {
    font-family: var(--font-family-primary);
    color: var(--color-white);
    font-size: 1rem;
}

.footer-info-columns {
    display: flex;
    gap: 2.5rem; /* Reduced from 4rem for tighter column grouping */
    flex: 1;
    justify-content: center;
}

.footer-column {
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
    padding-right: 5em;
}

.footer-column-title {
    font-family: var(--font-family-primary);
    font-size: 1rem;
    font-weight: normal;
    color: var(--color-white);
    margin: 0 0 0.5rem 0;
    letter-spacing: 0.5px;
    text-transform: uppercase;
}

.footer-column-text {
    font-family: var(--font-family-primary);
    font-size: 0.75rem;
    color: var(--color-gray-medium);
    margin: 0;
    line-height: 1;
}

.footer-link {
    color: var(--color-gray-medium);
    text-decoration: none;
    transition: opacity 0.3s ease;
}


.footer-link:hover {
    opacity: 0.7;
}

.footer-social-icons {
    display: flex;
    gap: 1rem;
    margin-top: 0.25rem;
}

.social-icon {
    color: var(--color-white);
    width: 20px;
    height: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: opacity 0.3s ease;
}

.social-icon:hover {
    opacity: 0.7;
}

.social-icon svg {
    width: 100%;
    height: 100%;
}

/* Component-Specific Responsive - Mobile (max-width: 768px) */
/* Team, Portfolio, CTA, Footer - Mobile adjustments */
@media (max-width: 768px) {
    /* Team Section - Mobile */
    .team-section {
        background: linear-gradient(to bottom,
            transparent 0%,
            transparent calc(32px + 70px),
            var(--color-gray-medium) calc(32px + 70px),
            var(--color-gray-medium) 100%); /* Light Gray starts below mobile arcs (70px height) */
        padding: 2rem 2rem; /* Increased from 20px to 32px for better breathing room */
    }

    .team-members {
        flex-direction: row; /* Horizontal row for 2-3 across */
        align-items: flex-start;
        justify-content: center;
        gap: 1rem; /* Small gap between cards */
        margin-bottom: 16px; /* Aggressive cut from 3rem (48px) to 16px */
        flex-wrap: wrap; /* Allow wrapping if needed */
    }

    .team-member-card {
        width: 120px; /* Reduced from 180px for 2-3 across layout */
    }

    .member-arc {
        width: 120px;
        height: 70px; /* Increased from 60px for more breathing room */
        padding: 0; /* Removed padding for absolute positioning */
        justify-content: flex-start; /* Changed to allow absolute positioning */
        border-radius: 120px 120px 0 0; /* Match new width */
    }

    .member-arc .member-name {
        font-size: 10px; /* Reduced for mobile viewport (375px) */
        font-weight: 700; /* Added weight for clarity */
        line-height: 1.2; /* Increased from 1 for more breathing room */
        top: 45%; /* Adjusted from 50% to account for taller arc */
        transform: translate(-50%, -50%); /* Re-center at mobile size */
    }

    .member-arc .member-title {
        font-size: 8px; /* Reduced for mobile viewport (375px) */
        font-weight: 500; /* Added weight for clarity */
        line-height: 1.2; /* Increased from 1 for more breathing room */
        top: 75%; /* Adjusted from 80% to account for taller arc */
        transform: translate(-50%, -50%); /* Re-center at mobile size */
    }

    .member-photo {
        width: 120px;
        height: 160px; /* Proportional - reduced from 240px */
        border-radius: 0 0 60px 60px; /* Pill shape for mobile - half of width */
        margin-top: 0; /* No margin - arc and photo edges align perfectly */
    }

    /* Note: .team-title, .team-description, .cta-title, and .portfolio-grid
       are styled in the main mobile responsive section below */

    /* Geometric background fixed width for mobile */
    .geometric-background {
        max-width: 800px;
        min-width: 800px; /* Fixed width at mobile - 8 columns (600px × 8/6) */
        max-height: 200px;
        min-height: 200px; /* Fixed height at mobile - matches geo-grid (200px) */
    }

    .footer-geometric-background {
        max-width: 800px; /* Match hero mobile 8-column expansion */
        min-width: 800px; /* Fixed width at mobile - 8 columns (600px × 8/6) */
        max-height: 100px; /* Match grid */
        min-height: 100px; /* Match grid */
        height: 100px; /* Match grid */
        /* Keep absolute positioning to match desktop - grid at top edge */
    }

    .footer-geo-grid {
        height: 100px; /* Match mobile tile height */
        max-height: 100px;
    }

    .footer-content {
        flex-direction: column;
        gap: 2rem;
        align-items: center;
        padding-top: 8rem; /* 128px - position content below 100px geo-grid with spacing */
        padding-bottom: 30px; /* Aggressive cut from 80px (5rem) to 30px */
    }

    .footer-logo {
        margin-left: 0; /* Remove desktop offset when footer stacks */
        padding-top: 2rem; /* Add space above logo */
        padding-bottom: 1rem; /* Add space below logo before grid */
    }

    .footer-info-columns {
        flex-direction: column;
        gap: 2rem;
        align-items: center;
        text-align: center;
    }

    .footer-column {
        align-items: center;
        padding-right: 0; /* Remove desktop padding for centered layout */
        text-align: center;
    }

    .footer-column-text,
    .footer-column-title {
        text-align: center;
    }
}

/* =================================================================== */
/* DEPRECATED: Hero CTA Button (Removed in v2.6.0)                   */
/* CTA box with "IMAGINE WHAT WE CAN CREATE" removed from hero       */
/* Hero now displays only the white SCENIC logo over pattern blocks  */
/* =================================================================== */

/* .hero-content - Removed old centering styles (now uses flex in line 674) */
/* .cta-button - Removed (no longer used in hero section) */
/* .cta-button:hover - Removed */
/* .cta-button:active - Removed */
/* Hero CTA Button Responsive Sizing - Removed */

/* Services Section */
.services {
    padding: 0; /* No padding - whitespace eliminated */
    background-color: var(--color-white); /* Clean white background - changed from off-white */
    position: relative; /* Required for absolute positioned heading */
}

.services-container {
    max-width: 1600px;
    margin: 0 auto;
    display: flex;
    flex-wrap: wrap; /* Allow wrapping for 3-2 stacked layout */
    justify-content: center; /* Center all cards */
    gap: 0; /* Gap between cards */
    align-items: start;
    padding-bottom: 0; /* No padding - whitespace eliminated */
    padding-top: 0; /* No padding - whitespace eliminated */
}

.service-card {
    background-color: transparent;
    border-radius: 8px;
    text-align: center;
    transition: transform 0.3s ease;
    position: relative;
    overflow: visible; /* Allow the callout to extend below */
    display: flex;
    flex-direction: column;
    min-height: auto; /* Changed from 220px to auto for compact layout */
    margin-bottom: 0; /* Zero gap between cards */
    flex: 0 1 33.333%; /* 3 cards per row */
    max-width: 400px; /* Cap maximum card width */
}

.service-card:hover {
    transform: translateY(-2px);
}

/* Top area for icon/Lottie animation */
.service-icon-area {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0; /* Removed all padding for compact layout */
    background-color: transparent;
}

.service-icon {
    width: 200px; /* Increased by 25% from 160px for better visibility */
    height: 200px;
    background-color: transparent;
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: transform 0.3s ease;
}

.service-icon-image {
    width: 100%;
    height: 100%;
    object-fit: contain; /* Maintain aspect ratio */
    transition: transform 0.3s ease;
}

/* Lottie animation container styling */
.lottie-animation {
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
}

.lottie-animation svg {
    width: 100% !important;
    height: 100% !important;
}

/* Inline SVG placeholder for Lottie animations */
.lottie-placeholder-svg {
    width: 100%;
    height: 100%;
    position: absolute;
    top: 0;
    left: 0;
}

.service-icon:hover {
    transform: scale(1.1); /* Icon animation on hover */
}

.service-icon:hover .service-icon-image {
    transform: scale(1.05); /* Additional image animation */
}

/* Bottom area for service title */
.service-text-area {
    padding: 0.25rem 0.5rem; /* Minimal padding for compact layout */
    background-color: transparent;
}

.service-title {
    font-family: var(--font-family-primary);
    font-size: 12px;
    color: var(--color-primary-blue); /* Navy Blue */
    margin: 0;
    font-weight: normal; /* Less bold for cleaner look */
}

/* New Minimal Tooltip - v2.0.0 */
/* Base styles for all viewports */
.service-card {
    position: relative;
    z-index: 1;
    margin-bottom: 0;
}

.service-card:hover {
    z-index: 100; /* Bring to front when hovered */
}

/* Minimal tooltip positioned below card */
.service-hover-overlay {
    position: absolute !important;
    top: calc(100% + 12px); /* 12px gap below card */
    left: 50%;
    transform: translateX(-50%) translateY(-8px);
    width: 220px;
    padding: 12px 16px;
    background-color: var(--color-gray-dark); /* Medium gray from reference */
    color: var(--color-white);
    font-size: 10px;
    line-height: 1.4;
    text-align: center;
    border-radius: 6px;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity 0.2s ease,
                visibility 0.2s ease,
                transform 0.2s ease;
    z-index: 200;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
}

/* Upward arrow */
.service-hover-overlay::before {
    content: '';
    position: absolute;
    top: -6px;
    left: 50%;
    transform: translateX(-50%);
    width: 0;
    height: 0;
    border-left: 6px solid transparent;
    border-right: 6px solid transparent;
    border-bottom: 6px solid var(--color-gray-dark);
}

/* Show on hover */
.service-card:hover .service-hover-overlay {
    opacity: 1;
    visibility: visible;
    transform: translateX(-50%) translateY(0);
}

/* Tooltip description text */
.service-description {
    margin: 0;
    font-size: 10px;
    line-height: 1.4;
    font-family: var(--font-family-primary);
}

/* Hide "Learn More" link if it exists */
.service-hover-overlay .service-link {
    display: none !important;
}

/* ============================================
   RESPONSIVE STYLES - Mobile (max-width: 768px)
   ============================================ */
@media (max-width: 768px) {
    /* Version indicator for mobile - smaller and positioned better */
    .version-indicator {
        font-size: 9px;
        padding: 0.2rem 0.5rem;
        gap: 0.15rem;
        position: static; /* Remove absolute positioning on mobile */
        transform: none; /* Remove centering transform */
        margin: 0 auto; /* Center in flex container */
    }

    /* Navigation font size for mobile */
    .nav-list > li > a {
        font-size: 12px; /* Mobile size - increased for readability */
    }

    /* Remove GET IN TOUCH border box and margin on mobile (dropdown menu context) */
    .nav-list > li:last-child {
        margin-left: 0; /* Remove right-justification in mobile menu */
    }

    .nav-list > li:last-child > a {
        border: none;
        padding: 0.7rem 1rem; /* Reset to default nav padding */
    }

    /* Simple mobile navigation menu */
    .nav-list {
        display: none;
        position: absolute;
        top: 100%;
        left: auto;
        right: 0;
        background-color: var(--color-white);
        box-shadow: 0 4px 8px rgba(0,0,0,0.1);
        padding: 1rem;
        flex-direction: column;
        gap: 1rem;
        z-index: 999;
        min-width: 180px;
    }

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

    /* Mobile dropdown behavior - integrated into hamburger menu */
    .has-dropdown {
        position: relative;
        width: 100%;
    }

    .subnav-dropdown {
        position: static;
        box-shadow: none;
        border: none;
        margin-top: 0;
        padding: 0;
        opacity: 1;
        visibility: visible;
        transform: none;
        background-color: transparent;
    }

    .subnav-list {
        padding-left: 1rem;
        margin-top: 0.5rem;
    }

    .subnav-link {
        font-size: 10px;
        padding: 0.5rem 0.75rem;
        color: var(--color-gray-dark);
    }

    /* Remove dropdown arrow on mobile */
    .has-dropdown > a::after {
        display: none;
    }

    .hamburger {
        display: flex;
        margin-left: auto; /* Push hamburger button to right side */
    }
    
    .hamburger.hamburger-active span:nth-child(1) {
        transform: rotate(-45deg) translate(-5px, 6px);
    }
    
    .hamburger.hamburger-active span:nth-child(2) {
        opacity: 0;
    }
    
    .hamburger.hamburger-active span:nth-child(3) {
        transform: rotate(45deg) translate(-5px, -6px);
    }
    
    .hero {
        height: 200px;
    }

    /* .cta-button removed (no longer used in hero) */

    .services-container {
        flex-direction: column; /* Vertical stacking for mobile */
        flex-wrap: nowrap; /* No wrapping needed */
        align-items: center; /* Center cards horizontally */
        gap: 0; /* No vertical spacing between cards */
        padding: 0; /* No horizontal padding */
        width: 100%; /* Full width container */
    }

    /* Mobile service cards - single column layout */
    .service-card {
        height: auto;
        min-height: auto; /* Auto height for compact layout */
        margin-bottom: 0; /* No margin - using gap */
        position: relative; /* Enable z-index stacking */
        z-index: 1; /* Base z-index */
        width: 100%; /* Full width for single column */
        max-width: none; /* Fill available width */
        margin-left: 0; /* No overlap on mobile */
    }

    /* Remove overlapping effect on mobile - all cards same z-index */
    .service-card:nth-child(1) { z-index: 1; }
    .service-card:nth-child(2) { z-index: 1; }
    .service-card:nth-child(3) { z-index: 1; }
    .service-card:nth-child(4) { z-index: 1; }
    .service-card:nth-child(5) { z-index: 1; }

    /* Elevate expanded card on mobile (for consistency) */
    .service-card:hover,
    .service-card:active,
    .service-card:focus-within {
        z-index: 10; /* Bring to front when expanded */
    }

    /* Reduce services section padding on mobile */
    .services {
        padding: 0; /* No padding - whitespace eliminated */
    }

    /* Reduce icon area padding on mobile */
    .service-icon-area {
        padding: 0; /* No padding for compact layout */
    }

    /* Mobile tooltip styles */
    .service-hover-overlay {
        width: 180px;
        font-size: 9px;
        padding: 10px 12px;
        top: calc(100% + 8px);
    }

    .service-hover-overlay::before {
        border-left: 5px solid transparent;
        border-right: 5px solid transparent;
        border-bottom: 5px solid var(--color-gray-dark);
        top: -5px;
    }

    .service-description {
        font-size: 9px;
    }

    /* Touch interaction for mobile */
    .service-card:active .service-hover-overlay {
        opacity: 1;
        visibility: visible;
        transform: translateX(-50%) translateY(0);
    }

    /* Text sizing for mobile */
    .service-title {
        font-size: 14px; /* Increased from 10px for better readability */
        font-weight: 600; /* Added weight for visibility */
    }

    /* Service text area spacing for mobile - prevent text overlap */
    .service-text-area {
        padding: 0.75rem 0.5rem; /* Increased vertical padding from 0.25rem */
        min-height: 44px; /* Minimum touch target height */
    }

    /* Service icon sizing for mobile - ~65% of card width for visual balance */
    .service-icon {
        width: 65%;
        height: auto;
        aspect-ratio: 1 / 1;
    }

    .team-title {
        font-size: 1.5rem; /* Mobile size - 24px - reduced but allows wrapping for readability */
    }

    .team-info-arc .member-name {
        font-size: 0.9rem; /* Mobile size */
    }

    .team-info-arc .member-title {
        font-size: 0.8rem; /* Mobile size */
    }

    .team-description {
        font-size: 1rem; /* Mobile size */
    }

    .cta-section {
        padding: 24px 1.5rem; /* Aggressive vertical cut to 24px */
    }

    .cta-container {
        gap: 1.25rem; /* Tight gap for mobile */
    }

    .cta-title {
        font-size: 0.96rem; /* 45% reduction from 1.75rem */
    }

    .cta-btn {
        height: 28.6px; /* 45% reduction from 52px */
        border-radius: 14.3px;
    }

    .cta-btn-text {
        font-size: 0.55rem; /* 45% reduction from 1rem */
        padding: 0 0.96rem;
    }

    .cta-btn-arrow {
        width: 24.2px; /* 45% reduction from 44px */
        font-size: 1.21rem; /* 45% reduction from 2.2rem */
        padding-bottom: 3px; /* Proportionally reduced */
    }

    .header {
        padding: 8px;
    }

    /* Portfolio overlay - Mobile */
    .portfolio-caption-h1 {
        font-size: 1rem; /* 16px for mobile */
    }

    .portfolio-caption-h2 {
        font-size: 0.75rem; /* 12px for mobile */
    }
}

/* ============================================
   RESPONSIVE STYLES - Tablet (769px - 1024px)
   ============================================ */
@media (min-width: 769px) and (max-width: 1024px) {
    /* Geometric background fixed width for tablet */
    .geometric-background {
        max-width: 1200px;
        min-width: 1200px; /* Fixed width at tablet - 8 columns (900px × 8/6) */
        max-height: 300px;
        min-height: 300px; /* Fixed height at tablet - no resize */
    }

    /* Footer geometric background - match hero constraints at tablet */
    .footer-geometric-background {
        max-width: 1200px; /* Match hero tablet 8-column expansion */
        min-width: 1200px; /* Fixed width at tablet - 8 columns (900px × 8/6) */
        max-height: 150px; /* Match grid - was 200px */
        min-height: 150px; /* Match grid - was 200px */
        height: 150px; /* Match grid - was 200px */
        top: 0; /* Ensure grid rides at top edge like desktop */
    }

    .footer-geo-grid {
        height: 150px; /* Match tablet tile height - was 200px */
        max-height: 150px; /* Match tablet tile height - was 200px */
    }

    .footer-content {
        padding-top: 15rem; /* 240px - restore to match desktop after grid height fix */
        padding-bottom: 5rem;
    }

    /* Header padding for tablet */
    .header {
        padding: 1rem 3rem; /* Reduced from desktop 5rem for tablet */
    }

    /* Navigation font size for tablet */
    .nav-list > li > a {
        font-size: 13px; /* Tablet size - between desktop 14px and mobile 12px */
    }

    /* Tablet dropdown behavior - keep desktop hover behavior */
    .subnav-link {
        font-size: 11px; /* Slightly smaller for tablet */
        padding: 0.65rem 1.15rem;
    }

    .subnav-dropdown {
        min-width: 210px; /* Adjusted for larger font sizes */
    }

    /* Text sizing for tablet */
    .service-title {
        font-size: 11px;
    }

    /* Service icon sizing for tablet */
    .service-icon {
        width: 181px; /* Increased by 25% from 145px for better visibility */
        height: 181px;
    }

    /* Reduce services section padding on tablet */
    .services {
        padding: 0; /* No padding - whitespace eliminated */
    }

    /* Tablet services container - single row with overlap */
    .services-container {
        flex-direction: row; /* Horizontal layout on tablet */
        flex-wrap: nowrap; /* All 5 cards in single row */
        justify-content: center; /* Center the row */
        gap: 0; /* Zero gap - using negative margin for overlap */
    }

    /* Adjust service card spacing for tablet */
    .service-card {
        margin-bottom: 0; /* Zero gap between cards */
        height: auto;
        min-height: auto; /* Auto height for compact layout */
        position: relative; /* Enable z-index stacking */
        z-index: 1; /* Base z-index */
    }

    /* Overlapping effect on tablet - all cards except first */
    .service-card:not(:first-child) {
        margin-left: -50px; /* Increased overlap to match desktop */
    }

    /* Progressive z-index for tablet overlap */
    .service-card:nth-child(1) { z-index: 1; }
    .service-card:nth-child(2) { z-index: 2; }
    .service-card:nth-child(3) { z-index: 3; }
    .service-card:nth-child(4) { z-index: 4; }
    .service-card:nth-child(5) { z-index: 5; }

    /* Elevate expanded card above adjacent cards on tablet */
    .service-card:hover,
    .service-card:active,
    .service-card:focus-within {
        z-index: 10; /* Bring to front when expanded */
    }

    /* Tablet tooltip styles */
    .service-hover-overlay {
        width: 200px;
        font-size: 10px;
        padding: 11px 14px;
    }

    .service-description {
        font-size: 10px;
    }

    /* Reduce icon area padding on tablet */
    .service-icon-area {
        padding: 0; /* No padding for compact layout */
    }

    /* Team Section Tablet */
    .team-section {
        background: linear-gradient(to bottom,
            transparent 0%,
            transparent calc(4rem + 100px),
            var(--color-gray-medium) calc(4rem + 100px),
            var(--color-gray-medium) 100%); /* Light Gray starts below tablet arcs */
    }

    .team-members {
        gap: 0; /* No gap on tablet either */
    }

    .team-member-card {
        width: 200px; /* Medium size for tablet */
    }

    .member-arc {
        width: 200px;
        height: 100px;
        padding: 0; /* Removed padding for absolute positioning */
        justify-content: flex-start; /* Changed to allow absolute positioning */
    }

    .member-arc .member-name {
        font-size: 13px;
        line-height: 1; /* Tight line height */
        top: 50%; /* Position at mid-height */
        transform: translate(-50%, -50%); /* Re-center at tablet size */
    }

    .member-arc .member-title {
        font-size: 10.5px;
        line-height: 1; /* Tight line height */
        top: 80%; /* Position at 4/5 down from top */
        transform: translate(-50%, -50%); /* Re-center at tablet size */
    }

    .member-photo {
        width: 200px;
        height: 270px; /* Proportional */
        border-radius: 0 0 100px 100px; /* Pill shape for tablet */
        margin-top: 0; /* No margin - arc and photo edges align perfectly */
    }

    .team-title {
        font-size: 1.8rem; /* Tablet size - 28.8px - reduced proportionally */
    }

    .team-description {
        font-size: 1.05rem; /* Tablet size */
    }

    .cta-section {
        padding: 3rem 2rem; /* Compact padding for tablet */
    }

    .cta-container {
        gap: 1.35rem; /* Tight gap for tablet */
    }

    .cta-title {
        font-size: 1.24rem; /* 45% reduction from 2.25rem */
    }

    .cta-btn {
        height: 30.8px; /* 45% reduction from 56px */
        border-radius: 15.4px;
    }

    .cta-btn-text {
        font-size: 0.61rem; /* 45% reduction from 1.1rem */
        padding: 0 1.1rem;
    }

    .cta-btn-arrow {
        width: 25.85px; /* 45% reduction from 47px */
        font-size: 1.32rem; /* 45% reduction from 2.4rem */
        padding-bottom: 3px; /* Proportionally reduced */
    }

    .services-container {
        flex-direction: row; /* Horizontal layout on tablet */
        flex-wrap: wrap; /* Allow wrapping to 2 rows if needed */
        justify-content: center; /* Center cards */
    }

    .portfolio-grid {
        grid-template-columns: repeat(3, 1fr);
        gap: 12px;
    }

    /* Portfolio overlay - Tablet */
    .portfolio-caption-h1 {
        font-size: 1.25rem; /* 20px for tablet */
    }

    .portfolio-caption-h2 {
        font-size: 0.875rem; /* 14px for tablet */
    }
}

/* ============================================
   Contact Form Status Messages
   ============================================ */

.form-status {
    padding: 12px 16px;
    border-radius: 4px;
    font-size: 14px;
    font-weight: 500;
    line-height: 1.4;
    margin: 8px 0;
}

.form-status-error {
    background-color: #fef2f2;
    color: #991b1b;
    border: 1px solid #fecaca;
}

.form-status-success {
    background-color: #f0fdf4;
    color: #166534;
    border: 1px solid #bbf7d0;
}

.form-submit-btn:disabled {
    opacity: 0.7;
    cursor: not-allowed;
}

/* ============================================
   RESPONSIVE STYLES - Desktop (min-width: 1025px)
   ============================================ */
@media (min-width: 1025px) {
    /* Desktop service cards use 3-2 stacked layout from base styles */
    /* No overrides needed - flex-wrap: wrap and centering inherited from .services-container */

    /* Desktop service icon sizing - fill card width */
    .service-icon {
        width: 100%;
        height: auto;
        aspect-ratio: 1 / 1;
    }

    /* Desktop service title sizing - 50% larger than base */
    .service-title {
        font-size: 18px; /* 50% increase from 12px base */
    }

    /* Service card positioning for z-index stacking */
    .service-card {
        position: relative;
        z-index: 1;
        min-width: 33.333%; /* Prevent 4+ cards per row at large viewports */
    }

    /* Elevate hovered card above adjacent cards on desktop */
    .service-card:hover,
    .service-card:active,
    .service-card:focus-within {
        z-index: 10;
    }

    /* Desktop tooltip styles will be added in new implementation */
}

/* ===================================
   WORK PAGE - PORTFOLIO GALLERY
   =================================== */

/* Portfolio main container */
.portfolio-main {
    width: 100%;
    background: var(--color-white);
}

/* Portfolio gallery section */
.portfolio-gallery {
    max-width: 2240px;
    margin: 0 auto;
    padding: 4rem 2rem;
}

/* Individual portfolio items - base styles for homepage CSS Grid */
/* Note: width is NOT set here - CSS Grid handles sizing on homepage */
/* Work page (.work-page) has specific width rules for Masonry below */
.portfolio-item {
    overflow: hidden;
    background: var(--color-gray-light);
    transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.portfolio-item img {
    width: 100%;
    height: auto;
    display: block;
    object-fit: cover;
}

/* Hover effect for portfolio items */
.portfolio-item:hover {
    transform: translateY(-4px);
    box-shadow: 0 8px 16px rgba(0, 0, 0, 0.15);
    cursor: pointer;
}

/* Active state for touch devices */
.portfolio-item:active {
    transform: translateY(-2px);
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
}

/* ============================================
   WORK PAGE - RESPONSIVE BREAKPOINTS
   ============================================ */

/* Work Page Tablet (769px - 1024px) */
@media (min-width: 769px) and (max-width: 1024px) {
    .portfolio-gallery {
        padding: 3rem 2rem;
    }
    /* Note: .portfolio-item widths for work page are in .work-page section below */
}

/* Work Page Mobile (≤768px) */
@media (max-width: 768px) {
    .portfolio-gallery {
        padding: 2rem 1rem;
    }

    /* Reduce hover effects on mobile */
    .portfolio-item:hover {
        transform: none;
        box-shadow: none;
    }

    .portfolio-item:active {
        transform: scale(0.98);
        box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
    }
    /* Note: .portfolio-item widths for work page are in .work-page section below */
}

/* ===================================
   WORK PAGE - Masonry Layout Override
   Disables CSS Grid so Masonry.js can control layout
   =================================== */

.work-page .portfolio-grid {
    display: block; /* Override CSS Grid - Masonry needs block */
    position: relative;
}

.work-page .portfolio-item {
    width: calc(33.333% - 11px); /* 3 columns on desktop */
    margin-bottom: 16px;
}

.work-page .portfolio-item img {
    width: 100%;
    height: auto;
    display: block;
}

/* Work/Home page tablet: 3 columns */
@media (min-width: 769px) and (max-width: 1024px) {
    .work-page .portfolio-item {
        width: calc(33.333% - 11px);
    }
    .home-page .portfolio-item {
        width: calc(33.333% - 11px);
    }
}

/* Work/Home page mobile: 2 columns */
@media (max-width: 768px) {
    .work-page .portfolio-item {
        width: calc(50% - 8px);
    }
    .home-page .portfolio-item {
        width: calc(50% - 8px);
    }
}

/* ============================================
   CONTACT PAGE STYLES
   ============================================ */

.contact-page {
    background-color: var(--color-white);
}

/* Remove header shadow on contact page */
.contact-page .header {
    box-shadow: none;
}

.contact-main {
    padding: 0;
}

.contact-layout {
    display: grid;
    grid-template-columns: 18% 1fr 30%;
    gap: 0;
    max-width: 2240px;
    margin: 0 auto;
    /* min-height: calc(100vh - 200px); */ /* Removed for fixed layout */
}

/* Left Geometric Column - One continuous vertical bar */
.contact-geo-column {
    display: block;
    position: relative;
    overflow: hidden;
    padding-top: 11.5rem; /* Align grid with CONTACT heading in adjacent column */
}

.contact-geo-block {
    width: 100%;
    height: 50%;
}

.contact-geo-block img,
.contact-geo-image {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

/* 2x2 Geometric Grid for Left Column */
.contact-geo-2x2 {
    display: grid;
    grid-template-columns: 1fr 1fr;
    grid-template-rows: 1fr 1fr;
    width: 250px;
    height: 250px;
    gap: 0;
}

.contact-geo-cell {
    width: 125px;
    height: 125px;
    overflow: hidden;
}

.contact-geo-cell.contact-geo-empty {
    background-color: var(--color-white);
}

.contact-geo-cell img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* Center Content */
.contact-content {
    padding: 3rem 4rem;
}

.contact-page-title {
    font-family: var(--font-family-primary);
    font-size: 2rem;
    color: var(--color-primary-blue);
    text-align: center;
    margin-bottom: 3rem;
    font-weight: 400;
    letter-spacing: 0.15em;
}

.contact-grid {
    display: grid;
    grid-template-columns: 35% 65%;
    gap: 3rem;
}

/* Contact Info Section */
.contact-info {
    padding-right: 2rem;
}

.contact-heading {
    font-family: var(--font-family-primary);
    font-size: 0.75rem;
    color: var(--color-primary-blue);
    font-weight: 400;
    letter-spacing: 0.1em;
    margin-bottom: 1rem;
    padding-bottom: 0.5rem;
    border-bottom: 1px solid var(--color-primary-blue);
    display: inline-block;
}

/* Remove underlines from CONTACT and VISIT headings in contact-info section */
.contact-info .contact-heading {
    border-bottom: none;
    padding-bottom: 0;
}

.contact-heading-visit {
    margin-top: 2rem;
}

.contact-item {
    display: flex;
    align-items: flex-start;
    gap: 0.5rem;
    margin-bottom: 0.5rem;
    font-size: 0.875rem;
    padding-left: 0;
}

.contact-item a {
    color: var(--color-primary-blue);
    text-decoration: none;
    font-family: var(--font-family-primary);
}

.contact-item a:hover {
    text-decoration: underline;
}

.contact-icon {
    width: 18px;
    height: 18px;
    color: var(--color-primary-blue);
    flex-shrink: 0;
}

.contact-address {
    font-style: normal;
    font-size: 0.875rem;
    line-height: 1.6;
    color: var(--color-primary-blue);
    font-family: var(--font-family-primary);
}

/* Right Photo Column - extends to footer */
.contact-photo-column {
    display: flex;
    flex-direction: column;
    margin-bottom: -150px; /* Overlap footer geometric strip */
}

.contact-photo-geo {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    grid-template-rows: repeat(2, 1fr);
    gap: 0;
    width: 375px;
    max-width: 375px;
    flex-shrink: 0;
}

.contact-photo-geo-tile {
    width: 125px;
    height: 125px;
    overflow: hidden;
    aspect-ratio: 1 / 1;
}

.contact-photo-geo-tile img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.contact-team-photo {
    width: 375px;
    max-width: 375px;
    height: 400px;
    position: relative;
    overflow: hidden;
    min-height: 400px;
}

.contact-team-photo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: top center;
    filter: sepia(100%) saturate(200%) brightness(90%) hue-rotate(5deg);
}

/* ============================================
   FORM STYLES
   ============================================ */

.contact-form-wrapper {
    max-width: 500px;
}

.contact-form {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.form-row {
    width: 100%;
}

.form-row-half {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
}

.form-group {
    width: 100%;
    position: relative;
}

/* Input & Textarea Base Styles */
.contact-form input[type="text"],
.contact-form input[type="email"],
.contact-form input[type="tel"],
.contact-form input[type="date"],
.contact-form textarea {
    width: 100%;
    padding: 0.875rem 1rem;
    font-family: var(--font-family-primary);
    font-size: 0.7rem;
    letter-spacing: 0.08em;
    color: var(--color-primary-blue);
    background-color: var(--color-white);
    border: 1px solid var(--color-gray-medium);
    border-radius: 0;
    transition: border-color var(--transition-fast), box-shadow var(--transition-fast);
    box-sizing: border-box;
}

.contact-form input::placeholder,
.contact-form textarea::placeholder {
    color: var(--color-gray-dark);
    opacity: 1;
    font-family: var(--font-family-primary);
    letter-spacing: 0.08em;
}

.contact-form input:focus,
.contact-form textarea:focus {
    outline: none;
    border-color: var(--color-primary-blue);
    box-shadow: 0 0 0 2px rgba(0, 48, 140, 0.1);
}

/* Date input styling */
.contact-form input[type="date"] {
    position: relative;
    color: var(--color-gray-dark);
}

.contact-form input[type="date"]::-webkit-calendar-picker-indicator {
    color: var(--color-primary-blue);
    cursor: pointer;
    opacity: 0.6;
}

.contact-form input[type="date"]::-webkit-calendar-picker-indicator:hover {
    opacity: 1;
}

/* Textarea */
.contact-form textarea {
    resize: vertical;
    min-height: 120px;
}

/* Form Labels - visible above inputs */
.form-label {
    display: block;
    font-family: var(--font-family-primary);
    font-size: 0.65rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--color-primary-blue);
    margin-bottom: 0.4rem;
    white-space: nowrap;
}

/* Required indicator asterisk inside visible labels */
.required-indicator {
    color: var(--color-accent-red);
    margin-left: 0.2rem;
}

/* Checkbox Group */

.checkbox-group {
    display: flex;
    flex-wrap: wrap;
    gap: 1.25rem;
}

.checkbox-label {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    font-family: var(--font-family-primary);
    font-size: 0.65rem;
    letter-spacing: 0.05em;
    color: var(--color-gray-dark);
    cursor: pointer;
}

.checkbox-label input[type="checkbox"] {
    width: 14px;
    height: 14px;
    border: 1px solid var(--color-gray-medium);
    border-radius: 2px;
    cursor: pointer;
    accent-color: var(--color-primary-blue);
    margin: 0;
}

.checkbox-text {
    user-select: none;
}

/* Submit Button - Navy variant */
.form-submit-btn {
    margin-top: 1rem;
    align-self: flex-start;
}

.form-submit-btn .cta-btn-text {
    background-color: var(--color-primary-blue);
    color: var(--color-white);
}

.form-submit-btn:hover .cta-btn-text {
    background-color: #002470;
}

/* Event Date Field — accent highlight
   -----------------------------------------------------------------
   The "When is your event?" group is given a left-border accent and
   a warm tinted background so it visually stands out as the primary
   focus of the contact form.
   ----------------------------------------------------------------- */
.form-group--event-date {
    background-color: rgba(238, 61, 51, 0.04);
    border-left: 3px solid var(--color-accent-red);
    padding: 1rem;
    border-radius: var(--border-radius-sm);
}

.form-group--event-date .form-label {
    font-size: 0.75rem;
    font-weight: 700;
    letter-spacing: 0.1em;
    color: var(--color-primary-blue);
}

/* Validation States */
.contact-form input.error,
.contact-form textarea.error {
    border-color: var(--color-accent-red);
    border-width: 2px;
    outline: none;
    box-shadow: 0 0 0 1px var(--color-accent-red);
}

.contact-form input.success,
.contact-form textarea.success {
    border-color: var(--color-accent-teal);
}

/* Error Message
   -----------------------------------------------------------------
   Default (empty): zero font-size collapses the element so it takes
   no visible space. When JS populates it, :not(:empty) restores the
   full display so the message appears below the field.
   ----------------------------------------------------------------- */
.error-message {
    display: block;
    font-size: 0;
    min-height: 0;
    color: var(--color-accent-red);
    font-family: var(--font-family-primary);
    transition: font-size var(--transition-fast);
}

.error-message:not(:empty) {
    font-size: var(--font-size-xs);   /* 0.75rem / 12px */
    margin-top: var(--spacing-xs);    /* 0.25rem / 4px */
    line-height: 1.4;
    letter-spacing: 0.02em;
}

/* ============================================
   CONTACT PAGE RESPONSIVE - TABLET
   ============================================ */

@media (max-width: 1024px) {
    .contact-layout {
        display: flex;
        flex-direction: column;
    }

    .contact-content {
        order: 1;
        padding: 2rem;
    }

    .contact-geo-column {
        order: 3;
        display: block;
        width: 100%;
        height: 200px;
    }

    .contact-geo-2x2 {
        display: grid;
        grid-template-columns: repeat(4, 1fr);
        grid-template-rows: 1fr;
        height: 100%;
    }

    .contact-photo-column {
        display: none;
    }

    .contact-grid {
        grid-template-columns: 1fr;
        gap: 2rem;
    }

    .contact-info {
        order: 2;
        padding-right: 0;
        padding-bottom: 1rem;
    }

    .contact-form-wrapper {
        order: 1;
    }
}

/* ============================================
   CONTACT PAGE RESPONSIVE - MOBILE
   ============================================ */

@media (max-width: 768px) {
    .contact-geo-column {
        display: none;
    }

    .contact-photo-column {
        display: none;
    }

    .contact-content {
        padding: 1.5rem 1rem;
    }

    .contact-page-title {
        font-size: 1.5rem;
        margin-bottom: 2rem;
    }

    .contact-grid {
        display: flex;
        flex-direction: column;
    }

    .contact-form-wrapper {
        order: 1;
    }

    .contact-info {
        order: 2;
        padding-top: 2rem;
        padding-right: 0;
        border-top: 1px solid var(--color-gray-medium);
    }

    .form-row-half {
        grid-template-columns: 1fr;
    }

    .checkbox-group {
        flex-direction: column;
        gap: 0.75rem;
    }
}

/* ============================================================
   INLINE UPLOAD AREA (inside contact form)
   ============================================================ */

/* Hidden by default, revealed when checkbox is checked */
#upload-area {
  max-height: 0;
  overflow: hidden;
  opacity: 0;
  transition:
    max-height 0.45s cubic-bezier(0.4, 0, 0.2, 1),
    opacity 0.35s ease;
  margin-top: 0;
}

#upload-area.upload-area--visible {
  max-height: 800px;
  overflow: visible;
  opacity: 1;
  margin-top: 1rem;
}

/* Dropzone */
.upload-dropzone {
  border: 2px dashed #d1d5db;
  border-radius: 8px;
  padding: 2rem 1.5rem;
  text-align: center;
  cursor: pointer;
  transition: border-color 0.2s ease, background 0.2s ease;
  position: relative;
}

.upload-dropzone:hover,
.upload-dropzone:focus,
.upload-dropzone.upload-dropzone--drag-over {
  border-color: var(--color-primary-blue);
  background: #f0f4ff;
  outline: none;
}

.upload-dropzone__icon {
  width: 40px;
  height: 40px;
  color: #9ca3af;
  margin: 0 auto 0.75rem;
  display: block;
  transition: color 0.2s ease;
}

.upload-dropzone:hover .upload-dropzone__icon,
.upload-dropzone:focus .upload-dropzone__icon,
.upload-dropzone.upload-dropzone--drag-over .upload-dropzone__icon {
  color: var(--color-primary-blue);
}

.upload-dropzone__prompt {
  margin: 0 0 0.25rem 0;
}

.upload-dropzone__prompt-main {
  display: block;
  font-weight: 600;
  color: #374151;
  font-size: 0.95rem;
}

.upload-dropzone__prompt-sub {
  display: block;
  font-size: 0.85rem;
  color: #6b7280;
  margin-top: 0.2rem;
}

.upload-dropzone__browse-link {
  color: var(--color-primary-blue);
  text-decoration: underline;
  cursor: pointer;
}

.upload-dropzone__hint {
  margin: 0.5rem 0 0 0;
  font-size: 0.78rem;
  color: #9ca3af;
}

/* Hidden native file input */
.upload-file-input {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* Validation error */
.upload-error {
  color: #dc2626;
  font-size: 0.85rem;
  min-height: 1.2em;
  margin: 0.5rem 0 0 0;
}

.upload-error:empty {
  display: none;
}

/* File list */
.upload-file-list {
  list-style: none;
  margin: 1rem 0 0 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.upload-file-list:empty {
  display: none;
}

.upload-file-list__item {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  background: #f9fafb;
  border: 1px solid #e5e7eb;
  border-radius: 6px;
  padding: 0.6rem 0.75rem;
}

.upload-file-list__name {
  flex: 1;
  font-size: 0.88rem;
  font-weight: 500;
  color: #111827;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.upload-file-list__size {
  font-size: 0.78rem;
  color: #6b7280;
  white-space: nowrap;
}

.upload-file-list__remove {
  background: none;
  border: none;
  cursor: pointer;
  color: #9ca3af;
  font-size: 1.1rem;
  line-height: 1;
  padding: 0 2px;
  border-radius: 3px;
  transition: color 0.15s ease;
}

.upload-file-list__remove:hover {
  color: #dc2626;
}

/* Progress bar */
.upload-progress {
  margin-top: 1rem;
  display: none;
}

.upload-progress.upload-progress--active {
  display: block;
}

.upload-progress__track {
  height: 6px;
  background: #e5e7eb;
  border-radius: 3px;
  overflow: hidden;
}

.upload-progress__bar {
  height: 100%;
  width: 0%;
  background: var(--color-accent-teal);
  border-radius: 3px;
  transition: width 0.1s linear;
}

.upload-progress__label {
  font-size: 0.78rem;
  color: #6b7280;
  margin: 0.35rem 0 0 0;
  text-align: center;
}

/* No-files warning */
.upload-no-files-warning {
  background: #fffbeb;
  border: 1px solid #fcd34d;
  border-radius: 6px;
  padding: 1rem 1.25rem;
  margin-top: 1rem;
}

.upload-no-files-warning__text {
  margin: 0 0 0.75rem 0;
  font-size: 0.88rem;
  color: #92400e;
  line-height: 1.5;
}

.upload-no-files-warning__actions {
  display: flex;
  gap: 0.75rem;
  flex-wrap: wrap;
}

.upload-no-files-warning__btn {
  padding: 0.5rem 1.25rem;
  border-radius: 4px;
  font-size: 0.85rem;
  font-weight: 600;
  cursor: pointer;
  transition: background 0.15s ease, border-color 0.15s ease;
}

.upload-no-files-warning__btn--add {
  background: var(--color-primary-blue);
  color: #ffffff;
  border: 1px solid var(--color-primary-blue);
}

.upload-no-files-warning__btn--add:hover {
  background: #002470;
}

.upload-no-files-warning__btn--skip {
  background: transparent;
  color: #6b7280;
  border: 1px solid #d1d5db;
}

.upload-no-files-warning__btn--skip:hover {
  background: #f9fafb;
  border-color: #9ca3af;
}

/* ---- Mobile ---- */
@media (max-width: 480px) {
  .upload-dropzone {
    padding: 1.25rem 1rem;
  }

  .upload-no-files-warning__actions {
    flex-direction: column;
    align-items: stretch;
  }
}

/* ============================================================
   CONTACT FORM — SUPPORTING MATERIALS CHECKBOX
   ============================================================ */

.form-field--checkbox {
  margin-top: 0.25rem;
  margin-bottom: 1.25rem;
}

.form-checkbox-label {
  display: flex;
  align-items: flex-start;
  gap: 0.65rem;
  cursor: pointer;
  user-select: none;
}

/* Hide the native checkbox */
.form-checkbox-input {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* Custom checkbox box */
.form-checkbox-custom {
  flex-shrink: 0;
  width: 18px;
  height: 18px;
  margin-top: 2px;
  border: 2px solid #d1d5db;
  border-radius: 4px;
  background: #ffffff;
  transition: border-color 0.15s ease, background 0.15s ease;
  position: relative;
}

/* Checked state — filled box with checkmark */
.form-checkbox-input:checked + .form-checkbox-custom {
  border-color: var(--color-primary-blue);
  background: var(--color-primary-blue);
}

.form-checkbox-input:checked + .form-checkbox-custom::after {
  content: '';
  position: absolute;
  left: 4px;
  top: 1px;
  width: 6px;
  height: 10px;
  border: 2px solid #ffffff;
  border-top: none;
  border-left: none;
  transform: rotate(45deg);
}

/* Focus ring */
.form-checkbox-input:focus-visible + .form-checkbox-custom {
  outline: 2px solid var(--color-primary-blue);
  outline-offset: 2px;
}

.form-checkbox-text {
  font-size: 0.88rem;
  color: #374151;
  line-height: 1.5;
}


/* ==========================================================================
   VIEW TRANSITIONS (Task 4.4)
   Cross-document fade — progressive enhancement (Chrome 126+)
   Browsers that don't support this just get normal navigation.
   ========================================================================== */

@view-transition {
  navigation: auto;
}

/* Default crossfade: 200ms — snappy but readable */
::view-transition-old(root),
::view-transition-new(root) {
  animation-duration: 200ms;
  animation-timing-function: ease;
}

/* Honour system motion preference — disable animation entirely */
@media (prefers-reduced-motion: reduce) {
  ::view-transition-old(root),
  ::view-transition-new(root) {
    animation: none;
  }
}