/* ════════════════════════════════════════════════════════════════════
   05 — Сравнение. «Обычное облако против mystreaming.cc».

   Одна разметка, две раскладки: ≥760px — таблица с фиксированными
   колонками и подсвеченной колонкой продукта, <760px — стопка карточек
   (display: block на table-элементах, подписи колонок из data-label).

   Движение: строки въезжают каскадом от .is-revealed на рамке (как
   .reveal-word в animations.css — без вложенных data-reveal и двойных
   задержек), галочки рисуются по кругу (ms-draw), по колонке продукта
   идёт луч (ms-compare-beam — свой, потому что общий ms-colscan едет
   на top, а это layout на каждом кадре).
   ════════════════════════════════════════════════════════════════════ */

.s-compare {
  /* Ширина колонки «Критерий»: текучая геометрия сетки, а не «сырой»
     размер — 152px на телефоне → 340px макета на десктопе. */
  --s-compare-crit: clamp(9.5rem, 24vw, 21.25rem);
  /* Горизонтальные поля ячейки: 32px макета держим с 1280px, но на
     планшете эти 64px на ячейку съедали треть колонки и загоняли
     «сотрудники, подрядчики, взломщики» в три строки. */
  --s-compare-pad-x: clamp(var(--sp-5), 2.5vw, var(--sp-7));
  /* Ореол не должен вылезать за секцию и растягивать страницу вбок. */
  overflow: clip;
}

.s-compare__halo {
  top: 0;
  right: 0;
  width: min(72vw, 620px);
  height: min(56vw, 420px);
  opacity: 0.9;
}

.s-compare__tld { color: var(--c-accent); }

/* ── Рамка таблицы ─────────────────────────────────────────────────── */

.s-compare__frame {
  position: relative;
  border: 1px solid var(--c-line);
  border-radius: var(--r-xl);
  overflow: hidden;
  box-shadow: var(--shadow-card);
}

/* Луч по колонке mystreaming.cc: окно шириной ровно в эту колонку. */
.s-compare__scan {
  position: absolute;
  top: 0;
  bottom: 0;
  right: 0;
  left: calc(var(--s-compare-crit) + (100% - var(--s-compare-crit)) / 2);
  overflow: hidden;
  pointer-events: none;
}
/* Луч едет на transform, а не на top: анимация не дёргает layout.
   Элемент — во всю высоту окна, сама полоса нарисована фоном в его
   верхних --s-compare-beam-h, поэтому translateY(100%) — это ровно
   «полоса ушла за нижний край». Базовое состояние — уже уехавший
   вверх: при --motion: 0 анимация схлопывается в ноль, и полоса не
   залипает зелёной плашкой над шапкой таблицы. */
.s-compare__beam {
  --s-compare-beam-h: 120px;
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  height: 100%;
  background-image: linear-gradient(
    180deg,
    transparent,
    color-mix(in srgb, var(--c-accent) 14%, transparent),
    transparent
  );
  background-repeat: no-repeat;
  background-size: 100% var(--s-compare-beam-h);
  transform: translate3d(0, calc(var(--s-compare-beam-h) * -1), 0);
  will-change: transform;
  animation: ms-compare-beam calc(7s * var(--motion)) linear infinite;
}

@keyframes ms-compare-beam {
  from { transform: translate3d(0, calc(var(--s-compare-beam-h) * -1), 0); }
  to   { transform: translate3d(0, 100%, 0); }
}

.s-compare__table {
  width: 100%;
  border-collapse: collapse;
  table-layout: fixed;
}

/* ── Шапка таблицы ─────────────────────────────────────────────────── */

.s-compare__head-row { background: var(--c-surface); }

.s-compare__col {
  padding: var(--sp-5) var(--s-compare-pad-x);
  text-align: left;
  vertical-align: middle;
  font-size: var(--fs-md);
  font-weight: 600;
  color: var(--c-muted);
}

.s-compare__col--crit {
  width: var(--s-compare-crit);
  font-family: var(--font-mono);
  font-size: var(--fs-mono-sm);
  font-weight: 400;
  letter-spacing: var(--ls-caps);
  text-transform: uppercase;
  color: var(--c-dim);
}

.s-compare__col--ours {
  background: color-mix(in srgb, var(--c-accent) 10%, var(--c-surface));
  color: var(--c-accent);
}

.s-compare__ours {
  display: inline-flex;
  align-items: center;
  gap: var(--sp-2);
}

/* Точка «в эфире» с расходящимся кольцом. */
.s-compare__pulse {
  position: relative;
  display: inline-flex;
  flex-shrink: 0;
}
.s-compare__ping {
  position: absolute;
  inset: 0;
  border-radius: 50%;
  background: currentColor;
  opacity: 0.6;
  pointer-events: none;
}

/* ── Строки ────────────────────────────────────────────────────────── */

.s-compare__crit,
.s-compare__cell {
  padding: var(--sp-5) var(--s-compare-pad-x);
  text-align: left;
  vertical-align: middle;
  border-top: 1px solid var(--c-line-soft);
  font-size: var(--fs-md);
}

.s-compare__crit {
  font-weight: 500;
  color: var(--c-text);
  box-shadow: inset 2px 0 0 transparent;
  transition:
    color var(--t-base) var(--ease-soft),
    box-shadow var(--t-base) var(--ease-soft);
}

.s-compare__cell { color: var(--c-muted); }

.s-compare__cell--ours {
  background: color-mix(in srgb, var(--c-accent) 5%, transparent);
  font-weight: 500;
  color: var(--c-text);
  transition: background var(--t-base) var(--ease-soft);
}

.s-compare__win {
  display: flex;
  align-items: center;
  gap: var(--sp-3);
}

.s-compare__tick {
  flex-shrink: 0;
  color: var(--c-accent);
  transition: transform var(--t-base) var(--ease-out);
}
/* Галочка рисуется штрихом: длина обводки = длине пути. */
.s-compare__tick path {
  stroke-dasharray: 24;
  stroke-dashoffset: 24;
  animation-delay: var(--tick-delay, 0s);
}

/* ── Наведение на строку (только в табличной раскладке) ───────────── */

@media (hover: hover) and (min-width: 760px) {
  .s-compare__row:hover { background-color: var(--c-fill); }
  .s-compare__row:hover .s-compare__crit {
    color: var(--c-accent);
    box-shadow: inset 2px 0 0 var(--c-accent);
  }
  .s-compare__row:hover .s-compare__cell--ours {
    background: color-mix(in srgb, var(--c-accent) 12%, transparent);
  }
  .s-compare__row:hover .s-compare__tick { transform: scale(1.15); }
}

/* ── Появление: каскад строк от .is-revealed на рамке ──────────────── */

.s-compare__frame[data-reveal] .s-compare__row {
  opacity: 0;
  transform: translate3d(0, 10px, 0);
  transition:
    opacity var(--t-slow) var(--ease-out) var(--row-delay, 0s),
    transform var(--t-slow) var(--ease-out) var(--row-delay, 0s),
    background-color var(--t-base) var(--ease-soft);
}
.s-compare__frame.is-revealed .s-compare__row {
  opacity: 1;
  transform: none;
}

/* Шаг каскада 70мс; галочки повторяют фазовый сдвиг макета. */
.s-compare__row:nth-of-type(1) { --row-delay: 0.05s; --tick-delay: 0s; }
.s-compare__row:nth-of-type(2) { --row-delay: 0.12s; --tick-delay: calc(0.25s * var(--motion)); }
.s-compare__row:nth-of-type(3) { --row-delay: 0.19s; --tick-delay: calc(0.5s  * var(--motion)); }
.s-compare__row:nth-of-type(4) { --row-delay: 0.26s; --tick-delay: calc(0.75s * var(--motion)); }
.s-compare__row:nth-of-type(5) { --row-delay: 0.33s; --tick-delay: calc(1s    * var(--motion)); }
.s-compare__row:nth-of-type(6) { --row-delay: 0.4s;  --tick-delay: calc(1.25s * var(--motion)); }

/* ── Узкий экран: таблица → стопка карточек ────────────────────────── */

@media (max-width: 759px) {
  .s-compare__frame {
    border: 0;
    border-radius: 0;
    overflow: visible;
    box-shadow: none;
  }
  .s-compare__scan { display: none; }

  .s-compare__table,
  .s-compare__table tbody { display: block; }

  /* Подписи колонок переезжают в ::before каждой ячейки. */
  .s-compare__table thead { display: none; }

  .s-compare__row {
    display: block;
    padding: var(--sp-5);
    border-radius: var(--r-lg);
    border: 1px solid var(--c-line-soft);
    background: var(--c-surface);
  }
  .s-compare__row + .s-compare__row { margin-top: var(--sp-4); }

  .s-compare__crit,
  .s-compare__cell {
    display: block;
    padding: 0;
    border-top: 0;
  }

  .s-compare__crit {
    margin-bottom: var(--sp-4);
    padding-bottom: var(--sp-4);
    border-bottom: 1px solid var(--c-line-soft);
    box-shadow: none;
    font-family: var(--font-display);
    font-weight: 500;
    font-size: var(--fs-h4);
    line-height: var(--lh-snug);
    letter-spacing: var(--ls-tight);
  }

  .s-compare__cell + .s-compare__cell { margin-top: var(--sp-3); }

  .s-compare__cell::before {
    content: attr(data-label);
    display: block;
    margin-bottom: var(--sp-1);
    font-family: var(--font-mono);
    font-size: var(--fs-mono-sm);
    letter-spacing: var(--ls-caps);
    text-transform: uppercase;
    color: var(--c-dim);
  }

  .s-compare__cell--ours {
    padding: var(--sp-4);
    border-radius: var(--r-md);
    border: 1px solid color-mix(in srgb, var(--c-accent) 22%, transparent);
    background: color-mix(in srgb, var(--c-accent) 8%, transparent);
  }
  .s-compare__cell--ours::before { color: var(--c-accent); }

  .s-compare__win { align-items: flex-start; }
  .s-compare__tick { margin-top: 3px; }
}

/* ── Доступность ───────────────────────────────────────────────────── */
/* При --motion: 0 анимация схлопывается в ноль и возвращает элемент к
   базовому состоянию: у галочки это «не нарисована». Показываем её. */
@media (prefers-reduced-motion: reduce) {
  .s-compare__tick path { stroke-dashoffset: 0; }
  .s-compare__ping,
  .s-compare__scan { display: none; }
  .s-compare__frame[data-reveal] .s-compare__row {
    opacity: 1;
    transform: none;
  }
}
