/* Language switcher for the website and the product sheets. tools/i18n.mjs writes the markup between the
   <!-- i18n:switch --> markers of every page. No script: a <details> element opens the list, and each link goes to
   the same page in the other language. The flags are drawn here (round SVGs); the language names carry the meaning.
   Generated flags: US, France, Germany, Spain, China, in the order of the CERES language picker. */
.lang { position: relative; flex: none; }
.lang > summary {
  list-style: none; cursor: pointer; display: inline-flex; align-items: center; gap: 7px; min-height: 40px; padding: 6px 10px;
  border: 1px solid var(--rule); border-radius: 4px; background: #fff; color: var(--ink); font-weight: 600; font-size: 14.5px; line-height: 1;
}
.lang > summary::-webkit-details-marker { display: none; }
.lang > summary::after { content: ""; width: 6px; height: 6px; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: translateY(-2px) rotate(45deg); margin: 0 1px 0 2px; opacity: .65; }
.lang > summary:hover, .lang[open] > summary { background: var(--panel); border-color: var(--ink-3); }
.lang > summary:focus-visible { outline: 3px solid var(--blue-ink); outline-offset: 3px; }
.lang-list {
  list-style: none; margin: 0; padding: 6px; position: absolute; right: 0; top: calc(100% + 6px); z-index: 60; min-width: 184px;
  background: #fff; border: 1px solid var(--rule); border-radius: 6px; box-shadow: 0 14px 30px rgba(20,26,34,.16);
}
.lang-list li { margin: 0; }
.lang-list a { display: flex; align-items: center; gap: 12px; padding: 9px 12px; border-radius: 4px; color: var(--ink); text-decoration: none; font-size: 16px; font-weight: 500; line-height: 1.2; }
.lang-list a:hover { background: var(--blue-soft); color: var(--ink); text-decoration: none; }
.lang-list a:focus-visible { outline: 3px solid var(--blue-ink); outline-offset: -3px; }
.lang-list a[aria-current="true"] { font-weight: 700; background: var(--panel); }
.flag { display: inline-block; flex: none; width: 24px; height: 24px; border-radius: 50%; background: center / cover no-repeat; box-shadow: inset 0 0 0 1px rgba(0,0,0,.12), 0 1px 2px rgba(0,0,0,.2); }
.lang > summary .flag { width: 20px; height: 20px; }
.flag-us { background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2030%2030%27%3E%3Cdefs%3E%3CradialGradient%20id%3D%27g%27%20cx%3D%27.32%27%20cy%3D%27.28%27%20r%3D%27.8%27%3E%3Cstop%20offset%3D%270%27%20stop-color%3D%27%23fff%27%20stop-opacity%3D%27.5%27%2F%3E%3Cstop%20offset%3D%27.45%27%20stop-color%3D%27%23fff%27%20stop-opacity%3D%270%27%2F%3E%3Cstop%20offset%3D%271%27%20stop-color%3D%27%23000%27%20stop-opacity%3D%27.22%27%2F%3E%3C%2FradialGradient%3E%3C%2Fdefs%3E%3Crect%20y%3D%270.00%27%20width%3D%2730%27%20height%3D%272.33%27%20fill%3D%27%23b22234%27%2F%3E%3Crect%20y%3D%272.31%27%20width%3D%2730%27%20height%3D%272.33%27%20fill%3D%27%23fff%27%2F%3E%3Crect%20y%3D%274.62%27%20width%3D%2730%27%20height%3D%272.33%27%20fill%3D%27%23b22234%27%2F%3E%3Crect%20y%3D%276.92%27%20width%3D%2730%27%20height%3D%272.33%27%20fill%3D%27%23fff%27%2F%3E%3Crect%20y%3D%279.23%27%20width%3D%2730%27%20height%3D%272.33%27%20fill%3D%27%23b22234%27%2F%3E%3Crect%20y%3D%2711.54%27%20width%3D%2730%27%20height%3D%272.33%27%20fill%3D%27%23fff%27%2F%3E%3Crect%20y%3D%2713.85%27%20width%3D%2730%27%20height%3D%272.33%27%20fill%3D%27%23b22234%27%2F%3E%3Crect%20y%3D%2716.15%27%20width%3D%2730%27%20height%3D%272.33%27%20fill%3D%27%23fff%27%2F%3E%3Crect%20y%3D%2718.46%27%20width%3D%2730%27%20height%3D%272.33%27%20fill%3D%27%23b22234%27%2F%3E%3Crect%20y%3D%2720.77%27%20width%3D%2730%27%20height%3D%272.33%27%20fill%3D%27%23fff%27%2F%3E%3Crect%20y%3D%2723.08%27%20width%3D%2730%27%20height%3D%272.33%27%20fill%3D%27%23b22234%27%2F%3E%3Crect%20y%3D%2725.38%27%20width%3D%2730%27%20height%3D%272.33%27%20fill%3D%27%23fff%27%2F%3E%3Crect%20y%3D%2727.69%27%20width%3D%2730%27%20height%3D%272.33%27%20fill%3D%27%23b22234%27%2F%3E%3Crect%20width%3D%2715%27%20height%3D%2716.15%27%20fill%3D%27%233c3b6e%27%2F%3E%3Ccircle%20cx%3D%272.2%27%20cy%3D%272.1%27%20r%3D%27.75%27%20fill%3D%27%23fff%27%2F%3E%3Ccircle%20cx%3D%275.7%27%20cy%3D%272.1%27%20r%3D%27.75%27%20fill%3D%27%23fff%27%2F%3E%3Ccircle%20cx%3D%279.2%27%20cy%3D%272.1%27%20r%3D%27.75%27%20fill%3D%27%23fff%27%2F%3E%3Ccircle%20cx%3D%2712.7%27%20cy%3D%272.1%27%20r%3D%27.75%27%20fill%3D%27%23fff%27%2F%3E%3Ccircle%20cx%3D%273.4%27%20cy%3D%276.0%27%20r%3D%27.75%27%20fill%3D%27%23fff%27%2F%3E%3Ccircle%20cx%3D%276.9%27%20cy%3D%276.0%27%20r%3D%27.75%27%20fill%3D%27%23fff%27%2F%3E%3Ccircle%20cx%3D%2710.4%27%20cy%3D%276.0%27%20r%3D%27.75%27%20fill%3D%27%23fff%27%2F%3E%3Ccircle%20cx%3D%2713.9%27%20cy%3D%276.0%27%20r%3D%27.75%27%20fill%3D%27%23fff%27%2F%3E%3Ccircle%20cx%3D%272.2%27%20cy%3D%279.9%27%20r%3D%27.75%27%20fill%3D%27%23fff%27%2F%3E%3Ccircle%20cx%3D%275.7%27%20cy%3D%279.9%27%20r%3D%27.75%27%20fill%3D%27%23fff%27%2F%3E%3Ccircle%20cx%3D%279.2%27%20cy%3D%279.9%27%20r%3D%27.75%27%20fill%3D%27%23fff%27%2F%3E%3Ccircle%20cx%3D%2712.7%27%20cy%3D%279.9%27%20r%3D%27.75%27%20fill%3D%27%23fff%27%2F%3E%3Ccircle%20cx%3D%273.4%27%20cy%3D%2713.8%27%20r%3D%27.75%27%20fill%3D%27%23fff%27%2F%3E%3Ccircle%20cx%3D%276.9%27%20cy%3D%2713.8%27%20r%3D%27.75%27%20fill%3D%27%23fff%27%2F%3E%3Ccircle%20cx%3D%2710.4%27%20cy%3D%2713.8%27%20r%3D%27.75%27%20fill%3D%27%23fff%27%2F%3E%3Ccircle%20cx%3D%2713.9%27%20cy%3D%2713.8%27%20r%3D%27.75%27%20fill%3D%27%23fff%27%2F%3E%3Crect%20width%3D%2730%27%20height%3D%2730%27%20fill%3D%27url(%23g)%27%2F%3E%3C%2Fsvg%3E"); }
.flag-fr { background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2030%2030%27%3E%3Cdefs%3E%3CradialGradient%20id%3D%27g%27%20cx%3D%27.32%27%20cy%3D%27.28%27%20r%3D%27.8%27%3E%3Cstop%20offset%3D%270%27%20stop-color%3D%27%23fff%27%20stop-opacity%3D%27.5%27%2F%3E%3Cstop%20offset%3D%27.45%27%20stop-color%3D%27%23fff%27%20stop-opacity%3D%270%27%2F%3E%3Cstop%20offset%3D%271%27%20stop-color%3D%27%23000%27%20stop-opacity%3D%27.22%27%2F%3E%3C%2FradialGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%2710%27%20height%3D%2730%27%20fill%3D%27%230055a4%27%2F%3E%3Crect%20x%3D%2710%27%20width%3D%2710%27%20height%3D%2730%27%20fill%3D%27%23fff%27%2F%3E%3Crect%20x%3D%2720%27%20width%3D%2710%27%20height%3D%2730%27%20fill%3D%27%23ef4135%27%2F%3E%3Crect%20width%3D%2730%27%20height%3D%2730%27%20fill%3D%27url(%23g)%27%2F%3E%3C%2Fsvg%3E"); }
.flag-de { background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2030%2030%27%3E%3Cdefs%3E%3CradialGradient%20id%3D%27g%27%20cx%3D%27.32%27%20cy%3D%27.28%27%20r%3D%27.8%27%3E%3Cstop%20offset%3D%270%27%20stop-color%3D%27%23fff%27%20stop-opacity%3D%27.5%27%2F%3E%3Cstop%20offset%3D%27.45%27%20stop-color%3D%27%23fff%27%20stop-opacity%3D%270%27%2F%3E%3Cstop%20offset%3D%271%27%20stop-color%3D%27%23000%27%20stop-opacity%3D%27.22%27%2F%3E%3C%2FradialGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%2730%27%20height%3D%2710%27%20fill%3D%27%23000%27%2F%3E%3Crect%20y%3D%2710%27%20width%3D%2730%27%20height%3D%2710%27%20fill%3D%27%23dd0000%27%2F%3E%3Crect%20y%3D%2720%27%20width%3D%2730%27%20height%3D%2710%27%20fill%3D%27%23ffce00%27%2F%3E%3Crect%20width%3D%2730%27%20height%3D%2730%27%20fill%3D%27url(%23g)%27%2F%3E%3C%2Fsvg%3E"); }
.flag-es { background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2030%2030%27%3E%3Cdefs%3E%3CradialGradient%20id%3D%27g%27%20cx%3D%27.32%27%20cy%3D%27.28%27%20r%3D%27.8%27%3E%3Cstop%20offset%3D%270%27%20stop-color%3D%27%23fff%27%20stop-opacity%3D%27.5%27%2F%3E%3Cstop%20offset%3D%27.45%27%20stop-color%3D%27%23fff%27%20stop-opacity%3D%270%27%2F%3E%3Cstop%20offset%3D%271%27%20stop-color%3D%27%23000%27%20stop-opacity%3D%27.22%27%2F%3E%3C%2FradialGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%2730%27%20height%3D%2730%27%20fill%3D%27%23aa151b%27%2F%3E%3Crect%20y%3D%277.5%27%20width%3D%2730%27%20height%3D%2715%27%20fill%3D%27%23f1bf00%27%2F%3E%3Crect%20width%3D%2730%27%20height%3D%2730%27%20fill%3D%27url(%23g)%27%2F%3E%3C%2Fsvg%3E"); }
.flag-cn { background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2030%2030%27%3E%3Cdefs%3E%3CradialGradient%20id%3D%27g%27%20cx%3D%27.32%27%20cy%3D%27.28%27%20r%3D%27.8%27%3E%3Cstop%20offset%3D%270%27%20stop-color%3D%27%23fff%27%20stop-opacity%3D%27.5%27%2F%3E%3Cstop%20offset%3D%27.45%27%20stop-color%3D%27%23fff%27%20stop-opacity%3D%270%27%2F%3E%3Cstop%20offset%3D%271%27%20stop-color%3D%27%23000%27%20stop-opacity%3D%27.22%27%2F%3E%3C%2FradialGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%2730%27%20height%3D%2730%27%20fill%3D%27%23de2910%27%2F%3E%3Cpolygon%20points%3D%277.50%2C2.90%208.53%2C6.08%2011.87%2C6.08%209.17%2C8.04%2010.20%2C11.22%207.50%2C9.26%204.80%2C11.22%205.83%2C8.04%203.13%2C6.08%206.47%2C6.08%27%20fill%3D%27%23ffde00%27%2F%3E%3Cpolygon%20points%3D%2714.22%2C2.25%2013.59%2C3.18%2014.29%2C4.07%2013.20%2C3.76%2012.57%2C4.69%2012.53%2C3.56%2011.45%2C3.25%2012.51%2C2.87%2012.47%2C1.74%2013.16%2C2.63%27%20fill%3D%27%23ffde00%27%2F%3E%3Cpolygon%20points%3D%2717.13%2C5.95%2016.13%2C6.47%2016.31%2C7.58%2015.51%2C6.78%2014.51%2C7.30%2015.02%2C6.29%2014.22%2C5.50%2015.33%2C5.67%2015.84%2C4.67%2016.02%2C5.78%27%20fill%3D%27%23ffde00%27%2F%3E%3Cpolygon%20points%3D%2717.08%2C10.46%2015.96%2C10.47%2015.62%2C11.55%2015.26%2C10.48%2014.13%2C10.50%2015.03%2C9.83%2014.67%2C8.76%2015.59%2C9.41%2016.49%2C8.73%2016.16%2C9.81%27%20fill%3D%27%23ffde00%27%2F%3E%3Cpolygon%20points%3D%2714.12%2C13.88%2013.10%2C13.38%2012.32%2C14.19%2012.48%2C13.08%2011.46%2C12.59%2012.57%2C12.39%2012.73%2C11.27%2013.26%2C12.27%2014.37%2C12.07%2013.59%2C12.88%27%20fill%3D%27%23ffde00%27%2F%3E%3Crect%20width%3D%2730%27%20height%3D%2730%27%20fill%3D%27url(%23g)%27%2F%3E%3C%2Fsvg%3E"); }
/* In the sheets the switcher sits in the page bar, before the Print button */
.page-bar .lang { margin-left: auto; }
.page-bar .lang + .page-print { margin-left: 0; }
@media print { .lang { display: none !important; } }
/* Chinese pages: Barlow has no CJK glyphs, so the system CJK faces take over for Chinese text (Latin text and
   figures stay in Barlow); CJK headings drop the tight negative tracking and body text gets more leading. */
:root:lang(zh-Hans) {
  --font: "Barlow", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", "Source Han Sans SC", sans-serif;
  --display: "Barlow Semi Condensed", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", "Source Han Sans SC", sans-serif;
}
:lang(zh-Hans) h1, :lang(zh-Hans) h2, :lang(zh-Hans) h3 { letter-spacing: 0; }
:lang(zh-Hans) body { line-height: 1.7; }
:lang(zh-Hans) .hero h1, :lang(zh-Hans) .page-hero h1, :lang(zh-Hans) .hero-text h1 { line-height: 1.12; }
/* Printed sheets in French, German and Spanish run 15–25 % longer than the English they were laid out for.
   A uniform print scale keeps each sheet on the English page count (the overview sheet promises it) instead of
   spilling a card or the footer onto a near-empty page. tools/make-pdfs.mjs reports the counts. */
@media print {
  html:lang(fr) { --print-zoom: .88; }
  html:lang(fr) .sheet, html:lang(de) .sheet, html:lang(es) .sheet { zoom: var(--print-zoom, .9); }
}
/* German compounds (Wärmestrahlungszonen, Gaswolkenexplosion…) are longer than a phone column: hyphenate them,
   and let any over-long word in a table cell wrap rather than push the page sideways. */
html:lang(de) { -webkit-hyphens: auto; hyphens: auto; }
/* …but not in headings: a hyphenated display headline reads badly. A compound that cannot fit a phone column at all
   still breaks rather than overflowing. */
html:lang(de) h1, html:lang(de) h2, html:lang(de) h3, html:lang(de) .kicker, html:lang(de) .tagline { -webkit-hyphens: manual; hyphens: manual; overflow-wrap: anywhere; }
html:not([lang="en"]) .mtable td, html:not([lang="en"]) .mtable th { overflow-wrap: anywhere; }
:lang(zh-Hans) h1, :lang(zh-Hans) h2 { text-wrap: balance; }
