/* ring: commons
 * seed: silk (stagger --ss-silk-stagger 40ms; snap = 0 delay)
 * still: ./still.md
 * reduced: replace (whole line visible — reduced.css; never a half-split)
 * when-not: payload copy (prices, balances, receipts), tables, above-the-fold hero the reader came to read first
 *
 * C-TEXT-SPLIT — chars/words reveal. Split is one layout pass; after that only
 * transform + opacity. 8px rise max (arrival, not a launch). Tokens only.
 * font-kerning none / optimizeSpeed: official SplitText kerning note, CSS-first.
 */

[data-c-split] {
  font-kerning: none;
  text-rendering: optimizeSpeed;
}

[data-c-split-word] {
  display: inline-block;
  white-space: nowrap;
}

[data-c-split-unit] {
  display: inline-block;
}

[data-c-split-armed] [data-c-split]:not([data-split-revealed]) [data-c-split-unit] {
  opacity: 0;
  transform: translateY(8px);
  will-change: transform, opacity;
}

[data-c-split-armed] [data-c-split][data-split-revealed] [data-c-split-unit] {
  opacity: 1;
  transform: translateY(0);
  will-change: auto;
  transition:
    opacity var(--ss-duration, var(--ss-silk-duration, 560ms)) var(--ss-easing, var(--ss-silk-easing, cubic-bezier(0.16, 1, 0.3, 1))),
    transform var(--ss-duration, var(--ss-silk-duration, 560ms)) var(--ss-easing, var(--ss-silk-easing, cubic-bezier(0.16, 1, 0.3, 1)));
  transition-delay: calc(var(--c-split-i, 0) * var(--ss-silk-stagger, 40ms));
}

[data-ss-seed="snap"] [data-c-split][data-split-revealed] [data-c-split-unit] {
  transition-delay: 0ms;
}
