/* ==========================================================================
   Тезис — лендинг «Управление репутацией»
   Мир: «Грани репутации» — огранённый кристалл бренда, стеклянные каналы,
   один сине-фиолетовый свет. Светлая тема по умолчанию + тёмная.
   ========================================================================== */

@font-face { font-family: "Montserrat"; src: url("../fonts/montserrat-400.woff2") format("woff2"); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: "Montserrat"; src: url("../fonts/montserrat-500.woff2") format("woff2"); font-weight: 500; font-style: normal; font-display: swap; }
@font-face { font-family: "Montserrat"; src: url("../fonts/montserrat-600.woff2") format("woff2"); font-weight: 600; font-style: normal; font-display: swap; }
@font-face { font-family: "Montserrat"; src: url("../fonts/montserrat-700.woff2") format("woff2"); font-weight: 700; font-style: normal; font-display: swap; }
@font-face { font-family: "Montserrat"; src: url("../fonts/montserrat-800.woff2") format("woff2"); font-weight: 800; font-style: normal; font-display: swap; }
/* знак «made by ilya» в футере: Barlow Condensed 700, только буквы знака (подмножество, 4 КБ) */
@font-face { font-family: "Barlow Condensed Mark"; src: url("../fonts/barlow-condensed-700-madeby.woff2") format("woff2"); font-weight: 700; font-style: normal; font-display: swap; }

/* ---------- Токены ---------- */
:root {
  /* бренд */
  --blue: #455FEC;
  --violet: #786AFC;
  --lilac: #A662FD;
  --deep: #360678;
  --coral: #FF4B55;
  --neon: #77FF9B;
  --grey: #F0F1F1;

  /* крутилки (перезаписываются dev-панелью) */
  --glass-a: .62;
  --glass-blur: 22px;
  --motion: 1;

  /* светлая тема */
  --bg: #F2F3F8;
  --bg-rgb: 242 243 248;
  --bg-2: #E8EAF3;
  --ink: #0A0E1F;
  --ink-2: #2F3654;
  --ink-3: #555C7C;
  --line: rgb(22 30 74 / .12);
  --line-2: rgb(22 30 74 / .2);
  --glass-rgb: 255 255 255;
  --glass-top: rgb(255 255 255 / .9);
  --glass-side: rgb(255 255 255 / .5);
  --field-bg: rgb(255 255 255 / .72);
  --shadow: 0 30px 60px -34px rgb(28 36 110 / .38), 0 2px 8px -4px rgb(28 36 110 / .12);
  --shadow-sm: 0 14px 30px -18px rgb(28 36 110 / .4);
  --accent: var(--blue);
  --accent-2: var(--violet);
  --on-accent: #fff;
  --pos: #0E7A46;
  --neg: #D92F3A;
  --amber: #E09A12;
  --c-serm: #455FEC;
  --c-orm: #6453F0;
  --c-geo: #8238EC;
  --c-ai: #360678;
  --veil: .0;

  --font: "Montserrat", system-ui, -apple-system, "Segoe UI", sans-serif;
  --fs-h1: clamp(2.1rem, 1rem + 2.6vw, 3.4rem);
  --fs-h2: clamp(1.85rem, 1.2rem + 2.1vw, 3.15rem);
  --fs-h3: clamp(1.15rem, 1rem + .5vw, 1.4rem);
  --fs-lead: clamp(1.04rem, .98rem + .32vw, 1.22rem);
  --fs-initial: clamp(5.2rem, 2.4rem + 11vw, 11.5rem);

  --r: 14px;
  --r-lg: 16px;
  --gutter: clamp(16px, 4vw, 48px);
  --sec: clamp(72px, 7vw, 118px);
  --header-h: 72px;
  --ease-out: cubic-bezier(.16, 1, .3, 1);
  --ease-io: cubic-bezier(.65, 0, .35, 1);
  color-scheme: light;
}

:root[data-theme="dark"] {
  --bg: #05070D;
  --bg-rgb: 5 7 13;
  --bg-2: #0A1020;
  --ink: #EEF0FA;
  --ink-2: #BAC0DA;
  --ink-3: #8D94B4;
  --line: rgb(190 200 255 / .12);
  --line-2: rgb(190 200 255 / .2);
  --glass-rgb: 14 20 42;
  --glass-top: rgb(255 255 255 / .16);
  --glass-side: rgb(255 255 255 / .05);
  --field-bg: rgb(255 255 255 / .05);
  --shadow: 0 34px 70px -34px rgb(0 0 0 / .8), 0 2px 10px -4px rgb(0 0 0 / .5);
  --shadow-sm: 0 16px 34px -18px rgb(0 0 0 / .8);
  --accent: #5B72FF;
  --accent-2: var(--violet);
  --pos: #6BEA92;
  --neg: #FF6B73;
  --amber: #F4B63F;
  --c-serm: #6A80FF;
  --c-orm: #8E82FF;
  --c-geo: #B47BFF;
  --c-ai: #C7B5FF;
  color-scheme: dark;
}

/* ---------- База ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: calc(var(--header-h) + 16px); }
body {
  margin: 0;
  min-height: 100vh;
  font-family: var(--font);
  font-size: 1rem;
  line-height: 1.6;
  font-weight: 400;
  color: var(--ink);
  background: var(--bg);
  overflow-x: clip;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  font-feature-settings: "kern", "liga";
  caret-color: var(--accent);
  scrollbar-color: color-mix(in srgb, var(--violet) 55%, transparent) transparent;
}
@media (min-width: 1100px) { body { font-size: 1.0625rem; } }
::selection { background: var(--violet); color: #fff; }
img, svg { display: block; max-width: 100%; }
a { color: inherit; text-decoration-thickness: 1px; text-underline-offset: .2em; }
a:hover { color: var(--accent); }
button, input, textarea, select { font: inherit; color: inherit; }
button { cursor: pointer; }
h1, h2, h3, h4 { margin: 0; font-weight: 700; line-height: 1.08; letter-spacing: -.025em; text-wrap: balance; }
p { margin: 0; text-wrap: pretty; }
ul, ol, dl, dd { margin: 0; padding: 0; }
ul, ol { list-style: none; }
table { border-collapse: collapse; width: 100%; }
b, strong { font-weight: 600; }
[hidden] { display: none !important; }
.sprite { position: absolute; width: 0; height: 0; overflow: hidden; }
.sr-only { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.ic { width: 1.25em; height: 1.25em; flex: none; }
:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; border-radius: 6px; }
::-webkit-scrollbar { width: 11px; height: 11px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: color-mix(in srgb, var(--violet) 45%, transparent); border-radius: 10px; border: 3px solid var(--bg); }

.wrap { width: 100%; max-width: 1320px; margin-inline: auto; padding-inline: var(--gutter); }
/* справа на десктопе живёт колонка связи: контент не заходит под неё, когда поля узкие */
@media (min-width: 981px) {
  main .wrap, .footer .wrap { padding-right: max(var(--gutter), calc(100px - max(0px, (100vw - 1320px) / 2))); }
}

/* ---------- Фоновый параллакс ---------- */
.bg { position: fixed; inset: 0; z-index: 0; overflow: hidden; pointer-events: none; background: var(--bg); }
.bg__layer { position: absolute; inset: 0; will-change: transform; }
.bg__far { inset: -8% -10%; }
.bg__trails { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 30% 60%; transition: opacity 1.1s var(--ease-io); }
.bg__trails--dark { opacity: 0; }
:root[data-theme="dark"] .bg__trails--light { opacity: 0; }
:root[data-theme="dark"] .bg__trails--dark { opacity: .92; }
.bg__far::after { /* вуаль: после hero фон уходит на второй план, текст читается */
  content: ""; position: absolute; inset: 0; background: var(--bg); opacity: var(--veil); transition: opacity .2s linear;
}
.bg__glow i { position: absolute; border-radius: 50%; filter: blur(60px); opacity: .5; }
.bg__glow i:nth-child(1) { width: 46vmax; height: 46vmax; right: -12vmax; top: -18vmax; background: radial-gradient(circle, color-mix(in srgb, var(--blue) 26%, transparent), transparent 70%); }
.bg__glow i:nth-child(2) { width: 40vmax; height: 40vmax; left: -16vmax; top: 40vh; background: radial-gradient(circle, color-mix(in srgb, var(--lilac) 22%, transparent), transparent 70%); }
.bg__glow i:nth-child(3) { width: 30vmax; height: 30vmax; right: 10vw; bottom: -14vmax; background: radial-gradient(circle, color-mix(in srgb, var(--violet) 20%, transparent), transparent 70%); }
:root[data-theme="dark"] .bg__glow i { opacity: .8; }

.bg__objects { inset: 0; }
.chrome {
  position: absolute; left: 0; top: 0;
  width: var(--s, 120px); height: auto;
  will-change: transform, filter;
  opacity: 0;
  transition: opacity 1.2s var(--ease-out);
  filter: drop-shadow(0 18px 24px rgb(30 40 110 / .22));
}
.chrome.is-on { opacity: var(--o, 1); }
:root[data-theme="dark"] .chrome { filter: drop-shadow(0 18px 30px rgb(0 0 0 / .6)) brightness(.92); }
.chrome.is-blur { filter: blur(var(--blur, 3px)) drop-shadow(0 18px 24px rgb(30 40 110 / .18)); }
:root[data-theme="dark"] .chrome.is-blur { filter: blur(var(--blur, 3px)) brightness(.8); }
html[data-objects="off"] .bg__objects { display: none; }

/* ---------- Сцена (WebGL + DOM-панели) ---------- */
.scene { position: fixed; inset: 0; z-index: 1; pointer-events: none; }
.scene__gl { position: absolute; inset: 0; width: 100%; height: 100%; z-index: 2; }
.scene__back { position: absolute; inset: 0; z-index: 1; }
.scene__front { position: absolute; inset: 0; z-index: 3; }
.scene [data-p] { position: absolute; left: 0; top: 0; opacity: 0; will-change: transform, opacity; }
.scene.is-fallback .scene__gl { display: none; }
.scene__flows { position: absolute; inset: 0; width: 100%; height: 100%; z-index: 2; overflow: visible; pointer-events: none; --flow-a: #455FEC; --flow-b: #786AFC; }
:root[data-theme="dark"] .scene__flows { --flow-a: #9FB6FF; --flow-b: #B9A8FF; }
.flow path { fill: none; stroke-linecap: round; }
.flow__glow { stroke: var(--flow-a); stroke-width: 7; opacity: .22; filter: blur(3px); }
.flow__line { stroke-width: 1.7; }
.flow__pulse { stroke: var(--flow-b); stroke-width: 2.2; stroke-dasharray: 4 140; opacity: .9; animation: flowDash calc(3.4s / max(var(--motion), .1)) linear infinite; }
.flow--out .flow__glow { stroke: var(--flow-b); stroke-width: 10; opacity: .3; }
.flow--out .flow__line { stroke-width: 2.2; }
.flow--out .flow__pulse { stroke-width: 2.6; }
.flow__s0 { stop-color: var(--flow-a); stop-opacity: .35; }
.flow__s1 { stop-color: var(--flow-a); stop-opacity: .95; }
.flow-grad--out .flow__s0 { stop-color: var(--flow-b); stop-opacity: 1; }
.flow-grad--out .flow__s1 { stop-color: var(--flow-b); stop-opacity: .45; }
.flow__dot { fill: #fff; stroke: var(--flow-a); stroke-width: 1.6; filter: drop-shadow(0 0 5px var(--flow-a)); }
.flow__dot--out { stroke: var(--flow-b); filter: drop-shadow(0 0 7px var(--flow-b)); }
@keyframes flowDash { to { stroke-dashoffset: -288; } }


.brand-core-label { position: absolute; left: 0; top: 0; opacity: 0; will-change: transform, opacity; }
.brand-core-label span {
  display: block; transform: translate(-50%, -50%);
  font-size: 12px; font-weight: 600; letter-spacing: .5em; text-indent: .5em; white-space: nowrap;
  color: rgb(255 255 255 / .86);
}

/* запасное ядро без WebGL */
.scene.is-fallback .brand-core-label::before {
  content: ""; position: absolute; left: 0; top: 0; width: var(--core, 300px); height: var(--core, 300px);
  transform: translate(-50%, -50%); border-radius: 50%;
  background: #05060C;
  box-shadow: 0 0 0 1.5px #6E86FF, 0 0 0 3px rgb(110 134 255 / .35), 0 0 42px 6px rgb(90 110 255 / .45), inset 0 0 22px rgb(110 134 255 / .25);
  opacity: .9;
}
.scene.is-fallback .brand-core-label.is-bare span { opacity: 0; }

.panel {
  width: 280px;
  padding: 14px 16px 15px;
  font-size: 12.5px; line-height: 1.45;
  color: var(--ink);
  border-radius: var(--r);
  background: linear-gradient(170deg, rgb(var(--glass-rgb) / calc(var(--glass-a) + .16)), rgb(var(--glass-rgb) / calc(var(--glass-a) + .02)));
  -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(1.6);
  backdrop-filter: blur(var(--glass-blur)) saturate(1.6);
  box-shadow: inset 0 1px 0 var(--glass-top), inset 0 0 0 1px var(--glass-side), var(--shadow);
  pointer-events: auto;
  transition: opacity .45s var(--ease-out), box-shadow .45s var(--ease-out);
  cursor: default;
}
.panel::after { /* толщина стекла: нижняя грань */
  content: ""; position: absolute; left: 10px; right: 10px; bottom: -3px; height: 6px; border-radius: 0 0 var(--r) var(--r);
  background: linear-gradient(90deg, color-mix(in srgb, var(--blue) 30%, transparent), color-mix(in srgb, var(--lilac) 30%, transparent));
  filter: blur(4px); opacity: .85; z-index: -1;
}
.panel.is-dim { opacity: .38 !important; }
.panel.is-glow { box-shadow: inset 0 1px 0 var(--glass-top), inset 0 0 0 1px color-mix(in srgb, var(--violet) 60%, transparent), 0 0 0 4px color-mix(in srgb, var(--violet) 16%, transparent), 0 20px 60px -20px color-mix(in srgb, var(--violet) 70%, transparent); }
.panel__bar { display: flex; align-items: center; gap: 7px; font-size: 11px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--ink-3); margin-bottom: 10px; }
.panel__bar .ic { width: 14px; height: 14px; color: var(--accent); }
.panel__bar em { font-style: normal; color: var(--accent); }
.panel__bar em::before { content: "/"; margin: 0 6px 0 2px; color: var(--ink-3); opacity: .6; }
.panel--search { width: 258px; }
.panel__query { display: flex; align-items: center; height: 34px; padding: 0 12px; border-radius: 10px; background: var(--field-bg); box-shadow: inset 0 0 0 1px var(--line); font-weight: 500; margin-bottom: 10px; }
.caret { width: 1.5px; height: 15px; margin-left: 2px; background: var(--accent); animation: blink 1.1s steps(1) infinite; }
@keyframes blink { 50% { opacity: 0; } }
.serp { display: grid; gap: 9px; }
.serp__row { display: grid; grid-template-columns: 18px 1fr; gap: 9px; }
.serp__row b { display: block; font-size: 12.5px; color: var(--accent); font-weight: 600; line-height: 1.25; }
.serp__row small { display: block; font-size: 10.5px; color: var(--pos); }
.serp__row p { font-size: 11.5px; color: var(--ink-2); }
.serp__row mark { background: color-mix(in srgb, var(--pos) 16%, transparent); color: var(--pos); border-radius: 4px; padding: 0 4px; font-weight: 600; }
.serp__row--fade { opacity: .45; }
.fav { width: 18px; height: 18px; border-radius: 6px; margin-top: 1px; }
.fav--a { background: linear-gradient(135deg, var(--blue), var(--violet)); }
.fav--b { background: color-mix(in srgb, var(--ink) 75%, transparent); }
.fav--c { background: color-mix(in srgb, var(--lilac) 60%, transparent); }

.panel--reviews { width: 224px; }
.rating { display: flex; align-items: center; flex-wrap: wrap; gap: 4px 8px; margin-bottom: 10px; }
.rating__num { font-size: 26px; font-weight: 700; letter-spacing: -.02em; font-variant-numeric: tabular-nums; }
.stars { display: inline-flex; gap: 1px; color: var(--amber); }
.stars svg { width: 14px; height: 14px; }
.stars .half { clip-path: inset(0 30% 0 0); }
.rating small { width: 100%; font-size: 11px; color: var(--ink-3); }
.rev { display: grid; gap: 7px; margin-bottom: 10px; }
.rev li { display: flex; align-items: center; gap: 8px; color: var(--ink-2); }
.ava { width: 20px; height: 20px; border-radius: 50%; flex: none; }
.ava--1 { background: linear-gradient(135deg, #C9D2FF, #7E8DF5); }
.ava--2 { background: linear-gradient(135deg, #E2CFFF, #A662FD); }
.ava--3 { background: linear-gradient(135deg, #D4DBEA, #6D7896); }
.ava--4 { background: linear-gradient(135deg, var(--blue), var(--deep)); width: 28px; height: 28px; }
.sentiment { display: inline-flex; align-items: center; gap: 6px; padding: 4px 9px; border-radius: 8px; font-size: 11.5px; font-weight: 500; color: var(--pos); background: color-mix(in srgb, var(--pos) 12%, transparent); }
.sentiment .ic { width: 14px; height: 14px; }

.panel--ai { width: 292px; }
.panel--ai .panel__bar { color: var(--ink-2); }
.panel--ai .panel__bar .ic { color: var(--violet); }
.ai__q { display: inline-block; padding: 6px 10px; border-radius: 10px 10px 10px 3px; background: color-mix(in srgb, var(--violet) 14%, transparent); font-weight: 500; margin-bottom: 8px; }
.ai__a { min-height: 54px; color: var(--ink-2); margin-bottom: 10px; }
.ai__typed::after { content: ""; display: inline-block; width: 6px; height: 12px; margin-left: 2px; vertical-align: -1px; background: var(--violet); opacity: .7; animation: blink 1s steps(1) infinite; }
.ai__src-title { font-size: 10.5px; letter-spacing: .08em; text-transform: uppercase; font-weight: 600; color: var(--ink-3); margin-bottom: 6px; }
.ai__src { display: flex; flex-wrap: wrap; gap: 5px; }
.ai__src li { font-size: 11px; padding: 3px 8px; border-radius: 7px; background: var(--field-bg); box-shadow: inset 0 0 0 1px var(--line); transition: background .3s, box-shadow .3s, color .3s; }
.ai__src li.is-hit { background: color-mix(in srgb, var(--violet) 20%, transparent); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--violet) 55%, transparent); color: var(--ink); }


.panel--media { width: 252px; }
.news { display: grid; gap: 10px; }
.news li { display: grid; grid-template-columns: 58px 1fr; gap: 10px; align-items: center; }
.news img { width: 58px; height: 40px; object-fit: cover; border-radius: 7px; filter: grayscale(1) contrast(1.05); }
.news .bc-img img { filter: var(--img-mute); }
.news b { display: block; font-size: 12px; line-height: 1.3; font-weight: 600; }
.news small { display: block; margin-top: 2px; font-size: 10.5px; color: var(--ink-3); }
.panel--social { width: 234px; }
.post { display: flex; gap: 8px; align-items: center; margin-bottom: 8px; }
.post b { display: block; font-size: 12.5px; }
.post small { font-size: 10.5px; color: var(--ink-3); }
.post__text { color: var(--ink-2); margin-bottom: 8px; }
.post__react { display: flex; gap: 14px; font-size: 11px; color: var(--ink-3); }
.post__react span { display: inline-flex; align-items: center; gap: 4px; }
.post__react .ic { width: 13px; height: 13px; }

/* ---------- Кристалл (DEV «Кристалл» и «Икосаэдр»): карточки первой итерации ---------- */
html:not([data-core="gem"]):not([data-core="icosa"]) .scene [data-variant="gem"],
html:is([data-core="gem"], [data-core="icosa"]) .scene [data-p]:not([data-variant="gem"]),
html:is([data-core="gem"], [data-core="icosa"]) .scene__flows { display: none; }

html[data-core="gem"] .brand-core-label span {
  font-size: 12px; letter-spacing: .62em; text-indent: .62em;
  color: #fff; text-shadow: 0 1px 12px rgb(30 20 120 / .55);
}
html[data-core="gem"] .scene.is-fallback .brand-core-label::before {
  border-radius: 38% 42% 40% 44%;
  background: radial-gradient(circle at 35% 30%, #fff 0 6%, transparent 22%), conic-gradient(from 40deg, #455FEC, #786AFC, #A662FD, #5B6CFF, #455FEC);
  box-shadow: inset 0 0 40px rgb(255 255 255 / .5), 0 30px 80px -20px rgb(90 70 240 / .6);
}
/* икосаэдр без WebGL: шестиугольный силуэт, метка остаётся внутри формы */
html[data-core="icosa"] .scene.is-fallback .brand-core-label::before {
  width: calc(var(--core, 300px) * .86); height: calc(var(--core, 300px) * .86);
  border-radius: 0;
  clip-path: polygon(50% 0, 93.3% 25%, 93.3% 75%, 50% 100%, 6.7% 75%, 6.7% 25%);
  background: radial-gradient(circle at 36% 28%, rgb(255 255 255 / .75) 0 5%, transparent 24%), conic-gradient(from 30deg, #5B6CFF, #786AFC, #A662FD, #455FEC, #8E82FF, #5B6CFF);
}

/* клик по карточке раскрывает сноску о канале (см. TZ.cardTip) */
.panel[data-variant="gem"] { cursor: pointer; }

.panel--search[data-variant="gem"] { width: 300px; }
.panel--reviews[data-variant="gem"] { width: 250px; }
.panel--ai[data-variant="gem"] { width: 300px; }
.panel--ai[data-variant="gem"] .panel__bar { color: var(--ink-3); }
.panel--media[data-variant="gem"] { width: 236px; }

.panel--maps { width: 250px; }
.panel--maps .map { position: relative; height: 98px; border-radius: 10px; overflow: hidden; margin-bottom: 10px; background: color-mix(in srgb, var(--blue) 7%, var(--field-bg)); }
.map__svg { width: 100%; height: 100%; }
.map__block { fill: color-mix(in srgb, var(--violet) 10%, transparent); }
.map__road { fill: none; stroke: rgb(var(--glass-rgb) / .95); stroke-width: 5; }
:root[data-theme="dark"] .map__road { stroke: rgb(255 255 255 / .14); }
.map__road--thin { stroke-width: 2; }
.map__pin { position: absolute; color: var(--coral); }
.map__pin--main { left: 46%; top: 16%; width: 28px; height: 28px; filter: drop-shadow(0 4px 6px rgb(0 0 0 / .25)); animation: pinBob calc(4s / max(var(--motion), .1)) ease-in-out infinite; }
.map__pin svg { width: 100%; height: 100%; }
.map__pin--main svg { fill: color-mix(in srgb, var(--coral) 20%, #fff); }
.map__dot { position: absolute; width: 8px; height: 8px; border-radius: 50%; background: var(--violet); box-shadow: 0 0 0 4px color-mix(in srgb, var(--violet) 22%, transparent); }
@keyframes pinBob { 50% { transform: translateY(-4px); } }
.panel--maps .place { display: flex; gap: 10px; align-items: center; }
.panel--maps .place img { width: 54px; height: 40px; object-fit: cover; border-radius: 8px; }
.panel--maps .place b { display: block; font-size: 13px; }
.panel--maps .place small { display: inline-flex; align-items: center; gap: 3px; font-size: 11px; color: var(--ink-3); }
.panel--maps .open { color: var(--pos); font-weight: 600; }
.ic--star { width: 12px; height: 12px; color: var(--amber); }

.panel--agent { width: 212px; }
.panel--agent .panel__bar .ic { color: var(--pos); }
.panel__bar .live { margin-left: auto; font-style: normal; padding: 1px 6px; border-radius: 6px; font-size: 10px; letter-spacing: .04em; color: var(--pos); background: color-mix(in srgb, var(--pos) 12%, transparent); }
.panel__bar .live::before { content: none; }
.panel--agent .feed { display: grid; gap: 6px; margin-bottom: 0; }
.panel--agent .feed li { display: flex; align-items: center; gap: 8px; font-size: 11.5px; color: var(--ink-2); animation: feedIn .6s var(--ease-out) both; }
@keyframes feedIn { from { opacity: 0; transform: translateY(-6px); } }
.panel--agent .dot { width: 7px; height: 7px; border-radius: 50%; flex: none; }
.panel--agent .dot--pos { background: var(--pos); } .panel--agent .dot--neu { background: var(--ink-3); } .panel--agent .dot--neg { background: var(--coral); }

.sig {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 7px 11px; border-radius: 10px;
  font-size: 11.5px; font-weight: 500; white-space: nowrap;
  color: var(--ink-2);
  background: rgb(var(--glass-rgb) / calc(var(--glass-a) + .1));
  -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px);
  box-shadow: inset 0 1px 0 var(--glass-top), var(--shadow-sm);
}
.sig .ic { width: 14px; height: 14px; color: var(--violet); }
.sig--rating { font-weight: 700; font-size: 13px; color: var(--ink); }
.sig--snippet { display: grid; gap: 5px; width: 96px; }
.sig--snippet i { display: block; height: 5px; border-radius: 3px; background: color-mix(in srgb, var(--ink) 16%, transparent); }
.sig--snippet i:first-child { width: 70%; background: color-mix(in srgb, var(--blue) 50%, transparent); }
.sig--snippet i:last-child { width: 55%; }
.sig__play { display: grid; place-items: center; width: 22px; height: 16px; border-radius: 4px; background: var(--coral); color: #fff; }
.sig__play svg { width: 10px; height: 10px; }
.sig--up .ic { color: var(--pos); }



.scene-tip {
  position: fixed; left: 0; top: 0; z-index: 35; width: 250px;
  padding: 12px 14px 13px;
  border-radius: 12px;
  background: color-mix(in srgb, var(--deep) 88%, transparent);
  color: #fff; font-size: 13px; line-height: 1.45;
  box-shadow: 0 20px 40px -18px rgb(20 0 70 / .6);
  opacity: 0; transform: translateY(6px); transition: opacity .3s var(--ease-out), transform .3s var(--ease-out);
  pointer-events: none;
}
.scene-tip b { display: block; font-size: 15px; letter-spacing: .02em; margin-bottom: 3px; color: #D8D1FF; }
.scene-tip.is-on { opacity: 1; transform: none; }
.scene-tip::before { /* лидер-линия */
  content: ""; position: absolute; top: 22px; width: var(--lead, 40px); height: 1px; background: color-mix(in srgb, var(--violet) 80%, transparent);
  right: 100%;
}
.scene-tip::after { content: ""; position: absolute; top: 19px; width: 7px; height: 7px; border-radius: 50%; background: var(--violet); right: calc(100% + var(--lead, 40px) - 3px); }
.scene-tip.is-left::before { right: auto; left: 100%; }
.scene-tip.is-left::after { right: auto; left: calc(100% + var(--lead, 40px) - 3px); }

/* ==========================================================================
   Brand Stack — стопка информационных слоёв (режим ядра «Стопка»)
   ========================================================================== */
html:not([data-core="stack"]) .bstack,
html:not([data-core="stack"]) .bstack__toggle,
html:not([data-core="stack"]) .mstack { display: none; }
html[data-core="stack"] .scene__front,
html[data-core="stack"] .scene__flows { display: none; }
html[data-core="stack"] .hero__slot { position: relative; pointer-events: auto; }

.bstack { position: absolute; inset: 0; display: grid; place-items: center; }
/* текст hero всегда поверх визуализации */
.hero__content { position: relative; z-index: 2; }
.hero__slot { z-index: 1; }
.bstack__view { position: relative; width: 0; height: 0; perspective: 1900px; }
.bstack__rig { position: absolute; left: 0; top: 0; transform-style: preserve-3d; will-change: transform; }

.bs-plate {
  position: absolute; left: calc(var(--w) / -2); top: calc(var(--d) / -2);
  width: var(--w); height: var(--d);
  transform-style: preserve-3d; will-change: transform;
}
.bs-face {
  position: absolute; inset: 0; overflow: hidden;
  padding: 20px 22px;
  border-radius: 5px;
  color: var(--ink);
  font-size: 15px; line-height: 1.35;
  cursor: pointer;
  background: linear-gradient(150deg, rgb(255 255 255 / .84), rgb(238 240 255 / .6) 55%, rgb(224 229 255 / .52));
  box-shadow: inset 0 0 0 1px rgb(255 255 255 / .95), inset 0 -26px 40px -30px color-mix(in srgb, var(--hue) 55%, transparent);
  opacity: var(--fo, 1);
  transition: opacity .35s var(--ease-out), box-shadow .35s var(--ease-out);
}
/* нижние слои: всё главное — у переднего края, в открытой полосе */
.bs-plate:not(.bs-plate--top) .bs-face { display: flex; flex-direction: column; justify-content: flex-end; padding-bottom: 16px; }
.bs-plate:not(.bs-plate--top) .bs-head { margin-bottom: 8px; }
.bs-plate:not(.bs-plate--top) :is(.bs-map, .bs-rev, .bs-trend, .bs-rating small, .bs-post, .bs-react, .bs-news li + li, .bs-res, .bs-feed li:nth-child(3)) { display: none; }
.bs-plate:not(.bs-plate--top) .bs-query { margin-bottom: 0; }
.bs-plate:not(.bs-plate--top) .bs-rating { margin-bottom: 0; }
.bs-plate:not(.bs-plate--top) .bs-quote { margin-bottom: 0; }
:root[data-theme="dark"] .bs-face {
  background: linear-gradient(150deg, rgb(52 62 132 / .72), rgb(20 26 62 / .66) 60%, rgb(14 18 44 / .62));
  box-shadow: inset 0 0 0 1px rgb(170 182 255 / .28), inset 0 -26px 40px -30px color-mix(in srgb, var(--hue) 70%, transparent);
}
.bs-face::after { /* блик, пробегающий по стеклу */
  content: ""; position: absolute; inset: -30% -60%; pointer-events: none;
  background: linear-gradient(105deg, transparent 42%, rgb(255 255 255 / .5) 50%, transparent 58%);
  transform: translateX(-70%);
  animation: bsShine calc(9s / max(var(--motion), .1)) var(--ease-io) infinite;
}
:root[data-theme="dark"] .bs-face::after { background: linear-gradient(105deg, transparent 44%, rgb(190 200 255 / .16) 50%, transparent 56%); }
.bs-plate:nth-child(2) .bs-face::after { animation-delay: .5s; }
.bs-plate:nth-child(3) .bs-face::after { animation-delay: 1s; }
.bs-plate:nth-child(4) .bs-face::after { animation-delay: 1.5s; }
.bs-plate:nth-child(5) .bs-face::after { animation-delay: 2s; }
.bs-plate:nth-child(6) .bs-face::after { animation-delay: 2.5s; }
.bs-plate:nth-child(7) .bs-face::after { animation-delay: 3s; }
@keyframes bsShine { 0%, 55% { transform: translateX(-70%); } 100% { transform: translateX(70%); } }

.bs-plate.is-dim .bs-face { opacity: calc(var(--fo, 1) * .4); }
.bs-plate.is-hover .bs-face {
  box-shadow: inset 0 0 0 1.5px color-mix(in srgb, var(--hue) 75%, #fff), 0 0 0 5px color-mix(in srgb, var(--hue) 16%, transparent), 0 0 44px 4px color-mix(in srgb, var(--hue) 30%, transparent);
}
.bs-plate.is-glow .bs-face {
  box-shadow: inset 0 0 0 1.5px var(--violet), 0 0 0 5px color-mix(in srgb, var(--violet) 18%, transparent), 0 0 50px 6px color-mix(in srgb, var(--violet) 38%, transparent);
}

/* торцы */
.bs-edge { position: absolute; overflow: hidden; pointer-events: none; }
.bs-edge--front {
  left: 0; top: 100%; width: 100%; height: var(--t);
  transform-origin: 50% 0; transform: rotateX(-90deg);
  background: linear-gradient(180deg, #5A67F0, #3643BF);
  box-shadow: inset 0 1px 0 rgb(255 255 255 / .5), inset 0 -1px 0 rgb(10 12 60 / .35);
}
.bs-edge--side {
  left: 0; top: 0; width: var(--t); height: 100%;
  transform-origin: 0 50%; transform: rotateY(90deg);
  background: linear-gradient(90deg, #3B47C7, #262F8F);
}
:root[data-theme="dark"] .bs-edge--front { background: linear-gradient(180deg, #333D9E, #181D52); box-shadow: inset 0 1px 0 rgb(170 182 255 / .5), inset 0 -1px 0 rgb(0 0 0 / .4); }
:root[data-theme="dark"] .bs-edge--side { background: linear-gradient(90deg, #242B74, #121642); }
.bs-word {
  position: absolute; left: 0; width: 100%; height: calc(var(--t) * var(--n));
  display: flex; flex-direction: column;
  color: #fff; font-weight: 800; letter-spacing: .14em; text-indent: .14em;
  font-size: calc(var(--t) * var(--n) * .4); line-height: 1;
  text-shadow: 0 0 18px rgb(255 255 255 / .35);
  /* пока слои раскрыты, срезы букв приглушены; при сборке надпись проявляется */
  opacity: calc(1 - var(--open, 0) * .82);
}
.bs-word span { flex: 1; display: flex; align-items: center; justify-content: center; }

/* свет и данные между слоями */
.bs-beam {
  position: absolute; left: 0; top: 0; width: 2px; transform-origin: 50% 0; pointer-events: none; border-radius: 2px;
  background: linear-gradient(180deg, color-mix(in srgb, var(--violet) 85%, #fff), color-mix(in srgb, var(--blue) 35%, transparent));
  box-shadow: 0 0 12px 2px color-mix(in srgb, var(--violet) 45%, transparent);
}
.bs-flow {
  position: absolute; left: 0; top: 0; width: 10px; height: 10px; border-radius: 50%; pointer-events: none;
  background: radial-gradient(circle, #fff 0 28%, color-mix(in srgb, var(--violet) 90%, transparent) 44%, transparent 72%);
  box-shadow: 0 0 16px 5px color-mix(in srgb, var(--violet) 55%, transparent);
}

/* содержимое пластин */
.bs-head { display: flex; align-items: center; gap: 8px; margin-bottom: 14px; font-size: 13px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--ink-2); }
.bs-head .ic { width: 18px; height: 18px; color: var(--hue); }
.bs-head em { font-style: normal; color: var(--hue); }
.bs-head em::before { content: "/"; margin: 0 6px 0 2px; color: var(--ink-3); opacity: .6; }
.bs-map { position: relative; height: 96px; margin-bottom: 12px; border-radius: 8px; overflow: hidden; background: color-mix(in srgb, var(--blue) 9%, rgb(var(--glass-rgb) / .6)); }
.bs-map__road { position: absolute; left: -10%; right: -10%; top: 58%; height: 7px; background: rgb(var(--glass-rgb) / .95); transform: rotate(-8deg); }
:root[data-theme="dark"] .bs-map__road { background: rgb(255 255 255 / .16); }
.bs-map__road--v { left: 38%; right: auto; top: -20%; bottom: -20%; width: 7px; height: auto; transform: rotate(10deg); }
.bs-map__block { position: absolute; right: 8%; top: 12%; width: 30%; height: 34%; border-radius: 4px; background: color-mix(in srgb, var(--violet) 14%, transparent); }
.bs-map__pin { position: absolute; left: 44%; top: 14%; width: 32px; height: 32px; color: var(--coral); filter: drop-shadow(0 4px 6px rgb(0 0 0 / .25)); }
.bs-place b { display: block; font-size: 18px; }
.bs-place span { display: inline-flex; align-items: center; gap: 4px; font-size: 13.5px; color: var(--ink-3); }
.bs-ok { font-style: normal; color: var(--pos); font-weight: 600; }
.bs-star { width: 14px; height: 14px; color: var(--amber); }
.bs-rating { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 12px; margin-bottom: 12px; }
.bs-rating b { font-size: 40px; font-weight: 800; letter-spacing: -.03em; line-height: 1; font-variant-numeric: tabular-nums; }
.bs-stars { display: inline-flex; gap: 2px; color: var(--amber); }
.bs-stars .ic { width: 18px; height: 18px; }
.bs-rating small { width: 100%; font-size: 13px; color: var(--ink-3); }
.bs-rev { display: flex; align-items: center; gap: 10px; font-size: 14px; color: var(--ink-2); margin-bottom: 12px; }
.bs-rev .ava { width: 26px; height: 26px; }
.bs-trend { display: inline-flex; gap: 6px; padding: 5px 11px; border-radius: 9px; font-size: 14px; font-weight: 500; color: var(--pos); background: color-mix(in srgb, var(--pos) 12%, transparent); }
.bs-post { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; }
.bs-post .ava { width: 34px; height: 34px; }
.bs-post b { display: block; font-size: 15px; }
.bs-post small { font-size: 12px; color: var(--ink-3); }
.bs-quote { font-size: 17px; font-weight: 500; line-height: 1.35; margin-bottom: 12px; }
.bs-react { display: flex; gap: 18px; font-size: 13px; color: var(--ink-3); }
.bs-react span { display: inline-flex; align-items: center; gap: 5px; }
.bs-react .ic { width: 15px; height: 15px; }
.bs-news { display: grid; gap: 12px; }
.bs-news li { display: grid; grid-template-columns: 64px 1fr; gap: 12px; align-items: center; }
.bs-news img { width: 64px; height: 44px; object-fit: cover; border-radius: 7px; filter: grayscale(1); }
.bs-news b { display: block; font-size: 14.5px; line-height: 1.3; }
.bs-news small { font-size: 12px; color: var(--ink-3); }
.bs-query { display: flex; align-items: center; height: 40px; padding: 0 14px; margin-bottom: 12px; border-radius: 10px; font-weight: 500; background: rgb(var(--glass-rgb) / .7); box-shadow: inset 0 0 0 1px var(--line-2); }
.bs-res { margin-bottom: 10px; }
.bs-res b { display: block; font-size: 15px; font-weight: 600; color: var(--accent); }
.bs-res small { font-size: 12.5px; color: var(--pos); }
.bs-res mark { background: color-mix(in srgb, var(--pos) 14%, transparent); color: var(--pos); border-radius: 4px; padding: 0 4px; font-weight: 600; }
.bs-feed { display: grid; gap: 10px; font-size: 14.5px; color: var(--ink-2); }
.bs-feed li { display: flex; align-items: center; gap: 10px; }
.bs-dot { width: 9px; height: 9px; border-radius: 50%; background: var(--ink-3); flex: none; }
.bs-dot--pos { background: var(--pos); }
.bs-dot--neg { background: var(--coral); }
.bs-ask { display: inline-block; padding: 7px 12px; margin-bottom: 10px; border-radius: 12px 12px 12px 3px; font-weight: 600; background: color-mix(in srgb, var(--violet) 16%, transparent); }
.bs-answer { font-size: 14px; color: var(--ink-2); margin-bottom: 12px; }
.bs-src { display: flex; flex-wrap: wrap; gap: 6px; }
.bs-src li { font-size: 12px; font-weight: 500; padding: 3px 9px; border-radius: 8px; background: rgb(var(--glass-rgb) / .6); box-shadow: inset 0 0 0 1px var(--line); transition: background .3s, box-shadow .3s, color .3s; }
.bs-src li.is-hit { color: #fff; background: var(--violet); box-shadow: 0 0 14px color-mix(in srgb, var(--violet) 60%, transparent); }

/* кнопка «Собрать / разобрать» */
.bstack__toggle {
  position: absolute; left: 50%; bottom: clamp(6px, 2.5vh, 26px); z-index: 2;
  display: inline-flex; align-items: center; gap: 10px;
  height: 40px; padding: 0 16px 0 14px;
  border: 0; border-radius: 999px;
  font-size: .86rem; font-weight: 600; color: var(--ink); white-space: nowrap;
  background: rgb(var(--glass-rgb) / calc(var(--glass-a) + .16));
  -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px);
  box-shadow: inset 0 0 0 1px var(--line-2), var(--shadow-sm);
  transform: translateX(-50%);
  opacity: var(--tg, 1);
  transition: box-shadow .3s, transform .35s var(--ease-out);
}
.bstack__toggle.is-away { pointer-events: none; }
.bstack__toggle:hover { box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent) 60%, transparent), var(--shadow-sm); transform: translateX(-50%) translateY(-1px); }
.bstack__toggle-dot { width: 10px; height: 10px; border-radius: 3px; background: var(--accent); transform: rotate(45deg); transition: transform .45s var(--ease-out), background .3s; }
.bstack__toggle[aria-pressed="true"] .bstack__toggle-dot { transform: rotate(135deg) scale(1.2); background: var(--violet); }

/* мини-стопки в блоках услуг, «4 в 1» и квизе */
.service__slot, .quiz__slot { position: relative; }
.mstack { position: absolute; inset: 0; display: grid; place-items: center; pointer-events: none; }
.mstack__view { position: relative; width: 0; height: 0; perspective: 1000px; }
.mstack__rig { position: absolute; left: 0; top: 0; transform-style: preserve-3d; }
.ms-plate { position: absolute; left: calc(var(--w) / -2); top: calc(var(--d) / -2); width: var(--w); height: var(--d); transform-style: preserve-3d; }
.ms-face {
  position: absolute; inset: 0; border-radius: 3px;
  background: linear-gradient(150deg, rgb(255 255 255 / .85), rgb(230 234 255 / .55));
  box-shadow: inset 0 0 0 1px rgb(255 255 255 / .95);
  transition: background .45s, box-shadow .45s;
}
:root[data-theme="dark"] .ms-face { background: linear-gradient(150deg, rgb(52 62 132 / .75), rgb(18 24 58 / .68)); box-shadow: inset 0 0 0 1px rgb(170 182 255 / .28); }
.ms-plate.is-on .ms-face {
  background: linear-gradient(150deg, color-mix(in srgb, var(--hue) 28%, #fff), color-mix(in srgb, var(--hue) 62%, transparent));
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--hue) 55%, #fff), 0 0 26px 3px color-mix(in srgb, var(--hue) 38%, transparent);
}
.ms-edge { position: absolute; overflow: hidden; pointer-events: none; }
.ms-edge--front {
  left: 0; top: 100%; width: 100%; height: var(--t);
  transform-origin: 50% 0; transform: rotateX(-90deg);
  display: flex; align-items: center; justify-content: center;
  background: linear-gradient(180deg, #56638F, #3A4577);
  box-shadow: inset 0 1px 0 rgb(255 255 255 / .4);
  transition: background .45s;
}
.ms-edge--front span { font-size: calc(var(--t) * .62); font-weight: 800; letter-spacing: .12em; color: rgb(255 255 255 / .92); line-height: 1; }
.ms-plate.is-on .ms-edge--front { background: linear-gradient(180deg, color-mix(in srgb, var(--hue) 80%, #fff), var(--hue)); }
.ms-edge--side { left: 0; top: 0; width: var(--t); height: 100%; transform-origin: 0 50%; transform: rotateY(90deg); background: #34406E; }
.ms-plate.is-on .ms-edge--side { background: color-mix(in srgb, var(--hue) 75%, #000); }

/* ==========================================================================
   Облако упоминаний (режим ядра «Облако»)
   ========================================================================== */
html:not([data-core="cloud"]) .bcloud,
html:not([data-core="cloud"]):not([data-core="phone"]) .mcard { display: none; }
html[data-core="cloud"] .scene__front,
html[data-core="cloud"] .scene__flows { display: none; }
html[data-core="cloud"] .hero__slot { position: relative; pointer-events: auto; }

.bcloud { position: absolute; inset: 0; }
/* карточки облака — те же стеклянные панели, что в «Кристалле»; ширину и место задаёт cloud.js */
.bc-card.panel {
  position: absolute; left: 0; top: 0;
  /* плотнее, чем в «Кристалле»: карточки лежат внахлёст, и текст снизу не должен просвечивать.
     Без размытия фона: у движущейся карточки оно пересчитывается каждый кадр (кадры проседают, слой с текстом
     перерисовывается и дребезжит), а сквозь такой плотный фон его почти не видно */
  background: linear-gradient(170deg, rgb(var(--glass-rgb) / calc(var(--glass-a) + .34)), rgb(var(--glass-rgb) / calc(var(--glass-a) + .28)));
  -webkit-backdrop-filter: none; backdrop-filter: none;
  will-change: transform, opacity;
  transition: box-shadow .45s var(--ease-out);
}
.bc-card .panel__bar .ic { color: var(--hue); }
.bc-card .panel__query span { min-width: 0; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.bc-card .ai__a { min-height: 0; }
.bc-card > :last-child, .bc-card .rev:last-child { margin-bottom: 0; }
.bc-card .post .ava { width: 28px; height: 28px; }
.ava--tg { display: grid; place-items: center; color: #fff; background: linear-gradient(135deg, #5AA9F0, var(--blue)); }
.ava--tg .ic { width: 15px; height: 15px; }
.stars .off { opacity: .28; }
.stars .part { clip-path: inset(0 var(--cut) 0 0); }
.bc-rate { display: flex; align-items: center; gap: 8px; margin-bottom: 7px; }
.bc-rate small { font-size: 10.5px; color: var(--ink-3); }
.bc-note { display: flex; align-items: center; gap: 5px; margin-top: 7px; font-size: 10.5px; color: var(--ink-3); }
.bc-note .ic { width: 12px; height: 12px; flex: none; }
.bc-note--top { margin: 0 0 8px; }

/* Алиса: голосовой запрос и ответ */
.voice { display: flex; align-items: center; gap: 9px; padding: 7px 10px; margin-bottom: 8px; border-radius: 12px 12px 12px 3px; font-weight: 500; line-height: 1.3; background: color-mix(in srgb, var(--violet) 12%, transparent); }
.voice__wave { display: inline-flex; align-items: center; gap: 2px; height: 16px; flex: none; }
.voice__wave i { width: 2.5px; border-radius: 2px; background: var(--violet); animation: vWave 1.1s ease-in-out infinite; }
.voice__wave i:nth-child(1) { height: 45%; animation-delay: -.1s; }
.voice__wave i:nth-child(2) { height: 80%; animation-delay: -.35s; }
.voice__wave i:nth-child(3) { height: 100%; animation-delay: -.6s; }
.voice__wave i:nth-child(4) { height: 65%; animation-delay: -.25s; }
.voice__wave i:nth-child(5) { height: 40%; animation-delay: -.5s; }
@keyframes vWave { 50% { transform: scaleY(.35); } }

/* чат с нейросетью: вопрос справа, ответ печатается по буквам (буквы заранее занимают место) */
.chat__q { width: fit-content; max-width: 88%; margin: 0 0 9px auto; padding: 6px 10px; border-radius: 12px 12px 3px 12px; font-weight: 500; line-height: 1.35; color: var(--ink); background: color-mix(in srgb, var(--blue) 13%, transparent); }
.chat__a { display: grid; grid-template-columns: 22px minmax(0, 1fr); gap: 8px; align-items: start; }
.chat__ava { display: grid; place-items: center; width: 22px; height: 22px; border-radius: 7px; color: #fff; background: linear-gradient(135deg, var(--violet), var(--lilac)); }
.chat__ava .ic { width: 13px; height: 13px; }
.chat__a p { line-height: 1.45; color: var(--ink-2); }
.tch { visibility: hidden; }
.tch.on { visibility: visible; }
.tch.is-end { position: relative; }
.tch.is-end::after { content: ""; position: absolute; left: 100%; top: .12em; width: 1.5px; height: 1.15em; margin-left: 1px; background: var(--accent); animation: blink 1.1s steps(1) infinite; }

/* карты и маркетплейс */
.place__name { font-size: 13px; font-weight: 600; line-height: 1.3; margin-bottom: 5px; }
.place__row { display: flex; align-items: center; flex-wrap: wrap; gap: 4px 6px; }
.place__row > b { font-size: 15px; font-weight: 700; font-variant-numeric: tabular-nums; }
.place__row .stars svg { width: 12px; height: 12px; }
.place__row small { font-size: 10.5px; color: var(--ink-3); }
.place__open { margin-top: 6px; font-size: 11.5px; font-weight: 600; color: var(--pos); }
.prod { display: grid; grid-template-columns: 46px 1fr; gap: 10px; align-items: center; margin-bottom: 8px; }
.prod img { width: 46px; height: 46px; border-radius: 9px; object-fit: cover; filter: var(--img-mute); }
.prod .place__name { margin-bottom: 2px; }
.prod .bc-note { margin-top: 2px; }

/* видео */
.vthumb { position: relative; height: 96px; margin-bottom: 9px; border-radius: 9px; overflow: hidden; }
.vthumb img { width: 100%; height: 100%; object-fit: cover; filter: var(--img-mute); }
.vthumb::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, color-mix(in srgb, var(--deep) 8%, transparent) 40%, rgb(0 0 0 / .32)); }
.vthumb small { position: absolute; right: 6px; bottom: 8px; z-index: 1; padding: 1px 5px; border-radius: 4px; font-size: 10px; font-weight: 600; font-variant-numeric: tabular-nums; color: #fff; background: rgb(0 0 0 / .55); }
/* прогресс воспроизведения — тонкая красная полоса по низу превью */
.vthumb__bar { position: absolute; left: 0; right: 0; bottom: 0; z-index: 1; height: 3px; background: rgb(255 255 255 / .3); }
.vthumb__bar::after { content: ""; position: absolute; inset: 0; background: var(--yt); transform-origin: left; transform: scaleX(.04); }
.bc-card.is-live .vthumb__bar::after { animation: vProg 18s linear infinite; }
.bc-card.is-live .vthumb img { animation: kenBurns 14s ease-in-out infinite alternate; }
@keyframes vProg { to { transform: scaleX(1); } }
@keyframes kenBurns { to { transform: scale(1.08) translateX(-2%); } }
.vtitle { font-weight: 600; line-height: 1.3; }

/* мониторинг */
.feed { display: grid; gap: 8px; margin-bottom: 10px; }
.feed li { display: grid; grid-template-columns: 7px 1fr auto; gap: 9px; align-items: start; }
.feed .bc-live { margin-top: 5px; }
.feed li + li .bc-live { animation: none; box-shadow: none; background: color-mix(in srgb, var(--ink-3) 60%, transparent); }
.feed small { padding-top: 1px; font-size: 10px; font-weight: 600; letter-spacing: .05em; text-transform: uppercase; color: var(--ink-3); }
.feed li > span { display: block; line-height: 1.35; color: var(--ink-2); }

/* сравнение в AI */
.rank { display: grid; gap: 7px; margin-top: 2px; }
.rank li { display: grid; grid-template-columns: 18px 1fr auto; gap: 4px 8px; align-items: center; color: var(--ink-3); }
.rank i { display: grid; place-items: center; width: 18px; height: 18px; border-radius: 6px; font-style: normal; font-size: 10.5px; font-weight: 700; background: var(--field-bg); box-shadow: inset 0 0 0 1px var(--line); }
.rank b { font-weight: 600; font-variant-numeric: tabular-nums; }
.rank em { position: relative; grid-column: 2 / -1; height: 3px; border-radius: 2px; overflow: hidden; background: var(--line); }
.rank em::after { content: ""; position: absolute; inset: 0 auto 0 0; width: var(--v); border-radius: inherit; background: color-mix(in srgb, var(--ink-3) 55%, transparent); }
.rank .is-you { color: var(--ink); }
.rank .is-you i { color: #fff; background: linear-gradient(135deg, var(--blue), var(--violet)); box-shadow: none; }
.rank .is-you em::after { background: linear-gradient(90deg, var(--blue), var(--violet)); }

/* ---------- карточки облака и «Смартфона»: живые детали ---------- */
/* превью — цветные, но приглушённые; в тёмной теме ещё и темнее */
:root { --img-mute: saturate(.78) contrast(.97) brightness(1.02); --yt: #E3342F; }
:root[data-theme="dark"] { --img-mute: saturate(.74) brightness(.82) contrast(1.02); }
.bc-card.panel { cursor: pointer; }
.bc-img { display: block; flex: none; overflow: hidden; border-radius: 7px; background: color-mix(in srgb, var(--blue) 12%, var(--field-bg)); }
.bc-img img { display: block; width: 100%; height: 100%; object-fit: cover; filter: var(--img-mute); }
.bc-img--wide { height: 72px; margin: -2px 0 8px; border-radius: 9px; }
.bc-img--place { width: 54px; height: 40px; border-radius: 8px; }
.bc-img--prod { width: 46px; height: 46px; border-radius: 9px; }
.bc-num { font-variant-numeric: tabular-nums; }
.post__react .bc-num, .bc-note .bc-num { font-weight: 500; }

/* красная кнопка «как у видеохостинга»: в шапке карточки, на превью и в выдаче */
.yt { display: inline-grid; place-items: center; flex: none; width: 20px; height: 14px; border-radius: 4px; color: #fff; background: var(--yt); box-shadow: 0 2px 6px -2px color-mix(in srgb, var(--yt) 70%, transparent); }
.yt svg { width: 9px; height: 9px; margin-left: 1px; }
.yt--bar { width: 17px; height: 12px; border-radius: 3.5px; box-shadow: none; }
.yt--bar svg { width: 7px; height: 7px; }
.yt--big { position: absolute; left: 50%; top: 50%; z-index: 1; width: 40px; height: 28px; margin: -14px 0 0 -20px; border-radius: 8px; box-shadow: 0 6px 16px -6px rgb(0 0 0 / .5); }
.yt--big svg { width: 14px; height: 14px; }
.bc-card.is-live .yt--big { animation: ytPulse 2.8s ease-in-out 1s infinite; }
.yt--sm { position: absolute; left: 50%; top: 50%; width: 18px; height: 13px; margin: -6.5px 0 0 -9px; border-radius: 3.5px; }
.yt--sm svg { width: 7px; height: 7px; }
@keyframes ytPulse { 0%, 100% { box-shadow: 0 6px 16px -6px rgb(0 0 0 / .5), 0 0 0 0 color-mix(in srgb, var(--yt) 45%, transparent); } 50% { box-shadow: 0 6px 16px -6px rgb(0 0 0 / .5), 0 0 0 7px color-mix(in srgb, var(--yt) 0%, transparent); } }

/* по очереди проявляются строки выдачи, отзывы, источники, полосы (класс .on ставит cloud.js) */
.bc-card .bc-in { transition: opacity .45s var(--ease-out), transform .5s var(--ease-out); }
.bc-card .bc-in:not(.on) { opacity: 0; transform: translateY(5px); }
/* «печатает…»: три точки, пока нейросеть или Алиса готовят ответ */
.bc-type[data-dots] { position: relative; }
.bc-dots { position: absolute; left: 0; top: 0; display: inline-flex; align-items: center; gap: 3px; height: 18px; padding: 0 7px; border-radius: 9px; background: color-mix(in srgb, var(--violet) 12%, transparent); }
.bc-dots i { width: 5px; height: 5px; border-radius: 50%; background: var(--violet); animation: bcDot 1.1s ease-in-out infinite; }
.bc-dots i:nth-child(2) { animation-delay: .15s; }
.bc-dots i:nth-child(3) { animation-delay: .3s; }
@keyframes bcDot { 0%, 60%, 100% { opacity: .3; transform: none; } 30% { opacity: 1; transform: translateY(-2px); } }
.bc-card .panel__query { gap: 8px; }
.bc-card .panel__query .ic { flex: none; width: 14px; height: 14px; color: var(--ink-3); }

/* звёзды загораются по одной */
.bc-card:not(.is-live) .stars svg { transform: scale(0); }
.bc-card.is-live .stars svg { animation: starPop .45s var(--ease-out) both; }
.bc-card.is-live .stars svg:nth-child(2) { animation-delay: .08s; }
.bc-card.is-live .stars svg:nth-child(3) { animation-delay: .16s; }
.bc-card.is-live .stars svg:nth-child(4) { animation-delay: .24s; }
.bc-card.is-live .stars svg:nth-child(5) { animation-delay: .32s; }
@keyframes starPop { from { transform: scale(0) rotate(-40deg); } 70% { transform: scale(1.25); } }
.bc-card.is-done .sentiment .ic { animation: trendUp 2.6s ease-in-out infinite; }
@keyframes trendUp { 50% { transform: translate(1px, -2px); } }
.bc-card[data-ch="review"] .bc-note .ic { color: var(--pos); }

/* лайки и просмотры иногда подрастают — сердце и цифра коротко вспыхивают */
.bc-like .ic { transition: color .3s; }
.is-tick .ic { animation: tickPop .6s var(--ease-out); }
.bc-like.is-tick .ic { color: var(--coral); }
.is-tick .bc-num { animation: tickNum .8s var(--ease-out); }
@keyframes tickPop { 40% { transform: scale(1.35); } }
@keyframes tickNum { 30% { color: var(--c-geo); } }

/* Алиса: мини-дорожка голосового ответа */
.bc-note__bar { position: relative; width: 34px; height: 3px; margin-left: auto; border-radius: 2px; overflow: hidden; background: var(--line); }
.bc-note__bar::after { content: ""; position: absolute; inset: 0; border-radius: inherit; background: var(--violet); transform-origin: left; transform: scaleX(0); }
.bc-note.on .bc-note__bar::after { animation: noteBar 5s linear forwards; }
@keyframes noteBar { to { transform: none; } }

/* карта — как у панели «Карты» в «Кристалле»: маршрут прорисовывается от «вы здесь» к метке,
   метка падает и покачивается, от неё расходятся круги, соседние точки мерцают */
.bc-map { position: relative; height: 78px; margin-bottom: 9px; border-radius: 10px; overflow: hidden; background: color-mix(in srgb, var(--blue) 7%, var(--field-bg)); }
.bc-map svg { display: block; width: 100%; height: 100%; }
.bc-map__route { fill: none; stroke: var(--blue); stroke-width: 3; stroke-linecap: round; stroke-dasharray: 100; stroke-dashoffset: 100; opacity: .85; }
.bc-card.is-live .bc-map__route { animation: routeDraw 1.5s var(--ease-out) .3s forwards; }
.bc-map__flow { fill: none; stroke: #fff; stroke-width: 1.3; stroke-linecap: round; stroke-dasharray: 1.2 5; opacity: 0; transition: opacity .6s; }
.bc-card.is-done .bc-map__flow { opacity: .9; animation: routeFlow 1.6s linear infinite; }
.bc-map__me { fill: var(--blue); stroke: #fff; stroke-width: 1.6; }
.bc-map__dot { fill: var(--violet); opacity: .5; }
.bc-card.is-live .bc-map__dot { animation: dotTw 2.6s ease-in-out infinite; }
.bc-card.is-live .bc-map__dot:nth-of-type(2) { animation-delay: .9s; }
.bc-card.is-live .bc-map__dot:nth-of-type(3) { animation-delay: 1.7s; }
.bc-map__pin { transform-box: fill-box; transform-origin: 50% 100%; }
.bc-map__pin path { fill: var(--coral); }
.bc-map__pin circle { fill: #fff; }
.bc-card:not(.is-live) .bc-map__pin { opacity: 0; }
.bc-card.is-live .bc-map__pin { animation: pinDrop .6s var(--ease-out) 1.3s both, pinBob2 3.2s ease-in-out 2.1s infinite; }
.bc-map__ring { fill: none; stroke: var(--coral); stroke-width: 1.5; opacity: 0; transform-box: fill-box; transform-origin: center; }
.bc-card.is-live .bc-map__ring { animation: ringPulse 2.2s ease-out 1.8s infinite; }
@keyframes routeDraw { to { stroke-dashoffset: 0; } }
@keyframes routeFlow { to { stroke-dashoffset: -6.2; } }
@keyframes dotTw { 50% { opacity: .95; } }
@keyframes pinDrop { from { opacity: 0; transform: translateY(-14px); } 70% { opacity: 1; transform: translateY(1px); } }
@keyframes pinBob2 { 50% { transform: translateY(-2.5px); } }
@keyframes ringPulse { from { opacity: .8; transform: scale(.4); } to { opacity: 0; transform: scale(2.4); } }
/* время в пути — плашкой на карте */
.bc-map__eta { position: absolute; left: 6px; top: 6px; display: inline-flex; align-items: center; gap: 3px; padding: 2px 7px 2px 5px; border-radius: 7px; font-size: 10px; font-weight: 600; line-height: 1.4; color: var(--ink); background: rgb(var(--glass-rgb) / .88); box-shadow: 0 2px 8px -4px rgb(0 0 0 / .35); }
.bc-map__eta .ic { width: 11px; height: 11px; color: var(--blue); }
.bc-card .place { display: flex; gap: 10px; align-items: center; }
.bc-card .place .place__name { margin-bottom: 2px; }

/* маркетплейс и работодатель */
.bc-chip { display: inline-flex; align-items: center; gap: 5px; padding: 3px 8px; border-radius: 7px; font-size: 11px; font-weight: 600; color: var(--pos); background: color-mix(in srgb, var(--pos) 12%, transparent); }
.bc-chip .ic { width: 13px; height: 13px; }
.bc-bars { display: grid; gap: 6px; margin-bottom: 9px; }
.bc-bars li { display: grid; grid-template-columns: 76px minmax(0, 1fr) auto; gap: 8px; align-items: center; font-size: 11px; color: var(--ink-3); }
.bc-bars em { position: relative; height: 4px; border-radius: 2px; overflow: hidden; background: var(--line); }
.bc-bars em::after, .bc-card .rank em::after { transform-origin: left; transform: scaleX(0); transition: transform 1.1s var(--ease-out) .12s; }
.bc-bars em::after { content: ""; position: absolute; inset: 0 auto 0 0; width: var(--v); border-radius: inherit; background: linear-gradient(90deg, var(--blue), var(--violet)); }
.bc-bars li.on em::after, .bc-card .rank li.on em::after { transform: none; }
.bc-bars b { font-weight: 600; color: var(--ink); font-variant-numeric: tabular-nums; }

@media (prefers-reduced-motion: reduce) {
  .bc-card *, .bc-card { animation: none !important; transition: none !important; }
  .bc-card .stars svg, .bc-card .bc-map__pin { transform: none; opacity: 1; }
  .bc-map__route { stroke-dashoffset: 0; }
}

/* формулировка бренда: обычный текст, вспышка — мягкая смена цвета */
.bc-brand.is-flash { animation: bcFlash 1.9s var(--ease-io); }
@keyframes bcFlash { 30%, 55% { color: var(--c-geo); } }

/* сноска о репутационном канале: точка на карточке → линия → плашка (как у «Кристалла») */
.bc-tip { position: fixed; left: 0; top: 0; z-index: 35; width: 256px; pointer-events: none; visibility: hidden; --lead: 36px; --ly: 22px; --lx: 50%; }
html:not([data-core="cloud"]):not([data-core="phone"]):not([data-core="gem"]):not([data-core="icosa"]) .bc-tip { display: none; }
.bc-tip.is-on, .bc-tip.is-out { visibility: visible; }
.bc-tip.is-out { animation: tipOut .26s var(--ease-out) both; }
.bc-tip__box {
  padding: 12px 14px 13px; border-radius: 12px;
  color: #fff; font-size: 13px; line-height: 1.45;
  background: color-mix(in srgb, var(--deep) 90%, transparent);
  -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
  box-shadow: 0 20px 40px -18px rgb(20 0 70 / .6);
}
.bc-tip__box b { display: block; margin-bottom: 3px; font-size: 14px; letter-spacing: .02em; color: #D8D1FF; }
.bc-tip__box span { display: block; }
.bc-tip__lead { position: absolute; background: color-mix(in srgb, var(--violet) 85%, transparent); }
.bc-tip__dot { position: absolute; width: 9px; height: 9px; border-radius: 50%; background: var(--violet); box-shadow: 0 0 0 4px color-mix(in srgb, var(--violet) 25%, transparent); }
/* r — справа от карточки, l — слева, b — под ней, a — над ней */
.bc-tip[data-side="r"] .bc-tip__lead { right: 100%; top: var(--ly); width: var(--lead); height: 1.5px; transform-origin: left; }
.bc-tip[data-side="r"] .bc-tip__dot { right: calc(100% + var(--lead) - 4.5px); top: calc(var(--ly) - 3.75px); }
.bc-tip[data-side="l"] .bc-tip__lead { left: 100%; top: var(--ly); width: var(--lead); height: 1.5px; transform-origin: right; }
.bc-tip[data-side="l"] .bc-tip__dot { left: calc(100% + var(--lead) - 4.5px); top: calc(var(--ly) - 3.75px); }
.bc-tip[data-side="b"] .bc-tip__lead { bottom: 100%; left: var(--lx); width: 1.5px; height: var(--lead); transform-origin: top; }
.bc-tip[data-side="b"] .bc-tip__dot { bottom: calc(100% + var(--lead) - 4.5px); left: calc(var(--lx) - 3.75px); }
.bc-tip[data-side="a"] .bc-tip__lead { top: 100%; left: var(--lx); width: 1.5px; height: var(--lead); transform-origin: bottom; }
.bc-tip[data-side="a"] .bc-tip__dot { top: calc(100% + var(--lead) - 4.5px); left: calc(var(--lx) - 3.75px); }
.bc-tip[data-side="r"] { --bx: -10px; --by: 0px; }
.bc-tip[data-side="l"] { --bx: 10px; --by: 0px; }
.bc-tip[data-side="b"] { --bx: 0px; --by: -10px; }
.bc-tip[data-side="a"] { --bx: 0px; --by: 10px; }
/* раскрытие: точка, линия, плашка, текст */
.bc-tip.is-on .bc-tip__dot { animation: tipDot .36s var(--ease-out) both, tipPulse 1.8s ease-in-out .5s infinite; }
.bc-tip.is-on .bc-tip__lead { animation: tipLeadX .36s var(--ease-out) .12s both; }
.bc-tip.is-on:is([data-side="b"], [data-side="a"]) .bc-tip__lead { animation-name: tipLeadY; }
.bc-tip.is-on .bc-tip__box { animation: tipBox .46s var(--ease-out) .34s both; }
.bc-tip.is-on .bc-tip__box > * { animation: tipText .42s var(--ease-out) .5s both; }
.bc-tip.is-on .bc-tip__box > span { animation-delay: .58s; }
@keyframes tipDot { from { transform: scale(0); } 60% { transform: scale(1.35); } }
@keyframes tipPulse { 50% { box-shadow: 0 0 0 7px color-mix(in srgb, var(--violet) 0%, transparent); } }
@keyframes tipLeadX { from { transform: scaleX(0); } }
@keyframes tipLeadY { from { transform: scaleY(0); } }
@keyframes tipBox { from { opacity: 0; transform: translate(var(--bx), var(--by)) scale(.96); } }
@keyframes tipText { from { opacity: 0; transform: translateY(4px); } }
@keyframes tipOut { to { opacity: 0; } }
@media (prefers-reduced-motion: reduce) { .bc-tip * { animation: none !important; } }

/* мини-карточки: общие детали */
.bc-top { display: flex; align-items: center; gap: 6px; margin-bottom: 7px; font-size: 10.5px; line-height: 14px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--ink-3); }
.bc-top .ic { width: 13px; height: 13px; color: var(--hue); }
.bc-body { transition: opacity .26s var(--ease-out), transform .3s var(--ease-out), filter .26s; }
.bc-body.is-swap { opacity: 0; transform: translateY(-4px); filter: blur(3px); }
.bc-query { display: flex; align-items: center; gap: 7px; height: 26px; padding: 0 9px; border-radius: 8px; font-size: 11.5px; font-weight: 500; background: var(--field-bg); box-shadow: inset 0 0 0 1px var(--line); overflow: hidden; white-space: nowrap; }
.bc-query .ic { width: 13px; height: 13px; color: var(--ink-3); flex: none; }
.bc-ask { display: inline-block; max-width: 100%; padding: 4px 9px; margin-bottom: 6px; border-radius: 9px 9px 9px 3px; font-size: 11.5px; font-weight: 600; background: color-mix(in srgb, var(--violet) 14%, transparent); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.bc-ans, .bc-text { color: var(--ink-2); }
.bc-head { font-size: 12.5px; font-weight: 600; line-height: 1.35; }
.bc-head > .bc-live { display: inline-block; vertical-align: 1px; margin-right: 6px; }
.bc-stars { display: inline-flex; gap: 2px; margin-bottom: 5px; color: var(--amber); }
.bc-stars .ic { width: 12px; height: 12px; }
.bc-stars .off { opacity: .28; }
.bc-live { flex: none; width: 7px; height: 7px; border-radius: 50%; background: var(--pos); box-shadow: 0 0 0 3px color-mix(in srgb, var(--pos) 20%, transparent); animation: bcLive 1.8s ease-in-out infinite; }
@keyframes bcLive { 50% { box-shadow: 0 0 0 6px color-mix(in srgb, var(--pos) 0%, transparent); } }

/* мини-карточки в блоках услуг, «4 в 1» и квизе */
.mcard {
  position: absolute; left: 50%; top: 50%;
  width: max(100%, 170px); max-width: 230px; padding: 11px 13px 12px;
  border-radius: 13px; font-size: 12px; line-height: 1.35; color: var(--ink);
  /* плотное стекло без размытия фона — как у карточек облака (см. .bc-card.panel) */
  background: linear-gradient(160deg, rgb(var(--glass-rgb) / calc(var(--glass-a) + .32)), rgb(var(--glass-rgb) / calc(var(--glass-a) + .24)));
  box-shadow: inset 0 1px 0 var(--glass-top), inset 0 0 0 1px var(--glass-side), var(--shadow);
  transform: translate(-50%, -50%);
  will-change: transform;
  pointer-events: none;
}
.mcard .bc-query { height: auto; min-height: 28px; margin: 0; padding: 5px 9px; font-size: 11.5px; white-space: normal; line-height: 1.35; }
.mcard--hub { width: auto; min-width: 200px; text-align: center; }
.mcard__brand { font-size: 15px; font-weight: 600; margin-bottom: 10px; }
.mcard__chips { display: flex; justify-content: center; gap: 5px; }
.mcard__chips i { font-style: normal; font-size: 10.5px; font-weight: 700; letter-spacing: .06em; padding: 4px 7px; border-radius: 7px; color: var(--ink-3); box-shadow: inset 0 0 0 1px var(--line); transition: background .35s, color .35s; }
.mcard__chips i.on { color: #fff; box-shadow: none; }
.mcard__chips i.on[data-f="0"] { background: var(--c-serm); } .mcard__chips i.on[data-f="1"] { background: var(--c-orm); }
.mcard__chips i.on[data-f="2"] { background: var(--c-geo); } .mcard__chips i.on[data-f="3"] { background: var(--c-ai); }
:root[data-theme="dark"] .mcard__chips i.on[data-f="3"] { color: #1A0B3A; }

/* карточки в круге блока «4 в 1»: те же живые карточки, что в hero, но мельче; кроме hero их два режима — вперемешку и по направлению */
html:not([data-core="cloud"]):not([data-core="phone"]) .bc-card--ring { display: none; }
html:is([data-core="cloud"], [data-core="phone"]) .ring__slot { inset: 19%; }
.bc-card--ring { pointer-events: none; cursor: default; }
/* Парение карточек (облако, «Смартфон», круг «4 в 1», мини-карточки в блоках): отдельное свойство translate поверх
   transform, который пишет скрипт. Анимацию ведёт компоновщик — она плавная, даже когда основной поток занят,
   а слой с текстом растрирован один раз и только плывёт, не перерисовываясь. Путь — эллипс через исходную точку
   (0% = на месте), поэтому карточка, которая начинает парить после вылета, не прыгает. --fx, --fy, --fd задаёт cloud.js */
@keyframes tzFloat {
  0%, 100% { translate: 0 0; }
  8.33% { translate: calc(var(--fx) * .5) calc(var(--fy) * -.134); }
  16.67% { translate: calc(var(--fx) * .866) calc(var(--fy) * -.5); }
  25% { translate: var(--fx) calc(var(--fy) * -1); }
  33.33% { translate: calc(var(--fx) * .866) calc(var(--fy) * -1.5); }
  41.67% { translate: calc(var(--fx) * .5) calc(var(--fy) * -1.866); }
  50% { translate: 0 calc(var(--fy) * -2); }
  58.33% { translate: calc(var(--fx) * -.5) calc(var(--fy) * -1.866); }
  66.67% { translate: calc(var(--fx) * -.866) calc(var(--fy) * -1.5); }
  75% { translate: calc(var(--fx) * -1) calc(var(--fy) * -1); }
  83.33% { translate: calc(var(--fx) * -.866) calc(var(--fy) * -.5); }
  91.67% { translate: calc(var(--fx) * -.5) calc(var(--fy) * -.134); }
}
.tz-float { animation: tzFloat var(--fd, 10s) linear var(--fdl, 0s) infinite; }
/* карточка «Смартфона» во время вылета меняет размер каждый кадр — без подсказки браузер растрирует её в текущем
   размере; подсказка появляется вместе с парением, и слой фиксируется уже в размере, в котором карточка висит */
.bc-card.bp-card:not(.tz-float) { will-change: auto; }
.bc-card, .mcard { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }

/* ==========================================================================
   Смартфон (режим ядра «Смартфон»): фото «через плечо», экран — живой интерфейс,
   карточки облака по очереди залетают в выдачу. Геометрию считает phone.js
   ========================================================================== */
html:not([data-core="phone"]) .bphone { display: none; }
html[data-core="phone"] .scene__front,
html[data-core="phone"] .scene__flows { display: none; }
html[data-core="phone"] .hero__slot { position: relative; pointer-events: auto; }

.bphone {
  position: absolute; inset: 0;
  --bp-bg: #EEF0F7; --bp-item: #FFFFFF; --bp-chip: rgb(22 30 74 / .06); --bp-edge: rgb(22 30 74 / .1);
  /* края сцены в пикселях считает phone.js: слева — под колонку текста, сверху — под шапку, снизу — в следующий блок */
  --fl: 200px; --ft: 90px; --fb: 160px;
}
:root[data-theme="dark"] .bphone { --bp-bg: #0A0F1F; --bp-item: #141B34; --bp-chip: rgb(190 200 255 / .08); --bp-edge: rgb(190 200 255 / .1); }
/* сцена: широкий кадр справа обрезает само окно, остальные края растворяются в фоне страницы */
.bphone__stage {
  position: absolute; inset: 0; overflow: hidden; pointer-events: none;
  opacity: 0; transition: opacity .9s var(--ease-out);
  -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 var(--fl)), linear-gradient(180deg, transparent 0, #000 var(--ft), #000 calc(100% - var(--fb)), transparent 100%);
  -webkit-mask-composite: source-in;
  mask-image: linear-gradient(90deg, transparent 0, #000 var(--fl)), linear-gradient(180deg, transparent 0, #000 var(--ft), #000 calc(100% - var(--fb)), transparent 100%);
  mask-composite: intersect;
}
.bphone.is-ready .bphone__stage { opacity: 1; }
/* подложка цвета страницы под сценой: шлейфы фона гаснут раньше, чем проявляется фото,
   поэтому не прорезают его мягкие края */
.bphone__base {
  position: absolute; inset: 0; pointer-events: none; background: var(--bg);
  opacity: 0; transition: opacity .9s var(--ease-out);
  -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 calc(var(--fl) * .5)), linear-gradient(180deg, #000 calc(100% - var(--fb) * .55), transparent 100%);
  -webkit-mask-composite: source-in;
  mask-image: linear-gradient(90deg, transparent 0, #000 calc(var(--fl) * .5)), linear-gradient(180deg, #000 calc(100% - var(--fb) * .55), transparent 100%);
  mask-composite: intersect;
}
.bphone.is-ready .bphone__base { opacity: 1; }
.bphone__rig { position: absolute; inset: 0; will-change: transform; }
/* слои: комната с девушкой → столик позади неё → вырезанная девушка с телефоном (руки перекрывают столик) */
.bphone__front { z-index: 2; }
.bphone__photo, .bphone__bezel, .bphone__person { position: absolute; left: 0; top: 0; max-width: none; user-select: none; }
:root:not([data-theme="dark"]) .bphone [data-theme-img="dark"],
:root[data-theme="dark"] .bphone [data-theme-img="light"] { display: none; }
.bphone__bezel { z-index: 2; }
/* столик с колонкой — задний план за девушкой: свой параллакс и расфокус дальнего плана */
.bphone__table { position: absolute; left: 0; top: 0; z-index: 1; will-change: transform; filter: blur(1.3px); }
.bphone__tbl { position: absolute; inset: 0; width: 100%; height: 100%; max-width: none; user-select: none; }
/* мягкая тень под ножками дневного столика — он стоит на полу, а не висит */
.bphone__table::before { content: ""; position: absolute; left: 14%; right: 10%; bottom: -3%; height: 6%; border-radius: 50%; background: radial-gradient(closest-side, rgb(40 44 72 / .32), transparent); filter: blur(3px); }
:root[data-theme="dark"] .bphone__table::before { display: none; }
/* у ночного столика ножки уходят в темноту комнаты */
.bphone__tbl[data-theme-img="dark"] { -webkit-mask-image: linear-gradient(#000 62%, transparent 96%); mask-image: linear-gradient(#000 62%, transparent 96%); }

/* IDLE-видео (phone.js): холст с роликом, где зелёный экран вырезан, лежит поверх статики. Статика
   видна, пока ролик грузится, и там, где он не играет. Первый готовый кадр заменяет статику
   без смешивания разных положений пальца; над холстом остаётся только кольцо Алисы */
.bphone__video { position: absolute; left: 0; top: 0; z-index: 3; max-width: none; pointer-events: none; opacity: 0; }
.bphone.is-video .bphone__video { opacity: 1; }
.bphone.is-video-on :is(.bphone__photo, .bphone__person, .bphone__bezel, .bphone__tbl) { visibility: hidden; }
.bphone.is-video-on .bphone__table { z-index: 3; }
.bphone.is-video-on .bphone__table::before { display: none; }
.bphone__vsrc { position: absolute; left: 0; top: 0; width: 2px; height: 2px; opacity: 0; pointer-events: none; }

/* экран: интерфейс в логических пикселях, matrix3d натягивает его на углы экрана на фото */
.bphone__screen { position: absolute; left: 0; top: 0; z-index: 1; transform-origin: 0 0; overflow: hidden; color: var(--ink); background: var(--bp-bg); }
.bphone__screen::after { /* блик по стеклу */
  content: ""; position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(118deg, rgb(255 255 255 / .2) 0%, rgb(255 255 255 / 0) 34%), linear-gradient(180deg, rgb(0 0 0 / 0) 72%, rgb(0 0 0 / .05));
}
:root[data-theme="dark"] .bphone__screen::after { background: linear-gradient(118deg, rgb(255 255 255 / .07) 0%, rgb(255 255 255 / 0) 34%); }
/* карточка встала в выдачу — экран на миг светлеет сверху, как при обновлении ленты (--lit из phone.js) */
.bphone__screen::before {
  content: ""; position: absolute; inset: 0; z-index: 3; pointer-events: none; opacity: var(--lit, 0);
  background: linear-gradient(180deg, rgb(255 255 255 / .55), rgb(255 255 255 / .14) 40%, rgb(255 255 255 / 0) 70%);
}
:root[data-theme="dark"] .bphone__screen::before { background: linear-gradient(180deg, rgb(170 180 255 / .14), rgb(170 180 255 / .04) 40%, rgb(170 180 255 / 0) 70%); }
.bp-ui { display: flex; flex-direction: column; height: 100%; padding: 0 10px; font-size: 12.5px; line-height: 1.45; }
.bp-status { display: flex; align-items: center; justify-content: space-between; flex: none; height: 30px; padding: 3px 12px 0 16px; font-size: 11.5px; font-variant-numeric: tabular-nums; }
.bp-status b { font-weight: 600; }
.bp-status__ic { display: flex; align-items: center; gap: 5px; }
.bp-sig { display: flex; align-items: flex-end; gap: 1.5px; height: 9px; }
.bp-sig i { width: 2.5px; border-radius: 1px; background: currentColor; }
.bp-sig i:nth-child(1) { height: 3px; } .bp-sig i:nth-child(2) { height: 5px; } .bp-sig i:nth-child(3) { height: 7px; } .bp-sig i:nth-child(4) { height: 9px; }
.bp-bat { position: relative; width: 20px; height: 10px; border-radius: 3px; box-shadow: inset 0 0 0 1px color-mix(in srgb, currentColor 45%, transparent); }
.bp-bat::before { content: ""; position: absolute; left: 2px; top: 2px; bottom: 2px; width: 11px; border-radius: 1.5px; background: currentColor; }
.bp-bat::after { content: ""; position: absolute; right: -3px; top: 3px; width: 1.5px; height: 4px; border-radius: 0 1px 1px 0; background: color-mix(in srgb, currentColor 45%, transparent); }
.bp-search { display: flex; align-items: center; gap: 7px; flex: none; height: 34px; margin: 6px 0 8px; padding: 0 12px; border-radius: 12px; font-weight: 500; background: var(--bp-item); box-shadow: 0 1px 2px rgb(22 30 74 / .06), inset 0 0 0 1px var(--bp-edge); }
.bp-search .ic { width: 14px; height: 14px; flex: none; color: var(--accent); }
.bp-search .caret { height: 14px; margin-left: -5px; }
.bp-tabs { display: flex; gap: 5px; flex: none; margin-bottom: 9px; }
.bp-tabs i { padding: 3px 8px; border-radius: 999px; font-style: normal; font-size: 10.5px; font-weight: 600; color: var(--ink-3); background: var(--bp-chip); transition: color .45s, background .45s; }
.bp-tabs i.on { color: #fff; background: linear-gradient(135deg, var(--blue), var(--violet)); }
.bp-feed { position: relative; flex: 1; min-height: 0; overflow: hidden; }
.bp-feed::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 56px; background: linear-gradient(rgb(0 0 0 / 0), var(--bp-bg)); pointer-events: none; }
/* поисковая выдача: блоки — компактные результаты, лента едет вверх (сдвиг задаёт phone.js) */
.bp-list { position: relative; will-change: transform; }
.sr {
  width: 220px; margin-bottom: 8px; padding: 10px 12px 11px; border-radius: 12px;
  font-size: 11.5px; line-height: 1.4; color: var(--ink-2);
  background-color: var(--bp-item);
  box-shadow: 0 1px 2px rgb(22 30 74 / .06), inset 0 0 0 1px var(--bp-edge);
  transition: background-color 1.4s var(--ease-out);
}
/* блок раскрылся карточкой — на миг подкрашен и спокойно возвращается к обычному фону */
.sr.is-out { background-color: color-mix(in srgb, var(--violet) 10%, var(--bp-item)); transition-duration: .25s; }
.sr--ai { background-image: linear-gradient(160deg, color-mix(in srgb, var(--violet) 9%, transparent), transparent 70%); }
.sr__site { display: flex; align-items: center; gap: 6px; min-width: 0; margin-bottom: 4px; }
.sr__site .fav { flex: none; width: 14px; height: 14px; margin: 0; border-radius: 50%; }
.sr__site small { overflow: hidden; font-size: 10px; color: var(--ink-3); white-space: nowrap; text-overflow: ellipsis; }
.sr__t { margin-bottom: 3px; font-size: 13px; font-weight: 600; line-height: 1.28; color: var(--c-serm); }
.sr__t--sm { margin-bottom: 2px; font-size: 11.5px; color: var(--ink); }
.sr__s { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.sr__s--3 { -webkit-line-clamp: 3; }
.sr__s--ink { color: var(--ink); }
.sr mark { padding: 0 3px; border-radius: 4px; font-weight: 600; color: var(--pos); background: color-mix(in srgb, var(--pos) 16%, transparent); }
.sr__q { width: fit-content; max-width: 100%; margin-bottom: 5px; padding: 4px 9px; border-radius: 10px 10px 3px 10px; font-weight: 500; color: var(--ink); background: color-mix(in srgb, var(--blue) 12%, transparent); }
.sr__meta { display: block; margin-top: 4px; font-size: 10px; color: var(--ink-3); }
.sr__rate { display: flex; align-items: center; gap: 5px; margin-top: 2px; }
.sr__rate > b { font-size: 11.5px; font-weight: 700; color: var(--ink); font-variant-numeric: tabular-nums; }
.sr__rate .stars { display: inline-flex; gap: 1px; color: var(--amber); }
.sr__rate .stars svg { width: 10px; height: 10px; }
.sr__rate small { font-size: 10px; color: var(--ink-3); }
.sr__lbl { margin-bottom: 7px; font-size: 11px; font-weight: 700; color: var(--ink); }
.sr__row { display: grid; grid-template-columns: 58px minmax(0, 1fr); gap: 9px; align-items: center; }
.sr__row small { font-size: 10px; color: var(--ink-3); }
.sr__img { position: relative; display: block; width: 58px; height: 40px; overflow: hidden; border-radius: 7px; }
.sr__img img { width: 100%; height: 100%; object-fit: cover; filter: var(--img-mute); }
.sr__lbl .yt { margin-right: 5px; vertical-align: -1px; }
.sr__play { position: absolute; left: 50%; top: 50%; display: grid; place-items: center; width: 18px; height: 18px; margin: -9px 0 0 -9px; border-radius: 50%; color: var(--deep); background: rgb(255 255 255 / .9); }
.sr__play svg { width: 8px; height: 8px; margin-left: 1px; }
.sr__map {
  position: relative; height: 50px; margin-bottom: 7px; border-radius: 8px;
  background:
    linear-gradient(115deg, transparent 46%, rgb(255 255 255 / .8) 47% 50%, transparent 51%),
    linear-gradient(18deg, transparent 58%, rgb(255 255 255 / .6) 59% 61%, transparent 62%),
    color-mix(in srgb, var(--blue) 10%, var(--bp-bg));
}
:root[data-theme="dark"] .sr__map {
  background:
    linear-gradient(115deg, transparent 46%, rgb(255 255 255 / .12) 47% 50%, transparent 51%),
    linear-gradient(18deg, transparent 58%, rgb(255 255 255 / .08) 59% 61%, transparent 62%),
    color-mix(in srgb, var(--blue) 14%, var(--bp-bg));
}
.sr__pin { position: absolute; left: 56%; top: 34%; width: 10px; height: 10px; border-radius: 50% 50% 50% 0; background: var(--coral); transform: rotate(-45deg); box-shadow: 0 0 0 3px color-mix(in srgb, var(--coral) 22%, transparent); }
.sr__ai { display: flex; align-items: center; gap: 5px; margin-bottom: 5px; font-size: 10px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; color: var(--c-geo); }
.sr__ai .ic { width: 12px; height: 12px; }
.sr__src { display: flex; gap: 4px; margin-top: 6px; }
.sr__src li { padding: 1px 6px; border-radius: 6px; font-size: 9.5px; color: var(--ink-3); background: var(--bp-chip); }
.sr__rank { display: grid; gap: 3px; }
.sr__rank li { display: flex; justify-content: space-between; gap: 8px; color: var(--ink-3); }
.sr__rank .is-you { font-weight: 600; color: var(--ink); }
.sr__rank b { font-variant-numeric: tabular-nums; }

/* летающие карточки: те же стеклянные панели облака, форму задаёт matrix3d из phone.js */
.bphone__cards { position: absolute; inset: 0; pointer-events: none; }
.bc-card.bp-card { width: 220px; transform-origin: 0 0; }

/* колонка с Алисой: кольцо на эллипсе её верха загорается и бежит, пока из неё поднимается ответ */
@property --spk-a { syntax: "<angle>"; inherits: false; initial-value: 0deg; }
.bphone__ring { position: absolute; left: 0; top: 0; z-index: 3; pointer-events: none; opacity: 0; transition: opacity .7s var(--ease-out); }
.bphone__ring.is-on { opacity: 1; }
.bphone__ring::before {
  content: ""; position: absolute; inset: 0; border-radius: 50%;
  background: conic-gradient(from var(--spk-a), #455FEC, #A662FD, #786AFC, #6FB7FF, #455FEC);
  -webkit-mask: radial-gradient(closest-side, transparent 74%, #000 80%, #000 94%, transparent 100%);
  mask: radial-gradient(closest-side, transparent 74%, #000 80%, #000 94%, transparent 100%);
  animation: spkSpin 2.2s linear infinite;
}
.bphone__ring::after { /* свет кольца над колонкой */
  content: ""; position: absolute; inset: -140% -35% -40%; border-radius: 50%; pointer-events: none;
  background: radial-gradient(closest-side, color-mix(in srgb, var(--violet) 50%, transparent), color-mix(in srgb, var(--blue) 16%, transparent) 55%, transparent);
  animation: spkPulse 1.2s ease-in-out infinite;
}
:root[data-theme="dark"] .bphone__ring::after { mix-blend-mode: screen; }
@keyframes spkSpin { to { --spk-a: 360deg; } }
@keyframes spkPulse { 50% { opacity: .5; transform: scale(.92); } }
@media (max-width: 980px) {
  html[data-core="phone"] .hero__slot { height: clamp(440px, 120vw, 580px); }
}

/* ---------- Шапка ---------- */
.site-header { position: fixed; top: 0; left: 0; right: 0; z-index: 40; height: var(--header-h); transition: background .4s, box-shadow .4s, transform .5s var(--ease-out); }
.site-header.is-solid {
  background: rgb(var(--glass-rgb) / calc(var(--glass-a) + .1));
  -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(1.5); backdrop-filter: blur(var(--glass-blur)) saturate(1.5);
  box-shadow: inset 0 -1px 0 var(--line);
}
.site-header__in { height: 100%; display: flex; align-items: center; gap: 28px; }
.logo { display: inline-flex; color: var(--ink); flex: none; }
.logo svg { width: 104px; height: auto; aspect-ratio: 130.47 / 27.2; }
.logo--lg svg { width: 150px; }
.nav { display: flex; gap: 26px; margin-inline: auto; font-size: 14.5px; font-weight: 500; }
.nav a { text-decoration: none; color: var(--ink-2); position: relative; padding-block: 6px; }
.nav a::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 1.5px; background: var(--accent); transform: scaleX(0); transform-origin: left; transition: transform .35s var(--ease-out); }
.nav a:hover { color: var(--ink); }
.nav a:hover::after, .nav a.is-active::after { transform: scaleX(1); }
.nav a.is-active { color: var(--ink); }
.site-header__tools { display: flex; align-items: center; gap: 10px; margin-left: auto; }
.header-phone { font-weight: 600; font-size: 14.5px; text-decoration: none; font-variant-numeric: tabular-nums; white-space: nowrap; margin-right: 6px; }
.icon-btn { display: inline-grid; place-items: center; width: 42px; height: 42px; border-radius: 12px; border: 0; background: rgb(var(--glass-rgb) / calc(var(--glass-a) - .05)); box-shadow: inset 0 0 0 1px var(--line); color: var(--ink); transition: background .3s, box-shadow .3s, transform .3s var(--ease-out); }
.icon-btn:hover { box-shadow: inset 0 0 0 1px var(--line-2); transform: translateY(-1px); }
.icon-btn .ic { width: 20px; height: 20px; }
/* иконка — куда переключит кнопка: в светлой теме луна, в тёмной солнце. Обе лежат в одной ячейке:
   уходящая поворачивается и сжимается, новая выкатывается ей навстречу */
.theme-toggle { overflow: hidden; }
.theme-toggle .ic { grid-area: 1 / 1; transition: transform .55s var(--ease-out), opacity .35s var(--ease-out); }
.theme-toggle .ic--sun { opacity: 0; transform: rotate(-90deg) scale(.4); }
:root[data-theme="dark"] .theme-toggle .ic--sun { opacity: 1; transform: none; }
:root[data-theme="dark"] .theme-toggle .ic--moon { opacity: 0; transform: rotate(90deg) scale(.4); }
.theme-toggle:active .ic { scale: .88; }
.menu-btn { display: none; }

/* ---------- Кнопки ---------- */
.btn {
  --h: 48px;
  display: inline-flex; align-items: center; justify-content: center; gap: 10px;
  min-height: var(--h); padding: 0 22px;
  border: 0; border-radius: 13px;
  font-weight: 600; font-size: .95rem; line-height: 1.2; text-align: center; text-decoration: none;
  transition: transform .35s var(--ease-out), box-shadow .35s var(--ease-out), background-color .35s, color .35s;
}
.btn .ic { width: 18px; height: 18px; transition: transform .35s var(--ease-out); }
.btn:hover .ic { transform: translateX(3px); }
.btn--sm { --h: 40px; padding: 0 16px; font-size: .88rem; border-radius: 11px; }
.btn--lg { --h: 58px; padding: 0 28px; font-size: 1rem; border-radius: 15px; }
.btn--block { width: 100%; }
.btn--primary {
  color: var(--on-accent);
  background: var(--accent);
  box-shadow: inset 0 1px 0 rgb(255 255 255 / .28), 0 14px 30px -14px color-mix(in srgb, var(--accent) 80%, transparent);
}
.btn--primary:hover { color: #fff; background: color-mix(in srgb, var(--accent) 72%, var(--violet)); transform: translateY(-2px); box-shadow: inset 0 1px 0 rgb(255 255 255 / .28), 0 20px 36px -14px color-mix(in srgb, var(--violet) 80%, transparent); }
.btn--primary:active { transform: translateY(0); }
.btn--ghost { color: var(--ink); background: rgb(var(--glass-rgb) / calc(var(--glass-a) - .1)); box-shadow: inset 0 0 0 1px var(--line-2); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); }
.btn--ghost:hover { color: var(--ink); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent) 60%, transparent); transform: translateY(-2px); }
.btn:disabled { opacity: .45; pointer-events: none; }
.btn.is-loading { pointer-events: none; opacity: .8; }
.btn.is-loading::after { content: ""; width: 16px; height: 16px; border-radius: 50%; border: 2px solid currentColor; border-right-color: transparent; animation: spin .7s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }

/* ---------- Стекло ---------- */
.glass {
  position: relative;
  isolation: isolate;
  border-radius: var(--r-lg);
  background: linear-gradient(165deg, rgb(var(--glass-rgb) / calc(var(--glass-a) + .12)), rgb(var(--glass-rgb) / var(--glass-a)) 55%);
  -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(1.5);
  backdrop-filter: blur(var(--glass-blur)) saturate(1.5);
  box-shadow: inset 0 1px 0 var(--glass-top), inset 0 0 0 1px var(--glass-side), var(--shadow);
}
.glass::before { /* блик по кромке */
  content: ""; position: absolute; inset: 0; border-radius: inherit; padding: 1px; pointer-events: none; z-index: -1;
  background: linear-gradient(135deg, rgb(255 255 255 / .75), rgb(255 255 255 / 0) 32%, rgb(255 255 255 / 0) 70%, color-mix(in srgb, var(--violet) 45%, transparent));
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask-composite: exclude;
}
:root[data-theme="dark"] .glass::before { background: linear-gradient(135deg, rgb(255 255 255 / .22), rgb(255 255 255 / 0) 30%, rgb(255 255 255 / 0) 68%, color-mix(in srgb, var(--violet) 55%, transparent)); }
.glass::after { /* внутреннее зерно */
  content: ""; position: absolute; inset: 0; border-radius: inherit; pointer-events: none; z-index: -1;
  background: url("../img/grain.webp"); opacity: .08; mix-blend-mode: overlay;
}

/* ---------- Типографика секций ---------- */
.section { position: relative; z-index: 4; padding-block: var(--sec); }
.h2 { font-size: var(--fs-h2); font-weight: 700; letter-spacing: -.03em; line-height: 1.04; }
.h2--sm { font-size: clamp(1.6rem, 1.15rem + 1.6vw, 2.5rem); line-height: 1.1; }
.h3 { font-size: var(--fs-h3); font-weight: 700; letter-spacing: -.015em; margin-bottom: 18px; }
.h4 { font-size: 1.08rem; font-weight: 700; letter-spacing: -.005em; margin: 26px 0 10px; display: flex; align-items: baseline; gap: 10px; }
.h4 small { font-size: .78rem; font-weight: 500; color: var(--ink-3); font-variant-numeric: tabular-nums; }
.lead { font-size: var(--fs-lead); line-height: 1.55; color: var(--ink-2); max-width: 62ch; }
.section-head { display: grid; gap: 18px; margin-bottom: clamp(40px, 5vw, 68px); max-width: 860px; }
.section-cta { margin-top: clamp(40px, 5vw, 64px); display: flex; }
.note { margin-top: 36px; max-width: 76ch; color: var(--ink-2); padding-left: 18px; position: relative; }
.note::before { content: ""; position: absolute; left: 0; top: .45em; width: 7px; height: 7px; transform: rotate(45deg); background: var(--violet); }
.note b { color: var(--ink); }

/* ---------- Hero ---------- */
.hero { position: relative; z-index: 4; min-height: 100svh; display: flex; overflow-x: clip; padding-top: calc(var(--header-h) + clamp(12px, 4vh, 48px)); padding-bottom: clamp(20px, 3vh, 36px); pointer-events: none; }
.hero__in { display: grid; grid-template-columns: minmax(0, 46%) minmax(0, 1fr); grid-template-rows: 1fr; gap: 0; }
.hero__content { grid-column: 1; grid-row: 1; align-self: center; pointer-events: auto; display: grid; gap: clamp(18px, 2.6vh, 28px); padding-block: 10px; }
.hero__title { font-size: var(--fs-h1); font-weight: 800; line-height: 1.02; letter-spacing: -.035em; max-width: 12.5em; }
.hero__sub { font-size: var(--fs-lead); line-height: 1.55; color: var(--ink-2); max-width: 36em; }
.hero__sub b { color: var(--ink); font-weight: 600; }
.hero__actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 6px; }
/* вуаль под колонкой текста: свет сцены не спорит с текстом и цифрами */
.hero::before {
  content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none;
  background: linear-gradient(90deg, rgb(var(--bg-rgb) / .9) 0%, rgb(var(--bg-rgb) / .82) 28%, rgb(var(--bg-rgb) / .35) 40%, rgb(var(--bg-rgb) / 0) 47%);
  -webkit-mask: linear-gradient(180deg, #000 72%, transparent 100%); mask: linear-gradient(180deg, #000 72%, transparent 100%);
}
.hero__slot { grid-column: 2; grid-row: 1; min-height: 62vh; }
/* цифры — табло из четырёх ячеек под кнопками */
/* Цифры — типографика на спокойной подложке страницы, без стекла: стекло принадлежит сцене */
.stats { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); margin-top: clamp(4px, 1.2vh, 14px); max-width: 560px; box-shadow: inset 0 1px 0 var(--line-2); }
.stat { display: grid; grid-template-columns: auto 1fr; align-items: center; gap: 12px; padding: 16px 18px 16px 0; }
.stat:nth-child(even) { padding: 16px 0 16px 18px; box-shadow: inset 1px 0 0 var(--line); }
.stat:nth-child(-n+2) { border-bottom: 1px solid var(--line); }
.stat__num { display: inline-flex; align-items: baseline; min-width: 2.3em; font-size: clamp(1.7rem, 1.2rem + 1vw, 2.3rem); font-weight: 700; letter-spacing: -.04em; line-height: 1; font-variant-numeric: tabular-nums; color: var(--ink); }
.stat__num i { font-style: normal; font-size: .52em; font-weight: 600; margin-left: 2px; color: var(--accent); letter-spacing: 0; }
.stat > span { font-size: .8rem; line-height: 1.38; color: var(--ink-2); }

/* роллер цифр (split-flap) */
.roll { display: inline-flex; font-variant-numeric: tabular-nums; }
.roll__d { display: inline-block; height: 1em; overflow: hidden; line-height: 1; }
.roll__col { display: flex; flex-direction: column; transition: transform calc(1.4s / max(var(--motion), .2)) var(--ease-out); }
.roll__col span { height: 1em; }

/* ---------- Проблема ---------- */
.split { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.25fr); gap: clamp(32px, 5vw, 80px); align-items: start; }
.split__head { display: grid; gap: 22px; position: sticky; top: calc(var(--header-h) + 40px); }
.coverage { padding: 10px 24px 14px; }
.coverage__table th, .coverage__table td { text-align: left; vertical-align: middle; padding: 16px 12px 16px 0; box-shadow: inset 0 -1px 0 var(--line); font-size: .93rem; }
.coverage__table thead th { font-size: .74rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--ink-3); padding-block: 14px 12px; }
.coverage__table tbody th { font-weight: 600; width: 34%; padding-right: 18px; }
.coverage__table td:nth-child(2) { color: var(--ink-2); }
.coverage__planes-h { display: flex; gap: 6px; }
.coverage__planes-h span { writing-mode: vertical-rl; transform: rotate(180deg); width: 18px; font-size: .7rem; letter-spacing: .03em; }
.planes { white-space: nowrap; width: 1%; }
.planes i { display: inline-block; width: 18px; height: 18px; margin-right: 6px; border-radius: 5px; box-shadow: inset 0 0 0 1.5px var(--line-2); transform: rotate(45deg) scale(.72); transition: background .5s var(--ease-out), box-shadow .5s, transform .6s var(--ease-out); }
.planes i.on { background: var(--c); box-shadow: 0 0 0 4px color-mix(in srgb, var(--c) 18%, transparent); transform: rotate(45deg) scale(.82); }
.coverage__all th, .coverage__all td { box-shadow: none; }
.coverage__all th { color: var(--accent); }
.coverage__all td:nth-child(2) { color: var(--ink); font-weight: 500; }
.thesis { margin-top: clamp(56px, 7vw, 96px); font-size: clamp(1.4rem, 1rem + 1.7vw, 2.4rem); font-weight: 600; line-height: 1.25; letter-spacing: -.02em; max-width: 28em; }
.thesis__plane { color: var(--accent); white-space: nowrap; }
.thesis__plane:nth-child(2) { color: var(--c-orm); }
.thesis__plane:nth-child(3) { color: var(--c-geo); }
.thesis__plane:nth-child(4) { color: var(--c-ai); white-space: normal; }

/* ---------- Модель 4 в 1 ---------- */
.model__grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr); gap: clamp(32px, 6vw, 96px); align-items: center; }
.ring { position: relative; width: min(100%, 480px); aspect-ratio: 1; margin-inline: auto; }
.ring__svg { width: 100%; height: 100%; overflow: visible; }
.ring__track { fill: none; stroke: var(--line); stroke-width: 1; }
.ring__inner { fill: none; stroke: var(--line); stroke-dasharray: 2 6; }
.ring__arc { fill: none; stroke-width: 10; stroke-linecap: round; stroke-dasharray: 250 400; stroke-dashoffset: -8; opacity: .35; transition: opacity .5s var(--ease-out); }
.ring__arc[data-i="0"] { stroke: var(--c-serm); }
.ring__arc[data-i="1"] { stroke: var(--c-orm); }
.ring__arc[data-i="2"] { stroke: var(--c-geo); }
.ring__arc[data-i="3"] { stroke: var(--c-ai); }
.ring.is-live .ring__arc { opacity: .9; }
.ring[data-hi] .ring__arc { opacity: .22; }
.ring[data-hi="0"] .ring__arc[data-i="0"], .ring[data-hi="1"] .ring__arc[data-i="1"], .ring[data-hi="2"] .ring__arc[data-i="2"], .ring[data-hi="3"] .ring__arc[data-i="3"] { opacity: 1; stroke-width: 14; }
.ring__label { position: absolute; left: 50%; top: 50%; font-size: .82rem; font-weight: 700; letter-spacing: .1em; transform: rotate(var(--a)) translateY(calc(-1 * min(24vw, 250px) - 6px)) rotate(calc(-1 * var(--a))) translate(-50%, -50%); transform-origin: 0 0; }
.ring__slot { position: absolute; inset: 27%; border-radius: 50%; }
.pillars { display: grid; gap: 4px; counter-reset: p; }
.pillar a { display: grid; grid-template-columns: 140px 1fr; gap: 8px 24px; padding: 22px 0; text-decoration: none; color: inherit; box-shadow: inset 0 -1px 0 var(--line); }
.pillar a > * { transition: transform .45s var(--ease-out), color .3s; }
.pillar__code { grid-row: span 2; font-size: clamp(1.5rem, 1.1rem + 1.2vw, 2.1rem); font-weight: 800; letter-spacing: -.03em; line-height: 1; color: var(--c); }
.pillar[data-i="0"] { --c: var(--c-serm); } .pillar[data-i="1"] { --c: var(--c-orm); } .pillar[data-i="2"] { --c: var(--c-geo); } .pillar[data-i="3"] { --c: var(--c-ai); }
.pillar__name { font-weight: 700; font-size: 1.08rem; }
.pillar__text { color: var(--ink-2); font-size: .95rem; }
.pillar a:hover > * { transform: translateX(8px); }
.pillar a:hover .pillar__name { color: var(--c); }

/* ---------- Процесс ---------- */
.timeline { position: relative; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 28px; padding-top: 44px; }
.timeline__track { position: absolute; left: 0; right: 0; top: 8px; height: 2px; background: var(--line); border-radius: 2px; }
.timeline__fill { position: absolute; inset: 0; transform-origin: left; transform: scaleX(var(--p, 0)); background: linear-gradient(90deg, var(--blue), var(--violet), var(--lilac)); border-radius: 2px; }
.tl { position: relative; }
.tl__node { position: absolute; z-index: 1; top: -44px; left: 0; width: 18px; height: 18px; transform: rotate(45deg); border-radius: 4px; background: var(--bg); box-shadow: inset 0 0 0 2px var(--line-2); transition: background .3s, box-shadow .3s; } /* z-index: линия проходит за точкой, а не сквозь неё */
.tl.is-on .tl__node { background: var(--violet); box-shadow: 0 0 0 6px color-mix(in srgb, var(--violet) 18%, transparent); }
.tl__meta { font-size: .82rem; font-weight: 500; color: var(--ink-3); margin: 0 0 10px; font-variant-numeric: tabular-nums; }
.tl__meta b { color: var(--accent); font-weight: 600; }
.tl__title { font-size: clamp(1.3rem, 1.05rem + .8vw, 1.75rem); letter-spacing: -.025em; margin-bottom: 6px; }
.tl p { color: var(--ink-2); font-size: .95rem; max-width: 24ch; }

/* ---------- Услуги SERM / ORM / GEO / AI ---------- */
.service__head { position: relative; display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: end; gap: 12px clamp(24px, 4vw, 56px); margin-bottom: clamp(36px, 5vw, 64px); }
.initial-wrap { display: flex; align-items: center; gap: calc(var(--fs-initial) * .06); }
.service__head--rev .initial-wrap { order: 2; flex-direction: row-reverse; }
.initial {
  position: relative; z-index: 0;
  font-size: var(--fs-initial); font-weight: 800; line-height: .78; letter-spacing: -.04em;
  color: var(--hue);
  opacity: .92;
  user-select: none;
}
.service__slot { flex: none; width: max(calc(var(--fs-initial) * .78), 190px); height: max(calc(var(--fs-initial) * .78), 132px); margin-top: calc(var(--fs-initial) * -.1); pointer-events: none; } /* слот вмещает мини-карточку целиком — она не заходит ни на буквы, ни на заголовок */
.service__title { padding-bottom: .15em; max-width: 14em; }
.service__head .lead { margin-top: 14px; }
.service__head--rev { grid-template-columns: minmax(0, 1fr) auto; }

.service__body { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: clamp(32px, 5vw, 80px); align-items: start; }
.service__body--rev { grid-template-columns: minmax(0, 1.2fr) minmax(0, .95fr); }
.points { display: grid; }
.points li { position: relative; padding: 18px 0 18px 30px; box-shadow: inset 0 -1px 0 var(--line); color: var(--ink-2); }
.points li:first-child { padding-top: 4px; }
.points li:first-child::before { top: 11px; }
.points li::before { content: ""; position: absolute; left: 2px; top: 25px; width: 9px; height: 9px; transform: rotate(45deg); border-radius: 2px; background: var(--hue, var(--accent)); }
.points b { display: block; color: var(--ink); font-size: 1.06rem; margin-bottom: 3px; }
.keythought { margin: clamp(48px, 6vw, 80px) 0 0; max-width: 900px; padding-left: clamp(20px, 3vw, 40px); position: relative; }
.keythought::before { content: ""; position: absolute; left: 0; top: .2em; bottom: .2em; width: 1px; background: var(--hue, var(--accent)); }
.keythought p { font-size: clamp(1.2rem, .95rem + 1vw, 1.75rem); line-height: 1.38; font-weight: 500; letter-spacing: -.012em; }
.keythought b { color: var(--hue); font-weight: 700; }

.serp-demo { padding: 20px 20px 16px; }
.serp-demo__q { display: flex; align-items: center; gap: 8px; height: 42px; padding: 0 14px; border-radius: 11px; background: var(--field-bg); box-shadow: inset 0 0 0 1px var(--line); font-weight: 500; margin-bottom: 14px; }
.serp-demo__q .ic { color: var(--ink-3); width: 18px; height: 18px; }
.serp-demo__stack { position: relative; }
.serp-demo__list { position: relative; display: grid; gap: 6px; }
.serp-demo__list li:nth-child(4) { margin-bottom: 26px; }
.serp-demo__list li { display: flex; align-items: center; gap: 12px; height: 40px; padding: 0 12px; border-radius: 10px; font-size: .9rem; background: rgb(var(--glass-rgb) / .5); box-shadow: inset 0 0 0 1px var(--line); will-change: transform; }
.serp-demo__list li i { width: 8px; height: 8px; border-radius: 50%; flex: none; }
.serp-demo__list li[data-tone="pos"] i { background: var(--pos); }
.serp-demo__list li[data-tone="neg"] i { background: var(--coral); }
.serp-demo__list li[data-tone="neg"] { color: var(--ink-3); }
.serp-demo__fold { position: absolute; left: 0; right: 0; top: 190px; font-size: .7rem; letter-spacing: .03em; line-height: 1; color: var(--ink-3); text-align: right; padding-top: 3px; pointer-events: none; }
.serp-demo__fold::before { content: ""; position: absolute; left: 0; right: 0; top: -1px; border-top: 1px dashed color-mix(in srgb, var(--coral) 60%, transparent); }
.serp-demo__note { margin-top: 10px; font-size: .75rem; color: var(--ink-3); }

.figure { padding: clamp(24px, 3vw, 36px); display: grid; gap: 14px; }
.figure__num { display: flex; align-items: baseline; font-size: clamp(4rem, 2.5rem + 5vw, 6.5rem); font-weight: 800; letter-spacing: -.04em; line-height: .9; color: var(--hue); font-variant-numeric: tabular-nums; }
.figure__num i { font-style: normal; font-size: .45em; margin-left: 4px; }
.figure__text { font-size: 1.05rem; font-weight: 500; }
.figure__so { color: var(--ink-2); }
.figure__so b { color: var(--ink); }
.tone { display: grid; grid-template-columns: 1.3fr 1fr .6fr; gap: 4px; margin-top: 6px; }
.tone__seg { display: block; padding-top: 12px; font-size: .74rem; color: var(--ink-3); position: relative; }
.tone__seg::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 6px; border-radius: 3px; }
.tone__seg--pos::before { background: var(--pos); } .tone__seg--neu::before { background: var(--ink-3); opacity: .5; } .tone__seg--neg::before { background: var(--coral); }
.hour { display: flex; align-items: center; gap: 14px; padding-top: 16px; box-shadow: inset 0 1px 0 var(--line); color: var(--ink-2); font-size: .92rem; }
.hour svg { width: 40px; height: 40px; flex: none; fill: none; stroke: var(--hue); stroke-width: 2; stroke-linecap: round; }
.hour b { color: var(--ink); }

.geo__grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(28px, 4vw, 64px); align-items: start; }
.study { padding: clamp(22px, 3vw, 34px); margin: 0; }
.study figcaption { color: var(--ink-2); margin-bottom: 20px; }
.study figcaption b { color: var(--ink); }
.bars { display: grid; gap: 20px; }
.bars li { display: grid; grid-template-columns: 1fr auto; gap: 8px 16px; align-items: end; }
.bars__label { font-weight: 600; font-size: .98rem; }
.bars__label small { display: block; font-weight: 400; font-size: .8rem; color: var(--ink-3); }
.bars__val { font-size: 1.9rem; font-weight: 800; letter-spacing: -.04em; line-height: 1; font-variant-numeric: tabular-nums; color: var(--hue); }
.bars__track { grid-column: 1 / -1; height: 10px; border-radius: 5px; background: var(--line); overflow: hidden; }
.bars__track i { display: block; height: 100%; width: calc(var(--v) * 100%); border-radius: inherit; background: var(--hue); transform-origin: left; transform: scaleX(0); transition: transform 1.4s var(--ease-out); }
.is-in .bars__track i { transform: scaleX(1); }
.checks { display: grid; gap: 14px; }
.checks li { position: relative; padding-left: 32px; color: var(--ink-2); }
.checks li::before { content: ""; position: absolute; left: 0; top: .2em; width: 20px; height: 20px; border-radius: 6px; background: color-mix(in srgb, var(--hue, var(--accent)) 16%, transparent); }
.checks li::after { content: ""; position: absolute; left: 7px; top: calc(.2em + 4px); width: 5px; height: 9px; border: solid var(--hue, var(--accent)); border-width: 0 2px 2px 0; transform: rotate(45deg); }
.checks b { color: var(--ink); }
.models { margin-top: clamp(28px, 4vw, 48px); padding: clamp(22px, 3vw, 36px); }
.models__title { display: flex; align-items: center; gap: 10px; }
.models__title .ic { color: var(--hue); }
.models__list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 clamp(24px, 4vw, 56px); }
.models__list > div { padding: 18px 0; box-shadow: inset 0 1px 0 var(--line); }
.models__list dt { font-weight: 700; font-size: 1.12rem; margin-bottom: 8px; color: var(--hue); }
.models__list dd { color: var(--ink-2); font-size: .96rem; }

.tablecard { padding: 8px clamp(16px, 2.5vw, 30px); overflow: hidden; }
.dtable th, .dtable td { text-align: left; vertical-align: top; padding: 18px 18px 18px 0; box-shadow: inset 0 -1px 0 var(--line); }
.dtable tr:last-child th, .dtable tr:last-child td { box-shadow: none; }
.dtable thead th { font-size: .74rem; letter-spacing: .06em; text-transform: uppercase; color: var(--ink-3); font-weight: 600; padding-block: 16px 12px; }
.dtable tbody th { font-weight: 700; width: 26%; }
.dtable td { color: var(--ink-2); }
.res { display: inline-block; font-weight: 600; color: var(--ink); position: relative; padding-left: 18px; }
.res::before { content: ""; position: absolute; left: 0; top: .45em; width: 8px; height: 8px; transform: rotate(45deg); background: var(--hue); border-radius: 2px; }

/* ---------- Результаты ---------- */
.outcomes { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0 clamp(24px, 3.5vw, 56px); }
.outcome { padding: 28px 0 34px; box-shadow: inset 0 1px 0 var(--line-2); display: flex; flex-direction: column; gap: 12px; }
.outcome__title { font-size: 1.3rem; letter-spacing: -.02em; line-height: 1.18; }
.outcome p { color: var(--ink-2); }
.outcome__metric { display: grid; gap: 8px; margin-bottom: 6px; }
.outcome__metric b { font-size: clamp(2.6rem, 1.8rem + 2.2vw, 3.8rem); font-weight: 800; line-height: .95; letter-spacing: -.04em; color: var(--accent); font-variant-numeric: tabular-nums; }
.outcome__metric span { font-size: .85rem; color: var(--ink-3); font-weight: 500; }
.outcome--metric:nth-of-type(5) .outcome__metric b { color: var(--c-orm); }
.chain { display: flex; flex-wrap: wrap; gap: 6px 4px; font-size: .88rem; font-weight: 600; color: var(--ink) !important; }
.chain span { display: inline-flex; align-items: center; gap: 4px; padding: 4px 10px; border-radius: 8px; background: color-mix(in srgb, var(--violet) 12%, transparent); }
.chain span + span::before { content: "→"; margin-right: 6px; color: var(--violet); font-weight: 400; }

/* ---------- Кейсы ---------- */
.case { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: clamp(24px, 4vw, 56px); padding: clamp(22px, 3.5vw, 48px); margin-bottom: clamp(28px, 4vw, 48px); }
.case--rev { grid-template-columns: minmax(0, 1fr) minmax(0, 1.4fr); }
.case--rev .case__photo { order: -1; }
.case__meta { display: flex; flex-wrap: wrap; gap: 8px; margin: 16px 0 10px; }
.case__meta span { font-size: .8rem; font-weight: 500; padding: 5px 11px; border-radius: 9px; background: var(--field-bg); box-shadow: inset 0 0 0 1px var(--line); color: var(--ink-2); font-variant-numeric: tabular-nums; }
.case__title { font-size: clamp(1.45rem, 1.1rem + 1.3vw, 2.3rem); letter-spacing: -.028em; line-height: 1.1; }
.case__cols { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 32px; }
.case__cols p { color: var(--ink-2); }
.dash { display: grid; gap: 10px; }
.dash li { position: relative; padding-left: 18px; color: var(--ink-2); }
.dash li::before { content: ""; position: absolute; left: 0; top: .72em; width: 9px; height: 1.5px; background: var(--violet); }
.ratings th, .ratings td { padding: 11px 12px 11px 0; box-shadow: inset 0 -1px 0 var(--line); text-align: left; font-variant-numeric: tabular-nums; font-size: .95rem; white-space: nowrap; }
.ratings thead th { font-size: .72rem; letter-spacing: .06em; text-transform: uppercase; color: var(--ink-3); font-weight: 600; }
.ratings tbody th { font-weight: 600; }
.ratings td:nth-child(2) { color: var(--ink-3); }
.ratings__bar { width: 38%; }
.ratings__bar span { position: relative; display: block; height: 8px; border-radius: 4px; background: var(--line); overflow: hidden; }
.ratings__bar span::before, .ratings__bar span::after { content: ""; position: absolute; left: 0; top: 0; bottom: 0; border-radius: 4px; transform-origin: left; transition: transform 1.3s var(--ease-out); }
.ratings__bar span::after { width: calc(var(--a) / 5 * 100%); background: linear-gradient(90deg, var(--blue), var(--violet)); transform: scaleX(0); transition-delay: .25s; }
.ratings__bar span::before { width: calc(var(--b) / 5 * 100%); background: var(--ink-3); opacity: .55; z-index: 1; transform: scaleX(0); }
.is-in .ratings__bar span::before, .is-in .ratings__bar span::after { transform: scaleX(1); }
.ratings .up { color: var(--pos); font-weight: 700; }
.totals { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; margin: 28px 0 24px; }
.total { display: grid; grid-template-columns: auto auto 1fr; align-items: baseline; gap: 8px; padding: 16px 0 0; box-shadow: inset 0 1px 0 var(--line-2); }
.total__from { font-size: 1.1rem; color: var(--ink-3); font-weight: 600; font-variant-numeric: tabular-nums; }
.total .ic { width: 16px; height: 16px; color: var(--violet); align-self: center; }
.total__to { font-size: clamp(2rem, 1.5rem + 1.4vw, 2.8rem); font-weight: 800; letter-spacing: -.04em; line-height: 1; font-variant-numeric: tabular-nums; display: inline-flex; align-items: baseline; }
.total__label { grid-column: 1 / -1; font-size: .82rem; color: var(--ink-2); }
.case__quote { margin: 26px 0 26px; font-size: 1.08rem; line-height: 1.5; font-weight: 500; font-style: italic; color: var(--ink); padding-left: 20px; box-shadow: inset 1px 0 0 var(--line-2); }
.case__photo { margin: 0; position: sticky; top: calc(var(--header-h) + 24px); align-self: start; border-radius: 12px; overflow: hidden; aspect-ratio: 4 / 5; }
.case:first-of-type .case__photo img { object-position: 78% 50%; }
.case--rev .case__photo img { object-position: 88% 50%; }
.case__photo img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.case__photo figcaption { position: absolute; left: 12px; bottom: 12px; font-size: .74rem; padding: 3px 8px; border-radius: 6px; background: rgb(8 8 20 / .7); color: #fff; }
.cleanup { margin: 22px 0 6px; }
.cleanup__pins { display: grid; grid-template-columns: repeat(15, minmax(0, 1fr)); gap: 6px; max-width: 520px; }
.cleanup__pins i { position: relative; aspect-ratio: 3 / 4; color: var(--coral); transition: opacity .6s var(--ease-out), transform .6s var(--ease-out), color .4s; }
.cleanup__pins i svg { width: 100%; height: 100%; }
.cleanup__pins i::after { content: ""; position: absolute; left: -10%; right: -10%; top: 45%; height: 2px; background: var(--ink); transform: rotate(-35deg) scaleX(0); transition: transform .4s var(--ease-out); }
.cleanup__pins i.is-off { color: var(--ink-3); opacity: .35; transform: scale(.82); }
.cleanup__pins i.is-off::after { transform: rotate(-35deg) scaleX(1); }
.cleanup__cities { display: flex; flex-wrap: wrap; gap: 6px 16px; margin-top: 10px; font-size: .8rem; color: var(--ink-3); }

/* ---------- Почему мы ---------- */
.why__list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0 clamp(24px, 3.5vw, 56px); }
.why__item { padding: 26px 0 36px; box-shadow: inset 0 1px 0 var(--line-2); }
.why__item dt { font-size: clamp(1.25rem, 1.05rem + .7vw, 1.6rem); font-weight: 700; letter-spacing: -.025em; line-height: 1.15; margin-bottom: 12px; }
.why__item dd { color: var(--ink-2); }
.why__item:nth-child(1) dt { color: var(--accent); }

/* ---------- Об агентстве ---------- */
.about__top { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(28px, 5vw, 80px); align-items: center; }
.about__top > div { display: grid; gap: 20px; }
.about__top p:not(.lead) { color: var(--ink-2); max-width: 60ch; }
.since { display: flex; align-items: baseline; gap: 14px; margin-top: 8px; }
.since b { font-size: clamp(3.5rem, 2.5rem + 4vw, 6rem); font-weight: 800; letter-spacing: -.04em; line-height: .9; color: var(--c-orm); font-variant-numeric: tabular-nums; }
.since span { color: var(--ink-3); font-weight: 500; }
.about__photo { margin: 0; border-radius: var(--r-lg); overflow: hidden; box-shadow: var(--shadow); aspect-ratio: 3 / 2; }
.about__photo img { width: 100%; height: 100%; object-fit: cover; }
.clients { margin-top: clamp(56px, 7vw, 100px); }
.clients__text { color: var(--ink-2); max-width: 70ch; margin-bottom: 26px; }
.logos { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); border-radius: var(--r-lg); overflow: hidden; box-shadow: inset 0 0 0 1px var(--line); }
.logos li { display: grid; place-items: center; min-height: 104px; padding: 18px 20px; box-shadow: inset -1px -1px 0 var(--line); transition: background .35s; }
.logos li:hover { background: rgb(var(--glass-rgb) / calc(var(--glass-a) - .1)); }
.logos img { height: var(--h, 30px); width: auto; max-width: 100%; object-fit: contain; opacity: .78; transition: opacity .3s, transform .45s var(--ease-out); }
.logos li:hover img { opacity: 1; transform: scale(1.04); }
:root[data-theme="dark"] .logos img { filter: invert(1); opacity: .7; }
.about__cols { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(28px, 5vw, 80px); margin-top: clamp(48px, 6vw, 80px); }
.tags { display: flex; flex-wrap: wrap; gap: 8px; }
.tags li { padding: 9px 15px; border-radius: 11px; font-weight: 500; font-size: .93rem; background: rgb(var(--glass-rgb) / var(--glass-a)); box-shadow: inset 0 0 0 1px var(--line); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); }
.tags li:nth-child(3) { background: color-mix(in srgb, var(--violet) 16%, rgb(var(--glass-rgb) / var(--glass-a))); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--violet) 40%, transparent); }

/* ---------- Бюджет ---------- */
.tiers { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(14px, 2vw, 24px); }
.tier { padding: clamp(22px, 2.6vw, 32px); display: flex; flex-direction: column; gap: 14px; }
.tier__name { font-size: 1.5rem; letter-spacing: -.025em; }
.tier__scope { color: var(--ink-2); min-height: 3em; }
.facets { display: flex; gap: 6px; flex-wrap: wrap; }
.facets i { font-style: normal; font-size: .74rem; font-weight: 700; letter-spacing: .06em; padding: 5px 9px; border-radius: 8px; color: var(--ink-3); box-shadow: inset 0 0 0 1px var(--line); }
.facets i.on { color: #fff; box-shadow: none; }
.facets i.on[data-f="0"] { background: var(--c-serm); } .facets i.on[data-f="1"] { background: var(--c-orm); } .facets i.on[data-f="2"] { background: var(--c-geo); } .facets i.on[data-f="3"] { background: var(--c-ai); }
:root[data-theme="dark"] .facets i.on[data-f="3"] { color: #1A0B3A; }
.tier__price { margin-top: auto; padding-top: 18px; box-shadow: inset 0 1px 0 var(--line); font-size: clamp(1.6rem, 1.2rem + 1.2vw, 2.2rem); font-weight: 800; letter-spacing: -.035em; font-variant-numeric: tabular-nums; line-height: 1.1; }
.tier__price span { font-size: .95rem; font-weight: 600; color: var(--ink-3); letter-spacing: 0; vertical-align: .35em; margin-right: 2px; }
.tier__price small { display: block; font-size: .84rem; font-weight: 500; color: var(--ink-3); letter-spacing: 0; margin-top: 4px; }

/* ---------- FAQ ---------- */
.faq__in { display: grid; grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); gap: clamp(28px, 5vw, 80px); align-items: start; }
.faq__list { display: grid; }
.qa { box-shadow: inset 0 -1px 0 var(--line-2); }
.qa summary { list-style: none; display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 24px 0; font-size: clamp(1.05rem, .98rem + .4vw, 1.3rem); font-weight: 600; letter-spacing: -.012em; cursor: pointer; }
.qa summary::-webkit-details-marker { display: none; }
.qa summary .ic { width: 22px; height: 22px; color: var(--violet); transition: transform .45s var(--ease-out); }
.qa[open]:not(.is-closing) summary .ic { transform: rotate(45deg); }
.qa summary:hover { color: var(--accent); }
.qa__a { color: var(--ink-2); max-width: 64ch; } /* высоту и прозрачность при раскрытии анимирует main.js */
.qa__a > :last-child { padding-bottom: 26px; } /* отступ внутри ответа: при закрытии высота уходит в ноль целиком */

/* ---------- Квиз ---------- */
.quiz__grid { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); gap: clamp(28px, 5vw, 80px); align-items: start; }
.quiz__intro { display: grid; gap: 20px; position: sticky; top: calc(var(--header-h) + 32px); }
.quiz__slot { height: clamp(200px, 22vw, 300px); }
.quizbox { padding: clamp(20px, 3vw, 36px); min-height: 520px; display: flex; flex-direction: column; }
.quizbox__progress { display: flex; align-items: center; gap: 16px; font-size: .84rem; font-weight: 600; color: var(--ink-3); margin-bottom: 22px; font-variant-numeric: tabular-nums; }
.quizbox__bar { position: relative; flex: 1; height: 4px; border-radius: 2px; background: var(--line); overflow: hidden; }
.quizbox__bar i { position: absolute; inset: 0; transform-origin: left; transform: scaleX(var(--q, .25)); background: linear-gradient(90deg, var(--blue), var(--violet)); transition: transform .6s var(--ease-out); }
.quizbox__form { display: flex; flex-direction: column; flex: 1; }
.qstep { border: 0; margin: 0; padding: 0; display: none; }
.qstep.is-active { display: block; animation: stepIn .55s var(--ease-out); }
@keyframes stepIn { from { opacity: 0; transform: translateX(18px); } }
.qstep legend { font-size: clamp(1.25rem, 1.05rem + .7vw, 1.6rem); font-weight: 700; letter-spacing: -.02em; line-height: 1.2; margin-bottom: 22px; padding: 0; }
.opts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.opts label { position: relative; display: flex; align-items: center; min-height: 58px; padding: 12px 16px 12px 48px; border-radius: 13px; cursor: pointer; background: var(--field-bg); box-shadow: inset 0 0 0 1px var(--line); font-weight: 500; line-height: 1.3; transition: box-shadow .3s, background .3s, transform .3s var(--ease-out); }
.opts label:hover { box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent) 55%, transparent); transform: translateY(-1px); }
.opts input { position: absolute; opacity: 0; pointer-events: none; }
.opts label::before { content: ""; position: absolute; left: 16px; top: 50%; width: 18px; height: 18px; margin-top: -9px; border-radius: 50%; box-shadow: inset 0 0 0 1.5px var(--line-2); transition: box-shadow .3s; }
.opts label:has(input:checked) { background: color-mix(in srgb, var(--accent) 12%, var(--field-bg)); box-shadow: inset 0 0 0 1.5px var(--accent); }
.opts label:has(input:checked)::before { box-shadow: inset 0 0 0 5.5px var(--accent); }
.opts label:has(input:focus-visible) { outline: 2px solid var(--accent); outline-offset: 2px; }
.quizbox__nav { display: flex; justify-content: space-between; gap: 12px; margin-top: auto; padding-top: 26px; }
.qresult { animation: stepIn .55s var(--ease-out); }
.qresult__title { font-size: clamp(1.35rem, 1.1rem + .9vw, 1.85rem); letter-spacing: -.025em; line-height: 1.15; margin-bottom: 14px; }
.qresult__text { color: var(--ink-2); margin-bottom: 14px; }
.qresult__services { margin-bottom: 10px; }
.qresult__services span { color: var(--ink-3); }
.qresult__services b { color: var(--accent); }
.qresult__industry { padding: 12px 14px; border-radius: 11px; background: color-mix(in srgb, var(--violet) 10%, transparent); color: var(--ink); font-size: .95rem; margin-bottom: 20px; }
.qresult__form { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin-bottom: 16px; }
.qresult__note { font-size: .82rem; color: var(--ink-3); margin-top: 12px; }
.qsuccess, .form-success { display: grid; justify-items: start; gap: 10px; padding: 12px 0; animation: stepIn .55s var(--ease-out); }
.qsuccess .ic, .form-success .ic { width: 44px; height: 44px; padding: 10px; border-radius: 50%; color: #fff; background: var(--pos); }
.qsuccess h3, .form-success h3 { font-size: 1.5rem; }
.qsuccess p, .form-success p { color: var(--ink-2); }

/* ---------- Формы ---------- */
.field { display: grid; gap: 6px; }
.field label { font-size: .82rem; font-weight: 600; color: var(--ink-2); }
.field label small { font-weight: 400; color: var(--ink-3); }
.field input, .field textarea {
  width: 100%; min-height: 50px; padding: 12px 15px;
  border: 0; border-radius: 12px;
  background: var(--field-bg);
  box-shadow: inset 0 0 0 1px var(--line-2);
  transition: box-shadow .25s, background .25s;
  font-size: 1rem;
}
.field textarea { resize: vertical; min-height: 90px; }
.field input::placeholder, .field textarea::placeholder { color: var(--ink-3); opacity: 1; }
.field input:hover, .field textarea:hover { box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent) 45%, transparent); }
.field input:focus, .field textarea:focus { outline: none; box-shadow: inset 0 0 0 1.5px var(--accent), 0 0 0 4px color-mix(in srgb, var(--accent) 18%, transparent); }
.field.is-error input, .field.is-error textarea { box-shadow: inset 0 0 0 1.5px var(--neg); }
.field__err { font-size: .8rem; color: var(--neg); font-weight: 500; }
.hp { position: absolute; left: -9999px; width: 1px; height: 1px; opacity: 0; }
.consent { margin-top: 12px; font-size: .78rem; color: var(--ink-3); }
.consent a { color: var(--ink-2); }

.contact__grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(28px, 5vw, 80px); align-items: start; }
.contact__intro { display: grid; gap: 24px; }
.contact__links { display: grid; gap: 4px; }
.contact__links a { display: inline-flex; align-items: center; gap: 12px; padding: 10px 0; font-size: 1.15rem; font-weight: 600; text-decoration: none; }
.contact__links .ic { width: 22px; height: 22px; color: var(--violet); }
.lead-form { padding: clamp(22px, 3vw, 36px); display: grid; gap: 14px; }
.lead-form__row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.js-form.is-sent > *:not(.form-success):not(.modal__close) { display: none !important; }
.js-form.is-sent .form-success { display: grid !important; }

/* ---------- Футер ---------- */
.footer { position: relative; z-index: 4; padding: 64px 0 calc(40px + var(--dock-pad, 0px)); box-shadow: inset 0 1px 0 var(--line); background: rgb(var(--glass-rgb) / calc(var(--glass-a) - .1)); -webkit-backdrop-filter: blur(var(--glass-blur)); backdrop-filter: blur(var(--glass-blur)); }
.footer__top { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 24px; padding-bottom: 32px; box-shadow: inset 0 -1px 0 var(--line); }
.footer__contacts { display: flex; flex-wrap: wrap; gap: 8px 32px; font-weight: 600; }
.footer__contacts a { text-decoration: none; }
.to-top { display: inline-flex; align-items: center; gap: 8px; font-weight: 600; text-decoration: none; padding: 10px 16px; border-radius: 12px; box-shadow: inset 0 0 0 1px var(--line-2); }
.to-top .ic { width: 18px; height: 18px; }
.footer__bottom { display: flex; flex-wrap: wrap; gap: 10px 32px; justify-content: space-between; padding-top: 24px; font-size: .84rem; color: var(--ink-3); }
.footer__bottom a { color: var(--ink-2); }
.footer__info { display: flex; flex-wrap: wrap; align-items: baseline; gap: 10px 32px; }
/* знак автора сайта — как на madebyilya.com: строчные Barlow Condensed 700, розовые ™ у верха строки и точка над i */
.madeby { margin-left: auto; white-space: nowrap; }
.madeby__link { display: inline-block; text-decoration: none; border-radius: 6px; transition: opacity .3s var(--ease-out); }
.madeby__link:hover { opacity: .72; }
.madeby__link:focus-visible { outline: 2px solid #FF42BC; outline-offset: 4px; }
.madeby__mark { font-family: "Barlow Condensed Mark", "Barlow Condensed", "Arial Narrow", sans-serif; font-size: 22px; font-weight: 700; line-height: 1.1; letter-spacing: 0; text-transform: lowercase; color: var(--ink); }
.madeby__mark sup { position: relative; top: .04em; margin-left: 4px; font-family: "Montserrat", sans-serif; font-size: .5em; font-weight: 700; line-height: 1; vertical-align: top; color: #FF42BC; }
/* точка над i: снизу «ı» без точки цветом текста, поверх — та же буква «i», от которой видна только точка
   (в Barlow Condensed точка выше .57em, ножка до .514em; при line-height 1.1 базовая линия — .95em от верха) */
.madeby__i { position: relative; display: inline-block; }
.madeby__i::after { content: "i"; position: absolute; left: 0; top: 0; color: #FF42BC; clip-path: inset(0 0 calc(1.1em - .95em + .543em) 0); }

/* ---------- Закреплённый блок контактов ---------- */
.dock { position: fixed; right: 20px; bottom: 20px; z-index: 45; display: flex; flex-direction: column; align-items: center; gap: 8px; }
.dock__items { display: flex; flex-direction: column; gap: 8px; padding: 8px; border-radius: 20px; background: rgb(var(--glass-rgb) / calc(var(--glass-a) + .12)); -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(1.6); backdrop-filter: blur(var(--glass-blur)) saturate(1.6); box-shadow: inset 0 1px 0 var(--glass-top), inset 0 0 0 1px var(--glass-side), var(--shadow); transition: opacity .4s var(--ease-out), transform .45s var(--ease-out); transform-origin: bottom center; }
.dock__btn { position: relative; display: grid; place-items: center; width: 44px; height: 44px; border: 0; border-radius: 14px; background: transparent; color: var(--ink); text-decoration: none; transition: background .3s, color .3s, transform .3s var(--ease-out); }
.dock__btn .ic { width: 22px; height: 22px; }
.dock__btn span { position: absolute; right: calc(100% + 14px); top: 50%; transform: translate(6px, -50%); padding: 6px 10px; border-radius: 9px; font-size: .8rem; font-weight: 600; white-space: nowrap; color: #fff; background: var(--deep); opacity: 0; pointer-events: none; transition: opacity .25s, transform .3s var(--ease-out); }
.dock__btn:hover { background: color-mix(in srgb, var(--accent) 12%, transparent); color: var(--accent); }
.dock__btn:hover span, .dock__btn:focus-visible span { opacity: 1; transform: translate(0, -50%); }
.dock__btn--main { background: var(--accent); color: #fff; box-shadow: 0 12px 24px -12px color-mix(in srgb, var(--accent) 90%, transparent); }
.dock__btn--main:hover { background: var(--violet); color: #fff; }
.dock__toggle { order: 2; display: grid; place-items: center; width: 30px; height: 22px; border: 0; border-radius: 8px; background: rgb(var(--glass-rgb) / calc(var(--glass-a) + .1)); box-shadow: inset 0 0 0 1px var(--line); color: var(--ink-3); }
.dock__toggle .ic { width: 16px; height: 16px; transition: transform .4s var(--ease-out); }
.dock.is-collapsed .dock__items { opacity: 0; transform: scale(.6) translateY(20px); pointer-events: none; }
.dock.is-collapsed .dock__toggle .ic { transform: rotate(180deg); }

/* ---------- Модалка ---------- */
.modal { border: 0; padding: 16px; background: transparent; color: var(--ink); max-width: min(100vw, 500px); width: 100%; max-height: 100dvh; overflow: visible; }
.modal::backdrop { background: rgb(5 7 20 / .45); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); }
.modal[open] { animation: modalIn .5s var(--ease-out); }
.modal[open]::backdrop { animation: fadeIn .4s ease; }
@keyframes modalIn { from { opacity: 0; transform: translateY(18px) scale(.97); } }
@keyframes fadeIn { from { opacity: 0; } }
.modal__box { display: grid; gap: 14px; padding: clamp(22px, 4vw, 34px); --glass-a: .88; max-height: calc(100dvh - 32px); overflow: auto; }
:root[data-theme="dark"] .modal__box { --glass-a: .9; }
.modal__close { position: absolute; top: 14px; right: 14px; width: 38px; height: 38px; }
.modal__title { font-size: 1.6rem; letter-spacing: -.025em; padding-right: 44px; line-height: 1.15; }
.modal__sub { color: var(--ink-2); margin-bottom: 4px; }

.toast { position: fixed; left: 50%; bottom: 24px; z-index: 70; transform: translate(-50%, 20px); padding: 12px 18px; border-radius: 12px; background: var(--deep); color: #fff; font-weight: 500; font-size: .92rem; opacity: 0; pointer-events: none; transition: opacity .35s, transform .45s var(--ease-out); box-shadow: 0 16px 30px -12px rgb(20 0 60 / .5); }
.toast.is-on { opacity: 1; transform: translate(-50%, 0); }

/* ---------- DEV-панель ---------- */
.devpanel { position: fixed; left: 16px; bottom: 16px; z-index: 60; font-size: .82rem; pointer-events: none; }
.devpanel__btn { pointer-events: auto; }
.dev-trigger { display: none; }
html[data-dev="off"] .dev-trigger { display: none !important; }
.devpanel__btn { display: inline-flex; align-items: center; gap: 6px; height: 36px; padding: 0 12px; border: 0; border-radius: 10px; font-weight: 700; font-size: .72rem; letter-spacing: .1em; color: #fff; background: var(--deep); box-shadow: 0 10px 20px -10px rgb(30 0 80 / .6); }
.devpanel__btn .ic { width: 16px; height: 16px; }
.devpanel__body { position: absolute; left: 0; bottom: 46px; width: 290px; padding: 16px; display: grid; gap: 12px; --glass-a: .9; opacity: 0; transform: translateY(8px); pointer-events: none; transition: opacity .3s, transform .35s var(--ease-out); }
.devpanel[data-open="true"] .devpanel__body { opacity: 1; transform: none; pointer-events: auto; }
.devpanel[data-open="true"] .devpanel__btn, .dev-trigger[aria-expanded="true"] { background: var(--violet); color: #fff; }
.devpanel__head { display: grid; gap: 2px; }
.devpanel__head small { color: var(--ink-3); }
.dv { display: grid; gap: 6px; }
.dv > span { display: flex; justify-content: space-between; font-weight: 500; color: var(--ink-2); }
.dv output { font-variant-numeric: tabular-nums; color: var(--ink); font-weight: 600; }
.dv input[type="range"] { width: 100%; accent-color: var(--violet); }
.dv--check { display: flex; align-items: center; gap: 8px; }
.dv--seg > span { font-weight: 500; color: var(--ink-2); }
.seg { display: grid; grid-template-columns: 1fr 1fr; gap: 4px; padding: 4px; border-radius: 11px; background: var(--field-bg); box-shadow: inset 0 0 0 1px var(--line); }
.seg label { position: relative; display: grid; place-items: center; height: 32px; border-radius: 8px; cursor: pointer; font-weight: 600; color: var(--ink-2); transition: background .25s, color .25s; }
.seg input { position: absolute; opacity: 0; pointer-events: none; }
.seg label:has(input:checked) { background: var(--violet); color: #fff; }
.seg label:has(input:focus-visible) { outline: 2px solid var(--accent); outline-offset: 2px; }
.dv--check input { accent-color: var(--violet); width: 16px; height: 16px; }
.devpanel__row { display: flex; gap: 8px; }
html[data-dev="off"] .devpanel { display: none; }
.devpanel [hidden] { display: none !important; }

/* ---------- Появление при скролле ---------- */
.js .reveal { opacity: 0; transform: translateY(26px); filter: blur(6px); transition: opacity 1s var(--ease-out), transform 1.1s var(--ease-out), filter 1s var(--ease-out); transition-delay: var(--d, 0s); }
.js .reveal.is-in { opacity: 1; transform: none; filter: none; }

/* ---------- Адаптив ---------- */
@media (max-width: 1180px) {
  .nav { gap: 18px; font-size: 13.5px; }
  .header-phone { display: none; }
  .outcomes, .why__list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 980px) {
  :root { --header-h: 64px; }
  .menu-btn { display: inline-grid; }
  .nav {
    position: fixed; top: var(--header-h); left: 12px; right: 12px;
    flex-direction: column; gap: 0; padding: 10px 18px; margin: 0;
    border-radius: var(--r-lg);
    background: rgb(var(--glass-rgb) / .92); -webkit-backdrop-filter: blur(24px); backdrop-filter: blur(24px);
    box-shadow: inset 0 1px 0 var(--glass-top), var(--shadow);
    font-size: 1.05rem;
    opacity: 0; transform: translateY(-8px); pointer-events: none; transition: opacity .3s, transform .35s var(--ease-out);
  }
  .nav a { padding: 14px 0; box-shadow: inset 0 -1px 0 var(--line); }
  .nav a:last-child { box-shadow: none; }
  .nav a::after { display: none; }
  .nav.is-open { opacity: 1; transform: none; pointer-events: auto; }
  .site-header__in { gap: 12px; }

  .hero { min-height: auto; }
  /* телефон/планшет: заголовок → сцена → текст → кнопки → цифры */
  .hero__in { grid-template-columns: minmax(0, 1fr); grid-template-rows: none; gap: 16px; }
  .hero__content { display: contents; }
  .hero__title { order: 1; pointer-events: auto; }
  .hero__slot { order: 2; grid-column: auto; grid-row: auto; min-height: 0; height: clamp(400px, 112vw, 540px); margin-block: -6px; }
  .brand-core-label span { font-size: 11px; letter-spacing: .34em; text-indent: .34em; }
  html:is([data-core="gem"], [data-core="icosa"]) .hero__slot { height: clamp(300px, 80vw, 440px); } /* кристалл: полоса сцены как в первой итерации */
  .hero__sub { order: 3; pointer-events: auto; }
  .hero__actions { order: 4; pointer-events: auto; margin-top: 0; }
  .stats { order: 5; pointer-events: auto; max-width: none; }
  .hero::before { background: linear-gradient(0deg, rgb(var(--bg-rgb) / .92) 0%, rgb(var(--bg-rgb) / .84) 38%, rgb(var(--bg-rgb) / 0) 50%); }

  .split, .model__grid, .service__body, .service__body--rev, .geo__grid, .about__top, .about__cols, .faq__in, .quiz__grid, .contact__grid { grid-template-columns: minmax(0, 1fr); }
  .split__head, .quiz__intro { position: static; }
  .timeline { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: 56px; }
  .timeline__track { display: none; }
  .tl__node { top: -32px; }
  .timeline { padding-top: 32px; }
  .case, .case--rev { grid-template-columns: minmax(0, 1fr); }
  .case--rev .case__photo { order: 0; }
  .case__photo { position: relative; top: 0; aspect-ratio: 16 / 10; }
  .tiers { grid-template-columns: minmax(0, 1fr); }
  .logos { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .logos li { min-height: 84px; padding: 14px; }
  .logos img { height: calc(var(--h, 30px) * .8); }
  .tier__scope { min-height: 0; }
  .quiz__slot { height: 180px; }
  .ring__label { transform: rotate(var(--a)) translateY(calc(-1 * min(42vw, 250px) - 6px)) rotate(calc(-1 * var(--a))) translate(-50%, -50%); }
}

@media (max-width: 980px) {
  :root { --fs-initial: clamp(4.2rem, 1rem + 17vw, 7rem); }
  .dock {
    left: 0; right: 0; bottom: 0; flex-direction: row; align-items: center; gap: 0;
    padding: 0 6px env(safe-area-inset-bottom) 0; border-radius: 18px 18px 0 0;
    background: rgb(var(--glass-rgb) / calc(var(--glass-a) + .16));
    -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(1.6); backdrop-filter: blur(var(--glass-blur)) saturate(1.6);
    box-shadow: inset 0 1px 0 var(--glass-top), 0 -12px 30px -18px rgb(28 36 110 / .35);
  }
  .dock__items { flex: 1; flex-direction: row; justify-content: space-around; gap: 0; padding: 6px 4px 6px 8px; border-radius: 0; background: none; box-shadow: none; -webkit-backdrop-filter: none; backdrop-filter: none; }
  .dock__btn { width: auto; flex: 1; height: 56px; gap: 2px; grid-template-rows: auto auto; align-content: center; }
  .dock__btn span { position: static; transform: none; opacity: 1; background: none; color: inherit; padding: 0; font-size: .72rem; font-weight: 600; }
  .dock__btn--main { margin: 4px; height: 48px; border-radius: 13px; }
  .dock__toggle { order: 2; width: 34px; height: 44px; border-radius: 10px; background: transparent; box-shadow: none; }
  .dock.is-collapsed { left: auto; right: 10px; bottom: calc(10px + env(safe-area-inset-bottom)); padding: 0; border-radius: 14px; box-shadow: inset 0 1px 0 var(--glass-top), var(--shadow-sm); }
  .dock.is-collapsed .dock__items { display: none; }
  .dock.is-collapsed .dock__toggle { width: 48px; height: 48px; color: var(--accent); }
  .dock.is-collapsed .dock__toggle .ic { transform: rotate(180deg); }
  body { --dock-pad: calc(68px + env(safe-area-inset-bottom)); }
  body.dock-collapsed { --dock-pad: 0px; }
  main { padding-bottom: 0; }
  /* DEV — иконкой в шапке, панель под шапкой */
  .dev-trigger { display: inline-grid; }
  .devpanel { top: calc(var(--header-h) + 8px); bottom: auto; left: 8px; right: 8px; }
  .devpanel__btn { display: none; }
  .devpanel__body { position: static; width: auto; max-width: 360px; margin-left: auto; }
  .toast { bottom: calc(24px + var(--dock-pad, 0px)); }

}

@media (max-width: 720px) {
  .header-cta { display: none; }
  .hero__actions .btn { width: 100%; }
  .stat { grid-template-columns: minmax(0, 1fr); gap: 6px; align-content: start; padding: 16px 14px 16px 0; }
  .stat:nth-child(even) { padding: 16px 0 16px 16px; }
  .stat__num { font-size: 2.1rem; }
  .stat > span { font-size: .8rem; overflow-wrap: anywhere; }
  .coverage { padding: 6px 14px 10px; }
  .coverage__table thead { display: none; }
  .coverage__table tr { display: grid; grid-template-columns: 1fr auto; gap: 4px 10px; padding: 14px 0; box-shadow: inset 0 -1px 0 var(--line); }
  .coverage__table th, .coverage__table td { padding: 0; box-shadow: none; }
  .coverage__table tbody th { width: auto; grid-column: 1; }
  .coverage__table td:nth-child(2) { grid-column: 1 / -1; grid-row: 2; font-size: .88rem; }
  .coverage__table .planes { grid-column: 2; grid-row: 1; }
  .planes i { width: 14px; height: 14px; margin-right: 3px; }
  .pillar a { grid-template-columns: 1fr; }
  .pillar__code { grid-row: auto; }
  .timeline { grid-template-columns: minmax(0, 1fr); }
  .service__head, .service__head--rev { grid-template-columns: minmax(0, 1fr); gap: 16px; }
  .service__head--rev .initial-wrap { order: 0; flex-direction: row; }
  /* буква слева, мини-карточка справа в отдельном слоте: на узком экране они делят строку и заголовок под ними не перекрывается */
  :root { --fs-initial: clamp(3.4rem, .5rem + 14vw, 7rem); }
  .initial-wrap { width: 100%; }
  .service__slot { flex: 1 1 0; width: auto; min-width: 0; max-width: 230px; height: 112px; margin-top: 0; }
  .mcard { width: 100%; min-width: 0; max-width: 220px; }
  .models__list { grid-template-columns: minmax(0, 1fr); }
  .dtable thead { display: none; }
  .dtable tr { display: grid; gap: 6px; padding: 16px 0; box-shadow: inset 0 -1px 0 var(--line); }
  .dtable tr:last-child { box-shadow: none; }
  .dtable th, .dtable td { padding: 0; box-shadow: none !important; width: auto !important; }
  .outcomes, .why__list { grid-template-columns: minmax(0, 1fr); }
  .case__cols, .totals, .qresult__form, .lead-form__row { grid-template-columns: minmax(0, 1fr); }
  .totals { gap: 14px; }
  .ratings__bar { display: none; }
  .ratings th, .ratings td { font-size: .88rem; padding-right: 8px; }
  .ratings thead th { white-space: normal; letter-spacing: .03em; }
  .cleanup__pins { gap: 3px; }
  .opts { grid-template-columns: minmax(0, 1fr); }
  .opts label { min-height: 52px; }
  .quizbox { min-height: 0; }
  .footer__bottom { flex-direction: column; }
  .footer__info { flex-direction: column; }
  .madeby { margin: 8px 0 0; }
}

@media (max-width: 420px) {
  .ratings th, .ratings td { font-size: .82rem; padding-right: 6px; }
  .stat { padding: 14px 14px; }
  .btn--lg { padding: 0 18px; font-size: .95rem; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
  .js .reveal { opacity: 1; transform: none; filter: none; }
}
