@import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&family=Source+Serif+4:opsz,wght@8..60,400;8..60,600&display=swap");
/* Binary Reviews - base layer. Everything reads from tokens, never raw hex. */
*{box-sizing:border-box}
body.rb{margin:0;background:var(--color-surface-page);color:var(--color-ink);
  font:var(--text-body);-webkit-font-smoothing:antialiased}
.rb h1{font:var(--text-h1);letter-spacing:var(--tracking-h1);margin:0}
.rb h2{font:var(--text-h2);letter-spacing:var(--tracking-h2);margin:0}
.rb h3{font:var(--text-h3);margin:0}
.rb-muted{color:var(--color-ink-muted)}
.rb-faint{color:var(--color-ink-faint);font:var(--text-body-sm)}
.rb-label{font:var(--text-label);letter-spacing:var(--tracking-label);text-transform:uppercase}
/* All numbers are monospaced so table columns do not jump when sorted. */
.rb-num{font:var(--text-num);font-variant-numeric:tabular-nums}
.rb-num-lg{font:var(--text-num-lg);font-variant-numeric:tabular-nums}
.rb-card{background:var(--color-surface-card);border:1px solid var(--color-line);
  border-radius:var(--radius-lg);box-shadow:var(--shadow-card)}
:root[data-theme="dark"] .rb-card{box-shadow:none}
.rb-sunken{background:var(--color-surface-sunken);border-radius:var(--radius-md)}
/* Sponsor colour means "we earn here" and is used for nothing else. */
.rb-sponsored{font:var(--text-label);letter-spacing:var(--tracking-label);
  text-transform:uppercase;color:var(--color-sponsor)}
.rb-card--sponsor{box-shadow:var(--shadow-sponsor)}
.rb-btn{display:inline-flex;align-items:center;gap:var(--space-2);padding:12px 20px;
  border-radius:var(--radius-md);font:600 15px/20px var(--font-sans);text-decoration:none;
  color:var(--color-on-accent);background:var(--rb-accent,var(--color-accent-apps))}
.rb-btn:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:2px}
/* One accent per site: set data-layout on <html> and every accent-aware rule follows. */
[data-layout="apps"]{--rb-accent:var(--color-accent-apps)}
[data-layout="money"]{--rb-accent:var(--color-accent-money)}
[data-layout="registry"]{--rb-accent:var(--color-accent-registry)}
[data-layout="learn"]{--rb-accent:var(--color-accent-learn)}
[data-layout="terminal"]{--rb-accent:var(--color-accent-terminal)}

/* Binary Reviews - tokens generated from tokens.json. Do not edit by hand. */
:root {
  --color-surface-page: #f7f8fa;
  --color-surface-card: #ffffff;
  --color-surface-sunken: #eceff3;
  --color-ink: #111826;
  --color-ink-muted: #4d5a6e;
  --color-ink-faint: #626d7e;   /* 4,54:1 на самой тёмной светлой поверхности; прежний #6b7789 давал 3,94 и 4,27 под заголовком */
  --color-line: #dde2ea;
  --color-line-strong: #c2cad6;
  --color-accent-apps: #0d8471;
  --color-accent-money: #1c7a3e;
  --color-accent-registry: #2a4d8f;
  --color-accent-learn: #b85416;
  --color-accent-terminal: #9a6508;
  --color-on-accent: #ffffff;
  --color-sponsor: #7a3fd4;
  --color-positive: #1c7a3e;
  --color-warning: #9a5b00;
  --color-negative: #a62a2a;
  --color-focus-ring: #2a4d8f;
  --font-sans: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;
  --font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;
  --font-serif: "Source Serif 4", Georgia, "Times New Roman", serif;
  --text-h1: 700 40px/46px var(--font-sans);
  --tracking-h1: -0.02em;
  --text-h2: 700 28px/34px var(--font-sans);
  --tracking-h2: -0.01em;
  --text-h3: 600 20px/26px var(--font-sans);
  --text-body: 400 16px/26px var(--font-sans);
  --text-body-sm: 400 14px/22px var(--font-sans);
  --text-label: 700 11px/14px var(--font-sans);
  --tracking-label: 0.08em;
  --text-num-lg: 600 24px/28px var(--font-mono);
  --text-num: 500 15px/20px var(--font-mono);
  --text-doc-h2: 600 26px/32px var(--font-serif);
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 20px;   /* used by the footer rows; was never defined, so their gap collapsed */
  --space-6: 24px;
  --space-8: 32px;
  --space-12: 48px;
  --space-20: 80px;
  --radius-sm: 6px;
  --radius-md: 10px;
  --radius-lg: 16px;
  --radius-pill: 999px;
  --shadow-card: 0 1px 2px rgba(16,24,40,.06), 0 4px 12px rgba(16,24,40,.06);
  --shadow-sponsor: 0 0 0 2px rgba(122,63,212,.35);
  color-scheme: light;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
  --color-surface-page: #0d1117;
  --color-surface-card: #161b22;
  --color-surface-sunken: #0a0d12;
  --color-ink: #e8edf5;
  --color-ink-muted: #9aa7bb;
  --color-ink-faint: #7d8a9d;
  --color-line: #293040;
  --color-line-strong: #3b465c;
  --color-accent-apps: #2fd4b4;
  --color-accent-money: #43c46d;
  --color-accent-registry: #6f9fe8;
  --color-accent-learn: #f08a4b;
  --color-accent-terminal: #e8a33d;
  --color-on-accent: #0d1117;
  --color-sponsor: #b18cf0;
  --color-positive: #43c46d;
  --color-warning: #e0a44a;
  --color-negative: #f07878;
  --color-focus-ring: #8ab4ff;
  color-scheme: dark;
  }
}
:root[data-theme="dark"] {
  --color-surface-page: #0d1117;
  --color-surface-card: #161b22;
  --color-surface-sunken: #0a0d12;
  --color-ink: #e8edf5;
  --color-ink-muted: #9aa7bb;
  --color-ink-faint: #7d8a9d;
  --color-line: #293040;
  --color-line-strong: #3b465c;
  --color-accent-apps: #2fd4b4;
  --color-accent-money: #43c46d;
  --color-accent-registry: #6f9fe8;
  --color-accent-learn: #f08a4b;
  --color-accent-terminal: #e8a33d;
  --color-on-accent: #0d1117;
  --color-sponsor: #b18cf0;
  --color-positive: #43c46d;
  --color-warning: #e0a44a;
  --color-negative: #f07878;
  --color-focus-ring: #8ab4ff;
  color-scheme: dark;
}

/* Listicle kit - layout "terminal". Reads tokens only, never raw hex.
   The design this implements lives in Claude Design, project
   "Binary Reviews - Design System" and the page "MetaTrader Platforms Nigeria". */

/* `overflow-x: hidden` here turns body into the scroll container and silently kills
   `position: sticky` on the header. `clip` stops the sideways scroll without that. */
html, body { overflow-x: clip; }
/* A class that sets display beats the hidden attribute, and the sticky bar then
   sat across the middle of the table on desktop, covering row 03. */
[hidden] { display: none !important; }
body.rb { font: var(--text-body); }
a { color: var(--rb-accent); }
/* The generic link hover must not reach buttons: on an accent fill it turned the
   white label dark and the button became unreadable for the moment of the hover. */
a:not([class*="btn"]):not([class*="cta"]):not(.chip):not(.app2__btn):not(.mn__link):hover {
  color: var(--color-ink);
}
.rb-btn:hover, .mast__btn:hover, .ent__open:hover, .grp2__cta:hover, .wn__btn:hover,
.bar2__btn:hover, .pane__btn:hover, .lesson__next:hover, .intro__start:hover {
  color: var(--color-on-accent);
  filter: brightness(1.08);
}
input, select, button { font: inherit; color: inherit; }
*:focus-visible { outline: 2px solid var(--color-focus-ring); outline-offset: 2px; }
input[type="checkbox"] { accent-color: var(--rb-accent); }

.rc-wrap { max-width: 1360px; margin: 0 auto; padding: 0 clamp(16px, 3vw, 32px); }
.grid { display: grid; gap: var(--space-4); }
.grid--2 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr)); }
.grid--3 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 360px), 1fr)); }
.grid--4 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr)); }

/* --------------------------------------------------------------- header */
.mast { position: sticky; top: 0; z-index: 30; background: var(--color-surface-sunken);
  border-bottom: 1px solid var(--color-line-strong); }
.mast__bar { display: flex; align-items: center; gap: var(--space-4);
  padding-block: 10px; }
.mast__brand { display: flex; align-items: center; gap: 10px; text-decoration: none;
  color: var(--color-ink); flex-shrink: 0; }
.mast__mark { height: 32px; padding: 0 8px; border-radius: var(--radius-sm);
  background: var(--rb-accent); color: var(--color-on-accent); display: grid;
  place-items: center; font: 600 13px/1 var(--font-mono); }
.mast__names { display: flex; flex-direction: column; gap: 2px; }
.mast__name { font: 700 15px/18px var(--font-sans); }
.mast__search { flex: 1 1 auto; max-width: 380px; display: flex; align-items: center;
  gap: 8px; padding: 0 10px; height: 40px; border-radius: var(--radius-sm);
  background: var(--color-surface-page); border: 1px solid var(--color-line-strong);
  color: var(--color-ink-muted); }
.mast__search span { font: 500 13px/1 var(--font-mono); }
.mast__search input { flex: 1; min-width: 0; border: 0; background: transparent;
  outline: none; color: var(--color-ink); font: var(--text-body-sm); }
.mast__right { margin-left: auto; display: flex; align-items: center; gap: 10px; }
.mast__cta { display: flex; align-items: center; gap: 10px; }
.mast__ctatext { display: flex; flex-direction: column; align-items: flex-end; gap: 2px; }
.mast__btn { min-height: 44px; padding: 0 16px; border-radius: var(--radius-sm);
  font: 600 14px/18px var(--font-sans); }
.mast__icon { width: 44px; height: 44px; flex-shrink: 0; display: grid; place-items: center;
  border-radius: var(--radius-sm); border: 1px solid var(--color-line-strong);
  background: var(--color-surface-card); color: var(--color-ink); cursor: pointer; }
.mast__burger { display: none; }

.pane { border-top: 1px solid var(--color-line); padding: var(--space-4);
  display: flex; flex-direction: column; gap: var(--space-4); }
.pane__links { display: flex; flex-direction: column; }
.pane__link { padding: 12px 0; border-bottom: 1px solid var(--color-line);
  color: var(--color-ink); text-decoration: none; font: 600 16px/24px var(--font-sans); }
.pane__cta { display: flex; flex-direction: column; gap: 8px; padding: 14px;
  border-radius: var(--radius-sm); background: var(--color-surface-card);
  border: 1px solid var(--color-line); box-shadow: var(--shadow-sponsor); }
.pane__ctatop { display: flex; gap: 8px; align-items: baseline; flex-wrap: wrap; }
.pane__btn { justify-content: center; min-height: 48px; }

/* ----------------------------------------------------------------- hero */
.intro { padding: clamp(32px, 5vw, 64px) clamp(16px, 3vw, 32px) clamp(32px, 4vw, 48px);
  display: flex; flex-wrap: wrap; gap: 32px 48px; align-items: flex-end;
  border-bottom: 1px solid var(--color-line); }
.intro__text { flex: 1 1 460px; min-width: 0; display: flex; flex-direction: column;
  gap: var(--space-4); }
.intro h1 { font-size: clamp(30px, 4vw, 48px); line-height: 1.1; text-wrap: balance; }
.intro__lede { margin: 0; max-width: 60ch; }

.sel2 { flex: 1 1 380px; min-width: 0; padding: 20px; border-radius: var(--radius-md);
  display: flex; flex-direction: column; gap: var(--space-4); }
.sel2__tabs { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 4px;
  padding: 4px; border-radius: var(--radius-sm); background: var(--color-surface-sunken);
  border: 1px solid var(--color-line); }
.sel2__tab { min-height: 44px; border: 0; border-radius: var(--radius-sm);
  background: transparent; color: var(--color-ink); font: 600 14px/18px var(--font-mono);
  cursor: pointer; }
.sel2__tab[aria-selected="true"] { background: var(--rb-accent); color: var(--color-on-accent); }
.sel2__count { margin: 0; display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; }
.sel2__num { font: 600 56px/1 var(--font-mono); font-variant-numeric: tabular-nums;
  color: var(--rb-accent); }
.sel2__chips { display: flex; flex-wrap: wrap; gap: 4px; }
.sel2__chip { padding: 3px 8px; border-radius: var(--radius-sm);
  border: 1px solid var(--color-line-strong); font: var(--text-body-sm); font-size: 13px; }
.sel2__foot { display: flex; justify-content: space-between; gap: 12px; flex-wrap: wrap;
  padding-top: 12px; border-top: 1px solid var(--color-line); }
.sel2__filter { border: 0; background: none; padding: 6px 0; color: var(--rb-accent);
  font: 600 14px/18px var(--font-sans); cursor: pointer; text-decoration: underline; }

/* -------------------------------------------------------------- sections */
.part { padding-block: clamp(32px, 4vw, 48px); display: flex; flex-direction: column;
  gap: var(--space-4); }
.part__head { display: flex; justify-content: space-between; align-items: flex-end;
  gap: var(--space-4); flex-wrap: wrap; }
.part__meta { font: var(--text-body-sm); }
.part__meta b { font: var(--text-num); font-size: 14px; color: var(--color-ink); }

/* ----------------------------------------------------------------- table */
.toggles { display: flex; flex-wrap: wrap; gap: 8px 20px; align-items: center;
  padding: 12px 14px; border-radius: var(--radius-sm);
  background: var(--color-surface-card); border: 1px solid var(--color-line); }
.toggles__item { display: flex; align-items: center; gap: 6px; min-height: 36px;
  font: var(--text-body-sm); cursor: pointer; }
.toggles__item input { width: 16px; height: 16px; margin: 0; }
.toggles__clear { margin-left: auto; min-height: 36px; padding: 0 10px;
  border-radius: var(--radius-sm); border: 1px solid var(--rb-accent); background: none;
  color: var(--color-ink); font: 600 13px/16px var(--font-mono); cursor: pointer; }

.lst { border: 1px solid var(--color-line-strong); border-radius: var(--radius-sm);
  overflow: hidden; }
.lst__head, .ent { display: grid; gap: 12px; padding: 0 14px;
  grid-template-columns: var(--tbl-cols, minmax(0, 1.5fr) minmax(0, 1.4fr) minmax(0, .8fr)
    minmax(0, .8fr) minmax(0, .7fr) minmax(0, 1.1fr) minmax(0, 1fr)); }
.lst__head { background: var(--color-surface-sunken);
  border-bottom: 1px solid var(--color-line-strong); }
.colh { display: flex; align-items: center; gap: 6px; padding: 12px 0; border: 0;
  background: none; text-align: left; cursor: pointer; font: var(--text-label);
  letter-spacing: var(--tracking-label); text-transform: uppercase;
  color: var(--color-ink-muted); }
.colh:disabled { cursor: default; }
.colh[aria-sort="ascending"], .colh[aria-sort="descending"] { color: var(--rb-accent); }
.colh__arrow { font: 500 11px/1 var(--font-mono); }
.ent { padding: 12px 14px; align-items: center; border-bottom: 1px solid var(--color-line);
  background: var(--color-surface-card); }
.ent:nth-child(even) { background: var(--color-surface-sunken); }
.ent:last-child { border-bottom: 0; }
.ent--sponsor { box-shadow: var(--shadow-sponsor); position: relative; }
.ent__c { min-width: 0; }
.ent__name { display: flex; gap: 10px; align-items: center; }
.ent__pos { font-size: 13px; color: var(--color-ink-muted); width: 22px; flex-shrink: 0; }
.ent__names { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.ent__names a { font: 600 15px/20px var(--font-sans); color: var(--color-ink);
  text-decoration: none; overflow-wrap: anywhere; }
.ent__tag { display: flex; gap: 6px; flex-wrap: wrap; align-items: baseline; }
.ent__plat { display: flex; flex-wrap: wrap; gap: 4px; align-items: center; }
.chipp { padding: 2px 6px; border-radius: var(--radius-sm);
  font: 600 11px/16px var(--font-mono); }
.chipp--on { border: 1px solid var(--color-line-strong); color: var(--color-ink); }
.chipp--off { border: 1px dashed var(--color-line); color: var(--color-ink-muted); }
.ent__n { font: var(--text-num); font-variant-numeric: tabular-nums; text-align: right; }
.ent__reg { font: var(--text-num); font-size: 13px; overflow-wrap: anywhere; }
.ent__open, .ent__details { display: flex; justify-content: center; align-items: center;
  min-height: 40px; padding: 0 10px; border-radius: var(--radius-sm);
  text-decoration: none; font: 600 13px/16px var(--font-sans); text-align: center; }
.ent__open { background: var(--rb-accent); color: var(--color-on-accent); }
.ent__details { border: 1px solid var(--color-line-strong); color: var(--color-ink); }
.ent__details:hover { border-color: var(--rb-accent); }

/* ---------------------------------------------------------------- versus */
.pair2 { display: flex; flex-direction: column; overflow: hidden;
  border-radius: var(--radius-md); }
.pair2__head, .pair2__row { display: grid; gap: 8px;
  grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr) minmax(0, 1fr); }
.pair2__head { padding: 12px 14px; background: var(--color-surface-sunken);
  border-bottom: 1px solid var(--color-line-strong); font: 600 13px/16px var(--font-mono); }
.pair2__row { padding: 10px 14px; border-bottom: 1px solid var(--color-line); }
.pair2__row:nth-child(even) { background: var(--color-surface-sunken); }
.pair2__row span:first-child { font: var(--text-body-sm); color: var(--color-ink-muted); }
.pair2__row .rb-num { font-size: 14px; }
.pair2__verdict { margin: 0; padding: 14px; font: var(--text-body-sm); text-wrap: pretty; }

/* ---------------------------------------------------------- requirements */
.rq { border: 1px solid var(--color-line-strong); border-radius: var(--radius-sm);
  overflow: hidden; }
.rq__row { display: grid; gap: 10px; padding: 11px 14px; align-items: baseline;
  grid-template-columns: minmax(0, 1fr) repeat(3, minmax(0, 1.2fr));
  border-bottom: 1px solid var(--color-line); background: var(--color-surface-card); }
.rq__row:nth-child(even) { background: var(--color-surface-sunken); }
.rq__row--head { background: var(--color-surface-sunken);
  border-bottom: 1px solid var(--color-line-strong); }
.rq__h { font: 600 13px/16px var(--font-mono); }
.rq__k { font: 600 14px/20px var(--font-sans); }
.rq__v { font-size: 13px; overflow-wrap: anywhere; }
.rq__v--off { color: var(--color-ink-muted); }

/* ----------------------------------------------------------------- tasks */
.tk { padding: 18px; border-radius: var(--radius-md); display: flex;
  flex-direction: column; gap: 12px; }
.tk__head { display: flex; justify-content: space-between; gap: 8px; align-items: baseline; }
.tk__plat { font: 600 12px/16px var(--font-mono); color: var(--rb-accent); }
.tk p { margin: 0; font: var(--text-body-sm); text-wrap: pretty; }
.tk__list { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column;
  border-top: 1px solid var(--color-line); }
.tk__list li { display: flex; justify-content: space-between; gap: 12px; padding: 9px 0;
  border-bottom: 1px solid var(--color-line); }
.tk__list a { font: 600 14px/20px var(--font-sans); color: var(--color-ink); }
.tk__list span { text-align: right; }

/* ----------------------------------------------------------- methodology */
.proc { margin: 0; padding: 0; list-style: none; display: grid; gap: 1px;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr));
  background: var(--color-line); border: 1px solid var(--color-line);
  border-radius: var(--radius-sm); overflow: hidden; }
.proc__item { padding: 18px; background: var(--color-surface-card); display: flex;
  flex-direction: column; gap: 8px; }
.proc__n { color: var(--rb-accent); }
.proc__t { font: 600 16px/22px var(--font-sans); }
.proc__item span:last-child { font: var(--text-body-sm); text-wrap: pretty; }

/* ------------------------------------------------------------------- faq */
.part--faq { display: flex; flex-direction: row; flex-wrap: wrap; gap: 24px 48px;
  align-items: flex-start; padding-bottom: clamp(56px, 7vw, 88px); }
.part--faq h2 { flex: 1 1 240px; }
.ask { flex: 3 1 520px; min-width: 0; max-width: 100%;
  border-top: 1px solid var(--color-line-strong); }
.ask__item { border-bottom: 1px solid var(--color-line); }
.ask__q { width: 100%; display: flex; justify-content: space-between; align-items: center;
  gap: 16px; padding: 16px 0; border: 0; background: none; text-align: left;
  color: var(--color-ink); font: 600 16px/24px var(--font-sans); cursor: pointer; }
.ask__sign { font: 500 16px/1 var(--font-mono); color: var(--rb-accent); }
.ask__a p { margin: 0; padding: 0 32px 18px 0; color: var(--color-ink-muted);
  text-wrap: pretty; }

/* ---------------------------------------------------------------- footer */
.base { border-top: 1px solid var(--color-line-strong);
  background: var(--color-surface-sunken); }
.base__in { display: flex; flex-direction: column; gap: 28px; padding-block: 40px; }
.base .grid { gap: 28px; }
.base__col { display: flex; flex-direction: column; gap: 8px; }
.base__col a { color: var(--color-ink); text-decoration: none; font: var(--text-body-sm); }
.base__brand { font: 700 15px/18px var(--font-sans); }
.base__note { margin: 0; padding: 16px; border-radius: var(--radius-sm);
  border: 1px solid var(--color-line-strong); font: var(--text-body-sm);
  color: var(--color-ink-muted); text-wrap: pretty; }
.base__note .rb-label { color: var(--color-ink); }

/* ---------------------------------------------------------------- sticky */
.bar2 { position: fixed; left: 12px; right: 12px; bottom: 12px; z-index: 40;
  padding: 8px 8px 8px 14px; border-radius: var(--radius-sm);
  background: var(--color-surface-card); border: 1px solid var(--color-line-strong);
  box-shadow: var(--shadow-sponsor); display: flex; align-items: center; gap: 12px; }
.bar2__text { display: flex; flex-direction: column; gap: 2px; min-width: 0; flex: 1; }
.bar2__name { font: 600 15px/20px var(--font-sans); }
.bar2__btn { min-height: 44px; padding: 0 16px; flex-shrink: 0;
  border-radius: var(--radius-sm); font: 600 14px/18px var(--font-sans); }

/* ------------------------------------------------------- geo soft-block
   Same contract as the rest of the Binary network: the middleware stamps
   data-geo-blocked on <body> and every affiliate element disappears. */
body[data-geo-blocked] .header-cta,
body[data-geo-blocked] .block--cta-block,
body[data-geo-blocked] .sticky-cta,
body[data-geo-blocked] .block--inline-banner,
body[data-geo-blocked] .block--sidebar-banner,
body[data-geo-blocked] .mobile-nav__cta,
body[data-geo-blocked] a[rel~="sponsored"] { display: none !important; }

/* ----------------------------------------------------------- responsive */
@media (max-width: 1000px) {
  .lst__head, .ent { --tbl-cols: 1fr auto; }
  /* Below the table's comfortable width every row becomes a card: the same
     markup, re-flowed, so sorting and filtering keep working. */
  .lst__head { display: none; }
  .ent { grid-template-columns: 1fr auto; row-gap: 10px; padding: 14px;
    align-items: start; }
  .ent__name { grid-column: 1 / -1; }
  .ent__plat { grid-column: 1 / -1; }
  /* In card mode every figure is labelled; a bare "$10" on its own told the
     reader nothing. */
  .ent__n[data-col="dep"], .ent__n[data-col="trade"], .ent__n[data-col="pay"], .ent__reg {
    grid-column: 1 / -1; text-align: left; display: flex; gap: 8px; }
  .ent__n[data-col="dep"]::before { content: "Min deposit"; }
  .ent__n[data-col="trade"]::before { content: "Min trade"; }
  .ent__n[data-col="pay"]::before { content: "Payout"; }
  .ent__reg::before { content: "Regulator"; }
  .ent__n::before, .ent__reg::before { font: var(--text-label);
    letter-spacing: var(--tracking-label); text-transform: uppercase;
    color: var(--color-ink-muted); min-width: 92px; }
  .ent__act { grid-column: 1 / -1; }
  .ent__open, .ent__details { min-height: 44px; }
}
@media (max-width: 767px) {
  .mast__search { display: none; }
  .mast__burger { display: grid; }
  .mast__partner { display: none; }
  .mast__btn { padding: 0 12px; }
  .part--faq h2 { flex-basis: 100%; }
  .base__in { padding-bottom: 96px; }
}
@media (min-width: 768px) {
  .pane { display: none; }
}

/* ------------------------------------------------------------ brand marks */
.glyph { width: 28px; height: 28px; flex-shrink: 0; border-radius: var(--radius-sm);
  object-fit: contain; background: var(--color-surface-page); }
.glyph--mono { display: grid; place-items: center; font: 700 14px/1 var(--font-sans);
  color: #fff; background: var(--color-surface-sunken); }

/* ======================================================= layout A — apps */
.glyph--md { width: 56px; height: 56px; border-radius: var(--radius-md); font-size: 20px; }
.glyph--lg { width: 72px; height: 72px; border-radius: 20px; font-size: 28px; }
.intro--apps { flex-direction: column; flex-wrap: nowrap; align-items: stretch;
  gap: var(--space-6); border-bottom: 0; }
.intro__kicker { color: var(--rb-accent); }
.intro--apps h1 { font-size: clamp(32px, 5.2vw, 60px); line-height: 1.05; max-width: 17ch; }
.kpi__row { display: grid; gap: 12px; margin-top: 8px;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 200px), 1fr)); }
.kpi { padding: 20px; border-radius: var(--radius-lg); display: flex;
  flex-direction: column; gap: 8px; }
.kpi__n { font-size: 30px; line-height: 34px; }
.part__intro { display: flex; flex-direction: column; gap: 8px; }
.pills { display: flex; gap: 6px; flex-wrap: wrap; }
.pill { font: var(--text-label); letter-spacing: var(--tracking-label);
  text-transform: uppercase; padding: 5px 10px; border-radius: var(--radius-pill);
  border: 1px solid var(--color-line-strong); }
.stars { color: var(--rb-accent); letter-spacing: 1px; }
.stars__off { color: var(--color-line-strong); }

.wn { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 380px), 1fr));
  border-radius: 24px; overflow: hidden; }
.wn__body { padding: clamp(20px, 4vw, 40px); display: flex; flex-direction: column;
  gap: var(--space-6); }
.wn__top { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.wn__head { display: flex; gap: 16px; align-items: center; }
.wn__names { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.wn__names h2 { font-size: clamp(26px, 3vw, 34px); line-height: 1.1; }
.wn__meta { display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
  font: var(--text-body-sm); }
.wn__list { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column;
  gap: 12px; }
.wn__list li { display: flex; gap: 12px; align-items: flex-start; }
.wn__n { color: var(--rb-accent); }
.wn__cta { display: flex; flex-direction: column; gap: 12px; margin-top: auto; }
.wn__btn { justify-content: center; min-height: 56px; font-size: 17px; }
.wn__sub { display: flex; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.wn__shot { background: var(--color-surface-sunken); padding: clamp(20px, 4vw, 44px);
  display: flex; justify-content: center; align-items: center; }

.ph { width: 236px; max-width: 100%; border-radius: 38px; padding: 8px;
  background: var(--color-surface-card); border: 1px solid var(--color-line-strong);
  box-shadow: var(--shadow-card); }
.ph__scr { height: 440px; border-radius: 30px; background: var(--color-surface-page);
  overflow: hidden; display: flex; flex-direction: column; gap: 10px; padding: 12px 14px 14px; }
.ph__bar { display: flex; justify-content: space-between; align-items: center;
  font: 600 11px/14px var(--font-mono); color: var(--color-ink-muted); }
.ph__notch { width: 60px; height: 16px; border-radius: 999px;
  background: var(--color-surface-sunken); }
.ph__pair { display: flex; justify-content: space-between; align-items: center;
  font: 600 13px/16px var(--font-sans); }
.ph__pay { font: 600 11px/14px var(--font-mono); color: var(--rb-accent); }
.ph__price { display: flex; align-items: baseline; gap: 6px; }
.ph__price .rb-num { font-size: 20px; }
.ph__up { font: 500 11px/14px var(--font-mono); color: var(--color-positive); }
.ph__chart { width: 100%; flex: 1; min-height: 0; }
.ph__tf { display: flex; gap: 6px; }
.ph__tf span { flex: 1; text-align: center; padding: 6px 0; border-radius: 8px;
  background: var(--color-surface-sunken); font: 500 11px/14px var(--font-mono); }
.ph__tf .is-on { background: none; border: 1px solid var(--rb-accent); color: var(--rb-accent); }
.ph__fields { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; }
.ph__fields div { padding: 8px; border-radius: 10px; background: var(--color-surface-card);
  border: 1px solid var(--color-line); display: flex; flex-direction: column; gap: 2px; }
.ph__btns { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; }
.ph__btns span { text-align: center; padding: 11px 0; border-radius: 10px;
  color: var(--color-on-accent); font: 700 13px/16px var(--font-sans); }
.ph__up2 { background: var(--color-positive); }
.ph__down { background: var(--color-negative); }

.flt { display: flex; flex-wrap: wrap; gap: 16px 32px; align-items: flex-end;
  padding: 16px 20px; border-radius: var(--radius-lg); }
.flt__g { display: flex; flex-direction: column; gap: 8px; }
.flt__chips { display: flex; flex-wrap: wrap; gap: 6px; }
.chip { min-height: 40px; padding: 0 14px; border-radius: var(--radius-pill);
  border: 1px solid var(--color-line-strong); background: var(--color-surface-card);
  color: var(--color-ink); font: 600 14px/18px var(--font-sans); cursor: pointer; }
.chip--num { font-family: var(--font-mono); }
.chip.is-on { background: var(--rb-accent); color: var(--color-on-accent);
  border-color: var(--rb-accent); }
.sw { min-height: 40px; display: flex; align-items: center; gap: 10px;
  padding: 0 14px 0 6px; border-radius: var(--radius-pill);
  border: 1px solid var(--color-line-strong); background: var(--color-surface-card);
  color: var(--color-ink); font: 600 14px/18px var(--font-sans); cursor: pointer; }
.sw__track { width: 40px; height: 24px; border-radius: 999px;
  background: var(--color-line-strong); position: relative; transition: background .15s; }
.sw__knob { position: absolute; top: 3px; left: 3px; width: 18px; height: 18px;
  border-radius: 50%; background: var(--color-surface-card); transition: left .15s; }
.sw[aria-checked="true"] .sw__track { background: var(--rb-accent); }
.sw[aria-checked="true"] .sw__knob { left: 19px; }
.flt__count { margin-left: auto; display: flex; align-items: center; gap: 12px;
  flex-wrap: wrap; font: var(--text-body-sm); }
.flt__reset { border: 0; background: none; padding: 8px 0; color: var(--rb-accent);
  font: 600 14px/18px var(--font-sans); cursor: pointer; text-decoration: underline; }

.app2__grid { display: grid; gap: 16px;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); }
.app2 { padding: 20px; border-radius: 20px; display: flex; flex-direction: column;
  gap: 16px; }
.app2__head { display: flex; gap: 14px; align-items: flex-start; }
.app2__names { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.app2__title { display: flex; justify-content: space-between; gap: 8px; align-items: baseline; }
.app2__title h3 { overflow-wrap: anywhere; }
.app2__meta { display: flex; align-items: center; gap: 6px; flex-wrap: wrap;
  font: var(--text-body-sm); }
.app2__facts { margin: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 1px;
  border-radius: var(--radius-md); overflow: hidden; background: var(--color-line);
  border: 1px solid var(--color-line); }
.app2__facts > div { padding: 10px 12px; background: var(--color-surface-sunken);
  display: flex; flex-direction: column; gap: 4px; }
.app2__facts dd { margin: 0; font: var(--text-body-sm); color: var(--color-ink); }
.app2__wide { grid-column: 1 / -1; }
.app2__btn { margin-top: auto; display: flex; justify-content: center; align-items: center;
  min-height: 48px; border-radius: var(--radius-md); border: 1.5px solid var(--rb-accent);
  color: var(--rb-accent); text-decoration: none; font: 600 15px/20px var(--font-sans); }
.app2__btn:hover { background: var(--color-surface-sunken); color: var(--rb-accent); }
.app2__none { padding: 40px 24px; border-radius: var(--radius-lg);
  border: 1px dashed var(--color-line-strong); display: flex; flex-direction: column;
  align-items: center; gap: 12px; text-align: center; }

.cmp { border-radius: 20px; overflow: hidden; }
.cmp__head, .cmp__row { display: grid; gap: 12px;
  grid-template-columns: minmax(0, .9fr) minmax(0, 1fr) minmax(0, 1fr); }
.cmp__head { padding: 16px; border-bottom: 1px solid var(--color-line); align-items: end; }
.cmp__head label { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.cmp__head select { width: 100%; min-height: 44px; padding: 0 10px;
  border-radius: var(--radius-md); border: 1px solid var(--color-line-strong);
  background: var(--color-surface-sunken); color: var(--color-ink);
  font: 600 15px/20px var(--font-sans); }
.cmp__row { padding: 14px 16px; border-bottom: 1px solid var(--color-line);
  align-items: start; }
.cmp__row > span:first-child { font: var(--text-body-sm); color: var(--color-ink-muted); }
.cmp__v { display: flex; flex-direction: column; gap: 4px; min-width: 0;
  overflow-wrap: anywhere; }
.cmp__better { font: var(--text-label); letter-spacing: var(--tracking-label);
  text-transform: uppercase; color: var(--color-positive); }
.cmp__sum { padding: 14px 16px; margin: 0; }
@media (max-width: 600px) {
  .wn__shot { display: none; }
  .app2__facts { grid-template-columns: 1fr; }
}

/* ====================================================== layout B — money */
.intro--money { flex-wrap: wrap; align-items: stretch; }
.bg { flex: 1 1 380px; min-width: 0; padding: 20px; border-radius: var(--radius-lg);
  display: flex; flex-direction: column; gap: var(--space-4); }
.bg__lab { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; }
.bg__val { font-size: 34px; line-height: 38px; color: var(--rb-accent); }
.bg__range { width: 100%; accent-color: var(--rb-accent); }
.bg__out { margin: 0; display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.bg__n { font: var(--text-num-lg); font-size: 28px; color: var(--rb-accent); }
.bg__out b { color: var(--color-ink); }

.bucket { padding: 20px; border-radius: var(--radius-lg); display: flex; flex-direction: column;
  gap: 12px; }
.bucket__head { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; }
.bucket__n { color: var(--rb-accent); font: var(--text-num-lg); }
.bucket p { margin: 0; font: var(--text-body-sm); }
.bucket__list { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column;
  border-top: 1px solid var(--color-line); }
.bucket__list li { display: flex; justify-content: space-between; gap: 12px; padding: 9px 0;
  border-bottom: 1px solid var(--color-line); }
.bucket__list a { font: 600 14px/20px var(--font-sans); color: var(--color-ink); }

.meth2 { padding: 16px; border-radius: var(--radius-md); display: flex; flex-direction: column;
  gap: 6px; }
.meth2__t { font: 600 15px/20px var(--font-sans); }
.meth2 span:last-child { font: var(--text-body-sm); }

.calc { padding: 20px; border-radius: var(--radius-lg); display: flex; flex-direction: column;
  gap: var(--space-6); }
.calc__ins { display: grid; gap: 12px;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 200px), 1fr)); }
.calc__ins label { display: flex; flex-direction: column; gap: 6px; }
.calc__ins input { min-height: 48px; padding: 0 12px; border-radius: var(--radius-md);
  border: 1px solid var(--color-line-strong); background: var(--color-surface-sunken);
  color: var(--color-ink); font: var(--text-num); }
.calc__outs { display: grid; gap: 12px;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 180px), 1fr)); }
.calc__o { padding: 16px; border-radius: var(--radius-md);
  background: var(--color-surface-sunken); display: flex; flex-direction: column; gap: 4px; }
.calc__o .rb-label { color: var(--color-ink-muted); }
.calc__o--win .rb-num-lg { color: var(--color-positive); }
.calc__o--lose .rb-num-lg { color: var(--color-negative); }
.calc p { margin: 0; }

/* ====================================================== layout D — learn */
.intro--learn { align-items: center; gap: 40px 64px; padding-block: clamp(40px, 8vw, 96px); }
.intro--learn .intro__text { flex: 3 1 460px; gap: var(--space-6); align-items: flex-start; }
.intro--learn h1 { font-size: clamp(34px, 5.4vw, 60px); line-height: 1.1; max-width: 16ch; }
.intro--learn .intro__lede { font-size: 19px; line-height: 32px; max-width: 52ch; }
.intro__art { flex: 2 1 280px; min-width: 0; display: flex; justify-content: center; }
.intro__art svg { width: 100%; max-width: 380px; height: auto; }
.lp { display: inline-flex; gap: 8px; align-items: center; width: max-content; max-width: 100%;
  padding: 6px 14px; border-radius: var(--radius-pill);
  border: 1px solid var(--color-line-strong); font: var(--text-label);
  letter-spacing: var(--tracking-label); text-transform: uppercase;
  color: var(--color-ink-muted); }
.intro__act { display: flex; flex-direction: column; gap: 12px; align-items: flex-start; }
.intro__start { min-height: 56px; padding: 0 28px; border-radius: var(--radius-pill);
  font-size: 18px; }
.intro__act .rb-faint { max-width: 52ch; }

.pg { position: sticky; top: 64px; z-index: 10; background: var(--color-surface-page);
  padding: 12px 0; border-bottom: 1px solid var(--color-line); display: flex;
  flex-wrap: wrap; gap: 12px 24px; align-items: center; }
.pg__lab { font: 600 16px/22px var(--font-sans); }
.pg__list { flex: 1 1 260px; margin: 0; padding: 0; list-style: none; display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 6px; }
.pg__seg { display: flex; flex-direction: column; gap: 4px; text-decoration: none; }
.pg__bar { display: block; height: 6px; border-radius: 999px;
  background: var(--color-line-strong); }
.pg__seg.is-done .pg__bar { background: var(--rb-accent); }
.pg__n { font-size: 12px; color: var(--color-ink-muted); }
.pg__seg.is-done .pg__n { color: var(--color-ink); }

.lesson__list { display: flex; flex-direction: column; gap: 16px; }
.lesson { border-radius: 24px; background: var(--color-surface-card);
  border: 1px solid var(--color-line); overflow: hidden; scroll-margin-top: 140px; }
.lesson:has(.lesson__body:not([hidden])) { border-color: var(--rb-accent); }
.lesson__btn { width: 100%; display: grid; grid-template-columns: auto minmax(0, 1fr) auto;
  gap: 20px; align-items: center; padding: clamp(16px, 3vw, 26px); border: 0;
  background: none; text-align: left; cursor: pointer; color: var(--color-ink); }
.lesson__ic { width: 60px; height: 60px; border-radius: 18px;
  border: 1.5px solid var(--color-line-strong); display: grid; place-items: center;
  color: var(--rb-accent); font: 700 24px/1 var(--font-mono); }
.lesson__txt { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.lesson__title { font: 700 clamp(20px, 2.4vw, 25px)/1.25 var(--font-sans); }
.lesson__teaser { font: var(--text-body-sm); }
.lesson__sign { width: 36px; height: 36px; border-radius: 50%;
  border: 1px solid var(--color-line-strong); display: grid; place-items: center;
  font: 500 20px/1 var(--font-mono); color: var(--rb-accent); }
.lesson__body { padding: 0 clamp(16px, 3vw, 26px) clamp(18px, 3vw, 30px); display: flex;
  flex-direction: column; gap: 20px; border-top: 1px solid var(--color-line); }
.lesson__text { padding-top: 20px; display: flex; flex-direction: column; gap: 14px;
  max-width: 70ch; }
.lesson__text p { margin: 0; text-wrap: pretty; }
.st2 { display: flex; flex-direction: column; gap: 10px; }
.st2__head { display: flex; justify-content: space-between; gap: 12px; flex-wrap: wrap;
  align-items: baseline; }
.st2__t { font: 600 17px/24px var(--font-sans); }
.lesson__rem { padding: 16px 20px; border-radius: var(--radius-lg);
  background: var(--color-surface-sunken); display: flex; gap: 12px; align-items: flex-start; }
.lesson__rem .rb-label { color: var(--rb-accent); padding-top: 5px; flex-shrink: 0; }
.lesson__nav { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; }
.lesson__next { min-height: 48px; padding: 0 22px; border-radius: var(--radius-pill); }
.lesson__lesson { min-height: 48px; display: inline-flex; align-items: center;
  font: 600 16px/20px var(--font-sans); }

.word__grid { display: grid; gap: 12px;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 250px), 1fr)); }
.word { min-height: 92px; padding: 18px 20px; border-radius: var(--radius-lg);
  border: 1px solid var(--color-line); background: var(--color-surface-card);
  text-align: left; cursor: pointer; color: var(--color-ink); display: flex;
  flex-direction: column; gap: 8px; align-items: flex-start; }
.word[aria-expanded="true"] { border-color: var(--rb-accent); }
.word__top { display: flex; justify-content: space-between; width: 100%; gap: 8px; }
.word__t { font: 700 17px/24px var(--font-sans); }
.word__sign { font: 500 18px/24px var(--font-mono); color: var(--rb-accent); }
.word__d { font: var(--text-body-sm); font-size: 15px; line-height: 24px; text-wrap: pretty; }

.err2__grid { display: grid; gap: 0 48px;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr)); }
.err2 { padding: 22px 0; border-top: 1px solid var(--color-line-strong); display: grid;
  grid-template-columns: 40px minmax(0, 1fr); gap: 12px; }
.err2__n { color: var(--rb-accent); }
.err2__b { display: flex; flex-direction: column; gap: 8px; }
.err2__b h3 { font: 700 18px/26px var(--font-sans); }
.err2__b p { margin: 0; font-size: 16px; line-height: 27px; text-wrap: pretty; }

.mn { padding: clamp(20px, 4vw, 44px); border-radius: 28px; display: flex; flex-wrap: wrap;
  gap: 32px 56px; align-items: flex-start; }
.mn__text { flex: 1 1 360px; min-width: 0; display: flex; flex-direction: column;
  gap: var(--space-4); }
.mn__text p { margin: 0; text-wrap: pretty; }
.mn__link { align-self: flex-start; min-height: 48px; display: inline-flex;
  align-items: center; gap: 8px; padding: 0 20px; border-radius: var(--radius-pill);
  border: 1.5px solid var(--rb-accent); color: var(--color-ink); text-decoration: none;
  font: 600 16px/20px var(--font-sans); }
.mn__stats { flex: 1 1 320px; min-width: 0; margin: 0; display: grid; gap: 1px;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 140px), 1fr));
  background: var(--color-line); border: 1px solid var(--color-line);
  border-radius: var(--radius-lg); overflow: hidden; }
.mn__stats > div { padding: 18px; background: var(--color-surface-card); display: flex;
  flex-direction: column; gap: 6px; }
.mn__stats dd { margin: 0; }
@media (max-width: 600px) {
  .lesson__btn { grid-template-columns: auto minmax(0, 1fr); row-gap: 10px; }
  .lesson__sign { grid-row: 1; grid-column: 2; justify-self: end; }
  .lesson__txt { grid-column: 1 / -1; }
}

/* ------------------------------------------------------- site brand mark */
.mast__logo { display: flex; align-items: center; }
.mast__logo svg { height: 30px; width: auto; display: block; }
/* The lockup's wordmark is dark by design; in the dark theme it has to flip. */
:root[data-theme="dark"] .mast__logo svg text { fill: var(--color-ink); }
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .mast__logo svg text { fill: var(--color-ink); }
}
.mast__geo { align-self: center; }
@media (max-width: 520px) { .mast__geo { display: none; } }

/* --------------------------------------------------- header on a phone
   At 393 px the long partner label wrapped onto two lines and squeezed the
   theme button off the row. The label shortens instead of the row breaking. */
.rb-btn, .mast__btn { white-space: nowrap; }
.mast__btnshort { display: none; }
/* The long partner label stops fitting well before the phone: at 768 the search
   field is still on the row and the header wrapped to two lines. */
@media (max-width: 900px) {
  .mast__btnlong { display: none; }
  .mast__btnshort { display: inline; }
  .mast__search { max-width: 240px; }
  .mast__partner { display: none; }
}
@media (max-width: 560px) {
  .mast__bar { gap: 8px; }
  .mast__btn { padding: 0 14px; }
  .mast__right { gap: 6px; }
  .mast__ctatext { gap: 0; }
  .mast__logo svg { height: 26px; }
}
@media (max-width: 400px) {
  /* Three controls plus a lockup do not fit; the theme switch is the one a
     reader needs least on the first screen, and it stays in the menu. */
  .mast__icon[data-theme-toggle] { display: none; }
  .pane .mast__icon[data-theme-toggle] { display: grid; }
}
.pane__theme { align-self: flex-start; }
@media (min-width: 401px) { .pane__theme { display: none; } }

/* icons inside the platform chips: the tick and cross come from the shared bank
   and inherit the chip's colour, so they work in both themes */
.chipp { display: inline-flex; align-items: center; gap: 4px; }
.chipp svg { width: 12px; height: 12px; flex-shrink: 0; }

/* ==================================================== layout C — registry */
.doc { font: var(--text-doc-h2); font-size: clamp(25px, 2.6vw, 32px); line-height: 1.2; }
.grp2__kicker { font: 600 14px/18px var(--font-serif); font-variant-caps: all-small-caps;
  letter-spacing: var(--tracking-label); color: var(--color-ink-muted); }
.intro--reg { align-items: flex-start; gap: 32px 56px;
  border-bottom: 1px solid var(--color-line-strong); }
.intro--reg .intro__text { flex: 2 1 480px; }
.intro--reg h1 { font: 600 clamp(30px, 4.4vw, 52px)/1.1 var(--font-serif);
  letter-spacing: -0.01em; }
.intro--reg .intro__lede { font-size: 18px; line-height: 30px; max-width: 64ch;
  color: var(--color-ink); }
.vr { flex: 1 1 260px; min-width: 0; padding: 22px; background: var(--color-surface-card);
  border: 1px solid var(--color-line-strong); outline: 1px solid var(--color-line);
  outline-offset: -7px; display: flex; flex-direction: column; gap: 14px; }
.vr__row { display: flex; flex-direction: column; gap: 4px; padding-top: 12px;
  border-top: 1px solid var(--color-line); }
.vr__row:first-of-type { padding-top: 0; border-top: 0; }
.vr--note p { margin: 0; font: var(--text-body-sm); text-wrap: pretty; }

.grp2 { padding: 22px; background: var(--color-surface-card);
  border: 1px solid var(--color-line-strong); outline: 1px solid var(--color-line);
  outline-offset: -7px; display: flex; flex-direction: column; gap: 14px; }
.grp2__head { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; }
.grp2__head h3 { font: 600 19px/25px var(--font-serif); }
.grp2__n--bad { color: var(--color-negative); }
.grp2 p { margin: 0; font: var(--text-body-sm); text-wrap: pretty; }
.grp2__list { margin: 0; padding: 12px 0 0; list-style: none;
  border-top: 1px solid var(--color-line); display: flex; flex-direction: column; gap: 8px; }
.grp2__list li { display: flex; justify-content: space-between; gap: 12px;
  font: var(--text-body-sm); }
.grp2__list a { color: var(--color-ink); font-weight: 600; }
.grp2__list .rb-faint { text-align: right; }
.grp2__empty { font-style: italic; color: var(--color-ink-muted); }

.rtbl { border-top: 2px solid var(--color-ink); border-bottom: 1px solid var(--color-ink); }
.rent { display: grid; gap: 16px; padding: 14px 8px; align-items: start;
  border-bottom: 1px solid var(--color-line);
  grid-template-columns: 36px minmax(0, 1.6fr) minmax(0, 1fr) minmax(0, 1.1fr) minmax(0, 1.4fr); }
.rent--head { border-bottom: 1px solid var(--color-ink); padding-block: 10px; }
.rent--sponsor { box-shadow: var(--shadow-sponsor); }
.rent__pos { color: var(--color-ink-muted); }
.rent__name { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.rent__brand { display: flex; align-items: center; gap: 8px; min-width: 0; }
.rent__brand a { font: 600 16px/22px var(--font-sans); color: var(--color-ink);
  overflow-wrap: anywhere; }
.rent__tag { display: flex; gap: 6px; flex-wrap: wrap; align-items: baseline; }
.rent__reg, .rent__jur { font: var(--text-body-sm); }
.rent__st { display: flex; gap: 8px; align-items: baseline; font: var(--text-body-sm); }
.rent__stx { display: flex; flex-direction: column; }
.dot { width: 8px; height: 8px; flex-shrink: 0; border-radius: 50%;
  transform: translateY(-1px); }
.dot--ok { background: var(--color-positive); }
.dot--warn { background: var(--color-warning); }
.dot--bad { background: var(--color-negative); }
.dot--muted { background: var(--color-ink-faint); }
.grp2__cta { display: inline-flex; align-items: center; min-height: 36px; padding: 0 12px;
  border-radius: var(--radius-sm); background: var(--rb-accent);
  color: var(--color-on-accent); text-decoration: none; font: 600 13px/16px var(--font-sans); }

.mn4__grid { display: grid; gap: 0 32px;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr)); }
.mn4 { padding: 18px 0; border-top: 1px solid var(--color-ink); display: flex;
  flex-direction: column; gap: 10px; }
.mn4__n { color: var(--rb-accent); }
.mn4 h3 { font: 600 19px/25px var(--font-serif); }
.mn4 p { margin: 0; font: var(--text-body-sm); text-wrap: pretty; }

.part--split { display: flex; flex-wrap: wrap; gap: 32px 56px; align-items: flex-start; }
.part__left { flex: 1 1 280px; min-width: 0; display: flex; flex-direction: column;
  gap: var(--space-4); }
.tl__list { flex: 2 1 460px; min-width: 0; margin: 0; padding: 0; list-style: none;
  display: flex; flex-direction: column; }
.tl { display: grid; grid-template-columns: 28px minmax(0, 1fr); gap: 18px; }
.tl__n { width: 28px; height: 28px; display: grid; place-items: center; border-radius: 50%;
  border: 1px solid var(--rb-accent); color: var(--rb-accent);
  font: 600 12px/1 var(--font-mono); }
.tl__b { padding-bottom: 24px; display: flex; flex-direction: column; gap: 6px; }
.tl__b h3 { font: 600 18px/26px var(--font-sans); }
.tl__b p { margin: 0; font: var(--text-body-sm); text-wrap: pretty; }
@media (max-width: 1000px) {
  .rent { grid-template-columns: 30px minmax(0, 1fr); row-gap: 8px; }
  .rent--head { display: none; }
  .rent__reg, .rent__jur, .rent__st { grid-column: 2; }
  .rent__reg::before { content: "Regulator: "; color: var(--color-ink-muted); }
  .rent__jur::before { content: "Jurisdiction: "; color: var(--color-ink-muted); }
}

/* --------------------------------------------- partner beside the register */
.rsplit { display: grid; gap: 24px; grid-template-columns: minmax(0, 1fr); }
@media (min-width: 1080px) { .rsplit { grid-template-columns: minmax(0, 1fr) 300px; } }
.prt { align-self: start; padding: 20px; background: var(--color-surface-card);
  border: 1px solid var(--color-sponsor); box-shadow: var(--shadow-sponsor);
  display: flex; flex-direction: column; gap: 14px; }
.prt__top { display: flex; gap: 8px; align-items: baseline; flex-wrap: wrap; }
.prt__head { display: flex; gap: 12px; align-items: center; }
.prt__head h3 { font: 600 20px/26px var(--font-serif); }
.prt__facts { margin: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 10px 14px; }
.prt__facts > div { display: flex; flex-direction: column; gap: 2px; }
.prt__facts dd { margin: 0; }
.prt__cta { justify-content: center; }
.prt__note { margin: 0; }
.prt--wide { border-radius: var(--radius-lg); }
.prt--wide .prt__facts { grid-template-columns: repeat(auto-fit, minmax(min(100%, 140px), 1fr)); }
@media (min-width: 760px) {
  .prt--wide { display: grid; grid-template-columns: auto minmax(0, 1fr) auto;
    align-items: center; gap: 20px; }
  .prt--wide .prt__top { grid-column: 1; flex-direction: column; align-items: flex-start; gap: 2px; }
  .prt--wide .prt__head { grid-column: 2; }
  .prt--wide .prt__facts { grid-column: 1 / -1; }
  .prt--wide .block--cta-block { grid-column: 3; grid-row: 1 / 3; }
}

/* ---------------------------------------------------------------- structure variants
   Five headers, five footers, five table shapes. Which one a site wears is decided by
   _structure.py so that no two sites of one country repeat a shape - they meet in the
   same search result, and an identical skeleton is what gives a network away. */

/* inline navigation, used by the headers that have room for it */
.mast__nav { display: flex; align-items: center; gap: 14px; min-width: 0; }
.mast__nlink { font: var(--text-body-sm); color: var(--color-ink-muted);
  text-decoration: none; white-space: nowrap; }
.mast__nlink:hover { color: var(--rb-accent); }
@media (max-width: 1100px) { .mast__nav { display: none; } }

/* v1 - brand in the middle */
.mast--v1 .mast__bar { display: grid; grid-template-columns: 1fr auto 1fr; gap: var(--space-4); }
.mast--v1 .mast__side { display: flex; align-items: center; gap: 12px; min-width: 0; }
.mast--v1 .mast__side--r { justify-content: flex-end; }
.mast--v1 .mast__brand { justify-content: center; }

/* v2 - two storeys */
.mast--v2 .mast__strip { border-top: 1px solid var(--color-line);
  background: var(--color-surface-card); }
.mast--v2 .mast__stripin { display: flex; align-items: center; justify-content: space-between;
  gap: 16px; min-height: 40px; }
.mast--v2 .mast__checked { font: var(--text-body-sm); white-space: nowrap; }
@media (max-width: 1100px) { .mast--v2 .mast__strip { display: none; } }

/* v3 - compact */
.mast--v3 .mast__bar { min-height: 56px; }

/* v4 - brand on the right */
.mast--v4 .mast__lead { display: flex; align-items: center; gap: 18px; margin-right: auto;
  min-width: 0; }
.mast--v4 .mast__right { margin-left: 0; }

/* ----- footers */
.base--v1 .base__top { display: flex; flex-wrap: wrap; gap: var(--space-5); }
.base--v1 .base__ident { flex: 1 1 260px; display: flex; flex-direction: column; gap: 10px; }
.base--v1 .base__notes { flex: 2 1 420px; display: grid; gap: 14px; }
.base--v1 .base__links { padding-top: var(--space-4); border-top: 1px solid var(--color-line); }

.base__box { display: grid; gap: 14px; padding: 18px; border: 1px solid var(--color-line-strong);
  border-radius: var(--radius-sm); background: var(--color-surface-card); }
.base__box--quiet { border-style: dashed; background: none; }

.base--v3 .base__in--split { display: flex; flex-wrap: wrap; gap: var(--space-5); }
.base--v3 .base__half { flex: 1 1 320px; display: flex; flex-direction: column;
  gap: var(--space-4); min-width: 0; }
.base--v3 .base__pair { display: flex; flex-wrap: wrap; gap: var(--space-5); }
.base--v3 .base__half--notes { gap: 16px; }

.base--v4 .base__head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 10px; }
.base__strip { display: flex; flex-wrap: wrap; gap: 8px 18px; padding-block: 14px;
  border-block: 1px solid var(--color-line); }
.base__strip a { font: var(--text-body-sm); color: var(--color-ink-muted);
  text-decoration: none; }
.base__strip a:hover { color: var(--rb-accent); }

/* ----- tables */
.toggles--sel { justify-content: space-between; }
.toggles__sel { display: flex; align-items: center; gap: 8px; min-height: 36px; }
.toggles__sel select { min-height: 36px; padding: 0 8px; border-radius: var(--radius-sm);
  border: 1px solid var(--color-line-strong); background: var(--color-surface-card);
  color: var(--color-ink); font: var(--text-body-sm); }

/* v1, v2 - cards. The row keeps its class and its data, only the shape changes. */
.lst--v1, .lst--v2 { border: 0; border-radius: 0; background: none; }
.lst--v1 .lst__body, .lst--v2 .lst__body { display: grid; gap: 12px;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); }
.lst--v1 .ent, .lst--v2 .ent { display: flex; flex-direction: column; gap: 10px;
  padding: 14px; border: 1px solid var(--color-line-strong);
  border-radius: var(--radius-sm); background: var(--color-surface-card); }
.lst--v1 .ent__top, .lst--v2 .ent__top { display: flex; align-items: center; gap: 10px;
  min-width: 0; }
.lst--v1 .ent__link, .lst--v2 .ent__link { font: 600 16px/20px var(--font-sans);
  color: var(--color-ink); text-decoration: none; overflow-wrap: anywhere; }
.lst--v1 .ent__facts, .lst--v2 .ent__facts { margin: 0; display: grid; gap: 8px 12px;
  grid-template-columns: repeat(2, minmax(0, 1fr)); }
.ent__f { min-width: 0; }
.ent__f dt, .ent__f dd { margin: 0; }
.ent__f dd { font: var(--text-num); font-size: 14px; overflow-wrap: anywhere; }
.lst--v1 .ent__details, .lst--v2 .ent__details { margin-top: auto; }
.lst--v2 .ent { border-left: 3px solid var(--rb-accent); }
.lst--v2 .ent__pos { font: 600 30px/1 var(--font-mono); color: var(--rb-accent); width: auto; }

/* v3 - compact rows: no stripes, tighter leading, dotted separators */
.lst--v3 .ent { padding: 8px 14px; border-bottom: 1px dotted var(--color-line-strong); }
.lst--v3 .ent:nth-child(even) { background: none; }
.lst--v3 .ent__names a { font-size: 14px; }

/* v4 - bands of three */
.lst__band { padding: 6px 14px; background: var(--color-surface-sunken);
  border-block: 1px solid var(--color-line); }
.lst__band span { font: var(--text-num); font-size: 12px; }

/* ------------------------------------------------------------------ profiles
   The block every in-page broker link lands on. scroll-margin-top is what makes a
   jump land below the sticky header instead of under it. */
.pfl__grid { display: grid; gap: 16px;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr)); }
.pfl { scroll-margin-top: 140px; display: flex; flex-direction: column; gap: 14px;
  padding: 18px; border: 1px solid var(--color-line); border-radius: var(--radius-lg);
  background: var(--color-surface-card); }
.pfl:target { border-color: var(--rb-accent); box-shadow: 0 0 0 2px var(--rb-accent-weak, transparent); }
.pfl--sponsor { border-color: var(--rb-accent); }
.pfl__head { display: flex; align-items: center; gap: 12px; }
.pfl__names { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; min-width: 0; }
.pfl__names h3 { margin: 0; font-size: 1.05rem; }
.pfl__facts { display: grid; gap: 10px; margin: 0;
  grid-template-columns: repeat(3, minmax(0, 1fr)); }
.pfl__f dt { margin-bottom: 2px; }
.pfl__f dd { margin: 0; }
.pfl__lines { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.pfl__lines li { display: grid; gap: 2px; min-width: 0; }
.pfl__lines span { overflow-wrap: anywhere; }
.pfl__checked { margin-top: auto; }
.pfl__cta a { width: 100%; }
@media (max-width: 480px) {
  .pfl__facts { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* Anything a link jumps to has to clear the sticky header. Without this the nav
   anchors landed the section's heading underneath it: the page had scrolled, the
   reader saw the middle of a section and no title, so the link read as broken.
   Found by the render gate, not by looking. */
[id] { scroll-margin-top: 104px; }

/* PredictionDesk - the editorial layer the listicle kit does not have.

   The Binary Reviews design system is built for one-page comparison landings: cards,
   tables, chips, no long-form reading. This file adds the missing piece and nothing
   else, in the same vocabulary: every value is a token from the base layer, no raw hex,
   so a change to the palette still reaches these pages. */

/* The accent of each site, in both themes, is written by the build (accent_rules in
   pp_build_kit.py) from a measured contrast, so the kit no longer carries one site's
   colour. 🚨 These rules also had to go rather than just be overridden: the dark one
   was `[data-layout="desk"]:root[data-theme="dark"]`, three classes of specificity
   against the build's two, so it would have won on the one site whose layout matched
   and quietly kept the unreadable pair. */

/* ------------------------------------------------------------------ page frame */
.rc-main { padding-block: var(--space-12) var(--space-20); }
.rc-shell { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--space-12); }
@media (min-width: 1080px) {
  .rc-shell--aside { grid-template-columns: minmax(0, 1fr) 300px; align-items: start; }
}

/* ------------------------------------------------------------------ hero */
.rc-hero { padding-block: var(--space-12) var(--space-8);
  border-bottom: 1px solid var(--color-line); }
.rc-hero__kicker { color: var(--color-ink-faint); display: block;
  margin-bottom: var(--space-3); }
.rc-hero h1 { max-width: 20ch; }
.rc-hero__lede { font: var(--text-body); color: var(--color-ink-muted);
  max-width: 68ch; margin: var(--space-4) 0 0; }
.rc-hero__meta { display: flex; flex-wrap: wrap; gap: var(--space-2) var(--space-6);
  margin-top: var(--space-6); }
.rc-hero__meta span { font: var(--text-body-sm); color: var(--color-ink-faint); }
.rc-hero__meta b { font: var(--text-num); color: var(--color-ink); }

/* ------------------------------------------------------------------ prose */
.rc-prose { max-width: 72ch; }
.rc-prose > * + * { margin-top: var(--space-6); }
.rc-prose p { font: var(--text-body); color: var(--color-ink); margin: 0; }
.rc-prose h2 { font: var(--text-doc-h2); color: var(--color-ink);
  margin: var(--space-12) 0 0; scroll-margin-top: 90px; }
.rc-prose h2::after { content: ""; display: block; width: 44px; height: 3px;
  margin-top: var(--space-3); border-radius: var(--radius-pill);
  background: var(--rb-accent); }
.rc-prose h3 { font: var(--text-h3); margin: var(--space-8) 0 0; }
.rc-prose ul, .rc-prose ol { margin: 0; padding-left: 1.25em; display: grid;
  gap: var(--space-3); }
.rc-prose li { font: var(--text-body); color: var(--color-ink); }
.rc-prose li::marker { color: var(--rb-accent); }
.rc-prose strong { font-weight: 600; }
.rc-prose blockquote { margin: 0; padding: var(--space-4) var(--space-6);
  border-left: 3px solid var(--rb-accent); background: var(--color-surface-sunken);
  border-radius: 0 var(--radius-md) var(--radius-md) 0; }

/* A table in prose has to stay readable on a phone without breaking the page: the
   scroll lives in its own box, never on the document. */
.rc-tablewrap { overflow-x: auto; border: 1px solid var(--color-line);
  border-radius: var(--radius-md); background: var(--color-surface-card); }
.rc-prose table { width: 100%; border-collapse: collapse; min-width: 420px; }
.rc-prose th { text-align: left; font: var(--text-label);
  letter-spacing: var(--tracking-label); text-transform: uppercase;
  color: var(--color-ink-faint); padding: var(--space-3) var(--space-4);
  border-bottom: 1px solid var(--color-line-strong); white-space: nowrap; }
.rc-prose td { font: var(--text-body-sm); color: var(--color-ink);
  padding: var(--space-3) var(--space-4);
  border-bottom: 1px solid var(--color-line); vertical-align: top; }
.rc-prose tr:last-child td { border-bottom: 0; }

/* ------------------------------------------------------------------ faq */
.rc-faq { margin-top: var(--space-20); }
.rc-faq h2 { font: var(--text-h2); letter-spacing: var(--tracking-h2);
  margin: 0 0 var(--space-6); }
.rc-faq__item { border-bottom: 1px solid var(--color-line); }
.rc-faq__item > summary { cursor: pointer; list-style: none; padding: var(--space-4) 0;
  font: 600 17px/24px var(--font-sans); color: var(--color-ink);
  display: flex; align-items: flex-start; gap: var(--space-4); }
.rc-faq__item > summary::-webkit-details-marker { display: none; }
.rc-faq__item > summary::after { content: "+"; margin-left: auto; flex-shrink: 0;
  font: var(--text-num-lg); line-height: 24px; color: var(--rb-accent); }
.rc-faq__item[open] > summary::after { content: "\2212"; }
.rc-faq__a { margin: 0 0 var(--space-4); font: var(--text-body);
  color: var(--color-ink-muted); max-width: 72ch; }

/* ------------------------------------------------------------------ aside + cards */
/* 🚨 Замечание Эдуарда 16.10.2026: на телефоне рельса висела поверх таблицы тиражей.
   The two-column layout starts at 1080px, but the stickiness did not: below that the
   aside is an ordinary block in the flow, and sticking it there parks the footnote and
   the "read next" box on top of the content the reader is scrolling. Sticky belongs to
   the width where the rail has a column of its own. Гейт: _scripts/pp_sticky_check.py */
.rc-aside { display: grid; gap: var(--space-6); }
@media (min-width: 1080px) {
  .rc-aside { position: sticky; top: 88px; }
}
.rc-aside__box { padding: var(--space-6); }
.rc-aside__box h2 { font: var(--text-h3); margin: 0 0 var(--space-4); }
.rc-linklist { display: grid; gap: var(--space-3); margin: 0; padding: 0;
  list-style: none; }
.rc-linklist a { font: var(--text-body-sm); color: var(--color-ink);
  text-decoration: none; display: block; }
.rc-linklist a:hover { color: var(--rb-accent); }

.rc-cards { display: grid; gap: var(--space-6);
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr)); }
.rc-card { padding: var(--space-6); display: flex; flex-direction: column;
  gap: var(--space-3); text-decoration: none; color: inherit; }
.rc-card:hover { border-color: var(--rb-accent); }
.rc-card__kicker { color: var(--rb-accent); }
.rc-card h3 { font: var(--text-h3); margin: 0; }
.rc-card p { font: var(--text-body-sm); color: var(--color-ink-muted); margin: 0; }

/* ------------------------------------------------------------------ note */
.rc-note { padding: var(--space-6); border-left: 3px solid var(--color-warning);
  background: var(--color-surface-sunken); border-radius: 0 var(--radius-md)
  var(--radius-md) 0; }
.rc-note p { margin: 0; font: var(--text-body-sm); color: var(--color-ink-muted); }

/* ------------------------------------------------------------------ breadcrumb */
.rc-crumb { display: flex; flex-wrap: wrap; gap: var(--space-2);
  font: var(--text-body-sm); color: var(--color-ink-faint);
  padding-top: var(--space-6); }
.rc-crumb a { color: var(--color-ink-faint); text-decoration: none; }
.rc-crumb a:hover { color: var(--rb-accent); }

/* ------------------------------------------------------------------ nav + drawer */
.rc-nav { display: flex; gap: var(--space-1); align-items: center; }
.rc-nav__item { position: relative; }
.rc-nav__top { display: inline-flex; align-items: center; gap: 6px;
  padding: 8px 12px; border-radius: var(--radius-sm); text-decoration: none;
  color: var(--color-ink-muted); font: 600 14px/18px var(--font-sans);
  white-space: nowrap; }
.rc-nav__item:hover > .rc-nav__top { color: var(--color-ink);
  background: var(--color-surface-card); }
.rc-nav__menu { position: absolute; top: 100%; left: 0; min-width: 260px;
  padding: var(--space-3); display: none; z-index: 40;
  background: var(--color-surface-card); border: 1px solid var(--color-line);
  border-radius: var(--radius-md); box-shadow: var(--shadow-card);
  /* 🚨 The 6px of air that used to sit between the link and the panel was dead space:
     the pointer crossed it, :hover was lost on the way down and the menu shut before it
     could be reached. The gap is now a TRANSPARENT TOP BORDER, which belongs to the
     panel's own box, so the hover never breaks. background-clip keeps the card from
     painting under it. */
  border-top: 7px solid transparent; background-clip: padding-box; }
.rc-nav__item:hover > .rc-nav__menu, .rc-nav__item:focus-within > .rc-nav__menu {
  display: grid; gap: 2px; }
.rc-nav__menu a { padding: 8px 10px; border-radius: var(--radius-sm);
  text-decoration: none; color: var(--color-ink); font: var(--text-body-sm); }
.rc-nav__menu a:hover { background: var(--color-surface-sunken); color: var(--rb-accent); }

.rc-drawer { display: none; }
@media (max-width: 1023px) {
  .rc-nav { display: none; }
  .rc-hd__burger { display: grid; }
  .rc-drawer { display: block; position: fixed; inset: 0; z-index: 60;
    background: var(--color-surface-page); overflow-y: auto; padding: var(--space-6);
    visibility: hidden; opacity: 0; transition: opacity .18s; }
  body.rc-open .rc-drawer { visibility: visible; opacity: 1; }
  body.rc-open { overflow: hidden; }
  .rc-drawer__head { display: flex; align-items: center; justify-content: space-between;
    margin-bottom: var(--space-6); }
  .rc-drawer__group { border-top: 1px solid var(--color-line); padding: var(--space-4) 0; }
  .rc-drawer__group > b { display: block; font: var(--text-label);
    letter-spacing: var(--tracking-label); text-transform: uppercase;
    color: var(--color-ink-faint); margin-bottom: var(--space-3); }
  .rc-drawer__group a { display: block; padding: 10px 0; text-decoration: none;
    color: var(--color-ink); font: var(--text-body); }
}
@media (min-width: 1024px) { .rc-hd__burger { display: none; } }

/* ------------------------------------------------------------------ footer */
.rc-foot { border-top: 1px solid var(--color-line);
  background: var(--color-surface-sunken); padding-block: var(--space-12); }
.rc-foot__cols { display: grid; gap: var(--space-8);
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr)); }
.rc-foot__cols b { display: block; font: var(--text-label);
  letter-spacing: var(--tracking-label); text-transform: uppercase;
  color: var(--color-ink-faint); margin-bottom: var(--space-3); }
.rc-foot__cols a { display: block; padding: 4px 0; text-decoration: none;
  color: var(--color-ink-muted); font: var(--text-body-sm); }
.rc-foot__cols a:hover { color: var(--rb-accent); }
.rc-foot__legal { margin-top: var(--space-12); padding-top: var(--space-6);
  border-top: 1px solid var(--color-line); font: var(--text-body-sm);
  color: var(--color-ink-faint); max-width: 90ch; }

/* ------------------------------------------------------------------ header
   Own class names on purpose. The Binary kit renames its own stems per site
   (hd -> mast, tbr, nvb ...) precisely so two sites do not share a skeleton, and
   borrowing its names here would hand both networks the same fingerprint. Only the
   TOKENS are shared. */
.rc-hd { position: sticky; top: 0; z-index: 30;
  background: var(--color-surface-sunken);
  border-bottom: 1px solid var(--color-line-strong); }
.rc-hd__bar { display: flex; align-items: center; gap: var(--space-4);
  padding-block: 10px; }
.rc-hd__brand { display: flex; align-items: center; gap: 10px; flex-shrink: 0;
  text-decoration: none; color: var(--color-ink); }
.rc-hd__brand:hover { color: var(--color-ink); }
.rc-hd__glyph { width: 20px; height: 20px; display: block; }
.rc-hd__mark { height: 34px; width: 34px; min-width: 34px; padding: 0;
  border-radius: var(--radius-sm); background: var(--rb-accent);
  color: var(--color-on-accent); display: grid; place-items: center;
  font: 700 13px/1 var(--font-mono); letter-spacing: .04em; }
.rc-hd__name { font: 700 16px/20px var(--font-sans); white-space: nowrap; }
.rc-hd__right { margin-left: auto; display: flex; align-items: center; gap: 10px; }
.rc-hd__icon { width: 40px; height: 40px; flex-shrink: 0; display: grid;
  place-items: center; border-radius: var(--radius-sm);
  border: 1px solid var(--color-line-strong); background: var(--color-surface-card);
  color: var(--color-ink); cursor: pointer; font-size: 15px; }
.rc-hd__cta { display: inline-flex; align-items: center; padding: 10px 18px;
  border-radius: var(--radius-md); background: var(--rb-accent); color: var(--color-on-accent);
  font: 600 14px/18px var(--font-sans); text-decoration: none; white-space: nowrap; }
.rc-hd__cta:hover { color: var(--color-on-accent); filter: brightness(1.08); }

/* The burger is declared after .rc-hd__icon, so the desktop rule has to come last or
   the icon's own `display:grid` wins and the button shows on a wide screen. */
.rc-hd__burger { display: none; }
@media (max-width: 1023px) { .rc-hd__burger { display: grid; } }

/* Hero: text column plus a standing card, so the top of the page is not half empty. */
.rc-hero__grid { display: grid; gap: var(--space-8); align-items: start; }
@media (min-width: 1000px) {
  .rc-hero__grid { grid-template-columns: minmax(0, 1.35fr) minmax(320px, .65fr); }
}
.rc-hero__card { padding: var(--space-6); display: grid; gap: var(--space-4); }
.rc-hero__card h2 { font: var(--text-h3); margin: 0; }
.rc-hero__rules { margin: 0; padding: 0; list-style: none; display: grid;
  gap: var(--space-3); }
.rc-hero__rules li { display: flex; gap: var(--space-3); font: var(--text-body-sm);
  color: var(--color-ink-muted); }
.rc-hero__rules b { color: var(--color-ink); font-weight: 600; }
.rc-hero__rules span[aria-hidden] { color: var(--color-negative); font-weight: 700; }

/* 🚨 On a phone the bar held brand + a 189px CTA + two 40px icons; the icons ended up at
   x=396 and x=446 on a 393 screen. `overflow-x: clip` on the page hid that without a
   scrollbar, so "no sideways scroll" looked like "everything fits". The CTA moves into
   the drawer below 560px and the icons get their space back. */
@media (max-width: 559px) {
  .rc-hd__bar > .rc-hd__right > .rc-hd__cta { display: none; }
  .rc-drawer__cta { display: inline-flex; width: 100%; justify-content: center;
    margin-bottom: var(--space-6); padding: 14px 18px; border-radius: var(--radius-md);
    background: var(--rb-accent); color: var(--color-on-accent); font: 600 15px/20px var(--font-sans);
    text-decoration: none; }
}
@media (min-width: 560px) { .rc-drawer__cta { display: none; } }

.rc-hero__note { margin: var(--space-3) 0 0; font-size: 13px; line-height: 1.5;
  color: var(--color-ink-muted); }
.rc-hd__names { display: flex; flex-direction: column; min-width: 0; }

.rc-idx__block { margin-bottom: var(--space-12); }
.rc-idx__block h2 { margin: 0 0 var(--space-4); font-size: 19px; }

/* `columns` does nothing here: the link list is a flex column, so it stays one column.
   The grid is what actually splits it. */
.rc-idx__cols ul { display: grid; grid-template-columns: 1fr 1fr;
  column-gap: var(--space-8); }
@media (max-width: 720px) { .rc-idx__cols ul { grid-template-columns: 1fr; } }

/* ------------------------------------------------------------------ section figure
   An illustration sits inside the prose column, under the first paragraph of its
   section. The caption is markup, never painted into the picture: it has to stay
   editable, translatable and reachable by a screen reader. The aspect ratio is held by
   the img's own width/height attributes, so nothing jumps while the file loads. */
/* The picture needs air on both sides: against the paragraph above it the old 32px read
   as "stuck to the text", and the caption has to sit closer to its own picture than the
   next paragraph does to the caption, or it looks like the body text started early.
   (--space-10 does not exist in the token set - a var() pointing at it silently dropped
   the rule, which is why the desktop gap never widened.) */
.rc-figure { margin: var(--space-12) 0; }
.rc-figure img { display: block; width: 100%; height: auto; border-radius: var(--radius-md);
  border: 1px solid var(--color-line); background: var(--color-surface-sunken); }
.rc-figure figcaption { font: var(--text-body-sm); color: var(--color-ink-faint);
  margin-top: var(--space-4); padding-left: var(--space-3);
  border-left: 2px solid var(--rb-accent); }

/* The illustrations are night shots: they already sit dark against a light page, and
   dimming them further in the dark theme only muddies them. A light-lit picture would
   need brightness(.88) here - none of ours is one. */

/* Copyright line: quieter than the legal paragraph above it, same column. */
.rc-foot__copy { font: var(--text-body-sm); color: var(--color-ink-faint);
  margin: var(--space-4) 0 0; }

/* ------------------------------------------------------------------ shared by every
   skeleton variant (pp_chrome.py). These three rules are NOT per-variant: they have
   to hold whichever header, footer, article frame or home shape a site wears. */

/* The hero's text column. It was an anonymous <div>; a grid item with long words in it
   needs min-width:0 or it refuses to shrink and pushes the card off the screen. */
.rc-hero__copy { min-width: 0; }

/* The vertical rhythm between home-page blocks. It used to be an inline
   style="margin-top:var(--space-20)" on three elements - inline styles cannot answer a
   media query and an identical inline style across nine sites is itself a footprint. */
.rc-block { margin-top: var(--space-20); }
.rc-main > .rc-block:first-child { margin-top: 0; }

/* 🚨 On a phone the header holds brand + a ~190px CTA + two 40px icons and the icons
   land past the right edge. The rule above this one does the same job for the original
   bar shape only (`.rc-hd__bar > .rc-hd__right > .rc-hd__cta`); the other four headers
   nest the button differently, so the same defect would come back on them unnoticed.
   The drawer's own CTA is shown by that earlier block, so nothing is lost. */
@media (max-width: 559px) {
  .rc-hd__cta, .rc-hd__bandcta { display: none; }
}

/* The "most read" box when it leads the home page: it used to carry an inline
   style="margin-bottom:..." and lost its gap when the inline styles went. Without it
   the cards grid starts flush against the box and the two read as one block. */
.rc-feat--lead { margin-bottom: var(--space-12); }

/* A home block with no aside beside it: the prose measure is 72ch, so against a
   full-width row it left half the page empty. Centring the measure is what a page
   with no rail is supposed to look like. */
.rc-shell--solo > .rc-prose { margin-inline: auto; }

/* Long titles are adapted, never cut. The label used to be chopped at 46 characters
   with an ellipsis; every place it appears is a vertical list that can take two lines,
   so the full title is shown and wraps. The dropdown is given room to do it. */
.rc-nav__menu { max-width: 340px; }
.rc-nav__menu a, .rc-linklist a, .rc-drawer__group a, .rc-foot__cols a {
  overflow-wrap: anywhere; }
.rc-crumb > span:last-child { overflow-wrap: anywhere; }

/* 🚨 Контраст измерен в браузере, не взят из исходника. В ТЁМНОЙ теме акцент светлеет
   (см. правила ниже, они пишутся движком на каждый сайт), и белый текст на светлой
   заливке давал 2,7–3,9:1. Текст на заливке берёт `--color-on-accent`: он белый в
   светлой теме и почти чёрный в тёмной. Одну правку без другой делать нельзя —
   токен без тёмного акцента сделал бы хуже восьми сайтам из девяти. */

:root { --rb-accent: #db2777; }
:root[data-theme="dark"] { --rb-accent: #e14a8d; }
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) { --rb-accent: #e14a8d; }
}

.rc-hd__mark { border-radius: 50%; }
.rc-card { border-left: 3px solid var(--rb-accent); }
.rc-comprow { display: grid; grid-template-columns: 1fr auto; gap: var(--space-3);
  padding: var(--space-2) 0; border-bottom: 1px solid var(--color-line); }
.rc-comprow:last-child { border-bottom: 0; }
.rc-comprow span:first-child { font: 700 12px/1.4 var(--font-mono);
  text-transform: uppercase; letter-spacing: .04em; color: var(--rb-accent); }
.rc-comprow b { font-weight: 400; font-size: 14px; text-align: right; }

/* --- header variant 3 --- */

.rc-hd--panel .rc-hd__bar { gap: var(--space-5); }
.rc-mega { position: relative; margin-left: auto; }
.rc-mega__btn { list-style: none; cursor: pointer; display: inline-flex;
  align-items: center; gap: 6px; padding: 8px 14px; border-radius: var(--radius-sm);
  border: 1px solid var(--color-line-strong); background: var(--color-surface-card);
  color: var(--color-ink); font: 600 14px/18px var(--font-sans); white-space: nowrap; }
.rc-mega__btn::-webkit-details-marker { display: none; }
/* 🚨 The panel was anchored to the button (position:relative on .mega, right:0 on the
   panel). An 880px panel hanging off a button whose right edge sits at x=761 starts at
   x=-119: a quarter of the menu was outside the window on every page, and the page
   does not scroll sideways to reveal it (overflow-x: clip), so nothing looked wrong.
   It is now anchored to the HEADER itself - the sticky header is a positioned
   ancestor - and spans the full window width, which cannot overflow by construction.
   The inner grid carries the page's own measure so the columns line up with the bar. */
.rc-hd--panel .rc-mega { position: static; }
.rc-mega__panel { position: absolute; top: 100%; left: 0; right: 0; z-index: 40;
  padding: var(--space-6) 0 var(--space-8);
  background: var(--color-surface-card);
  border-bottom: 1px solid var(--color-line-strong);
  box-shadow: var(--shadow-card); }
.rc-mega__grid { display: grid; gap: var(--space-6); max-width: 1360px;
  margin: 0 auto; padding: 0 clamp(16px, 3vw, 32px);
  grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); }
.rc-mega__col > b { display: block; font: var(--text-label);
  letter-spacing: var(--tracking-label); text-transform: uppercase;
  color: var(--color-ink-faint); margin-bottom: var(--space-3); }
.rc-mega__col a { display: block; padding: 5px 0; text-decoration: none;
  color: var(--color-ink); font: var(--text-body-sm); }
.rc-mega__col a:hover { color: var(--rb-accent); }
@media (max-width: 1023px) { .rc-mega { display: none; } }
.rc-drawer__back { display: none; }
@media (max-width: 1023px) {
  .rc-drawer__back { display: block; position: fixed; inset: 0; z-index: 55;
    background: rgba(2, 6, 23, .55); visibility: hidden; opacity: 0;
    transition: opacity .18s; }
  body.rc-open .rc-drawer__back { visibility: visible; opacity: 1; }
  .rc-drawer--sheet-left { inset: 0 auto 0 0; width: min(380px, 86vw);
    border-right: 1px solid var(--color-line-strong); }
}

/* --- article variant 3 --- */

.rc-hero--crumb .rc-crumb { padding-top: 0; margin-bottom: var(--space-5); }
.rc-hero--crumb .rc-hero__meta { margin-top: var(--space-4); }
.rc-hero--crumb .rc-hero__lede { margin-top: var(--space-5); }
@media (min-width: 1080px) {
  .rc-aside--rail { border-left: 2px solid var(--color-line);
    padding-left: var(--space-6); }
}

@media (min-width: 1000px) {
  .rc-idx--v3 .rc-idx__block ul { display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr)); column-gap: var(--space-6); }
}
.rc-idx--v3 .rc-idx__block h2 { color: var(--rb-accent); }

/* --- home variant 2 --- */

@media (min-width: 1000px) {
  .rc-hero__grid--flip { grid-template-columns: minmax(320px, .65fr) minmax(0, 1.35fr); }
}
@media (max-width: 999px) { .rc-hero__grid--flip > .rc-hero__copy { order: -1; } }
.rc-feat h2 { font: var(--text-h2); letter-spacing: var(--tracking-h2);
  margin: 0 0 var(--space-6); }
.rc-feat .rc-linklist { grid-template-columns: repeat(auto-fit,
  minmax(min(100%, 260px), 1fr)); column-gap: var(--space-4); }
.rc-feat .rc-linklist a { padding: var(--space-4); border-radius: var(--radius-md);
  border: 1px solid var(--color-line); background: var(--color-surface-card);
  font: var(--text-body-sm); }
.rc-feat .rc-linklist a::before { content: "\2192"; margin-right: 8px;
  color: var(--rb-accent); }
.rc-feat .rc-linklist a:hover { border-color: var(--rb-accent); }
