/* ============================================================
   Cybernex — общие стили
   Собрано из дизайна Claude Design в единый сайт
   ============================================================ */

:root{
  --ink:#111111;
  --blue:#2733e3;
  --dark:#0c0c0c;
  --bg:#ffffff;
  --mono:'JetBrains Mono',monospace;
  --sans:'Helvetica Neue',Helvetica,Arial,sans-serif;
  --ticker-dur:45s;
}

*{box-sizing:border-box}
html,body{margin:0;padding:0;background:var(--bg);color:var(--ink);
  font-family:var(--sans);-webkit-font-smoothing:antialiased}
html{color-scheme:light}
html[data-theme="dark"]{color-scheme:dark}
a{color:var(--ink);text-decoration:none;transition:color .15s ease,background .15s ease}
a:hover{color:var(--blue)}
::selection{background:var(--blue);color:#ffffff}
img{max-width:100%;display:block}
h1,h2,h3,h4{text-wrap:balance}
/* Палец не наводится, он нажимает: серый прямоугольник от системы заменяем
   собственным откликом, иначе нажатие выглядит как промах. */
a,button{-webkit-tap-highlight-color:transparent}
/* Точки под полосой карточек: сама полоса существует только на телефоне,
   и точки вместе с ней. */
.slider-dots{display:none}

.page{min-width:1200px;background:var(--bg);overflow-x:clip}

/* ---------- Header (injected by site.js) ---------- */
.site-header{display:flex;align-items:center;justify-content:space-between;
  padding:0 48px;height:110px;position:sticky;top:0;background:var(--bg);z-index:70}
.logo{font-size:22px;font-weight:500;letter-spacing:0.32em;color:var(--ink)}
.logo:hover{color:var(--ink)}
.main-nav{display:flex;align-items:center;gap:48px;font-size:20px;color:var(--ink)}
.nav-links{display:flex;align-items:center;gap:48px}
.nav-actions{display:flex;align-items:center;gap:10px}
.nav-ai{display:flex;align-items:flex-start;gap:4px}
.nav-ai .dot{width:7px;height:7px;border-radius:50%;background:var(--blue);margin-top:2px}
.main-nav a.is-active{color:var(--blue)}
.menu-btn{width:44px;height:44px;background:#16181c;border:0;padding:0;cursor:pointer;
  display:flex;flex-direction:column;justify-content:center;align-items:center;gap:4px}
.menu-btn:hover{background:var(--blue)}
.menu-btn span{width:18px;height:1.5px;background:#fff}

/* ---------- Fixed CTA (injected) ---------- */
.cta-fixed{position:fixed;left:0;bottom:0;z-index:60;background:var(--blue);
  color:#fff;padding:22px 44px;font-size:20px}
.cta-fixed:hover{background:var(--ink);color:#fff}

/* ---------- Mobile / full menu overlay (injected) ---------- */
.menu-overlay{position:fixed;inset:0;z-index:100;background:#1e2023;color:#fff;overflow:auto;display:none}
.menu-overlay.open{display:block}
.menu-overlay .inner{min-width:1200px}
.menu-top{display:flex;align-items:center;justify-content:space-between;padding:0 48px;height:110px}
.menu-top .logo{color:#fff}
.menu-top .logo:hover{color:#fff}
.menu-close{width:52px;height:52px;border:1px solid rgba(255,255,255,0.4);display:grid;
  place-items:center;cursor:pointer;font-size:22px;color:#fff;background:transparent}
.menu-close:hover{background:#fff;color:#111}
.menu-cols{display:grid;grid-template-columns:1fr 1.25fr 1fr;gap:70px;padding:20px 48px 90px}
.menu-label{border-top:1px solid rgba(255,255,255,0.35);padding-top:16px;font-family:var(--mono);
  font-size:12px;letter-spacing:0.12em;color:#9aa0a6}
.menu-labelrow{display:flex;justify-content:space-between;align-items:baseline}
.menu-labelrow a{font-family:var(--mono);font-size:12px;letter-spacing:0.12em;color:#fff;text-decoration:underline}
.menu-labelrow a:hover{color:#8FBFE8}
.menu-nav{display:flex;flex-direction:column;gap:22px;margin-top:44px}
.menu-nav a{font-size:42px;font-weight:500;letter-spacing:-0.02em;color:#fff}
.menu-nav a:hover{color:#8FBFE8}
.menu-nav a.sub{font-size:30px;font-weight:400;letter-spacing:-0.01em;display:flex;gap:14px}
.menu-nav a.sub .arr{color:#9aa0a6}
.menu-nav a.mt{margin-top:14px}
.menu-news{display:grid;grid-template-columns:1fr 1fr;gap:36px;margin-top:44px}
.menu-news a{display:flex;flex-direction:column;gap:16px;color:#fff}
.menu-news a:hover{color:#fff}
.menu-news .thumb{height:170px;border:1px solid rgba(255,255,255,0.18);
  background:repeating-linear-gradient(45deg,rgba(255,255,255,0.05) 0 2px,transparent 2px 16px);
  display:grid;place-items:center}
.menu-news .thumb span{font-family:var(--mono);font-size:12px;color:#787f86}
.menu-news .date{font-family:var(--mono);font-size:12px;letter-spacing:0.08em;color:#9aa0a6}
.menu-news .title{font-size:20px;font-weight:500;line-height:1.25}
.menu-news p{margin:0;font-size:15px;line-height:1.5;color:#b9bec4;text-wrap:pretty}
.menu-news .read{font-size:15px;color:#fff;text-decoration:underline}
.menu-news .read .arr{color:#9aa0a6}
.menu-right{display:flex;flex-direction:column;justify-content:space-between;gap:60px}
.menu-right p{margin:44px 0 20px;font-size:19px;line-height:1.5;color:#e8eaed;text-wrap:pretty}
.menu-right .more{font-size:16px;color:#fff;text-decoration:underline}
.menu-right .more:hover{color:#8FBFE8}
.menu-right .more .arr{color:#9aa0a6}
.menu-globe{width:100%;height:300px;display:block;margin-top:28px}
.menu-quick{display:flex;flex-direction:column;gap:14px;margin-top:28px;font-size:17px}
.menu-quick a{color:#e8eaed}
.menu-quick a:hover{color:#8FBFE8}

/* Телефонная часть меню. На широком экране её нет: список услуг стоит в
   соседних колонках, а «обсудить проект» — в закреплённой кнопке. На узком
   ни того, ни другого не видно, и меню обязано отвечать за оба. */
.menu-row{display:flex;align-items:center;justify-content:space-between;gap:16px}
.menu-more{display:none;width:44px;height:44px;flex:0 0 auto;background:transparent;
  border:1px solid rgba(255,255,255,0.35);color:#fff;font:400 26px/1 var(--mono);cursor:pointer}
.menu-sub{display:flex;flex-direction:column;gap:16px;margin:2px 0 6px}
.menu-sub[hidden]{display:none}
.menu-sub a{font-size:19px;font-weight:400;letter-spacing:0;color:#c9cdd1;display:flex;gap:10px}
.menu-sub .arr{color:#787f86}
.menu-cta{display:none;margin-top:36px}
.menu-cta-btn{display:block;background:var(--blue);color:#fff;text-align:center;
  padding:19px 20px;font-size:17px}
.menu-cta-btn:hover,.menu-cta-btn:active{color:#fff;background:#1c25b8}
.menu-contact{display:block;margin-top:16px;font-family:var(--mono);font-size:14px;
  line-height:1.5;color:#c9cdd1}

/* ---------- Hero (simple pages) ---------- */
.hero{padding:70px 48px 60px;display:grid;grid-template-columns:1fr 560px;gap:80px;align-items:end}
.hero.solo{display:block;padding-bottom:50px}
.hero h1{margin:0;font-size:110px;line-height:1.0;font-weight:500;letter-spacing:-0.03em}
.hero p{margin:0 0 12px;font-size:19px;line-height:1.5;color:var(--ink);text-wrap:pretty}

.eyebrow{font-family:var(--mono);font-size:15px;color:#9b9b9b}

/* ---------- Home hero ---------- */
.home-hero{padding:70px 48px 0}
.home-hero h1{margin:0;font-size:110px;line-height:1.0;font-weight:500;letter-spacing:-0.03em;max-width:1300px}
.ticker{overflow:hidden;padding:44px 0 36px;white-space:nowrap}
.ticker-track{display:inline-flex;gap:14px;padding-left:48px;
  animation:ticker var(--ticker-dur) linear infinite}
.ticker-track span{font-family:var(--mono);font-size:15px;color:var(--ink);border:1px solid #c9c9c9;padding:10px 18px}
@keyframes ticker{from{transform:translateX(0)}to{transform:translateX(-50%)}}
/* Hero-слайдер */
.hero-slider{height:620px;position:relative;overflow:hidden;
  background:var(--dark) repeating-linear-gradient(45deg,rgba(255,255,255,0.05) 0 2px,transparent 2px 16px)}
/* Сеть под слайдером: видна сквозь третий слайд, у которого нет фоновой картинки */
.hero-net{position:absolute;inset:0;width:100%;height:100%;display:block;
  opacity:0;transition:opacity 700ms ease;pointer-events:none}
.hero-net.on{opacity:1}
.hero-slides{position:absolute;inset:0}
.hero-slide{position:absolute;inset:0;opacity:0;transition:opacity 700ms ease;
  background-size:cover;background-position:center}
.hero-slide.is-active{opacity:1}
.hero-slide-ov{position:absolute;inset:0;
  background:linear-gradient(90deg,rgba(8,9,11,0.88) 0%,rgba(8,9,11,0.55) 45%,rgba(8,9,11,0.25) 100%)}
.hero-slide-body{position:absolute;left:48px;bottom:56px;max-width:660px;color:#fff}
.hero-slide-body .kicker{font-family:var(--mono);font-size:13px;letter-spacing:0.12em;color:#9aa0a6;margin-bottom:18px}
.hero-slide-body h2{margin:0 0 16px;font-size:52px;font-weight:500;letter-spacing:-0.025em;line-height:1.08}
.hero-slide-body p{margin:0 0 22px;font-size:18px;line-height:1.5;color:#d6d6d6;text-wrap:pretty}
.hero-link{font-family:var(--mono);font-size:16px;color:#fff;text-decoration:underline}
.hero-link:hover{color:#8FBFE8}
.hero-tabs{position:absolute;top:36px;right:48px;display:flex;gap:10px;z-index:5}
.hero-tab{width:210px;cursor:pointer;background:rgba(12,13,15,0.55);backdrop-filter:blur(6px);
  border:1px solid rgba(255,255,255,0.28);padding:14px 16px 12px;display:flex;flex-direction:column;gap:12px;
  text-align:left;color:inherit;font:inherit}
.hero-tab:hover{border-color:rgba(255,255,255,0.7)}
.hero-tab span{font-family:var(--mono);font-size:12px;letter-spacing:0.06em;color:#b9bec4;line-height:1.3}
.hero-tab.is-active span{color:#fff}
.hero-tab .bar{height:2px;background:rgba(255,255,255,0.28);position:relative}
.hero-tab .fill{position:absolute;left:0;top:0;bottom:0;background:#fff;width:0}

.feature-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}

.feature-head{border-top:1px solid #111;display:grid;grid-template-columns:1fr 480px;gap:60px;
  align-items:center;padding:44px 48px}
.feature-head h3{margin:0;font-size:64px;font-weight:500;letter-spacing:-0.03em;line-height:1.05}
.feature-head .links{font-family:var(--mono);font-size:17px;display:flex;flex-direction:column;gap:8px}
.feature-head .links a{color:var(--blue)}
.feature-split{height:560px;background:var(--dark);position:relative;display:grid;grid-template-columns:1fr 500px}
.feature-media{position:relative;display:grid;place-items:center}
.feature-media>span{font-family:var(--mono);font-size:14px;color:#666}
.feature-media .tags{position:absolute;left:36px;top:36px;display:flex;gap:10px;flex-wrap:wrap}
.feature-media .tags span{font-family:var(--mono);font-size:14px;color:#fff;
  border:1px solid rgba(255,255,255,0.6);padding:8px 16px}
.feature-info{background:#111;color:#fff;padding:56px 48px;display:flex;flex-direction:column;
  justify-content:flex-end;gap:20px}
.feature-info h4{margin:0;font-size:34px;font-weight:500;letter-spacing:-0.02em}
.feature-info p{margin:0;font-family:var(--mono);font-size:15px;line-height:1.6;color:#d6d6d6}
.feature-info ul{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:10px;
  font-family:var(--mono);font-size:14px;line-height:1.5;color:#d6d6d6}
.feature-info li{display:flex;gap:10px}
.feature-info .link{font-family:var(--mono);font-size:17px;color:#b06fe8}

/* ---------- Solutions grid (dark) ---------- */
.solutions{background:var(--dark);color:#fff}
.solutions-meta{display:flex;align-items:baseline;justify-content:space-between;padding:50px 48px}
.solutions-meta.tall{padding:70px 48px 50px}
.solutions-meta span{font-family:var(--mono);font-size:14px;color:#5a616a}
.solutions-meta h2{margin:0;font-size:64px;font-weight:500;letter-spacing:-0.03em;color:#fff}
.solutions-grid{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid rgba(255,255,255,0.14)}
.product{border-right:1px solid rgba(255,255,255,0.14);border-bottom:1px solid rgba(255,255,255,0.14);
  padding:40px 48px;display:flex;flex-direction:column;gap:20px}
.solutions-grid .product:nth-child(2n){border-right:0}
.product .media{height:200px;border:1px solid rgba(255,255,255,0.12);
  background:repeating-linear-gradient(45deg,rgba(255,255,255,0.04) 0 2px,transparent 2px 16px);
  display:grid;place-items:center}
.product .media span{font-family:var(--mono);font-size:13px;color:#5a616a}
/* Карточка с живым холстом вместо заглушки */
.product .media.live{position:relative;display:block;overflow:hidden;
  background:#0f1114;border-color:rgba(255,255,255,0.12)}
.product .media.live canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
.product .media.live .lbl{position:absolute;left:14px;top:12px;font-family:var(--mono);
  font-size:11px;letter-spacing:0.1em;color:rgba(143,191,232,0.75);pointer-events:none}
/* у воронки сверху свои подписи колонок — уводим метку вниз */
.product .media.live .lbl.low{top:auto;bottom:12px}
.product .tags{display:flex;gap:8px;flex-wrap:wrap}
.product .tag{font-family:var(--mono);font-size:12px;color:#8FBFE8;
  border:1px solid rgba(143,191,232,0.35);padding:5px 12px}
.product h3{margin:0;font-size:30px;font-weight:500;letter-spacing:-0.01em;color:#fff}
.product p{margin:0;font-size:16px;line-height:1.55;color:#b9b9b9;text-wrap:pretty}
.product .to-solution{font-family:var(--mono);font-size:14px;color:#8FBFE8;margin-top:auto}
.product .to-solution:hover{color:#fff}

/* ---------- Industries / two-col list sections ---------- */
.split{display:grid;grid-template-columns:1fr 1.4fr;gap:80px;padding:100px 48px 60px}
.split.bordered{padding:60px 48px;border-top:1px solid #111}
.split-sticky{margin:0;font-size:64px;font-weight:500;letter-spacing:-0.03em;position:sticky;top:140px;align-self:start}
.split-label{font-family:var(--mono);font-size:15px;color:#9b9b9b;position:sticky;top:140px}
.list-item{border-top:1px solid #e2e2e2;padding:30px 0}
.list-item.lg{padding:32px 0}
.list-item .num{font-family:var(--mono);font-size:15px;color:#9b9b9b}
.list-item h3{margin:16px 0 12px;font-size:30px;font-weight:500;letter-spacing:-0.02em}
.list-item.lg h3{font-size:32px}
.list-item p{margin:0;font-size:17px;line-height:1.55;color:var(--ink);max-width:680px;text-wrap:pretty}
.list-item .more{font-family:var(--mono);font-size:15px;color:var(--blue)}

/* ---------- Home services + reviews ---------- */
.services-block{display:grid;grid-template-columns:1fr 1.1fr;gap:80px;padding:130px 48px 90px}
.services-block h2{margin:0;font-size:80px;font-weight:500;letter-spacing:-0.03em;position:sticky;top:140px}
.services-block .lead{margin:0 0 24px;font-size:19px;line-height:1.5;color:#111;max-width:640px;text-wrap:pretty}
.services-block .all-link{font-family:var(--mono);font-size:17px;color:var(--blue)}
.services-list{margin-top:50px}
.services-list .list-item{border-top:1px solid #111;padding:36px 0}
.services-list .list-item h3{margin:18px 0 14px;font-size:32px}
.services-list .list-item p{max-width:640px}

.reviews{padding:0 48px 70px}
.reviews .eyebrow{margin-bottom:36px}
.reviews-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:18px}
.review{background:#f1f1f0;clip-path:polygon(0 0,calc(100% - 28px) 0,100% 28px,100% 100%,0 100%);
  padding:26px 24px;display:flex;flex-direction:column;gap:70px;min-height:380px}
.review .client{font-family:var(--mono);font-size:15px;letter-spacing:0.06em;color:#111}
.review .body{display:flex;flex-direction:column;gap:18px;margin-top:auto}
.review p{margin:0;font-size:15px;line-height:1.55;color:#6d6d6d;text-wrap:pretty}
.review .who{font-family:var(--mono);font-size:13px;color:#9b9b9b;line-height:1.5}

/* ---------- Cases ---------- */
.cases-hero{padding:70px 48px 50px}
.cases-hero h1{margin:0 0 44px;font-size:110px;line-height:1.0;font-weight:500;letter-spacing:-0.03em}
.filters{display:flex;gap:12px;flex-wrap:wrap}
.filter{font-family:var(--mono);font-size:15px;cursor:pointer;background:#fff;color:#111;
  border:1px solid #c9c9c9;padding:10px 20px}
.filter.is-active{background:#111;color:#fff}
.cases-grid{border-top:1px solid #111;display:grid;grid-template-columns:1fr 1fr}
.case{border-bottom:1px solid #e2e2e2;border-right:1px solid #e2e2e2;padding:40px 48px;
  display:flex;flex-direction:column;gap:18px;color:#111}
.cases-grid .case:nth-child(2n){border-right:0}
.case:hover{background:#f7f7f6;color:#111}
.case .media{height:260px;background:repeating-linear-gradient(45deg,rgba(0,0,0,0.04) 0 2px,transparent 2px 16px);
  border:1px solid #e2e2e2;display:grid;place-items:center}
.case .media span{font-family:var(--mono);font-size:13px;color:#9b9b9b}
.case .client{font-family:var(--mono);font-size:14px;letter-spacing:0.08em;color:#9b9b9b}
.case h3{margin:0;font-size:30px;font-weight:500;letter-spacing:-0.02em;line-height:1.15}
.case .tags{display:flex;gap:8px;flex-wrap:wrap;margin-top:auto}
.case .tag{font-family:var(--mono);font-size:12px;color:var(--blue);border:1px solid rgba(39,51,227,0.3);padding:5px 12px}

/* ---------- About ---------- */
.about-hero{padding:70px 48px 60px}
.about-hero h1{margin:0;font-size:76px;line-height:1.05;font-weight:500;letter-spacing:-0.03em;max-width:1400px}
.about-text{display:flex;flex-direction:column;gap:32px;font-size:21px;line-height:1.55;max-width:720px}
.about-text p{margin:0;text-wrap:pretty}

/* ---------- «О нас»: принципы, шкала проекта, город, экспертиза ----------
   Раскладка из макета Claude Design («О нас»). Заголовок раздела там —
   повторяющаяся строка «крупный h2 слева, мелкая подпись справа», поэтому
   она вынесена в один класс, а не набрана заново в каждой секции. */
.sec-head{display:flex;align-items:baseline;justify-content:space-between;gap:24px;
  padding:56px 48px 44px}
.sec-head h2{margin:0;font-size:64px;font-weight:500;letter-spacing:-0.03em}
.sec-head span{font-family:var(--mono);font-size:14px;color:#9b9b9b;white-space:nowrap}
.dark-block{background:var(--dark);color:#fff;border-top:1px solid #111}
.dark-block .sec-head h2{color:#fff}
.dark-block .sec-head span{color:#5a616a}

.principles{display:grid;grid-template-columns:repeat(3,1fr);
  border-top:1px solid rgba(255,255,255,0.14)}
.principle{border-right:1px solid rgba(255,255,255,0.14);padding:40px 48px 48px;
  display:flex;flex-direction:column;gap:18px}
.principle:last-child{border-right:0}
.principle .num{font-family:var(--mono);font-size:14px;color:#8FBFE8}
.principle h3{margin:0;font-size:28px;font-weight:500;letter-spacing:-0.02em;color:#fff}
.principle p{margin:0;font-size:16px;line-height:1.55;color:#b9b9b9;text-wrap:pretty}

/* Шкала: линия — это верхняя граница сетки, засечка — квадрат на ней.
   Поэтому у шага нет своей линии, и шкала не рассыпается на отрезки. */
.path{padding:100px 48px 80px}
.path .sec-head{padding:0 0 44px}
.path-grid{display:grid;grid-template-columns:repeat(5,1fr);border-top:1px solid #111}
.path-step{border-right:1px solid #e2e2e2;padding:0 28px 32px;position:relative;
  display:flex;flex-direction:column;gap:14px}
.path-step:last-child{border-right:0}
.path-step::before{content:'';position:absolute;left:-5px;top:-5px;
  width:9px;height:9px;background:var(--blue)}
.path-step .stage{font-family:var(--mono);font-size:15px;color:var(--blue);margin-top:22px}
.path-step h3{margin:0;font-size:22px;font-weight:500;letter-spacing:-0.02em;
  line-height:1.2;text-wrap:balance}
.path-step p{margin:0;font-size:15px;line-height:1.5;color:#555;text-wrap:pretty}

/* Город: тот же приём, что у сетки на главной — рисунок живёт в canvas,
   а поверх лежат подписи направлений. */
.city-split{background:var(--dark);border-top:1px solid #111;
  display:grid;grid-template-columns:1fr 500px}
.city{position:relative;height:560px;overflow:hidden}
.city canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
.city-tags{position:absolute;left:36px;right:36px;top:36px;z-index:2;
  display:flex;flex-wrap:wrap;gap:10px}
.city-tags span{font-family:var(--mono);font-size:14px;color:#fff;
  border:1px solid rgba(255,255,255,0.6);padding:8px 16px}
.city-stats{border-left:1px solid rgba(255,255,255,0.14);
  display:grid;grid-template-rows:repeat(4,1fr)}
.cstat{border-bottom:1px solid rgba(255,255,255,0.14);padding:22px 40px;
  display:flex;flex-direction:column;justify-content:center;gap:6px}
.cstat .value{font-size:44px;font-weight:500;letter-spacing:-0.02em;color:#fff}
.cstat .label{font-family:var(--mono);font-size:13px;color:#8b9298;line-height:1.4}

.badges-sec{border-top:1px solid #111;padding:60px 48px 70px}
.badges-sec .sec-head{padding:0 0 40px}
.badges{display:flex;flex-wrap:wrap;gap:14px}
.badge{display:flex;align-items:baseline;gap:14px;border:1px solid #111;
  padding:16px 22px;color:var(--ink)}
.badge:hover{background:#111;color:#fff}
.badge .count{font-size:30px;font-weight:500;letter-spacing:-0.02em;line-height:1}
.badge .name{font-family:var(--mono);font-size:14px;letter-spacing:0.02em}

/* ---------- Blog ---------- */
.blog-hero{padding:70px 48px 50px}
.blog-hero h1{margin:0;font-size:110px;line-height:1.0;font-weight:500;letter-spacing:-0.03em}
.blog-feature{border-top:1px solid #111;display:grid;grid-template-columns:1.4fr 1fr}
.blog-lead{border-right:1px solid #e2e2e2;padding:48px;display:flex;flex-direction:column;gap:22px;color:#111}
.blog-lead:hover{background:#f7f7f6;color:#111}
.blog-lead .cover{height:420px;background:repeating-linear-gradient(45deg,rgba(0,0,0,0.04) 0 2px,transparent 2px 16px);
  border:1px solid #e2e2e2;display:grid;place-items:center}
.blog-lead .cover span{font-family:var(--mono);font-size:13px;color:#9b9b9b}
.blog-lead .date{font-family:var(--mono);font-size:14px;color:#9b9b9b}
.blog-lead h2{margin:0;font-size:44px;font-weight:500;letter-spacing:-0.02em;line-height:1.1}
.blog-side{display:flex;flex-direction:column}
.blog-side a{border-bottom:1px solid #e2e2e2;padding:36px 48px;display:flex;flex-direction:column;gap:14px;color:#111;flex:1}
.blog-side a:hover{background:#f7f7f6;color:#111}
.blog-side .date{font-family:var(--mono);font-size:14px;color:#9b9b9b}
.blog-side h3{margin:0;font-size:26px;font-weight:500;letter-spacing:-0.02em;line-height:1.2}
.blog-older{border-top:1px solid #111;display:grid;grid-template-columns:repeat(3,1fr)}
.blog-card{border-right:1px solid #e2e2e2;border-bottom:1px solid #e2e2e2;padding:40px 48px;
  display:flex;flex-direction:column;gap:16px;color:#111}
.blog-older .blog-card:nth-child(3n){border-right:0}
.blog-card:hover{background:#f7f7f6;color:#111}
.blog-card .cover{height:200px;background:repeating-linear-gradient(45deg,rgba(0,0,0,0.04) 0 2px,transparent 2px 16px);
  border:1px solid #e2e2e2;display:grid;place-items:center}
.blog-card .cover span{font-family:var(--mono);font-size:13px;color:#9b9b9b}
.blog-card .date{font-family:var(--mono);font-size:14px;color:#9b9b9b}
.blog-card h3{margin:0;font-size:24px;font-weight:500;letter-spacing:-0.02em;line-height:1.2}
.blog-tag{font-family:var(--mono);font-size:12px;color:var(--blue);border:1px solid rgba(39,51,227,0.3);padding:5px 12px}
.tags{display:flex;gap:8px;flex-wrap:wrap;margin-top:auto}

/* ---------- Contact CTAs ---------- */
.contact{padding:40px 48px 40px}
.contact.tight{padding:0 48px 40px}
.contact.pad{padding:60px 48px 40px}
.contact-row{border-top:1px solid #d7d7d7;padding-top:26px;display:grid;grid-template-columns:1fr 1fr;gap:22px}
.big-cta{display:flex;justify-content:space-between;align-items:flex-start;
  padding:30px 36px 120px;font-size:46px;font-weight:500;letter-spacing:-0.02em}
.big-cta span{font-weight:400}
.big-cta.light{background:#dededd;color:var(--ink)}
.big-cta.light:hover{background:#d2d2d0;color:var(--ink)}
.big-cta.dark{background:#16181c;color:#fff}
.big-cta.dark:hover{background:var(--blue);color:#fff}

/* ---------- Contact modal (injected) ----------
   Оверлей заявки. Открывается с любой страницы, поэтому вёрстку страниц
   не трогает вовсе. Шапку переиспользует из меню (.menu-top / .menu-close). */
.contact-modal{position:fixed;inset:0;z-index:110;background:#1e2023;color:#fff;overflow:auto;display:none}
.contact-modal.open{display:block}
.contact-modal .inner{min-width:1200px}
.cf-cols{display:grid;grid-template-columns:1fr 1.25fr;gap:70px;padding:20px 48px 90px;align-items:start}
.cf-intro h2{margin:0 0 22px;font-size:56px;line-height:1.05;font-weight:500;letter-spacing:-0.02em}
.cf-intro p{margin:0;max-width:430px;font-size:17px;line-height:1.6;color:#9aa0a6}
.cf-steps{margin-top:44px;display:flex;flex-direction:column;gap:16px}
.cf-step{display:flex;gap:14px;font-family:var(--mono);font-size:13px;line-height:1.5;
  letter-spacing:0.04em;color:#9aa0a6}
.cf-step b{flex:0 0 auto;font-weight:400;color:#fff}
.cf-field{margin-bottom:26px}
.cf-field>label{display:block;margin-bottom:10px;font-family:var(--mono);font-size:12px;
  letter-spacing:0.12em;color:#9aa0a6}
.cf-field input,.cf-field textarea{width:100%;padding:14px 16px;background:transparent;
  border:1px solid rgba(255,255,255,0.28);color:#fff;font-family:var(--sans);font-size:17px;outline:none}
.cf-field textarea{min-height:150px;resize:vertical}
.cf-field input:focus,.cf-field textarea:focus{border-color:var(--blue)}
.cf-field input::placeholder,.cf-field textarea::placeholder{color:#6c7278}
.cf-two{display:grid;grid-template-columns:1fr 1fr;gap:22px}
.cf-chips{display:flex;gap:12px;flex-wrap:wrap}
.cf-chip{font-family:var(--mono);font-size:14px;cursor:pointer;background:transparent;color:#c9cdd1;
  border:1px solid rgba(255,255,255,0.28);padding:10px 18px}
.cf-chip:hover{border-color:#ffffff;color:#ffffff}
.cf-chip.is-active,.cf-chip.is-active:hover{background:#ffffff;border-color:#ffffff;color:#111111}
.cf-consent{display:flex;align-items:flex-start;gap:12px;font-family:var(--mono);font-size:13px;
  line-height:1.5;color:#9aa0a6}
.cf-consent input{flex:0 0 auto;width:16px;height:16px;margin-top:2px;accent-color:var(--blue)}
.cf-error{display:block;margin-top:8px;font-family:var(--mono);font-size:12px;color:#ff7a6b}
.cf-submit{margin-top:30px;padding:20px 44px;background:var(--blue);border:0;cursor:pointer;
  color:#ffffff;font-family:var(--sans);font-size:20px}
.cf-submit:hover{background:#ffffff;color:#111111}
.cf-submit:disabled{opacity:0.55;cursor:default}
.cf-submit:disabled:hover{background:var(--blue);color:#ffffff}
.cf-done{max-width:640px;padding:40px 48px 140px}
.cf-done h2{margin:0 0 22px;font-size:56px;line-height:1.05;font-weight:500;letter-spacing:-0.02em}
.cf-done p{margin:0;font-size:17px;line-height:1.6;color:#9aa0a6}
.cf-done a{color:#ffffff;text-decoration:underline}

/* ---------- Footer (injected) ---------- */
.site-footer{padding:40px 48px 90px}
.footer-simple{border-top:1px solid #d7d7d7;padding-top:40px;display:flex;justify-content:space-between;
  font-family:var(--mono);font-size:13px;color:#9b9b9b;gap:24px;flex-wrap:wrap}
.site-footer.full{padding:60px 48px 90px}
.footer-grid{border-top:1px solid #d7d7d7;padding-top:56px;display:grid;
  grid-template-columns:1.6fr 1fr 1fr;gap:60px;align-items:start}
.footer-brand{display:flex;flex-direction:column;align-items:flex-start}
.footer-brand .copy{font-size:17px;line-height:1.5;color:#111}
.footer-brand .divide{border-top:1px solid #d7d7d7;margin-top:26px;padding-top:22px;width:260px;font-size:16px;color:#111}
.footer-brand .langs{border-top:1px solid #d7d7d7;margin-top:22px;padding-top:22px;width:260px;display:flex;gap:18px;font-size:16px}
.footer-brand .langs a.dim{color:#9b9b9b}
.footer-social{border-top:1px solid #d7d7d7;margin-top:22px;padding-top:30px;display:flex;flex-direction:column;gap:14px}
.footer-social a{font-family:var(--mono);font-size:13px;letter-spacing:0.08em;border:1px solid #111;
  border-radius:999px;padding:12px 0;width:170px;text-align:center}
.footer-social a:hover{background:#111;color:#fff}
.footer-col .col-title{font-family:var(--mono);font-size:13px;letter-spacing:0.1em;color:#9b9b9b;margin-bottom:24px}
.footer-col .col-links{display:flex;flex-direction:column;gap:14px;font-size:17px}
.footer-bottom{margin-top:70px;display:flex;justify-content:space-between;
  font-family:var(--mono);font-size:13px;color:#9b9b9b;gap:24px;flex-wrap:wrap}

/* ============================================================
   Контакты
   ============================================================ */
.contact-lead{padding:44px 48px 20px;display:grid;grid-template-columns:1fr 480px;gap:80px;align-items:end}
.contact-lead p{margin:0 0 12px;font-size:19px;line-height:1.5;text-wrap:pretty}
.contact-grid{padding:20px 48px 40px;display:grid;grid-template-columns:1fr 1fr;gap:22px}
.contact-tile{border:1px solid #111;padding:36px;display:flex;flex-direction:column;gap:12px;color:var(--ink)}
a.contact-tile:hover{background:#f7f7f6;color:var(--ink)}
.contact-tile .k{font-family:var(--mono);font-size:13px;letter-spacing:0.08em;color:#9b9b9b}
.contact-tile .v{font-size:30px;font-weight:500;letter-spacing:-0.02em}
.contact-tile .s{font-family:var(--mono);font-size:14px;color:#555}
.form{padding:40px 48px 40px;border-top:1px solid #111;display:grid;grid-template-columns:1fr 1.4fr;gap:80px}
.form h2{margin:0;font-size:64px;font-weight:500;letter-spacing:-0.03em;position:sticky;top:140px;align-self:start}
.form form{display:flex;flex-direction:column;gap:0}
.form label{display:flex;flex-direction:column;gap:10px;border-top:1px solid #e2e2e2;padding:22px 0}
.form label span{font-family:var(--mono);font-size:14px;color:#9b9b9b}
.form input,.form textarea{border:0;border-bottom:1px solid #c9c9c9;background:transparent;
  font-family:var(--sans);font-size:20px;color:var(--ink);padding:8px 0;outline:none}
.form input:focus,.form textarea:focus{border-bottom-color:var(--blue)}
.form textarea{resize:vertical;min-height:90px}
.form button{margin-top:28px;align-self:flex-start;background:var(--blue);color:#fff;border:0;
  font-family:var(--sans);font-size:20px;padding:20px 44px;cursor:pointer;transition:background .15s ease}
.form button:hover{background:#111}

/* ============================================================
   Простой текстовый документ (политика / карьера / 404)
   ============================================================ */
.doc{padding:60px 48px 100px;max-width:840px}
.doc h1{margin:0 0 40px;font-size:76px;line-height:1.0;font-weight:500;letter-spacing:-0.03em}
.doc h2{margin:48px 0 16px;font-size:30px;font-weight:500;letter-spacing:-0.02em}
.doc p{margin:0 0 18px;font-size:18px;line-height:1.6;text-wrap:pretty}
.doc a{color:var(--blue)}
.doc .updated{font-family:var(--mono);font-size:14px;color:#9b9b9b;margin-bottom:40px}
.notfound{min-height:60vh;display:flex;flex-direction:column;justify-content:center;padding:60px 48px}
.notfound .code{font-family:var(--mono);font-size:16px;color:var(--blue);letter-spacing:0.1em;margin-bottom:20px}
.notfound h1{margin:0 0 24px;font-size:clamp(56px,10vw,120px);line-height:0.98;font-weight:500;letter-spacing:-0.03em}
.notfound p{margin:0 0 32px;font-size:20px;line-height:1.5;color:#555;max-width:560px}
.notfound a{font-family:var(--mono);font-size:16px;color:var(--blue)}
@media (max-width:1024px){
  .contact-lead{grid-template-columns:1fr;gap:24px;padding:28px 20px 16px}
  .contact-grid{grid-template-columns:1fr;padding:16px 20px 32px}
  .contact-tile{padding:28px 20px}
  .form{grid-template-columns:1fr;gap:24px;padding:32px 20px}
  .form h2{position:static;font-size:44px}
  .doc{padding:40px 20px 80px}
  .doc h1{font-size:clamp(44px,10vw,64px)}
  .notfound{padding:40px 20px}
}

/* ============================================================
   Детальные страницы (Решение / Услуга / Кейс / Статья)
   ============================================================ */
.crumbs{padding:40px 48px 0;display:flex;gap:12px;font-family:var(--mono);font-size:14px;color:#9b9b9b}
.crumbs a{color:#9b9b9b}
.crumbs .cur{color:var(--ink)}

.chips{display:flex;gap:10px;flex-wrap:wrap}
.chip{font-family:var(--mono);font-size:14px;color:var(--blue);border:1px solid rgba(39,51,227,0.3);padding:8px 16px}
.stack{display:flex;gap:10px;flex-wrap:wrap}
.stack span{font-family:var(--mono);font-size:15px;border:1px solid #c9c9c9;padding:10px 18px}

.det-hero{padding:44px 48px 56px;display:grid;grid-template-columns:1fr 480px;gap:80px;align-items:end}
.det-hero h1{margin:0;font-size:88px;line-height:1.0;font-weight:500;letter-spacing:-0.03em}
.det-hero.case h1{font-size:76px;line-height:1.03}
.det-hero p{margin:0 0 12px;font-size:19px;line-height:1.5;text-wrap:pretty}
.det-hero .chips{margin-bottom:28px}
.det-hero .client{font-family:var(--mono);font-size:15px;letter-spacing:0.08em;color:#9b9b9b;margin-bottom:24px}

.det-media{height:620px;background:var(--dark);position:relative;overflow:hidden;border-top:1px solid #111}
.det-media video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.det-cover{height:620px;border-top:1px solid #111;display:grid;place-items:center;
  background:repeating-linear-gradient(45deg,rgba(0,0,0,0.04) 0 2px,transparent 2px 16px)}
.det-cover span{font-family:var(--mono);font-size:13px;color:#9b9b9b}

.metrics{display:grid;grid-template-columns:repeat(4,1fr);border-bottom:1px solid #111}
.metrics .m{border-right:1px solid #e2e2e2;padding:40px 48px;display:flex;flex-direction:column;gap:12px}
.metrics .m:last-child{border-right:0}
.metrics .m .v{font-size:52px;font-weight:500;letter-spacing:-0.02em}
.metrics.sm .m .v{font-size:44px}
/* значение словом, а не числом — крупный кегль его ломает */
.metrics .m .v.word,.metrics.sm .m .v.word{font-size:26px;letter-spacing:0}
.metrics .m .l{font-family:var(--mono);font-size:14px;color:#9b9b9b;line-height:1.4}

.block{border-top:1px solid #111;padding:60px 48px}
.block>.eyebrow{display:block;margin-bottom:36px}

.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.cards.two{grid-template-columns:1fr 1fr}
.card{border:1px solid #111;padding:32px;display:flex;flex-direction:column;gap:14px;min-height:200px;color:var(--ink)}
a.card:hover{background:#f7f7f6;color:var(--ink)}
.card h3{margin:0;font-size:24px;font-weight:500;letter-spacing:-0.02em}
.card p{margin:0;font-size:16px;line-height:1.5;color:#555;text-wrap:pretty}
.card .go{font-family:var(--mono);font-size:14px;color:var(--blue);margin-top:auto}

.step{border-top:1px solid #e2e2e2;padding:32px 0}
.step .top{display:flex;justify-content:space-between;align-items:baseline}
.step .num{font-family:var(--mono);font-size:15px;color:#9b9b9b}
.step .when{font-family:var(--mono);font-size:15px;color:var(--blue)}
.step h3{margin:16px 0 12px;font-size:30px;font-weight:500;letter-spacing:-0.02em}
.step p{margin:0;font-size:17px;line-height:1.55;max-width:680px;text-wrap:pretty}

.split-2{border-top:1px solid #111;display:grid;grid-template-columns:1fr 500px}
.split-2 .body{padding:60px 48px}
.split-2 .body h2{margin:0 0 36px;font-size:64px;font-weight:500;letter-spacing:-0.03em}
.side-quote{background:#f1f1f0;padding:60px 48px;display:flex;flex-direction:column;gap:24px;justify-content:center}
.side-quote .client{font-family:var(--mono);font-size:14px;letter-spacing:0.06em;color:#111}
.side-quote p{margin:0;font-size:18px;line-height:1.55;color:#555;text-wrap:pretty}
.side-quote a{font-family:var(--mono);font-size:15px;color:var(--blue)}
.side-quote .who{font-family:var(--mono);font-size:13px;color:#9b9b9b;line-height:1.5}

.checks .row{border-top:1px solid #e2e2e2;padding:20px 0;font-size:19px;line-height:1.45;display:flex;gap:16px}
.checks .row .b{font-family:var(--mono);color:var(--blue)}

.timeline .row{display:grid;grid-template-columns:140px 1fr;gap:32px;align-items:baseline;border-top:1px solid #e2e2e2;padding:24px 0}
.timeline .when{font-family:var(--mono);font-size:15px;color:var(--blue)}
.timeline .what{font-size:19px;line-height:1.4}

.shots{display:grid;grid-template-columns:1fr 1fr;gap:22px}
.shots .shot{height:400px;border:1px solid #e2e2e2;background:repeating-linear-gradient(45deg,rgba(0,0,0,0.04) 0 2px,transparent 2px 16px);display:grid;place-items:center}
.shots .shot span{font-family:var(--mono);font-size:13px;color:#9b9b9b}

.case-solution{border:1px solid #111;padding:40px 48px;display:grid;grid-template-columns:1fr 200px;gap:40px;align-items:center;color:var(--ink)}
.case-solution:hover{background:#f7f7f6;color:var(--ink)}
.case-solution h3{margin:0 0 12px;font-size:34px;font-weight:500;letter-spacing:-0.02em}
.case-solution p{margin:0;font-size:17px;line-height:1.5;color:#555;max-width:720px;text-wrap:pretty}
.case-solution .go{font-family:var(--mono);font-size:15px;color:var(--blue);text-align:right}

/* Услуга */
.svc-hero{padding:44px 48px 64px}
.svc-hero .eyebrow{margin-bottom:28px}
.svc-hero h1{margin:0 0 40px;font-size:96px;line-height:1.0;font-weight:500;letter-spacing:-0.03em;max-width:1200px}
.svc-lead{display:grid;grid-template-columns:1fr 1fr;gap:60px;border-top:1px solid #111;padding-top:32px}
.svc-lead>p{margin:0;font-size:21px;line-height:1.5;text-wrap:pretty}
.meta-rows{display:flex;flex-direction:column;gap:14px;font-family:var(--mono);font-size:16px}
.meta-rows .r{display:flex;justify-content:space-between;border-bottom:1px solid #e2e2e2;padding-bottom:12px}
.meta-rows .r .k{color:#9b9b9b}
.meta-rows>a{color:var(--blue);margin-top:10px}

.cols2{border-top:1px solid #111;display:grid;grid-template-columns:1fr 1fr}
.cols2 .c{padding:60px 48px}
.cols2 .c:first-child{border-right:1px solid #e2e2e2}

.faq .q{border-top:1px solid #e2e2e2;padding:26px 0;cursor:pointer}
.faq .q-head{display:flex;justify-content:space-between;align-items:baseline;gap:40px}
.faq .q h3{margin:0;font-size:24px;font-weight:500;letter-spacing:-0.02em}
.faq .sign{font-family:var(--mono);font-size:16px;color:var(--blue);white-space:nowrap}
.faq .a{margin:16px 0 0;font-size:17px;line-height:1.55;color:#555;max-width:680px;display:none}
.faq .q.open .a{display:block}
.faq .sign .minus{display:none}
.faq .q.open .sign .plus{display:none}
.faq .q.open .sign .minus{display:inline}

/* Статья */
.art-hero{padding:44px 48px 56px}
.art-hero h1{margin:0 0 40px;font-size:80px;line-height:1.03;font-weight:500;letter-spacing:-0.03em;max-width:1300px}
.art-meta{border-top:1px solid #111;padding-top:24px;display:flex;justify-content:space-between;
  font-family:var(--mono);font-size:15px;color:#9b9b9b;gap:24px;flex-wrap:wrap}
.art-layout{display:grid;grid-template-columns:280px 1fr;gap:80px;padding:80px 48px 60px;align-items:start}
.art-toc{position:sticky;top:140px}
.art-toc .lbl{font-family:var(--mono);font-size:14px;color:#9b9b9b;margin-bottom:20px}
.art-toc .links{display:flex;flex-direction:column;gap:12px;font-size:16px;line-height:1.35}
.art-toc .links a{color:var(--ink)}
.art-share{border-top:1px solid #e2e2e2;margin-top:28px;padding-top:20px;display:flex;flex-direction:column;gap:10px;font-family:var(--mono);font-size:14px}
.art-share .lbl2{color:#9b9b9b}
.art-share a{color:var(--blue)}
.article{max-width:780px}
.article .lead{margin:0 0 32px;font-size:24px;line-height:1.5;font-weight:500;letter-spacing:-0.01em;text-wrap:pretty}
.article h2{margin:56px 0 20px;font-size:36px;font-weight:500;letter-spacing:-0.02em}
.article p{margin:0 0 22px;font-size:19px;line-height:1.65;text-wrap:pretty}
.article ul{margin:0 0 22px;padding:0 0 0 24px;font-size:19px;line-height:1.65}
.article li{margin-bottom:12px}
.article figure{margin:44px 0}
.article figure .ph{height:420px;border:1px solid #e2e2e2;background:repeating-linear-gradient(45deg,rgba(0,0,0,0.04) 0 2px,transparent 2px 16px);display:grid;place-items:center}
.article figure .ph span{font-family:var(--mono);font-size:13px;color:#9b9b9b}
.article figcaption{margin-top:14px;font-family:var(--mono);font-size:13px;color:#9b9b9b}
.article blockquote{margin:44px 0;border-left:2px solid var(--blue);padding:8px 0 8px 28px;font-size:24px;line-height:1.45;font-weight:500;letter-spacing:-0.01em;text-wrap:pretty}
.article .callout{background:#f1f1f0;padding:36px;margin:44px 0;display:flex;flex-direction:column;gap:16px}
.article .callout .lbl{font-family:var(--mono);font-size:14px;letter-spacing:0.06em;color:#111}
.article .callout ul{margin:0;padding:0 0 0 22px;font-size:18px;line-height:1.6;color:#555}
.article .author{border-top:1px solid #111;margin-top:56px;padding-top:32px;display:flex;gap:24px;align-items:flex-start}
.article .author .ava{width:88px;height:88px;border:1px solid #e2e2e2;background:repeating-linear-gradient(45deg,rgba(0,0,0,0.04) 0 2px,transparent 2px 16px);flex-shrink:0}
.article .author .name{font-size:20px;font-weight:500;margin-bottom:8px}
.article .author .role{font-family:var(--mono);font-size:14px;color:#9b9b9b;line-height:1.5}

/* Детальные страницы — адаптив */
@media (max-width:1024px){
  .crumbs{padding:24px 20px 0}
  .det-hero{grid-template-columns:1fr;gap:28px;padding:28px 20px 40px}
  .det-hero h1,.det-hero.case h1{font-size:clamp(40px,9vw,64px)}
  .det-media,.det-cover{height:340px}
  .metrics{grid-template-columns:1fr 1fr}
  .metrics .m{padding:28px 20px}
  .metrics .m:nth-child(2n){border-right:0}
  .block{padding:40px 20px}
  .cards,.cards.two,.shots{grid-template-columns:1fr}
  .split-2{grid-template-columns:1fr}
  .split-2 .body,.side-quote{padding:40px 20px}
  .case-solution{grid-template-columns:1fr;gap:18px;padding:28px 20px}
  .case-solution .go{text-align:left}
  .svc-hero{padding:28px 20px 40px}
  .svc-hero h1{font-size:clamp(40px,9vw,64px)}
  .svc-lead{grid-template-columns:1fr;gap:28px}
  .cols2{grid-template-columns:1fr}
  .cols2 .c{padding:40px 20px}
  .cols2 .c:first-child{border-right:0}
  .art-hero{padding:28px 20px 40px}
  .art-hero h1{font-size:clamp(36px,8vw,56px)}
  .art-layout{grid-template-columns:1fr;gap:36px;padding:40px 20px}
  .art-toc{position:static}
  .article,.article blockquote{max-width:none}
}

/* ============================================================
   Адаптив
   ============================================================ */
@media (max-width:1024px){
  .page{min-width:0}
  .site-header{padding:0 20px;height:72px}
  .logo{font-size:16px;letter-spacing:0.22em}
  .nav-links{display:none}
  /* На мобильном кнопка растягивается в нижнюю панель, а страница получает
     отступ снизу — иначе панель навсегда перекрывает последний блок. */
  .cta-fixed{left:0;right:0;padding:17px 24px;font-size:16px;text-align:center}
  .page{padding-bottom:58px}
  /* Затемнение слайда идёт слева направо — на мобильном текст во всю ширину,
     поэтому разворачиваем градиент сверху вниз. */
  .hero-slide-ov{background:linear-gradient(180deg,
    rgba(8,9,11,0.30) 0%,rgba(8,9,11,0.72) 45%,rgba(8,9,11,0.94) 100%)}
  /* Меню перестаёт быть мега-меню там же, где из шапки исчезают ссылки:
     ниже 1024px гамбургер — единственный вход в навигацию, и внутри должно
     быть то, за чем приходят, а не выложенная в столбик витрина. */
  .menu-overlay .inner{min-width:0}
  .menu-top{padding:0 20px;height:72px}
  .menu-cols{grid-template-columns:1fr;gap:36px;padding:12px 20px 60px}
  .menu-col-news,.menu-tech{display:none}
  .menu-nav{gap:18px;margin-top:32px}
  .menu-nav a{font-size:34px}
  .menu-nav a.sub{font-size:24px}
  .menu-more{display:block}
  /* Ширину меряем по колонке текста, а не по экрану: на планшете кнопка
     «+» иначе улетает от слова «Услуги» на пол-экрана. */
  .menu-row,.menu-cta{max-width:420px}
  .menu-cta{display:block}
  .menu-right{gap:0}
  .menu-overlay{overscroll-behavior:contain}

  .hero,.services-block,.split,.split.bordered,.feature-head,
  .feature-split{grid-template-columns:1fr;gap:36px;padding-left:20px;padding-right:20px}
  .hero{padding-top:40px;padding-bottom:32px}
  .split{padding-top:56px}
  .hero h1,.home-hero h1,.cases-hero h1,.blog-hero h1{font-size:clamp(52px,14vw,88px)}
  .split-sticky,.split-label,.services-block h2{position:static}
  .services-block h2{font-size:56px}
  .feature-head h3{font-size:44px}

  .home-hero{padding:40px 20px 0}
  .hero-slider{height:auto;min-height:520px}
  .hero-tabs{position:static;flex-direction:row;flex-wrap:wrap;gap:8px;padding:16px 20px 0;justify-content:flex-start}
  .hero-tab{width:calc(50% - 4px)}
  .hero-slides{position:relative;height:340px}
  .hero-slide-body{left:20px;right:20px;bottom:28px;max-width:none}
  .hero-slide-body h2{font-size:32px}
  .feature-split{height:auto}
  .feature-media{min-height:300px}
  .feature-info{padding:36px 20px}

  .solutions-meta,.solutions-meta.tall{padding:36px 20px;flex-wrap:wrap;gap:14px}
  .solutions-meta h2{font-size:44px}
  .solutions-grid,.cases-grid,.blog-older{grid-template-columns:1fr}
  .product{border-right:0!important;padding:32px 20px}
  .case{border-right:0!important;padding:32px 20px}
  .blog-feature{grid-template-columns:1fr}
  .blog-lead{border-right:0;padding:28px 20px}
  .blog-lead .cover{height:260px}
  .blog-lead h2{font-size:34px}
  .blog-side a{padding:28px 20px}
  .blog-card{border-right:0!important;padding:32px 20px}

  .services-list .list-item,.reviews{padding-left:0;padding-right:0}
  .reviews{padding:0 20px 60px}
  .reviews-grid{grid-template-columns:1fr 1fr}

  .about-hero{padding:40px 20px 40px}
  .about-hero h1{font-size:clamp(36px,8vw,60px)}
  .about-text{font-size:18px}

  /* «О нас»: секции из макета. Подпись справа от заголовка на узком экране
     переезжает под него — рядом ей места нет, а выбрасывать её жаль:
     это она объясняет, что за список ниже. */
  .sec-head{flex-direction:column;align-items:flex-start;gap:10px;padding:36px 20px 28px}
  .sec-head h2{font-size:36px}
  .sec-head span{white-space:normal}
  .principles{grid-template-columns:1fr}
  .principle{border-right:0;border-bottom:1px solid rgba(255,255,255,0.14);padding:28px 20px 32px}
  .principle:last-child{border-bottom:0}
  .path{padding:48px 20px 40px}
  .path .sec-head{padding:0 0 24px}
  /* Шкала встаёт вертикально: на телефоне пять колонок пришлось бы листать
     вбок, а шаги процесса читаются сверху вниз — как они и идут. */
  .path-grid{grid-template-columns:1fr;border-top:0;padding-left:2px}
  .path-step{border-right:0;border-left:1px solid #e2e2e2;padding:0 0 28px 22px;gap:10px}
  .path-step:last-child{border-left-color:transparent;padding-bottom:0}
  .path-step::before{left:-5px;top:0}
  .path-step .stage{margin-top:0}
  .city-split{grid-template-columns:1fr}
  /* 340, а не 300: камера считает масштаб от меньшей стороны, и на трёхстах
     шпили срезает верхней границей — город превращается в середину города. */
  .city{height:340px}
  .city-tags{left:20px;right:20px;top:20px;gap:8px}
  .city-tags span{font-size:12px;padding:6px 12px}
  .city-stats{border-left:0;border-top:1px solid rgba(255,255,255,0.14);
    grid-template-rows:none;grid-template-columns:1fr 1fr}
  .cstat{padding:20px}
  .cstat:nth-child(odd){border-right:1px solid rgba(255,255,255,0.14)}
  .cstat .value{font-size:32px}
  .badges-sec{padding:36px 20px 48px}
  .badges-sec .sec-head{padding:0 0 24px}
  .badges{gap:10px}
  .badge{padding:12px 16px;gap:10px}
  .badge .count{font-size:24px}
  .badge .name{font-size:13px}

  .contact,.contact.tight,.contact.pad{padding:20px 20px 32px}
  .contact-row{grid-template-columns:1fr}
  .big-cta{font-size:32px;padding:24px 24px 80px}

  .contact-modal .inner{min-width:0}
  .cf-cols{grid-template-columns:1fr;gap:38px;padding:12px 20px 80px}
  .cf-intro h2{font-size:36px}
  .cf-steps{margin-top:30px}
  .cf-two{grid-template-columns:1fr;gap:0}
  .cf-done{padding:24px 20px 90px}
  .cf-done h2{font-size:36px}

  .site-footer,.site-footer.full{padding:40px 20px 90px}
  .footer-grid{grid-template-columns:1fr;gap:36px}
  .footer-simple{gap:12px}
  .cases-hero,.blog-hero{padding:40px 20px 40px}
}

@media (max-width:600px){
  .menu-news{grid-template-columns:1fr}
  .reviews-grid{grid-template-columns:1fr}
  .footer-bottom{flex-direction:column;gap:10px}
}

/* Планшет: места хватает, чтобы имя и компания стояли рядом,
   а поля не растягивались во всю ширину экрана. */
@media (min-width:601px) and (max-width:1024px){
  .cf-two{grid-template-columns:1fr 1fr;gap:22px}
  .cf-form{max-width:640px}
}

/* ============================================================
   Телефон
   Отдельная граница, а не продолжение планшетной: до 1024px сетки
   просто схлопываются в колонку, а здесь меняется само поведение —
   меню становится меню, полосы карточек листаются, заголовки
   перестают упираться в край экрана.
   ============================================================ */
@media (max-width:768px){
  /* Заголовки. 54px давали строку в 367px при 350px места: слово
     «искусственным» уезжало за край. Считаем от ширины экрана и держим
     запас, а разрыв слова — страховка на случай слова подлиннее. */
  .hero h1,.home-hero h1,.cases-hero h1,.blog-hero h1{font-size:clamp(36px,10.5vw,72px)}
  h1,h2,h3,h4{overflow-wrap:break-word}
  .home-hero{padding:32px 20px 0}
  .services-block h2{font-size:44px}

  /* Услуги на главной. Шесть описаний подряд занимали 2268 пикселей — треть
     всей страницы, которую пролистывают не читая. Заголовки остаются
     списком, текст раскрывается по тапу: ничего не выброшено, а секция
     стала втрое короче. На широком экране ничего не меняется — там колонка
     стоит рядом с заголовком и читается целиком. */
  .services-block{padding-top:56px;padding-bottom:32px;gap:24px}
  .services-list{margin-top:28px}
  .services-list .list-item{padding:0}
  .services-list .fold .num{display:none}
  .services-list .fold h3{margin:0;padding:18px 36px 18px 0;font-size:22px;
    line-height:1.2;position:relative;cursor:pointer}
  .services-list .fold h3::after{content:'+';position:absolute;right:4px;top:50%;
    transform:translateY(-50%);font-family:var(--mono);font-weight:400;
    font-size:22px;color:#9b9b9b}
  .services-list .fold.open h3::after{content:'−'}
  .services-list .fold p{display:none}
  .services-list .fold.open p{display:block;font-size:16px;padding-bottom:20px}
  .solutions-meta h2,.feature-head h3{font-size:36px}

  /* ---------- Меню ---------- */
  .menu-cols{padding:8px 20px 40px;gap:32px}
  .menu-nav a{font-size:30px}
  .menu-quick{gap:16px;font-size:16px}

  /* ---------- Полоса карточек ---------- */
  /* Карточка шире экрана быть не должна, но и во всю ширину не годится:
     край следующей — единственный знак, что полосу можно листать. */
  [data-slider]{display:flex!important;gap:12px;overflow-x:auto;
    scroll-snap-type:x mandatory;overscroll-behavior-x:contain;scrollbar-width:none}
  [data-slider]::-webkit-scrollbar{display:none}
  [data-slider]>*{flex:0 0 82%;scroll-snap-align:start}
  .slider-dots{display:flex;gap:8px;margin-top:20px}
  .slider-dot{width:26px;height:3px;padding:0;border:0;background:#d2d2d2;cursor:pointer}
  .slider-dot.is-active{background:var(--ink)}
  /* В тёмной теме серый и «чернильный» сходятся в один цвет, и активной
     точки не видно вовсе. */
  html[data-theme="dark"] .slider-dot{background:rgba(255,255,255,0.25)}
  html[data-theme="dark"] .slider-dot.is-active{background:#e7e9ec}

  /* Отступ по краям полосы задаёт не она сама, а её раздел: у отзывов он уже
     есть, у технологий нет. Общий отрицательный margin ушёл бы у одних за
     край экрана, у других — за край раздела. */
  .reviews{padding:0 20px 56px}
  .reviews-grid[data-slider]{margin:0 -20px;padding:0 20px 2px}
  .solutions-grid[data-slider]{padding:0 20px 2px}
  .solutions .slider-dots{padding:0 20px}

  /* Сетка технологий в полосе теряет разделители: они рисовались соседством,
     а соседей у карточки в ленте больше нет. */
  .solutions-grid[data-slider]{border:0;background:var(--dark)}
  .solutions-grid[data-slider] .product{border:1px solid rgba(255,255,255,0.14);padding:28px 20px}
  .solutions .slider-dot{background:rgba(255,255,255,0.3)}
  .solutions .slider-dot.is-active{background:#fff}
  .solutions-grid[data-slider]+.slider-dots{padding-bottom:44px}

  /* Карточка в ленте тянется до высоты самой высокой, и текст, прижатый
     к низу, отрывается от названия. На узкой карточке разрыв выходит в треть
     экрана — прижимаем текст к верху, пустота уходит вниз. */
  .review{gap:20px;min-height:0;padding:24px 20px}
  .review .body{margin-top:0}

  /* ---------- Каталог кейсов ---------- */
  /* Двадцать две карточки подряд — это страница на 12 000 пикселей. Обложку
     режем, отступы поджимаем: смысл карточки в заголовке, а не в фото. */
  .case{padding:26px 20px}
  .case .media{height:190px}
  .case h3{font-size:26px}
  /* Фильтры в четыре ряда занимали пол-экрана до первого кейса. В одну
     листаемую строку — и видно, что список тегов длиннее экрана. */
  .filters{flex-wrap:nowrap;overflow-x:auto;gap:8px;scrollbar-width:none;
    margin:0 -20px;padding:0 20px 2px}
  .filters::-webkit-scrollbar{display:none}
  .filter{flex:0 0 auto}

  /* ---------- Мелочи, которые видны только на телефоне ---------- */
  /* Тэги поверх фото упирались в правый край: у них была задана только
     левая граница, а ширина бралась от блока во всю ширину. */
  .feature-media .tags{left:20px;right:20px;top:20px}
  /* !important — из-за единственной обложки статьи с высотой в атрибуте:
     на телефоне она занимала две трети экрана. */
  .det-media,.det-cover{height:240px!important}
  .metrics .m{padding:24px 16px}
  /* Две кнопки рядом, а не одна под другой: в столбик они занимали пол-экрана
     и читались как два разных призыва. Стрелка уходит под подпись — на
     половине ширины ей рядом с текстом не встать. */
  .contact-row{grid-template-columns:1fr 1fr;gap:10px}
  .big-cta{flex-direction:column;justify-content:flex-start;gap:16px;
    min-height:150px;font-size:21px;line-height:1.15;padding:20px 16px 22px}
  .big-cta span{margin-top:auto;align-self:flex-end;font-size:24px;line-height:1}
  .crumbs{flex-wrap:wrap}
  /* Карточке задавали высоту, чтобы в ряду из трёх они были вровень. В
     столбик равнять не с чем, а пустое дно остаётся — по нему и видно, что
     раскладку сюда просто уронили. */
  .card{min-height:0;padding:26px 20px}

  /* Вырез и полоса жестов внизу экрана: без запаса нижняя кнопка наезжает
     на системную полосу, а последний блок страницы прячется под кнопкой. */
  .cta-fixed{padding-bottom:calc(17px + env(safe-area-inset-bottom))}
  .page{padding-bottom:calc(58px + env(safe-area-inset-bottom))}
  .menu-cols,.cf-cols{padding-bottom:calc(40px + env(safe-area-inset-bottom))}
}

/* ============================================================
   Переключатель темы
   ============================================================ */
.theme-toggle{width:44px;height:44px;border:1px solid #c9c9c9;background:transparent;
  cursor:pointer;display:grid;place-items:center;color:inherit;padding:0}
.theme-toggle:hover{border-color:var(--ink)}
.theme-toggle svg{width:18px;height:18px;display:block}
.theme-toggle .ic-sun{display:none}
html[data-theme="dark"] .theme-toggle .ic-moon{display:none}
html[data-theme="dark"] .theme-toggle .ic-sun{display:block}

/* ============================================================
   Тёмная тема
   ============================================================ */
html[data-theme="dark"]{ --bg:#0d0f13; --ink:#e7e9ec; }
html[data-theme="dark"] .theme-toggle{border-color:#2b303a}
html[data-theme="dark"] .theme-toggle:hover{border-color:var(--ink)}
html[data-theme="dark"] .menu-btn{background:#1c2027}

/* линии */
html[data-theme="dark"] .feature-head,
html[data-theme="dark"] .split.bordered,
html[data-theme="dark"] .block,
html[data-theme="dark"] .cols2,
html[data-theme="dark"] .cols2 .c:first-child,
html[data-theme="dark"] .split-2,
html[data-theme="dark"] .metrics,
html[data-theme="dark"] .metrics .m,
html[data-theme="dark"] .cases-grid,
html[data-theme="dark"] .case,
html[data-theme="dark"] .blog-feature,
html[data-theme="dark"] .blog-lead,
html[data-theme="dark"] .blog-side a,
html[data-theme="dark"] .blog-older,
html[data-theme="dark"] .blog-card,
html[data-theme="dark"] .blog-lead .cover,
html[data-theme="dark"] .blog-card .cover,
html[data-theme="dark"] .svc-lead,
html[data-theme="dark"] .art-meta,
html[data-theme="dark"] .art-share,
html[data-theme="dark"] .article .author,
html[data-theme="dark"] .article figure .ph,
html[data-theme="dark"] .list-item,
html[data-theme="dark"] .step,
html[data-theme="dark"] .services-list .list-item,
html[data-theme="dark"] .checks .row,
html[data-theme="dark"] .timeline .row,
html[data-theme="dark"] .faq .q,
html[data-theme="dark"] .meta-rows .r,
html[data-theme="dark"] .form,
html[data-theme="dark"] .form label,
html[data-theme="dark"] .form input,
html[data-theme="dark"] .form textarea,
html[data-theme="dark"] .footer-simple,
html[data-theme="dark"] .footer-grid,
html[data-theme="dark"] .footer-bottom,
html[data-theme="dark"] .footer-brand .divide,
html[data-theme="dark"] .footer-brand .langs,
html[data-theme="dark"] .footer-social,
html[data-theme="dark"] .footer-social a,
html[data-theme="dark"] .contact-row,
html[data-theme="dark"] .contact-tile,
html[data-theme="dark"] .card,
html[data-theme="dark"] .case-solution,
html[data-theme="dark"] .shots .shot,
html[data-theme="dark"] .det-cover,
html[data-theme="dark"] .ticker-track span,
html[data-theme="dark"] .stack span,
html[data-theme="dark"] .path-grid,
html[data-theme="dark"] .path-step,
html[data-theme="dark"] .badges-sec,
html[data-theme="dark"] .badge,
html[data-theme="dark"] .filter{border-color:#262b33}
/* Плашки экспертизы гаснут на чёрном так же, как фильтры: инверсия при
   наведении должна остаться инверсией, а не стать чёрным по чёрному. */
html[data-theme="dark"] .badge:hover{background:var(--ink);color:var(--bg)}

/* мягкие серые поверхности */
html[data-theme="dark"] .review,
html[data-theme="dark"] .side-quote,
html[data-theme="dark"] .article .callout{background:#15181d}

/* hover-подсветки */
html[data-theme="dark"] a.card:hover,
html[data-theme="dark"] .case:hover,
html[data-theme="dark"] .case-solution:hover,
html[data-theme="dark"] .blog-lead:hover,
html[data-theme="dark"] .blog-side a:hover,
html[data-theme="dark"] .blog-card:hover{background:#1a1e24;color:var(--ink)}

/* крупный светлый CTA */
html[data-theme="dark"] .big-cta.light{background:#1b1f26;color:var(--ink)}
html[data-theme="dark"] .big-cta.light:hover{background:#23272e;color:var(--ink)}

/* плейсхолдер-паттерны (инверсия на светлые штрихи) */
html[data-theme="dark"] .det-cover,
html[data-theme="dark"] .shots .shot,
html[data-theme="dark"] .blog-lead .cover,
html[data-theme="dark"] .blog-card .cover,
html[data-theme="dark"] .case .media,
html[data-theme="dark"] .article figure .ph,
html[data-theme="dark"] .article .author .ava{
  background:repeating-linear-gradient(45deg,rgba(255,255,255,0.05) 0 2px,transparent 2px 16px)}

/* фильтр кейсов */
html[data-theme="dark"] .filter{background:transparent;color:var(--ink)}
html[data-theme="dark"] .filter.is-active{background:var(--ink);color:var(--bg)}

/* соцкнопки подвала */
html[data-theme="dark"] .footer-social a:hover{background:var(--ink);color:var(--bg)}

/* тексты, зашитые как #111 → делаем светлыми */
html[data-theme="dark"] .services-block .lead,
html[data-theme="dark"] .footer-brand .copy,
html[data-theme="dark"] .footer-brand .divide,
html[data-theme="dark"] .footer-brand .langs,
html[data-theme="dark"] .side-quote .client,
html[data-theme="dark"] .review .client{color:var(--ink)}

/* вторичный текст (#555/#6d6d6d) → читаемый на тёмном */
html[data-theme="dark"] .card p,
html[data-theme="dark"] .side-quote p,
html[data-theme="dark"] .case-solution p,
html[data-theme="dark"] .article .callout ul,
html[data-theme="dark"] .review p,
html[data-theme="dark"] .notfound p,
html[data-theme="dark"] .contact-tile .s{color:#a7adb5}

/* Фото поверх плейсхолдеров (кейсы, блог, услуги) */
.ph-img{background-size:cover !important;background-position:center !important;background-repeat:no-repeat !important}
.ph-img>span{display:none}
.svc-cover{height:360px;border-top:1px solid #e2e2e2}
html[data-theme="dark"] .svc-cover{border-color:#262b33}
