/* LV Typing Suite 6.0.29 — Learn Typing Kruti Dev caret only. */
.lv50-lesson-card[data-lesson-mode="krutidev"] .lv50-kruti-preview.is-focus,
.lv50-check-card[data-mode="krutidev"] .lv50-kruti-preview.is-focus{
  position:relative;
  color:#0f172a!important;
}
/* Empty focused preview: caret at the real first-character position. */
.lv50-lesson-card[data-lesson-mode="krutidev"] .lv50-kruti-preview.is-focus:empty::after,
.lv50-check-card[data-mode="krutidev"] .lv50-kruti-preview.is-focus:empty::after{
  content:"";
  position:absolute;
  left:14px;
  top:14px;
  width:2px;
  height:1.2em;
  background:#0f172a;
  pointer-events:none;
  animation:lvts629LearnKrutiCaret 1s steps(1,end) infinite;
}
/* Once text exists, keep the blinking caret immediately after the preview text. */
.lv50-lesson-card[data-lesson-mode="krutidev"] .lv50-kruti-preview.is-focus:not(:empty)::after,
.lv50-check-card[data-mode="krutidev"] .lv50-kruti-preview.is-focus:not(:empty)::after{
  content:"";
  display:inline-block;
  width:2px;
  height:1.2em;
  margin-left:1px;
  vertical-align:-.16em;
  background:#0f172a;
  pointer-events:none;
  animation:lvts629LearnKrutiCaret 1s steps(1,end) infinite;
}
@keyframes lvts629LearnKrutiCaret{
  0%,49%{opacity:1}
  50%,100%{opacity:0}
}
@media (prefers-reduced-motion:reduce){
  .lv50-lesson-card[data-lesson-mode="krutidev"] .lv50-kruti-preview.is-focus::after,
  .lv50-check-card[data-mode="krutidev"] .lv50-kruti-preview.is-focus::after{animation:none;opacity:1}
}
