.ps-hero3d {
  position: relative;
  width: min(100%, var(--ps-hero-max-width, 1100px));
  height: min(var(--ps-hero-height-desktop, 720px), 82svh);
  margin-inline: auto;
  overflow: hidden;
  background: transparent;
  contain: layout paint;
  isolation: isolate;
  touch-action: pan-y;
  -webkit-user-select: none;
  user-select: none;
}

.ps-hero3d__canvas,
.ps-hero3d__fallback,
.ps-hero3d__noscript {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

.ps-hero3d__canvas {
  display: block;
  opacity: 0;
  cursor: grab;
}

.ps-hero3d.is-ready .ps-hero3d__canvas {
  opacity: 1;
}

.ps-hero3d.is-dragging .ps-hero3d__canvas {
  cursor: grabbing;
}

/*
 * The normal fallback image starts hidden at HTML level, so it cannot flash
 * for a fraction of a second before WebGL appears. JavaScript unhides it only
 * when reduced motion is requested or WebGL cannot run.
 */
.ps-hero3d__fallback,
.ps-hero3d__noscript {
  box-sizing: border-box;
  object-fit: contain;
  object-position: center;
  padding: 10% 24%;
  pointer-events: none;
}

.ps-hero3d__fallback {
  opacity: 0;
}

.ps-hero3d.is-fallback .ps-hero3d__fallback:not([hidden]) {
  opacity: 0.92;
}

.ps-hero3d__noscript {
  opacity: 0.92;
}

@media (max-width: 700px) {
  .ps-hero3d {
    height: min(var(--ps-hero-height-mobile, 520px), 70svh);
  }

  .ps-hero3d__fallback,
  .ps-hero3d__noscript {
    padding: 8% 22%;
  }
}
