@layer overscan {
ov-text { display: inline-block; position: relative; }
.ov-text__sr {
  position: absolute;
  inline-size: 1px;
  block-size: 1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}
.ov-text__cells { display: inline-flex; }
.ov-text__c {
  font-style: normal;
  display: inline-block;
  animation-delay: calc(var(--ov-char) * var(--ov-char-step, 34ms));
  animation-fill-mode: both;
}
@keyframes ov-char-in {
  from { clip-path: inset(0 0 100% 0); transform: translateY(-0.16em); }
  to   { clip-path: inset(0 0 0 0); transform: none; }
}
ov-text[data-ov-effect="cascade"] .ov-text__c {
  animation-name: ov-char-in;
  animation-duration: var(--ov-dur-base, 180ms);
  animation-timing-function: var(--ov-ease);
}
@keyframes ov-char-settle {
  0%   { transform: translate(calc(var(--ov-jx, 0) * 1px), calc(var(--ov-jy, 0) * 1px)); }
  35%  { transform: translate(calc(var(--ov-jx, 0) * -0.55px), calc(var(--ov-jy, 0) * 0.5px)); }
  60%  { transform: translate(calc(var(--ov-jx, 0) * 0.3px), calc(var(--ov-jy, 0) * -0.25px)); }
  82%  { transform: translate(calc(var(--ov-jx, 0) * -0.12px), 0); }
  100% { transform: none; }
}
ov-text[data-ov-effect="settle"] .ov-text__c {
  animation-name: ov-char-settle;
  animation-duration: var(--ov-char-settle-dur, 620ms);
  animation-timing-function: steps(1);
  animation-delay: calc(var(--ov-char) * var(--ov-char-step, 26ms));
}
ov-text[data-ov-effect="decode"] .ov-text__c { animation: none; }
@keyframes ov-char-jitter {
  0%, 92%, 100% { transform: none; }
  94% { transform: translateY(-1px); }
  97% { transform: translateY(1px); }
}
ov-text[data-ov-effect="jitter"] .ov-text__c {
  animation: ov-char-jitter 2.6s steps(1) infinite;
  animation-delay: calc(var(--ov-char) * 90ms);
}
@media (prefers-reduced-motion: reduce) {
  ov-text[data-ov-effect="jitter"] .ov-text__c { animation: none; }
  ov-text[data-ov-effect="settle"] .ov-text__c { animation: none; transform: none; }
  ov-text[data-ov-effect="cascade"] .ov-text__c {
    animation: none;
    clip-path: none;
    transform: none;
  }
}
}
