/* ============ v8: весь сайт в языке hero — частицы, чистый черный ============ */
/* поверх styles.css: hero, кнопки, CTA и попап кейса берутся оттуда без изменений */

body.v8 { background: #000; }
/* чистый черный: без тумана и зерна */
body.v8::after { content: none; }

.s8 { position: relative; z-index: 2; padding-top: clamp(140px, 15vw, 230px); }
.s8__head { max-width: 860px; margin-bottom: clamp(56px, 6vw, 96px); }
.s8__title {
  position: relative;
  font-size: clamp(36px, 4.4vw, 68px);
  font-weight: 300; letter-spacing: -0.042em; line-height: 1.02;
  text-wrap: balance; color: #fff;
}
.s8__sub {
  margin-top: 26px; max-width: 600px;
  font-size: clamp(16px, 1.2vw, 18px); line-height: 1.58; letter-spacing: -0.011em;
  color: rgba(255,255,255,.5); text-wrap: pretty;
}

/* ---- общий вход: текст ждет частицы, потом проявляется ---- */
.js-dust [data-dust] { opacity: 0; }
.js-dust [data-dust].is-shown { opacity: 1; transition: opacity .9s cubic-bezier(.2,.6,.2,1); }
.dust-cv { position: absolute; pointer-events: none; z-index: 3; }
.js-dust [data-rise] {
  opacity: 0; transform: translateY(18px); filter: blur(10px);
  transition: opacity 1.1s cubic-bezier(.16,1,.3,1), transform 1.1s cubic-bezier(.16,1,.3,1), filter 1.1s cubic-bezier(.16,1,.3,1);
}
.js-dust [data-rise].is-in { opacity: 1; transform: none; filter: blur(0); }

/* ============ 02 О НАС: один экран без кликов ============ */
.about8__q0 { font-size: clamp(16px, 1.2vw, 18px); letter-spacing: -0.012em; color: #fff; margin-bottom: 22px; }
.about8__lead {
  position: relative; max-width: 15em;
  font-size: clamp(36px, 4.6vw, 72px); font-weight: 250; letter-spacing: -0.045em; line-height: 1.04;
  text-wrap: balance; color: #fff;
}
.about8__qa { display: grid; grid-template-columns: repeat(3, 1fr); gap: clamp(28px, 3.4vw, 64px); margin-top: clamp(64px, 7vw, 110px); }
.about8__it { position: relative; padding-top: 26px; }
/* линия над ответом прочерчивается светом слева направо */
.about8__line { position: absolute; left: 0; right: 0; top: 0; height: 1px; background: rgba(255,255,255,.12); transform-origin: 0 50%; }
.about8__line::after { content: ''; position: absolute; right: 0; top: -1px; width: 40px; height: 3px; border-radius: 2px;
  background: linear-gradient(90deg, transparent, #fff); box-shadow: 0 0 12px rgba(255,255,255,.8); opacity: 0; }
.js-dust .about8__line { transform: scaleX(0); transition: transform 1.4s cubic-bezier(.65,0,.35,1); }
.js-dust .about8__it.is-in .about8__line { transform: none; }
.js-dust .about8__it.is-in .about8__line::after { animation: about-spark 1.4s cubic-bezier(.65,0,.35,1); }
@keyframes about-spark { 0% { opacity: 1; } 85% { opacity: 1; } 100% { opacity: 0; } }
.about8__q { font-size: 15px; letter-spacing: -0.01em; color: rgba(255,255,255,.55); margin-bottom: 14px; }
.about8__a { position: relative; font-size: clamp(20px, 1.75vw, 27px); font-weight: 300; letter-spacing: -0.03em; line-height: 1.24; color: rgba(255,255,255,.92); text-wrap: pretty; }

/* ============ 02 О НАС v9: один тезис, сборка «сверхновой» (about-stars.js, режим nova) ============ */
.about9 { position: relative; min-height: calc(var(--vh, 1vh) * 100); display: flex; align-items: center; overflow: hidden; }
.about9 .st-cv { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; z-index: 1; }
.about9__in { position: relative; z-index: 2; width: 100%; display: flex; flex-direction: column; align-items: center; text-align: center; }
.js-dust .about9 .el { opacity: 0; }
.about9__lead { max-width: 16em; font-size: clamp(32px, 3.7vw, 60px); font-weight: 300; letter-spacing: -0.045em; line-height: 1.1; text-wrap: balance; color: #fff; }
.about9__dim { color: rgba(255,255,255,.42); }
.about9__meta { display: flex; justify-content: center; gap: clamp(20px, 3vw, 48px); margin-top: clamp(36px, 4vw, 60px); }
.about9__meta p { font-size: clamp(14px, 1.05vw, 16px); letter-spacing: -0.01em; color: rgba(255,255,255,.55); }
.about9__meta p b { font-weight: 400; color: #fff; }
@media (max-width: 900px) {
  .about9__meta { flex-direction: column; gap: 8px; }
}

/* ============ 03 КЕЙСЫ: список, активный проект оживает ============ */
.pj {
  position: relative; display: grid; grid-template-columns: minmax(0, 1fr); align-items: center;
  min-height: max(calc(var(--vh, 1vh) * 100), 680px); padding-block: calc(var(--vh, 1vh) * 6);
}
.pj__copy { position: relative; z-index: 2; max-width: 380px; transition: opacity .7s ease; }
.pj:not(.is-on) .pj__copy { opacity: .28; }
.pj__kind { display: flex; gap: 12px; align-items: baseline; font-size: 13px; letter-spacing: -0.01em; color: rgba(255,255,255,.5); margin-bottom: 22px; }
.pj__kind .mono { color: #fff; font-variant-numeric: tabular-nums; }
.pj__name { font-size: clamp(44px, 4.4vw, 72px); font-weight: 300; letter-spacing: -0.05em; line-height: .98; margin-bottom: 16px; text-wrap: balance; }
.pj__line { font-size: clamp(17px, 1.3vw, 20px); font-weight: 300; letter-spacing: -0.02em; line-height: 1.35; color: rgba(255,255,255,.6); max-width: 300px; text-wrap: balance; }
.pj__btn { margin-top: 40px; }
/* сцена на всю высоту строки, от трети ширины до правого края экрана; слева и сверху-снизу растворяется в черном, справа уходит за край */
.pj__art { position: absolute; z-index: 1; top: 0; bottom: 0; left: 31%; right: calc(50% - 50vw);
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 30%), linear-gradient(180deg, transparent, #000 16%, #000 84%, transparent);
  -webkit-mask-composite: source-in;
  mask-image: linear-gradient(90deg, transparent, #000 30%), linear-gradient(180deg, transparent, #000 16%, #000 84%, transparent);
  mask-composite: intersect; }
.pj__art canvas { position: absolute; inset: 0; width: 100%; height: 100%; display: block; opacity: .32; transition: opacity .7s ease; }
.pj.is-on .pj__art canvas { opacity: 1; }

#cases { overflow-x: clip; }

/* остальные проекты: строка имен */
.more8 { margin-top: clamp(56px, 6vw, 90px); display: grid; grid-template-columns: minmax(200px, 4fr) 8fr; gap: 20px clamp(40px, 6vw, 120px); padding-top: 28px; border-top: 1px solid rgba(255,255,255,.08); }
.more8__title { font-size: 17px; letter-spacing: -0.015em; color: rgba(255,255,255,.9); }
.more8__list { display: flex; flex-wrap: wrap; gap: 10px; }
.more8__list a {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 9px 16px; border-radius: 999px;
  font-size: 14.5px; letter-spacing: -0.012em; color: rgba(255,255,255,.72);
  border: 1px solid rgba(255,255,255,.1); background: rgba(255,255,255,.02);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.05);
  transition: color .2s ease, border-color .2s ease, background-color .2s ease, transform .2s cubic-bezier(.2,.6,.2,1);
}
.more8__list a i { font-style: normal; font-size: 12px; opacity: .5; transition: transform .2s ease, opacity .2s ease; }
.more8__list a:hover { color: #fff; border-color: rgba(255,255,255,.24); background: rgba(255,255,255,.05); transform: translateY(-1px); }
.more8__list a:hover i { opacity: 1; transform: translate(2px, -2px); }

/* ============ 04 УСЛУГИ: строки ============ */
.sv { position: relative; }
.sv__dust { position: absolute; left: 0; top: 0; width: 100%; height: 100%; pointer-events: none; z-index: 1; }
.sv__row {
  position: relative; z-index: 2; display: grid; grid-template-columns: 4fr 5.5fr 2.5fr;
  gap: clamp(24px, 3vw, 60px); align-items: baseline;
  padding: clamp(26px, 2.4vw, 38px) 0;
}
/* статичная линия на случай без JS; с JS ее рисует пыль */
.sv__row::before { content: ''; position: absolute; left: 0; right: 0; top: 0; height: 1px; background: rgba(255,255,255,.1); }
.js-dust .sv__row::before { content: none; }
.sv__row:last-of-type::after { content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 1px; background: rgba(255,255,255,.1); }
.js-dust .sv__row:last-of-type::after { content: none; }
.sv__name { font-size: clamp(22px, 2vw, 32px); font-weight: 300; letter-spacing: -0.035em; line-height: 1.12; color: rgba(255,255,255,.92); transition: color .3s ease, transform .5s cubic-bezier(.2,.6,.2,1); }
.sv__desc { font-size: 15.5px; line-height: 1.6; letter-spacing: -0.01em; color: rgba(255,255,255,.45); max-width: 560px; transition: color .3s ease; text-wrap: pretty; }
.sv__price { justify-self: end; white-space: nowrap; font-size: 15px; color: rgba(255,255,255,.45); letter-spacing: -0.01em; }
.sv__price b { font-size: clamp(20px, 1.6vw, 26px); font-weight: 300; letter-spacing: -0.03em; color: #fff; font-variant-numeric: tabular-nums; margin-left: 4px; }
.sv__row:hover .sv__name { color: #fff; transform: translateX(6px); }
.sv__row:hover .sv__desc { color: rgba(255,255,255,.72); }
.js-dust .sv__row > * { opacity: 0; transform: translateY(14px); filter: blur(8px); transition: opacity .9s ease, transform 1s cubic-bezier(.16,1,.3,1), filter .9s ease, color .3s ease; }
.js-dust .sv__row.is-in > * { opacity: 1; transform: none; filter: blur(0); }
.js-dust .sv__row.is-in > :nth-child(2) { transition-delay: .08s; }
.js-dust .sv__row.is-in > :nth-child(3) { transition-delay: .16s; }
.js-dust .sv__row.is-in:hover .sv__name { transform: translateX(6px); transition-delay: 0s; }
.sv__note { margin-top: 30px; font-size: 14px; color: rgba(255,255,255,.4); letter-spacing: -0.008em; }

/* ============ 05 ЭТАПЫ: старый блок, свет — частицы ============ */
.pf__dust { position: absolute; pointer-events: none; z-index: 4; }
/* светящиеся слои svg прячем — их место занимает пыль; тусклая линия остается каркасом */
.js-dust .pf__flow .far, .js-dust .pf__flow .mid, .js-dust .pf__flow .halo, .js-dust .pf__flow .head { opacity: 0; }

/* отступ перед оффером — блок оффера не трогаем */
body.v8 .cta { margin-top: clamp(150px, 16vw, 240px); }

/* ============ МОБИЛА ============ */
@media (max-width: 900px) {
  .s8 { padding-top: 130px; }
  .s8__head { margin-bottom: 44px; }
  .about8__qa { grid-template-columns: 1fr; gap: 34px; margin-top: 52px; }
  .about8__lead { font-size: 36px; }
  .about8__a { font-size: 21px; }

  .pj { grid-template-columns: 1fr; gap: 22px; min-height: 0; padding-block: 44px; }
  .pj__art { position: relative; inset: auto; order: -1; aspect-ratio: 4 / 5; margin-inline: -22px; width: calc(100% + 44px);
    -webkit-mask-image: linear-gradient(180deg, transparent, #000 14%, #000 80%, transparent); mask-image: linear-gradient(180deg, transparent, #000 14%, #000 80%, transparent); }
  .pj__name { font-size: 40px; }
  .pj__line { font-size: 18px; }
  .pj__btn { margin-top: 24px; }
  .pj:not(.is-on) .pj__copy { opacity: .45; }

  .more8 { grid-template-columns: 1fr; }
  .more8__list a { font-size: 14px; padding: 8px 14px; }

  .sv__row { grid-template-columns: 1fr auto; gap: 10px 20px; padding: 26px 0; }
  .sv__name { grid-column: 1; font-size: 23px; }
  .sv__price { grid-column: 2; grid-row: 1; }
  .sv__desc { grid-column: 1 / -1; font-size: 14.5px; }

}

@media (prefers-reduced-motion: reduce) {
  .js-dust [data-dust], .js-dust [data-rise], .js-dust .sv__row > * { opacity: 1 !important; transform: none !important; filter: none !important; }
}

/* ===== последний блок: заявка + огромное слово из частиц (cta-lab.js, data-cl="word") ===== */
.cta9 { position: relative; overflow: hidden; display: flex; flex-direction: column; margin-top: clamp(150px, 16vw, 240px); }
.cta9 .cl__cv { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; z-index: 0; }
.cta9 > :not(.cl__cv) { position: relative; z-index: 2; }
.cta9 > .container { width: 100%; }
.cta9__in { display: grid; grid-template-columns: 1.4fr 1fr; gap: clamp(32px, 6vw, 120px); align-items: end; }
.cta9 .cl__title { font-size: clamp(36px, 4.6vw, 76px); font-weight: 300; letter-spacing: -0.048em; line-height: 1.02; text-wrap: balance; color: #fff; }
.cta9 .cl__title .dim { color: rgba(255,255,255,.42); }
.cta9__side { display: grid; gap: 28px; justify-items: start; }
.cta9 .cl__sub { font-size: clamp(16px, 1.25vw, 19px); font-weight: 300; letter-spacing: -0.018em; line-height: 1.45; color: rgba(255,255,255,.62); text-wrap: pretty; }
.cta9 .c3__word { margin-top: clamp(40px, 6vw, 96px); }
.cta9__ft { display: flex; align-items: center; justify-content: space-between; gap: 20px; padding-block: 26px; }
.cta9__ft .ft__meta { color: rgba(255,255,255,.36); }
.cta9__ft .ft__links { display: flex; gap: 22px; }
.cta9__ft .ft__links a { color: rgba(255,255,255,.55); transition: color .16s ease; }
.cta9__ft .ft__links a:hover { color: #fff; }
@media (max-width: 900px) { .cta9__in { grid-template-columns: 1fr; } .cta9__ft { flex-wrap: wrap; } }

/* ===== кнопка v8: темная капсула, по кромке бежит искра с хвостом частиц (spark.js) ===== */
.btn8 { position: relative; isolation: isolate; display: inline-flex; align-items: center; gap: 16px; height: 54px; padding: 0 7px 0 26px; border-radius: 999px;
  font-size: 16px; font-weight: 400; letter-spacing: -0.012em; color: #fff; background: rgba(255,255,255,.035);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.08); transition: transform .2s ease, background-color .2s ease; }
.btn8::before { content: ""; position: absolute; inset: 0; border-radius: inherit; border: 1px solid rgba(255,255,255,.16); pointer-events: none; }
.btn8 > span, .btn8 > i { position: relative; z-index: 1; }
.spark-cv { position: absolute; left: -26px; top: -26px; pointer-events: none; z-index: 0; }
.btn8 i { display: grid; place-items: center; width: 40px; height: 40px; border-radius: 50%; background: #f2f2f2; color: #000;
  font-style: normal; font-size: 14px; transition: transform .2s ease; }
.btn8:hover { background-color: rgba(255,255,255,.07); transform: translateY(-1px); }
.btn8:hover i { transform: translate(2px, -2px); }
.btn8:active { transform: translateY(0) scale(.99); }
.btn8--lg { height: 60px; padding-left: 30px; font-size: 17px; }
.btn8--lg i { width: 46px; height: 46px; }

/* ===== кейсы: больше рассказа и ближе к заголовку ===== */
.cases8 .s8__head { margin-bottom: 0; }
.pjs .pj:first-child { min-height: max(calc(var(--vh, 1vh) * 86), 640px); padding-top: clamp(40px, calc(var(--vh, 1vh) * 5), 72px); }
.pj__copy { max-width: 430px; }
.pj__line { max-width: 360px; color: rgba(255,255,255,.82); }
.pj__desc { margin-top: 18px; max-width: 400px; font-size: clamp(15px, 1.05vw, 16.5px); font-weight: 300; line-height: 1.55; letter-spacing: -0.012em; color: rgba(255,255,255,.52); text-wrap: pretty; }
.pj__facts { display: flex; flex-wrap: wrap; gap: 8px 22px; margin-top: 24px; font-variant-numeric: tabular-nums; }
.pj__facts span { color: rgba(255,255,255,.7); }
.pj__facts span b { color: #fff; font-weight: 500; }
.pj__btn.btn8 { margin-top: 34px; }

/* ===== 02 «О нас»: текст печатается частицами (about-type.js), под ним полоса inbetween (cta-lab.js word) ===== */
.at { position: relative; display: flex; align-items: center; overflow: hidden; padding-block: clamp(160px, calc(var(--vh, 1vh) * 24), 260px) clamp(28px, 3.5vw, 56px); }
.at > .container { width: 100%; display: flex; flex-direction: column; align-items: center; text-align: center; position: relative; z-index: 2; }
.at__cv { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; z-index: 1; }
.at__caret { position: absolute; left: 0; top: 0; width: 1.5px; background: #fff; box-shadow: 0 0 8px rgba(255,255,255,.7); opacity: 0; z-index: 3; pointer-events: none; }
.at__lead { max-width: 15em; font-size: clamp(34px, 3.8vw, 62px); font-weight: 250; letter-spacing: -0.04em; line-height: 1.12; text-wrap: balance; color: #fff; }
.at__lead .dim { color: rgba(255,255,255,.38); }
.at__w { display: inline-block; white-space: nowrap; }
.at__c { display: inline-block; }
.band { position: relative; overflow: hidden; display: flex; flex-direction: column; padding-block: 0 clamp(40px, 5vw, 80px); }
.band .cl__cv { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; z-index: 0; }
.band .c3__word { position: relative; }

/* ===== финал: рукопожатие (finale/hands.js) ===== */
.fn { position: relative; min-height: calc(var(--vh, 1vh) * 100); overflow: hidden; display: flex; flex-direction: column; background: #000; color: #fff; margin-top: clamp(120px, 12vw, 200px); }
.fn__cv, .fn__fx { position: absolute; left: 0; top: 0; pointer-events: none; }
.fn__cv { z-index: 0; } .fn__fx { z-index: 3; }
.fn > .container { width: 100%; position: relative; z-index: 2; }
.fn__in { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: flex-start; text-align: center; padding-block: calc(calc(var(--vh, 1vh) * 100) * .585) 24px; }
.fn h2 { max-width: 15em; font-size: clamp(34px, 4.3vw, 68px); font-weight: 250; letter-spacing: -0.04em; line-height: 1.04; text-wrap: balance; }
.fn .sub { max-width: 31em; margin-top: clamp(14px, calc(var(--vh, 1vh) * 1.6), 22px); font-size: clamp(15.5px, 1.2vw, 18px); font-weight: 400; letter-spacing: -0.014em; line-height: 1.55; color: rgba(255,255,255,.64); text-wrap: balance; }
.fn .act { margin-top: clamp(24px, calc(var(--vh, 1vh) * 3.4), 40px); }
.fn__ft { display: flex; justify-content: space-between; gap: 20px; padding-block: 22px; font-size: 12.5px; color: rgba(255,255,255,.36); }
.fn__ft div { display: flex; gap: 22px; } .fn__ft a { color: rgba(255,255,255,.55); transition: color .16s ease; } .fn__ft a:hover { color: #fff; }
.fn [data-r] { opacity: 0; transition: opacity .7s ease, text-shadow 1.1s ease; }
.fn [data-r].is-on { opacity: 1; }
.fn [data-r].is-lit { text-shadow: 0 0 34px rgba(255,255,255,.45), 0 0 90px rgba(255,255,255,.18); transition: opacity .7s ease, text-shadow .25s ease; }
@media (max-width: 719px) { .fn__in { padding-block: calc(calc(var(--vh, 1vh) * 100) * .5) 20px; } .fn__ft { flex-wrap: wrap; } }
@media (prefers-reduced-motion: reduce) { .fn [data-r] { opacity: 1; transition: none; } }

/* =====================================================================
   МОБИЛКА И ПЛАНШЕТ (2026-10, docs/mobile-qa.md)
   Одна колонка, левая линия 20px (плюс safe-area), сцены во всю ширину,
   тап-зоны от 44px, горизонтального скролла нет.
   ===================================================================== */
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
/* clip, а не hidden: hidden на body не держит iOS Safari, и clip не создает лишний скролл-контейнер */
html, body.v8 { overflow-x: clip; }
body.v8 { -webkit-tap-highlight-color: transparent; }

/* планшет: левая линия контента = линия текста hero (12px поле + 30px отступ рамки) */
@media (min-width: 721px) and (max-width: 1000px) {
  body.v8 .container { padding-inline: max(42px, env(safe-area-inset-left)) max(42px, env(safe-area-inset-right)); }
  .at__lead { font-size: clamp(42px, 5.8vw, 54px); }
  .s8__title { font-size: clamp(44px, 6.2vw, 58px); }
  .s8__sub { font-size: 18px; max-width: 34em; }
  .fn h2 { font-size: clamp(40px, 5.6vw, 54px); }
  .fn .sub { font-size: 18px; }
}
@media (min-width: 721px) and (max-width: 900px) {
  .pj { padding-block: 24px 64px; }
  .pj__art { aspect-ratio: 1 / 1; max-height: calc(var(--svh, 1svh) * 78); width: auto; margin-inline: calc(-1 * max(42px, env(safe-area-inset-left))) calc(-1 * max(42px, env(safe-area-inset-right))); }
  .pj__copy { max-width: 560px; margin-top: -12px; }
  .pj__kind { font-size: 14px; }
  .pj__name { font-size: 56px; }
  .pj__line { font-size: 21px; max-width: 24em; }
  .pj__desc { font-size: 17px; line-height: 1.55; max-width: 34em; color: rgba(255,255,255,.58); }
  .pj__facts.mono { font-size: 13px; }
  .more8 { grid-template-columns: 1fr; }
  .sv__desc { font-size: 15.5px; }
}
/* этапы на телефоне и планшете: вертикальный рельс (main.js), текст крупнее и контрастнее */
@media (max-width: 860px) {
  .pf__c { padding: 20px 22px 22px; }
  .pf__i { font-size: 12px; color: rgba(255,255,255,.42); margin-bottom: 14px; }
  .pf__c h3 { font-size: 19px; letter-spacing: -0.022em; margin-bottom: 8px; }
  .pf__c p { font-size: 15px; line-height: 1.55; font-weight: 400; color: rgba(255,255,255,.58); }
  .pf__t { font-size: 12.5px; margin-top: 14px; }
}
@media (max-width: 720px) {
  body.v8 .container { padding-inline: max(20px, env(safe-area-inset-left)) max(20px, env(safe-area-inset-right)); }

  /* ---- hero: кадр во всю ширину, текст на общей левой линии 20px ---- */
  body.v8 .hero { padding: 0; }
  body.v8 .hero__frame {
    border-radius: 0;
    padding: calc(14px + env(safe-area-inset-top)) max(20px, env(safe-area-inset-right)) calc(28px + env(safe-area-inset-bottom)) max(20px, env(safe-area-inset-left));
  }
  body.v8 .hnav__logo { min-height: 44px; }
  body.v8 .hnav__cta { padding: 13px 18px; font-size: 14px; }
  body.v8 .hero__copy { padding-top: clamp(48px, calc(var(--svh, 1svh) * 9), 84px); }
  body.v8 .hero__title { font-size: clamp(28px, 8.4vw, 40px); line-height: 1.07; margin-bottom: 20px; }
  body.v8 .hero__sub { font-size: 17px; line-height: 1.5; margin-bottom: 30px; color: rgba(255,255,255,.7); }
  body.v8 .hero__actions { flex-direction: column; align-items: stretch; gap: 12px; max-width: 420px; }
  body.v8 .hero__actions .btn8 { justify-content: space-between; }
  body.v8 .hero__actions .btn { height: 54px; justify-content: center; font-size: 16px; font-weight: 400; padding: 0 26px; }

  /* короткий экран (iPhone SE, 375×667): текст компактнее, чтобы сцене осталась нижняя половина кадра */
  @media (max-height: 740px) {
    body.v8 .hero__copy { padding-top: 26px; }
    body.v8 .hero__title { margin-bottom: 14px; }
    body.v8 .hero__sub { font-size: 16px; margin-bottom: 22px; }
    body.v8 .hero__actions { gap: 10px; }
    body.v8 .hero__actions .btn8, body.v8 .hero__actions .btn { height: 50px; }
    body.v8 .hero__actions .btn8 i { width: 38px; height: 38px; }
  }

  /* ---- «О нас» ---- */
  .at { padding-block: clamp(112px, calc(var(--svh, 1svh) * 16), 150px) 20px; }
  .at__lead { font-size: clamp(31px, 8.6vw, 38px); line-height: 1.14; }
  .band { padding-bottom: 8px; }

  /* ---- секции ---- */
  .s8 { padding-top: 112px; }
  .s8__head { margin-bottom: 40px; }
  .s8__title { font-size: clamp(34px, 9.4vw, 42px); line-height: 1.04; }
  .s8__title br { display: none; }
  .s8__sub { margin-top: 18px; font-size: 16.5px; line-height: 1.55; color: rgba(255,255,255,.58); }

  /* ---- кейсы: сцена во всю ширину экрана, под ней текст ---- */
  .pj { gap: 0; padding-block: 20px 52px; }
  .pjs .pj:first-child { min-height: 0; padding-top: 4px; }
  .pj__art { aspect-ratio: 4 / 5; margin-inline: calc(-1 * max(20px, env(safe-area-inset-left))) calc(-1 * max(20px, env(safe-area-inset-right)));
    width: auto; max-height: calc(var(--svh, 1svh) * 82); }
  .pj__copy { max-width: none; margin-top: -8px; }
  .pj__kind { margin-bottom: 14px; font-size: 14px; }
  .pj__kind .mono { font-size: 13px; }
  .pj__name { font-size: clamp(38px, 10.4vw, 46px); margin-bottom: 12px; }
  .pj__line { font-size: 19px; line-height: 1.32; max-width: 22em; }
  .pj__desc { margin-top: 14px; font-size: 16px; font-weight: 400; line-height: 1.55; color: rgba(255,255,255,.58); max-width: 34em; }
  .pj__facts { margin-top: 20px; gap: 8px 18px; }
  .pj__facts.mono { font-size: 13px; }
  .pj__btn.btn8 { margin-top: 26px; }

  .more8 { margin-top: 24px; gap: 16px; }
  .more8__list { gap: 8px; }
  .more8__list a { min-height: 44px; padding: 0 16px; font-size: 15px; }

  /* ---- услуги ---- */
  .sv__row { gap: 8px 16px; padding: 24px 0; }
  .sv__name { font-size: 22px; }
  .sv__desc { font-size: 15px; line-height: 1.55; color: rgba(255,255,255,.55); }
  .sv__note { font-size: 14px; line-height: 1.5; }

  /* ---- финал и подвал ---- */
  .fn { margin-top: 96px; min-height: calc(var(--svh, 1svh) * 100); }
  .fn h2 { font-size: clamp(32px, 9vw, 40px); }
  .fn .sub { font-size: 16.5px; }
  .fn .act { width: 100%; max-width: 420px; }
  .fn .act .btn8 { width: 100%; justify-content: space-between; padding-left: 24px; font-size: 16px; }
  .btn8 > span { white-space: nowrap; }
  .fn__in { padding-block: calc(calc(var(--svh, 1svh) * 100) * .53) 8px; }
  .fn__ft { flex-direction: column; align-items: flex-start; gap: 2px; padding-top: 28px; padding-bottom: calc(14px + env(safe-area-inset-bottom)); font-size: 13px; }
  .fn__ft div { gap: 24px; }
  .fn__ft a { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; min-width: 44px; }
}

/* портретный планшет (768×1024, iPad): hero как на телефоне — текст сверху, сцена под ним (hero-v7-c7.js, MOBILE) */
@media (min-width: 721px) and (max-width: 1099px) and (max-aspect-ratio: 85/100) {
  body.v8 .hero__copy { margin: 0; max-width: 620px; padding-top: clamp(72px, calc(var(--vh, 1vh) * 9), 120px); }
  body.v8 .hero__title { font-size: clamp(40px, 5.6vw, 56px); }
  body.v8 .hero__sub { font-size: 18px; }
}

/* попап кейса на телефоне: нижняя кромка листа не уходит под home indicator */
@media (max-width: 720px) {
  .cmodal__body { padding-bottom: calc(50px + env(safe-area-inset-bottom)); }
  .cmodal__close { width: 44px; height: 44px; background: rgba(16,16,18,.72); -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px); }
}

/* фокус с клавиатуры: тонкое белое кольцо вместо системного (оранжевого/синего) */
body.v8 :focus { outline: none; }
body.v8 :focus-visible { outline: 1.5px solid rgba(255,255,255,.7); outline-offset: 3px; }

/* ===== правки 13.10: рамка первого экрана, кнопка в шапке, минималистичные кейсы ===== */
/* тонкая граница кадра hero: агент выходит из нее снизу */
.hero__frame::after { content: ''; position: absolute; inset: 0; border-radius: inherit; border: 1px solid rgba(255,255,255,.14); pointer-events: none; z-index: 4; }
/* кнопка в шапке — та же, что на первом экране, только меньше */
body.v8 .btn8.btn8--sm { height: 42px; gap: 12px; padding: 0 5px 0 18px; font-size: 13.5px; font-weight: 400; background: rgba(255,255,255,.035); color: #fff; box-shadow: inset 0 1px 0 rgba(255,255,255,.08); }
body.v8 .btn8.btn8--sm i { width: 32px; height: 32px; font-size: 13px; }
/* кейс: название и один крупный читаемый текст, дальше кнопка */
.pj__name { margin-bottom: 20px; }
.pj__copy .pj__desc { margin-top: 0; max-width: 430px; font-size: clamp(18px, 1.35vw, 21px); font-weight: 300; line-height: 1.5; letter-spacing: -0.016em; color: rgba(255,255,255,.8); text-wrap: pretty; }
@media (max-width: 720px) { .pj__copy .pj__desc { font-size: 18px; font-weight: 400; color: rgba(255,255,255,.78); } }
/* кейсы: тоньше, белым, чуть меньше */
.pj__copy .pj__desc { font-size: clamp(16.5px, 1.2vw, 19px); font-weight: 200; color: #fff; letter-spacing: -0.012em; }
.pj__name { font-weight: 200; }
@media (max-width: 720px) { .pj__copy .pj__desc { font-size: 17px; font-weight: 300; color: #fff; } }

/* ===== мобильный первый экран: вариант 1 «Агент сверху» (выбран владельцем 13.10) ===== */
/* мобильный первый экран, вариант 1 «Агент сверху». Десктоп без изменений, только ≤720px. Сцена: hero-m1.js */
@media (max-width: 720px) {
  /* общее для вариантов: на телефоне одна кнопка (в наве не дублируем), текст прижат к низу кадра */
  body.v8 .hnav__cta { display: none; }
  body.v8 .hero__copy { margin: auto 0 0; padding: 0; max-width: none; }
  body.v8 .hero__title, body.v8 .hero__sub { text-shadow: none; }
  body.v8 .hero__actions { max-width: none; }
  body.v8 .hero__actions .btn8 { width: 100%; justify-content: space-between; }

  /* В1 «Агент сверху»: агент крупно в верхней части, внизу заголовок нормального кегля и одна кнопка */
  body.v8 .hero__title { font-size: clamp(25px, 7vw, 30px); line-height: 1.12; letter-spacing: -0.03em; margin-bottom: 26px; }
  body.v8 .hero__sub { display: none; }
  @media (max-height: 740px) { body.v8 .hero__title { margin-bottom: 20px; } }
}

/* ===== 13.10: плавный скролл (smooth.js / Lenis) ===== */
html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }
.lenis.lenis-smooth [data-lenis-prevent] { overscroll-behavior: contain; }
.lenis.lenis-stopped { overflow: hidden; }

/* ===== 13.10: иерархия блока кейсов — заголовок дальше от первого кейса, кнопка дальше от текста; AEON правее ===== */
@media (min-width: 721px) {
  .pjs .pj:first-child { padding-top: clamp(96px, calc(var(--vh, 1vh) * 13), 150px); }
  body.v8 .pj__btn.btn8 { margin-top: 48px; }
  .pj[data-scene="aeon"] .pj__art { left: 40%; }
}
@media (max-width: 720px) { body.v8 .pj__btn.btn8 { margin-top: 32px; } }

/* ===== 13.10: «Что мы делаем» — подзаголовок тоньше и светлее; описание строки выровнено по верху названия,
   тоньше и полностью светлое ===== */
#services .s8__sub { font-weight: 200; color: #fff; font-size: clamp(17px, 1.3vw, 20px); letter-spacing: -0.012em; max-width: 640px; }
.sv__row { align-items: start; }
.sv__desc { font-size: clamp(15.5px, 1.1vw, 17px); font-weight: 200; line-height: 1.55; color: #fff; letter-spacing: -0.008em;
  padding-top: calc((clamp(22px, 2vw, 32px) * 1.12 - clamp(15.5px, 1.1vw, 17px) * 1.55) / 2); }
.sv__price { padding-top: calc((clamp(22px, 2vw, 32px) * 1.12 - clamp(20px, 1.6vw, 26px) * 1.2) / 2); line-height: 1.2; }
.sv__price b { line-height: 1.2; }
.sv__row:hover .sv__desc { color: #fff; }
@media (max-width: 720px) {
  #services .s8__sub { font-size: 17px; }
  .sv__desc { font-size: 15.5px; font-weight: 300; color: #fff; padding-top: 0; }
  .sv__price { padding-top: 0; }
}

/* ===== 13.10, мобильные правки владельца ===== */
@media (max-width: 720px) {
  /* 1. одна кнопка: в шапке на телефоне не показываем (btn.css перебивает display, поэтому двойной класс) */
  body.v8 a.btn8.btn8.hnav__cta { display: none; }
  /* 2. рамка первого экрана на телефоне без обводки: кадр во всю ширину */
  body.v8 .hero__frame::after { content: none; }
  /* 3. «О нас»: текст по левому краю, слово inbetween на телефоне убираем */
  .at > .container { align-items: flex-start; text-align: left; }
  .at__lead { text-wrap: pretty; }
  .band[data-cl="word"] { display: none; }
  /* 5. «Что мы делаем»: описание тише названия, больше воздуха между ними */
  .sv__row { gap: 14px 16px; }
  .sv__desc { color: rgba(255,255,255,.58); font-weight: 300; }
  #services .s8__sub { color: rgba(255,255,255,.62); }
  /* 6. этапы: свет въезжает сверху и уезжает вниз за мягкий край, без видимого перезапуска */
  .pf__flow, .pf__dust { -webkit-mask-image: linear-gradient(to bottom, transparent 0, #000 56px, #000 calc(100% - 56px), transparent 100%);
    mask-image: linear-gradient(to bottom, transparent 0, #000 56px, #000 calc(100% - 56px), transparent 100%); }
}
/* этапы на телефоне: блок вытянут за верх и низ на 110px (без сдвига верстки), рельс уходит туда и гаснет в маске */
@media (max-width: 860px) {
  .pf[data-flow] { padding-block: 110px; margin-block: -110px; }
}
@media (max-width: 720px) {
  .pf__flow, .pf__dust { -webkit-mask-image: none; mask-image: none; }
  .pf[data-flow] { -webkit-mask-image: linear-gradient(to bottom, transparent 0, #000 100px, #000 calc(100% - 100px), transparent 100%);
    mask-image: linear-gradient(to bottom, transparent 0, #000 100px, #000 calc(100% - 100px), transparent 100%); }
}

/* Owner review: clearer headings, plain white hero lettering. */
body.v8 .hero__title { background: none; color: #fff; }
.pf__c h3 { font-size: clamp(22px, 1.8vw, 28px); line-height: 1.18; }
@media (max-width: 860px) {
  .pf__c h3 { font-size: 25px; }
}
