/* =================================================================
   BREAKPOINTS REFERENCE
   =================================================================
   Mobile:   768px   (max-width: 768px for mobile, min-width: 769px for 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 | Tokens | Base | Components
 */

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

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

@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 â€” the mark's red. 600 is the AA-safe text/CTA value;
       500 is brighter and reserved for dark surfaces only. */
    --color-primary-50: #fdf2f3;
    --color-primary-100: #fbe0e3;
    --color-primary-200: #f5bcc2;
    --color-primary-300: #ea8a94;
    --color-primary-400: #e04a58;
    --color-primary-500: #d91520;
    --color-primary-600: #b51226;
    --color-primary-700: #8e0d1d;
    --color-primary-800: #6d0a17;
    --color-primary-900: #4b070f;

    /* Secondary color scale â€” unused by this build; kept neutral so nothing
       downstream can quietly introduce a second accent. */
    --color-secondary-50: #f6f6f5;
    --color-secondary-100: #ececea;
    --color-secondary-200: #d8d8d6;
    --color-secondary-300: #b9b9b6;
    --color-secondary-400: #8e908e;
    --color-secondary-500: #6c7073;
    --color-secondary-600: #4c4f52;
    --color-secondary-700: #35383a;
    --color-secondary-800: #232527;
    --color-secondary-900: #141517;

    /* Neutral color scale â€” slightly warm greys, off-white paper */
    --color-neutral-50: #fbfbfa;
    --color-neutral-100: #f2f2f1;
    --color-neutral-200: #e5e5e3;
    --color-neutral-300: #d8d8d6;
    --color-neutral-400: #9c9fa2;
    --color-neutral-500: #6c7073;
    --color-neutral-600: #4c4f52;
    --color-neutral-700: #2e3033;
    --color-neutral-800: #1c1d1f;
    --color-neutral-900: #121314;

    /* Error color scale */
    --color-error-50: #fef2f2;
    --color-error-100: #fee2e2;
    --color-error-200: #fecaca;
    --color-error-300: #fca5a5;
    --color-error-400: #f87171;
    --color-error-500: #ef4444;
    --color-error-600: #dc2626;
    --color-error-700: #b91c1c;
    --color-error-800: #991b1b;
    --color-error-900: #7f1d1d;

    /* Brand aliases (identity â€” remapped per client by run-setup.php) */
    --color-brand: var(--color-primary-600);
    --color-brand-dark: var(--color-primary-700);
    --color-brand-light: var(--color-primary-100);
    --color-brand-rgb: 181, 18, 38;
    /* Brighter red. Legible on black only â€” never put it on paper. */
    --color-brand-on-dark: var(--color-primary-500);

    /* Layout aliases (structural â€” safe neutral defaults) */
    --color-paper: var(--color-neutral-100);
    --color-bg-light: var(--color-neutral-50);
    --color-bg-dark: #101112;
    --color-bg-footer: #101112;
    --color-text: var(--color-neutral-900);
    --color-text-muted: var(--color-neutral-600);
    --color-text-soft: var(--color-neutral-500);
    --color-text-on-dark: #ededec;
    --color-text-on-dark-muted: var(--color-neutral-400);
    --color-rule: var(--color-neutral-300);
    --color-rule-soft: var(--color-neutral-200);
    --color-rule-dark: var(--color-neutral-700);

    /* Typography â€” Effra, served by the Adobe Fonts kit set in Site Settings.
       Headings run Heavy (900); body runs Regular (400) and Medium (500). */
    --font-sans: 'effra', 'Roboto', system-ui, -apple-system, sans-serif;
    --font-heading: 'effra', 'Roboto', system-ui, -apple-system, sans-serif;
    --weight-heading: 900;
    --weight-medium: 500;

    /* Texas outline, used as a mask in the hero. */
    --joat-texas: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 106 100'%3E%3Cpath d='M29.1 0 L53.6 0 L53.6 18.2 L60.0 18.2 L68.9 22.2 L74.6 25.0 L78.6 24.7 L83.4 26.3 L91.5 24.7 L98.1 26.8 L101.6 27.7 L101.6 42.4 L103.3 49.7 L105.6 51.6 L104.0 58.2 L104.4 63.1 L93.9 68.5 L82.6 76.0 L77.8 79.7 L75.0 86.3 L76.2 93.8 L76.6 98.0 L74.6 100 L67.3 95.2 L60.9 94.7 L58.0 88.6 L57.6 83.5 L51.2 79.3 L48.4 69.4 L42.3 63.1 L34.3 63.0 L31.0 67.1 L28.2 70.5 L23.0 67.7 L17.3 64.3 L15.7 59.1 L13.3 54.4 L8.5 50.7 L1.2 44.6 L0 43.1 L0.24 42.2 L28.9 42.2 L29.1 0 Z'/%3E%3C/svg%3E");

    --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: 1180px;
    --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; }

body {
    margin: 0;
    font-family: var(--font-sans);
    font-size: var(--text-base);
    line-height: var(--leading-normal);
    color: var(--color-neutral-900);
    background: var(--color-neutral-50);
    -webkit-font-smoothing: antialiased;
}

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

/* 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; }

h1, h2, h3, h4, h5, h6 {
    margin: 0 0 var(--space-md);
    font-family: var(--font-heading);
    font-weight: 700;
    line-height: var(--leading-tight);
    /* Rebalance heading line lengths so short trailing words don't strand
       on a line of their own (avoids "â€¦Roof to / Foundation" orphans). */
    text-wrap: balance;
}

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-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;
    padding: 0 var(--gutter);
}
.container--narrow { max-width: 720px; }
.container--wide { max-width: 1400px; }

/* 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 li { margin-bottom: var(--space-xs); }
.prose a { color: var(--color-brand); text-decoration: underline; }

/* Eyebrow / Subhead */
.eyebrow {
    margin-bottom: var(--space-sm);
    font-size: var(--text-sm);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--color-brand);
}
.subhead {
    font-size: var(--text-lg);
    color: var(--color-neutral-600);
}

/* Buttons */
.btn {
    display: inline-flex;
    align-items: center;
    gap: var(--space-xs);
    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);
}
.btn--primary {
    background: var(--color-brand);
    color: #fff;
    border-color: var(--color-brand);
}
.btn--primary:hover {
    background: var(--color-brand-dark);
    border-color: var(--color-brand-dark);
}
.btn--secondary {
    background: transparent;
    color: var(--color-brand);
    border-color: var(--color-brand);
}
.btn--secondary:hover {
    background: var(--color-brand);
    color: #fff;
}
.btn--white {
    background: #fff;
    color: var(--color-brand);
    border-color: #fff;
}
.btn--white:hover {
    background: var(--color-neutral-100);
}
.btn--outline-light {
    background: transparent;
    color: #fff;
    border-color: rgba(255,255,255,0.5);
}
.btn--outline-light:hover {
    background: rgba(255,255,255,0.1);
    border-color: #fff;
}

.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);
}
.site-header__inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    height: 72px;
}
.site-header__logo img { height: 40px; width: auto; }
/* Scrolled state */
body.scrolled .site-header {
    box-shadow: 0 2px 16px rgba(0, 0, 0, 0.08);
}
body.scrolled .site-header__inner {
    
}
body.scrolled .site-header__logo img {
    
}
.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); */
}
.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;
    gap: var(--space-lg);
}
.site-nav__menu a {
    font-weight: 500;
    text-decoration: none;
    color: var(--color-neutral-700);
}
.site-nav__menu a:hover { color: var(--color-brand); }

/* 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);
}

/* Desktop dropdown */
@media (min-width: 1024px) {
    .site-nav__menu .sub-menu {
        position: absolute;
        top: 100%;
        left: 0;
        min-width: 200px;
        list-style: none;
        margin: 0;
        padding: var(--space-sm) 0;
        background: #fff;
        border: 1px solid var(--color-neutral-200);
        border-radius: var(--radius);
        box-shadow: var(--shadow);
        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 a {
        display: block;
        padding: var(--space-sm) var(--space-md);
        font-weight: 400;
    }
    .site-nav__menu .sub-menu a:hover {
        background: var(--color-neutral-50);
    }
}

@media (max-width: 1023px) {
    .site-nav {
        position: fixed;
        top: 72px;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
        background: #fff;
        padding: var(--space-lg) 5%;
        padding-top: 5rem;
        transform: translateX(100%);
        transition: transform var(--transition);
        overflow-y: auto;
    }
    .site-nav.is-open { transform: translateX(0); }
    body.nav-open { overflow: hidden; }
    .site-nav__menu { flex-direction: column; gap: 0; }
    .site-nav__menu > li {
        display:flex;
        border-bottom: 1px solid var(--color-neutral-200);
        /* flex-direction:column; */
        /* align-items:flex-start!important; */
    }
    .site-nav__menu > .menu-item-has-children > a,
    .site-nav__menu > li > a { 
        display: block; 
        padding: 1.5rem 0 1rem 0; 
		font-size:1.25rem;
    }
    /* Row layout so the toggle button sits beside the link */
    .site-nav__menu > .menu-item-has-children {
        flex-direction: row;
        flex-wrap: wrap;
        align-items: center;
        justify-content:flex-start;
    }
    .site-nav__menu > .menu-item-has-children > a {
        flex: 1;
        flex-basis: auto;
        min-width: 0;
        /* display: block; */
    }
    /* Sub-menu spans full width on its own row */
    .site-nav__menu > .menu-item-has-children > .sub-menu {
        flex-basis: 100%;
    }
    /* Hide the pseudo-element arrow â€” the button replaces it */
    .site-nav__menu > .menu-item-has-children > a::after {
        display: none;
    }
    /* Toggle button arrow */
    .submenu-toggle {
        background: none;
        border: none;
        padding: 1rem;
        cursor: pointer;
        color: inherit;
        flex-shrink: 0;
        display: flex;
        align-items: center;
        justify-content: center;
    }
    .submenu-toggle::before {
        content: '';
        border: solid var(--color-neutral-500);
        border-width: 0 2px 2px 0;
        padding: 8px;
        transform: rotate(45deg);
        margin-top: -6px;
        transition: all var(--transition);
        display: block;
    }
    .site-nav__menu > .menu-item-has-children.is-open > .submenu-toggle::before {
        transform: rotate(-135deg);
        margin-top: 2px;
    }
    .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: all var(--transition);
        width:100%; 
    }
    .site-nav__menu > .menu-item-has-children.is-open > .sub-menu {
        max-height: 500px;
        overflow-y: scroll;
        padding-bottom:var(--space-sm);
    }
    .site-nav__menu .sub-menu li {

    }
    .site-nav__menu .sub-menu a {
        display: block;
        padding: .875rem 0;
        font-weight: 600;
        /* color: #fff; */
        font-size:1rem;
    }
    .site-nav__menu .sub-menu li.current-menu-item > a,
    .site-nav__menu .sub-menu a:focus, 
    .site-nav__menu .sub-menu a:hover {
        color: var(--color-neutral-900)!important;
        opacity:0.65;
    }
    .site-nav__menu > li.current-menu-item > a,
    .site-nav__menu > li > a:hover,
    .site-nav__menu > li > a:focus{
        color: var(--color-neutral-900)!important;
        opacity:0.9;
    }
	
	.site-nav__menu .sub-menu li.current-menu-item a, 
	.site-nav__menu .sub-menu a:focus, 
	.site-nav__menu .sub-menu a:hover {
		color: var(--color-secondary-800);
		background: var(--color-neutral-50);
		padding-left:.325rem;
	}
}

@media (min-width: 1024px) {
    .site-nav {
        display: flex;
        align-items: center;
    }
	.site-header__toggle,
    .site-nav__menu > li.mobile-show,
    button.submenu-toggle{
        display:none!important;
    }
}

body.nav-open {
    overflow: hidden;
}

/* Header actions (phone + CTA) */
.site-nav__actions {
    display: flex;
    align-items: center;
    gap: var(--space-md);
    margin-top: var(--space-lg);
    /* padding-top: var(--space-md); */
    /* border-top: 1px solid var(--color-neutral-100); */
}
.site-nav__phone {
    display: flex;
    align-items: center;
    gap: var(--space-xs);
    font-weight: 500;
    color: var(--color-neutral-700);
    text-decoration: none;
}
.site-nav__phone svg { width: 18px; height: 18px; position: relative; top: 2px;}
.site-nav__phone:hover { color: var(--color-brand); }

@media (min-width: 1024px) {
    .site-nav__actions {
        margin-top: 0;
        margin-left: var(--space-lg);
        padding-top: 0;
        padding-left: var(--space-lg);
        border-top: none;
        border-left: 1px solid var(--color-neutral-200);
    }
}
@media (max-width: 1023px) {
    .site-nav__phone span { display: none; }
    .site-nav__phone svg { width: 24px; height: 24px; }
    .site-nav__actions{
        flex-wrap:wrap;
    }

    .site-nav__actions > a{
        flex-basis:100%;
        justify-content:center;
    }
}

/* 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-text-muted);
    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: 768px) {
    .c-mega-menu {
        display: none !important;
    }
}

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

.site-footer {
    background: var(--color-bg-footer);
    color: #fff;
    padding: var(--space-3xl) 0 var(--space-lg);
}
.site-footer__inner {
    display: grid;
    gap: var(--space-xl);
}
.site-footer__logo img { height: 32px; width: auto; margin-bottom: var(--space-md); }
.site-footer__social {
    display: flex;
    gap: var(--space-sm);
}
.site-footer__social a {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background: var(--color-neutral-800);
    color: var(--color-neutral-400);
    transition: background var(--transition), color var(--transition);
}
.site-footer__social a span {
    display: flex;
    align-items: center;
    justify-content: center;
}
.site-footer__social a:hover {
    background: var(--color-brand);
    color: #fff;
}
.site-footer__social svg { width: 20px; height: 20px; }
.site-footer__social-icon { width: 20px; height: 20px; object-fit: contain; }

.site-footer__columns {
    display: flex;
    flex-wrap: nowrap;
    gap: var(--space-lg);
    padding: var(--space-xl) 0;
}

.site-footer__col {
    min-width: 0;
}

.site-footer__col-title {
    font-family: var(--font-heading);
    font-size: var(--text-lg);
    font-weight: 700;
    margin-bottom: var(--space-sm);
    color: var(--color-text-on-dark);
}

.site-footer__menu {
    list-style: none;
    padding: 0;
    margin: 0;
}

.site-footer__menu li {
    margin-bottom: var(--space-xs);
}

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

.site-footer__menu a:hover {
    color: var(--color-text-on-dark);
}

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

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

.site-footer__contact-info p {
    display: flex;
    align-items: flex-start;
    gap: var(--space-xs);
    margin-bottom: var(--space-xs);
    color: var(--color-neutral-400);
}

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

.site-footer__contact-info a:hover {
    color: var(--color-text-on-dark);
}

.site-footer__icon {
    width: 18px;
    height: 18px;
    flex-shrink: 0;
    margin-top: 2px;
}

.site-footer__text {
    color: var(--color-neutral-400);
}

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

@media (max-width: 768px) {
    .site-footer__columns {
        flex-direction: column;
    }

    .site-footer__col {
        flex-basis: 100% !important;
        max-width: 100% !important;
    }
}

.site-footer__bottom {
    margin-top: var(--space-2xl);
    padding-top: var(--space-lg);
    border-top: 1px solid var(--color-neutral-800);
    color: var(--color-neutral-500);
    font-size: var(--text-sm);
    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-neutral-100); }

.site-footer__credits { margin: 0; }

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

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


/* =================================================================
   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"] {
    padding-top: 0;
}

/* ----------------------- 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: var(--space-3xl) 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; }

.c-hero__overlay {
    position: absolute;
    inset: 0;
    background: #000;
}
.c-hero__inner {
    position: relative;
    z-index: 1;
}
.c-hero__content { max-width: 700px; }

.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; }

.c-hero__eyebrow { opacity: 0.8; color: inherit; }
.c-hero__headline { font-size: var(--text-5xl); margin-bottom: var(--space-md); }
.c-hero__subhead { font-size: var(--text-xl); opacity: 0.9; margin-bottom: var(--space-lg); }
.c-hero__buttons { display: flex; flex-wrap: wrap; gap: var(--space-sm); }
.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: 768px) {
    .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-3xl); }
    .c-hero--minimal .c-hero__headline { font-size: var(--text-2xl); }
}

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

/* 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); }

.c-hero--minimal .breadcrumbs__link {
	color:#fff;
}

.c-hero--minimal .breadcrumbs__current {
	color:#bbb;
}


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

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

@media (min-width: 768px) {
    .c-content-media__inner { grid-template-columns: 1fr 1fr; }
    .c-content-media--left .c-content-media__media { order: -1; }
}

.c-content-media__buttons { display: flex; flex-wrap: wrap; gap: var(--space-sm); 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%; }

.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); }


/* ----------------------- 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-600); 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); }

/* 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: #fff; }
.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); }


/* ----------------------- 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: 768px) {
    .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; gap: var(--space-sm); }
.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 {
    position: relative !important;
    bottom: auto !important;
    right: auto !important;
	margin-bottom: var(--space-lg) !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); }


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

.c-testimonials { padding: var(--space-3xl) 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 */
.c-testimonials--grid .c-testimonials__grid { display: grid; gap: var(--space-lg); }
@media (min-width: 768px) {
    .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(3, 1fr); }
}
.c-testimonials--grid .c-testimonial { text-align: left; background: #fff; padding: var(--space-lg); border-radius: var(--radius); box-shadow: var(--shadow); }
.c-testimonials--grid .c-testimonial__author { justify-content: flex-start; }
.c-testimonials--grid .c-testimonial__icon { width: 32px; height: 32px; margin: 0 0 var(--space-md); }
.c-testimonials--grid .c-testimonial__quote { font-size: var(--text-base); }

.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); }


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

.c-accordion { padding: var(--space-3xl) 0; }
.c-accordion__header { text-align: center; margin-bottom: var(--space-2xl); }
.c-accordion__items { border-top: 1px solid var(--color-neutral-200); }
.c-accordion__item { border-bottom: 1px solid var(--color-neutral-200); }
.c-accordion__item h3 { margin: 0; font-size: var(--text-base); }
.c-accordion__trigger {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-md);
    width: 100%;
    padding: var(--space-lg) 0;
    font: inherit;
    font-weight: 600;
    text-align: left;
    background: none;
    border: none;
    cursor: pointer;
}
.c-accordion__trigger:hover { color: var(--color-brand); }
.c-accordion__icon { width: 20px; height: 20px; transition: transform var(--transition); }
.c-accordion__item.is-open .c-accordion__icon { transform: rotate(180deg); }
.c-accordion__content { padding-bottom: var(--space-lg); color: var(--color-neutral-600); }

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


/* ----------------------- 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: var(--space-3xl) 0; }
.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); }

@media (min-width: 768px) {
    .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 { background: #fff; padding: var(--space-xl); border-radius: var(--radius); box-shadow: var(--shadow); }

.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); }

.iti__selected-country{
    display:none!important;
}

.gform_body input,
.gform_body textarea {
    font-size:var(--text-xl)!important;
    padding:1.25rem 1rem!important;
    display:block!important;
    min-height:50px!important;
    border-radius:0!important;
    border-color:var(--color-neutral-200);
    box-shadow:none!important;
}

.gform_body fieldset,
.gform-theme--foundation .gform-grid-row{
    margin:0!important;    
}

.gform-theme--foundation .gform_fields,
.gform-theme--foundation .gform-grid-row{
    gap:1.75rem!important;
}

.gform-theme--foundation .gform-grid-col{
    padding:0!important;
}

.gform_body input::placeholder,
.gform_body textarea::placeholder {
    color:var(--color-neutral-600);
}

.gform-theme--foundation .gform_footer{
    margin-block-start:0!important;
    margin-top:1.75rem!important;
}

.gfield_required_text,
.gform_validation_error_link,
.gfield_validation_message,
.gform_submission_error{
    color:var(--color-error-700)!important;
}

.gform-icon--circle-error{
	display:none!important;
}

.gform_validation_errors ol{
	padding:0!important;
}

.gform_validation_errors li{
	list-style-type:none;
	font-size:.875rem!important;
}

@media (max-width:1140px) {
    .gform-theme--foundation .gform-grid-row{
        flex-direction:column!important;
        align-items:flex-start!important;
    }

    .gform-theme--foundation .gform-grid-col.gform-grid-col--size-auto{
        flex-basis:100%!important;
        inline-size:100%!important;
    }

    .gform-theme--foundation .gfield--width-half{
        grid-column:span 12!important;
    }

    .gform-theme--foundation .gform_fields, 
    .gform-theme--foundation .gform-grid-row{
        gap:var(--space-sm)!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-600); 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: 999999;
    align-items: center;
    height: 56px;
    background: var(--color-brand);
    border-radius: 28px;
    color: #fff;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
    overflow: hidden;
    transition: background var(--transition);
}

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

.c-sticky-cta__toggle {
    display: flex;
    align-items: center;
    height: 56px;
    padding: 0;
    background: transparent;
    border: none;
    color: #fff;
    cursor: pointer;
}

.c-sticky-cta__toggle:active {
    transform: scale(0.98);
}

.c-sticky-cta__icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 56px;
    height: 56px;
    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;
    background: transparent;
    border: none;
    color: #fff;
    cursor: pointer;
}

.c-sticky-cta__close svg {
    width: 20px;
    height: 20px;
    opacity: 0.8;
}

/* Expanded state */
.c-sticky-cta.is-open {
    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: var(--space-3xl) 0; position: relative; }
.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-2xl);
}
.c-icon-cards__header h2, .c-icon-cards__header h3, .c-icon-cards__header h4 {
    font-size: var(--text-3xl);
    margin-bottom: var(--space-md);
}
.c-icon-cards__header .subhead {
    font-size: var(--text-lg);
    color: var(--color-neutral-600);
}
.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: var(--space-xl);
}
.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: 1024px) {
    .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; }
}

/* Card base */
.c-icon-card {
    display: flex;
    flex-direction: column;
    gap: var(--space-md);
}

/* Icon positioning */
.c-icon-cards--top .c-icon-card { text-align: center; align-items: center; }
.c-icon-cards--left .c-icon-card { flex-direction: row; align-items: flex-start; }

/* Card styles */
.c-icon-cards--boxed .c-icon-card {
    background: #fff;
    padding: var(--space-xl);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
}
.c-icon-cards--bg-dark.c-icon-cards--boxed .c-icon-card,
.c-icon-cards--bg-brand.c-icon-cards--boxed .c-icon-card,
.c-icon-cards--bg-image.c-icon-cards--boxed .c-icon-card {
    background: rgba(255,255,255,0.1);
    backdrop-filter: blur(10px);
}

.c-icon-cards--bordered .c-icon-card {
    border: 1px solid var(--color-neutral-200);
    padding: var(--space-xl);
    border-radius: var(--radius);
}
.c-icon-cards--bg-dark.c-icon-cards--bordered .c-icon-card,
.c-icon-cards--bg-brand.c-icon-cards--bordered .c-icon-card,
.c-icon-cards--bg-image.c-icon-cards--bordered .c-icon-card {
    border-color: rgba(255,255,255,0.2);
}

/* Icon */
.c-icon-card__icon {
    width: 56px;
    height: 56px;
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--color-brand-light);
    border-radius: var(--radius);
    color: var(--color-brand-dark);
}
.c-icon-card__icon svg {
    width: 28px;
    height: 28px;
}
.c-icon-card__img {
    width: 100%;
    height: 100%;
    object-fit: contain;
}

.c-icon-cards--bg-dark .c-icon-card__icon,
.c-icon-cards--bg-brand .c-icon-card__icon,
.c-icon-cards--bg-image .c-icon-card__icon {
    background: rgba(255,255,255,0.15);
    color: #fff;
}

/* Content */
.c-icon-card__content { flex: 1; } 
.c-icon-card__title {
    font-size: var(--text-lg);
    font-weight: 600;
    margin-bottom: var(--space-xs);
}
.c-icon-card__desc {
    font-size: var(--text-base);
    color: var(--color-neutral-600);
    margin-bottom: var(--space-sm);
}
.c-icon-cards--bg-dark .c-icon-card__desc,
.c-icon-cards--bg-brand .c-icon-card__desc,
.c-icon-cards--bg-image .c-icon-card__desc { color: rgba(255,255,255,0.8); }

.c-icon-card__link {
    display: inline-flex;
    align-items: center;
    gap: var(--space-xs);
    font-weight: 600;
    color: var(--color-brand);
    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; }

.c-icon-cards--bg-dark .c-icon-card__link,
.c-icon-cards--bg-brand .c-icon-card__link,
.c-icon-cards--bg-image .c-icon-card__link { color: #fff; }


/* =================================================================
   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-600);
}
.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; }

.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-600);
}
.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 */
.c-contact-info--inline .c-contact-info__items {
    justify-content: center;
}
@media (max-width: 1024px) {
    .c-contact-info--inline .c-contact-info__items {
        flex-direction: column;
        align-items: center;
    }
}

/* Individual item */
.c-contact-info__item {
    display: flex;
    align-items: flex-start;
    gap: var(--space-md);
}

.c-contact-info__icon {
    width: 48px;
    height: 48px;
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--color-brand);
    border-radius: 50%;
    color: #fff;
}
.c-contact-info__icon svg {
    width: 22px;
    height: 22px;
}
.c-contact-info--bg-dark .c-contact-info__icon,
.c-contact-info--bg-brand .c-contact-info__icon,
.c-contact-info--bg-image .c-contact-info__icon {
    background: rgba(255,255,255,0.2);
}

.c-contact-info__content { flex: 1; }

.c-contact-info__label {
    font-size: var(--text-sm);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--color-neutral-500);
    margin-bottom: var(--space-xs);
}
.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 {
    font-size: var(--text-lg);
    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;
}


/* =================================================================
   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-600);
    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-600);
    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-600);
    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-600);
    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 h1 {
    font-size: var(--text-3xl);
    color: var(--color-neutral-800);
    margin-bottom: var(--space-md);
}
.error-404__content {
    color: var(--color-neutral-600);
    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); }


/* =================================================================
   JOAT HOME INSPECTIONS
   =================================================================
   Client treatment layered over the base components above. The thesis:
   restraint is the argument. A low-chroma paper surface carries the site,
   black carries the two moments that matter, and the mark's red does one
   job at a time â€” the primary CTA, and the one thing that must be found.

   Two reds, deliberately. --color-brand (#B51226) is the only one allowed
   on paper; it passes AA at small sizes. --color-brand-on-dark (#D91520)
   is the mark's own red and is legible only against black.
   ================================================================= */

/* ----------------------- BASE ----------------------- */

body {
    background: var(--color-paper);
    color: var(--color-text);
    font-size: 17px;
    line-height: 1.62;
}

/* The header is sticky, so anchored sections must not land underneath it.
   The services cards link to /services#general and friends. */
main section[id],
main [id^="c-"] { scroll-margin-top: 100px; }
@media (max-width: 1023px) { main section[id] { scroll-margin-top: 84px; } }

h1, h2, h3, h4, h5, h6 {
    font-weight: var(--weight-heading);
    letter-spacing: -0.018em;
    line-height: 1.06;
}

/* The phone renders in the header, hero, CTA band, footer and sticky bar.
   Consistent figures everywhere or the rag goes ragged. */
.site-nav__phone,
.c-hero__phone,
.site-footer__phone,
.c-sticky-bar {
    font-variant-numeric: tabular-nums;
}

/* Eyebrow â€” the one place capitals are used. A spec-sheet label, not a
   topic tag, so it stays quiet and never competes with the heading. */
.eyebrow {
    font-size: 11px;
    font-weight: var(--weight-medium);
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--color-text-soft);
    margin-bottom: var(--space-lg);
}

.subhead { color: var(--color-text-muted); }
.prose a { color: var(--color-brand); }

/* ----------------------- BUTTONS & LINKS ----------------------- */

.btn {
    padding: 17px 26px;
    font-size: 16px;
    font-weight: var(--weight-medium);
    line-height: 1;
    border-radius: 2px;
    border-width: 1px;
}
.btn--sm { padding: 13px 20px; font-size: 15px; }

.btn--secondary {
    color: var(--color-text);
    border-color: var(--color-text);
}
.btn--secondary:hover {
    background: var(--color-text);
    color: var(--color-paper);
    border-color: var(--color-text);
}

/* Primary action on a dark surface. The base theme calls this --white;
   here it carries the mark's red, which only works against black. */
.btn--white {
    background: var(--color-brand-on-dark);
    color: #fff;
    border-color: transparent;
}
.btn--white:hover { background: #ed1b24; border-color: transparent; }

.btn--outline-light {
    color: var(--color-text-on-dark);
    border-color: #4a4e52;
}
.btn--outline-light:hover {
    background: var(--color-text-on-dark);
    color: var(--color-bg-dark);
    border-color: var(--color-text-on-dark);
}

/* Arrow link. d20_button() emits no icon, so the arrow is drawn here. */
.link-arrow {
    align-items: baseline;
    gap: 0.5em;
    font-weight: var(--weight-medium);
    color: var(--color-brand);
    border-bottom: 1px solid rgba(var(--color-brand-rgb), 0.3);
    padding-bottom: 2px;
    transition: border-color var(--transition);
}
.link-arrow::after {
    content: '\2192';
    display: inline-block;
    transition: transform var(--transition);
}
.link-arrow:hover { border-color: var(--color-brand); }
.link-arrow:hover::after { transform: translateX(3px); }

/* On black the accent moves to the rule so the label stays fully legible. */
.c-hero .link-arrow,
.c-trust .link-arrow,
[class*="--bg-dark"] .link-arrow,
[class*="--bg-image"] .link-arrow {
    color: var(--color-text-on-dark);
    border-bottom-color: var(--color-brand-on-dark);
}
.c-hero .link-arrow:hover,
.c-trust .link-arrow:hover,
[class*="--bg-dark"] .link-arrow:hover,
[class*="--bg-image"] .link-arrow:hover { color: #fff; }

a:focus-visible,
button:focus-visible {
    outline: 2px solid var(--color-brand);
    outline-offset: 3px;
    border-radius: 1px;
}

/* ----------------------- HEADER ----------------------- */

.site-header {
    background: var(--color-paper);
    border-bottom: 1px solid var(--color-rule);
}
/* The mark gets room at the top of the page and tightens once the user is
   reading, so the header stops competing with the content. */
.site-header__inner {
    height: 104px;
    gap: 32px;
    justify-content: flex-start;
    transition: height var(--transition);
}
.site-header__logo { flex: 0 0 auto; }
.site-header__logo img { height: 62px; transition: height var(--transition); }
body.scrolled .site-header__inner { height: 84px; }
body.scrolled .site-header__logo img { height: 44px; }
@media (prefers-reduced-motion: reduce) {
    .site-header__inner,
    .site-header__logo img { transition: none; }
}

.site-nav__menu { gap: 30px; }
.site-nav__menu a {
    font-size: 15.5px;
    font-weight: 400;
    color: var(--color-text-muted);
    padding: 6px 0;
    border-bottom: 1px solid transparent;
    transition: color var(--transition), border-color var(--transition);
}
.site-nav__menu a:hover {
    color: var(--color-text);
    border-color: var(--color-rule);
}
.site-nav__menu > li.current-menu-item > a {
    color: var(--color-text);
    border-color: var(--color-brand);
}

.site-nav__phone {
    font-size: 15.5px;
    font-weight: 400;
    color: var(--color-text);
    gap: 9px;
}
.site-nav__phone svg {
    display: block;
    width: 17px;
    height: 17px;
    top: 0;
    fill: var(--color-brand);
    stroke: none;
    color: var(--color-brand);
}
.site-nav__phone:hover { color: var(--color-brand); }

/* Three identical bars. The base rule leaves the middle one a different
   height from the two pseudo-elements. */
.site-header__toggle span,
.site-header__toggle::before,
.site-header__toggle::after {
    width: 26px;
    height: 2px;
    border-radius: 0;
}

@media (min-width: 1024px) {
    .site-nav { margin-left: auto; }
    .site-nav__actions {
        gap: 22px;
        margin-left: var(--space-xl);
        padding-left: var(--space-xl);
        border-left: none;
    }
}

@media (max-width: 1023px) {
    .site-header__inner { height: 86px; }
    .site-header__logo img { height: 52px; }
    body.scrolled .site-header__inner { height: 66px; }
    body.scrolled .site-header__logo img { height: 38px; }

    /* Burger sits at the far right, opposite the mark. */
    .site-header__toggle { margin-left: auto; order: 9; padding: var(--space-sm) 0; }

    /* Drawer sits on the site gutter, not an arbitrary 5%, and starts just
       under the header rather than 5rem down. */
    .site-nav {
        background: var(--color-paper);
        padding: 0 var(--gutter) var(--space-2xl);
        padding-top: 92px;
    }

    /* Even rhythm: one padding value per row, and the divider on the row
       rather than the link, so it spans the full width. */
    /* The desktop rule above sets a 30px flex gap. Left unscoped it lands
       between the divider and the next label, which is the uneven space. */
    .site-nav__menu { gap: 0; }
    .site-nav__menu > li {
        border-bottom: 1px solid var(--color-rule-soft);
        align-items: center;
    }
    .site-nav__menu > .menu-item-has-children > a,
    .site-nav__menu > li > a {
        display: block;
        width: 100%;
        padding: 15px 0;
        font-size: 19px;
        line-height: 1.3;
        color: var(--color-text);
        border-bottom: 0;
    }
    /* Current page reads through colour; a partial-width rule under one label
       looks like a rendering fault next to the full-width row dividers. */
    .site-nav__menu > li.current-menu-item > a { color: var(--color-brand); }

    .site-nav__actions {
        margin-top: var(--space-xl);
        gap: var(--space-lg);
    }
    /* Phone lines up with the nav labels above it. */
    .site-nav__actions > a { justify-content: flex-start; }
    .site-nav__actions > a.btn { justify-content: center; }
    .site-nav__phone { font-size: 19px; }
    .site-nav__phone span { display: inline; }
    .site-nav__phone svg { width: 19px; height: 19px; }
}

/* ----------------------- HERO (C10) ----------------------- */

.c-hero {
    background-color: var(--color-bg-dark);
    color: var(--color-text-on-dark);
    align-items: stretch;
    padding: 0;
}
.c-hero__inner { padding-block: 76px 0; }

/* Two layers: the photograph sits well back, then a directional wash keeps
   the headline side dark enough to read without scrimming the whole frame. */
.c-hero--has-bg .c-hero__overlay {
    background:
        linear-gradient(100deg,
            rgba(16, 17, 18, 0.98) 0%,
            rgba(16, 17, 18, 0.92) 45%,
            rgba(16, 17, 18, 0.80) 100%);
}

/* A quiet regional mark in the hero's open right side. Not a badge, not a
   logo: it reads as watermark and never competes with the headline.
   Opt in per hero with the custom class `has-texas`.

   Anchored to the section rather than the inner container so it can sit
   outside the content column, but kept fully on canvas: the hero's
   `overflow: hidden` would otherwise clip the panhandle and the east edge,
   which reads as a broken graphic rather than a deliberate crop. */
.c-hero.has-texas::after {
    content: '';
    position: absolute;
    right: 3%;
    top: 55%;
    transform: translateY(-50%);
    width: min(34vw, 620px);
    aspect-ratio: 106 / 100;
    background: var(--color-brand-on-dark);
    opacity: 0.22;
    pointer-events: none;
    -webkit-mask: var(--joat-texas) center/contain no-repeat;
            mask: var(--joat-texas) center/contain no-repeat;
}
/* Interior heroes have less vertical room, so the mark sizes to the space. */
/* Interior heroes carry the mark at the same size as the home hero. They do
   NOT grow to fit it: the mark stays vertically centred and crops top and
   bottom against the hero's own height, which is set by its content. */
.c-hero.has-texas:not(.c-hero--has-chips)::after {
    right: 4%;
    top: 50%;
}
@media (max-width: 939px) {
    .c-hero.has-texas::after {
        width: min(52vw, 360px);
        right: 4%;
        opacity: 0.16;
    }
    .c-hero.has-texas:not(.c-hero--has-chips)::after { right: 4%; }
}

.c-hero__content { max-width: none; }
/* The hero template uses its own class, so the micro-label treatment has to
   be restated here. The eyebrow carries the veteran-owned claim â€” it is
   load-bearing copy, not a decorative pre-headline. */
.c-hero__eyebrow {
    font-size: 11px;
    font-weight: var(--weight-medium);
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--color-brand-on-dark);
    opacity: 1;
    margin-bottom: 12px;
}
.c-hero__headline {
    font-size: clamp(2.75rem, 6vw, 4.75rem);
    letter-spacing: -0.03em;
    line-height: 0.98;
    max-width: 15ch;
    color: #fff;
    margin-bottom: var(--space-xl);
}
.c-hero__subhead {
    max-width: 44ch;
    font-size: clamp(1.0625rem, 1.4vw, 1.1875rem);
    line-height: 1.6;
    color: var(--color-text-on-dark-muted);
    opacity: 1;
}
.c-hero__buttons { gap: 18px 26px; align-items: center; }
.c-hero__phone-row { margin: 22px 0 0; }
.c-hero__phone {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: 16px;
    color: var(--color-text-on-dark-muted);
    text-decoration: none;
}
/* Breathing room between the prefix and the icon+number pair. */
.c-hero__phone-prefix { margin-right: 6px; }
.c-hero__phone-icon {
    display: inline-flex;
    align-items: center;
}
.c-hero__phone-icon svg {
    width: 17px;
    height: 17px;
    fill: var(--color-brand-on-dark);
    stroke: none;
}
.c-hero__phone b {
    font-weight: var(--weight-heading);
    color: var(--color-text-on-dark);
}
.c-hero__phone:hover b { color: #fff; }

/* Credibility chips â€” plain factual labels on a rail. No stars, no counts,
   no badge chrome: the moment they look like badges they read as a startup
   faking a track record. */
.c-hero__chips {
    list-style: none;
    margin: 64px 0 0;
    padding: 26px 0 76px;
    border-top: 1px solid var(--color-rule-dark);
    display: flex;
    flex-wrap: wrap;
    gap: 12px 0;
}
.c-hero__chips li { font-size: 15.5px; color: var(--color-text-on-dark); }

@media (max-width: 659px) {
    .c-hero__chips {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 14px 20px;
        padding-bottom: 56px;
    }
}
@media (min-width: 660px) {
    .c-hero__chips li {
        padding-right: 26px;
        margin-right: 26px;
        border-right: 1px solid var(--color-rule-dark);
    }
    .c-hero__chips li:last-child {
        border-right: 0;
        margin-right: 0;
        padding-right: 0;
    }
}

/* The chips variant sets its own vertical budget, so the vh heights that
   apply to a plain hero would only fight it. */
.c-hero--has-chips { min-height: 0; }

@media (min-width: 940px) {
    .c-hero--has-chips .c-hero__inner { padding-top: 88px; }
    .c-hero--has-chips .c-hero__content {
        display: grid;
        grid-template-columns: minmax(0, 1.22fr) minmax(300px, 0.78fr);
        column-gap: 72px;
        row-gap: 12px;
        align-items: start;
    }
    /* The sub-line bottom-aligns to the headline; CTAs sit under it. */
    .c-hero--has-chips .c-hero__eyebrow  { grid-column: 1; grid-row: 1; margin-bottom: 0; }
    .c-hero--has-chips .c-hero__headline { grid-column: 1; grid-row: 2; margin-bottom: 0; }
    .c-hero--has-chips .c-hero__subhead  { grid-column: 2; grid-row: 2; align-self: end; padding-bottom: 6px; margin-bottom: 0; }
    /* row-gap is tuned to the tight eyebrowâ†’headline spacing, so restore the
       larger headlineâ†’CTA breathing room here. */
    .c-hero--has-chips .c-hero__actions  { grid-column: 1; grid-row: 3; margin-top: 32px; }
    .c-hero--has-chips .c-hero__chips { margin-top: 80px; }
}

/* Interior hero: same face, a fraction of the vertical budget. The variant
   difference has to be obvious enough that nobody rebuilds the home hero
   at half height by accident. */
.c-hero:not(.c-hero--has-chips) .c-hero__inner { padding-block: clamp(56px, 7vw, 88px); }
.c-hero:not(.c-hero--has-chips) .c-hero__headline {
    font-size: clamp(2.25rem, 4.2vw, 3.25rem);
    max-width: 24ch;
}

/* One page-load sequence in the hero, and nothing else on the site moves. */
@keyframes joat-rise {
    from { opacity: 0; transform: translateY(12px); }
    to   { opacity: 1; transform: none; }
}
.c-hero__eyebrow,
.c-hero__headline,
.c-hero__subhead,
.c-hero__actions,
.c-hero__chips {
    animation: joat-rise 0.62s cubic-bezier(0.2, 0.7, 0.3, 1) both;
}
.c-hero__headline { animation-delay: 0.07s; }
.c-hero__subhead  { animation-delay: 0.16s; }
.c-hero__actions  { animation-delay: 0.22s; }
.c-hero__chips    { animation-delay: 0.30s; }

@media (prefers-reduced-motion: reduce) {
    .c-hero__eyebrow,
    .c-hero__headline,
    .c-hero__subhead,
    .c-hero__actions,
    .c-hero__chips { animation: none; }
}

/* ----------------------- CONTENT + MEDIA (C11) ----------------------- */

.c-content-media--bg-light {
    background: var(--color-bg-light);
    border-top: 1px solid var(--color-rule);
    border-bottom: 1px solid var(--color-rule);
    padding-block: clamp(72px, 9vw, 124px);
}
.c-content-media__content h2 {
    font-size: clamp(1.875rem, 3.2vw, 2.625rem);
    max-width: 22ch;
    /* Let the browser even out the lines rather than filling each one to the
       measure. The 22ch cap happens to break these headlines well today, but
       it only holds while the copy stays this length, and a stranded last
       word is the failure it can't prevent on its own. */
    text-wrap: balance;
}
.c-content-media__content .prose {
    margin-top: 28px;
    max-width: 58ch;
    font-size: 1.0625rem;
    line-height: 1.68;
    color: var(--color-text-muted);
}
.c-content-media__buttons { margin-top: 30px; }

/* The service CTA line keeps the accent rule it had as a Service Detail
   section, so converting the layout did not demote it to body copy. */
.c-content-media .prose .cta-line {
    margin-top: 28px;
    padding-top: 24px;
    border-top: 2px solid var(--color-brand);
    color: var(--color-text);
}

/* Who orders it / What the report delivers. These carry the same label
   treatment as the Service Detail facts list, so the four service sections
   read as one family even though three of them keep an image alongside the
   copy and cannot use the two-column facts sidebar. Kept in step with
   .c-service__facts dt/dd. */
.c-content-media .prose .fact-label {
    margin: 28px 0 8px;
    font-size: 11px;
    font-weight: var(--weight-medium);
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--color-text-soft);
}
.c-content-media .prose .fact-value {
    margin: 0;
    font-size: 16px;
    line-height: 1.6;
    color: var(--color-text-muted);
}
.c-content-media__image { border-radius: 16px; width: 100%; }
.c-content-media:not(.is-uncropped) .c-content-media__image {
    aspect-ratio: 5 / 4;
    object-fit: cover;
}

/* Top-align the two columns. Centring floats a short image against a long
   body and leaves the section looking unanchored. */
.c-content-media__inner { align-items: start; }

/* Opt out of the 5:4 crop. Maps, diagrams and screenshots lose their meaning
   when the edges are cut off, so these keep their own proportions. Set via
   the Custom Class field. */
.c-content-media.is-uncropped .c-content-media__image { height: auto; }

.c-content-media.is-uncropped.thank-you-check > div {
	align-items:center;
}

.c-content-media.is-uncropped.thank-you-check .c-content-media__image {
	width:300px;
	max-width:100%;
	margin:0 auto;
}

@media (max-width: 899px) {
    .c-content-media:not(.is-uncropped) .c-content-media__image { aspect-ratio: 4 / 3; }
}

@media (max-width:767px) {
	.c-content-media.is-uncropped.thank-you-check .c-content-media__image {
		margin-left:0;
		width:100px;
	}
}

/* ----------------------- TRUST STATEMENT (C12) ----------------------- */

.c-trust {
    position: relative;
    padding-block: clamp(78px, 9.5vw, 128px);
    background: var(--color-bg-dark) center/cover no-repeat;
    color: var(--color-text-on-dark);
}
.c-trust--bg-white { background: #fff; color: var(--color-text); }
.c-trust--bg-light { background: var(--color-bg-light); color: var(--color-text); }
.c-trust__inner { position: relative; z-index: 1; }
.c-trust__headline {
    font-size: clamp(1.875rem, 3.2vw, 2.625rem);
    max-width: 20ch;
    color: #fff;
    margin-bottom: 0;
}
.c-trust--bg-white .c-trust__headline,
.c-trust--bg-light .c-trust__headline { color: var(--color-text); }
.c-trust__content {
    margin-top: 30px;
    max-width: 62ch;
    font-size: 1.0625rem;
    line-height: 1.68;
    color: var(--color-text-on-dark-muted);
}
.c-trust--bg-white .c-trust__content,
.c-trust--bg-light .c-trust__content { color: var(--color-text-muted); }

/* The statement is a claim from the business. It is deliberately not a
   card, not centred and not quote-marked, because a quote in a review-shaped
   box implies a customer said it â€” and there are no reviews on this site. */
.c-trust__statement {
    margin-top: 56px;
    padding-top: 34px;
    border-top: 2px solid var(--color-brand-on-dark);
    max-width: 62ch;
}
.c-trust--bg-white .c-trust__statement,
.c-trust--bg-light .c-trust__statement { border-top-color: var(--color-brand); }
.c-trust__statement-line {
    font-family: var(--font-heading);
    font-weight: var(--weight-heading);
    font-size: clamp(1.5rem, 2.6vw, 2rem);
    line-height: 1.16;
    letter-spacing: -0.02em;
    color: #fff;
    margin: 0;
}
.c-trust--bg-white .c-trust__statement-line,
.c-trust--bg-light .c-trust__statement-line { color: var(--color-text); }
.c-trust__statement-sub {
    margin: 16px 0 0;
    font-size: 15.5px;
    color: var(--color-text-on-dark-muted);
}
.c-trust--bg-white .c-trust__statement-sub,
.c-trust--bg-light .c-trust__statement-sub { color: var(--color-text-muted); }

@media (min-width: 940px) {
    .c-trust__inner {
        display: grid;
        grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
        gap: 80px;
        align-items: start;
    }
    .c-trust__content { margin-top: 0; }
    .c-trust__statement { margin-top: 44px; }
}

/* ----------------------- CARDS (C13) ----------------------- */

.c-cards--style-minimal {
    background: var(--color-bg-light);
    border-top: 1px solid var(--color-rule);
    border-bottom: 1px solid var(--color-rule);
    padding-block: clamp(72px, 9vw, 116px);
}
.c-cards__header { max-width: 62ch; text-align: left; margin-inline: 0; }
.c-cards__header h2 { font-size: clamp(1.875rem, 3.2vw, 2.625rem); }
.c-cards__header .subhead { margin-top: 20px; max-width: 56ch; }

/* Hairline grid rather than gaps: four cards reading as one object, with a
   single treatment across all four. One colour per card is the market's
   failure, not a decoration opportunity. */
.c-cards--style-minimal .c-cards__grid {
    margin-top: 52px;
    gap: 1px;
    background: var(--color-rule);
    border: 1px solid var(--color-rule);
}
.c-cards--style-minimal .c-card {
    background: var(--color-bg-light);
    border: 0;
    border-radius: 0;
    box-shadow: none;
    padding: 30px 28px 28px;
    display: flex;
    flex-direction: column;
    text-decoration: none;
    color: inherit;
    transition: background var(--transition);
}
.c-cards--style-minimal .c-card:hover { background: #fff; transform: none; box-shadow: none; }
.c-cards--style-minimal .c-card__content { display: contents; }

.c-card__label {
    display: block;
    font-size: 11px;
    font-weight: var(--weight-medium);
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--color-text-soft);
}
.c-card__title { margin-top: 18px; font-size: 1.25rem; line-height: 1.16; }
.c-cards--style-minimal .c-card__desc {
    margin-top: 12px;
    color: var(--color-text-muted);
    font-size: 15.5px;
    line-height: 1.5;
    flex: 1 1 auto;
}
.c-cards--style-minimal .c-card__link {
    margin-top: 24px;
    align-self: flex-start;
    font-size: 15px;
    font-weight: var(--weight-medium);
    color: var(--color-brand);
    border-bottom: 1px solid rgba(var(--color-brand-rgb), 0.3);
    padding-bottom: 2px;
}
.c-cards--style-minimal .c-card__link svg { display: none; }
.c-cards--style-minimal .c-card__link::after {
    content: '\2192';
    display: inline-block;
    margin-left: 0.5em;
    transition: transform var(--transition);
}
.c-cards--style-minimal .c-card:hover .c-card__link::after { transform: translateX(3px); }

/* ----------------------- CALLOUT (C05 / C20) ----------------------- */

.c-callout { padding-block: clamp(64px, 8vw, 104px); }
.c-callout--bg-light { background: var(--color-bg-light); }

/* The plain variant leaves its right half open. The state mark fills it and
   says "Texas" without a map that could imply coverage JOAT has not claimed. */
.c-callout--plain .c-callout__inner {
    position: relative;
    isolation: isolate;
}
.c-callout--plain .c-callout__inner::after {
    content: '';
    position: absolute;
    z-index: -1;
    right: 4%;
    top: 50%;
    transform: translateY(-50%);
    width: 30%;
    max-width: 340px;
    aspect-ratio: 106 / 100;
    background: var(--color-brand);
    opacity: 0.16;
    pointer-events: none;
    -webkit-mask: var(--joat-texas) center/contain no-repeat;
            mask: var(--joat-texas) center/contain no-repeat;
}
/* Paired half-width callouts have no spare room, so the mark stands down. */
.components-row .c-callout--plain .c-callout__inner::after { content: none; }
@media (max-width: 899px) {
    .c-callout--plain .c-callout__inner::after { content: none; }
}

.c-callout__icon {
    width: 46px;
    height: 46px;
    border-radius: 12px;
    background: rgba(var(--color-brand-rgb), 0.08);
    color: var(--color-brand);
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 26px;
}
.c-callout__icon svg { width: 22px; height: 22px; }

.c-callout__headline {
    font-size: clamp(1.5rem, 2.4vw, 1.875rem);
    line-height: 1.18;
    max-width: 24ch;
    margin-bottom: 0;
}
.c-callout__content { margin-top: 20px; max-width: 54ch; color: var(--color-text-muted); }
.c-callout__link { margin: 26px 0 0; }

/* Card style reads lighter than a full band â€” it is a closing note, not a
   second evidence section. */
.c-callout--card .c-callout__panel {
    background: var(--color-bg-light);
    border: 1px solid var(--color-rule-soft);
    border-radius: 16px;
    padding: clamp(32px, 4vw, 52px);
}
.c-callout--card .c-callout__headline { max-width: 20ch; }
.c-callout--card .c-callout__content { max-width: 52ch; }

/* ----------------------- SERVICE DETAIL (C14) ----------------------- */

/* Four of these stack to make the whole Services page, and the first is
   structurally longer than the rest because it alone carries the coverage
   list. So the rhythm comes from alternating alignment and a rule, not from
   equal block heights â€” those would break on the first section. */
.c-service {
    padding-block: clamp(56px, 6.5vw, 88px);
    border-top: 1px solid var(--color-rule);
}
.c-service--bg-white { background: #fff; }
.c-service--bg-light { background: var(--color-bg-light); }
.c-service:first-child { border-top: 0; }

.c-service__headline {
	font-size: clamp(1.875rem, 3.2vw, 2.625rem);
    max-width: 20ch;
    margin-bottom: 0;
}
.c-service__content {
    margin-top: 22px;
    max-width: 62ch;
    color: var(--color-text-muted);
    line-height: 1.68;
}

.c-service__coverage { margin-top: 32px; }
.c-service__coverage-label {
    font-size: 11px;
    font-weight: var(--weight-medium);
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--color-text-soft);
    margin-bottom: 14px;
}
.c-service__coverage-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
}
.c-service__coverage-list li {
    font-size: 15px;
    padding: 8px 15px;
    border: 1px solid var(--color-rule);
    border-radius: 2px;
    background: var(--color-paper);
}

.c-service__facts { margin: 0; }
.c-service__facts dt {
    font-size: 11px;
    font-weight: var(--weight-medium);
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--color-text-soft);
    margin-bottom: 8px;
}
.c-service__facts dd {
    margin: 0 0 26px;
    color: var(--color-text-muted);
    font-size: 16px;
    line-height: 1.6;
}
.c-service__facts dd:last-child { margin-bottom: 0; }

.c-service__cta {
    margin: 28px 0 0;
    padding-top: 24px;
    border-top: 2px solid var(--color-brand);
    font-size: 16px;
    color: var(--color-text);
}

@media (min-width: 900px) {
    .c-service__inner {
        display: grid;
        grid-template-columns: minmax(0, 1.15fr) minmax(0, 0.85fr);
        column-gap: 72px;
        align-items: start;
    }
    /* Alternating sides give four stacked sections a rhythm without changing
       their structure. The head keeps the wider column either way, so the
       rhythm never costs the prose its measure. */
    .c-service--right .c-service__inner {
        grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.15fr);
    }
    .c-service--right .c-service__head   { order: 2; }
    .c-service--right .c-service__detail { order: 1; }
}
@media (max-width: 899px) {
    .c-service__detail { margin-top: 36px; }
}

/* ----------------------- ICON CARDS (C06 / C22) ----------------------- */

.c-icon-cards { padding-block: clamp(64px, 8vw, 104px); }
.c-icon-cards--bg-light { background: var(--color-bg-light); }
/* The base sheet has no white rule for this component, so without one the
   section falls through to the paper colour, which is darker than `light`. */
.c-icon-cards--bg-white { background: #fff; }
.c-icon-cards__header { text-align: left; margin-inline: 0; max-width: 62ch; }
.c-icon-cards__header h2 { font-size: clamp(1.625rem, 2.8vw, 2.25rem); }

/* One accent across all four cards, never one per card, and no boxes stacked
   over photographs. Restraint here is the difference between a guarantee and
   a brag. */
.c-icon-cards--boxed .c-icon-card {
    background: #fff;
    border: 1px solid var(--color-rule-soft);
    border-radius: 4px;
    padding: 28px 26px;
    box-shadow: none;
}
/* Left-aligned like everything else on the site. Centred card text reads as
   decoration; these are claims and want to be scanned. */
.c-icon-cards--top .c-icon-card { text-align: left; align-items: stretch; }
.c-icon-cards--boxed .c-icon-card:hover { transform: none; box-shadow: none; }
/* White cards on a white section would read as borderless, so the hairline
   does the defining. Must sit after the --boxed shorthand above. */
.c-icon-cards--bg-white .c-icon-card { border-color: var(--color-rule); }
.c-icon-card__icon {
    width: 42px;
    height: 42px;
    border-radius: 10px;
    background: rgba(var(--color-brand-rgb), 0.08);
    color: var(--color-brand);
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 20px;
}
.c-icon-card__icon svg { width: 20px; height: 20px; }
.c-icon-card__title { font-size: 1.0625rem; line-height: 1.24; margin-bottom: 0; }

/* Place names sit at body weight. They already read as the card's substance
   without extra weight, and bolding them competed with the title above. */
.c-icon-card__detail {
    margin: 12px 0 0;
    font-weight: 400;
    font-size: 15.5px;
    line-height: 1.45;
    color: var(--color-text);
}
.c-icon-card__desc {
    margin-top: 10px;
    font-size: 15px;
    line-height: 1.5;
    color: var(--color-text-muted);
}

/* ----------------------- PULL QUOTE (C24) ----------------------- */

/* Given real footprint: this is the turn in the About narrative, so it gets
   the room to land. Still deliberately not a review card â€” no stars, no
   rating, no rounded testimonial box. The portrait and name identify the
   owner making a statement, not a customer leaving one. */
.c-pull-quote { padding-block: clamp(72px, 9vw, 128px); }
.c-pull-quote--bg-light { background: var(--color-bg-light); }
.c-pull-quote--bg-dark { background: var(--color-bg-dark); color: var(--color-text-on-dark); }

.c-pull-quote__inner {
    display: grid;
    gap: 32px;
    align-items: start;
}
@media (min-width: 768px) {
    .c-pull-quote__inner {
        grid-template-columns: minmax(180px, 240px) minmax(0, 1fr);
        gap: 64px;
    }
}

.c-pull-quote__portrait { margin: 0 0 20px; }
.c-pull-quote__portrait img {
    width: 148px;
    height: 148px;
    border-radius: 50%;
    object-fit: cover;
}

.c-pull-quote__attribution { margin: 0; }
.c-pull-quote__name {
    display: block;
    font-family: var(--font-heading);
    font-weight: var(--weight-heading);
    font-size: 1.1875rem;
    letter-spacing: -0.015em;
    line-height: 1.2;
    color: var(--color-text);
}
.c-pull-quote__role {
    display: block;
    margin-top: 4px;
    font-size: 15px;
    line-height: 1.4;
    color: var(--color-text-muted);
    max-width: 22ch;
}
.c-pull-quote--bg-dark .c-pull-quote__name { color: #fff; }
.c-pull-quote--bg-dark .c-pull-quote__role { color: var(--color-text-on-dark-muted); }

.c-pull-quote__quote { margin: 0; }
/* Typographic mark rather than a rule. Kept in ink, not the accent: the
   accent has one job at a time, and here the type is doing the work. */
.c-pull-quote__mark {
    display: block;
    font-family: var(--font-heading);
    font-weight: var(--weight-heading);
    font-size: clamp(4rem, 7vw, 6.5rem);
    line-height: 0.55;
    color: var(--color-text);
    /* The glyph sits at the top of its line box and leaves a deep well of
       empty space beneath it, so the box needs pulling back up or the mark
       reads as detached from the sentence it opens. Set in em so it tracks
       the clamped mark size instead of drifting at the ends of the range. */
    margin-bottom: -0.2em;
}
.c-pull-quote--bg-dark .c-pull-quote__mark { color: #fff; }
.c-pull-quote__quote p {
    margin: 0;
    font-family: var(--font-heading);
    font-weight: var(--weight-heading);
    font-size: clamp(1.5rem, 3.4vw, 2.75rem);
    line-height: 1.2;
    letter-spacing: -0.02em;
    max-width: 24ch;
    color: var(--color-text);
}
.c-pull-quote--bg-dark .c-pull-quote__quote p { color: #fff; }

@media (max-width: 767px) {
    .c-pull-quote__portrait img { width: 112px; height: 112px; }
    .c-pull-quote__quote p { max-width: none; }
}

/* ----------------------- TEXT BLOCK (C15) ----------------------- */

.c-text-block { padding-block: clamp(56px, 7vw, 88px); }
.c-text-block--bg-light { background: var(--color-bg-light); }
.c-text-block h2 { font-size: clamp(1.625rem, 2.8vw, 2.25rem); max-width: 22ch; }
.c-text-block .prose {
    margin-top: 24px;
    max-width: 62ch;
    color: var(--color-text-muted);
    line-height: 1.68;
}

/* ----------------------- CONTACT METHODS (C18) ----------------------- */

/* Phone and form are peers, not a hierarchy, so this block is not allowed to
   look like a sidebar next to the form. */
.c-contact-info { padding-block: clamp(56px, 7vw, 88px); }
.c-contact-info--bg-light { background: var(--color-bg-light); }
.c-contact-info__header { text-align: left; margin-inline: 0; max-width: none; }
.c-contact-info__header h2 { font-size: clamp(1.625rem, 2.8vw, 2.25rem); max-width: none; }
/* Left-aligned, in a single readable column. The stacked default centres
   everything, which fights the rest of the page. */
.c-contact-info--stacked .c-contact-info__items {
    align-items: flex-start;
    max-width: none;
    margin-inline: 0;
    gap: 28px;
}
.c-contact-info--stacked .c-contact-info__item {
    text-align: left;
    flex-direction: row;
    align-items: center;
    gap: 18px;
}
.c-contact-info--stacked .c-contact-info__icon { margin-bottom: 0; }

/* Tinted plate with the mark in brand red, matching the callout and guarantee
   icons. The base rule is brand-on-brand, which renders as a solid blob. */
.c-contact-info__icon {
    width: 42px;
    height: 42px;
    border-radius: 10px;
    background: rgba(var(--color-brand-rgb), 0.08);
    color: var(--color-brand);
}
.c-contact-info__icon svg { width: 20px; height: 20px; }

.c-contact-info__label {
    font-size: 11px;
    font-weight: var(--weight-medium);
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--color-text-soft);
    margin-bottom: 4px;
}
.c-contact-info__item .c-contact-info__value {
    font-family: var(--font-heading);
    font-weight: var(--weight-heading);
    font-size: 1.375rem;
    letter-spacing: -0.02em;
    color: var(--color-text);
    text-decoration: none;
}
a.c-contact-info__value:hover { color: var(--color-brand); }
.c-contact-info__detail {
    margin-top: 32px;
    max-width: 54ch;
    color: var(--color-text-muted);
}

/* A short numbered sequence where the count is the point — what to have ready
   before you call. The accent lands on the numerals only, so the list reads as
   steps to work through rather than as three unrelated bullets. Authored by
   adding the class to an <ol> in a WYSIWYG field. */
.prose ol.numbered-steps {
    list-style: none;
    counter-reset: numbered-step;
    margin: 16px 0 0;
    padding-left: 0;
}
.prose ol.numbered-steps li {
    counter-increment: numbered-step;
    position: relative;
    padding-left: 2.1em;
    margin-bottom: 10px;
    line-height: 1.6;
}
.prose ol.numbered-steps li:last-child { margin-bottom: 0; }
.prose ol.numbered-steps li::before {
    content: counter(numbered-step) ")";
    position: absolute;
    left: 0;
    font-weight: var(--weight-heading);
    color: var(--color-brand);
    font-variant-numeric: tabular-nums;
}

/* Horizontal at width: the heading spans the row, then the contact rows sit
   beside the prose rather than stacking above it. Phone and form are peers on
   this page, so this block is not allowed to read as a narrow sidebar. */
@media (min-width: 900px) {
    .c-contact-info__inner {
        display: grid;
        grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.15fr);
        column-gap: 72px;
        align-items: start;
    }
    .c-contact-info__header { grid-column: 1 / -1; }
    .c-contact-info__items  { grid-column: 1; }
    .c-contact-info__detail { grid-column: 2; margin-top: 0; }
}

/* ----------------------- QUOTE FORM (C17) ----------------------- */

.c-form-section { padding-block: clamp(56px, 7vw, 92px); }
.c-form-section--bg-light { background: var(--color-bg-light); }
.c-form-section__content { text-align: left; }
.c-form-section__content h2 { font-size: clamp(1.625rem, 2.8vw, 2.25rem); max-width: 20ch; }
.c-form-section__content .subhead { margin-top: 18px; max-width: 52ch; }

/* The centred layout stacks a single column under the heading. The measure
   caps above are set for the split layout, where the text starts at the left
   edge — centring the text without also centring the box leaves the heading
   sitting off to one side of its own column. */
.c-form-section--center .c-form-section__content { text-align: center; }
.c-form-section--center .c-form-section__content h2,
.c-form-section--center .c-form-section__content .subhead { margin-inline: auto; }
/* The centred column is already only 600px wide, so the 20ch cap above stacks
   the heading into a narrow tower. The column is the measure here. */
.c-form-section--center .c-form-section__content h2 {
    max-width: none;
    text-wrap: balance;
}

/* Gravity Forms 2.7+ ships the "orbital" theme framework, which is driven by
   CSS custom properties. Setting those is the supported way in â€” overriding
   its rules directly turns into a specificity fight the plugin wins on
   update. Scoped to this component so other forms keep plugin defaults. */
.c-form-section .gform-theme--framework {
    --gf-color-primary: var(--color-brand);
    --gf-color-primary-darker: var(--color-brand-dark);
    --gf-color-primary-lighter: var(--color-primary-500);
    --gf-color-primary-contrast: #fff;

    --gf-ctrl-radius: 2px;
    --gf-ctrl-border-color: var(--color-rule);
    --gf-ctrl-border-color-focus: var(--color-brand);
    --gf-ctrl-bg-color: #fff;
    --gf-ctrl-color: var(--color-text);
    --gf-ctrl-size-font: 16px;
    --gf-ctrl-font-family: var(--font-sans);
    --gf-ctrl-desc-color: var(--color-text-muted);

    --gf-ctrl-label-color-primary: var(--color-text-soft);
    --gf-ctrl-label-font-family: var(--font-sans);
    --gf-ctrl-label-size-primary: 11px;
    --gf-ctrl-label-weight-primary: 500;

    --gf-ctrl-btn-radius: 2px;
    --gf-ctrl-btn-font-family: var(--font-sans);
    --gf-ctrl-btn-size-font: 16px;
    --gf-ctrl-btn-font-weight: 500;
    --gf-ctrl-btn-padding-x: 26px;
    --gf-ctrl-btn-padding-y: 17px;
    --gf-ctrl-btn-bg-color-primary: var(--color-brand);
    --gf-ctrl-btn-bg-color-hover-primary: var(--color-brand-dark);
    --gf-ctrl-btn-bg-color-focus-primary: var(--color-brand-dark);
    --gf-ctrl-btn-border-color-primary: var(--color-brand);
    --gf-ctrl-btn-border-color-hover-primary: var(--color-brand-dark);
    --gf-ctrl-btn-border-color-focus-primary: var(--color-brand-dark);
    --gf-ctrl-btn-color-primary: #fff;

    --gf-local-color-primary: var(--color-brand);
}

/* Labels read as the same spec-sheet micro label used everywhere else. */
.c-form-section .gform_wrapper .gfield_label {
    letter-spacing: 0.14em;
    text-transform: uppercase;
}

/* Section breaks group the form into Contact Information and Three Questions.
   Gravity Forms ships these at 40px, which lands them above the section
   heading they sit under — they are a rung below it, so they get sized for
   that and keep the hairline rule to do the dividing. */
.c-form-section .gform_wrapper .gsection {
    margin: 36px 0 4px;
    padding-bottom: 12px;
    border-bottom: 1px solid var(--color-rule);
}
.c-form-section .gform_wrapper .gsection:first-child { margin-top: 0; }
.c-form-section .gform_wrapper .gsection_title {
    font-size: 1.25rem;
    line-height: 1.25;
    letter-spacing: -0.01em;
    margin: 0;
}

/* Belt and braces: older GF markup, and any form not using the framework. */
.c-form-section .gform_wrapper .gform_footer input[type="submit"],
.c-form-section .gform_wrapper .gform_footer button,
.c-form-section .gform_wrapper input.gform_button {
    background-color: var(--color-brand);
    border-color: var(--color-brand);
    color: #fff;
    border-radius: 2px;
    font-family: var(--font-sans);
    font-weight: var(--weight-medium);
    font-size: 16px;
    padding: 17px 26px;
    cursor: pointer;
}
.c-form-section .gform_wrapper .gform_footer input[type="submit"]:hover,
.c-form-section .gform_wrapper .gform_footer button:hover,
.c-form-section .gform_wrapper input.gform_button:hover {
    background-color: var(--color-brand-dark);
    border-color: var(--color-brand-dark);
}

/* The select loses its native affordance once it is restyled, so draw one. */
.c-form-section .gform_wrapper select {
    appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%234C4F52' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 14px center;
    background-size: 18px;
    padding-right: 44px;
}

/* Error and success states are part of this component, not the plugin default. */
.c-form-section .gform_wrapper .gform_validation_errors {
    border: 1px solid var(--color-brand);
    border-radius: 2px;
    background: var(--color-primary-50);
    box-shadow: none;
}
.c-form-section .gform_confirmation_message {
    padding: 28px;
    border: 1px solid var(--color-rule);
    border-left: 2px solid var(--color-brand);
    background: #fff;
    font-size: 1.0625rem;
}

@media (min-width: 900px) {
    .c-form-section--split .c-form-section__inner {
        display: grid;
        grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.15fr);
        gap: 72px;
        align-items: start;
    }
}
/* Stacked, the form needs its own breathing room: the grid gap that separated
   it from the copy no longer applies. */
@media (max-width: 899px) {
    .c-form-section--split .c-form-section__form { margin-top: 40px; }
}

/* ----------------------- TEXT + IMAGE, no-image variant (C23) ----------------------- */

/* The no-image variant must not look like a broken image-right, so it takes
   the full measure rather than sitting in a half-width column. */
.c-content-media--no-image .c-content-media__inner { display: block; }
.c-content-media--no-image .c-content-media__media { display: none; }
.c-content-media--no-image .c-content-media__content h2,
.c-content-media--no-image .c-content-media__content h3 { max-width: 24ch; }
.c-content-media--no-image .c-content-media__content .prose { max-width: 68ch; }

/* ----------------------- HALF-WIDTH COMPONENT ROWS ----------------------- */

.components-row {
    width: 100%;
    max-width: var(--container-max);
    margin-inline: auto;
    padding: clamp(64px, 8vw, 104px) var(--gutter);
    display: grid;
    gap: 48px;
    align-items: start;
}
@media (min-width: 900px) {
    .components-row { grid-template-columns: 1fr 1fr; gap: 72px; }
}
/* Paired components give up their own band padding and container. */
.components-row > * { padding: 0; background: none; border: 0; }
.components-row > * > .container { padding: 0; max-width: none; width: 100%; }

@media (max-width:767px) {
	.c-content-media__content {
		order: 2;
	}
}

/* ----------------------- GLOBAL CTA BAND (C03) ----------------------- */

.c-cta--global.c-cta--bg-dark {
    background: var(--color-bg-dark);
    color: var(--color-text-on-dark);
    padding-block: clamp(72px, 8vw, 104px);
    text-align: left;
	margin-bottom: -1px;
}
.c-cta--global .c-cta__headline {
    font-size: clamp(2rem, 4vw, 3.25rem);
    letter-spacing: -0.025em;
    max-width: 14ch;
    color: #fff;
    margin-bottom: 0;
}
.c-cta--global .c-cta__subhead {
    margin-top: 24px;
    max-width: 46ch;
    color: var(--color-text-on-dark-muted);
    font-size: 1.0625rem;
    line-height: 1.6;
}
.c-cta--global .c-cta__buttons { margin-top: 36px; gap: 16px; justify-content: flex-start; }

@media (min-width: 940px) {
    .c-cta--global .c-cta__inner {
        display: grid;
        grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
        grid-template-rows: min-content min-content;
        column-gap: 80px;
        row-gap: 36px;
        align-content: center;
        text-align: left;
    }
    /* The wrapper dissolves so the heading can hold the left column while the
       supporting line and both CTAs stack in the right one. */
    .c-cta--global .c-cta__content { display: contents; }
    .c-cta--global .c-cta__headline { grid-column: 1; grid-row: 1 / span 2; align-self: center; }
    .c-cta--global .c-cta__subhead  { grid-column: 2; grid-row: 1; align-self: end; margin-top: 0; }
    .c-cta--global .c-cta__buttons  { grid-column: 2; grid-row: 2; align-self: start; margin-top: 0; }
}

/* ----------------------- FOOTER (C02) ----------------------- */

.site-footer {
    background: var(--color-bg-footer);
    color: var(--color-text-on-dark-muted);
    border-top: 1px solid var(--color-rule-dark);
    font-size: 15px;
}
.site-footer__logo { text-decoration: none; display: inline-block; }
/* Matches the header mark at rest (62px), so the two lockups read as the
   same size when the page is at the top. */
.site-footer__logo img { height: 62px; width: auto; }
/* Type lockup stand-in, used until a light-surface version of the mark exists. */
.site-footer__wordmark {
    font-family: var(--font-heading);
    font-weight: var(--weight-heading);
    font-size: 25px;
    letter-spacing: -0.03em;
    color: var(--color-text-on-dark);
}
.site-footer__blurb {
    margin-top: 20px;
    max-width: 34ch;
    line-height: 1.6;
}
.site-footer__col-title {
    font-family: var(--font-sans);
    font-weight: var(--weight-medium);
    font-size: 12px;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--color-text-on-dark);
    margin-bottom: 18px;
}
.site-footer__menu a { text-decoration: none; }
.site-footer__menu a:hover { color: #fff; }
.site-footer__contact-info a { text-decoration: none; }
.site-footer__contact-info a:hover { color: #fff; }

/* Now sits inside the contact column, under the hours line. */
.site-footer__area {
    margin: 18px 0 0;
    line-height: 1.6;
    max-width: 34ch;
}

.site-footer__bottom { border-top: 1px solid var(--color-rule-dark); }
.site-footer__bottom-left {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 12px 32px;
}
.site-footer__license {
    margin: 0;
    color: var(--color-text-on-dark);
}
.site-footer__copyright { margin: 0; font-size: 14px; }

.site-footer { padding: 0; color: var(--color-text-on-dark-muted); }
.site-footer__inner { padding-block: 64px 0; gap: 44px; }
.site-footer__columns { flex-wrap: wrap; gap: 44px; padding: 0 0 36px; }
.site-footer__col { flex-basis: auto !important; max-width: none !important; }

@media (min-width: 760px) {
    .site-footer__inner { grid-template-columns: 1.4fr 2fr; gap: 56px; align-items: start; }
    .site-footer__columns { gap: 56px; }
    .site-footer__col { flex: 1 1 0; }
}

@media (max-width: 759px) {
	.site-footer__columns {
		padding-bottom:0;
	}
}

/* No icon furniture in the footer; the labels carry it. */
.site-footer__contact-info p { display: block; margin-bottom: 8px; }
.site-footer__contact-info .site-footer__icon { display: none; }
.site-footer__contact-info p:first-child a {
    font-family: var(--font-heading);
    font-weight: var(--weight-heading);
    font-size: 19px;
    letter-spacing: -0.01em;
    color: var(--color-text-on-dark);
}
.site-footer__contact-info p:first-child a:hover { color: var(--color-brand-on-dark); }

.site-footer__bottom {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    justify-content: space-between;
    gap: 12px 32px;
    padding-block: 26px 60px;
    font-size: 14px;
}
.site-footer__bottom-menu {
    list-style: none;
    display: flex;
    gap: 24px;
    margin: 0;
    padding: 0;
}
.site-footer__bottom-menu a { text-decoration: none; }
.site-footer__bottom-menu a:hover { color: #fff; }

/* Body copy on any dark surface runs pure white. Muted grey on black reads
   as low-contrast at body sizes, and these are the paragraphs that carry the
   argument. */
.c-hero__subhead,
.c-hero__subhead p,
.c-hero__subhead li,
.c-trust__content,
.c-trust__content p,
.c-trust__content li,
.c-trust__statement-sub,
.c-cta--global .c-cta__subhead,
.c-cta--global .c-cta__subhead p,
.c-cta--global .c-cta__subhead li,
[class*="--bg-dark"] .prose p,
[class*="--bg-dark"] .prose li,
[class*="--bg-image"] .prose p,
[class*="--bg-image"] .prose li {
    color: #fff;
}

/* ----------------------- STICKY CALL BAR (C04) ----------------------- */

.c-sticky-bar {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 70;
    display: grid;
    grid-template-columns: 1fr 1fr;
    background: var(--color-bg-dark);
    border-top: 1px solid var(--color-rule-dark);
}
.c-sticky-bar a {
    text-decoration: none;
    text-align: center;
    padding: 16px 8px;
    font-weight: var(--weight-medium);
    font-size: 15.5px;
    color: var(--color-text-on-dark);
}
.c-sticky-bar__call { background: var(--color-brand-on-dark); color: #fff; }

/* Keep the bar clear of the CTA band's buttons and the last line of a page. */
body:has(.c-sticky-bar) { padding-bottom: 58px; }

@media (min-width: 1024px) {
    .c-sticky-bar { display: none; }
    body:has(.c-sticky-bar) { padding-bottom: 0; }
}


/* =================================================================
   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;
    }
}