/* Additive translate preserves the existing title proportions and pointer motion. */
.reveal-item {
  opacity: var(--reveal-opacity, 0);
  translate: 0 var(--reveal-shift, 16px);
  filter: blur(var(--reveal-blur, 2px));
}
.reveal-item:focus-visible,
.reveal-item:focus-within {
  opacity: 1;
  translate: none;
  filter: none;
}
.mosaic-source {
  opacity: 0;
  animation-play-state: paused !important;
}
.mosaic-layer {
  position: absolute;
  pointer-events: none;
  display: block;
  z-index: 1;
}
/* The QR uses an intact fade; its scan pattern is never pixelated. */
.qr-button.reveal-item { filter: none; }
@media (prefers-reduced-motion: reduce) {
  .reveal-item, .mosaic-source { opacity: 1; translate: none; filter: none; }
  .mosaic-layer { display: none; }
}
@media print {
  .reveal-item, .mosaic-source { opacity: 1 !important; translate: none !important; filter: none !important; }
  .mosaic-layer { display: none !important; }
}
