/* White cursor dot and media dither are decorative; the native DOM handles input. */
.studio-cursor-dot {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 110;
  width: 10px;
  height: 10px;
  border: 0;
  border-radius: 50%;
  background: #fff;
  mix-blend-mode: difference;
  pointer-events: none;
  visibility: hidden;
  contain: strict;
}
.studio-cursor-dot.is-visible { visibility: visible; }
.has-studio-cursor-dot .site-shell,
.has-studio-cursor-dot .site-shell button,
.has-studio-cursor-dot .site-shell summary,
.has-studio-cursor-dot .site-shell a { cursor: none; }
.studio-retro-dither {
  position: absolute;
  top: -50%;
  left: -50%;
  width: 200%;
  height: 200%;
  z-index: 2;
  transform: var(--dither-transform, scale(1));
  pointer-events: none;
  visibility: hidden;
}
.studio-retro-dither.is-visible { visibility: visible; }
/* The shader now owns this rounded video plane, including transparent holes.
   Hiding its background and native pixels prevents an intact corner underneath. */
.project-card__surface.is-dither-composited { background: transparent; box-shadow: none; }
.project-card__surface.is-dither-composited > video,
.project-card__surface.is-dither-composited > img { opacity: 0; }

@media (prefers-reduced-motion: reduce), (hover: none), (pointer: coarse) {
  .studio-cursor-dot, .studio-retro-dither { display: none; }
  .project-card__surface.is-dither-composited > video,
  .project-card__surface.is-dither-composited > img { opacity: 1; }
  .has-studio-cursor-dot .site-shell { cursor: auto; }
  .has-studio-cursor-dot .site-shell button,
  .has-studio-cursor-dot .site-shell summary,
  .has-studio-cursor-dot .site-shell a { cursor: pointer; }
}
