
/* ===== sbn:tokens ===================================================== */
@font-face{font-family:"BS Sans";font-style:normal;font-weight:300 800;font-display:swap;
 src:url(/x/sbn/os-lat.v26g.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:"BS Sans";font-style:normal;font-weight:300 800;font-display:swap;
 src:url(/x/sbn/os-ext.v26g.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}
:root{
 --sbn-navy:#0E2B48; --sbn-navy2:#16406B; --sbn-navy3:#0A2038;
 --sbn-ink:#0E2333; --sbn-ink2:#41597A; --sbn-ink3:#566982;
 --sbn-paper:#FFFFFF; --sbn-canvas:#EDF1F6; --sbn-shade:#F6F8FB;
 --sbn-line:#CFDAE6; --sbn-line2:#E2E9F1;
 --sbn-amber:#F2B01C; --sbn-amber2:#D9990D; --sbn-amber3:#8A5E00;
 --sbn-em:#0B7C5F; --sbn-em2:#E6F4EF; --sbn-warn:#B4291D;
 --sbn-w:1120px; --sbn-rail:240px; --sbn-sheet:808px; --sbn-meas:760px;
 --sbn-pad:20px;          /* общий боковой отступ, один на весь сайт */
 --sbn-in:24px;           /* рабочее поле внутри листа */
 --sbn-s1:10px; --sbn-s2:18px; --sbn-s3:30px; --sbn-s4:46px;
 --sbn-sans:"BS Sans",system-ui,"Segoe UI",Arial,sans-serif;
 --sbn-serif:Georgia,"Times New Roman",serif;   /* гарнитура донора */
 --sbn-r:6px;
 --sbn-sh:0 1px 2px rgba(14,43,72,.06),0 8px 26px rgba(14,43,72,.07);
}
@media (max-width:780px){:root{--sbn-pad:14px; --sbn-in:16px}}

/* ===== sbn:donor-neutral =============================================
   Правила донора по ГОЛОМУ ТЕГУ гасятся :where(), обёрнутым ЦЕЛИКОМ —
   специфичность (0,0,1), наш лист грузится последним (05.2g). */
:where(body.sbn-page header),:where(body.sbn-page footer),
:where(body.sbn-page nav),:where(body.sbn-page aside),
:where(body.sbn-page main),:where(body.sbn-page section),
:where(body.sbn-page article){max-width:none;width:auto;float:none;background:none;
 border:0;margin:0;padding:0;box-shadow:none;min-height:0}
:where(body.sbn-page h1),:where(body.sbn-page h2),:where(body.sbn-page h3),
:where(body.sbn-page h4){font-family:var(--sbn-serif);color:var(--sbn-ink);
 letter-spacing:-.01em;text-transform:none;background:none;border:0}
:where(body.sbn-page h2:after),:where(body.sbn-page h2:before),
:where(body.sbn-page h3:after),:where(body.sbn-page h3:before){content:none;display:none}
:where(body.sbn-page a){color:var(--sbn-navy2);text-decoration:none}
:where(body.sbn-page figcaption){font-size:13px;color:var(--sbn-ink3)}
:where(body.sbn-page img){max-width:100%;height:auto}
:where(body.sbn-page iframe),:where(body.sbn-page video){max-width:100%}

/* сетка донора: !important только там, куда скин потом НЕ пишет
   (bootstrap-reset-important-kills-own-donor-rules) */
body.sbn-page .row,body.sbn-page .content,body.sbn-page .single_post,
body.sbn-page #content_box,body.sbn-page .g,body.sbn-page .box,
body.sbn-page .post-content,body.sbn-page .post-single-content,
body.sbn-page .ss-full-width,body.sbn-page .page-top,body.sbn-page .head{
 width:auto!important;max-width:none!important;float:none!important;margin:0!important}
body.sbn-page .row,body.sbn-page .content,body.sbn-page .single_post,
body.sbn-page #content_box,body.sbn-page .g{display:block;padding:0}

/* ===== sbn:base ====================================================== */
html{-webkit-text-size-adjust:100%}
body.sbn-page{margin:0;background:var(--sbn-canvas);color:var(--sbn-ink);
 font-family:var(--sbn-sans);font-size:17px;line-height:1.72;
 overflow-x:hidden;-webkit-font-smoothing:antialiased}
body.sbn-page *,body.sbn-page *:before,body.sbn-page *:after{box-sizing:border-box}
.sbn-band{width:100%;max-width:var(--sbn-w);margin-left:auto;margin-right:auto;
 padding-left:var(--sbn-pad);padding-right:var(--sbn-pad)}
.sbn-i{flex:0 0 auto;fill:none;stroke:currentColor;stroke-width:1.7;
 stroke-linecap:round;stroke-linejoin:round;vertical-align:-4px}
/* ⛔ Были ещё `.sbn-i--f` (залитая иконка) и `.sbn-sr` (текст только для читалки) —
   ни то, ни другое ни один шаблон не печатает. Правило без разметки не ошибка для
   браузера, поэтому и живёт годами: C09.31 такие считает, и порог там 3. Понадобится
   залитая иконка или скрытая подпись — правило вернётся вместе с разметкой. */
/* ⛔ Ссылке «Skip to content» правила не было, и строчный <a> первым в <body> держал
   строку 29px — ровно тот «зазор НАД шапкой 29px», что видел гейт на всех 17 URL
   (8px — это дефолтный margin body и значит «лист не приехал», 29px — свой блок).
   Уводим за край и возвращаем только на фокусе. */
.sbn-skip{position:absolute;left:-9999px;top:0;z-index:60;padding:10px 18px;
 background:var(--sbn-navy);color:#fff!important;font-size:14.5px;font-weight:700;
 text-decoration:none!important;border-radius:0 0 var(--sbn-r) 0}
.sbn-skip:focus{left:0}
body.sbn-page a:focus-visible,body.sbn-page button:focus-visible,
body.sbn-page label:focus-visible{outline:3px solid var(--sbn-amber);outline-offset:2px}

/* ===== sbn:header:util (ярус 1) ====================================== */
.sbn-hd{position:relative;z-index:400}
.sbn-hd__util{background:var(--sbn-navy3);color:#C6D6E6;font-size:13px}
.sbn-hd__util-in{display:flex;flex-wrap:wrap;align-items:center;gap:6px 22px;
 padding-top:7px;padding-bottom:7px}
.sbn-hd__facts{display:flex;flex-wrap:wrap;gap:4px 20px;margin:0;padding:0;list-style:none}
.sbn-hd__facts li{display:flex;align-items:center;gap:7px;letter-spacing:.01em}
.sbn-hd__facts .sbn-i{width:15px;height:15px;stroke-width:1.6;color:var(--sbn-amber)}
.sbn-hd__help{margin-left:auto;display:flex;align-items:center;gap:7px;
 color:#DCE8F4!important;border-bottom:1px solid rgba(242,176,28,.5)}
.sbn-hd__help .sbn-i{width:15px;height:15px;color:var(--sbn-amber)}
.sbn-hd__help:hover{color:#fff!important}

/* ===== sbn:header:mast (ярус 2) ====================================== */
.sbn-hd__mast{background:var(--sbn-navy);
 background-image:linear-gradient(103deg,#0A2038 0%,#0E2B48 46%,#16406B 100%)}
.sbn-hd__mast-in{display:flex;align-items:center;gap:18px;
 padding-top:15px;padding-bottom:15px}
.sbn-hd__brand{display:flex;align-items:center;gap:13px;color:#fff!important;min-width:0}
.sbn-ft__mark,.sbn-hd__mark{flex:0 0 auto}
.sbn-hd__name{display:block;min-width:0;line-height:1.12}
.sbn-hd__name b{font-family:var(--sbn-serif);font-size:27px;font-weight:700;
 letter-spacing:-.015em}
.sbn-hd__name i{font-family:var(--sbn-serif);font-size:27px;font-style:normal;
 color:var(--sbn-amber)}
.sbn-hd__name small{display:block;margin-top:3px;font-size:12.5px;font-weight:400;
 letter-spacing:.055em;text-transform:uppercase;color:#A8C2DA}
.sbn-hd__cta{margin-left:auto;display:inline-flex;align-items:center;gap:8px;
 background:var(--sbn-amber);color:#20160A!important;font-weight:700;font-size:14.5px;
 border-radius:var(--sbn-r);padding:10px 17px;box-shadow:0 2px 0 var(--sbn-amber2)}
.sbn-hd__cta:hover{background:#FFC136}
.sbn-hd__sw{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}
/* ⛔ Цвет бургера задаётся ЗДЕСЬ, а не только в мобильном блоке: на десктопе он
   `display:none`, но проверка контраста смотрит вычисленный стиль самого узла и
   видит «Menu» тёмным по тёмной полосе (1,12) — фантом, по которому правят
   исправную вёрстку. Белый и на десктопе стоит дешевле объяснения. */
.sbn-hd__burger{display:none;color:#fff}
.sbn-hd__burger em{color:#fff}

/* ===== sbn:header:rail (ярус 3) ====================================== */
.sbn-hd__rail{background:var(--sbn-paper);border-bottom:1px solid var(--sbn-line);
 box-shadow:0 2px 10px rgba(14,43,72,.05)}
.sbn-hd__rail-in{position:relative}
.sbn-nav{margin:0;padding:0}
.sbn-nav__l{display:flex;flex-wrap:nowrap;margin:0;padding:0;list-style:none}
.sbn-nav__i{position:relative;list-style:none}
.sbn-nav__i:before{content:none}
.sbn-nav__a{display:flex;align-items:center;gap:8px;padding:13px 15px;
 font-size:14.5px;font-weight:700;color:var(--sbn-navy)!important;white-space:nowrap;
 border-bottom:3px solid transparent}
.sbn-nav__a .sbn-i{width:17px;height:17px;color:var(--sbn-ink2)}
.sbn-nav__c{fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;
 stroke-linejoin:round;opacity:.5;margin-left:1px}
.sbn-nav__i:hover>.sbn-nav__a,.sbn-nav__i:focus-within>.sbn-nav__a{
 background:var(--sbn-shade);border-bottom-color:var(--sbn-amber)}
.sbn-nav__i:hover>.sbn-nav__a .sbn-i,
.sbn-nav__i:focus-within>.sbn-nav__a .sbn-i{color:var(--sbn-navy2)}
.sbn-nav__p{position:absolute;top:100%;left:0;z-index:420;min-width:268px;
 background:var(--sbn-paper);border:1px solid var(--sbn-line);
 border-top:3px solid var(--sbn-amber);border-radius:0 0 var(--sbn-r) var(--sbn-r);
 box-shadow:var(--sbn-sh);padding:12px 16px 14px;
 visibility:hidden;opacity:0;transform:translateY(-5px);transition:opacity .13s,transform .13s}
.sbn-nav__i:hover>.sbn-nav__p,.sbn-nav__i:focus-within>.sbn-nav__p{
 visibility:visible;opacity:1;transform:none}
.sbn-nav__ph{display:none}
.sbn-nav__p ul{margin:0;padding:0;list-style:none}
.sbn-nav__p li{margin:0;padding:0;list-style:none}
.sbn-nav__p li:before{content:none}
.sbn-nav__p a{display:block;padding:6px 0;font-size:15px;color:var(--sbn-ink)!important;
 border-bottom:1px solid var(--sbn-line2)}
.sbn-nav__p li:last-child a{border-bottom:0}
.sbn-nav__p li:first-child a{font-weight:700;color:var(--sbn-navy)!important}
.sbn-nav__p a:hover{color:var(--sbn-navy2)!important;padding-left:5px}
/* трём последним пунктам панель прижимается вправо, иначе уезжает за вьюпорт */
.sbn-nav__i:nth-last-child(-n+3)>.sbn-nav__p{left:auto;right:0}

/* ===== sbn:shell ===================================================== */
/* ⛔ Воздух между шапкой и листом держит САМ `<main class="sbn-main">`. Правила
   стояли на `.sbn-shell` — класса, которого ни один шаблон не печатает, и лист
   прилипал к шапке вплотную (замер 27.09.2026: низ шапки 170, верх листа 170).
   Низ не добавляем: отбивку до подвала уже даёт `.sbn-ft{margin-top}`. */
.sbn-main{min-width:0;padding-top:var(--sbn-s3)}
.sbn-grid{display:block}
.sbn-grid:has(>.sbn-rail){display:grid;grid-template-columns:minmax(0,1fr) var(--sbn-rail);
 gap:32px;align-items:start}
/* ⛔ Имена — те, что печатает `crumbs()`: `nav.sbn-crumb` со ступенями-ссылками,
   разделителем `__s` и текущей ступенью `__here` (плюс `__x` — ступень без своей
   страницы). Правила стояли на `.sbn-crumbs` с разметкой `<ol><li>`, которой нет:
   крошки шли прозовым кеглем 17px без отбивки и читались как первая строка текста
   (замер 27.09.2026). Крошки → кикер → h1 должны читаться тремя разными строками
   (ЭТАП 05, п. 277). */
.sbn-crumb{display:flex;flex-wrap:wrap;align-items:center;gap:0 7px;
 margin:0 0 var(--sbn-s2);font-family:var(--sbn-sans);font-size:13px;
 line-height:1.5;color:var(--sbn-ink3)}
.sbn-crumb a{color:var(--sbn-ink2)!important;text-decoration:none!important}
.sbn-crumb a:hover{color:var(--sbn-navy2)!important;text-decoration:underline!important}
.sbn-crumb__s{color:var(--sbn-line);font-size:14px}
.sbn-crumb__x{color:var(--sbn-ink3)}
.sbn-crumb__here{color:var(--sbn-ink);font-weight:600}

/* лист на полотне: полотно → лист → врезка (три плана) */
.sbn-sheet{background:var(--sbn-paper);border:1px solid var(--sbn-line);
 border-radius:var(--sbn-r);box-shadow:var(--sbn-sh);
 padding:var(--sbn-in) var(--sbn-in) 34px;max-width:var(--sbn-sheet)}
.sbn-grid:has(>.sbn-rail) .sbn-sheet{max-width:none}

/* ===== sbn:head-block ================================================ */
.sbn-kicker{display:flex;align-items:center;gap:9px;margin:0 0 9px;
 font-size:12px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;
 color:var(--sbn-navy2)}
.sbn-kicker:after{content:"";flex:1 1 auto;height:1px;background:var(--sbn-line)}
.sbn-kicker .sbn-i{width:16px;height:16px;color:var(--sbn-amber2)}
.sbn-h1{font-family:var(--sbn-serif);font-size:clamp(27px,3.5vw,38px);line-height:1.17;
 font-weight:700;margin:0 0 12px;letter-spacing:-.018em;
 overflow-wrap:break-word;hyphens:auto}
.sbn-byline{display:flex;flex-wrap:wrap;align-items:center;gap:6px 16px;
 margin:0 0 var(--sbn-s2);font-size:13.5px;color:var(--sbn-ink3)}
.sbn-byline b{font-weight:700;color:var(--sbn-ink2)}
.sbn-byline span{display:flex;align-items:center;gap:6px}
.sbn-byline .sbn-i{width:15px;height:15px;color:var(--sbn-ink3)}
/* мета-полоса фактов (у образца — recipe-card-meta) */
.sbn-facts{display:flex;flex-wrap:wrap;gap:1px;margin:0 0 var(--sbn-s3);
 background:var(--sbn-line2);border:1px solid var(--sbn-line);
 border-radius:var(--sbn-r);overflow:hidden}
.sbn-facts>div{flex:1 1 168px;background:var(--sbn-shade);
 padding:11px 16px 12px}
.sbn-facts dt{margin:0 0 2px;font-size:11px;font-weight:700;letter-spacing:.1em;
 text-transform:uppercase;color:var(--sbn-ink3)}
.sbn-facts dd{margin:0;font-size:15.5px;font-weight:700;color:var(--sbn-ink)}
.sbn-facts dd .sbn-i{width:16px;height:16px;color:var(--sbn-em)}

/* ===== sbn:prose ===================================================== */
.sbn-prose{max-width:var(--sbn-meas)}
body.sbn-page .sbn-prose p,body.sbn-page .sbn-prose li,
body.sbn-page .sbn-prose dd,body.sbn-page .sbn-prose dt,
body.sbn-page .sbn-prose td,body.sbn-page .sbn-prose th,
body.sbn-page .sbn-prose blockquote{font-family:var(--sbn-sans);font-size:17px;
 line-height:1.72;color:var(--sbn-ink)}
.sbn-prose>*:first-child{margin-top:0}
.sbn-prose p{margin:0 0 17px}
.sbn-prose h2{font-size:26px;line-height:1.24;margin:var(--sbn-s3) 0 12px;
 padding-bottom:9px;border-bottom:2px solid var(--sbn-line2);
 overflow-wrap:break-word;hyphens:auto}
.sbn-prose h3{font-size:20.5px;line-height:1.3;margin:var(--sbn-s2) 0 9px;
 overflow-wrap:break-word;hyphens:auto}
.sbn-prose h4{font-size:17.5px;margin:var(--sbn-s2) 0 7px;font-family:var(--sbn-sans);
 font-weight:700}
/* ⛔ Прозовое правило НЕ ДОЛЖНО ЛОВИТЬ НАШИ БЛОКИ. `sbn-prose a` — это 0,1,1, то
   есть сильнее любого правила витрины по одному классу, да ещё и с !important: ссылка
   «How we rate» в тёмной шапке витрины красилась navy2 и давала 1,36 вместо 7,55.
   Исключаем по признаку класса витрины — тогда её собственные правила действуют без
   гонки специфичности. То же и с карточкой кластера (`sbn-cl`): она тоже живёт
   внутри прозы, и прозовое правило подчёркивало карточку целиком. */
.sbn-prose a:not([class*="sbnv-"]):not([class*="sbn-cl"]):not([class*="sbn-oc"]){
 color:var(--sbn-navy2)!important;
 text-decoration:underline;text-decoration-color:rgba(22,64,107,.34);
 text-underline-offset:2px}
.sbn-prose a:not([class*="sbnv-"]):not([class*="sbn-cl"]):not([class*="sbn-oc"]):hover{
 text-decoration-color:var(--sbn-navy2)}
.sbn-prose ul,.sbn-prose ol{margin:0 0 17px;padding-left:0;list-style:none}
.sbn-prose ul>li{position:relative;padding-left:26px;margin:0 0 8px}
.sbn-prose ul>li:before{content:"";position:absolute;left:5px;top:11px;width:7px;height:7px;
 border-radius:2px;background:var(--sbn-amber);display:block}
.sbn-prose ol{counter-reset:sbnn}
.sbn-prose ol>li{position:relative;padding-left:32px;margin:0 0 8px;counter-increment:sbnn}
.sbn-prose ol>li:before{content:counter(sbnn);position:absolute;left:0;top:3px;
 width:22px;height:22px;border-radius:50%;background:var(--sbn-navy);color:#fff;
 font-size:12.5px;font-weight:700;line-height:22px;text-align:center;display:block}
.sbn-prose blockquote{margin:0 0 17px;padding:2px 0 2px 18px;
 border-left:3px solid var(--sbn-amber);color:var(--sbn-ink2);font-style:normal}
.sbn-prose strong,.sbn-prose b{font-weight:700;color:var(--sbn-ink)}
.sbn-prose img{border-radius:var(--sbn-r);height:auto}
.sbn-prose figure{margin:0 0 18px}
/* картинка, которая у донора лежала в пустом заголовке: развёрнута в абзац */
.sbn-prose p.sbn-shot{margin:0 0 18px}
.sbn-prose p.sbn-shot img{max-width:100%;display:block}
.sbn-prose hr{border:0;border-top:1px solid var(--sbn-line2);margin:var(--sbn-s3) 0}
/* первая картинка статьи обтекается текстом (класса `lead` сборка не ставит — отбор
   идёт по положению: первая картинка первого абзаца) */
.sbn-prose>p:first-of-type img:first-child{
 float:right;width:clamp(170px,32%,300px);margin:0 0 14px 20px}

/* ===== sbn:oc — карточка оператора на обзоре ========================= */
/* Стоит в голове обзора вместо донорского `lets-review`. Балла нет: п. 04.10b.
   ⛔ Размеры печатаются от `body.sbn-page`, иначе прозовое правило
   `body .sbn-prose p` (0,1,2) перебивает типографику карточки. */
.sbn-oc{margin:0 0 var(--sbn-s3);border:1px solid var(--sbn-line);
 border-radius:var(--sbn-r);background:var(--sbn-paper);overflow:hidden}
.sbn-oc__top{display:grid;grid-template-columns:auto 1fr auto;align-items:center;
 gap:16px;padding:16px 18px;background:var(--sbn-shade);
 border-bottom:1px solid var(--sbn-line)}
.sbn-oc__plate{width:132px;flex:0 0 auto}
.sbn-oc__plate img{display:block;width:132px;height:auto;border-radius:6px;
 background:#fff}
.sbn-oc__ltr{display:grid;place-items:center;width:132px;height:79px;border-radius:6px;
 background:var(--sbn-navy);color:#fff;font-family:var(--sbn-serif);font-size:34px;
 line-height:1}
.sbn-oc__who{min-width:0}
body.sbn-page .sbn-oc__name{display:block;font-family:var(--sbn-serif);
 font-size:21px;line-height:1.2;color:var(--sbn-ink)}
body.sbn-page .sbn-oc__lic{display:block;margin-top:3px;font-size:13.5px;
 line-height:1.5;color:var(--sbn-ink3)}
.sbn-oc__cta{display:inline-block;background:var(--sbn-amber);color:#20160A!important;
 font-weight:700;font-size:15px;text-decoration:none!important;
 border-radius:var(--sbn-r);padding:11px 20px;box-shadow:0 2px 0 var(--sbn-amber2);
 white-space:nowrap}
.sbn-oc__cta:hover{background:var(--sbn-amber2)}
body.sbn-page .sbn-oc__tc{display:block;grid-column:3;font-size:11.5px;
 color:var(--sbn-ink3);text-align:center;margin-top:5px}
.sbn-oc__fx{display:grid;grid-template-columns:1fr 1fr;gap:0;margin:0;
 border-bottom:1px solid var(--sbn-line)}
.sbn-oc__fx>div{padding:10px 18px;border-top:1px solid var(--sbn-line2)}
.sbn-oc__fx>div:nth-child(2n){border-left:1px solid var(--sbn-line2)}
.sbn-oc__fx>div:first-child,.sbn-oc__fx>div:nth-child(2){border-top:0}
body.sbn-page .sbn-oc__fx dt{font-size:11.5px;letter-spacing:.06em;
 text-transform:uppercase;color:var(--sbn-ink3);font-weight:700;line-height:1.4}
body.sbn-page .sbn-oc__fx dd{margin:2px 0 0;font-size:15px;line-height:1.5;
 color:var(--sbn-ink);font-weight:700}
.sbn-oc__pc{display:grid;grid-template-columns:1fr 1fr;gap:0}
.sbn-oc__col{padding:14px 18px 6px}
.sbn-oc__col--m{border-left:1px solid var(--sbn-line2)}
body.sbn-page .sbn-oc__col>b{display:block;margin:0 0 8px;font-size:12.5px;
 letter-spacing:.06em;text-transform:uppercase;color:var(--sbn-navy)}
body.sbn-page .sbn-oc__col ul{margin:0}
body.sbn-page .sbn-oc__col li{font-size:15px;line-height:1.55;margin:0 0 6px}
.sbn-oc__col--m li:before{background:var(--sbn-warn)!important}
body.sbn-page .sbn-oc__src{margin:0;padding:11px 18px;font-size:12.5px;
 line-height:1.6;color:var(--sbn-ink3);border-top:1px solid var(--sbn-line)}
.sbn-oc__src a{color:var(--sbn-navy2)!important;text-decoration:underline}
@media (max-width:640px){
 .sbn-oc__top{grid-template-columns:1fr;gap:11px;text-align:left}
 .sbn-oc__plate,.sbn-oc__plate img{width:112px}
 .sbn-oc__cta{width:100%;text-align:center}
 body.sbn-page .sbn-oc__tc{grid-column:1;text-align:left}
 .sbn-oc__fx,.sbn-oc__pc{grid-template-columns:1fr}
 .sbn-oc__fx>div:nth-child(2n){border-left:0}
 .sbn-oc__fx>div:nth-child(2){border-top:1px solid var(--sbn-line2)}
 .sbn-oc__col--m{border-left:0;border-top:1px solid var(--sbn-line2)}}

/* ===== sbn:toc — своё, свёрнутое ==================================== */
.sbn-toc{margin:0 0 var(--sbn-s3);border:1px solid var(--sbn-line);
 border-radius:var(--sbn-r);background:var(--sbn-shade)}
.sbn-toc>summary{display:flex;align-items:center;gap:9px;cursor:pointer;
 padding:12px 16px;font-size:13.5px;font-weight:700;letter-spacing:.06em;
 text-transform:uppercase;color:var(--sbn-navy);list-style:none}
.sbn-toc>summary::-webkit-details-marker{display:none}
.sbn-toc>summary .sbn-i{width:17px;height:17px;color:var(--sbn-amber2)}
.sbn-toc>summary:after{content:"+";margin-left:auto;font-size:19px;line-height:1;
 color:var(--sbn-ink3)}
.sbn-toc[open]>summary:after{content:"\2212"}
.sbn-toc ol{margin:0;padding:0 16px 14px;list-style:none;counter-reset:sbnt;
 columns:2;column-gap:26px}
.sbn-toc li{counter-increment:sbnt;margin:0 0 6px;padding-left:24px;position:relative;
 break-inside:avoid;font-size:14.5px}
.sbn-toc li:before{content:counter(sbnt) ".";position:absolute;left:0;top:0;
 color:var(--sbn-ink3);font-weight:700;display:block}
.sbn-toc a{color:var(--sbn-ink)!important}
.sbn-toc a:hover{color:var(--sbn-navy2)!important;text-decoration:underline}

/* ===== sbn:tables =================================================== */
.sbn-tw{margin:0 0 var(--sbn-s3);border:1px solid var(--sbn-line);
 border-radius:var(--sbn-r);background:var(--sbn-paper);overflow:hidden}
.sbn-tw--x{overflow-x:auto}
/* ⛔ Здесь были `.sbn-tnote` (подпись «таблица прокручивается») и оговорка
   `:not(.sbn-plain)` в правилах таблиц: ни подписи, ни класса `plain` сборка не
   печатает — прокрутку показывает сама обёртка `--x`, а «простых» таблиц у нас нет.
   Пустая оговорка в селекторе вреднее лишнего правила: читается как «где-то есть
   таблицы без скина», и их начинают искать. */
body.sbn-page .sbn-prose table{width:100%;border-collapse:collapse;
 margin:0;background:var(--sbn-paper);height:auto!important}
body.sbn-page .sbn-prose th{background:var(--sbn-navy);color:#fff;font-weight:700;
 font-size:13px;letter-spacing:.06em;text-transform:uppercase;text-align:left;
 padding:11px 16px;border:0}
body.sbn-page .sbn-prose td{padding:11px 16px;border-top:1px solid var(--sbn-line2);
 vertical-align:top}
body.sbn-page .sbn-prose tbody tr:nth-child(even) td{background:var(--sbn-shade)}
/* ⛔ ГОЛЫЙ HTML РОБОТА АВТОПОСТИНГА (ЭТАП 12). Статью из moz.biz никто не оборачивает:
   таблица приезжает без `sbn-tw`, картинка без `max-width`, ссылка одной неразрывной
   строкой. На собранном сайте все свои таблицы завёрнуты, поэтому и `gate_render`, и
   замер переполнения дают ноль — а перелив появится в ПЕРВОЙ автопубликации, то есть
   после сдачи, на странице, которой в сборке не было. Правило пишется на голый тег:
   прямой ребёнок прозы — это ровно то, что прислал робот, свои таблицы лежат в обёртке.
   ⚠️ `display:block` обязателен: у `table` прокрутка иначе не работает вовсе.        */
body.sbn-page .sbn-prose>table{display:block;max-width:100%;overflow-x:auto}
body.sbn-page .sbn-prose img{max-width:100%}
body.sbn-page .sbn-prose pre{max-width:100%;overflow-x:auto;padding:13px 15px;
 background:var(--sbn-shade);border:1px solid var(--sbn-line2);
 border-radius:var(--sbn-r);font-size:13.5px;line-height:1.5}
body.sbn-page .sbn-prose a{overflow-wrap:break-word}

/* ===== sbn:cluster (ЭТАП 08 — блок карточек кластера) ================
   Требование владельца 04.09/09.09.2026: на хабе не витрина, а ПЕРЕЧЕНЬ
   страниц кластера карточками — плитка знака, заголовок, короткое описание,
   метка. Стоит сразу после вводного абзаца, поэтому ширина — мера листа.
   ⛔ Заголовок и описание внутри ссылки — БЛОЧНЫЕ (`display:block`): без
   этого они читаются одной строкой («…and HoFrom 11 June…»), урок
   card-title-cut-by-word-and-block-spans.                               */
.sbn-clw{margin:0 0 var(--sbn-s3);padding:16px;background:var(--sbn-canvas);
 border:1px solid var(--sbn-line);border-radius:var(--sbn-r)}
.sbn-clw__t{display:flex;align-items:center;gap:9px;margin:0 0 4px!important;
 padding:0 0 10px;border-bottom:1px solid var(--sbn-line2);
 font-family:var(--sbn-sans)!important;font-size:15px!important;font-weight:800!important;
 letter-spacing:.04em;text-transform:uppercase;color:var(--sbn-navy)!important}
.sbn-clw__t .sbn-i{width:18px;height:18px;color:var(--sbn-amber2)}
.sbn-clw__t b{margin-left:auto;padding:2px 8px;background:var(--sbn-navy);color:#fff;
 border-radius:99px;font-size:11.5px;letter-spacing:.06em}
.sbn-clus{display:grid!important;grid-template-columns:repeat(auto-fill,minmax(228px,1fr));
 gap:10px;margin:12px 0 0!important;padding:0!important;list-style:none!important}
.sbn-clus>li{margin:0!important;padding:0!important;list-style:none!important}
.sbn-clus>li:before{content:none!important}
.sbn-cl{display:grid;grid-template-columns:46px minmax(0,1fr);gap:11px;align-items:start;
 height:100%;padding:11px 12px;background:var(--sbn-paper);
 border:1px solid var(--sbn-line2);border-radius:var(--sbn-r);
 text-decoration:none!important;box-shadow:0 1px 1px rgba(14,43,72,.04)}
.sbn-cl:hover{border-color:var(--sbn-navy2);box-shadow:var(--sbn-sh)}
.sbn-ctile{display:flex;align-items:center;justify-content:center;width:46px;height:46px;
 padding:4px;background:#fff;border:1px solid var(--sbn-line2);border-radius:5px;
 overflow:hidden}
.sbn-ctile img{display:block;width:100%;height:100%;object-fit:contain}
.sbn-ctile--ico{background:var(--sbn-shade)}
/* ⛔ Литерная плитка — для обзора бренда, у которого в снапшоте НЕТ логотипа:
   своего знака бренду мы не рисуем (§13), а пустой плитки не оставляем. */
.sbn-ctile--ltr{background:var(--sbn-navy);border-color:var(--sbn-navy);color:#fff;
 font-family:var(--sbn-serif);font-size:23px;font-weight:700;line-height:1;
 letter-spacing:.01em}
.sbn-ctile--ico .sbn-i{width:24px;height:24px;stroke-width:1.5;color:var(--sbn-navy2)}
.sbn-cl__b{display:block;min-width:0}
.sbn-cl__b b{display:block;font-size:14.5px;line-height:1.3;font-weight:700;
 color:var(--sbn-navy)}
.sbn-cl:hover .sbn-cl__b b{color:var(--sbn-navy2);text-decoration:underline}
.sbn-cl__b span{display:block;margin-top:4px;font-size:12.5px;line-height:1.45;
 color:var(--sbn-ink2)}
.sbn-cl__b em{display:block;margin-top:6px;font-size:11px;font-weight:700;font-style:normal;
 letter-spacing:.07em;text-transform:uppercase;color:var(--sbn-amber3)}
@media (max-width:780px){
 .sbn-clw{padding:12px}
 .sbn-clus{grid-template-columns:1fr;gap:8px}
 .sbn-cl{padding:10px}
}

/* ===== sbn:wire — место автопостинга на хабе раздела (ЭТАП 12.16) ====
   Разметку анонса приносит робот: `<div style='margin-bottom: 20px;'>` →
   `<h4><a>заголовок</a></h4><p>подводка</p>`. Своих классов у него нет, поэтому
   оформляем ОТ КОНТЕЙНЕРА по типу тега.
   ⛔ Инлайновый `margin-bottom` перебивается только `!important`: без него анонсы
      висят на донорском отступе и лента разъезжается относительно карточек.
   ⛔ Пока робот не публиковал, в обёртке лежит только технический комментарий —
      `:empty` такой элемент считает пустым и прячет, поэтому пустой полосы с
      заголовком на видном месте не остаётся. Заголовка обёртке НЕ давать.
   ⛔ Строку маркера в этом комментарии приводить нельзя: гейт считает вхождения по
      всему пакету и второй экземпляр — в CSS — читается вторым маркером.        */
.sbn-wire{margin:0 0 var(--sbn-s3)}
.sbn-wire:empty{display:none}
.sbn-wire>div{margin:0 0 10px!important;padding:13px 15px;background:var(--sbn-paper);
 border:1px solid var(--sbn-line2);border-left:3px solid var(--sbn-amber2);
 border-radius:var(--sbn-r);box-shadow:0 1px 1px rgba(14,43,72,.04)}
.sbn-wire>div:last-child{margin-bottom:0!important}
.sbn-wire h4{margin:0 0 5px!important;padding:0!important;
 font-family:var(--sbn-sans)!important;font-size:16px!important;font-weight:800!important;
 line-height:1.3!important;color:var(--sbn-navy)!important}
.sbn-wire h4:after{content:none!important}
.sbn-wire h4 a{color:inherit!important;text-decoration:none!important}
.sbn-wire h4 a:hover{color:var(--sbn-navy2)!important;text-decoration:underline!important}
.sbn-wire p{margin:0!important;font-size:14px!important;line-height:1.55!important;
 color:var(--sbn-ink2)!important}
.sbn-wire p:last-child{margin-bottom:0!important}
@media (max-width:780px){
 .sbn-wire>div{padding:11px 12px}
 .sbn-wire h4{font-size:15px!important}
}

/* ===== sbnv:showcase (ЭТАП 08) ======================================
   Ширина — мера листа (760): витрина живёт внутри `.sbn-prose`.
   Ряд двухэтажный: медальон + плашка + кто + оффер + действие, ниже факты.
   Состояния — только по классам инпута и только комбинатором `~`
   (инпуты печатаются прямыми детьми секции выше полосы и списка).       */
.sbnv-wrap{margin:0 0 var(--sbn-s3);border:1px solid var(--sbn-line);
 border-radius:var(--sbn-r);background:var(--sbn-canvas);box-shadow:var(--sbn-sh);
 overflow:hidden}
.sbnv-wrap p{padding:0}
.sbnv-h2{margin:0!important;padding:15px 16px 0!important;border:0!important;
 font-size:23px!important;line-height:1.24!important}
.sbnv-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:5px 14px;
 padding:13px 16px;background:var(--sbn-navy)}
.sbnv-lead{margin:0!important;flex:1 1 300px;min-width:0;font-size:14.5px!important;
 line-height:1.5!important;font-weight:600;color:rgba(255,255,255,.94)!important}
.sbnv-how{flex:0 0 auto;font-size:12px;font-weight:700;letter-spacing:.08em;
 text-transform:uppercase;white-space:nowrap;color:var(--sbn-amber)!important;
 text-decoration:none!important;border-bottom:1px solid rgba(214,158,46,.55)}
.sbnv-how:hover{color:#fff!important;border-bottom-color:#fff}

/* полоса чипов: сам инпут спрятан, кликается ярлык */
.sbnv-chk{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;
 overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.sbnv-fil{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 16px;
 background:var(--sbn-shade);border-bottom:1px solid var(--sbn-line2)}
.sbnv-flab{font-size:11.5px;font-weight:700;letter-spacing:.11em;text-transform:uppercase;
 color:var(--sbn-ink3)}
.sbnv-pill{display:inline-flex;align-items:center;gap:7px;min-height:36px;
 padding:7px 13px;border:1px solid var(--sbn-line);border-radius:999px;
 background:var(--sbn-paper);color:var(--sbn-ink2);font-size:13.5px;font-weight:600;
 line-height:1.25;cursor:pointer;-webkit-user-select:none;user-select:none}
.sbnv-pill:before{content:"";display:block;flex:0 0 auto;width:9px;height:9px;
 border-radius:50%;border:1px solid var(--sbn-line);background:#fff}
.sbnv-pill:hover{border-color:var(--sbn-navy2);color:var(--sbn-navy)}
.sbnv-f1:checked~.sbnv-fil .sbnv-p1,
.sbnv-f2:checked~.sbnv-fil .sbnv-p2,
.sbnv-f3:checked~.sbnv-fil .sbnv-p3{background:var(--sbn-navy);color:#fff;
 border-color:var(--sbn-navy)}
.sbnv-f1:checked~.sbnv-fil .sbnv-p1:before,
.sbnv-f2:checked~.sbnv-fil .sbnv-p2:before,
.sbnv-f3:checked~.sbnv-fil .sbnv-p3:before{background:var(--sbn-amber);
 border-color:var(--sbn-amber)}
.sbnv-f1:focus-visible~.sbnv-fil .sbnv-p1,
.sbnv-f2:focus-visible~.sbnv-fil .sbnv-p2,
.sbnv-f3:focus-visible~.sbnv-fil .sbnv-p3,
.sbnv-mck:focus-visible~.sbnv-more{box-shadow:0 0 0 3px rgba(22,64,107,.32)}

/* список и ряд */
.sbnv-list{margin:0!important;padding:0!important;list-style:none!important}
.sbnv-list>li{display:block;position:static!important;margin:0!important;
 padding:13px 16px!important;background:var(--sbn-paper);
 border-top:1px solid var(--sbn-line2);counter-increment:none!important}
.sbnv-list>li:before{content:none!important;display:none!important}
.sbnv-list>li:first-child{border-top:0}
.sbnv-list>li:nth-child(-n+3){background:
 linear-gradient(180deg,rgba(214,158,46,.09),rgba(255,255,255,0) 62px),var(--sbn-paper)}
.sbnv-top{display:grid;
 grid-template-columns:36px 148px minmax(112px,1fr) minmax(172px,1.1fr) 126px;
 gap:12px;align-items:center}
.sbnv-rank b{display:flex;align-items:center;justify-content:center;width:34px;height:34px;
 border-radius:50%;background:var(--sbn-navy);color:#fff;font-family:var(--sbn-sans);
 font-size:15px;font-weight:700;line-height:1}
.sbnv-list>li:first-child .sbnv-rank b{background:var(--sbn-amber);
 color:var(--sbn-navy)}
/* ⛔ Плитка БЕЗ фиксированной высоты и знак во всю её ширину: пол владельца —
   длинная сторона знака ≥100 px на десктопе и ≥90 px на телефоне, а высота
   плитки 80 px с `max-height` рисовала мастер 300×180 всего 103×62 (R15). */
.sbnv-tile{display:block;padding:7px;border:1px solid var(--sbn-line2);
 border-radius:var(--sbn-r);background:#fff;text-decoration:none!important}
.sbnv-tile:hover{border-color:var(--sbn-navy2)}
.sbnv-tile img{display:block;width:100%;height:auto;max-height:none;border-radius:0}
.sbnv-who{min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:3px}
.sbnv-role{font-size:10px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;
 color:var(--sbn-amber3);line-height:1.25}
.sbnv-name{font-family:var(--sbn-serif);font-size:18px;font-weight:700;line-height:1.2;
 color:var(--sbn-ink);overflow-wrap:break-word}
.sbnv-lic{font-size:12px;line-height:1.35;color:var(--sbn-ink3)}
.sbnv-rev{font-size:12.5px;font-weight:600;line-height:1.3;
 color:var(--sbn-navy2)!important;text-decoration:none!important;
 border-bottom:1px solid rgba(22,64,107,.32)}
.sbnv-rev:hover{border-bottom-color:var(--sbn-navy2)}
.sbnv-off{min-width:0;display:flex;flex-direction:column;gap:1px;padding:9px 11px;
 background:var(--sbn-shade);border:1px solid var(--sbn-line2);
 border-radius:var(--sbn-r)}
.sbnv-olab{font-size:9.5px;font-weight:800;letter-spacing:.11em;text-transform:uppercase;
 color:var(--sbn-ink3);line-height:1.4}
.sbnv-ofig{font-size:17px;font-weight:800;line-height:1.2;color:var(--sbn-navy);
 overflow-wrap:break-word}
.sbnv-omech{font-size:12px;line-height:1.38;color:var(--sbn-ink2)}
.sbnv-chips{display:flex;flex-wrap:wrap;gap:4px;margin-top:3px}
.sbnv-chips em{font-style:normal;font-size:10.5px;font-weight:700;line-height:1.3;
 padding:2px 6px;border-radius:3px;background:rgba(22,64,107,.08);
 border:1px solid rgba(22,64,107,.17);color:var(--sbn-navy2)}
.sbnv-act{display:flex;flex-wrap:wrap;flex-direction:column;align-items:stretch;gap:7px;
 text-align:center}
.sbnv-sc{display:flex;align-items:baseline;justify-content:center;gap:1px}
.sbnv-sc b{font-size:22px;font-weight:800;line-height:1;color:var(--sbn-em)}
.sbnv-sc i{font-style:normal;font-size:12px;color:var(--sbn-ink3)}
.sbnv-cta{display:block;min-height:44px;padding:12px 10px;border-radius:var(--sbn-r);
 background:var(--sbn-amber);color:var(--sbn-navy)!important;font-size:14.5px;
 font-weight:800;line-height:1.2;text-decoration:none!important;
 box-shadow:0 1px 0 rgba(14,43,72,.2)}
.sbnv-cta:hover{background:var(--sbn-amber2);color:#fff!important}
.sbnv-tc{font-size:10.5px;line-height:1.3;color:var(--sbn-ink3)}
/* второй этаж: ярлык и значение В ОДНУ СТРОКУ — четыре факта в столбик
   давали ряд 250 px на десктопе и 565 px на телефоне (R9, норма 150–290) */
/* ⚠️ Поле ячейки — 16 px, а не 10: полоса фактов рисует рамку и волоски, и для
   gate_padding это плашка (тег `dl`, не `table`, поблажки для ячеек нет). При
   `padding:6px 10px` значение правой ячейки стояло в 11 px от края полосы — «зазор
   справа 11» на каждом хабе с витриной (норма 16). Минимум колонки поднят вместе с
   полем, иначе ярлык и значение перестают вставать в одну строку. */
.sbnv-fx{display:grid;grid-template-columns:repeat(auto-fit,minmax(164px,1fr));gap:1px;
 margin:10px 0 0!important;padding:0!important;background:var(--sbn-line2);
 border:1px solid var(--sbn-line2);border-radius:var(--sbn-r);overflow:hidden}
.sbnv-fx>div{min-width:0;display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 7px;
 padding:6px 16px;background:var(--sbn-paper)}
.sbnv-fx dt{margin:0;flex:0 0 auto;font-size:9.5px!important;font-weight:700;
 letter-spacing:.08em;text-transform:uppercase;line-height:1.5!important;
 color:var(--sbn-ink3)!important}
.sbnv-fx dd{margin:0;flex:1 1 auto;min-width:0;font-size:12.5px!important;font-weight:600;
 line-height:1.4!important;text-align:right;color:var(--sbn-ink)!important;
 overflow-wrap:break-word}

/* «показать все» и оговорка */
.sbnv-more{display:flex;align-items:center;justify-content:center;gap:8px;min-height:46px;
 padding:12px 16px;background:var(--sbn-shade);border-top:1px solid var(--sbn-line2);
 color:var(--sbn-navy);font-size:13.5px;font-weight:700;letter-spacing:.06em;
 text-transform:uppercase;cursor:pointer;-webkit-user-select:none;user-select:none}
.sbnv-more:after{content:"\25BE";font-size:11px;line-height:1}
.sbnv-more:hover{background:#fff;color:var(--sbn-navy2)}
.sbnv-disc{margin:0!important;padding:11px 16px!important;
 border-top:1px solid var(--sbn-line2);background:var(--sbn-canvas);
 font-size:12px!important;line-height:1.5!important;color:var(--sbn-ink3)!important}
.sbnv-disc a{color:var(--sbn-navy2)!important;text-decoration:underline}

/* состояния — порядок правил обязателен: хвост → показать все → чип добирает →
   чип режет. Условие стоит при КАЖДОМ селекторе списка (запятая его не наследует,
   урок css-has-must-prefix-every-selector).                                  */
.sbnv-list>li.sbnv-hid{display:none}
.sbnv-mck:checked~.sbnv-list>li.sbnv-hid{display:block}
.sbnv-mck:checked~.sbnv-more{display:none}
.sbnv-f1:checked~.sbnv-list>li.sbnv-hid[data-f1="1"],
.sbnv-f2:checked~.sbnv-list>li.sbnv-hid[data-f2="1"],
.sbnv-f3:checked~.sbnv-list>li.sbnv-hid[data-f3="1"]{display:block}
.sbnv-f1:checked~.sbnv-more,
.sbnv-f2:checked~.sbnv-more,
.sbnv-f3:checked~.sbnv-more{display:none}
.sbnv-f1:checked~.sbnv-list>li.sbnv-row:not([data-f1="1"]),
.sbnv-f2:checked~.sbnv-list>li.sbnv-row:not([data-f2="1"]),
.sbnv-f3:checked~.sbnv-list>li.sbnv-row:not([data-f3="1"]){display:none}

/* ===== sbn:rail (ревьюшник — рельс НЕ сносим) ======================== */
/* ⛔ Имена классов здесь — РОВНО те, что печатает `rail()` в bsn_build: `__h` (шапка
   блока), `__f` (подвал блока), `mini__r/__n/__b/__o/__go`, `rsec__i`, `rpop`,
   `rp__k/__t/__a`. Прежняя редакция описывала ДРУГОЙ рельс (`__t`, `__b`, `mini__p`,
   `mini__s`, `rhelp`): ни одно правило не встречало свой элемент, рамка и фон
   приходили от `.sbn-rb`, а внутреннего отступа не было вовсе — gate_padding дал
   «зазор слева 1 справа 1» на трёх блоках × 4 ширины × все страницы (96 провалов,
   27.09.2026). Глазом это не видно: блок выглядит как блок. Меняешь разметку в
   `rail()` — правишь и этот блок; отступ держат шапка, списки и подвал, а не секция,
   иначе шапка перестанет идти во всю ширину. */
.sbn-rail{min-width:0;display:flex;flex-direction:column;gap:var(--sbn-s2)}
.sbn-rb{background:var(--sbn-paper);border:1px solid var(--sbn-line);
 border-radius:var(--sbn-r);box-shadow:var(--sbn-sh);overflow:hidden}
.sbn-rb--top{border-top:3px solid var(--sbn-amber)}
.sbn-rb__h{display:flex;align-items:center;gap:8px;margin:0;border:0;
 padding:11px 16px;background:var(--sbn-navy);color:#fff;
 font-family:var(--sbn-sans);font-size:12.5px;font-weight:700;letter-spacing:.11em;
 text-transform:uppercase}
.sbn-rb__h .sbn-i{width:16px;height:16px;flex:0 0 auto;color:var(--sbn-amber)}
.sbn-rb__f{margin:0;padding:10px 16px 12px;border-top:1px solid var(--sbn-line2);
 background:var(--sbn-shade);font-size:13px;font-weight:700}
.sbn-rb__f a{color:var(--sbn-navy2)!important}
.sbn-rb__f a:hover{text-decoration:underline}
/* мини-таблица топ-букмекеров: место · бренд + оффер · кнопка */
.sbn-mini{margin:0;padding:6px 16px 8px;list-style:none}
.sbn-mini__r{display:grid;grid-template-columns:22px minmax(0,1fr) auto;
 grid-template-areas:"n b go" "n o go";gap:1px 9px;align-items:center;
 margin:0;padding:9px 0;border-top:1px solid var(--sbn-line2);list-style:none}
.sbn-mini__r:first-child{border-top:0}
.sbn-mini__r:before{content:none}
.sbn-mini__n{grid-area:n;align-self:center;width:22px;height:22px;border-radius:4px;
 background:var(--sbn-shade);border:1px solid var(--sbn-line2);
 color:var(--sbn-navy2);font-size:11.5px;font-weight:700;line-height:20px;
 text-align:center}
.sbn-mini__b{grid-area:b;min-width:0;font-size:14px;font-weight:700;line-height:1.25;
 overflow-wrap:break-word}
.sbn-mini__o{grid-area:o;min-width:0;font-size:12px;line-height:1.35;
 color:var(--sbn-ink3);overflow-wrap:break-word}
.sbn-mini__go{grid-area:go;align-self:center;padding:6px 10px;border-radius:5px;
 background:var(--sbn-amber);color:var(--sbn-navy)!important;
 font-family:var(--sbn-sans);font-size:11.5px;font-weight:800;letter-spacing:.04em;
 text-transform:uppercase;text-decoration:none!important;white-space:nowrap}
.sbn-mini__go:hover{background:var(--sbn-amber2);color:#fff!important}
/* иконки разделов */
.sbn-rsec{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin:0;
 padding:14px 16px 16px}
.sbn-rsec__i{display:flex;flex-direction:column;align-items:center;gap:6px;
 padding:12px 8px;background:var(--sbn-shade);border:1px solid var(--sbn-line2);
 border-radius:var(--sbn-r);font-size:12.5px;font-weight:700;text-align:center;
 line-height:1.25;color:var(--sbn-ink)!important;text-decoration:none!important}
.sbn-rsec__i:hover{border-color:var(--sbn-amber);background:#fff}
.sbn-rsec__i .sbn-i{width:22px;height:22px;color:var(--sbn-navy2)}
/* нумерованный список популярных статей */
.sbn-rpop{margin:0;padding:12px 16px 16px;list-style:none;counter-reset:sbnp}
.sbn-rpop li{counter-increment:sbnp;position:relative;padding:8px 0 8px 30px;
 margin:0;list-style:none;
 border-top:1px solid var(--sbn-line2);font-size:14px;line-height:1.4}
.sbn-rpop li:first-child{border-top:0;padding-top:0}
.sbn-rpop li:before{content:counter(sbnp);position:absolute;left:0;top:7px;
 width:21px;height:21px;border-radius:4px;background:var(--sbn-shade);
 border:1px solid var(--sbn-line2);color:var(--sbn-navy2);font-size:11.5px;
 font-weight:700;line-height:20px;text-align:center;display:block}
.sbn-rpop li:first-child:before{top:0}
.sbn-rpop a{color:var(--sbn-ink)!important}
.sbn-rpop a:hover{color:var(--sbn-navy2)!important;text-decoration:underline}
/* промо-врезка рельса */
/* ⛔ Под градиентом обязателен СВОЙ background-color: у `background:linear-gradient()`
   вычисленный backgroundColor остаётся прозрачным, и любая проверка контраста (наша
   и читалки) берёт фон светлого предка — янтарь на тёмной панели читался как 1,36
   вместо 7,55. Плюс это честный запасной фон, если градиент не отрисован. */
.sbn-rp{background:#0E2B48 linear-gradient(160deg,#0E2B48,#16406B);color:#fff;
 border:0;padding:16px;box-shadow:var(--sbn-sh)}
.sbn-rp__k{margin:0 0 7px;font-size:11px;font-weight:700;letter-spacing:.13em;
 text-transform:uppercase;color:var(--sbn-amber)}
/* ⛔ Имена классов здесь ровно те, что печатает `rail()` в bsn_build: __k, __t, __a.
   Правил на __t и __a не было — текст врезки красился общим прозовым цветом, а
   ссылка получала `.sbn-prose a{color:navy2!important}` и давала 1,16 на тёмном
   фоне панели (R3). Цвет ссылки на тёмном — только с `!important`, иначе прозовое
   правило снова перебьёт. */
.sbn-rp__t{margin:0 0 12px;font-size:14px;line-height:1.55;color:#CBDDEC}
.sbn-rp__a{display:inline-flex;align-items:center;gap:7px;font-size:13.5px;
 font-weight:700;letter-spacing:.02em;color:var(--sbn-amber)!important;
 text-decoration:none!important;border-bottom:1px solid rgba(242,176,28,.5)}
.sbn-rp__a:hover{color:#fff!important;border-bottom-color:#fff}
.sbn-rp__a .sbn-i{width:15px;height:15px}
/* ⛔ Здесь был ВТОРОЙ селектор `__t` (11,5px / #9FBAD2) — он перебивал правило выше, и
   текст врезки шёл мелочью на тёмном фоне. Правил на один класс в этом файле два не
   бывает: побеждает нижний, а видно это только в браузере. */

/* ===== sbn:helpbox (последний блок листа) ============================ */
.sbn-help{margin:var(--sbn-s3) 0 0;padding:16px 18px;background:var(--sbn-em2);
 border:1px solid #BEE0D5;border-left:4px solid var(--sbn-em);
 border-radius:var(--sbn-r)}
.sbn-help h2{margin:0 0 7px;font-family:var(--sbn-sans);font-size:15px;
 letter-spacing:.04em;text-transform:uppercase;border:0;padding:0;
 display:flex;align-items:center;gap:8px}
.sbn-help h2 .sbn-i{width:17px;height:17px;color:var(--sbn-em)}
/* ⛔ Мера строки держится и здесь: блок идёт под сеткой во всю полосу, и без
   ограничения абзац растягивался на 1039 px — и по типографике перебор (мера
   760), и эталон R13 «витрина по ширине контента» считался по нему, а не по
   тексту статьи, из-за чего исправная витрина 758 px шла в брак. */
.sbn-help p{margin:0;max-width:var(--sbn-meas);font-size:14.5px;line-height:1.6;
 color:#0C4436}
.sbn-help a{color:#07543F!important;font-weight:700}

/* ===== sbn:footer ==================================================== */
.sbn-ft{background:var(--sbn-paper);border-top:4px solid var(--sbn-amber);
 margin-top:var(--sbn-s4)}
.sbn-ft__top{display:grid;grid-template-columns:minmax(0,332px) minmax(0,1fr);gap:34px;
 padding-top:var(--sbn-s3);padding-bottom:var(--sbn-s3)}
.sbn-ft__brand{display:flex;align-items:center;gap:11px;margin:0 0 12px;
 color:var(--sbn-navy)!important}
.sbn-ft__brand span b{font-family:var(--sbn-serif);font-size:23px}
.sbn-ft__brand span i{font-family:var(--sbn-serif);font-size:23px;font-style:normal;
 color:var(--sbn-amber3)}
.sbn-ft__trust{margin:0 0 12px;font-size:13.5px;line-height:1.66;color:var(--sbn-ink2)}
.sbn-ft__reg{display:flex;gap:9px;margin:0;padding:11px 13px;background:var(--sbn-shade);
 border:1px solid var(--sbn-line2);border-radius:var(--sbn-r);
 font-size:12.5px;line-height:1.55;color:var(--sbn-ink2)}
.sbn-ft__reg .sbn-i{width:17px;height:17px;flex:0 0 auto;color:var(--sbn-navy2)}
.sbn-ft__nav{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:22px}
.sbn-ft__ct{margin:0 0 9px;padding:0 0 7px;font-family:var(--sbn-sans);font-size:12px;
 font-weight:700;letter-spacing:.13em;text-transform:uppercase;color:var(--sbn-navy);
 border-bottom:1px solid var(--sbn-line2)}
.sbn-ft__nav ul{margin:0;padding:0;list-style:none}
.sbn-ft__nav li{margin:0 0 6px;padding:0;list-style:none}
.sbn-ft__nav li:before{content:none}
.sbn-ft__nav a{font-size:14px;color:var(--sbn-ink2)!important}
.sbn-ft__nav a:hover{color:var(--sbn-navy2)!important;text-decoration:underline}
.sbn-ft__help{background:var(--sbn-shade);border-top:1px solid var(--sbn-line2);
 border-bottom:1px solid var(--sbn-line2)}
.sbn-ft__help-in{display:flex;flex-wrap:wrap;align-items:center;gap:8px 20px;
 padding-top:12px;padding-bottom:12px;font-size:13.5px}
.sbn-ft__hl{display:flex;align-items:center;gap:8px;font-weight:700;
 color:var(--sbn-navy)}
.sbn-ft__hl .sbn-i{width:16px;height:16px;color:var(--sbn-em)}
.sbn-ft__help ul{display:flex;flex-wrap:wrap;gap:6px 20px;margin:0;padding:0;list-style:none}
.sbn-ft__help li{margin:0;padding:0;list-style:none;color:var(--sbn-ink2)}
.sbn-ft__help li:before{content:none}
.sbn-ft__help a{color:var(--sbn-navy2)!important;font-weight:700}
.sbn-ft__bot-in{display:flex;flex-wrap:wrap;align-items:center;gap:10px 22px;
 padding-top:14px;padding-bottom:20px}
.sbn-ft__badges{display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none}
.sbn-ft__badges li{display:flex;align-items:center;gap:7px;margin:0;
 padding:5px 11px;background:var(--sbn-shade);border:1px solid var(--sbn-line);
 border-radius:100px;font-size:12.5px;font-weight:700;color:var(--sbn-ink2);
 list-style:none}
.sbn-ft__badges li:before{content:none}
.sbn-ft__badges .sbn-i{width:15px;height:15px;color:var(--sbn-em)}
.sbn-ft__b18{background:var(--sbn-warn)!important;border-color:var(--sbn-warn)!important;
 color:#fff!important;letter-spacing:.04em}
.sbn-ft__cr{margin:0;flex:1 1 280px;font-size:12.5px;line-height:1.55;
 color:var(--sbn-ink3)}

/* ===== sbn:donor-classes (§15b — донорские имена получают правила) ==== */
body.sbn-page .nocomments,body.sbn-page .awesome-social,
body.sbn-page #cookie-notice,body.sbn-page .cookie-notice-container,
body.sbn-page .copyrights,body.sbn-page #copyright-note,
body.sbn-page .mks_author_widget,body.sbn-page .widget_search,
body.sbn-page .top{display:none}
body.sbn-page .breadcrumb_last{font-weight:600;color:var(--sbn-ink)}
body.sbn-page .post-info,body.sbn-page .theauthor,body.sbn-page .thetime{
 font-size:13.5px;color:var(--sbn-ink3)}
body.sbn-page .mark-links a{color:var(--sbn-navy2)}
body.sbn-page .lets-review-box-wrap,body.sbn-page .lets-review{
 margin:0 0 var(--sbn-s3);padding:14px 16px;background:var(--sbn-shade);
 border:1px solid var(--sbn-line);border-left:4px solid var(--sbn-navy2);
 border-radius:var(--sbn-r);font-size:15px}
body.sbn-page .cb-rating-wrap,body.sbn-page .cb-score{font-weight:700;
 color:var(--sbn-navy)}
body.sbn-page .check-boxes{color:var(--sbn-em);font-weight:700}
body.sbn-page .cta-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));
 gap:12px;margin:0 0 var(--sbn-s3);padding:0;list-style:none}
body.sbn-page .cta-cell{padding:13px 16px;background:var(--sbn-shade);
 border:1px solid var(--sbn-line2);border-radius:var(--sbn-r);font-size:14.5px}
body.sbn-page .cta-cell:before{content:none}
body.sbn-page .fa{display:inline-block;width:1em;height:1em;vertical-align:-.12em}
body.sbn-page .fa:before{content:"\2713";color:var(--sbn-em);font-family:inherit;
 font-weight:700}
body.sbn-page .featured-thumbnail{display:none}
/* маркеры донорских списков гасим ТОЛЬКО внутри его блоков — не своих
   (own-nodes-must-survive-donor-reset) */
body.sbn-page .post-content li:before,body.sbn-page .post-single-content li:before{
 content:none}
body.sbn-page .sbn-prose li:before{content:""}
body.sbn-page .sbn-prose ol>li:before{content:counter(sbnn)}

/* ===== sbn:mobile (ниже всех десктопных правил, которые отменяет) ==== */
@media (max-width:1180px){
 .sbn-nav__a{padding:13px 11px;font-size:13.5px}
 .sbn-nav__a .sbn-i{display:none}
}
@media (max-width:1040px){
 .sbn-grid:has(>.sbn-rail){grid-template-columns:minmax(0,1fr) 220px;gap:24px}
}
@media (max-width:900px){
 .sbn-hd__burger{display:flex;align-items:center;gap:6px;margin-left:auto;cursor:pointer;
  min-height:44px;min-width:44px;padding:9px 12px;border-radius:var(--sbn-r);
  background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.22)}
 .sbn-hd__burger span{display:block;width:20px;height:2px;background:#fff;border-radius:2px;
  margin:2px 0}
 .sbn-hd__burger span:nth-child(2){width:14px}
 .sbn-hd__burger em{font-style:normal;font-size:13px;font-weight:700;color:#fff;
  letter-spacing:.06em;text-transform:uppercase;margin-left:4px}
 .sbn-hd__burger>span{margin-right:-16px}
 .sbn-hd__cta{display:none}
 .sbn-hd__rail{display:none}
 .sbn-hd__sw:checked ~ .sbn-hd__rail,
 .sbn-hd__mast:has(.sbn-hd__sw:checked) ~ .sbn-hd__rail{display:block}
 .sbn-nav__l{display:block}
 .sbn-nav__i{border-bottom:1px solid var(--sbn-line2)}
 .sbn-nav__a{min-height:48px;padding:13px var(--sbn-pad);font-size:16px;
  border-bottom:0}
 .sbn-nav__a .sbn-i{display:block;width:18px;height:18px}
 .sbn-nav__c{display:none}
 .sbn-nav__p{position:static;visibility:visible;opacity:1;transform:none;min-width:0;
  border:0;border-top:1px solid var(--sbn-line2);border-radius:0;box-shadow:none;
  background:var(--sbn-shade);padding:10px var(--sbn-pad) 12px}
 .sbn-nav__ph{display:none}           /* заголовок панели дублирует пункт */
 .sbn-nav__p ul{columns:2;column-gap:18px}
 .sbn-nav__p li{break-inside:avoid}
 /* ⚠️ Цель пальца в выдвижном меню — 44 px, а не 38 (норма N4 gate_menu, §2 design):
    при `min-height:38px` шестьдесят ссылок панелей шли ниже нормы на каждой мобильной
    странице. `display:flex` обязателен: у строчной ссылки высота бокса = высота строки,
    и `min-height` на ней не работает вовсе. */
 .sbn-nav__p a{display:flex;align-items:center;padding:10px 0;font-size:14px;
  min-height:44px;line-height:1.3}
 .sbn-nav__i:nth-last-child(-n+3)>.sbn-nav__p{right:auto}
 .sbn-ft__top{grid-template-columns:minmax(0,1fr);gap:24px}
 .sbn-ft__nav{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:860px){
 .sbn-grid:has(>.sbn-rail){display:block}
 .sbn-rail{margin-top:var(--sbn-s3);flex-direction:column}
 .sbn-sheet{max-width:none}
}
@media (max-width:640px){
 .sbn-hd__name b,.sbn-hd__name i{font-size:22px}
 .sbn-hd__name small{display:none}       /* короткая редакция — в подвале полная */
 .sbn-hd__facts li:nth-child(n+4){display:none}
 .sbn-hd__help{margin-left:0;flex:1 1 100%}
 .sbn-sheet{padding:var(--sbn-in) var(--sbn-in) 26px}
 .sbn-facts>div{flex:1 1 100%}
 .sbn-toc ol{columns:1}
 .sbn-nav__p ul{columns:1}
 .sbn-prose h2{font-size:22px}
 .sbn-prose h3{font-size:18.5px}
 .sbn-prose>p:first-of-type img:first-child{
  width:45%;margin-left:14px}
 .sbn-rsec{grid-template-columns:1fr 1fr}
 body.sbn-page .sbn-prose table,
 body.sbn-page .sbn-prose table tbody,
 body.sbn-page .sbn-prose table tr,
 body.sbn-page .sbn-prose table td,
 body.sbn-page .sbn-prose table th{height:auto!important}
 body.sbn-page .sbn-prose td,body.sbn-page .sbn-prose th{padding:9px 16px}
}
@media (max-width:420px){
 .sbn-ft__nav{grid-template-columns:minmax(0,1fr)}
 /* рельс на телефоне идёт во всю полосу — сетка ряда та же, ужимать нечего */
 .sbn-mini{padding:4px 14px 6px}
 .sbn-rsec{padding:12px 14px 14px}
 .sbn-rpop{padding:10px 14px 14px}
}
/* витрина: точка перелома от суммы минимумов ряда (36+148+112+172+126 + 4×12
   зазоров + 26 поля = 668 в колонке, то есть ~730 вьюпорта), а не от 760.
   Ряд собирается в три этажа: место+плитка+кто · оффер · балл и кнопка.
   Плитка НЕ ужимается ниже пола знака 90 px (R15), лицензия и ссылка на обзор
   встают в одну строку — иначе ряд на телефоне уезжает за 290 px (R9).
   Дубликатов правил состояния здесь НЕТ — иначе они встали бы ниже фильтров. */
@media (max-width:780px){
 .sbnv-fil{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;
  scrollbar-width:thin}
 .sbnv-flab,.sbnv-pill{flex:0 0 auto;white-space:nowrap}
 .sbnv-list>li{padding:11px!important}
 /* ⛔ Колонка плитки считается ОТ ПОЛА ЗНАКА, а не на глаз: 112 − 5 − 5 − 2 = 100 px
    внутреннего поля, знак 300×180 рисуется 100×60 — выше пола 90 px (R15). При 104
    выходило 88 px и все 44 плитки шли в брак. */
 .sbnv-top{grid-template-columns:28px 112px minmax(0,1fr);gap:7px 10px;align-items:start}
 .sbnv-rank{grid-column:1;grid-row:1}
 .sbnv-rank b{width:28px;height:28px;font-size:13.5px}
 .sbnv-tile{grid-column:2;grid-row:1;padding:5px}
 .sbnv-who{grid-column:3;grid-row:1;flex-flow:row wrap;align-items:baseline;gap:2px 8px}
 .sbnv-role,.sbnv-name{flex:1 1 100%}
 .sbnv-name{font-size:16.5px}
 .sbnv-lic{flex:0 1 auto;font-size:11.5px}
 .sbnv-rev{flex:0 0 auto;font-size:11.5px}
 .sbnv-off{grid-column:1/-1;grid-row:2;flex-flow:row wrap;align-items:baseline;gap:1px 7px}
 .sbnv-olab{flex:0 0 auto}
 .sbnv-ofig{flex:1 1 auto;font-size:16px}
 .sbnv-omech,.sbnv-chips{flex:1 1 100%;margin-top:1px}
 .sbnv-act{grid-column:1/-1;grid-row:3;flex-flow:row wrap;align-items:center;gap:4px 10px}
 .sbnv-sc{flex:0 0 auto}
 .sbnv-cta{flex:1 1 auto;min-width:140px;text-align:center;min-height:40px;padding:9px 10px}
 .sbnv-tc{flex:1 1 100%;text-align:center}
 /* ⛔ Факты на телефоне — ОДНА прокручиваемая строка, а не сетка 2×2: четыре факта
    в два этажа держали 58 px и выносили ряд за 290 px (R9). Прятать их нельзя —
    `display:none` на тексте гейт считает скрытым текстом, а не экономией места. */
 .sbnv-fx{display:flex;flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;
  scrollbar-width:thin;margin-top:7px!important}
 .sbnv-fx>div{flex:0 0 auto;max-width:none;padding:4px 13px}  /* волосок — общий gap:1px */
 /* ⛔ Последняя ячейка тянется. Хвост полосы — это фон КОНТЕЙНЕРА (`--sbn-line2`, им же
    нарисован волосок между ячейками), и у оператора с двумя фактами вместо четырёх
    (Betum: «Apps» + «Online since») правее последней ячейки оставался серый огрызок —
    пустая ячейка на вид. Найдено глазами на мобиле 27.09.2026; сетка на десктопе этим
    не болеет — там `auto-fit` растягивает сами колонки. */
 .sbnv-fx>div:last-child{flex:1 0 auto}
}
@media (max-width:420px){
 .sbnv-top{grid-template-columns:26px 108px minmax(0,1fr);gap:7px 8px}
 .sbnv-h2{font-size:21px!important}
 .sbnv-head,.sbnv-fil,.sbnv-disc{padding-left:12px;padding-right:12px}
}
