/* =================================================================
   BREAKPOINTS REFERENCE
   =================================================================
   Mobile menu / header:  960px  (max-width: 959px mobile, min-width: 960px desktop)
   Component grids:        768px  (max-width: 768px mobile, min-width: 769px desktop)
   Tablet:   1024px  (for intermediate layouts where needed)
   Desktop:  1280px  (for wide/container layouts where needed)

   These values are hardcoded in @media queries throughout this file
   and in footer.php / custom.js. Update all locations if changed.
   ================================================================= */

/**
 * D20 Starter Theme
 *
 * Fonts & Components
 */

/* =================================================================
   FONTS
   ================================================================= */

@font-face {
    font-family: 'Montserrat';
    src: url('../fonts/montserrat.woff2') format('woff2');
    font-weight: 400 700;
    font-style: normal;
    font-display: swap;
}


/* =================================================================
   TOKENS
   ================================================================= */

:root {
    /* Primary color scale (Pennington navy) from Figma Design Kit */
    --color-primary-50: #f4f7ff;
    --color-primary-100: #c0caea;
    --color-primary-200: #909fd2;
    --color-primary-300: #6375b9;
    --color-primary-400: #3a4a9f;
    --color-primary-500: #354092;
    --color-primary-600: #2f3585;
    --color-primary-700: #2a2b78;
    --color-primary-800: #000048;
    --color-primary-900: #08142f;

    /* Secondary color scale (Pennington pink) from Figma Design Kit */
    --color-secondary-50: #fff3f7;
    --color-secondary-100: #ffc3da;
    --color-secondary-200: #fa91bd;
    --color-secondary-300: #ef5ba1;
    --color-secondary-400: #d4599f;
    --color-secondary-500: #ba5699;
    --color-secondary-600: #a15391;
    --color-secondary-700: #753969;
    --color-secondary-800: #4b2043;
    --color-secondary-900: #250a20;

    /* Neutral color scale from Figma Design Kit */
    --color-neutral-50: #f5f5f5;
    --color-neutral-100: #e4e5e7;
    --color-neutral-200: #c9cccf;
    --color-neutral-300: #bbc2ca;
    --color-neutral-400: #a8adb3;
    --color-neutral-500: #8e959e;
    --color-neutral-600: #6c747e;
    --color-neutral-700: #535961;
    --color-neutral-800: #3b3e43;
    --color-neutral-900: #000000;

    /* Error color scale from Figma Design Kit */
    --color-error-50: #f7f2f2;
    --color-error-100: #f0dbdb;
    --color-error-200: #e6b2b2;
    --color-error-300: #df7b7b;
    --color-error-400: #db3e3e;
    --color-error-500: #dc2626;
    --color-error-600: #af1a1a;
    --color-error-700: #851515;
    --color-error-800: #591313;
    --color-error-900: #390f0f;

    /* Brand aliases mapped to the Pennington palette */
    --color-brand: var(--color-primary-500);
    --color-brand-dark: var(--color-primary-700);
    --color-brand-light: var(--color-primary-100);

    /* Button brand colors (pink = primary button, blue = secondary button) */
    --color-brand-pink: var(--color-secondary-500);
    --color-brand-pink-dark: var(--color-secondary-600);
    --color-brand-blue: var(--color-primary-500);
    --color-brand-blue-dark: var(--color-primary-600);

    /* Layout aliases (structural safe neutral defaults) */
    --color-bg-light: var(--color-neutral-50);
    --color-bg-dark: var(--color-neutral-900);
    --color-bg-footer: var(--color-neutral-900);
    --color-text: var(--color-neutral-800);
    --color-text-muted: var(--color-neutral-600);
    --color-text-on-dark: var(--color-neutral-50);

    /* Typography */
    --font-sans: 'avenir-lt-pro', system-ui, -apple-system, sans-serif;
    --font-heading: 'avenir-lt-pro', 'Montserrat', system-ui, -apple-system, sans-serif;
    --font-display: 'ccsignlanguage', 'avenir-lt-pro', 'Montserrat', system-ui, sans-serif;
    --font-pixel: 'Press Start 2P', 'Courier New', monospace;

    --text-xs: 0.75rem;
    --text-sm: 0.875rem;
    --text-base: 1rem;
    --text-lg: 1.125rem;
    --text-xl: 1.25rem;
    --text-2xl: clamp(1.5rem, 1.25rem + 1vw, 1.875rem);
    --text-3xl: clamp(1.875rem, 1.5rem + 1.5vw, 2.5rem);
    --text-4xl: clamp(2.25rem, 1.75rem + 2vw, 3rem);
    --text-5xl: clamp(2.75rem, 2rem + 3vw, 4rem);

    --leading-tight: 1.2;
    --leading-normal: 1.5;
    --leading-relaxed: 1.625;

    /* Spacing */
    --space-xs: 0.5rem;
    --space-sm: 0.75rem;
    --space-md: 1rem;
    --space-lg: 1.5rem;
    --space-xl: 2rem;
    --space-2xl: 3rem;
    --space-3xl: 4rem;

    /* Layout */
    --container-max: 1560px;
    --gutter: clamp(1rem, 0.5rem + 2vw, 2rem);

    /* Misc */
    --radius: 0.5rem;
    --shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1);
    --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1);
    --transition: 200ms ease;
}



@media (max-width: 1024px) {
    :root {
        --text-2xl: 1.5rem;
        --text-3xl: 1.75rem;
        --text-4xl: 2.25rem;
        --text-5xl: 2.75rem;
    }
}

@media (max-width: 767px) {
    :root {
        --text-base: 1rem;
        --text-lg: 1.25rem;
        --text-2xl: 1.25rem;
        --text-3xl: 1.5rem;
        --text-4xl: 1.75rem;
        --text-5xl: 2rem;
    }
}


/* =================================================================
   BASE
   ================================================================= */

*, *::before, *::after { box-sizing: border-box; }

html { scroll-behavior: smooth; overflow-x: clip; }

body {
    margin: 0;
    font-family: var(--font-sans);
    font-size: 1.25rem; /* paragraph base size used across components */
    line-height: var(--leading-normal);
    color: var(--color-neutral-900);
    background:#fff;
    -webkit-font-smoothing: antialiased;
    /* Contain any horizontal bleed (off-canvas decorations, etc.) at the page
       level so components don't need to clip their own overflow which lets
       decorative elements spill out of sections without being cut off.
       `clip` (not hidden) keeps the sticky header working. */
    overflow-x: clip;
}

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

/* Press Start 2P pixel display font for the 24/7 hero graphic */
@font-face {
    font-family: 'Press Start 2P';
    src: url('../fonts/PressStart2P-Regular.woff2') format('woff2');
    font-weight: 400;
    font-style: normal;
    font-display: swap;
}

/* Animate on scroll */
.animate-on-scroll {
    opacity: 0;
    transform: translateY(20px);
    transition: opacity 0.6s ease-out, transform 0.6s ease-out;
}
.animate-on-scroll.is-visible {
    opacity: 1;
    transform: translateY(0);
}
@media (prefers-reduced-motion: reduce) {
    .animate-on-scroll {
        opacity: 1;
        transform: none;
        transition: none;
    }
}

/* Background image utility for components */
[class*="--bg-image"] {
    position: relative;
    background: var(--color-bg-dark) center/cover no-repeat;
    color: #fff;
}
[class*="--bg-image"] .eyebrow { color: var(--color-brand-light); }
[class*="--bg-image"] > .container,
[class*="--bg-image"] > [class*="__inner"] { position: relative; z-index: 1; }
[class*="__overlay"] { position: absolute; inset: 0; }

/* Decorative accent shapes placement/size handled per component.
   `--back` sits below the section content, `--front` above it. */
[class*="c-"]:has(> .c-decoration) { position: relative; isolation: isolate; }
[class*="c-"]:has(> .c-decoration) > .container,
[class*="c-"]:has(> .c-decoration) > [class*="__inner"] { position: relative; z-index: 1; }
.c-decoration {
    position: absolute;
    z-index: 0;
    width: 6rem;
    height: auto;
    max-width: 28%;
    pointer-events: none;
    /* sensible default; override per component */
    top: var(--space-lg);
    right: var(--space-lg);
}
.c-decoration--back { z-index: 0; }
.c-decoration--front { z-index: 2; }
@media (max-width: 767px) {
    .c-decoration { width: 4rem; }
}

h1, h2, h3, h4, h5, h6 {
    margin: 0 0 var(--space-md);
    font-family: var(--font-heading);
    font-weight: 900;
    line-height: var(--leading-tight);
}

p { margin: 0 0 var(--space-md); }
p:last-child { margin-bottom: 0; }

a { color: var(--color-brand); }


/* =================================================================
   ACCESSIBILITY
   ================================================================= */

/* Skip link */
.skip-link {
    position: absolute;
    left: -9999px;
    top: var(--space-sm);
    background: var(--color-brand);
    color: #fff;
    padding: var(--space-sm) var(--space-md);
    border-radius: var(--radius);
    font-weight: 600;
    text-decoration: none;
    z-index: 9999;
}
.skip-link:focus {
    left: var(--space-sm);
    outline: 2px solid var(--color-brand-dark);
    outline-offset: 2px;
}

/* Screen reader only (visually hidden) */
.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;
}

/* Focus visible states */
:focus-visible {
    outline: 2px solid var(--color-brand);
    outline-offset: 2px;
}
:focus:not(:focus-visible) {
    outline: none;
}

/* Focus on dark backgrounds */
[class*="--bg-dark"] :focus-visible,
[class*="--bg-brand"] :focus-visible,
[class*="--bg-magenta"] :focus-visible,
[class*="--bg-image"] :focus-visible,
.site-footer :focus-visible {
    outline-color: #fff;
}

/* Minimum tap target size */
button,
.btn,
input[type="submit"],
input[type="button"],
a.btn {
    min-height: 44px;
}

/* Text overflow handling */
h1, h2, h3, h4, h5, h6 {
    overflow-wrap: break-word;
}

h1{
    font-size:var(--text-5xl);
}

h2 {
    font-size:var(--text-4xl);
}

h3 {
    font-size:var(--text-3xl);
}

h4 {
    font-size:var(--text-3xl);
}

p { margin: 0 0 var(--space-lg); }
p:last-child { margin-bottom: 0; }

/* Prevent iOS text resize issues */
html {
    text-size-adjust: 100%;
    -webkit-text-size-adjust: 100%;
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
        scroll-behavior: auto !important;
    }

    /* Keep elements visible without animation */
    .animate-on-scroll {
        opacity: 1 !important;
        transform: none !important;
    }
}

/* Container */
.container {
    width: 100%;
    max-width: var(--container-max);
    margin: 0 auto;
}
.container--narrow { max-width: 720px; }
.container--wide { max-width: 1560px; }

/* Below 1640px the container's auto-margins get tight, so add gutter padding
   left/right. padding-x only, so vertical padding (e.g. the header) is kept.
   Applies to every .container component inners and the header alike. */
@media (max-width: 1640px) {
    .container {
        padding-left: var(--gutter);
        padding-right: var(--gutter);
    }
}

/* Prose (WYSIWYG content) */
.prose h2 { font-size: var(--text-2xl); margin-top: var(--space-xl); }
.prose h3 { font-size: var(--text-xl); margin-top: var(--space-lg); }
.prose ul, .prose ol { padding-left: var(--space-lg); }
.prose ul + h3 {
    margin-top:var(--space-2xl);
}
.prose li { margin-bottom: var(--space-xs); }
.prose a { color: var(--color-brand); text-decoration: underline; }

/* Eyebrow / Subhead
   Eyebrows match the hero's .c-hero__headline-small treatment: bold Avenir,
   pink, hard drop shadow, and nudged tight against the heading that follows. */
.eyebrow {
    margin-bottom: calc(-1 * var(--space-xs));
    margin-bottom: var(--space-sm);
    font-family: var(--font-heading);
    font-size: var(--text-base);
    font-weight: 800;
    line-height: 1.5;
    color: var(--color-secondary-500);
    text-shadow: 2px 2px 0 #000;
}
.eyebrow + h2{
    /* margin-top:var(--space-sm); */
}
.subhead {
    font-size: var(--text-lg);
    color: var(--color-neutral-900);
}

/* Buttons
   Shared neobrutalist style from Figma: solid fill, 2px black border,
   hard offset shadow, uppercase Avenir. The primary fill is brand pink;
   the only color exception is the secondary/blue variant.
   The Contact Us menu item (li.nav-cta) reuses this exact button style. */
.btn,
.site-nav__menu .nav-cta > a {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--space-xs);
    padding: 1.125rem 2rem;
    font-family: var(--font-heading);
    font-size: var(--text-base);
    font-weight: 800;
    line-height: 1;
    text-transform: uppercase;
    text-decoration: none;
    white-space: nowrap;
    color: #fff;
    background: var(--color-brand-pink);
    border: 2px solid #000;
    border-radius: 0;
    box-shadow: 4px 4px 0 0 #000;
    cursor: pointer;
    transition: transform var(--transition), box-shadow var(--transition), background var(--transition);
}
.btn:hover,
.btn:focus-visible,
.site-nav__menu .nav-cta > a:hover,
.site-nav__menu .nav-cta > a:focus-visible {
    color: #fff;
    background: var(--color-brand-pink-dark);
    transform: translate(2px, 2px);
    box-shadow: 2px 2px 0 0 #000;
}
.btn:active,
.site-nav__menu .nav-cta > a:active {
    transform: translate(4px, 4px);
    box-shadow: 0 0 0 0 #000;
}

/* Color variants */
.btn--primary {
    background: var(--color-secondary-500);
    color: #fff;
}
.btn--primary:hover {
    background: var(--color-secondary-600);
}
.btn--secondary {
    background: var(--color-brand-blue);
    color: #fff;
}
.btn--secondary:hover {
    background: var(--color-brand-blue-dark);
}
.btn--white {
    background: #fff;
    color: var(--color-brand-blue);
}
.btn--white:hover {
    background: var(--color-neutral-100);
}
.btn--outline-light {
    background: transparent;
    color: #fff;
    box-shadow: 4px 4px 0 0 rgba(255, 255, 255, 0.4);
}
.btn--outline-light:hover {
    background: rgba(255, 255, 255, 0.12);
    box-shadow: 2px 2px 0 0 rgba(255, 255, 255, 0.4);
}

.link-arrow {
    display: inline-flex;
    align-items: center;
    gap: var(--space-xs);
    font-weight: 600;
    color: var(--color-brand);
    text-decoration: none;
}
.link-arrow svg { width: 1em; height: 1em; transition: transform var(--transition); }
.link-arrow:hover svg { transform: translateX(4px); }

/* Icons */
svg { width: 24px; height: 24px; flex-shrink: 0; }


/* =================================================================
   HEADER
   ================================================================= */

.site-header {
    position: sticky;
    top: 0;
    z-index: 100;
    background: #fff;
    border-bottom: 1px solid var(--color-neutral-200);
}

.home .site-header{
    border-color:#fff;
}

.site-header__inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-lg);
    min-height: 72px;
    padding-top: 2.25rem;
    padding-bottom: 2.25rem;
}
.site-header__logo {
    flex-shrink: 0;
    display: block;
    line-height: 0;
}
.site-header__logo img { width: 160px; max-width: 100%; height: auto; transition: width var(--transition); }

@media (min-width: 960px) {
    .site-header__inner { gap: var(--space-xl); }
    .site-header__logo img { width: 226px; }
    /* Center the menu in the space between the logo and the phone CTA */
    .site-nav { flex: 1; justify-content: center; }
    .site-nav__menu { gap: clamp(2.25rem, 4vw, 3.6875rem); }
}
/* Scrolled state compact sticky header with shadow */
body.scrolled .site-header {
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.12);
}
@media (min-width: 960px) {
    body.scrolled .site-header__logo img { width: 180px; }
}

@media (max-width:959px) {
    .home .site-header {
        border:none;
        background:none;
    }

    .home.scrolled .site-header {
        background:#fff;
    }
    
    body .site-header__inner {
        padding-top: var(--space-md);
        padding-bottom: var(--space-md);
    }
    
    body .site-header__logo img {
        width: 120px;
    }
}

/* Homepage: the large logo lives in the home hero, so keep the header logo
   hidden until the header goes compact on scroll. Keeps the nav in place. */
.home .site-header__logo img { opacity: 0; transition: width var(--transition), opacity var(--transition); }
.home.scrolled .site-header__logo img { opacity: 1; }
.site-header__toggle {
    display: flex;
    flex-direction: column;
    gap: 5px;
    padding: var(--space-sm);
    background: none;
    border: none;
    cursor: pointer;
}
.site-header__toggle span,
.site-header__toggle::before,
.site-header__toggle::after {
    content: '';
    display: block;
    width: 24px;
    height: 2px;
    background: var(--color-neutral-900);
    transition: var(--transition);
}
.site-header__toggle[aria-expanded="true"] {
    top: 2rem;
    right: 1rem;
    padding-right:0;
    z-index: 9999;
    position:fixed;
}
.site-header__toggle[aria-expanded="true"] span {
    opacity: 0;
    transform: scaleX(0);
}
.site-header__toggle[aria-expanded="true"]::before,
.site-header__toggle[aria-expanded="true"]::after{
    width:32px;
    /* background-color:var(--primary-500); */
    background:#fff;
}
.site-header__toggle[aria-expanded="true"]::before {
    transform: translateY(7px) rotate(45deg);
}
.site-header__toggle[aria-expanded="true"]::after {
    transform: translateY(-7px) rotate(-45deg);
    /* border: 1px solid red; */
    /* height: 200px!important; */
}
.site-nav__menu {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    align-items: center;
    gap: var(--space-2xl);
}
.site-nav__menu a {
    font-weight: 500;
    text-decoration: none;
    color: var(--color-neutral-700);
}
.site-nav__menu a:hover { color: var(--color-brand-pink); }

/* Top-level nav items uppercase Avenir Black, per Figma */
.site-nav__menu > li > a {
    font-family: var(--font-heading);
    font-size: var(--text-base);
    font-weight: 800;
    text-transform: uppercase;
    color: #000;
    letter-spacing: 0.01em;
}
.site-nav__menu > li > a:hover { color: var(--color-brand-pink); }
/* Vertical padding on items (not the CTA button) creates the gap to the dropdown */
.site-nav__menu > li:not(.nav-cta) > a { padding-block: 1.125rem; }

/* Parent menu items with children */
.site-nav__menu > .menu-item-has-children {
    position: relative;
}
.site-nav__menu > .menu-item-has-children > a {
    display: flex;
    align-items: center;
    gap: var(--space-xs);
}
.site-nav__menu > .menu-item-has-children > a::after {
    content: '';
    border: solid currentColor;
    border-width: 0 1.5px 1.5px 0;
    padding: 2.5px;
    transform: rotate(45deg);
    margin-top: -2px;
    transition: transform var(--transition);
}
/* Injected mobile arrow-toggle button ÃƒÂ¢Ã¢â€šÂ¬Ã¢â‚¬Â hidden on desktop (hover dropdown). */
.submenu-toggle { display: none; }

@media (max-width:1360px) and (min-width:960px) {
    .site-nav__menu {
        gap:var(--space-xl);
    }

    #menu-item-139 {
        display: none;
    }
}

@media (max-width:1180px) and (min-width:960px) {
    .site-header .btn-phone__number{
        display:none;
    }
}

@media (max-width:1081px) and (min-width:960px) {
    .site-header__logo img {
        width:160px;
    }

    body.scrolled .site-header__logo img{
        width:120px;
    }
}

/* Desktop dropdown */
@media (min-width: 960px) {
    .site-nav__menu .sub-menu {
        position: absolute;
        top: 100%;
        left: 0;
        column-count: 2;
        column-gap: var(--space-sm);
        width: 30rem;
        list-style: none;
        margin: 0;
        padding: var(--space-sm);
        background: #fff;
        border: 2px solid #000;
        border-radius: 0;
        box-shadow: 4px 4px 0 0 #000;
        opacity: 0;
        visibility: hidden;
        transform: translateY(8px);
        transition: opacity var(--transition), transform var(--transition), visibility var(--transition);
    }
    .site-nav__menu > .menu-item-has-children:hover > .sub-menu,
    .site-nav__menu > .menu-item-has-children:focus-within > .sub-menu {
        opacity: 1;
        visibility: visible;
        transform: translateY(0);
    }
    .site-nav__menu > .menu-item-has-children:hover > a::after {
        transform: rotate(-135deg);
        margin-top: 2px;
    }
    .site-nav__menu .sub-menu > li { break-inside: avoid; }
    /* Force "Indoor Air Quality" to start column 2 ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€šÂ¬Ã‚Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ a fixed 4/5 split that the
       balancer can't reshuffle (also keeps it stable on hover). */
    #menu-item-161 {
        -webkit-column-break-before: always;
        break-before: column;
    }
    /* Submenu links match parent items (Avenir Black) but stay mixed case */
    .site-nav__menu .sub-menu a {
        display: block;
        padding: var(--space-sm) var(--space-md);
        font-family: var(--font-heading);
        font-size: var(--text-base);
        font-weight: 800;
        line-height: 1.25;
        color: #000;
        border-radius: 0;
    }
    .site-nav__menu .sub-menu a:hover {
        background: var(--color-neutral-50);
        color: var(--color-brand-pink);
    }

    /* "Emergency HVAC Service" submenu item styled as the primary (pink) button.
       Scoped to the desktop dropdown only; the mobile drawer keeps the default
       submenu link style. Mirrors .btn / .btn--primary. */
    #menu-item-165 > a {
        display: flex;
        align-items: center;
        justify-content: center;
        gap: var(--space-xs);
        /* Equal margin on all sides ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬ÃƒÂ¢Ã¢â€šÂ¬Ã‚Â the bottom margin reserves room for the 4px
           hard shadow + 2px hover shift so it never overflows into the column flow.
           Without it, Safari re-balances the columns when the button repaints on
           hover (shuffling items between columns). */
        margin: var(--space-xs) var(--space-sm);
        padding: 0.75rem 1rem;
        font-family: var(--font-heading);
        font-size: var(--text-sm);
        font-weight: 800;
        line-height: 1;
        text-align: center;
        text-transform: uppercase;
        color: #fff;
        background: var(--color-secondary-500);
        border: 2px solid #000;
        border-radius: 0;
        box-shadow: 4px 4px 0 0 #000;
        transition: transform var(--transition), box-shadow var(--transition), background var(--transition);
    }
    #menu-item-165 > a:hover,
    #menu-item-165 > a:focus-visible {
        color: #fff;
        background: var(--color-secondary-600);
        transform: translate(2px, 2px);
        box-shadow: 2px 2px 0 0 #000;
    }
    #menu-item-165 > a:active {
        transform: translate(4px, 4px);
        box-shadow: 0 0 0 0 #000;
    }
}

@media (max-width: 959px) {
    .site-nav {
        position: fixed;
        top: 72px;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
        background: var(--color-primary-700);
        padding: var(--space-lg) 5%;
        padding-top: 5rem;
        transform: translateX(100%);
        transition: transform var(--transition);
        overflow-y: auto;
        z-index:99;
    }
    .site-nav.is-open { transform: translateX(0); }
    .site-nav__menu { flex-direction: column; gap: 0; }
    .site-nav__menu > li { 
        flex-basis:100%;
        width:100%;
        border-bottom: 1px solid var(--color-primary-300); 
    }

    .site-nav__menu > li.nav-cta{
        margin-top:var(--space-xl);
        border:none;
    }
    .site-nav__menu > li > a { display: block; padding: 1rem 0; color:#fff;}
    .site-nav__menu > li > a:hover{
        color:var(--color-secondary-200)
    }
    /* Parent items become a row: link (flex:1, navigates) + arrow button (toggles).
       The submenu wraps full-width below. */
    .site-nav__menu > .menu-item-has-children {
        display: flex;
        flex-wrap: wrap;
        align-items: center;
    }
    .site-nav__menu > .menu-item-has-children > a {
        flex: 1;
        display: block;
    }
    .site-nav__menu > .menu-item-has-children > a::after { display: none; }
    .submenu-toggle {
        display: flex;
        align-items: center;
        justify-content: center;
        flex: 0 0 auto;
        align-self: stretch;
        width: 48px;
        margin: 0;
        padding: 0;
        background: none;
        border: 0;
        color: #fff;
        cursor: pointer;
    }
    .submenu-toggle::after {
        content: '';
        width: 12px;
        height: 12px;
        border: solid currentColor;
        border-width: 0 2px 2px 0;
        transform: rotate(45deg);
        margin-top: -6px;
        transition: transform var(--transition);
    }
    .menu-item-has-children.is-open > .submenu-toggle::after {
        transform: rotate(-135deg);
        margin-top: 2px;
    }
    .site-nav__menu > .menu-item-has-children > .sub-menu {
        flex-basis: 100%;
    }
    .site-nav__menu .sub-menu {
        list-style: none;
        margin: 0;
        padding: 0 0 var(--space-sm) var(--space-md);
        padding: 0;
        max-height: 0;
        overflow: hidden;
        transition: max-height var(--transition);
    }
    .site-nav__menu > .menu-item-has-children.is-open > .sub-menu {
        max-height: 500px;
        padding-bottom:var(--space-lg)
    }
    .site-nav__menu .sub-menu a {
        display: block;
        padding: var(--space-xs) 0;
        font-weight: 400;
        color: var(--color-primary-50);
        font-size:1.125rem;
    }
}
body.nav-open {
    overflow: hidden;
}
@media (min-width: 960px) {
    .site-header__toggle { display: none; }
    .site-nav {
        display: flex;
        align-items: center;
    }
}

/* Phone button reusable "phone" style used in the header, sitewide CTA,
   and anywhere a phone link is shown. Blue icon tile (with hard shadow) +
   blue Avenir number, per Figma. */
.btn-phone {
    display: inline-flex;
    align-items: center;
    gap: 1.25rem;
    flex-shrink: 0;
    font-family: var(--font-heading);
    font-size: var(--text-base);
    font-weight: 800;
    color: var(--color-brand-blue);
    text-decoration: none;
    white-space: nowrap;
}
.btn-phone__icon {
    display: inline-grid;
    place-items: center;
    flex-shrink: 0;
    width: 58px;
    height: 58px;
    background: var(--color-brand-blue);
    border: 2px solid #000;
    box-shadow: 4px 4px 0 0 #000;
    color: #fff;
    transition: transform var(--transition), box-shadow var(--transition);
}
.btn-phone__icon svg { width: 26px; height: 26px; }
.btn-phone:hover { color: var(--color-brand-blue); }
.btn-phone:hover .btn-phone__icon {
    background: var(--color-brand-blue-dark);
    transform: translate(2px, 2px);
    box-shadow: 2px 2px 0 0 #000;
}
/* Telephone button text is white on dark contexts (hero, dark/brand/image sections, sitewide CTA) */
.c-hero .btn-phone,
.c-hero .btn-phone:hover,
.c-cta .btn-phone,
.c-cta .btn-phone:hover,
[class*="--bg-dark"] .btn-phone,
[class*="--bg-brand"] .btn-phone,
[class*="--bg-magenta"] .btn-phone,
[class*="--bg-image"] .btn-phone { color: #fff; }
/* In the hero CTA row the phone number matches Figma sizing */
.c-hero__buttons .btn-phone__number { font-size: var(--text-xl); }

@media (max-width: 959px) {
    /* Header phone is replaced by the sticky call CTA below this breakpoint. */
    .site-header__phone { display: none; }
    .site-header .btn-phone__number { display: none; }
    .btn-phone__icon { width: 48px; height: 48px; }
    /* Top bar order: logo hamburger */
    .site-header__logo { order: 1; margin-right: auto; }
    .site-header__toggle { order: 3; }
}

/* Small button variant */
.btn--sm {
    padding: var(--space-xs) var(--space-md);
    font-size: var(--text-sm);
}


/* =================================================================
   MEGA MENU
   ================================================================= */

.c-mega-menu {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    z-index: 100;
    background: #fff;
    border-top: 1px solid var(--color-neutral-200);
    box-shadow: var(--shadow-lg);
    opacity: 0;
    visibility: hidden;
    transform: translateY(-4px);
    transition: opacity var(--transition), transform var(--transition), visibility var(--transition);
    pointer-events: none;
}

.c-mega-menu.is-active {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
    pointer-events: auto;
}

.c-mega-menu__inner {
    padding: var(--space-xl) var(--gutter);
}

.c-mega-menu__columns {
    display: flex;
    gap: var(--space-lg);
}

.c-mega-menu__col {
    min-width: 0;
}

.c-mega-menu__col-title {
    font-family: var(--font-heading);
    font-size: var(--text-lg);
    font-weight: 700;
    margin-bottom: var(--space-sm);
    color: var(--color-text);
}

.c-mega-menu__menu {
    list-style: none;
    padding: 0;
    margin: 0;
}

.c-mega-menu__menu li {
    margin-bottom: var(--space-xs);
}

.c-mega-menu__menu a {
    color: var(--color-neutral-900);
    text-decoration: none;
    transition: color var(--transition);
}

.c-mega-menu__menu a:hover {
    color: var(--color-brand);
}

.c-mega-menu__menu .sub-menu {
    list-style: none;
    padding: 0;
    margin: var(--space-sm) 0 var(--space-sm) var(--space-sm);
}

.c-mega-menu__menu .sub-menu a {
    font-size: var(--text-sm);
}

.c-mega-menu__text {
    color: var(--color-text);
}

.c-mega-menu__image {
    max-width: 100%;
    height: auto;
    border-radius: var(--radius);
}

.c-mega-menu__contact-info p {
    display: flex;
    align-items: flex-start;
    gap: var(--space-xs);
    margin-bottom: var(--space-xs);
}

@media (max-width: 959px) {
    .c-mega-menu {
        display: none !important;
    }
}

/* =================================================================
   FOOTER
   ================================================================= */

.site-footer {
    position: relative;
    z-index: 2; /* sits above the global CTA's protruding image so it's cut off at the CTA edge */
    background: var(--color-primary-50);
    color: var(--color-neutral-700);
    border-top: 1px solid var(--color-neutral-100);
    padding: var(--space-3xl) 0 var(--space-xl);
}

.site-footer__inner {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    justify-content: space-between;
    gap: var(--space-2xl) var(--space-xl);
}

.site-footer__brand {
    flex: 0 1 auto;
    max-width: 340px;
}

.site-footer__logo { display: inline-block; }
.site-footer__logo img { height: 110px; width: auto; margin-bottom: var(--space-md); }

.site-footer__description {
    margin: 0;
    max-width: 320px;
    color: var(--color-neutral-700);
    font-size: var(--text-sm);
    line-height: 1.6;
}

/* Menu columns (Services, Company, unwrap so every column is a direct
   sibling of the brand/connect columns, giving one even gap across the row. */
.site-footer__columns { display: contents; }

.site-footer__col {
    flex: 0 1 auto !important;
    min-width: 0;
    max-width: none !important;
}

.site-footer__col-title {
    margin: 0 0 var(--space-md);
    font-family: var(--font-heading);
    font-size: var(--text-base);
    font-weight: 800;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: var(--color-primary-900);
}

.site-footer__col-title a {
    color: inherit;
    text-decoration: none;
    transition: color var(--transition);
}

.site-footer__col-title a:hover,
.site-footer__col-title a:focus { color: var(--color-secondary-500); }

.site-footer__menu {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: var(--space-sm);
}

.site-footer__menu li { margin: 0; }

.site-footer__menu a {
    color: var(--color-neutral-900);
    text-decoration: none;
    font-size: var(--text-sm);
    transition: color var(--transition);
    line-height:1.5!important;
    display:inline-block;
}

.site-footer__menu a:hover { color: var(--color-secondary-500); }

/* Heading-style links: render menu items like the column heading */
.site-footer__col--headings .site-footer__menu { gap: var(--space-md); }

.site-footer__col--headings .site-footer__menu a {
    font-family: var(--font-heading);
    font-size: var(--text-base);
    font-weight: 800;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: var(--color-primary-900);
    /* Match the heading's line-height so the heading + links are evenly spaced */
    line-height: var(--leading-tight) !important;
}

.site-footer__col--headings .site-footer__menu a:hover,
.site-footer__col--headings .site-footer__menu a:focus { color: var(--color-secondary-500); }

.site-footer__menu .sub-menu {
    list-style: none;
    padding: 0;
    margin: var(--space-sm) 0 0 var(--space-sm);
    display: flex;
    flex-direction: column;
    gap: var(--space-sm);
}

.site-footer__menu .sub-menu a { font-size: var(--text-sm); }

/* Contact-info column (light) */
.site-footer__contact-info p {
    display: flex;
    align-items: flex-start;
    gap: var(--space-xs);
    margin: 0 0 var(--space-sm);
    color: var(--color-neutral-900);
    font-size: var(--text-sm);
}

.site-footer__contact-info a {
    color: var(--color-neutral-900);
    text-decoration: none;
    transition: color var(--transition);
}

.site-footer__contact-info a:hover { color: var(--color-secondary-500); }

.site-footer__icon {
    width: 18px;
    height: 18px;
    flex-shrink: 0;
    margin-top: 2px;
    color: var(--color-primary-500);
}

.site-footer__text { color: var(--color-neutral-700); font-size: var(--text-sm); }

.site-footer__image { max-width: 100%; height: auto; }

/* Connect column: social + phone */
.site-footer__connect {
    flex: 0 1 auto;
    max-width: 340px;
}

.site-footer__social {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-sm);
    margin-bottom: var(--space-lg);
}

.site-footer__social a {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background: var(--color-secondary-500);
    color: #fff;
    transition: background var(--transition), transform var(--transition);
}

.site-footer__social a:hover {
    background: var(--color-secondary-600);
    transform: translateY(-2px);
}

.site-footer__social a span { display: flex; align-items: center; justify-content: center; }
.site-footer__social svg { width: 18px; height: 18px; }
.site-footer__social-icon { width: 18px; height: 18px; object-fit: contain; }

.site-footer__phone {
    display: inline-flex;
    align-items: center;
    gap: var(--space-xs);
    font-family: var(--font-heading);
    font-size: var(--text-base);
    font-weight: 800;
    letter-spacing: 0.02em;
    text-transform: uppercase;
    color: var(--color-secondary-400);
    text-decoration: none;
    transition: color var(--transition);
}

.site-footer__phone:hover { color: var(--color-secondary-500); }
.site-footer__phone-icon { display: inline-flex; align-items: center; }
.site-footer__phone svg { width: 16px; height: 16px; display: block; }

@media (max-width: 810px) {
    .site-footer__connect,
    .site-footer__brand {
        flex-basis:100%;
    }

    .site-footer__connect,
    .site-footer__description,
    .site-footer__brand {
        max-width: 100%;        
    }

    .site-footer__inner {
        flex-wrap:wrap;
    }
}

@media (max-width: 768px) {
    /* All columns are direct flex children of __inner (wrapper is display:contents),
       so stacking the inner flex column stacks every footer column. */
    .site-footer__inner { 
        flex-direction: column; 
        justify-content: flex-start; 
        gap: 0; 
    }
    .site-footer__brand,
    .site-footer__connect,
    .site-footer__col { max-width: 100% !important; }
    /* Columns are stacked now, so a titleless second list no longer needs its
       spacer heading to align beside a titled column. */
    .site-footer__col > .site-footer__col-title[aria-hidden="true"] { display: none; }

    .site-footer__brand {
        margin-bottom:var(--space-xl);
    }

    /* Mobile stack order: brand, connect, then the menu columns.
       The columns wrapper is display:contents, so each .site-footer__col is a
       direct flex child of __inner and honours `order` alongside brand/connect. */
    .site-footer__brand   { order: 1; }
    .site-footer__connect { order: 2; }
    .site-footer__col     { order: 3; }

    .site-footer__col:last-child {
        margin-top:var(--space-xl);
    }

    /* Connect now sits above the columns, so its separator moves to the bottom. */
    .site-footer__connect {
        margin-bottom:var(--space-xl);
    }

    .site-footer__menu {
        gap:var(--space-sm);
    }

    .site-footer__col:first-child {
        margin-bottom:var(--space-sm);
    }
}

.site-footer__bottom {
    margin-top: var(--space-2xl);
    padding-top: var(--space-lg);
    color: var(--color-neutral-500);
    font-size: var(--text-xs);
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    align-items: center;
    gap: var(--space-sm) var(--space-lg);
}

.site-footer__bottom-left {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--space-xs) var(--space-lg);
}

.site-footer__copyright { margin: 0; }

.site-footer__bottom-nav { display: flex; align-items: center; }

.site-footer__bottom-menu {
    display: flex;
    gap: var(--space-lg);
    list-style: none;
    margin: 0;
    padding: 0;
}

.site-footer__bottom-menu a {
    color: var(--color-neutral-500);
    text-decoration: none;
    transition: color var(--transition);
}

.site-footer__bottom-menu a:hover,
.site-footer__bottom-menu a:focus { color: var(--color-secondary-500); }

.site-footer__credits { margin: 0; }

.site-footer__credits a {
    color: var(--color-neutral-900);
    text-decoration: none;
    transition: color var(--transition);
}

.site-footer__credits a:hover,
.site-footer__credits a:focus { color: var(--color-secondary-500); }


/* =================================================================
   COMPONENTS
   ================================================================= */

/* Adjacent same-background components: collapse top padding */
[class*="--bg-white"] + [class*="--bg-white"],
[class*="--bg-light"] + [class*="--bg-light"],
[class*="--bg-dark"] + [class*="--bg-dark"],
[class*="--bg-brand"] + [class*="--bg-brand"],
[class*="--bg-magenta"] + [class*="--bg-magenta"],
[class*="--bg-white"] + .c-image-banner,
.c-image-banner + [class*="--bg-white"]{
    padding-top: 0;
}

/* Brand Magenta background pink section, behaves like a dark bg (white content) */
[class*="--bg-magenta"] { background: var(--color-secondary-500); color: #fff; }
[class*="--bg-magenta"] h1,
[class*="--bg-magenta"] h2,
[class*="--bg-magenta"] h3,
[class*="--bg-magenta"] h4 { color: #fff; }
[class*="--bg-magenta"] .eyebrow,
[class*="--bg-magenta"] .subhead { color: rgba(255, 255, 255, 0.85); }
[class*="--bg-magenta"] a:not(.btn):not(.btn-phone):not(.link-arrow) { color: #fff; }

/* ----------------------- UNDER CONSTRUCTION ----------------------- */

.c-under-construction {
    padding: var(--space-3xl) 0;
    min-height: 50vh;
    display: flex;
    align-items: center;
    background: var(--color-bg-light);
}
.c-under-construction h1 {
    font-size: var(--text-3xl);
    margin-bottom: var(--space-md);
    color: var(--color-neutral-700);
}
.c-under-construction p {
    color: var(--color-neutral-500);
    font-size: var(--text-lg);
}

/* ----------------------- HERO ----------------------- */

.c-hero {
    position: relative;
    display: flex;
    align-items: center;
    padding: 8.5rem 0;
    background: var(--color-bg-dark) center/cover no-repeat;
    color: #fff;
    overflow: hidden;
}
.c-hero--h-full { min-height: 100vh; }
.c-hero--h-large {/* min-height: 80vh; */}
.c-hero--h-medium { min-height: 60vh; }
.c-hero--h-small { min-height: 40vh; }

/* Standard hero overlay transparent, per Figma.
   Applies to all heroes (homepage refinement handled separately). */
.c-hero__overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(90deg, rgba(42, 43, 120, 0.9) 0%, rgba(42, 43, 120, 0.55) 45%, rgba(42, 43, 120, 0) 100%);
}
.c-hero__inner {
    position: relative;
    z-index: 1;
}
.c-hero__content { max-width: 865px; }

.c-hero--center { text-align: center; }
.c-hero--center .c-hero__inner { display: flex; flex-direction: column; align-items: center; }
.c-hero--center .c-hero__content { margin: 0 auto; }

/* Breadcrumbs in hero uppercase, small, white, per Figma */
.c-hero__breadcrumbs {
    margin-bottom: var(--space-sm);
    font-family: var(--font-heading);
    font-size: var(--text-xs);
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
}
.c-hero__breadcrumbs,
.c-hero__breadcrumbs a { color: #fff; text-decoration: none; }
.c-hero__breadcrumbs a:hover { color: var(--color-secondary-200); }
.c-hero__breadcrumbs .separator { opacity: 0.6; margin: 0 0.4em; }

/* H1 eyebrow matches .c-hero__headline-small and nudges tight against the H1 */
.c-hero__eyebrow {
    margin-bottom: var(--space-sm);
    margin-top: var(--space-lg);
    font-family: var(--font-heading);
    font-size: var(--text-base);
    font-weight: 800;
    line-height: 1.5;
    color: var(--color-secondary-200);
    text-shadow: 2px 2px 0 #000;
}
.c-hero__headline {
    font-family: var(--font-display);
    font-weight: 700;
    font-size: clamp(2.5rem, 1.5rem + 4vw, 4.375rem);
    line-height: 1.1;
    margin-bottom: var(--space-md);
    text-shadow: 4px 4px 0 #000;
}
.c-hero__headline-small {
    margin-top: calc(-1 * var(--space-xs));
    margin-bottom: var(--space-xl);
    font-family: var(--font-heading);
    font-size: var(--text-base);
    font-weight: 800;
    line-height: 1.5;
    color: var(--color-secondary-200);
    text-shadow: 2px 2px 0 #000;
}
.c-hero__subhead { font-family: var(--font-heading); font-weight: 900; font-size: var(--text-xl); line-height: 1.5; margin-bottom: var(--space-xl); }
.c-hero__buttons { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-lg); }
.c-hero--center .c-hero__buttons { justify-content: center; }

/* Split layout */
.c-hero--split { background: var(--color-bg-dark); }
.c-hero--split .c-hero__inner {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--space-2xl);
    align-items: center;
    max-width: none;
}
.c-hero--split .c-hero__content { max-width: none; }
.c-hero--split .c-hero__media { order: 1; }
.c-hero--split-left .c-hero__media { order: -1; }
.c-hero--split .c-hero__image {
    width: 100%;
    height: auto;
    border-radius: var(--radius);
}

@media (max-width: 1081px) {
    .c-hero--split .c-hero__inner {
        grid-template-columns: 1fr;
        text-align: center;
    }
    .c-hero--split .c-hero__media { order: -1; }
    .c-hero--split .c-hero__buttons { justify-content: center; }
}

/* Minimal layout */
.c-hero--minimal {
    background: #fff;
    color: var(--color-neutral-900);
    min-height: auto;
    padding: var(--space-xl) 0;
    border-bottom: 1px solid var(--color-neutral-200);
}
.c-hero--minimal .c-hero__headline {
    font-size: var(--text-3xl);
    margin-bottom: 0;
}

/* Parallax */
.c-hero__parallax {
    position: absolute;
    inset: -20%;
    background: center/cover no-repeat;
    will-change: transform;
}
.c-hero--parallax {
    background: transparent;
}

@media (max-width: 768px) {
    .c-hero { padding: var(--space-2xl) 0; }
    .c-hero__headline { font-size: var(--text-5xl); }
    .c-hero--minimal .c-hero__headline { font-size: var(--text-2xl); }
    .c-hero__overlay {
        background: linear-gradient(90deg, rgba(42, 43, 120, 0.9) 0%, rgba(42, 43, 120, 0.85) 45%, rgba(42, 43, 120, 0.4) 100%);
    }
}

.c-hero__video {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* ===== 24/7 emergency graphic (van + speech bubble) ===== */
.c-hero--has-promo { min-height: 640px; }
.c-hero--has-promo .c-hero__content { max-width: 55%; }

.c-hero__promo {
    position: absolute;
    right: 0;
    bottom: 0;
    z-index: 1;
    width: clamp(320px, 44vw, 600px);
    aspect-ratio: 587 / 546;
    pointer-events: none;
}

/* Van slides in from the right */
.c-hero__promo-van {
    position: absolute;
    left: 0;
    bottom: 0;
    width: 100%;
    height: auto;
    animation: hero-van-in 0.9s cubic-bezier(0.16, 1, 0.3, 1) both;
}

/* Speech bubble fades in + slides up once the van has settled */
.c-hero__promo-bubble {
    position: absolute;
    top: 0;
    left: 5.1%;
    width: 66.8%;
    aspect-ratio: 381.51 / 359.33; /* the bubble SVG's viewBox */
    container-type: inline-size;
    z-index: 2; /* bubble + its text sit above the van */
    opacity: 0;
    animation: hero-bubble-in 0.6s ease-out 0.85s both;
}

/* Inline SVG fills the container box (whose aspect matches the viewBox).
   width/height must be explicit to beat the global `svg { width:24px }` icon rule. */
.c-hero__promo-bubble-img {
    display: block;
    width: 100%;
    height: 100%;
    overflow: visible;
}

.c-hero__promo-text {
    position: absolute;
    top: 30%;
    left: 27%;
    right: 8.7%;
    bottom: 26%;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
}

.c-hero__promo-247,
.c-hero__promo-emergency {
    font-family: var(--font-pixel);
    color: #fff;
    text-transform: uppercase;
    margin: 0;
}
.c-hero__promo-247 { font-size: 15.3cqw; line-height: 1; white-space: nowrap; }
.c-hero__promo-emergency { font-size: 6.1cqw; line-height: 1.35; margin-top: 1.2cqw; }

/* Matches .c-hero__headline-small exactly (mixed case) */
.c-hero__promo-hours {
    margin-top: 2cqw;
    font-family: var(--font-heading);
    font-size: var(--text-base);
    font-weight: 800;
    line-height: 1.5;
    color: var(--color-secondary-200);
    text-shadow: 2px 2px 0 #000;
}

@keyframes hero-van-in {
    from { transform: translateX(105%); opacity: 0; }
    to   { transform: translateX(0);    opacity: 1; }
}
@keyframes hero-bubble-in {
    from { opacity: 0; transform: translateY(24px); }
    to   { opacity: 1; transform: translateY(0); }
}

@media (prefers-reduced-motion: reduce) {
    .c-hero__promo-van,
    .c-hero__promo-bubble { animation: none; opacity: 1; transform: none; }
}

/* Tablet / mobile: the graphic drops beneath all other hero content */
@media (max-width: 1080px) {
    .c-hero--has-promo { flex-direction: column; min-height: 0; }
    .c-hero--has-promo .c-hero__content { max-width: none; }
    .c-hero__promo {
        position: static;
        align-self: center;
        width: min(100%, 460px);
        margin: var(--space-2xl) auto 0;
    }
    /* On a centered element a horizontal slide reads oddly fade both up instead */
    .c-hero__promo-van { animation-name: hero-bubble-in; animation-delay: 0s; }
}

/* Phones (<=767) only: shrink the 24/7 badge to 75%. min(75%, 345px) is exactly
   0.75x the <=1080 min(100%, 460px) at every width. The 24/7 and "Emergency AC
   Repair" lines are sized in cqw (relative to the bubble), so they scale down
   with the smaller bubble on their own; only the fixed-size hours line needs a
   matching nudge. */
@media (max-width: 767px) {
    .c-hero__promo { width: min(75%, 345px); }
    .c-hero__promo-hours { font-size: calc(var(--text-base) * 0.75); }
}

/* Emergency HVAC Service page (ID 113) ONLY: at <=1080 the 24/7 badge moves
   from beneath .c-hero__inner to just after p.c-hero__headline-small. The badge
   is a sibling of __inner, so flatten __inner/__content with display:contents to
   pull the badge and the text into one flex column on .c-hero, then reorder.
   Everything is scoped to this page + breakpoint, so desktop and every other
   hero are untouched. */
@media (max-width: 1080px) {
    body.page-id-113 .c-hero--has-promo .c-hero__inner,
    body.page-id-113 .c-hero--has-promo .c-hero__content { display: contents; }

    /* __inner carried the .container gutter and the z-index lift over the
       overlay; both vanish once it is flattened, so restore them on the section
       and on the now-direct flex children. */
    body.page-id-113 .c-hero--has-promo {
        align-items: stretch;
        padding-inline: var(--gutter);
    }
    body.page-id-113 .c-hero__breadcrumbs,
    body.page-id-113 .c-hero__eyebrow,
    body.page-id-113 .c-hero__headline,
    body.page-id-113 .c-hero__headline-small,
    body.page-id-113 .c-hero__subhead,
    body.page-id-113 .c-hero__buttons,
    body.page-id-113 .c-hero__promo { position: relative; z-index: 1; }

    /* Reorder the flattened flex items: badge (5) sits right after the small
       headline (4), pushing the subhead and buttons below it. */
    body.page-id-113 .c-hero__breadcrumbs   { order: 1; }
    body.page-id-113 .c-hero__eyebrow       { order: 2; }
    body.page-id-113 .c-hero__headline      { order: 3; }
    body.page-id-113 .c-hero__headline-small{ order: 4; }
    body.page-id-113 .c-hero__promo         { order: 5; margin: 0 auto var(--space-xl); }
    body.page-id-113 .c-hero__subhead       { order: 6; }
    body.page-id-113 .c-hero__buttons       { order: 7; }
}

/* =================================================================
   HOME HERO
   ================================================================= */
.c-home-hero {
    position: relative;
    overflow: hidden;
    background: #fff;
    text-align: center;
    padding: 0 0 var(--space-3xl);
}

/* Perspective grid floor the source PNG shown as-is, faded out at the bottom.
   Spans the full window width. */
.c-home-hero__grid {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 7.5%;
    width: 100%;
    aspect-ratio: 1720 / 620;
    background-image: var(--home-hero-grid);
    background-size: cover;
    background-position: center bottom;
    background-repeat: no-repeat;
    -webkit-mask-image: linear-gradient(to bottom, #000 62%, transparent 100%);
    mask-image: linear-gradient(to bottom, #000 62%, transparent 100%);
    z-index: 0;
    pointer-events: none;
}

.c-home-hero__inner {
    position: relative;
    z-index: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
}

/* Logo + triangles backdrop */
.c-home-hero__brand {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: clamp(300px, 32vw, 440px);
}

.c-home-hero__triangles {
    display: block;
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    width: clamp(320px, 36vw, 500px);
    z-index: 0;
    pointer-events: none;
}
.c-home-hero__triangles img { display: block; width: 100%; height: auto; max-width: none; }

.c-home-hero__logo-link { position: relative; z-index: 1; display: block; line-height: 0; }
.c-home-hero__logo { height: 186px; width: auto; max-width: 100%; }

/* H1 Avenir Black, navy, centered (per Figma) */
.c-home-hero__headline {
    max-width: min(600px, 100%);
    margin: 0 auto;
    font-family: var(--font-heading);
    font-weight: 900;
    font-size: var(--text-5xl);
    line-height: 1.1;
    color: var(--color-primary-700);
    text-shadow: none;
}

.c-home-hero__buttons {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: var(--space-lg);
    margin-top: var(--space-xl);
}

@media (max-width: 768px) {
    .c-home-hero__logo { height: 130px; }
    .c-home-hero__brand { min-height: 280px; margin-bottom: var(--space-md); }
}

/* Breadcrumbs */
.breadcrumbs { margin-bottom: var(--space-sm); }
.breadcrumbs__list {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--space-xs);
    list-style: none;
    margin: 0;
    padding: 0;
    font-size: var(--text-sm);
}
.breadcrumbs__item { display: flex; align-items: center; gap: var(--space-xs); }
.breadcrumbs__link { color: var(--color-neutral-500); text-decoration: none; }
.breadcrumbs__link:hover { color: var(--color-brand); }
.breadcrumbs__sep { color: var(--color-neutral-300); }
.breadcrumbs__current { color: var(--color-neutral-700); }


/* ----------------------- CONTENT + MEDIA ----------------------- */

.c-content-media { padding: 10rem 0; }
.c-content-media__inner { display: grid; gap: var(--space-3xl); align-items: center; }

@media (min-width: 1082px) {
    /* Media capped at 640px; content takes the remaining space */
    .c-content-media__inner { grid-template-columns: 1fr minmax(0, 640px); }
    .c-content-media--left .c-content-media__inner { grid-template-columns: minmax(0, 640px) 1fr; }
    .c-content-media--left .c-content-media__media { order: -1; }
}
@media (max-width: 1081px) {
    /* Stacked: media (image/video) sits on top */
    .c-content-media__media { order: -1; }

    .c-content-media__inner {
        gap:var(--space-xl)
    }
}

.c-content-media__buttons { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-lg); margin-top: var(--space-lg); }
.c-content-media__image { border-radius: var(--radius); }
.c-content-media__video { position: relative; padding-bottom: 56.25%; border-radius: var(--radius); overflow: hidden; }
.c-content-media__video iframe { position: absolute; inset: 0; width: 100%; height: 100%; }

/* Decorations anchored to the media: #1 top-right, #2 bottom-left (both poke off the corner) */
.c-content-media__media { position: relative; }
.c-content-media__media > .c-content-media__image,
.c-content-media__media > .c-content-media__video { position: relative; z-index: 1; }
.c-content-media__media .c-decoration { width: 6.875rem; max-width: 30%; top: auto; right: auto; bottom: auto; left: auto; }
.c-content-media__media .c-decoration--1 {top: -2.675rem;right: calc(-1.5rem + 80px);}
.c-content-media__media .c-decoration--2 { bottom: -2.675rem; left: calc(-1.5rem + 80px); }
/* Bring back-stacked decorations in front of the media (content-media only) */
.c-content-media .c-decoration--back { z-index: 2; }
@media (max-width: 767px) {
    .c-content-media__media .c-decoration { width: 4rem; }
    .c-content-media__media .c-decoration--1 { top: -1rem; right: -1rem; }
    .c-content-media__media .c-decoration--2 { bottom: -1rem; left: -1rem; }
}

/* "Wiggle 1 (left)" decoration anchored off the left edge of the window
   (rendered at the section level, so it clears the media). */
.c-content-media { overflow-x: clip; }
.c-decoration--wiggle-1-left {
    top: var(--space-2xl);
    right: auto;
    bottom: auto;
    left: -1.5rem;
    width: 9rem;
    max-width: none;
}

@media (max-width:1820px) and (min-width:1600px) {
    .c-decoration--wiggle-1-left {
        left: -3rem;
        width: 6rem;
    }    
}

@media (max-width:1599px) and (min-width:1082px) {
    .c-decoration--wiggle-1-left {
        left: -4rem;
    }    
}


@media (max-width: 767px) {
    .c-decoration--wiggle-1-left { width: 6rem; left: -1rem; }
}

/* =========================================================================
   CONTENT + TESTIMONIAL
   Full content block side-by-side with a single review-wall-styled card.
   Layout follows Content + Media; card reuses the neobrutalist testimonial look.
   ========================================================================= */
.c-content-testimonial { padding: 10rem 0; position: relative; overflow-x: clip; }
.c-content-testimonial__inner { display: grid; gap: var(--space-3xl); align-items: center; }

@media (min-width: 1082px) {
    /* Card column capped; content takes the remaining space */
    .c-content-testimonial__inner { grid-template-columns: 1fr minmax(0, 480px); }
    .c-content-testimonial--left .c-content-testimonial__inner { grid-template-columns: minmax(0, 480px) 1fr; }
    .c-content-testimonial--left .c-content-testimonial__media { order: -1; }
}
@media (max-width: 1081px) {
    /* Stacked: content first, card below (natural reading order) */
    .c-content-testimonial__inner { gap: var(--space-xl); }
}

.c-content-testimonial__buttons { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-lg); margin-top: var(--space-lg); }

/* Testimonial card review-wall styling, scoped to this component */
.c-content-testimonial__media { position: relative; }
.c-content-testimonial__card {
    position: relative;
    z-index: 1;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: var(--space-md);
    margin: 0;
    padding: var(--space-xl);
    background: var(--color-primary-700);
    border: 2px solid #000;
    border-radius: 0;
    color: #fff;
}
.c-content-testimonial__stars { width: 160px; max-width: 100%; height: auto; display: block; margin-bottom: var(--space-xs); }
.c-content-testimonial__quote {
    width: 100%;
    margin: 0;
    font-family: var(--font-display);
    font-style: italic;
    font-size: clamp(1.15rem, 1.55vw, 1.5rem);
    line-height: 1.5;
    color: #fff;
}
.c-content-testimonial__quote p { margin: 0; }
.c-content-testimonial__name {
    width: 100%;
    font-family: var(--font-heading);
    font-weight: 900;
    font-size: 1rem;
    font-style: normal;
    color: var(--color-primary-100);
}
.c-content-testimonial__name span {
    display: block;
    margin-top: 0.15em;
    font-weight: 600;
    font-size: var(--text-sm);
    color: rgba(255, 255, 255, 0.75);
}

/* Section backgrounds (card stays navy on all of them) */
.c-content-testimonial--bg-light { background: var(--color-bg-light); }
.c-content-testimonial--bg-dark { background: var(--color-bg-dark); color: #fff; }
.c-content-testimonial--bg-magenta { background: var(--color-secondary-500); color: #fff; }
.c-content-testimonial__overlay { position: absolute; inset: 0; z-index: 0; }
.c-content-testimonial--bg-image .c-content-testimonial__inner { position: relative; z-index: 1; }
.c-content-testimonial--bg-image { color: #fff; }

/* Optional decoration accents anchored to the card (mirrors Content + Media) */
.c-content-testimonial__media .c-decoration { width: 6.875rem; max-width: 30%; top: auto; right: auto; bottom: auto; left: auto; }
.c-content-testimonial__media .c-decoration--1 { top: -2.675rem; right: -1.5rem; }
.c-content-testimonial__media .c-decoration--2 { bottom: -2.675rem; left: -1.5rem; }
@media (max-width: 767px) {
    .c-content-testimonial__media .c-decoration { width: 4rem; }
    .c-content-testimonial__media .c-decoration--1 { top: -1rem; right: -1rem; }
    .c-content-testimonial__media .c-decoration--2 { bottom: -1rem; left: -1rem; }
}

.c-content-media--bg-white { background: #fff; }
.c-content-media--bg-light { background: var(--color-bg-light); }
.c-content-media--bg-dark { background: var(--color-bg-dark); color: #fff; }
.c-content-media--bg-dark .eyebrow { color: var(--color-brand-light); }


/* =================================================================
   LARGE OWNER QUOTE
   ================================================================= */
.c-owner-quote { padding: 10rem 0; overflow-x: clip; }

.c-home-hero + .c-owner-quote {
    padding-top:0; 
}

.c-owner-quote--bg-white { background: #fff; }
.c-owner-quote--bg-light { background: var(--color-bg-light); }

.c-owner-quote__inner {
    display: grid;
    gap: var(--space-2xl);
    align-items: center;
}

/* --- Content (left) --- */
.c-owner-quote__content {
    position: relative;
    z-index: 2; /* quote overlaps the media */
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: var(--space-lg);
}

.c-owner-quote__headline {
    margin: 0;
    font-family: var(--font-heading);
    font-weight: 900;
    font-size: var(--text-4xl);
    line-height: 1.2;
    letter-spacing: -0.02em;
    color: var(--color-neutral-900);
    text-shadow: none;
}

.c-owner-quote__intro {
    margin: 0;
    font-size: var(--text-xl);
    line-height: 1.5;
    color: var(--color-text);
}
.c-owner-quote__intro p { margin: 0; }
.c-owner-quote__intro p + p { margin-top: var(--space-md); }

.c-owner-quote__quote { position: relative; z-index: 3; margin: var(--space-xs) 0; }

.c-owner-quote__quote-text {
    margin: 0;
    font-family: var(--font-display);
    font-size: clamp(1.375rem, 1rem + 1.1vw, 1.75rem);
    line-height: 1.4;
    /* Quote body uses the ccsignlanguage italic face (weight 400) */
    font-style: italic;
    font-weight: 400;
}
/* WYSIWYG wraps content in block elements; reset their spacing */
.c-owner-quote__quote-text > * { margin: 0; }
.c-owner-quote__quote-text > * + * { margin-top: 0.5em; }
/* Clip the gradient onto the text-bearing elements (paragraphs and list items).
   Applied here (not on the direct children) so nested list-item text still fills. */
.c-owner-quote__quote-text p,
.c-owner-quote__quote-text li {
    background: linear-gradient(138deg, var(--color-primary-400) 0%, var(--color-secondary-400) 100%);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    color: transparent;
}
.c-owner-quote__quote-text li {
    font-size:.875em;    
    margin-left:1.5rem;
    margin-bottom:.5rem;
}
/* Curly quotation marks hug the first/last block regardless of WYSIWYG markup */
.c-owner-quote__quote-text > :first-child::before { content: "\201C"; }
.c-owner-quote__quote-text > :last-child::after { content: "\201D"; }

.c-owner-quote__cite {
    display: flex;
    align-items: center;
    gap: var(--space-sm);
    margin-top: var(--space-lg);
    font-family: var(--font-heading);
    font-weight: 800;
    font-style: normal;
    font-size: var(--text-base);
    color: var(--color-primary-700);
}
.c-owner-quote__cite-rule { width: 16px; height: 2px; background: var(--color-primary-700); flex-shrink: 0; }

.c-owner-quote__phone { margin-top: var(--space-sm); }
.c-owner-quote__phone .btn-phone__number { font-size: var(--text-xl); color: var(--color-primary-500); }

/* --- Media (right) --- */
.c-owner-quote__media { position: relative; z-index: 1; }

.c-owner-quote__paper {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    aspect-ratio: 640 / 492;
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    border: 1px solid rgba(255, 255, 255, 0.5);
    border-radius: 10px;
    z-index: 0;
}

.c-owner-quote__wiggle {
    position: absolute;
    z-index: 1;
    display: block;
    height: auto;
    max-width: none;
}
/* Sizes/positions mirror the Figma (relative to the 639px-wide media). */
.c-owner-quote__wiggle--1 { width: 17.2%; top: 4%; right: 10%; }
.c-owner-quote__wiggle--2 { width: 16.4%; bottom: -9%; left: 7%; }

.c-owner-quote__photo { position: relative; z-index: 2; display: block; width: 100%; }
.c-owner-quote__photo img { display: block; width: 100%; height: auto; }

@media (min-width: 1082px) {
    .c-owner-quote__inner {
        grid-template-columns: 1fr minmax(0, 639px);
        gap: var(--space-3xl);
    }
    /* Quote extends past the content column, overlapping the media */
    .c-owner-quote__quote { width: calc(100% + 190px); max-width: none; }
}

@media (max-width: 1081px) {
    /* Stacked: photo sits on top */
    .c-owner-quote__media { order: -1; max-width: 520px; margin: 0 auto; width: 100%; }
}


/* ----------------------- CARDS ----------------------- */

.c-cards { padding: var(--space-3xl) 0; }
.c-cards__header { text-align: center; max-width: 700px; margin: 0 auto var(--space-2xl); }
.c-cards__grid { display: grid; gap: var(--space-lg); }

@media (min-width: 769px) {
    .c-cards--cols-2 .c-cards__grid,
    .c-cards--cols-3 .c-cards__grid,
    .c-cards--cols-4 .c-cards__grid { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 1024px) {
    .c-cards--cols-3 .c-cards__grid { grid-template-columns: repeat(3, 1fr); }
    .c-cards--cols-4 .c-cards__grid { grid-template-columns: repeat(4, 1fr); }
}

.c-card {
    display: flex;
    flex-direction: column;
    background: #fff;
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    text-decoration: none;
    color: inherit;
    overflow: hidden;
    transition: transform var(--transition), box-shadow var(--transition);
}
a.c-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-lg); }

.c-card__image { margin: 0; }
.c-card__image img { aspect-ratio: 4/3; object-fit: cover; width: 100%; display: block; }
.c-card__content { padding: var(--space-lg); flex: 1; display: flex; flex-direction: column; }
.c-card__title { font-size: var(--text-xl); margin-bottom: var(--space-sm); }
.c-card__desc { color: var(--color-neutral-900); flex: 1; }
.c-card__link { margin-top: var(--space-md); font-weight: 600; color: var(--color-brand); display: inline-flex; align-items: center; gap: var(--space-xs); }
.c-card__link svg { width: 1em; height: 1em; transition: transform var(--transition); }
a.c-card:hover .c-card__link svg { transform: translateX(4px); }

/* Service-area cards: style the card title like a Service Areas map pin 
   the 8-bit pin icon + pixel font (uppercase), echoing .c-service-areas__pin. */
.service-area-cards .c-card__title {
    display: flex;
    align-items: center;
    gap: var(--space-sm);
    font-family: var(--font-pixel);
    font-size: 0.9rem;
    line-height: 1.5;
    text-transform: uppercase;
    color: var(--color-neutral-900);
    perspective: 500px; /* 3D depth for the pin spin, mirroring .c-service-areas__pin */
}
.service-area-cards .c-card__title::before {
    content: "";
    flex: 0 0 auto;
    width: 24px;
    aspect-ratio: 44 / 64;
    background: url('/wp-content/uploads/8-bit-map-pin.svg') center / contain no-repeat;
    /* Mirror the map-pin spin from .c-service-areas__pin-icon */
    transform-style: preserve-3d;
    transition: transform 0.6s ease;
}
.service-area-cards a.c-card:hover .c-card__title { color: var(--color-secondary-500); }
/* Spin the pin on card hover, echoing the graphic's pins */
.service-area-cards a.c-card:hover .c-card__title::before { transform: rotateY(360deg); }

/* Card Style: Horizontal */
.c-cards--style-horizontal .c-card { flex-direction: row; }
.c-cards--style-horizontal .c-card__image { flex: 0 0 40%; max-width: 40%; }
.c-cards--style-horizontal .c-card__image img { aspect-ratio: 1/1; height: 100%; }
.c-cards--style-horizontal .c-card__content { justify-content: center; }
@media (max-width: 768px) {
    .c-cards--style-horizontal .c-card { flex-direction: column; }
    .c-cards--style-horizontal .c-card__image { flex: none; max-width: 100%; }
    .c-cards--style-horizontal .c-card__image img { aspect-ratio: 16/9; height: auto; }
}

/* Card Style: Overlay */
.c-cards--style-overlay .c-card { position: relative; min-height: 280px; }
.c-cards--style-overlay .c-card__image { position: absolute; inset: 0; }
.c-cards--style-overlay .c-card__image img { aspect-ratio: auto; height: 100%; }
.c-cards--style-overlay .c-card__image::after {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(to top, rgba(0,0,0,0.8) 0%, rgba(0,0,0,0.2) 60%, transparent 100%);
}
.c-cards--style-overlay .c-card__content {
    position: relative;
    z-index: 1;
    justify-content: flex-end;
    color: #fff;
}
.c-cards--style-overlay .c-card__desc { color: var(--color-neutral-200); }
.c-cards--style-overlay .c-card__link { color: #fff; }
a.c-cards--style-overlay .c-card:hover .c-card__image img { transform: scale(1.05); }
.c-cards--style-overlay .c-card__image img { transition: transform var(--transition); }

/* Card Style: Minimal */
.c-cards--style-minimal .c-card {
    flex-direction: row;
    box-shadow: none;
    border: 1px solid var(--color-neutral-200);
}
.c-cards--style-minimal .c-card__image {
    order: 2;
    flex: 0 0 auto;
    width: 80px;
    height: 80px;
    margin: var(--space-lg);
    margin-left: 0;
    border-radius: 50%;
    overflow: hidden;
}
.c-cards--style-minimal .c-card__image img {
    aspect-ratio: 1/1;
    height: 100%;
    width: 100%;
}
.c-cards--style-minimal .c-card__content {
    padding: var(--space-xl);
    flex: 1;
}
a.c-cards--style-minimal .c-card:hover {
    transform: none;
    box-shadow: none;
    border-color: var(--color-brand);
}

.c-cards--bg-white { background: none; }
.c-cards--bg-white .c-card{
    background:var(--color-neutral-50)
}
.c-cards--bg-light { background: var(--color-bg-light); }
.c-cards--bg-dark { background: var(--color-bg-dark); color: #fff; }
.c-cards--bg-dark .c-card { background: var(--color-neutral-800); }
.c-cards--bg-dark .c-card__desc { color: var(--color-neutral-300); }
.c-cards--bg-dark.c-cards--style-minimal .c-card { border-color: var(--color-neutral-700); }
.c-cards--bg-dark.c-cards--style-minimal a.c-card:hover { border-color: var(--color-brand-light); }


/* =================================================================
   SERVICES CARDS
   ================================================================= */
.c-scards { position: relative; padding: 10rem 0; }
.c-scards--bg-white { background: #fff; }
.c-scards--bg-light { background: var(--color-bg-light); }

.c-scards__heading {
    margin: 0 0 var(--space-2xl);
    font-family: var(--font-heading);
    font-weight: 900;
    font-size: var(--text-4xl);
    line-height: 1.2;
    letter-spacing: -0.02em;
    color: var(--color-neutral-900);
    text-shadow: none;
}

/* Equal-height columns: a flex row of flex columns; cards grow to fill so every
   column ends at the same height. */
.c-scards__grid { display: flex; flex-direction: column; gap: var(--space-lg); }
.c-scards__col { display: flex; flex-direction: column; gap: var(--space-lg); }
@media (min-width: 1082px) {
    .c-scards__grid { flex-direction: row; align-items: stretch; }
    .c-scards__col { flex: 1 1 0; min-width: 0; }
}

.c-scard {
    position: relative;
    display: block;
    overflow: hidden;
    border-radius: 0;
    background: var(--card-bg, #753969);
    box-shadow: 6px 6px 0 0 #000;
    color: #fff;
    text-decoration: none;
    aspect-ratio: var(--card-ar, 7 / 6);
    transition: transform var(--transition), box-shadow var(--transition);
}
/* Neobrutalist press on hover, like the buttons */
a.c-scard:hover,
a.c-scard:focus-visible {
    transform: translate(3px, 3px);
    box-shadow: 3px 3px 0 0 #000;
}
@media (min-width: 1082px) {
    /* aspect-ratio sets the natural size; flex-grow fills the column evenly */
    .c-scard { flex: 1 1 auto; }
}

/* Layers: photo (tinted) -> marker (hard-light) -> fade -> text */
.c-scard__image { position: absolute; inset: 0; margin: 0; z-index: 0; }
.c-scard__image picture { display: block; width: 100%; height: 100%; }
.c-scard__image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    opacity: var(--card-photo-opacity, 0.5);
    transition: transform var(--transition);
}
.c-scard__marker {
    position: absolute;
    inset: 0;
    z-index: 1;
    background: var(--card-marker) center / cover no-repeat;
    mix-blend-mode: hard-light;
    pointer-events: none;
}
.c-scard::after {
    content: '';
    position: absolute;
    inset: 0;
    z-index: 2;
    background: linear-gradient(to bottom, transparent 40%, var(--card-fade, rgba(75, 32, 67, 0.6)) 100%);
    pointer-events: none;
}

.c-scard__content { position: absolute; z-index: 3; left: 0; right: 0; bottom: 0; padding: var(--space-lg); }
.c-scard__title {
    margin: 0;
    font-family: var(--font-heading);
    font-weight: 900;
    font-size: var(--text-2xl);
    line-height: 1.25;
    color: #fff;
    text-shadow: none;
}
/* Arrow flows inline right after the title text (follows the last word). */
.c-scard__arrow {
    display: inline-block;
    height: 0.72em;
    width: auto;
    margin-left: 0.35em;
    vertical-align: baseline;
    position:relative;
    top:2px;
}
.c-scard__desc { margin: var(--space-sm) 0 0; font-size: var(--text-xl); line-height: 1.5; color: #fff; }


/* Colour variants (bg colour + bottom-fade colour). Photo opacity defaults to
   50% and can be overridden per card via --card-photo-opacity (see template). */
.c-scard--magenta      { --card-bg: #753969; --card-fade: rgba(75, 32, 67, 0.55); }
.c-scard--dark-magenta { --card-bg: #4b2043; --card-fade: rgba(75, 32, 67, 0.55); }
.c-scard--pink         { --card-bg: #ba5699; --card-fade: rgba(117, 57, 105, 0.55); }
.c-scard--blue         { --card-bg: #08142f; --card-fade: rgba(8, 20, 47, 0.55); }
.c-scard--navy         { --card-bg: #000048; --card-fade: rgba(8, 20, 47, 0.55); }

/* Size variants (aspect ratio) */
.c-scard--tall   { --card-ar: 10 / 11; }
.c-scard--medium { --card-ar: 4 / 3; }
.c-scard--short  { --card-ar: 2 / 1; }

/* Editor-selected corner decoration (top-left), positioned for this section */
.c-scards .c-decoration { width: 110px; max-width: none; }
.c-scards .c-decoration--1 { top: -34px; left: -34px; right: auto; bottom: auto; }
.c-scards .c-decoration--2 { bottom: -34px; right: -34px; top: auto; left: auto; }

@media (max-width: 1640px) {
    .c-scards .c-decoration--1{
        left:-70px;
    }
}

@media (max-width: 1580px) {
    .c-scards .c-decoration--1{
        left:auto;
        right:-34px;
    }
}

@media (max-width: 1081px) {
    .c-scard--tall,
    .c-scard--medium,
    .c-scard--short {
        --card-ar: unset;
        aspect-ratio: unset;
        min-height:240px;
    }
}

@media (max-width: 767px) {
    .c-scards__heading {
        margin-bottom:var(--space-lg);
    }
}

@media (max-width: 639px) {
    .c-scards .c-decoration { width: 76px; }
}

@media (max-width: 400px) {
    .c-scard--tall,
    .c-scard--medium,
    .c-scard--short {
        min-height:280px;
    }
}


/* =================================================================
   SERVICES AREAS GRAPHIC
   ================================================================= */
.c-service-areas { padding: 0; }

.c-service-areas + [class*="--bg-light"]{
    border-top:2px solid var(--color-neutral-100);
}

/* Optional text header above the map graphic (per-instance override) */
.c-service-areas__header {
    background: linear-gradient(-71.22deg, var(--color-secondary-500) 0%, var(--color-secondary-500) 44.485%, var(--color-secondary-700) 100%);
    color: #fff;
    padding: var(--space-3xl) 0;
}
.c-service-areas__header-inner {
    max-width: 820px;
    margin: 0 auto;
    text-align: center;
}
.c-service-areas__header .eyebrow { color: #fff; }
.c-service-areas__heading { margin-bottom: var(--space-md); color: #fff; }
/* Intro copy matches the Content + Media component's paragraph styling */
.c-service-areas__intro,
.c-service-areas__intro p {
    font-size: 1.25rem;
    line-height: var(--leading-normal);
    color: #fff;
}
.c-service-areas__intro p { margin: 0 0 var(--space-lg); }
.c-service-areas__intro p:last-child { margin-bottom: 0; }

.c-service-areas__stage {
    position: relative;
    width: 100%;
}
.c-service-areas__map { display: block; width: 100%; height: auto; }
/* the theme wraps the map in <picture>; make the inner <img> fill it edge-to-edge */
.c-service-areas__map img { display: block; width: 100%; height: auto; }

/* Video-game dialog box */
.c-service-areas__dialog {
    position: absolute;
    left: 6.5%;
    top: 6%;
    width: 45.8%; /* 788 / 1721 of the map */
    aspect-ratio: 788 / 258;
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
    display: flex;
    align-items: center;
    justify-content: center;
    container-type: inline-size;
    z-index: 4;
}
.c-service-areas__dialog-text {
    margin: 0;
    padding: 0 9%;
    font-family: var(--font-pixel);
    font-size: 3.55cqw; /* 28px on the 788px dialog, per Figma */
    line-height: 1.5;
    color: #fff;
    text-align: center;
}

/* Dialog fades (and, on desktop, slides) in when the section scrolls into view.
   .is-visible is toggled by the service-areas observer in footer.php. */
.c-service-areas__dialog {
    opacity: 0;
    transition: opacity 0.55s ease-out, transform 0.55s ease-out;
}
.c-service-areas.is-visible .c-service-areas__dialog { opacity: 1; }
@media (min-width: 768px) {
    /* desktop dialog positions via left/top, so a transform is free to animate */
    .c-service-areas__dialog { transform: translateY(16px); }
    .c-service-areas.is-visible .c-service-areas__dialog { transform: translateY(0); }
}
@media (prefers-reduced-motion: reduce) {
    .c-service-areas__dialog { opacity: 1; transition: none; }
}
@media (prefers-reduced-motion: reduce) and (min-width: 768px) {
    .c-service-areas__dialog { transform: none; } /* keep mobile's centering transform intact */
}

/* Map pins left/top mark the exact tip point (the city) on the map. */
.c-service-areas__pin {
    position: absolute;
    z-index: 2;
    perspective: 500px;
    transition: transform var(--transition);
}
.c-service-areas__pin-icon {
    position: absolute;
    left: 0;
    bottom: 0; /* the tip of the icon sits on the anchor point */
    transform: translateX(-50%);
    width: clamp(22px, 2.3vw, 36px);
    aspect-ratio: 44 / 64;
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
    transition: transform 0.6s ease;
    transform-style: preserve-3d;
}
.c-service-areas__pin-name {
    position: absolute;
    left: 0;
    top: 0.5em; /* just below the tip */
    transform: translateX(-50%);
    font-family: var(--font-pixel);
    font-size: clamp(10px, 1.16vw, 22px); /* 20px on the 1721px map, per Figma */
    line-height: 1.5;
    color: var(--color-neutral-900);
    text-transform: uppercase;
    text-align: center;
    white-space: nowrap;
    /* 2px light stroke to mimic the Figma outline */
    text-shadow:
        2px 0 0 #f7f7f7, -2px 0 0 #f7f7f7, 0 2px 0 #f7f7f7, 0 -2px 0 #f7f7f7,
        1.5px 1.5px 0 #f7f7f7, -1.5px 1.5px 0 #f7f7f7, 1.5px -1.5px 0 #f7f7f7, -1.5px -1.5px 0 #f7f7f7;
}

.c-service-areas__pin:hover,
.c-service-areas__pin:focus-visible { transform: translateY(-6px); z-index: 6; }
.c-service-areas__pin:hover .c-service-areas__pin-icon,
.c-service-areas__pin:focus-visible .c-service-areas__pin-icon { transform: translateX(-50%) rotateY(360deg); }

/* Staggered reveal: pins drop + spin in one after another when the section
   scrolls into view (.is-visible is toggled by JS). --i is the pin index. */
.c-service-areas__pin { opacity: 0; }
.c-service-areas.is-visible .c-service-areas__pin {
    animation: sa-pin-fade 0.4s ease-out both;
    animation-delay: calc(1s + var(--i, 0) * 0.11s);
}
.c-service-areas.is-visible .c-service-areas__pin-icon {
    animation: sa-pin-in 0.6s ease;
    animation-delay: calc(1s + var(--i, 0) * 0.11s);
}
@keyframes sa-pin-fade { from { opacity: 0; } to { opacity: 1; } }
@keyframes sa-pin-in {
    0%   { transform: translateX(-50%) translateY(-10px) rotateY(0); }
    100% { transform: translateX(-50%) translateY(0) rotateY(360deg); }
}
@media (prefers-reduced-motion: reduce) {
    .c-service-areas__pin { opacity: 1; }
    .c-service-areas.is-visible .c-service-areas__pin,
    .c-service-areas.is-visible .c-service-areas__pin-icon { animation: none; }
}

.c-service-areas__van {
    position: absolute;
    right: -0.35%;   /* Figma: van bleeds ~6px past the map on the right */
    bottom: -0.45%;  /* Figma: van bleeds ~5px past the bottom */
    bottom: 0;
    width: 38.93%;   /* 670 / 1721 of the map */
    height: auto;
    z-index: 3;
    pointer-events: none;
}

/* Centre the button via a wrapper, not a transform on the button itself otherwise the .btn hover transform would knock it off-centre. */
.c-service-areas__all-wrap {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 6%;
    display: flex;
    justify-content: center;
    z-index: 5;
    pointer-events: none;
}
.c-service-areas__all { pointer-events: auto; }

/* Mobile list (hidden on desktop) */
.c-service-areas__list { display: none; }

@media (max-width: 767px) {
    /* Simpler mobile: dialog over the map, pins listed beneath */
    .c-service-areas__pin-icon,
    .c-service-areas__pin-name,
    .c-service-areas__all {
        display: none;
    }

    .c-service-areas__dialog {
        left: 50%;
        top: 50%;
        transform: translate(-50%, -50%);
        width: min(86%, 420px);
    }

    .c-service-areas__list {
        display: flex;
        flex-direction: column;
        gap: var(--space-sm);
        list-style: none;
        margin: var(--space-xl) 0 0;
        padding: 0;
    }
    .c-service-areas__list-item {
        display: flex;
        align-items: center;
        gap: var(--space-sm);
        text-decoration: none;
        color: var(--color-neutral-900);
        font-family: var(--font-pixel);
        font-size: 0.75rem;
        text-transform: uppercase;
    }
    .c-service-areas__list .c-service-areas__pin-icon { width: 22px; }
    
    .c-service-areas__list .c-service-areas__pin-icon,
    .c-service-areas__list .c-service-areas__pin-name { 
        text-shadow: none; 
        position: relative;
        left: auto;
        right: auto;
        top: auto;
        bottom: auto;
        transform: none;
        display:block;
    }
    .c-service-areas__list-item:hover { color: var(--color-secondary-500); }
    .c-service-areas__list-all { margin-top: var(--space-md); }

    .c-service-areas__list li{
        border-bottom: 1px solid var(--color-neutral-100);
        padding-bottom: var(--space-sm);
    }

    .c-service-areas__list li.c-service-areas__list-all {
        border:none;
        padding-bottom:0;
    }
}

/* Collapsed (mobile) layout: when the Service Area graphic is the last section
   on the page, give it a bottom padding matching Content + Media (space-2xl at
   this width) so the city list doesn't butt against the footer. */
@media (max-width: 767px) {
    .c-service-areas:last-of-type { padding-bottom: var(--space-2xl); }
}

@media (max-width: 500px) {
    .c-service-areas__van{
        width:65%;
    }

    .c-service-areas__dialog {
        top:30%;
    }
}


/* ----------------------- CTA ----------------------- */

.c-cta { padding: var(--space-3xl) 0; }
.c-cta__inner { display: flex; flex-direction: column; gap: var(--space-lg); }
.c-cta--center { text-align: center; }
.c-cta--center .c-cta__inner { align-items: center; max-width: 700px; margin: 0 auto; }

@media (min-width: 1082px) {
    .c-cta--split .c-cta__inner,
    .c-cta--has-form .c-cta__inner { flex-direction: row; justify-content: space-between; align-items: center; gap: var(--space-2xl); }
    .c-cta--split .c-cta__content,
        .c-cta--split .c-cta__content, .c-cta--has-form .c-cta__content {
        flex: 1;
        flex-basis: 50%;
        width: 50%;
    }
	.c-cta--split .c-cta__form, .c-cta--has-form .c-cta__form {
		flex: 1;
		max-width: 50%;
		flex-basis: 50%;
	}
	
}

.c-cta__content h2 { margin-bottom: var(--space-sm); }
.c-cta__content p { margin: 0; }
.c-cta__buttons { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-lg); }
.c-cta--center .c-cta__buttons { justify-content: center; }

.c-cta__form {
    background: rgba(255, 255, 255, 0.1);
    padding: var(--space-xl);
    border-radius: var(--radius);
}

.c-cta--bg-light .c-cta__form {
    background: #fff;
    box-shadow: var(--shadow);
}

.c-cta__form .gform_wrapper { margin: 0; }
.c-cta__form .gfield { margin-bottom: var(--space-md); }
.c-cta__form input:not([type="submit"]),
.c-cta__form textarea,
.c-cta__form select {
    width: 100%;
    padding: var(--space-sm) var(--space-md);
    border: 1px solid rgba(255, 255, 255, 0.3);
    border-radius: var(--radius);
    background: rgba(255, 255, 255, 0.9);
    font-size: var(--text-base);
}

.c-cta--bg-dark form label, .c-cta--bg-dark form legend, .c-cta--bg-dark .gfield_description {
    color: var(--color-neutral-50)!important;
}

.gform-footer.gform_footer {
    margin-top: 0!important;
}

.grecaptcha-badge {
	margin-bottom: var(--space-lg) !important;
}

#field_1_7.gfield--type-captcha.gfield--captcha-invisible,
.gform-theme--foundation:where(:not(.gform_editor)) .gfield--type-captcha.gfield--captcha-invisible,
.gfield--type-captcha,
.grecaptcha-badge{
	position:relative!important;
	bottom:auto!important;
	right:auto!important;
}


#field_1_7.gfield--type-captcha.gfield--captcha-invisible,
.gform-theme--foundation:where(:not(.gform_editor)) .gfield--type-captcha.gfield--captcha-invisible,
.gfield--type-captcha {
	min-height:60px!important;
}

div#gform_fields_1 {
    row-gap: var(--space-md);
}

div.gform-theme--framework .gform-field-label>.gfield_required:where(:not(.gform-theme__disable):not(.gform-theme__disable *):not(.gform-theme__disable-framework):not(.gform-theme__disable-framework *)) {
    color: var(--color-error-500);
}

.c-cta--bg-light .c-cta__form input:not([type="submit"]),
.c-cta--bg-light .c-cta__form textarea,
.c-cta--bg-light .c-cta__form select {
    border-color: var(--color-neutral-300);
    background: #fff;
}

.c-cta__form .gform_button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    min-height: 44px;
    padding: 0.75em 1.5em;
    font-size: var(--text-base);
    font-weight: 600;
    text-decoration: none;
    border-radius: var(--radius);
    border: 2px solid transparent;
    cursor: pointer;
    transition: all var(--transition);
    /* Default: white button for dark/brand backgrounds */
    background: #fff;
    color: var(--color-brand);
    border-color: #fff;
}

.c-cta__form .gform_button:hover {
    background: var(--color-neutral-100);
    border-color: var(--color-neutral-100);
}

/* Light background: use primary button style */
.c-cta--bg-light .c-cta__form .gform_button {
    background: var(--color-brand);
    color: #fff;
    border-color: var(--color-brand);
}

.c-cta--bg-light .c-cta__form .gform_button:hover {
    background: var(--color-brand-dark);
    border-color: var(--color-brand-dark);
}

.c-cta--bg-brand { background: var(--color-brand); color: #fff; }
.c-cta--bg-dark { background: var(--color-bg-dark); color: #fff; }
.c-cta--bg-light { background: var(--color-bg-light); }

/* ---- Sitewide (global) CTA matches Figma ---- */
.c-cta--global {
    position: relative;
    overflow-x: clip; /* contain line art at the right edge; allow image to protrude top */
}
.c-cta--global.c-cta--bg-brand {
    /* Diagonal pink gradient, secondary-500 secondary-700 (exact Figma) */
    background: linear-gradient(-71.22deg, var(--color-secondary-500) 0%, var(--color-secondary-500) 44.485%, var(--color-secondary-700) 100%);
    color: #fff;
}
.c-cta--global .c-cta__inner { position: relative; z-index: 1; }

/* Scroll-in stagger: left content first, AC unit image just after */
.c-cta--global .c-cta__content.animate-on-scroll { transition-delay: 0s; }
.c-cta--global .c-cta__media.animate-on-scroll { transition-delay: 0.2s; }

/* Line art full height (edge to edge), flush with the right window edge, behind content */
.c-cta__art {
    position: absolute;
    top: 0;
    right: 0;
    height: 100%;
    width: auto;
    z-index: 0;
    pointer-events: none;
}

.c-cta__headline { font-family: var(--font-heading); font-weight: 900; font-size: var(--text-4xl); letter-spacing: -0.02em; line-height: 1.2; margin-bottom: var(--space-md); }
.c-cta--global .c-cta__subhead { font-weight: 900; font-size: var(--text-xl); margin-top: var(--space-md); margin-bottom: var(--space-xl); }

/* Credentials row (certification icons + license info) */
.c-cta__credentials {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: var(--space-lg);
    margin-top: var(--space-xl);
}
.c-cta__certs { display: flex; align-items: center; gap: var(--space-md); flex-shrink: 0; }
.c-cta__cert { height: 84px; width: auto; display: block; }
.c-cta__license { font-size: var(--text-base); line-height: 0.875; }
.c-cta__license p { margin: 0; line-height: 0.875; }
.c-cta__license strong, .c-cta__license b { display: block; text-transform: uppercase; font-weight: 800; color: var(--color-secondary-100); }

/* Media column (AC unit image) */
.c-cta__media { position: relative; }
.c-cta__media-image {
    position: relative;
    z-index: 1;
    display: block;
    margin: 0 auto;
    width: auto;
    max-width: 100%;
    max-height: 22rem;
    /* Decorative only: the image protrudes above the CTA and overlaps the last
       #main-content section. Ignore pointer events so links beneath the overlap
       stay clickable (clicks fall through to the content below). */
    pointer-events: none;
}

@media (min-width: 768px) {
    .c-cta--has-media .c-cta__inner {
        flex-direction: row;
        align-items: flex-end;
        justify-content: space-between;
        gap: var(--space-2xl);
        min-height: 20rem;
    }
    .c-cta--has-media .c-cta__content { flex: 1 1 56%; max-width: 640px; align-self: center; }
    .c-cta--has-media .c-cta__media { flex: 1 1 44%; align-self: stretch; }
    /* AC unit anchored low so its bottom is cut off by the footer, protruding above the CTA top */
    .c-cta--has-media .c-cta__media-image {
        position: absolute;
        right: -80px;
        bottom: calc(-1 * var(--space-3xl) + 16px);
        margin: 0;
        width: auto;
        height: 36rem;
        max-width: none;
        max-height: none;
    }
}

@media (max-width:1400px) {
    .c-cta--has-media .c-cta__media-image {
        bottom:-100px;
    }
}

@media (max-width:1081px) {
    .c-cta--has-media .c-cta__media-image {
        bottom:-130px;
    }
}

@media (max-width: 960px) {
    .c-cta__art{
        right:-10vw;
    }
}

@media (max-width: 820px) {
    .c-cta__art{
        right:-20vw;
    }
}

@media (max-width: 767px) {
    .c-cta--has-media .c-cta__media {order: -1;}

    .c-cta__art {
        display:none;
    }

    .c-cta--has-media .c-cta__media-image {
        position: relative;
        bottom:auto;
        left:auto;
        right:auto;
        top:-100px;
        margin-bottom:-140px;
        max-height:1000px;
        z-index:0;
    }

    .c-cta--has-media .c-cta__media-image,
    .c-cta--has-media .c-cta__media-image img{
        display: block;
    }

    .c-cta {
        padding-top: 0;
        position:relative;
        z-index:0;
    }

    #main-content > section:last-of-type {
        position:relative;
        z-index:1;
    }

    .c-cta__cert {
        height: auto;
    }
}

@media (max-width: 400px) {
    .c-cta .btn-phone {
        display:none;
    }
}


/* ----------------------- TESTIMONIALS ----------------------- */

.c-testimonials { padding: 10rem 0; }
.c-testimonials__header { text-align: center; max-width: 700px; margin: 0 auto var(--space-2xl); }

.c-testimonial { text-align: center; max-width: 800px; margin: 0 auto; }
.c-testimonial__icon { width: 48px; height: 48px; margin: 0 auto var(--space-lg); color: var(--color-brand); opacity: 0.3; }
.c-testimonial__quote { font-size: var(--text-xl); font-style: italic; line-height: var(--leading-relaxed); margin-bottom: var(--space-lg); }
.c-testimonial--featured .c-testimonial__quote { font-size: var(--text-2xl); }
.c-testimonial__author { display: flex; align-items: center; justify-content: center; gap: var(--space-md); text-align: left; }
.c-testimonial__photo { width: 56px; height: 56px; border-radius: 50%; object-fit: cover; }
.c-testimonial__author cite { display: block; font-style: normal; font-weight: 600; }
.c-testimonial__author span { font-size: var(--text-sm); color: var(--color-neutral-500); }

/* Slider nav */
.c-testimonials__nav { display: flex; align-items: center; justify-content: center; gap: var(--space-md); margin-top: var(--space-xl); }
.c-testimonials__prev,
.c-testimonials__next {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    background: none;
    border: 1px solid var(--color-neutral-300);
    border-radius: 50%;
    cursor: pointer;
    transition: var(--transition);
}
.c-testimonials__prev:hover,
.c-testimonials__next:hover { border-color: var(--color-neutral-500); }
.c-testimonials__prev svg,
.c-testimonials__next svg { width: 20px; height: 20px; }
.c-testimonials__dots { display: flex; gap: var(--space-xs); }
.c-testimonials__dot {
    width: 10px;
    height: 10px;
    background: var(--color-neutral-300);
    border: none;
    border-radius: 50%;
    cursor: pointer;
    transition: var(--transition);
}
.c-testimonials__dot:hover,
.c-testimonials__dot.is-active { background: var(--color-brand); }

/* Grid layout per Figma: left-aligned heading, navy bordered cards, five
   stars, sign-language quote, and a decorative accent bleeding off bottom-left. */
.c-testimonials--grid { position: relative; overflow: clip; }
.c-testimonials--grid .c-testimonials__header { text-align: left; max-width: none; margin: 0 0 var(--space-2xl); }
.c-testimonials--grid .c-testimonials__header h2 {
    font-family: var(--font-heading);
    font-weight: 900;
    font-size: clamp(2rem, 3.4vw, 2.75rem); /* 44px */
    letter-spacing: -0.02em;
    line-height: 1.2;
}
.c-testimonials--grid .c-testimonials__inner { position: relative; z-index: 1; }

.c-testimonials--grid .c-testimonials__grid { display: grid; gap: var(--space-lg); grid-template-columns: 1fr; }
@media (min-width: 600px)  { .c-testimonials--grid .c-testimonials__grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .c-testimonials--grid .c-testimonials__grid { grid-template-columns: repeat(4, 1fr); } }

.c-testimonials--grid .c-testimonial {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: var(--space-md);
    margin: 0;
    padding: var(--space-xl);
    text-align: left;
    background: var(--color-primary-700);
    border: 2px solid #000;
    border-radius: 0;
    color: #fff;
}
.c-testimonial__stars { width: 160px; max-width: 100%; height: auto; display: block; margin-bottom: var(--space-xs); }
.c-testimonials--grid .c-testimonial__quote {
    width: 100%;
    font-family: var(--font-display);
    font-style: italic;
    font-size: clamp(1.15rem, 1.55vw, 1.5rem); /* 24px */
    line-height: 1.5;
    color: #fff;
    margin: 0;
}
.c-testimonials--grid .c-testimonial__quote p { margin: 0; }
.c-testimonial__name {
    width: 100%;
    font-family: var(--font-heading);
    font-weight: 900;
    font-size: 1rem;
    font-style: normal;
    color: var(--color-primary-100);
}

/* Editor-selected decoration (per Figma: bleeds off the bottom-left, behind cards) */
.c-testimonials--grid .c-decoration {
    width: clamp(200px, 22vw, 333px);
    max-width: none;
    height: auto;
    top: auto;
    right: auto;
    left: -180px;
    bottom: -40px;
}

.c-testimonials--bg-white {/* background: #fff; */}
.c-testimonials--bg-light { background: var(--color-bg-light); }
.c-testimonials--bg-dark { background: var(--color-bg-dark); color: #fff; }
.c-testimonials--bg-dark .c-testimonial__author span { color: var(--color-neutral-400); }

@media (max-width: 767px) {
    .c-testimonials--grid .c-testimonials__header h2 {
        margin-bottom:0;
    }

    .c-testimonials--grid .c-testimonials__header {
        margin-bottom:var(--space-lg);
    }
}

/* ----------------------- ACCORDION ----------------------- */

.c-accordion { padding: 10rem 0; }
.c-accordion__inner { display: grid; gap: var(--space-2xl); align-items: start; }

@media (min-width: 1082px) {
    /* Split: headline on the left, FAQ items on the right */
    .c-accordion__inner { grid-template-columns: 1fr 1fr; gap: var(--space-3xl); }
}

.c-accordion__header { margin: 0; }
.c-accordion__headline { font-size: var(--text-4xl); letter-spacing: -0.02em; line-height: 1.2; }
.c-accordion__header .subhead { margin-top: var(--space-md); }

.c-accordion__items { display: flex; flex-direction: column; gap: var(--space-sm); }

/* Card */
.c-accordion__item {
    position: relative;
    overflow: hidden;
    padding-left: 6px;            /* room for the accent bar */
    background: #fff;
    border: 2px solid #000;
    box-shadow: 3px 3px 0 0 #000;
    transition: box-shadow 0.25s ease, background 0.25s ease, transform 0.25s ease;
}
.c-accordion__item::before {     /* gradient accent bar */
    content: '';
    position: absolute;
    top: 0; left: 0; bottom: 0;
    width: 6px;
    background: linear-gradient(180deg, var(--color-primary-500) 0%, var(--color-secondary-500) 100%);
    transition: background 0.25s ease;
}
.c-accordion__item.is-open {
    background: var(--color-primary-500);
    box-shadow: 6px 6px 0 0 #000;
}
.c-accordion__item.is-open::before { background: var(--color-secondary-300); }

/* Hover lift the card (works for both closed and open states) */
.c-accordion__item:hover {
    transform: translate(-2px, -2px);
    box-shadow: 5px 5px 0 0 #000;
}
.c-accordion__item.is-open:hover {
    box-shadow: 8px 8px 0 0 #000;
}
.c-accordion__item:hover .c-accordion__toggle { background: var(--color-secondary-500); }
.c-accordion__item.is-open:hover .c-accordion__toggle { background: var(--color-primary-200); }

.c-accordion__heading { margin: 0; }
.c-accordion__trigger {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-md);
    width: 100%;
    padding: 18px 20px;
    background: none;
    border: none;
    cursor: pointer;
    text-align: left;
    font-family: var(--font-heading);
    font-size: 1.5rem;
    font-weight: 900;
    line-height: 1.3;
    color: #1a1f5e;
    transition: color var(--transition);
}
.c-accordion__item.is-open .c-accordion__trigger { color: #fff; }

/* +/- toggle box */
.c-accordion__toggle {
    position: relative;
    flex-shrink: 0;
    width: 32px;
    height: 32px;
    background: var(--color-secondary-600);
    border: 2px solid #000;
    box-shadow: 2px 2px 0 0 #000;
    transition: background var(--transition);
}
.c-accordion__toggle::before,
.c-accordion__toggle::after {
    content: '';
    position: absolute;
    top: 50%; left: 50%;
    transform: translate(-50%, -50%);
    background: #fff;
    transition: transform var(--transition);
}
.c-accordion__toggle::before { width: 14px; height: 2px; }
.c-accordion__toggle::after { width: 2px; height: 14px; }
.c-accordion__item.is-open .c-accordion__toggle { background: var(--color-primary-300); }
.c-accordion__item.is-open .c-accordion__toggle::after { transform: translate(-50%, -50%) scaleY(0); }

/* Answer panel height animated via JS so it slides open/closed every time */
.c-accordion__panel {
    overflow: hidden;
    height: 0;
    transition: height 0.3s ease;
}

@media (prefers-reduced-motion: reduce) {
    .c-accordion__panel { transition: none; }
}

.c-accordion__answer {
    border-top: 2px solid var(--color-primary-300);
    padding: 20px 20px 22px;
    font-size: var(--text-lg);
    line-height: 1.5;
    color: rgba(255, 255, 255, 0.9);
}
.c-accordion__answer p { margin: 0; }
.c-accordion__answer p + p { margin-top: var(--space-md); }
.c-accordion__answer a { color: #fff; }

.c-accordion--bg-light { background: var(--color-bg-light); }
.c-accordion--bg-magenta { background: var(--color-secondary-500); color: #fff; }

@media (max-width:1081px) {
    .c-accordion__inner {
        gap:var(--space-lg);
    }

    .c-accordion__inner *:last-child {
        margin-bottom:0;
    }
}

@media (max-width:767px) {
    .c-accordion__trigger {
        font-size:var(--text-xl);
    }
}

/* ----------------------- STATS ----------------------- */

.c-stats { padding: var(--space-3xl) 0; }
.c-stats__header { text-align: center; max-width: 700px; margin: 0 auto var(--space-2xl); }
.c-stats__grid { display: grid; gap: var(--space-xl); text-align: center; }
@media (min-width: 769px) {
    .c-stats__grid { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 1024px) {
    .c-stats__grid { grid-template-columns: repeat(4, 1fr); }
}
.c-stat__number { font-size: var(--text-4xl); font-weight: 700; color: var(--color-brand); line-height: 1; }
.c-stat__label { margin-top: var(--space-sm); font-size: var(--text-sm); text-transform: uppercase; letter-spacing: 0.05em; color: var(--color-neutral-500); }

.c-stats--bg-white { background: #fff; }
.c-stats--bg-light { background: var(--color-bg-light); }
.c-stats--bg-dark { background: var(--color-bg-dark); color: #fff; }
.c-stats--bg-dark .c-stat__number { color: var(--color-brand-light); }
.c-stats--bg-dark .c-stat__label { color: var(--color-neutral-400); }
.c-stats--bg-brand { background: var(--color-brand); color: #fff; }
.c-stats--bg-brand .c-stat__number { color: #fff; }
.c-stats--bg-brand .c-stat__label { color: rgba(255,255,255,0.8); }


/* ----------------------- LOGO GRID ----------------------- */

.c-logos { padding: var(--space-2xl) 0; }
.c-logos__header { text-align: center; margin-bottom: var(--space-xl); }
.c-logos__header h2 { font-size: var(--text-lg); font-weight: 500; }
.c-logos__grid { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: var(--space-lg) var(--space-xl); }
.c-logos__item { max-width: 140px; height: 48px; display: flex; align-items: center; }
.c-logos__item img { max-width: 100%; max-height: 100%; object-fit: contain; transition: filter var(--transition), opacity var(--transition); }
.c-logos--gray .c-logos__item img { filter: grayscale(100%); opacity: 0.6; }
.c-logos--gray .c-logos__item:hover img { filter: grayscale(0); opacity: 1; }

.c-logos--bg-white { background: #fff; }
.c-logos--bg-light { background: var(--color-bg-light); }


/* ----------------------- FORM SECTION ----------------------- */

.c-form-section { padding: 10rem 0 !important; } /* vertical rhythm matches the Content + Media component same responsive step-down below */
@media (max-width: 1081px) { .c-form-section { padding: var(--space-3xl) 0 !important; } }
@media (max-width: 767px)  { .c-form-section { padding: var(--space-2xl) 0 !important; } }
.c-form-section--center .c-form-section__inner { max-width: 600px; margin: 0 auto; }
.c-form-section--center .c-form-section__content { text-align: center; margin-bottom: var(--space-xl); }

.c-form-section--split .c-form-section__inner {
    display:flex;
    flex-direction:column;
    gap:var(--space-2xl);
}

@media (min-width: 1082px) {
    .c-form-section--split .c-form-section__inner { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-3xl); align-items: start; }
}

.c-form-section__form-wrap { position: relative; }
.c-text-block .eyebrow,
.c-testimonials .eyebrow,
.c-cards .eyebrow,
.c-content-media .eyebrow,
.c-content-testimonial .eyebrow,
.c-icon-cards .eyebrow,
.c-form-section .eyebrow { color: var(--color-primary-500); text-shadow: 2px 2px 0 var(--color-primary-100);}
.c-form-section__form { background: #fff; padding: var(--space-xl); border-radius: var(--radius); box-shadow: var(--shadow); }

/* Base Gravity Forms field styling inside a form section */
.c-form-section__form .gform_wrapper { margin: 0; }
.c-form-section__form .gfield { margin-bottom: var(--space-md); }
.c-form-section__form .gform_fields { row-gap: var(--space-md); }
.c-form-section__form input:not([type="submit"]),
.c-form-section__form textarea,
.c-form-section__form select {
    width: 100%;
    padding: var(--space-md) var(--space-md) !important;
    border: 1px solid var(--color-neutral-300);
    border-radius: var(--radius);
    background: #fff;
    /* Field text matches the Content + Media component's paragraph style.
       Gravity Forms sets these via class-level rules (--gf-ctrl-font-size, etc.),
       so !important is needed to win. */
    font-family: var(--font-sans) !important;
    font-size: 1.25rem !important;
    line-height: var(--leading-normal) !important;
    color: var(--color-neutral-900) !important;
}
.c-form-section__form textarea { min-height: 8rem; resize: vertical; }
.c-form-section__form .gform_footer { margin-top: var(--space-md); }

/* Decorative "wiggle" accents hidden unless the decorated variant is active */
.c-form-section__wiggle { display: none; }

.c-form-section--bg-white { background: #fff; }
.c-form-section--bg-light { background: var(--color-bg-light); }
.c-form-section--bg-dark { background: var(--color-bg-dark); color: #fff; }
.c-form-section--bg-dark .eyebrow { color: var(--color-brand-light); }

/* --------- Decorated variant: bold navy angular gradient + wiggles ---------
   Pairs with the synthwave home hero: a primary-700 primary-400 conic
   ("angular") sweep behind the fields, neobrutalist box, wiggle decals at
   two corners, and a pink primary-style submit button. */
.c-form-section--decorated { overflow-x: clip; }

.c-form-section--decorated .c-form-section__form {
    /* Diagonal navy gradient, top-left (lighter) bottom-right (deeper) */
    background: linear-gradient(130deg, var(--color-primary-400) 0%, var(--color-primary-700) 100%);
    color: #fff;
    padding: clamp(1.75rem, 4vw, 3rem);
    border: 2px solid #000;
    border-radius: 0;
    box-shadow: 8px 8px 0 0 #000;
}

/* Labels / helper text on the dark gradient larger, with a hard drop shadow */
.c-form-section--decorated .c-form-section__form label,
.c-form-section--decorated .c-form-section__form legend,
.c-form-section--decorated .c-form-section__form .gform-field-label {
    color: #fff;
    font-weight: 900;
    font-size: var(--text-lg);
    text-shadow: 2px 2px 0 #000;
}
/* Complex-field group labels (Name / Email / Comments) a step larger */
.c-form-section--decorated .c-form-section__form legend,
.c-form-section--decorated .c-form-section__form .gform-field-label:not(.gform-field-label--type-sub) {
    font-size: var(--text-xl);
}

.c-form-section--decorated .c-form-section__form .gfield_description,
.c-form-section--decorated .c-form-section__form .gform_validation_errors * { color: rgba(255,255,255,0.78)!important; }

.gform-theme--framework .gform_validation_errors .gform-icon,
.gform_validation_errors {
    border-color:var(--color-secondary-400)!important;
    box-shadow:none!important;
}

.gform_validation_errors:focus {
    outline: 3px solid var(--color-primary-300)!important;
}

.c-form-section--decorated .c-form-section__form .gfield_required { color: var(--color-secondary-200); }

/* Fields: solid white with a hard black edge to read against the gradient */
.c-form-section--decorated .c-form-section__form input:not([type="submit"]),
.c-form-section--decorated .c-form-section__form textarea,
.c-form-section--decorated .c-form-section__form select {
    border: 2px solid #000;
    border-radius: 0;
    background: #fff;
    color: var(--color-neutral-900);
    box-shadow: 4px 4px 0 0 #000;
    min-height:60px;
}
/* GP Advanced Phone Field (intl-tel-input v18) hide the country dropdown so
   the Phone field matches the plain Name input */
.c-form-section__form .iti__country-container { display: none !important; }
.c-form-section__form .iti { display: block; width: 100%; }
.c-form-section__form .iti__tel-input,
.c-form-section__form .ginput_container_phone input[type="tel"] {
    padding-left: var(--space-md) !important;
}
.c-form-section--decorated .c-form-section__form input:focus-visible,
.c-form-section--decorated .c-form-section__form textarea:focus-visible,
.c-form-section--decorated .c-form-section__form select:focus-visible {
    outline: 3px solid var(--color-secondary-300);
    outline-offset: 2px;
}

/* Wiggle decals overlapping two corners of the form box */
.c-form-section--decorated .c-form-section__wiggle {
    display: block;
    position: absolute;
    width: 4.5rem;
    height: auto;
    z-index: 2;
    pointer-events: none;
}
.c-form-section--decorated .c-form-section__wiggle--1 { top: -1.6rem; right: -1.6rem; }
.c-form-section--decorated .c-form-section__wiggle--2 { bottom: -1.6rem; left: -1.6rem; }
@media (max-width: 767px) {
    .c-form-section--decorated .c-form-section__wiggle { width: 3.25rem; }
    .c-form-section--decorated .c-form-section__wiggle--1 { top: -1rem; right: -0.75rem; }
    .c-form-section--decorated .c-form-section__wiggle--2 { bottom: -1rem; left: -0.75rem; }
}

/* Submit button force the primary (pink neobrutalist) button style.
   Gravity Forms ships its own high-specificity button rules, so !important. */
.c-form-section__form .gform_button,
.c-form-section__form input[type="submit"].gform_button {
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    gap: var(--space-xs);
    width: auto !important;
    min-height: 44px;
    padding: 1.125rem 2rem !important;
    font-family: var(--font-heading) !important;
    font-size: var(--text-base) !important;
    font-weight: 800 !important;
    line-height: 1 !important;
    text-transform: uppercase !important;
    letter-spacing: 0.02em;
    text-decoration: none !important;
    color: #fff !important;
    background: var(--color-secondary-500) !important;
    border: 2px solid #000 !important;
    border-radius: 0 !important;
    box-shadow: 4px 4px 0 0 #000 !important;
    cursor: pointer;
    transition: transform var(--transition), box-shadow var(--transition), background var(--transition);
}
.c-form-section__form .gform_button:hover,
.c-form-section__form .gform_button:focus-visible {
    background: var(--color-secondary-600) !important;
    transform: translate(2px, 2px);
    box-shadow: 2px 2px 0 0 #000 !important;
}
.c-form-section__form .gform_button:active {
    transform: translate(4px, 4px);
    box-shadow: 0 0 0 0 #000 !important;
}


/* ----------------------- TEXT BLOCK ----------------------- */

.c-text-block { padding: var(--space-3xl) 0; }
.c-text-block h2 { margin-bottom: var(--space-lg); }

.c-text-block--bg-white { background: #fff; }
.c-text-block--bg-light { background: var(--color-bg-light); }


/* ----------------------- GALLERY ----------------------- */

.c-gallery { padding: var(--space-3xl) 0; }
.c-gallery__header { text-align: center; max-width: 700px; margin: 0 auto var(--space-2xl); }
.c-gallery__subhead { color: var(--color-neutral-900); margin-top: var(--space-sm); }

.c-gallery__grid {
    display: grid;
    gap: var(--space-md);
}
.c-gallery--cols-2 .c-gallery__grid { grid-template-columns: repeat(2, 1fr); }
.c-gallery--cols-3 .c-gallery__grid { grid-template-columns: repeat(2, 1fr); }
.c-gallery--cols-4 .c-gallery__grid { grid-template-columns: repeat(2, 1fr); }
.c-gallery--cols-5 .c-gallery__grid { grid-template-columns: repeat(2, 1fr); }

@media (min-width: 769px) {
    .c-gallery--cols-3 .c-gallery__grid { grid-template-columns: repeat(3, 1fr); }
    .c-gallery--cols-4 .c-gallery__grid { grid-template-columns: repeat(3, 1fr); }
    .c-gallery--cols-5 .c-gallery__grid { grid-template-columns: repeat(3, 1fr); }
}
@media (min-width: 1024px) {
    .c-gallery--cols-4 .c-gallery__grid { grid-template-columns: repeat(4, 1fr); }
    .c-gallery--cols-5 .c-gallery__grid { grid-template-columns: repeat(5, 1fr); }
}

.c-gallery__item {
    margin: 0;
    overflow: hidden;
    border-radius: var(--radius);
    cursor: pointer;
}
.c-gallery__item img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform var(--transition);
}
.c-gallery__item:hover img {
    transform: scale(1.05);
}

/* Aspect ratios */
.c-gallery--square .c-gallery__item { aspect-ratio: 1/1; }
.c-gallery--landscape .c-gallery__item { aspect-ratio: 4/3; }
.c-gallery--portrait .c-gallery__item { aspect-ratio: 3/4; }
.c-gallery--wide .c-gallery__item { aspect-ratio: 16/9; }

/* Masonry layout */
.c-gallery--masonry .c-gallery__grid {
    display: block;
    column-gap: var(--space-md);
}
.c-gallery--masonry.c-gallery--cols-2 .c-gallery__grid { column-count: 2; }
.c-gallery--masonry.c-gallery--cols-3 .c-gallery__grid { column-count: 2; }
.c-gallery--masonry.c-gallery--cols-4 .c-gallery__grid { column-count: 2; }
.c-gallery--masonry.c-gallery--cols-5 .c-gallery__grid { column-count: 2; }

@media (min-width: 768px) {
    .c-gallery--masonry.c-gallery--cols-3 .c-gallery__grid { column-count: 3; }
    .c-gallery--masonry.c-gallery--cols-4 .c-gallery__grid { column-count: 3; }
    .c-gallery--masonry.c-gallery--cols-5 .c-gallery__grid { column-count: 3; }
}
@media (min-width: 1024px) {
    .c-gallery--masonry.c-gallery--cols-4 .c-gallery__grid { column-count: 4; }
    .c-gallery--masonry.c-gallery--cols-5 .c-gallery__grid { column-count: 5; }
}

.c-gallery--masonry .c-gallery__item {
    break-inside: avoid;
    margin-bottom: var(--space-md);
    aspect-ratio: auto;
}
.c-gallery--masonry .c-gallery__item img {
    height: auto;
}

/* Carousel layout */
.c-gallery__carousel {
    position: relative;
}
.c-gallery__track {
    display: flex;
    gap: var(--space-md);
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scrollbar-width: none;
    -ms-overflow-style: none;
    padding-bottom: var(--space-sm);
}
.c-gallery__track::-webkit-scrollbar { display: none; }

.c-gallery__slide {
    flex: 0 0 auto;
    width: 300px;
    scroll-snap-align: start;
    margin: 0;
    border-radius: var(--radius);
    overflow: hidden;
    cursor: pointer;
}
@media (min-width: 768px) {
    .c-gallery__slide { width: 400px; }
}
.c-gallery__slide img {
    width: 100%;
    height: 250px;
    object-fit: cover;
    transition: transform var(--transition);
}
@media (min-width: 768px) {
    .c-gallery__slide img { height: 300px; }
}
.c-gallery__slide:hover img {
    transform: scale(1.05);
}

.c-gallery__prev,
.c-gallery__next {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    width: 44px;
    height: 44px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #fff;
    border: none;
    border-radius: 50%;
    box-shadow: var(--shadow);
    cursor: pointer;
    transition: background var(--transition);
    z-index: 2;
}
.c-gallery__prev:hover,
.c-gallery__next:hover { background: var(--color-neutral-100); }
.c-gallery__prev { left: var(--space-sm); }
.c-gallery__next { right: var(--space-sm); }
.c-gallery__prev svg,
.c-gallery__next svg { width: 20px; height: 20px; }

/* Backgrounds */
.c-gallery--bg-white { background: #fff; }
.c-gallery--bg-light { background: var(--color-bg-light); }
.c-gallery--bg-dark { background: var(--color-bg-dark); color: #fff; }
.c-gallery--bg-dark .eyebrow { color: var(--color-brand-light); }
.c-gallery--bg-dark .c-gallery__subhead { color: var(--color-neutral-400); }


/* ----------------------- LIGHTBOX ----------------------- */

.c-lightbox {
    position: fixed;
    inset: 0;
    z-index: 9999;
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.3s ease;
}
.c-lightbox.is-open {
    opacity: 1;
    pointer-events: auto;
}
.c-lightbox__overlay {
    position: absolute;
    inset: 0;
    background: rgba(0, 0, 0, 0.95);
}
.c-lightbox__content {
    position: relative;
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: var(--space-xl);
}
.c-lightbox__close {
    position: absolute;
    top: var(--space-md);
    right: var(--space-md);
    width: 44px;
    height: 44px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: transparent;
    border: none;
    color: #fff;
    cursor: pointer;
    opacity: 0.7;
    transition: opacity var(--transition);
}
.c-lightbox__close:hover { opacity: 1; }
.c-lightbox__close svg { width: 28px; height: 28px; }

.c-lightbox__prev,
.c-lightbox__next {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    width: 50px;
    height: 50px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(255, 255, 255, 0.1);
    border: none;
    border-radius: 50%;
    color: #fff;
    cursor: pointer;
    transition: background var(--transition);
}
.c-lightbox__prev:hover,
.c-lightbox__next:hover { background: rgba(255, 255, 255, 0.2); }
.c-lightbox__prev { left: var(--space-md); }
.c-lightbox__next { right: var(--space-md); }
.c-lightbox__prev svg,
.c-lightbox__next svg { width: 24px; height: 24px; }

.c-lightbox__figure {
    max-width: 90vw;
    max-height: 80vh;
    margin: 0;
    text-align: center;
}
.c-lightbox__image {
    max-width: 100%;
    max-height: 75vh;
    object-fit: contain;
}
.c-lightbox__caption {
    color: var(--color-neutral-400);
    font-size: var(--text-sm);
    margin-top: var(--space-md);
}
.c-lightbox__counter {
    position: absolute;
    bottom: var(--space-md);
    left: 50%;
    transform: translateX(-50%);
    color: var(--color-neutral-400);
    font-size: var(--text-sm);
}

@media (max-width: 768px) {
    .c-lightbox__prev,
    .c-lightbox__next {
        width: 40px;
        height: 40px;
        bottom: var(--space-3xl);
        top: auto;
        transform: none;
    }
    .c-lightbox__prev { left: var(--space-xl); }
    .c-lightbox__next { right: var(--space-xl); }
}


/* ----------------------- STICKY CTA ----------------------- */

.c-sticky-cta {
    display: none;
    position: fixed;
    bottom: var(--space-lg);
    right: var(--space-lg);
    z-index: 1000;
}

@media (max-width: 959px) {
    .c-sticky-cta { display: block; }
}

.c-sticky-cta__toggle {
    display: flex;
    align-items: center;
    height: 58px;
    padding: 0;
    background: var(--color-brand-blue);
    border: 2px solid #000;
    border-radius: 0;
    color: #fff;
    cursor: pointer;
    box-shadow: 4px 4px 0 0 #000;
    overflow: hidden;
    transition: background var(--transition), transform var(--transition), box-shadow var(--transition);
}
.c-sticky-cta__toggle:hover,
.c-sticky-cta__toggle:active {
    background: var(--color-brand-blue-dark);
    transform: translate(2px, 2px);
    box-shadow: 2px 2px 0 0 #000;
}

.c-sticky-cta__icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 54px;
    height: 54px;
    flex-shrink: 0;
}
.c-sticky-cta__icon svg { width: 24px; height: 24px; }

.c-sticky-cta__number {
    display: block;
    max-width: 0;
    overflow: hidden;
    white-space: nowrap;
    font-weight: 600;
    font-size: var(--text-base);
    color: #fff;
    text-decoration: none;
    transition: max-width 0.3s ease, padding 0.3s ease;
    padding: 0;
}

.c-sticky-cta__close {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 0;
    overflow: hidden;
    flex-shrink: 0;
    transition: width 0.3s ease, padding 0.3s ease;
    padding: 0;
}
.c-sticky-cta__close svg { width: 20px; height: 20px; opacity: 0.8; }

/* Expanded state */
.c-sticky-cta.is-open .c-sticky-cta__toggle {
    background: var(--color-brand-dark);
}

.c-sticky-cta.is-open .c-sticky-cta__number {
    max-width: 200px;
    padding-right: var(--space-xs);
}

.c-sticky-cta.is-open .c-sticky-cta__close {
    width: 44px;
    padding-right: var(--space-sm);
}


/* =================================================================
   ICON CARDS
   ================================================================= */

.c-icon-cards { padding: 10rem 0; position: relative; overflow-x: clip; }
.c-icon-cards--bg-light { background: var(--color-bg-light); }
.c-icon-cards--bg-dark { background: var(--color-neutral-800); color: #fff; }
.c-icon-cards--bg-dark h2, .c-icon-cards--bg-dark h3, .c-icon-cards--bg-dark h4 { color: #fff; }
.c-icon-cards--bg-brand { background: var(--color-brand); color: #fff; }
.c-icon-cards--bg-brand h2, .c-icon-cards--bg-brand h3, .c-icon-cards--bg-brand h4 { color: #fff; }

.c-icon-cards__inner { position: relative; z-index: 1; }

.c-icon-cards__header {
    text-align: center;
    max-width: 800px;
    margin: 0 auto var(--space-xl);
}
.c-icon-cards__header h2, .c-icon-cards__header h3, .c-icon-cards__header h4 {
    font-size: var(--text-4xl);
    letter-spacing: -0.02em;
    margin-bottom: var(--space-md);
}
.c-icon-cards__header .subhead {
    font-size: var(--text-xl);
    font-weight: 800;
    color: var(--color-neutral-900);
}
.c-icon-cards--bg-dark .c-icon-cards__header .subhead,
.c-icon-cards--bg-brand .c-icon-cards__header .subhead,
.c-icon-cards--bg-image .c-icon-cards__header .subhead { color: rgba(255,255,255,0.8); }

.c-icon-cards__grid {
    display: grid;
    gap: 2.5rem;
}
.c-icon-cards--cols-2 .c-icon-cards__grid { grid-template-columns: repeat(2, 1fr); }
.c-icon-cards--cols-3 .c-icon-cards__grid { grid-template-columns: repeat(3, 1fr); }
.c-icon-cards--cols-4 .c-icon-cards__grid { grid-template-columns: repeat(4, 1fr); }

@media (max-width: 1240px) {
    .c-icon-cards--cols-3 .c-icon-cards__grid,
    .c-icon-cards--cols-4 .c-icon-cards__grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 767px) {
    .c-icon-cards__grid { 
        grid-template-columns: 1fr !important; 
        gap: var(--space-lg);
    }
}

/* Card navy tile with diagonal texture, white content (Figma) */
.c-icon-card {
    position: relative;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: var(--space-sm);
    padding: 2.5rem;
    background: var(--color-primary-700);
    border: 2px solid #000;
    color: #fff;
    text-align: left;
}
.c-icon-card::before {
    content: '';
    position: absolute;
    inset: 0;
    pointer-events: none;
    background: url('../images/icon-cards-line-circle.svg') no-repeat top left;
}
.c-icon-card > * { position: relative; z-index: 1; }

/* Left icon position keeps icon beside content */
.c-icon-cards--left .c-icon-card { flex-direction: row; align-items: flex-start; }

/* Icon  plain white line art, no tile, with the brand hard drop-shadow */
.c-icon-card__icon {
    width: 40px;
    height: 40px;
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    filter: drop-shadow(4px 4px 0 var(--color-primary-900));
}
.c-icon-card__icon svg { width: 40px; height: 40px; }
.c-icon-card__img { width: 40px; height: 40px; object-fit: contain; }

/* Content */
.c-icon-card__content { display: flex; flex-direction: column; gap: var(--space-sm); }
.c-icon-card__title {
    font-family: var(--font-heading);
    font-size: 1.75rem;
    font-weight: 900;
    line-height: 1.25;
    color: #fff;
    text-shadow: 4px 4px 0 var(--color-primary-900);
    margin: 0;
}
.c-icon-card__desc {
    font-size: var(--text-xl);
    font-weight: 400;
    line-height: 1.5;
    color: #fff;
    margin: 0;
}
.c-icon-card__link {
    display: inline-flex;
    align-items: center;
    gap: var(--space-xs);
    margin-top: var(--space-xs);
    font-weight: 700;
    color: #fff;
    text-decoration: none;
    transition: gap 0.2s ease;
}
.c-icon-card__link:hover { gap: var(--space-sm); }
.c-icon-card__link svg { width: 16px; height: 16px; }

/* CTA below the grid */
.c-icon-cards__cta { display: flex; justify-content: center; margin-top: var(--space-xl); }

/* Decorations: #1 off the top-left of the window, #2 off the right edge, vertically centered */
.c-icon-cards .c-decoration--1 {
    top: -3.5rem; 
    left: -2.25rem; 
    right: auto; 
    bottom: auto;
    width: 5.5rem; 
    max-width: none;
}
.c-icon-cards .c-decoration--2 {
    top: 50%; right: -1.5rem; left: auto; bottom: auto;
    transform: translateY(-50%);
    width: 7rem; max-width: none;
}
@media (max-width: 767px) {
    .c-icon-cards .c-decoration--1,
    .c-icon-cards .c-decoration--2 { display:none; }
}


/* =================================================================
   IMAGE BANNER
   ================================================================= */

.c-image-banner { padding: 10rem 0; overflow-x: clip; }
.c-image-banner__box {
    position: relative;
    display: flex;
    align-items: center;
    min-height: 377px;
    border: 1px solid #000;
    box-shadow: 8px 8px 0 0 #000;
    background: var(--color-primary-700) center / cover no-repeat;
    color: #fff;
}
/* Decorations anchored to the banner box: #1 top-right, #2 bottom-left (poking off the corners) */
.c-image-banner__box .c-decoration { width: 9.5rem; max-width: none; top: auto; right: auto; bottom: auto; left: auto; }
.c-image-banner__box .c-decoration--1 { top: -3.25rem; right: -3.25rem; }
.c-image-banner__box .c-decoration--2 { bottom: -3.25rem; left: -3.25rem; }
@media (max-width: 767px) {
    .c-image-banner__box .c-decoration { width: 6rem; }
    .c-image-banner__box .c-decoration--1 { top: -2.75rem; right: -2.75rem; }
    .c-image-banner__box .c-decoration--2 { bottom: -2rem; left: -2rem; }
}
.c-image-banner__box.c-image-banner--bg-white { background: #fff; color: var(--color-text); }
.c-image-banner__box.c-image-banner--bg-light { background: var(--color-bg-light); color: var(--color-text); }
.c-image-banner__box.c-image-banner--bg-dark { background: var(--color-bg-dark); }
.c-image-banner__box.c-image-banner--bg-magenta { background: var(--color-secondary-500); }

.c-image-banner__overlay { position: absolute; inset: 0; z-index: 0; background: rgba(75, 32, 67, 0.7); }

.c-image-banner__content {
    position: relative;
    z-index: 1;
    width: 100%;
    padding: clamp(1.5rem, 4vw, 2.625rem) 2.5rem;
    display: flex;
    flex-direction: column;
    gap: 1.75rem;
}
.c-image-banner__headline {
    font-family: var(--font-heading);
    font-size: var(--text-4xl);
    font-weight: 900;
    letter-spacing: -0.02em;
    line-height: 1.2;
    margin: 0;
    color: inherit;
}
.c-image-banner__text { 
    font-size: var(--text-xl); font-weight: 700; 
    line-height: 1.5;
    width: 1113px; 
    max-width:100%;
}
.c-image-banner__text p { margin: 0; }
.c-image-banner__text p + p { margin-top: var(--space-md); }

@media (max-width: 767px) {
    .c-image-banner__box { 
        box-shadow: 5px 5px 0 0 #000; 
        min-height:0;
    }
    .c-image-banner__headline { font-size: var(--text-3xl); }
    .c-image-banner__content {
        gap:var(--space-md);
        padding: var(--space-lg);
    }
    /* Phones: darker overlay + regular-weight body copy for easier reading. */
    .c-image-banner__overlay { background: rgba(75, 32, 67, 0.85); }
    .c-image-banner__text p { font-weight: 400; }
}


/* =================================================================
   REPAIR VS REPLACE
   ================================================================= */

.c-repair-replace { padding: 10rem 0; position: relative; }
.c-repair-replace__inner { position: relative; z-index: 1; }
.c-repair-replace__banner { width: 100%; height: auto; display: block; box-shadow: 8px 8px 0 0 #000; }
.c-repair-replace__content {
    max-width: 900px;
    margin: var(--space-2xl) auto 0;
    text-align: center;
}
.c-repair-replace__heading {
    font-family: var(--font-heading);
    font-size: var(--text-4xl);
    font-weight: 900;
    letter-spacing: -0.02em;
    line-height: 1.2;
    margin-bottom: var(--space-lg);
}
/* Editor uses bold for pink words, italic for brand-navy words (both stay visually normal) */
.c-repair-replace__heading strong,
.c-repair-replace__heading b {
    font-weight: inherit;
    font-style: normal;
    color: var(--color-secondary-500);
}
.c-repair-replace__heading em,
.c-repair-replace__heading i {
    font-style: normal;
    font-weight: inherit;
    color: var(--color-primary-500);
}
.c-repair-replace__text p { margin: 0 0 var(--space-md); }
.c-repair-replace__text p:last-child { margin-bottom: 0; }

.c-repair-replace--bg-light { background: var(--color-bg-light); }
.c-repair-replace--bg-dark { background: var(--color-bg-dark); color: #fff; }
.c-repair-replace--bg-magenta { background: var(--color-secondary-500); color: #fff; }

@media (max-width: 1081px) {
    .c-repair-replace__content {
        margin-top:var(--space-xl);
    }
}

/* =================================================================
   RESPONSIVE VERTICAL PADDING
   Components with 10rem vertical padding step down at two breakpoints.
   (padding-top:0 sections like .c-owner-quote only shrink their bottom.)
   ================================================================= */
@media (max-width: 1081px) {
    .c-content-media,
    .c-scards,
    .c-testimonials,
    .c-accordion,
    .c-repair-replace { padding-top: var(--space-3xl); padding-bottom: var(--space-3xl); }
    .c-owner-quote { padding-bottom: var(--space-3xl); }
}
@media (max-width: 767px) {
    .c-content-media,
    .c-icon-cards,
    .c-image-banner,
    .c-scards,
    .c-testimonials,
    .c-accordion,
    .c-repair-replace { padding-top: var(--space-3xl); padding-bottom: var(--space-3xl); }
    .c-owner-quote { padding-bottom: var(--space-3xl); }
}


/* =================================================================
   MAP EMBED
   ================================================================= */

.c-map { padding: var(--space-3xl) 0; position: relative; }
.c-map--bg-light { background: var(--color-bg-light); }
.c-map--bg-dark { background: var(--color-neutral-800); color: #fff; }
.c-map--bg-dark h2, .c-map--bg-dark h3, .c-map--bg-dark h4 { color: #fff; }
.c-map--bg-brand { background: var(--color-brand); color: #fff; }
.c-map--bg-brand h2, .c-map--bg-brand h3, .c-map--bg-brand h4 { color: #fff; }

.c-map__inner { position: relative; z-index: 1; }

.c-map__header {
    text-align: center;
    max-width: 800px;
    margin: 0 auto var(--space-2xl);
}
.c-map__header h2, .c-map__header h3, .c-map__header h4 {
    font-size: var(--text-3xl);
    margin-bottom: var(--space-md);
}
.c-map__header .subhead {
    font-size: var(--text-lg);
    color: var(--color-neutral-900);
}
.c-map--bg-dark .c-map__header .subhead,
.c-map--bg-brand .c-map__header .subhead,
.c-map--bg-image .c-map__header .subhead { color: rgba(255,255,255,0.8); }

.c-map__embed {
    border-radius: var(--radius);
    overflow: hidden;
    box-shadow: var(--shadow-lg);
}
.c-map__embed iframe {
    display: block;
    width: 100%;
    border: 0;
}

/* Height variants */
.c-map--h-small .c-map__embed iframe { height: 300px; }
.c-map--h-medium .c-map__embed iframe { height: 450px; }
.c-map--h-large .c-map__embed iframe { height: 600px; }

@media (max-width: 767px) {
    .c-map--h-small .c-map__embed iframe { height: 250px; }
    .c-map--h-medium .c-map__embed iframe { height: 350px; }
    .c-map--h-large .c-map__embed iframe { height: 450px; }
}


/* =================================================================
   CONTACT INFO BLOCK
   ================================================================= */

.c-contact-info { padding: var(--space-3xl) 0; position: relative; }
.c-contact-info--bg-light { background: var(--color-bg-light); }
.c-contact-info--bg-dark { background: var(--color-neutral-800); color: #fff; }
.c-contact-info--bg-dark h2, .c-contact-info--bg-dark h3, .c-contact-info--bg-dark h4 { color: #fff; }
.c-contact-info--bg-brand { background: var(--color-brand); color: #fff; }
.c-contact-info--bg-brand h2, .c-contact-info--bg-brand h3, .c-contact-info--bg-brand h4 { color: #fff; }

/* Pink gradient background mirrors the sitewide CTA (c-cta--global bg-brand) */
.c-contact-info--bg-magenta {
    background: linear-gradient(-71.22deg, var(--color-secondary-500) 0%, var(--color-secondary-500) 44.485%, var(--color-secondary-700) 100%);
    color: #fff;
}
.c-contact-info--bg-magenta h2, .c-contact-info--bg-magenta h3, .c-contact-info--bg-magenta h4 { color: #fff; }
.c-contact-info--bg-magenta .c-contact-info__header .subhead { color: rgba(255,255,255,0.85); }
.c-contact-info--bg-magenta .c-contact-info__label { color: rgba(255,255,255,0.72); }
.c-contact-info--bg-magenta .c-contact-info__value,
.c-contact-info--bg-magenta .c-contact-info__link { color: #fff; }

/* Blue gradient background (dark regular blue) with pink icon tiles */
.c-contact-info--grad-blue {
    background: linear-gradient(-71.22deg, var(--color-primary-500) 0%, var(--color-primary-500) 44.485%, var(--color-primary-700) 100%);
    color: #fff;
    border-top: 2px solid #000;
}
.c-contact-info--grad-blue h2, .c-contact-info--grad-blue h3, .c-contact-info--grad-blue h4 { color: #fff; }
.c-contact-info--grad-blue .eyebrow { color: var(--color-secondary-200) }
.c-contact-info--grad-blue .c-contact-info__header .subhead { color: rgba(255, 255, 255, 0.85); }
.c-contact-info--grad-blue .c-contact-info__label { color: rgba(255, 255, 255, 0.72); }
.c-contact-info--grad-blue .c-contact-info__value,
.c-contact-info--grad-blue .c-contact-info__link { color: #fff; }
.c-contact-info--grad-blue .c-contact-info__icon { background: var(--color-secondary-500); }
.c-contact-info--grad-blue .c-contact-info__item--link:hover .c-contact-info__icon { background: var(--color-secondary-600); }

.c-contact-info__inner { position: relative; z-index: 1; }

.c-contact-info__header {
    text-align: center;
    max-width: 800px;
    margin: 0 auto var(--space-2xl);
}
.c-contact-info__header h2, .c-contact-info__header h3, .c-contact-info__header h4 {
    font-size: var(--text-3xl);
    margin-bottom: var(--space-md);
}
.c-contact-info__header .subhead {
    font-size: var(--text-lg);
    color: var(--color-neutral-900);
}
.c-contact-info--bg-dark .c-contact-info__header .subhead,
.c-contact-info--bg-brand .c-contact-info__header .subhead,
.c-contact-info--bg-image .c-contact-info__header .subhead { color: rgba(255,255,255,0.8); }

/* Items layout */
.c-contact-info__items {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-xl);
}

/* Stacked layout (default) */
.c-contact-info--stacked .c-contact-info__items {
    flex-direction: column;
    align-items: center;
    max-width: 500px;
    margin: 0 auto;
}
.c-contact-info--stacked .c-contact-info__item {
    text-align: center;
    flex-direction: column;
}
.c-contact-info--stacked .c-contact-info__icon { margin-bottom: var(--space-sm); }

/* Inline layout: one row on large screens, one-per-row (left aligned) on mobile */
.c-contact-info--inline .c-contact-info__items {
    display: grid;
    grid-template-columns: repeat(4, max-content);
    justify-content: center;
    align-items: start;
}
@media (max-width: 1140px) {
    .c-contact-info--inline .c-contact-info__items {
        grid-template-columns: repeat(2, max-content);
    }
}
@media (max-width: 600px) {
    .c-contact-info--inline .c-contact-info__items {
        grid-template-columns: 1fr;
        justify-content: start;
    }
}

/* Individual item icon vertically centred with the two text lines */
.c-contact-info__item {
    display: flex;
    align-items: center;
    gap: var(--space-md);
}
/* Whole item is a link (icon + text clickable) */
.c-contact-info__item--link {
    text-decoration: none;
    color: inherit;
}
.c-contact-info__item--link:hover .c-contact-info__value { text-decoration: underline; }
/* Icon hover mirrors the button hover: nudge down-right + shrink the hard shadow */
.c-contact-info__item--link:hover .c-contact-info__icon {
    transform: translate(2px, 2px);
    box-shadow: 2px 2px 0 0 #000;
}

/* Square blue tile with a hard drop shadow matches the phone-button icon (.btn-phone__icon) */
.c-contact-info__icon {
    width: 58px;
    height: 58px;
    flex-shrink: 0;
    display: inline-grid;
    place-items: center;
    background: var(--color-brand-blue);
    border: 2px solid #000;
    border-radius: 0;
    box-shadow: 4px 4px 0 0 #000;
    color: #fff;
    transition: transform var(--transition), box-shadow var(--transition), background var(--transition);
}
.c-contact-info__icon svg {
    width: 26px;
    height: 26px;
}
@media (max-width: 959px) {
    .c-contact-info__icon { width: 48px; height: 48px; }
    .c-contact-info__icon svg { width: 22px; height: 22px; }
}
/* Dark/image backgrounds soften the tile; the magenta gradient keeps the blue tile (matches phone icon) */
.c-contact-info--bg-dark .c-contact-info__icon,
.c-contact-info--bg-image .c-contact-info__icon {
    background: rgba(255,255,255,0.2);
    border-color: rgba(255,255,255,0.35);
    box-shadow: 4px 4px 0 0 rgba(0,0,0,0.35);
}

.c-contact-info__content {
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.c-contact-info__label {
    display: block;
    font-size: var(--text-sm);
    font-weight: 600;
    line-height: 1.2;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--color-neutral-500);
    margin-bottom: 2px;
}
.c-contact-info--bg-dark .c-contact-info__label,
.c-contact-info--bg-brand .c-contact-info__label,
.c-contact-info--bg-image .c-contact-info__label { color: rgba(255,255,255,0.6); }

.c-contact-info__value {
    display: block;
    font-size: var(--text-lg);
    line-height: 1.2;
    color: var(--color-neutral-800);
}
.c-contact-info--bg-dark .c-contact-info__value,
.c-contact-info--bg-brand .c-contact-info__value,
.c-contact-info--bg-image .c-contact-info__value { color: #fff; }

.c-contact-info__link {
    color: var(--color-brand);
    text-decoration: none;
    transition: color 0.2s ease;
}
.c-contact-info__link:hover {
    text-decoration: underline;
}
.c-contact-info--bg-dark .c-contact-info__link,
.c-contact-info--bg-brand .c-contact-info__link,
.c-contact-info--bg-image .c-contact-info__link { color: #fff; }

.c-contact-info__empty {
    text-align: center;
    color: var(--color-neutral-500);
    font-style: italic;
}

/* Contact page normalize body copy to the Content + Media paragraph style
   (1.25rem / 1.5 line-height / neutral-900). Hero lead keeps its own treatment. */
.page-id-27 .subhead {
    font-size: 1.25rem;
    line-height: var(--leading-normal);
}
.page-id-27 .c-form-section__content .subhead { color: var(--color-neutral-900); }


/* =================================================================
   ARCHIVE
   ================================================================= */

.archive-page { padding: var(--space-3xl) 0; }

.archive-page__header {
    margin-bottom: var(--space-2xl);
}
.archive-page__title {
    font-size: var(--text-4xl);
    margin-bottom: var(--space-sm);
}
.archive-page__description {
    font-size: var(--text-lg);
    color: var(--color-neutral-900);
    max-width: 700px;
}
.archive-page__description p:last-child { margin-bottom: 0; }

/* Archive grid */
.archive-page__grid {
    display: grid;
    gap: var(--space-xl);
}
.archive-page--grid.archive-page--cols-2 .archive-page__grid {
    grid-template-columns: repeat(2, 1fr);
}
.archive-page--grid.archive-page--cols-3 .archive-page__grid {
    grid-template-columns: repeat(3, 1fr);
}
@media (max-width: 1024px) {
    .archive-page--grid.archive-page--cols-3 .archive-page__grid {
        grid-template-columns: repeat(2, 1fr);
    }
}
@media (max-width: 767px) {
    .archive-page__grid { grid-template-columns: 1fr !important; }
}

/* List layout */
.archive-page--list .archive-page__grid {
    display: flex;
    flex-direction: column;
    gap: var(--space-lg);
}
.archive-page--list .archive-card {
    flex-direction: row;
    align-items: flex-start;
}
.archive-page--list .archive-card__image {
    width: 280px;
    flex-shrink: 0;
}
@media (max-width: 767px) {
    .archive-page--list .archive-card {
        flex-direction: column;
    }
    .archive-page--list .archive-card__image {
        width: 100%;
    }
}

/* Archive card */
.archive-card {
    display: flex;
    flex-direction: column;
    background: #fff;
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    overflow: hidden;
    transition: box-shadow 0.2s ease, transform 0.2s ease;
}
.archive-card:hover {
    box-shadow: var(--shadow-lg);
    transform: translateY(-2px);
}

.archive-card__image {
    display: block;
    overflow: hidden;
}
.archive-card__image img {
    aspect-ratio: 16/9;
    object-fit: cover;
    width: 100%;
    transition: transform 0.3s ease;
}
.archive-card:hover .archive-card__image img {
    transform: scale(1.03);
}

.archive-card__content {
    padding: var(--space-lg);
    flex: 1;
    display: flex;
    flex-direction: column;
}

.archive-card__header { margin-bottom: var(--space-sm); }

.archive-card__title {
    font-size: var(--text-xl);
    line-height: var(--leading-tight);
    margin-bottom: var(--space-xs);
}
.archive-card__title a {
    color: inherit;
    text-decoration: none;
}
.archive-card__title a:hover {
    color: var(--color-brand);
}

.archive-card__meta {
    font-size: var(--text-sm);
    color: var(--color-neutral-500);
    display: flex;
    align-items: center;
    gap: var(--space-xs);
}
.archive-card__sep { opacity: 0.5; }

.archive-card__excerpt {
    color: var(--color-neutral-900);
    flex: 1;
}
.archive-card__excerpt p { margin: 0; }

/* Empty state */
.archive-page__empty {
    text-align: center;
    padding: var(--space-3xl) var(--space-xl);
    color: var(--color-neutral-500);
}

/* Pagination */
.pagination {
    margin-top: var(--space-2xl);
    display: flex;
    justify-content: center;
}
.pagination__list {
    display: flex;
    gap: var(--space-xs);
    list-style: none;
    padding: 0;
    margin: 0;
}
.pagination__item a,
.pagination__item span {
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 40px;
    height: 40px;
    padding: 0 var(--space-sm);
    border-radius: var(--radius);
    text-decoration: none;
    font-weight: 500;
    transition: background 0.2s ease, color 0.2s ease;
}
.pagination__item a {
    color: var(--color-neutral-700);
    background: var(--color-neutral-100);
}
.pagination__item a:hover {
    background: var(--color-brand);
    color: #fff;
}
.pagination__item--current span {
    background: var(--color-brand);
    color: #fff;
}


/* =================================================================
   SINGLE POST
   ================================================================= */

.single-page { padding: var(--space-3xl) 0; }

/* Post article */
.single-post { margin-bottom: var(--space-2xl); }

.single-post__header {
    margin-bottom: var(--space-xl);
}
.single-post__title {
    font-size: var(--text-4xl);
    line-height: var(--leading-tight);
    margin-bottom: var(--space-sm);
}
.single-post__meta {
    font-size: var(--text-sm);
    color: var(--color-neutral-500);
}

.single-post__image {
    margin-bottom: var(--space-xl);
    border-radius: var(--radius);
    overflow: hidden;
}
.single-post__image img {
    width: 100%;
    height: auto;
}

.single-post__content {
    margin-bottom: var(--space-xl);
}

.single-post__footer {
    padding-top: var(--space-lg);
    border-top: 1px solid var(--color-neutral-200);
}
.single-post__taxonomies {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-xs);
    align-items: center;
    margin-bottom: var(--space-sm);
}
.single-post__taxonomies:last-child { margin-bottom: 0; }
.single-post__tax-label {
    font-weight: 600;
    color: var(--color-neutral-900);
    margin-right: var(--space-xs);
}
.single-post__taxonomies a {
    color: var(--color-brand);
    text-decoration: none;
}
.single-post__taxonomies a:hover {
    text-decoration: underline;
}

/* Author box */
.author-box {
    display: flex;
    gap: var(--space-lg);
    padding: var(--space-xl);
    background: var(--color-neutral-50);
    border-radius: var(--radius);
    margin-bottom: var(--space-2xl);
}
@media (max-width: 600px) {
    .author-box {
        flex-direction: column;
        text-align: center;
    }
}

.author-box__avatar { flex-shrink: 0; }
.author-box__img {
    width: 80px;
    height: 80px;
    border-radius: 50%;
}

.author-box__content { flex: 1; }
.author-box__name {
    font-size: var(--text-lg);
    margin-bottom: var(--space-xs);
}
.author-box__name a {
    color: inherit;
    text-decoration: none;
}
.author-box__name a:hover {
    color: var(--color-brand);
}
.author-box__bio {
    color: var(--color-neutral-900);
    margin-bottom: var(--space-sm);
}
.author-box__bio p:last-child { margin-bottom: 0; }
.author-box__link {
    color: var(--color-brand);
    text-decoration: none;
    font-weight: 500;
}
.author-box__link:hover {
    text-decoration: underline;
}

/* Related posts */
.related-posts {
    margin-bottom: var(--space-2xl);
    padding-top: var(--space-xl);
    border-top: 1px solid var(--color-neutral-200);
}
.related-posts__title {
    font-size: var(--text-2xl);
    margin-bottom: var(--space-lg);
}
.related-posts__grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: var(--space-lg);
}
@media (max-width: 767px) {
    .related-posts__grid {
        grid-template-columns: 1fr;
    }
}

.related-posts__item {
    background: #fff;
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    overflow: hidden;
}
.related-posts__image {
    display: block;
    overflow: hidden;
}
.related-posts__image img {
    aspect-ratio: 16/9;
    object-fit: cover;
    width: 100%;
    transition: transform 0.3s ease;
}
.related-posts__item:hover .related-posts__image img {
    transform: scale(1.03);
}
.related-posts__item-title {
    font-size: var(--text-base);
    padding: var(--space-md);
    padding-bottom: var(--space-xs);
}
.related-posts__item-title a {
    color: inherit;
    text-decoration: none;
}
.related-posts__item-title a:hover {
    color: var(--color-brand);
}
.related-posts__date {
    display: block;
    padding: 0 var(--space-md) var(--space-md);
    font-size: var(--text-sm);
    color: var(--color-neutral-500);
}

/* Post navigation */
.post-nav {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--space-lg);
    padding-top: var(--space-xl);
    border-top: 1px solid var(--color-neutral-200);
}
@media (max-width: 600px) {
    .post-nav {
        grid-template-columns: 1fr;
    }
}

.post-nav__link {
    display: flex;
    flex-direction: column;
    gap: var(--space-xs);
    padding: var(--space-lg);
    background: var(--color-neutral-50);
    border-radius: var(--radius);
    text-decoration: none;
    transition: background 0.2s ease;
}
.post-nav__link:hover {
    background: var(--color-neutral-100);
}
.post-nav__link--empty {
    opacity: 0;
    pointer-events: none;
}
.post-nav__link--next {
    text-align: right;
}

.post-nav__label {
    display: flex;
    align-items: center;
    gap: var(--space-xs);
    font-size: var(--text-sm);
    font-weight: 600;
    color: var(--color-neutral-500);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}
.post-nav__link--next .post-nav__label {
    justify-content: flex-end;
}
.post-nav__label svg {
    width: 16px;
    height: 16px;
}

.post-nav__title {
    font-size: var(--text-lg);
    font-weight: 600;
    color: var(--color-neutral-800);
    line-height: var(--leading-tight);
}

/* Search form */
.search-form-wrap {
    margin-bottom: var(--space-2xl);
}
.search-form {
    display: flex;
    gap: var(--space-sm);
    max-width: 500px;
}
.search-form label {
    flex: 1;
}
.search-form .search-field {
    width: 100%;
    padding: var(--space-sm) var(--space-md);
    border: 1px solid var(--color-neutral-300);
    border-radius: var(--radius);
    font-size: var(--text-base);
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
}
.search-form .search-field:focus {
    outline: none;
    border-color: var(--color-brand);
    box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);
}
.search-form .search-submit {
    padding: var(--space-sm) var(--space-lg);
    background: var(--color-brand);
    color: #fff;
    border: none;
    border-radius: var(--radius);
    font-weight: 600;
    cursor: pointer;
    transition: background 0.2s ease;
}
.search-form .search-submit:hover {
    background: var(--color-brand-dark);
}


/* =================================================================
   404 PAGE
   ================================================================= */

.error-404 {
    padding: var(--space-3xl) 0;
    min-height: 60vh;
    display: flex;
    align-items: center;
    text-align: center;
    background: var(--color-bg-light);
}
.error-404 .container { width: 100%; max-width: 600px; }
.error-404__code {
    /* font-family: var(--font-heading); */
    /* font-size: clamp(6rem, 20vw, 12rem); */
    /* font-weight: 700; */
    /* line-height: 1; */
    /* color: var(--color-neutral-200); */
    margin-bottom: var(--space-md);
}

.error-404__code svg {
    width: 400px;
    height: auto;
    max-width: 100%;
}

.error-404 h1 {
    font-size: var(--text-3xl);
    color: var(--color-neutral-800);
    margin-bottom: var(--space-md);
}
.error-404__content {
    color: var(--color-neutral-900);
    margin-bottom: var(--space-xl);
}
.error-404__content p { margin-bottom: var(--space-md); }
.error-404__content p:last-child { margin-bottom: 0; }
.error-404__actions {
    display: flex;
    gap: var(--space-md);
    justify-content: center;
    flex-wrap: wrap;
}

.page-content { padding: var(--space-3xl) 0; }
.page-content h1 { margin-bottom: var(--space-xl); }


/* =================================================================
   PRINT STYLES
   ================================================================= */

@media print {
    /* Page setup */
    @page {
        margin: 0.75in;
        size: letter;
    }

    /* Reset colors for print */
    * {
        background: transparent !important;
        color: #000 !important;
        box-shadow: none !important;
        text-shadow: none !important;
    }

    /* Typography adjustments */
    body {
        font-size: 12pt;
        line-height: 1.5;
    }

    h1 { font-size: 24pt; }
    h2 { font-size: 20pt; }
    h3 { font-size: 16pt; }
    h4, h5, h6 { font-size: 14pt; }

    /* Hide non-printable elements */
    .site-header,
    .site-footer,
    .site-nav,
    .mobile-nav-toggle,
    .skip-link,
    .c-sticky-cta,
    .btn,
    .btn--primary,
    .btn--secondary,
    .c-hero__buttons,
    .c-cta__buttons,
    .c-content-media__buttons,
    .c-cards .c-card__link,
    .search-form,
    .post-nav,
    .pagination,
    .gform_wrapper,
    .c-form-section,
    .global-cta,
    video,
    iframe,
    .c-gallery[data-layout="carousel"],
    .c-testimonials__nav,
    .c-testimonials__dots,
    noscript {
        display: none !important;
    }

    /* Show main content area */
    .site-main,
    main {
        width: 100% !important;
        margin: 0 !important;
        padding: 0 !important;
    }

    /* Container adjustments */
    .container {
        max-width: 100% !important;
        padding: 0 !important;
        margin: 0 !important;
    }

    /* Component spacing for print */
    .component {
        padding: 0.5in 0 !important;
        margin: 0 !important;
        page-break-inside: avoid;
    }

    /* Hero - simplified */
    .c-hero {
        min-height: auto !important;
        height: auto !important;
        padding: 0.25in 0 !important;
        background: none !important;
    }
    .c-hero::before { display: none !important; }
    .c-hero__content {
        position: static !important;
        transform: none !important;
    }
    .c-hero__eyebrow { color: #666 !important; }
    .c-hero__headline { font-size: 28pt !important; }

    /* Content + Media - stack vertically */
    .c-content-media__inner {
        display: block !important;
    }
    .c-content-media__media {
        max-width: 100% !important;
        margin-bottom: 0.25in !important;
    }
    .c-content-media__media img {
        max-width: 4in !important;
        height: auto !important;
    }

    /* Cards - grid for print */
    .c-cards__grid {
        display: grid !important;
        grid-template-columns: repeat(2, 1fr) !important;
        gap: 0.25in !important;
    }
    .c-card {
        border: 1px solid #ccc !important;
        padding: 0.15in !important;
        page-break-inside: avoid;
    }
    .c-card__image {
        max-height: 1.5in !important;
        overflow: hidden;
    }

    /* Testimonials - show all */
    .c-testimonials__slider {
        display: block !important;
        overflow: visible !important;
    }
    .c-testimonials__slider .c-testimonial {
        display: block !important;
        width: 100% !important;
        margin-bottom: 0.25in !important;
        border: 1px solid #ccc !important;
        padding: 0.15in !important;
        page-break-inside: avoid;
    }
    .c-testimonials__slider .c-testimonial[hidden] {
        display: block !important;
    }

    /* Accordion - expand all for print */
    .c-accordion__content {
        display: block !important;
        max-height: none !important;
        overflow: visible !important;
        padding: 0.1in 0 !important;
    }
    .c-accordion__item {
        border: 1px solid #ccc !important;
        margin-bottom: 0.1in !important;
        padding: 0.1in !important;
        page-break-inside: avoid;
    }
    .c-accordion__icon { display: none !important; }

    /* Stats */
    .c-stats__grid {
        display: flex !important;
        flex-wrap: wrap !important;
        gap: 0.25in !important;
    }
    .c-stat {
        flex: 1 1 30% !important;
        text-align: center;
    }

    /* Logo grid */
    .c-logos__grid {
        display: flex !important;
        flex-wrap: wrap !important;
        gap: 0.15in !important;
    }
    .c-logos__item {
        width: 1in !important;
        filter: none !important;
    }
    .c-logos__item img {
        max-width: 100% !important;
        max-height: 0.75in !important;
    }

    /* Gallery - grid only */
    .c-gallery__grid {
        display: grid !important;
        grid-template-columns: repeat(3, 1fr) !important;
        gap: 0.1in !important;
    }
    .c-gallery__item img {
        max-height: 1.5in !important;
    }

    /* Icon cards */
    .c-icon-cards__grid {
        display: grid !important;
        grid-template-columns: repeat(2, 1fr) !important;
        gap: 0.2in !important;
    }
    .c-icon-card {
        border: 1px solid #ccc !important;
        padding: 0.1in !important;
        page-break-inside: avoid;
    }

    /* Contact info */
    .c-contact-info__items {
        display: block !important;
    }
    .c-contact-info__item {
        margin-bottom: 0.1in !important;
    }

    /* Map - show placeholder text */
    .c-map__embed {
        border: 1px solid #ccc !important;
        padding: 0.25in !important;
        text-align: center;
    }
    .c-map__embed::after {
        content: "[Map - See website for interactive version]";
        display: block;
        font-style: italic;
        color: #666 !important;
    }

    /* Images */
    img {
        max-width: 100% !important;
        height: auto !important;
        page-break-inside: avoid;
    }

    /* Links - show URLs */
    a[href^="http"]:after,
    a[href^="https"]:after {
        content: " (" attr(href) ")";
        font-size: 10pt;
        color: #666 !important;
        word-break: break-all;
    }

    /* Don't show URL for buttons or images */
    a.btn:after,
    a.c-card:after,
    a > img:after,
    .c-logos__item a:after {
        content: none !important;
    }

    /* Page break hints */
    h1, h2, h3, h4, h5, h6 {
        page-break-after: avoid;
        page-break-inside: avoid;
    }

    p, blockquote, ul, ol, dl, table, figure {
        page-break-inside: avoid;
    }

    /* Orphan/widow control */
    p {
        orphans: 3;
        widows: 3;
    }

    /* Archive/blog posts */
    .archive-page__grid {
        display: block !important;
    }
    .archive-card {
        display: flex !important;
        gap: 0.2in !important;
        border-bottom: 1px solid #ccc !important;
        padding: 0.15in 0 !important;
        page-break-inside: avoid;
    }
    .archive-card__image {
        width: 1.5in !important;
        flex-shrink: 0;
    }

    /* Single post */
    .single-post__featured {
        max-height: 3in !important;
        overflow: hidden;
    }
    .author-box {
        border: 1px solid #ccc !important;
        padding: 0.15in !important;
        margin: 0.25in 0 !important;
    }

    /* Prose content */
    .prose {
        max-width: 100% !important;
    }
    .prose a:after {
        content: none !important; /* Too noisy in body text */
    }

    /* CTA section - text only */
    .c-cta {
        border: 2px solid #000 !important;
        padding: 0.25in !important;
        text-align: center;
    }

    /* Background sections - add border for visual separation */
    .bg--dark,
    .bg--brand,
    .bg--light {
        border: 1px solid #ccc !important;
        padding: 0.2in !important;
        margin: 0.1in 0 !important;
    }
}