/* Light-writing titles: each letter is drawn as a line of blue light, then fills in. */
.lw { position: relative; }
.lw.lw--on { color: transparent !important; -webkit-text-fill-color: transparent; }
.lw > svg.lw__svg { position: absolute; left: 0; top: 0; width: 100%; height: 100%; overflow: visible; pointer-events: none;
  filter: drop-shadow(0 0 3px rgba(157,214,247,.95)) drop-shadow(0 0 10px rgba(86,176,228,.85)) drop-shadow(0 0 26px rgba(86,176,228,.45)); }
.lw__svg text { fill-opacity: 0; stroke-linecap: round; stroke-linejoin: round; }
.lw__svg .lw__p tspan { stroke: #9DD6F7; stroke-width: 1.8px; stroke-dasharray: var(--g) var(--g); stroke-dashoffset: var(--g); animation: lwG .75s cubic-bezier(.4,0,.3,1) forwards var(--d); }
.lw__svg .lw__h tspan { fill: none; stroke: #fff; stroke-width: 3.6px; stroke-dasharray: calc(var(--g) * .025) var(--g); stroke-dashoffset: var(--g); opacity: 0;
  animation: lwGH .75s cubic-bezier(.4,0,.3,1) forwards var(--d); }
.lw__svg .lw__p { animation: lwFill .5s ease forwards var(--fill, 1.9s); }
@keyframes lwG { to { stroke-dashoffset: 0; } }
@keyframes lwGH { 0% { stroke-dashoffset: var(--g); opacity: 1; } 92% { opacity: 1; } 100% { stroke-dashoffset: calc(var(--g) * -.07); opacity: 0; } }
@keyframes lwFill { to { fill-opacity: 1; } }
@media (prefers-reduced-motion: reduce) { .lw.lw--on { color: inherit !important; -webkit-text-fill-color: currentColor; } .lw > svg.lw__svg { display: none; } }
