system> warming deploy caches…
- Typing
- 2.40s · steps(30, end)
- Blink
- 0.95s · steps(1, end)
A ch-based track lines up with 30 monospace characters. The caret is a separate block element so its blink cadence stays independent of the typing reveal.
.typewriter {
--type-duration: 2.40s;
--type-blink-duration: 0.95s;
}
.typewriter-text {
display: inline-block;
overflow: hidden;
white-space: nowrap;
width: 0;
animation: typewriter-reveal var(--type-duration) steps(30, end) forwards;
}
.typewriter-caret {
animation: typewriter-blink var(--type-blink-duration) steps(1, end) infinite;
}
@keyframes typewriter-reveal {
to { width: 30ch; }
}
@keyframes typewriter-blink {
50% { opacity: 0; }
}