/* digest.css — раздел «ИИ-дайджест» (/blog/novosti/): хаб выпусков, страница выпуска
   и полоса навигации по выпуску внутри статьи-новости.
   Токены берутся из feed.css (хаб/выпуск) или case-redesign.css (страница новости) — своих :root нет.
   Разметку генерит _dev/gen-digest.js — руками не править ни хаб, ни выпуски, ни полосу в статьях.

   Компоновка (05.09.2026, образец — pachca.com/ai-digest): выпуск = ОДНОРОДНЫЙ нумерованный список
   «номер → заголовок → служебная строка → превью справа», без выделенного лида; правый рельс —
   Telegram и «главные цифры недели». Наше отличие от образца — в служебной строке стоит цифра-якорь
   материала (из `::: stat`) и прыжок «→ что делать»: POV «Считай, а не верь». */

/* компактный хиро раздела: заголовок короткий, подводка одной строкой */
.dg-hero{ margin-bottom:var(--sp-4); }
.dg-hero p{ font-size:16px; max-width:70ch; margin-top:12px; }

/* переход в раздел из лида другой страницы (/blog) */
.dg-xlink{ color:var(--ink); border-bottom:1px solid var(--line-2); white-space:nowrap; }
.dg-xlink:hover{ border-bottom-color:var(--ink); }

/* ── ШАПКА ВЫПУСКА (и на хабе, и на странице выпуска) ── */
.dg-issue{ border-top:1px solid var(--line-2); padding-top:var(--sp-4); }
.dg-issue + .dg-issue{ margin-top:var(--sp-6); }
.dg-issue.dg-single{ border-top:0; padding-top:0; }
.dg-ihead{ display:flex; align-items:baseline; gap:var(--sp-2); flex-wrap:wrap; margin-bottom:var(--sp-2); }
.dg-inum{ font-size:17px; font-weight:640; letter-spacing:-.015em; color:var(--ink); }
.dg-inum::after{ content:'·'; color:var(--faint); margin-left:var(--sp-2); }
.dg-idate{ font-size:17px; font-weight:640; letter-spacing:-.015em; color:var(--ink); }
.dg-idate a:hover{ color:var(--ink-2); }
.dg-iwd{ font-weight:450; color:var(--muted); }
.dg-iall{ margin-left:auto; font-size:13.5px; color:var(--muted); white-space:nowrap; }
.dg-iall:hover{ color:var(--ink); }

/* ── СТРОКА МАТЕРИАЛА: номер → заголовок + служебная строка → превью → шеврон ── */
.dg-rows{ display:flex; flex-direction:column; }
.dg-row{ position:relative; display:grid; grid-template-columns:22px minmax(0,1fr) 108px 14px;
         column-gap:var(--sp-3); align-items:center; padding:var(--sp-3) 0; border-top:1px solid var(--line);
         transition:background .16s var(--ease); }
.dg-row:first-child{ border-top:0; }
.dg-row:hover{ background:var(--surface); box-shadow:0 0 0 10px var(--surface); border-radius:10px; }
.dg-row:hover + .dg-row{ border-top-color:transparent; }
.dg-n{ font-size:13px; font-variant-numeric:tabular-nums; color:var(--faint); text-align:right;
       align-self:start; padding-top:2px; }

.dg-body{ min-width:0; }
.dg-body h3{ font-size:15.5px; line-height:1.35; font-weight:600; letter-spacing:-.015em; margin:0; }
.dg-body h3 a:hover{ color:var(--ink-2); }
.dg-meta{ display:flex; align-items:center; gap:var(--sp-2); flex-wrap:wrap; margin-top:6px;
          font-size:12px; color:var(--muted); }
/* цифра-якорь — главное число материала; расшифровка в <i> бледнее и не курсивом */
.dg-meta .dg-num{ color:var(--ink); font-weight:620; font-variant-numeric:tabular-nums; }
.dg-meta .dg-num i{ font-style:normal; font-weight:450; color:var(--muted); }
.dg-meta .dg-cat{ color:var(--ink-2); }
.dg-meta .dg-dot{ color:var(--faint); }
/* «→ что делать» — прыжок сразу в блок вывода внутри статьи. Этого нет ни у одного новостного дайджеста. */
.dg-meta .dg-why{ color:var(--ink-2); border-bottom:1px solid var(--line-2); }
.dg-meta .dg-why:hover{ color:var(--ink); border-bottom-color:var(--ink); }

/* превью — обложка новости 16:9, справа; шеврон — вся строка читается как ссылка */
.dg-th{ display:block; width:108px; aspect-ratio:16/9; border-radius:8px; overflow:hidden;
        border:1px solid var(--line); background:var(--surface-2); }
.dg-th img{ display:block; width:100%; height:100%; object-fit:cover; }
.dg-chev{ color:var(--faint); font-size:18px; line-height:1; text-align:right; }
.dg-row:hover .dg-chev{ color:var(--ink); }
.dg-more{ display:inline-block; margin-top:var(--sp-3); font-size:13.5px; color:var(--muted); }
.dg-more:hover{ color:var(--ink); }

/* ── ПРАВЫЙ РЕЛЬС: Telegram + цифры недели (сами .panel/.rrail — из feed.css) ── */
.dg-tg p{ font-size:13.5px; line-height:1.45; color:var(--muted); margin:0 0 var(--sp-3); }
.dg-tgbtn{ display:inline-flex; align-items:center; height:36px; padding:0 16px; border-radius:999px;
           background:var(--ink); color:var(--paper); font-size:13.5px; font-weight:560;
           transition:opacity .16s var(--ease); }
.dg-tgbtn:hover{ opacity:.85; color:var(--paper); }
.dg-week h3{ margin-bottom:var(--sp-2); }
.dg-wk{ display:grid; grid-template-columns:56px minmax(0,1fr); gap:var(--sp-3); align-items:start;
        padding:var(--sp-2) 0; border-top:1px solid var(--line); }
.dg-wk:first-of-type{ border-top:0; padding-top:0; }
.dg-wk img{ width:56px; aspect-ratio:1; object-fit:cover; border-radius:8px; border:1px solid var(--line);
            background:var(--surface-2); }
.dg-wkb{ min-width:0; display:block; }
.dg-wkt{ display:block; font-size:13px; line-height:1.35; font-weight:560; color:var(--ink);
         display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden; }
.dg-wk:hover .dg-wkt{ color:var(--ink-2); }
.dg-wkm{ display:block; margin-top:4px; font-size:11.5px; color:var(--muted); font-variant-numeric:tabular-nums; }
.dg-wkm i{ font-style:normal; }

/* ── АРХИВ ВЫПУСКОВ (низ хаба) ── */
.dg-arch{ border-top:1px solid var(--line-2); margin-top:var(--sp-8); padding-top:var(--sp-5); }
.dg-arch h2{ font-size:22px; font-weight:640; letter-spacing:-.022em; margin:0 0 var(--sp-5); }
.dg-mon{ margin-bottom:var(--sp-5); }
.dg-mon h3{ font-size:12px; font-weight:650; letter-spacing:.05em; text-transform:uppercase;
            color:var(--faint); margin:0 0 var(--sp-3); }
.dg-alist{ display:flex; flex-wrap:wrap; gap:var(--sp-2); }
.dg-alink{ font-size:13.5px; padding:6px 13px; border-radius:999px; border:1px solid var(--line);
           color:var(--ink-2); white-space:nowrap; transition:border-color .16s var(--ease); }
.dg-alink:hover{ border-color:var(--line-2); color:var(--ink); }
.dg-alink b{ color:var(--muted); font-weight:500; font-variant-numeric:tabular-nums; }

/* ── ПЕРЕХОД МЕЖДУ ВЫПУСКАМИ (низ страницы выпуска) ── */
.dg-inav{ display:flex; gap:var(--sp-4); margin-top:var(--sp-7); border-top:1px solid var(--line-2);
          padding-top:var(--sp-5); }
.dg-inav a{ flex:1 1 0; min-width:0; border:1px solid var(--line); border-radius:12px; padding:var(--sp-4);
            transition:border-color .16s var(--ease); }
.dg-inav a:hover{ border-color:var(--line-2); }
.dg-inav .dg-dir{ display:block; font-size:11.5px; letter-spacing:.04em; text-transform:uppercase;
                  color:var(--faint); margin-bottom:var(--sp-1); }
.dg-inav .dg-t{ display:block; font-size:14.5px; font-weight:580; color:var(--ink); }
.dg-inav .dg-nx{ text-align:right; }

/* ══ ВЕРТИКАЛЬНЫЙ РИТМ СТАТЬИ-НОВОСТИ ══
   По SPACING-STANDARD.md §1–§2: расстояние между блоками принадлежит КОНТЕЙНЕРУ и берётся
   ТОЛЬКО из шкалы --sp-*; сами блоки внешние margin не задают. Старый blog-render навешивал
   их поштучно и на глаз (`margin: 0 0 40px`, `margin: 26px 0 8px`) инлайновым <style>, который
   в документе идёт ПОСЛЕ ссылок на CSS — поэтому гасим повышенной специфичностью
   `.blog-wrap > .X` (0,2,0 против 0,1,0). Одно правило = одинаковые щели на всех 160 новостях,
   и добавление/удаление блока ритм не ломает. */
.blog-wrap > .blog-breadcrumb,
.blog-wrap > .blog-article-head,
.blog-wrap > .blog-tldr,
.blog-wrap > .dg-strip,
.blog-wrap > .blog-article,
.blog-wrap > .blog-source,
.blog-wrap > .dg-pn,
.blog-wrap > .blog-author,
.blog-wrap > .blog-related{ margin-top:0; margin-bottom:0; }

.blog-wrap > .blog-article-head,
.blog-wrap > .blog-tldr,
.blog-wrap > .dg-strip,
.blog-wrap > .blog-article,
.blog-wrap > .dg-pn,
.blog-wrap > .blog-author{ margin-top:var(--sp-6); }

/* Границы смысловых частей — на ступень крупнее: конец текста → служебное, конец статьи → «читайте также» */
.blog-wrap > .blog-source,
.blog-wrap > .blog-related{ margin-top:var(--sp-7); }

/* ── ПОЛОСА ВЫПУСКА ВНУТРИ СТАТЬИ-НОВОСТИ (живёт в .blog-wrap, токены оттуда же) ── */
.dg-strip{ border:1px solid var(--line); border-radius:12px; padding:var(--sp-3) var(--sp-4);
           display:flex; align-items:center; gap:var(--sp-3); flex-wrap:wrap; }
.dg-strip .dg-sl{ font-size:12.5px; color:var(--muted); }
.dg-strip .dg-sl a{ color:var(--ink-2); }
.dg-strip .dg-sl a:hover{ color:var(--ink); }
/* точки-номера: видно место в выпуске и можно прыгнуть в любой материал, а не только в соседний */
.dg-dots{ display:flex; align-items:center; gap:var(--sp-1); flex-wrap:wrap; }
.dg-dots a, .dg-dots span{ min-width:24px; height:24px; padding:0 5px; border-radius:7px; display:grid;
    place-items:center; font-size:11.5px; font-variant-numeric:tabular-nums; border:1px solid var(--line);
    color:var(--muted); transition:border-color .16s var(--ease), color .16s var(--ease); }
.dg-dots a:hover{ border-color:var(--ink); color:var(--ink); }
.dg-dots .dg-cur{ background:var(--ink); border-color:var(--ink); color:var(--paper); font-weight:650; }
.dg-strip .dg-sall{ margin-left:auto; font-size:12.5px; color:var(--muted); white-space:nowrap; }
.dg-strip .dg-sall:hover{ color:var(--ink); }

/* ── ЛИСТАНИЕ НОВОСТЕЙ (низ статьи) ── */
.dg-pn{ display:flex; gap:var(--sp-4); }
.dg-pn a{ flex:1 1 0; min-width:0; border:1px solid var(--line); border-radius:12px; padding:var(--sp-3) var(--sp-4);
          transition:border-color .16s var(--ease); }
.dg-pn a:hover{ border-color:var(--line-2); }
.dg-pn .dg-dir{ display:block; font-size:11.5px; letter-spacing:.04em; text-transform:uppercase;
                color:var(--faint); margin-bottom:var(--sp-1); }
.dg-pn .dg-t{ display:block; font-size:14px; font-weight:560; line-height:1.35; color:var(--ink); }
.dg-pn .dg-nx{ text-align:right; }

/* ── АДАПТИВ ── */
@media (max-width:620px){
  .dg-row{ grid-template-columns:18px minmax(0,1fr) 84px; column-gap:var(--sp-2); }
  .dg-row:hover{ box-shadow:none; background:none; }
  .dg-th{ width:84px; align-self:start; margin-top:3px; }
  .dg-chev{ display:none; }
  .dg-num i{ display:none; }   /* на узком экране расшифровку цифры не показываем — служебная строка в одну-две строки */
  .dg-iall{ margin-left:0; }
  .dg-inav, .dg-pn{ flex-direction:column; }
  .dg-inav .dg-nx, .dg-pn .dg-nx{ text-align:left; }
  .dg-strip .dg-sall{ margin-left:0; }
}
