/* =============================================================================
   AVENTO — главная. Мир «Гелиоплакат, поднятый светом сцены».
   Слой поверх движка site-builder (vendor/site-builder.css подключается раньше).
   -----------------------------------------------------------------------------
   0  Шрифты: свои файлы и запасные гарнитуры в метриках оригинала
   1  Токены и главы (лист: графит/чёрный; бумага: лёсс, шалфей, известь)
   2  Поверхности браузера и типографика
   3  Раскладка, линейка-регистр
   4  Компоненты: шапка, кнопки, стрелка, чипы, сегмент, поля, регистр данных,
      модуль, слот данных, ярлык выбора
   5  Секции: hero, двери, витрина систем, станция 10 кВт, калькулятор, схема,
      бизнес, отрасли, каталог, журнал, вопросы, финал, футер
   6  Телефон
   7  Сокращённое движение и страница без JS
   Движок владеет transform у [data-sc-cue], [data-sc-parallax], [data-sc-pan],
   [data-sc-tilt], [data-sc-magnet]. Собственное движение — translate / scale /
   clip-path / mask на обёртках или через переменную --p (копия --sc-p акта).
   ========================================================================== */

/* ------------------------------------------------------------------ 0 ---- */
/* Шрифты со своего домена (SIL OFL 1.1, лицензии в assets/fonts). Шрифты переменные:
   один файл на набор знаков покрывает все начертания. */
@font-face { font-family: "Golos Text"; src: url(../assets/fonts/golos-text-cyrillic-ext.woff2) format("woff2"); font-weight: 400 600; font-display: swap;
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; }
@font-face { font-family: "Golos Text"; src: url(../assets/fonts/golos-text-cyrillic.woff2) format("woff2"); font-weight: 400 600; font-display: swap;
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; }
@font-face { font-family: "Golos Text"; src: url(../assets/fonts/golos-text-latin-ext.woff2) format("woff2"); font-weight: 400 600; font-display: swap;
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: "Golos Text"; src: url(../assets/fonts/golos-text-latin.woff2) format("woff2"); font-weight: 400 600; font-display: swap;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "Unbounded"; src: url(../assets/fonts/unbounded-cyrillic-ext.woff2) format("woff2"); font-weight: 500 800; font-display: swap;
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; }
@font-face { font-family: "Unbounded"; src: url(../assets/fonts/unbounded-cyrillic.woff2) format("woff2"); font-weight: 500 800; font-display: swap;
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; }
@font-face { font-family: "Unbounded"; src: url(../assets/fonts/unbounded-latin-ext.woff2) format("woff2"); font-weight: 500 800; font-display: swap;
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: "Unbounded"; src: url(../assets/fonts/unbounded-latin.woff2) format("woff2"); font-weight: 500 800; font-display: swap;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
/* ʻ (U+02BB) для узбекской латиницы: в Golos его нет, файл — тот же глиф ‘ под кодом U+02BB (media/font_okina.py). */
@font-face { font-family: "Golos Text"; src: url(../assets/fonts/golos-text-okina.woff2) format("woff2"); font-weight: 400 600; font-display: swap;
  unicode-range: U+02BB; }

/* Запасные гарнитуры в размерах оригинала: пока шрифт грузится, строки не переносятся иначе
   и подмена не двигает раскладку. Коэффициенты сняты по тексту самой страницы. Arial —
   macOS, Windows, iOS; Roboto — Android. */
@font-face { font-family: "Golos Fallback"; src: local("Arial"), local("ArialMT"); font-weight: 400;
  size-adjust: 105.7%; ascent-override: 92.7%; descent-override: 20.8%; line-gap-override: 0%; }
@font-face { font-family: "Golos Fallback"; src: local("Arial"), local("ArialMT"); font-weight: 500;
  size-adjust: 107.3%; ascent-override: 91.4%; descent-override: 20.5%; line-gap-override: 0%; }
@font-face { font-family: "Golos Fallback"; src: local("Arial Bold"), local("Arial-BoldMT"); font-weight: 600 900;
  size-adjust: 100.4%; ascent-override: 97.6%; descent-override: 21.9%; line-gap-override: 0%; }
@font-face { font-family: "Golos Fallback Android"; src: local("Roboto"), local("Roboto-Regular"); font-weight: 400;
  size-adjust: 104.4%; ascent-override: 93.9%; descent-override: 21.1%; line-gap-override: 0%; }
@font-face { font-family: "Golos Fallback Android"; src: local("Roboto"), local("Roboto-Regular"); font-weight: 500;
  size-adjust: 106.9%; ascent-override: 91.7%; descent-override: 20.6%; line-gap-override: 0%; }
@font-face { font-family: "Golos Fallback Android"; src: local("Roboto Bold"), local("Roboto-Bold"); font-weight: 600 900;
  size-adjust: 105.6%; ascent-override: 92.8%; descent-override: 20.8%; line-gap-override: 0%; }
@font-face { font-family: "Unbounded Fallback"; src: local("Arial"), local("ArialMT"); font-weight: 100 500;
  size-adjust: 136.8%; ascent-override: 72.8%; descent-override: 17.9%; line-gap-override: 0%; }
@font-face { font-family: "Unbounded Fallback"; src: local("Arial Bold"), local("Arial-BoldMT"); font-weight: 600 900;
  size-adjust: 129%; ascent-override: 77.1%; descent-override: 19%; line-gap-override: 0%; }
@font-face { font-family: "Unbounded Fallback Android"; src: local("Roboto"), local("Roboto-Regular"); font-weight: 100 500;
  size-adjust: 134.8%; ascent-override: 73.8%; descent-override: 18.2%; line-gap-override: 0%; }
@font-face { font-family: "Unbounded Fallback Android"; src: local("Roboto Bold"), local("Roboto-Bold"); font-weight: 600 900;
  size-adjust: 136%; ascent-override: 73.2%; descent-override: 18%; line-gap-override: 0%; }

/* ------------------------------------------------------------------ 1 ---- */
:root {
  --av-graphite-950: #0B0D10;
  --av-graphite-900: #14171C;
  --av-graphite-800: #1C2026;
  --av-black:        #050607;

  --av-ink-light:      #F1EADC;   /* чернила на графите — цвета лёсса */
  --av-ink-soft-light: #A19C92;
  --av-ink-dark:       #14171C;
  --av-ink-soft-dark:  #575B63;

  --av-amber-300: #FFCF7A;
  --av-amber-500: #F2A93B;
  --av-amber-700: #C77D14;
  --av-amber-900: #8A5200;
  --av-ember:     #E0631F;
  --av-ember-ink: #9A3412;        /* текст ошибки на светлом листе */

  --av-loess: #F1EADC;
  --av-sage:  #D7DED7;
  --av-lime:  #FAFAF8;

  --sc-canvas:     var(--av-graphite-950);
  --sc-surface:    var(--av-graphite-900);
  --sc-ink:        var(--av-ink-light);
  --sc-ink-soft:   var(--av-ink-soft-light);
  --sc-accent:     var(--av-amber-500);
  --sc-accent-ink: var(--av-graphite-950);
  --sc-hairline:        color-mix(in oklab, var(--sc-ink) 16%, transparent);
  --sc-hairline-strong: color-mix(in oklab, var(--sc-ink) 28%, transparent);
  --sc-edge: 0 0 0 0 transparent;                 /* печатный лист: без кромочного света */

  --sc-font-display: "Unbounded", "Unbounded Fallback", "Unbounded Fallback Android", system-ui, sans-serif;
  --sc-font-text:    "Golos Text", "Golos Fallback", "Golos Fallback Android", system-ui, sans-serif;
  --sc-font-mono:    var(--sc-font-text);         /* моно не загружается */

  /* Тень полудня: короткая, жёсткая, тёплая. */
  --sc-shadow-color: 35 30% 8%;
  --sc-e1: 0 1px 0 hsl(var(--sc-shadow-color) / 0.22), 0 3px 8px -3px hsl(var(--sc-shadow-color) / 0.36);
  --sc-e2: 0 2px 0 hsl(var(--sc-shadow-color) / 0.22), 0 8px 16px -8px hsl(var(--sc-shadow-color) / 0.46);
  --sc-e3: 0 3px 0 hsl(var(--sc-shadow-color) / 0.24), 0 16px 28px -12px hsl(var(--sc-shadow-color) / 0.52);

  --av-t-mega: clamp(3.2rem, min(17vw, 24vh), 22rem);
  --av-t-h1:   clamp(2rem, 1.2rem + 2.6vw, 3.6rem);
  --av-t-h2:   clamp(1.7rem, 1.05rem + 2.4vw, 3rem);
  --av-t-h3:   clamp(1.15rem, 1rem + 0.7vw, 1.5rem);
  --av-t-num:  clamp(1.5rem, 1.1rem + 1.4vw, 2.4rem);

  --av-stroke: color-mix(in oklab, var(--sc-ink) 46%, transparent);
  --av-rule:   4px;
  --av-head-h: 4.5rem;
  --sc-maxw:   86rem;
  --sc-gutter: clamp(1.25rem, 4.5vw, 4.5rem);
}

.chapter { position: relative; }
.chapter--night { background: var(--av-graphite-950); }
.chapter--black { background: var(--av-black); }
.chapter--loess, .chapter--sage, .chapter--white {
  --sc-ink:        var(--av-ink-dark);
  --sc-ink-soft:   var(--av-ink-soft-dark);
  --sc-surface:    #FFFFFF;
  --sc-accent:     var(--av-amber-900);
  --sc-accent-ink: #FFFFFF;
  --sc-hairline:        color-mix(in oklab, var(--sc-ink) 16%, transparent);
  --sc-hairline-strong: color-mix(in oklab, var(--sc-ink) 30%, transparent);
  --av-stroke:          color-mix(in oklab, var(--sc-ink) 42%, transparent);
  --sc-shadow-color: 35 32% 12%;
  --sc-e1: 0 1px 0 hsl(var(--sc-shadow-color) / 0.14), 0 3px 8px -3px hsl(var(--sc-shadow-color) / 0.28);
  --sc-e2: 0 2px 0 hsl(var(--sc-shadow-color) / 0.14), 0 8px 16px -8px hsl(var(--sc-shadow-color) / 0.34);
  --sc-e3: 0 3px 0 hsl(var(--sc-shadow-color) / 0.16), 0 16px 28px -12px hsl(var(--sc-shadow-color) / 0.4);
  color: var(--sc-ink);
}
.chapter--loess { background: var(--av-loess); }
.chapter--sage  { background: var(--av-sage); }
.chapter--white { background: var(--av-lime); }

body { background: var(--av-graphite-950); }
.sc-grain { opacity: 0.035; }

/* ------------------------------------------------------------------ 2 ---- */
/* Поверхности браузера: выделение, каретка, фокус, прокрутка — из палитры. */
html {
  scroll-padding-top: calc(var(--av-head-h) + 1rem);
  scrollbar-color: color-mix(in oklab, var(--av-ink-light) 30%, transparent) var(--av-graphite-950);
}
::selection { background: var(--av-amber-300); color: var(--av-graphite-950); }
:focus-visible { outline: 2px solid var(--av-amber-500); outline-offset: 3px; }
.chapter--loess :focus-visible, .chapter--sage :focus-visible, .chapter--white :focus-visible,
.final__poster :focus-visible { outline-color: var(--av-ink-dark); }
input, select, textarea { caret-color: var(--av-amber-700); }
a { text-underline-offset: 0.24em; }
/* picture без собственного блока: вёрстка видит только img. source по умолчанию блочный
   и иначе становится лишним элементом сетки. */
picture { display: contents; }
picture > source { display: none; }

.av-mega {
  font-family: var(--sc-font-display);
  font-weight: 800;
  font-size: var(--av-t-mega);
  line-height: 0.8;
  letter-spacing: -0.04em;
  text-transform: uppercase;
  white-space: nowrap;
  margin: 0;
}
/* Контур буквы — обводкой. Контуры вариативного шрифта перекрываются внутри глифа,
   поэтому обводка двойной толщины рисуется первой, а заливка цветом фона ложится сверху
   и прячет внутренние линии: снаружи остаётся ровная обводка нужной толщины. */
.av-mega--outline {
  color: var(--av-ground, transparent);
  -webkit-text-stroke: calc(var(--stroke-w, 1.5px) * 2) var(--ring, color-mix(in oklab, var(--sc-ink) 60%, transparent));
  paint-order: stroke fill;
}
.av-h1 {
  font-family: var(--sc-font-display);
  font-weight: 700;
  font-size: var(--av-t-h1);
  line-height: 1.02;
  letter-spacing: -0.035em;
  text-wrap: balance;
  margin: 0;
}
.av-h2 {
  font-family: var(--sc-font-display);
  font-weight: 600;
  font-size: var(--av-t-h2);
  line-height: 1.04;
  letter-spacing: -0.03em;
  text-wrap: balance;
  margin: 0;
}
.av-h3 {
  font-family: var(--sc-font-display);
  font-weight: 500;
  font-size: var(--av-t-h3);
  line-height: 1.16;
  letter-spacing: -0.02em;
  margin: 0;
}
.av-lede {
  font-size: var(--sc-t-lg);
  line-height: 1.42;
  letter-spacing: -0.012em;
  max-width: 40ch;
  text-wrap: pretty;
  margin: 0;
}
.av-body { max-width: 58ch; color: var(--sc-ink-soft); text-wrap: pretty; margin: 0; }
/* Подпись данных: текстовое семейство, разрядка. Только там, где есть данные. */
.av-label {
  font-family: var(--sc-font-text);
  font-weight: 600;
  font-size: var(--sc-t-xs);
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--sc-ink-soft);
}
.av-label small { font-size: 0.85em; font-weight: 500; letter-spacing: 0.04em; text-transform: none; }
.av-hint { margin: 0; font-size: var(--sc-t-xs); line-height: 1.4; color: var(--sc-ink-soft); }
.av-index {
  font-family: var(--sc-font-text);
  font-weight: 600;
  font-size: var(--sc-t-xs);
  letter-spacing: 0.12em;
  font-variant-numeric: tabular-nums;
  color: color-mix(in oklab, var(--sc-ink) 74%, transparent);
}

/* ------------------------------------------------------------------ 3 ---- */
.av-wrap {
  width: 100%;
  max-width: var(--sc-maxw);
  margin-inline: auto;
  padding-inline: var(--sc-gutter);
}
/* Регистр: жирная линейка и тонкая подлинейка — подпись листа. Один раз, у витрины. */
.av-register { position: relative; padding-top: calc(var(--av-rule) + 14px); }
.av-register::before {
  content: ""; position: absolute; left: 0; right: 0; top: 0;
  height: var(--av-rule); background: var(--av-amber-500);
}
.av-register::after {
  content: ""; position: absolute; left: 0; right: 0; top: calc(var(--av-rule) + 8px);
  height: 1px; background: var(--sc-hairline-strong);
}
[hidden] { display: none !important; }
.visually-hidden {
  position: absolute; width: 1px; height: 1px; overflow: hidden;
  clip-path: inset(50%); white-space: nowrap;
}
.skip-link {
  position: fixed; left: 1rem; top: 0.75rem; z-index: calc(var(--sc-z-chrome) + 2);
  padding: 0.8rem 1.2rem; border-radius: var(--sc-r-pill);
  background: var(--av-amber-500); color: var(--av-graphite-950);
  font-weight: 600; text-decoration: none;
  translate: 0 -220%; transition: translate var(--sc-d-fast) var(--sc-ease-out);
}
.skip-link:focus { translate: 0 0; }

/* ------------------------------------------------------------------ 4 ---- */
/* Шапка: печатная линейка над листом; плашка после hero. */
.av-head {
  position: fixed; inset: 0 0 auto 0;
  z-index: var(--sc-z-chrome);
  height: var(--av-head-h);
  display: flex; align-items: center; gap: var(--sc-6);
  padding-inline: var(--sc-gutter);
  color: var(--av-ink-light);
  transition: background var(--sc-d-base) var(--sc-ease-out), border-color var(--sc-d-base) var(--sc-ease-out);
  border-bottom: 1px solid transparent;
}
.av-head.is-glass {
  background: color-mix(in oklab, var(--av-graphite-950) 92%, transparent);
  border-color: color-mix(in oklab, var(--av-ink-light) 14%, transparent);
}
.av-wordmark {
  display: inline-flex; align-items: center; gap: 0.6rem;
  min-height: 2.75rem;
  font-family: var(--sc-font-display);
  font-weight: 800;
  font-size: 0.95rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  text-decoration: none;
  color: inherit;
}
/* Знак AVENTO — логотип клиента в фирменных цветах. Тёмно-синий на графите не читается, поэтому знак стоит
   на плашке цвета букв (как белая плашка на прежнем сайте); радиус — как у полей. */
.av-wordmark__mark { display: grid; place-items: center; flex: none; width: 2rem; height: 2rem; border-radius: var(--sc-r-sm); background: var(--av-ink-light); }
.av-wordmark__mark svg { display: block; width: 1.45rem; height: auto; overflow: visible; }
.av-nav { display: flex; gap: var(--sc-5); align-items: center; margin-inline-start: auto; }
.av-nav a {
  font-size: var(--sc-t-xs);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  text-decoration: none;
  color: color-mix(in oklab, currentColor 78%, transparent);
  padding-block: 0.6rem;
  transition: color var(--sc-d-fast) var(--sc-ease-out);
}
.av-nav a:hover { color: currentColor; }
.av-nav a[aria-current="true"] {
  color: currentColor;
  text-decoration: underline; text-decoration-thickness: 2px;
  text-decoration-color: var(--av-amber-500); text-underline-offset: 0.7em;
}

/* Кнопки. Стрелка — отдельный круглый элемент, не глиф в подписи. */
.av-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: var(--sc-2);
  min-height: 3rem;
  padding: 0.75rem 1.5rem;
  border: 1px solid transparent;
  border-radius: var(--sc-r-pill);
  font-family: var(--sc-font-text);
  font-weight: 600;
  font-size: var(--sc-t-sm);
  line-height: 1;
  text-decoration: none;
  cursor: pointer;
  white-space: nowrap;
  transition: background var(--sc-d-fast) var(--sc-ease-out), color var(--sc-d-fast) var(--sc-ease-out),
              border-color var(--sc-d-fast) var(--sc-ease-out), translate var(--sc-d-fast) var(--sc-ease-out);
}
.av-btn:active { translate: 0 1px; }
.av-btn--primary { background: var(--sc-accent); color: var(--sc-accent-ink); }
.av-btn--primary:hover { background: color-mix(in oklab, var(--sc-accent) 84%, #fff); }
.chapter--loess .av-btn--primary, .chapter--sage .av-btn--primary, .chapter--white .av-btn--primary {
  background: var(--av-ink-dark); color: #fff;
}
.chapter--loess .av-btn--primary:hover, .chapter--sage .av-btn--primary:hover, .chapter--white .av-btn--primary:hover { background: #2A2F36; }
.av-btn--secondary { border-color: var(--av-stroke); color: var(--sc-ink); background: transparent; }
.av-btn--secondary:hover { border-color: var(--sc-ink); }
.av-btn--ghost { padding-inline: 0; background: none; color: var(--sc-ink); text-decoration: underline; text-underline-offset: 0.3em; text-decoration-color: color-mix(in oklab, var(--sc-ink) 40%, transparent); }
.av-btn--ghost:hover { text-decoration-color: var(--sc-accent); }
.av-btn:disabled { opacity: 0.45; cursor: not-allowed; }
.av-head__cta { min-height: 2.75rem; padding: 0.55rem 1.1rem; }

/* Язык: код в тон пунктам меню, по нажатию — короткий список с полными названиями.
   <details> работает и без JS; site.js закрывает меню кликом мимо и по Escape. */
.av-lang { position: relative; }
.av-lang summary { list-style: none; display: inline-flex; align-items: center; gap: 0.3rem; min-height: 2.75rem; padding-inline: 0.35rem;
  cursor: pointer; border-radius: var(--sc-r-sm); font-size: var(--sc-t-xs); font-weight: 600; letter-spacing: 0.14em;
  color: color-mix(in oklab, currentColor 78%, transparent); transition: color var(--sc-d-fast) var(--sc-ease-out); }
.av-lang summary::-webkit-details-marker { display: none; }
.av-lang summary:hover, .av-lang[open] summary { color: currentColor; }
.av-lang summary svg { width: 0.95rem; height: 0.95rem; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round;
  transition: rotate var(--sc-d-fast) var(--sc-ease-out); }
.av-lang[open] summary svg { rotate: 180deg; }
.av-lang__menu { position: absolute; top: calc(100% + 0.4rem); right: 0; z-index: 1; min-width: 11.5rem; margin: 0; padding: 0.35rem; list-style: none;
  background: var(--av-graphite-900); border-radius: var(--sc-r-sm); box-shadow: var(--sc-e2); }
.av-lang__menu a { display: flex; align-items: center; justify-content: space-between; gap: var(--sc-3); min-height: 2.75rem; padding: 0.5rem 0.75rem;
  border-radius: 4px; font-size: var(--sc-t-sm); text-decoration: none; color: color-mix(in oklab, var(--av-ink-light) 82%, transparent); }
.av-lang__menu a:hover { background: color-mix(in oklab, var(--av-ink-light) 8%, transparent); color: var(--av-ink-light); }
.av-lang__menu a[aria-current="true"] { color: var(--av-ink-light); font-weight: 600; }
.av-lang__menu a[aria-current="true"]::after { content: ""; flex: none; width: 0.45rem; height: 0.45rem; border-radius: 50%; background: var(--av-amber-500); }

.av-arrow {
  display: inline-grid; place-items: center;
  width: 3rem; height: 3rem; flex: 0 0 auto;
  border: 1px solid var(--av-stroke);
  border-radius: 50%;
  background: transparent; color: inherit;
  cursor: pointer; text-decoration: none;
  transition: background var(--sc-d-fast) var(--sc-ease-out), color var(--sc-d-fast) var(--sc-ease-out), border-color var(--sc-d-fast) var(--sc-ease-out);
}
.av-arrow svg { width: 1.05rem; height: 1.05rem; fill: none; stroke: currentColor; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }
.av-arrow:hover { background: var(--sc-accent); color: var(--sc-accent-ink); border-color: transparent; }

/* Чипы и сегмент. */
.av-chips { display: flex; flex-wrap: wrap; gap: var(--sc-2); margin: 0; padding: 0; list-style: none; }
.av-chip {
  display: inline-flex; align-items: center;
  min-height: 2.75rem;
  padding: 0.5rem 1rem;
  border: 1px solid var(--av-stroke);
  border-radius: var(--sc-r-pill);
  font: inherit; font-size: var(--sc-t-sm);
  background: transparent; color: inherit; cursor: pointer;
  transition: background var(--sc-d-fast) var(--sc-ease-out), color var(--sc-d-fast) var(--sc-ease-out), border-color var(--sc-d-fast) var(--sc-ease-out);
}
.av-chip:hover { border-color: currentColor; }
.av-chip[aria-pressed="true"] { background: var(--sc-ink); color: var(--sc-canvas); border-color: transparent; }
.chapter--black .av-chip[aria-pressed="true"] { color: var(--av-black); }
/* Две равные половины на всю ширину поля: у пилюли не остаётся пустого хвоста справа. */
.av-seg { display: flex; padding: 3px; border: 1px solid var(--av-stroke); border-radius: var(--sc-r-pill); }
.av-seg label { position: relative; flex: 1 1 0; min-width: 0; }
.av-seg input { position: absolute; inset: 0; opacity: 0; margin: 0; cursor: pointer; }
.av-seg span {
  display: block; padding: 0.75rem 1rem; border-radius: var(--sc-r-pill); text-align: center; white-space: nowrap;
  font-size: var(--sc-t-sm); font-weight: 600; line-height: 1.1; color: color-mix(in oklab, currentColor 76%, transparent);
  transition: background var(--sc-d-fast) var(--sc-ease-out), color var(--sc-d-fast) var(--sc-ease-out);
}
.av-seg input:checked + span { background: var(--sc-ink); color: var(--sc-canvas); }
.av-seg input:focus-visible + span { outline: 2px solid var(--sc-accent); outline-offset: 2px; }
/* Мелкий сегмент (единицы, режим тарифа) стоит в строке подписи: половинки по тексту, а не поровну. */
.av-seg--sm { flex: none; }
.av-seg--sm label { flex: 0 0 auto; }
.av-seg--sm span { padding: 0.55rem 0.85rem; font-size: var(--sc-t-xs); letter-spacing: 0.02em; }

/* Поля. */
.av-field { display: grid; gap: 0.4rem; align-content: start; }
.av-input, .av-select {
  min-height: 3rem;
  padding: 0.65rem 0.9rem;
  border: 1px solid var(--av-stroke);
  border-radius: var(--sc-r-sm);
  background: color-mix(in oklab, var(--sc-surface) 55%, transparent);
  color: var(--sc-ink);
  font: inherit; font-size: 1rem;
  width: 100%;
}
.av-select {
  appearance: none;
  padding-right: 2.4rem;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path d='M1 1.5l5 5 5-5' fill='none' stroke='%23A19C92' stroke-width='1.5' stroke-linecap='round'/></svg>");
  background-repeat: no-repeat; background-position: right 0.9rem center;
}
.av-input::placeholder { color: color-mix(in oklab, var(--sc-ink) 62%, transparent); }
.av-input[aria-invalid="true"] { border-color: var(--av-ember); box-shadow: 0 0 0 1px var(--av-ember); }
.av-error { margin: 0; font-size: var(--sc-t-sm); line-height: 1.35; color: var(--av-ember-ink); }

/* Регистр данных: подпись + значение, разделённые линейкой. */
.av-specs { display: grid; margin: 0; }
.av-specs > div {
  display: grid; gap: 0.3rem;
  padding-block: 0.8rem;
  border-top: 1px solid var(--sc-hairline-strong);
}
.av-specs dt, .av-specs dd { margin: 0; }

/* Модуль решётки: врезан в лист, не парит. */
.av-module {
  position: relative;
  display: grid; grid-template-rows: auto 1fr; gap: 0;
  border: 1px solid var(--sc-hairline-strong);
  background: color-mix(in oklab, var(--sc-ink) 4%, transparent);
  box-shadow: inset 0 2px 0 color-mix(in oklab, var(--sc-ink) 8%, transparent), inset 0 0 0 1px color-mix(in oklab, #fff 20%, transparent);
  color: inherit; text-decoration: none;
}
.av-module__media { position: relative; overflow: hidden; aspect-ratio: 1; background: var(--av-graphite-900); }
.av-module__media img { width: 100%; height: 100%; object-fit: cover; transition: scale 900ms var(--sc-ease-out); }
.av-module:hover .av-module__media img { scale: 1.035; }
.av-module__body { display: grid; gap: var(--sc-3); padding: var(--sc-4) var(--sc-4) var(--sc-5); }
.av-module__row { display: flex; align-items: center; justify-content: space-between; gap: var(--sc-3); }

/* Слот данных: место под настоящее значение. Выглядит намеренно и одинаково
   везде — штриховка как у заглушки фото, слово вместо «N» и «—». */
.av-slot {
  display: inline-flex; align-items: center;
  padding: 0.28em 0.7em;
  border: 1px dashed color-mix(in oklab, currentColor 50%, transparent);
  border-radius: var(--sc-r-sm);
  background-image: repeating-linear-gradient(-45deg, transparent 0 6px, color-mix(in oklab, currentColor 9%, transparent) 6px 7px);
  font-family: var(--sc-font-text); font-size: var(--sc-t-xs); font-weight: 600; line-height: 1.2;
  letter-spacing: 0.1em; text-transform: uppercase;
  color: color-mix(in oklab, currentColor 88%, transparent);
  white-space: nowrap; vertical-align: 0.1em;
}
/* Ярлык выбора в сводке заявки: снимается крестиком. */
.av-tag {
  display: inline-flex; align-items: center; gap: 0.35rem;
  padding: 0.3rem 0.3rem 0.3rem 0.85rem;
  border-radius: var(--sc-r-pill);
  background: var(--av-graphite-950); color: var(--av-ink-light);
  font-size: var(--sc-t-sm); font-weight: 600;
}
.av-tag button {
  display: inline-grid; place-items: center;
  width: 2rem; height: 2rem; border: 0; border-radius: 50%;
  background: color-mix(in oklab, var(--av-ink-light) 14%, transparent); color: inherit; cursor: pointer;
}
.av-tag button:hover { background: var(--av-amber-500); color: var(--av-graphite-950); }
.av-tag svg { width: 0.9rem; height: 0.9rem; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; }
@media (pointer: coarse) { .av-tag button { width: 2.75rem; height: 2.75rem; } }

/* ------------------------------------------------------------------ 5 ---- */
/* 5.1 Hero «Один день Узбекистана». Шесть кадров маршрута, смена — функция от --p.
   Входящий кадр проявляется поверх непрозрачного исходящего: фон не мигает. */
.hero { background: var(--av-graphite-950); color: var(--av-ink-light); }
.hero__stage { --p: var(--sc-p, 0); --n: 6; --seam: 0.06; overflow: clip; background: var(--av-graphite-950); color: var(--av-ink-light); }
.journey { position: absolute; inset: 0; overflow: hidden; }
.journey__leg { position: absolute; inset: 0; margin: 0;
  --local: clamp(0, calc((var(--p) - var(--a)) * var(--n)), 1);
  opacity: clamp(0, calc((var(--p) - var(--a) + var(--seam)) / (2 * var(--seam))), 1);
}
.journey__leg:first-child { opacity: 1; }
.journey__leg:first-child { --a: 0; }
.journey__leg img { width: 100%; height: 100%; object-fit: cover; object-position: var(--pos, 50% 50%);
  scale: calc(1.07 - var(--local) * 0.07); will-change: scale; }
.hero__film { object-position: var(--film-pos, 50% 50%); }
/* Шапка лежит на ярком небе полудня и заката: мягкая тень по верхнему краю кадра. */
.hero__stage::before { content: ""; position: absolute; inset: 0 0 auto 0; height: 24%; z-index: 2; pointer-events: none;
  background: linear-gradient(to bottom, color-mix(in oklab, var(--av-graphite-950) 62%, transparent) 0%, transparent 100%); }
.hero.av-film-painted .journey { visibility: hidden; transition: visibility 0s linear 0.45s; }
.hero__haze { position: absolute; inset: auto 0 0 0; height: 62%; pointer-events: none; z-index: 1;
  background: linear-gradient(to top, color-mix(in oklab, var(--av-graphite-950) 94%, transparent) 0%,
    color-mix(in oklab, var(--av-graphite-950) 58%, transparent) 34%, transparent 100%); }
.hero__lead-scrim { position: absolute; inset: 0 45% 0 0; pointer-events: none; z-index: 1;
  background: linear-gradient(90deg, color-mix(in oklab, var(--av-graphite-950) 62%, transparent) 0%, transparent 100%); }
/* Слово — только на первом кадре, дальше лист отдаёт место пейзажу. */
.hero__intro { position: absolute; inset: 0; pointer-events: none; z-index: 2;
  opacity: clamp(0, calc(1 - (var(--p) - 0.06) * 12), 1); }
.hero { --av-word-top: calc(var(--av-head-h) + 10vh); }
.hero__wordwrap { position: absolute; left: 0; right: 0; top: var(--av-word-top); text-align: center; }
.hero__word { color: var(--av-ink-light); letter-spacing: -0.015em; text-shadow: 0 2px 0 color-mix(in oklab, var(--av-graphite-950) 40%, transparent); }
/* Титр места и времени: как в документальном кино — угол кадра, своя подложка. */
.hero__caption { position: absolute; right: var(--sc-gutter); bottom: calc(clamp(1.4rem, 3vh, 2.2rem) + 4.3rem); z-index: 3;
  pointer-events: none; min-width: 12.5rem; min-height: 1.6rem; text-align: right; }
.hero__caption::before { content: ""; position: absolute; inset: -3rem -3.5rem -3rem -7rem; z-index: -1;
  background: radial-gradient(closest-side, color-mix(in oklab, var(--av-graphite-950) 62%, transparent), transparent); }
.hero__place { position: absolute; right: 0; bottom: 0; margin: 0; white-space: nowrap;
  font-size: var(--sc-t-sm); font-weight: 600; letter-spacing: 0.04em; font-variant-numeric: tabular-nums;
  color: var(--av-ink-light); text-shadow: 0 1px 12px rgb(0 0 0 / 0.5); }
/* Шкала дня: печатная линейка времени, солнце идёт по ней вместе с прокруткой. */
.dayscale { position: absolute; left: var(--sc-gutter); right: var(--sc-gutter); bottom: clamp(1.4rem, 3vh, 2.2rem);
  z-index: 3; pointer-events: none; opacity: clamp(0, calc((var(--p) - 0.08) * 14), 1); }
.dayscale__track { position: relative; height: 1px; background: color-mix(in oklab, var(--av-ink-light) 34%, transparent); }
.dayscale__fill { position: absolute; left: 0; top: -1px; height: 3px; width: calc(var(--p) * 100%); background: var(--av-amber-500); }
.dayscale__sun { position: absolute; top: 50%; left: calc(var(--p) * 100%); width: 0.9rem; height: 0.9rem; translate: -50% -50%;
  border-radius: 50%; background: var(--av-amber-300); box-shadow: 0 0 0 4px color-mix(in oklab, var(--av-amber-500) 30%, transparent); }
.dayscale__ticks { position: relative; height: 2.4rem; margin: 0.7rem 0 0; padding: 0; list-style: none; }
.dayscale__ticks li { position: absolute; top: 0; left: calc(var(--at) * 100%); translate: -50% 0; text-align: center; white-space: nowrap; }
.dayscale__ticks li { font-size: var(--sc-t-xs); letter-spacing: 0.14em; text-transform: uppercase; font-weight: 600;
  color: color-mix(in oklab, var(--av-ink-light) 62%, transparent); }
.dayscale__ticks li b { display: block; font-weight: 500; letter-spacing: 0.02em; text-transform: none; color: var(--av-ink-light);
  font-size: var(--sc-t-sm); font-variant-numeric: tabular-nums; }
/* Копия. */
.hero__copy { bottom: clamp(6.5rem, 17vh, 11rem); max-width: min(46rem, 62vw); }
.hero__h1 { color: var(--av-ink-light); }
.hero__lede { color: color-mix(in oklab, var(--av-ink-light) 86%, transparent); margin-top: var(--sc-4); }
.hero__cta { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sc-3); margin-top: var(--sc-5); }
.hero .av-btn--secondary { color: var(--av-ink-light); border-color: color-mix(in oklab, var(--av-ink-light) 60%, transparent);
  background: color-mix(in oklab, var(--av-graphite-950) 38%, transparent); }
.hero .av-btn--secondary:hover { border-color: var(--av-ink-light); background: color-mix(in oklab, var(--av-graphite-950) 60%, transparent); }
.leg-copy { bottom: clamp(6.5rem, 17vh, 11rem); max-width: min(34rem, 60vw); }
.leg-copy .av-h2 { color: var(--av-ink-light); }
.leg-copy p { margin: var(--sc-3) 0 0; color: color-mix(in oklab, var(--av-ink-light) 86%, transparent); font-size: var(--sc-t-base); max-width: 38ch; }
.leg-copy .av-btn--ghost { margin-top: var(--sc-4); color: var(--av-ink-light); }
/* Док: маршрутизатор заявки — печатная плашка, финал ночного кадра. */
.hero__dock {
  position: absolute; left: var(--sc-gutter); right: var(--sc-gutter); bottom: clamp(6.5rem, 15vh, 9rem);
  z-index: calc(var(--sc-z-copy) + 1); max-width: 64rem;
  display: flex; flex-wrap: wrap; align-items: end; gap: var(--sc-4) var(--sc-5);
  padding: var(--sc-4) var(--sc-5);
  background: color-mix(in oklab, var(--av-graphite-900) 94%, transparent);
  box-shadow: var(--sc-e3); color: var(--av-ink-light);  /* край держат плотность и тень: у hero нет линий */
}
.hero__dock-title { flex: 1 1 100%; margin: 0; font-family: var(--sc-font-display); font-weight: 600; font-size: var(--av-t-h3); letter-spacing: -0.02em; }
.hero__dock .av-field { flex: 1 1 12rem; max-width: 22rem; }
.hero__dock .av-label { color: color-mix(in oklab, var(--av-ink-light) 66%, transparent); }
.hero__dock-actions { display: flex; gap: var(--sc-3); align-items: center; margin-inline-start: auto; }
.hero.is-static .hero__stage { position: relative; height: 100svh; min-height: 38rem; }

/* 5.2 Две двери: дом и бизнес — диптих во всю ширину, двери расходятся от шва. */
.doors { padding-block: 0 var(--sc-7); }
.doors__pair {
  display: grid; grid-template-columns: 1fr 1fr; gap: 3px;
  height: clamp(30rem, 86svh, 60rem);
  background: var(--av-loess);
  transition: grid-template-columns 700ms var(--sc-ease-out);
}
.doors__pair:has(.door--home:hover, .door--home:focus-visible) { grid-template-columns: 1.24fr 0.76fr; }
.doors__pair:has(.door--biz:hover, .door--biz:focus-visible) { grid-template-columns: 0.76fr 1.24fr; }
.door { position: relative; overflow: hidden; display: block; min-width: 0; isolation: isolate;
  color: var(--av-ink-light); text-decoration: none; background: var(--av-graphite-950);
  transition: clip-path 1100ms var(--sc-ease-out); }
.door img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: scale 1400ms var(--sc-ease-out); }
.door--home img { object-position: 50% 42%; }
.door--biz img { object-position: 30% 50%; filter: brightness(1.45) contrast(1.06); }
.door:hover img, .door:focus-visible img { scale: 1.04; }
.door::after { content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none;
  background: linear-gradient(to top, rgb(11 13 16 / 0.88) 0%, rgb(11 13 16 / 0.4) 34%, transparent 60%); }
.door__body { position: absolute; left: 0; right: 0; bottom: 0; z-index: 2; display: grid; gap: var(--sc-4);
  padding: var(--sc-6) clamp(1.25rem, 3.5vw, 3.5rem) clamp(1.5rem, 4vh, 3rem); }
.door__word { font-size: clamp(3.2rem, 8.6vw, 9.5rem); line-height: 0.82; color: var(--av-ink-light); }
.door__row { display: flex; align-items: center; justify-content: space-between; gap: var(--sc-4); max-width: 34rem; }
.door__lede { font-size: var(--sc-t-base); line-height: 1.4; color: color-mix(in oklab, var(--av-ink-light) 90%, transparent); text-wrap: pretty; }
.door .av-arrow { border-color: color-mix(in oklab, var(--av-ink-light) 64%, transparent); }
.door:hover .av-arrow, .door:focus-visible .av-arrow { background: var(--av-amber-500); color: var(--av-graphite-950); border-color: transparent; }
.door--biz { transition-delay: 70ms; }
.js .doors__pair[data-sc-in] { opacity: 1; transform: none; }
.js .doors__pair[data-sc-in]:not(.sc-in) .door--home { clip-path: inset(0 0 0 100%); }
.js .doors__pair[data-sc-in]:not(.sc-in) .door--biz { clip-path: inset(0 100% 0 0); }
.doors__strip { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: var(--sc-6);
  margin-top: var(--sc-6); padding-block: var(--sc-5);
  border-top: 1px solid var(--sc-hairline-strong); border-bottom: 1px solid var(--sc-hairline-strong);
  color: var(--sc-ink); text-decoration: none; }
.doors__strip-text { color: var(--sc-ink-soft); text-wrap: pretty; }
.doors__strip:hover .av-arrow, .doors__strip:focus-visible .av-arrow { background: var(--av-ink-dark); color: #fff; border-color: transparent; }

/* 5.3 Витрина «Готовые решения»: огромная контурная буква за экспонатом,
   входящий комплект проявляется поверх непрозрачного уходящего. */
.kits { color: var(--av-ink-light); }
.kits__stage {
  --p: var(--sc-p, 0);
  background: var(--av-graphite-950); /* ровный фон: студийный свет несут сами кадры, их края растворяются без шва */
  color: var(--av-ink-light);
}
.kits__inner {
  position: absolute; inset: 0;
  max-width: var(--sc-maxw); margin-inline: auto;
  padding: calc(var(--av-head-h) + var(--sc-6)) var(--sc-gutter) var(--sc-7);
  display: grid;
  grid-template-columns: 9rem minmax(0, 1fr) 17rem;
  grid-template-rows: auto minmax(0, 1fr);
  column-gap: var(--sc-6);
}
.kits__head { grid-column: 1 / -1; display: flex; align-items: end; justify-content: space-between; gap: var(--sc-5); padding-bottom: var(--sc-5); }
.kits__head p { color: color-mix(in oklab, var(--av-ink-light) 72%, transparent); }
.kits__index { list-style: none; margin: 0; padding: 0; display: grid; align-content: center; gap: var(--sc-5); grid-column: 1; grid-row: 2; }
.kits__index li {
  display: flex; align-items: center; gap: 0.7rem;
  font-weight: 600; font-size: var(--sc-t-sm); letter-spacing: 0.01em;
}
.kits__index li::before { content: ""; width: 0.55rem; height: 0.55rem; border-radius: 50%; border: 1px solid currentColor; }
.kits__index li[data-kit="S"] { --on: clamp(0, calc((0.38 - var(--p)) * 12), 1); }
.kits__index li[data-kit="M"] { --on: min(clamp(0, calc((var(--p) - 0.34) * 12), 1), clamp(0, calc((0.7 - var(--p)) * 12), 1)); }
.kits__index li[data-kit="L"] { --on: clamp(0, calc((var(--p) - 0.66) * 12), 1); }
.kits__index li { color: color-mix(in oklab, var(--av-amber-500) calc(var(--on, 0) * 100%), color-mix(in oklab, var(--av-ink-light) 56%, transparent)); }
.kits__index li::before { background: color-mix(in oklab, var(--av-amber-500) calc(var(--on, 0) * 100%), transparent); }
.kit { display: contents; }
/* --vis — экспонат: входящий проявляется поверх непрозрачного уходящего, уходящий снимается сразу. */
.kit[data-kit="S"] { --vis: clamp(0, calc((0.42 - var(--p)) * 1000), 1); }
.kit[data-kit="M"] { --vis: min(clamp(0, calc((var(--p) - 0.34) / 0.06), 1), clamp(0, calc((0.74 - var(--p)) * 1000), 1)); }
.kit[data-kit="L"] { --vis: clamp(0, calc((var(--p) - 0.66) / 0.06), 1); }
.kit__fig {
  grid-column: 2; grid-row: 2; position: relative; margin: 0; min-height: 0; z-index: 1;
  display: grid; place-items: end center; padding-bottom: 1.6rem;
  opacity: var(--vis, 1);
  scale: calc(0.95 + var(--p) * 0.06);
}
.kit[data-kit="M"] .kit__fig { z-index: 2; }
.kit[data-kit="L"] .kit__fig { z-index: 3; }
/* Экспонат стоит в сцене один, без фоновых букв и линий. Края кадра растворяются в сцене:
   маска работает только по фону у краёв и не режет экспонат. */
.kit__fig img { height: 74%; width: auto; max-width: 100%; aspect-ratio: 4 / 3; object-fit: contain; object-position: 50% 100%; /* рамка = кадр: растушёвка ложится на края снимка, а не на пустые поля вокруг */
  /* Крайние 2 % прозрачны целиком: у масштабированного кадра крайний ряд пикселей иначе проступает линией. */
  -webkit-mask-image: linear-gradient(to right, transparent 0 2%, #000 16%, #000 84%, transparent 98% 100%), linear-gradient(to bottom, transparent 0 2%, #000 25%, #000 90%, transparent 98.5% 100%);
  -webkit-mask-composite: source-in;
          mask-image: linear-gradient(to right, transparent 0 2%, #000 16%, #000 84%, transparent 98% 100%), linear-gradient(to bottom, transparent 0 2%, #000 25%, #000 90%, transparent 98.5% 100%);
          mask-composite: intersect;
  -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; clip-path: inset(1px); /* шов Chrome: крайний столбец масштабированного слоя без маски */ }
.kit__specs { grid-column: 3; grid-row: 2; align-self: center; margin: 0; position: relative; z-index: 4; }
.kit__specs .kit__name { border: 0; padding-bottom: var(--sc-3); }
.kit__specs .kit__name dd { font-family: var(--sc-font-display); font-weight: 600; font-size: clamp(1.5rem, 1rem + 1.1vw, 2.1rem);
  line-height: 1.04; letter-spacing: -0.03em; }
/* Схема системы — путь энергии сверху вниз: узлы на одной вертикальной шине, между узлами — шеврон
   направления, конечный узел (потребитель) залит янтарём. Каждый шаг — своя строка, поэтому цепочка
   не рвётся переносом и одинаково выровнена у всех трёх систем. */
.kit__chain { --row: 1.3em; --pad: 0.32rem; --x: 0.3rem;
  display: grid; margin: 0.2rem 0 0; padding: 0; list-style: none; line-height: 1.3;
  background: linear-gradient(color-mix(in oklab, var(--av-amber-500) 55%, transparent), color-mix(in oklab, var(--av-amber-500) 55%, transparent))
    no-repeat calc(var(--x) + 0.3rem - 0.5px) calc(var(--pad) + var(--row) / 2) / 1px calc(100% - 2 * var(--pad) - var(--row)); }
.kit__chain li { position: relative; padding: var(--pad) 0 var(--pad) 1.6rem; }
.kit__chain li::before { content: ""; position: absolute; left: var(--x); top: calc(var(--pad) + var(--row) / 2 - 0.3rem); width: 0.6rem; height: 0.6rem;
  box-sizing: border-box; border-radius: 50%; border: 1.5px solid var(--av-amber-500); background: var(--av-graphite-950); }
.kit__chain li:last-child::before { background: var(--av-amber-500); }
.kit__chain li + li::after { content: ""; position: absolute; left: var(--x); top: -0.2rem; width: 0.6rem; height: 0.4rem; /* середина отрезка между точками */
  background: var(--av-amber-500);
  -webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'><path d='M1.5 1.5 6 6l4.5-4.5' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/></svg>") center / contain no-repeat;
          mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'><path d='M1.5 1.5 6 6l4.5-4.5' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/></svg>") center / contain no-repeat; }
.kit__specs dt { color: color-mix(in oklab, var(--av-ink-light) 64%, transparent); }
.kit__specs dd { color: var(--av-ink-light); }
.kit__specs .kit__cta { border: 0; padding-top: var(--sc-5); }
.kits.is-stacked .kits__stage { position: relative; height: auto; }
.kits.is-stacked .kits__inner { position: static; display: block; padding-block: var(--sc-section); }
.kits.is-stacked .kits__index { display: none; }
.kits.is-stacked .kit { display: grid; grid-template-columns: minmax(0, 3fr) minmax(0, 2fr); gap: var(--sc-6); align-items: center;
  padding-block: var(--sc-6); border-top: 1px solid color-mix(in oklab, var(--av-ink-light) 18%, transparent); }
.kits.is-stacked .kit__fig, .kits.is-stacked .kit__specs { grid-column: auto; grid-row: auto; }
.kits.is-stacked .kit__fig { --vis: 1; opacity: 1; scale: 1; padding-bottom: 0; }

/* 5.3a Станция 10 кВт: спецификация — документ, лежащий на листе лёсса. Не «большая цифра
   с плашками»: цена стоит там, где её ставит смета, — в строке «Итого» под двойной линейкой. */
.station { padding-block: var(--sc-section); }
.station__grid { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: var(--sc-8); align-items: start; }
.station__copy { display: grid; gap: var(--sc-5); align-content: start; }
.station__copy .av-lede { max-width: 30ch; }
.station__terms dd { font-size: var(--sc-t-base); line-height: 1.45; text-wrap: pretty; }
.station__actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sc-3) var(--sc-6); margin-top: var(--sc-2); }
.station__sheet { margin: 0; padding: clamp(1.25rem, 3.2vw, 2.75rem); background: #FFFFFF; color: var(--av-ink-dark); box-shadow: var(--sc-e2);
  font-variant-numeric: tabular-nums; }
.station__sheet-head { display: flex; justify-content: space-between; gap: var(--sc-4); padding-bottom: var(--sc-4); border-bottom: 1px solid var(--sc-ink); }
.station__list { margin: 0; padding: 0; list-style: none; counter-reset: pos; }
.station__list li { counter-increment: pos; display: grid; grid-template-columns: 2.25rem minmax(0, 1fr) auto; column-gap: var(--sc-4); row-gap: 0.15rem;
  align-items: baseline; padding-block: var(--sc-4); border-bottom: 1px solid var(--sc-hairline); }
.station__list li:last-child { border-bottom: 0; }
.station__list li::before { content: counter(pos, decimal-leading-zero); grid-row: 1 / 3; font-size: var(--sc-t-xs); font-weight: 600; letter-spacing: 0.12em;
  color: color-mix(in oklab, var(--sc-ink) 60%, transparent); }
.station__list b { grid-column: 2; font-weight: 600; font-size: var(--sc-t-base); line-height: 1.3; }
.station__list span { grid-column: 2; font-size: var(--sc-t-sm); line-height: 1.45; color: var(--sc-ink-soft); text-wrap: pretty; }
.station__list em { grid-column: 3; grid-row: 1; font-style: normal; font-weight: 600; font-size: var(--sc-t-sm); text-align: right; white-space: nowrap; }
/* «Итого» — как в смете: двойная линейка, подпись слева, сумма справа. */
.station__total { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline; gap: var(--sc-2) var(--sc-5);
  margin: var(--sc-5) 0 0; padding-top: var(--sc-4); border-top: 3px double var(--sc-ink); }
.station__total .av-label { color: var(--sc-ink); }
.station__total b { font-family: var(--sc-font-display); font-weight: 600; font-size: clamp(1.4rem, 1rem + 1.5vw, 2.25rem); letter-spacing: -0.03em; line-height: 1; white-space: nowrap; }
.station__sheet { transition: opacity 900ms var(--sc-ease-out), translate 900ms var(--sc-ease-out); }
.js .station__sheet[data-sc-in] { transform: none; }
.js .station__sheet[data-sc-in]:not(.sc-in) { translate: 0 1.5rem; }

/* 5.3b Калькулятор: прибор на ночном листе. Слева — ввод, справа — ответ, освещённый янтарём;
   под ними горизонт: ниже линии — ночь вложений (штриховка), выше — день выгоды, солнце встаёт
   в год окупаемости. Ползунок — та же шкала, что шкала дня в hero: волосяная линия и солнце. */
.calc { padding-block: var(--sc-section); color: var(--av-ink-light); }
.calc__head { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 26rem); align-items: end; gap: var(--sc-4) var(--sc-7); margin-bottom: var(--sc-7); }
.calc__head .av-body { color: color-mix(in oklab, var(--av-ink-light) 72%, transparent); }
.calc__nojs { display: none; }
html:not(.js) .calc__nojs { display: block; margin: 0; max-width: 58ch; color: color-mix(in oklab, var(--av-ink-light) 86%, transparent); }
html:not(.js) .calc__nojs a { color: var(--av-amber-300); }
html:not(.js) .calc__grid, html:not(.js) .calc__chart { display: none; }
.calc__grid { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); border-top: 1px solid color-mix(in oklab, var(--av-ink-light) 22%, transparent); }
.calc__form { display: grid; gap: var(--sc-6); align-content: start; padding: var(--sc-6) var(--sc-7) var(--sc-6) 0;
  border-right: 1px solid color-mix(in oklab, var(--av-ink-light) 14%, transparent); }
.calc__form .av-label { color: color-mix(in oklab, var(--av-ink-light) 70%, transparent); }
.calc__row { display: grid; grid-template-columns: 1fr 1fr; gap: var(--sc-5); }
.calc__usage-head { display: flex; align-items: center; justify-content: space-between; gap: var(--sc-3); flex-wrap: wrap; }
.calc__usage-row { display: grid; grid-template-columns: minmax(0, 1fr) 13.5rem; align-items: center; gap: var(--sc-5); }
.calc__num { position: relative; }
.calc__num .av-input { padding-right: 4.6rem; text-align: right; font-weight: 600; font-variant-numeric: tabular-nums; }
.calc__unit { position: absolute; right: 0.9rem; top: 50%; translate: 0 -50%; pointer-events: none; font-size: var(--sc-t-sm);
  color: color-mix(in oklab, var(--av-ink-light) 70%, transparent); }
.calc__form .av-input { font-variant-numeric: tabular-nums; }
.calc__form input[type="number"] { -moz-appearance: textfield; appearance: textfield; }
.calc__form input[type="number"]::-webkit-inner-spin-button, .calc__form input[type="number"]::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }
.calc__form .av-input:hover { border-color: color-mix(in oklab, var(--av-ink-light) 70%, transparent); }
.calc__form .av-input:focus-visible { border-color: var(--av-ink-light); }
.calc__form .av-hint { color: color-mix(in oklab, var(--av-ink-light) 66%, transparent); font-variant-numeric: tabular-nums; }
/* Ползунок: линия 1 px, пройденная часть — янтарь 3 px, бегунок — солнце. */
.calc__range { --fill: 7%; -webkit-appearance: none; appearance: none; width: 100%; height: 2.75rem; margin: 0; background: transparent; cursor: pointer; touch-action: pan-y; }
.calc__range::-webkit-slider-runnable-track { height: 3px;
  background: linear-gradient(to right, var(--av-amber-500) var(--fill), transparent var(--fill)),
              linear-gradient(color-mix(in oklab, var(--av-ink-light) 34%, transparent), color-mix(in oklab, var(--av-ink-light) 34%, transparent)) 0 1px / 100% 1px no-repeat; }
.calc__range::-moz-range-track { height: 1px; background: color-mix(in oklab, var(--av-ink-light) 34%, transparent); }
.calc__range::-moz-range-progress { height: 3px; background: var(--av-amber-500); }
.calc__range::-webkit-slider-thumb { -webkit-appearance: none; appearance: none; width: 1.4rem; height: 1.4rem; margin-top: calc((3px - 1.4rem) / 2); border-radius: 50%;
  background: var(--av-amber-300); border: 4px solid var(--av-graphite-950); box-shadow: 0 0 0 1px var(--av-amber-500); transition: scale var(--sc-d-fast) var(--sc-ease-out); }
.calc__range::-moz-range-thumb { width: 1.4rem; height: 1.4rem; box-sizing: border-box; border-radius: 50%;
  background: var(--av-amber-300); border: 4px solid var(--av-graphite-950); box-shadow: 0 0 0 1px var(--av-amber-500); }
.calc__range:hover::-webkit-slider-thumb, .calc__range:active::-webkit-slider-thumb { scale: 1.12; }
.calc__range:focus-visible { outline: none; }
.calc__range:focus-visible::-webkit-slider-thumb { outline: 2px solid var(--av-amber-500); outline-offset: 3px; }
.calc__range:focus-visible::-moz-range-thumb { outline: 2px solid var(--av-amber-500); outline-offset: 3px; }
/* Ответ. */
.calc__result { display: grid; align-content: start; gap: var(--sc-3); padding: var(--sc-6) 0 var(--sc-6) var(--sc-7); }
.calc__result > .av-label { margin: 0; color: color-mix(in oklab, var(--av-ink-light) 70%, transparent); }
.calc__kw { margin: 0; font-family: var(--sc-font-display); font-weight: 700; font-size: clamp(3rem, 2rem + 3.6vw, 5.75rem);
  line-height: 0.9; letter-spacing: -0.045em; color: var(--av-amber-300); font-variant-numeric: tabular-nums; white-space: nowrap; }
.calc__kw small { font-size: 0.42em; font-weight: 600; letter-spacing: -0.02em; color: var(--av-ink-light); }
.calc__panels { margin: 0; font-size: var(--sc-t-sm); color: color-mix(in oklab, var(--av-ink-light) 76%, transparent); font-variant-numeric: tabular-nums; }
.calc__specs { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: var(--sc-5); margin-top: var(--sc-4); }
.calc__specs > div { border-top-color: color-mix(in oklab, var(--av-ink-light) 22%, transparent); }
.calc__specs dt { color: color-mix(in oklab, var(--av-ink-light) 66%, transparent); }
.calc__specs dd { font-family: var(--sc-font-display); font-weight: 500; font-size: clamp(1.1rem, 0.95rem + 0.5vw, 1.4rem); letter-spacing: -0.02em;
  font-variant-numeric: tabular-nums; white-space: nowrap; }
.calc__total { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline; gap: var(--sc-2) var(--sc-4); margin: 0;
  padding-block: var(--sc-4); border-top: 1px solid color-mix(in oklab, var(--av-ink-light) 22%, transparent); }
.calc__total .av-label { color: color-mix(in oklab, var(--av-ink-light) 66%, transparent); }
.calc__total b { font-family: var(--sc-font-display); font-weight: 600; font-size: clamp(1.2rem, 1rem + 0.7vw, 1.6rem); letter-spacing: -0.02em;
  color: var(--av-amber-300); font-variant-numeric: tabular-nums; white-space: nowrap; }
.calc__send { justify-self: start; margin-top: var(--sc-2); }
/* Телефон: пока на экране поля, а ответ ниже экрана, итог держится строкой у нижнего края. */
.calc__peek { display: none; }
/* Приборы: таблица без таблицы — ряды на общей сетке с шапкой; на телефоне ряд встаёт в две строки,
   и у каждого поля появляется своя подпись. */
.calc__appl { display: grid; gap: var(--sc-3); }
.calc__appl-head, .calc__appl-row { display: grid; grid-template-columns: minmax(0, 1fr) 5.5rem 5.5rem 4.25rem 2.5rem; gap: var(--sc-2); align-items: center; }
.calc__appl-head { font-size: var(--sc-t-xs); font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase; color: color-mix(in oklab, var(--av-ink-light) 62%, transparent); }
.calc__appl-head span:not(:first-child) { text-align: right; padding-right: 0.6rem; }
.calc__appl-list { display: grid; gap: var(--sc-2); margin: 0; padding: 0; list-style: none; }
.calc__appl-row { padding-block: 0.1rem; }
.calc__appl-name { min-width: 0; font-size: var(--sc-t-sm); overflow-wrap: anywhere; }
.calc__appl-row .av-input { min-height: 2.5rem; padding: 0.45rem 0.6rem; font-size: var(--sc-t-sm); text-align: right; }
.calc__appl-row input.calc__appl-name { text-align: left; }
.calc__appl-f { display: block; }
.calc__appl-f span { display: none; }
.calc__appl-del { display: inline-grid; place-items: center; width: 2.5rem; height: 2.5rem; border: 0; border-radius: 50%; background: transparent;
  color: color-mix(in oklab, var(--av-ink-light) 70%, transparent); cursor: pointer; transition: background var(--sc-d-fast) var(--sc-ease-out), color var(--sc-d-fast) var(--sc-ease-out); }
.calc__appl-del:hover { background: color-mix(in oklab, var(--av-ink-light) 10%, transparent); color: var(--av-ink-light); }
.calc__appl-del svg { width: 0.95rem; height: 0.95rem; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; }
.calc__appl-add { display: flex; flex-wrap: wrap; gap: var(--sc-3); }
.calc__appl-add .av-select { flex: 1 1 14rem; width: auto; min-height: 2.75rem; }
.calc__appl-custom { min-height: 2.75rem; padding-block: 0.55rem; color: var(--av-ink-light); }
/* Покрытие, тариф, программа. */
.calc__cover-v { font-family: var(--sc-font-display); font-weight: 600; font-size: 1.05rem; color: var(--av-amber-300); font-variant-numeric: tabular-nums; }
.calc__row--tariff { grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); }
.calc__program { justify-items: start; }
.calc__program .av-chip { border-color: color-mix(in oklab, var(--av-ink-light) 42%, transparent); }
.calc__program .av-chip::before { content: ""; flex: none; width: 1rem; height: 1rem; margin-right: 0.6rem; border-radius: 50%;
  border: 1.5px solid currentColor; background: transparent; box-sizing: border-box; }
.calc__program .av-chip[aria-pressed="true"]::before { border-color: var(--av-amber-500); background: radial-gradient(circle, var(--av-amber-500) 0 42%, transparent 46%); }
.calc__program .av-chip[aria-pressed="true"] { background: transparent; color: var(--av-ink-light); border-color: var(--av-amber-500); }
.calc__specs .calc__wide { grid-column: 1 / -1; }
/* Подсказка про готовую станцию и заметки. */
.calc__match { margin: 0; padding: var(--sc-3) 0; border-top: 1px solid color-mix(in oklab, var(--av-ink-light) 22%, transparent);
  font-size: var(--sc-t-sm); line-height: 1.45; color: color-mix(in oklab, var(--av-ink-light) 82%, transparent); text-wrap: pretty; }
.calc__match a { color: var(--av-amber-300); text-decoration-color: color-mix(in oklab, var(--av-amber-300) 50%, transparent); }
.calc__notes { display: grid; gap: var(--sc-2); margin: 0; padding: 0; list-style: none; font-size: var(--sc-t-sm); line-height: 1.45;
  color: color-mix(in oklab, var(--av-ink-light) 82%, transparent); }
.calc__notes li { position: relative; padding-left: 1.1rem; text-wrap: pretty; }
.calc__notes li::before { content: ""; position: absolute; left: 0.1rem; top: 0.55em; width: 0.4rem; height: 0.4rem; border-radius: 50%; background: var(--av-amber-500); }
/* Горизонт. */
.calc__chart { margin: var(--sc-7) 0 0; padding-top: var(--sc-6); border-top: 1px solid color-mix(in oklab, var(--av-ink-light) 22%, transparent); }
.calc__chart-head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline; gap: var(--sc-2) var(--sc-6); margin-bottom: var(--sc-5); }
.calc__chart-sub { max-width: 52ch; font-size: var(--sc-t-sm); color: color-mix(in oklab, var(--av-ink-light) 72%, transparent); text-wrap: pretty; }
.calc__svg { display: block; width: 100%; height: clamp(15rem, 30vw, 22rem); overflow: visible; touch-action: pan-y; cursor: crosshair; }
.calc__svg .ch-grid { stroke: color-mix(in oklab, var(--av-ink-light) 10%, transparent); stroke-width: 1; }
.calc__svg .ch-zero { stroke: color-mix(in oklab, var(--av-ink-light) 52%, transparent); stroke-width: 1; }
.calc__svg text { font-family: var(--sc-font-text); font-size: 12px; font-weight: 500; fill: color-mix(in oklab, var(--av-ink-light) 66%, transparent); font-variant-numeric: tabular-nums; }
.calc__svg .ch-line { fill: none; stroke-width: 2.5; stroke-linejoin: round; stroke-linecap: round; }
.calc__svg .ch-line--up { stroke: var(--av-amber-300); }
.calc__svg .ch-line--down { stroke: color-mix(in oklab, var(--av-ink-light) 62%, transparent); }
.calc__svg .ch-sun circle { fill: var(--av-amber-300); }
.calc__svg .ch-sun path { stroke: var(--av-amber-300); stroke-width: 1.5; stroke-linecap: round; fill: none; }
.calc__svg .ch-sun text { font-size: 13px; font-weight: 600; fill: var(--av-amber-300); }
.calc__svg .ch-sun--none text { fill: color-mix(in oklab, var(--av-ink-light) 80%, transparent); }
.calc__svg .ch-cursor line { stroke: color-mix(in oklab, var(--av-ink-light) 44%, transparent); stroke-width: 1; }
.calc__svg .ch-cursor circle { fill: var(--av-graphite-950); stroke: var(--av-amber-300); stroke-width: 2; }
.calc__svg .ch-cursor rect { fill: var(--av-graphite-800); }
.calc__svg .ch-cursor text { font-size: 12.5px; fill: var(--av-ink-light); }
.calc__svg .ch-cursor text.ch-tip1 { fill: color-mix(in oklab, var(--av-ink-light) 70%, transparent); }
/* Год по месяцам: линия потребления — горизонт года; выше неё столбец светлеет — это излишки. */
.calc__svg--year { height: clamp(13rem, 24vw, 18rem); }
.calc__svg .ch-bars--down rect { fill: color-mix(in oklab, var(--av-amber-500) 58%, transparent); }
.calc__svg .ch-bars--up rect { fill: var(--av-amber-300); }
.calc__svg .ch-use { stroke: var(--av-ink-light); stroke-width: 1.5; }
.calc__svg .ch-use-label text { font-size: 12px; font-weight: 600; fill: var(--av-ink-light); }
.calc__svg .ch-use-label line { stroke: var(--av-ink-light); stroke-width: 1.5; }
.calc__svg .ch-base { stroke: color-mix(in oklab, var(--av-ink-light) 30%, transparent); stroke-width: 1; }
.calc__svg .ch-unit { font-size: 11px; letter-spacing: 0.08em; }
.calc__svg .ch-cursor .ch-band { fill: color-mix(in oklab, var(--av-ink-light) 7%, transparent); }
.calc__year { margin-top: var(--sc-7); }
.calc__months { margin-top: var(--sc-5); border-top: 1px solid color-mix(in oklab, var(--av-ink-light) 14%, transparent); interpolate-size: allow-keywords; }
.calc__months summary { display: inline-flex; align-items: center; gap: 0.5rem; min-height: 2.75rem; padding-block: 0.4rem; cursor: pointer; list-style: none;
  font-size: var(--sc-t-sm); font-weight: 600; color: var(--av-ink-light); text-decoration: underline; text-underline-offset: 0.3em;
  text-decoration-color: color-mix(in oklab, var(--av-ink-light) 40%, transparent); }
.calc__months summary::-webkit-details-marker { display: none; }
.calc__months summary:hover { text-decoration-color: var(--av-amber-500); }
.calc__months summary svg { width: 0.95rem; height: 0.95rem; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round;
  transition: rotate var(--sc-d-fast) var(--sc-ease-out); }
.calc__months[open] summary svg { rotate: 180deg; }
.calc__months::details-content { block-size: 0; overflow: clip; transition: block-size 420ms var(--sc-ease-out), content-visibility 420ms allow-discrete; }
.calc__months[open]::details-content { block-size: auto; }
.calc__months-scroll { overflow-x: auto; margin-top: var(--sc-3); }
.calc__months table { width: 100%; min-width: 40rem; border-collapse: collapse; font-size: var(--sc-t-sm); font-variant-numeric: tabular-nums; }
.calc__months th, .calc__months td { padding: 0.55rem 0.75rem; text-align: right; border-bottom: 1px solid color-mix(in oklab, var(--av-ink-light) 12%, transparent); white-space: nowrap; }
.calc__months th:first-child, .calc__months td:first-child { text-align: left; padding-left: 0; }
.calc__months thead th { font-size: var(--sc-t-xs); font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase; color: color-mix(in oklab, var(--av-ink-light) 62%, transparent); vertical-align: bottom; white-space: normal; }
.calc__months tbody th { font-weight: 500; color: color-mix(in oklab, var(--av-ink-light) 82%, transparent); }
.calc__months td:last-child { color: var(--av-amber-300); }
.calc__months tfoot th, .calc__months tfoot td { font-weight: 600; border-bottom: 0; border-top: 1px solid color-mix(in oklab, var(--av-ink-light) 40%, transparent); }
.calc__months-note { margin: var(--sc-3) 0 0; font-size: var(--sc-t-xs); color: color-mix(in oklab, var(--av-ink-light) 62%, transparent); }
.calc__note { margin: var(--sc-5) 0 0; max-width: 72ch; font-size: var(--sc-t-xs); line-height: 1.55; color: color-mix(in oklab, var(--av-ink-light) 66%, transparent); text-wrap: pretty; }

/* 5.4 Как это работает: аксонометрия станции чертится по --p, панели садятся
   на скат, по линиям идёт энергия, окна загораются; шаги — техническая полоса. */
.how { --p: var(--sc-p, 0); padding-block: var(--sc-section); }
.how__title { display: flex; align-items: end; justify-content: space-between; gap: var(--sc-4) var(--sc-6); flex-wrap: wrap; }
.how__legend { display: flex; flex-wrap: wrap; gap: var(--sc-3) var(--sc-5); margin: 0; padding: 0; list-style: none; }
.how__legend li { display: flex; align-items: center; gap: 0.5rem; font-size: var(--sc-t-xs); letter-spacing: 0.12em; text-transform: uppercase; font-weight: 600; color: var(--sc-ink-soft); }
.how__legend li::before { content: ""; width: 1.4rem; height: 1px; background: var(--av-ink-dark); }
.how__legend li.amber::before { background: var(--av-amber-700); height: 3px; }
.how__scheme { margin: var(--sc-6) auto 0; max-width: 74rem; }
.how__scheme svg { display: block; width: 100%; height: auto; max-height: 64vh; margin-inline: auto; overflow: visible; }
.how__scheme .ln { fill: none; stroke: var(--av-ink-dark); stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; stroke-dasharray: 1; vector-effect: non-scaling-stroke; }
.how__scheme .ln--thin { stroke-width: 1; stroke: color-mix(in oklab, var(--av-ink-dark) 50%, transparent); }
.how__scheme .ln--amber { stroke: var(--av-amber-700); stroke-width: 2; }
.how__scheme .g1 { stroke-dashoffset: calc(1 - clamp(0, calc((var(--p) - 0.12) / 0.14), 1)); }
.how__scheme .g2 { stroke-dashoffset: calc(1 - clamp(0, calc((var(--p) - 0.22) / 0.1), 1)); }
.how__scheme .g3 { stroke-dashoffset: calc(1 - clamp(0, calc((var(--p) - 0.30) / 0.08), 1)); }
.how__scheme .g4 { stroke-dashoffset: calc(1 - clamp(0, calc((var(--p) - 0.36) / 0.08), 1)); }
.how__panels { transform: translateY(calc((1 - clamp(0, calc((var(--p) - 0.28) / 0.1), 1)) * -26px)); }
.how__scheme .fill { stroke: none; }
.how__scheme .fill--wall { fill: rgb(255 255 255 / 0.4); opacity: clamp(0, calc((var(--p) - 0.18) / 0.1), 1); }
.how__scheme .fill--roof { fill: rgb(20 23 28 / 0.07); opacity: clamp(0, calc((var(--p) - 0.20) / 0.1), 1); }
.how__scheme .fill--box { fill: #E6EBE6; opacity: clamp(0, calc((var(--p) - 0.28) / 0.06), 1); }
.how__scheme .flow { fill: none; stroke: var(--av-amber-700); stroke-width: 3; stroke-linecap: round; vector-effect: non-scaling-stroke;
  stroke-dasharray: 0.018 0.03; stroke-dashoffset: calc(var(--p) * -1.4); opacity: clamp(0, calc((var(--p) - 0.40) / 0.06), 1); }
.how__scheme .glow { fill: var(--av-amber-500); opacity: clamp(0, calc((var(--p) - 0.46) / 0.08), 1); }
.how__scheme .sunfill { fill: var(--av-amber-500); opacity: clamp(0, calc((var(--p) - 0.34) / 0.1), 0.9); }
.how__scheme .tag { opacity: clamp(0, calc((var(--p) - 0.38) / 0.06), 1); }
.how__scheme .tag__ln { fill: none; stroke: var(--av-ink-dark); stroke-width: 1; vector-effect: non-scaling-stroke; }
.how__scheme .tag circle { fill: var(--av-amber-700); }
.how__scheme .tag text { font-family: var(--sc-font-text); font-size: 15px; font-weight: 600; letter-spacing: 0.14em; text-transform: uppercase; fill: var(--av-ink-dark); }
.how__steps { list-style: none; margin: var(--sc-7) 0 0; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--sc-6); }
.how__step { --on: clamp(0, calc((var(--p) - var(--at)) * 12), 1); position: relative; display: grid; gap: 0.45rem; align-content: start; padding-top: var(--sc-5); }
.how__step::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 1px; background: var(--sc-hairline-strong); }
.how__step::after { content: ""; position: absolute; left: 0; top: -1px; height: 3px; width: calc(var(--on) * 100%); background: var(--av-amber-700); }
.how__step h3 { margin-top: 0.2rem; }
.how__step p { margin: 0; color: var(--sc-ink-soft); font-size: var(--sc-t-sm); line-height: 1.5; text-wrap: pretty; }

/* 5.4a Инверторы ANTENERGY: два изделия партнёра на одной тёмной стене — кадр и данные рядом, AI-инвертор
   слева, гибридный справа. Между ними — день выработки: солнце идёт по кривой генерации, кривая загорается
   за ним, крайние полчаса утра и вечера светятся ярче — это и есть «+30 минут». --sx/--sy — положение солнца
   (доли ширины и высоты графика), --lit — до какой доли ширины кривая залита; их считает site.js по положению
   графика на экране. Без JS и в сокращённом режиме кривая залита целиком, солнце в зените. Кадры — прямоугольные
   снимки, как вся медиа сайта: стена в кадре светлее графита, растушёвка съела бы края изделия. */
.ant { padding-block: var(--sc-section); color: var(--av-ink-light); }
.ant__head { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: var(--sc-4) var(--sc-8); align-items: end; }
.ant__head .av-lede { max-width: 36ch; }
.ant__model { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: var(--sc-8); align-items: center; margin-top: var(--sc-7); }
.ant__model--hyb { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); margin-top: clamp(4.5rem, 9vw, 9rem); }
.ant__model--hyb .ant__fig { grid-column: 2; grid-row: 1; }
.ant__model--hyb .ant__body { grid-column: 1; grid-row: 1; }
.ant__fig { margin: 0; background: var(--av-graphite-900); }
.ant__fig img { display: block; width: 100%; height: auto; aspect-ratio: 1200 / 1490; object-fit: cover; }
.ant__name { margin: 0; font-family: var(--sc-font-display); font-weight: 600; font-size: clamp(1.6rem, 1rem + 1.6vw, 2.6rem);
  line-height: 1.04; letter-spacing: -0.03em; text-wrap: balance; }
.ant__line { margin: 0.7rem 0 var(--sc-6); max-width: 46ch; font-size: var(--sc-t-base); line-height: 1.5;
  color: color-mix(in oklab, var(--av-ink-light) 76%, transparent); text-wrap: pretty; }
/* Регистр AI-инвертора: подпись · значение · пояснение на общих колонках — значения стоят вровень. */
.ant__rows { display: grid; grid-template-columns: max-content max-content minmax(0, 1fr); column-gap: var(--sc-5); margin: 0; }
.ant__rows > div { grid-column: 1 / -1; display: grid; grid-template-columns: subgrid; align-items: baseline;
  padding-block: var(--sc-4); border-top: 1px solid color-mix(in oklab, var(--av-ink-light) 22%, transparent); }
.ant__rows dt, .ant__rows dd { margin: 0; }
.ant__rows dt { color: color-mix(in oklab, var(--av-ink-light) 64%, transparent); }
.ant__val { font-family: var(--sc-font-display); font-weight: 600; font-size: clamp(1.2rem, 0.9rem + 0.9vw, 1.7rem); line-height: 1.1;
  letter-spacing: -0.02em; white-space: nowrap; font-variant-numeric: tabular-nums; }
.ant__txt { font-size: var(--sc-t-sm); line-height: 1.5; color: color-mix(in oklab, var(--av-ink-light) 74%, transparent); text-wrap: pretty; }

/* День выработки. */
.ant__day { margin: var(--sc-8) 0 0; padding-top: var(--sc-6); border-top: 1px solid color-mix(in oklab, var(--av-ink-light) 22%, transparent); }
.ant__day-head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: end; gap: var(--sc-4) var(--sc-7); }
.ant__gain { display: grid; gap: 0.4rem; margin: 0; }
.ant__gain b { font-family: var(--sc-font-display); font-weight: 700; font-size: clamp(2.6rem, 1.5rem + 3.6vw, 5rem); line-height: 0.95;
  letter-spacing: -0.04em; color: var(--av-amber-300); font-variant-numeric: tabular-nums; white-space: nowrap; }
.ant__day-sub { margin: 0; max-width: 46ch; font-size: var(--sc-t-base); line-height: 1.5; color: color-mix(in oklab, var(--av-ink-light) 76%, transparent); text-wrap: pretty; }
.ant__plot { --sx: 0.5; --sy: 0.1429; --lit: 1;
  position: relative; height: clamp(11rem, 22vw, 19rem); margin-top: var(--sc-6); }
.ant__svg { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; }
.ant__svg--lit { clip-path: inset(-2rem calc((1 - var(--lit)) * 100%) 0 0); }
.ant__ghost { fill: none; stroke: color-mix(in oklab, var(--av-ink-light) 30%, transparent); stroke-width: 1.5; stroke-dasharray: 2 6; vector-effect: non-scaling-stroke; }
.ant__horizon { stroke: color-mix(in oklab, var(--av-ink-light) 52%, transparent); stroke-width: 1; vector-effect: non-scaling-stroke; }
.ant__curve { fill: none; stroke: var(--av-amber-300); stroke-width: 2.5; stroke-linejoin: round; vector-effect: non-scaling-stroke; }
.ant__wing { fill: var(--av-amber-300); }
/* Отметка «+30 мин»: подпись над пунктиром, пунктир опускается к горизонту на краю полосы. */
.ant__mark { position: absolute; bottom: calc(20 / 280 * 100%); translate: -50% 0; height: 62%;
  display: flex; flex-direction: column; align-items: center; gap: 0.5rem; text-align: center; white-space: nowrap;
  font-size: var(--sc-t-xs); font-weight: 600; letter-spacing: 0.12em; text-transform: uppercase; line-height: 1.25;
  color: color-mix(in oklab, var(--av-ink-light) 70%, transparent); opacity: var(--on, 1); transition: opacity 300ms var(--sc-ease-out); }
.ant__mark b { display: block; font-size: var(--sc-t-sm); letter-spacing: 0.02em; text-transform: none; color: var(--av-amber-300); }
.ant__mark::after { content: ""; flex: 1; width: 0; border-left: 1px dashed color-mix(in oklab, var(--av-amber-300) 70%, transparent); }
.ant__mark--am { left: 14.8%; --on: clamp(0.3, calc((var(--lit) - 0.12) * 40), 1); }
.ant__mark--pm { left: 85.2%; --on: clamp(0.3, calc((var(--lit) - 0.87) * 40), 1); }
.ant__sun { position: absolute; left: calc(var(--sx) * 100%); top: calc(var(--sy) * 100%); width: 1.1rem; height: 1.1rem; translate: -50% -50%;
  border-radius: 50%; background: var(--av-amber-300); box-shadow: 0 0 0 5px color-mix(in oklab, var(--av-amber-500) 30%, transparent); }

/* Гибридный: четыре группы свойств, точка — янтарь. */
.ant__groups { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 var(--sc-6); margin: 0; }
.ant__groups > div { display: grid; gap: 0.6rem; align-content: start; padding-block: var(--sc-4) var(--sc-5);
  border-top: 1px solid color-mix(in oklab, var(--av-ink-light) 22%, transparent); }
.ant__groups dt { color: color-mix(in oklab, var(--av-ink-light) 64%, transparent); }
.ant__groups dd { margin: 0; }
.ant__list { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.45rem; font-size: var(--sc-t-sm); line-height: 1.45;
  color: color-mix(in oklab, var(--av-ink-light) 86%, transparent); }
.ant__list li { display: grid; grid-template-columns: 0.4rem minmax(0, 1fr); gap: 0.7rem; align-items: baseline; text-wrap: pretty; }
.ant__list li::before { content: ""; width: 0.4rem; height: 0.4rem; border-radius: 50%; background: var(--av-amber-500); translate: 0 -0.1em; }

.ant__foot { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: var(--sc-4) var(--sc-6);
  margin-top: var(--sc-8); padding-top: var(--sc-5); border-top: 1px solid color-mix(in oklab, var(--av-ink-light) 22%, transparent); }
.ant__note { margin: 0; max-width: 60ch; font-size: var(--sc-t-sm); line-height: 1.5; color: color-mix(in oklab, var(--av-ink-light) 70%, transparent); text-wrap: pretty; }

/* 5.4b Обслуживание: кадр «до / после». Пыльный снимок той же камеры лежит поверх чистого, по прокрутке
   пыль уходит влево целиком: --w — доля отмытого стекла (0 → 1), её считает site.js по положению кадра
   на экране; там же гаснут ярлыки, к которым подошла граница. Чтобы стирание шло медленно и целиком
   на глазах, кадр закреплён посередине видимой области (sticky в обёртке выше кадра на --pin): страница
   прокручивается ещё экран, а кадр стоит. Без JS и в сокращённом режиме закрепления нет, кадр стоит
   на середине хода. Под кадром — прейскурант: лист, как спецификация станции; цена за выбранную
   мощность — в строке под двойной линейкой. */
.svc { padding-block: var(--sc-section); }
.svc__head { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: var(--sc-4) var(--sc-8); align-items: end; }
.svc__head .av-lede { max-width: 34ch; }
.svc__pin { --band-h: clamp(20rem, 62svh, 46rem); --pin: 100svh; position: relative; height: calc(var(--band-h) + var(--pin)); margin-top: var(--sc-7); }
.svc__wipe { --w: 0.5;
  position: sticky; top: calc((100svh + var(--av-head-h) - var(--band-h)) / 2); height: var(--band-h); margin: 0;
  overflow: hidden; background: var(--av-graphite-900); }
html:not(.js) .svc__pin, html.av-reduced .svc__pin { height: auto; }
html:not(.js) .svc__wipe, html.av-reduced .svc__wipe { position: relative; top: auto; }
.svc__wipe img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 50% 64%; }
.svc__dust img { clip-path: inset(0 calc(var(--w) * 100%) 0 0); }
.svc__marks { position: absolute; inset: auto 0 0 0; display: flex; justify-content: space-between; margin: 0;
  padding: var(--sc-4) max(var(--sc-gutter), calc((100% - var(--sc-maxw)) / 2 + var(--sc-gutter))); pointer-events: none; }
.svc__marks span { padding: 0.45rem 0.75rem; border-radius: var(--sc-r-sm); background: color-mix(in oklab, var(--av-graphite-950) 74%, transparent);
  color: var(--av-ink-light); font-size: var(--sc-t-xs); font-weight: 600; letter-spacing: 0.15em; line-height: 1; text-transform: uppercase; }

.svc__sheet { margin-top: var(--sc-7); padding: clamp(1.25rem, 3.2vw, 2.75rem); background: #FFFFFF; color: var(--av-ink-dark);
  box-shadow: var(--sc-e2); font-variant-numeric: tabular-nums; }
.svc__sheet-head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: end; gap: var(--sc-5) var(--sc-6);
  padding-bottom: var(--sc-5); border-bottom: 1px solid var(--sc-ink); }
.svc__sheet-title { margin: 0; color: var(--sc-ink); }
.svc__power { display: grid; gap: 0.5rem; justify-items: start; }
.svc__power-row { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sc-2) var(--sc-3); }
.svc__chips .av-chip { min-width: 3.25rem; justify-content: center; font-weight: 600; font-variant-numeric: tabular-nums; }
.svc__chips .av-chip[aria-pressed="true"] { background: var(--av-ink-dark); color: #FFFFFF; }
.svc__own { position: relative; display: block; width: 7.75rem; }
.svc__own .av-input { min-height: 2.75rem; padding-right: 2.9rem; background: #FFFFFF; font-weight: 600; font-variant-numeric: tabular-nums;
  -moz-appearance: textfield; appearance: textfield; }
.svc__own .av-input::-webkit-inner-spin-button, .svc__own .av-input::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }
.svc__own .av-input:hover { border-color: color-mix(in oklab, var(--av-ink-dark) 70%, transparent); }
.svc__unit { position: absolute; right: 0.9rem; top: 50%; translate: 0 -50%; font-size: var(--sc-t-sm); color: var(--sc-ink-soft); pointer-events: none; }
html:not(.js) .svc__power { display: none; }

/* Тарифы — колонки одного листа, строки выровнены сеткой: названия, цены, «итого» и кнопки вровень. */
.svc__plans { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); grid-template-rows: repeat(5, auto); }
.svc__plan { display: grid; grid-row: span 5; grid-template-rows: subgrid; row-gap: var(--sc-4);
  padding: var(--sc-6) var(--sc-6) 0; border-left: 1px solid var(--sc-hairline); }
.svc__plan:first-child { padding-left: 0; border-left: 0; }
.svc__plan:last-child { padding-right: 0; }
.svc__name { margin: 0; font-family: var(--sc-font-display); font-weight: 600; font-size: clamp(1.2rem, 0.95rem + 1vw, 1.9rem); line-height: 1.05; letter-spacing: -0.02em; }
.svc__rate { margin: 0; font-size: var(--sc-t-sm); color: var(--sc-ink-soft); }
.svc__rate b { font-weight: 600; font-size: var(--sc-t-base); color: var(--sc-ink); }
.svc__incl { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.5rem; align-content: start; font-size: var(--sc-t-sm); line-height: 1.4; }
.svc__incl li { display: grid; grid-template-columns: 0.4rem minmax(0, 1fr); gap: 0.7rem; align-items: baseline; text-wrap: pretty; }
.svc__incl li::before { content: ""; width: 0.4rem; height: 0.4rem; border-radius: 50%; background: var(--av-amber-700); translate: 0 -0.1em; }
/* Строка итога — контейнер: сумма ужимается по ширине колонки (у самой колонки контейнера быть не может —
   он отключает общую сетку строк). */
.svc__total { container-type: inline-size; display: grid; gap: 0.45rem; margin: var(--sc-2) 0 0; padding-top: var(--sc-4); border-top: 3px double var(--sc-ink); }
.svc__total .av-label { color: var(--sc-ink); }
.svc__total b { font-family: var(--sc-font-display); font-weight: 600; font-size: min(2.1rem, 8.4cqi); letter-spacing: -0.03em; line-height: 1.05; white-space: nowrap; }
.svc__pick { justify-self: start; }

/* Подвал листа: оговорка о цене. Контакты — только в финале и футере (решение пользователя 04.10: не дублировать). */
.svc__foot { margin-top: var(--sc-6); padding-top: var(--sc-5); border-top: 1px solid var(--sc-hairline-strong); }
.svc__note { margin: 0; max-width: 60ch; font-size: var(--sc-t-sm); line-height: 1.5; color: var(--sc-ink-soft); text-wrap: pretty; }

.svc__specs { margin-top: var(--sc-7); grid-template-columns: repeat(3, minmax(0, 1fr)); column-gap: var(--sc-6); }
.svc__specs > div { align-content: start; }
.svc__specs dd { font-size: var(--sc-t-sm); line-height: 1.5; text-wrap: pretty; }

/* 5.5 Для бизнеса: свет вскрывает сцену. Две световые кромки идут навстречу,
   за ними кадр освещён; слово «Бизнес» проявляется тем же светом. */
.biz { color: var(--av-ink-light); }
.biz__stage { --p: var(--sc-p, 0); background: var(--av-black); color: var(--av-ink-light);
  --f1: calc(-14% + clamp(0, calc((var(--p) - 0.05) / 0.58), 1) * 130%);
  --f2: calc(-14% + clamp(0, calc((var(--p) - 0.15) / 0.58), 1) * 130%);
  --s:  calc(-30% + clamp(0, calc(var(--p) / 0.3), 1) * 160%);
  --fill: clamp(0, calc((var(--p) - 0.64) / 0.16), 1); }
.biz__dark img, .biz__lit img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.biz__dark img { filter: brightness(0.2) saturate(0.5) contrast(1.05); }
.biz__word { position: absolute; left: 0; right: 0; top: calc(var(--av-head-h) + 8vh); margin: 0; z-index: 1;
  text-align: center; font-size: clamp(3.4rem, 15.5vw, 17rem); }
.biz__word--dim { color: transparent; -webkit-text-stroke: 1px color-mix(in oklab, var(--av-ink-light) 16%, transparent); }
.biz__lit { position: absolute; inset: 0; z-index: 2;
  -webkit-mask-image:
    linear-gradient(112deg, #000 calc(var(--f1) - 6%), transparent calc(var(--f1) + 0.5%)),
    linear-gradient(248deg, #000 calc(var(--f2) - 6%), transparent calc(var(--f2) + 0.5%)),
    linear-gradient(100deg, transparent calc(var(--s) - 2.5%), #000 var(--s), transparent calc(var(--s) + 2.5%)),
    linear-gradient(rgb(0 0 0 / var(--fill)), rgb(0 0 0 / var(--fill)));
          mask-image:
    linear-gradient(112deg, #000 calc(var(--f1) - 6%), transparent calc(var(--f1) + 0.5%)),
    linear-gradient(248deg, #000 calc(var(--f2) - 6%), transparent calc(var(--f2) + 0.5%)),
    linear-gradient(100deg, transparent calc(var(--s) - 2.5%), #000 var(--s), transparent calc(var(--s) + 2.5%)),
    linear-gradient(rgb(0 0 0 / var(--fill)), rgb(0 0 0 / var(--fill))); }
.biz__lit img { filter: brightness(1.12) contrast(1.04); }
.biz__lit .biz__word { color: color-mix(in oklab, var(--av-ink-light) 88%, transparent); }
.biz__glow { position: absolute; inset: 0; z-index: 3; pointer-events: none; mix-blend-mode: screen; opacity: calc(1 - var(--fill) * 0.92);
  background-image:
    linear-gradient(112deg, transparent calc(var(--f1) - 10%), rgb(242 169 59 / 0.28) calc(var(--f1) - 2%), rgb(255 238 205 / 0.95) calc(var(--f1) - 0.2%), rgb(255 207 122 / 0.5) calc(var(--f1) + 0.5%), transparent calc(var(--f1) + 4%)),
    linear-gradient(248deg, transparent calc(var(--f2) - 10%), rgb(242 169 59 / 0.28) calc(var(--f2) - 2%), rgb(255 238 205 / 0.95) calc(var(--f2) - 0.2%), rgb(255 207 122 / 0.5) calc(var(--f2) + 0.5%), transparent calc(var(--f2) + 4%)),
    linear-gradient(100deg, transparent calc(var(--s) - 6%), rgb(255 214 150 / 0.22) var(--s), transparent calc(var(--s) + 6%)); }
.biz__scrim { position: absolute; inset: 0; z-index: 5; pointer-events: none;
  background: linear-gradient(to top, rgb(5 6 7 / 0.9) 0%, rgb(5 6 7 / 0.55) 30%, transparent 56%),
              linear-gradient(90deg, rgb(5 6 7 / 0.5) 0%, transparent 48%); }
.biz__copy { bottom: clamp(7.5rem, 19vh, 11.5rem); max-width: 34rem; }
.biz__copy .av-lede { margin-top: var(--sc-4); color: color-mix(in oklab, var(--av-ink-light) 86%, transparent); }
.biz__copy .av-btn { margin-top: var(--sc-5); }
.biz__path { position: absolute; left: var(--sc-gutter); right: var(--sc-gutter); bottom: clamp(1.4rem, 4vh, 2.4rem); z-index: 6;
  display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: var(--sc-4); margin: 0; padding: 0; list-style: none; }
.biz__path li { --on: clamp(0, calc((var(--p) - var(--at)) * 14), 1); position: relative; padding-top: 0.9rem; font-size: var(--sc-t-sm);
  color: color-mix(in oklab, var(--av-ink-light) calc(56% + var(--on) * 44%), transparent); }
.biz__path li::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 1px; background: color-mix(in oklab, var(--av-ink-light) 24%, transparent); }
.biz__path li::after { content: ""; position: absolute; left: 0; top: -1px; height: 3px; width: calc(var(--on) * 100%); background: var(--av-amber-500); }
.biz__path b { display: block; margin-bottom: 0.25rem; font-size: var(--sc-t-xs); font-weight: 600; letter-spacing: 0.12em; color: var(--av-amber-300); font-variant-numeric: tabular-nums; }
.biz.is-static .biz__stage { position: relative; height: 100svh; min-height: 38rem; overflow: clip; }

/* 5.6 Отрасли и документы: спецификация под сценой. */
.bizspec { padding-block: var(--sc-7) var(--sc-section); color: var(--av-ink-light); }
.bizspec__grid { display: grid; grid-template-columns: minmax(0, 6fr) minmax(0, 5fr); gap: var(--sc-8); align-items: start;
  padding-top: var(--sc-6); border-top: 1px solid color-mix(in oklab, var(--av-ink-light) 14%, transparent); }
.bizspec__pick .av-h3 { margin-bottom: var(--sc-4); }
.bizspec .av-chip { border-color: color-mix(in oklab, var(--av-ink-light) 42%, transparent); }
.bizspec__hint { margin: var(--sc-4) 0 0; font-size: var(--sc-t-sm); color: color-mix(in oklab, var(--av-ink-light) 76%, transparent); }
.bizspec__hint a { color: var(--av-amber-300); }
.bizspec__specs { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: var(--sc-6); }
.bizspec__specs > div { border-top-color: color-mix(in oklab, var(--av-ink-light) 22%, transparent); }
.bizspec__specs dt { color: color-mix(in oklab, var(--av-ink-light) 66%, transparent); }
.bizspec__specs dd { color: var(--av-ink-light); font-size: var(--sc-t-base); line-height: 1.4; }

/* 5.7 Каталог: гигантское контурное слово — настоящий заголовок, лента модулей. */
.cat__stage { --p: var(--sc-p, 0); background: var(--av-loess); color: var(--av-ink-dark); }
.cat__inner { position: absolute; inset: 0; display: grid; grid-template-columns: minmax(0, 1fr); grid-template-rows: auto auto;
  align-content: start; row-gap: var(--sc-5); padding-top: calc(var(--av-head-h) + 2vh); padding-bottom: var(--sc-5); }
.cat__head { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--sc-4); }
.cat__wordwrap { min-width: 0; text-align: center; padding-inline: var(--sc-gutter); overflow-x: clip; overflow-y: visible; }
.cat__title { --av-ground: var(--av-loess); --ring: color-mix(in oklab, var(--av-ink-dark) 72%, transparent); font-size: min(17vw, 22vh); display: inline-block; }
.cat__sub { max-width: var(--sc-maxw); margin-inline: auto; width: 100%; padding-inline: var(--sc-gutter);
  display: flex; align-items: center; justify-content: space-between; gap: var(--sc-5); flex-wrap: wrap; }
.cat__sub .av-body { margin: 0; }
.cat__railwrap { min-width: 0; }
.cat__rail { gap: var(--sc-5); width: max-content; padding-inline: var(--sc-gutter); }
.cat__item { width: clamp(15rem, min(24vw, 36vh), 23rem); flex: 0 0 auto; }
.cat__item .av-module__body { padding: var(--sc-3) var(--sc-4) var(--sc-4); gap: var(--sc-2); }
.cat__item { background: color-mix(in oklab, var(--av-ink-dark) 4%, var(--av-loess)); } /* тот же тон, но непрозрачный: фон под текстом известен в любой позиции ленты */
.cat__item .av-module__media { background: var(--av-graphite-950); }
.cat__item .av-h3 { font-size: 1.2rem; }
.cat__item:hover .av-arrow, .cat__item:focus-visible .av-arrow { background: var(--av-ink-dark); color: #fff; border-color: transparent; }
.cat.is-native .cat__stage { position: relative; height: auto; }
.cat.is-native .cat__inner { position: static; padding-block: var(--sc-section); }
.cat.is-native .cat__railwrap { overflow-x: auto; overscroll-behavior-x: contain; scroll-snap-type: x proximity;
  scroll-padding-inline: var(--sc-gutter); padding-bottom: var(--sc-4); }
.cat.is-native .cat__rail { display: flex; }
.cat.is-native .cat__item { scroll-snap-align: start; }

/* 5.8 Журнал: белый лист в тёмной среде, три постера тем лесенкой. */
.journal { padding-block: var(--sc-section); color: var(--av-ink-light); }
.journal__sheet { background: var(--av-lime); padding: clamp(1.5rem, 4vw, 4rem); box-shadow: var(--sc-e3); }
.journal__head { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: var(--sc-5);
  margin-bottom: var(--sc-6); padding-bottom: var(--sc-5); border-bottom: 1px solid var(--sc-hairline-strong); }
/* Постеры разного размера стоят на общих рядах сетки (subgrid): кадры — на одной нижней линии,
   заголовки начинаются вровень, метки «Готовим» — тоже. Зазор рядов работает только между постерами
   в стопке (планшет, телефон); внутри постера отступы задают поля заголовка и метки. */
.journal__grid { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 4fr) minmax(0, 3fr); column-gap: var(--sc-5); row-gap: var(--sc-7); }
.poster { margin: 0; display: grid; grid-row: span 3; grid-template-rows: subgrid; row-gap: 0; }
.poster__media { align-self: end; }
.poster__media { position: relative; overflow: hidden; aspect-ratio: 3 / 4; container-type: inline-size; background: var(--av-graphite-900); }
.poster__media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.poster__word { position: absolute; left: 0; right: 0; top: 6cqw; margin: 0; text-align: center;
  font-family: var(--sc-font-display); font-weight: 800; font-size: var(--wsize, 30cqw); line-height: 0.8; letter-spacing: -0.05em;
  text-transform: uppercase; color: var(--word, var(--av-ink-dark)); }
.poster--home { --wsize: 29cqw; --word: color-mix(in oklab, var(--av-ink-dark) 90%, transparent); }
.poster--hybrid { --wsize: 17cqw; --word: color-mix(in oklab, var(--av-ink-dark) 86%, transparent); }
.poster--kp { --wsize: 44cqw; --word: var(--av-ink-light); }
.poster--kp img { object-position: 46% 50%; }
.poster--kp .poster__media::after { content: ""; position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(to bottom, rgb(11 13 16 / 0.6) 0%, rgb(11 13 16 / 0.15) 45%, transparent 70%); }
.poster--kp .poster__word { z-index: 1; }
.poster__body { display: contents; }
.poster .av-h3 { align-self: start; margin-top: var(--sc-4); font-size: clamp(1.15rem, 0.95rem + 0.8vw, 1.55rem); text-wrap: balance; }
.poster .av-slot { align-self: start; justify-self: start; margin-top: var(--sc-3); color: var(--sc-ink-soft); }
.poster__media { transition: clip-path 1000ms var(--sc-ease-out); }
.poster__media img { transition: scale 1400ms var(--sc-ease-out); }
.js .journal__grid[data-sc-in], .js .journal__grid[data-sc-stagger] > .poster { opacity: 1; transform: none; }
.js .journal__grid[data-sc-stagger] > .poster:not(.sc-in) .poster__media { clip-path: inset(100% 0 0 0); }
.js .journal__grid[data-sc-stagger] > .poster:not(.sc-in) img { scale: 1.12; }

/* 5.8a Вопросы: заголовок держится у края, ответы раскрываются под волосяной линией. */
.faq { padding-block: var(--sc-section); interpolate-size: allow-keywords; }
.faq__grid { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 7fr); gap: var(--sc-8); align-items: start; }
.faq__head { display: grid; gap: var(--sc-4); position: sticky; top: calc(var(--av-head-h) + var(--sc-6)); }
.faq__head a { color: inherit; font-weight: 600; white-space: nowrap; text-decoration-color: var(--av-amber-700); text-decoration-thickness: 2px; }
.faq__list { border-bottom: 1px solid var(--sc-hairline-strong); }
.faq__item { border-top: 1px solid var(--sc-hairline-strong); }
.faq__item summary { display: flex; align-items: center; justify-content: space-between; gap: var(--sc-5); padding-block: var(--sc-5); list-style: none; cursor: pointer; }
.faq__item summary::-webkit-details-marker { display: none; }
.faq__item summary .av-h3 { text-wrap: balance; }
.faq__icon { position: relative; flex: none; width: 2.75rem; height: 2.75rem; border: 1px solid var(--av-stroke); border-radius: 50%;
  transition: background var(--sc-d-fast) var(--sc-ease-out), border-color var(--sc-d-fast) var(--sc-ease-out), color var(--sc-d-fast) var(--sc-ease-out); }
.faq__icon::before, .faq__icon::after { content: ""; position: absolute; left: 50%; top: 50%; width: 0.95rem; height: 1.5px; background: currentColor;
  translate: -50% -50%; transition: rotate 320ms var(--sc-ease-out); }
.faq__icon::after { rotate: 90deg; }
.faq__item[open] .faq__icon::after { rotate: 0deg; }
.faq__item summary:hover .faq__icon, .faq__item[open] .faq__icon { background: var(--av-ink-dark); border-color: transparent; color: #fff; }
.faq__item p { margin: 0; padding: 0 4.5rem var(--sc-5) 0; max-width: 62ch; color: var(--sc-ink-soft); line-height: 1.55; text-wrap: pretty; }
.faq__item::details-content { block-size: 0; overflow: clip; transition: block-size 420ms var(--sc-ease-out), content-visibility 420ms allow-discrete; }
.faq__item[open]::details-content { block-size: auto; }

/* 5.9 Финал: янтарный лист; день возвращается к рассвету в дуотоне. */
.final { --p: var(--sc-p, 0); padding-block: var(--sc-section); }
.final__poster {
  position: relative; overflow: hidden; isolation: isolate;
  background: linear-gradient(165deg, var(--av-amber-300) 0%, var(--av-amber-500) 45%, var(--av-ember) 100%);
  color: var(--av-graphite-950);
  padding: clamp(2rem, 6vw, 6rem) clamp(1.5rem, 5vw, 5rem);
  min-height: 34rem;
  display: grid; grid-template-columns: minmax(0, 6fr) minmax(0, 6fr); gap: var(--sc-8); align-items: center;
  box-shadow: var(--sc-e3);
}
.final__sun {
  position: absolute; left: -9%; top: -34%; z-index: -1;
  width: clamp(18rem, 40vw, 34rem); aspect-ratio: 1; border-radius: 50%;
  background: radial-gradient(circle, #FFF6E2 0%, #FFE6B3 45%, rgba(255, 230, 179, 0.45) 70%, transparent 71%);
  pointer-events: none;
}
.final__dawn img { position: absolute; left: 0; right: 0; bottom: 0; z-index: -1; width: 100%; height: 44%;
  object-fit: cover; object-position: 50% 72%; mix-blend-mode: multiply; opacity: 0.6; pointer-events: none;
  -webkit-mask-image: linear-gradient(to top, #000 40%, transparent); mask-image: linear-gradient(to top, #000 40%, transparent); }
.final__copy { position: relative; }
.final__copy > * + * { margin-top: var(--sc-4); }
.final__copy .av-lede { color: color-mix(in oklab, var(--av-graphite-950) 84%, transparent); }
.final__contacts { display: flex; flex-wrap: wrap; gap: var(--sc-4) var(--sc-7); margin: var(--sc-6) 0 0; padding: 0; list-style: none; }
.final__contacts li { display: grid; gap: 0.3rem; }
.final__contacts .av-label { color: color-mix(in oklab, var(--av-graphite-950) 72%, transparent); }
.final__contacts a { font-family: var(--sc-font-display); font-weight: 500; font-size: var(--av-t-h3); letter-spacing: -0.02em; color: var(--av-graphite-950);
  text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 0.28em; text-decoration-color: color-mix(in oklab, var(--av-graphite-950) 36%, transparent);
  text-wrap: balance; }
.final__contacts a[href^="tel:"] { white-space: nowrap; }
.final__contacts a[href^="mailto:"], .foot__contacts a[href^="mailto:"] { overflow-wrap: anywhere; }
.final__contacts a[href^="https://t.me/"] { white-space: nowrap; }
/* QR Telegram — для широких экранов: навести телефон; на телефоне достаточно ссылки. */
.final__tg { grid-template-columns: auto auto; grid-template-rows: 1fr auto; justify-content: start; align-items: end; column-gap: var(--sc-4); }
.final__tg > :not(.final__qr) { grid-column: 1; }
.final__qr { grid-column: 2; grid-row: 1 / 3; width: 5.5rem; height: auto; padding: 0.4rem; background: #FFFFFF; image-rendering: pixelated; }
.final__contacts a:hover { text-decoration-thickness: 2px; text-decoration-color: var(--av-graphite-950); }
.final__form { position: relative; display: grid; gap: var(--sc-4); padding: clamp(1.25rem, 3vw, 2rem);
  background: var(--av-lime); color: var(--av-ink-dark); box-shadow: var(--sc-e2);
  --sc-ink: var(--av-ink-dark); --sc-ink-soft: var(--av-ink-soft-dark); --sc-canvas: var(--av-lime); --sc-surface: #FFFFFF;
  --av-stroke: color-mix(in oklab, var(--av-ink-dark) 42%, transparent); }
.final__form .av-label { color: color-mix(in oklab, var(--av-ink-dark) 76%, transparent); }
.final__form .av-seg input:checked + span { background: var(--av-graphite-950); color: var(--av-ink-light); }
.final__form .av-input, .final__form .av-select { background: #FFFFFF; color: var(--av-ink-dark); }
.final__row { display: grid; grid-template-columns: 1fr 1fr; gap: var(--sc-4); }
.final__summary { display: flex; flex-wrap: wrap; gap: 0.5rem; min-height: 0; }
.final__summary:empty { display: none; }
.final__actions { display: flex; align-items: center; gap: var(--sc-4); flex-wrap: wrap; }
.final__form .av-btn--primary { background: var(--av-graphite-950); color: var(--av-ink-light); }
.final__form .av-btn--primary:hover { background: #22272E; }
.final__status { margin: 0; font-size: var(--sc-t-sm); line-height: 1.45; color: color-mix(in oklab, var(--av-ink-dark) 82%, transparent); }
.final__status:empty { display: none; }
.final__status[data-state="ok"] { color: var(--av-ink-dark); font-weight: 600; padding: 0.75rem 1rem; border-radius: var(--sc-r-sm); background: color-mix(in oklab, var(--av-amber-300) 35%, #fff); }
.final__status[data-state="error"] { color: var(--av-ember-ink); font-weight: 600; }
.final__form .av-btn[aria-busy="true"] { cursor: progress; opacity: 0.8; }
.final__consent { margin: 0; font-size: var(--sc-t-xs); line-height: 1.5; color: color-mix(in oklab, var(--av-ink-dark) 72%, transparent); }
.final__consent a { color: inherit; text-decoration-color: color-mix(in oklab, var(--av-ink-dark) 40%, transparent); }
/* Ловушка для ботов: поле есть в форме, но человеку не видно и не достаётся с клавиатуры. */
.hp { position: absolute; left: -10000px; top: auto; width: 1px; height: 1px; overflow: hidden; }

/* 5.10 Футер. */
/* Ночь: день сайта начинается рассветом в hero и заканчивается здесь — слово AVENTO встаёт из-за хребта.
   Слои: небо с хребтом → слово → передний план с прозрачным небом (маска снята с самого кадра,
   media/footer_matte.py). Горизонт под словом — на --sky высоты кадра; object-position по той же доле
   держит его там при любом кадрировании, поэтому слово и хребет не расходятся ни на одной ширине. */
.foot { padding-bottom: var(--sc-6); color: var(--av-ink-light); overflow: clip; }
.foot__scene { --sky: 45%; position: relative; aspect-ratio: 1920 / 720; max-height: 100svh; container-type: inline-size; isolation: isolate; overflow: hidden; }
.foot__scene img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 50% var(--sky); }
.foot__ridge { z-index: 2; }
.foot__scene::before, .foot__scene::after { content: ""; position: absolute; left: 0; right: 0; z-index: 3; pointer-events: none; }
.foot__scene::before { top: 0; height: 14%; background: linear-gradient(to bottom, var(--av-graphite-950), transparent); }
.foot__scene::after { bottom: 0; height: 30%; background: linear-gradient(to top, var(--av-graphite-950) 12%, transparent); }
/* Базовая линия слова — на 0.12em ниже среднего горизонта: хребет закрывает около пятой части букв,
   у пика справа больше, слева меньше — как у настоящего хребта. */
.foot__word { position: absolute; left: 0; right: 0; z-index: 1; top: calc(var(--sky) - 0.655em);
  font-size: 16cqw; letter-spacing: -0.015em; text-align: center; color: var(--av-ink-light);
  transition: translate 1800ms var(--sc-ease-out); }
.js .foot__word[data-sc-in] { opacity: 1; transform: none; }
.js .foot__word[data-sc-in]:not(.sc-in) { translate: 0 0.8em; }
.foot__grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--sc-6); padding-top: var(--sc-5); }
.foot__col ul { list-style: none; margin: var(--sc-3) 0 0; padding: 0; display: grid; gap: 0.15rem; }
.foot__col a { display: inline-block; padding-block: 0.35rem; color: color-mix(in oklab, var(--av-ink-light) 82%, transparent); text-decoration: none; }
.foot__col a:hover { color: var(--av-ink-light); text-decoration: underline; text-decoration-color: var(--av-amber-500); }
.foot__col li { color: color-mix(in oklab, var(--av-ink-light) 82%, transparent); }
.foot__contacts li { max-width: 20rem; }
.foot__contacts li a { text-wrap: pretty; }
.foot__bottom { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline; gap: var(--sc-4); margin-top: var(--sc-7); padding-top: var(--sc-4); border-top: 1px solid color-mix(in oklab, var(--av-ink-light) 12%, transparent); font-size: var(--sc-t-xs); color: color-mix(in oklab, var(--av-ink-light) 66%, transparent); }
.foot__bottom a { color: inherit; text-decoration-color: color-mix(in oklab, var(--av-ink-light) 34%, transparent); padding-block: 0.35rem; }
.foot__bottom a:hover { color: var(--av-ink-light); }

/* 5.11 Служебные страницы: спасибо, ошибка, 404, политика. */
.page { min-height: 100svh; display: flex; flex-direction: column; background: var(--av-graphite-950); color: var(--av-ink-light); }
.page .av-head__cta { margin-inline-start: auto; }
/* 404 одна на все языки: строка на узбекском и английском со ссылкой на свою главную. */
.page__langs { display: flex; flex-wrap: wrap; gap: var(--sc-2) var(--sc-6); margin: var(--sc-7) 0 0; font-size: var(--sc-t-sm);
  color: color-mix(in oklab, var(--av-ink-light) 66%, transparent); }
.page__langs a { color: var(--av-ink-light); text-decoration-color: var(--av-amber-500); text-underline-offset: 0.2em; }
.page__main { flex: 1; display: grid; align-content: center; justify-items: start; gap: var(--sc-5);
  padding-block: calc(var(--av-head-h) + var(--sc-7)) var(--sc-8); }
.page__main .av-lede { color: color-mix(in oklab, var(--av-ink-light) 86%, transparent); max-width: 46ch; }
.page__word { --av-ground: var(--av-graphite-950); --ring: color-mix(in oklab, var(--av-ink-light) 34%, transparent);
  font-size: clamp(3.4rem, 15vw, 14rem); margin-bottom: var(--sc-3); max-width: 100%; overflow: hidden; }
.page__actions { display: flex; flex-wrap: wrap; gap: var(--sc-3); margin-top: var(--sc-3); }
.page .av-btn--secondary { color: var(--av-ink-light); border-color: color-mix(in oklab, var(--av-ink-light) 50%, transparent); }
.page__main--doc { align-content: start; }
.doc { max-width: 46rem; }
.doc h2 { margin: var(--sc-7) 0 var(--sc-3); font-family: var(--sc-font-display); font-weight: 600; font-size: var(--av-t-h3); letter-spacing: -0.02em; }
.doc p { margin: 0; line-height: 1.6; color: color-mix(in oklab, var(--av-ink-light) 86%, transparent); text-wrap: pretty; }

/* ------------------------------------------------------------------ 6 ---- */
@media (max-width: 1100px) {
  /* Шесть пунктов меню, язык и кнопка на узком десктопе: плотнее зазоры и разрядка, иначе кнопка уходит за край. */
  .av-head { gap: var(--sc-4); }
  .av-nav { gap: var(--sc-4); }
  .av-nav a { letter-spacing: 0.1em; }
  .kits__inner { grid-template-columns: 7.5rem minmax(0, 1fr) 15rem; }
  .station__grid { grid-template-columns: 1fr; gap: var(--sc-7); }
  .station__copy .av-lede { max-width: 40ch; }
  .calc__grid { grid-template-columns: 1fr; }
  .calc__form { padding: var(--sc-6) 0; border-right: 0; border-bottom: 1px solid color-mix(in oklab, var(--av-ink-light) 14%, transparent); }
  .calc__result { padding: var(--sc-6) 0 0; }
  .faq__grid { grid-template-columns: 1fr; gap: var(--sc-6); }
  .faq__head { position: static; }
  .how__steps { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ant__head { grid-template-columns: 1fr; }
  .ant__head .av-lede { max-width: 40ch; }
  .ant__model, .ant__model--hyb { gap: var(--sc-6); }
  /* Регистр в две строки: подпись и значение в ряд, пояснение под ними. */
  .ant__rows { display: block; }
  .ant__rows > div { grid-template-columns: minmax(0, 1fr) auto; row-gap: 0.35rem; }
  .ant__val { text-align: right; }
  .ant__txt { grid-column: 1 / -1; }
  .svc__head { grid-template-columns: 1fr; }
  .svc__head .av-lede { max-width: 40ch; }
  .svc__plan { padding-inline: var(--sc-4); }
  .svc__specs { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .journal__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .journal__grid > .poster--home { grid-column: 1 / -1; }
  .poster--home .poster__media { aspect-ratio: 16 / 10; }
  .poster--home { --wsize: 22cqw; }
}
/* Шесть пунктов меню (с 04.10 — «Инверторы») на самом узком десктопе: ещё плотнее, иначе кнопка уходит за край. */
@media (max-width: 1000px) and (min-width: 861px) {
  .av-head, .av-nav { gap: var(--sc-3); }
  .av-nav a { letter-spacing: 0.06em; }
}
@media (max-width: 860px) {
  :root { --av-head-h: 3.75rem; }
  .av-head { padding-inline: var(--sc-gutter); gap: var(--sc-4); }
  .av-nav { display: none; }
  .av-lang { margin-inline-start: auto; }

  .hero { --av-word-top: calc(var(--av-head-h) + 9vh); }
  .hero__wordwrap { padding-inline: var(--sc-gutter); }
  .hero__word { font-size: clamp(2.6rem, 16.5vw, 7rem); }
  .hero__lead-scrim { inset: 0; background: linear-gradient(to top, color-mix(in oklab, var(--av-graphite-950) 72%, transparent) 20%, transparent 70%); }
  .hero__copy, .leg-copy { bottom: 5.5rem; max-width: none; }
  /* Телефон: фильм — окно 4:5 вверху экрана, а не вертикаль на весь экран: горизонтальный дубль
     иначе режется до четверти ширины. Ролик для телефона уже сведён в 4:5 и ведёт окно за предметом
     (media/build_mobile_film.py); кадры-подстраховки стоят в том же окне с тем же центром (--pos-m).
     Нижний край окна растворяется в графите — под ним текст. Титр места на телефоне не нужен. */
  .hero .hero__stage .hero__film, .hero .journey { inset: 0 0 auto 0; height: auto; aspect-ratio: 4 / 5;
    -webkit-mask-image: linear-gradient(to bottom, #000 62%, transparent 100%); mask-image: linear-gradient(to bottom, #000 62%, transparent 100%); }
  .journey__leg img { object-position: var(--pos-m, var(--pos, 50% 50%)); }
  .hero__caption { display: none; }
  .dayscale__ticks li { font-size: 0; }
  .dayscale__ticks li b { font-size: 0.7rem; }
  .hero__dock { flex-direction: column; flex-wrap: nowrap; align-items: stretch; padding: var(--sc-4); gap: var(--sc-3); bottom: 4.8rem; }
  .hero__dock .av-field { flex: 0 0 auto; max-width: none; }
  .hero__dock-title { font-size: 1.05rem; flex: none; }  /* 100 % от ряда — правило раскладки строкой; в колонке заголовок забирал бы всю высоту */
  .hero__dock-actions { margin-inline-start: 0; }
  .hero__dock .av-btn { flex: 1; }
  /* На телефоне док встаёт на место шкалы: шкала уходит, когда наступает вечер. */
  .dayscale { opacity: min(clamp(0, calc((var(--p) - 0.08) * 14), 1), clamp(0, calc((0.85 - var(--p)) * 14), 1)); }

  .doors__pair { grid-template-columns: 1fr; height: auto; gap: 3px; }
  .doors__pair:has(.door:hover) { grid-template-columns: 1fr; }
  .door { height: 68svh; min-height: 26rem; }
  .door__word { font-size: clamp(3rem, 19vw, 6rem); }
  .js .doors__pair[data-sc-in]:not(.sc-in) .door--home { clip-path: inset(0 0 100% 0); }
  .js .doors__pair[data-sc-in]:not(.sc-in) .door--biz { clip-path: inset(100% 0 0 0); }
  .doors__strip { grid-template-columns: minmax(0, 1fr) auto; gap: var(--sc-3) var(--sc-4); }
  .doors__strip-text { grid-column: 1; grid-row: 2; }
  .doors__strip .av-arrow { grid-column: 2; grid-row: 1 / 3; }

  .kits__head { flex-direction: column; align-items: start; }
  .kits.is-stacked .kit__specs .kit__name dd { font-size: 1.75rem; }

  .station__list li { grid-template-columns: 1.9rem minmax(0, 1fr) auto; column-gap: var(--sc-3); }
  .station__sheet-head { flex-wrap: wrap; }

  .calc__head { grid-template-columns: 1fr; margin-bottom: var(--sc-6); }
  .calc__usage-row { grid-template-columns: 1fr; gap: var(--sc-2); }
  .calc__row { grid-template-columns: 1fr; gap: var(--sc-6); }
  .calc__row--num { grid-template-columns: 1fr 1fr; gap: var(--sc-4); }
  .calc__row--tariff { grid-template-columns: 1fr; gap: var(--sc-6); }
  .calc__appl-head { display: none; }
  .calc__appl-row { grid-template-columns: repeat(3, minmax(0, 1fr)); row-gap: 0.35rem; padding-block: var(--sc-2);
    border-top: 1px solid color-mix(in oklab, var(--av-ink-light) 12%, transparent); }
  .calc__appl-row > .calc__appl-name { grid-column: 1 / 3; grid-row: 1; }
  .calc__appl-row > .calc__appl-del { grid-column: 3; grid-row: 1; justify-self: end; }
  .calc__appl-f span { display: block; margin-bottom: 0.25rem; font-size: var(--sc-t-xs); color: color-mix(in oklab, var(--av-ink-light) 62%, transparent); }
  .calc__svg--year { height: 14rem; }
  .calc__row--num .av-label small { display: block; margin-top: 0.2rem; }
  .calc__peek { display: flex; justify-content: space-between; align-items: baseline; gap: var(--sc-4); position: fixed; left: 0; right: 0; bottom: 0; z-index: calc(var(--sc-z-chrome) - 1);
    margin: 0; padding: 0.85rem var(--sc-gutter) calc(0.85rem + env(safe-area-inset-bottom));
    translate: 0 110%; visibility: hidden; transition: translate 320ms var(--sc-ease-out), visibility 0s linear 320ms;
    background: var(--av-graphite-950); border-top: 1px solid color-mix(in oklab, var(--av-ink-light) 16%, transparent);
    font-size: var(--sc-t-sm); font-variant-numeric: tabular-nums; color: color-mix(in oklab, var(--av-ink-light) 80%, transparent); }
  .calc__peek b { font-family: var(--sc-font-display); font-weight: 700; font-size: 1.35rem; letter-spacing: -0.03em; color: var(--av-amber-300); }
  .calc__peek span:last-child { font-weight: 600; color: var(--av-ink-light); }
  .calc__peek.is-on { translate: 0 0; visibility: visible; transition: translate 320ms var(--sc-ease-out), visibility 0s; }
  .calc__specs { column-gap: var(--sc-4); }
  .calc__send { justify-self: stretch; }
  .calc__svg { height: 17rem; }
  .calc__svg text { font-size: 11px; }

  .faq__item summary { padding-block: var(--sc-4); gap: var(--sc-4); }
  .faq__item p { padding-right: 0; }
  .final__contacts { flex-direction: column; }
  .final__qr { display: none; }
  .kits.is-stacked .kit { grid-template-columns: 1fr; gap: var(--sc-4); }

  .how__scheme svg { max-height: none; }
  /* Схема на телефоне ужата в 2–4 раза: подписи и точки выносок крупнее в единицах схемы,
     чтобы на экране оставаться около 10–12 px. */
  .how__scheme .tag text { font-size: 24px; letter-spacing: 0.1em; }
  .how__scheme .tag circle { r: 6px; }
  /* Крупные подписи: инвертора — чуть ниже линии земли, накопителя — дальше от столба. */
  .how__scheme .tag--inverter text { transform: translate(-6px, 10px); }
  .how__scheme .tag--battery text { transform: translateX(14px); }
  .how__steps { gap: var(--sc-5); }

  /* Обслуживание: тарифы — стопкой. */
  /* Телефон: закреплённый кадр почти портретный, чтобы стоял на экране крупно, а не полосой посреди фона. */
  .ant__model, .ant__model--hyb { grid-template-columns: 1fr; margin-top: var(--sc-6); }
  .ant__model--hyb { margin-top: var(--sc-8); }
  .ant__model--hyb .ant__fig, .ant__model--hyb .ant__body { grid-column: auto; grid-row: auto; }
  .ant__day { margin-top: var(--sc-7); }
  .ant__plot { height: 11rem; }
  .ant__mark { height: 74%; }
  .ant__groups { grid-template-columns: 1fr; }
  .ant__foot { flex-direction: column; align-items: stretch; margin-top: var(--sc-7); }
  .svc__pin { --band-h: min(115vw, 62svh); --pin: 90svh; margin-top: var(--sc-6); }
  .svc__wipe img { object-position: 56% 60%; }
  .svc__sheet { margin-top: var(--sc-6); }
  .svc__sheet-head { flex-direction: column; align-items: stretch; }
  .svc__power-row { display: grid; grid-template-columns: minmax(0, 1fr); width: 100%; }
  .svc__chips { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 0.35rem; }
  .svc__chips .av-chip { width: 100%; min-width: 0; padding-inline: 0.25rem; }
  .svc__own { width: 100%; }
  .svc__plans { grid-template-columns: 1fr; grid-template-rows: none; }
  .svc__plan { grid-row: auto; grid-template-rows: none; padding: var(--sc-5) 0 var(--sc-6); border-left: 0; border-top: 1px solid var(--sc-hairline-strong); }
  .svc__plan:first-child { border-top: 0; }
  .svc__plan:last-child { padding-bottom: 0; }
  .svc__total { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline; column-gap: var(--sc-4); }
  .svc__total .av-label { white-space: nowrap; }
  .svc__total b { font-size: min(1.6rem, 7.2cqi); }
  .svc__pick { justify-self: stretch; }
  .svc__specs { grid-template-columns: 1fr; margin-top: var(--sc-6); }

  .biz__word { top: calc(var(--av-head-h) + 10vh); font-size: clamp(3rem, 17vw, 7rem); }
  .biz__copy { bottom: 9.25rem; }
  .biz__path { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.5rem 0.75rem; }
  .biz__path li { padding-top: 0.6rem; font-size: 0.8rem; line-height: 1.25; }
  .biz__path b { margin-bottom: 0.1rem; }
  .bizspec__grid { grid-template-columns: 1fr; gap: var(--sc-6); }

  .cat__sub { flex-direction: column; align-items: start; }
  .cat__title { font-size: 15vw; }

  .journal__head { grid-template-columns: 1fr; }
  .journal__grid { grid-template-columns: 1fr; }
  .poster--home .poster__media { aspect-ratio: 3 / 4; }
  .poster--home { --wsize: 29cqw; }

  .final__poster { grid-template-columns: 1fr; gap: var(--sc-6); min-height: 0; }
  .final__row { grid-template-columns: 1fr; }
  .final__sun { width: 16rem; left: -18%; top: -12%; }
  /* Телефон: кадр левее центра — ровная часть хребта с заревом города, пик остаётся за краем,
     и хребет закрывает буквы ровно. Горизонт в этой части — 46.7 % высоты. */
  .foot__scene { --sky: 46.7%; aspect-ratio: 5 / 4; }
  .foot__scene img { object-position: 10% var(--sky); }
  .foot__word { font-size: 17cqw; }
  .foot__grid { grid-template-columns: 1fr 1fr; }
  .foot__col a { padding-block: 0.6rem; }
}
@media (max-width: 480px) {
  .foot__grid { grid-template-columns: 1fr; }
  .dayscale__ticks li b { font-size: 0.62rem; }
  .how__steps { grid-template-columns: 1fr; }
  .how__scheme .tag text { font-size: 36px; }
  .how__scheme .tag circle { r: 9px; }
  /* Регистр данных в одну колонку: слоты-плашки не переносятся, а узбекские подписи и слоты длиннее. */
  .bizspec__specs { grid-template-columns: minmax(0, 1fr); }
  .station__list li { grid-template-columns: minmax(0, 1fr) auto; }
  .station__list li::before { display: none; }
  .station__list b, .station__list span { grid-column: 1; }
  .station__list em { grid-column: 2; }
  .calc__specs { grid-template-columns: minmax(0, 1fr); }
  .calc__specs > div { grid-template-columns: minmax(0, 1fr) auto; align-items: baseline; }
}
@media (max-height: 760px) and (min-width: 861px) {
  .hero { --av-word-top: calc(var(--av-head-h) + 4vh); }
  .hero__copy, .leg-copy { bottom: 5.8rem; }
  .hero__h1 { font-size: clamp(1.9rem, 6.4vh, 3rem); }
  .hero__cta { margin-top: var(--sc-4); }
  .hero__dock { bottom: 5.4rem; }
  .biz__copy { bottom: 6.5rem; }
  .biz__word { top: calc(var(--av-head-h) + 5vh); }
}

/* ------------------------------------------------------------------ 7 ---- */
/* Сцена паркуется в устойчивом состоянии; содержание и действия остаются.
   Класс html.av-reduced ставит JS и по системной настройке, и по ?reduced. */
@media (prefers-reduced-motion: reduce) {
  .av-module__media img, .door img, .poster__media img { transition: none; }
  .doors__pair { transition: none; }
}
html.av-reduced .kits__stage, html.av-reduced .how, html.av-reduced .biz__stage,
html.av-reduced .cat__stage, html.av-reduced .final { --p: 1; }
html.av-reduced .hero__stage { --p: 0; }
html.av-reduced .dayscale, html.av-reduced .journey__leg:not(:first-child),
html.av-reduced .hero__place:not([data-place="dawn"]), html.av-reduced .biz__glow { display: none; }
html.av-reduced .journey__leg img { scale: 1; }
html.av-reduced [data-sc-in], html.av-reduced [data-sc-stagger] > * { opacity: 1; transform: none; transition: none; }
html.av-reduced .door, html.av-reduced .poster__media { clip-path: none !important; transition: none; }
html.av-reduced .poster__media img { scale: 1 !important; }
html.av-reduced .foot__word { translate: none !important; transition: none; }
html.av-reduced .station__sheet { translate: none !important; transition: none; }
html.av-reduced .faq__item::details-content, html.av-reduced .calc__months::details-content { transition: none; }
/* Реплики участков и док в сокращённом режиме — обычное содержимое под кадром. */
.hero__static { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--sc-6); padding-block: var(--sc-7); color: var(--av-ink-light); }
.hero__static .sc-copy { position: static; max-width: none; opacity: 1; transform: none; }
.hero__static .leg-copy .av-h2 { font-size: var(--av-t-h3); }
.hero__static .hero__dock { position: static; grid-column: 1 / -1; max-width: none; opacity: 1; transform: none; }
@media (max-width: 860px) { .hero__static { grid-template-columns: 1fr; } }

/* Без JS: первая сцена и содержимое видны без движка. */
html:not(.js) [data-sc-cue], html:not(.js) [data-sc-in], html:not(.js) [data-sc-stagger] > * { opacity: 1; transform: none; }
html:not(.js) .leg-copy, html:not(.js) .hero__dock, html:not(.js) .hero__place:not([data-place="dawn"]) { display: none; }
html:not(.js) [data-sc-stage] { position: relative; min-height: 100svh; }
html:not(.js) .how { --p: 1; }

/* ------------------------------------------------------------------ 8 ---- */
/* Другие языки. Размеры мега-слов подобраны под русские слова («Дом», «Бизнес», «КП»);
   здесь — под английские и узбекские, чтобы слово занимало кадр так же и не выходило за край.
   Коэффициенты сняты замером ширины слов в собранной странице. */
:lang(en) .door__word { font-size: clamp(3rem, 7vw, 8rem); }
:lang(en) .biz__word { font-size: clamp(3rem, 13vw, 14rem); }
:lang(en) .poster--home { --wsize: 22cqw; }
:lang(uz) .poster--home { --wsize: 40cqw; }
:lang(en) .poster--kp, :lang(uz) .poster--kp { --wsize: 20cqw; }
@media (max-width: 1100px) {
  :lang(en) .poster--home { --wsize: 17cqw; }
  :lang(uz) .poster--home { --wsize: 30cqw; }
}
@media (max-width: 860px) {
  :lang(en) .door__word { font-size: clamp(2.6rem, 13vw, 5rem); }
  :lang(en) .biz__word { font-size: clamp(2.6rem, 14vw, 6rem); }
  :lang(en) .poster--home { --wsize: 22cqw; }
  :lang(uz) .poster--home { --wsize: 40cqw; }
}
