.wb-hero-slide {
  background: var(--wb-hero-background, var(--wb-hero-color));
}

.wb-hero-slide__media {
  z-index: 1;
  isolation: isolate;
  overflow: hidden;
  border-left: 1px solid rgba(255, 255, 255, .22);
  box-shadow: -12px 0 28px rgba(0, 0, 0, .10);
}

.wb-hero-slide__media::after {
  position: absolute;
  z-index: 1;
  inset: 0;
  display: none;
  content: '';
  pointer-events: none;
  background: var(--wb-hero-illustration, var(--wb-hero-background, var(--wb-hero-color)));
  opacity: var(--wb-hero-illustration-opacity, .65);
}

/* La filigrana è una forma, non un asset dai colori fissi: la maschera eredita
   sempre i colori della slide e rimane davanti alla fotografia. */
article.wb-hero-slide[data-hero-slide]::before {
  position: absolute;
  z-index: 0;
  inset: 0;
  content: '';
  pointer-events: none;
  background: linear-gradient(115deg, var(--wb-hero-color), var(--wb-hero-gradient-color, var(--wb-hero-color)));
  -webkit-mask: url('../../assets/filigree.svg?v=2') left bottom / auto 115% no-repeat;
  mask: url('../../assets/filigree.svg?v=2') left bottom / auto 115% no-repeat;
  opacity: .82;
}

@supports (color: color-mix(in srgb, #000, #fff)) {
  article.wb-hero-slide[data-hero-slide]::before {
    background: linear-gradient(115deg, color-mix(in srgb, var(--wb-hero-color) 52%, white), color-mix(in srgb, var(--wb-hero-gradient-color, var(--wb-hero-color)) 70%, white));
  }
}

/* Da desktop la Hero editoriale riprende la resa della Hero di archivio: due
   gradienti sovrapposti, quello del fondo e quello della serigrafia, entrambi
   dal preset della slide. La serigrafia sfuma nel fondo dall'angolo in basso a
   destra. Il selettore supera la regola Aurora su .wb-hero-slide. */
@media (min-width: 1024px) {
  body article.wb-hero-slide[data-hero-slide] {
    background-image: var(--wb-hero-art), var(--wb-hero-layer) !important;
    background-position: right bottom, center !important;
    background-size: auto 130%, cover !important;
    background-repeat: no-repeat !important;
  }

  article.wb-hero-slide[data-hero-slide]::before {
    display: none;
  }
}

/* Sotto i 1024px la filigrana resta quella del ::before. Il fondo è il solo
   livello della slide: con un gradiente la regola Aurora sarebbe valida e
   aggiungerebbe una seconda serigrafia. */
@media (max-width: 1023px) {
  body article.wb-hero-slide[data-hero-slide] {
    background-image: var(--wb-hero-layer) !important;
    background-position: center !important;
    background-size: cover !important;
    background-repeat: no-repeat !important;
  }
}

@media (max-width: 1023px) {
  .wb-hero-slide {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    grid-template-rows: auto auto;
  }

  .wb-hero-slide__media {
    grid-column: 1;
    grid-row: 2;
    position: relative;
    inset: auto;
    width: 100%;
    height: clamp(220px, 52vw, 420px);
    border-top: 1px solid rgba(255, 255, 255, .22);
    border-left: 0;
    box-shadow: 0 -10px 26px rgba(0, 0, 0, .10);
  }

  .wb-hero-slide > .relative {
    grid-column: 1;
    grid-row: 1;
  }
}

@media (max-width: 767px) {
  article.wb-hero-slide {
    display: block;
    min-height: 0;
    border-radius: 24px;
  }

  article.wb-hero-slide > .wb-hero-slide__media {
    z-index: 0;
    position: absolute;
    inset: 0;
    grid-column: auto;
    grid-row: auto;
    display: block;
    width: 100%;
    height: 100%;
    border: 0;
    box-shadow: none;
  }

  article.wb-hero-slide > .wb-hero-slide__media > img {
    object-position: 50% 50% !important;
  }

  article.wb-hero-slide > .wb-hero-slide__media::after {
    display: block;
  }

  article.wb-hero-slide[data-hero-slide]::before {
    z-index: 1;
  }


  article.wb-hero-slide > .relative {
    grid-column: auto;
    grid-row: auto;
    min-height: 440px;
    gap: 20px;
    padding: 24px;
  }

  .wb-hero-slide > .relative > div {
    gap: 18px;
  }

  .wb-hero-slide h1,
  .wb-hero-slide h2 {
    font-size: 30px;
    line-height: 1.06;
  }

  .wb-hero-slide p {
    font-size: 14px;
    line-height: 1.55;
  }

  .wb-hero-slide dl {
    display: none;
  }

  .wb-hero-slide a {
    padding: 12px 18px;
    font-size: 13px;
  }

  .wb-hero-slide a + a {
    display: none;
  }
}

/* ---------------------------------------------------------------------------
   Carosello: controlli e transizioni.
   Il prefisso .wb-hero-carousel[data-transition] supera le regole compilate in
   styles.css (.wb-hero-slide[aria-hidden=true] e la dissolvenza di base).
   theme.js assegna .is-entering alla slide che entra e .is-leaving a quella
   che esce, per la durata dichiarata in --wb-hero-duration. Le regole delle
   singole transizioni hanno la stessa specificità di quella generale che le
   precede, e la vincono perché vengono dopo.
   --------------------------------------------------------------------------- */

.wb-hero-carousel[data-transition] .wb-hero-slide {
  transition: none;
}

.wb-hero-carousel[data-transition] .wb-hero-slide.is-leaving {
  z-index: 1;
  opacity: 1;
  visibility: visible;
}

.wb-hero-carousel[data-transition] .wb-hero-slide.is-entering {
  z-index: 2;
}

.wb-hero-carousel[data-transition] .wb-hero-slide:is(.is-entering, .is-leaving),
.wb-hero-carousel[data-transition] .wb-hero-slide:is(.is-entering, .is-leaving) > :is(.wb-hero-slide__media, .relative),
.wb-hero-carousel[data-transition] .wb-hero-slide:is(.is-entering, .is-leaving) > .relative > div > *,
.wb-hero-carousel[data-transition] .wb-hero-slide:is(.is-entering, .is-leaving) > .relative > dl {
  animation-duration: var(--wb-hero-duration, .65s);
  animation-timing-function: cubic-bezier(.65, 0, .2, 1);
  animation-fill-mode: both;
}

/* Dissolvenza: la transizione di sempre, come riferimento sobrio. */
.wb-hero-carousel[data-transition="dissolvenza"] .wb-hero-slide.is-entering { animation-name: wb-hero-fade-in; animation-timing-function: ease; }
.wb-hero-carousel[data-transition="dissolvenza"] .wb-hero-slide.is-leaving { animation-name: wb-hero-fade-out; animation-timing-function: ease; }

/* Diagonale: una tendina inclinata come i gradienti (115°) scopre la slide nuova;
   il contenuto arriva con un breve ritardo. */
.wb-hero-carousel[data-transition="diagonale"][data-direction="next"] .wb-hero-slide.is-entering { animation-name: wb-hero-diagonal-next; }
.wb-hero-carousel[data-transition="diagonale"][data-direction="prev"] .wb-hero-slide.is-entering { animation-name: wb-hero-diagonal-prev; }
.wb-hero-carousel[data-transition="diagonale"] .wb-hero-slide.is-leaving { animation-name: wb-hero-recede; }
.wb-hero-carousel[data-transition="diagonale"] .wb-hero-slide.is-entering > .relative { animation-name: wb-hero-content-rise; animation-duration: .75s; animation-delay: .18s; }

/* Espansione: un cerchio si apre dall'angolo della serigrafia. */
.wb-hero-carousel[data-transition="espansione"] .wb-hero-slide.is-entering { animation-name: wb-hero-iris; }
.wb-hero-carousel[data-transition="espansione"] .wb-hero-slide.is-leaving { animation-name: wb-hero-recede; }
.wb-hero-carousel[data-transition="espansione"] .wb-hero-slide.is-entering .wb-hero-slide__media { animation-name: wb-hero-media-settle; }

/* Scorrimento: la slide nuova si scopre di lato, testo e foto scorrono a
   velocità diverse (parallasse); la slide che esce arretra nel verso opposto. */
.wb-hero-carousel[data-transition="scorrimento"][data-direction="next"] .wb-hero-slide.is-entering { animation-name: wb-hero-reveal-next; }
.wb-hero-carousel[data-transition="scorrimento"][data-direction="prev"] .wb-hero-slide.is-entering { animation-name: wb-hero-reveal-prev; }
.wb-hero-carousel[data-transition="scorrimento"][data-direction="next"] .wb-hero-slide.is-entering > .relative { animation-name: wb-hero-drift-next; }
.wb-hero-carousel[data-transition="scorrimento"][data-direction="prev"] .wb-hero-slide.is-entering > .relative { animation-name: wb-hero-drift-prev; }
.wb-hero-carousel[data-transition="scorrimento"][data-direction="next"] .wb-hero-slide.is-entering .wb-hero-slide__media { animation-name: wb-hero-drift-far-next; }
.wb-hero-carousel[data-transition="scorrimento"][data-direction="prev"] .wb-hero-slide.is-entering .wb-hero-slide__media { animation-name: wb-hero-drift-far-prev; }
.wb-hero-carousel[data-transition="scorrimento"][data-direction="next"] .wb-hero-slide.is-leaving > .relative { animation-name: wb-hero-drift-out-next; }
.wb-hero-carousel[data-transition="scorrimento"][data-direction="prev"] .wb-hero-slide.is-leaving > .relative { animation-name: wb-hero-drift-out-prev; }

/* Messa a fuoco: la slide nuova emerge da una sfocatura, quella vecchia vi si perde. */
.wb-hero-carousel[data-transition="messa-a-fuoco"] .wb-hero-slide.is-entering { animation-name: wb-hero-focus-in; }
.wb-hero-carousel[data-transition="messa-a-fuoco"] .wb-hero-slide.is-leaving { animation-name: wb-hero-focus-out; }

/* Cascata: il fondo cambia in dissolvenza, i testi salgono uno dopo l'altro e
   la fotografia si scopre per ultima. */
.wb-hero-carousel[data-transition="cascata"] .wb-hero-slide.is-entering { animation-name: wb-hero-fade-in; animation-duration: .45s; }
.wb-hero-carousel[data-transition="cascata"] .wb-hero-slide.is-leaving { animation-name: wb-hero-fade-out; animation-duration: .45s; }
.wb-hero-carousel[data-transition="cascata"] .wb-hero-slide.is-entering > .relative > div > *,
.wb-hero-carousel[data-transition="cascata"] .wb-hero-slide.is-entering > .relative > dl { animation-name: wb-hero-content-rise; animation-duration: .6s; }
.wb-hero-carousel[data-transition="cascata"] .wb-hero-slide.is-entering > .relative > div > :nth-child(1) { animation-delay: .1s; }
.wb-hero-carousel[data-transition="cascata"] .wb-hero-slide.is-entering > .relative > div > :nth-child(2) { animation-delay: .17s; }
.wb-hero-carousel[data-transition="cascata"] .wb-hero-slide.is-entering > .relative > div > :nth-child(3) { animation-delay: .24s; }
.wb-hero-carousel[data-transition="cascata"] .wb-hero-slide.is-entering > .relative > div > :nth-child(4) { animation-delay: .31s; }
.wb-hero-carousel[data-transition="cascata"] .wb-hero-slide.is-entering > .relative > dl { animation-delay: .38s; }
.wb-hero-carousel[data-transition="cascata"] .wb-hero-slide.is-entering .wb-hero-slide__media { animation-name: wb-hero-reveal-next; animation-duration: .8s; animation-delay: .25s; }

@keyframes wb-hero-fade-in { from { opacity: 0; } to { opacity: 1; } }
@keyframes wb-hero-fade-out { from { opacity: 1; } to { opacity: 0; } }
@keyframes wb-hero-recede { from { transform: scale(1); filter: brightness(1); } to { transform: scale(.975); filter: brightness(.8); } }
@keyframes wb-hero-diagonal-next {
  from { clip-path: polygon(-40% 0, 0% 0, -20% 100%, -40% 100%); }
  to { clip-path: polygon(-40% 0, 140% 0, 120% 100%, -40% 100%); }
}
@keyframes wb-hero-diagonal-prev {
  from { clip-path: polygon(140% 0, 140% 0, 140% 100%, 120% 100%); }
  to { clip-path: polygon(-20% 0, 140% 0, 140% 100%, -40% 100%); }
}
@keyframes wb-hero-iris {
  from { clip-path: circle(0% at 88% 92%); }
  to { clip-path: circle(150% at 88% 92%); }
}
@keyframes wb-hero-media-settle { from { transform: scale(1.08); } to { transform: scale(1); } }
@keyframes wb-hero-content-rise { from { opacity: 0; transform: translateY(18px); } to { opacity: 1; transform: none; } }
@keyframes wb-hero-reveal-next { from { clip-path: inset(0 0 0 100%); } to { clip-path: inset(0); } }
@keyframes wb-hero-reveal-prev { from { clip-path: inset(0 100% 0 0); } to { clip-path: inset(0); } }
@keyframes wb-hero-drift-next { from { transform: translateX(14%); } to { transform: none; } }
@keyframes wb-hero-drift-prev { from { transform: translateX(-14%); } to { transform: none; } }
@keyframes wb-hero-drift-far-next { from { transform: translateX(6%); } to { transform: none; } }
@keyframes wb-hero-drift-far-prev { from { transform: translateX(-6%); } to { transform: none; } }
@keyframes wb-hero-drift-out-next { from { opacity: 1; transform: none; } to { opacity: .2; transform: translateX(-10%); } }
@keyframes wb-hero-drift-out-prev { from { opacity: 1; transform: none; } to { opacity: .2; transform: translateX(10%); } }
@keyframes wb-hero-focus-in { from { opacity: 0; transform: scale(1.04); filter: blur(14px); } to { opacity: 1; transform: none; filter: none; } }
@keyframes wb-hero-focus-out { from { opacity: 1; transform: none; filter: none; } to { opacity: 0; transform: scale(.98); filter: blur(10px); } }

/* Controlli discreti sotto la card: paginazione a segmenti, con l'avanzamento
   della slide corrente, e due frecce leggere. */
.wb-hero-carousel__controls {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin-top: 14px;
  padding-inline: 6px;
}

.wb-hero-carousel__controls[hidden] {
  display: none;
}

.wb-hero-carousel__pages {
  display: flex;
  align-items: center;
  gap: 6px;
}

.wb-hero-carousel__page {
  position: relative;
  width: 22px;
  height: 22px;
  padding: 0;
  border: 0;
  background: none;
  cursor: pointer;
  transition: width .35s cubic-bezier(.65, 0, .2, 1);
}

.wb-hero-carousel__page.is-active {
  width: 46px;
}

.wb-hero-carousel__page span {
  position: absolute;
  inset: 50% 0 auto;
  height: 3px;
  margin-top: -1.5px;
  overflow: hidden;
  border-radius: 3px;
  background: color-mix(in srgb, var(--foreground, #122641) 22%, transparent);
  transition: background-color .2s;
}

.wb-hero-carousel__page:hover span {
  background: color-mix(in srgb, var(--foreground, #122641) 38%, transparent);
}

.wb-hero-carousel__page span::after {
  position: absolute;
  inset: 0;
  content: '';
  border-radius: inherit;
  background: var(--wiiipay-aurora, var(--primary, #008936));
  transform: scaleX(0);
  transform-origin: left center;
}

.wb-hero-carousel__page.is-active span::after {
  transform: scaleX(1);
}

.wb-hero-carousel.is-autoplay .wb-hero-carousel__page.is-active span::after {
  animation: wb-hero-progress var(--wb-hero-interval, 6.5s) linear both;
}

.wb-hero-carousel.is-paused .wb-hero-carousel__page.is-active span::after {
  animation-play-state: paused;
}

@keyframes wb-hero-progress { from { transform: scaleX(0); } to { transform: scaleX(1); } }

.wb-hero-carousel__arrows {
  display: flex;
  gap: 6px;
}

.wb-hero-carousel__arrow {
  display: grid;
  width: 32px;
  height: 32px;
  padding: 0;
  place-items: center;
  border: 1px solid color-mix(in srgb, var(--foreground, #122641) 10%, transparent);
  border-radius: 999px;
  background: rgba(255, 255, 255, .6);
  color: var(--muted-foreground, #55667b);
  cursor: pointer;
  transition: color .2s, border-color .2s, background-color .2s;
}

.wb-hero-carousel__arrow:hover {
  border-color: color-mix(in srgb, var(--foreground, #122641) 22%, transparent);
  background: #fff;
  color: var(--foreground, #122641);
}

.wb-hero-carousel__arrow:focus-visible,
.wb-hero-carousel__page:focus-visible {
  outline: 2px solid var(--control-ring, #87cbdc);
  outline-offset: 2px;
  border-radius: 999px;
}

@media (max-width: 767px) {
  .wb-hero-carousel__controls {
    margin-top: 10px;
  }

  .wb-hero-carousel__arrows {
    display: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  .wb-hero-carousel[data-transition] .wb-hero-slide,
  .wb-hero-carousel[data-transition] .wb-hero-slide *,
  .wb-hero-carousel__page,
  .wb-hero-carousel__page span::after {
    animation: none !important;
    transition: none !important;
  }
}
