/* ===== Viewer ===== */
.dynamic-slide-viewport{
  position: fixed;
  top:0; right:0; bottom:0; left:0; /* fallback */
  inset: 0;                         /* moderni */
  background:#000;
  overflow:hidden;
  z-index:0;
}

.dynamic-slide-gallery{
  position:absolute;
  top:50%;
  left:50%;
  width:100vw;
  height:100vh;   /* fallback TV/vecchi browser */
  height:100dvh;  /* override moderni */
  transform:translate(-50%,-50%);
  overflow:hidden;
  background:#000;
}

/* IMG: sempre contenuta, centrata, mai tagliata */
.dynamic-slide-image{
  position:absolute;
  top:0; right:0; bottom:0; left:0; /* fallback */
  inset:0;                          /* moderni */
  margin:auto;
  transform-origin:center center;
  width:100%;
  height:100%;
  object-fit:contain;      /* mai crop */
  object-position:center;
  max-width:none;
  max-height:none;
  opacity:0;
  transition:opacity .8s ease-in-out;
  visibility: hidden;
}
.dynamic-slide-image.active{
  opacity: 1;
  z-index: 1;
  visibility: visible;  /* <— mostra solo la slide corrente */
}

/* Rotazioni sull’IMMAGINE (non il container) con swap assi */
.dynamic-slide-image.rot-90{
  transform:rotate(90deg);
  width:100vh;    /* fallback */
  width:100dvh;   /* moderni */
  height:100vw;
}
.dynamic-slide-image.rot-270{
  transform:rotate(-90deg);
  width:100vh;    /* fallback */
  width:100dvh;   /* moderni */
  height:100vw;
}
.dynamic-slide-image.rot-180{ transform:rotate(180deg); }
