/* main site styles */

/* ========================================
   Header
   ======================================== */
header {

    position:absolute;
    width: 100%;
    left: 0;
    top: 0;
    z-index: 100;
}

header .logo { padding-top: var(--nav-padding-top-bottom); padding-bottom: var(--nav-padding-top-bottom); width: 20%; position: relative; z-index: 2; }
header .logo a { display: block; position: relative; }
header .logo img { height: var(--nav-logo-height); }
header .logo .logo-dark {
    position: absolute;
    left: 0;
    top: 0;
    opacity: 0;
    transition: opacity 0.4s ease;
}
header .logo .logo-white {
    transition: opacity 0.4s ease;
}
header.mega-open .logo .logo-dark { opacity: 1; }
header.mega-open .logo .logo-white { opacity: 0; }

/* Lift toggle + logo above the mobile menu when open */
header.mobile-open .navigation-row {
    position: relative;
    z-index: 9;
}

.main-navigation {

}

.main-navigation > ul {
    display: flex;
    list-style: none;
    padding-left: unset;
    margin-left: unset;
    margin-bottom: 0;
    margin-top: 0;
    padding-top: 2.5rem;
    gap: 2.5rem;
}

.main-navigation > ul > li > a {
    position: relative;
    z-index: 2;
}
.main-navigation > ul > li > a::before {
    content:'';
    height: 1px;
    width: 0;
    background: #fff;
    position: absolute;
    bottom: -0.5rem;
    left: 0;
    opacity: 0;

    transition: width 0.5s ease-in-out, opacity 0.5s ease-in-out;

}

.hero.parent-page .continue-arrow {
    position: absolute;
    bottom: -3.5rem;
    left: 0;
    filter: invert(1) saturate(0) brightness(2);
    cursor: pointer;
}

.main-navigation > ul > li:hover > a::before {
    width: 100%;
    opacity: 1;
}

.main-navigation > ul > li > a {
    color: #fff;
    text-decoration: none;
    transition: color 0.4s ease;
}

.main-navigation li.parent {

}

.main-navigation li.has-mega {

}

/* Mega menu - header color swap when open */
header.mega-open .main-navigation > ul > li > a {
    color: var(--color-dark-green);
}

header.mega-open .main-navigation > ul > li > a::before {
    background: var(--color-dark-green);
}

header.mega-open .core-actions a {
    color: var(--color-dark-green);
}

header.mega-open .core-actions li.blank {
    background: rgba(0, 0, 0, 0.1);
}

/* Mega menu - background overlay on header */
header::before {
    content: '';
    position: fixed;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    background: var(--color-dark-green);
    opacity: 0;
    z-index: 1;
    pointer-events: none;
    transition: opacity 0.3s ease;
}
header.mega-open::before {
    opacity: 0.9;
    pointer-events: auto;
}

/* Nav row sits above the mega menu and overlay */
header .navigation-row {
    position: relative;
    z-index: 2;
}

/* Hamburger toggle — hidden by default, shown ≤768px */
button.mobile-menu-toggle {
    display: none;
    appearance: none;
    background: transparent;
    border: 0;
    padding: 0;
    margin: 0;
    width: 2.75rem;
    height: 2.75rem;
    cursor: pointer;
    position: absolute;
    right: 0;
    top: 1.75rem;
    z-index: 9999;
}
.mobile-menu-toggle .bar {
    display: block;
    width: 1.75rem;
    height: 2px;
    background: #fff;
    margin: 0.3rem auto;
    transition: transform 0.35s ease, opacity 0.25s ease, background 0.3s ease;
    transform-origin: center;
}
header.mega-open .mobile-menu-toggle .bar,
header.mobile-open .mobile-menu-toggle .bar {
    background: #fff;
}
header.mobile-open .mobile-menu-toggle .bar:nth-child(1) {
    transform: translateY(0.5rem) rotate(45deg);
}
header.mobile-open .mobile-menu-toggle .bar:nth-child(2) {
    opacity: 0;
}
header.mobile-open .mobile-menu-toggle .bar:nth-child(3) {
    transform: translateY(-0.5rem) rotate(-45deg);
}

/* Mobile menu panel */
.mobile-menu {
    position: fixed;
    left: 0;
    top: 0;
    width: 100%;
    height: 100vh;
    height: 100dvh;
    background: var(--color-dark-green);
    z-index: 3;
    transform: translateY(-100%);
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: transform 0.45s cubic-bezier(0.2, 0.7, 0.2, 1), opacity 0.3s ease, visibility 0s linear 0.45s;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    display: none;
}
header.mobile-open .mobile-menu {
    transform: translateY(0);
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
    transition: transform 0.45s cubic-bezier(0.2, 0.7, 0.2, 1), opacity 0.3s ease, visibility 0s linear 0s;
}
.mobile-menu-inner {
    padding: calc(var(--nav-logo-height) + calc(var(--nav-padding-top-bottom) * 2) + 2rem) 7.5vw 4rem;
    display: flex;
    flex-flow: column;
    min-height: 100%;
    gap: 2.5rem;
}
.mobile-nav {
    list-style: none;
    padding: 0;
    margin: 0;
}
.mobile-nav > li {
    border-bottom: 1px solid rgba(255, 255, 255, 0.12);
}
.mobile-nav > li > a,
.mobile-nav-toggle {
    display: flex;
    width: 100%;
    align-items: center;
    justify-content: space-between;
    padding: 1.5rem 0;
    background: transparent;
    border: 0;
    color: #fff;
    text-decoration: none;
    font-size: 1.5rem;
    font-family: inherit;
    text-align: left;
    cursor: pointer;
}
.mobile-nav-toggle .caret {
    width: 0.7rem;
    height: 0.7rem;
    border-right: 2px solid #fff;
    border-bottom: 2px solid #fff;
    transform: rotate(45deg);
    transition: transform 0.3s ease;
    margin-right: 0.25rem;
}
.mobile-nav-toggle[aria-expanded="true"] .caret {
    transform: rotate(-135deg);
}
.mobile-submenu {
    list-style: none;
    padding: 0 0 1rem;
    margin: 0;
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.4s ease;
}
.mobile-nav-toggle[aria-expanded="true"] + .mobile-submenu {
    max-height: 40rem;
}
.mobile-submenu li a {
    display: block;
    padding: 0.65rem 0;
    color: var(--color-light-green);
    text-decoration: none;
    font-size: 1.15rem;
}
.mobile-menu-actions {
    margin-top: auto;
    display: flex;
    flex-flow: column;
    gap: 1rem;
}
.mobile-menu-actions a {
    color: #fff;
    text-decoration: none;
    font-size: 1.15rem;
    padding: 0.5rem 0;
}
.mobile-menu-actions a.icon.rounded-plus.icon-before.icon-left::before {
    left: unset;
    right: 0;
}

/* Prevent background scroll when mobile menu is open */
body.mobile-menu-open {
    overflow: hidden;
}

/* Mega menu */
.mega-menu {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    visibility: hidden;
    pointer-events: none;
}

li.has-mega.show-mega > .mega-menu {
    visibility: visible;
    pointer-events: auto;
}

.mega-menu .menu {
    position: relative;
    background: #fff;
    padding-top: 7rem;
    transform: translateY(-100%);
    opacity: 0;
    transition: transform 0.4s ease, opacity 0.3s ease;
    overflow: hidden;
}

li.has-mega.show-mega > .mega-menu .menu {
    transform: translateY(0);
    opacity: 1;
}

/* Mega menu content — hidden by default, revealed via GSAP stagger */
.mega-menu .mega-reveal {
    opacity: 0;
    transform: translateY(1rem);
    filter: blur(2px);
}

.mega-menu .limiter {
    border-top: 1px solid var(--color-border-dark);
    padding-top: 5rem;
    padding-bottom: 6rem;
}

.mega-menu .columns {
    display: flex;
    flex-flow: row;
    width: 100%;
    gap: 6rem;
}

.mega-menu .overview {
    width: 25%;
}

.mega-menu .menu-items ul li {
    width: 100%;
    display: flex;
}

.mega-menu .overview h3 {
    font-family: 'MAM-Serif';
    font-size: 3rem;
    font-weight: 400;
    line-height: 1;
    margin-bottom: 3rem;
}

.mega-menu .overview p {
    color: var(--color-text);
    font-size: 1.22rem;
    margin-bottom: 4rem;
}

.mega-menu .menu-items {
    width: 15%;
}

.mega-menu .menu-items ul {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-flow: column;
    height: 100%;
}

.mega-menu .menu-action a {
    color: #fff;
    margin-top: auto;
}

.menu-action.column {
    display: flex;
    flex-flow: column;
    align-items: flex-start;
}

.mega-menu .menu-items ul li:last-child a {
    border-bottom: 1px solid var(--color-border-dark);
}

.mega-menu .menu-action.column {
    flex-grow: 1;
    background: var(--color-dark-green);
    padding: 5rem 6rem;
}

.mega-menu .menu-action h3 {
    color: #fff;
    font-family: 'MAM-Serif';
    font-weight: 400;
    font-size: 2rem;
    width: 60%;
    position: relative;
    line-height: 1;
    padding-top:2rem;
}

.mega-menu .menu-action h3:before {
    content: '';
    background: var(--color-bright-green);
    width: 4rem;
    left: 0;
    top: 0;
    position: absolute;
    height: 1px;
}

.mega-menu .menu-items ul a {
    width: 100%;
    padding-top: 1.5rem;
    border-top: 1px solid var(--color-border-dark);
    display: inline-block;
    padding-bottom: 1.5rem;
}

.mega-menu .menu-items .link,
.mega-menu .overview .link {
    font-size: 1.22rem;
}

.mega-menu .menu-action {

}

/* Core actions */
.core-actions {

}

.core-actions a {
    color: #fff;
    text-decoration: none;
    font-weight: 600;
    transition: color 0.4s ease;
}

.core-actions ul {
    display: flex;
    flex-flow: row wrap;
    list-style: none;
    padding-left: unset;
    margin-left: unset;
    margin-top: 0;
    margin-bottom: 0;
    padding-top: 2.5rem;
    gap: 2.5rem;
}

.core-actions li {

}



/* ========================================
   Hero
   ======================================== */
.hero {

    background-color:var(--color-dark-green);

    padding-top: calc(var(--nav-logo-height) + calc(var(--nav-padding-top-bottom) * 2 ));

}

[data-barba-namespace="home"] .hero {
    max-height: 65rem;
    min-height: 60rem;
    height: calc(100vh - 5rem - 1.3rem - 7.813rem);
}



.hero{ position: relative;  overflow: hidden; z-index: 2;}

.hero .slide-show {
    height: 100%;

}

section.hero.parent-page > div > .columns {
    left: 20%;
    position: relative;
}

section.hero.parent-page .limiter.slide-group-top {
    padding-top: 8rem;
    padding-bottom: 8rem;
}

nav.breadcrumbs {
    margin-bottom: 2rem;
}

nav.breadcrumbs ol {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    align-items: center;
}

nav.breadcrumbs a {
    display: block;
    text-decoration: none;
    padding-right: 1.25rem;
    margin-right: 1.25rem;
    border-right: 1px solid rgba(255,255,255,0.15);
}

.header-background {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
}

.header-background figure {
    width: 100%;
    height: 100%;
    padding: 0;
    margin: 0;
    position: relative;
}

.header-background  figure::before {
    content: '';
    position: absolute;
    left: 0;
    top: 0;
    background: linear-gradient(
            180deg, rgba(31, 46, 49, 0.75) 0%, rgba(31, 46, 49, 0) 100%);
    width: 100%;
    height: 50%;
    opacity: 1;
}

.header-background::after {
    content: '';
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    background: #1F2E31;
    background: linear-gradient(
            90deg, #1F2E31 0%, rgba(31, 46, 49, 0.25) 100%);
    height: 100%;
    z-index: 3;
}

img.breadcrumb-icon {
    height: 1.5rem;
}

nav.breadcrumbs h1 {
    color: #fff;
    font-size: .9rem;
    line-height: 1;
    font-weight: 600;
}

.header-background video,
.header-background img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.limiter.slide-group-top {
    width: var(--limter-width);
    padding-top: 16rem;
    max-width: var(--limiter-max-width);
    position: relative;
    z-index: 5;
}

.slide-texts.holder {
    position: absolute;
    left: 20%;
}

.hero .slide.active {
    opacity: 1;
    visibility: visible;
}

.hero .slide-group-top {
    height: 50%;
    position: relative;
}


.slide-group-bottom {
    position: absolute;
    height: calc( 100% - 33rem);
    width: 100%;
    top: 33rem;
}

.slide-navigation.holder {
    left: 12%;
    position: relative;
    top: -30%;
}

.hero .slide-show .buttons {
    position: absolute;
    left: -6rem;
    top: 6rem;
    display: flex;
    flex-flow: column;
    gap: 1rem;
}

.slide-show .buttons .button.intro-done.active {
    opacity: 1;
}

.slide-show .buttons .button {
    background-image: url(/assets/icons/icon-arrow-right-rounded.svg);
    width: 2rem;
    height: 2rem;
    cursor: not-allowed;
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
    opacity: 0.5;
}

.slide-show .buttons .button {
    background-image: url(/assets/icons/icon-arrow-right-rounded.svg);
    width: 2rem;
    height: 2rem;
    cursor: not-allowed;
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
    opacity: 0.5;
}

.slide-show .buttons .button.intro-done {
    opacity: 0.5;
}

.slide-show .buttons .button.prev {
    transform: rotate(
            180deg);
}

.hero .progress-bar {
    width: .3rem;
    height: 30rem;
    background: rgba(255,255,255,0.3);
    position: absolute;
    min-width: 7px;
    min-height: 100%;
}

.hero .progress-bar .status {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 0;
    background: var(--color-light-green);
    transition: height 0.5s ease-in-out;
}

.slide-texts {
    position: relative;
}

.slide-texts .slide {
    position: absolute;
    left: 0;
    top: 0;
    opacity: 0;
}

.hero .slide-images .slide-image {
    padding: 0;
    margin: 0;
    position: absolute;
    width: 100%;
    height: 100%;
    left: 0;
    top: 0;
}

.slide-curtain {

}

.slide-images::after {
    content: '';
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    background: #1F2E31;
    background: linear-gradient(
            90deg, #1F2E31 0%, rgba(31, 46, 49, 0.25) 100%);
    height: 100%;
    z-index: 3;
}

.slide-images figure::before {
    content: '';
    position: absolute;
    left: 0;
    top: 0;
    background: linear-gradient(
            180deg, rgba(31, 46, 49, 0.5) 0%, rgba(31, 46, 49, 0) 100%);
    width: 100%;
    height: 50%;
    opacity: 0.5;
}

.hero .slide-image video {
    width: 100%;
    height: 100%;
    opacity: 0;
    visibility: visible;
    z-index: 1;
    object-fit: cover;
}
.hero .slide-image.active {
    z-index: 2;
}
.hero .slide-image.active video {
    opacity: 1;
}

/* ========================================
   Link bar
   ======================================== */
.link-bar {
    border-bottom: 1px solid var(--color-border-dark);
    background:#fff;
    position: relative;
    z-index: 2;
}

.link-bar ul {
    display: flex;
    justify-content: space-between;
    width: 100%;
    list-style: none;
    padding: 0;
    margin: 0;
}

.link-bar li {

}

.link-bar li a {
    font-size: 1.3rem;
    text-decoration: none;
    color: var(--color-dark-green);
    line-height: 1;
    position: relative;
    padding-right: 4rem;
    padding-top: 2.5rem;
    padding-bottom: 2.5rem;
    padding-left: 3rem;
    display:inline-block;
    transition: opacity 0.3s ease;
}

.link-bar li.blank {
    height: 1.5rem;
    top: 2.3rem;
    position: relative;
}

.link-bar ul:hover li:not(:hover) a {
    opacity: 0.35;
}

.link-bar li a::before {
    content: '';
    width: 1.75rem;
    height: 1.5rem;
    position: absolute;
    left: 0;
    top: calc(50% - .2rem );
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
    transform: translateY(-50%);
}

.icon.saving-left::before {
    background-image: url(/assets/icons/icon-savings.svg);
}
.icon.experience-left::before {
    background-image: url(/assets/icons/icon-experience.svg);
}
.icon.support-left::before {
    background-image: url(/assets/icons/icon-support.svg);
}

.link-bar li a::after {
    content: '';
    width: 1.5rem;
    height: 1.5rem;
    position: absolute;
    right: 0;
    top: 50%;
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
    background-image: url(/assets/icons/icon-chevron-right.svg);
    transform: translateY(-50%);
    transition: transform 0.3s ease;
}

.has-js .link-bar li.is-visible a:hover::after,
.link-bar li a:hover::after {
    transform: translateY(-50%) translateX(0.5rem);
}

.continue-arrow a {
    display: flex;
    flex-flow: column;
}
.continue-arrow a img {
    height: 2rem;
    width: 2rem;
    object-fit: contain;
}

.continue-arrow {
    position: absolute;
    bottom: -30rem;
    left: 7%;
    filter: invert(1) saturate(0) brightness(2);
    cursor: pointer;
}

/* ========================================
   Overview
   ======================================== */
section.overview {
    padding-top: 7.813rem;
    padding-bottom: 7.813rem;
}

/* ========================================
   Investors
   ======================================== */
.investors {
    padding-top: 5.813rem;
    padding-bottom: 5.813rem;
}

/* ========================================
   People
   ======================================== */
.people {
    padding-bottom: 5.813rem;
}
.people h2 {
    border-top:1px solid var(--color-border-dark);
    padding-top: 4.813rem;
}

/* ========================================
   Blockquote
   ======================================== */
.blockquote {

}

/* ========================================
   News
   ======================================== */
.news .limiter > div {
    border-top: 1px solid var(--color-border-dark);
    padding-top: 4.813rem;
}

.news .column.carousel {
    margin-top: 8.125rem;
}

/* ========================================
   CTA
   ======================================== */
.cta {
    padding-top: 7.5rem;
    padding-bottom: 7.5rem;
    background: var(--color-pastel-green);
}

/* ========================================
   Footer
   ======================================== */

footer {
    padding-top: 6.25rem;
    padding-bottom: 6.25rem;
}

footer .logo img {
    height: 1.5rem;
}

.footer-navigation {
    width: 100%;
    display: flex;
    justify-content: space-between;
}

footer .logo {
    width: 20%;
    min-width: 10rem;
}

.footer-navigation > .columns {
    flex-grow: 1;
}

footer .limiter.row {
    width: var(--limter-main-width);
    max-width: var(--limiter-main-max-width);
}

.footer-col {
    flex: 1;
}

.footer-menu a {
    text-decoration: none;
    color: var(--color-dark-green);
}

.footer-menu .footer-heading {
    font-weight: 600;
}

.footer-menu-row {
    margin-bottom: 1rem;
}

.footer-menu-row-spaced {
    margin-top: 2.75rem;
}

footer ul {
    list-style: none;
    padding: 0;
    margin: 0;
}

footer ul a {
    text-decoration: none;
    color: var(--color-dark-green);
}

footer .footer-legal {
    flex-grow: 1;
    padding-top: 3.75rem;
}

footer .legal-links {
    display: flex;
    flex-wrap: wrap;
    gap: 2rem;
    margin-bottom: 1.5rem;
}

footer .legal-links li a {
    font-weight: 600;
    font-size: 0.875rem;
}

footer .copyright {
    font-size: 0.8125rem;
    color: var(--color-text-lighter);
}

.footer-disclaimer {
    border-top: 1px solid var(--color-border-dark);
    padding-top: 3.75rem;
    padding-bottom: 3.75rem;
    margin-top: 6.25rem;
}

.footer-disclaimer .limiter.row {
    width: var(--limter-main-width);
    max-width: var(--limiter-main-max-width);
}

.footer-disclaimer .disclaimer-content {
    display: flex;
}

.footer-disclaimer .disclaimer-label {
    width: 20%;
    min-width: 10rem;
    flex-shrink: 0;
}

.footer-disclaimer .disclaimer-text {
    flex: 1;
}

[data-barba-namespace="privacy-policy"] main section.section .limiter,
[data-barba-namespace="terms-of-use"] main section.section .limiter,
[data-barba-namespace="complaints-handling"] main section.section .limiter,
[data-barba-namespace="risk-disclosure"] main section.section .limiter,
[data-barba-namespace="website-disclaimer"] main section.section .limiter {
    padding-left: 8vw;
    padding-right: 8vw;
}

.footer-disclaimer h4 {
    font-size: 0.9375rem;
    font-weight: 600;
    margin-bottom: 1rem;
    color: var(--color-dark-green);
}

.footer-disclaimer h4:not(:first-child) {
    margin-top: 2rem;
}

.footer-disclaimer p {
    font-size: 0.75rem;
    line-height: 1.6;
    color: var(--color-text);
    margin-bottom: 1rem;
}


.hero .slide-curtain {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 0%;
    background: var(--color-dark-green);
    z-index: 4;
}

/* animation start positions */
.has-js header .logo a {
    position: relative;
    top: .5rem;
    opacity: 0;
}

.has-js header .main-navigation > ul > li > a {
    position: relative;
    top: .5rem;
    opacity: 0;
}

.has-js header .core-actions > ul > li > a {
    position: relative;
    top: .5rem;
    opacity: 0;
}

.has-js header  .core-actions li.blank {
    transform: scaleY(.0);
}

.has-js .hero-intro .slide-curtain {
    height: 100%;
}

.has-js .hero-intro .slide-show .buttons .button.prev {
    opacity: 0;
    position: relative;
    left: 0.5rem;
}

.has-js .hero-intro .slide-show .buttons .button.next {
    opacity: 0;
    position: relative;
    left: -0.5rem;
}

.has-js .hero-intro .progress-bar {
    height: 0;
    min-height: 0;
}

.has-js .hero-intro .slide.active h1 .char,
.has-js .hero-intro .slide.active h2 .char,
.has-js .hero-intro .slide.active p .char {
    display: inline-block;
    opacity: 0;
    filter: blur(4px);
    transform: translateY(0.5rem);
}


.has-js .hero-intro .continue-arrow,
.has-js .hero.parent-page .continue-arrow {
    transform: translateY(-.5rem);
    opacity: 0;
}

/* Link bar start states */
.has-js .link-bar li a::before {
    opacity: 0;
    transform: translateY(-50%) scale(0.5);
    transition: opacity 0.4s ease, transform 0.4s ease;
}

.has-js .link-bar li a span {
    opacity: 0;
    transition: opacity 0.4s ease;
}

.has-js .link-bar li a::after {
    opacity: 0;
    transform: translateY(-50%) translateX(0.5rem);
    transition: opacity 0.4s ease, transform 0.4s ease;
}

.has-js .link-bar li.blank {
    transform: scaleY(0);
    transition: transform 0.3s ease;
}

/* Revealed states — staggered within each li */
.has-js .link-bar li.is-visible a::before {
    opacity: 1;
    transform: translateY(-50%) scale(1);
    transition-delay: 0s;
}

.has-js .link-bar li.is-visible a span {
    opacity: 1;
    transition-delay: 0.1s;
}

.has-js .link-bar li.is-visible a::after {
    opacity: 1;
    transform: translateY(-50%) translateX(0);
    transition-delay: 0.2s;
}

.has-js .link-bar li.blank.is-visible {
    transform: scaleY(1);
}

/* Link line start states */
.has-js .link.line::before {
    width: 0;
    transition: width 0.4s ease;
}

.has-js .link.line span {
    opacity: 0;
    transition: opacity 0.4s ease;
}

.has-js .link.line.chevron-right::after {
    opacity: 0;
    transform: translateY(-50%) translateX(0.2rem);
    transition: opacity 0.4s ease, transform 0.4s ease;
}

/* Link line revealed states */
.has-js .link.line.is-visible::before {
    width: 4rem;
}

.has-js .link.line.is-visible span {
    opacity: 1;
    transition-delay: 0.15s;
}

.has-js .link.line.is-visible.chevron-right::after {
    opacity: 1;
    transform: translateY(-50%) translateX(0);
    transition-delay: 0.3s;
}

.has-js .link.line.is-visible.chevron-right:hover::after {
    transform: translateY(-50%) translateX(0.5rem);
}

/* Investors tabs start states — scoped to .investors-intro */
.has-js .investors-intro .tabs-navigation li .tab-button {
    opacity: 0;
    transition: opacity 0.4s ease;
}

.has-js .investors-intro .tabs-navigation li.is-visible .tab-button {
    opacity: 0.25;
}

.has-js .investors-intro .tabs-navigation li.active.is-visible .tab-button {
    opacity: 1;
}

.has-js .investors-intro .tab.active .column {
    opacity: 0;
    transform: translateY(1.5rem);
}

.has-js .investors-intro .tab.active .column .background {
    opacity: 0;
}

.has-js .investors-intro .tab.active .column::before {
    width: 0 !important;
    transition: width 0.4s ease;
}

.has-js .investors-intro .tab.active .column.is-visible::before {
    width: 2rem !important;
}

/* Quote start states */
.has-js .quote__text p .char {
    display: inline-block;
    opacity: 0;
    filter: blur(4px);
    transform: translateY(0.5rem);
}

.has-js .quote__author::before {
    width: 0;
    transition: width 0.4s ease;
}

.has-js .quote__author.is-visible::before {
    width: 4rem;
}

.has-js .quote__name .char,
.has-js .quote__role .char {
    display: inline-block;
    opacity: 0;
    filter: blur(4px);
    transform: translateY(0.5rem);
}

/* CTA background start state */
.has-js .cta .image.background {
    opacity: 0;
}

/* Style-theme-1 card slider intro states */
.has-js .style-theme-1-intro .card.slider {
    clip-path: polygon(100% 0, 100% 0, 100% 100%, 100% 100%);
    transition: clip-path 0.8s cubic-bezier(0.76, 0, 0.24, 1);
}

.has-js .style-theme-1-intro.is-clip-revealed .card.slider {
    clip-path: polygon(0 0, 100% 0, 100% 100%, 0% 100%);
}

.has-js .style-theme-1-intro .line-nav::before {
    width: 0;
    transition: width 0.4s ease;
}

.has-js .style-theme-1-intro .line-nav.is-visible::before {
    width: 100%;
}

.has-js .style-theme-1-intro .slide.active h3 .char {
    display: inline-block;
    opacity: 0;
    filter: blur(4px);
    transform: translateY(0.5rem);
}

.has-js .style-theme-1-intro .slide.active .link {
    opacity: 0;
}

.has-js .style-theme-1-intro .slide.active .link.chevron-right::after {
    opacity: 0;
    transform: translateY(-50%) translateX(0.2rem);
    transition: opacity 0.4s ease, transform 0.4s ease;
}

.has-js .style-theme-1-intro .slide.active .link.is-link-visible.chevron-right::after {
    opacity: 1;
    transform: translateY(-50%) translateX(0);
}

.has-js .action-box.style-theme-1-intro .next-prev > div {
    opacity: 0;
}

/* Parent page hero start states */
.has-js .hero.parent-page .slide-curtain {
    top: unset;
    bottom: 0;
    height: 100%;
}

.has-js .hero.parent-page .breadcrumbs li {
    opacity: 0;
    transform: translateY(0.5rem);
}

.has-js .hero.parent-page h2 {
    visibility: hidden;
}

.has-js .hero.parent-page h2.is-split {
    visibility: visible;
}

.has-js .hero.parent-page h2 .char {
    display: inline-block;
    opacity: 0;
    filter: blur(4px);
    transform: translateY(0.5rem);
}

/* Service cards start states — scoped to .cards-intro */
.has-js .cards-intro .card {
    opacity: 0;
    transform: translateY(1.5rem);
}

.has-js .cards-intro .card .background {
    opacity: 0;
}

.has-js .cards-intro .card h3 {
    opacity: 0;
    transform: translateY(0.5rem);
    filter: blur(2px);
}

.has-js .cards-intro .card p {
    opacity: 0;
    transform: translateY(0.5rem);
    filter: blur(2px);
}

/* Image curtain reveal — from top (vertical, top to bottom) */
.has-js .curtain-reveal-down.figure-curtain::after {
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    transition: height 0.6s cubic-bezier(0.76, 0, 0.24, 1);
}

.has-js .curtain-reveal-down.figure-curtain::before {
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    transition: height 0.6s cubic-bezier(0.76, 0, 0.24, 1);
}

.has-js .curtain-reveal-down.is-revealed::after {
    height: 0;
}

.has-js .curtain-reveal-down.is-revealed::before {
    height: 0;
    transition-delay: 0.15s;
}

/* Image curtain reveal — from right (curtain anchored right, shrinks to 0) */
.has-js .curtain-reveal-right .image::after,
.has-js .curtain-reveal-right.figure-curtain::after {
    left: unset;
    right: 0;
    width: 100%;
    transition: width 0.6s cubic-bezier(0.76, 0, 0.24, 1);
}

.has-js .curtain-reveal-right .image::before,
.has-js .curtain-reveal-right.figure-curtain::before {
    left: unset;
    right: 0;
    width: 100%;
    transition: width 0.6s cubic-bezier(0.76, 0, 0.24, 1);
}

.has-js .curtain-reveal-right.is-revealed .image::after,
.has-js .curtain-reveal-right.is-revealed::after {
    width: 0;
}

.has-js .curtain-reveal-right.is-revealed .image::before,
.has-js .curtain-reveal-right.is-revealed::before {
    width: 0;
    transition-delay: 0.15s;
}

/* Standalone figure curtain — adds ::before/::after to any .figure-curtain */
.has-js .figure-curtain {
    position: relative;
    overflow: hidden;
}

.has-js .figure-curtain::before {
    content: '';
    position: absolute;
    top: 0;
    width: 100%;
    height: 100%;
    background: var(--color-off-white);
    z-index: 1;
}

.has-js .figure-curtain::after {
    content: '';
    position: absolute;
    top: 0;
    width: 100%;
    height: 100%;
    background: var(--color-dark-green);
    z-index: 2;
}

.contact-accordion__content {
    padding: 4rem 4rem;
    background: var(--color-off-white);
    margin-top: 3rem;
}

.contact-accordion__content form {
    background: #fff;
    padding: 4rem 4rem;
    box-shadow: 0rem 0.35rem 0.5rem rgba(0,0,0,0.02);
}

.contact-accordion__content form  label {
    color: rgb(31 46 49);
    font-size: .875rem;
    font-family: 'MAM-Sans', sans-serif;
}

.form-row {
    display: flex;
    flex-flow: column;
    margin-bottom: 3rem;
}

.contact-accordion__content form input, .contact-accordion__content form textarea, .contact-accordion__content form select {
    background: #fff;
    border-bottom: 1px solid rgba(0,0,0,0.15);
    margin-top: 1rem;
    font-size: .875rem;
    font-family: 'MAM-SANS';
    padding: 1.25rem 1.5rem;
    border-top: 1px solid rgba(0,0,0,0.05);
    border-left: 1px solid rgba(0,0,0,0.05);
    border-right: 1px solid rgba(0,0,0,0.05);
    box-shadow: 0rem 0.25rem .5rem rgba(0,0,0,0.025);
}
.contact-accordion__content form textarea {
    height: 9rem;
}

.contact-accordion__content form button {
    background: #1F2E31;
    color: #fff;
    font-family: 'MAM-Sans';
    text-transform: uppercase;
    padding: 1rem 2rem;
    border: none;
    margin-top: 0rem;
}

/* Image curtain reveal — from left (curtain anchored left, shrinks to 0) */
.has-js .curtain-reveal-left .image::after,
.has-js .curtain-reveal-left.figure-curtain::after {
    right: unset;
    left: 0;
    width: 100%;
    transition: width 0.6s cubic-bezier(0.76, 0, 0.24, 1);
}

.has-js .curtain-reveal-left .image::before,
.has-js .curtain-reveal-left.figure-curtain::before {
    right: unset;
    left: 0;
    width: 100%;
    transition: width 0.6s cubic-bezier(0.76, 0, 0.24, 1);
}

.has-js .curtain-reveal-left.is-revealed .image::after,
.has-js .curtain-reveal-left.is-revealed::after {
    width: 0;
}

.has-js .curtain-reveal-left.is-revealed .image::before,
.has-js .curtain-reveal-left.is-revealed::before {
    width: 0;
    transition-delay: 0.15s;
}

/* Info cards start states */
.has-js .info-cards .card h4 {
    opacity: 0;
    transform: translateY(0.5rem);
    filter: blur(2px);
}

.has-js .info-cards .card p {
    opacity: 0;
    transform: translateY(0.5rem);
    filter: blur(2px);
}

.has-js .info-cards .blank {
    transform: scaleY(0);
}

/* List horizontal start states */
.has-js .list-horizontal li h5 {
    opacity: 0;
    transform: translateY(0.5rem);
    filter: blur(2px);
}

.has-js .list-horizontal li p {
    opacity: 0;
    transform: translateY(0.5rem);
    filter: blur(2px);
}

/* Accordion item start states */
.has-js .accordion .accordion-item {
    opacity: 0;
    transform: translateY(0.5rem);
}

/* Contact accordion — inner elements hidden */
.has-js .contact-accordion .contact-accordion__title {
    opacity: 0;
    transform: translateY(0.5rem);
    filter: blur(2px);
}

.has-js .contact-accordion .contact-accordion__text {
    opacity: 0;
    transform: translateY(0.5rem);
    filter: blur(2px);
}

.has-js .contact-accordion .contact-accordion__link .link {
    opacity: 0;
}

.has-js .contact-accordion .contact-accordion__link .link.chevron-right::after {
    opacity: 0;
    transform: translateY(-50%) translateX(0.2rem);
    transition: opacity 0.4s ease, transform 0.4s ease;
}

.has-js .contact-accordion .contact-accordion__link .link.is-link-visible.chevron-right::after {
    opacity: 1;
    transform: translateY(-50%) translateX(0);
}

/* List numbered start states */
.has-js .list-numbered li {
    opacity: 0;
    transform: translateY(0.5rem);
    filter: blur(2px);
}

/* Lowlighted h3 — starts all highlighted, fades to lowlighted after reveal */
.has-js h3.lowlighted {
    color: var(--color-dark-green);
    transition: color 0.6s ease;
}

.has-js h3.lowlighted.is-colour-split {
    color: var(--color-mid-green);
}

/* Reusable reveal-up animation */
.has-js .reveal-up {
    opacity: 0;
    transform: translateY(1rem);
    filter: blur(2px);
}


@media (max-width: 1500px) {
    /* laptops / smaller desktops */

    html {
        font-size: 1.065vw;
    }



}


@media (max-width: 1200px) {

    /* tablets landscape */

    html {
        font-size: 1.2vw;
    }

    footer .logo img {
        height: 2.7rem;
    }

    .disclaimer-content {
        flex-flow: column;
    }

    figure.quote {
        padding: 7.75rem 6rem 7.75rem 6rem;
        margin: 0;
    }

    footer .logo {
        width: 40%;
        min-width: 30rem;
        margin-bottom: 5rem;
    }

    .columns.footer-navigation {
        flex-flow: column;
    }

    .tabs .tab .column {
        width: 47%;
    }

    section.hero.parent-page .columns {
        width: 80%;
    }

    .cards .card {
        width: 47%;
    }

    .tablet-width-10-percent { width: 10%; }
    .tablet-width-20-percent { width: 20%; }
    .tablet-width-30-percent { width: 30%; }
    .tablet-width-40-percent { width: 40%; }
    .tablet-width-50-percent { width: 50%; }
    .tablet-width-60-percent { width: 60%; }
    .tablet-width-70-percent { width: 70%; }
    .tablet-width-80-percent { width: 80%; }
    .tablet-width-90-percent { width: 90%; }
    .tablet-width-100-percent { width: 100%; }

}

@media (max-width: 1050px) {
    /* tablets */

    :root {
        --limter-width: 90vw;
    }

    html {
        font-size: 1.7vw;
    }

    footer .logo {
        margin-bottom: 1rem;
    }

    .footer-disclaimer {
        border-top: 1px solid var(--color-border-dark);
        padding-top: 3.75rem;
        padding-bottom: 3.75rem;
        margin-top: 3.25rem;
    }

    .columns.flex-flow-column.footer-menu {
        display: none;
    }

    .mobile-width-10-percent { width: 10%; }
    .mobile-width-20-percent { width: 20%; }
    .mobile-width-30-percent { width: 30%; }
    .mobile-width-35-percent { width: 35%; }
    .mobile-width-40-percent { width: 40%; }
    .mobile-width-45-percent { width: 45%; }
    .mobile-width-50-percent { width: 50%; }
    .mobile-width-60-percent { width: 60%; }
    .mobile-width-70-percent { width: 70%; }
    .mobile-width-80-percent { width: 80%; }
    .mobile-width-90-percent { width: 90%; }
    .mobile-width-100-percent { width: 100%; }

    .mobile-flex-flow-column { flex-flow: column; }

    .mobile-margin-top-0 { margin-top: 0; }
    .mobile-margin-top-1 { margin-top: 1rem; }
    .mobile-margin-top-2 { margin-top: 2rem; }
    .mobile-margin-top-3 { margin-top: 3rem; }
    .mobile-margin-top-4 { margin-top: 4rem; }
    .mobile-margin-top-5 { margin-top: 5rem; }
    .mobile-margin-top-6 { margin-top: 6rem; }
    .mobile-margin-top-7 { margin-top: 7rem; }

    .mobile-max-height-7 { max-height: 7rem; }
    .mobile-max-height-8 { max-height: 8rem; }
    .mobile-max-height-9 { max-height: 9rem; }

    .hero.parent-page h2 br {
        display: none;
    }

    .mobile-padding-top-3 { padding-top: 3rem; }

    .mobile-carat {
        position: relative;
    }

    .mobile-border-top {
        border-top: 1px solid var(--color-border-dark);
        margin-top: 8rem;
        padding-top: 8rem;
    }

    .mobile-carat.carat-faded::before {
        background: var(--color-border-dark);
    }

    .mobile-carat::before {
        content: '';
        background: var(--color-bright-green);
        width: 4rem;
        left: 0;
        top: 0;
        position: absolute;
        height: 1px;
    }

    .mobile-flex-flow-row {
        display: flex;
        flex-flow: row;
    }
    .mobile-display-flex { display: flex; }
    .mobile-justify-space-between {
        justify-content: space-between;
    }

    .mobile-padding-top-0 { padding-top: 0 !important; }

    .mobile-height-25 { height: 25rem; }


    .mobile-order-1 { order: 1; }
    .mobile-order-2 { order: 2; }

    .mobile-gap-1 { gap: 1rem; }
    .mobile-gap-2 { gap: 2rem; }
    .mobile-gap-3 { gap: 3rem; }
    .mobile-gap-4 { gap: 4rem; }
    .mobile-gap-5 { gap: 5rem; }

    .action-box.style-theme-2 .card {
        background: var(--color-dark-green);
        width: 70%;
    }

    .action-box.style-theme-2 .image {
        width: 30%;
    }

    .mobile-display-none { display: none; }

    .mobile-flex-wrap { flex-wrap: wrap; }

    .mobile-width-100-percent br { display: none; }


    .cards .card {
        width: 100%;
    }

    .hero.parent-page h2 {

        font-size: 4rem;

    }

    .mobile-flex-columns { flex-flow: column; }

    .tabs .tab .column {
        width: 100%;
    }

    .action-box .card {
        width: 75%;
    }

    figure.quote {
        padding: 5.75rem 0rem;
    }

    .navigation-row > .limiter {
        flex-flow: column;
        position: relative;
    }

    .navigation-row > .limiter > nav {
        width: 100%;
    }

    header .navigation-row .core-actions {
        position: absolute;
        right: 0;
        top: 0;
    }

    section.overview .columns {
        flex-flow: column;
    }

    section.overview .columns .column {
        width: 100%;
    }

    .main-navigation > ul {
        justify-content: space-between;
        width: 100%;
        gap: unset;
    }

    .slide-texts .slide {
        width: 80%;
    }

    .slide-show h2 br {
        display: none;
    }

    .slide-show  h2 {
        font-size: 4.5rem;
    }

    .main-navigation {
        width: 100%;
    }

    .slide-group-bottom {
        height: calc( 100% - 32.5rem);
        top: 32.5rem;
    }

    main .hero .progress-bar {
        height: 32.5rem;
    }

    .mega-menu {
        left: -4vw;
        width: calc(100% + 8vw);
    }

    .mega-menu .overview {
        width: 25%;
        display: none;
    }

    .mega-menu .menu-items {
        width: 40%;
    }

    .mega-menu .columns {
        gap: 3rem;
    }

    .mega-menu .menu-action.column {
        padding: 4rem 4rem;
    }

    .two-link-columns .menu-action {
        display: none;
    }

    .mega-menu .two-link-columns  .menu-items {
        width: 45%;
    }

    .link-bar li a {
        font-size: .875rem;
    }

    .link-bar li a::after {
        width: 1.125rem;
        height: 1.125rem;
    }

    .link-bar ul li:first-child a {
        padding-left: 0;
    }

    .link-bar li a {
        padding-left: 0rem;
        padding-right: 2rem;
    }

    .link-bar li a::before {
        content: unset;
    }


    .mega-menu .menu-action h3 {

        width: 100%;

    }

    .mega-menu .limiter {
        padding-top: 7rem;
    }

    .continue-arrow {
        bottom: -31.25rem;
    }

    section.overview h3 {
        margin-bottom: 4rem;
    }

    .limiter.watermark::before {
        right: -15rem;
    }

    header .navigation-row .core-actions {
        position: absolute;
        right: 1rem;
    }

}

@media (max-width: 768px) {
    /* Small */

    :root {
        --limter-width: 85vw;
    }

    section.hero.parent-page .limiter.slide-group-top {
        padding-top: 5rem;
    }

    header .logo {
        width: 40%;
    }

    .navigation-row > .limiter > nav {
        width: 100%;
        display: none;
    }

    .navigation-row > .limiter.row {
        align-items: center;
        justify-content: space-between;
    }

    button.mobile-menu-toggle {
        display: block;
    }

    .mobile-menu {
        display: block;
    }

    section.hero.parent-page .columns {
        width: 100%;
    }

    .mega-menu .menu-items .link, .mega-menu .overview .link {
        font-size: 1rem;
    }

    section.hero.parent-page > div > .columns {
        left: 0;
        position: relative;
    }

    .mega-menu .menu-action {
        display: none;
    }

    .mega-menu .menu-items {
        width: 100%;
    }

    .mega-menu {
        left: -6.5vw;
        width: calc(100% + 13vw);
    }

    html {
        font-size: 2.5vw;
    }

    section.overview {
        padding-bottom: 3.813rem;
    }

    .link-bar {
        display:none;
    }

    .menu-action {
        display: none;
    }

    .slide-navigation.holder {
        left: 22%;
        position: relative;
        top: -30%;
    }

    .slide-group-bottom {
        height: calc( 100% - 24rem);
        top: 24rem;
    }

    [data-barba-namespace="home"] .hero {
        max-height: 55rem;
        min-height: 55rem;
    }

    .continue-arrow {
        bottom: -37.25rem;
        left: -1rem;
    }

    .limiter.slide-group-top {
        padding-top: 8rem;
    }

    .progress-bar {
        display: none;
    }

    .limiter.watermark::before {
        right: -10rem;
        top: -20rem;
    }

    .action-box .card {
        width: 100%;
    }

    .action-box {
        padding: 3.75rem 3.125rem;
    }

    .small-width-70-percent { width: 70%; }

}

@media (max-width: 480px) {
    /* small mobile */
}