/* ════════════════════════════════════════════════════════════════════════════
 * UTILITIES
 * Typewriter chars + magnet primitive
 * ════════════════════════════════════════════════════════════════════════════
 */

/* Typewriter — chars hidden, cascade in when parent .in fires */
.tw-char,.tw-space{display:inline-block;}
.tw-char{opacity:0;transform:translateY(.4em) scale(.92);filter:blur(5px);transition:opacity .42s cubic-bezier(.16,1,.3,1),transform .55s cubic-bezier(.16,1,.3,1),filter .4s cubic-bezier(.16,1,.3,1);transition-delay:calc((var(--i,0) * 22ms) + var(--tw-base,0ms));}
.in .tw-char{opacity:1;transform:none;filter:none;}
.tw-space{width:.28em;white-space:pre;}

/* Magnetism — JS-driven translate3d (no transition, RAF lerp) */
.magnet{will-change:transform;}
