/* ============================================================
   4u — digital agency
   Design system (built from TZ §1)
   ============================================================ */

@import url('https://fonts.googleapis.com/css2?family=Onest:wght@300;400;500;600;700&display=swap');

:root {
  /* ---- Colors (TZ 1.1) ---- */
  --white:        #FFFFFF;
  --gray-bg:      #F2F2F2;
  --black:        #000000;
  --dark:         #141413;
  --text:         #000000;
  --on-dark:      #FFFFFF;
  --muted:        #767676;
  --accent-1:     #E66400;   /* orange */
  --accent-2:     #F95D51;   /* red-orange */
  --accent-icon:  #FF8562;
  --pill-bg:      #F8F8F8;
  --line:         #C5C5C5;
  --card-border:  rgba(0,0,0,0.08);
  --line-on-dark: rgba(255,255,255,0.14);

  /* ---- Gradients ---- */
  --grad-btn: linear-gradient(125deg, #E66400 0%, #F95D51 100%);
  --grad-text: linear-gradient(91deg, #E66400 11%, rgba(255,157,0,.85) 51%, rgba(255,157,0,0) 94%);

  /* ---- Type ---- */
  --font: 'Onest', 'Montserrat', Arial, sans-serif;

  /* ---- Layout ---- */
  --container: 1080px;
  --radius-card: 40px;
  --radius-inner: 32px;
  --radius-case: 20px;
  --pad-section: clamp(64px, 9vw, 130px);

  --ease: cubic-bezier(.22,.61,.36,1);
}

/* ---- Reset ---- */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  font-family: var(--font);
  font-weight: 300;
  color: var(--text);
  background: var(--white);
  font-size: 16px;
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
img, video, svg { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
button { font-family: inherit; cursor: pointer; border: none; background: none; }
ul { margin: 0; padding: 0; list-style: none; }
h1,h2,h3,h4,p { margin: 0; }
input, textarea, select { font-family: inherit; }

/* ============================================================
   Layout helpers
   ============================================================ */
.container {
  width: 100%;
  max-width: var(--container);
  margin: 0 auto;
  padding-inline: 24px;
}
.section { padding-block: var(--pad-section); position: relative; }
.section--gray  { background: var(--gray-bg); }
.section--dark  { background: var(--black); color: var(--on-dark); }
.center { text-align: center; }

/* ============================================================
   Typography (TZ 1.2) — base sizes scaled gently with viewport
   ============================================================ */
/* Единая шкала заголовков: один вес (500), без разнобоя 300/700; размеры не раздуваем */
.display   { font-size: clamp(34px, 4.6vw, 52px); font-weight: 500; line-height: 1.1; letter-spacing: -.02em; }
.h1        { font-size: clamp(26px, 3.4vw, 40px); font-weight: 500; line-height: 1.16; letter-spacing: -.01em; }
.h2        { font-size: clamp(22px, 2.4vw, 30px); font-weight: 500; line-height: 1.25; letter-spacing: -.01em; }
.h3        { font-size: clamp(20px, 2vw, 24px);   font-weight: 300; line-height: 1.25; }
.lead      { font-size: clamp(17px, 1.5vw, 20px); font-weight: 300; color: var(--muted); line-height: 1.5; }
.body      { font-size: 16px; font-weight: 300; }
.eyebrow   { font-size: clamp(14px, 1.3vw, 17px); font-weight: 300; letter-spacing: -.01em; text-transform: none; color: #7c7676; }
.caption   { font-size: 12px; font-weight: 300; color: var(--muted); }
.muted     { color: var(--muted); }
.balance   { text-wrap: balance; }
.pretty    { text-wrap: pretty; }

/* Animated accent-gradient text (TZ 1.5) */
.grad {
  background: var(--grad-text);
  background-size: 220% 100%;
  background-position: 100% 0;
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  transition: background-position 1.1s var(--ease);
}
.reveal.is-in .grad,
.grad.is-in { background-position: 0 0; }

/* ============================================================
   Buttons (TZ 1.3)
   ============================================================ */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 10px;
  font-weight: 600; font-size: 14px; line-height: 1;
  padding: 16px 28px; border-radius: 30px;
  transition: transform .2s var(--ease), background .2s var(--ease),
              color .2s var(--ease), box-shadow .2s var(--ease), opacity .2s var(--ease);
  white-space: nowrap; text-align: center;
}
.btn:active { transform: translateY(1px); }

/* primary glossy gradient (orange→red) with radial highlight overlay */
.btn--grad {
  position: relative; color: #fff; overflow: hidden;
  background: var(--grad-btn);
  box-shadow: 0 10px 26px -12px rgba(230,100,0,.7);
}
.btn--grad::after {
  content: ""; position: absolute; inset: 0;
  background: radial-gradient(120% 80% at 50% -20%, rgba(255,255,255,.55) 0%, rgba(255,255,255,0) 55%);
  pointer-events: none;
}
.btn--grad:hover { box-shadow: 0 16px 34px -12px rgba(230,100,0,.85); transform: translateY(-1px); }

/* solid orange (Получить КП) */
.btn--orange { background: var(--accent-1); color: #fff; }
.btn--orange:hover { background: #ff7314; transform: translateY(-1px); }

/* black (submit / tags) */
.btn--black { background: var(--black); color: #fff; }
.btn--black:hover { background: #2a2a28; }

/* ghost on dark / hero pill */
.btn--pill-light {
  background: rgba(255,255,255,.08); color: #fff;
  border: 1px solid rgba(255,255,255,.5); border-radius: 100px;
  backdrop-filter: blur(6px);
}
.btn--pill-light:hover { background: rgba(255,255,255,.18); }

/* outline on light */
.btn--outline { border: 1px solid var(--line); color: var(--text); background: transparent; }
.btn--outline:hover { border-color: var(--text); }

.btn--lg { padding: 19px 34px; font-size: 15px; }
.btn--sm { padding: 11px 18px; font-size: 13px; }
.btn--full { width: 100%; }

/* round icon button (header arrow) */
.icon-btn {
  width: 46px; height: 46px; border-radius: 50%;
  background: var(--accent-icon); color: #fff;
  display: inline-flex; align-items: center; justify-content: center;
  transition: transform .25s var(--ease), background .2s var(--ease);
  flex: none;
}
.icon-btn:hover { transform: rotate(45deg); background: #ff9576; }
.icon-btn svg { width: 18px; height: 18px; }

/* ============================================================
   Pills / tags (TZ 1.3)
   ============================================================ */
.tag {
  display: inline-flex; align-items: center;
  font-size: 12px; font-weight: 500; letter-spacing: .01em;
  padding: 7px 14px; border-radius: 100px;
  background: var(--pill-bg); color: #1a1a1a;
  border: 1px solid var(--card-border); white-space: nowrap;
}
.tag--dark { background: var(--black); color: #fff; border: none; font-weight: 600; }
.tag--ghost { background: transparent; border: 1px solid var(--line-on-dark); color: rgba(255,255,255,.85); }
.tag-row { display: flex; flex-wrap: wrap; gap: 8px; }

/* ============================================================
   Reveal on scroll (TZ 1.5)
   ============================================================ */
/* Появление при скролле — мягкий «технологичный» blur-in: лёгкий подъём,
   проявление и расфокус→фокус. Спокойно, без резких прыжков. */
.reveal {
  opacity: 0; transform: translateY(20px); filter: blur(7px);
  transition: opacity .7s var(--ease), transform .7s var(--ease), filter .7s var(--ease);
  will-change: opacity, transform, filter;
}
.reveal.is-in { opacity: 1; transform: none; filter: none; }
.reveal[data-d="1"] { transition-delay: .07s; }
.reveal[data-d="2"] { transition-delay: .14s; }
.reveal[data-d="3"] { transition-delay: .21s; }
.reveal[data-d="4"] { transition-delay: .28s; }
@media (prefers-reduced-motion: reduce) {
  .reveal { opacity: 1; transform: none; filter: none; transition: none; }
  .grad { background-position: 0 0; }
  html { scroll-behavior: auto; }
}

/* ============================================================
   Navigation (floating)
   ============================================================ */
.nav {
  position: fixed; inset: 0 0 auto 0; z-index: 60;
  display: flex; align-items: center; justify-content: space-between;
  gap: 20px; padding: 20px clamp(20px, 4vw, 48px);
  transition: background .3s var(--ease), backdrop-filter .3s var(--ease), padding .3s var(--ease);
}
.nav.is-scrolled { background: rgba(0,0,0,.82); backdrop-filter: blur(12px); padding-block: 14px; }
/* A4: на светлых страницах (privacy) держим тёмную панель всегда, иначе у прозрачной
   шапки белый логотип «4» сливается со светлым фоном (видна только оранжевая «u») */
.nav--solid { background: rgba(0,0,0,.82); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); padding-block: 14px; }
.nav__logo { display: flex; align-items: center; gap: 10px; color: #fff; }
.nav__links { display: flex; align-items: center; gap: 6px; }
.nav__link {
  color: #fff; font-size: 13px; font-weight: 600; letter-spacing: .02em;
  padding: 11px 18px; border-radius: 30px; border: 1px solid transparent;
  transition: border-color .2s var(--ease), background .2s var(--ease);
}
.nav__link:hover { border-color: rgba(255,255,255,.45); }
.nav__right { display: flex; align-items: center; gap: 12px; }
.nav.on-light .nav__logo, .nav.on-light .nav__link { color: #fff; }
.burger { display: none; width: 44px; height: 44px; border-radius: 50%;
  border: 1px solid rgba(255,255,255,.4); flex-direction: column; gap: 5px;
  align-items: center; justify-content: center; }
.burger span { width: 18px; height: 1.6px; background: #fff; transition: .25s var(--ease); }

/* mobile menu */
.mobile-menu {
  position: fixed; inset: 0; z-index: 55; background: rgba(0,0,0,.97);
  display: flex; flex-direction: column; justify-content: center; gap: 8px;
  padding: 80px 28px 40px; opacity: 0; pointer-events: none; transition: opacity .3s var(--ease);
}
.mobile-menu.open { opacity: 1; pointer-events: auto; }
.mobile-menu a { color: #fff; font-size: 26px; font-weight: 300; padding: 14px 0; border-bottom: 1px solid rgba(255,255,255,.1); }

/* ============================================================
   Wordmark logo
   ============================================================ */
/* Логотип = реальный вектор из макета (нода 0:87), монохром, перекраска через currentColor.
   Текстовый вариант <b>4</b><span class="u">u</span> прячем — оставлен в разметке как фолбэк/семантика. */
.logo {
  display: inline-block; font-size: 22px; line-height: 0; vertical-align: middle;
  width: calc(1em * 1.8125); height: 1em;          /* пропорция viewBox 264.62 × 146 */
  background-color: currentColor;
  -webkit-mask: url("assets/logo/4u.svg") no-repeat center / contain;
          mask: url("assets/logo/4u.svg") no-repeat center / contain;
}
.logo b, .logo .u { display: none; }
.logo--lg { font-size: clamp(72px, 14vw, 168px); }

/* ============================================================
   Hero (Block 1)
   ============================================================ */
.hero {
  position: relative; min-height: 100svh; display: flex; flex-direction: column;
  justify-content: flex-end; overflow: hidden; color: #fff;
  background: #000;
}
.hero__bg { position: absolute; inset: 0; z-index: 0; }
.hero__bg::after { /* white→dark fade per TZ */
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(to bottom, rgba(255,255,255,.0) 0%, rgba(0,0,0,.15) 40%, rgba(0,0,0,.65) 100%);
}
.hero__inner { position: relative; z-index: 2; padding-bottom: clamp(56px, 9vh, 110px); padding-top: 130px; }
.hero__logo-wrap { position: relative; display: inline-block; }
.hero__arc { position: absolute; left: 50%; top: 50%; transform: translate(-50%,-50%); z-index: -1;
  width: 128%; height: 168%; }
.hero__arc ellipse { fill: none; stroke: rgba(255,255,255,.5); stroke-width: 1.2; }
.hero__sub { font-size: clamp(15px, 1.6vw, 19px); font-weight: 300; letter-spacing: .02em; color: rgba(255,255,255,.92); margin-top: 10px; }

/* animated colour-gradient bg (ref macket hero: blue ↙ / orange ↗ on dark) */
.facade {
  position: absolute; inset: 0; background-color: #0a0a0c;
  background:
    radial-gradient(58% 75% at 93% 6%, rgba(255,110,30,.95), rgba(255,90,20,0) 56%),
    radial-gradient(46% 66% at 80% 28%, rgba(255,140,55,.50), transparent 60%),
    radial-gradient(56% 82% at 5% 3%, rgba(46,116,226,.92), rgba(25,70,170,0) 55%),
    radial-gradient(40% 72% at 24% 40%, rgba(40,95,210,.50), transparent 62%),
    linear-gradient(140deg, #0c1426 0%, #090a0e 42%, #0a0a0c 60%, #160b06 100%);
}
.facade::before {
  content: ""; position: absolute; inset: -2px;
  background-image:
    repeating-linear-gradient(90deg, rgba(255,255,255,.045) 0 1px, transparent 1px 46px),
    repeating-linear-gradient(0deg, rgba(255,255,255,.04) 0 1px, transparent 1px 64px);
  mask-image: linear-gradient(120deg, transparent 8%, #000 45%, #000 70%, transparent 96%);
  animation: facadePan 26s linear infinite;
}
.facade::after {
  content: ""; position: absolute; width: 60%; height: 140%; top: -20%; left: -30%;
  background: linear-gradient(105deg, transparent, rgba(255,255,255,.06) 48%, transparent 60%);
  transform: skewX(-12deg); animation: sheen 11s ease-in-out infinite;
}
@keyframes facadePan { to { transform: translateX(-46px); } }
@keyframes sheen { 0%,100% { left:-40%; opacity:0; } 45%,55% { opacity:1; } 60% { left:120%; opacity:0; } }

/* ============================================================
   Numbers (Block 3) — dark with radial orange glow
   ============================================================ */
.numbers {
  /* фон по макету: синее свечение слева-сверху, оранжевое справа-сверху, центр тёмный
     (без центрального оранжевого глоу — его в макете нет) */
  background:
    radial-gradient(46% 60% at 8% 4%, rgba(46,116,226,.42), transparent 58%),
    radial-gradient(50% 64% at 92% 2%, rgba(255,110,30,.48), transparent 60%),
    #000;
  color: #fff;
  position: relative; z-index: 2;
  border-radius: clamp(34px, 4vw, 52px) clamp(34px, 4vw, 52px) 0 0;
  margin-top: clamp(-56px, -4vw, -36px);
  padding-top: clamp(72px, 8vw, 110px);
}
.numbers__logo { text-align: center; margin-bottom: 54px; }
.numbers__glow { filter: drop-shadow(0 0 40px rgba(255,133,98,.55)); }
.stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 32px; text-align: center; }
.stat__n { font-size: clamp(38px, 5vw, 60px); font-weight: 300; line-height: 1; letter-spacing: -.02em; }
.stat__l { font-size: 13px; font-weight: 300; color: rgba(255,255,255,.62); margin-top: 12px; max-width: 200px; margin-inline: auto; }

/* corner-stats stage with central faint logo + swoosh */
.numbers__stage { display: grid; grid-template-columns: 1fr minmax(220px, 30%) 1fr; align-items: stretch;
  gap: clamp(14px, 2vw, 40px); max-width: 1120px; margin: 0 auto; }
.numbers__side { display: flex; flex-direction: column; justify-content: space-between; gap: clamp(48px, 7vw, 96px);
  padding-block: clamp(8px, 2vw, 26px); }
.numbers__center { position: relative; display: grid; place-items: center; min-height: clamp(240px, 30vw, 380px); }
.numbers__brand { font-size: clamp(56px, 8vw, 120px); font-weight: 600; letter-spacing: -.03em; line-height: 1;
  color: rgba(255,255,255,.16); }
/* по макету «4U» в центре — бледно-серая целиком, без оранжевой «u» */
.numbers__brand .u { color: rgba(255,255,255,.16); }
.numbers__swoosh { position: absolute; left: 50%; top: 50%; transform: translate(-50%,-50%) rotate(-16deg);
  width: 116%; height: 78%; pointer-events: none; }
/* эллипс-swoosh — едва заметный белый, как в макете (не оранжевое кольцо) */
.numbers__swoosh ellipse { fill: none; stroke: rgba(255,255,255,.14); stroke-width: 1.2; }
.numbers .stat { text-align: center; }
.numbers .stat__n { font-weight: 400; }
.numbers .stat__n span { font-size: .6em; font-weight: 400; }
.numbers .stat__l { font-size: clamp(13px, 1.2vw, 15px); max-width: 220px; }

.btn--glass-dark { background: rgba(18,18,17,.5); border: 1px solid rgba(255,255,255,.16); color: #fff;
  backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); border-radius: 100px; }
.btn--glass-dark:hover { background: rgba(40,40,38,.62); border-color: rgba(255,255,255,.34); }

/* ============================================================
   Marquee (Blocks 4 & 5)
   ============================================================ */
.marquee { overflow: hidden; width: 100%; -webkit-mask-image: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent);
  mask-image: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent); }
.marquee__track { display: flex; width: max-content; gap: var(--mq-gap, 64px); animation: marquee var(--mq-dur, 38s) linear infinite; will-change: transform; }
.marquee:hover .marquee__track { animation-play-state: paused; }
.marquee--rev .marquee__track { animation-direction: reverse; }
@keyframes marquee { to { transform: translateX(calc(-50% - var(--mq-gap, 64px) / 2)); } }

/* Логотипы клиентов = реальные бренды из макета, белые силуэты (как в макете: bg-white + mask).
   Обеляем фильтром, чтобы любой исходник (цветной/тёмный/белый) стал единым белым. */
.client-logo { height: 38px; width: auto; flex: none; object-fit: contain; display: block;
  filter: brightness(0) invert(1); opacity: .6; transition: opacity .2s var(--ease); }
.client-logo:hover { opacity: 1; }
/* Ряд партнёров — единая лента-экспорт ноды Figma 0:243 (относительные размеры 1:1) */
.client-strip { height: clamp(84px, 10vw, 124px); width: auto; flex: none; display: block; }

/* ============================================================
   Services (Block 7)
   ============================================================ */
/* Full-width horizontal plates, stacked */
.svc-stack { display: flex; flex-direction: column; gap: 16px; }
.svc-plate {
  background: #FFFFFF; border-radius: 40px; padding: 40px clamp(28px, 3.4vw, 62px);
  box-shadow: 0 18px 50px -32px rgba(0,0,0,.28); border: 1px solid var(--card-border);
  display: grid; grid-template-columns: minmax(220px, 26%) minmax(0, 1fr) minmax(210px, 28%);
  gap: clamp(20px, 2.4vw, 40px); align-items: center; cursor: pointer;
  transition: transform .25s var(--ease), box-shadow .25s var(--ease), border-color .25s var(--ease);
}
/* грид-дети должны уметь сжиматься, иначе длинные заголовки вылезают в соседнюю колонку */
.svc-plate > * { min-width: 0; }
.svc-plate:hover { transform: translateY(-3px); box-shadow: 0 30px 64px -30px rgba(0,0,0,.34); border-color: rgba(0,0,0,.16); }
.svc-plate__title { font-size: clamp(22px, 2.6vw, 36px); font-weight: 500; color: #111; line-height: 1.12; letter-spacing: -.02em; overflow-wrap: break-word; hyphens: auto; }
.svc-plate__hint { font-size: clamp(11px, 1vw, 14px); color: var(--muted); margin-top: 12px; }
.svc-plate__desc { font-size: clamp(15px, 1.45vw, 22px); font-weight: 300; color: #111; line-height: 1.25; letter-spacing: -.02em; }
.svc-plate__tags { margin-top: 18px; }
.svc-plate__tags .tag { font-size: clamp(15px, 1.1vw, 18px); padding: 10px 30px; background: #f3f3f3; color: #767676; border: none; }
.svc-plate__right { display: flex; justify-content: center; align-items: center; }

/* soft pill tag (light bg, gray text) */
.tag--soft { background: var(--pill-bg); color: var(--muted); border: none; font-weight: 500; }

/* service card CTA — black glass pill (ref macket) */
.btn--svc {
  width: 100%; background-color: rgba(16,16,15,.9); color: #fff; border-radius: 100px;
  border: 1px solid rgba(255,255,255,.12); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px);
  padding: clamp(17px, 1.8vw, 24px) clamp(24px, 3vw, 36px); font-size: clamp(15px, 1.15vw, 20px); font-weight: 500; letter-spacing: -.02em;
  background-image: linear-gradient(180deg, rgba(255,255,255,.14) 0%, rgba(255,255,255,0) 24%, rgba(255,255,255,.06) 50%, rgba(255,255,255,0) 78%);
  transition: transform .2s var(--ease), box-shadow .2s var(--ease);
}
.btn--svc:hover { transform: translateY(-1px); box-shadow: 0 16px 34px -16px rgba(0,0,0,.5); }

/* unified dark CTA pill (ref macket — no orange buttons) */
.btn--dark {
  background-color: rgba(16,16,15,.9); color: #fff; border-radius: 100px;
  border: 1px solid rgba(255,255,255,.12); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px);
  padding: clamp(18px, 1.9vw, 24px) clamp(30px, 3.2vw, 48px);
  font-size: clamp(15px, 1.15vw, 20px); font-weight: 500; letter-spacing: -.02em;
  background-image: linear-gradient(180deg, rgba(255,255,255,.14) 0%, rgba(255,255,255,0) 24%, rgba(255,255,255,.06) 50%, rgba(255,255,255,0) 78%);
  transition: transform .2s var(--ease), box-shadow .2s var(--ease);
}
.btn--dark:hover { transform: translateY(-1px); box-shadow: 0 16px 34px -16px rgba(0,0,0,.5); }
/* main form submit → solid dark (was orange) */
.pf-submit { background: #000; color: #fff; }
.pf-submit::after { display: none; }

/* ============================================================
   Тёмные CTA-кнопки — строго по ноде Figma 0:133:
   фон #000 + серый оверлей rgba(126,126,126,.2) + стеклянный
   белый градиент-оверлей (верхний блик → тёмный корпус); текст #FFFFFF.
   (SVG-маску ноды в чистом CSS не воспроизвести — белый градиент
    приближён так, чтобы корпус оставался тёмным, как на макете.)
   ============================================================ */
.btn--svc, .btn--dark, .pf-submit {
  position: relative; color: #fff; border-radius: 100px;
  background-color: #000;
  background-image:
    linear-gradient(90deg, rgba(126,126,126,.20) 0%, rgba(126,126,126,.20) 100%),
    linear-gradient(180deg,
      rgba(255,255,255,.30) 0%,
      rgba(255,255,255,.10) 16%,
      rgba(255,255,255,0)   42%,
      rgba(255,255,255,.05) 70%,
      rgba(255,255,255,.12) 100%);
  border: 1px solid rgba(255,255,255,.12);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.30), 0 12px 28px -16px rgba(0,0,0,.5);
  backdrop-filter: none; -webkit-backdrop-filter: none;
}
.btn--svc:hover, .btn--dark:hover, .pf-submit:hover {
  transform: translateY(-1px);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.4), 0 18px 36px -16px rgba(0,0,0,.55);
}
/* CTA-стрипы (ноды 0:116 / 0:122) — точный фон из макета: тёплый оранжевый
   отлив + затемняющий слой + вертикальный стеклянный градиент, поверх #000. */
.btn--dark {
  background-color: #000;
  background-image:
    linear-gradient(90deg, rgba(230,88,31,.20) 24%, rgba(255,255,255,.06) 100%),
    linear-gradient(rgba(0,0,0,.20), rgba(0,0,0,.20)),
    linear-gradient(180deg, rgba(255,255,255,.30) 0%, rgba(255,255,255,.08) 24%, rgba(255,255,255,.28) 50%, rgba(255,255,255,.27) 74%, rgba(255,255,255,.08) 100%);
}

/* ============================================================
   Audit / generic feature list (Block 9)
   ============================================================ */
.feature-list { display: grid; gap: 14px; }
.feature-list li { display: flex; gap: 14px; align-items: flex-start; font-size: 17px; font-weight: 300; }
.feature-list .mk { width: 26px; height: 26px; border-radius: 50%; background: var(--accent-1); color: #fff;
  display: grid; place-items: center; font-size: 13px; flex: none; margin-top: 2px; }

/* ============================================================
   Cards: "why us" + process + founder + team
   ============================================================ */
.why-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px; align-items: start; }
.why-card { background: #fff; border: 1px solid #e9e9e9; border-radius: 30px; padding: 28px 30px; box-shadow: 0 4px 5px rgba(0,0,0,.05); }
.why-card h4 { font-size: 18px; font-weight: 500; margin-bottom: 10px; }
.why-card p { font-size: 14.5px; color: #767676; }

.process { display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px; }
.step__n { width: 48px; height: 48px; border-radius: 50%; border: 1px solid var(--accent-1); color: var(--accent-1);
  display: grid; place-items: center; font-size: 18px; margin-bottom: 18px; }
.step h4 { font-size: 18px; font-weight: 500; margin-bottom: 8px; }
.step p { font-size: 14px; color: #444; }

.founder { display: grid; grid-template-columns: 300px 1fr; gap: 40px; align-items: center;
  background: #fff; border: 1px solid var(--card-border); border-radius: var(--radius-card); padding: 36px; margin-top: 56px; }

.team-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px; }
.team-card__photo { aspect-ratio: 1; border-radius: 30px; overflow: hidden; object-fit: cover; width: 100%; display: block; background: #ddd; }
.team-card__role { font-size: 12px; color: var(--muted); margin-top: 12px; }
.team-card__name { font-size: 17px; font-weight: 400; }

/* ============================================================
   Cases slider (Blocks 10–11)
   ============================================================ */
.slider { position: relative; }
.slider__viewport { overflow: hidden; border-radius: var(--radius-case); }
.slider__track { display: flex; transition: transform .55s var(--ease); }
.slide { flex: 0 0 100%; }
.case-card { position: relative; border-radius: var(--radius-case); overflow: hidden; aspect-ratio: 16/8; color: #fff; display: flex; flex-direction: column; justify-content: space-between; padding: 26px; }
.case-card__media { position: absolute; inset: 0; z-index: 0; }
.case-card > .case-card__media { position: absolute; inset: 0; }
.case-card__media::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0,0,0,.1), rgba(0,0,0,.6)); }
.case-card > * { position: relative; z-index: 1; }
.case-card__title { font-size: clamp(22px, 3vw, 34px); font-weight: 300; }
.slider__bar { display: flex; align-items: center; justify-content: space-between; margin-top: 22px; gap: 16px; }
.slider__count { font-size: 14px; font-weight: 500; letter-spacing: .04em; }
.slider__count b { font-weight: 600; }
.slider__nav { display: flex; gap: 10px; }
.slider__nav .icon-btn { background: #fff; color: #000; border: 1px solid var(--card-border); }
.slider__nav .icon-btn:hover { background: #000; color: #fff; transform: none; }
.slider__nav .icon-btn.prev svg { transform: rotate(180deg); }

/* ============================================================
   Forms
   ============================================================ */
.form { display: grid; gap: 12px; }
.field { display: grid; gap: 6px; }
.field label { font-size: 12px; color: var(--muted); font-weight: 400; }
.input {
  width: 100%; padding: 15px 18px; border-radius: 14px; font-size: 15px; font-weight: 300;
  border: 1px solid var(--line); background: #fff; color: #000; transition: border-color .2s var(--ease);
}
.input::placeholder { color: #9a9a9a; }
.input:focus { outline: none; border-color: var(--accent-1); }
textarea.input { resize: vertical; min-height: 96px; }
.form--dark .input { background: #111; border-color: rgba(255,255,255,.18); color: #fff; }
.form--dark .field label { color: rgba(255,255,255,.6); }
.field.invalid .input { border-color: var(--accent-2); }
.consent { display: flex; gap: 10px; align-items: flex-start; font-size: 12px; color: var(--muted); }
.consent input { margin-top: 2px; }
.form-ok { padding: 18px; border-radius: 14px; background: rgba(230,100,0,.1); color: var(--accent-1); font-size: 14px; font-weight: 500; }

/* mini form inline */
.mini-form { display: flex; gap: 10px; flex-wrap: wrap; max-width: 520px; }
.mini-form .input { flex: 1 1 220px; }

/* ============================================================
   CTA strips
   ============================================================ */
.cta-strip { display: flex; }
.cta-strip .btn { width: 100%; padding: 26px; font-size: 16px; border-radius: 30px; }

/* ============================================================
   Footer
   ============================================================ */
.footer { background: #000; color: #fff; }
.footer__top { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.footer__col { border: 1px solid var(--line-on-dark); border-radius: var(--radius-inner); padding: 34px; }
.footer__col h3 { font-size: 22px; font-weight: 300; margin-bottom: 12px; }
.footer__col p { color: rgba(255,255,255,.62); font-size: 15px; margin-bottom: 22px; }
.footer__logo { text-align: center; padding-block: clamp(36px, 5vw, 60px); }
.footer__bottom { display: flex; flex-wrap: wrap; gap: 24px 40px; justify-content: space-between; align-items: flex-start;
  border-top: 1px solid var(--line-on-dark); padding-top: 34px; }
.footer__nav { display: flex; flex-wrap: wrap; gap: 8px 22px; }
.footer__nav a { color: rgba(255,255,255,.7); font-size: 15px; }
.footer__nav a:hover { color: #fff; }
.footer__contacts { display: flex; flex-direction: column; gap: 10px; align-items: flex-start; }
.footer__contacts a { display: inline-flex; align-items: center; gap: 11px; color: #fff; font-size: 15px; font-weight: 400;
  background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.14); border-radius: 100px; padding: 12px 22px;
  backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
  transition: background .2s var(--ease), border-color .2s var(--ease); }
.footer__contacts a:hover { background: rgba(255,255,255,.12); border-color: rgba(255,255,255,.28); }
.footer__contacts a svg { width: 18px; height: 18px; flex: none; }
.footer__legal { color: rgba(255,255,255,.42); font-size: 12px; line-height: 1.7; max-width: 520px; }
.footer__legal a { text-decoration: underline; }
.footer__meta-note { color: rgba(255,255,255,.3); font-size: 11px; line-height: 1.6; margin-top: 14px; }

/* ============================================================
   Popups / modals
   ============================================================ */
.modal-root { position: fixed; inset: 0; z-index: 100; display: none; }
.modal-root.open { display: block; }
.modal__overlay { position: absolute; inset: 0; background: rgba(0,0,0,.55); backdrop-filter: blur(4px); opacity: 0; transition: opacity .3s var(--ease); }
.modal-root.open .modal__overlay { opacity: 1; }
.modal {
  --mpad: 44px;
  --mscale: 1;
  position: absolute; top: 50%; left: 50%;
  transform: translate(-50%, -46%) scale(var(--mscale));
  transform-origin: center center;
  width: min(760px, calc(100vw - 32px));
  /* без скролла — модалка вписывается в экран масштабом (--mscale из JS) */
  max-height: none; overflow: visible;
  background: #fff; border-radius: 40px; padding: var(--mpad);
  opacity: 0; transition: opacity .3s var(--ease), transform .3s var(--ease);
}
.modal-root.open .modal { opacity: 1; transform: translate(-50%, -50%) scale(var(--mscale)); }
.modal__close { position: sticky; top: 0; float: right; margin: -8px -8px 0 0; width: 42px; height: 42px; border-radius: 50%; z-index: 4;
  background: var(--pill-bg); display: grid; place-items: center; font-size: 20px; color: #000; }
.modal__close:hover { background: #e9e9e9; }
.modal__eyebrow { color: var(--accent-1); font-weight: 600; font-size: 13px; letter-spacing: .1em; text-transform: uppercase; }
.modal__title { font-size: clamp(28px, 3.4vw, 40px); font-weight: 500; color: #000; margin: 6px 0 16px; line-height: 1.08; letter-spacing: -.02em; }
.modal__cta-h { font-size: 20px; font-weight: 400; margin: 8px 0 22px; }
.modal__tags { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 26px; }

/* service popup: two columns "Что это? / Кому подойдёт?" */
.svc-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 30px; }
.svc-cols h4 { font-size: 18px; font-weight: 600; color: #000; margin-bottom: 10px; }
.svc-cols p { font-size: 15px; color: #767676; line-height: 1.55; }

/* overlapping dark result block — по ноде попапа Figma 0:965:
   фон синий→оранжевый, водяной знак 4U справа, контент и CTA во всю ширину */
.modal__dark {
  position: relative; overflow: hidden; color: #fff; border-radius: 32px;
  margin: 30px calc(-1 * var(--mpad)) calc(-1 * var(--mpad));
  padding: 32px var(--mpad) 30px;
  background-color: #0a0e16;
  background-image:
    radial-gradient(70% 120% at 100% 38%, rgba(230,100,0,.50), transparent 60%),
    radial-gradient(82% 130% at 2% 106%, rgba(38,84,196,.50), transparent 64%);
}
.modal__dwm { position: absolute; top: 16px; right: 26px; font-size: 62px; font-weight: 700;
  line-height: 1; letter-spacing: -.03em; color: rgba(255,255,255,.10); pointer-events: none; user-select: none; }
.modal__dwm .u { color: rgba(255,255,255,.10); }
.modal__dark h4 { position: relative; font-size: 18px; font-weight: 600; margin-bottom: 8px; }
.modal__dark > p { position: relative; font-size: 15px; color: #c9ced6; line-height: 1.5; margin-bottom: 22px; max-width: 72%; }
.modal__dark .btn { position: relative; width: 100%; white-space: normal; line-height: 1.3; text-align: center; }
/* A5: CTA в тёмной карточке не должна вылезать за вьюпорт — ограничиваем и разрешаем перенос */
.modal__dactions .btn { max-width: 100%; white-space: normal; line-height: 1.3; text-align: center; }
.modal__actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 24px; }
.svc-block { margin-bottom: 20px; }
.svc-block h4 { font-size: 13px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--muted); margin-bottom: 6px; }
.svc-block p { font-size: 16px; color: #222; }

body.no-scroll { overflow: hidden; }

/* wide lead modal (matches the project-form layout) */
.modal.modal--wide { width: min(980px, calc(100vw - 32px)); --mpad: 34px; }
/* сервисный попап — ширина по ноде Figma 0:957 (≈984px) */
.modal.modal--svc { width: min(960px, calc(100vw - 32px)); }
.modal__lead-head { margin-bottom: clamp(26px, 3.6vw, 44px); align-items: center; gap: clamp(14px, 2vw, 26px); }
.modal__lead-title { font-size: clamp(28px, 3vw, 42px); }
.modal--wide .pform__ring { transform: scale(.84); }
.modal--wide .pform__desc { font-size: clamp(15px, 1.4vw, 18px); }
@media (max-width: 720px) {
  .modal__lead-head { grid-template-columns: 1fr; justify-items: start; gap: 20px; }
  .modal--wide .pform__ring { order: -1; }
  .modal--wide .pform__grid { grid-template-columns: 1fr; }
  .modal--wide .pf-field--wide { grid-column: auto; }
}

/* ============================================================
   Abstract media placeholders ("tasteful stand-ins")
   ============================================================ */
.ph { position: relative; overflow: hidden; background: #ddd; }
.ph[data-ph]::before {
  content: attr(data-ph); position: absolute; left: 14px; bottom: 12px; z-index: 3;
  font-family: 'Montserrat', monospace; font-size: 10px; letter-spacing: .14em; text-transform: uppercase;
  color: rgba(255,255,255,.7); font-weight: 500;
}
.ph--a { background: linear-gradient(135deg, #2a2622 0%, #15130f 100%); }
.ph--a::after { content:""; position:absolute; inset:0; background: radial-gradient(70% 80% at 30% 20%, rgba(230,100,0,.5), transparent 60%), radial-gradient(60% 70% at 85% 90%, rgba(255,133,98,.35), transparent 60%); }
.ph--b { background: linear-gradient(135deg, #3a3530 0%, #1c1916 100%); }
.ph--b::after { content:""; position:absolute; inset:0; background: radial-gradient(80% 60% at 70% 10%, rgba(249,93,81,.45), transparent 55%); }
.ph--c { background: linear-gradient(135deg, #ececec, #d8d8d8); }
.ph--c::after { content:""; position:absolute; inset:0; background: repeating-linear-gradient(115deg, rgba(0,0,0,.04) 0 2px, transparent 2px 16px); }
.ph--portrait { background: linear-gradient(160deg, #cfcac4, #9c958c); }
.ph--portrait::after { content:""; position:absolute; inset:0; background: radial-gradient(50% 45% at 50% 38%, rgba(255,255,255,.45), transparent 60%); }

/* ============================================================
   Preloader (TZ 6.1)
   ============================================================ */
.preloader { position: fixed; inset: 0; z-index: 200; background: #0a0908; color: #fff;
  display: flex; align-items: center; justify-content: center; flex-direction: column; gap: 18px;
  transition: opacity .6s var(--ease), visibility .6s; }
.preloader.done { opacity: 0; visibility: hidden; }
.preloader__line { overflow: hidden; }
.preloader__hook { font-size: clamp(22px, 4vw, 40px); font-weight: 300; letter-spacing: -.01em;
  transform: translateY(110%); animation: hookUp .9s var(--ease) .15s forwards; }
.preloader__hook .grad2 { background: var(--grad-text); background-size: 200% 100%; -webkit-background-clip: text; background-clip: text; color: transparent; }
.preloader__bar { width: 180px; height: 2px; background: rgba(255,255,255,.16); overflow: hidden; border-radius: 2px; }
.preloader__bar i { display: block; height: 100%; width: 40%; background: var(--accent-1); animation: load 1.4s var(--ease) infinite; }
@keyframes hookUp { to { transform: none; } }
@keyframes load { 0% { transform: translateX(-120%); } 100% { transform: translateX(360%); } }

/* ============================================================
   Section heading helper
   ============================================================ */
.head { max-width: 760px; }
.head--center { margin-inline: auto; text-align: center; }
.head .eyebrow { display: block; margin-bottom: 14px; }
.head .h1 { margin-bottom: 0; }
.stack-sm > * + * { margin-top: 14px; }
.stack-md > * + * { margin-top: 22px; }
.stack-lg > * + * { margin-top: 40px; }

/* ============================================================
   Case page specifics
   ============================================================ */
.breadcrumb { display: inline-flex; align-items: center; gap: 8px; font-size: 14px; color: var(--muted); }
.breadcrumb:hover { color: #000; }
.case-hero { display: grid; grid-template-columns: 1fr 1fr; gap: 40px; align-items: stretch; }
.case-hero__media { border-radius: var(--radius-case); aspect-ratio: 4/3; }
.case-clogo { width: 64px; height: 64px; border-radius: 16px; }
.qr-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.qr-card { background: #fff; border: 1px solid var(--card-border); border-radius: var(--radius-inner); padding: 30px; }
.qr-card .ic { width: 46px; height: 46px; border-radius: 12px; background: rgba(230,100,0,.1); color: var(--accent-1);
  display: grid; place-items: center; margin-bottom: 16px; }
.qr-card h4 { font-size: 13px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--muted); margin-bottom: 8px; }
.qr-card p { font-size: 16px; color: #222; }
.result-row { display: grid; grid-template-columns: repeat(3,1fr); gap: 20px; }
.result-row .stat__n { color: var(--accent-1); }
.result-row .stat__l { color: var(--muted); }

/* ============================================================
   Responsive (TZ 1.6 — single column on mobile)
   ============================================================ */
@media (max-width: 980px) {
  .nav__links { display: none; }
  .burger { display: flex; }
  .stats { grid-template-columns: repeat(2, 1fr); gap: 36px 20px; }
  .numbers__stage { grid-template-columns: 1fr 1fr; }
  .numbers__center { grid-column: 1 / -1; order: -1; min-height: 200px; }
  .numbers__side { gap: 32px; }
  .svc-plate { grid-template-columns: 1fr; gap: 22px; }
  .svc-plate__right { justify-content: flex-start; }
  .process { grid-template-columns: repeat(2, 1fr); }
  .team-grid { grid-template-columns: repeat(2, 1fr); }
  .founder { grid-template-columns: 1fr; text-align: center; }
  .founder .ph { margin-inline: auto; }
  .case-hero { grid-template-columns: 1fr; }
  .result-row { grid-template-columns: 1fr; }
  .soft-grid { grid-template-columns: 1fr !important; gap: 32px !important; }
  .soft-grid .ph { max-width: 280px; }
}
@media (max-width: 600px) {
  :root { --radius-card: 28px; }
  .modal { --mpad: 26px; }
  .modal__dark { flex-direction: column; gap: 14px; }
  .svc-cols { grid-template-columns: 1fr; gap: 18px; }
  .stats { grid-template-columns: 1fr 1fr; }
  .why-grid { grid-template-columns: 1fr; }
  .process { grid-template-columns: 1fr; }
  .team-grid { grid-template-columns: 1fr 1fr; }
  .footer__top { grid-template-columns: 1fr; }
  .qr-grid { grid-template-columns: 1fr; }
  .mini-form .input { flex: 1 1 100%; }
}

/* ============================================================
   REF-MATCH BLOCKS (Hero / Audit / Connect) — built 1:1 to screens
   ============================================================ */

/* ---- Floating pill nav (centered glass pill + separate round btn) ---- */
.navp {
  position: fixed; top: 18px; left: 50%; transform: translateX(-50%); z-index: 60;
  display: flex; align-items: center; gap: 12px;
}
/* пилюля навигации — морозное стекло строго по ноде Figma 0:76/0:77:
   полупрозрачная серая подложка + белый глянцевый градиент-оверлей + бордер .2 */
.navp__pill {
  display: flex; align-items: center; gap: 4px;
  background-color: rgba(190,190,190,.07);
  background-image: linear-gradient(180deg,
    rgba(255,255,255,.300) 0%,
    rgba(255,255,255,.075) 24%,
    rgba(255,255,255,.276) 50%,
    rgba(255,255,255,.267) 74%,
    rgba(255,255,255,.075) 100%);
  backdrop-filter: blur(18px); -webkit-backdrop-filter: blur(18px);
  border: 1px solid rgba(255,255,255,.2); border-radius: 100px;
  padding: 9px 14px 9px 22px;
}
.navp__links { display: flex; align-items: center; gap: 4px; }
.navp__logo { color: #fff; margin-right: 14px; display: inline-flex; align-items: baseline; }
.navp__link { color: #fff; font-size: 15px; font-weight: 500; padding: 11px 20px; border-radius: 100px;
  transition: background .2s var(--ease); white-space: nowrap; }
.navp__link:hover { background: rgba(255,255,255,.12); }
.navp__cta {
  width: 54px; height: 54px; border-radius: 50%; background: #fff; color: #000; flex: none;
  display: grid; place-items: center; transition: transform .3s var(--ease), background .2s var(--ease);
}
.navp__cta:hover { transform: rotate(45deg); background: #f0f0f0; }
.navp__cta svg { width: 20px; height: 20px; }
.navp__burger { display: none; }

/* ---- Hero ---- */
.hero__inner {
  position: relative; z-index: 2;
  display: flex; flex-direction: column; min-height: 100svh;
  padding: 120px 0 36px;
}
.hero__center { margin: auto; text-align: center; }
.hero__arc { position: absolute; left: 50%; top: 41%; transform: translate(-50%, -50%);
  width: 138%; height: 156%; z-index: -1; overflow: visible; }
.hero__arc path { filter: drop-shadow(0 0 6px rgba(255,255,255,.5)); }
.hero__sub { font-size: clamp(18px, 2.2vw, 40px); font-weight: 700; letter-spacing: .1em;
  text-transform: uppercase; color: #fff; margin-top: 12px; line-height: 1.1; }
.hero__cta-wrap { width: 100%; max-width: 726px; margin-inline: auto; }
/* hero / «Обсудить проект» — фон строго по ноде Figma 0:92:
   прозрачная стеклянная пилюля, глянцевый вертикальный градиент белого
   (стопы .30/.075/.276/.267/.075), текст #FFFFFF, Onest Medium.
   Absolute-позиционирование из макета не копируем — оставляем адаптив. */
.btn--glass-wide {
  width: 100%; color: #fff; font-size: clamp(15px, 1.3vw, 22px); font-weight: 500; letter-spacing: -.03em;
  background-color: transparent;
  background-image: linear-gradient(180deg,
    rgba(255,255,255,.300) 0%,
    rgba(255,255,255,.075) 24%,
    rgba(255,255,255,.276) 50%,
    rgba(255,255,255,.267) 74%,
    rgba(255,255,255,.075) 100%);
  backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px);
  border: 1px solid rgba(255,255,255,.22); border-radius: 100px; padding: clamp(19px, 2.1vw, 26px);
  transition: background-image .2s var(--ease), border-color .2s var(--ease);
}
.btn--glass-wide:hover { background-image: linear-gradient(180deg, rgba(255,255,255,.40) 0%, rgba(255,255,255,.14) 24%, rgba(255,255,255,.34) 50%, rgba(255,255,255,.33) 74%, rgba(255,255,255,.14) 100%); border-color: rgba(255,255,255,.4); }
.logo--hero { font-size: clamp(64px, 13vw, 150px); font-weight: 400; letter-spacing: -.03em; line-height: .9;
  text-shadow: 0 2px 40px rgba(0,0,0,.4); }
/* подзаголовок hero «DIGITAL AGENCY» — вектор из ноды Figma 0:280 (вместо живого текста) */
.hero__wordmark { width: clamp(220px, 34vw, 440px); height: auto; margin: clamp(18px, 2.6vw, 34px) auto 0; }

/* ---- Audit block (dark rounded panel + orange beam + glass card) ---- */
.audit-wrap { background: #fff; padding: 36px clamp(14px, 2.4vw, 38px); }
.audit {
  position: relative; overflow: hidden; border-radius: clamp(32px, 3.4vw, 40px);
  background: #0a0704; color: #fff; padding: clamp(44px, 6vw, 88px) clamp(28px, 5vw, 80px);
  min-height: 560px; display: flex;
}
/* фон аудита — реальная картинка из ноды Figma 0:294 (размытое синее/оранжевое свечение
   на чёрном), вместо CSS-луча. Cover, центр. */
.audit__beam { position: absolute; inset: 0; pointer-events: none; z-index: 0;
  background: #0a0704 url("assets/img/audit-bg.jpg") center / cover no-repeat;
}
.audit__beam::before { display: none; }
.audit__grid { position: relative; z-index: 2; width: 100%;
  display: grid; grid-template-columns: 1fr 1fr; gap: clamp(28px, 5vw, 72px); align-items: stretch; }
.audit__left { display: flex; flex-direction: column; }
.audit__eyebrow { font-size: clamp(15px, 1.3vw, 18px); font-weight: 400; color: rgba(255,255,255,.5);
  max-width: 380px; line-height: 1.45; }
.audit__title { font-size: clamp(30px, 3.8vw, 48px); font-weight: 500; line-height: 1.1; letter-spacing: -.02em;
  margin-top: clamp(20px, 3vw, 40px); }
.audit__right { display: flex; flex-direction: column; gap: 16px; }
.audit__card { position: relative; border-radius: 30px; padding: clamp(26px, 2.6vw, 36px);
  background: rgba(255,255,255,.12); backdrop-filter: blur(22px); -webkit-backdrop-filter: blur(22px);
  border: 1px solid rgba(255,255,255,.2); }
.audit__card-h { font-size: clamp(20px, 1.9vw, 25px); font-weight: 700; line-height: 1.15; max-width: 340px; margin-bottom: 24px; }
.audit__card-logo { position: absolute; top: 24px; right: 24px; width: 34px; height: 34px; border-radius: 50%;
  border: 1.5px solid rgba(255,255,255,.55); display: grid; place-items: center; color: #fff; }
.audit__card-logo span { width: 12px; height: 12px; border-radius: 50%; background: #fff; }
.audit-pill { display: flex; align-items: center; gap: 14px; border-radius: 100px;
  background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.16); padding: 18px 25px;
  color: #fff; font-size: clamp(15px, 1.4vw, 18px); font-weight: 400; line-height: 1.25; }
.audit-pill + .audit-pill { margin-top: 12px; }
.audit-pill .mag { width: 20px; height: 20px; flex: none; color: rgba(255,255,255,.85); }
.audit__btn { width: 100%; background: #fff; color: #010101; font-weight: 500; font-size: clamp(15px, 1.4vw, 20px);
  letter-spacing: -.02em; border-radius: 40px; padding: 24px; margin-top: 4px; transition: background .2s var(--ease); }
.audit__btn:hover { background: #efefef; }

/* ---- Connect block (industries marquee + glow blob + queries + CTA) ---- */
.connect { position: relative; background: #000; color: #fff; overflow: hidden;
  padding-top: 40px; padding-bottom: clamp(80px, 11vw, 140px); }
.connect__marquee { margin-bottom: clamp(54px, 8vw, 96px); }
.tag-glass { display: inline-flex; align-items: center; white-space: nowrap;
  background: rgba(255,255,255,.04); border: 1px solid rgba(255,255,255,.14); border-radius: 100px;
  padding: 14px 28px; font-size: clamp(16px, 1.5vw, 20px); font-weight: 500; color: #fff; }
.connect__body { display: flex; align-items: center; justify-content: center; gap: clamp(28px, 5vw, 76px); }
.connect__blob { flex: none; width: clamp(150px, 15vw, 220px); aspect-ratio: 1 / 1.08; border-radius: 40px;
  display: grid; place-items: center; position: relative;
  background:
    radial-gradient(72% 58% at 50% 80%, rgba(255,138,52,.6), rgba(0,0,0,0) 72%),
    radial-gradient(50% 40% at 50% 50%, rgba(120,55,12,.5), rgba(0,0,0,0) 70%),
    linear-gradient(180deg, #17130e 0%, #050403 100%);
  border: 1px solid rgba(255,140,60,.22);
  box-shadow: 0 0 90px -16px rgba(255,120,30,.5), inset 0 -34px 60px -22px rgba(255,128,32,.55); }
.connect__blob .logo { opacity: .55; color: #fff; font-size: clamp(26px, 3vw, 40px); }
.connect__content { max-width: 780px; width: 100%; }
.connect__queries { display: flex; gap: 12px; flex-wrap: wrap; margin-bottom: 22px; }
.query-pill { display: inline-flex; align-items: center; gap: 11px; border-radius: 100px;
  background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.12); padding: 12px 22px;
  color: rgba(255,255,255,.85); font-size: 16px; font-weight: 400; }
.query-pill .mag { width: 18px; height: 18px; color: rgba(255,255,255,.7); }
.connect__title { font-size: clamp(30px, 3.6vw, 48px); font-weight: 700; line-height: 1.1; letter-spacing: -.01em; }
.connect__sub { text-align: center; color: rgba(255,255,255,.82); font-size: clamp(16px, 1.5vw, 19px);
  line-height: 1.4; margin: clamp(24px, 3vw, 34px) 0; }
.connect__btn { display: block; margin: 0 auto; width: min(640px, 100%); padding: 24px; border-radius: 100px;
  font-size: clamp(15px, 1.4vw, 18px); }
.txt-orange { background: linear-gradient(90deg, #E66400 0%, #ff8a3d 46%, #f6c694 100%);
  -webkit-background-clip: text; background-clip: text; color: transparent; }

/* white rounded cutout: услуги rises over connect */
#services { position: relative; z-index: 3; background: #fff; border-radius: clamp(34px,4vw,52px) clamp(34px,4vw,52px) 0 0;
  margin-top: clamp(-52px, -4vw, -34px); padding-top: clamp(70px, 8vw, 110px); }

@media (max-width: 880px) {
  .navp__pill { padding: 8px 10px 8px 18px; }
  .navp__links { display: none; }
  .navp__burger { display: grid; place-items: center; width: 46px; height: 46px; border-radius: 50%;
    border: 1px solid rgba(255,255,255,.3); }
  .navp__burger span { display: block; width: 18px; height: 1.6px; background: #fff; margin: 2.4px 0; }
  .audit__grid { grid-template-columns: 1fr; gap: 30px; }
  .audit__title { padding-top: 28px; }
  /* Block 3 — центрирование «Связаться» на мобильном */
  .connect__body { flex-direction: column; align-items: center; text-align: center; }
  .connect__blob { order: -1; }
  .connect__content { display: flex; flex-direction: column; align-items: center; }
  .connect__queries { justify-content: center; }
  .connect__title { text-align: center; }
}

/* ============================================================
   Process v2 (dark, 2x2 "book" steps) — built to screen
   ============================================================ */
.process2 { background: #000; color: #fff; }
.process2__head { text-align: center; max-width: 900px; margin: 0 auto; }
.process2__eyebrow { font-size: clamp(15px, 1.3vw, 17px); font-weight: 600; color: #8a8a8a; margin-bottom: 22px; }
.process2__title { font-size: clamp(32px, 4.4vw, 58px); font-weight: 700; line-height: 1.08; letter-spacing: -.015em; }
.process2__title .dim { color: #6a6a6a; }
.process2__sub { color: rgba(255,255,255,.72); font-size: clamp(16px, 1.5vw, 20px); line-height: 1.45;
  max-width: 540px; margin: clamp(26px, 3vw, 38px) auto 0; }
.process2__grid { display: grid; grid-template-columns: 1fr 1fr;
  gap: clamp(56px, 8vw, 120px) clamp(40px, 8vw, 130px); margin-top: clamp(70px, 10vw, 140px); }
.proc-step { text-align: center; }
.proc-visual { position: relative; height: clamp(150px, 16vw, 210px); display: flex; align-items: center; justify-content: center;
  perspective: 900px; margin-bottom: clamp(28px, 3vw, 44px); }
/* 3D book placeholder */
.proc-book { position: relative; width: min(420px, 88%); height: clamp(120px, 13vw, 168px);
  transform: rotateX(52deg); transform-style: preserve-3d; border-radius: 9px; }
.proc-book__cover { position: absolute; inset: 0; border-radius: 9px 9px 6px 6px; overflow: hidden;
  box-shadow: 0 40px 80px -8px var(--glow, rgba(255,80,40,.55)); }
.proc-book__cover::before { content: ""; position: absolute; inset: 0; background: var(--cover, #e23b2e); }
.proc-book__cover::after { content: ""; position: absolute; inset: 0;
  background: radial-gradient(80% 130% at 50% -15%, rgba(255,255,255,.4), rgba(255,255,255,0) 62%),
              repeating-linear-gradient(118deg, rgba(0,0,0,.06) 0 2px, transparent 2px 18px); }
/* page edges along the front */
.proc-book__pages { position: absolute; left: 7px; right: 7px; bottom: -9px; height: 10px; border-radius: 0 0 6px 6px;
  background: repeating-linear-gradient(90deg, rgba(255,255,255,.8) 0 1.5px, rgba(120,120,120,.22) 1.5px 6px); opacity: .8; }
/* small logo chip on the spine corner */
.proc-book__chip { position: absolute; right: 16px; bottom: 14px; width: 44px; height: 44px; border-radius: 5px;
  background: rgba(0,0,0,.2); border: 1px solid rgba(255,255,255,.4); z-index: 2; }
.proc-badge { position: absolute; left: 50%; bottom: clamp(14px, 1.8vw, 26px); transform: translateX(-50%);
  display: inline-flex; align-items: center; gap: 14px; white-space: nowrap; z-index: 4;
  padding: 13px 26px 13px 15px; border-radius: 100px;
  background: rgba(46,44,42,.62); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
  border: 1px solid rgba(255,255,255,.14); font-size: clamp(15px, 1.4vw, 19px); font-weight: 600; }
.proc-badge__n { width: 30px; height: 30px; border-radius: 50%; border: 1.5px solid rgba(255,255,255,.5);
  display: grid; place-items: center; font-size: 14px; font-weight: 400; flex: none; }
.proc-desc { color: rgba(255,255,255,.76); font-size: clamp(15px, 1.4vw, 18px); line-height: 1.5;
  max-width: 380px; margin: 0 auto; text-wrap: balance; }

/* book color variants */
.proc-book--red  { --cover: linear-gradient(160deg,#f04437,#c81f15); --glow: rgba(240,70,45,.6); }
.proc-book--tan  { --cover: linear-gradient(160deg,#d49a5c,#b3743a); --glow: rgba(220,150,70,.5); }
.proc-book--bw   { --cover: linear-gradient(160deg,#f4f4f2,#d9d9d6); --glow: rgba(180,180,180,.32); }
.proc-book--pink { --cover: linear-gradient(160deg,#f0aecb,#dd87ad); --glow: rgba(235,140,180,.5); }
.proc-book--bw .proc-book__chip { background: rgba(0,0,0,.5); border-color: rgba(0,0,0,.4); }

@media (max-width: 760px) {
  .process2__grid { grid-template-columns: 1fr; gap: 54px; }
}

/* ============================================================
   Project form (horizontal, light) — built to screen
   ============================================================ */
.pform { background: #fff; }
.pform__head { display: grid; grid-template-columns: 1fr 1fr; align-items: start;
  gap: clamp(24px, 4vw, 56px); margin-bottom: clamp(40px, 5vw, 70px); }
.pform__title { font-size: clamp(32px, 4.2vw, 52px); font-weight: 500; line-height: 1.08; letter-spacing: -.02em; color: #000; }
.pform__desc { font-size: clamp(16px, 1.5vw, 20px); line-height: 1.45; color: #1f1f1f; max-width: 360px; justify-self: end; }
.pform__ring { position: relative; width: 210px; height: 210px; flex: none; }
.pform__ring .av { position: absolute; width: 52px; height: 52px; border-radius: 50%; overflow: hidden;
  box-shadow: 0 4px 14px rgba(0,0,0,.12); }
.pform__ring .av.big { width: 60px; height: 60px; }

.pform__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: clamp(22px, 2.4vw, 30px) clamp(20px, 2.2vw, 28px); }
.pf-field--wide { grid-column: span 2; }
.pf-label { display: block; font-size: clamp(16px, 1.4vw, 19px); font-weight: 700; color: #000; margin-bottom: 14px; }
.pf-input { width: 100%; background: #f1f1f0; border: none; border-radius: 20px; padding: 25px 28px;
  font-size: clamp(16px, 1.4vw, 18px); font-weight: 400; color: #000; transition: box-shadow .2s var(--ease); }
.pf-input::placeholder { color: #9c9c9c; }
.pf-input:focus { outline: none; box-shadow: inset 0 0 0 2px var(--accent-1); }
.pf-phone { display: flex; align-items: center; gap: 14px; background: #f1f1f0; border-radius: 20px; padding: 0 28px; }
.pf-phone:focus-within { box-shadow: inset 0 0 0 2px var(--accent-1); }
.pf-phone__flag { display: inline-flex; align-items: center; gap: 8px; flex: none; }
.pf-phone__flag .fl { width: 30px; height: 21px; border-radius: 4px; overflow: hidden;
  background: linear-gradient(to bottom, #fff 0 33.33%, #2a4fbf 33.33% 66.66%, #d52b1e 66.66% 100%);
  position: relative; }
.pf-phone__flag .fl::after { content: ""; position: absolute; inset: 0; border-radius: 4px; box-shadow: inset 0 0 0 1px rgba(0,0,0,.08); }
.pf-phone__flag svg { width: 14px; height: 14px; color: #6b6b6b; }
.pf-phone__pre { font-size: clamp(16px, 1.4vw, 18px); color: #000; font-weight: 400; }
.pf-phone input { flex: 1; background: none; border: none; padding: 25px 0; font-size: clamp(16px, 1.4vw, 18px); color: #000; }
.pf-phone input::placeholder { color: #9c9c9c; }
.pf-phone input:focus { outline: none; }
.pf-submit { grid-column: 1 / -1; margin-top: 10px; padding: 28px; font-size: clamp(15px, 1.5vw, 18px); border-radius: 100px; }

@media (max-width: 860px) {
  .pform__head { grid-template-columns: 1fr; justify-items: start; text-align: left; gap: 26px; }
  .pform__ring { order: -1; justify-self: center; margin-inline: auto; }
  .pform__grid { grid-template-columns: 1fr; }
  .pf-field--wide { grid-column: auto; }
}


/* ============================================================
   Доводка до эталона (TZ Claude Code): hero-видео, состояние
   шапки на скролле, переключатель языка, страницы кейсов, a11y
   ============================================================ */

/* ---- Hero background video (fallback to .facade behind it) ---- */
.hero__video {
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover; z-index: 1; background: transparent;
}
.facade { z-index: 0; }
.hero__bg::after { z-index: 2; } /* keep the darkening gradient above the video */

/* ---- Header state on scroll (floating pill) ---- */
.navp { transition: top .25s var(--ease); }
.navp.is-scrolled { top: 10px; }
.navp__pill { transition: background .25s var(--ease), box-shadow .25s var(--ease); }
.navp.is-scrolled .navp__pill {
  background: rgba(18,18,17,.82);
  box-shadow: 0 8px 30px rgba(0,0,0,.35);
}

/* ---- Language switcher RU | EN ---- */
.navp__lang { display: inline-flex; align-items: center; gap: 6px; margin: 0 4px 0 6px; }
.navp__lang-link {
  color: rgba(255,255,255,.6); font-size: 14px; font-weight: 600; letter-spacing: .04em;
  padding: 6px 8px; border-radius: 100px; transition: color .2s var(--ease), background .2s var(--ease);
}
.navp__lang-link:hover { color: #fff; }
.navp__lang-link.is-active { color: #fff; background: rgba(255,255,255,.14); }
.navp__lang-sep { color: rgba(255,255,255,.3); font-size: 13px; }
.mobile-menu__lang { display: flex; gap: 14px; align-items: center; margin-top: 22px; }
.mobile-menu__lang a { font-size: 20px; padding: 0; border: none; color: rgba(255,255,255,.55); }
.mobile-menu__lang a.is-active { color: #fff; }
.mobile-menu__lang span { color: rgba(255,255,255,.3); }
@media (max-width: 880px) {
  /* keep the language switch visible in the pill when links collapse */
  .navp__lang { display: none; }
}

/* ---- Case detail page ---- */
.case-hero { padding-top: 132px; }
.case-hero__eyebrow { font-size: 13px; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); }
.case-hero__title { margin: 14px 0 18px; }
.case-cover {
  margin: 36px 0; border-radius: var(--radius-card, 28px); overflow: hidden;
  aspect-ratio: 16 / 9; width: 100%;
}
.case-facts {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px;
  margin: 36px 0; padding: 28px; border: 1px solid var(--card-border, #eee);
  border-radius: var(--radius-card, 28px); background: var(--pill-bg, #f6f6f6);
}
.case-fact__n { font-size: clamp(28px, 4vw, 44px); font-weight: 600; line-height: 1; }
.case-fact__l { font-size: 14px; color: var(--muted); margin-top: 8px; }
.case-section { margin: 40px 0; }
.case-section h2 { font-size: clamp(20px, 2.4vw, 28px); font-weight: 500; margin-bottom: 14px; }
.case-section p { color: #333; line-height: 1.7; max-width: 760px; }
.case-gallery { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; margin: 36px 0; }
.case-gallery .ph { aspect-ratio: 4 / 3; border-radius: 20px; }
.case-cta { margin: 56px 0; text-align: center; }
@media (max-width: 760px) {
  .case-facts { grid-template-columns: 1fr; gap: 14px; text-align: left; }
  .case-gallery { grid-template-columns: 1fr; }
}

/* ---- Accessibility: visible keyboard focus ---- */
a:focus-visible,
button:focus-visible,
.btn:focus-visible,
input:focus-visible,
textarea:focus-visible,
.navp__lang-link:focus-visible,
[data-open]:focus-visible {
  outline: 2px solid var(--accent-1, #ff5a1f);
  outline-offset: 2px;
  border-radius: 6px;
}

/* ============================================================
   Доработка мобильной версии и анимаций (TZ блоки 1–6)
   ============================================================ */

/* ---- Block 1 · «Цифры»: стабильная сетка 2×2 на мобильном ---- */
@media (max-width: 594px) {
  .numbers__stage { grid-template-columns: 1fr 1fr; align-items: start; column-gap: 18px; row-gap: 30px; }
  .numbers__side { display: contents; }
  .numbers__center { grid-column: 1 / -1; order: 0; min-height: 150px; }
  /* 300+/350+ в первый ряд, 7+/20+ во второй */
  .numbers__side:first-of-type .stat:first-child { order: 1; }
  .numbers__side:last-of-type  .stat:first-child { order: 2; }
  .numbers__side:first-of-type .stat:last-child  { order: 3; }
  .numbers__side:last-of-type  .stat:last-child  { order: 4; }
}

/* ---- Block 2 · count-up: число полного размера, суффиксы (.6em) как были ---- */
.numbers .stat__n .count { font-size: 1em; font-weight: inherit; }

/* ---- Block 4 · Попап заявки целиком на одном экране (без внутреннего скролла) ---- */
@media (max-width: 600px) {
  .modal.modal--wide { padding: 16px; }
  .modal__close { margin: -2px -2px 0 0; width: 34px; height: 34px; font-size: 18px; }
  /* модалка вписывается в экран авто-масштабом (--mscale), поэтому контент
     НЕ режем: описание показываем, форма — в одну колонку, как в макете */
  .modal__lead-head { margin-bottom: 12px; gap: 8px; }
  .modal__lead-title { font-size: 24px; margin: 0; }
  .modal .pf-label { font-size: 13px; margin-bottom: 6px; }
  .modal .pf-input { padding: 11px 14px; border-radius: 14px; font-size: 15px; }
  .modal .pf-phone { padding: 0 14px; border-radius: 14px; }
  .modal .pf-phone input { padding: 11px 0; font-size: 15px; }
  .modal .pf-submit { padding: 13px; margin-top: 2px; font-size: 14px; }
}

/* ---- Block 5 · Стабилизация (CLS / без горизонтального скролла) ---- */
html, body { overflow-x: hidden; }
img, video { max-width: 100%; }
.team-card__photo, .case-card__media, .connect__blob, .case-cover { background: #ddd; }

/* ---- Block 6 · Больше движения при скролле ---- */
/* Параллакс декоративных слоёв (Y задаёт site.js через --parY) */
.numbers__swoosh { transform: translate(-50%, calc(-50% + var(--parY, 0px))) rotate(-16deg); }
.audit__beam { transform: translate3d(0, var(--parY, 0px), 0); will-change: transform; }

/* «Дышащее» свечение блоба в «Связаться» — едва заметно */
@keyframes blobBreathe { 0%,100% { transform: scale(1); filter: brightness(1); } 50% { transform: scale(1.012); filter: brightness(1.05); } }
.connect__blob { animation: blobBreathe 8s ease-in-out infinite; will-change: transform, filter; }

/* Прорисовка эллипса «Цифр» при появлении (дуга в hero убрана) */
.numbers__swoosh ellipse { stroke-dasharray: 1400; stroke-dashoffset: 1400; transition: stroke-dashoffset 1.2s var(--ease) .15s; }
.numbers__center.is-in .numbers__swoosh ellipse { stroke-dashoffset: 0; }

/* Стаггер-появление плашек услуг — короткий, ровный шаг */
.svc-stack .svc-plate.reveal:nth-child(2) { transition-delay: .04s; }
.svc-stack .svc-plate.reveal:nth-child(3) { transition-delay: .08s; }
.svc-stack .svc-plate.reveal:nth-child(4) { transition-delay: .12s; }
.svc-stack .svc-plate.reveal:nth-child(5) { transition-delay: .14s; }
.svc-stack .svc-plate.reveal:nth-child(6) { transition-delay: .16s; }
.svc-stack .svc-plate.reveal:nth-child(7) { transition-delay: .18s; }
.svc-stack .svc-plate.reveal:nth-child(8) { transition-delay: .20s; }
.svc-stack .svc-plate.reveal:nth-child(9) { transition-delay: .22s; }

/* Reduced-motion: всё новое движение выключаем */
@media (prefers-reduced-motion: reduce) {
  .connect__blob { animation: none; }
  .hero__arc path, .numbers__swoosh ellipse { stroke-dasharray: none; stroke-dashoffset: 0; transition: none; }
  .svc-stack .svc-plate.reveal { transition-delay: 0s !important; }
  /* параллакс не запускается (site.js проверяет prefers-reduced-motion); --parY остаётся 0 */
}

/* ============================================================
   Блок «Полезные статьи» — превью постов блога на главной
   (тянется из Supabase в site.js; карточки в стиле сайта)
   ============================================================ */
.blog-teasers { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
.blog-teaser { display: flex; flex-direction: column; background: #fff; border: 1px solid #e9e9e9;
  border-radius: var(--radius-inner); overflow: hidden; box-shadow: 0 4px 5px rgba(0,0,0,.05);
  transition: transform .25s var(--ease), box-shadow .25s var(--ease), border-color .25s var(--ease); }
.blog-teaser:hover { transform: translateY(-3px); box-shadow: 0 22px 50px -30px rgba(0,0,0,.3); border-color: rgba(0,0,0,.14); }
.blog-teaser__media { aspect-ratio: 16/10; background: linear-gradient(135deg, #2a2622, #15130f);
  background-size: cover; background-position: center; }
.blog-teaser__body { padding: 20px 22px 24px; display: flex; flex-direction: column; gap: 9px; flex: 1; }
.blog-teaser__cat { font-size: 12px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: var(--accent-1); }
.blog-teaser__title { font-size: 18px; font-weight: 500; line-height: 1.25; color: #111; }
.blog-teaser__excerpt { font-size: 14px; color: var(--muted); line-height: 1.5; }
.blog-teaser__meta { margin-top: auto; padding-top: 6px; font-size: 12px; color: var(--muted); }
@media (max-width: 880px) { .blog-teasers { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .blog-teasers { grid-template-columns: 1fr; } }
