/* LP 土台 v1 (2026-09-25). Short Japanese text breaks between words, not inside them.
   Every selector is wrapped in :where() so its specificity is zero: any rule the page writes wins, and headings keep the line
   breaks the designer chose (a heading's line break is part of the design, so it is only balanced, never forced).
   Proven on the AIパクくん5 distribution LP v028, where buttons, captions and cards broke as 「受け取/る」「作品の詳/しい」.
   keep-all breaks Japanese only at punctuation and spaces in every browser, so a run with no punctuation that does not fit is
   broken anywhere by overflow-wrap:anywhere. Chrome keeps phrases with word-break:auto-phrase; Safari has no auto-phrase, so
   lp-parts-base.js §5 adds <wbr> at phrase boundaries (every browser then breaks between phrases). keep-all is written first
   and auto-phrase only inside @supports: auto-phrase alone would be word-break:normal in Safari.
   overflow-wrap:anywhere keeps a very long unit from overflowing. */
:where(button, [role="button"], summary, label, figcaption, small, dt, .lp-short, .lp-short *) {
  word-break: keep-all;
  overflow-wrap: anywhere;
  line-break: strict;
  text-wrap: balance;
}
@supports (word-break: auto-phrase) {
  :where(button, [role="button"], summary, label, figcaption, small, dt, .lp-short, .lp-short *) { word-break: auto-phrase; }
}
/* headings: balance the lines only (no forced word rule, so the designer's <br> and wording stay in charge) */
:where(h1, h2, h3, h4) { text-wrap: balance; line-break: strict; }
/* a phrase that must stay on one line: <span class="lp-nw">「/setup」</span>. If the page styles every span in a block
   (e.g. .steps span{display:block}), that rule wins over this one: reset it there, as v028 did with span.nw{all:unset} */
:where(.lp-nw) { white-space: nowrap; }
