/* ==========================================================================
   edo — «Документ с печатью». components.css — все компоненты дизайн-системы.
   Источник правил: edo/05-design.md. Подключается после tokens.css и base.css.
   Один класс — один стиль везде, вариации — модификаторами (--x), состояния — .is-x и aria-*.

   СПИСОК КОМПОНЕНТОВ И КЛАССОВ
   01 Значок            .ed-icon (--s 16px, --l 24px)
   02 Кнопка            .ed-btn (--primary «На сайт», --secondary «Обзор», --text «Сбросить», --dark на тёмном;
                        размеры --s, --l; --block на всю ширину)
   03 Плитка логотипа   .ed-logo (--s 32px, --l 64px) > .ed-logo__l (буква) + img.ed-logo__img; .is-loaded ставит site.js
   04 Печать с оценкой  .ed-seal (S 40px; --m 56px; --l 80/88px с .ed-seal__of «из 5»); svg.ed-seal-xl (__ring, __num, __of)
   05 Статус-строка     .ed-sign (--block четыре строки, --demo пунктир — только иллюстрация)
   06 Красный штамп     .ed-stamp (--tilt в заголовке блока)
   07 Рамка бланка      .ed-box (--light рамка line-strong, --flush без полей, --surface белый лист) > .ed-box__label; .ed-box__pad
   08 Графы             dl.ed-fields (--2 --3 --4 столбцы от 768px) > .ed-field (--wide, --calc) > dt + dd
   09 Цена и отметки    .ed-price (__note, __src, __free); .ed-yn (--no) «1С — есть»; .ed-badge (--success, --warning)
   10 Поля формы        .ed-form-label; .ed-input; .ed-select (--s); .ed-check (__input, __box, __text); .ed-chip (--radio, __n);
                        .ed-range
   11 Фильтры           .ed-filter (--fold: дополнительные группы по кнопке) > __head, __body, __group (--field, --search), __label, __chips, __more,
                        __foot; .ed-toolbar (__found, __filters, __more, __sort, __reset)
   12 Таблица рейтинга  .ed-table-wrap (контейнер ed-table: от 1200px второстепенная графа появляется по ширине таблицы — @container 880px и 1290px)
                        > table.ed-table (--compact; data-view=operators|transport|uc|marking|all|free; .is-calc)
                        > tbody.ed-table__item[data-row] > tr.ed-table__row + tr.ed-table__details
                        колонки: .ed-c-rank .ed-c-name .ed-c-score .ed-c-doc .ed-c-from .ed-c-year .ed-c-free .ed-c-roaming
                        .ed-c-int .ed-c-services .ed-c-whom .ed-c-act (+ .ed-c-opt у необязательных)
                        внутри: .ed-svc (__body, __name, __kind, __text), .ed-th-sort, .ed-acts (__row, __more), .ed-clamp
                        под таблицей: .ed-empty, .ed-table-foot (__more, __note)
   13 Карточка          .ed-card (--lead первая в тройке) > __head, __id, __name, __link, __kind, __seal, __cap, __text, __acts, __src;
                        .ed-trio — сетка тройки (6 + 3 + 3 колонки)
   14 Короткий рейтинг  .ed-mini > __title, __head, __list, __row, __no, __id, __name, __diff, __more, __fact, __acts, __all
   15 Калькулятор       .ed-calc (--wide: форма 4 колонки, результат 8) > __title, __form, __row, __docs, __num, __types,
                        __checks, __result, __best, __cond, __paid, __foot
   16 Схема в 4 шага    ol.ed-steps (--row: четыре колонки от 768px) > .ed-steps__item > __no, __body, __title, __text,
                        __foot (> details.__prep «Что подготовить» + a.__link)
   17 Четыре задачи     ul.ed-tasks (--4: четыре колонки от 1200px, по умолчанию две) > li > a.ed-tasks__cell (--wide)
                        > __task, __what, __meta, __go
   18 Список ссылок     ul.ed-links (--2 --3 --4) > li > a.ed-links__item > __title, __note, __n; группы: .ed-linkgroups > .ed-linkgroup
                        (__title, __sub, __all)
   19 Термины           dl.ed-terms (--3) > .ed-terms__item > dt + dd
   20 Карточка статьи   .ed-posts (--4) > article.ed-post (--feature) > __meta, __title, __link, __text, __foot
   21 Блок доверия      .ed-trust > __who (плитка с инициалами), __date, __criteria, __foot, __disclosure
   22 Длинный текст     .ed-prose (h2, h3, p, ul, ol, table, blockquote); .ed-note (--important); .ed-toc
   23 FAQ               .ed-faq > details.ed-faq__item > summary.ed-faq__q + .ed-faq__a
   24 Хлебные крошки    nav.ed-crumbs > ol > li
   25 Плюсы и минусы    .ed-proscons > ul.ed-proscons__list (--plus, --minus) > li
   26 Почему в подборке .ed-why > article.ed-why__item > __head, __name, __pass, __src, __acts
   27 Кто не вошёл      ul.ed-out > li.ed-out__row > __name, __why, __price
   28 Вкладки           .ed-tabs > [role=tablist].ed-tabs__list > button.ed-tabs__tab[aria-selected] ; .ed-tabs__panel
   29 Сравнение         .ed-cmpbar (панель снизу: __in, __count, __list, __item, __acts); table.ed-cmp (th.ed-cmp__key,
                        .ed-cmp__head, td.is-best, .ed-cmp__best); .ed-versus (шапка страницы сравнения, __side, __or)
   30 Блок оценки       .ed-score > __seal, __list, __row, __name, __weight, __bar (> i), __mark, __why, __formula
   31 Раскрытие         p.ed-disclosure — строка о вознаграждении под рейтингом
   32 Служебное         .ed-only-m (только до 768px), .ed-only-d (только от 768px), .ed-search (поле с кнопкой), .ed-404
   ========================================================================== */

/* ---------- 01 Значок ---------- */
.ed-icon { width: var(--ed-icon); height: var(--ed-icon); flex: none; fill: none; stroke: currentColor; stroke-width: var(--ed-icon-stroke); stroke-linecap: square; stroke-linejoin: miter; }
.ed-icon--s { width: var(--ed-icon-s); height: var(--ed-icon-s); stroke-width: var(--ed-icon-stroke-s); }
.ed-icon--l { width: var(--ed-icon-l); height: var(--ed-icon-l); }

/* ---------- 02 Кнопка ---------- */
.ed-btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-height: var(--ed-control-h); padding: 4px 16px; border: 1px solid transparent; border-radius: var(--ed-r-1); background: none; color: var(--ed-text); font: var(--ed-fw-bold) var(--ed-fs-ui)/1.2 var(--ed-font-body); text-align: center; text-decoration: none; cursor: pointer; transition: background-color var(--ed-t), border-color var(--ed-t), color var(--ed-t); }
.ed-btn:hover { color: var(--ed-text); text-decoration: none; }
.ed-btn--primary { background: var(--ed-accent); color: var(--ed-on-accent); }
.ed-btn--primary:hover { background: var(--ed-accent-deep); color: var(--ed-on-accent); }
.ed-btn--primary:active { background: var(--ed-accent-press); }
.ed-btn--secondary { border-color: var(--ed-line-ink); }
.ed-btn--secondary:hover { background: var(--ed-bg-2); }
.ed-btn--secondary:active { background: var(--ed-bg-3); }
.ed-btn--text { min-height: 0; padding: 0; border: 0; color: var(--ed-accent); font-weight: var(--ed-fw-medium); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; }
.ed-btn--text:hover { color: var(--ed-accent-deep); text-decoration: underline; text-decoration-thickness: 2px; }
.ed-btn--dark { background: var(--ed-on-dark); color: var(--ed-text); }
.ed-btn--dark:hover { background: var(--ed-bg-3); }
.ed-btn--s { min-height: var(--ed-control-h-s); padding: 2px 12px; font-size: var(--ed-fs-small); }
.ed-btn--l { min-height: var(--ed-control-h-l); padding-inline: 20px; }
.ed-btn--block { display: flex; width: 100%; }
.ed-btn:disabled, .ed-btn[aria-disabled="true"] { background: var(--ed-bg-3); border-color: transparent; color: var(--ed-text-muted); cursor: not-allowed; }
.ed-btn--secondary:disabled { background: none; border-color: var(--ed-line); color: var(--ed-text-faint); }
.ed-btn--text:disabled { background: none; color: var(--ed-text-faint); }
.ed-cmpbar .ed-btn:focus-visible { outline: var(--ed-focus-on-dark); }

/* ---------- 03 Плитка логотипа ---------- */
.ed-logo { position: relative; display: inline-grid; place-items: center; flex: none; width: var(--ed-logo-m); height: var(--ed-logo-m); border: var(--ed-border-strong); border-radius: var(--ed-r-1); background: var(--ed-surface); overflow: hidden; }
.ed-logo__l { font: var(--ed-fw-bold) 20px/1 var(--ed-font-heading); color: var(--ed-text-muted); text-transform: uppercase; }
.ed-logo__img { position: absolute; inset: 0; width: 28px; height: 28px; margin: auto; object-fit: contain; }
.ed-logo.is-loaded .ed-logo__l { visibility: hidden; }
.ed-logo--s { width: var(--ed-logo-s); height: var(--ed-logo-s); }
.ed-logo--s .ed-logo__l { font-size: 15px; }
.ed-logo--s .ed-logo__img { width: 20px; height: 20px; }
.ed-logo--l { width: var(--ed-logo-l); height: var(--ed-logo-l); }
.ed-logo--l .ed-logo__l { font-size: 28px; }
.ed-logo--l .ed-logo__img { width: 40px; height: 40px; }

/* ---------- 04 Печать с оценкой ---------- */
.ed-seal { position: relative; display: inline-grid; place-content: center; justify-items: center; gap: 3px; flex: none; width: var(--ed-seal-s); height: var(--ed-seal-s); border: var(--ed-border-seal); border-radius: var(--ed-r-round); color: var(--ed-accent); font: var(--ed-fw-bold) var(--ed-seal-fs-s)/1 var(--ed-font-heading); font-variant-numeric: tabular-nums; text-decoration: none; }
.ed-seal::before { content: ""; position: absolute; inset: var(--ed-seal-ring-gap); border: 1px solid currentColor; border-radius: inherit; }
a.ed-seal:hover { color: var(--ed-accent-deep); background: var(--ed-accent-tint); text-decoration: none; }
.ed-seal--m { width: var(--ed-seal-m); height: var(--ed-seal-m); font-size: var(--ed-seal-fs-m); }
.ed-seal--l { width: var(--ed-seal-l); height: var(--ed-seal-l); font-size: var(--ed-seal-fs-l); transform: rotate(var(--ed-seal-tilt)); }
.ed-seal__of { font: var(--ed-fw-regular) 11px/1 var(--ed-font-mono); letter-spacing: var(--ed-ls-caps); text-transform: uppercase; }
.ed-seal-xl { width: var(--ed-seal-xl); height: var(--ed-seal-xl); flex: none; color: var(--ed-accent); transform: rotate(var(--ed-seal-tilt)); }
.ed-seal-xl__ring { font: var(--ed-fw-bold) 8px var(--ed-font-mono); }
.ed-seal-xl__num { font: var(--ed-fw-bold) 34px var(--ed-font-heading); }
.ed-seal-xl__of { font: var(--ed-fw-regular) 8.5px var(--ed-font-mono); letter-spacing: 0.08em; }

/* ---------- 05 Статус-строка ---------- */
.ed-sign { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 2px 8px; max-width: 100%; padding: 4px 8px; border: var(--ed-border-sign); border-radius: var(--ed-r-2); color: var(--ed-accent); font: var(--ed-fw-regular) var(--ed-fs-num-s)/1.4 var(--ed-font-mono); }
.ed-sign b { font-weight: var(--ed-fw-bold); letter-spacing: var(--ed-ls-caps); text-transform: uppercase; }
.ed-sign a { color: inherit; }
.ed-sign a:hover { color: var(--ed-accent-deep); }
.ed-sign .ed-icon { width: 16px; height: 16px; stroke-width: var(--ed-icon-stroke-s); }
.ed-sign--block { display: grid; gap: 2px; padding: 8px 12px; }
.ed-sign--demo { border: var(--ed-border-demo); color: var(--ed-text-muted); }

/* ---------- 06 Красный штамп ---------- */
.ed-stamp { display: inline-block; padding: 2px 8px; border: var(--ed-border-stamp); border-radius: var(--ed-r-1); color: var(--ed-accent-2); font: var(--ed-fw-bold) var(--ed-fs-micro)/1.4 var(--ed-font-mono); letter-spacing: var(--ed-ls-caps); text-transform: uppercase; white-space: nowrap; }
.ed-stamp--tilt { transform: rotate(var(--ed-stamp-tilt)); }

/* ---------- 07 Рамка бланка ---------- */
.ed-box { --ed-box-bg: var(--ed-bg); position: relative; min-width: 0; padding: var(--ed-box-pad); border: var(--ed-border-ink); background: var(--ed-box-bg); }
.ed-box__label { position: absolute; top: 0; left: var(--ed-box-label-x); max-width: calc(100% - 2 * var(--ed-box-label-x)); margin: 0; padding: 0 6px; transform: translateY(-50%); background: var(--ed-box-bg); color: var(--ed-text); font: var(--ed-fw-regular) var(--ed-fs-label)/var(--ed-lh-label) var(--ed-font-mono); letter-spacing: var(--ed-ls-caps); text-transform: uppercase; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ed-box--light { border: var(--ed-border-strong); }
.ed-box--surface { --ed-box-bg: var(--ed-surface); }
.ed-box--flush { padding: 0; }
.ed-box__pad { padding: var(--ed-sp-16) var(--ed-box-pad); }
.ed-box--flush > .ed-box__pad:first-of-type { padding-top: var(--ed-sp-20); }

/* ---------- 08 Графы ---------- */
.ed-fields { display: grid; grid-template-columns: repeat(auto-fit, minmax(var(--ed-field-min), 1fr)); margin: 0; border: var(--ed-border-strong); background: var(--ed-surface); overflow: hidden; }
.ed-field { min-width: 0; margin: 0 -1px -1px 0; padding: var(--ed-field-pad); border-right: var(--ed-border-strong); border-bottom: var(--ed-border-strong); }
.ed-field--wide { grid-column: 1 / -1; }
.ed-field--calc { background: var(--ed-accent-tint); }
.ed-field > dt { margin: 0 0 4px; font: var(--ed-fw-regular) var(--ed-fs-label)/var(--ed-lh-label) var(--ed-font-mono); letter-spacing: var(--ed-ls-caps); text-transform: uppercase; color: var(--ed-text-muted); }
.ed-field > dd { margin: 0; font-size: var(--ed-fs-ui); line-height: var(--ed-lh-ui); overflow-wrap: anywhere; }
.ed-field--calc > dd a { color: var(--ed-accent-deep); }

/* ---------- 09 Цена, отметки «есть / нет», бейджи ---------- */
.ed-price { display: grid; gap: 2px; justify-items: start; min-width: 0; }
.ed-price__free { color: var(--ed-success); font-weight: var(--ed-fw-bold); }
.ed-price__note { color: var(--ed-text-muted); font-size: var(--ed-fs-micro); line-height: var(--ed-lh-micro); white-space: normal; overflow-wrap: anywhere; }
.ed-price__src { font-size: var(--ed-fs-micro); line-height: var(--ed-lh-micro); white-space: nowrap; }
.ed-table .ed-price__pack { display: none; }
.ed-yn { display: flex; align-items: center; gap: 4px; font-size: var(--ed-fs-small); line-height: 1.5; white-space: nowrap; color: var(--ed-success); }
.ed-yn__k { min-width: 30px; color: var(--ed-text); }
.ed-yn--no { color: var(--ed-text-muted); }
.ed-yn-more { display: block; color: var(--ed-text-muted); font-size: var(--ed-fs-micro); line-height: var(--ed-lh-micro); }
.ed-badge { display: inline-flex; align-items: center; height: 22px; padding: 0 6px; border: 1px solid var(--ed-line-strong); border-radius: var(--ed-r-1); color: var(--ed-text); font: var(--ed-fw-medium) var(--ed-fs-micro)/1 var(--ed-font-body); white-space: nowrap; }
.ed-badge--success { border-color: var(--ed-success); color: var(--ed-success); }
.ed-badge--warning { border-color: var(--ed-warning); color: var(--ed-warning); }
.ed-dash { color: var(--ed-text-muted); }

/* ---------- 10 Поля формы ---------- */
.ed-form-label { display: block; margin-bottom: 6px; padding: 0; font: var(--ed-fw-bold) 13px/1.3 var(--ed-font-body); }
.ed-input, .ed-select { width: 100%; height: var(--ed-control-h); padding: 0 12px; border: var(--ed-border-strong); border-radius: var(--ed-r-1); background: var(--ed-surface); color: var(--ed-text); font-size: var(--ed-fs-input); line-height: 1.2; transition: border-color var(--ed-t); }
.ed-input:hover, .ed-select:hover { border-color: var(--ed-line-ink); }
.ed-input[aria-invalid="true"] { border: 2px solid var(--ed-error); }
.ed-input::placeholder { color: var(--ed-text-muted); }
.ed-input[type="search"] { -webkit-appearance: none; appearance: none; }
.ed-select { appearance: none; padding-right: 36px; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231A1A1A' stroke-width='2' stroke-linecap='square'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 10px center; background-size: 16px; }
.ed-select--s { height: var(--ed-control-h-s); }
.ed-form-error { display: flex; align-items: center; gap: 4px; margin-top: 4px; color: var(--ed-error); font-size: var(--ed-fs-small); }

.ed-check { position: relative; display: inline-flex; align-items: center; gap: 8px; min-height: 28px; font-size: var(--ed-fs-ui); line-height: 1.3; cursor: pointer; }
.ed-check__input { position: absolute; left: 0; top: 50%; width: 20px; height: 20px; margin: -10px 0 0; clip-path: inset(50%); }
.ed-check__box { display: grid; place-items: center; flex: none; width: 20px; height: 20px; border: var(--ed-border-ink); border-radius: var(--ed-r-0); background: var(--ed-surface); color: var(--ed-surface); transition: background-color var(--ed-t), border-color var(--ed-t); }
.ed-check__box .ed-icon { width: 16px; height: 16px; stroke-width: 2.5; }
.ed-check__input:checked + .ed-check__box { background: var(--ed-accent); border-color: var(--ed-accent); color: var(--ed-on-accent); }
.ed-check__input:focus-visible + .ed-check__box { outline: var(--ed-focus); outline-offset: var(--ed-focus-offset); }
.ed-check__input:disabled + .ed-check__box { background: var(--ed-bg-3); border-color: var(--ed-line); }
.ed-check__input:disabled ~ .ed-check__text { color: var(--ed-text-faint); }
.ed-check:hover .ed-check__text { text-decoration: underline; }

.ed-chip { display: inline-flex; align-items: center; gap: 6px; min-height: var(--ed-chip-h); padding: 2px 12px; border: var(--ed-border-strong); border-radius: var(--ed-r-1); background: var(--ed-surface); color: var(--ed-text); font: var(--ed-fw-medium) var(--ed-fs-ui)/1.2 var(--ed-font-body); text-align: left; cursor: pointer; transition: background-color var(--ed-t), border-color var(--ed-t), color var(--ed-t); }
.ed-chip:hover { background: var(--ed-bg-2); border-color: var(--ed-line-ink); }
.ed-chip > .ed-icon { display: none; margin-left: -4px; }
.ed-chip__n { color: var(--ed-text-muted); font: var(--ed-fw-regular) var(--ed-fs-num-s)/1 var(--ed-font-mono); }
.ed-chip[aria-pressed="true"], .ed-chip--radio:has(input:checked) { background: var(--ed-accent-tint); border-color: var(--ed-accent); color: var(--ed-accent-deep); }
.ed-chip[aria-pressed="true"] > .ed-icon, .ed-chip--radio:has(input:checked) > .ed-icon { display: block; }
.ed-chip[aria-pressed="true"] .ed-chip__n { color: var(--ed-accent-deep); }
.ed-chip--radio { position: relative; }
.ed-chip--radio input { position: absolute; left: 0; top: 0; width: 1px; height: 1px; margin: 0; clip-path: inset(50%); }
.ed-chip--radio:has(input:focus-visible) { outline: var(--ed-focus); outline-offset: var(--ed-focus-offset); }

.ed-range { width: 100%; height: 28px; margin: 0; background: none; appearance: none; -webkit-appearance: none; cursor: pointer; }
.ed-range::-webkit-slider-runnable-track { height: 2px; background: var(--ed-line-ink); }
.ed-range::-moz-range-track { height: 2px; background: var(--ed-line-ink); }
.ed-range::-webkit-slider-thumb { -webkit-appearance: none; width: 16px; height: 24px; margin-top: -11px; border: 0; border-radius: var(--ed-r-0); background: var(--ed-accent); }
.ed-range::-moz-range-thumb { width: 16px; height: 24px; border: 0; border-radius: var(--ed-r-0); background: var(--ed-accent); }
.ed-range:hover::-webkit-slider-thumb { background: var(--ed-accent-deep); }
.ed-range:hover::-moz-range-thumb { background: var(--ed-accent-deep); }

.ed-search { display: flex; gap: 8px; }
.ed-search .ed-input { flex: 1; min-width: 0; }

/* ---------- 11 Фильтры и панель над таблицей ---------- */
.ed-filter { display: none; }
.ed-filter.is-open { position: fixed; inset: 0; z-index: var(--ed-z-menu); display: flex; flex-direction: column; background: var(--ed-surface); }
.ed-filter__head { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: var(--ed-mast-h); padding: 0 var(--ed-gutter); border-bottom: var(--ed-rule); }
.ed-filter__title { font: var(--ed-fw-bold) var(--ed-fs-h3)/1.2 var(--ed-font-heading); }
.ed-filter__body { flex: 1; display: grid; align-content: start; gap: 20px; padding: 20px var(--ed-gutter); overflow-y: auto; overscroll-behavior: contain; }
.ed-filter__more { display: grid; gap: 20px; }
.ed-filter__group { min-width: 0; margin: 0; padding: 0; border: 0; }
.ed-filter__label { display: block; margin-bottom: 8px; padding: 0; }
.ed-filter__chips { display: flex; flex-wrap: wrap; gap: 8px; }
.ed-filter__chips .ed-check { min-height: 40px; margin-right: 8px; }
.ed-filter__foot { padding: 12px var(--ed-gutter) 16px; border-top: var(--ed-border-ink); }

.ed-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 16px; }
.ed-toolbar__found { margin-right: auto; font-size: var(--ed-fs-ui); line-height: 1.3; }
.ed-toolbar__found b { font-size: 17px; }
.ed-toolbar__more { display: none; }
.ed-toolbar__sort { display: flex; align-items: center; gap: 8px; flex: 1 1 100%; font-size: var(--ed-fs-small); color: var(--ed-text-muted); }
.ed-toolbar__sort .ed-select { flex: 1; min-width: 0; }
.ed-toolbar .ed-btn--text { min-height: 44px; }

/* ---------- 12 Таблица рейтинга ---------- */
.ed-table-wrap { min-width: 0; container: ed-table / inline-size; }
.ed-table { --ed-cell: block; display: block; width: 100%; border-collapse: separate; border-spacing: 0; font-size: var(--ed-fs-table); line-height: var(--ed-lh-table); }
.ed-table thead { display: none; }
.ed-table__item { display: block; padding: var(--ed-sp-16) 0; border-bottom: var(--ed-border-ink); }
.ed-box--flush .ed-table__item { padding-inline: var(--ed-box-pad); }
.ed-table__row { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); padding: 0 1px 1px 0; }
.ed-table__row > td { display: var(--ed-cell); min-width: 0; padding: 0; text-align: left; vertical-align: top; }
.ed-table .ed-c-opt, .ed-table .ed-c-year { display: none; }

/* какие колонки показывает вид (data-view): на телефоне — все графы вида */
.ed-table[data-view="operators"] :is(.ed-c-doc, .ed-c-from, .ed-c-roaming, .ed-c-int, .ed-c-free),
.ed-table[data-view="transport"] :is(.ed-c-doc, .ed-c-from, .ed-c-roaming, .ed-c-int, .ed-c-free),
.ed-table[data-view="free"] :is(.ed-c-free, .ed-c-doc, .ed-c-from, .ed-c-roaming, .ed-c-int),
.ed-table[data-view="uc"] :is(.ed-c-from, .ed-c-services, .ed-c-whom, .ed-c-free),
.ed-table[data-view="marking"] :is(.ed-c-from, .ed-c-services, .ed-c-int, .ed-c-free),
.ed-table[data-view="all"] :is(.ed-c-from, .ed-c-whom, .ed-c-free),
.ed-table.is-calc:is([data-view="operators"], [data-view="transport"], [data-view="free"]) .ed-c-year { display: var(--ed-cell); }

/* карточка на телефоне */
.ed-table .ed-c-rank { grid-column: 1 / -1; grid-row: 1; margin-bottom: 8px; color: var(--ed-text-muted); font: var(--ed-fw-regular) var(--ed-fs-num-s)/1.4 var(--ed-font-mono); }
.ed-table .ed-c-name { grid-column: 1 / -1; grid-row: 2; padding: 0 72px 12px 0; }
.ed-table .ed-c-score { grid-column: 2; grid-row: 2; justify-self: end; display: grid; justify-items: center; gap: 4px; align-content: start; }
.ed-table .ed-c-score .ed-seal { width: var(--ed-seal-m); height: var(--ed-seal-m); font-size: var(--ed-seal-fs-m); }
.ed-table__cap { font: var(--ed-fw-regular) var(--ed-fs-label)/1 var(--ed-font-mono); letter-spacing: var(--ed-ls-caps); text-transform: uppercase; color: var(--ed-text-muted); }
.ed-table__row > td[data-label] { margin: 0 -1px -1px 0; padding: var(--ed-field-pad); border: var(--ed-border-strong); background: var(--ed-surface); overflow-wrap: anywhere; }
.ed-table__row > td[data-label]::before { content: attr(data-label); display: block; margin-bottom: 4px; font: var(--ed-fw-regular) var(--ed-fs-label)/var(--ed-lh-label) var(--ed-font-mono); letter-spacing: var(--ed-ls-caps); text-transform: uppercase; color: var(--ed-text-muted); }
.ed-table :is(.ed-c-free, .ed-c-services, .ed-c-whom, .ed-c-year) { grid-column: 1 / -1; }
.ed-table:is([data-view="uc"], [data-view="marking"], [data-view="all"]) :is(.ed-c-from, .ed-c-int) { grid-column: 1 / -1; }
.ed-table td.ed-c-year { background: var(--ed-accent-tint) !important; font: var(--ed-fw-bold) 16px/1.35 var(--ed-font-mono); word-spacing: var(--ed-ws-num); }
.ed-table td.ed-c-year .ed-price__note { display: block; font: var(--ed-fw-regular) var(--ed-fs-micro)/var(--ed-lh-micro) var(--ed-font-body); word-spacing: normal; }
.ed-table .ed-c-act { grid-column: 1 / -1; margin-top: 12px; }
.ed-table .ed-c-roaming { font-size: var(--ed-fs-small); line-height: var(--ed-lh-small); }
.ed-table :is(.ed-c-free, .ed-c-services, .ed-c-whom) { font-size: var(--ed-fs-small); line-height: var(--ed-lh-small); }

.ed-svc { display: flex; align-items: flex-start; gap: 12px; min-width: 0; }
.ed-svc__body { display: grid; gap: 2px; min-width: 0; }
.ed-svc__name { justify-self: start; color: var(--ed-text); font-size: 17px; font-weight: var(--ed-fw-bold); line-height: 1.25; text-decoration: none; overflow-wrap: anywhere; }
.ed-svc__name:hover { color: var(--ed-accent-deep); text-decoration: underline; }
.ed-svc__kind { display: none; color: var(--ed-text-muted); font: var(--ed-fw-regular) var(--ed-fs-num-s)/1.4 var(--ed-font-mono); }
.ed-svc__text { color: var(--ed-text-muted); font-size: var(--ed-fs-small); line-height: var(--ed-lh-small); }
.ed-clamp { display: -webkit-box; -webkit-box-orient: vertical; overflow: hidden; }

.ed-acts { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 8px; align-items: center; }
.ed-acts .ed-btn--s { min-height: 44px; font-size: var(--ed-fs-ui); }
.ed-acts__row { grid-column: 1 / -1; display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.ed-acts__more { gap: 2px; min-height: 28px; font-size: var(--ed-fs-small); white-space: nowrap; }
.ed-acts__more[aria-expanded="true"] .ed-icon { transform: rotate(180deg); }
.ed-acts .ed-check { font-size: var(--ed-fs-small); }

.ed-table__details { display: block; }
.ed-table__details > td { display: block; padding: 12px 0 0; }
.ed-table__details .ed-fields { margin-bottom: 8px; }
.ed-table__formula { color: var(--ed-text-muted); font: var(--ed-fw-regular) var(--ed-fs-num-s)/1.5 var(--ed-font-mono); overflow-wrap: anywhere; }

.ed-empty { display: grid; justify-items: start; gap: 8px; padding: 24px var(--ed-box-pad); border-bottom: var(--ed-border-ink); }
.ed-empty__title { font: var(--ed-fw-bold) var(--ed-fs-h3)/1.25 var(--ed-font-heading); }
.ed-table-foot { display: grid; gap: 12px; justify-items: start; padding: var(--ed-sp-16) var(--ed-box-pad); }
.ed-table-foot__more { width: 100%; }
.ed-table-foot__row { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 16px; width: 100%; }
.ed-table-foot__all { font-weight: var(--ed-fw-medium); font-size: var(--ed-fs-ui); }
.ed-disclosure { max-width: 96ch; color: var(--ed-text-muted); font-size: var(--ed-fs-micro); line-height: 1.45; }

/* ---------- 13 Карточка компании ---------- */
.ed-card { display: flex; flex-direction: column; gap: 12px; padding: var(--ed-sp-16); transition: background-color var(--ed-t); }
.ed-card:hover { background: var(--ed-bg-2); --ed-box-bg: var(--ed-bg-2); }
.ed-card__head { display: flex; align-items: flex-start; gap: 12px; min-width: 0; }
.ed-card__id { flex: 1; min-width: 0; }
.ed-card__name { font: var(--ed-fw-bold) 17px/1.25 var(--ed-font-body); letter-spacing: 0; }
.ed-card__link { color: var(--ed-text); text-decoration: none; }
.ed-card__link::after { content: ""; position: absolute; inset: 0; }
.ed-card__link:hover { color: var(--ed-accent-deep); text-decoration: underline; }
.ed-card__kind { margin-top: 2px; color: var(--ed-text-muted); font: var(--ed-fw-regular) var(--ed-fs-num-s)/1.4 var(--ed-font-mono); }
.ed-card__seal { display: grid; justify-items: center; gap: 4px; flex: none; }
.ed-card__cap { font: var(--ed-fw-regular) var(--ed-fs-label)/1 var(--ed-font-mono); letter-spacing: var(--ed-ls-caps); text-transform: uppercase; color: var(--ed-text-muted); }
.ed-card__text { color: var(--ed-text); font-size: var(--ed-fs-small); line-height: var(--ed-lh-small); }
.ed-card__acts { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 8px; margin-top: auto; }
.ed-card__acts .ed-btn, .ed-card__src a { position: relative; z-index: 1; }
.ed-card__src { color: var(--ed-text-muted); font-size: var(--ed-fs-micro); line-height: var(--ed-lh-micro); }
.ed-trio { display: grid; gap: var(--ed-gap); }
.ed-trio > * { min-width: 0; }

/* ---------- 14 Короткий рейтинг ---------- */
.ed-mini { display: grid; align-content: start; gap: 12px; }
.ed-mini__title { font-size: var(--ed-fs-h3); line-height: var(--ed-lh-h3); }
.ed-mini__title a { color: var(--ed-text); text-decoration: none; }
.ed-mini__title a:hover { color: var(--ed-accent-deep); text-decoration: underline; }
.ed-mini__head { display: flex; justify-content: space-between; gap: 12px; padding-bottom: 6px; border-bottom: var(--ed-border-ink); }
.ed-mini__row { display: grid; grid-template-columns: 16px var(--ed-logo-s) minmax(0, 1fr) var(--ed-seal-s); gap: 8px 10px; align-items: start; padding: 12px 0; border-bottom: var(--ed-border); }
.ed-mini__no { padding-top: 8px; color: var(--ed-text-muted); }
.ed-mini__id { display: grid; gap: 2px; min-width: 0; }
.ed-mini__name { justify-self: start; color: var(--ed-text); font-weight: var(--ed-fw-bold); line-height: 1.3; text-decoration: none; overflow-wrap: anywhere; }
.ed-mini__name:hover { color: var(--ed-accent-deep); text-decoration: underline; }
.ed-mini__diff { color: var(--ed-text-muted); font-size: var(--ed-fs-small); line-height: var(--ed-lh-small); }
.ed-mini__more { grid-column: 2 / -1; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 12px; }
.ed-mini__fact { display: flex; align-items: baseline; gap: 6px; }
.ed-mini__acts { display: flex; gap: 6px; }
.ed-mini__all { font-weight: var(--ed-fw-medium); font-size: var(--ed-fs-ui); }

/* ---------- 15 Калькулятор ---------- */
.ed-calc { display: grid; gap: var(--ed-sp-16); align-content: start; }
.ed-calc__title { font-size: var(--ed-fs-h3); line-height: var(--ed-lh-h3); }
.ed-calc__form { display: grid; gap: 14px; align-content: start; min-width: 0; }
.ed-calc__row { min-width: 0; margin: 0; padding: 0; border: 0; }
.ed-calc__docs { display: grid; grid-template-columns: 112px minmax(0, 1fr); gap: 12px; align-items: center; }
.ed-calc__num { height: var(--ed-control-h-l); padding: 0 10px; font: var(--ed-fw-bold) var(--ed-fs-num-l)/1 var(--ed-font-mono); letter-spacing: var(--ed-ls-num); }
.ed-calc__types { display: grid; gap: 8px; }
.ed-calc__checks { display: grid; gap: 6px; }
.ed-calc__result { display: grid; gap: 6px; min-width: 0; padding: 12px; border: var(--ed-border-strong); background: var(--ed-surface); }
.ed-calc__best { font-weight: var(--ed-fw-bold); font-size: 17px; line-height: 1.3; overflow-wrap: anywhere; }
.ed-calc__cond { color: var(--ed-text-muted); }
.ed-calc__paid { font-size: var(--ed-fs-ui); line-height: 1.4; }
.ed-calc__foot { display: grid; gap: 8px; margin-top: 6px; padding-top: 10px; border-top: var(--ed-rule-double); }

/* ---------- 16 Схема в 4 шага ---------- */
.ed-steps { display: grid; counter-reset: ed-step; }
.ed-steps__item { position: relative; display: grid; grid-template-columns: var(--ed-step-no) minmax(0, 1fr); gap: 0 12px; padding-bottom: 16px; }
.ed-steps__item:last-child { padding-bottom: 0; }
.ed-steps__item::before { content: ""; position: absolute; left: calc(var(--ed-step-no) / 2); top: var(--ed-step-no); bottom: 0; border-left: var(--ed-border-ink); }
.ed-steps__item:last-child::before { content: none; }
.ed-steps__no { position: relative; display: grid; place-items: center; width: var(--ed-step-no); height: var(--ed-step-no); border: var(--ed-border-ink); background: var(--ed-surface); font: var(--ed-fw-bold) 14px/1 var(--ed-font-mono); }
.ed-steps__body { display: grid; gap: 4px; min-width: 0; padding-top: 3px; }
.ed-steps__title { font: var(--ed-fw-bold) var(--ed-fs-h4)/1.3 var(--ed-font-body); letter-spacing: 0; }
.ed-steps__text { font-size: var(--ed-fs-small); line-height: var(--ed-lh-small); }
.ed-steps__prep > summary { display: inline-flex; align-items: center; gap: 2px; min-height: 28px; color: var(--ed-text-muted); font-size: var(--ed-fs-small); list-style: none; text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; }
.ed-steps__prep > summary::-webkit-details-marker { display: none; }
.ed-steps__prep > summary:hover { color: var(--ed-text); }
.ed-steps__prep[open] > summary .ed-icon { transform: rotate(180deg); }
.ed-steps__prep ul { display: grid; gap: 4px; margin: 2px 0 6px; font-size: var(--ed-fs-small); line-height: var(--ed-lh-small); }
.ed-steps__prep li { position: relative; padding-left: 22px; }
.ed-steps__prep li::before { content: ""; position: absolute; left: 0; top: 3px; width: 13px; height: 13px; border: var(--ed-border-strong); background: var(--ed-surface); }
.ed-steps__foot { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0 16px; }
.ed-steps__prep[open] { flex-basis: 100%; }
.ed-steps__link { font-size: var(--ed-fs-small); font-weight: var(--ed-fw-medium); }

/* ---------- 17 Четыре задачи ---------- */
.ed-tasks { display: grid; border: var(--ed-border-ink); background: var(--ed-surface); overflow: hidden; }
.ed-tasks > li { min-width: 0; margin: 0 -1px -1px 0; border-right: var(--ed-border-strong); border-bottom: var(--ed-border-strong); }
.ed-tasks__cell { display: grid; grid-template-columns: var(--ed-icon-l) minmax(0, 1fr) var(--ed-icon); gap: 2px 12px; align-items: start; height: 100%; min-height: 64px; padding: 12px var(--ed-sp-16); color: var(--ed-text); text-decoration: none; transition: background-color var(--ed-t); }
.ed-tasks__cell:hover { background: var(--ed-bg-2); color: var(--ed-text); text-decoration: none; }
.ed-tasks__cell > .ed-icon--l { grid-row: 1 / 4; color: var(--ed-accent); }
.ed-tasks__task { grid-column: 2; font-weight: var(--ed-fw-bold); font-size: 17px; line-height: 1.25; }
.ed-tasks__cell:hover .ed-tasks__task { text-decoration: underline; }
.ed-tasks__what { grid-column: 2; color: var(--ed-text-muted); font-size: var(--ed-fs-small); line-height: var(--ed-lh-small); }
.ed-tasks__meta { grid-column: 2; margin-top: 4px; font-size: var(--ed-fs-small); line-height: var(--ed-lh-small); }
.ed-tasks__meta b { color: var(--ed-accent); }
.ed-tasks__go { grid-column: 3; grid-row: 1 / 4; align-self: center; color: var(--ed-accent); }

/* ---------- 18 Список ссылок и группы ---------- */
.ed-links { display: grid; gap: 0 var(--ed-gap); border-top: var(--ed-border); }
.ed-links > li { min-width: 0; border-bottom: var(--ed-border); }
.ed-links__item { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 0 12px; align-items: baseline; min-height: 44px; padding: 10px 0; color: var(--ed-text); text-decoration: none; transition: background-color var(--ed-t); }
.ed-links__item:hover { background: var(--ed-bg-2); color: var(--ed-text); text-decoration: none; }
.ed-links__title { font-weight: var(--ed-fw-medium); line-height: 1.3; }
.ed-links__item:hover .ed-links__title { color: var(--ed-accent-deep); text-decoration: underline; }
.ed-links__note { grid-column: 1; color: var(--ed-text-muted); font-size: var(--ed-fs-small); line-height: var(--ed-lh-small); }
.ed-links__n { grid-column: 2; grid-row: 1; color: var(--ed-text-muted); font: var(--ed-fw-regular) var(--ed-fs-num-s)/1.4 var(--ed-font-mono); white-space: nowrap; }
.ed-linkgroups { display: grid; gap: 28px var(--ed-gap); }
.ed-linkgroup { display: grid; align-content: start; gap: 8px; min-width: 0; }
.ed-linkgroup__title { font: var(--ed-fw-bold) var(--ed-fs-h4)/1.3 var(--ed-font-body); letter-spacing: 0; }
.ed-linkgroup__title a { color: var(--ed-text); text-decoration: none; }
.ed-linkgroup__title a:hover { color: var(--ed-accent-deep); text-decoration: underline; }
.ed-linkgroup__sub { color: var(--ed-text-muted); font-size: var(--ed-fs-small); line-height: var(--ed-lh-small); }
.ed-linkgroup__all { justify-self: start; font-size: var(--ed-fs-small); font-weight: var(--ed-fw-medium); }

/* ---------- 19 Термины ---------- */
.ed-terms { display: grid; gap: 20px var(--ed-gap); }
.ed-terms__item { min-width: 0; padding-left: 14px; border-left: 2px solid var(--ed-line-ink); }
.ed-terms__item > dt { font: var(--ed-fw-bold) var(--ed-fs-h3)/var(--ed-lh-h3) var(--ed-font-heading); }
.ed-terms__item > dt a { color: var(--ed-text); text-decoration: none; }
.ed-terms__item > dt a:hover { color: var(--ed-accent-deep); text-decoration: underline; }
.ed-terms__item > dd { margin-top: 4px; font: var(--ed-fw-regular) var(--ed-fs-body)/1.45 var(--ed-font-heading); }

/* ---------- 20 Карточка статьи ---------- */
.ed-posts { display: grid; gap: 0 var(--ed-gap); }
.ed-post { position: relative; display: grid; align-content: start; gap: 6px; min-width: 0; padding: 12px 0 16px; border-top: var(--ed-rule); transition: background-color var(--ed-t); }
.ed-post:hover { background: var(--ed-bg-2); }
.ed-post__title { font: var(--ed-fw-bold) var(--ed-fs-h3)/var(--ed-lh-h3) var(--ed-font-heading); }
.ed-post__link { color: var(--ed-text); text-decoration: none; }
.ed-post__link::after { content: ""; position: absolute; inset: 0; }
.ed-post__link:hover { color: var(--ed-accent-deep); text-decoration: underline; }
.ed-post__text { font-size: var(--ed-fs-ui); line-height: 1.45; }
.ed-post__foot { color: var(--ed-text-muted); font-size: var(--ed-fs-micro); line-height: var(--ed-lh-micro); }
.ed-post--feature .ed-post__title { font-size: var(--ed-fs-h2); line-height: var(--ed-lh-h2); }

/* ---------- 21 Блок доверия ---------- */
.ed-trust { display: grid; gap: var(--ed-sp-16); }
.ed-trust__who { display: flex; align-items: center; gap: 10px; }
.ed-trust__date { display: block; margin-bottom: 2px; }
.ed-trust__criteria { display: grid; gap: 2px; }
.ed-trust__criteria li { display: flex; justify-content: space-between; gap: 12px; }
.ed-trust__foot { display: grid; gap: 12px; align-items: start; }
.ed-trust .ed-field > dd { display: grid; gap: 6px; }

/* ---------- 22 Длинный текст ---------- */
.ed-prose { max-width: var(--ed-measure); font-size: var(--ed-fs-prose); line-height: var(--ed-lh-prose); }
.ed-prose > :first-child { margin-top: 0; }
.ed-prose h2 { margin: 40px 0 12px; }
.ed-prose h3 { margin: 28px 0 8px; }
.ed-prose p, .ed-prose ul, .ed-prose ol, .ed-prose .ed-table-scroll, .ed-prose blockquote, .ed-prose .ed-note { margin: 0 0 16px; }
.ed-prose ul > li, .ed-prose ol > li { position: relative; margin-bottom: 8px; padding-left: 28px; }
.ed-prose ul > li::before { content: "—"; position: absolute; left: 0; color: var(--ed-text-muted); }
.ed-prose ol { counter-reset: ed-ol; }
.ed-prose ol > li { counter-increment: ed-ol; }
.ed-prose ol > li::before { content: counter(ed-ol) "."; position: absolute; left: 0; font-family: var(--ed-font-mono); }
.ed-prose blockquote { padding-left: 16px; border-left: 2px solid var(--ed-line-ink); font: var(--ed-fw-regular) var(--ed-fs-quote)/var(--ed-lh-quote) var(--ed-font-heading); }
.ed-table-scroll { overflow-x: auto; }
.ed-prose table { width: 100%; font-size: var(--ed-fs-ui); line-height: 1.4; }
.ed-prose caption { padding-bottom: 6px; text-align: left; font: var(--ed-fw-regular) var(--ed-fs-label)/var(--ed-lh-label) var(--ed-font-mono); letter-spacing: var(--ed-ls-caps); text-transform: uppercase; color: var(--ed-text-muted); }
.ed-prose th, .ed-prose td { padding: 8px 12px; border: var(--ed-border-strong); vertical-align: top; }
.ed-prose th { background: var(--ed-bg-2); font-weight: var(--ed-fw-bold); font-size: var(--ed-fs-small); }
.ed-prose td.ed-num { text-align: right; }
.ed-note { position: relative; padding: 18px var(--ed-sp-16) var(--ed-sp-16); border: var(--ed-border-strong); font-size: var(--ed-fs-body); line-height: var(--ed-lh-body); }
.ed-note > :last-child { margin-bottom: 0; }
.ed-note--important { border: 0; border-left: var(--ed-bw-mark) solid var(--ed-accent-2); background: var(--ed-accent-2-tint); }
.ed-note--important .ed-stamp { margin-bottom: 8px; }
.ed-toc { padding: 18px var(--ed-sp-16) var(--ed-sp-16); }
.ed-toc ol { display: grid; gap: 6px; font-size: var(--ed-fs-ui); line-height: 1.35; }
.ed-toc a { color: var(--ed-text); }
.ed-toc a:hover, .ed-toc a[aria-current] { color: var(--ed-accent-deep); }

/* ---------- 23 FAQ ---------- */
.ed-faq { max-width: calc(var(--ed-measure) + 8ch); border-top: var(--ed-rule); }
.ed-faq__item { border-bottom: var(--ed-border); }
.ed-faq__q { display: flex; align-items: center; justify-content: space-between; gap: 16px; min-height: 52px; padding: 12px 0; font-weight: var(--ed-fw-bold); font-size: var(--ed-fs-h4); line-height: 1.35; list-style: none; transition: background-color var(--ed-t); }
.ed-faq__q::-webkit-details-marker { display: none; }
.ed-faq__q:hover { background: var(--ed-bg-2); }
.ed-faq__q .ed-icon--minus, .ed-faq__item[open] .ed-faq__q .ed-icon--plus { display: none; }
.ed-faq__item[open] .ed-faq__q .ed-icon--minus { display: block; }
.ed-faq__a { max-width: var(--ed-measure); padding: 0 0 16px; }
.ed-faq__a p + p { margin-top: 8px; }

/* ---------- 24 Хлебные крошки ---------- */
.ed-crumbs { padding-top: var(--ed-sp-16); color: var(--ed-text-muted); font-size: 13px; line-height: 1.5; }
.ed-crumbs ol { display: flex; flex-wrap: wrap; gap: 0 6px; }
.ed-crumbs li + li::before { content: "/"; margin-right: 6px; }
.ed-crumbs a { color: var(--ed-text-muted); }
.ed-crumbs a:hover { color: var(--ed-accent-deep); }

/* ---------- 25 Плюсы и минусы ---------- */
.ed-proscons { display: grid; gap: 12px var(--ed-gap); }
.ed-proscons__list { display: grid; gap: 6px; align-content: start; font-size: var(--ed-fs-ui); line-height: 1.4; }
.ed-proscons__list > li { display: grid; grid-template-columns: 16px minmax(0, 1fr); gap: 8px; }
.ed-proscons__list .ed-icon { margin-top: 3px; }
.ed-proscons__list--plus .ed-icon { color: var(--ed-success); }
.ed-proscons__list--minus .ed-icon { color: var(--ed-text-muted); }

/* ---------- 26 Почему сервис в подборке ---------- */
.ed-why { display: grid; gap: var(--ed-gap); }
.ed-why__item { display: flex; flex-direction: column; gap: 12px; padding: var(--ed-sp-16); }
.ed-why .ed-proscons { grid-template-columns: minmax(0, 1fr); }
.ed-why__head { display: flex; align-items: center; gap: 12px; min-width: 0; }
.ed-why__name { flex: 1; min-width: 0; font: var(--ed-fw-bold) 17px/1.25 var(--ed-font-body); letter-spacing: 0; }
.ed-why__name a { color: var(--ed-text); text-decoration: none; }
.ed-why__name a:hover { color: var(--ed-accent-deep); text-decoration: underline; }
.ed-why__pass { padding: 10px 12px; background: var(--ed-accent-tint); font-size: var(--ed-fs-ui); line-height: 1.45; }
.ed-why__pass .ed-label { display: block; margin-bottom: 4px; }
.ed-why__src { color: var(--ed-text-muted); font-size: var(--ed-fs-micro); line-height: var(--ed-lh-micro); }
.ed-why__src a { color: var(--ed-accent); }
.ed-why__acts { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 8px; margin-top: auto; }

/* ---------- 27 Кто не вошёл ---------- */
.ed-out { border-top: var(--ed-border); }
.ed-out__row { display: grid; grid-template-columns: var(--ed-logo-s) minmax(0, 1fr); gap: 4px 12px; align-items: start; padding: 12px 0; border-bottom: var(--ed-border); }
.ed-out__name { align-self: center; font-weight: var(--ed-fw-bold); line-height: 1.3; }
.ed-out__name a { color: var(--ed-text); text-decoration: none; }
.ed-out__name a:hover { color: var(--ed-accent-deep); text-decoration: underline; }
.ed-out__why { grid-column: 2; font-size: var(--ed-fs-ui); line-height: 1.45; }
.ed-out__price { grid-column: 2; color: var(--ed-text-muted); font-size: var(--ed-fs-small); line-height: var(--ed-lh-small); }

/* ---------- 28 Вкладки ---------- */
.ed-tabs__list { display: flex; flex-wrap: wrap; gap: 0; border: var(--ed-border-ink); }
.ed-tabs__tab { flex: 1 1 auto; min-height: 44px; padding: 4px 14px; border-right: var(--ed-border); background: var(--ed-surface); font-size: var(--ed-fs-ui); font-weight: var(--ed-fw-medium); transition: background-color var(--ed-t); }
.ed-tabs__tab:hover { background: var(--ed-bg-2); }
.ed-tabs__tab[aria-selected="true"] { background: var(--ed-dark); color: var(--ed-on-dark); font-weight: var(--ed-fw-bold); }
.ed-tabs__panel { padding-top: var(--ed-block-gap); }

/* ---------- 29 Сравнение ---------- */
.ed-cmpbar { position: fixed; left: 0; right: 0; bottom: 0; z-index: var(--ed-z-cmpbar); background: var(--ed-dark); color: var(--ed-on-dark); }
.ed-cmpbar__in { display: flex; align-items: center; gap: 12px; min-height: var(--ed-cmpbar-h); }
.ed-cmpbar__count { margin-right: auto; font-size: var(--ed-fs-ui); line-height: 1.3; }
.ed-cmpbar__count b { font-family: var(--ed-font-mono); }
.ed-cmpbar__list { display: none; gap: 16px; min-width: 0; margin-right: auto; }
.ed-cmpbar__item { display: flex; align-items: center; gap: 8px; min-width: 0; font-size: var(--ed-fs-small); }
.ed-cmpbar__item span:last-child { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ed-cmpbar__acts { display: flex; align-items: center; gap: 12px; flex: none; }
.ed-cmpbar .ed-btn--text { color: var(--ed-accent-on-dark); min-height: 44px; }
.ed-cmpbar .ed-btn--text:hover { color: var(--ed-on-dark); }
body.has-cmpbar { padding-bottom: var(--ed-cmpbar-h); }

.ed-versus { display: grid; gap: 12px; align-items: center; }
.ed-versus__side { display: flex; align-items: center; gap: 12px; min-width: 0; }
.ed-versus__name { flex: 1; min-width: 0; font: var(--ed-fw-bold) var(--ed-fs-h3)/var(--ed-lh-h3) var(--ed-font-heading); overflow-wrap: anywhere; }
.ed-versus__or { font: var(--ed-fw-regular) var(--ed-fs-label)/1 var(--ed-font-mono); letter-spacing: var(--ed-ls-caps); text-transform: uppercase; color: var(--ed-text-muted); }

.ed-cmp { width: 100%; border-collapse: separate; border-spacing: 0; font-size: var(--ed-fs-table); line-height: var(--ed-lh-table); }
.ed-cmp th, .ed-cmp td { padding: 10px 12px; border-bottom: var(--ed-border); border-left: var(--ed-border); text-align: left; vertical-align: top; overflow-wrap: anywhere; }
.ed-cmp tr > :first-child { border-left: 0; }
.ed-cmp__key { color: var(--ed-text-muted); font: var(--ed-fw-regular) var(--ed-fs-label)/var(--ed-lh-label) var(--ed-font-mono); letter-spacing: var(--ed-ls-caps); text-transform: uppercase; }
.ed-cmp thead th { border-bottom: var(--ed-border-ink); background: var(--ed-bg); }
.ed-cmp__head { display: grid; gap: 8px; justify-items: start; }
.ed-cmp td.is-best { background: var(--ed-accent-tint); }
.ed-cmp td.is-best a { color: var(--ed-accent-deep); }
.ed-cmp__best { display: block; margin-top: 2px; color: var(--ed-accent-deep); font-size: var(--ed-fs-micro); font-weight: var(--ed-fw-bold); }
/* до 768px и два сервиса: подпись поля строкой, под ней два значения */
.ed-cmp--2 { display: block; }
.ed-cmp--2 thead, .ed-cmp--2 tbody { display: block; }
.ed-cmp--2 tr { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
.ed-cmp--2 tr > .ed-cmp__key { grid-column: 1 / -1; padding-bottom: 2px; border-bottom: 0; background: var(--ed-bg-2); }
.ed-cmp--2 tr > :nth-child(2) { border-left: 0; }

/* ---------- 30 Блок оценки ---------- */
.ed-score { display: grid; gap: var(--ed-sp-20); }
.ed-score__seal { display: grid; justify-items: start; gap: 8px; }
.ed-score__list { display: grid; gap: 14px; min-width: 0; }
.ed-score__row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 4px 12px; align-items: baseline; }
.ed-score__name { font-weight: var(--ed-fw-bold); }
.ed-score__weight { margin-left: 8px; color: var(--ed-text-muted); font: var(--ed-fw-regular) var(--ed-fs-num-s)/1.4 var(--ed-font-mono); }
.ed-score__bar { grid-column: 1 / -1; display: block; height: 6px; background: var(--ed-bg-3); }
.ed-score__bar > i { display: block; height: 100%; background: var(--ed-accent); }
.ed-score__mark { font: var(--ed-fw-bold) var(--ed-fs-num)/1.35 var(--ed-font-mono); white-space: nowrap; }
.ed-score__why { grid-column: 1 / -1; color: var(--ed-text-muted); font-size: var(--ed-fs-small); line-height: var(--ed-lh-small); }
.ed-score__formula { color: var(--ed-text-muted); font: var(--ed-fw-regular) var(--ed-fs-num-s)/1.5 var(--ed-font-mono); overflow-wrap: anywhere; }

/* ---------- 32 Служебное ---------- */
.ed-only-d { display: none !important; }
.ed-404 { display: grid; gap: var(--ed-sp-20); justify-items: start; padding-top: var(--ed-section); }
.ed-404 .ed-stamp { padding: 6px 14px; font-size: var(--ed-fs-h3); white-space: normal; }

/* ==========================================================================
   768px
   ========================================================================== */
@media (min-width: 768px) {
  .ed-only-m { display: none !important; }
  .ed-only-d { display: revert !important; }

  .ed-fields--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ed-fields--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .ed-fields--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .ed-field--half { grid-column: span 2; }

  /* фильтры — блоком над таблицей */
  .ed-filter, .ed-filter.is-open { position: static; display: block; background: none; }
  .ed-filter__head, .ed-filter__foot { display: none; }
  .ed-filter__body { display: grid; gap: 12px; padding: 0; overflow: visible; }
  .ed-filter__more { display: flex; flex-wrap: wrap; gap: 12px 24px; align-items: end; }
  .ed-filter--fold .ed-filter__more { display: none; }
  .ed-filter--fold.is-more .ed-filter__more { display: flex; padding-top: 12px; border-top: var(--ed-border); }
  .ed-filter__label { margin-bottom: 6px; }
  .ed-filter__chips .ed-check { min-height: var(--ed-chip-h); }
  .ed-filter__group--field { width: 180px; }
  .ed-filter__group--search { width: 240px; }
  .ed-toolbar__filters { display: none; }
  .ed-toolbar__more { display: inline-flex; }
  .ed-toolbar__sort { display: none; }
  .ed-toolbar .ed-btn--text { min-height: 0; }

  /* таблица */
  .ed-table { --ed-cell: table-cell; display: table; table-layout: fixed; }
  .ed-table thead { display: table-header-group; }
  .ed-table thead th { position: sticky; top: 0; z-index: var(--ed-z-sticky); padding: 8px; border-bottom: var(--ed-border-ink); background: var(--ed-box-bg, var(--ed-bg)); color: var(--ed-text-muted); font-size: var(--ed-fs-th); line-height: var(--ed-lh-th); vertical-align: bottom; }
  .ed-table thead th[aria-sort="ascending"], .ed-table thead th[aria-sort="descending"] { color: var(--ed-text); font-weight: var(--ed-fw-bold); }
  .ed-table thead th[aria-sort="ascending"]::after, .ed-table thead th[aria-sort="descending"]::after { content: ""; position: absolute; left: 0; right: 0; bottom: -1px; height: var(--ed-bw-mark); background: var(--ed-line-ink); }
  .ed-th-sort { display: inline-flex; align-items: flex-end; gap: 4px; max-width: 100%; color: inherit; font: inherit; text-align: inherit; }
  .ed-th-sort:hover { color: var(--ed-accent-deep); }
  .ed-th-sort .ed-icon { width: 14px; height: 14px; margin-bottom: 1px; stroke-width: 2; }
  .ed-th-sort .ed-icon--asc, .ed-th-sort .ed-icon--desc { display: none; }
  th[aria-sort="ascending"] .ed-th-sort .ed-icon--asc, th[aria-sort="descending"] .ed-th-sort .ed-icon--desc { display: block; }
  th[aria-sort="ascending"] .ed-th-sort .ed-icon--none, th[aria-sort="descending"] .ed-th-sort .ed-icon--none { display: none; }

  .ed-table__item, .ed-box--flush .ed-table__item { display: table-row-group; padding: 0; border: 0; }
  .ed-table__row { display: table-row; padding: 0; transition: background-color var(--ed-t); }
  .ed-table__row:hover > td { background: var(--ed-bg-2); }
  .ed-table__row > td, .ed-table__row > td[data-label] { margin: 0; padding: 12px 8px; border: 0; border-bottom: var(--ed-border); background: none; height: var(--ed-row-h); }
  .ed-table__row > td[data-label]::before { content: none; }
  .ed-table__item.is-open .ed-table__row > td { border-bottom-color: transparent; }
  .ed-box--flush .ed-table :is(th, td):first-child { padding-left: var(--ed-sp-16); }
  .ed-box--flush .ed-table :is(th, td):last-child { padding-right: var(--ed-sp-16); }

  .ed-table .ed-c-rank { width: 36px; margin: 0; padding-top: 16px; font-size: var(--ed-fs-num-s); }
  .ed-box--flush .ed-table .ed-c-rank { width: 44px; }
  .ed-table .ed-c-name { padding-right: 8px; }
  /* телефонное правило колонки (padding: 0 … 12px 0) сильнее общего правила ячейки: возвращаем отступ сверху, иначе логотип упирается в линию строки */
  .ed-table td.ed-c-name { padding-top: 12px; }
  .ed-table .ed-c-score { display: table-cell; width: 72px; }
  .ed-table .ed-c-score .ed-seal { width: var(--ed-seal-s); height: var(--ed-seal-s); font-size: var(--ed-seal-fs-s); }
  .ed-table__cap { display: none; }
  .ed-table .ed-c-doc { width: 122px; }
  .ed-table .ed-c-from { width: 128px; }
  .ed-table .ed-c-year { width: 132px; }
  .ed-table .ed-c-free { width: 24%; }
  .ed-table .ed-c-roaming { width: 112px; }
  .ed-table .ed-c-int { width: 98px; }
  .ed-table .ed-c-services { width: 22%; }
  .ed-table .ed-c-whom { width: 20%; }
  .ed-table .ed-c-act { width: 128px; margin: 0; }
  .ed-table :is(.ed-c-doc, .ed-c-from, .ed-c-year) { text-align: right; }
  .ed-table :is(.ed-c-doc, .ed-c-from) .ed-price { justify-items: end; }
  .ed-table th:is(.ed-c-doc, .ed-c-from, .ed-c-year) .ed-th-sort { justify-content: flex-end; text-align: right; }
  .ed-table .ed-c-year { padding-top: 12px; }
  .ed-table__row > td.ed-c-year, .ed-table__row:hover > td.ed-c-year { background: var(--ed-accent-tint) !important; }
  .ed-table thead th.ed-c-year { background: var(--ed-accent-tint); color: var(--ed-text); }

  .ed-svc__name { font-size: 16px; }
  .ed-table td .ed-clamp { -webkit-line-clamp: 3; }
  .ed-table .ed-svc__text { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; }
  .ed-table .ed-price__note { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; overflow: hidden; }
  /* «за что цена» не обрезаем: при выравнивании вправо многоточие обрезки не видно, и фраза выглядит оборванной */
  .ed-table .ed-c-from .ed-price__note { display: block; -webkit-line-clamp: none; overflow: visible; }
  /* в видах без колонки «Исходящий документ» цена одна — ей нужно место под пояснение «за что цена» */
  .ed-table:is([data-view="uc"], [data-view="marking"], [data-view="all"]) .ed-c-from { width: 168px; }
  /* «цена от …» под ценой документа нужна, только когда колонки «Цена от» рядом нет: в компактной таблице и при расчёте «За год» */
  .ed-table:not(.ed-table--compact):not(.is-calc):not([data-view="free"]) .ed-price__pack { display: none; }
  .ed-table[data-view="all"] .ed-svc__kind { display: block; }

  .ed-acts { grid-template-columns: minmax(0, 1fr); gap: 6px; }
  .ed-acts .ed-btn--s { min-height: var(--ed-control-h-s); font-size: var(--ed-fs-small); }
  .ed-acts__row { flex-wrap: wrap; gap: 2px 8px; }
  .ed-acts .ed-check { min-height: 24px; gap: 6px; font-size: 13px; }
  .ed-acts__more { min-height: 24px; font-size: 13px; }

  /* 768–1199px: сокращённый набор колонок, остальное — в раскрытой строке «Все условия» */
  .ed-table[data-view="operators"] :is(.ed-c-roaming, .ed-c-int, .ed-c-free),
  .ed-table[data-view="transport"] :is(.ed-c-roaming, .ed-c-int, .ed-c-free),
  .ed-table[data-view="free"] :is(.ed-c-from, .ed-c-roaming, .ed-c-int),
  .ed-table[data-view="uc"] :is(.ed-c-services, .ed-c-whom, .ed-c-free),
  .ed-table[data-view="marking"] :is(.ed-c-services, .ed-c-int, .ed-c-free),
  .ed-table[data-view="all"] :is(.ed-c-whom, .ed-c-free),
  .ed-table.is-calc:is([data-view="operators"], [data-view="transport"]) .ed-c-from,
  .ed-table.is-calc[data-view="free"] .ed-c-free,
  .ed-table--compact:is([data-view="operators"], [data-view="transport"]) .ed-c-from { display: none; }
  /* подборка «бесплатно» на 768px: графе «Сервис» нужно место под название целиком */
  .ed-table[data-view="free"] .ed-c-free { width: 22%; }
  .ed-table[data-view="free"] .ed-c-doc { width: 112px; }
  /* компактная таблица первого экрана: цена пакета — подписью под ценой документа, кнопки в ряд */
  .ed-table.ed-table--compact .ed-price__pack { display: block; }
  .ed-table--compact .ed-c-act { width: 206px; }
  .ed-table--compact .ed-acts { grid-template-columns: minmax(0, 1fr) auto; }
  .ed-table--compact .ed-acts__row { flex-wrap: nowrap; }
  .ed-table--compact .ed-table__row > td { padding-block: 10px; }
  .ed-table--compact .ed-c-rank { padding-top: 14px; }

  .ed-table__details { display: table-row; }
  .ed-table__details > td { display: table-cell; padding: 4px 16px 16px; border-bottom: var(--ed-border); background: var(--ed-surface); }
  .ed-table .ed-table__details > td:first-child { padding-left: 16px; }

  .ed-empty { justify-items: start; }
  .ed-table-foot__more { width: auto; }

  .ed-trio { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ed-trio > .ed-card--lead { grid-column: 1 / -1; }
  .ed-card { padding: var(--ed-box-pad); }

  .ed-calc--wide { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); column-gap: var(--ed-gap); }
  .ed-calc--wide .ed-calc__title { grid-column: 1 / -1; }

  .ed-steps--row { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--ed-gap); }
  .ed-steps--row .ed-steps__item { grid-template-columns: minmax(0, 1fr); gap: 10px; padding: 0; align-content: start; }
  .ed-steps--row .ed-steps__item::before { left: var(--ed-step-no); right: calc(-1 * var(--ed-gap)); top: calc(var(--ed-step-no) / 2); bottom: auto; border-left: 0; border-top: var(--ed-border-ink); }

  .ed-tasks { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ed-tasks > li:has(.ed-tasks__cell--wide) { grid-column: 1 / -1; }
  .ed-tasks__cell { padding: var(--ed-sp-16) var(--ed-sp-20); }

  .ed-links--2, .ed-links--3, .ed-links--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ed-linkgroups { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ed-terms { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ed-posts { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ed-post--feature { grid-column: 1 / -1; }
  .ed-trust__foot { grid-template-columns: auto minmax(0, 1fr); gap: var(--ed-gap); }

  .ed-prose--margin { padding-left: 24px; border-left: var(--ed-margin-line); }
  .ed-proscons { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ed-why { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ed-why__item { padding: var(--ed-box-pad); }
  .ed-out__row { grid-template-columns: var(--ed-logo-s) 220px minmax(0, 1fr); }
  .ed-out__why, .ed-out__price { grid-column: 3; }
  .ed-out__why { grid-row: 1; align-self: center; }

  .ed-tabs__list { flex-wrap: nowrap; gap: 4px; padding: 0 12px; border: 0; border-bottom: var(--ed-border-ink); }
  .ed-tabs__tab { flex: 0 1 auto; min-height: 40px; margin-bottom: -1px; border: 1px solid transparent; border-bottom: 0; background: none; }
  .ed-tabs__tab[aria-selected="true"] { border-color: var(--ed-line-ink); background: var(--ed-bg); color: var(--ed-text); }

  .ed-cmpbar__list { display: flex; }
  .ed-cmpbar__count { margin-right: 0; }
  .ed-versus { grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); gap: var(--ed-gap); }
  .ed-cmp--2 { display: table; }
  .ed-cmp--2 thead { display: table-header-group; }
  .ed-cmp--2 tbody { display: table-row-group; }
  .ed-cmp--2 tr { display: table-row; }
  .ed-cmp--2 tr > .ed-cmp__key { padding-bottom: 10px; border-bottom: var(--ed-border); background: none; }
  .ed-cmp--2 tr > :nth-child(2) { border-left: var(--ed-border); }
  .ed-cmp__key { position: sticky; left: 0; width: 200px; background: var(--ed-bg); }

  .ed-score { grid-template-columns: auto minmax(0, 1fr); gap: var(--ed-sp-32); align-items: start; }
  .ed-score__formula { grid-column: 1 / -1; }
}

/* ==========================================================================
   1200px
   ========================================================================== */
@media (min-width: 1200px) {
  /* полный набор колонок вида */
  .ed-table[data-view="operators"] :is(.ed-c-roaming, .ed-c-int),
  .ed-table[data-view="transport"] :is(.ed-c-roaming, .ed-c-int),
  .ed-table[data-view="free"] :is(.ed-c-doc, .ed-c-from, .ed-c-roaming, .ed-c-int),
  .ed-table.is-calc[data-view="free"] .ed-c-free,
  .ed-table[data-view="uc"] .ed-c-services,
  .ed-table[data-view="marking"] .ed-c-services,
  .ed-table[data-view="all"] .ed-c-whom,
  .ed-table:not(.ed-table--compact)[data-view="uc"] .ed-c-whom,
  .ed-table:not(.ed-table--compact)[data-view="marking"] .ed-c-int,
  .ed-table:not(.ed-table--compact):is([data-view="operators"], [data-view="transport"], [data-view="uc"], [data-view="marking"], [data-view="all"]) .ed-c-free { display: table-cell; }
  /* с колонкой «За год» место освобождают 1С и API (первый экран) и «Цена от» (полная таблица): они остаются в «Условиях» */
  .ed-table--compact.is-calc .ed-c-int,
  .ed-table.is-calc[data-view="free"] .ed-c-from { display: none; }
  /* Второстепенная графа зависит от ширины самой таблицы, а не окна: на 1200–1350px рядом с боковой колонкой (главная)
     и в полной таблице подборки всем графам места нет — название сервиса сжималось до 70–110px и рвалось по буквам.
     Пока таблица узкая, графа остаётся в раскрытой строке «Условия»; пороги — в @container ниже. */
  .ed-table--compact:is([data-view="operators"], [data-view="transport"]) .ed-c-roaming,
  .ed-table--compact:is([data-view="uc"], [data-view="marking"]) .ed-c-services,
  .ed-table--compact[data-view="all"] .ed-c-whom,
  .ed-table:not(.ed-table--compact):is([data-view="operators"], [data-view="transport"], [data-view="free"]) .ed-c-int { display: none; }
  @container ed-table (min-width: 880px) {
    .ed-table--compact:is([data-view="operators"], [data-view="transport"]) .ed-c-roaming,
    .ed-table--compact:is([data-view="uc"], [data-view="marking"]) .ed-c-services,
    .ed-table--compact[data-view="all"] .ed-c-whom { display: table-cell; }
  }
  @container ed-table (min-width: 1290px) {
    .ed-table:not(.ed-table--compact):is([data-view="operators"], [data-view="transport"], [data-view="free"]) .ed-c-int { display: table-cell; }
    .ed-table:not(.ed-table--compact) .ed-c-from { width: 148px; }
  }

  .ed-table .ed-c-act { width: 206px; }
  .ed-acts { grid-template-columns: minmax(0, 1fr) auto; }
  .ed-acts__row { flex-wrap: nowrap; }
  .ed-table .ed-c-free, .ed-table[data-view="free"] .ed-c-free { width: 21%; }
  .ed-table[data-view="free"] .ed-c-doc { width: 122px; }
  .ed-table:not(.ed-table--compact):not(.is-calc)[data-view="free"] .ed-price__pack { display: none; }

  .ed-trio { grid-template-columns: repeat(12, minmax(0, 1fr)); }
  .ed-trio > .ed-card { grid-column: span 3; }
  .ed-trio > .ed-card--lead { grid-column: span 6; }

  .ed-calc--wide { grid-template-columns: 4fr 8fr; }
  .ed-tasks--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .ed-tasks--4 .ed-tasks__cell { grid-template-columns: minmax(0, 1fr) var(--ed-icon); align-content: start; gap: 6px 12px; padding: var(--ed-sp-20); }
  .ed-tasks--4 .ed-tasks__cell > .ed-icon--l { grid-row: auto; grid-column: 1; }
  .ed-tasks--4 :is(.ed-tasks__task, .ed-tasks__what, .ed-tasks__meta) { grid-column: 1 / -1; }
  .ed-tasks--4 .ed-tasks__go { grid-column: 2; grid-row: 1; align-self: start; }
  .ed-tasks--4 .ed-tasks__cell--wide { grid-template-columns: var(--ed-icon-l) auto minmax(0, 1fr) auto var(--ed-icon); align-items: center; gap: 16px; padding-block: var(--ed-sp-12); }
  .ed-tasks--4 .ed-tasks__cell--wide > * { grid-column: auto; grid-row: 1; margin: 0; }

  .ed-links--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .ed-links--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .ed-linkgroups { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .ed-terms, .ed-terms--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .ed-posts { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .ed-posts--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .ed-why { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .ed-toc--sticky { position: sticky; top: 16px; }
}
