/* HICHEM PUBLIC — LANGUAGE EDITION PROFILES
   ═══════════════════════════════════════════════════════════════════════════

   A language edition is not the English site with the strings swapped. Each
   writing system arrives with its own density, glyph proportions, rhythm, line
   length, punctuation and breaking rules, and a metric that flatters one script
   can quietly damage another.

   The target here is OPTICAL PARITY, not arithmetic equality: the same
   authority, calm, hierarchy and density in every edition. Where a value is
   right for all seven it is not repeated — silence in this file means "same as
   base", and that is the commonest and most respectable answer.

   Every declaration below exists because something was measured. The reasons
   are kept next to the values, because a number without its reason is the thing
   that gets "tidied up" a year from now.

   What made this file necessary: before it, there was not a single :lang() or
   [lang] selector anywhere in the stylesheets. The Latin display metrics — the
   -0.05em tracking, the sub-1.0 leading, the 12px label floor, the 14em measure
   — were being applied to Han, Kana, Hangul and Arabic without anyone having
   decided that they should be.

   Loaded last, so it wins on source order without needing !important.
   ═══════════════════════════════════════════════════════════════════════════ */


/* ── ARABIC ─────────────────────────────────────────────────────────────────
   Direction, shaping and bidi live in section 21 of surface-v26.css. This is
   the type calibration only.

   The serif role was landing on Times New Roman by accident: Georgia and
   Cambria carry no Arabic at all, so every Arabic paragraph fell through the
   stack to the first face that did — and mixed two fonts inside one paragraph
   (measured: Times New Roman x58 runs + Georgia x16 in the same body copy).
   Times New Roman's Arabic is a Latin-metric face: it set the sample line in
   440px with 1087 ink units against Dubai's 491px and 1577, i.e. it was
   carrying about 46% less ink than the English Georgia at the same size, which
   is exactly the loss of authority the parity target forbids.

   The label role was worse, and it was ours: Cascadia Mono contains Arabic and
   monospaces it. Every letter forced into one advance sets the label 49% wider
   and stretches each cursive join into a long flat kashida — the joining looks
   broken because we asked a monospace to set a cursive script. The @font-face
   below is not a download: src:local() names the installed face and the
   unicode-range confines it to Latin, punctuation and symbols, so the Latin
   keeps Cascadia and the Arabic falls through to a proportional face. */
@font-face{
  font-family:"Cascadia Mono Latin";
  src:local("Cascadia Mono"), local("Cascadia Mono Regular");
  unicode-range:U+0000-024F,U+0370-04FF,U+2000-206F,U+2100-21FF,U+2500-25FF,U+2600-27BF;
  font-display:swap;
}
html[lang="ar"]{
  --serif:Georgia,Cambria,"Dubai","Segoe UI","Times New Roman",serif;
  /* Every other edition ends its mono stack with a family that can actually
     draw its script — YaHei for Chinese, Yu Gothic for Japanese, Malgun for
     Korean. Arabic ended with "Segoe UI", which has no weight-900 face, so the
     ACE gate verdict fell past monospace to the browser default and was painted
     in TIMES NEW ROMAN: a Latin serif, inside a component whose entire design
     language is monospace. Measured with CDP CSS.getPlatformFontsForNode on
     /ar/cabinet — 5 glyphs, Times New Roman, at 900; the same element at a
     lighter weight resolved correctly to Segoe UI Semibold, which is why it
     never looked like a font bug.

     Three named Arabic faces with real bold coverage, one per platform, in the
     same shape as the other four editions. */
  --mono:"Cascadia Mono Latin",ui-monospace,"Segoe UI Mono",Consolas,"Segoe UI",Tahoma,"Geeza Pro","Noto Sans Arabic",monospace;
  /* --sans is unchanged: at weight 600 it already resolves to Segoe UI
     Semibold for Arabic, which holds the hero well. */
}
/* Light-on-dark optically thins a stroke, and Arabic strokes are thinner to
   begin with. Measured on carbon at 17px: regular 2392 ink units, medium 2716.
   Applied only to the dark rooms, and only now that the face is a real one. */
html[lang="ar"] .room--dark p,
html[lang="ar"] .room--dark dd,
html[lang="ar"] .room--dark li,
html[lang="ar"] .aperture__list li,
html[lang="ar"] .legend dd,
html[lang="ar"] .plate--dark .plate__caption,
html[lang="ar"] .receipt-copy p{font-weight:500}

/* Arabic has no italic. <em> was being synthetically sheared by the rasterizer,
   which reads as a rendering fault rather than as emphasis. */
html[lang="ar"] .statement em,
html[lang="ar"] .hero__title em,
html[lang="ar"] em{font-style:normal}

/* The version stamp was being reordered in Arabic: "معاينة 2.6.3 · 2026-08-20"
   drawn as "20-08-2026 · 2.6.3 معاينة". The version survived; the date did not.

   direction:ltr on the whole element did NOT fix it, and that is recorded here
   because it looks as though it should. The Arabic word is INSIDE the isolate,
   so UAX#9 rule W2 still reclassifies the digits that follow it as Arabic-Number,
   the hyphens stop binding them into one number, and the three segments reorder.

   The fix is architectural and lives in the markup: a version stamp is an
   invariant artifact, not prose, so it is no longer inside a translated string.
   It sits in its own <bdi>, isolated from whatever precedes it in any edition,
   which is why no language-specific rule is needed here at all. */


/* ── SIMPLIFIED CHINESE ─────────────────────────────────────────────────────
   Nothing was declared, so every Han glyph was placed by whatever the reader's
   browser had set as its Chinese default — the typography of this edition was
   not authored, it was delegated. Naming the faces also closes the Japanese
   fallback risk structurally rather than trusting the lang attribute alone.

   Measured typographic darkness before calibration: hero claim 35.32% ink
   against English 18.35% — 1.92x. Section headings 41.88% against 19.53% in a
   box 38% narrower. That is the density the calibration has to answer. */
html[lang="zh-CN"]{
  --sans:"Segoe UI Variable Display","Segoe UI","YaHei Han","Microsoft YaHei UI","Microsoft YaHei","PingFang SC","Hiragino Sans GB",system-ui,-apple-system,sans-serif;
  --serif:Georgia,Cambria,"Iowan Old Style","Source Han Serif SC","Noto Serif CJK SC","Songti SC","SimSun","NSimSun","Microsoft YaHei UI","Microsoft YaHei",serif;
  --mono:"Cascadia Mono",ui-monospace,"Segoe UI Mono","SF Mono",Menlo,Consolas,"YaHei Han","Microsoft YaHei UI","Microsoft YaHei",monospace;
  /* A Latin cap at 12px is ~8px tall carrying two or three strokes; a Han glyph
     at 12px carries up to twenty inside the same box. The 12px floor was
     measured on Latin and does not transfer. */
  --t-micro:13px;
}
/* Negative tracking is a Latin device: it closes sidebearings between letters
   drawn to sit close. Han glyphs carry almost none to give back — at 66.96px
   the -0.05em removes 3.348px from a gap of roughly 4.7px, leaving measured
   clear gaps of 1-3px and, on the boundary headline, 13 of 14 boundaries at
   zero clear pixels. The glyphs collide. */
html[lang="zh-CN"] .hero__title,
html[lang="zh-CN"] .hero__claim,
html[lang="zh-CN"] .statement,
html[lang="zh-CN"] .statement--study,
html[lang="zh-CN"] .lead,
html[lang="zh-CN"] .big-serif,
html[lang="zh-CN"] .readout h3,
html[lang="zh-CN"] .region-readout h3,
html[lang="zh-CN"] .agent-card h3,
html[lang="zh-CN"] .corpus-panel h3,
html[lang="zh-CN"] .judgment__seal strong,
html[lang="zh-CN"] .message-sheet p,
html[lang="zh-CN"] .law-moment__line{letter-spacing:normal}

/* Microsoft YaHei ships Light 300 / Regular 400 / Bold 700 and no semibold, so
   CSS 600 matched UP to Bold — a full step past what 600 means on Segoe UI
   Variable Display. 500 lands on Regular and restores the intended weight. */
html[lang="zh-CN"] .hero__title,
html[lang="zh-CN"] .hero__claim,
html[lang="zh-CN"] .statement,
html[lang="zh-CN"] .statement--study,
html[lang="zh-CN"] .readout h3,
html[lang="zh-CN"] .region-readout h3,
html[lang="zh-CN"] .agent-card h3,
html[lang="zh-CN"] .judgment__seal strong{font-weight:500}

/* The same synthesis, one tier down and far more damaging: every micro-label on
   the site is 600 mono, and the mono fallback has no bold face at all, so
   DirectWrite smears one. At 12-13px on a glyph carrying fifteen strokes the
   counters fill in and the label stops being legible. */
html[lang="zh-CN"] .kicker,
html[lang="zh-CN"] .meta,
html[lang="zh-CN"] .tag,
html[lang="zh-CN"] .door__kind,
html[lang="zh-CN"] .door__exit,
html[lang="zh-CN"] .plate__title,
html[lang="zh-CN"] .plate__section-label,
html[lang="zh-CN"] .aperture__label,
html[lang="zh-CN"] .quiet-link,
html[lang="zh-CN"] .hero__routes a,
html[lang="zh-CN"] .room__aside,
html[lang="zh-CN"] .topbar__inner,
html[lang="zh-CN"] .surface-dock,
html[lang="zh-CN"] .footer__inner,
html[lang="zh-CN"] .agent-card dt,
html[lang="zh-CN"] .segmented button,
html[lang="zh-CN"] .node-list button,
html[lang="zh-CN"] .region-list button strong,
html[lang="zh-CN"] .prefs__toggle{font-weight:500}
html[lang="zh-CN"] .prefs__toggle b{font-weight:500}
html[lang="zh-CN"] .prefs__toggle{min-width:4.75em}

/* Latin display leading below 1.0 works because caps and x-height sit well
   inside the em. Han fills it: at 66.96px on 69.30px the hero had 2.3px of
   interline space and the lines touched. */
html[lang="zh-CN"] .hero__title{line-height:1.12}
html[lang="zh-CN"] .hero__claim{line-height:1.18}
html[lang="zh-CN"] .statement,
html[lang="zh-CN"] .statement--study{line-height:1.15}
html[lang="zh-CN"] .lead{line-height:1.5}
/* Georgia at 16px puts an 11px ink band into a 25.6px slot; Han fills the full
   16px em, so the same ratio leaves about 40% less interline air. */
html[lang="zh-CN"] body{line-height:1.8}
html[lang="zh-CN"] .body-copy,
html[lang="zh-CN"] .door__line,
html[lang="zh-CN"] .plate__caption,
html[lang="zh-CN"] .aperture__legend-lead{line-height:1.85}
html[lang="zh-CN"] .aperture__list li,
html[lang="zh-CN"] .legend dd,
html[lang="zh-CN"] .agent-card dd{line-height:1.8}

/* Short-label tracking is a real Chinese convention and is kept — but Han has
   no word space to absorb it, and the site is full of two-character labels
   where .17em reads as a gap between two separate words. */
html[lang="zh-CN"] .aperture__label,
html[lang="zh-CN"] .plate__title,
html[lang="zh-CN"] .plate__section-label{letter-spacing:.14em}
html[lang="zh-CN"] .kicker,
html[lang="zh-CN"] .meta,
html[lang="zh-CN"] .topbar__inner,
html[lang="zh-CN"] .surface-dock{letter-spacing:.12em}

/* In CJK 1em is exactly one character, so 14em is fourteen characters per line,
   not the ~30 the same value buys in Latin. */
html[lang="zh-CN"] .statement,
html[lang="zh-CN"] .statement--study{max-width:20em}
html[lang="zh-CN"] .hero__claim{max-width:20em}
html[lang="zh-CN"] .region-readout h3,
html[lang="zh-CN"] .agent-card h3{max-width:16em}

/* Chinese has no italic; <em> was being sheared synthetically. */
html[lang="zh-CN"] em,
html[lang="zh-CN"] .statement em,
html[lang="zh-CN"] .hero__title em{font-style:normal}


/* ── JAPANESE ───────────────────────────────────────────────────────────────
   The house hierarchy is serif body / sans display / mono label. In Japanese
   all three were resolving to one gothic, so the page carried ONE voice where
   English carries three. Georgia leads each stack so Latin runs inside Japanese
   paragraphs keep the house face; the Japanese glyphs then look for a mincho for
   the body and a gothic for display, which is the same distinction in Japanese
   terms rather than a translation of it.

   HONEST LIMIT, verified on this machine: no mincho is installed. C:/Windows/
   Fonts carries YuGoth{B,L,M,R}, msgothic and msyh — and no Yu Mincho, no MS
   PMincho. So on a stock non-Japanese Windows the serif role still falls back to
   a gothic and the Japanese edition carries two voices where English carries
   three. The mincho names are kept because they are correct wherever the face
   exists (Japanese-locale Windows, macOS with Hiragino), and they cost nothing
   where it does not. Closing the gap everywhere would mean shipping a webfont,
   and this site deliberately loads none — that is an owner decision, not a
   thing to smuggle in through a stylesheet. */
html[lang="ja"]{
  --sans:"Segoe UI Variable Display","Segoe UI","Yu Gothic UI","Yu Gothic","Hiragino Sans","Noto Sans JP",system-ui,-apple-system,sans-serif;
  --serif:Georgia,Cambria,"Yu Mincho","YuMincho","Hiragino Mincho ProN","BIZ UDMincho","Noto Serif JP","MS PMincho","Times New Roman",serif;
  --mono:"MonoArrowJA","Cascadia Mono",ui-monospace,"Segoe UI Mono","SF Mono",Menlo,Consolas,"BIZ UDGothic","Yu Gothic UI","Yu Gothic",monospace;
}
/* Equal px is not equal optical size: Segoe UI Variable's cap-height is about
   0.70em, a kanji occupies about 0.88em of its em box, so at identical px the
   Japanese headline reads about a quarter larger and louder. */
html[lang="ja"] .hero__claim{font-size:clamp(40px,4.09vw,67px);line-height:1.28}
html[lang="ja"] .hero__title{font-size:clamp(48px,6.2vw,92px);line-height:1.18}
html[lang="ja"] .statement,
html[lang="ja"] .statement--study{font-size:clamp(34px,4.05vw,58px);line-height:1.26}
html[lang="ja"] .readout h3,
html[lang="ja"] .region-readout h3,
html[lang="ja"] .agent-card h3,
html[lang="ja"] .corpus-panel h3{line-height:1.30}
html[lang="ja"] .judgment__seal strong{line-height:1.25}
/* the large serif lines become mincho, which conventionally takes more 行間 */
html[lang="ja"] .law-moment__line,
html[lang="ja"] .plate__verdict,
html[lang="ja"] .message-sheet p,
html[lang="ja"] .anatomy__test b,
html[lang="ja"] .big-serif{line-height:1.50}
html[lang="ja"] .cite__q{line-height:1.60}
html[lang="ja"] body{line-height:1.8}
html[lang="ja"] .body-copy,
html[lang="ja"] .door__line,
html[lang="ja"] .aperture__legend-lead,
html[lang="ja"] .plate__caption{line-height:1.85}

/* A Japanese glyph is drawn inside a full em box with a built-in inset, so
   negative tracking cuts into the glyph's own breathing room rather than into
   sidebearing. palt is the typographically correct instrument: it applies the
   font's own proportional metrics instead of a blanket subtraction. */
html[lang="ja"] .hero__claim,
html[lang="ja"] .hero__title,
html[lang="ja"] .statement,
html[lang="ja"] .statement--study,
html[lang="ja"] .region-readout h3,
html[lang="ja"] .agent-card h3,
html[lang="ja"] .judgment__seal strong,
html[lang="ja"] .lead,
html[lang="ja"] .big-serif,
html[lang="ja"] .law-moment__line,
html[lang="ja"] .plate__verdict,
html[lang="ja"] .cite__q,
html[lang="ja"] .anatomy__test b{letter-spacing:normal;font-feature-settings:"palt" 1}

/* Yu Gothic's installed ramp is 300/400/500/700, so 600 resolved UP to Bold
   while English got a true 600. Yu Gothic UI leads the stack for this reason;
   500 keeps the display tier off the synthesised step. */
html[lang="ja"] .hero__claim,
html[lang="ja"] .hero__title,
html[lang="ja"] .statement,
html[lang="ja"] .statement--study{font-weight:500}

/* line-break:auto resolves to `normal` for Japanese, the LOOSEST prohibition
   set, which explicitly permits a break before the prolonged sound mark ー,
   small kana and 〜. strict resolves those to non-starters. This is kinsoku. */
html[lang="ja"]{line-break:strict}

/* Japanese has no italic; a sheared kanji reads as a rendering fault. The
   second voice comes from the mincho/gothic switch instead. */
html[lang="ja"] em,
html[lang="ja"] .statement em,
html[lang="ja"] .hero__title em{font-style:normal}

/* Japanese has no spaces, so the breaker deposits one- and two-glyph last
   lines at any permitted boundary. */
html[lang="ja"] .statement,
html[lang="ja"] .statement--study,
html[lang="ja"] .aperture__legend-lead,
html[lang="ja"] .plate__verdict,
html[lang="ja"] .anatomy__test b,
html[lang="ja"] .cite__q,
html[lang="ja"] .law-moment__line{text-wrap:balance}
html[lang="ja"] .body-copy,
html[lang="ja"] .door__line,
html[lang="ja"] .plate__caption,
html[lang="ja"] .legend dd,
html[lang="ja"] .aperture__list li{text-wrap:pretty}

/* The five legend labels are 7/2/3/3/4 glyphs in Japanese against 15/8/14/11/7
   characters in English, so the chips came out at wildly different widths and
   the legend lost its column. */
html[lang="ja"] .legend dt .tag{min-width:10.5em;text-align:center}


/* ── KOREAN ─────────────────────────────────────────────────────────────────
   No Korean family was named anywhere, so every Hangul glyph was placed by
   last-resort fallback — and Georgia was still winning the Latin runs inside
   the same paragraph, so body copy was being set in two faces at once
   (measured: Malgun Gothic x30 runs + Georgia x13). */
html[lang="ko"]{
  --sans:"Segoe UI Variable Display","Segoe UI","Malgun Gothic","Apple SD Gothic Neo","Noto Sans KR",system-ui,-apple-system,"Helvetica Neue",Arial,sans-serif;
  --serif:Georgia,Cambria,"Iowan Old Style","Batang","Gungsuh","Nanum Myeongjo","Noto Serif KR","Malgun Gothic","Apple SD Gothic Neo","Times New Roman",serif;
  --mono:"Cascadia Mono",ui-monospace,"Segoe UI Mono","SF Mono",Menlo,Consolas,"Malgun Gothic","Apple SD Gothic Neo",monospace;
}
/* The single most damaging defect in this edition, and it is Korean-specific.
   Korean is a spaced script: the eojeol — word plus its particle — is the
   reading unit. UAX#14 treats Hangul syllables as ID and allows a break between
   any two of them, so words were being torn mid-eojeol in every one of the
   seven captured locations. keep-all restores the space as the break point. */
html[lang="ko"] body{word-break:keep-all;overflow-wrap:break-word}
/* The plates reproduce Latin artifacts, and their repo paths and URLs must keep
   exactly the breaking they have in every other edition. */
html[lang="ko"] .plate__body,
html[lang="ko"] .plate__doc,
html[lang="ko"] .plate__code,
html[lang="ko"] .plate__ascii,
html[lang="ko"] .plate__origin,
html[lang="ko"] pre,
html[lang="ko"] code,
html[lang="ko"] .lineage a{word-break:normal;overflow-wrap:anywhere}

/* A Hangul syllable block occupies ~0.95em of the em box against Latin display
   text's ~0.75em, so at an identical line-height the Korean lines lost almost
   all their interline white: measured 1px of white on a 64px pitch against
   English's 15px. */
html[lang="ko"] .hero__claim,
html[lang="ko"] .hero__title,
html[lang="ko"] .statement,
html[lang="ko"] .statement--study{line-height:1.22}
html[lang="ko"] .readout h3,
html[lang="ko"] .region-readout h3,
html[lang="ko"] .agent-card h3,
html[lang="ko"] .corpus-panel h3,
html[lang="ko"] .law-moment__line,
html[lang="ko"] .judgment__seal strong{line-height:1.3}
html[lang="ko"] body{line-height:1.75}
html[lang="ko"] .body-copy,
html[lang="ko"] .door__line,
html[lang="ko"] .aperture__legend-lead,
html[lang="ko"] .plate__caption{line-height:1.8}

/* 0.9 on the display tier only. Malgun Gothic ships Regular and Bold with no
   semibold, so 600 synthesises toward Bold and the Korean display tier ran
   both larger in apparent size and heavier than the English it sits beside. */
html[lang="ko"] .hero__claim{font-size:clamp(41px,4.2vw,68px)}
html[lang="ko"] .hero__title{font-size:clamp(49px,6.3vw,94px)}
html[lang="ko"] .statement,
html[lang="ko"] .statement--study{font-size:clamp(34px,4.15vw,59px)}
/* NOT font-weight:500. Malgun Gothic's installed ramp is 300/400/700 — there is
   no 500 and no 600 — so 500 matches DOWN to Regular while English gets a true
   variable 600, and the edition came out measurably lighter than the house:
   hero stem 5.0px against 9.0px, ink 13.15% against 19.31% on the carbon
   Boundary headline. The size correction above is right and stays; the weight
   correction was wrong and the base 600 is restored. */
html[lang="ko"] .hero__claim,
html[lang="ko"] .hero__title,
html[lang="ko"] .statement,
html[lang="ko"] .statement--study{font-weight:600}

/* In Hangul the syllable block IS the reading unit and the gap between blocks
   carries the word boundary. Negative tracking closes the wrong gap. */
html[lang="ko"] .hero__claim,
html[lang="ko"] .hero__title,
html[lang="ko"] .statement,
html[lang="ko"] .statement--study,
html[lang="ko"] .region-readout h3,
html[lang="ko"] .agent-card h3,
html[lang="ko"] .lead,
html[lang="ko"] .law-moment__line{letter-spacing:normal}

/* text-transform:uppercase is inert on Hangul, so tracking was the only thing
   left carrying the label register — but .24em between complete syllable
   blocks reads as a word space: 공개 became 공 개. */
html[lang="ko"] .aperture__label{letter-spacing:.08em}
html[lang="ko"] .meta,
html[lang="ko"] .kicker,
html[lang="ko"] .room__aside,
html[lang="ko"] .quiet-link,
html[lang="ko"] .hero__routes a,
html[lang="ko"] .footer__inner,
html[lang="ko"] .surface-dock,
html[lang="ko"] .anatomy__label,
html[lang="ko"] .anatomy__test,
html[lang="ko"] .plate__section-label,
html[lang="ko"] .prefs__label,
html[lang="ko"] .door__kind,
html[lang="ko"] .topbar__state,
html[lang="ko"] .readout__meta,
html[lang="ko"] .plate__scope,
html[lang="ko"] .plate__title,
html[lang="ko"] .corpus-tabs button,
html[lang="ko"] .agent-tabs button,
html[lang="ko"] .segmented button,
html[lang="ko"] .tag{letter-spacing:.06em}

/* '켬' is one syllable where 'Live' is four letters, so the toggle collapsed to
   a 37x32 near-square beside a 103px select and stopped reading as a labelled
   control. A minimum inline size restores the silhouette; dropping the tracking
   removes the trailing letter-space that pushes a single centred glyph off centre. */
html[lang="ko"] .prefs__toggle{min-width:4.75em;letter-spacing:normal}

/* Georgia has no Hangul and Malgun Gothic has no italic, so <em> was rendering
   as a synthetic oblique — the Korean half of seven Cabinet headings was
   slanted Hangul, which Korean typography does not use for emphasis. */
html[lang="ko"] em,
html[lang="ko"] .statement em,
html[lang="ko"] .hero__title em{font-style:normal}

html[lang="ko"] .statement,
html[lang="ko"] .statement--study,
html[lang="ko"] .law-moment__line{text-wrap:balance}


/* ── SPANISH ────────────────────────────────────────────────────────────────
   Same script, same faces, same metrics — the font stack and the type scale are
   deliberately unchanged. Spanish only runs longer than English, and every
   correction below is about that length, not about the script. */
@media (min-width:1261px){
  /* the three-door row lost its baseline: door 1 sets two lines where doors 2
     and 3 set three, hanging its tag chip 26px above the others */
  html[lang="es"] .door__line{min-height:4.8em}
  /* the third card ran a line shorter, so the fan lost its baseline */
  html[lang="es"] .hypotheses article p{min-height:4.5em}
}
@media (min-width:761px){
  /* «Artefacto público» needs 172px against a 160px cap, so the first legend
     chip broke to two lines and stood 40px tall beside four 28px chips */
  html[lang="es"] .legend>div{grid-template-columns:minmax(120px,11.5rem) minmax(0,1fr)}
}
@media (max-width:400px){
  /* «Sistemas · pensamiento · obra escogida» wrapped and stranded one word
     directly above the hero claim — the first thing on the page */
  html[lang="es"] .hero .kicker{letter-spacing:.10em}
}
/* the Spanish scope line needs 451px in a 436px column; the tracking is the
   part that is decorative here, so it is the part that goes */
html[lang="es"] .plate__scope{letter-spacing:normal}


/* ── FRENCH ─────────────────────────────────────────────────────────────────
   Font stack and metrics unchanged: French adds only Latin-1, the oe ligature,
   guillemets and the narrow no-break space to the English repertoire, and all
   three faces carry them. French runs longer than English, so it widows more at
   the same measure — which the base text-wrap rules in section 22 now handle
   for every edition. The French-specific work was in the copy: the typographic
   apostrophe and the narrow no-break space before high punctuation. */


/* ── ENGLISH ────────────────────────────────────────────────────────────────
   The source edition. Its one profile-level change is the mono role: the stack
   led with ui-monospace, which Chromium maps to Cascadia Mono on Windows 11 but
   to Consolas on Windows 10. Those two differ in x-height and stroke weight,
   and mono carries every kicker, tag, plate field and route label on this site
   — so the same page had two different typographic densities depending on the
   reader's OS build. Naming the face makes the label tier deterministic. */
:root{
  --mono:"Cascadia Mono",ui-monospace,"Segoe UI Mono","SF Mono",Menlo,Consolas,monospace;
}


/* ── THE HERO CLAIM, EVERY EDITION BUT ENGLISH ──────────────────────────────
   Section 22 of surface-v26.css deliberately withholds text-wrap:balance from
   .hero__claim to protect the English staircase — three descending lines and a
   .48em indent that are authored, not accidental. That exclusion is right for
   English and wrong for everyone else: four reviewers reported the same line as
   four different symptoms.

   Measured at 1440, last line as a share of the measure, without / with balance:
     fr    12% -> 59%   the orphan "lui." rejoins "autour de lui."
     zh-CN 23% -> 68%   孤字 "西。" rejoins "它造出东西。"
     ja    22% -> 68%   the stub "ける。" rejoins its clause
     es    46% -> 59%
     ar    84% -> 84%   no effect; already composed
     ko    76% -> 76%   no effect; already composed
     en    43% -> 68%   which is precisely the staircase being flattened

   So the fix is real for six editions and harmful for the seventh. It is scoped
   by :not([lang="en"]) rather than applied to all and then walked back, because
   the English exclusion is the deliberate one. Same house, not same coordinates. */
html:not([lang="en"]) .hero__claim{text-wrap:balance}

/* The legend label track is sized against a 155px Latin chip. Arabic tags run
   roughly half that, so 80-115px of the column stood empty between each label
   and its value. Retuned to clear the widest measured Arabic chip (80.9px) with
   23px to spare — these are legend tags, never language endonyms, so nothing
   here can truncate a language name. Mirrors the Spanish override above, which
   corrects the same track in the opposite direction. */
@media (min-width:761px){
  html[lang="ar"] .legend>div{grid-template-columns:minmax(88px,6.5rem) minmax(0,1fr)}
}

/* -- ENGLISH --
   English is otherwise the unwritten base of this file. These two are optical
   calls on where a line breaks, not script calibration, and they are scoped
   here so no other edition inherits an English rag decision. */

/* The h1 is the only display block on the site that does not carry the
   balancing the house already applies to every h2 and to the law line. Applied
   to the first sentence only: on .hero__claim itself it would flatten the
   authored descending staircase. */
html[lang="en"] .hero__claim span:first-child{text-wrap:balance}

@media (min-width:761px){
  /* the break fell inside a clause and the sentence boundary landed mid-line-2,
     in the section that argues most precisely about what is and is not shown.
     A wrapping measure, not a truncating cap. */
  html[lang="en"] .room[data-species="aperture"] .statement{max-width:11em;text-wrap:pretty}
}

/* -- JAPANESE, continued --
   The exit arrow came from a fallback face and set ~30% larger than the house
   arrow. Confining a named symbol face to the four arrow codepoints fixes the
   glyph without touching a single Japanese character. */
@font-face{font-family:"MonoArrowJA";src:local("Segoe UI Symbol"),local("Consolas");unicode-range:U+2196-2199;font-display:block}

/* balance, not pretty: pretty is measurably weak for Japanese, so the pretty
   list above is trusted to do work it does not do. */
html[lang="ja"] .hero__title,
html[lang="ja"] .lead,
html[lang="ja"] .big-serif,
html[lang="ja"] .verdict-copy,
html[lang="ja"] .readout h3,
html[lang="ja"] .region-readout h3{text-wrap:balance}

/* the door wordmark is Latin: give it back Latin tracking after the Japanese
   group above stopped claiming it */
html[lang="ja"] .door__name{letter-spacing:-.03em;font-feature-settings:normal}

/* archival reproductions must keep the English metrics exactly -- they are
   evidence, not typography we are free to recompose */
html[lang="ja"] .plate__body,
html[lang="ja"] .plate__doc{line-height:1.55}
html[lang="ja"] .plate__body .plate__verdict{line-height:1.12;letter-spacing:-.02em;font-feature-settings:normal}

/* a FLOOR at the widest natural Japanese chip, never a cap */
html[lang="ja"] .door .tag{min-width:9.5em;text-align:center}

/* -- KOREAN, continued --
   .24em between complete syllable blocks reads as a word space. The label tier
   was only half corrected; these are the rest of it. The fifth selector is
   deliberately narrowed to .verdict so the Latin ACE RECEIPT beside it keeps
   its own tracking. */
html[lang="ko"] .anatomy__test span,
html[lang="ko"] .message-sheet>span,
html[lang="ko"] .judgment__seal>span,
html[lang="ko"] .receipt-copy summary,
html[lang="ko"] .gate-specimen__line .verdict,
html[lang="ko"] .loop-readout>span{letter-spacing:.06em}

/* -- CHINESE, continued --
   Han is graphic mass: the selector's own value sat against the inline-start
   wall with 42-54px of void before the chevron. Centring the value costs no
   width, so the control stays the same size in every edition and the
   PHYSICAL_STABLE position holds. No width is set here, so nothing truncates. */
html[lang="zh-CN"] .lang__select{text-align:center;text-align-last:center}

/* one-glyph last lines throughout: Han has no spaces, so the UA breaks
   anywhere and strands single characters */
html[lang="zh-CN"] p,
html[lang="zh-CN"] li,
html[lang="zh-CN"] dd,
html[lang="zh-CN"] small,
html[lang="zh-CN"] .lead,
html[lang="zh-CN"] .big-serif{text-wrap:pretty}
html[lang="zh-CN"] .agent-card h3,
html[lang="zh-CN"] .cite__who,
html[lang="zh-CN"] .law-moment__line{text-wrap:balance}

/* the serif display group sat too tight once a real serif face was named */
html[lang="zh-CN"] .law-moment__line,
html[lang="zh-CN"] .plate__verdict,
html[lang="zh-CN"] .message-sheet p,
html[lang="zh-CN"] .big-serif{line-height:1.38}

/* -- SPANISH, continued -- */
/* "Un gabinete de" stranded "de" on its own line: the Spanish title is longer
   than the English it was sized for. Cabinet only -- the SYSTASYS wordmark is
   untouched. */
html[lang="es"] [data-room="cabinet"] .hero__title{font-size:clamp(58px,6.3vw,95px)}
@media (max-width:760px){
  html[lang="es"] [data-room="cabinet"] .hero__title{font-size:clamp(44px,14.2vw,68px)}
}
/* max-width prevents the rag regression that balance alone introduces */
html[lang="es"] .region-readout h3{max-width:12.5em;text-wrap:balance}

/* -- FRENCH, continued --
   French runs longer than English almost everywhere; these are length
   corrections, not script calibration. */
html[lang="fr"] .hero__title{line-height:.92}
html[lang="fr"] .aperture__legend-lead{text-wrap:balance}
html[lang="fr"] .verdict-copy{text-wrap:balance}

/* Han carries no weight between Regular and Bold on a stock Windows, so the
   whole heavy display tier collapsed onto one weight and the hierarchy with it.
   Splitting the family by weight range gives 600 a Regular and 700 a Bold, which
   is the contrast the design assumes. unicode-range is CJK-only and the family
   is referenced solely from the zh block, so no other edition can reach it. */
@font-face{font-family:"YaHei Han";src:local("Microsoft YaHei UI"),local("Microsoft YaHei");unicode-range:U+2E80-303F,U+3040-9FFF,U+3400-4DBF,U+F900-FAFF,U+FE30-FE4F,U+FF00-FFEF;font-weight:100 600;font-display:swap}
@font-face{font-family:"YaHei Han";src:local("Microsoft YaHei UI Bold"),local("Microsoft YaHei Bold");unicode-range:U+2E80-303F,U+3040-9FFF,U+3400-4DBF,U+F900-FAFF,U+FE30-FE4F,U+FF00-FFEF;font-weight:700 900;font-display:swap}
html[lang="zh-CN"] .corpus-panel h3{font-weight:500}
