.hookah-death-overlay {
  position: absolute; top: 0; right: 0; bottom: 0; left: 0; inset: 0; z-index: 110;
  overflow: hidden; pointer-events: auto; background: transparent;
}
.hookah-death-overlay[hidden], .hookah-death-overlay [hidden] { display: none; }
.hookah-death-blackout, .hookah-death-video, .hookah-death-aftermath, .hookah-death-spotlight {
  position: absolute; top: 0; right: 0; bottom: 0; left: 0; inset: 0; width: 100%; height: 100%;
  display: block; pointer-events: none; user-select: none;
}
.hookah-death-blackout { background: #000; opacity: 0; }
.hookah-death-video { object-fit: fill; image-rendering: auto; background: #000; }
.hookah-death-aftermath { object-fit: fill; image-rendering: pixelated; opacity: 0; }
.hookah-death-spotlight {
  background: radial-gradient(ellipse at 51% 61%, transparent 0 var(--hookah-spot-inner, 0%),
    #0005 var(--hookah-spot-middle, 5%), #000f var(--hookah-spot-outer, 10%), #000 95%);
}
/* Shake the composed scene once, so bottles, chair, hose and shadows stay registered.
   Overscan prevents the jolt exposing an empty strip at the viewport edges. */
.game-viewport[data-hookah-warning="true"] {
  transform: translate(var(--hookah-shake-x, 0%), var(--hookah-shake-y, 0%)) scale(1.04);
  filter: brightness(var(--hookah-warning-light, 1));
  will-change: transform, filter;
}
@media (prefers-reduced-motion: reduce) {
  .game-viewport[data-hookah-warning="true"] { transform: none; filter: brightness(.65); }
}
