/* Live type reveal: the caret and the no-flash guard. Behaviour + data- knobs: part.js header.
   The caret is the source's: a block glyph a bit smaller than the text, set as an inline-block with line-height 1
   and nudged up .2em, so adding and removing it never changes the height of the line box (the source's comment:
   without that, the neighbouring lines jump when the caret comes off). It blinks with steps(1): fully on for the
   first half of 700ms, fully off for the second, no fade.
   Knobs (on the group, a wrapper, or any ancestor):
     --lt-caret        the caret glyph ("\2588" = a full block; the source's header nav uses "/")
     --lt-caret-size   caret size (.72em = the source's 0.8vw beside its 1.11vw text)
     --lt-caret-gap    space before it (.15em)
     --lt-caret-lift   vertical nudge (-.2em)
     --lt-caret-color  colour (currentColor)
     --lt-blink        blink period (700ms) */
.lt-js .live-type-group:not(.lt-ready) { visibility: hidden; }

.is-live-typing::after {
  content: var(--lt-caret, "\2588");
  display: inline-block;
  font-size: var(--lt-caret-size, .72em);
  line-height: 1;
  margin-left: var(--lt-caret-gap, .15em);
  position: relative;
  top: var(--lt-caret-lift, -.2em);
  color: var(--lt-caret-color, currentColor);
  animation: lt-blink var(--lt-blink, 700ms) steps(1, end) infinite;
}
@keyframes lt-blink {
  0%, 49% { opacity: 1; }
  50%, 100% { opacity: 0; }
}

@media (prefers-reduced-motion: reduce) {
  .is-live-typing::after { animation: none; }
}
