:root {
    --cms-container: 1180px;
    --cms-wide: 1440px;
    --cms-gutter: clamp(18px, 4vw, 48px);
    --cms-space-xs: .5rem;
    --cms-space-sm: 1rem;
    --cms-space-md: 1.5rem;
    --cms-space-lg: 2.5rem;
    --cms-space-xl: 4rem;
    --cms-text: #172033;
    --cms-muted: #5f6f82;
    --cms-primary: #1769aa;
    --cms-primary-dark: #104d7d;
    --cms-border: #dfe6ed;
    --cms-background: #fff;
    --cms-surface: #f8fafc;
    --cms-footer: #102a43;
    --cms-font-body: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    --cms-font-heading: inherit;
    --cms-radius: .625rem;
    --cms-shadow: 0 14px 36px rgba(20,36,56,.12);
    font-family: var(--cms-font-body);
    color: var(--cms-text);
    background: var(--cms-background);
    line-height: 1.6;
}

* {
    box-sizing: border-box;
}

html {
    scroll-behavior: smooth;
}

body {
    margin: 0;
    min-height: 100vh;
    background: var(--cms-background);
}

h1, h2, h3, h4, h5, h6 {
    font-family: var(--cms-font-heading);
}

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


main {
    min-height: 60vh;
}


.cms-section {
    width: 100%;
}

.cms-section__inner {
    width: 100%;
    margin-inline: auto;
    padding-inline: var(--cms-gutter);
}

.cms-section--contained > .cms-section__inner {
    max-width: var(--cms-container);
}

.cms-section--wide > .cms-section__inner {
    max-width: var(--cms-wide);
}

.cms-section--full > .cms-section__inner {
    max-width: none;
}

.cms-section--padding-none > .cms-section__inner { padding-block: 0; }
.cms-section--padding-sm > .cms-section__inner { padding-block: var(--cms-space-sm); }
.cms-section--padding-md > .cms-section__inner { padding-block: var(--cms-space-md); }
.cms-section--padding-lg > .cms-section__inner { padding-block: var(--cms-space-lg); }
.cms-section--padding-xl > .cms-section__inner { padding-block: var(--cms-space-xl); }

.cms-grid {
    display: grid;
    grid-template-columns: repeat(12, minmax(0, 1fr));
    align-items: start;
}

.cms-section--gap-none .cms-grid { gap: 0; }
.cms-section--gap-xs .cms-grid { gap: var(--cms-space-xs); }
.cms-section--gap-sm .cms-grid { gap: var(--cms-space-sm); }
.cms-section--gap-md .cms-grid { gap: var(--cms-space-md); }
.cms-section--gap-lg .cms-grid { gap: var(--cms-space-lg); }
.cms-section--gap-xl .cms-grid { gap: var(--cms-space-xl); }

.cms-column {
    display: flex;
    min-width: 0;
    flex-direction: column;
    grid-column: span var(--cms-span, 12);
}

.cms-column--align-start { justify-content: flex-start; }
.cms-column--align-center { justify-content: center; }
.cms-column--align-end { justify-content: flex-end; }
.cms-column--align-stretch {
    align-items: stretch;
    justify-content: flex-start;
}

.cms-heading {
    margin: 0 0 .75em;
    line-height: 1.15;
    text-wrap: balance;
}

.cms-heading--left,
.cms-text--left { text-align: left; }
.cms-heading--center,
.cms-text--center { text-align: center; }
.cms-heading--right,
.cms-text--right { text-align: right; }

.cms-text p {
    margin: 0 0 1em;
}

.cms-text p:last-child {
    margin-bottom: 0;
}

.cms-text--lead {
    color: #334155;
    font-size: clamp(1.1rem, 1.8vw, 1.35rem);
}

.cms-text--small {
    color: var(--cms-muted);
    font-size: .9rem;
}

.cms-image {
    margin: 0;
}

.cms-image img {
    display: block;
    width: 100%;
}

.cms-image--natural img { width: auto; }
.cms-image--cover img { aspect-ratio: 16 / 9; object-fit: cover; }
.cms-image--contain img { aspect-ratio: 16 / 9; object-fit: contain; }
.cms-image figcaption {
    margin-top: .55rem;
    color: var(--cms-muted);
    font-size: .875rem;
}
.cms-image--empty {
    display: grid;
    min-height: 160px;
    place-items: center;
    border: 1px dashed var(--cms-border);
    color: var(--cms-muted);
    background: #f8fafc;
}

.cms-button-row {
    display: flex;
}
.cms-button-row--left { justify-content: flex-start; }
.cms-button-row--center { justify-content: center; }
.cms-button-row--right { justify-content: flex-end; }
.cms-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 44px;
    padding: .7rem 1.05rem;
    border: 1px solid transparent;
    border-radius: .55rem;
    font-weight: 700;
    text-decoration: none;
}
.cms-button--primary {
    color: #fff;
    background: var(--cms-primary);
}
.cms-button--primary:hover { background: var(--cms-primary-dark); }
.cms-button--secondary {
    border-color: var(--cms-primary);
    color: var(--cms-primary);
    background: #fff;
}
.cms-button--link {
    min-height: auto;
    padding-inline: 0;
    color: var(--cms-primary);
}

.cms-list {
    margin: 0;
    padding-left: 1.25rem;
}
.cms-list--plain {
    padding-left: 0;
    list-style: none;
}
.cms-list--checks {
    padding-left: 0;
    list-style: none;
}
.cms-list--checks li::before {
    margin-right: .55rem;
    color: var(--cms-primary);
    content: "✓";
    font-weight: 800;
}

.cms-quote {
    margin: 0;
    padding: 1.25rem 1.5rem;
    border-left: 4px solid var(--cms-primary);
    color: #27384a;
    background: #f5f9fc;
}
.cms-quote p { margin: 0; font-size: 1.1rem; }
.cms-quote cite { display: block; margin-top: .75rem; color: var(--cms-muted); }

.cms-divider {
    width: 100%;
    margin: 1.5rem 0;
    border: 0;
    border-top: 1px solid #b8c4cf;
}
.cms-divider--dashed { border-top-style: dashed; }
.cms-divider--subtle { border-top-color: #e6ebf0; }

.cms-spacer--xs { height: var(--cms-space-xs); }
.cms-spacer--sm { height: var(--cms-space-sm); }
.cms-spacer--md { height: var(--cms-space-md); }
.cms-spacer--lg { height: var(--cms-space-lg); }
.cms-spacer--xl { height: var(--cms-space-xl); }

.cms-component {
    display: block;
    width: 100%;
}

.preview-banner {
    position: sticky;
    top: 0;
    z-index: 999;
    padding: 9px;
    color: #271700;
    background: #f59e0b;
    font-weight: 700;
    text-align: center;
}

.cookie-banner {
    position: fixed;
    right: 1rem;
    bottom: 1rem;
    left: 1rem;
    z-index: 1000;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1.25rem;
    padding: 1rem 1.1rem;
    border: 1px solid #d8e0e8;
    border-radius: 12px;
    color: #182230;
    background: #fff;
    box-shadow: 0 12px 35px rgba(0, 0, 0, .16);
}
.cookie-banner[hidden] { display: none; }
.cookie-banner p { margin: .25rem 0 0; }
.cookie-actions { display: flex; flex-shrink: 0; gap: .6rem; }
.cookie-actions button {
    padding: .65rem .9rem;
    border: 1px solid #145da0;
    border-radius: 8px;
    color: #145da0;
    background: #fff;
    cursor: pointer;
}
.cookie-actions button[data-cookie="accept"] { color: #fff; background: #145da0; }

@media (max-width: 900px) {
    .cms-column {
        grid-column: span var(--cms-span-tablet, 12);
    }
}

@media (max-width: 680px) {

    .cms-column {
        grid-column: span var(--cms-span-mobile, 12);
    }
    .cookie-banner {
        align-items: stretch;
        flex-direction: column;
    }
    .cookie-actions {
        justify-content: flex-end;
    }
}

/* Builder design contract -------------------------------------------------- */
:root {
    --cms-space-none: 0;
    --cms-radius-none: 0;
    --cms-radius-sm: .35rem;
    --cms-radius-md: var(--cms-radius, .625rem);
    --cms-radius-lg: 1rem;
    --cms-radius-xl: 1.5rem;
    --cms-radius-pill: 999px;
    --cms-shadow-none: none;
    --cms-shadow-sm: 0 5px 16px rgba(20, 36, 56, .08);
    --cms-shadow-md: var(--cms-shadow, 0 14px 36px rgba(20, 36, 56, .12));
    --cms-shadow-lg: 0 24px 60px rgba(20, 36, 56, .18);
}

.cms-node {
    margin-block: var(--cms-node-mb-desktop, 0);
    margin-inline: var(--cms-node-mi-desktop, 0);
    padding-block: var(--cms-node-pb-desktop, 0);
    padding-inline: var(--cms-node-pi-desktop, 0);
    border-width: var(--cms-node-border-width, 0);
    border-style: var(--cms-node-border-style, none);
    border-color: var(--cms-node-border-color, transparent);
    border-radius: var(--cms-node-radius, 0);
    color: var(--cms-node-color, inherit);
    background-color: var(--cms-node-bg-color, transparent);
    background-image: var(--cms-node-bg-image, none);
    background-position: var(--cms-node-bg-position, center);
    background-size: var(--cms-node-bg-size, cover);
    background-repeat: var(--cms-node-bg-repeat, no-repeat);
    box-shadow: var(--cms-node-shadow, none);
    opacity: var(--cms-node-opacity, 1);
    text-align: var(--cms-node-align-desktop, inherit);
}

@media (min-width: 901px) {
    .cms-node--hidden-desktop { display: none !important; }
}

@media (min-width: 681px) and (max-width: 900px) {
    .cms-node {
        margin-block: var(--cms-node-mb-tablet, var(--cms-node-mb-desktop, 0));
        margin-inline: var(--cms-node-mi-tablet, var(--cms-node-mi-desktop, 0));
        padding-block: var(--cms-node-pb-tablet, var(--cms-node-pb-desktop, 0));
        padding-inline: var(--cms-node-pi-tablet, var(--cms-node-pi-desktop, 0));
        text-align: var(--cms-node-align-tablet, var(--cms-node-align-desktop, inherit));
    }
    .cms-node--hidden-tablet { display: none !important; }
}

@media (max-width: 680px) {
    .cms-node {
        margin-block: var(--cms-node-mb-mobile, var(--cms-node-mb-tablet, 0));
        margin-inline: var(--cms-node-mi-mobile, var(--cms-node-mi-tablet, 0));
        padding-block: var(--cms-node-pb-mobile, var(--cms-node-pb-tablet, 0));
        padding-inline: var(--cms-node-pi-mobile, var(--cms-node-pi-tablet, 0));
        text-align: var(--cms-node-align-mobile, var(--cms-node-align-tablet, inherit));
    }
    .cms-node--hidden-mobile { display: none !important; }
}
