/* Geometry-derived clips share the laser's existing eight-second sweep. */
.customer-finale[data-scan="running"] .scan-content {
 animation: finale-content-laser 8s cubic-bezier(.3,.05,.2,1) 0s both;
}
.customer-finale[data-scan="running"] .panel-trace rect,
.customer-finale[data-scan="running"] .finale-icon path {
 animation: finale-trace var(--scan-duration, 1.1s) linear var(--scan-delay, .65s) both;
}
@keyframes finale-content-laser {
 0% { clip-path: polygon(0 0, 100% 0, 100% calc(-24px - var(--scan-content-top)), 0 calc(-24px - var(--scan-content-top))); }
 10% { clip-path: polygon(0 0, 100% 0, 100% calc(-20px - var(--scan-content-top)), 0 calc(-20px - var(--scan-content-top))); }
 100% { clip-path: polygon(0 0, 100% 0, 100% calc(var(--scan-distance) - var(--scan-content-top)), 0 calc(var(--scan-distance) - var(--scan-content-top))); }
}
/* Move this single absolute line on the same rendering phase as clip-path.
   Safari can otherwise composite its transform one frame behind the reveal. */
@keyframes finale-laser-sweep {
 0% { opacity: 0; top: -24px; transform: scaleX(.12); }
 10% { opacity: 1; top: -20px; transform: scaleX(1); }
 85% { opacity: 1; }
 100% { opacity: 0; top: var(--scan-distance); transform: scaleX(1); }
}
@media (prefers-reduced-motion: reduce) {
 .customer-finale .scan-content { clip-path: none !important; animation: none !important; }
}
