@charset "UTF-8";
/* k3-skin.css — общий скин K3 «Терминал» (1-й <style> эталонов index/hub/404,
   design-shotgun/k3). Кэшируемый статик вместо инлайна шаблонов;
   содержимое дословно по эталону, правки — только через эталон. Кегли в rem (B8).
   url(fonts/...) резолвится в assets/fonts/ соседством файла — переписывание не нужно. */

/* IBM Plex — свои файлы. Было: 2 блокирующих запроса к
   fonts.googleapis.com + fonts.gstatic.com — удар в LCP и риск РФ-доступности (при
   таймауте gstatic текст висит в FOIT). unicode-range сохранён: браузер тянет только
   нужный сабсет — кириллица Sans 400 это 29 KB, а не все 638 KB. */
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;src:url(fonts/IBMPlexMono-400-cyrillic.woff2) format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;src:url(fonts/IBMPlexMono-400-latin.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:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;src:url(fonts/IBMPlexMono-400-cyrillic-ext.woff2) format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;src:url(fonts/IBMPlexMono-400-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;src:url(fonts/IBMPlexMono-500-cyrillic.woff2) format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;src:url(fonts/IBMPlexMono-500-latin.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:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;src:url(fonts/IBMPlexMono-500-cyrillic-ext.woff2) format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;src:url(fonts/IBMPlexMono-500-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:600;font-display:swap;src:url(fonts/IBMPlexMono-600-cyrillic.woff2) format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:600;font-display:swap;src:url(fonts/IBMPlexMono-600-latin.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:'IBM Plex Mono';font-style:normal;font-weight:600;font-display:swap;src:url(fonts/IBMPlexMono-600-cyrillic-ext.woff2) format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:600;font-display:swap;src:url(fonts/IBMPlexMono-600-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:400;font-display:swap;src:url(fonts/IBMPlexSans-400-cyrillic.woff2) format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:400;font-display:swap;src:url(fonts/IBMPlexSans-400-latin.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:'IBM Plex Sans';font-style:normal;font-weight:400;font-display:swap;src:url(fonts/IBMPlexSans-400-cyrillic-ext.woff2) format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:400;font-display:swap;src:url(fonts/IBMPlexSans-400-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:500;font-display:swap;src:url(fonts/IBMPlexSans-500-cyrillic.woff2) format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:500;font-display:swap;src:url(fonts/IBMPlexSans-500-latin.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:'IBM Plex Sans';font-style:normal;font-weight:500;font-display:swap;src:url(fonts/IBMPlexSans-500-cyrillic-ext.woff2) format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:500;font-display:swap;src:url(fonts/IBMPlexSans-500-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:600;font-display:swap;src:url(fonts/IBMPlexSans-600-cyrillic.woff2) format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:600;font-display:swap;src:url(fonts/IBMPlexSans-600-latin.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:'IBM Plex Sans';font-style:normal;font-weight:600;font-display:swap;src:url(fonts/IBMPlexSans-600-cyrillic-ext.woff2) format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:600;font-display:swap;src:url(fonts/IBMPlexSans-600-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:700;font-display:swap;src:url(fonts/IBMPlexSans-700-cyrillic.woff2) format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:700;font-display:swap;src:url(fonts/IBMPlexSans-700-latin.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:'IBM Plex Sans';font-style:normal;font-weight:700;font-display:swap;src:url(fonts/IBMPlexSans-700-cyrillic-ext.woff2) format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:700;font-display:swap;src:url(fonts/IBMPlexSans-700-latin-ext.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{
  --paper:#F4F5EF; --card:#FCFCF9; --ink:#1B1D1F; --ink2:#50544A;
  --line:rgba(27,29,31,.16); --line2:rgba(27,29,31,.3);
  --acc:#007C46; --accB:#00A05A; --org:#C04C00; --orgB:#F0611A;
  --dark:#17191B; --dark2:#1F2224; --dink:#E9EBE3; --dink2:#9AA091;
}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
html{font-size:18px}
@media (max-width:640px){html{font-size:17px}}
@media (min-width:1560px){html{font-size:18.5px}}
@media (min-width:1900px){html{font-size:20px}}
@media (min-width:2200px){html{font-size:21px}}
@media (min-width:2400px){html{font-size:22px}}

body{background:var(--paper);color:var(--ink);font:1rem/1.62 "IBM Plex Sans",system-ui,sans-serif;-webkit-font-smoothing:antialiased}
img,svg{max-width:100%;height:auto;display:block}
a{color:inherit;text-decoration:none}
/* K3-SHARED: k3-base-guard — второй рубеж каскада. Первый рубеж —
   позиция: <link> статиков печатается ПОСЛЕ wp_head (header-k3.php). Этот блок держит
   базу скина и против стилей, напечатанных ПОЗЖЕ наших <link> (поздняя печать плагинов
   в wp_footer): body.k3 (body_class всех K3-шаблонов) специфичнее элементного body{}
   любой темы. Дубль в k3-skin.css и k3-article.css байт-в-байт — сверка по маркеру
   (L-016). */
body.k3{background:var(--paper);color:var(--ink);font:1rem/1.62 "IBM Plex Sans",system-ui,sans-serif;-webkit-font-smoothing:antialiased}
/* /K3-SHARED: k3-base-guard */
.mono{font-family:"IBM Plex Mono",monospace}
.wrap{max-width:1200px;margin:0 auto;padding:0 24px}
@media (min-width:1560px){.wrap{max-width:1400px}}
@media (min-width:1900px){.wrap{max-width:1640px}}
@media (min-width:2200px){.wrap{max-width:1840px}}
@media (min-width:2400px){.wrap{max-width:2000px}}

/* ── header ─────────────────────────────── */
/* Статусной строки терминала и мачты-справа нет — служебный «системный» текст
   не несёт читателю ничего. Шапка = логотип + рубрики. */
.masthead{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;padding:30px 0 18px}
.logo{font-size:clamp(32px,5vw,44px);font-weight:700;letter-spacing:-.02em;line-height:1;display:inline-flex;align-items:center}
.logo a{display:inline-flex;align-items:center;gap:.3em}
.logo .lmark{flex:none;width:.86em;height:.86em}
.logo .lmark svg{width:100%;height:100%;display:block}
.logo .cur{display:inline-block;width:.42em;height:.74em;background:var(--accB);margin-left:.1em;vertical-align:-.04em}
.nav{border-top:1px solid var(--line);border-bottom:2px solid var(--ink)}
.nav-in{display:flex;align-items:center;flex-wrap:wrap}
.nav-in a{display:inline-flex;align-items:center;min-height:46px;padding:10px 15px;font-size:0.9118rem;font-weight:500}
.nav-in a:hover{background:rgba(0,160,90,.1)}
.cta{margin-left:auto;background:var(--ink);color:#fff !important;font-weight:600;gap:9px}
.cta .sq{width:8px;height:8px;background:var(--accB);flex:none}
.cta:hover{background:var(--acc) !important}

/* ── общие блоки ───────────────────────── */
.shead{display:flex;align-items:baseline;gap:14px;margin:34px 0 6px}
.shead::before{content:"";width:11px;height:11px;background:var(--accB);align-self:center;flex:none}
.shead h2{font-size:1.1765rem;font-weight:700;letter-spacing:-.01em;white-space:nowrap}
.shead .cnt{font-size:0.8235rem;color:var(--ink2);white-space:nowrap}
.shead::after{content:"";flex:1;height:1px;background:var(--line2);align-self:center}
.chips{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.chip{border:1px solid var(--ink);padding:5px 9px;font:600 0.7353rem/1 "IBM Plex Sans",system-ui,sans-serif;letter-spacing:.01em}
.chip.new{letter-spacing:.02em}
.chip.new{background:var(--acc);border-color:var(--acc);color:#fff}
.chip.upd{color:var(--org);border-color:var(--org)}
.cover{display:block;border:1px solid var(--line2);background:#EDEFE8}
.cover svg{width:100%;height:auto}
.cover:hover{outline:2px solid var(--accB);outline-offset:-1px}
/* ЯЗЫК ИНТЕРАКЦИИ — один на весь сайт: НАВЕДЕНИЕ НА КЛИКАБЕЛЬНОЕ ДАЁТ ЗЕЛЁНУЮ РЕАКЦИЮ
   (рамка у карточки, подчёркивание у заголовка, заливка у кнопки). Некликабельное не
   реагирует никогда. Юзеру не нужно гадать «куда нажать»: зелёное отозвалось — жми. */
.tcard:hover,.pick:hover,.selc:hover,.catcell:hover{outline:2px solid var(--accB);outline-offset:-1px}

/* ── Слайдер свежих статей ────────────────────────────────────────────────────
   CSS scroll-snap, БЕЗ карусельной библиотеки: рамка BRIEF «0 тяжёлого JS» жива.
   Свайп/колесо/шифт-колесо работают нативно; стрелки — единственный JS на сайте,
   4 строки инлайн, progressive enhancement (без JS лента остаётся скроллируемой).
   Слайдер ЗАМЕНЯЕТ зону «Свежее» — те же 10 статей, иначе дубли на главной. */
.ticker{border-bottom:1px solid var(--line);padding:14px 0 18px}
.ticker-h{display:flex;align-items:center;gap:12px;margin-bottom:12px;flex-wrap:wrap}
.ticker-h .sq{width:11px;height:11px;background:var(--accB);flex:none}
.ticker-h .th2{font-size:1rem;font-weight:700;letter-spacing:-.01em}
.ticker-h .tc{font-size:0.8235rem;color:var(--ink2)}
.ticker-h .tbtns{margin-left:auto;display:flex;gap:8px}
.ticker-h button{width:48px;height:48px;border:2px solid var(--ink);background:var(--card);
  font:600 1.0588rem/1 "IBM Plex Mono",monospace;color:var(--ink);cursor:pointer;border-radius:0}
.ticker-h button:hover{background:var(--ink);color:#fff}
/* Слайдер: самоперелистывание. Скроллбар снят — аффорданс даёт
   само движение: лента едет сама, и вопрос «это слайдер?» отпадает. Плюс peek (следующая
   карточка обрезана краем) и стрелки 48px. Автоход замирает при наведении и при клике по
   стрелке — читателя нельзя увозить с материала, который он разглядывает. */
.trail{display:grid;grid-auto-flow:column;grid-auto-columns:clamp(280px,23vw,360px);gap:16px;
  overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;padding-bottom:2px;
  margin-inline:calc(50% - 50vw);padding-inline:calc(50vw - 50%);scroll-padding-inline:calc(50vw - 50%)}
.trail::-webkit-scrollbar{display:none}
.tdots{display:flex;gap:6px;margin-left:14px}
.tdots i{width:22px;height:3px;background:rgba(27,29,31,.18);display:block;transition:background .2s}
.tdots i.on{background:var(--accB)}
.tcard{scroll-snap-align:start;border:1px solid var(--line2);background:var(--card);
  display:flex;flex-direction:column;min-width:0}
.tcard .cover{border:0;border-bottom:1px solid var(--line)}
.tcard .tb{padding:11px 13px 13px;display:flex;flex-direction:column;gap:6px;flex:1}
.tcard .tmeta{display:flex;gap:8px;align-items:center;font:600 0.6765rem/1 "IBM Plex Mono",monospace;
  letter-spacing:.09em;text-transform:uppercase;color:var(--ink2)}
.tcard h3{font-size:0.9706rem;line-height:1.36;font-weight:600}
.tcard h3 a{display:inline-block;padding:2px 0}
.tcard h3 a:hover{text-decoration:underline;text-decoration-thickness:2px;text-decoration-color:var(--accB)}

/* ── ШАПКА ЗОНЫ РУБРИКИ — главный организующий принцип ── */
.zone{margin-top:46px}
.zhead{border-top:3px solid var(--ink);padding:14px 0 4px;display:flex;align-items:baseline;gap:14px;flex-wrap:wrap}
.zhead h2{font-size:clamp(22px,2.7vw,31px);font-weight:700;letter-spacing:-.01em;line-height:1.1}
.zhead .zc{font:500 0.6471rem/1.5 "IBM Plex Mono",monospace;letter-spacing:.08em;text-transform:uppercase;color:var(--ink2)}
/* КНОПКА ПРОВАЛА в конце зоны — под статьями, чтобы читатель проваливался дальше
   (ссылка-хвостик в шапке зоны видна ДО чтения и не работает).
   В K3 МОНО ЭТО ДАННЫЕ, САН ЭТО РЕЧЬ (стат-врез: цифра моно, текст сан).
   Моно+капс — идиома мелкого ярлыка (чип, кикер); на кнопке 56px с длинной русской фразой
   она читается как команда терминала. Единственная настоящая кнопка системы — .cta
   «Обучение ИИ» — набрана САНОМ с зелёным квадратом. Кнопка зоны говорит на её языке:
   квадрат + сан для речи + моно для числа. */
.zmore{display:flex;align-items:center;gap:14px;min-height:56px;margin-top:20px;padding:0 18px;
  border:2px solid var(--ink);background:var(--card);font-size:0.9412rem;font-weight:600;color:var(--ink)}
.zmore .sq{width:10px;height:10px;background:var(--accB);flex:none}
.zmore .zn2{margin-left:auto;font:500 0.7647rem/1 "IBM Plex Mono",monospace;letter-spacing:.06em;color:var(--ink2)}
.zmore .zar{font-size:1.1176rem;line-height:1;color:var(--acc);transition:transform .12s}
.zmore:hover{background:var(--ink);color:#fff}
.zmore:hover .zn2{color:var(--dink2)}
.zmore:hover .zar{color:var(--accB);transform:translateX(4px)}
.zsub{font-size:0.8824rem;color:var(--ink2);max-width:760px;margin-top:2px}

/* ── фичер (компакт) ───────────────────── */
.feature{display:grid;grid-template-columns:minmax(220px,286px) minmax(0,1fr) minmax(280px,336px);gap:26px;padding:22px 0 26px;border-bottom:1px solid var(--line);align-items:stretch}
.feature>.cover{align-self:start}
.f-right{display:flex;flex-direction:column;min-width:0}
/* ШКАЛА: ИЗДАНИЕ В МАСШТАБАХ, ТЕРМИНАЛ В ДЕТАЛЯХ — моно-капс остаётся языком
   точных данных, но не становится обоями; драматургию делает газетная шкала кеглей
   (заголовок ГЛАВНОГО материала крупнее вывески зоны). */
.f-title{font-size:clamp(28px,3.2vw,40px);line-height:1.1;font-weight:700;letter-spacing:-.02em;margin:12px 0 12px}
.f-title a:hover{text-decoration:underline;text-decoration-thickness:3px;text-decoration-color:var(--accB)}
.f-excerpt{font-size:0.9412rem;line-height:1.55;color:var(--ink2);margin-bottom:10px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
/* Моно-капс на фразах запрещён. Моно — данные, сан — речь: гайд K3.
   Мета-строка это предложение, а не показание прибора. Токены (чип, код, число) — моно. */
.f-meta{font-size:0.8235rem;line-height:1.6;color:var(--ink2);margin-bottom:10px}
.readlink{display:inline-flex;align-items:center;min-height:42px;font:600 0.8529rem/1 "IBM Plex Sans",system-ui,sans-serif;letter-spacing:0;color:var(--acc);border-bottom:2px solid var(--accB);align-self:flex-start;margin-top:6px}
.readlink:hover{background:rgba(0,160,90,.1)}
.nowreading{background:var(--card);color:var(--ink);border:2px solid var(--ink);padding:16px 18px 8px;min-width:0}
.nowreading .nr-h{display:flex;justify-content:space-between;font:600 0.6471rem/1 "IBM Plex Mono",monospace;letter-spacing:.12em;text-transform:uppercase;color:var(--ink2);padding-bottom:10px;border-bottom:2px solid var(--ink)}
.nowreading ol{list-style:none}
.nowreading li{border-bottom:1px solid var(--line)}
.nowreading li:last-child{border-bottom:0}
.nowreading a{display:grid;grid-template-columns:30px minmax(0,1fr);gap:8px;padding:9px 0;font-size:0.7941rem;line-height:1.4;font-weight:500}
.nowreading a:hover{color:var(--acc);text-decoration:underline}
.nowreading .n{font:500 0.7059rem/1.5 "IBM Plex Mono",monospace;color:var(--acc)}

/* ── свежее: 2 лида с обложками + плотная 2-колоночная лента ── */
.leads{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 44px}
.lead{display:grid;grid-template-columns:150px minmax(0,1fr);gap:16px;padding:16px 0;border-bottom:1px solid var(--line);align-items:start}
.lead .cover{margin-top:3px}
.lead h3{font-size:1.1176rem;line-height:1.28;font-weight:700}
.lead h3 a{display:inline-block;padding:3px 0}
.lead h3 a:hover{text-decoration:underline;text-decoration-thickness:2px;text-decoration-color:var(--accB)}
.lead p{font-size:0.7941rem;line-height:1.5;color:var(--ink2);margin-top:4px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.rmeta{display:flex;gap:10px;align-items:center;flex-wrap:wrap;font:500 0.6176rem/1.5 "IBM Plex Mono",monospace;letter-spacing:.08em;text-transform:uppercase;color:var(--ink2);margin-bottom:5px}
.rmeta .rub{color:var(--ink2);font-weight:600}
.frows{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 44px}
.frow{padding:12px 0;border-bottom:1px solid var(--line);min-width:0}
.frow h3{font-size:0.9118rem;line-height:1.35;font-weight:600}
.frow h3 a{display:inline-block;padding:3px 0}
.frow h3 a:hover{text-decoration:underline;text-decoration-thickness:2px;text-decoration-color:var(--accB)}

/* ── стат-врез ─────────────────────────── */
.stat{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px 32px;align-items:center;padding:20px 0 22px;border-bottom:1px solid var(--line)}
.stat-num{font:600 clamp(46px,6vw,66px)/0.9 "IBM Plex Mono",monospace;letter-spacing:-.05em;color:var(--acc);padding-left:22px;background:linear-gradient(var(--accB),var(--accB)) 0 14%/12px 12px no-repeat}
.stat-body{max-width:620px}
.stat-src{font-size:0.7647rem;font-weight:600;color:var(--ink2);margin-bottom:8px}
.stat-t{font-size:0.9118rem;line-height:1.5}
.stat-link{display:inline-flex;align-items:center;min-height:40px;margin-top:2px;font:600 0.8529rem/1 "IBM Plex Sans",system-ui,sans-serif;letter-spacing:0;color:var(--acc);border-bottom:2px solid var(--accB)}
.stat-link:hover{background:rgba(0,160,90,.1)}

/* ── НОВОСТИ ИИ: лента-телетайп с датами ── */
.news{margin-top:8px}
.nrow{display:grid;grid-template-columns:118px minmax(0,1fr);gap:18px;padding:12px 0;border-bottom:1px solid var(--line)}
.nrow .nd{font:500 0.7059rem/1.7 "IBM Plex Mono",monospace;color:var(--acc);white-space:nowrap}
.nrow .nd .live{display:inline-block;width:8px;height:8px;background:var(--accB);margin-right:7px}
.nrow h3{font-size:1rem;line-height:1.35;font-weight:600;display:inline}
.nrow h3 a{padding:3px 0}
.nrow h3 a:hover{text-decoration:underline;text-decoration-thickness:2px;text-decoration-color:var(--accB)}
.nrow .nx{font-size:0.7941rem;line-height:1.5;color:var(--ink2);margin-top:3px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

/* ── ОБЗОРЫ: тёмная полоса ─────────────── */
.band{background:var(--dark);color:var(--dink);margin-top:46px;padding:34px 0 36px}
/* Белой рейки над «Обзорами» нет: тёмная полоса сама отбивает зону от бумаги —
   линия поверх неё была бы вторым разделителем на том же стыке. */
.band .zhead{border-top:0;padding-top:0}
.band .zhead h2{color:var(--dink)}
.band .zmore{border-color:var(--dink);background:transparent;color:var(--dink)}
.band .zmore .zn2{color:var(--dink2)}
.band .zmore:hover{background:var(--dink);color:var(--dark)}
.band .zmore:hover .zn2{color:var(--ink2)}
.band .zmore:hover .zar{color:var(--acc)}
.band .zsub{color:var(--dink2)}
.picks{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;margin-top:16px}
.pick{background:var(--dark2);border:1px solid rgba(255,255,255,.12);display:flex;flex-direction:column;min-width:0}
.pick .cover{border:0;border-bottom:1px solid rgba(255,255,255,.12)}
.pick-body{padding:13px 15px 15px}
.pick-meta{font:500 0.6176rem/1.5 "IBM Plex Mono",monospace;letter-spacing:.1em;text-transform:uppercase;color:var(--dink2);margin-bottom:7px}
.pick-meta .rub{color:var(--dink2)}
.pick h3{font-size:0.9118rem;line-height:1.35;font-weight:600}
.pick h3 a{display:inline-block;padding:3px 0}
.pick h3 a:hover{color:#fff;text-decoration:underline}
.pick p{font-size:0.7647rem;line-height:1.5;color:var(--dink2);margin-top:6px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}

/* ── КАТАЛОГ: полоса паспортов ─────────── */
/* УНИФИКАЦИЯ: 2-3 приёма, один визуальный язык. Каталог — те же карточки,
   что Обзоры/Подборки/тикер: одна анатомия, другая начинка (слитая таблица
   с gap 1px была бы четвёртым приёмом на ровном месте). */
.cat{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-top:14px}
@media (min-width:1560px){.picks{grid-template-columns:repeat(5,minmax(0,1fr))}.cat{grid-template-columns:repeat(5,minmax(0,1fr))}}
@media (min-width:1900px){.picks{grid-template-columns:repeat(6,minmax(0,1fr))}.cat{grid-template-columns:repeat(6,minmax(0,1fr))}}
@media (min-width:2200px){.picks{grid-template-columns:repeat(7,minmax(0,1fr))}.cat{grid-template-columns:repeat(7,minmax(0,1fr))}}
.catcell{background:var(--card);border:1px solid var(--line2);padding:15px 16px 12px;display:flex;flex-direction:column;min-width:0}
.catname{font:600 0.9412rem/1.3 "IBM Plex Mono",monospace;letter-spacing:-.01em}
.catclass{font-size:0.7647rem;line-height:1.45;color:var(--ink2);margin-top:3px}
.catfact{font-size:0.7647rem;line-height:1.5;color:var(--ink2);margin-top:7px}
.catlink{margin-top:auto;padding-top:8px;display:inline-flex;align-items:center;min-height:34px;font:600 0.7941rem/1 "IBM Plex Sans",system-ui,sans-serif;letter-spacing:0;color:var(--ink)}
.catlink:hover{text-decoration:underline;text-decoration-thickness:2px;text-decoration-color:var(--accB)}

/* ── ЕДИНЫЙ УКАЗАТЕЛЬ — один компонент вместо отдельной анатомии на каждую зону ──
   Один компонент с двумя ручками: число колонок и анонс вкл/выкл. Разная вёрстка одного
   приёма — разрешена (столбики), новая анатомия на каждую зону — нет.
   Обложка живёт только там, где она про КОНКРЕТНЫЙ инструмент (тикер, герой, Обзоры,
   Каталог): у подборки «10 нейросетей для музыки» одна обложка не значит ничего. */
.idx{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 48px;margin-top:6px}
.idx.c3{grid-template-columns:repeat(3,minmax(0,1fr));gap:0 40px}
.irow{padding:12px 0;border-bottom:1px solid var(--line);min-width:0}
.irow h3{font-size:0.9412rem;line-height:1.35;font-weight:600}
.irow h3 a{display:inline-block;padding:3px 0}
.irow h3 a:hover{text-decoration:underline;text-decoration-thickness:2px;text-decoration-color:var(--accB)}
.irow p{font-size:0.7941rem;line-height:1.5;color:var(--ink2);margin-top:3px}

/* ── ДАЙДЖЕСТ ──────────────────────────── */
.digest{background:var(--dark);color:var(--dink);margin-top:50px;padding:32px 0}
.digest-in{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,420px);gap:16px 40px;align-items:center}
.digest h2{font-size:clamp(19px,2.2vw,25px);font-weight:700;text-transform:uppercase;letter-spacing:.03em}
.digest h2 .cur{display:inline-block;width:.42em;height:.74em;background:var(--accB);margin-left:.12em;vertical-align:-.04em}
.digest .dt{font-size:0.8824rem;color:var(--dink2);margin-top:6px}
.dform{display:flex;gap:10px;min-width:0}
.dform input{flex:1;min-width:0;min-height:48px;background:var(--dark2);border:1px solid rgba(255,255,255,.28);color:var(--dink);font:500 0.8235rem/1 "IBM Plex Mono",monospace;padding:0 14px;border-radius:0}
.dform input::placeholder{color:var(--dink2)}
.dform input:focus{outline:2px solid var(--accB);outline-offset:-1px}
.dform button{min-height:48px;background:var(--accB);color:var(--dark);border:0;font:600 0.7353rem/1 "IBM Plex Mono",monospace;letter-spacing:.08em;text-transform:uppercase;padding:0 20px;cursor:pointer;border-radius:0}
.dform button:hover{background:#fff}
.dnote{grid-column:1/-1;font-size:0.7647rem;line-height:1.6;color:var(--dink2)}

/* ── О МЕТОДИКЕ ────────────────────────── */
.method{border:1px solid var(--line2);background:var(--card);margin-top:50px;padding:22px 26px}
.method .mh{display:flex;align-items:center;gap:12px;font-size:0.8824rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;margin-bottom:12px}
.method .mh::before{content:"";width:11px;height:11px;background:var(--accB);flex:none}
.method ul{list-style:none;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 36px}
.method li{font-size:0.8529rem;line-height:1.55;color:var(--ink2);padding-left:18px;background:linear-gradient(var(--acc),var(--acc)) 0 .55em/8px 2px no-repeat}
.method .mlink{display:inline-flex;align-items:center;min-height:40px;margin-top:8px;font:600 0.8235rem/1 "IBM Plex Sans",system-ui,sans-serif;letter-spacing:0;color:var(--acc);border-bottom:2px solid var(--accB)}
.method .mlink:hover{background:rgba(0,160,90,.1)}

/* ── футер ─────────────────────────────── */
.footer{background:var(--ink);color:#D6D9CE;margin-top:52px}
.footer-in{display:grid;grid-template-columns:2fr 1fr 1fr;gap:40px;padding:44px 0 36px}
.footer .fl{font-size:1.2941rem;font-weight:700;color:#fff;margin-bottom:14px}
.footer .fl .cur{display:inline-block;width:.42em;height:.74em;background:var(--accB);margin-left:.1em;vertical-align:-.04em}
.footer p{font-size:0.8824rem;line-height:1.6;color:#B9BDB0;max-width:420px}
.footer .edu{font-size:0.7941rem;line-height:1.6;color:var(--dink2);margin-top:16px}
.footer .fh{font:700 0.7647rem/1 "IBM Plex Sans",system-ui,sans-serif;letter-spacing:.02em;color:var(--dink2);margin-bottom:14px}
.footer ul{list-style:none}
.footer ul a{display:inline-block;padding:6px 0;font-size:0.8529rem;color:#D6D9CE}
.footer ul a:hover{color:#fff;text-decoration:underline}
.footer .cta{margin:0;display:inline-flex;align-items:center;min-height:46px;padding:10px 18px;background:var(--accB);color:var(--dark) !important;font-weight:600;gap:9px}
.footer .cta .sq{background:var(--dark)}
.footer .cta:hover{background:#fff !important}
.footbar{border-top:1px solid rgba(255,255,255,.14)}
.footbar-in{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:14px 0;font-size:0.7647rem;line-height:1.5;color:var(--dink2)}

/* ── мобайл ────────────────────────────── */
@media (max-width:1080px){
  .feature{grid-template-columns:minmax(200px,260px) minmax(0,1fr)}
  .nowreading{grid-column:1/-1}
  .picks{grid-template-columns:repeat(2,minmax(0,1fr))}
  .cat{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:960px){
  .idx,.idx.c3{grid-template-columns:minmax(0,1fr);gap:0}
  .footer-in{grid-template-columns:1fr;gap:28px}
  .digest-in{grid-template-columns:minmax(0,1fr)}
  .method ul{grid-template-columns:minmax(0,1fr)}
}
@media (max-width:640px){
  .wrap{padding:0 16px}
  .masthead{padding:22px 0 14px}
  .nav-in a{padding:10px 11px;font-size:0.7941rem}
  .cta{width:100%;justify-content:center;margin:6px 0 10px}
  .trail{grid-auto-columns:240px}
  .ticker-h .tc,.tdots{display:none}
  .feature{grid-template-columns:minmax(0,1fr);gap:16px;padding:18px 0 22px}
  .feature>.cover{max-width:340px}
  .lead{grid-template-columns:104px minmax(0,1fr);gap:12px}
  .lead p{display:none}
  .frow h3{font-size:0.8824rem}
  .nrow{grid-template-columns:minmax(0,1fr);gap:2px;padding:11px 0}
  .nrow .nd{font-size:0.6471rem}
  .picks{grid-template-columns:minmax(0,1fr)}
  .idx,.idx.c3{grid-template-columns:minmax(0,1fr);gap:0}
  .cat{grid-template-columns:minmax(0,1fr)}
  .shead h2{white-space:normal;font-size:0.9706rem}
  .shead .cnt{display:none}
  .zhead{padding-top:12px;gap:10px}
  .zmore{min-height:52px;font-size:0.8529rem;gap:10px;padding:0 14px}
  .stat{grid-template-columns:minmax(0,1fr);gap:8px}
  .stat-num{padding-left:19px;background-size:11px 11px}
  .dform{flex-wrap:wrap}
  .dform input{flex:1 1 100%}
  .dform button{flex:1 1 auto}
}

/* ── K2: ДВА ПОТОКА + РЕЛЬС ──────────────────────────────────────────────────────
   Дело не в ширине рамки, а в размере единицы подачи: строка
   «дата · заголовок · одна фраза» в ячейке 1950px не заполняет ничего. Ленты сужены
   до читаемой ширины и стоят рядом, треть отдана рельсу. */
.streams{display:grid;gap:30px}
@media (min-width:1560px){
  .streams{grid-template-columns:minmax(0,1fr) minmax(0,1fr) 330px;gap:38px;align-items:start}
  /* в узкой колонке трёхколоночный индекс гайдов не нужен — он и давал дыры между ссылками */
  .streams .idx.c3{grid-template-columns:minmax(0,1fr)}
}
@media (min-width:2200px){ .streams{grid-template-columns:minmax(0,1fr) minmax(0,1fr) 380px} }
.rail{display:flex;flex-direction:column;gap:20px;position:sticky;top:18px;align-self:start}
@media (max-width:1559px){ .rail{position:static;flex-direction:row;flex-wrap:wrap} .rail>*{flex:1 1 260px} }
.railbox{border:1px solid var(--line2);background:var(--card);padding:15px 17px 16px}
.railbox.rb-dark{background:var(--dark);border-color:var(--dark);color:var(--dink)}
.rb-h{font-weight:700;font-size:0.9412rem;margin-bottom:6px}
.rb-t{font-size:0.8529rem;line-height:1.5;color:var(--ink2);margin-bottom:10px}
.rb-dark .rb-t{color:var(--dink2)}
.rb-a{display:inline-flex;align-items:center;min-height:36px;font-weight:600;font-size:0.8529rem;color:var(--acc);
  border-bottom:2px solid var(--accB)}
.rb-dark .rb-a{color:var(--accB)}
.rb-a:hover{background:rgba(0,160,90,.1)}
/* фичер лишился третьей колонки (топ уехал в рельс) — обложка становится крупнее,
   лид получает всю оставшуюся ширину, провала между ними больше нет */
@media (min-width:1560px){
  .feature{grid-template-columns:minmax(320px,460px) minmax(0,1fr);gap:38px}
}

/* Край ленты: карточка, обрезанная краем экрана, читалась бы как обрубок.
   Маска растворяет ленту в фон на последних 56px — обрезка становится намеренной, а peek
   продолжает работать как аффорданс «дальше есть ещё». */
.trail{-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 56px,#000 calc(100% - 56px),transparent 100%);
  mask-image:linear-gradient(90deg,transparent 0,#000 56px,#000 calc(100% - 56px),transparent 100%)}
@media (max-width:640px){ .trail{-webkit-mask-image:none;mask-image:none} }

/* ── КОЛОНКИ ПО ФАКТУ МАТЕРИАЛОВ. Слепые медиа раскрывали бы зону «Обзоры»
   (4 карточки) на 7 колонок, а «Каталог» (8) — в ряд 7+1 с пустотой под ним.
   Правило (как .g1-.g6 хабов): колонок не больше, чем карточек; 8 = два ровных
   ряда по 4. Чистый :has — страницы статичны. */
@media (min-width:1560px){
  .picks:has(> :nth-child(4):last-child),.cat:has(> :nth-child(4):last-child){grid-template-columns:repeat(4,minmax(0,1fr))}
  .picks:has(> :nth-child(5):last-child),.cat:has(> :nth-child(5):last-child){grid-template-columns:repeat(5,minmax(0,1fr))}
  .picks:has(> :nth-child(8):last-child),.cat:has(> :nth-child(8):last-child){grid-template-columns:repeat(4,minmax(0,1fr))}
}
@media (min-width:1560px) and (max-width:1899px){
  .picks:has(> :nth-child(6):last-child),.cat:has(> :nth-child(6):last-child){grid-template-columns:repeat(3,minmax(0,1fr))}
}
/* Врез кейса: ₽-цифра длиннее долларовой — кегль ниже, маркер тот же */
.stat-num.mid{font:600 clamp(28px,2.6vw,40px)/1.05 "IBM Plex Mono",monospace;letter-spacing:-.03em}

.fpol{font-size:0.7647rem;color:inherit;opacity:.75;text-decoration:underline;margin-left:18px}
.fpol:hover{opacity:1}
.dnote a{color:inherit;text-decoration:underline}

/* ── k3-доб (B10, вне эталона): .footer .fcta ×3 — футер-партиал K3 размечает кнопку
   классом fcta (эталон article), скин главной/хаба несёт только .footer .cta;
   строки дословно из скина article.html. Общий для всех страниц скина — потому
   в хвосте файла, не в инлайне шаблонов. ── */
.footer .fcta{display:inline-flex;align-items:center;min-height:46px;padding:10px 18px;background:var(--accB);color:var(--dark);font-weight:600;gap:9px}
.footer .fcta .sq{width:8px;height:8px;background:var(--dark)}
.footer .fcta:hover{background:#fff}

/* ── k3-доб (B10): тег-облако футера — ВИДИМЫЙ сайтвайд-блок
   (прод несёт виджет /tag/* на каждой странице; скрытый дубль не копируем). Полоса
   grid-column:1/-1 под тремя колонками мачты; чипы — анатомия .k3-tags статьи в
   тёмном регистре футера; кегли rem (B8); заголовок — общий .fh. Дубль блока — в
   хвосте k3-article.css: цепочка article живёт без скина. ── */
.k3-ftags{grid-column:1/-1;border-top:1px solid rgba(255,255,255,.14);padding-top:24px}
.k3-ftags .fh{margin-bottom:12px}
.k3-ft-in{display:flex;flex-wrap:wrap;gap:8px}
.k3-ftags a{display:inline-flex;align-items:center;border:1px solid rgba(255,255,255,.18);padding:6px 11px;font-size:0.7647rem;color:#D6D9CE}
.k3-ftags a:hover{border-color:var(--accB);color:#fff}
