.wava-nav-logo {
    display: block;
    height: 26px;
    width: auto;
}
body:has(.wava-hero-logo) .header__logo {
    display: none;
}
.header.header-animation .wava-nav-logo,
.header-animation .wava-nav-logo {
    height: 22px;
}
.wava-hero-logo {
    display: block;
    height: clamp(72px, 12vw, 148px);
    width: auto;
    max-width: min(92vw, 920px);
}
.contact-links__icon.wava-stamp {
    width: 148px;
    height: auto;
    display: block;
}
.contact-links > .wava-stamp:first-child {
    display: none;
}
.socials__item:nth-child(1),
.socials__item:nth-child(n + 3) {
    display: none;
}
.team__image {
    object-fit: cover;
    background: #111;
}
.about__container {
    background: #000 url("/media/wava/hero-ciclo.jpg") center / cover no-repeat;
}
.about__video--cover {
    opacity: 0;
}
.wava-hero-frame {
    overflow: hidden;
    z-index: 0;
}
.wava-hero-yt {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 140%;
    height: 140%;
    border: 0;
    pointer-events: none;
    transform: translate(-50%, -50%);
}
.partners__list .wava-hl {
    color: #00fb96;
}
.latest__bg img.wava-bloom-photo {
    object-position: center center;
}
.wava-bloom-logo {
    display: block;
    width: min(640px, 52vw);
    height: auto;
    margin-right: calc(60rem / var(--fz-base));
}
.wava-bloom-ghost {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    opacity: 0;
    pointer-events: none;
}
.latest__panel:not(.latest__panel--cover) .wava-bloom-logo {
    filter: invert(1);
}
@media (max-width: 919px) {
    .wava-bloom-logo {
        width: min(280px, 72vw);
        margin: 0 auto 12px;
    }
}

/* Two layers share the frame so the opening film can dissolve into the reel. */
.wava-hero-video { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; display:block; pointer-events:none; }
.wava-hero-reel { z-index:0; }
.wava-hero-video.js-first-video { z-index:1; }
.wava-hero-video.is-to-reel {
    clip-path: circle(80vw at 50% 48.5%);
    opacity: 0;
}
.about__column {
    position: relative;
    z-index: 4;
}
.wava-hero-fade {
    position: absolute;
    left: 0;
    right: 0;
    bottom: -1px;
    height: 42vh;
    z-index: 2;
    pointer-events: none;
}
.wava-hero-fade__veil {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    background: linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.55) 58%, #000);
    -webkit-backdrop-filter: blur(var(--blur));
    backdrop-filter: blur(var(--blur));
    -webkit-mask-image: linear-gradient(to bottom, transparent 0%, #000 62%);
    mask-image: linear-gradient(to bottom, transparent 0%, #000 62%);
}
.wava-hero-fade__veil:nth-child(1) { height: 100%; --blur: 6px; }
.wava-hero-fade__veil:nth-child(2) { height: 68%; --blur: 18px; }
.wava-hero-fade__veil:nth-child(3) {
    height: 38%;
    --blur: 36px;
    background: linear-gradient(to bottom, rgba(0, 0, 0, 0), #000 80%);
}
.stickers {
    position: relative;
    padding-bottom: clamp(18rem, 40vh, 28rem);
}
.stickers .cta {
    position: relative;
    z-index: 3;
}
.stickers::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: clamp(14rem, 32vh, 22rem);
    z-index: 2;
    pointer-events: none;
    background: linear-gradient(
        to bottom,
        #000 0%,
        #161616 22%,
        #3a3a3a 46%,
        #8d8d8d 70%,
        #d9d9d9 88%,
        #fff 100%
    );
}

.header-animation .wava-nav-logo, .header-contact-page .wava-nav-logo {filter:invert(1);}

/* Brushed silver plates become frosted glass. */
.cch__background-image,
.ccfw__image,
.features .features-cta__img-item.--background {
    opacity: 0;
}
.about .cch,
.ccfw,
.features .features-cta__container {
    background: rgba(255, 255, 255, 0.28);
    -webkit-backdrop-filter: blur(22px) saturate(1.45);
    backdrop-filter: blur(22px) saturate(1.45);
    border: 1px solid rgba(255, 255, 255, 0.55);
    box-shadow:
        0 12px 40px rgba(0, 0, 0, 0.16),
        inset 0 1px 0 rgba(255, 255, 255, 0.65);
}
.about .cch {
    background: rgba(255, 255, 255, 0.16);
    -webkit-backdrop-filter: blur(30px) saturate(1.7);
    backdrop-filter: blur(30px) saturate(1.7);
    border-color: rgba(255, 255, 255, 0.38);
}
.about .cch__title {
    color: #fff;
    text-shadow: 0 1px 10px rgba(0, 0, 0, 0.45);
}
.about .cch__close-button {
    border-color: rgba(255, 255, 255, 0.8);
}
.about .cch__close-button::before,
.about .cch__close-button::after {
    background-color: #fff;
}
.ccfw {
    background: rgba(255, 255, 255, 0.46);
    border-left: 0;
    border-right: 0;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.7);
}
.features .features-cta__image-wrapper {
    border-radius: 14px;
    background: rgba(255, 255, 255, 0.32);
    -webkit-backdrop-filter: blur(16px) saturate(1.4);
    backdrop-filter: blur(16px) saturate(1.4);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.6);
}
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
    .about .cch,
    .ccfw,
    .features .features-cta__container {
        background: rgba(244, 244, 244, 0.94);
    }
}

/* Portuguese labels are longer than the original template's headings. */
.wwd__title { overflow: visible; }
.wwd__title > .title:nth-child(1) { left:2%; font-size:clamp(64px,10vw,180px); }
.wwd__title > .title:nth-child(2) {
    font-size: clamp(64px, 10vw, 160px);
    margin-left: clamp(16rem, 42vw, 50rem);
    line-height: 1.25;
    overflow: visible;
    padding-top: 0.2em;
}
.wwd__title > .title:nth-child(2) .line {
    overflow: visible;
    line-height: 1.25;
}
.wwd__title > .title:nth-child(3) {
    left: 54%;
    top: clamp(12rem, 19vw, 23rem);
    font-size: clamp(42px, 7vw, 130px);
}
.contact-links--inverse .wava-stamp { filter:invert(1); }
@media (min-width:768px) {
  .nav__list { display:grid; grid-template-columns:auto auto; gap:0 32px; }
  .nav__item:nth-child(1) { grid-row:1 / 3; }
  .nav__item:nth-child(2) { grid-column:2; grid-row:1; }
  .nav__item:nth-child(3) { grid-column:2; grid-row:2; padding-left:0; text-align:left; }
}
@media (max-width:767px) {
  .wwd__title > .title:nth-child(1) { left:2%; font-size:17vw; }
  .wwd__title > .title:nth-child(2) {
    font-size: 17vw;
    margin-left: 0;
    margin-top: 0.85em;
    line-height: 1.25;
  }
  .wwd__title > .title:nth-child(3) { left:38%; font-size:12vw; }
}
.wava-yt__frame {
    position: relative;
    width: 100%;
    aspect-ratio: 16 / 9;
    background: #000;
}
.wava-yt__frame iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: 0;
}
.feature__subtitle.wava-brand-title {
    font-size: clamp(1.7rem, 2.6vw, 3.1rem);
}
.gallery__item.wava-land .gallery__video,
.gallery__item.wava-port .gallery__video {
    height: auto;
    max-height: none;
}
.gallery__item.wava-land .gallery__video {
    aspect-ratio: 16 / 9;
    object-fit: cover;
}
.gallery__item.wava-port {
    width: min(100%, 28rem);
    margin-inline: auto;
}
.gallery__item.wava-port .gallery__video {
    aspect-ratio: 9 / 16;
    object-fit: cover;
}
.gallery__item.wava-square {
    width: min(100%, 36rem);
    margin-inline: auto;
}
.gallery__item.wava-square .gallery__video {
    height: auto;
    aspect-ratio: 1;
    object-fit: cover;
}
video.wava-feature-ghost {
    position: absolute;
    width: 0;
    height: 0;
    opacity: 0;
    pointer-events: none;
}
#video-brand,
#video-design {
    width: 100%;
    height: 100%;
    left: 0;
    top: 0;
}
#video-brand img.feature__video,
#video-design img.feature__video {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.feature__video-item:not(.is-active) {
    opacity: 0;
}
#video-web,
#video-3d {
    background-image: none;
    background-color: #000;
}
.latest__bg video.wava-bloom-photo {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center center;
}
.wava-partner-marquee + .curtains { display: none; }
@font-face {
    font-family: "Basement Grotesque";
    src: url("/assets/fonts/BasementGrotesque-Black.otf") format("opentype");
    font-weight: 900;
    font-style: normal;
    font-display: swap;
}
.aims__email,
.title--cursive,
.title-secondary--cursive,
.not-found__404,
.popup-capabilities__title-italic {
    font-family: "Basement Grotesque", Arial, sans-serif;
    font-style: normal;
    font-weight: 900;
    letter-spacing: 0.04em;
}
.aims__title,
.aims__title .line,
.title--cursive .line {
    overflow: visible;
    line-height: 1.15;
}
.aims__email,
.aims__email .char {
    color: #111;
}
.aims__email .char:after {
    background-color: #111;
}
.footer__legal {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 1.35rem;
    margin-top: clamp(1.875rem, 11.5104166667vw, 13.8125rem);
    margin-bottom: clamp(.8125rem, 1.5625vw, 1.875rem);
}
.footer__legal .footer__link,
.wava-loc {
    margin-top: 0;
    margin-bottom: 0;
    font-size: 0.875rem;
    font-family: var(--font-typewriter), Arial, sans-serif;
    text-transform: uppercase;
    line-height: 1;
    font-weight: 500;
}
.wava-loc {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    color: inherit;
    text-decoration: none;
}
.wava-loc .wava-pin {
    width: 18px;
    height: 18px;
}
.wava-loc .wava-pin:before,
.wava-loc .wava-pin:after {
    background-image: radial-gradient(circle 4px at 50% 50%, #fff 94%, #000);
}
.wava-map {
    display: inline-flex;
    align-items: center;
    gap: 12px;
    margin-top: 18px;
    padding: 8px 4px;
    background: #fff;
    color: #000;
    text-decoration: none;
    text-transform: none;
    font-family: var(--font-text), Helvetica, Arial, sans-serif;
    font-size: 15px;
    font-weight: 500;
    font-style: normal;
    line-height: 1.25;
    letter-spacing: 0;
}
.wava-map__text { text-align: left; }
.wava-pin {
    width: 36px;
    height: 36px;
    position: relative;
    flex: none;
    transform: rotate(45deg);
}
.wava-pin:before,
.wava-pin:after {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: 50% 50% 0 50%;
    background: transparent;
    background-image: radial-gradient(circle 9px at 50% 50%, #fff 94%, #000);
}
.wava-pin:after {
    animation: wava-pin-pulse 1s infinite;
    transform: perspective(270px) translateZ(0);
}
@keyframes wava-pin-pulse {
    to {
        transform: perspective(270px) translateZ(135px);
        opacity: 0;
    }
}
@media (prefers-reduced-motion: reduce) {
    .wava-pin:after { animation: none; }
}
.wava-houses + .footer {
    margin-top: 0;
    padding-top: 0;
}
.wava-houses + .footer .title__box {
    width: 100%;
    max-width: none;
    background: #000;
}
.wava-sites {
    position: relative;
    z-index: 2;
    display: flex;
    justify-content: flex-start;
    margin: 12px 0 8px;
    max-width: none;
}
.wava-sites__btn {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    width: clamp(21.5625rem, 32.65625vw, 39.1875rem);
    height: clamp(11.5625rem, 17.6041666667vw, 21.125rem);
    padding: 0;
    border: 0;
    background: transparent;
    cursor: pointer;
}
.wava-sites__ring {
    position: absolute;
    width: 96%;
    height: 42%;
    border: 1px solid #111;
    border-radius: 100%;
    pointer-events: none;
    transition: transform 0.35s ease;
}
.wava-sites__ring--top {
    transform: translateY(-30px) rotate(17deg);
}
.wava-sites__ring--bottom {
    transform: translateY(30px) rotate(17deg);
}
.wava-sites__ring--bottom::before {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: inherit;
    background: #111;
    transform: translate(-16px, -40px);
}
.wava-sites__label {
    position: relative;
    z-index: 2;
    color: #fff;
    font-family: var(--font-typewriter);
    font-size: clamp(0.75rem, 0.95vw, 0.95rem);
    line-height: 1;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    pointer-events: none;
}
.wava-sites__star {
    position: absolute;
    z-index: 3;
    top: 18%;
    right: 11%;
    pointer-events: none;
}
.wava-sites__btn:hover .wava-sites__ring--top,
.wava-sites__btn[aria-expanded="true"] .wava-sites__ring--top {
    transform: translateY(-42px) rotate(17deg);
}
.wava-sites__btn:hover .wava-sites__ring--bottom,
.wava-sites__btn[aria-expanded="true"] .wava-sites__ring--bottom {
    transform: translateY(42px) rotate(17deg);
}
@media (prefers-reduced-motion: reduce) {
    .wava-sites__ring { transition: none; }
}
.feature.js-cases-item,
.feature__video-item { cursor: pointer; }
.popup__close-btn {
    background-color: #00fb96;
    border-color: #00fb96;
}
.popup__close-btn img {
    filter: brightness(0);
}
.wava-site-name {
    position: relative;
    color: inherit;
    text-decoration: none;
    pointer-events: none;
}
.wava-site-name.is-marked {
    pointer-events: auto;
}
.wava-site-name.is-marked::after {
    content: "";
    position: absolute;
    left: -2px;
    right: -6px;
    bottom: -5px;
    height: 7px;
    background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 140 8' preserveAspectRatio='none'><path d='M1 5 C 16 1, 34 7, 58 3 S 96 1, 139 5' fill='none' stroke='%23e10600' stroke-width='2.4' stroke-linecap='round'/></svg>") center / 100% 100% no-repeat;
}
.wava-partner-marquee {
    display: block;
    overflow: hidden;
    width: 100%;
    margin: 0;
    padding: 16px 0;
    background: #000;
    font-family: var(--font-title), Arial, sans-serif;
    font-size: clamp(22px, 3.4vw, 52px);
    font-weight: 700;
    line-height: 1;
    letter-spacing: -0.03em;
    text-transform: uppercase;
    color: #fff;
    white-space: nowrap;
    opacity: 1;
    transform: none;
}
.wava-partner-track {
    display: flex;
    width: max-content;
    animation: wava-partners-roll 70s linear infinite;
}
.wava-partner-set {
    display: flex;
    align-items: center;
    gap: 0.55em;
    padding-right: 0.55em;
}
.wava-partner-set span {
    display: inline-block;
    white-space: nowrap;
}
.wava-partner-set span + span::before {
    content: "·";
    margin-right: 0.55em;
    opacity: 0.35;
}
@keyframes wava-partners-roll {
    from { transform: translateX(0); }
    to { transform: translateX(-50%); }
}
@media (prefers-reduced-motion: reduce) {
    .wava-partner-track { animation: none; }
}
.wava-houses {
    background: #fff;
    padding: 28px 8px 10px;
    box-sizing: border-box;
}
.wava-houses,
.wava-houses * { box-sizing: border-box; }
.wava-houses__grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 8px;
    width: 100%;
    max-width: none;
    margin: 0;
}
.wava-house {
    position: relative;
    display: block;
    overflow: hidden;
    aspect-ratio: 3 / 4;
    border-radius: 16px;
    background: #1c1c1c;
    color: #fff;
    text-decoration: none;
    isolation: isolate;
}
.wava-house__photo {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    max-width: none;
    object-fit: cover;
    display: block;
}
.wava-house__veil {
    position: absolute;
    inset: 0;
    background: linear-gradient(to top, rgba(0,0,0,.72) 0%, rgba(0,0,0,.18) 42%, rgba(0,0,0,.28) 100%);
    transition: background .35s ease;
}
.wava-house:hover .wava-house__veil,
.wava-house:focus-visible .wava-house__veil {
    background: linear-gradient(to top, rgba(0,0,0,.88) 0%, rgba(0,0,0,.45) 48%, rgba(0,0,0,.4) 100%);
}
.wava-house__logo {
    position: absolute;
    left: 50%;
    top: 40%;
    width: 74%;
    height: auto;
    max-width: none;
    max-height: none;
    object-fit: contain;
    padding: 14px 16px;
    border-radius: 14px;
    background: rgba(0,0,0,.62);
    box-shadow: 0 12px 28px rgba(0,0,0,.35);
    transform: translate(-50%, -50%);
    pointer-events: none;
    transition: transform .35s ease;
    z-index: 1;
    mix-blend-mode: normal;
}
.wava-house:hover .wava-house__logo,
.wava-house:focus-visible .wava-house__logo {
    transform: translate(-50%, -64%);
}
.wava-house__logo--ink {
    background: #fff;
}
.wava-house__about {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 2;
    padding: 22px 18px 20px;
    opacity: 0;
    transform: translateY(10px);
    transition: opacity .35s ease, transform .35s ease;
}
.wava-house:hover .wava-house__about,
.wava-house:focus-visible .wava-house__about {
    opacity: 1;
    transform: none;
}
.wava-house__about span {
    display: block;
    font-family: var(--font-text), Helvetica, Arial, sans-serif;
    font-size: 15px;
    font-weight: 400;
    line-height: 1.35;
    letter-spacing: 0;
    text-transform: none;
    color: #fff;
}
@media (max-width: 800px) {
    .wava-houses__grid { grid-template-columns: 1fr; max-width: 420px; }
    .wava-house { aspect-ratio: 4 / 5; }
}

.wava-load .loader__line {
    height: 0;
    background: transparent;
    overflow: hidden;
}
.wava-load .loader__text {
    opacity: 0;
}
.wava-load__stage {
    position: absolute;
    inset: 0;
    z-index: 6;
    background: #000;
    color: #fff;
    pointer-events: none;
    transition: background-color .55s ease, opacity .4s ease;
}
.wava-load__stage.is-out { opacity: 0; }
.wava-load__stage.is-hand { background-color: transparent; }
.wava-load__stage.is-hand .wava-load__grid,
.wava-load__stage.is-hand .wava-load__reg,
.wava-load__stage.is-hand .wava-load__mira,
.wava-load__stage.is-hand .wava-load__log {
    opacity: 0;
    transition: opacity .4s ease;
}
.wava-load__stage.is-hand .wava-cup {
    animation: none;
    top: 48.52%;
    width: min(30.21vw, 53.7vh);
    height: min(30.21vw, 53.7vh);
    transform: translate(-50%, -50%);
    opacity: 0;
    transition:
        width .85s cubic-bezier(.65, 0, .35, 1),
        height .85s cubic-bezier(.65, 0, .35, 1),
        top .85s cubic-bezier(.65, 0, .35, 1),
        transform .85s cubic-bezier(.65, 0, .35, 1),
        opacity .35s .55s ease;
}
.wava-load__stage.is-hand .wava-cup__badge {
    animation: none;
    width: 100%;
    height: 100%;
    border-radius: 50%;
    transition: border-radius .85s cubic-bezier(.65, 0, .35, 1);
}
.wava-load__stage.is-hand .wava-cup__badge::before,
.wava-load__stage.is-hand .wava-cup__icon,
.wava-load__stage.is-hand .wava-cup__star {
    opacity: 0;
    animation: none;
    transform: none;
    transition: opacity .28s ease;
}
.wava-load__grid {
    position: absolute;
    inset: 0;
    background-image:
        linear-gradient(rgba(255,255,255,.16) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255,255,255,.16) 1px, transparent 1px);
    background-size: 72px 72px;
    mask-image: radial-gradient(circle at center, #000 20%, transparent 78%);
}
.wava-load__grid::after {
    content: "";
    position: absolute;
    inset: 0;
    opacity: .35;
    background: repeating-linear-gradient(transparent 0 3px, rgba(0,0,0,.55) 3px 4px);
}
.wava-load__reg span {
    position: absolute;
    width: 18px;
    height: 18px;
}
.wava-load__reg span::before,
.wava-load__reg span::after {
    content: "";
    position: absolute;
    background: #fff;
}
.wava-load__reg span::before { left: 50%; top: 0; bottom: 0; width: 1px; margin-left: -0.5px; }
.wava-load__reg span::after { top: 50%; left: 0; right: 0; height: 1px; margin-top: -0.5px; }
.wava-load__reg span:nth-child(1) { top: 22%; left: 8%; }
.wava-load__reg span:nth-child(2) { top: 22%; right: 8%; }
.wava-load__reg span:nth-child(3) { bottom: 18%; left: 8%; }
.wava-load__reg span:nth-child(4) { bottom: 18%; right: 8%; }
.wava-load__mira {
    position: absolute;
    width: 52px;
    height: 52px;
    color: #fff;
    overflow: visible;
}
.wava-load__mira.c1 { top: 22px; left: 22px; }
.wava-load__mira.c2 { top: 22px; right: 22px; }
.wava-load__mira.c3 { bottom: 22px; left: 22px; }
.wava-load__mira.c4 { bottom: 22px; right: 22px; }
.wava-load__mira .ring,
.wava-load__mira .arms { fill: none; stroke: currentColor; }
.wava-load__mira .ring { stroke-width: .7; stroke-dasharray: 1.6 2.4; transform-origin: 12px 12px; animation: wava-mira-spin 7s linear infinite; }
.wava-load__mira .arms { stroke-width: 1.7; stroke-linecap: round; transform-box: fill-box; transform-origin: center; animation: wava-plusx 2.6s cubic-bezier(.65,0,.35,1) infinite; }
.wava-load__mira.c2 .arms,
.wava-load__mira.c3 .arms { animation-delay: -1.3s; }
@keyframes wava-mira-spin { to { transform: rotate(1turn); } }
@keyframes wava-plusx { 0%,16% { transform: rotate(0deg); } 40%,64% { transform: rotate(45deg); } 100% { transform: rotate(90deg); } }
.wava-load__log {
    position: absolute;
    top: 88px;
    left: 88px;
    margin: 0;
    max-width: min(70vw, 640px);
    font-family: Consolas, "Courier New", monospace;
    font-size: clamp(18px, 2.4vw, 34px);
    line-height: 1.35;
    letter-spacing: .04em;
    color: #fff;
    white-space: pre-wrap;
    text-transform: none;
}
.wava-bat {
    --higru: #000;
    position: absolute;
    left: 50%;
    top: 54%;
    width: min(86vmin, 920px);
    height: min(86vmin, 920px);
    transform: translate(-50%, -50%);
    transform-origin: 50% 50%;
    overflow: visible;
    transition: opacity .35s ease;
}
.wava-bat.is-done { opacity: 0; }
.wava-bat .ci1,
.wava-bat .ci2 {
    fill: var(--higru);
    transform-box: fill-box;
    transform-origin: 50% 50%;
}
.wava-bat .ci1 { animation: wava-bat-big 3s infinite -1.5s; }
.wava-bat .ci2 { animation: wava-bat-big2 3s infinite; }
.wava-bat .ciw {
    transform-box: fill-box;
    transform-origin: 50% 50%;
    animation: wava-bat-breath 3s infinite;
}
.wava-bat .points {
    transform-box: fill-box;
    transform-origin: 50% 50%;
    animation: wava-bat-rot 3s infinite;
}
@keyframes wava-bat-rot {
    0% { transform: rotate(0deg); }
    30% { transform: rotate(360deg); }
    50% { transform: rotate(360deg); }
    80% { transform: rotate(0deg); }
    100% { transform: rotate(0deg); }
}
@keyframes wava-bat-big {
    0%, 30% { transform: scale(1) translateX(0); }
    50%, 80% { transform: scale(10) translateX(-4.5px); }
    100% { transform: scale(1) translateX(0); }
}
@keyframes wava-bat-big2 {
    0%, 30% { transform: scale(1) translateX(0); }
    50%, 80% { transform: scale(10) translateX(4.5px); }
    100% { transform: scale(1) translateX(0); }
}
@keyframes wava-bat-breath {
    15% { transform: scale(1); }
    40% { transform: scale(1.1); }
    65% { transform: scale(1); }
    90% { transform: scale(1.1); }
}
.wava-cup {
    position: absolute;
    left: 50%;
    top: 54%;
    width: 150px;
    height: 150px;
    margin: 0;
    transform: translate(-50%, -50%) scale(.2);
    opacity: 0;
    color: #fff;
    pointer-events: none;
}
.wava-cup.is-in {
    animation: wava-cup-in .7s cubic-bezier(.2,.8,.2,1) forwards;
}
@keyframes wava-cup-in {
    to { opacity: 1; transform: translate(-50%, -50%) scale(1); }
}
.wava-cup__icon {
    position: absolute;
    left: 50%;
    top: 46%;
    width: 78px;
    height: 78px;
    margin: -39px 0 0 -39px;
    fill: #000;
    z-index: 2;
    opacity: 0;
}
.wava-cup__star { position: absolute; inset: 0; }
.wava-cup__badge {
    background: #fff;
    width: 150px;
    height: 150px;
    position: relative;
    animation: wava-cup-rot 3s infinite;
}
.wava-cup__badge::before {
    content: "";
    position: absolute;
    inset: 0;
    background: #fff;
    transform: rotate(135deg);
}
.wava-cup.is-won .wava-cup__star {
    transform: rotateX(70deg) translateY(90px);
    transition: transform .7s ease-in-out;
}
.wava-cup.is-won .wava-cup__icon {
    opacity: 1;
    animation: wava-cup-grow 1s linear infinite;
}
@keyframes wava-cup-rot {
    0% { transform: rotate(0deg); }
    50% { transform: rotate(340deg); }
    100% { transform: rotate(0deg); }
}
@keyframes wava-cup-grow {
    0% { transform: rotate(0deg); }
    25% { transform: rotate(-5deg); }
    75% { transform: rotate(5deg); }
    100% { transform: scale(1) rotate(0deg); }
}
.cta__arcs .cta__dot {
    width: 100%;
    background: none;
}
.cta__arcs .cta__dot::before {
    content: "";
    position: absolute;
    left: 50%;
    top: 50%;
    width: var(--d);
    height: var(--d);
    margin: calc(var(--d) / -2) 0 0 calc(var(--d) / -2);
    border-radius: 50%;
    background: #fff;
}
.cta__arcs .cta__dot:nth-child(1) { --d: 56px; }
.cta__arcs .cta__dot:nth-child(2) { --d: 40px; }
.cta__arcs .cta__dot:nth-child(3) { --d: 26px; }
.cta__arcs .cta__dot:nth-child(4) { --d: 16px; }
@media (prefers-reduced-motion: reduce) {
    .wava-load__mira .ring,
    .wava-load__mira .arms,
    .wava-bat .ci1,
    .wava-bat .ci2,
    .wava-bat .ciw,
    .wava-bat .points,
    .wava-cup__badge,
    .wava-cup.is-won .wava-cup__icon { animation: none; }
}
.cases__asset .case__video.wava-focus-right { object-position: 88% center; }
.cases__asset .case__video.wava-focus-left { object-position: 8% center; }
.aims__bg::before {
    content: "";
    position: absolute;
    z-index: 3;
    left: 0;
    right: 0;
    top: -14vh;
    height: 48vh;
    pointer-events: none;
    background: linear-gradient(
        to bottom,
        #fff 0%,
        rgba(255, 255, 255, 0.92) 28%,
        rgba(255, 255, 255, 0.45) 58%,
        rgba(255, 255, 255, 0) 100%
    );
    -webkit-backdrop-filter: blur(20px);
    backdrop-filter: blur(20px);
    -webkit-mask-image: linear-gradient(to bottom, #000 0%, #000 34%, transparent 100%);
    mask-image: linear-gradient(to bottom, #000 0%, #000 34%, transparent 100%);
}
.aims::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    background: linear-gradient(
        to bottom,
        rgba(0, 0, 0, 0) 0%,
        rgba(0, 0, 0, 0) 46%,
        #000 60%,
        #2c2c2c 74%,
        #bdbdbd 88%,
        #fff 100%
    );
}
.aims__loader {
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: visible;
    position: relative;
    z-index: 2;
}
.aims__loader .uiv-loader {
    --duration: 3s;
    --primary: #f4f4f4;
    --primary-light: #ffffff;
    --primary-rgba: rgba(255, 255, 255, 0);
    width: 200px;
    height: 320px;
    position: relative;
    transform-style: preserve-3d;
    transform: scale(1.2);
    flex: none;
}
.aims__loader .uiv-loader:before,
.aims__loader .uiv-loader:after {
    --r: 20.5deg;
    content: "";
    width: 320px;
    height: 140px;
    position: absolute;
    right: 32%;
    bottom: -11px;
    background: linear-gradient(to bottom, rgba(0,0,0,0) 0%, rgba(90,90,90,.18) 42%, rgba(160,160,160,.45) 100%);
    filter: blur(16px);
    transform: translateZ(200px) rotate(var(--r));
    animation: uiv-mask var(--duration) ease-in-out forwards infinite;
}
.aims__loader .uiv-loader:after {
    --r: -20.5deg;
    right: auto;
    left: 32%;
}
.aims__loader .uiv-loader .ground {
    position: absolute;
    left: -50px;
    bottom: -120px;
    transform-style: preserve-3d;
    transform: rotateY(-47deg) rotateX(-15deg) rotateZ(15deg) scale(1);
}
.aims__loader .uiv-loader .ground div {
    width: 200px;
    height: 200px;
    background: linear-gradient(45deg, var(--primary) 0%, var(--primary) 50%, var(--primary-light) 50%, var(--primary-light) 100%);
    transform-style: preserve-3d;
    transform: rotateX(90deg) rotateY(0deg) translate(-48px, -120px) translateZ(100px) scale(0);
    animation: uiv-ground var(--duration) linear forwards infinite;
}
.aims__loader .uiv-loader .ground div:before,
.aims__loader .uiv-loader .ground div:after {
    --rx: 90deg;
    --ry: 0deg;
    --x: 44px;
    --y: 162px;
    --z: -50px;
    content: "";
    width: 156px;
    height: 300px;
    opacity: 0;
    background: linear-gradient(var(--primary), var(--primary-rgba));
    position: absolute;
    transform: rotateX(var(--rx)) rotateY(var(--ry)) translate(var(--x), var(--y)) translateZ(var(--z));
    animation: uiv-shine var(--duration) linear forwards infinite;
}
.aims__loader .uiv-loader .ground div:after {
    --rx: 90deg;
    --ry: 90deg;
    --x: 0;
    --y: 177px;
    --z: 150px;
}
.aims__loader .uiv-loader .box {
    --x: 0;
    --y: 0;
    position: absolute;
    animation: var(--duration) cubic-bezier(.4, .05, .2, 1) forwards infinite;
    transform: translate(var(--x), var(--y));
}
.aims__loader .uiv-loader .box div {
    background-color: var(--primary);
    width: 48px;
    height: 48px;
    position: relative;
    transform-style: preserve-3d;
    animation: var(--duration) cubic-bezier(.33, .08, .2, 1) forwards infinite;
    transform: rotateY(-47deg) rotateX(-15deg) rotateZ(15deg) scale(0);
}
.aims__loader .uiv-loader .box div:before,
.aims__loader .uiv-loader .box div:after {
    --rx: 90deg;
    --ry: 0deg;
    --z: 24px;
    --y: -24px;
    --x: 0;
    content: "";
    position: absolute;
    background-color: inherit;
    width: inherit;
    height: inherit;
    transform: rotateX(var(--rx)) rotateY(var(--ry)) translate(var(--x), var(--y)) translateZ(var(--z));
    filter: brightness(var(--b, 1.12));
}
.aims__loader .uiv-loader .box div:after {
    --rx: 0deg;
    --ry: 90deg;
    --x: 24px;
    --y: 0;
    --b: 1.28;
}
.aims__loader .uiv-loader .box.box0 { --x: -220px; --y: -120px; left: 58px; top: 108px; }
.aims__loader .uiv-loader .box.box1 { --x: -260px; --y: 120px; left: 25px; top: 120px; }
.aims__loader .uiv-loader .box.box2 { --x: 120px; --y: -190px; left: 58px; top: 64px; }
.aims__loader .uiv-loader .box.box3 { --x: 280px; --y: -40px; left: 91px; top: 120px; }
.aims__loader .uiv-loader .box.box4 { --x: 60px; --y: 200px; left: 58px; top: 132px; }
.aims__loader .uiv-loader .box.box5 { --x: -220px; --y: -120px; left: 25px; top: 76px; }
.aims__loader .uiv-loader .box.box6 { --x: -260px; --y: 120px; left: 91px; top: 76px; }
.aims__loader .uiv-loader .box.box7 { --x: -240px; --y: 200px; left: 58px; top: 87px; }
.aims__loader .uiv-loader .box0 { animation-name: uiv-move0; }
.aims__loader .uiv-loader .box0 div { animation-name: uiv-scale0; }
.aims__loader .uiv-loader .box1 { animation-name: uiv-move1; }
.aims__loader .uiv-loader .box1 div { animation-name: uiv-scale1; }
.aims__loader .uiv-loader .box2 { animation-name: uiv-move2; }
.aims__loader .uiv-loader .box2 div { animation-name: uiv-scale2; }
.aims__loader .uiv-loader .box3 { animation-name: uiv-move3; }
.aims__loader .uiv-loader .box3 div { animation-name: uiv-scale3; }
.aims__loader .uiv-loader .box4 { animation-name: uiv-move4; }
.aims__loader .uiv-loader .box4 div { animation-name: uiv-scale4; }
.aims__loader .uiv-loader .box5 { animation-name: uiv-move5; }
.aims__loader .uiv-loader .box5 div { animation-name: uiv-scale5; }
.aims__loader .uiv-loader .box6 { animation-name: uiv-move6; }
.aims__loader .uiv-loader .box6 div { animation-name: uiv-scale6; }
.aims__loader .uiv-loader .box7 { animation-name: uiv-move7; }
.aims__loader .uiv-loader .box7 div { animation-name: uiv-scale7; }
@keyframes uiv-move0 { 12% { transform: translate(var(--x), var(--y)); } 28%, 58% { transform: translate(0, 0); } 74% { transform: translate(0, -18px); } 88% { transform: translate(0, 48px); } 100% { transform: translate(0, 150px); } }
@keyframes uiv-scale0 { 4% { transform: rotateY(-47deg) rotateX(-15deg) rotateZ(15deg) scale(0); opacity: 0; } 12% { transform: rotateY(-47deg) rotateX(-15deg) rotateZ(15deg) scale(.4); opacity: 1; } 24%, 76% { transform: rotateY(-47deg) rotateX(-15deg) rotateZ(15deg) scale(1); opacity: 1; } 100% { transform: rotateY(-47deg) rotateX(-15deg) rotateZ(15deg) scale(.86); opacity: 0; } }
@keyframes uiv-move1 { 16% { transform: translate(var(--x), var(--y)); } 32%, 58% { transform: translate(0, 0); } 74% { transform: translate(0, -18px); } 88% { transform: translate(0, 48px); } 100% { transform: translate(0, 150px); } }
@keyframes uiv-scale1 { 8% { transform: rotateY(-47deg) rotateX(-15deg) rotateZ(15deg) scale(0); opacity: 0; } 16% { transform: rotateY(-47deg) rotateX(-15deg) rotateZ(15deg) scale(.4); opacity: 1; } 28%, 76% { transform: rotateY(-47deg) rotateX(-15deg) rotateZ(15deg) scale(1); opacity: 1; } 100% { transform: rotateY(-47deg) rotateX(-15deg) rotateZ(15deg) scale(.86); opacity: 0; } }
@keyframes uiv-move2 { 20% { transform: translate(var(--x), var(--y)); } 36%, 58% { transform: translate(0, 0); } 74% { transform: translate(0, -18px); } 88% { transform: translate(0, 48px); } 100% { transform: translate(0, 150px); } }
@keyframes uiv-scale2 { 12% { transform: rotateY(-47deg) rotateX(-15deg) rotateZ(15deg) scale(0); opacity: 0; } 20% { transform: rotateY(-47deg) rotateX(-15deg) rotateZ(15deg) scale(.4); opacity: 1; } 32%, 76% { transform: rotateY(-47deg) rotateX(-15deg) rotateZ(15deg) scale(1); opacity: 1; } 100% { transform: rotateY(-47deg) rotateX(-15deg) rotateZ(15deg) scale(.86); opacity: 0; } }
@keyframes uiv-move3 { 24% { transform: translate(var(--x), var(--y)); } 40%, 58% { transform: translate(0, 0); } 74% { transform: translate(0, -18px); } 88% { transform: translate(0, 48px); } 100% { transform: translate(0, 150px); } }
@keyframes uiv-scale3 { 16% { transform: rotateY(-47deg) rotateX(-15deg) rotateZ(15deg) scale(0); opacity: 0; } 24% { transform: rotateY(-47deg) rotateX(-15deg) rotateZ(15deg) scale(.4); opacity: 1; } 36%, 76% { transform: rotateY(-47deg) rotateX(-15deg) rotateZ(15deg) scale(1); opacity: 1; } 100% { transform: rotateY(-47deg) rotateX(-15deg) rotateZ(15deg) scale(.86); opacity: 0; } }
@keyframes uiv-move4 { 28% { transform: translate(var(--x), var(--y)); } 44%, 58% { transform: translate(0, 0); } 74% { transform: translate(0, -18px); } 88% { transform: translate(0, 48px); } 100% { transform: translate(0, 150px); } }
@keyframes uiv-scale4 { 20% { transform: rotateY(-47deg) rotateX(-15deg) rotateZ(15deg) scale(0); opacity: 0; } 28% { transform: rotateY(-47deg) rotateX(-15deg) rotateZ(15deg) scale(.4); opacity: 1; } 40%, 76% { transform: rotateY(-47deg) rotateX(-15deg) rotateZ(15deg) scale(1); opacity: 1; } 100% { transform: rotateY(-47deg) rotateX(-15deg) rotateZ(15deg) scale(.86); opacity: 0; } }
@keyframes uiv-move5 { 32% { transform: translate(var(--x), var(--y)); } 48%, 58% { transform: translate(0, 0); } 74% { transform: translate(0, -18px); } 88% { transform: translate(0, 48px); } 100% { transform: translate(0, 150px); } }
@keyframes uiv-scale5 { 24% { transform: rotateY(-47deg) rotateX(-15deg) rotateZ(15deg) scale(0); opacity: 0; } 32% { transform: rotateY(-47deg) rotateX(-15deg) rotateZ(15deg) scale(.4); opacity: 1; } 44%, 76% { transform: rotateY(-47deg) rotateX(-15deg) rotateZ(15deg) scale(1); opacity: 1; } 100% { transform: rotateY(-47deg) rotateX(-15deg) rotateZ(15deg) scale(.86); opacity: 0; } }
@keyframes uiv-move6 { 36% { transform: translate(var(--x), var(--y)); } 52%, 58% { transform: translate(0, 0); } 74% { transform: translate(0, -18px); } 88% { transform: translate(0, 48px); } 100% { transform: translate(0, 150px); } }
@keyframes uiv-scale6 { 28% { transform: rotateY(-47deg) rotateX(-15deg) rotateZ(15deg) scale(0); opacity: 0; } 36% { transform: rotateY(-47deg) rotateX(-15deg) rotateZ(15deg) scale(.4); opacity: 1; } 48%, 76% { transform: rotateY(-47deg) rotateX(-15deg) rotateZ(15deg) scale(1); opacity: 1; } 100% { transform: rotateY(-47deg) rotateX(-15deg) rotateZ(15deg) scale(.86); opacity: 0; } }
@keyframes uiv-move7 { 40% { transform: translate(var(--x), var(--y)); } 56% { transform: translate(0, 0); } 74% { transform: translate(0, -18px); } 88% { transform: translate(0, 48px); } 100% { transform: translate(0, 150px); } }
@keyframes uiv-scale7 { 32% { transform: rotateY(-47deg) rotateX(-15deg) rotateZ(15deg) scale(0); opacity: 0; } 40% { transform: rotateY(-47deg) rotateX(-15deg) rotateZ(15deg) scale(.4); opacity: 1; } 52%, 76% { transform: rotateY(-47deg) rotateX(-15deg) rotateZ(15deg) scale(1); opacity: 1; } 100% { transform: rotateY(-47deg) rotateX(-15deg) rotateZ(15deg) scale(.86); opacity: 0; } }
@keyframes uiv-ground {
    0%, 65% { transform: rotateX(90deg) rotateY(0deg) translate(-48px, -120px) translateZ(100px) scale(0); }
    75%, 90% { transform: rotateX(90deg) rotateY(0deg) translate(-48px, -120px) translateZ(100px) scale(1); }
    100% { transform: rotateX(90deg) rotateY(0deg) translate(-48px, -120px) translateZ(100px) scale(0); }
}
@keyframes uiv-shine { 0%, 70% { opacity: 0; } 75%, 87% { opacity: .35; } 100% { opacity: 0; } }
@keyframes uiv-mask { 0%, 48% { opacity: 0; } 68% { opacity: .35; } 84% { opacity: .6; } 100% { opacity: .45; } }
@media (max-width: 767px) {
    .aims__loader .uiv-loader { transform: scale(.78); }
}
.wava-beam {
    position: relative;
    width: 100%;
    max-width: 100%;
    min-width: 0;
    margin: 0 auto;
    min-height: 1.4em;
}
.wava-beam__ghost,
.wava-beam__lit {
    margin: 0;
    font-family: var(--font-typewriter);
    font-size: clamp(0.72rem, 2.2vw, 2.55rem);
    font-weight: 500;
    line-height: 1.15;
    letter-spacing: -0.03em;
    text-align: center;
    white-space: nowrap;
}
.wava-beam__ghost { color: #b5b5b5; }
.wava-beam.is-scrambling .wava-beam__ghost {
    background-image: linear-gradient(90deg, #9a9a9a, #00fb96, #111, #00fb96, #9a9a9a);
    background-size: 240% 100%;
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    animation: wava-ascii-morph 0.65s linear infinite;
}
.wava-beam.is-scrambling .wava-beam__lit {
    color: #00fb96;
    animation: wava-ascii-lit 0.4s ease-in-out infinite alternate;
}
@keyframes wava-ascii-morph {
    to { background-position: 100% 0; }
}
@keyframes wava-ascii-lit {
    from { color: #111; }
    to { color: #00fb96; }
}
@media (prefers-reduced-motion: reduce) {
    .wava-beam.is-scrambling .wava-beam__ghost,
    .wava-beam.is-scrambling .wava-beam__lit { animation: none; }
}
.wava-beam__lit {
    position: absolute;
    inset: 0;
    color: #111;
    -webkit-mask-image: linear-gradient(90deg, transparent 0%, #000 16%, #000 84%, transparent 100%);
    mask-image: linear-gradient(90deg, transparent 0%, #000 16%, #000 84%, transparent 100%);
    -webkit-mask-size: 22% 100%;
    mask-size: 22% 100%;
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-position: var(--x, 46%) center;
    mask-position: var(--x, 46%) center;
}
@media (max-width: 767px) {
    .wava-beam__ghost,
    .wava-beam__lit { font-size: clamp(0.72rem, 3.3vw, 1.12rem); }
    .wava-beam__lit {
        -webkit-mask-size: 46% 100%;
        mask-size: 46% 100%;
    }
}
html.wava-skip-intro .loader,
html.wava-skip-intro .wava-load {
    display: none !important;
}
html.wava-skip-intro body.loading {
    max-height: none;
    overflow: visible;
}
html.wava-skip-intro #content {
    background-color: #fff;
}
html.wava-skip-intro .header {
    opacity: 1;
}
html.wava-skip-intro body {
    visibility: hidden;
}
html.wava-skip-intro.wava-place-ready body {
    visibility: visible;
}


/* Website selection: keep the orbital control, reveal an editorial link list. */
.wava-sites { display:grid; grid-template-columns:minmax(280px,.85fr) minmax(0,1.15fr); align-items:start; gap:clamp(24px,4vw,80px); margin-top:40px; }
.wava-sites__btn { width:100%; max-width:620px; }
.wava-sites__reveal { display:grid; grid-template-rows:0fr; opacity:0; transform:translateY(20px); transition:grid-template-rows .65s cubic-bezier(.22,1,.36,1),opacity .45s,transform .65s cubic-bezier(.22,1,.36,1); }
.wava-sites.is-open .wava-sites__reveal { grid-template-rows:1fr; opacity:1; transform:none; }
.wava-sites__clip { overflow:hidden; min-height:0; }
.wava-sites__selection { padding:20px 2px 8px; color:#111; }
.wava-sites__eyebrow,.wava-sites__project small,.wava-sites__visit { font-family:var(--font-typewriter); font-size:12px; letter-spacing:.04em; }
.wava-sites__eyebrow { margin:0 0 16px; }
.wava-sites__heading { margin:0 0 14px; font-family:var(--font-title); font-size:clamp(28px,3vw,48px); line-height:1.05; letter-spacing:-.04em; }
.wava-sites__intro { margin:0 0 28px; font-size:16px; line-height:1.5; }
.wava-sites__project { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:22px 0; border-top:1px solid #bbb; color:inherit; text-decoration:none; transition:padding .35s,background-color .35s; }
.wava-sites__project small { display:block; margin-bottom:8px; }
.wava-sites__project strong { font-family:var(--font-title); font-size:clamp(23px,2.2vw,34px); font-weight:500; letter-spacing:-.03em; }
.wava-sites__visit { white-space:nowrap; }
.wava-sites__visit > span { display:inline-block; margin-left:8px; font-size:25px; transition:transform .35s; }
.wava-sites__project:hover { padding-left:12px; padding-right:12px; background:#f1f1ed; }
.wava-sites__project:hover .wava-sites__visit > span { transform:translate(3px,-3px); }
.wava-sites__next { display:flex; flex-wrap:wrap; justify-content:space-between; gap:16px; padding:24px 0 8px; border-top:1px solid #111; font-size:14px; line-height:1.5; }
.wava-sites__next a { color:inherit; text-decoration:underline; text-underline-offset:5px; }
.wava-sites__btn:focus-visible,.wava-sites__project:focus-visible,.wava-sites__next a:focus-visible { outline:2px solid #111; outline-offset:5px; }
.partners__list li { transition:opacity .5s; }
.partners.is-showing-sites .partners__list li:not(:has(.wava-site-name, .wava-site-planned)) { opacity:.4; }
.wava-site-name { pointer-events:auto; }
.wava-site-name.is-marked { font-weight:700; }
.wava-site-name.is-marked::after { height:1px; left:0; right:0; bottom:-3px; background:#111; transform-origin:left; animation:wava-site-underline .7s cubic-bezier(.22,1,.36,1) both; }
.wava-sites.is-open .wava-sites__project { animation:wava-site-enter .7s cubic-bezier(.22,1,.36,1) both; }
.wava-sites.is-open .wava-sites__project:nth-of-type(2) { animation-delay:.12s; }
.wava-sites__star { transition:transform .7s; }
.wava-sites.is-open .wava-sites__star { transform:rotate(135deg); }
.wava-sites__sr { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
@keyframes wava-site-enter { from { opacity:0; transform:translateY(18px); } to { opacity:1; transform:none; } }
@keyframes wava-site-underline { from { transform:scaleX(0); } to { transform:scaleX(1); } }
@media(max-width:767px) { .wava-sites { grid-template-columns:1fr; gap:0; margin-top:24px; } .wava-sites__btn { max-width:390px; justify-self:center; } .wava-sites__selection { padding-top:12px; } }
@media(prefers-reduced-motion:reduce) { .wava-sites *, .partners__list li, .wava-site-name::after { animation:none!important; transition:none!important; } }

.wava-sites__planned { display:flex; justify-content:space-between; flex-wrap:wrap; gap:12px; border-top:1px solid #bbb; padding:20px 0; font-size:17px; }
.wava-sites__planned small { font-family:var(--font-typewriter); font-size:12px; text-transform:uppercase; align-self:center; }
.partners.is-showing-sites .wava-site-planned { font-weight:700; border-bottom:1px dashed currentColor; }

.wava-sites.is-open .wava-sites__project:nth-of-type(3) { animation-delay:.24s; }

.wava-tour-caption { color:#fff; font-family:var(--font-typewriter); font-size:13px; line-height:1.5; padding:12px 0 20px; }

.wava-case-story h4 { font-family:var(--font-typewriter); font-size:11px; text-transform:uppercase; letter-spacing:.1em; margin:0 0 9px; color:#bdbdbd; line-height:1.4; }
.wava-case-story p { margin:0 0 22px; line-height:1.45; }
.wava-case-story p:last-child { margin-bottom:0; }

.wava-client-filter { appearance:none; border:0; background:transparent; font:inherit; color:inherit; text-align:left; cursor:pointer; padding:6px 0; line-height:1.2; transition:opacity .2s; }
.wava-client-filter[aria-pressed="false"] { opacity:.5; }
.wava-client-filter:hover,.wava-client-filter[aria-pressed="true"] { opacity:1; }
.wava-client-filter[aria-pressed="true"] { text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:7px; }
.wava-client-filter:focus-visible { outline:2px solid currentColor; outline-offset:5px; }
.wava-filter-count { font-size:.7em; }
.partners__wrapper:has(.wava-client-list) { display:block; flex:1; min-width:0; }
.wava-client-list { display:grid!important; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px 28px; width:100%; }
.wava-client-list > li { min-width:0; overflow-wrap:anywhere; line-height:1.5; }
.wava-client-list > li[hidden] { display:none!important; }
@media(max-width:767px) { .wava-client-filters { display:flex!important; flex-wrap:wrap; gap:8px 20px; margin-bottom:28px; } .wava-client-filter { font-size:19px; } .wava-client-list { grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px 20px; } }

/* Fixed invitation, cascading service lettering. */
.cta__text > .wava-service-question { display:flex; justify-content:center; align-items:baseline; gap:.24em; width:100%; font-size:clamp(26px,4.2vw,80px); line-height:1.4; overflow:visible; }
.wava-service-prefix { flex:none; white-space:nowrap; }
.wava-service-question .wava-service-words { display:grid; text-align:left; overflow:visible; padding:.2em 0; }
.wava-service-question .wava-service-word { display:block; grid-area:1 / 1; white-space:nowrap; line-height:1.4; visibility:hidden; pointer-events:none; }
.wava-service-question .wava-service-word.is-current,.wava-service-question .wava-service-word.is-leaving { visibility:visible; }
.wava-service-letter { display:inline-block; background:linear-gradient(180deg,#a3ffcd 0%,#00ed96 45%,#00ac6b 100%); background-clip:text; -webkit-background-clip:text; }
.is-current.is-entering .wava-service-letter { animation:wava-letter-fall .95s cubic-bezier(.16,1,.3,1) both; animation-delay:calc(var(--letter) * 24ms); }
.is-leaving .wava-service-letter { animation:wava-letter-out .42s ease-in both; animation-delay:calc(var(--letter) * 12ms); }
@keyframes wava-letter-fall { 0% { opacity:0; transform:translateY(-.85em) rotate(-9deg); color:transparent; } 25% { opacity:1; color:transparent; } 68% { color:transparent; } 100% { opacity:1; transform:translateY(0) rotate(0); color:inherit; } }
@keyframes wava-letter-out { 0% { opacity:1; transform:translateY(0); color:inherit; } 35% { color:transparent; } 100% { opacity:0; transform:translateY(.8em) rotate(7deg); color:transparent; } }
@media(max-width:767px) { .cta__text > .wava-service-question { flex-direction:column; align-items:center; gap:0; font-size:clamp(24px,6vw,40px); } .wava-service-question .wava-service-words { text-align:center; } }
@media(prefers-reduced-motion:reduce) { .wava-service-letter { animation:none!important; } }

/* Bring the animated divider closer to the dossier card. */
.features > .lines { margin-top:32px; }

/* Language switcher shares the header without competing with navigation. */
.wava-language { position:relative; margin-left:24px; align-self:flex-start; color:#111; z-index:110; font-family:var(--font-typewriter); }
.wava-language__toggle { display:flex; align-items:center; gap:8px; border:1px solid currentColor; border-radius:24px; padding:7px 11px; background:#fff; color:#111; cursor:pointer; font:inherit; font-size:12px; }
.wava-language__orb { color:#00c980; font-size:20px; line-height:1; }
.wava-language__plus { transition:transform .3s; }
.wava-language__toggle[aria-expanded="true"] .wava-language__plus { transform:rotate(45deg); }
.wava-language__options { position:absolute; right:0; top:calc(100% + 12px); width:220px; padding:10px; background:#fff; color:#111; border:1px solid #ddd; border-radius:16px; box-shadow:0 12px 38px #0002; animation:wava-language-open .24s ease-out; }
.wava-language__options[hidden] { display:none; }
.wava-language__caption { display:block; font-size:10px; text-transform:uppercase; letter-spacing:.08em; padding:8px 10px 12px; color:#666; }
.wava-language__options button { display:flex; justify-content:space-between; align-items:center; width:100%; padding:12px 10px; border:0; border-radius:9px; background:transparent; color:#111; cursor:pointer; font:inherit; font-size:14px; }
.wava-language__options button:hover { background:#eee; }
.wava-language__options button[aria-pressed="true"] { background:#00ed96; }
.wava-language__options small { font-size:10px; }
.wava-language button:focus-visible { outline:2px solid #00ac6b; outline-offset:3px; }
@keyframes wava-language-open { from{opacity:0;transform:translateY(-7px)} to{opacity:1;transform:translateY(0)} }
@media(max-width:767px) { .wava-language { margin-left:auto; margin-right:16px; order:2; } .header__btn-mobile { order:3; } .wava-language__options { width:205px; } }
@media(prefers-reduced-motion:reduce) { .wava-language__options { animation:none; } }

.header:has(.wava-language__toggle[aria-expanded="true"]) { z-index:10001; isolation:isolate; }
/* Keep the language panel opaque above the hero's difference-blended header. */
.header:has(.wava-language__toggle[aria-expanded="true"]) { mix-blend-mode:normal!important; }
.header:has(.wava-language__toggle[aria-expanded="true"]) .header__container { background:#fff; color:#111; }
.header:has(.wava-language__toggle[aria-expanded="true"]) .nav__link { color:#111; }
@media(max-width:767px) { .header:has(.wava-language__toggle[aria-expanded="true"]) .nav__link { color:inherit; } }

.wava-ap3-card { position:relative; aspect-ratio:1; width:100%; overflow:hidden; background:#e7e5de; color:#1b2925; display:flex; flex-direction:column; justify-content:space-between; padding:7%; }
.wava-ap3-grid { position:absolute; inset:0; background-image:linear-gradient(#1b292518 1px,transparent 1px),linear-gradient(90deg,#1b292518 1px,transparent 1px); background-size:20% 20%; transform:scale(1.1); transition:transform 1.2s cubic-bezier(.2,.7,.2,1); }
.wava-ap3-card:hover .wava-ap3-grid { transform:scale(1); }
.wava-ap3-index,.wava-ap3-bottom { position:relative; font-family:var(--font-typewriter); font-size:clamp(10px,1vw,15px); }
.wava-ap3-title { position:relative; align-self:center; font-size:clamp(70px,9vw,180px); letter-spacing:-.08em; line-height:1; transition:transform .8s cubic-bezier(.2,.7,.2,1); }
.wava-ap3-title > span { display:block; font-size:clamp(10px,1vw,16px); letter-spacing:.22em; margin-top:18px; text-align:center; }
.wava-ap3-card:hover .wava-ap3-title { transform:translateY(-8px); }
.wava-ap3-bottom { display:flex; justify-content:space-between; }
.wava-ap3-card--detail { min-height:420px; }
@media(prefers-reduced-motion:reduce) { .wava-ap3-card * { transition:none!important; } }

.wava-ap3-card { background:#fff; }
.wava-ap3-logo { position:relative; align-self:center; width:56%; height:auto; object-fit:contain; transition:transform .8s cubic-bezier(.2,.7,.2,1); }
.wava-pass {
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 10.75rem;
    margin: 0;
    padding: 0;
    border: 0;
    background: none;
    color: inherit;
    cursor: pointer;
    perspective: 900px;
}
.wava-pass__strap {
    display: block;
    width: 1.15rem;
    height: 1.35rem;
    margin-bottom: -0.28rem;
    background: #000;
    color: #fff;
    font-family: var(--font-typewriter);
    font-size: 0.42rem;
    letter-spacing: 0.14em;
    line-height: 1.15rem;
    writing-mode: vertical-rl;
    text-orientation: mixed;
    text-align: center;
}
.wava-pass__card {
    position: relative;
    display: block;
    width: 10.75rem;
    height: 13.75rem;
}
.wava-pass__face {
    position: absolute;
    inset: 0;
    overflow: hidden;
    border-radius: 0.85rem;
    transition: opacity 0.35s ease;
}
.wava-pass__face--back { opacity: 0; }
.wava-pass.is-flipped .wava-pass__face--front { opacity: 0; }
.wava-pass.is-flipped .wava-pass__face--back { opacity: 1; }
.wava-pass__face::before {
    content: "";
    position: absolute;
    z-index: 2;
    top: 0.42rem;
    left: 50%;
    width: 0.48rem;
    height: 0.48rem;
    margin-left: -0.24rem;
    border-radius: 50%;
    background: #111;
    box-shadow: 0 0 0 2px #fff;
}
.wava-pass .team__image {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.wava-pass__face--back {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.35rem;
    padding: 1.35rem 0.55rem 0.7rem;
    text-align: center;
    color: #f2f2f2;
    background: linear-gradient(180deg, #3c3c3c 0%, #1a1a1a 38%, #070707 100%);
}
.wava-pass__logo {
    width: 78%;
    height: auto;
    object-fit: contain;
}
.wava-pass__name {
    font-family: var(--font-title);
    font-size: 0.92rem;
    line-height: 1.05;
}
.wava-pass__role {
    font-family: var(--font-typewriter);
    font-size: 0.58rem;
    line-height: 1.35;
}
.wava-pass:focus-visible { outline: 2px solid #111; outline-offset: 4px; }
@media (prefers-reduced-motion: reduce) {
    .wava-pass__card { transition: none; }
}
.team__slider { max-width: 100%; }
.team__slider .js-team-slider,
.team__slider .team__slider-wrapper {
    width: 100%;
    gap: 0.4rem;
}
.team__slider .team__slide {
    flex: 1 1 0;
    width: auto;
    min-width: 0;
    max-width: none;
}
.wava-lanyard {
    position: relative;
    width: 100%;
    height: clamp(460px, 56vw, 560px);
}
.wava-lanyard canvas,
.lanyard-canvas {
    display: block;
    width: 100%;
    height: 100%;
}
.wava-lanyard__fallback {
    position: absolute;
    left: 14%;
    right: 14%;
    top: 22%;
    bottom: 8%;
    width: auto;
    height: auto;
    object-fit: cover;
    border-radius: 1.15rem;
    pointer-events: none;
}
.wava-lanyard.is-ready .wava-lanyard__fallback { visibility: hidden; }
.team__wrapper { align-items: center; }
.team__credits {
    flex: 0 0 auto;
    width: min(30rem, 38%);
    max-width: 30rem;
    margin: 0;
    transform: none;
}
.team__wrapper > .team__slider {
    flex: 1 1 auto;
    width: auto;
    min-width: 0;
    max-width: none;
}
.team__credits .team__list {
    margin: 4rem 0 0;
    width: auto;
    max-width: none;
    transform: none;
}
.team__credits .team__text {
    margin: 0;
    width: auto;
    max-width: none;
    transform: none;
}
.team__credits .team__text .text {
    width: auto;
    max-width: none;
}
@media (max-width: 768px) {
    .team__credits { width: 100%; max-width: none; }
}
.wava-ap3-card:hover .wava-ap3-logo { transform:translateY(-6px); }

.popup-capabilities.open {
    background: #060010;
}
body.is-popup-open .cursor {
    opacity: 0 !important;
    visibility: hidden !important;
}
.popup-capabilities__body {
    align-items: flex-end;
    justify-content: center;
    min-height: 100%;
    padding: 0 1.25rem 6vh;
}
.wava-doss__wall,
.wava-doss__type,
.wava-doss__veil {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
}
.wava-doss__wall {
    z-index: 0;
    overflow: hidden;
    perspective: 1200px;
    perspective-origin: 50% 50%;
    -webkit-mask-image:
        radial-gradient(ellipse 78% 82% at 50% 46%, #000 40%, transparent 100%),
        linear-gradient(to top, #000 40%, transparent 100%);
    -webkit-mask-composite: source-in;
    mask-image:
        radial-gradient(ellipse 78% 82% at 50% 46%, #000 40%, transparent 100%),
        linear-gradient(to top, #000 40%, transparent 100%);
    mask-composite: intersect;
}
.wava-doss__plane {
    position: absolute;
    top: 50%;
    left: 50%;
    display: flex;
    flex-direction: row;
    transform-style: preserve-3d;
    transform-origin: 50% 50%;
    transform: translate(-50%, -50%) scale(1.18) rotateX(16deg) rotateY(-14deg) translateZ(-120px);
}
.wava-doss__col {
    position: relative;
    width: 218px;
    transform-style: preserve-3d;
}
.wava-doss__track {
    display: flex;
    flex-direction: column;
    transform-style: preserve-3d;
}
.wava-doss__tile {
    position: relative;
    width: 100%;
    height: 150px;
    flex: 0 0 auto;
}
.wava-doss__inner {
    position: absolute;
    inset: 9px;
    overflow: hidden;
    border-radius: 14px;
    background: #0b0b12;
    opacity: 0.55;
}
.wava-doss__inner img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    filter: saturate(0.92);
}
.wava-doss__tile-shade {
    position: absolute;
    inset: 0;
    background: #060010;
    opacity: 0.42;
}
.wava-doss__veil {
    z-index: 1;
    background: linear-gradient(to top, rgba(6, 0, 16, 0.88) 0%, rgba(6, 0, 16, 0.2) 34%, rgba(6, 0, 16, 0.28) 100%);
}
.wava-doss__type { z-index: 2; }
.popup-capabilities .popup-capabilities__close {
    position: absolute;
    top: 1.15rem;
    right: 1.15rem;
    z-index: 5;
    margin: 0;
    width: 3rem;
    height: 3rem;
    border: 1px solid rgba(255, 255, 255, 0.45);
    background: rgba(0, 0, 0, 0.28);
    transition: background-color 0.2s ease, border-color 0.2s ease;
}
.popup-capabilities .popup-capabilities__close::before,
.popup-capabilities .popup-capabilities__close::after {
    background-color: #fff;
    transition: background-color 0.2s ease;
}
.popup-capabilities .popup-capabilities__close:hover,
.popup-capabilities .popup-capabilities__close:focus-visible {
    background: #00f894;
    border-color: #00f894;
}
.popup-capabilities .popup-capabilities__close:hover::before,
.popup-capabilities .popup-capabilities__close:hover::after,
.popup-capabilities .popup-capabilities__close:focus-visible::before,
.popup-capabilities .popup-capabilities__close:focus-visible::after {
    background-color: #000;
}
.popup-capabilities__content {
    z-index: 3;
    width: min(92vw, 52rem);
    max-width: none;
    margin: 0;
    padding: 2.4rem 2.6rem 2rem;
    color: #f8fafc;
    border-radius: 36px;
    background-color: rgba(10, 10, 16, 0.62) !important;
    background-image: none !important;
    box-shadow: 0 28px 70px rgba(0, 0, 0, 0.38), inset 0 0 0 1px rgba(255, 255, 255, 0.16);
    backdrop-filter: blur(18px);
}
.popup-capabilities__title {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
}
.wava-doss__lead {
    margin: 0 0 1.6rem;
    color: rgba(248, 250, 252, 0.78);
    font-family: var(--font-text), Helvetica, Arial, sans-serif;
    font-size: 1.35rem;
    line-height: 1.35;
}
.popup-capabilities .js-block-form { padding: 0; }
.popup-capabilities .form-contact__item {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    height: auto;
    max-width: none;
    margin: 0 0 1.45rem;
    padding: 0;
    border: 0;
}
.popup-capabilities .form-contact__label,
.popup-capabilities .form-contact__item.active .form-contact__label,
.popup-capabilities .form-contact__item.attached .form-contact__label {
    position: static !important;
    top: auto !important;
    left: auto !important;
    height: auto !important;
    width: auto !important;
    margin: 0 0 0.35rem;
    transform: none !important;
    opacity: 1 !important;
    color: rgba(248, 250, 252, 0.55) !important;
    font-family: var(--font-typewriter), Arial, sans-serif !important;
    font-size: 0.95rem !important;
    font-style: normal !important;
    font-weight: 500 !important;
    letter-spacing: 0.14em;
    line-height: 1.2 !important;
    text-transform: uppercase;
}
.popup-capabilities .form-contact__column-label {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    overflow: hidden;
    opacity: 0 !important;
}
.popup-capabilities .form-contact__input {
    width: 100%;
    height: 3.4rem !important;
    margin: 0;
    padding: 0 0 0.25rem;
    border: 0;
    border-bottom: 1px solid rgba(255, 255, 255, 0.28);
    border-radius: 0;
    background: transparent !important;
    color: #f8fafc !important;
    font-family: var(--font-text), Helvetica, Arial, sans-serif !important;
    font-size: 1.75rem !important;
    font-style: normal !important;
    font-weight: 500 !important;
    letter-spacing: 0 !important;
    text-indent: 0 !important;
    box-shadow: none;
}
.popup-capabilities .form-contact__input:focus {
    outline: none;
    border-bottom-color: #fff;
}
.popup-capabilities .form-contact__footer {
    margin: 0.35rem 0 0;
    width: 100%;
}
.popup-capabilities .form-contact__btn {
    width: 100%;
    height: 4.4rem;
    margin: 0.4rem 0 0;
    border: 0;
    border-radius: 999px;
    background: #f8fafc;
    color: #111;
    box-shadow: none;
    font-size: 1.2rem;
}
.popup-capabilities .form-contact__btn .btn-title,
.popup-capabilities .form-contact__btn.is-form-ready {
    color: #111;
}
.popup-capabilities .success-message-block__title,
.popup-capabilities .success-message-block__description {
    color: #f8fafc;
}
@media (max-width: 767px) {
    .popup-capabilities__body { padding: 0 0.85rem 4vh; }
    .popup-capabilities__content {
        width: 100%;
        padding: 1.5rem 1.25rem 1.2rem;
        border-radius: 22px;
    }
    .wava-doss__lead { font-size: 1.05rem; }
    .popup-capabilities .form-contact__input { font-size: 1.25rem !important; height: 2.7rem !important; }
}
.wava-toast {
    position: fixed;
    top: 1.15rem;
    right: 1.15rem;
    z-index: 1200;
    display: flex;
    align-items: center;
    gap: 0.65rem;
    margin: 0;
    padding: 0.85rem 1.15rem 0.85rem 0.85rem;
    border-radius: 999px;
    background: #00f894;
    color: #04140c;
    font-family: var(--font-text), Helvetica, Arial, sans-serif;
    font-size: 0.95rem;
    font-weight: 600;
    line-height: 1;
    letter-spacing: -0.02em;
    box-shadow: 0 18px 40px rgba(0, 248, 148, 0.28);
    pointer-events: none;
}
.wava-toast__mark {
    display: grid;
    place-items: center;
    width: 1.45rem;
    height: 1.45rem;
    border-radius: 50%;
    background: #04140c;
    color: #00f894;
    font-size: 0.85rem;
}
.wava-toast.is-in {
    animation: wava-toast-in 0.55s cubic-bezier(0.16, 1.25, 0.3, 1) both;
}
.wava-toast.is-out {
    animation: wava-toast-out 0.5s cubic-bezier(0.4, 0, 0.2, 1) both;
}
@keyframes wava-toast-in {
    0% { opacity: 0; transform: translateY(-22px) scale(0.86); }
    100% { opacity: 1; transform: translateY(0) scale(1); }
}
@keyframes wava-toast-out {
    0% { opacity: 1; transform: translateY(0) scale(1); }
    100% { opacity: 0; transform: translateY(-16px) scale(0.94); }
}
@media (prefers-reduced-motion: reduce) {
    .wava-toast.is-in,
    .wava-toast.is-out { animation-duration: 0.01s; }
}
.wava-toast--ok { background: #00f894; color: #04140c; }
.wava-toast--bad {
    background: #1a1114;
    color: #ffd5d5;
    box-shadow: 0 18px 40px rgba(0, 0, 0, 0.35);
    border: 1px solid rgba(255, 120, 120, 0.35);
}
.wava-toast--bad .wava-toast__mark {
    background: #ff6b6b;
    color: #1a1114;
}
.popup-capabilities .form-contact__btn.wava-send {
    position: relative;
    overflow: visible;
    background: #f8fafc;
    transition: background 0.35s ease, color 0.35s ease;
}
.popup-capabilities.open .popup-capabilities__content,
.popup-capabilities.open .js-block-form,
.popup-capabilities.open .form-contact__footer {
    overflow: visible;
}
.wava-send__doors {
    position: absolute;
    inset: 0;
    display: flex;
    border-radius: inherit;
    overflow: hidden;
    z-index: 1;
    pointer-events: none;
}
.wava-send__door {
    flex: 1 1 50%;
    background: #f8fafc;
    transform: translateX(0);
    transition: transform 0.55s cubic-bezier(0.22, 1, 0.36, 1);
}
.wava-send__label {
    position: relative;
    z-index: 2;
}
.wava-send__plane,
.wava-send__tangle {
    position: absolute;
    left: 50%;
    top: 50%;
    width: 3rem;
    height: 3rem;
    margin: 0;
    opacity: 0;
    pointer-events: none;
    transform: translate(-50%, -50%) scale(0.2) rotate(-18deg);
    z-index: 5;
}
.wava-send__plane.is-sky,
.wava-send__tangle.is-sky {
    position: fixed;
    left: 0;
    top: 0;
    width: 4.5rem;
    height: 4.5rem;
    z-index: 2000;
    opacity: 1;
    will-change: transform, opacity;
    transform-origin: center center;
    backface-visibility: hidden;
}
.wava-send__plane svg,
.wava-send__tangle svg {
    display: block;
    width: 100%;
    height: 100%;
    overflow: visible;
    filter: drop-shadow(0 14px 22px rgba(0, 0, 0, 0.38));
}
.wava-send__crease {
    fill: none;
    stroke: rgba(15, 18, 24, 0.22);
    stroke-width: 0.9;
    stroke-linecap: round;
}
.wava-send__crumple {
    fill: none;
    stroke: rgba(40, 46, 56, 0.28);
    stroke-width: 0.8;
    stroke-linejoin: round;
}
.wava-send-smoke {
    position: fixed;
    inset: 0;
    width: 100vw;
    height: 100vh;
    z-index: 1995;
    pointer-events: none;
    mix-blend-mode: screen;
}
.wava-send.is-launch {
    background: #111 !important;
    color: transparent;
}
.wava-send.is-launch .wava-send__doors,
.wava-send.is-fly .wava-send__doors,
.wava-send.is-crash .wava-send__doors { opacity: 0; }
.wava-send.is-launch .wava-send__label {
    animation: wava-send-label-out 0.28s ease forwards;
}
.wava-send.is-launch .wava-send__plane {
    opacity: 1;
    animation: wava-send-morph 0.45s cubic-bezier(0.16, 1.2, 0.3, 1) forwards;
}
.wava-send.is-fly,
.wava-send.is-crash {
    background: #111 !important;
    color: transparent;
}
.wava-send.is-fly .wava-send__label,
.wava-send.is-crash .wava-send__label,
.wava-send.is-door .wava-send__label {
    opacity: 0;
}
.wava-send.is-door {
    background: #00f894 !important;
    color: transparent;
}
.wava-send.is-door .wava-send__door--l {
    transform: translateX(-108%);
}
.wava-send.is-door .wava-send__door--r {
    transform: translateX(108%);
}
.wava-send.is-done {
    background: #00f894 !important;
    color: #04140c !important;
}
.wava-send.is-done .wava-send__doors { opacity: 0; }
.wava-send.is-done .wava-send__label {
    opacity: 1;
    color: #04140c;
}
.wava-send.is-launch,
.wava-send.is-fly,
.wava-send.is-crash,
.wava-send.is-door {
    pointer-events: none;
}
.wava-send-bin {
    position: fixed;
    left: var(--bin-x, 70%);
    bottom: -9rem;
    z-index: 1990;
    width: 5.25rem;
    height: 6.25rem;
    pointer-events: none;
    transition: bottom 0.5s cubic-bezier(0.34, 1.4, 0.5, 1);
}
.wava-send-bin.is-up { bottom: 1.25rem; }
.wava-send-bin svg {
    display: block;
    width: 100%;
    height: 100%;
    overflow: visible;
    filter: drop-shadow(0 12px 18px rgba(0, 0, 0, 0.45));
}
.wava-send-bin__shadow { fill: rgba(0, 0, 0, 0.45); }
.wava-send-bin__lid {
    transform-box: view-box;
    transform-origin: 9px 27px;
    transition: transform 0.38s cubic-bezier(0.34, 1.5, 0.5, 1);
}
.wava-send-bin.is-open .wava-send-bin__lid { transform: rotate(-38deg); }
.wava-send-bin.is-hit svg { animation: wava-bin-hit 0.5s cubic-bezier(0.3, 1.5, 0.5, 1); }
@keyframes wava-bin-hit {
    0% { transform: translateY(0) scale(1, 1); }
    30% { transform: translateY(3px) scale(1.06, 0.92); }
    60% { transform: translateY(-2px) scale(0.98, 1.03); }
    100% { transform: translateY(0) scale(1, 1); }
}
@keyframes wava-send-label-out {
    to { opacity: 0; transform: scale(0.86); }
}
@keyframes wava-send-morph {
    0% { opacity: 0; transform: translate(-50%, -50%) scale(0.15) rotate(-70deg); }
    55% { opacity: 1; transform: translate(-50%, -58%) scale(1.18) rotate(-34deg); }
    100% { opacity: 1; transform: translate(-50%, -50%) scale(1) rotate(-40deg); }
}

/* ---- CTA: palavras WAVA (substituem a animação em inglês do site anterior) ---- */
.wava-cta-words {
    display: grid;
    place-items: center;
    margin-top: clamp(.3125rem, 3.125vw, 3.75rem);
    min-width: clamp(6.25rem, 46.875vw, 56.25rem);
    min-height: clamp(2.6875rem, 6.9791666667vw, 8.375rem);
    max-width: 100%;
    font-size: clamp(2.1rem, 6.3vw, 7.4rem);
    font-weight: 500;
    line-height: 1;
    letter-spacing: -.02em;
    text-transform: uppercase;
    white-space: nowrap;
}
.wava-cta-word {
    grid-area: 1 / 1;
    opacity: 0;
    transform: translateY(38%);
    animation: wava-cta-swap 6s cubic-bezier(.16, 1, .3, 1) infinite;
}
.wava-cta-word:nth-child(2) { animation-delay: 3s; }
@keyframes wava-cta-swap {
    0% { opacity: 0; transform: translateY(38%); }
    9%, 42% { opacity: 1; transform: translateY(0); }
    50%, 100% { opacity: 0; transform: translateY(-38%); }
}
@media (prefers-reduced-motion: reduce) {
    .wava-cta-word { animation: none; }
    .wava-cta-word:first-child { opacity: 1; transform: none; }
}
/* ---- cartão «Queres ver como trabalhamos?»: o ícone WAVA fica visível e roda ao passar o rato ---- */
.features .features-cta__img-item.--static-icon { transition: opacity .3s ease-out, transform .9s cubic-bezier(.16, 1, .3, 1); }
.features .features-cta:has(.features-cta__body:hover) .features-cta__img-item.--static-icon { opacity: 1; transform: rotate(90deg); }

/* =====================================================================
   404 — «Esta página saiu do palco»  (animação em /assets/wava-404.js)
   ===================================================================== */
.wava-404 {
    --mx: .5; --my: .4;
    position: relative;
    min-height: 100svh;
    display: grid;
    grid-template-rows: auto minmax(220px, 1fr) auto auto auto;
    justify-items: center;
    padding: calc(var(--header-height, 77px) + 2.5rem) 1rem 0;
    overflow: hidden;
    background: radial-gradient(120% 70% at 50% 110%, #07261a 0%, #050507 55%, #020203 100%);
    color: #f3f6f8;
    isolation: isolate;
    cursor: crosshair;
}
.wava-404__beams { position: absolute; inset: 0; z-index: -1; pointer-events: none; }
.wava-404__beams span {
    position: absolute; top: -10%; width: 70vmax; height: 140vmax;
    transform-origin: 50% 0;
    background: conic-gradient(from 180deg at 50% 0%, transparent 0deg 168deg, rgba(0,248,148,.16) 176deg, rgba(220,255,240,.22) 180deg, rgba(0,248,148,.16) 184deg, transparent 192deg 360deg);
    filter: blur(6px);
    mix-blend-mode: screen;
    transition: transform .9s cubic-bezier(.16,1,.3,1);
}
.wava-404__beams span:first-child { left: -25vmax; transform: rotate(calc(-28deg + var(--mx) * 22deg)); }
.wava-404__beams span:last-child { right: -25vmax; transform: rotate(calc(28deg - (1 - var(--mx)) * 22deg)); }
.wava-404__floor {
    position: absolute; left: -20%; right: -20%; bottom: 0; height: 45%; z-index: -1; pointer-events: none;
    background:
        linear-gradient(transparent 0 calc(100% - 1px), rgba(0,248,148,.22) 0) 0 0 / 100% 46px,
        linear-gradient(90deg, transparent 0 calc(100% - 1px), rgba(0,248,148,.16) 0) 0 0 / 46px 100%;
    transform: perspective(380px) rotateX(62deg);
    transform-origin: 50% 100%;
    mask-image: linear-gradient(transparent, #000 70%);
    -webkit-mask-image: linear-gradient(transparent, #000 70%);
    animation: wava-404-floor 6s linear infinite;
}
@keyframes wava-404-floor { to { background-position: 0 46px, 0 0; } }
.wava-404__kicker {
    display: inline-flex; align-items: center; gap: .6em; margin: 0;
    padding: .55em 1em; border: 1px solid rgba(0,248,148,.35); border-radius: 999px;
    font: 400 clamp(.7rem, .9vw, .85rem)/1 var(--font-typewriter); letter-spacing: .16em; color: #00f894;
    background: rgba(0,248,148,.06); backdrop-filter: blur(6px);
}
.wava-404__rec { width: .55em; height: .55em; border-radius: 50%; background: #ff4d5e; box-shadow: 0 0 12px #ff4d5e; animation: wava-404-rec 1.2s steps(2, jump-none) infinite; }
@keyframes wava-404-rec { 50% { opacity: .15; } }
.wava-404__stage { position: relative; width: min(1180px, 100%); align-self: stretch; }
.wava-404__led { position: absolute; inset: 0; width: 100%; height: 100%; display: block; }
.wava-404__sr, .wava-404 .visually-hidden { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.wava-404__copy { text-align: center; max-width: 40rem; position: relative; z-index: 2; }
.wava-404__title {
    margin: 0 0 .35em; font: 500 clamp(2rem, 4.6vw, 4.4rem)/1 var(--font-text); letter-spacing: -.035em;
    background: linear-gradient(180deg, #fff 30%, #9effd1 100%); -webkit-background-clip: text; background-clip: text; color: transparent;
}
.wava-404__text { margin: 0 auto 1.6em; max-width: 32rem; font: 400 clamp(1rem, 1.25vw, 1.2rem)/1.45 var(--font-text); color: rgba(243,246,248,.72); }
.wava-404__actions { display: flex; flex-wrap: wrap; gap: .7rem; justify-content: center; }
.wava-404__btn {
    display: inline-flex; align-items: center; padding: .95em 1.5em; border-radius: 999px;
    font: 400 .82rem/1 var(--font-typewriter); letter-spacing: .1em; text-transform: uppercase; text-decoration: none;
    color: #f3f6f8; border: 1px solid rgba(243,246,248,.28); background: rgba(255,255,255,.04);
    transition: background .3s, color .3s, border-color .3s, transform .3s cubic-bezier(.16,1,.3,1);
}
.wava-404__btn:hover { border-color: #00f894; color: #00f894; transform: translateY(-2px); }
.wava-404__btn--main { background: #00f894; border-color: #00f894; color: #04140c; box-shadow: 0 10px 40px rgba(0,248,148,.35); }
.wava-404__btn--main:hover { background: #fff; border-color: #fff; color: #04140c; }
.wava-404__btn:focus-visible { outline: 2px solid #00f894; outline-offset: 3px; }
.wava-404__wave { width: min(900px, 92vw); height: 70px; margin-top: 1.4rem; display: block; }
.wava-404__hint { margin: .2rem 0 .8rem; font: 400 .72rem/1 var(--font-typewriter); letter-spacing: .14em; text-transform: uppercase; color: rgba(243,246,248,.38); }
.wava-404__ticker { width: 100vw; overflow: hidden; border-top: 1px solid rgba(0,248,148,.18); padding: .9rem 0; background: rgba(0,0,0,.35); }
.wava-404__ticker-track { display: flex; width: max-content; gap: 3rem; animation: wava-404-ticker 28s linear infinite; }
.wava-404__ticker span { font: 900 clamp(1rem, 1.6vw, 1.5rem)/1 "Basement Grotesque", var(--font-title); letter-spacing: .02em; color: rgba(243,246,248,.85); white-space: nowrap; }
.wava-404__ticker span:nth-child(3n+2) { color: #00f894; }
.wava-404__ticker span::after { content: "✦"; margin-left: 3rem; color: rgba(0,248,148,.6); font-size: .7em; vertical-align: middle; }
@keyframes wava-404-ticker { to { transform: translateX(-50%); } }
@media (hover: none) { .wava-404__hint { visibility: hidden; } }
@media (max-width: 640px) {
    .wava-404 { grid-template-rows: auto minmax(160px, .8fr) auto auto auto; padding-top: calc(var(--header-height, 77px) + 1.5rem); }
    .wava-404__btn { padding: .9em 1.15em; font-size: .74rem; }
}
@media (prefers-reduced-motion: reduce) {
    .wava-404__floor, .wava-404__ticker-track, .wava-404__rec { animation: none; }
    .wava-404__beams span { transition: none; }
}
/* 404: palco escuro de ponta a ponta, menu legível, sem faixa branca */
body:has(.wava-404) { background: #050507; }
main:has(> .wava-404) { padding-top: 0 !important; }
body:has(.wava-404) .header .nav__link,
body:has(.wava-404) .header .wava-contact-link { color: #f3f6f8 !important; }
body:has(.wava-404) .header .nav__link:hover { color: #00f894 !important; }
.wava-404 { grid-template-columns: minmax(0, 1fr); }
.wava-404__copy { width: 100%; }
.wava-404__text { max-width: min(32rem, 100%); }

/* =====================================================================
   Telemóvel e tablet — correções de layout e toque
   ===================================================================== */
/* Lista de clientes: filtros por cima, lista por baixo (antes ficava com 0 px de largura) */
@media (max-width: 767px) {
    .partners__info { flex-direction: column; align-items: stretch; }
    .partners__wrapper:has(.wava-client-list) { width: 100%; flex: none; }
    .wava-client-filters { height: auto !important; }
    .wava-client-filter { padding: .45em 0; min-height: 36px; }
    .wava-client-list > li { line-height: 1.35; }
}
/* Rodapé: contactos dentro do ecrã em telemóvel/tablet */
@media (max-width: 1023px) {
    .footer:not(.footer--legal) .footer__right {
        position: relative; right: auto; transform: none !important;
        max-width: none !important; width: 100%;
        margin: 0 0 3rem; padding: 0 var(--side-gutters);
    }
    .footer:not(.footer--legal) .footer__right .contact-links__wrapper { transform: none !important; }
    /* email grande da secção «Tens um projecto em mente?» */
    .aims__email { font-size: clamp(1.9rem, 8.6vw, 4.5rem) !important; overflow-wrap: anywhere; }
}
/* Ecrãs táteis: sem cursor personalizado e alvos de toque confortáveis */
@media (hover: none), (pointer: coarse) {
    .cursor { display: none !important; }
    .cch__close-button { min-width: 40px; min-height: 40px; }
    .contact-link, .contact-links a, .footer a, .wava-sites__next a { padding-block: .4em; }
    a, button, [role="button"], [data-popup] { -webkit-tap-highlight-color: rgba(0, 248, 148, .18); touch-action: manipulation; }
    /* sem «hover preso» depois de tocar */
    .wava-404__btn:hover { transform: none; }
}
/* Popups: scroll suave ao dedo dentro do popup, sem arrastar a página por trás */
.js-popup-scroll-container { -webkit-overflow-scrolling: touch; overscroll-behavior: contain; }
/* Título «Com quem trabalhamos» não pode alargar a página no telemóvel/tablet */
@media (max-width: 1023px) {
    .partners__title { max-width: 100%; overflow-x: clip; }
    .partners__title .title-secondary { white-space: normal; overflow-wrap: anywhere; }
}
/* Animação 3D das caixas (secção «Tens um projecto em mente?») não pode alargar a página */
.aims { overflow-x: clip; }

/* Skeleton loaders — leves: fundo fixo; o brilho (só GPU) aparece apenas nos que estão no ecrã */
.wava-skel { background-color: #141416; }
.cases__asset.wava-skel { position: relative; overflow: hidden; }
.feature__video-item.wava-skel { overflow: hidden; } /* sem position: os itens do hover são absolutos */
.wava-skel.is-near::after {
    content: ""; position: absolute; inset: 0; pointer-events: none;
    background: linear-gradient(100deg, transparent 30%, rgba(255,255,255,.07) 50%, transparent 70%);
    transform: translateX(-100%); animation: wava-skel 1.3s ease-in-out infinite; will-change: transform;
}
img.wava-skel { min-height: 40px; }
@keyframes wava-skel { to { transform: translateX(100%); } }
@media (prefers-reduced-motion: reduce) { .wava-skel.is-near::after { animation: none; } }

/* Lista de clientes paginada no telemóvel */
.wava-client-more { display: none; }
@media (max-width: 767px) {
    .wava-client-list.is-paged > li.wava-more { display: none !important; }
    .wava-client-list.is-paged + .wava-client-more {
        display: inline-flex; margin-top: 1.4rem; padding: .85em 1.4em; border-radius: 999px;
        border: 1px solid currentColor; background: none; color: inherit;
        font: 400 .78rem/1 var(--font-typewriter); letter-spacing: .1em; text-transform: uppercase;
        min-height: 44px; align-items: center;
    }
}
/* Popups de projeto fechados: o browser salta o layout do conteúdo (muito mais leve no telemóvel) */
.js-popup[data-wava-rest] { content-visibility: hidden; }
/* Filtros de clientes inativos: contraste suficiente para leitura (WCAG AA) */
.wava-client-filter[aria-pressed="false"], .wava-client-filter[aria-pressed="false"] .wava-filter-count { color: #6b6b6b; }

/* Acessibilidade */
.wava-sr-only { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
/* «Enviar» do contacto legível antes de o formulário estar completo (antes: branco a 20%) */
.block-form__content .form-contact__btn .btn-title { color: rgba(255, 255, 255, .7); }
/* foco visível para quem navega por teclado */
a:focus-visible, button:focus-visible, input:focus-visible, textarea:focus-visible, [role="button"]:focus-visible, [tabindex]:focus-visible { outline: 2px solid #00f894; outline-offset: 3px; }

/* Rodapé: links para as páginas de serviço */
.footer__services{display:flex;flex-wrap:wrap;gap:.35rem 1.1rem;margin:.6rem 0 .2rem}
.footer__services .footer__link{opacity:.75;text-decoration:none}
.footer__services .footer__link:hover,.footer__services .footer__link:focus-visible{opacity:1;text-decoration:underline}
/* Páginas de serviço (reutilizam o layout da política) */
.wava-service .wava-service__lead{font-size:1.15em;line-height:1.5}
.wava-service h2.legal-info__subtitle{font-weight:inherit;margin:0}
.wava-service .legal-info__text a{text-decoration:underline;text-underline-offset:3px}
.wava-service .legal-info__title{transform:none;opacity:1}
.footer__services .footer__link{display:inline-block;line-height:1.5;padding:0;margin:0;min-height:0}
.footer__services{row-gap:.25rem}
.wava-client-filter[aria-pressed="false"] { opacity: 1; } /* contraste: cor #6b6b6b sem transparência */
