/* Эффекты: волна линий (js/fx/waveform.js). Владелец: роль «Эффекты» / «О компании».
   Только токены из tokens.css. Стили искр (sparkles) и медальонов заводов (floating) удалены 08.10:
   модули нигде не подключены (медальоны сняты с «О компании» как декор, дублирующий список). */

/* ============ Волна линий (секция «Поставки и отгрузка») ============
   <section class="section …"><div class="waveform" data-module="waveform"></div><div class="container">…</div></section>
   Слой лежит под содержимым секции: родитель получает свой контекст наложения (isolation),
   волна — z-index: −1, поэтому обычный поток секции рисуется поверх без доп. классов.
   :where() — нулевая специфичность: position родителя, заданный его владельцем, важнее. */
:where(*):has(> .waveform) { position: relative; isolation: isolate; }
.waveform {
  position: absolute; inset: 0; z-index: -1;
  pointer-events: none; overflow: hidden;
  -webkit-mask-image: linear-gradient(to bottom, transparent 0, #000 16%, #000 84%, transparent 100%);
          mask-image: linear-gradient(to bottom, transparent 0, #000 16%, #000 84%, transparent 100%);
}
/* свечение под лентой убрано (SPACING.md §9: свечение — только фон hero главной и подвала) */
.waveform__canvas {
  position: absolute; inset: 0; width: 100%; height: 100%;
  opacity: 0; transition: opacity var(--t-scene) var(--ease-out);
}
.waveform.is-ready .waveform__canvas { opacity: 1; }

/* ============ Меньше движения ============ */
@media (prefers-reduced-motion: reduce) {
  .waveform__canvas { transition: none; }
}
