town-name-rotator {
  position: relative;
  display: block;
  height: 1.22em;
  overflow: hidden;
  font-size: clamp(2.5rem, 9vw, 3.5rem);
  line-height: 1.22;
  letter-spacing: -.04em;
}
town-name-rotator .town-current,
town-name-rotator .town-next { display: block; white-space: nowrap; }
town-name-rotator .town-next { position: absolute; inset: 0; visibility: hidden; }
town-name-rotator.is-running .town-current,
town-name-rotator.is-running .town-next {
  filter: blur(var(--town-blur, 0px));
  will-change: transform, filter;
}
town-name-rotator.is-running .town-next { visibility: visible; }
town-name-rotator.is-revealing .town-current { animation: town-arrive 700ms cubic-bezier(.2, .7, .3, 1) both; }
@keyframes town-arrive {
  from { opacity: 0; filter: blur(8px); transform: translateY(8px); }
  to { opacity: 1; filter: blur(0); transform: translateY(0); }
}
@media (prefers-reduced-motion: reduce) {
  town-name-rotator.is-revealing .town-current { animation: none; }
}
