/* Preserve the approved baseline: only a broad, slow band changes contrast. */
.portrait-surface {
  position: relative;
}
.ascii-portrait {
  transform: none !important;
  transition: none !important;
}
.portrait-scan {
  position: absolute;
  inset: 0;
  pointer-events: none;
  opacity: 0.18;
  filter: contrast(1.6);
  animation: local-texture-scan 14s linear infinite;
  animation-play-state: paused;
}
.portrait-surface[data-motion="running"] .portrait-scan {
  animation-play-state: running;
}
@keyframes local-texture-scan {
  from {
    clip-path: inset(0 0 100% 0);
  }
  12% {
    clip-path: inset(0 0 82% 0);
  }
  88% {
    clip-path: inset(82% 0 0 0);
  }
  to {
    clip-path: inset(100% 0 0 0);
  }
}
@media (prefers-reduced-motion: reduce) {
  .portrait-scan {
    display: none !important;
    animation: none !important;
  }
}
@media print {
  .portrait-scan {
    display: none !important;
  }
}
