/* peso-energia — weight as energy. Geist's wght axis is the reaction coordinate.
   These rules only match nodes the engine creates (.k-split / .k-word / .k-char),
   so with no JS, no SplitText or no Geist nothing here applies and display type
   stays at 900 through the base `font-weight: var(--w, 900)`. */

/* Also registered in styles.css; repeated here so this feature stands on its own. */
@property --w {
  syntax: "<number>";
  inherits: true;
  initial-value: 900;
}

/* Words never break inside; widths come from their chars. */
.k-word {
  display: inline-block;
  white-space: nowrap;
  font-weight: var(--w, 900);
}

/* Each char is a fixed-width box measured at 900 (inline width set by the lock pass),
   so thinner glyphs never re-wrap a line. Style containment only: layout containment
   would drop the inline-block baseline and lift every glyph off the line. */
.k-char {
  display: inline-block;
  font-weight: var(--w, 900);
  contain: style;
}

/* Reduced motion switched on mid-session: animated blocks fall back to 900.
   Static blocks (the lens image) keep their computed weights by design. */
@media (prefers-reduced-motion: reduce) {
  .k-split:not(.k-static) .k-word,
  .k-split:not(.k-static) .k-char {
    font-weight: 900;
  }
}
