/* === Tokens (subset of style.css used by menu) === */
:root {
    --font-sans: -apple-system, BlinkMacSystemFont, "Inter", "Segoe UI", Helvetica, Arial, sans-serif;
    --font-sans-weight-normal: 500;

    --spacing: .25rem;
    --spacing-gutter: 1rem;

    --radius-sm: 10px;

    --color-white: #fff;
    --color-black: #000;
    --color-charcoal: #2c2e2a;
    --color-yellow-500: #63CF28;
    --color-yellow-600: #63CF28;
    --color-green-500: #193535;
    --color-bg-400: #F7ECD7;
    --color-bg-500: #e0dbce;
    --color-bg-600: #c2bcad;

    --color-yellow: var(--color-yellow-500);
    --color-bg: var(--color-bg-400);
    --color-green: var(--color-green-500);
    --color-primary: var(--color-charcoal);

    --transition-duration-fast: .2s;
    --transition-duration: .4s;
    --transition-duration-slow: .6s;
    --ease-inOut: cubic-bezier(.455, .03, .515, .955);
    --ease-bounce: cubic-bezier(.17, .67, .3, 1.33);
    --ease-smooth: cubic-bezier(.38, .005, .215, 1);
    --ease: cubic-bezier(.5, 0, 0, 1);

    --text-sm: clamp(.75rem, .7065rem + .2174vw, .875rem);
    --text-md: clamp(1rem, .9783rem + .1087vw, 1.0625rem);
    --text-lg: clamp(1.1563rem, 1.1454rem + .0543vw, 1.1875rem);
    --text-base: var(--text-md);
    --text-heading-xs: clamp(1.5rem, 1.413rem + .4348vw, 1.75rem);
    --text-button: var(--text-base);

    --z-index-above: 1;
    --button-icon-width: 40px;
}

@media not all and (min-width: 1000px) {
    :root { --menu-bar-height: calc(var(--spacing) * 15); }
}
@media (min-width: 1000px) {
    :root { --menu-bar-height: calc(var(--spacing) * 16); }
}


.c-menu-desktop ul,
.c-menu-mobile ul { list-style: none; margin: 0; padding: 0; }

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

.big-shadow {
    box-shadow: 0 0 15px 5px rgba(0, 0, 0, .05), 0 2px 4px 0 rgba(0, 0, 0, .1);
}

.c-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    line-height: 0;
}
.c-icon svg { display: block; }

/* Demo content */
.demo-main {
    padding: calc(var(--menu-bar-height) + calc(var(--spacing) * 10)) calc(var(--spacing) * 6) calc(var(--spacing) * 20);
    max-width: 1100px;
    margin: 0 auto;
    padding-top: 200px;;
}
.demo-main h1 {
    font-weight: 500;;
    font-size: clamp(2rem, 1.5rem + 2.5vw, 3.5rem);
    letter-spacing: -.04em;
    margin: 0 0 1rem;
}
.demo-main section {
    background: var(--color-white);
    border-radius: var(--radius-sm);
    padding: 2rem;
    margin-bottom: 1.5rem;
}

/* === Desktop menu === */
.c-menu-desktop {
    top: calc(var(--spacing) * 4);
    left: calc(var(--spacing) * 4);
    right: calc(var(--spacing) * 4);
    gap: var(--spacing-gutter);
    z-index: 100;
    transform: translate3d(0, 0, 0);
    display: flex;
    position: fixed;
    transition: transform var(--transition-duration) calc(var(--transition-duration) * .2) var(--ease);
}

@media (min-width: 1200px) {
    .c-menu-desktop {
        left: 6.25%;
        right: 6.25%;
    }
}
@media (min-width: 1600px) {
    .c-menu-desktop {
        left: 12.5%;
        right: 12.5%;
    }
}
@media not all and (min-width: 1000px) {
    .c-menu-desktop { display: none; }
}

.c-menu-desktop_bar {
    height: var(--menu-bar-height);
    background-color: var(--color-white);
    border-radius: var(--radius-sm);
    padding: 0 calc(var(--spacing) * 2.5) 0 calc(var(--spacing) * 4);
    flex-grow: 1;
    justify-content: space-between;
    align-items: center;
    display: flex;
    position: relative;
}

.c-menu-desktop_logo {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: calc(var(--spacing) * 4);
    display: flex;
}
.c-menu-desktop_logo img { display: block; width: 84px; height: auto; max-height: 50px;; }

.c-menu-desktop_contact {
    --button-height: 100%;
    clip-path: inset(0 round var(--radius-sm));
}

.c-menu-desktop_contact:after {
    content: "";
    background-color: var(--color-yellow-500);
    width: 100%;
    height: 100%;
    transition: transform .25s var(--ease), border-radius .25s var(--ease), opacity .25s var(--ease);
    transform-origin: bottom;
    opacity: 0;
    border-radius: 50% 50% 0 0;
    position: absolute;
    top: 0; left: 0;
    transform: scale(.5, 0);
}

.c-menu-desktop_contact:hover:after {
    opacity: 1;
    border-radius: var(--radius-sm) var(--radius-sm) 0 0;
    transform: scale(1);
}

.c-menu-desktop_inner {
    align-items: center;
    gap: calc(var(--spacing) * 6);
    height: 100%;
    display: flex;
}

.c-menu-desktop_list {
    gap: calc(var(--spacing) * 1);
    height: 100%;
    display: flex;
}

.c-menu-desktop_item {
    align-items: center;
    height: 100%;
    display: inline-flex;
}

.c-menu-desktop_item:not(:has(.c-menu-desktop_dropdown.-mega)) {
    position: relative;
}

.c-menu-desktop_item:hover { z-index: 3; }

.c-menu-desktop_link {
    min-height: calc(var(--spacing) * 11);
    border-radius: 50px;
    justify-content: center;
    align-items: center;
    display: inline-flex;
    position: relative;
    cursor: pointer;
}

@media not all and (min-width: 1400px) {
    .c-menu-desktop_link { gap: calc(var(--spacing) * 1); padding: 0 calc(var(--spacing) * 3); }
}
@media (min-width: 1400px) {
    .c-menu-desktop_link { gap: calc(var(--spacing) * 2); padding: 0 calc(var(--spacing) * 4); }
}

.c-menu-desktop_link:before {
    content: "";
    background-color: var(--color-bg);
    transition-property: transform, opacity;
    transition-duration: var(--transition-duration), .1s;
    transition-timing-function: var(--ease-bounce), var(--ease);
    opacity: 0;
    border-radius: 50px;
    position: absolute;
    inset: 0;
    transform: scale(.8);
}

@media (hover: hover) {
    .c-menu-desktop_link:hover:before,
    .c-menu-desktop_item.active .c-menu-desktop_link:before,
    .c-menu-desktop_link.is-current-page:before {
        opacity: 1;
        transform: scale(1);
    }
    .c-menu-desktop_link:active:before {
        transition-duration: var(--transition-duration-fast), .1s;
        transform: scale(.9) !important;
    }
}

.c-menu-desktop_chevron {
    z-index: 2;
    transition: transform var(--transition-duration) var(--ease-bounce);
    display: inline-flex;
    position: relative;
    flex-direction: column;
    justify-content: center;
    align-items: center;
}

.c-menu-desktop_item.active .c-menu-desktop_chevron { transform: rotate(180deg); }

.c-menu-desktop_link_label {
    font-size: var(--text-md);
    letter-spacing: -.04em;
    z-index: var(--z-index-above);
    font-weight: 500;
    line-height: 1.25;
    position: relative;
}

.c-menu-desktop_dropdown {
    top: var(--menu-bar-height);
    padding-top: calc(var(--spacing) * 2);
    visibility: hidden;
    transition: visibility 0s var(--transition-duration-fast);
    position: absolute;
    left: 0;
    right: 0;
}

.c-menu-desktop_item.active .c-menu-desktop_dropdown {
    visibility: visible;
    transition-delay: 0s;
}

.c-menu-desktop_dropdown_inner {
    padding: calc(var(--spacing) * 4);
    grid-gap: calc(var(--spacing) * 4);
    transform: translate3d(0, calc(var(--spacing) * 4), 0);
    opacity: 0;
    grid-template-columns: 1fr;
    display: grid;
    position: relative;
    transition-property: transform, opacity;
    transition-duration: var(--transition-duration-fast), .1s;
    transition-timing-function: var(--ease), var(--ease);
}

.c-menu-desktop_dropdown_inner:before {
    content: "";
    background-color: var(--color-white);
    border-radius: var(--radius-sm);
    position: absolute;
    inset: 0;
    transition: transform var(--transition-duration) var(--ease-bounce);
    transform: scale(.97);
}

.c-menu-desktop_item.active .c-menu-desktop_dropdown_inner {
    opacity: 1;
    transform: translate(0);
}
.c-menu-desktop_item.active .c-menu-desktop_dropdown_inner:before { transform: scale(1); }

.c-menu-desktop_dropdown_wrap {
    z-index: var(--z-index-above);
    padding: 0 calc(var(--spacing) * 4);
    grid-column: 1 / -1;
    position: relative;
}

.c-menu-desktop_dropdown_list {
    padding: calc(var(--spacing) * 4);
    column-gap: calc(var(--spacing) * 7.5);
    grid-template-columns: 1fr;
    display: grid;
}

.c-menu-desktop_dropdown_item {
    transition-property: transform, opacity;
    transition-duration: var(--transition-duration);
    transition-delay: 0s;
    transition-timing-function: var(--ease);
    transform: translate3d(0, calc(var(--spacing) * 5), 0);
    opacity: 0;
}

.c-menu-desktop_item.active .c-menu-desktop_dropdown_item {
    opacity: 1;
    transition-delay: calc(var(--index) * 25ms);
    transform: translate(0);
}

.c-menu-desktop_dropdown_link {
    font-size: var(--text-md);
    letter-spacing: -.04em;
    padding: calc(var(--spacing) * 1) 0;
    color: var(--color-charcoal);
    border-radius: var(--radius-sm);
    font-weight: 500;
    line-height: 1.25;
    text-decoration: none;
    display: inline-block;
    cursor: pointer;
}

@media (hover: hover) {
    .c-menu-desktop_dropdown_link:hover { text-decoration: underline; }
}

.c-menu-desktop_dropdown_link.is-current-page { text-decoration: underline; }

/* Single-column dropdowns center under their trigger */
.c-menu-desktop_item:not(:has(.c-menu-desktop_dropdown.-mega)) .c-menu-desktop_dropdown {
    left: 50%;
    right: auto;
    transform: translateX(-50%);
}

.c-menu-desktop_item:not(:has(.c-menu-desktop_dropdown.-mega)) .c-menu-desktop_dropdown_inner {
    width: max-content;
    min-width: calc(var(--spacing) * 70);
}

/* Mega-dropdown 4 columns */
.c-menu-desktop_dropdown_groups {
    z-index: var(--z-index-above);
    padding: calc(var(--spacing) * 4);
    grid-gap: calc(var(--spacing) * 6);
    grid-template-columns: repeat(4, 1fr);
    display: grid;
    position: relative;
}

.c-menu-desktop_dropdown_group {
    display: flex;
    flex-direction: column;
    gap: calc(var(--spacing) * 2);
    transition-property: transform, opacity;
    transition-duration: var(--transition-duration);
    transition-delay: 0s;
    transition-timing-function: var(--ease);
    transform: translate3d(0, calc(var(--spacing) * 5), 0);
    opacity: 0;
}

.c-menu-desktop_item.active .c-menu-desktop_dropdown_group {
    opacity: 1;
    transition-delay: calc(var(--index) * 50ms);
    transform: translate(0);
}

.c-menu-desktop_dropdown_group_title {
    font-size: var(--text-md);
    letter-spacing: -.04em;
    color: var(--color-charcoal);
    font-weight: 600;
    line-height: 1.25;
    padding-bottom: calc(var(--spacing) * 2);
    margin-bottom: calc(var(--spacing) * 1);
    border-bottom: 1px solid var(--color-bg-500);
    display: block;
}

.c-menu-desktop_dropdown_group_list {
    display: flex;
    flex-direction: column;
    gap: calc(var(--spacing) * 1);
}

.c-menu-desktop_dropdown_group_list .c-menu-desktop_dropdown_link {
    font-size: var(--text-sm);
}

/* Contact button */
.c-button-quote {
    --button-height: 100%;
    --button-radius: var(--radius-sm);
    --button-padding: calc(var(--spacing) * 2.5);
    --button-gap: calc(var(--spacing) * 2);
    --button-color: var(--color-black);
    --button-background: var(--color-yellow-500);
    align-items: center;
    gap: var(--button-gap);
    min-height: var(--button-height);
    padding: var(--button-padding);
    z-index: 1;
    color: var(--button-color);
    border-radius: var(--button-radius);
    font-size: var(--text-button);
    cursor: pointer;
    display: inline-flex;
    position: relative;
}

.c-button-quote:before {
    content: "";
    background-color: var(--button-background);
    border-radius: var(--button-radius);
    transition: transform var(--transition-duration) var(--ease-bounce);
    position: absolute;
    inset: 0;
}

.c-button-quote_label {
    padding: 0 var(--button-padding);
    transition: transform var(--transition-duration) var(--ease-bounce);
    z-index: var(--z-index-above);
    display: inline-block;
    position: relative;
    font-weight: 500;
    letter-spacing: -.02em;
}

/* Chevron */
.svg-chevron-down {
    stroke: currentColor;
    stroke-width: 1.5;
    stroke-linecap: round;
    stroke-linejoin: round;
}

/* === Mobile menu === */
html.has-menu-mobile-open { overflow: hidden; }

.c-menu-mobile {
    width: 100%;
    height: 100%;
    padding: calc(var(--spacing) * 4);
    pointer-events: none;
    z-index: 100;
    position: fixed;
    top: 0; left: 0;
    overflow: hidden;
}

@media (min-width: 1000px) {
    .c-menu-mobile { display: none; }
}

.c-menu-mobile_bar {
    min-height: var(--menu-bar-height);
    background-color: var(--color-white);
    border-radius: var(--radius-sm);
    width: 100%;
    padding: calc(var(--spacing) * 2) calc(var(--spacing) * 2) calc(var(--spacing) * 2) calc(var(--spacing) * 3);
    pointer-events: auto;
    justify-content: space-between;
    align-items: center;
    display: flex;
}

.c-menu-mobile_logo {
    align-items: center;
    display: flex;
}
.c-menu-mobile_logo img { display: block; width: 56px; height: 56px; }

@media not all and (min-width: 500px) {
    .c-menu-mobile_logo { gap: calc(var(--spacing) * 2.5); }
}
@media (min-width: 500px) {
    .c-menu-mobile_logo { gap: calc(var(--spacing) * 4); }
}

.c-menu-mobile_cta {
    align-items: center;
    gap: calc(var(--spacing) * 3);
    display: flex;
}

.c-menu-mobile_contact {
    font-size: var(--text-md);
    letter-spacing: -.04em;
    padding: calc(var(--spacing) * 2) calc(var(--spacing) * 3);
    background-color: var(--color-yellow-500);
    border-radius: 5px;
    justify-content: center;
    align-items: center;
    font-weight: 500;
    line-height: 1.25;
    display: inline-flex;
}

@media not all and (min-width: 360px) {
    .c-menu-mobile_contact { display: none; }
}

.c-menu-mobile_burger {
    width: var(--button-icon-width);
    height: var(--button-icon-width);
    border-radius: 100%;
    justify-content: center;
    align-items: center;
    display: inline-flex;
    position: relative;
}

.c-menu-mobile_burger:before {
    content: "";
    background-color: var(--color-green-500);
    border-radius: 100%;
    position: absolute;
    inset: 0;
}

.c-menu-mobile_burger_icon {
    transition: transform var(--transition-duration) var(--ease-bounce);
    position: relative;
}

.c-menu-mobile_burger_icon.-default {
    flex-direction: column;
    justify-content: space-between;
    width: 17px;
    height: 7px;
    display: flex;
}

html.has-menu-mobile-open .c-menu-mobile_burger_icon.-default {
    transform: rotate(-45deg) scale(.8);
}

.c-menu-mobile_burger_icon.-close {
    width: 16px;
    height: 16px;
    margin-top: -8px;
    margin-left: -8px;
    position: absolute;
    top: 50%; left: 50%;
    transform: rotate(0);
}

html.has-menu-mobile-open .c-menu-mobile_burger_icon.-close {
    transform: rotate(45deg);
}

.c-menu-mobile_burger_icon_line {
    background-color: var(--color-white);
    width: 100%;
    height: 2px;
    transition: transform var(--transition-duration-fast) var(--ease);
    border-radius: 1px;
    display: block;
}

.c-menu-mobile_burger_icon.-default .c-menu-mobile_burger_icon_line { transform: scale(1); }

html.has-menu-mobile-open .c-menu-mobile_burger_icon.-default .c-menu-mobile_burger_icon_line {
    transform: scaleX(0);
}
html.has-menu-mobile-open .c-menu-mobile_burger_icon.-default .c-menu-mobile_burger_icon_line:first-child {
    transform: scale(0) translate(1px, 20px) rotate(180deg);
}

.c-menu-mobile_burger_icon.-close .c-menu-mobile_burger_icon_line { position: absolute; }

html.has-menu-mobile-open .c-menu-mobile_burger_icon.-close .c-menu-mobile_burger_icon_line {
    transform: scale(1);
}

.c-menu-mobile_burger_icon.-close .c-menu-mobile_burger_icon_line:first-child {
    transform-origin: 0;
    width: 2px;
    height: 100%;
    margin-left: -1px;
    top: 0; left: 50%;
    transform: scaleY(0);
}

.c-menu-mobile_burger_icon.-close .c-menu-mobile_burger_icon_line:last-child {
    transform-origin: 100%;
    width: 100%;
    height: 2px;
    margin-top: -1px;
    top: 50%; left: 0;
    transform: scaleX(0);
}

.c-menu-mobile_nav {
    top: calc(var(--menu-bar-height) + calc(var(--spacing) * 5));
    left: calc(var(--spacing) * 4);
    right: calc(var(--spacing) * 4);
    visibility: hidden;
    transition: visibility 0s var(--transition-duration-fast);
    clip-path: inset(0 round var(--radius-sm) var(--radius-sm) 0 0);
    position: absolute;
    bottom: 0;
    overflow: hidden;
}

html.has-menu-mobile-open .c-menu-mobile_nav {
    visibility: visible;
    transition-delay: 0s;
}

.c-menu-mobile_nav_inner {
    pointer-events: auto;
    width: 100%;
    height: 100%;
    padding: 0 0 calc(var(--spacing) * 6) 0;
    position: absolute;
    top: 0; left: 0;
    overflow: auto;
    -webkit-overflow-scrolling: touch;
}

.c-menu-mobile_list {
    margin-bottom: calc(var(--spacing) * 2);
    width: 100%;
    padding: calc(var(--spacing) * 4);
    transform: translate3d(0, calc(var(--spacing) * 4), 0);
    opacity: 0;
    transition-property: transform, opacity;
    transition-duration: var(--transition-duration-fast), .1s;
    transition-timing-function: var(--ease), var(--ease);
    position: relative;
}

.c-menu-mobile_list:before {
    content: "";
    border-radius: var(--radius-sm);
    background-color: var(--color-white);
    transition: transform var(--transition-duration-fast) var(--ease-smooth);
    position: absolute;
    inset: 0;
    transform: scale(.9);
}

html.has-menu-mobile-open .c-menu-mobile_list { opacity: 1; transform: translate(0); }
html.has-menu-mobile-open .c-menu-mobile_list:before { transform: scale(1); }

.c-menu-mobile_list_item {
    z-index: 1;
    position: relative;
    transition: transform var(--transition-duration) var(--ease-bounce), opacity var(--transition-duration-fast) var(--ease);
    transform: translate3d(0, calc(var(--spacing) * 4), 0);
    opacity: 0;
}

.c-menu-mobile_list_item:not(:last-child) {
    border-bottom: 1px solid var(--color-bg-500);
}

html.has-menu-mobile-open .c-menu-mobile_list_item {
    opacity: 1;
    transition-delay: calc(var(--index) * 50ms + 50ms);
    transform: translate(0);
}

.c-menu-mobile_nav_contact {
    border-radius: var(--radius-sm);
    width: 100%;
    padding: calc(var(--spacing) * 2) calc(var(--spacing) * 2) calc(var(--spacing) * 2) calc(var(--spacing) * 4);
    cursor: pointer;
    transform: translate3d(0, calc(var(--spacing) * 4), 0);
    opacity: 0;
    transition-property: transform, opacity;
    transition-duration: var(--transition-duration-fast), .1s;
    transition-timing-function: var(--ease), var(--ease);
    justify-content: space-between;
    align-items: center;
    display: flex;
    position: relative;
}

.c-menu-mobile_nav_contact:before {
    content: "";
    border-radius: var(--radius-sm);
    background-color: var(--color-white);
    transition: transform var(--transition-duration-fast) var(--ease-smooth);
    position: absolute;
    inset: 0;
    transform: scale(.9);
}

html.has-menu-mobile-open .c-menu-mobile_nav_contact { opacity: 1; transform: translate(0); }
html.has-menu-mobile-open .c-menu-mobile_nav_contact:before { transform: scale(1); }

.c-menu-mobile_nav_contact_label {
    z-index: 2;
    transform: translate3d(0, calc(var(--spacing) * 4), 0);
    opacity: 0;
    transition-property: transform, opacity;
    transition-duration: var(--transition-duration-fast), .1s;
    transition-timing-function: var(--ease), var(--ease);
    position: relative;
}

html.has-menu-mobile-open .c-menu-mobile_nav_contact_label {
    opacity: 1;
    transform: translate(0);
}

.c-menu-mobile_nav_link,
.c-menu-mobile_accordion_button {
    width: 100%;
    padding: calc(var(--spacing) * 3.5) calc(var(--spacing) * 3) calc(var(--spacing) * 3.5) 0;
    cursor: pointer;
    justify-content: space-between;
    align-items: center;
    display: flex;
    text-align: left;
}

.c-menu-mobile_nav_label {
    font-size: var(--text-heading-xs);
    font-family: var(--font-sans);
    letter-spacing: -.06em;
    font-weight: 500;
    line-height: 1.2;
}

.c-menu-mobile_accordion_content {
    height: 0;
    opacity: 0;
    overflow: hidden;
    transition: height var(--transition-duration) var(--ease-inOut), opacity var(--transition-duration-fast) var(--ease-inOut);
}

.c-menu-mobile_accordion_link {
    font-size: var(--text-lg);
    letter-spacing: -.04em;
    padding: calc(var(--spacing) * 2) 0;
    font-weight: 500;
    line-height: 1.25;
    display: inline-flex;
}

.c-menu-mobile_accordion_link.-all {
    opacity: .7;
    text-decoration: underline;
}

.c-menu-mobile_accordion_group {
    display: block;
    font-size: var(--text-sm);
    letter-spacing: -.02em;
    color: var(--color-charcoal);
    opacity: .55;
    font-weight: 600;
    text-transform: uppercase;
    padding: calc(var(--spacing) * 3) 0 calc(var(--spacing) * 1);
}

.c-menu-mobile_accordion_button_icon {
    width: 14px; height: 14px;
    transition: transform var(--transition-duration-fast) var(--ease-bounce);
}

.c-menu-mobile_accordion.is-open .c-menu-mobile_accordion_button_icon {
    transform: rotate(180deg);
}

.c-menu-mobile_accordion_list {
    padding: calc(var(--spacing) * 3.5) 0 calc(var(--spacing) * 4) 0;
}
