/* CMP Public Site — desktop-first, mobile-adaptive */

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }

body {
    font-family: var(--cmp-body-font);
    font-size: var(--cmp-body-size);
    color: var(--cmp-text);
    background: var(--cmp-bg);
    line-height: 1.65;
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    -webkit-font-smoothing: antialiased;
}

h1, h2, h3, h4 {
    font-family: var(--cmp-heading-font);
    line-height: 1.2;
    font-weight: 700;
    color: var(--cmp-text);
}

h1 { font-size: clamp(2rem, 4vw, var(--cmp-heading-size)); }
h2 { font-size: clamp(1.5rem, 2.5vw, calc(var(--cmp-heading-size) * .72)); }
h3 { font-size: clamp(1.1rem, 1.8vw, calc(var(--cmp-heading-size) * .5)); }

a { color: var(--cmp-primary); text-decoration: none; transition: color .2s; }
a:hover { color: var(--cmp-secondary); }

img { max-width: 100%; height: auto; display: block; }

.cmp-container {
    width: 100%;
    max-width: var(--cmp-max-width);
    margin: 0 auto;
    padding: 0 clamp(1rem, 3vw, 2rem);
}

/* ── Header & Menu Bar ── */
.cmp-header {
    background: var(--cmp-menu-bg, #fff);
    border-bottom: 1px solid color-mix(in srgb, var(--cmp-menu-text, var(--cmp-text)) 12%, transparent);
    z-index: 200;
    transition: background .25s ease, box-shadow .25s ease;
}

.cmp-header-sticky { position: sticky; top: 0; }

.cmp-header-static { position: relative; }

.cmp-header-transparent {
    position: absolute;
    width: 100%;
    background: transparent;
    border-bottom-color: transparent;
}

.cmp-menu-glass {
    backdrop-filter: blur(14px) saturate(160%);
    -webkit-backdrop-filter: blur(14px) saturate(160%);
}

.cmp-menu-bg-transparent {
    background: transparent !important;
    border-bottom-color: color-mix(in srgb, var(--cmp-menu-text, #fff) 20%, transparent);
}

.cmp-menu-bg-gradient .cmp-logo {
    color: #fff;
}

@media (min-width: 992px) {
    .cmp-menu-bg-gradient .cmp-header-nav .cmp-menu-list a {
        color: #fff;
    }

    .cmp-menu-bg-gradient .cmp-header-nav .cmp-menu-list a:hover {
        color: #fff;
        background: rgba(255, 255, 255, .14);
    }
}

.cmp-menu-shadow-none { box-shadow: none; }
.cmp-menu-shadow-sm { box-shadow: 0 1px 0 rgba(15, 23, 42, .05), 0 8px 20px rgba(15, 23, 42, .06); }
.cmp-menu-shadow-md { box-shadow: 0 4px 16px rgba(15, 23, 42, .1), 0 12px 28px rgba(15, 23, 42, .08); }
.cmp-menu-shadow-lg { box-shadow: 0 8px 24px rgba(15, 23, 42, .14), 0 20px 40px rgba(15, 23, 42, .1); }

.cmp-header-inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: var(--cmp-menu-bar-padding, .85rem) clamp(1rem, 3vw, 2rem);
    gap: 2rem;
    max-width: var(--cmp-max-width);
    margin: 0 auto;
}

.cmp-logo {
    font-family: var(--cmp-heading-font);
    font-weight: 700;
    font-size: 1.2rem;
    color: var(--cmp-menu-text, var(--cmp-text));
    text-decoration: none;
    white-space: nowrap;
    flex-shrink: 0;
    transition: color .2s, opacity .2s;
}

.cmp-logo:hover { color: var(--cmp-primary); text-decoration: none; opacity: .92; }

.cmp-logo-img { height: var(--cmp-menu-logo-height, 52px); width: auto; }

.cmp-header .cmp-logo:not(:has(img)) {
    font-size: var(--cmp-menu-logo-text-size, 1.2rem);
}

/* Header nav — horizontal layout on desktop only */
@media (min-width: 992px) {
    .cmp-header-nav.cmp-menu-horizontal .cmp-menu-list {
        display: flex;
        flex-direction: row;
        align-items: center;
        gap: .2rem;
        flex-wrap: wrap;
        justify-content: flex-end;
    }

    .cmp-header-nav .cmp-menu-toggle { display: none; }
}

.cmp-header-nav .cmp-menu-list a {
    display: block;
    padding: .55rem 1rem;
    color: var(--cmp-menu-text, var(--cmp-text));
    font-weight: var(--cmp-menu-font-weight, 600);
    font-size: var(--cmp-menu-link-size, .9rem);
    letter-spacing: .03em;
    text-transform: var(--cmp-menu-transform, uppercase);
    border-radius: var(--cmp-radius);
    transition: color .2s, background .2s, border-color .2s, box-shadow .2s, transform .2s;
    position: relative;
}

.cmp-header-nav .cmp-menu-list a:hover {
    color: var(--cmp-menu-hover-color, var(--cmp-primary));
    background: var(--cmp-menu-hover-bg, color-mix(in srgb, var(--cmp-primary) 10%, transparent));
    text-decoration: none;
    transform: translateY(-1px);
}

/* Link style variants */
.cmp-menu-style-pills .cmp-header-nav .cmp-menu-list a {
    border-radius: 999px;
    padding-inline: 1.15rem;
}

.cmp-menu-style-pills .cmp-header-nav .cmp-menu-list a:hover {
    box-shadow: 0 6px 16px color-mix(in srgb, var(--cmp-primary) 18%, transparent);
}

.cmp-menu-style-underline .cmp-header-nav .cmp-menu-list a {
    border-radius: 0;
    padding-inline: .35rem;
    margin-inline: .45rem;
}

.cmp-menu-style-underline .cmp-header-nav .cmp-menu-list a::after {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    bottom: .2rem;
    height: 2px;
    background: currentColor;
    transform: scaleX(0);
    transform-origin: center;
    transition: transform .2s ease;
    opacity: .85;
}

.cmp-menu-style-underline .cmp-header-nav .cmp-menu-list a:hover {
    background: transparent;
    transform: none;
}

.cmp-menu-style-underline .cmp-header-nav .cmp-menu-list a:hover::after {
    transform: scaleX(1);
}

.cmp-menu-style-bordered .cmp-header-nav .cmp-menu-list a {
    border: 1px solid color-mix(in srgb, var(--cmp-menu-text, var(--cmp-text)) 18%, transparent);
    background: color-mix(in srgb, var(--cmp-menu-text, var(--cmp-text)) 4%, transparent);
}

.cmp-menu-style-bordered .cmp-header-nav .cmp-menu-list a:hover {
    border-color: color-mix(in srgb, var(--cmp-menu-hover-color, var(--cmp-primary)) 45%, transparent);
}

.cmp-menu-list { list-style: none; }

.cmp-menu-item-has-children { position: relative; }

.cmp-menu-item-head {
    display: flex;
    align-items: stretch;
    gap: 0;
}

.cmp-menu-item-head .cmp-menu-link {
    flex: 1 1 auto;
}

.cmp-submenu-toggle {
    display: none;
    align-items: center;
    justify-content: center;
    background: transparent;
    border: none;
    cursor: pointer;
    color: inherit;
    padding: .55rem .65rem;
    border-radius: var(--cmp-radius);
}

.cmp-submenu-toggle:hover {
    background: var(--cmp-menu-hover-bg, color-mix(in srgb, var(--cmp-primary) 10%, transparent));
}

.cmp-submenu-caret {
    display: inline-block;
    width: .45rem;
    height: .45rem;
    border-right: 2px solid currentColor;
    border-bottom: 2px solid currentColor;
    transform: rotate(45deg);
    transition: transform .2s ease;
}

.cmp-menu-item-has-children.open > .cmp-menu-item-head .cmp-submenu-caret {
    transform: rotate(-135deg);
}

.cmp-submenu {
    list-style: none;
    display: none;
    margin: 0;
    padding: 0;
}

.cmp-submenu a {
    display: block;
    padding: .55rem 1rem;
    color: var(--cmp-menu-text, var(--cmp-text));
    font-weight: var(--cmp-menu-font-weight, 600);
    font-size: var(--cmp-menu-link-size, .9rem);
    text-decoration: none;
    white-space: nowrap;
}

.cmp-submenu a:hover {
    color: var(--cmp-menu-hover-color, var(--cmp-primary));
    background: var(--cmp-menu-hover-bg, color-mix(in srgb, var(--cmp-primary) 10%, transparent));
    text-decoration: none;
}

@media (min-width: 992px) {
    .cmp-header-nav .cmp-menu-item-has-children:hover > .cmp-submenu,
    .cmp-header-nav .cmp-menu-item-has-children.open > .cmp-submenu,
    .cmp-sidebar-menu .cmp-menu-item-has-children:hover > .cmp-submenu,
    .cmp-sidebar-menu .cmp-menu-item-has-children.open > .cmp-submenu {
        display: block;
    }

    .cmp-header-nav .cmp-submenu {
        position: absolute;
        top: 100%;
        left: 0;
        min-width: 220px;
        background: var(--cmp-mobile-menu-bg, var(--cmp-menu-bg, #fff));
        border: 1px solid color-mix(in srgb, var(--cmp-menu-text, var(--cmp-text)) 12%, transparent);
        border-radius: var(--cmp-radius);
        box-shadow: 0 12px 28px rgba(15, 23, 42, .12);
        padding: .35rem 0;
        z-index: 400;
    }

    /* Invisible bridge so the pointer can reach the dropdown without leaving the hover zone */
    .cmp-header-nav .cmp-submenu::before {
        content: '';
        position: absolute;
        top: -.5rem;
        left: 0;
        right: 0;
        height: .5rem;
    }

    .cmp-header-nav .cmp-submenu a {
        text-transform: none;
        font-size: .92rem;
        padding: .65rem 1rem;
    }

    .cmp-sidebar-menu .cmp-submenu {
        margin-top: .25rem;
        margin-left: .75rem;
        padding-left: .5rem;
        border-left: 2px solid color-mix(in srgb, var(--cmp-primary) 25%, transparent);
    }
}

/* Sidebar / vertical menus (only in sidebar region) */
.cmp-sidebar-menu .cmp-menu-list {
    display: flex;
    flex-direction: column;
    gap: .25rem;
}

.cmp-sidebar-menu .cmp-menu-list a {
    display: block;
    padding: .65rem 1rem;
    color: var(--cmp-text);
    border-radius: var(--cmp-radius);
    font-weight: 500;
}

.cmp-sidebar-menu .cmp-menu-list a:hover {
    background: color-mix(in srgb, var(--cmp-primary) 10%, transparent);
    color: var(--cmp-primary);
    text-decoration: none;
}

/* ── Main ── */
.cmp-main { flex: 1; }

.cmp-with-sidebar {
    display: grid;
    gap: 2.5rem;
    padding: 3rem 0;
}

.cmp-sidebar {
    background: var(--cmp-surface);
    border-radius: var(--cmp-radius);
    padding: 1.25rem;
    border: 1px solid color-mix(in srgb, var(--cmp-text) 8%, transparent);
    align-self: start;
    position: sticky;
    top: 5rem;
}

/* ── Sections ── */
.cmp-section { padding: clamp(3rem, 6vw, 5rem) 0; }

.cmp-section-alt {
    background: var(--cmp-surface-alt);
}

.cmp-section-title {
    text-align: center;
    text-transform: uppercase;
    letter-spacing: .12em;
    font-size: clamp(1.25rem, 2vw, 1.65rem);
    margin-bottom: clamp(2rem, 4vw, 3rem);
    color: var(--cmp-text);
    position: relative;
}

.cmp-section-title::after {
    content: '';
    display: block;
    width: 48px;
    height: 3px;
    background: var(--cmp-accent);
    margin: .75rem auto 0;
    border-radius: 2px;
}

.cmp-prose {
    max-width: 760px;
    margin: 0 auto;
    text-align: center;
    font-size: 1.05rem;
    color: var(--cmp-muted);
}

.cmp-block-has-custom-color .cmp-prose {
    color: inherit;
}

.cmp-has-text-color {
    color: var(--cmp-content-text);
}

.cmp-prose p { margin-bottom: 1rem; }
.cmp-prose p:last-child { margin-bottom: 0; }

.cmp-prose :is(ul, ol),
.cmp-split-body :is(ul, ol),
.cmp-column-body :is(ul, ol) {
    margin: 0 0 1rem;
    padding-left: 1.35rem;
    list-style-position: outside;
    color: inherit;
}

.cmp-prose :is(ul, ol) li,
.cmp-split-body :is(ul, ol) li,
.cmp-column-body :is(ul, ol) li {
    margin-bottom: .35rem;
    color: inherit;
}

.cmp-prose :is(ul, ol) li::marker,
.cmp-split-body :is(ul, ol) li::marker,
.cmp-column-body :is(ul, ol) li::marker {
    color: currentColor;
}

.cmp-prose :is(ul, ol) li:last-child,
.cmp-split-body :is(ul, ol) li:last-child,
.cmp-column-body :is(ul, ol) li:last-child {
    margin-bottom: 0;
}

/* Rich-text headings, quotes & links */
.cmp-prose :is(h2, h3, h4) {
    color: inherit;
    line-height: 1.25;
    margin: 1.4rem 0 .5rem;
    text-align: inherit;
}
.cmp-prose :is(h2, h3, h4):first-child { margin-top: 0; }
.cmp-prose h2 { font-size: 1.6rem; font-weight: 700; }
.cmp-prose h3 { font-size: 1.3rem; font-weight: 700; }
.cmp-prose h4 { font-size: 1.1rem; font-weight: 600; }

.cmp-prose blockquote {
    margin: 1rem 0;
    padding: .5rem 0 .5rem 1rem;
    border-left: 3px solid var(--cmp-accent, var(--cmp-primary));
    font-style: italic;
    text-align: left;
}

.cmp-map-wrap {
    position: relative;
    width: 100%;
    margin: 1.25rem 0;
    border-radius: var(--cmp-radius);
    overflow: hidden;
    box-shadow: 0 8px 28px rgba(15, 23, 42, .1);
    background: #e2e8f0;
}

.cmp-map-wrap iframe {
    display: block;
    width: 100%;
    height: 100%;
    border: 0;
}

.cmp-map-missing {
    margin: 0;
    padding: 2rem 1rem;
    text-align: center;
    color: var(--cmp-muted);
}

/* Rich-text links inherit surrounding colour; accent on hover (not global primary) */
.cmp-prose a:not(.cmp-btn),
.cmp-split-body a:not(.cmp-btn),
.cmp-column-body a:not(.cmp-btn),
.cmp-has-text-color a:not(.cmp-btn) {
    color: inherit !important;
    text-decoration: none;
    transition: color .2s ease, opacity .2s ease;
}
.cmp-prose a:not(.cmp-btn):hover,
.cmp-split-body a:not(.cmp-btn):hover,
.cmp-column-body a:not(.cmp-btn):hover,
.cmp-has-text-color a:not(.cmp-btn):hover,
.cmp-listings-inner a:not(.cmp-btn):hover,
.cmp-listing-body a:not(.cmp-btn):hover {
    color: var(--cmp-block-link-hover, var(--cmp-link-hover, var(--cmp-accent, var(--cmp-secondary)))) !important;
}

/* Multi-column text (newspaper-style flow) */
.cmp-prose-columns {
    max-width: var(--cmp-max-width);
    text-align: left;
    column-gap: 2.5rem;
    column-fill: balance;
}
.cmp-prose-columns-2 { column-count: 2; }
.cmp-prose-columns-3 { column-count: 3; }
.cmp-prose-columns-4 { column-count: 4; }

.cmp-prose-full-width {
    max-width: none;
    width: 100%;
    text-align: left;
}

/* Keep a heading with the text that follows it, avoid awkward breaks */
.cmp-prose-columns :is(h2, h3, h4) {
    break-after: avoid;
    break-inside: avoid;
    margin-top: 0;
}
.cmp-prose-columns > :is(h2, h3, h4):not(:first-child) {
    margin-top: 1.25rem;
}
.cmp-prose-columns p,
.cmp-prose-columns li {
    break-inside: avoid;
}

@media (max-width: 900px) {
    .cmp-prose-columns-3,
    .cmp-prose-columns-4 { column-count: 2; }
}

@media (max-width: 560px) {
    .cmp-prose-columns-2,
    .cmp-prose-columns-3,
    .cmp-prose-columns-4 { column-count: 1; }
}

/* ── Hero (full-bleed) ── */
.cmp-hero {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: clamp(420px, 72vh, 680px);
    padding: clamp(3rem, 8vw, 6rem) 0;
    text-align: center;
    background-size: cover;
    background-position: center;
    color: #fff;
    overflow: hidden;
}

.cmp-hero[data-align="left"] { text-align: left; }
.cmp-hero[data-align="left"] .cmp-hero-subtitle { margin-left: 0; }
.cmp-hero[data-align="right"] { text-align: right; }
.cmp-hero[data-align="right"] .cmp-hero-subtitle { margin-right: 0; }

.cmp-hero-gradient {
    background:
        linear-gradient(160deg, color-mix(in srgb, var(--cmp-primary) 88%, #000) 0%, color-mix(in srgb, var(--cmp-secondary) 92%, #000) 100%);
}

.cmp-hero-image {
    background-color: #1a1a2e;
}

.cmp-hero-overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(
        180deg,
        rgba(15, 23, 42, .55) 0%,
        rgba(15, 23, 42, .72) 100%
    );
    pointer-events: none;
}

.cmp-hero-gradient .cmp-hero-overlay {
    background: linear-gradient(
        135deg,
        color-mix(in srgb, var(--cmp-primary) 30%, transparent) 0%,
        rgba(15, 23, 42, .45) 100%
    );
}

.cmp-hero-inner {
    position: relative;
    z-index: 1;
    text-wrap: balance;
}

.cmp-hero-kicker {
    display: inline-block;
    font-size: .8rem;
    font-weight: 700;
    letter-spacing: .2em;
    text-transform: uppercase;
    margin-bottom: 1rem;
    color: var(--cmp-accent);
}

.cmp-hero h1 {
    color: #fff;
    margin-bottom: 1rem;
    max-width: 18ch;
    margin-left: auto;
    margin-right: auto;
}

.cmp-hero-has-custom-color .cmp-hero-inner {
    color: inherit;
}

.cmp-hero-has-custom-color h1,
.cmp-hero-has-custom-color .cmp-hero-subtitle {
    color: inherit;
}

.cmp-hero-has-custom-color .cmp-hero-kicker {
    color: inherit;
    opacity: .9;
}

.cmp-hero[data-align="left"] h1,
.cmp-hero[data-align="right"] h1 {
    margin-left: 0;
    margin-right: 0;
    max-width: 22ch;
}

.cmp-hero-subtitle {
    font-size: clamp(1rem, 2vw, 1.25rem);
    line-height: 1.6;
    color: rgba(255, 255, 255, .88);
    margin-bottom: 2rem;
    max-width: 640px;
    margin-left: auto;
    margin-right: auto;
    font-weight: 400;
}

/* ── Text block ── */
.cmp-text { padding: clamp(2.5rem, 5vw, 4rem) 0; }
.cmp-text p { margin-bottom: 1rem; }

/* ── Image block ── */
.cmp-image { padding: clamp(2rem, 4vw, 3rem) 0; }
.cmp-image figure { margin: 0; }
.cmp-image img {
    border-radius: var(--cmp-radius);
    width: 100%;
}
.cmp-image figcaption {
    text-align: center;
    font-size: .9rem;
    color: var(--cmp-muted);
    margin-top: .75rem;
}

/* ── Slide / slideshow block ── */
.cmp-slide-block.cmp-section {
    padding: clamp(2rem, 5vw, 4rem) 0;
}

.cmp-slide {
    position: relative;
    overflow: hidden;
}

.cmp-slide-empty {
    padding: 2rem;
    text-align: center;
    color: var(--cmp-muted);
    border: 1px dashed color-mix(in srgb, var(--cmp-text) 20%, transparent);
    border-radius: var(--cmp-radius);
}

.cmp-slide-track {
    position: relative;
}

.cmp-slide-effect-fade .cmp-slide-track {
    display: grid;
}

.cmp-slide-effect-fade .cmp-slide-panel {
    grid-area: 1 / 1;
    opacity: 0;
    visibility: hidden;
    transition: opacity var(--cmp-slide-speed, 500ms) ease, visibility var(--cmp-slide-speed, 500ms) ease;
    pointer-events: none;
}

.cmp-slide-effect-fade .cmp-slide-panel.is-active {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
    z-index: 1;
}

.cmp-slide-effect-slide {
    overflow: hidden;
}

.cmp-slide-effect-slide .cmp-slide-track {
    display: flex;
    width: 100%;
    transition: transform var(--cmp-slide-speed, 500ms) ease;
    will-change: transform;
}

.cmp-slide-effect-slide .cmp-slide-panel {
    flex: 0 0 100%;
    min-width: 0;
}

.cmp-slide-effect-none .cmp-slide-panel {
    display: none;
}

.cmp-slide-effect-none .cmp-slide-panel.is-active {
    display: block;
}

.cmp-slide-panel-inner .cmp-block-slot {
    max-width: none;
}

.cmp-slide-controls {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 1rem;
    margin-top: 1.25rem;
    padding: 0 .5rem;
}

.cmp-slide-nav-center {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: .45rem;
    min-width: 0;
}

.cmp-slide-prev,
.cmp-slide-next {
    position: static;
    transform: none;
    flex-shrink: 0;
    width: 2.25rem;
    height: 2.25rem;
    border: none;
    border-radius: 999px;
    background: color-mix(in srgb, var(--cmp-text) 72%, transparent);
    color: #fff;
    font-size: 1.35rem;
    line-height: 1;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background .2s ease, opacity .2s ease;
}

.cmp-slide-prev:hover,
.cmp-slide-next:hover {
    background: color-mix(in srgb, var(--cmp-text) 88%, transparent);
}

.cmp-slide-prev:disabled,
.cmp-slide-next:disabled {
    opacity: .35;
    cursor: default;
}

.cmp-slide-dots {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: .5rem;
    margin: 0;
    flex-wrap: wrap;
}

.cmp-slide-counter {
    font-size: .82rem;
    font-weight: 600;
    letter-spacing: .04em;
    color: var(--cmp-muted);
    text-align: center;
}

.cmp-slide-dot {
    width: .55rem;
    height: .55rem;
    border-radius: 999px;
    border: none;
    padding: 0;
    background: color-mix(in srgb, var(--cmp-text) 28%, transparent);
    cursor: pointer;
    transition: background .2s ease, transform .2s ease;
}

.cmp-slide-dot.is-active {
    background: var(--cmp-accent, var(--cmp-primary));
    transform: scale(1.15);
}

/* ── Image block (continued) ── */

/* ── Block width grid ── */
.cmp-blocks-flow {
    display: grid;
    grid-template-columns: repeat(12, 1fr);
    width: 100%;
    align-items: stretch;
}

.cmp-block-slot {
    min-width: 0;
}

.cmp-block-width-full { grid-column: 1 / -1; }

.cmp-block-width-half.cmp-block-align-left { grid-column: 1 / span 6; }
.cmp-block-width-half.cmp-block-align-center { grid-column: 4 / span 6; }
.cmp-block-width-half.cmp-block-align-right { grid-column: 7 / span 6; }

.cmp-block-width-third.cmp-block-align-left { grid-column: 1 / span 4; }
.cmp-block-width-third.cmp-block-align-center { grid-column: 5 / span 4; }
.cmp-block-width-third.cmp-block-align-right { grid-column: 9 / span 4; }

.cmp-block-width-two-thirds.cmp-block-align-left { grid-column: 1 / span 8; }
.cmp-block-width-two-thirds.cmp-block-align-center { grid-column: 3 / span 8; }
.cmp-block-width-two-thirds.cmp-block-align-right { grid-column: 5 / span 8; }

/* Default non-full blocks without align class (legacy) */
.cmp-block-width-half:not([class*="cmp-block-align-"]) { grid-column: 1 / span 6; }
.cmp-block-width-third:not([class*="cmp-block-align-"]) { grid-column: 1 / span 4; }
.cmp-block-width-two-thirds:not([class*="cmp-block-align-"]) { grid-column: 1 / span 8; }

.cmp-block-slot:not(.cmp-block-width-full) .cmp-container {
    max-width: 100%;
    padding-left: clamp(.75rem, 2vw, 1.25rem);
    padding-right: clamp(.75rem, 2vw, 1.25rem);
}

.cmp-block-slot:not(.cmp-block-width-full) .cmp-hero {
    min-height: clamp(280px, 40vh, 420px);
}

/* ── Accent overlay groups ── */
.cmp-accent-group {
    grid-column: 1 / -1;
    position: relative;
    display: flex;
    flex-direction: column;
}

.cmp-accent-layer {
    position: absolute;
    inset: 0;
    background: var(--cmp-accent-color, var(--cmp-primary));
    pointer-events: none;
    z-index: 0;
}

.cmp-accent-group > .cmp-block-slot {
    position: relative;
    z-index: 1;
    width: 100%;
}

.cmp-accent-group.cmp-accent-side-right.cmp-accent-shape-triangle_peak .cmp-accent-layer {
    clip-path: polygon(var(--cmp-accent-peak, 50%) var(--cmp-accent-depth, 50%), 100% 0, 100% 100%);
}

.cmp-accent-group.cmp-accent-side-left.cmp-accent-shape-triangle_peak .cmp-accent-layer {
    clip-path: polygon(var(--cmp-accent-peak, 50%) var(--cmp-accent-depth, 50%), 0 0, 0 100%);
}

.cmp-accent-group.cmp-accent-side-right.cmp-accent-shape-diagonal_split .cmp-accent-layer {
    clip-path: polygon(var(--cmp-accent-peak, 50%) 0, 100% 0, 100% 100%, calc(100% - var(--cmp-accent-peak, 50%)) 100%);
}

.cmp-accent-group.cmp-accent-side-left.cmp-accent-shape-diagonal_split .cmp-accent-layer {
    clip-path: polygon(0 0, var(--cmp-accent-peak, 50%) 0, calc(100% - var(--cmp-accent-peak, 50%)) 100%, 0 100%);
}

.cmp-accent-group.cmp-accent-side-right.cmp-accent-shape-angled_band .cmp-accent-layer {
    clip-path: polygon(calc(var(--cmp-accent-peak, 50%) - (var(--cmp-accent-depth, 50%) / 6)) 0, 100% 0, 100% 100%, calc(var(--cmp-accent-peak, 50%) + (var(--cmp-accent-depth, 50%) / 6)) 100%);
}

.cmp-accent-group.cmp-accent-side-left.cmp-accent-shape-angled_band .cmp-accent-layer {
    clip-path: polygon(0 0, calc(var(--cmp-accent-peak, 50%) + (var(--cmp-accent-depth, 50%) / 6)) 0, calc(var(--cmp-accent-peak, 50%) - (var(--cmp-accent-depth, 50%) / 6)) 100%, 0 100%);
}

.cmp-accent-group.cmp-accent-side-right .cmp-block.cmp-section.cmp-accent-base-split {
    background: linear-gradient(90deg, var(--cmp-section-base, transparent) 0%, var(--cmp-section-base, transparent) 50%, transparent 50%) !important;
}

.cmp-accent-group.cmp-accent-side-left .cmp-block.cmp-section.cmp-accent-base-split {
    background: linear-gradient(90deg, transparent 0%, transparent 50%, var(--cmp-section-base, transparent) 50%, var(--cmp-section-base, transparent) 100%) !important;
}

/* Section extras */
.cmp-surface-glass {
    background: color-mix(in srgb, var(--cmp-surface, #fff) 72%, transparent);
    backdrop-filter: blur(10px) saturate(120%);
    -webkit-backdrop-filter: blur(10px) saturate(120%);
    position: relative;
}

/* Inside an accent group, per-section backdrop blur creates a seam line where
   sections meet (each element's blur clamps at its own edges). Blur once at
   group level instead, so the frost is one continuous layer. */
.cmp-accent-group .cmp-surface-glass {
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
}

.cmp-accent-group:has(> .cmp-block-slot > .cmp-surface-glass)::after {
    content: '';
    position: absolute;
    inset: 0;
    backdrop-filter: blur(10px) saturate(120%);
    -webkit-backdrop-filter: blur(10px) saturate(120%);
    pointer-events: none;
}

.cmp-surface-card {
    box-shadow: 0 18px 34px rgba(15, 23, 42, .12);
    border: 1px solid color-mix(in srgb, var(--cmp-text) 10%, transparent);
}

.cmp-heading-gradient :is(h1, h2, h3, .cmp-section-title):not(.cmp-footer h1):not(.cmp-footer h2):not(.cmp-footer h3) {
    background: linear-gradient(120deg, var(--cmp-primary), var(--cmp-accent));
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent !important;
}

.cmp-divider-top,
.cmp-divider-bottom {
    position: relative;
}

.cmp-divider-top::before,
.cmp-divider-bottom::after {
    content: "";
    position: absolute;
    left: 0;
    width: 100%;
    height: calc(34px * var(--cmp-divider-pitch, 1));
    z-index: 2;
    pointer-events: none;
}

.cmp-divider-top::before { top: -1px; }
.cmp-divider-bottom::after { bottom: -1px; }

.cmp-divider-top-angle::before {
    clip-path: polygon(0 0, 100% 0, 0 100%);
    background: var(--cmp-bg);
}

.cmp-divider-bottom-angle::after {
    clip-path: polygon(100% 0, 100% 100%, 0 100%);
    background: var(--cmp-bg);
}

.cmp-divider-top-wave::before,
.cmp-divider-bottom-wave::after,
.cmp-divider-top-scallop::before,
.cmp-divider-bottom-scallop::after,
.cmp-divider-top-curve::before,
.cmp-divider-bottom-curve::after {
    background: var(--cmp-bg);
}

.cmp-divider-top-zigzag::before,
.cmp-divider-bottom-zigzag::after,
.cmp-divider-top-jagged::before,
.cmp-divider-bottom-jagged::after,
.cmp-divider-top-tear::before,
.cmp-divider-bottom-tear::after {
    background: var(--cmp-bg);
    height: calc(24px * var(--cmp-divider-pitch, 1));
}

.cmp-divider-top-wave::before {
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 34' preserveAspectRatio='none'%3E%3Cpath fill='black' d='M0 34 C10 34 10 14 20 14 C30 14 30 34 40 34 C50 34 50 14 60 14 C70 14 70 34 80 34 C90 34 90 14 100 14 C110 14 110 34 120 34 V0 H0 Z'/%3E%3C/svg%3E") repeat-x left top / calc(100% / var(--cmp-divider-frequency, 5)) calc(34px * var(--cmp-divider-pitch, 1));
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 34' preserveAspectRatio='none'%3E%3Cpath fill='black' d='M0 34 C10 34 10 14 20 14 C30 14 30 34 40 34 C50 34 50 14 60 14 C70 14 70 34 80 34 C90 34 90 14 100 14 C110 14 110 34 120 34 V0 H0 Z'/%3E%3C/svg%3E") repeat-x left top / calc(100% / var(--cmp-divider-frequency, 5)) calc(34px * var(--cmp-divider-pitch, 1));
}

.cmp-divider-bottom-wave::after {
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 34' preserveAspectRatio='none'%3E%3Cpath fill='black' d='M0 0 C10 0 10 20 20 20 C30 20 30 0 40 0 C50 0 50 20 60 20 C70 20 70 0 80 0 C90 0 90 20 100 20 C110 20 110 0 120 0 V34 H0 Z'/%3E%3C/svg%3E") repeat-x left top / calc(100% / var(--cmp-divider-frequency, 5)) calc(34px * var(--cmp-divider-pitch, 1));
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 34' preserveAspectRatio='none'%3E%3Cpath fill='black' d='M0 0 C10 0 10 20 20 20 C30 20 30 0 40 0 C50 0 50 20 60 20 C70 20 70 0 80 0 C90 0 90 20 100 20 C110 20 110 0 120 0 V34 H0 Z'/%3E%3C/svg%3E") repeat-x left top / calc(100% / var(--cmp-divider-frequency, 5)) calc(34px * var(--cmp-divider-pitch, 1));
}

.cmp-divider-top-zigzag::before {
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 24' preserveAspectRatio='none'%3E%3Cpath fill='black' d='M0 0 H64 V24 L32 0 L0 24 Z'/%3E%3C/svg%3E") repeat-x left top / calc(100% / var(--cmp-divider-frequency, 5)) calc(24px * var(--cmp-divider-pitch, 1));
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 24' preserveAspectRatio='none'%3E%3Cpath fill='black' d='M0 0 H64 V24 L32 0 L0 24 Z'/%3E%3C/svg%3E") repeat-x left top / calc(100% / var(--cmp-divider-frequency, 5)) calc(24px * var(--cmp-divider-pitch, 1));
}

.cmp-divider-bottom-zigzag::after {
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 24' preserveAspectRatio='none'%3E%3Cpath fill='black' d='M0 24 H64 V0 L32 24 L0 0 Z'/%3E%3C/svg%3E") repeat-x left top / calc(100% / var(--cmp-divider-frequency, 5)) calc(24px * var(--cmp-divider-pitch, 1));
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 24' preserveAspectRatio='none'%3E%3Cpath fill='black' d='M0 24 H64 V0 L32 24 L0 0 Z'/%3E%3C/svg%3E") repeat-x left top / calc(100% / var(--cmp-divider-frequency, 5)) calc(24px * var(--cmp-divider-pitch, 1));
}

.cmp-divider-top-jagged::before {
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 96 24' preserveAspectRatio='none'%3E%3Cpath fill='black' d='M0 0 H96 V24 L84 14 L72 22 L60 10 L48 24 L36 12 L24 20 L12 8 L0 24 Z'/%3E%3C/svg%3E") repeat-x left top / calc(100% / var(--cmp-divider-frequency, 5)) calc(24px * var(--cmp-divider-pitch, 1));
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 96 24' preserveAspectRatio='none'%3E%3Cpath fill='black' d='M0 0 H96 V24 L84 14 L72 22 L60 10 L48 24 L36 12 L24 20 L12 8 L0 24 Z'/%3E%3C/svg%3E") repeat-x left top / calc(100% / var(--cmp-divider-frequency, 5)) calc(24px * var(--cmp-divider-pitch, 1));
}

.cmp-divider-bottom-jagged::after {
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 96 24' preserveAspectRatio='none'%3E%3Cpath fill='black' d='M0 24 H96 V0 L84 10 L72 2 L60 14 L48 0 L36 12 L24 4 L12 16 L0 0 Z'/%3E%3C/svg%3E") repeat-x left top / calc(100% / var(--cmp-divider-frequency, 5)) calc(24px * var(--cmp-divider-pitch, 1));
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 96 24' preserveAspectRatio='none'%3E%3Cpath fill='black' d='M0 24 H96 V0 L84 10 L72 2 L60 14 L48 0 L36 12 L24 4 L12 16 L0 0 Z'/%3E%3C/svg%3E") repeat-x left top / calc(100% / var(--cmp-divider-frequency, 5)) calc(24px * var(--cmp-divider-pitch, 1));
}

.cmp-divider-top-scallop::before {
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 34' preserveAspectRatio='none'%3E%3Cpath fill='black' d='M0 0 H120 V20 C110 33 90 33 80 20 C70 7 50 7 40 20 C30 33 10 33 0 20 Z'/%3E%3C/svg%3E") repeat-x left top / calc(100% / var(--cmp-divider-frequency, 5)) calc(34px * var(--cmp-divider-pitch, 1));
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 34' preserveAspectRatio='none'%3E%3Cpath fill='black' d='M0 0 H120 V20 C110 33 90 33 80 20 C70 7 50 7 40 20 C30 33 10 33 0 20 Z'/%3E%3C/svg%3E") repeat-x left top / calc(100% / var(--cmp-divider-frequency, 5)) calc(34px * var(--cmp-divider-pitch, 1));
}

.cmp-divider-bottom-scallop::after {
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 34' preserveAspectRatio='none'%3E%3Cpath fill='black' d='M0 34 H120 V14 C110 1 90 1 80 14 C70 27 50 27 40 14 C30 1 10 1 0 14 Z'/%3E%3C/svg%3E") repeat-x left top / calc(100% / var(--cmp-divider-frequency, 5)) calc(34px * var(--cmp-divider-pitch, 1));
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 34' preserveAspectRatio='none'%3E%3Cpath fill='black' d='M0 34 H120 V14 C110 1 90 1 80 14 C70 27 50 27 40 14 C30 1 10 1 0 14 Z'/%3E%3C/svg%3E") repeat-x left top / calc(100% / var(--cmp-divider-frequency, 5)) calc(34px * var(--cmp-divider-pitch, 1));
}

.cmp-divider-top-curve::before {
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 34' preserveAspectRatio='none'%3E%3Cpath fill='black' d='M0 34 C20 34 20 14 60 14 C100 14 100 34 120 34 V0 H0 Z'/%3E%3C/svg%3E") repeat-x left top / calc(100% / var(--cmp-divider-frequency, 5)) calc(34px * var(--cmp-divider-pitch, 1));
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 34' preserveAspectRatio='none'%3E%3Cpath fill='black' d='M0 34 C20 34 20 14 60 14 C100 14 100 34 120 34 V0 H0 Z'/%3E%3C/svg%3E") repeat-x left top / calc(100% / var(--cmp-divider-frequency, 5)) calc(34px * var(--cmp-divider-pitch, 1));
}

.cmp-divider-bottom-curve::after {
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 34' preserveAspectRatio='none'%3E%3Cpath fill='black' d='M0 0 C20 0 20 20 60 20 C100 20 100 0 120 0 V34 H0 Z'/%3E%3C/svg%3E") repeat-x left top / calc(100% / var(--cmp-divider-frequency, 5)) calc(34px * var(--cmp-divider-pitch, 1));
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 34' preserveAspectRatio='none'%3E%3Cpath fill='black' d='M0 0 C20 0 20 20 60 20 C100 20 100 0 120 0 V34 H0 Z'/%3E%3C/svg%3E") repeat-x left top / calc(100% / var(--cmp-divider-frequency, 5)) calc(34px * var(--cmp-divider-pitch, 1));
}

.cmp-divider-top-tear::before {
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 24' preserveAspectRatio='none'%3E%3Cpath fill='black' d='M0 24 L10 18 L18 22 L27 14 L35 19 L45 11 L55 17 L63 9 L73 16 L82 8 L92 14 L102 10 L112 17 L120 24 V0 H0 Z'/%3E%3C/svg%3E") repeat-x left top / calc(100% / var(--cmp-divider-frequency, 5)) calc(24px * var(--cmp-divider-pitch, 1));
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 24' preserveAspectRatio='none'%3E%3Cpath fill='black' d='M0 24 L10 18 L18 22 L27 14 L35 19 L45 11 L55 17 L63 9 L73 16 L82 8 L92 14 L102 10 L112 17 L120 24 V0 H0 Z'/%3E%3C/svg%3E") repeat-x left top / calc(100% / var(--cmp-divider-frequency, 5)) calc(24px * var(--cmp-divider-pitch, 1));
}

.cmp-divider-bottom-tear::after {
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 24' preserveAspectRatio='none'%3E%3Cpath fill='black' d='M0 0 L10 6 L18 2 L27 10 L35 5 L45 13 L55 7 L63 15 L73 8 L82 16 L92 10 L102 14 L112 7 L120 0 V24 H0 Z'/%3E%3C/svg%3E") repeat-x left top / calc(100% / var(--cmp-divider-frequency, 5)) calc(24px * var(--cmp-divider-pitch, 1));
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 24' preserveAspectRatio='none'%3E%3Cpath fill='black' d='M0 0 L10 6 L18 2 L27 10 L35 5 L45 13 L55 7 L63 15 L73 8 L82 16 L92 10 L102 14 L112 7 L120 0 V24 H0 Z'/%3E%3C/svg%3E") repeat-x left top / calc(100% / var(--cmp-divider-frequency, 5)) calc(24px * var(--cmp-divider-pitch, 1));
}

.cmp-parallax {
    background-attachment: fixed;
    background-position: center calc(var(--cmp-parallax-speed, 0.3) * 20px);
}

@media (max-width: 991px) {
    .cmp-parallax { background-attachment: scroll; }
}

/* ── Split block ── */
.cmp-split { padding: clamp(2rem, 5vw, 4rem) 0; }

.cmp-split-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: clamp(1.5rem, 4vw, 3rem);
    align-items: center;
}

.cmp-split-text-text.cmp-split-valign-top .cmp-split-grid { align-items: start; }
.cmp-split-text-text.cmp-split-valign-center .cmp-split-grid { align-items: center; }
.cmp-split-text-text.cmp-split-valign-bottom .cmp-split-grid { align-items: end; }

.cmp-split-media figure {
    margin: 0;
    border-radius: var(--cmp-radius);
    overflow: hidden;
    box-shadow: 0 12px 40px rgba(15, 23, 42, .12);
}

.cmp-split-media img {
    width: 100%;
    height: auto;
    object-fit: cover;
}

.cmp-split-content h2 {
    margin-bottom: 1rem;
}

.cmp-block-has-custom-color .cmp-split-content > h2 {
    color: inherit;
}

.cmp-split-body {
    color: var(--cmp-muted);
    line-height: 1.7;
    margin-bottom: 1.25rem;
}

.cmp-split-body p { margin-bottom: .75rem; }
.cmp-split-body p:last-child { margin-bottom: 0; }
.cmp-split-body :is(strong, b) { font-weight: 700; }
.cmp-split-body img { border-radius: var(--cmp-radius); margin: .5rem 0; }

.cmp-split-body :is(ul, ol) {
    margin: 0 0 1rem;
    padding-left: 1.35rem;
}

.cmp-split-body li { margin-bottom: .35rem; }
.cmp-split-body li:last-child { margin-bottom: 0; }

.cmp-split-right .cmp-split-media { order: 2; }
.cmp-split-right .cmp-split-content { order: 1; }

.cmp-split-has-map .cmp-split-grid,
.cmp-split-has-contact .cmp-split-grid {
    align-items: stretch;
}

.cmp-split-map .cmp-map-wrap {
    margin: 0;
    min-height: clamp(280px, 45vh, 480px);
    height: 100%;
}

.cmp-split-contact {
    padding: clamp(1.25rem, 3vw, 1.75rem);
    border-radius: var(--cmp-radius);
    background: color-mix(in srgb, var(--cmp-text) 4%, transparent);
    border: 1px solid color-mix(in srgb, var(--cmp-text) 8%, transparent);
}

.cmp-split-contact-title {
    margin: 0 0 1rem;
    font-size: 1.35rem;
    font-weight: 700;
    line-height: 1.25;
}

.cmp-split-contact-missing {
    margin: 0;
    padding: 1.5rem 1rem;
    text-align: center;
    color: var(--cmp-muted);
}

.cmp-split-contact .cmp-footer-contact-list {
    margin: 0;
}

.cmp-split-text-text.cmp-split-right .cmp-split-side-a { order: 2; }
.cmp-split-text-text.cmp-split-right .cmp-split-side-b { order: 1; }

.cmp-block-has-custom-color .cmp-split-body:not(.cmp-has-text-color) {
    color: var(--cmp-muted);
}

.cmp-has-text-color {
    color: var(--cmp-content-text);
}

/* ── Service / feature cards ── */
.cmp-columns { padding: 0; }

.cmp-columns-grid {
    display: grid;
    gap: clamp(1.25rem, 2.5vw, 2rem);
    grid-template-columns: 1fr;
}

.cmp-column {
    background: var(--cmp-surface, #fff);
    border: 1px solid color-mix(in srgb, var(--cmp-text) 8%, transparent);
    border-radius: var(--cmp-radius);
    padding: clamp(1.5rem, 3vw, 2rem);
    transition: transform .25s ease, box-shadow .25s ease;
    box-shadow: 0 4px 20px rgba(15, 23, 42, .06);
    color: var(--cmp-text);
}

.cmp-column:hover {
    transform: translateY(-4px);
    box-shadow: 0 12px 32px rgba(15, 23, 42, .1);
}

a.cmp-column-link {
    text-decoration: none;
    color: inherit;
    cursor: pointer;
}

a.cmp-column-link:hover {
    color: inherit;
}

a.cmp-column-link:focus-visible {
    outline: 2px solid var(--cmp-primary);
    outline-offset: 3px;
}

.cmp-column h3 {
    color: var(--cmp-primary);
    margin-bottom: .75rem;
    font-size: 1.15rem;
}

.cmp-column-body {
    color: var(--cmp-muted);
    font-size: .95rem;
    line-height: 1.65;
}

.cmp-column-body p { margin-bottom: .5rem; }
.cmp-column-body p:last-child { margin-bottom: 0; }

.cmp-section-alt .cmp-column {
    background: var(--cmp-surface, #fff);
    color: var(--cmp-text);
}

.cmp-section-alt .cmp-column-body {
    color: var(--cmp-muted);
}

.cmp-block-has-custom-color .cmp-column,
.cmp-block-has-custom-color .cmp-column-body {
    color: inherit;
}

.cmp-block-has-custom-color .cmp-column-body :is(p, li, ul, ol, span, div, strong, em, b, i, u, blockquote, a:not(.cmp-btn)) {
    color: inherit !important;
}

.cmp-block-has-custom-color .cmp-prose a:not(.cmp-btn):hover,
.cmp-block-has-custom-color .cmp-split-body a:not(.cmp-btn):hover,
.cmp-block-has-custom-color .cmp-column-body a:not(.cmp-btn):hover {
    color: var(--cmp-block-link-hover, var(--cmp-link-hover, var(--cmp-accent, var(--cmp-secondary)))) !important;
}

.cmp-block-has-custom-color .cmp-column h3 {
    color: var(--cmp-content-text, inherit);
}

.cmp-section-alt .cmp-column h3 {
    color: var(--cmp-primary);
}

/* ── CTA ── */
.cmp-cta {
    position: relative;
    padding: clamp(3rem, 6vw, 5rem) 0;
    text-align: center;
}

.cmp-cta-gradient {
    background: linear-gradient(135deg, var(--cmp-primary), var(--cmp-secondary));
    color: #fff;
}

.cmp-cta-image {
    background-color: #1a1a2e;
    background-size: cover;
    background-position: center;
    color: #fff;
}

.cmp-cta-overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(
        180deg,
        rgba(15, 23, 42, .55) 0%,
        rgba(15, 23, 42, .72) 100%
    );
    pointer-events: none;
}

.cmp-cta-inner {
    position: relative;
    z-index: 1;
}

.cmp-cta-gradient h2,
.cmp-cta-image h2 { color: #fff; margin-bottom: .75rem; }
.cmp-cta h2 { margin-bottom: .75rem; }
.cmp-cta-has-custom-color h2,
.cmp-cta-has-custom-color p {
    color: inherit;
}
.cmp-cta-inner p { margin-bottom: 1.5rem; opacity: .9; max-width: 560px; margin-left: auto; margin-right: auto; }
.cmp-cta:not(.cmp-cta-gradient):not(.cmp-cta-image) .cmp-cta-inner p {
    opacity: 1;
}

/* ── Buttons ── */
.cmp-btn {
    display: inline-block;
    padding: .8rem 2rem;
    border-radius: var(--cmp-radius);
    font-weight: 700;
    font-size: .9rem;
    letter-spacing: .04em;
    text-transform: uppercase;
    text-decoration: none;
    transition: transform .2s, box-shadow .2s, background .2s;
    border: none;
    cursor: pointer;
}

.cmp-btn:hover { text-decoration: none; transform: translateY(-2px); }

.cmp-btn-lg { padding: 1rem 2.25rem; font-size: .95rem; }

.cmp-btn-primary {
    background: var(--cmp-accent);
    color: #fff;
    box-shadow: 0 8px 24px rgba(0, 0, 0, .2);
}

.cmp-btn-primary:hover {
    background: color-mix(in srgb, var(--cmp-accent) 88%, #fff);
    color: #fff;
    box-shadow: 0 12px 28px rgba(0, 0, 0, .25);
}

.cmp-cta-gradient .cmp-btn-primary,
.cmp-cta-image .cmp-btn-primary {
    background: #fff;
    color: var(--cmp-primary);
}

.cmp-cta-gradient .cmp-btn-primary:hover,
.cmp-cta-image .cmp-btn-primary:hover {
    background: rgba(255, 255, 255, .92);
    color: var(--cmp-secondary);
}

.cmp-btn-group {
    display: flex;
    flex-wrap: wrap;
    width: 100%;
    gap: var(--cmp-btn-gap, 1rem);
    box-sizing: border-box;
}

.cmp-btn-group-direction-row.cmp-btn-group-align-left { justify-content: flex-start; }
.cmp-btn-group-direction-row.cmp-btn-group-align-center { justify-content: center; }
.cmp-btn-group-direction-row.cmp-btn-group-align-right { justify-content: flex-end; }

.cmp-btn-group-direction-column {
    flex-direction: column;
    align-items: flex-start;
}

.cmp-btn-group-direction-column.cmp-btn-group-align-center { align-items: center; }
.cmp-btn-group-direction-column.cmp-btn-group-align-right { align-items: flex-end; }

.cmp-btn-group-direction-column .cmp-btn {
    width: auto;
    max-width: 100%;
    text-align: center;
}

.cmp-hero .cmp-btn-group { margin-top: 0; }

.cmp-btn-secondary {
    background: color-mix(in srgb, var(--cmp-text) 10%, transparent);
    color: var(--cmp-text);
    box-shadow: none;
}

.cmp-btn-secondary:hover {
    background: color-mix(in srgb, var(--cmp-text) 16%, transparent);
    color: var(--cmp-text);
}

.cmp-btn-outline {
    background: transparent;
    color: inherit;
    border: 2px solid currentColor;
    box-shadow: none;
}

.cmp-btn-outline:hover {
    background: color-mix(in srgb, currentColor 12%, transparent);
    color: inherit;
}

.cmp-hero-gradient .cmp-btn-secondary,
.cmp-hero-gradient .cmp-btn-outline,
.cmp-cta-gradient .cmp-btn-secondary,
.cmp-cta-gradient .cmp-btn-outline,
.cmp-cta-image .cmp-btn-secondary,
.cmp-cta-image .cmp-btn-outline {
    color: #fff;
}

.cmp-hero-has-custom-color .cmp-btn-secondary {
    color: var(--cmp-content-text, inherit);
}

/* ── Contact form ── */
.cmp-contact-form { padding: clamp(2.5rem, 5vw, 4rem) 0; }
.cmp-form { max-width: 640px; margin: 0 auto; }
.cmp-form label { display: block; font-weight: 600; margin-bottom: 1rem; font-size: .9rem; }
.cmp-form input, .cmp-form textarea {
    width: 100%;
    margin-top: .4rem;
    border: 1px solid color-mix(in srgb, var(--cmp-text) 18%, transparent);
    border-radius: var(--cmp-radius);
    padding: .75rem 1rem;
    font: inherit;
    background: #fff;
    transition: border-color .2s, box-shadow .2s;
}
.cmp-form input:focus, .cmp-form textarea:focus {
    outline: none;
    border-color: var(--cmp-primary);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--cmp-primary) 15%, transparent);
}
.cmp-form input[type="file"] {
    padding: .5rem 0;
    border: none;
    background: transparent;
}
.cmp-form input[type="file"]::file-selector-button {
    margin-right: .75rem;
    padding: .5rem 1rem;
    border: 1px solid color-mix(in srgb, var(--cmp-text) 18%, transparent);
    border-radius: var(--cmp-radius);
    background: var(--cmp-surface);
    font: inherit;
    cursor: pointer;
}
.cmp-form input[type="file"]::file-selector-button:hover {
    border-color: var(--cmp-primary);
}
.cmp-form-grid { display: grid; gap: 0 1rem; grid-template-columns: 1fr; }

/* ── Job listings ── */
.cmp-listings { padding: clamp(2.5rem, 5vw, 4rem) 0; }
.cmp-listings-inner > h2 { margin-bottom: .75rem; }
.cmp-listings-intro {
    color: var(--cmp-muted);
    margin-bottom: 1.5rem;
    max-width: 42rem;
}
.cmp-listings-empty {
    color: var(--cmp-muted);
    font-style: italic;
    max-width: 42rem;
}
.cmp-listings-align-center .cmp-listings-intro,
.cmp-listings-align-center .cmp-listings-empty,
.cmp-listings-align-right .cmp-listings-intro,
.cmp-listings-align-right .cmp-listings-empty {
    width: 100%;
}
.cmp-listings-align-center .cmp-listings-intro,
.cmp-listings-align-center .cmp-listings-empty {
    margin-inline: auto;
}
.cmp-listings-align-right .cmp-listings-intro,
.cmp-listings-align-right .cmp-listings-empty {
    margin-inline: 0 0 auto;
}
.cmp-listings-grid {
    display: grid;
    gap: 1.25rem;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
}
.cmp-listings-align-center .cmp-listings-grid {
    grid-template-columns: repeat(auto-fill, minmax(280px, 320px));
    justify-content: center;
}
.cmp-listings-align-right .cmp-listings-grid {
    grid-template-columns: repeat(auto-fill, minmax(280px, 320px));
    justify-content: end;
}
.cmp-listing-card {
    background: var(--cmp-surface);
    border: 1px solid color-mix(in srgb, var(--cmp-text) 10%, transparent);
    border-radius: var(--cmp-radius);
    padding: 1.25rem 1.5rem;
    display: flex;
    flex-direction: column;
    gap: .65rem;
    width: 100%;
    max-width: 320px;
    text-align: inherit;
}
.cmp-listings-align-center .cmp-listing-card { text-align: center; }
.cmp-listings-align-right .cmp-listing-card { text-align: right; }
.cmp-listings-align-justify .cmp-listing-card { text-align: justify; }
.cmp-listing-card h3 { margin: 0; font-size: 1.15rem; }
.cmp-listing-card h3 a { color: inherit; text-decoration: none; }
.cmp-listing-card h3 a:hover { color: var(--cmp-primary); }
.cmp-listing-meta { margin: 0; font-size: .85rem; color: var(--cmp-muted); }
.cmp-listing-summary { margin: 0; font-size: .92rem; line-height: 1.55; flex: 1; }
.cmp-listing-view { margin-top: .25rem; align-self: flex-start; }
.cmp-listings-align-center .cmp-listing-view { align-self: center; }
.cmp-listings-align-right .cmp-listing-view { align-self: flex-end; }
.cmp-block-has-custom-color .cmp-listings-inner > h2,
.cmp-block-has-custom-color .cmp-listings-intro,
.cmp-block-has-custom-color .cmp-listings-empty,
.cmp-block-has-custom-color .cmp-listing-card {
    color: inherit;
}

.cmp-listing-detail { padding: clamp(2rem, 4vw, 3rem) 0; }
.cmp-listing-back { margin: 0 0 1rem; font-size: .9rem; }
.cmp-listing-back a { color: var(--cmp-muted); text-decoration: none; }
.cmp-listing-back a:hover { color: var(--cmp-primary); }
.cmp-listing-header { max-width: 720px; margin: 0 auto 1.5rem; padding: 0 1rem; }
.cmp-listing-header h1 { margin-bottom: .5rem; }
.cmp-listing-lead { font-size: 1.1rem; color: var(--cmp-muted); line-height: 1.6; }
.cmp-listing-body { margin-bottom: 2rem; }
.cmp-listing-external { text-align: center; margin: 2rem 0; }
.cmp-listing-application {
    max-width: 640px;
    margin: 2.5rem auto 0;
    padding: 0 1rem 2rem;
}
.cmp-listing-application h2 { margin-bottom: 1rem; font-size: 1.35rem; }
.cmp-form-field { margin-bottom: 1.25rem; }
.cmp-form-field fieldset {
    border: 1px solid color-mix(in srgb, var(--cmp-text) 15%, transparent);
    border-radius: var(--cmp-radius);
    padding: 1rem;
    margin: 0;
}
.cmp-form-field legend { font-weight: 600; font-size: .9rem; padding: 0 .25rem; }
.cmp-choice-label {
    display: flex;
    align-items: center;
    gap: .5rem;
    font-weight: 500;
    margin: .5rem 0 0;
    cursor: pointer;
}
.cmp-choice-label input { width: auto; margin: 0; }
.cmp-field-help { font-size: .82rem; color: var(--cmp-muted); margin: .25rem 0 .5rem; font-weight: 400; }
.cmp-required { color: #dc2626; }

/* ── Templates ── */
.cmp-template-landing .cmp-hero { min-height: 80vh; }
.cmp-template-blog .cmp-text .cmp-container { max-width: 720px; }
.cmp-template-contact .cmp-contact-form .cmp-container { max-width: 720px; }

.cmp-layout-centered .cmp-block > .cmp-container { max-width: 720px; }

/* ── Footer ── */
.cmp-footer {
    background: var(--cmp-footer-bg, color-mix(in srgb, var(--cmp-text) 92%, #000));
    color: var(--cmp-footer-text, rgba(255, 255, 255, .75));
    padding: var(--cmp-footer-padding-top, clamp(2.5rem, 5vw, 4rem)) 0 var(--cmp-footer-padding-bottom, clamp(1.5rem, 3vw, 2rem));
    border-top: var(--cmp-footer-border, none);
    margin-top: auto;
}

.cmp-footer .cmp-container.cmp-footer-inner {
    padding-left: var(--cmp-footer-padding-x, clamp(1rem, 3vw, 2rem));
    padding-right: var(--cmp-footer-padding-x, clamp(1rem, 3vw, 2rem));
}

.cmp-footer-inner {
    display: flex;
    flex-direction: column;
    gap: 0;
}

.cmp-footer-main {
    display: grid;
    gap: var(--cmp-footer-column-gap, clamp(1.75rem, 4vw, 3rem));
    align-items: start;
    width: 100%;
}

/* Equal columns — each section gets the same width */
.cmp-footer-columns-equal .cmp-footer-main.cmp-footer-cols-2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.cmp-footer-columns-equal .cmp-footer-main.cmp-footer-cols-3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.cmp-footer-columns-equal .cmp-footer-main.cmp-footer-cols-4 {
    grid-template-columns: repeat(4, minmax(0, 1fr));
}

.cmp-footer-columns-equal .cmp-footer-slot {
    width: 100%;
}

@media (min-width: 768px) {
    /* Spread — edge columns flush, middle columns sized to content */
    .cmp-footer-columns-spread .cmp-footer-main.cmp-footer-cols-2 {
        grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    }

    .cmp-footer-columns-spread .cmp-footer-main.cmp-footer-cols-3 {
        grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
    }

    .cmp-footer-columns-spread .cmp-footer-main.cmp-footer-cols-4 {
        grid-template-columns: minmax(0, 1fr) auto auto minmax(0, 1fr);
    }

    .cmp-footer-columns-spread .cmp-footer-slot {
        width: max-content;
        max-width: 100%;
    }

    .cmp-footer-columns-spread .cmp-footer-main.cmp-footer-cols-2 > :first-child {
        justify-self: start;
    }

    .cmp-footer-columns-spread .cmp-footer-main.cmp-footer-cols-2 > :last-child {
        justify-self: end;
    }

    .cmp-footer-columns-spread .cmp-footer-main.cmp-footer-cols-3 > :first-child {
        justify-self: start;
    }

    .cmp-footer-columns-spread .cmp-footer-main.cmp-footer-cols-3 > :nth-child(2) {
        justify-self: center;
    }

    .cmp-footer-columns-spread .cmp-footer-main.cmp-footer-cols-3 > :last-child {
        justify-self: end;
    }

    .cmp-footer-columns-spread .cmp-footer-main.cmp-footer-cols-4 > :first-child {
        justify-self: start;
    }

    .cmp-footer-columns-spread .cmp-footer-main.cmp-footer-cols-4 > :nth-child(2),
    .cmp-footer-columns-spread .cmp-footer-main.cmp-footer-cols-4 > :nth-child(3) {
        justify-self: center;
    }

    .cmp-footer-columns-spread .cmp-footer-main.cmp-footer-cols-4 > :last-child {
        justify-self: end;
    }
}

.cmp-footer-layout-stacked .cmp-footer-main {
    grid-template-columns: 1fr;
    justify-items: center;
    text-align: center;
}

.cmp-footer-slot {
    display: flex;
    flex-direction: column;
    gap: .85rem;
    min-width: 0;
}

.cmp-footer-slot-align-left { text-align: left; align-items: flex-start; }
.cmp-footer-slot-align-center { text-align: center; align-items: center; }
.cmp-footer-slot-align-right { text-align: right; align-items: flex-end; }

.cmp-footer-layout-stacked .cmp-footer-slot-align-left,
.cmp-footer-layout-stacked .cmp-footer-slot-align-right {
    align-items: center;
    text-align: center;
}

.cmp-footer-heading {
    margin: 0 0 .15rem;
    font-family: var(--cmp-heading-font);
    font-size: .72rem;
    font-weight: 700;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: color-mix(in srgb, var(--cmp-footer-text, #fff) 72%, transparent);
}

.cmp-footer-brand {
    max-width: 360px;
}

.cmp-footer-logo-link { display: inline-block; line-height: 0; }

.cmp-footer-logo {
    height: var(--cmp-footer-logo-height, 52px);
    width: auto;
    max-width: 220px;
    object-fit: contain;
}

.cmp-footer-site-name {
    font-family: var(--cmp-heading-font);
    font-size: 1.15rem;
    font-weight: 700;
    color: var(--cmp-footer-text, #fff);
    text-decoration: none;
    line-height: 1.2;
}

.cmp-footer-site-name:hover {
    color: var(--cmp-footer-link-hover, #fff);
    text-decoration: none;
}

.cmp-footer-intro-heading {
    margin: 0 0 .35rem;
    font-size: .8rem;
    font-weight: 600;
    color: color-mix(in srgb, var(--cmp-footer-text, #fff) 65%, transparent);
}

.cmp-footer-intro {
    font-size: .95rem;
    line-height: 1.65;
    color: var(--cmp-footer-text, rgba(255, 255, 255, .75));
    margin: 0;
}

.cmp-footer-nav-col {
    min-width: 0;
}

.cmp-footer-columns-equal .cmp-footer-nav-col {
    width: 100%;
}

.cmp-footer-links {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    gap: .55rem 1.35rem;
}

.cmp-footer-columns-equal .cmp-footer-links {
    width: 100%;
}

.cmp-footer-links-column {
    flex-direction: column;
    align-items: inherit;
}

.cmp-footer-links-row {
    flex-direction: row;
    flex-wrap: wrap;
    align-items: center;
}

.cmp-footer-slot-align-center .cmp-footer-links {
    justify-content: center;
    align-items: center;
}

.cmp-footer-slot-align-right .cmp-footer-links {
    justify-content: flex-end;
    align-items: flex-end;
}

.cmp-footer-slot-align-left .cmp-footer-links {
    justify-content: flex-start;
    align-items: flex-start;
}

.cmp-footer-links a {
    display: inline-block;
    color: var(--cmp-footer-link, rgba(255, 255, 255, .82));
    font-size: .92rem;
    font-weight: 500;
    line-height: 1.4;
    text-decoration: none;
    transition: color .2s ease;
}

.cmp-footer-links a:hover {
    color: var(--cmp-footer-link-hover, #fff);
    text-decoration: underline;
    text-underline-offset: .2em;
}

.cmp-footer-link-child a {
    font-size: .88rem;
    opacity: .9;
}

.cmp-footer-links-column .cmp-footer-link-child {
    padding-left: .75rem;
}

.cmp-footer-menu-item-has-children > .cmp-footer-submenu {
    display: none;
    list-style: none;
    margin: 0;
    padding: 0;
}

.cmp-footer-menu-item-has-children.open > .cmp-footer-submenu {
    display: block;
}

@media (min-width: 992px) {
    .cmp-footer-menu-item-has-children:hover > .cmp-footer-submenu,
    .cmp-footer-menu-item-has-children:focus-within > .cmp-footer-submenu {
        display: block;
    }

    .cmp-footer-menu-item-has-children:hover .cmp-footer-submenu-toggle .cmp-footer-link-chevron,
    .cmp-footer-menu-item-has-children:focus-within .cmp-footer-submenu-toggle .cmp-footer-link-chevron {
        transform: rotate(90deg);
    }
}

.cmp-footer-menu-item-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
    width: 100%;
}

.cmp-footer-submenu-toggle {
    background: none;
    border: none;
    color: inherit;
    cursor: pointer;
    padding: .35rem;
    line-height: 1;
    flex-shrink: 0;
}

.cmp-footer-submenu-toggle .cmp-footer-link-chevron {
    display: inline-block;
    transition: transform .2s ease;
}

.cmp-footer-menu-item-has-children.open .cmp-footer-submenu-toggle .cmp-footer-link-chevron {
    transform: rotate(90deg);
}

.cmp-footer-link-style-menu .cmp-footer-menu-item-has-children {
    width: 100%;
    border-bottom: 1px solid color-mix(in srgb, var(--cmp-footer-text, #fff) 14%, transparent);
}

.cmp-footer-link-style-menu .cmp-footer-menu-item-has-children:last-child {
    border-bottom: none;
}

.cmp-footer-link-style-menu .cmp-footer-menu-item-head .cmp-footer-link-parent {
    flex: 1;
    display: flex;
    align-items: center;
    padding: .7rem 0;
    color: var(--cmp-footer-link, rgba(255, 255, 255, .82));
    font-size: .82rem;
    font-weight: 600;
    letter-spacing: .1em;
    text-transform: uppercase;
    text-decoration: none;
}

.cmp-footer-link-style-menu .cmp-footer-menu-item-head .cmp-footer-link-parent:hover {
    color: var(--cmp-footer-link-hover, #fff);
}

.cmp-footer-link-style-menu .cmp-footer-menu-item-has-children .cmp-footer-submenu .cmp-footer-link-item a {
    display: block;
    padding: .45rem 0 .45rem .75rem;
    font-size: .88rem;
    font-weight: 500;
    letter-spacing: normal;
    text-transform: none;
}

/* Menu-style footer links (separators, chevrons, accent underline) */
.cmp-footer-link-style-menu .cmp-footer-links-column {
    gap: 0;
}

.cmp-footer-link-style-menu .cmp-footer-link-item {
    width: 100%;
    border-bottom: 1px solid color-mix(in srgb, var(--cmp-footer-text, #fff) 14%, transparent);
}

.cmp-footer-link-style-menu .cmp-footer-links-column .cmp-footer-link-item:last-child {
    border-bottom: none;
}

.cmp-footer-link-style-menu .cmp-footer-link-item a {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    width: 100%;
    padding: .7rem 0;
    color: var(--cmp-footer-link, rgba(255, 255, 255, .82));
    font-size: .82rem;
    font-weight: 600;
    letter-spacing: .1em;
    text-transform: uppercase;
    text-decoration: none;
    border-bottom: 2px solid transparent;
    transition: color .2s ease, border-color .2s ease;
}

.cmp-footer-link-style-menu .cmp-footer-link-item a:hover {
    color: var(--cmp-footer-link-hover, #fff);
    border-bottom-color: var(--cmp-accent, var(--cmp-primary));
    text-decoration: none;
}

.cmp-footer-link-style-menu .cmp-footer-link-label {
    flex: 1 1 auto;
    min-width: 0;
}

.cmp-footer-link-style-menu .cmp-footer-link-chevron {
    flex-shrink: 0;
    width: .45rem;
    height: .45rem;
    border-right: 2px solid currentColor;
    border-bottom: 2px solid currentColor;
    transform: rotate(-45deg);
    opacity: .55;
}

.cmp-footer-link-style-menu .cmp-footer-link-item a:hover .cmp-footer-link-chevron {
    opacity: 1;
}

/* Contact info column */
.cmp-footer-contact-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: .85rem;
}

.cmp-footer-columns-equal .cmp-footer-contact-list {
    width: 100%;
}

.cmp-footer-contact-branch + .cmp-footer-contact-branch {
    margin-top: 1.35rem;
    padding-top: 1.15rem;
    border-top: 1px solid color-mix(in srgb, var(--cmp-footer-text, #fff) 12%, transparent);
}

.cmp-footer-contact-branch-label {
    margin: 0 0 .65rem;
    font-size: .88rem;
    font-weight: 700;
    letter-spacing: .04em;
    color: var(--cmp-footer-link-hover, #fff);
}

.cmp-footer-contact-item {
    display: flex;
    align-items: flex-start;
    gap: .75rem;
    font-size: .92rem;
    line-height: 1.5;
    color: var(--cmp-footer-text, rgba(255, 255, 255, .75));
}

.cmp-footer-contact-item a {
    color: inherit;
    text-decoration: none;
    transition: color .2s ease;
}

.cmp-footer-contact-item a:hover {
    color: var(--cmp-footer-link-hover, #fff);
    text-decoration: underline;
    text-underline-offset: .15em;
}

.cmp-footer-contact-icon {
    flex-shrink: 0;
    width: 1.1rem;
    height: 1.1rem;
    margin-top: .15rem;
    opacity: .75;
    background-color: currentColor;
    mask-size: contain;
    mask-repeat: no-repeat;
    mask-position: center;
    -webkit-mask-size: contain;
    -webkit-mask-repeat: no-repeat;
    -webkit-mask-position: center;
}

.cmp-footer-contact-hours .cmp-footer-contact-icon {
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 7v5l3 2'/%3E%3C/svg%3E");
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 7v5l3 2'/%3E%3C/svg%3E");
}

.cmp-footer-contact-phone .cmp-footer-contact-icon {
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2'%3E%3Cpath d='M5 4h4l2 5-2 1a11 11 0 0 0 5 5l1-2 5 2v4a2 2 0 0 1-2 2A15 15 0 0 1 3 6a2 2 0 0 1 2-2z'/%3E%3C/svg%3E");
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2'%3E%3Cpath d='M5 4h4l2 5-2 1a11 11 0 0 0 5 5l1-2 5 2v4a2 2 0 0 1-2 2A15 15 0 0 1 3 6a2 2 0 0 1 2-2z'/%3E%3C/svg%3E");
}

.cmp-footer-contact-email .cmp-footer-contact-icon {
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2'%3E%3Crect x='3' y='5' width='18' height='14' rx='2'/%3E%3Cpath d='M3 7l9 6 9-6'/%3E%3C/svg%3E");
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2'%3E%3Crect x='3' y='5' width='18' height='14' rx='2'/%3E%3Cpath d='M3 7l9 6 9-6'/%3E%3C/svg%3E");
}

.cmp-footer-contact-address .cmp-footer-contact-icon {
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2'%3E%3Cpath d='M12 21s7-4.5 7-11a7 7 0 1 0-14 0c0 6.5 7 11 7 11z'/%3E%3Ccircle cx='12' cy='10' r='2.5'/%3E%3C/svg%3E");
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2'%3E%3Cpath d='M12 21s7-4.5 7-11a7 7 0 1 0-14 0c0 6.5 7 11 7 11z'/%3E%3Ccircle cx='12' cy='10' r='2.5'/%3E%3C/svg%3E");
}

.cmp-footer-social {
    display: flex;
    flex-wrap: wrap;
    gap: .65rem;
    align-items: center;
}

.cmp-footer-columns-equal .cmp-footer-social {
    width: 100%;
}

.cmp-footer-slot-align-center .cmp-footer-social { justify-content: center; }
.cmp-footer-slot-align-right .cmp-footer-social { justify-content: flex-end; }

.cmp-footer-social-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    width: auto;
    height: auto;
    min-width: 0;
    min-height: 0;
    border-radius: 0;
    background: transparent;
    color: var(--cmp-footer-link, rgba(255, 255, 255, .8));
    transition: opacity .2s, transform .2s;
    flex-shrink: 0;
    box-sizing: border-box;
    line-height: 0;
}

.cmp-footer-social-link:hover {
    color: var(--cmp-footer-link-hover, #fff);
    background: transparent;
    opacity: .88;
    transform: translateY(-2px);
    text-decoration: none;
}

.cmp-footer-social-link img {
    width: var(--cmp-footer-social-size, 44px);
    height: var(--cmp-footer-social-size, 44px);
    display: block;
    object-fit: contain;
}

.cmp-footer-social-link span {
    font-size: calc(var(--cmp-footer-social-size, 44px) * 0.45);
    font-weight: 700;
    letter-spacing: .03em;
    padding: 0;
    line-height: 1;
    white-space: nowrap;
}

.cmp-footer-bottom {
    margin-top: clamp(1.75rem, 4vw, 2.5rem);
    padding-top: 1.25rem;
    border-top: 1px solid color-mix(in srgb, var(--cmp-footer-text, #fff) 14%, transparent);
}

.cmp-footer-no-copyright-border .cmp-footer-bottom {
    border-top: none;
    padding-top: 0;
}

.cmp-footer-text {
    font-size: .84rem;
    line-height: 1.5;
    color: var(--cmp-footer-copyright, rgba(255, 255, 255, .5));
    margin: 0;
}

@media (max-width: 767px) {
    .cmp-footer-layout-split .cmp-footer-main {
        grid-template-columns: 1fr;
        justify-items: stretch;
    }

    .cmp-footer-layout-columns .cmp-footer-main,
    .cmp-footer-layout-split .cmp-footer-main,
    .cmp-footer-columns-spread .cmp-footer-main,
    .cmp-footer-columns-equal .cmp-footer-main {
        grid-template-columns: 1fr;
    }

    .cmp-footer-columns-spread .cmp-footer-slot,
    .cmp-footer-columns-equal .cmp-footer-slot {
        width: 100%;
        max-width: none;
        justify-self: stretch !important;
    }

    .cmp-footer-slot-align-left,
    .cmp-footer-slot-align-right {
        align-items: center;
        text-align: center;
    }

    .cmp-footer-brand {
        max-width: none;
    }

    .cmp-footer-social {
        justify-content: center;
    }

    .cmp-footer-menu-direction-row .cmp-footer-menu .cmp-menu-list {
        justify-content: center;
    }
}

/* ── Animations ── */
.cmp-block { animation: none; }

.cmp-reveal {
    opacity: 0;
    animation: none;
}

.cmp-reveal.cmp-reveal-visible {
    animation-duration: var(--cmp-reveal-duration, .6s);
    animation-delay: var(--cmp-reveal-delay, 0ms);
    animation-fill-mode: both;
    animation-timing-function: ease;
}

.cmp-reveal-fade.cmp-reveal-visible { animation-name: cmpRevealFade; }
.cmp-reveal-fade-up.cmp-reveal-visible { animation-name: cmpRevealFadeUp; }
.cmp-reveal-slide-left.cmp-reveal-visible { animation-name: cmpRevealSlideLeft; }
.cmp-reveal-slide-right.cmp-reveal-visible { animation-name: cmpRevealSlideRight; }

@keyframes cmpFadeIn {
    from { opacity: 0; transform: translateY(8px); }
    to { opacity: 1; transform: translateY(0); }
}

@keyframes cmpRevealFade {
    from { opacity: 0; }
    to { opacity: 1; }
}

@keyframes cmpRevealFadeUp {
    from { opacity: 0; transform: translateY(var(--cmp-reveal-distance, 18px)); }
    to { opacity: 1; transform: translateY(0); }
}

@keyframes cmpRevealSlideLeft {
    from { opacity: 0; transform: translateX(calc(var(--cmp-reveal-distance, 20px) * -1)); }
    to { opacity: 1; transform: translateX(0); }
}

@keyframes cmpRevealSlideRight {
    from { opacity: 0; transform: translateX(var(--cmp-reveal-distance, 20px)); }
    to { opacity: 1; transform: translateX(0); }
}

/* ── Desktop ── */
@media (min-width: 640px) {
    .cmp-columns-grid[data-cols="2"],
    .cmp-columns-grid[data-cols="3"] {
        grid-template-columns: repeat(2, 1fr);
    }
    .cmp-form-grid { grid-template-columns: 1fr 1fr; }
}

@media (min-width: 900px) {
    .cmp-with-sidebar {
        grid-template-columns: 260px 1fr;
        padding: 3rem 0 4rem;
    }

    .cmp-sidebar-right .cmp-with-sidebar {
        grid-template-columns: 1fr 260px;
    }

    .cmp-columns-grid[data-cols="3"] {
        grid-template-columns: repeat(3, 1fr);
    }
}

/* ── Mobile / tablet nav ── */
@media (max-width: 991px) {
    .cmp-header {
        position: relative;
    }

    .cmp-header-inner {
        flex-wrap: nowrap;
        position: relative;
    }

    .cmp-menu-mobile-hidden {
        display: none !important;
    }

    .cmp-header-nav {
        width: auto;
        margin-left: auto;
        position: static;
    }

    .cmp-menu-toggle {
        display: none;
        flex-direction: column;
        gap: 5px;
        background: none;
        border: none;
        cursor: pointer;
        padding: .5rem;
        position: static;
    }

    .cmp-menu-toggle span {
        display: block;
        width: 22px;
        height: 2px;
        background: var(--cmp-menu-text, var(--cmp-text));
        border-radius: 2px;
        transition: transform .2s, opacity .2s;
    }

    .cmp-menu.open .cmp-menu-toggle span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
    .cmp-menu.open .cmp-menu-toggle span:nth-child(2) { opacity: 0; }
    .cmp-menu.open .cmp-menu-toggle span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

    /* Hamburger on mobile — hide inline links until opened */
    .cmp-header-nav.cmp-menu-mobile-hamburger.cmp-menu-horizontal .cmp-menu-list,
    .cmp-menu-hamburger .cmp-menu-list,
    .cmp-footer-menu.cmp-menu-mobile-hamburger .cmp-menu-list,
    .cmp-sidebar-menu.cmp-menu-mobile-hamburger .cmp-menu-list {
        display: none;
        position: absolute;
        top: 100%;
        left: 0;
        right: 0;
        flex-direction: column;
        background: var(--cmp-mobile-menu-bg, var(--cmp-menu-bg, #fff));
        padding: .75rem clamp(1rem, 3vw, 2rem) 1.25rem;
        border-bottom: 1px solid color-mix(in srgb, var(--cmp-mobile-menu-text, var(--cmp-text)) 12%, transparent);
        box-shadow: 0 12px 24px rgba(15, 23, 42, .08);
        z-index: 300;
    }

    .cmp-header-nav.cmp-menu-mobile-hamburger.open .cmp-menu-list,
    .cmp-menu-hamburger.open .cmp-menu-list,
    .cmp-footer-menu.cmp-menu-mobile-hamburger.open .cmp-menu-list,
    .cmp-sidebar-menu.cmp-menu-mobile-hamburger.open .cmp-menu-list {
        display: flex;
    }

    .cmp-header-nav.cmp-menu-mobile-hamburger .cmp-menu-toggle,
    .cmp-menu-hamburger .cmp-menu-toggle,
    .cmp-footer-menu.cmp-menu-mobile-hamburger .cmp-menu-toggle,
    .cmp-sidebar-menu.cmp-menu-mobile-hamburger .cmp-menu-toggle {
        display: flex;
    }

    .cmp-footer-menu.cmp-menu-mobile-hamburger,
    .cmp-sidebar-menu.cmp-menu-mobile-hamburger,
    .cmp-menu-hamburger:not(.cmp-header-nav) {
        position: relative;
    }

    .cmp-header-nav.cmp-menu-mobile-hamburger .cmp-menu-list a,
    .cmp-menu-hamburger .cmp-menu-list a,
    .cmp-footer-menu.cmp-menu-mobile-hamburger .cmp-menu-list a,
    .cmp-sidebar-menu.cmp-menu-mobile-hamburger .cmp-menu-list a {
        text-transform: none;
        font-size: max(1rem, var(--cmp-menu-link-size, .9rem));
        font-weight: var(--cmp-menu-font-weight, 600);
        color: var(--cmp-mobile-menu-text, var(--cmp-menu-text, var(--cmp-text)));
        padding: .75rem 0;
        border-bottom: 1px solid color-mix(in srgb, var(--cmp-mobile-menu-text, var(--cmp-text)) 8%, transparent);
        border-radius: 0;
        background: transparent;
    }

    .cmp-header-nav.cmp-menu-mobile-hamburger .cmp-menu-list a:hover,
    .cmp-menu-hamburger .cmp-menu-list a:hover,
    .cmp-footer-menu.cmp-menu-mobile-hamburger .cmp-menu-list a:hover,
    .cmp-sidebar-menu.cmp-menu-mobile-hamburger .cmp-menu-list a:hover {
        color: var(--cmp-mobile-menu-hover-color, var(--cmp-menu-hover-color, var(--cmp-primary)));
        background: var(--cmp-mobile-menu-hover-bg, var(--cmp-menu-hover-bg, color-mix(in srgb, var(--cmp-primary) 10%, transparent)));
        text-decoration: none;
        transform: none;
    }

    .cmp-header-nav.cmp-menu-mobile-hamburger .cmp-menu-list li:last-child a,
    .cmp-menu-hamburger .cmp-menu-list li:last-child a,
    .cmp-footer-menu.cmp-menu-mobile-hamburger .cmp-menu-list li:last-child a,
    .cmp-sidebar-menu.cmp-menu-mobile-hamburger .cmp-menu-list li:last-child a {
        border-bottom: none;
    }

    /* Same as desktop — keep horizontal bar on mobile */
    .cmp-header-nav.cmp-menu-mobile-same.cmp-menu-horizontal .cmp-menu-list {
        display: flex;
        flex-direction: row;
        flex-wrap: wrap;
        position: static;
        background: transparent;
        padding: 0;
        border: none;
        box-shadow: none;
    }

    .cmp-header-inner:has(.cmp-menu-mobile-same) {
        flex-wrap: wrap;
    }

    .cmp-submenu-toggle {
        display: inline-flex;
    }

    .cmp-menu-item-head .cmp-menu-link {
        padding: .75rem 0;
        border-bottom: 1px solid color-mix(in srgb, var(--cmp-mobile-menu-text, var(--cmp-text)) 8%, transparent);
    }

    .cmp-menu-item-has-children.open > .cmp-submenu {
        display: block;
        padding: 0 0 .5rem 1rem;
    }

    .cmp-menu-item-has-children .cmp-submenu a {
        text-transform: none;
        font-size: .95rem;
        padding: .6rem 0;
        border-bottom: 1px solid color-mix(in srgb, var(--cmp-mobile-menu-text, var(--cmp-text)) 6%, transparent);
        white-space: normal;
    }

    .cmp-menu-item-has-children .cmp-submenu li:last-child a {
        border-bottom: none;
    }

    .cmp-hero { min-height: 380px; }
    .cmp-hero h1 { max-width: none; }

    /* Override width + position (align) rules so partial-width blocks span full row on mobile */
    .cmp-block-slot[class*="cmp-block-width-"]:not(.cmp-block-width-full) {
        grid-column: 1 / -1;
    }

    .cmp-split-grid { grid-template-columns: 1fr; }
    .cmp-split-right .cmp-split-media,
    .cmp-split-right .cmp-split-content,
    .cmp-split-text-text.cmp-split-right .cmp-split-side-a,
    .cmp-split-text-text.cmp-split-right .cmp-split-side-b { order: unset; }

    .cmp-sidebar { position: static; }
}
