.arc-plan-reveal { max-width: 24ch; margin: 0; overflow: visible; color: var(--foreground); text-wrap: balance; }
.arc-plan-line { display: block; }
/* The clip hides the rise below the line through a feathered bottom edge, so a blurred word surfaces softly instead of being cut by a hard line.
   Padding with matching negative margins leaves room for descenders and the blur without changing layout; the feather sits below the descenders, so resting words are never dimmed. */
.arc-plan-clip { display: inline-block; vertical-align: top; padding: .1em .16em .24em; margin: -.1em -.16em -.24em; mask-image: linear-gradient(#000 calc(100% - .18em), transparent); }
/* Three tracks: the rise settles longest, the fade finishes first, and the blur clears between them.
   Backwards fill holds the hidden start through each word's delay, then lets go at the end, so resting words keep no transform or filter layer and render as crisp as plain text. */
.arc-plan-word { display: inline-block; animation: arc-plan-rise .76s var(--ease-enter) var(--reveal-delay, 0s) backwards, arc-plan-fade .44s var(--ease-standard) var(--reveal-delay, 0s) backwards, arc-plan-focus .58s var(--ease-enter) var(--reveal-delay, 0s) backwards; }
.arc-plan-srOnly { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; user-select: none; }
@keyframes arc-plan-rise { from { transform: translateY(.62em); } }
@keyframes arc-plan-fade { from { opacity: 0; } }
@keyframes arc-plan-focus { from { filter: blur(var(--reveal-blur, 4px)); } }
@media (prefers-reduced-motion: reduce) { .arc-plan-clip { mask-image: none; } .arc-plan-word { animation: arc-plan-fade var(--duration-fast) var(--ease-standard) backwards; } }

.plan-cue .arc-plan-reveal{max-width:none;color:inherit;--ease-enter:cubic-bezier(.16,1,.3,1);--ease-standard:cubic-bezier(.22,1,.36,1);--duration-fast:.16s;text-wrap:wrap}
