body[data-scrollblocking="1"]{
    overflow: hidden;
}


.module{
    position: relative;
    padding-inline: var(--spacing-wrapper);
    padding-block: var(--spacing-vertical);
}
.module[data-wrapper="center"]{
    padding-inline: var(--spacing-wrapper-center);
}
.module_headline{
    margin-bottom: var(--spacing-gap-y);
    text-transform: uppercase;
    line-height: 1em;
}


.module[data-theme="white"] + .module[data-theme="white"],
.module[data-theme="galactic"] + .module[data-theme="galactic"],
.module[data-theme="blue"] + .module[data-theme="blue"],
.module[data-theme="pink"] + .module[data-theme="pink"],
.module[data-theme="grey"] + .module[data-theme="grey"],
.module[data-theme="current"] + .module[data-theme="current"]
{
    padding-top: 0;
}




.module[data-decor="fill"]:before{
    content: '';
    display: block;
    height: 60svh;
    width: 100%;
    position: absolute;
    right: 0;
    bottom: 0;
    background-image: url("/wp-content/themes/heyst/assets/img/decor-fill.svg");
    background-position: 120% 0;
    mix-blend-mode: overlay;
    background-size: auto 10svh;
    background-origin: content-box;
    background-repeat: repeat;
    z-index: 0;
    opacity: 0.2;
    mask-image: linear-gradient(315deg, #000 0, transparent 40%, transparent 100%);
}
.module[data-theme="white"][data-decor="fill"]:before{
    backdrop-filter: contrast(0.75);
}
.module[data-decor="fill"] > * {
    position: relative;
}




.gradients{
    position: relative;
    background-color: var(--color-main);
    background-image: radial-gradient(closest-side, var(--color-accent) 0, transparent 100%), radial-gradient(closest-side, var(--color-accent-3) 0, transparent 100%), radial-gradient(farthest-corner, transparent 0, var(--color-main-dark) 100%);
    background-position: 80% -45svh, -100svh 50svh, center center;
    background-size: 140svh 100svh, 200svh 100svh, 100% 100%;
    background-repeat: no-repeat;

    @media all and (width < 640px){
        background-position: 20% -45svh, -100svh 50svh, center center;
    }
}
.gradients:after{
    content: '';
    display: block;
    height: 60svh;
    width: 100%;
    position: absolute;
    right: 0;
    bottom: 0;
    background-image: url("/wp-content/themes/heyst/assets/img/decor-fill.svg");
    background-position: 120% 7.5svh;
    mix-blend-mode: overlay;
    background-size: auto 15svh;
    background-origin: content-box;
    background-repeat: repeat;
    z-index: 2;
    opacity: 0.2;
    mask-image: linear-gradient(315deg, #000 0, transparent 40%, transparent 100%);
}
.gradients:before {
    content: '';
    width: 100%;
    height: 100%;
    position: absolute;
    left: 0;
    top: 0;
    z-index: 1;
}
.gradients > *{
    position: relative;
    z-index: 3;
}




[data-theme="white"]{
    --bg-color: var(--color-white);
    --text-color: var(--color-main-text);
    --accent: var(--color-accent);
    --hover: var(--color-accent-2);
}
[data-theme="galactic"]{
    --bg-color: var(--color-main);
    --text-color: var(--color-white-text);
    --accent: var(--color-accent);
    --hover: var(--color-accent-2);
}
[data-theme="blue"]{
    --bg-color: var(--color-main-dark);
    --text-color: var(--color-white-text);
    --accent: var(--color-accent);
    --hover: var(--color-accent-2);
}
[data-theme="pink"]{
    --bg-color: var(--color-accent);
    --text-color: var(--color-white-text);
    --accent: var(--color-main);
    --hover: var(--color-accent-2);
}
[data-theme="grey"]{
    --bg-color: var(--color-off-white);
    --text-color: var(--color-main-dark);
    --accent: var(--color-accent);
    --hover: var(--color-accent-2);
}
[data-theme="current"]{
    --bg-color: transparent;
}




.hy_icon{
    display: flex;
    align-items: center;
    justify-content: center;
    width: 37rem;
    height: 37rem;
    flex-basis: 37rem;
    flex-shrink: 0;
    background-color: var(--accent);
    color: var(--color-white-text);
    border-radius: 50%;
    transition: background-color 0.38s ease, color 0.38s ease;

    @media all and (width >= 768px){
        width: 40rem;
        height: 40rem;
        flex-basis: 40rem;
    }
    @media all and (width >= 1366px){
        width: 50rem;
        height: 50rem;
        flex-basis: 50rem;
    }
}
a:hover .hy_icon {
    background-color: var(--hover);
    color: var(--color-white-text);
}
.hy_icon > svg{
    display: block;
    flex-basis: 24rem;
    width: 24rem;
}
.hy_icon--square {
    border-radius: 10rem;

    @media all and (width >= 768px) {
        border-radius: 12rem;
    }
    @media all and (width >= 1366px) {
        border-radius: 15rem;
    }
}
.hy_icon[data-icon] svg{
    display: none;
}
.hy_icon[data-icon="0"] svg:nth-child(1){
    display: block;
}
.hy_icon[data-icon="1"] svg:nth-child(1){
    display: block;
}
.hy_icon[data-icon="2"] svg:nth-child(2){
    display: block;
}
.hy_icon[data-icon="3"] svg:nth-child(3){
    display: block;
}




.hy_button{
    font-family: 'Talina', sans-serif;
    letter-spacing: 2rem;
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: var(--spacing-gap-x);
    background-color: var(--accent);
    color: var(--color-white-text);
    padding: 12rem 18rem;
    border-radius: var(--radius-button);
    text-transform: uppercase;
    width: max-content;
    font-size: 14rem;
    line-height: 16rem;
    margin-top: var(--line-break);
    position: relative;
    overflow: hidden;

    @media all and (width >= 1024px){
        padding: 18rem 27rem;
        font-size: 20rem;
        line-height: 24rem;
    }
}
.hy_button:before {
    content: '';
    width: 400%;
    height: 100%;
    position: absolute;
    z-index: 0;
    right: 0;
    top: 0;
    background-image: linear-gradient(90deg, var(--color-accent-2) 0%, var(--color-accent-2) calc(100% / 4 * 1), transparent calc(100% / 4 * 3), transparent 100%);
    background-position: top left;
    background-size: 100% 100%;
    background-repeat: no-repeat;
    transition: transform 1s ease-in-out;
}
.hy_button:hover:before {
    transform: translate(calc(100% / 4 * 3), 0);
}
.hy_button_text{
    position: relative;
    z-index: 0;
}
.hy_button_icon {
    display: flex;
    align-items: center;
    flex-basis: 18rem;
    width: 18rem;
    height: 18rem;
    position: relative;
    z-index: 1;

    @media all and (width >= 1024px){
        flex-basis: 24rem;
        width: 24rem;
        height: 24rem;
    }
}
.hy_button_icon > svg{
    width: 100%;
    height: auto;
}




.hy_media{
    display: block;
    position: relative;
}
.hy_media picture{
    display: contents;
}
.hy_media img,
.hy_media video,
.hy_media iframe{
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
}
.hy_media_fullsize{
    display: flex;
    align-items: center;
    position: absolute;
    bottom: var(--padding-block);
    right: var(--padding-inline);

    @media all and (width < 640px) {
        display: none;
    }
}
.hy_media_description{
    display: flex;
    align-items: center;
    background-color: var(--color-main);
    color: var(--color-white-text);
    padding: 12rem 18rem;
    border-radius: var(--radius-button);
    width: max-content;
    font-size: 14rem;
    line-height: 16rem;
    position: absolute;
    left: var(--padding-inline);
    bottom: var(--padding-block);
    max-width: calc(100% - var(--padding-inline) * 2);

    @media all and (width >= 1024px){
        padding: 18rem 27rem;
        font-size: 20rem;
        line-height: 24rem;
    }
}
.hy_lightbox_backdrop {
    position: fixed;
    inset: 0;
    background: rgba(8, 12, 22, 0.88);
    backdrop-filter: blur(12rem);
    -webkit-backdrop-filter: blur(12rem);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 50;
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.3s cubic-bezier(0.16, 1, 0.3, 1), visibility 0.3s ease;
    cursor: zoom-out;
    padding: 1.5rem;
}

.hy_lightbox_backdrop--active {
    opacity: 1;
    visibility: visible;
}

.hy_lightbox_content {
    position: relative;
    max-width: 92vw;
    max-height: 90vh;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    transform: scale(0.94) translateY(12px);
    transition: transform 0.35s cubic-bezier(0.16, 1, 0.3, 1);
    cursor: default;
}

.hy_lightbox_backdrop.hy_lightbox_backdrop--active .hy_lightbox_content {
    transform: scale(1) translateY(0);
}

.hy_lightbox_img {
    max-width: 90vw;
    max-height: 80vh;
    object-fit: contain;
    border-radius: var(--radius);
    box-shadow: 0 25rem 60rem -15rem rgba(0, 0, 0, 0.7), 0 0 0 1rem rgba(255, 255, 255, 0.1);
    user-select: none;
    transition: opacity 0.25s ease;
    cursor: default;
}

.hy_lightbox_loader {
    width: 44rem;
    height: 44rem;
    border: 3.5rem solid rgba(255, 255, 255, 0.2);
    border-top-color: var(--color-accent-2);
    border-radius: 50%;
    animation: lightbox-spin 0.8s linear infinite;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    pointer-events: none;
}

@keyframes lightbox-spin {
    to { transform: translate(-50%, -50%) rotate(360deg); }
}

.hy_lightbox_close {
    position: absolute;
    top: 20rem;
    right: 20rem;
    background: var(--color-accent);
    color: var(--color-white-text);
    width: 42rem;
    height: 42rem;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: all 0.2s ease;
    z-index: 10;
}

.hy_lightbox_close:hover {
    background: var(--color-accent-2);
    transform: scale(1.08) rotate(90deg);
}

.hy_lightbox_caption {
    margin-top: 1rem;
    font-size: 0.95rem;
    color: #cbd5e1;
    text-align: center;
    max-width: 700px;
    text-shadow: 0 2px 4px rgba(0,0,0,0.5);
    padding: 0.4rem 1rem;
    background: rgba(15, 23, 42, 0.6);
    border-radius: 9999px;
    border: 1px solid rgba(255, 255, 255, 0.08);
}




[data-inview] [class*="inview--"],
[data-inview][class*="inview--"]{
    transition: transform 0.5s ease, opacity 0.5s ease, background-color 0.38s ease;
}

[data-inview] [class*="inview--"] + [class*="inview--"],
[data-inview][class*="inview--"] + [class*="inview--"]{
    transition-delay: 0.25s, 0.25s, 0s;
}
[data-inview] [class*="inview--"] + [class*="inview--"] + [class*="inview--"],
[data-inview][class*="inview--"] + [class*="inview--"] + [class*="inview--"]{
    transition-delay: 0.45s, 0.45s, 0s;
}
[data-inview] [class*="inview--"] + [class*="inview--"] + [class*="inview--"] + [class*="inview--"],
[data-inview][class*="inview--"] + [class*="inview--"] + [class*="inview--"] + [class*="inview--"]{
    transition-delay: 0.55s, 0.55s, 0s;
}
[data-inview] [class*="inview--"] + [class*="inview--"] + [class*="inview--"] + [class*="inview--"] ~ [class*="inview--"],
[data-inview][class*="inview--"] + [class*="inview--"] + [class*="inview--"] + [class*="inview--"] ~ [class*="inview--"]{
    transition-delay: 0.6s, 0.6s, 0s;
}

[data-inview] .inview--up,
[data-inview].inview--up{
    transform: translate(0,5svh);
    opacity: 0;
}
[data-inview-progress="1"] .inview--up,
[data-inview-progress="1"].inview--up{
    transform: translate(0,0);
    opacity: 1;
}
[data-inview-progress="2"] .inview--up,
[data-inview-progress="2"].inview--up{
    transform: translate(0,-5svh);
    opacity: 0;
}

[data-inview] .inview--in,
[data-inview].inview--in{
    opacity: 0;
}
[data-inview-progress="1"] .inview--in,
[data-inview-progress="1"].inview--in{
    opacity: 1;
}
[data-inview-progress="2"] .inview--in,
[data-inview-progress="2"].inview--in{
    opacity: 0;
}





.l-shape{
    display: block;
    position: absolute;
    aspect-ratio: 1.46;
    width: 20vw;
    height: auto;
    z-index: 2;
}
.l-shape .l-shape_vertical{
    width: 17%;
    height: 100%;
    border-radius: 0 10rem 0 0;
    background-color: currentColor;
    position: absolute;
    left: 0;
    bottom: 0;

    @media all and (width >= 1280px){
        border-radius: 0 15rem 0 0;
    }
}
.l-shape .l-shape_horizontal{
    width: 100%;
    height: 25%;
    border-radius: 0 15rem 0 0;
    background-color: currentColor;
    position: absolute;
    left: 0;
    bottom: 0;
}
.l-shape .l-shape_shadow{
    display: block;
    width: 26rem;
    aspect-ratio: 1;
    height: auto;
    background: transparent;
    position: absolute;
    left: 17%;
    bottom: 25%;
    border-radius: 0 0 0 10rem;
    box-shadow: -10rem 10rem 0 currentColor;

    @media all and (width >= 1280px){
        border-radius: 0 0 0 15rem;
    }
}

.infobox{
    display: flex;
    flex-direction: row;
    gap: 20rem;
    padding: var(--padding-block) var(--padding-inline);
    background-color: hsla(0,0%,100%,0);
    backdrop-filter: blur(30rem) brightness(1.15);
    border-radius: 20rem;
    position: absolute;
    z-index: 3;
    left: var(--spacing-wrapper);
    right: var(--spacing-wrapper);
    bottom: var(--spacing-vertical);
    font-size: 90%;
    align-items: flex-start;

    @media all and (width >= 768px){
        left: unset;
        right: 50%;
        transform: translate(50%,0);
        width: 512rem;
        bottom: 50rem;
    }
    @media all and (width >= 1440px){
        width: 600rem;
    }
    @media all and (width >= 1540px){
        right: var(--spacing-wrapper);
        transform: none;
        padding: 20rem;
        bottom: 130rem;
        width: 512rem;
    }
    @media all and (width >= 1640px){
        right: 100rem;
        bottom: 100rem;
        scale: 0.8;
        transform-origin: bottom right;
    }
}
.infobox_media{
    display: block;
    aspect-ratio: 1;
    border-radius: 15rem;
    overflow: hidden;
    width: 95rem;
    flex-shrink: 0;
    flex-basis: 95rem;

    @media all and (width >= 1024px){
        width: 115rem;
        flex-basis: 115rem;
    }
    @media all and (width >= 1366px){
        width: 140rem;
        flex-basis: 140rem;
    }
    @media all and (width >= 1540px){
        width: 160rem;
        flex-basis: 160rem;
    }
}
.infobox_media dotlottie-wc{
    display: block;
    width: 100%;
    height: 100%;
    background-color: var(--color-accent-3);
}
.infobox_media img{
    background-color: var(--color-accent-3);
    padding: 20rem;
}
.infobox_text{
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    color: var(--color-white-text);
}
.infobox_button{
    margin-top: 5rem;
}