/* ══════════════════════════════════════════════════════════════
   Ambient / Eye-Candy — декоративный слой без интерфейсной нагрузки.
   Контейнеры создаются в разметке (data-ambient="..."), содержимое
   рисует ambient.js. Не участвует в hit-тестинге и недоступно для
   скринридеров — pointer-events/aria уже на контейнере в шаблоне.
   Правила ниже — только позиционирование и статика; вся анимация —
   через transform/opacity, выставляемые из JS (никаких @keyframes
   здесь не нужно, движение не CSS-циклическое, а rAF+синус).
   Только публичные страницы (body.is-public), только десктоп —
   гейт на ширину/hover стоит в самом ambient.js при инициализации,
   тот же принцип, что уже используется у параллакса и 3D-наклона. */
.ambient-obj{position:absolute;inset:0;overflow:hidden;pointer-events:none;user-select:none;z-index:-1}
.ambient-obj svg,.ambient-obj canvas{position:absolute;inset:0;width:100%;height:100%;display:block}

.ambient-circuit .trace{fill:none;stroke:var(--stroke);stroke-width:1.2}
.ambient-circuit .node{fill:var(--stroke2)}

/* Секция-носитель ambient-объекта. Нужна, когда у секции есть СВОЙ фон
   (.section-alt): дочерний элемент с z-index:-1 ушёл бы ЗА этот фон и стал
   невидим. Поэтому объект держим на z-index:0, а контентную колонку явно
   поднимаем на z-index:1 — текст всегда выше декора. */
.ambient-host{position:relative;overflow:hidden}
.ambient-host > .wrap{position:relative;z-index:1}
.ambient-host .amb-gyro,.ambient-host .amb-limit{z-index:0}

/* ── Объект 1: «Кривая предела» ──
   Линия — не более 30% непрозрачности, чтобы не спорить с текстом hero.
   Асимптота бледнее и пунктиром: предел обозначен, но не акцентирован. */
.amb-limit{position:absolute;pointer-events:none;user-select:none;z-index:-1}
.amb-limit svg{width:100%;height:100%;display:block;overflow:visible}
.amb-limit-curve{stroke-width:1.4;opacity:.3;fill:none}
.amb-limit-asymptote{stroke:var(--blue-light);stroke-width:1;stroke-dasharray:2 6;opacity:.18}
.amb-limit-head{fill:var(--accent2);opacity:0}
.amb-limit-ghost{fill:var(--accent2);opacity:0}

/* ── Объект 2: «Прецизионные орбитальные кольца» ──
   Контурная монолиния без свечения — вид инженерного чертежа, не «космос».
   perspective на сцене: наклоны колец в 3D задаёт JS через rotateX/rotateY. */
.amb-gyro{position:absolute;pointer-events:none;user-select:none;z-index:-1;
  width:clamp(180px,18vw,300px);aspect-ratio:1/1}
.amb-gyro-stage{position:absolute;inset:0;perspective:620px;transform-style:preserve-3d}
.amb-gyro-ring{position:absolute;inset:0;transform-style:preserve-3d;will-change:transform}
.amb-gyro-ring svg{width:100%;height:100%;display:block}
.amb-gyro-sat-layer{position:absolute;inset:0;width:100%;height:100%;display:block;overflow:visible}
.amb-gyro-sat-path{stroke:var(--stroke);stroke-width:.8;opacity:.35;fill:none}
.amb-gyro-sat{fill:var(--accent2);opacity:0}
.amb-gyro-sat-ghost{fill:var(--blue-light);opacity:0}
