/* Korean line breaking, site-wide.
 *
 * Browsers treat Hangul like Chinese by default (word-break: normal) and
 * allow a line break between any two syllables, so a wrapping Korean label
 * or sentence splits a word in half: "무료 상" / "담 신청", "지도합니" / "다".
 * keep-all limits breaks to spaces and punctuation, which is how Korean is
 * typeset in print and in every Korean app.
 *
 * overflow-wrap: break-word is the safety valve: a single word wider than
 * its line box (한국인공지능올림피아드 on a 390px phone) still breaks at the
 * edge instead of overflowing. It is break-word, not anywhere, on purpose.
 * "anywhere" also shrinks min-content, and in an auto-layout table on a phone
 * that squeezed English course names into one-to-three-letter columns
 * (agentic-engineering-curriculum.html, 390px). break-word leaves intrinsic
 * sizes alone, so tables and flex rows keep the widths they had.
 *
 * The rule sits in :where() so it has zero specificity and only ever sets
 * the inherited default: any page or component rule wins, including the
 * lesson pages' own keep-all and their `.source-url { word-break: break-word }`
 * for long GitHub URLs. There is deliberately no reset for pre/code: one was
 * tried, it out-ranked those component rules and pushed lesson pages to
 * 600px+ wide on a phone, and it split Korean inside <samp> blocks. Code
 * with white-space: pre never wraps anyway, and a component that needs
 * normal breaking declares it itself (lesson-code-ui.css does).
 *
 * Linked from the <head> of every lang="ko" page and from the page
 * generators. tools/qa/add_ko_typography_link.py adds the link to any page
 * that lacks it and reports the ones it skipped.
 */
:where(html:lang(ko)) {
  word-break: keep-all;
  overflow-wrap: break-word;
}
