/* ============================================================
   style-en-common.css — Shared English typography foundation
   ------------------------------------------------------------
   Loaded on EVERY English page (top + all sub-pages), AFTER the
   Japanese stylesheets so it wins on the cascade.

   Why this exists:
   The Japanese CSS (style.css / assets/css/style.css) applies
   `line-break: anywhere` to p/li and related text blocks to pull
   Japanese lines flush to the right edge. That rule is correct for
   Japanese, but for English it breaks words at arbitrary points
   ("stor / es", "representa / tives"). Here we restore proper
   English line-breaking site-wide: never split inside a word, never
   hyphenate; only wrap between whole words.

   Scope: everything is under html[lang="en"], so Japanese and other
   languages are completely unaffected. To reuse for another Latin
   language, copy this file and swap html[lang="en"].
   ============================================================ */

/* --- Core rule: never break inside a word (overrides line-break:anywhere) --- */
html[lang="en"] body,
html[lang="en"] p,
html[lang="en"] li,
html[lang="en"] dd,
html[lang="en"] dt,
html[lang="en"] td,
html[lang="en"] th,
html[lang="en"] a,
html[lang="en"] span,
html[lang="en"] em,
html[lang="en"] b,
html[lang="en"] strong,
html[lang="en"] small,
html[lang="en"] h1,
html[lang="en"] h2,
html[lang="en"] h3,
html[lang="en"] h4,
html[lang="en"] blockquote,
html[lang="en"] figcaption {
  word-break: normal !important;   /* not break-all / keep-all */
  overflow-wrap: break-word;       /* wrap between words; break only unbreakable tokens */
  word-wrap: break-word;
  -webkit-hyphens: none;
  hyphens: none;                   /* never hyphenate */
  line-break: auto !important;     /* cancel the JA `line-break: anywhere` */
}

/* --- Long single tokens (e.g. long URLs) may still need a soft break,
       but normal English words must not. anywhere -> normal everywhere. --- */
html[lang="en"] .info-section p,
html[lang="en"] .info-section td,
html[lang="en"] .info-section li,
html[lang="en"] .news-article p,
html[lang="en"] .news-article__body p,
html[lang="en"] .cannes-lead__catch,
html[lang="en"] .cannes-lead__sub,
html[lang="en"] .cannes-lead__body,
html[lang="en"] .cannes-quote__lead,
html[lang="en"] .cannes-founder__text p,
html[lang="en"] .cannes-founder__pull,
html[lang="en"] .cannes-lead-line,
html[lang="en"] .cannes-next p,
html[lang="en"] .cannes-voices__note,
html[lang="en"] .cannes-summary__row dd,
html[lang="en"] .site-footer__notes p,
html[lang="en"] .channel-card-large__title-ja,
html[lang="en"] .channel-card-large__sub,
html[lang="en"] .channel-card-large__desc,
html[lang="en"] .channel-card-large__list,
html[lang="en"] .why-card__text,
html[lang="en"] .event-card__desc,
html[lang="en"] .event-card__meta,
html[lang="en"] .process-step__desc {
  line-break: auto !important;
  word-break: normal !important;
  overflow-wrap: break-word;
}

/* The "full ingredient list" is one very long comma-separated string of
   INCI names. Allow it to wrap naturally between names/commas without
   splitting an individual INCI name across lines where avoidable. */
html[lang="en"] .info-section p {
  overflow-wrap: break-word;
}
