/**
 * GW Banner
 * Estrutura leve: imagem responsiva, conteudo sobreposto e movimento somente em CSS.
 */

.gw-banner.gw-banner {
    --gw-banner-image-x: 50%;
    --gw-banner-image-y: 50%;
    --gw-banner-zoom: 1.06;
    --gw-banner-shift: 12px;
    --gw-banner-shift-scale: 1.04;
    --gw-banner-duration: 600ms;
    --gw-banner-timing: ease-out;
    --gw-banner-overlay-normal-start: transparent;
    --gw-banner-overlay-normal-end: transparent;
    --gw-banner-overlay-normal-angle: 180deg;
    --gw-banner-overlay-normal-solid: transparent;
    --gw-banner-overlay-hover-start: transparent;
    --gw-banner-overlay-hover-end: transparent;
    --gw-banner-overlay-hover-angle: 180deg;
    --gw-banner-overlay-hover-solid: transparent;
    position: relative;
    isolation: isolate;
    display: grid;
    width: 100%;
    min-width: 0;
    box-sizing: border-box;
    overflow: hidden;
}

.gw-banner.gw-banner::before {
    content: "";
    grid-area: 1 / 1;
    display: block;
    width: 100%;
    min-width: 0;
    pointer-events: none;
}

.gw-banner.gw-banner *,
.gw-banner.gw-banner *::before,
.gw-banner.gw-banner *::after {
    box-sizing: border-box;
}

.gw-banner.gw-banner .gw-banner__picture,
.gw-banner.gw-banner .gw-banner__overlay,
.gw-banner.gw-banner .gw-banner__link-layer {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
}

.gw-banner.gw-banner .gw-banner__picture {
    z-index: 0;
    display: block;
    overflow: hidden;
    border-radius: inherit;
}

.gw-banner.gw-banner .gw-banner__image {
    display: block;
    width: 100%;
    max-width: none;
    height: 100%;
    margin: 0;
    border: 0;
    border-radius: inherit;
    object-position: var(--gw-banner-image-x) var(--gw-banner-image-y);
    transform: translate3d(0, 0, 0) scale(1);
    transform-origin: center;
    transition: transform var(--gw-banner-duration) var(--gw-banner-timing);
    will-change: transform;
}

.gw-banner.gw-banner .gw-banner__overlay {
    z-index: 1;
    pointer-events: none;
    border-radius: inherit;
    transition: background var(--gw-banner-duration) var(--gw-banner-timing), opacity var(--gw-banner-duration) var(--gw-banner-timing);
}

.gw-banner.gw-banner.gw-banner--overlay-normal-none .gw-banner__overlay {
    background: transparent;
}

.gw-banner.gw-banner.gw-banner--overlay-normal-solid .gw-banner__overlay {
    background: var(--gw-banner-overlay-normal-solid);
}

.gw-banner.gw-banner.gw-banner--overlay-normal-gradient .gw-banner__overlay {
    background: linear-gradient(
        var(--gw-banner-overlay-normal-angle),
        var(--gw-banner-overlay-normal-start),
        var(--gw-banner-overlay-normal-end)
    );
}

.gw-banner.gw-banner .gw-banner__content {
    position: relative;
    z-index: 2;
    grid-area: 1 / 1;
    display: flex;
    flex-direction: column;
    min-width: 0;
    max-width: 100%;
}

.gw-banner.gw-banner.gw-banner--link-full .gw-banner__content {
    pointer-events: none;
}

.gw-banner.gw-banner .gw-banner__subtitle,
.gw-banner.gw-banner .gw-banner__title,
.gw-banner.gw-banner .gw-banner__description,
.gw-banner.gw-banner .gw-banner__cta-text {
    min-width: 0;
    max-width: 100%;
    margin: 0;
    overflow-wrap: anywhere;
}

.gw-banner.gw-banner .gw-banner__description {
    white-space: pre-line;
}

.gw-banner.gw-banner .gw-banner__link-layer {
    z-index: 3;
    display: block;
    border-radius: inherit;
    color: inherit;
    text-decoration: none;
}

.gw-banner.gw-banner .gw-banner__link-layer:focus,
.gw-banner.gw-banner .gw-banner__cta:focus {
    outline: 0;
}

.gw-banner.gw-banner .gw-banner__link-layer:focus-visible,
.gw-banner.gw-banner .gw-banner__cta:focus-visible {
    outline-style: solid;
}

.gw-banner.gw-banner .gw-banner__cta {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: fit-content;
    max-width: 100%;
    line-height: 1.2;
    text-decoration: none;
    cursor: pointer;
    transition:
        color var(--gw-banner-duration) var(--gw-banner-timing),
        background-color var(--gw-banner-duration) var(--gw-banner-timing),
        border-color var(--gw-banner-duration) var(--gw-banner-timing),
        box-shadow var(--gw-banner-duration) var(--gw-banner-timing),
        transform var(--gw-banner-duration) var(--gw-banner-timing);
}

.gw-banner.gw-banner span.gw-banner__cta {
    cursor: default;
}

.gw-banner.gw-banner .gw-banner__cta-icon {
    display: inline-flex;
    flex: 0 0 auto;
    align-items: center;
    justify-content: center;
    line-height: 1;
}

.gw-banner.gw-banner .gw-banner__cta-icon svg {
    display: block;
    fill: currentColor;
}

.gw-banner.gw-banner.gw-banner--overlay-hover-none:hover .gw-banner__overlay,
.gw-banner.gw-banner.gw-banner--overlay-hover-none:focus-within .gw-banner__overlay {
    background: transparent;
}

.gw-banner.gw-banner.gw-banner--overlay-hover-solid:hover .gw-banner__overlay,
.gw-banner.gw-banner.gw-banner--overlay-hover-solid:focus-within .gw-banner__overlay {
    background: var(--gw-banner-overlay-hover-solid);
}

.gw-banner.gw-banner.gw-banner--overlay-hover-gradient:hover .gw-banner__overlay,
.gw-banner.gw-banner.gw-banner--overlay-hover-gradient:focus-within .gw-banner__overlay {
    background: linear-gradient(
        var(--gw-banner-overlay-hover-angle),
        var(--gw-banner-overlay-hover-start),
        var(--gw-banner-overlay-hover-end)
    );
}

@media (hover: hover) and (pointer: fine) {
    .gw-banner.gw-banner.gw-banner--effect-zoom:hover .gw-banner__image {
        transform: translate3d(0, 0, 0) scale(var(--gw-banner-zoom));
    }

    .gw-banner.gw-banner.gw-banner--effect-shift.gw-banner--shift-right:hover .gw-banner__image {
        transform: translate3d(var(--gw-banner-shift), 0, 0) scale(var(--gw-banner-shift-scale));
    }

    .gw-banner.gw-banner.gw-banner--effect-shift.gw-banner--shift-left:hover .gw-banner__image {
        transform: translate3d(calc(var(--gw-banner-shift) * -1), 0, 0) scale(var(--gw-banner-shift-scale));
    }

    .gw-banner.gw-banner.gw-banner--effect-shift.gw-banner--shift-down:hover .gw-banner__image {
        transform: translate3d(0, var(--gw-banner-shift), 0) scale(var(--gw-banner-shift-scale));
    }

    .gw-banner.gw-banner.gw-banner--effect-shift.gw-banner--shift-up:hover .gw-banner__image {
        transform: translate3d(0, calc(var(--gw-banner-shift) * -1), 0) scale(var(--gw-banner-shift-scale));
    }
}

.gw-banner.gw-banner.gw-banner--effect-zoom:focus-within .gw-banner__image {
    transform: translate3d(0, 0, 0) scale(var(--gw-banner-zoom));
}

.gw-banner.gw-banner.gw-banner--effect-shift.gw-banner--shift-right:focus-within .gw-banner__image {
    transform: translate3d(var(--gw-banner-shift), 0, 0) scale(var(--gw-banner-shift-scale));
}

.gw-banner.gw-banner.gw-banner--effect-shift.gw-banner--shift-left:focus-within .gw-banner__image {
    transform: translate3d(calc(var(--gw-banner-shift) * -1), 0, 0) scale(var(--gw-banner-shift-scale));
}

.gw-banner.gw-banner.gw-banner--effect-shift.gw-banner--shift-down:focus-within .gw-banner__image {
    transform: translate3d(0, var(--gw-banner-shift), 0) scale(var(--gw-banner-shift-scale));
}

.gw-banner.gw-banner.gw-banner--effect-shift.gw-banner--shift-up:focus-within .gw-banner__image {
    transform: translate3d(0, calc(var(--gw-banner-shift) * -1), 0) scale(var(--gw-banner-shift-scale));
}

@media (prefers-reduced-motion: reduce) {
    .gw-banner.gw-banner .gw-banner__image,
    .gw-banner.gw-banner .gw-banner__overlay,
    .gw-banner.gw-banner .gw-banner__cta {
        transition-duration: 0.01ms;
    }

    .gw-banner.gw-banner:hover .gw-banner__image,
    .gw-banner.gw-banner:focus-within .gw-banner__image {
        transform: none !important;
    }
}
