/* ================================================================
   RIPOSTE LABORATORIES · industrial spec-sheet × jester mi-parti
   ================================================================ */

/* ---------- self-hosted webfont: JetBrains Mono (OFL 1.1) ----------
   Variable face (weight axis 100-800; the site uses 400/700/800) shipped
   as woff2 subsets from Fontsource 5.3.0 and served from /fonts. The
   unicode-range split means each page fetches only the subsets its script
   needs; non-Latin editions (Arabic, Devanagari, Gurmukhi, CJK) have no
   JetBrains Mono glyphs and stay on the fallback stack for free. Update the
   font by re-fingerprinting the filename here and in tools/build.js
   (FONT_PRELOAD). font-display:swap paints immediately on the fallback. */
@font-face{
  font-family:"JetBrains Mono";font-style:normal;font-display:swap;font-weight:100 800;
  src:url("/fonts/jetbrains-mono-latin.b058178d.woff2") format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:"JetBrains Mono";font-style:normal;font-display:swap;font-weight:100 800;
  src:url("/fonts/jetbrains-mono-latin-ext.e36841ed.woff2") format("woff2");
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face{
  font-family:"JetBrains Mono";font-style:normal;font-display:swap;font-weight:100 800;
  src:url("/fonts/jetbrains-mono-vietnamese.ddf99e6e.woff2") format("woff2");
  unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
}

:root{
  --ink:#1d1a17;          /* near-black */
  --pink:#f0477d;         /* sasha pink */
  --orange:#fe9a0d;       /* sasha marigold */
  --teal:#12b795;         /* sasha teal */
  --bone:#f6f1e7;         /* paper */
  --bone-dim:#eae4d6;
  --pink-tx:#b81e58;      /* accessible pink for text on bone (AA 5.5:1) */
  --teal-tx:#0c7a63;      /* accessible teal for text on bone (AA 4.69:1) */
  --orange-tx:#9c5d00;    /* accessible orange for text on bone (AA 4.69:1) */
  --rule:2px solid var(--ink);
  --mono:"JetBrains Mono","IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{
  font-family:var(--mono);
  background:var(--bone);
  color:var(--ink);
  line-height:1.55;
  font-size:16px;
}
::selection{background:var(--pink);color:var(--ink)}

a{color:inherit}
img,svg{display:block;max-width:100%}

/* ---------- checker + harlequin utilities ---------- */
.checker{
  height:26px;   /* 22px tile + 2px top + 2px bottom border (border-box) so the pattern isn't clipped */
  background:
    repeating-conic-gradient(var(--ink) 0% 25%, var(--bone) 0% 50%)
    0 0 / 22px 22px;
  border-top:var(--rule);
  border-bottom:var(--rule);
}
.checker.teal{
  background:
    repeating-conic-gradient(var(--teal) 0% 25%, var(--bone) 0% 50%)
    0 0 / 22px 22px;
}
.harlequin{
  height:38px;   /* 34px tile + 2px top + 2px bottom border (border-box) so the diamonds aren't clipped */
  background:
    repeating-conic-gradient(from 45deg, var(--pink) 0% 25%, var(--teal) 0% 50%)
    0 0 / 34px 34px;
  border-top:var(--rule);
  border-bottom:var(--rule);
}

/* ---------- top bar ---------- */
header.topbar{
  position:sticky;top:0;z-index:50;
  display:flex;align-items:stretch;justify-content:space-between;
  background:var(--bone);
  border-bottom:var(--rule);
  font-size:12px;letter-spacing:.08em;
}
.topbar .brand{
  display:flex;align-items:stretch;
  font-weight:700;text-transform:uppercase;text-decoration:none;
  border-right:var(--rule);white-space:nowrap;color:var(--ink);
}
.topbar .brand .mark{display:flex;align-items:center;padding:6px 15px}
.topbar .brand .mark img{width:132px;color:var(--ink)}
/* solid outer frame, dashed interior divide (spec-sheet motif) */
.topbar .brand .lock{
  display:flex;flex-direction:column;justify-content:center;gap:3px;
  padding:6px 15px;border-left:1px dashed var(--ink);
}
.topbar .brand .lab{font-size:12px;letter-spacing:.13em;line-height:1;direction:ltr;unicode-bidi:isolate}
.topbar .brand .doc{font-size:9.5px;letter-spacing:.15em;line-height:1;font-weight:400;
  color:var(--pink-tx);direction:ltr;unicode-bidi:isolate}
/* dashed form-rule bridging the brand block and the nav (hidden once collapsed) */
.topbar .toprule{flex:1 1 auto;align-self:stretch;position:relative;min-width:26px}
.topbar .toprule::before{content:"";position:absolute;left:18px;right:18px;top:50%;
  border-top:2px dashed var(--ink);opacity:.22}
/* ---------- grouped dropdown nav ---------- */
.topbar nav.mainnav{display:flex;align-items:stretch}
.navgroup{position:relative;display:flex;align-items:stretch;border-left:var(--rule)}
.navtop{
  font-family:inherit;font-size:12px;letter-spacing:.08em;text-transform:uppercase;
  background:none;border:none;color:inherit;cursor:pointer;
  display:flex;align-items:center;gap:7px;padding:0 15px;white-space:nowrap;
}
.navtop .car{font-size:9px;opacity:.55;transition:transform .15s}
.navgroup:hover>.navtop,.navgroup:focus-within>.navtop{background:var(--ink);color:var(--bone)}
.navgroup:hover>.navtop .car,.navgroup:focus-within>.navtop .car{transform:rotate(180deg);opacity:1}
.navlink{
  display:flex;align-items:center;padding:0 15px;border-left:var(--rule);
  text-decoration:none;text-transform:uppercase;font-size:12px;letter-spacing:.08em;
  white-space:nowrap;transition:background .12s,color .12s;
}
.navlink:hover,.navlink[aria-current]{background:var(--teal);color:var(--ink)}
.navmenu{
  position:absolute;top:100%;right:-2px;min-width:212px;
  display:none;flex-direction:column;
  background:var(--bone);border:var(--rule);border-top:none;z-index:60;
}
.navgroup:hover .navmenu,.navgroup:focus-within .navmenu,.navgroup.open .navmenu{display:flex}
.navgroup.open>.navtop{background:var(--ink);color:var(--bone)}
.navgroup.open>.navtop .car{transform:rotate(180deg);opacity:1}
.navmenu a{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:12px 14px;text-decoration:none;text-transform:uppercase;
  font-size:12px;letter-spacing:.05em;border-bottom:1px dashed var(--ink);white-space:nowrap;
  transition:background .12s,color .12s;
}
.navmenu a:last-child{border-bottom:none}
.navmenu a[aria-current]{background:var(--ink);color:var(--bone)}
.navmenu a .ar{opacity:0;transform:translateX(-5px);transition:opacity .12s,transform .12s}
.navmenu a:hover .ar{opacity:1;transform:translateX(0)}
.navgroup:nth-of-type(3n+1) .navmenu a:hover{background:var(--pink);color:var(--ink)}
.navgroup:nth-of-type(3n+2) .navmenu a:hover{background:var(--orange);color:var(--ink)}
.navgroup:nth-of-type(3n) .navmenu a:hover{background:var(--teal);color:var(--ink)}
@media(max-width:820px){
  header.topbar{flex-wrap:wrap;position:static}
  .topbar .toprule{display:none}
  .topbar .brand{width:100%;border-right:none;border-bottom:var(--rule)}
  .topbar nav.mainnav{width:100%;flex-direction:column}
  .navgroup{width:100%;border-left:none;border-bottom:var(--rule);flex-wrap:wrap}
  .navtop{width:100%;justify-content:space-between;padding:12px 16px;background:var(--bone-dim)}
  .navtop .car,.navgroup:hover>.navtop .car,.navgroup:focus-within>.navtop .car{transform:none}
  .navmenu{position:static;display:flex;width:100%;border:none;min-width:0}
  .navmenu a{padding-left:30px}
  .navlink{width:100%;border-left:none;border-bottom:var(--rule);padding:12px 16px;justify-content:space-between}
}
@media(max-width:560px){
  .hero .labname{letter-spacing:.3em;text-indent:.3em;font-size:11px}
}

/* ---------- hero : white, signal waves behind the mark ---------- */
.hero{
  position:relative;
  display:grid;place-items:center;
  min-height:78vh;
  background:#ffffff;
  color:var(--ink);
  overflow:hidden;
  border-bottom:var(--rule);
}
.hero .inner{
  width:min(1060px,92vw);
  text-align:center;
  padding:56px 0 72px;
}
.hero .mark{width:min(760px,88vw);margin:0 auto;color:var(--ink);
  filter:drop-shadow(5px 5px 0 rgba(234,228,214,.9))}
.hero .labname{
  margin:18px auto 0;width:fit-content;
  font-size:13px;letter-spacing:.55em;text-indent:.55em;text-transform:uppercase;
}
.hero h1{
  margin-top:34px;
  font-size:clamp(22px,3.4vw,34px);
  font-weight:700;text-transform:uppercase;letter-spacing:.04em;
}
.hero h1 .p{opacity:.55}
.hero .sub{
  margin:14px auto 0;max-width:620px;
  font-size:14px;opacity:.92;
}
.hero .cta{
  display:inline-block;margin-top:36px;padding:14px 30px;
  border:2px solid var(--ink);
  color:var(--ink);text-decoration:none;text-transform:uppercase;
  font-weight:700;letter-spacing:.12em;font-size:13px;
  background:transparent;
  transition:all .15s;
}
.hero .cta:hover{background:var(--ink);color:var(--bone);transform:translate(-2px,-2px);
  box-shadow:4px 4px 0 var(--pink)}
.hero .corner{
  position:absolute;font-size:11px;letter-spacing:.14em;opacity:.75;text-transform:uppercase;
  z-index:3;
}
.hero .inner{position:relative;z-index:2}

/* ---------- multilingual tagline canvas (laid out with pretext) ---------- */
.hero .tagline{display:block;width:min(560px,86vw);height:34px;margin:22px auto 0}
@media(prefers-reduced-motion:reduce){.hero .tagline{opacity:.85}}

/* ---------- signal wave canvas ---------- */
.sig{
  position:absolute;inset:0;width:100%;height:100%;
  pointer-events:none;z-index:1;
}

@media(prefers-reduced-motion:reduce){
  .marquee .track{animation:none}
}
.hero .corner.tl{top:12px;left:14px}
.hero .corner.tr{top:12px;right:14px;text-align:right}
.hero .corner.bl{bottom:10px;left:14px}
.hero .corner.br{bottom:10px;right:14px;text-align:right}

/* ---------- marquee ---------- */
.marquee{
  overflow:hidden;white-space:nowrap;
  background:var(--ink);color:var(--bone);
  border-bottom:var(--rule);
  font-size:13px;text-transform:uppercase;letter-spacing:.18em;
  padding:9px 0;
}
.marquee .track{display:inline-block;animation:scroll 9.33s linear infinite}
.marquee .track span{margin:0 1.4em}
.marquee .track .c1{color:var(--pink)}
.marquee .track .c2{color:var(--orange)}
.marquee .track .c3{color:var(--teal)}
.marquee .track .r{color:var(--ink);background:var(--orange);padding:0 .4em}
/* track holds 12 identical reps; advance by exactly one (1/12 = 8.3333%) so the
   wrap always lands on identical content (seamless) while leaving 11 reps to
   fill the viewport — no run-out/skip even on ultra-wide screens */
@keyframes scroll{from{transform:translateX(0)}to{transform:translateX(-8.3333%)}}

/* ---------- sections : spec sheet ---------- */
section.sec{
  width:min(1060px,92vw);margin:0 auto;padding:72px 0;
}
.sechead{
  display:flex;align-items:center;gap:16px;flex-wrap:wrap;
  border-bottom:var(--rule);padding-bottom:14px;margin-bottom:34px;
}
.sechead .no{
  font-size:12px;font-weight:700;letter-spacing:.1em;
  background:var(--ink);color:var(--bone);padding:4px 10px;
}
.sechead.pinkno .no{background:var(--pink);color:var(--ink)}
.sechead.orangeno .no{background:var(--orange);color:var(--ink)}
.sechead.tealno .no{background:var(--teal);color:var(--ink)}
.sechead h2{
  font-size:clamp(24px,3.2vw,40px);text-transform:uppercase;letter-spacing:.03em;
}
.sechead .tag{margin-left:auto;font-size:11px;letter-spacing:.14em;opacity:.72;text-transform:uppercase}

.cols{display:grid;grid-template-columns:1fr 1fr;gap:34px}
@media(max-width:760px){.cols{grid-template-columns:1fr}}

.spec{border:var(--rule)}
.spec .spec-h{
  padding:8px 12px;font-size:11px;font-weight:700;letter-spacing:.16em;
  text-transform:uppercase;border-bottom:var(--rule);
  background:var(--bone-dim);
  display:flex;justify-content:space-between;gap:8px;
}
.spec .spec-b{padding:16px 14px;font-size:14px}
.spec ul{list-style:none}
.spec li{padding:7px 0;padding-inline-start:1.4em;border-bottom:1px dashed var(--ink)}
.spec li:last-child{border-bottom:none}
.spec li::before{content:"▸";display:inline-block;width:1.4em;margin-inline-start:-1.4em;color:var(--pink-tx);font-weight:700}
.spec.orangehead .spec-h{background:var(--orange);color:var(--ink);border-bottom-color:var(--ink)}

p.lead{font-size:clamp(16px,2vw,19px);max-width:56ch}
p + p{margin-top:1em}
.dim{opacity:.65}
.hi{color:var(--pink-tx);font-weight:700}
.stamp{
  display:inline-block;margin-top:18px;padding:6px 12px;
  border:2px solid var(--orange);color:var(--orange-tx);
  font-size:11px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;
  transform:rotate(-2deg);
}

/* big flowchart arrows */
.flow{display:flex;align-items:stretch;gap:0;margin-top:34px;flex-wrap:wrap}
.flow .step{
  flex:1 1 150px;border:var(--rule);padding:16px 12px;text-align:center;
  font-size:12px;letter-spacing:.06em;text-transform:uppercase;
  background:var(--bone);position:relative;margin-right:26px;
}
.flow .step:last-child{margin-right:0}
.flow .step::after{
  content:"→";position:absolute;right:-24px;top:50%;transform:translateY(-50%);
  font-size:20px;font-weight:700;color:var(--pink-tx);
}
.flow .step:nth-child(1){border-top:6px solid var(--pink)}
.flow .step:nth-child(2){border-top:6px solid var(--orange)}
.flow .step:nth-child(3){border-top:6px solid var(--teal)}
.flow .step:nth-child(4){border-top:6px solid var(--ink)}
.flow .step:last-child::after{content:none}
.flow .step b{display:block;font-size:22px;margin-bottom:6px}
#mission .flow{margin-bottom:44px} /* breathing room between the flow graphic and the copy below it */
@media(max-width:640px){
  .flow{gap:22px}
  .flow .step{flex:1 1 100%;margin-right:0}
  .flow .step::after{content:"↓";right:50%;top:auto;bottom:-22px;transform:translateX(50%)}
}

/* ---------- inverted section (black) ---------- */
.dark{background:var(--ink);color:var(--bone)}
.dark .spec{border-color:var(--bone)}
.dark .spec .spec-h{background:#2b2723;border-bottom:2px solid var(--bone)}
.dark .spec li{border-bottom-color:var(--bone)}
.dark .spec li::before{color:var(--teal)}
.dark .sechead{border-bottom:2px solid var(--bone)}
.dark .sechead .no{background:var(--teal);color:var(--ink)}
.dark .hi{color:var(--teal)}
.dark sup.fn a{color:var(--teal)}
.dark .stamp{color:var(--orange)}
.esh sup.fn a,.esh .hi{color:var(--ink)}
.dark ::selection{background:var(--bone);color:var(--ink)}

/* ---------- hex diagram ---------- */
.hexwrap{display:grid;place-items:center;padding:10px 0}
.hexwrap svg{width:min(420px,86vw)}
.hexwrap.tess{place-items:start;padding:6px 0 2px}
.hexwrap.tess svg{width:min(190px,60%)}

/* ---------- esh section ---------- */
.esh{background:var(--pink);color:var(--ink);border-top:var(--rule);border-bottom:var(--rule)}
.esh .sechead{border-bottom:2px solid var(--ink)}
/* the tag rides on the saturated pink section fill; drop the dimming so it clears AA */
.esh .sechead .tag{opacity:1}
.esh .sechead .no{background:var(--ink)}
.esh .mark{width:min(680px,88vw);margin:8px auto 30px;color:var(--ink)}
.esh .spec{border-color:var(--ink)}
.esh .spec .spec-h{background:var(--ink);color:var(--bone);border-bottom:2px solid var(--bone)}
.esh .spec li{border-bottom-color:var(--ink)}
.esh .spec li::before{color:var(--ink)}
.esh ::selection{background:var(--ink);color:var(--bone)}

/* ---------- contact ---------- */
/* the contact section is single-column full width, so let its lead fill the
   section (which is already responsive) instead of the 56ch reading measure */
.contact .lead{max-width:none}
.contact .bigmail{
  display:block;margin-top:26px;padding:26px 18px;
  border:var(--rule);text-align:center;text-decoration:none;
  font-size:clamp(15px,2.6vw,24px);font-weight:700;letter-spacing:.04em;
  transition:all .15s;background:var(--bone);
  overflow-wrap:anywhere;
}
.contact .bigmail:hover{background:var(--ink);color:var(--bone);
  box-shadow:8px 8px 0 var(--teal), 16px 16px 0 var(--pink)}

/* ---------- footnotes ---------- */
sup.fn{font-size:.62em;font-weight:700;line-height:0;margin-left:1px}
sup.fn a{color:var(--pink-tx);text-decoration:underline}
sup.fn a:hover{text-decoration:underline}
ol.fnlist{list-style:none;counter-reset:fn;max-width:none;font-size:12.5px}
ol.fnlist li{counter-increment:fn;position:relative;padding:9px 0 9px 30px;
  border-bottom:1px dashed var(--ink);line-height:1.5}
ol.fnlist li:last-child{border-bottom:none}
ol.fnlist li::before{content:counter(fn);position:absolute;left:0;top:9px;font-weight:700;color:var(--pink-tx)}
ol.fnlist li a{font-weight:700;overflow-wrap:anywhere}
ol.fnlist li:target{background:var(--bone-dim)}

/* ---------- footer ---------- */
footer{
  border-top:var(--rule);
  display:grid;grid-template-columns:1fr 1fr;
  font-size:11px;letter-spacing:.1em;text-transform:uppercase;
}
footer>div{padding:18px 16px}
footer .l{background:var(--ink);color:var(--bone)}
footer .r{background:linear-gradient(105deg,
    var(--pink) 0 36%, var(--orange) 36% 64%, var(--teal) 64% 100%);
  color:var(--ink);font-weight:700;text-align:right}
@media(max-width:560px){footer{grid-template-columns:1fr}footer .r{text-align:left}}
/* ============================================================================
   ADDENDUM · components ported from /process/ and /recycling101/
   plus language-picker, RTL, and reduced-motion (for translated full pages)
   ============================================================================ */

/* ---------- page-head banner (sub-pages) ---------- */
.pagehead{
  background:linear-gradient(105deg,
    var(--pink) 0 36%, var(--orange) 36% 64%, var(--teal) 64% 100%);
  border-bottom:var(--rule);padding:56px 0 48px;color:var(--ink);
}
.pagehead .inner{width:min(1060px,92vw);margin:0 auto}
.pagehead .kicker{font-size:11px;letter-spacing:.3em;text-transform:uppercase}
.pagehead h1{font-size:clamp(30px,5vw,54px);text-transform:uppercase;letter-spacing:.02em;margin-top:8px}
.pagehead p{max-width:64ch;margin-top:12px;font-size:14px}

/* ---------- partner cards + note (process) ---------- */
.partners{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:16px;margin-top:8px}
.partner{border:var(--rule);padding:16px;background:var(--bone)}
.partner .p-n{font-size:11px;font-weight:700;letter-spacing:.16em;opacity:.5}
.partner:nth-child(4n+1){border-top:6px solid var(--pink)}
.partner:nth-child(4n+2){border-top:6px solid var(--orange)}
.partner:nth-child(4n+3){border-top:6px solid var(--teal)}
.partner:nth-child(4n){border-top:6px solid var(--ink)}
.partner b{display:block;text-transform:uppercase;letter-spacing:.05em;font-size:14px;margin:6px 0 8px}
.partner p{font-size:13px}
.partner .drops{margin-top:10px;font-size:11px;letter-spacing:.08em;text-transform:uppercase;opacity:.7}
.note{margin-top:26px;border:var(--rule);border-left:8px solid var(--orange);
  padding:14px 16px;font-size:14px;background:var(--bone-dim);max-width:none}
.note b{text-transform:uppercase;letter-spacing:.08em;font-size:11px;display:block;margin-bottom:4px}
.note a{font-weight:700}

/* ---------- sticky-TOC layout (recycling 101) ---------- */
.layout{width:min(1160px,94vw);margin:0 auto;display:grid;
  grid-template-columns:250px minmax(0,1fr);gap:44px;padding:48px 0 80px;align-items:start}
.toc{position:sticky;top:66px;border:var(--rule);background:var(--bone);font-size:12px}
.toc .toc-h{padding:8px 12px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;
  border-bottom:var(--rule);background:var(--ink);color:var(--bone);font-size:11px}
.toc a{display:flex;gap:9px;align-items:baseline;padding:9px 12px;text-decoration:none;
  text-transform:uppercase;letter-spacing:.06em;border-bottom:1px dashed var(--ink);transition:background .12s,color .12s}
.toc a:last-child{border-bottom:none}
.toc a .n{font-weight:700;opacity:.45;font-size:11px}
.toc a:hover{background:var(--bone-dim)}
.toc a.active{background:var(--ink);color:var(--bone)}
.toc a.active .n{opacity:1;color:var(--orange)}
@media(max-width:900px){
  .layout{grid-template-columns:1fr;gap:0;padding-top:24px}
  .toc{position:sticky;top:0;z-index:40;display:flex;overflow-x:auto;white-space:nowrap;margin-bottom:28px;-webkit-overflow-scrolling:touch}
  .toc .toc-h{display:none}
  .toc a{border-bottom:none;border-right:1px dashed var(--ink);padding:10px 12px;flex:0 0 auto}
}
section.mat{padding:8px 0 56px;scroll-margin-top:120px}
@media(max-width:900px){section.mat{scroll-margin-top:110px}}

/* verdict / codes / rules (recycling 101) */
.duo{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:22px}
@media(max-width:760px){.duo{grid-template-columns:1fr}}
.verdict{border:var(--rule);font-size:13px}
.verdict .v-h{padding:7px 11px;font-size:11px;font-weight:700;letter-spacing:.16em;
  text-transform:uppercase;border-bottom:var(--rule);color:var(--bone)}
.verdict.yes .v-h{background:var(--teal);color:var(--ink)}
.verdict.no .v-h{background:var(--pink);color:var(--ink)}
.verdict.warn .v-h{background:var(--orange);color:var(--ink)}
.verdict ul{list-style:none;padding:10px 12px}
.verdict li{padding:5px 0;padding-inline-start:1.4em;border-bottom:1px dashed var(--ink)}
.verdict li:last-child{border-bottom:none}
.verdict li::before{display:inline-block;width:1.4em;margin-inline-start:-1.4em;font-weight:700}
.verdict.yes li::before{content:"\2713";color:var(--teal-tx)}
.verdict.no li::before{content:"\2715";color:var(--pink-tx)}
.verdict.warn li::before{content:"!";color:var(--orange-tx)}
.codes{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:12px;margin-top:22px}
.code{border:var(--rule);padding:10px;font-size:12px;background:var(--bone)}
.code .num{display:inline-block;width:30px;height:30px;line-height:30px;text-align:center;
  font-weight:700;border:2px solid var(--ink);margin-bottom:6px}
.code.good .num{background:var(--teal);color:var(--ink)}
.code.some .num{background:var(--orange);color:var(--ink)}
.code.bad .num{background:var(--pink);color:var(--ink)}
.code b{display:block} .code span{opacity:.7;font-size:11px}
.rules{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-top:22px}
.rule{border:var(--rule);padding:14px;background:var(--bone)}
.rule .r-n{font-size:24px;font-weight:700}
.rule:nth-child(3n+1) .r-n{color:var(--pink-tx)}
.rule:nth-child(3n+2) .r-n{color:var(--orange-tx)}
.rule:nth-child(3n) .r-n{color:var(--teal-tx)}
.rule b{display:block;text-transform:uppercase;letter-spacing:.08em;font-size:12px;margin:6px 0 4px}
.rule p{font-size:12px}

/* ---------- language picker (JS-free <details>) ---------- */
.utility{display:flex;align-items:center;gap:10px}
.langpick{position:relative;font-size:11px;letter-spacing:.08em;text-transform:uppercase}
.langpick>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:7px;
  padding:8px 12px;border:var(--rule);white-space:nowrap;font-weight:700}
.langpick>summary::-webkit-details-marker{display:none}
.globe{display:inline-block;vertical-align:-2px;flex:none}
.langpick>summary .car{font-size:9px;opacity:.6}
.langpick[open]>summary .car{transform:rotate(180deg)}
.langmenu{position:absolute;top:100%;inset-inline-end:0;margin-top:2px;z-index:80;
  min-width:210px;max-height:60vh;overflow:auto;background:var(--bone);border:var(--rule);
  display:grid;grid-template-columns:1fr 1fr}
.langmenu a{display:block;padding:9px 11px;text-decoration:none;border-bottom:1px dashed var(--ink);
  border-inline-start:1px dashed var(--ink)}
.langmenu a:nth-child(odd){border-inline-start:none}
.langmenu a[aria-current]{background:var(--ink);color:var(--bone);font-weight:700}
.langmenu a:hover{background:var(--teal);color:var(--ink)}
.langmenu a .en{display:block;font-size:9.5px;opacity:.72;letter-spacing:.04em}
.langmenu a[aria-current] .en{opacity:.8}
.mtnote{font-size:11px;letter-spacing:.03em;text-transform:none;opacity:.75;
  border-top:1px dashed var(--ink);border-bottom:1px dashed var(--ink);
  padding:8px 0;margin:0 0 4px;text-align:center}

/* ---------- right-to-left (Arabic, Farsi) ---------- */
[dir="rtl"] .topbar .brand{border-right:none;border-left:var(--rule)}
[dir="rtl"] .topbar .brand .lock{border-left:none;border-right:1px dashed var(--ink)}
[dir="rtl"] .navgroup{border-left:none;border-right:var(--rule)}
[dir="rtl"] .navlink{border-left:none;border-right:var(--rule)}
[dir="rtl"] .spec li::before{content:"\25C2"}
[dir="rtl"] .flow .step::after{content:"\2190"}
[dir="rtl"] .note{border-left:var(--rule);border-right:8px solid var(--orange)}
[dir="rtl"] .footer-r,[dir="rtl"] footer .r{text-align:left}
[dir="rtl"] .hero .corner.tl{left:auto;right:14px}
[dir="rtl"] .hero .corner.tr{right:auto;left:14px;text-align:left}
[dir="rtl"] .hero .corner.bl{left:auto;right:14px}
[dir="rtl"] .hero .corner.br{right:auto;left:14px;text-align:left}

@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .marquee .track{animation:none}
}

/* ---------- utility strip on full pages (version switch + language picker) ---------- */
.utilbar{background:var(--bone-dim);border-bottom:var(--rule)}
.uwrap{width:min(1060px,92vw);margin:0 auto;display:flex;align-items:center;justify-content:flex-end;gap:12px;flex-wrap:wrap;padding:7px 0}
.utilbar .vswitch{display:flex;border:var(--rule);font-size:11px;text-transform:uppercase;letter-spacing:.08em}
.utilbar .vswitch a{padding:5px 10px;text-decoration:none;border-left:1px dashed var(--ink);white-space:nowrap}
.utilbar .vswitch a:first-child{border-left:none}
.utilbar .vswitch a[aria-current]{background:var(--ink);color:var(--bone);font-weight:700}
.utilbar .mtnote{width:min(1060px,92vw);margin:0 auto}
[dir="rtl"] .uwrap{justify-content:flex-start}
[dir="rtl"] .utilbar .vswitch a{border-left:none;border-right:1px dashed var(--ink)}
[dir="rtl"] .utilbar .vswitch a:first-child{border-right:none}

/* ---------- language + version dropdowns: navgroups matching the rest ---------- */
.langnav .navmenu{min-width:264px}
.navgroup.langnav:hover .navmenu.langgrid,.navgroup.langnav:focus-within .navmenu.langgrid,.navgroup.langnav.open .navmenu.langgrid{display:grid;grid-template-columns:1fr 1fr;max-height:min(72vh,420px);overflow:auto}
.langgrid a{flex-direction:column;align-items:flex-start;gap:1px;border-right:1px dashed var(--ink)}
.langgrid a:nth-child(even){border-right:none}
.langgrid a .en{font-size:9.5px;opacity:.72;letter-spacing:.02em;text-transform:none}
.langgrid a[aria-current] .en{opacity:.85}

/* ---------- slim machine-translation bar under the header ---------- */
.mtbar{background:var(--bone-dim);border-bottom:var(--rule);text-align:center;font-size:11px;letter-spacing:.03em;padding:6px 12px;opacity:.85}

@media(max-width:820px){
  .langnav .navmenu.langgrid{display:grid;grid-template-columns:1fr 1fr}
}
[dir="rtl"] .langgrid a{border-right:none;border-left:1px dashed var(--ink)}
[dir="rtl"] .langgrid a:nth-child(even){border-left:none}
