/* ============================================================================
   CSS FOUNDATION FOR KODLOG
   ============================================================================ */

/* ============================================================================
   STEP 1: DESIGN TOKENS & BASELINE
   ============================================================================ */

:root {
  --bg: #080b14;
  --surface: #0e1424;
  --line: rgba(255, 255, 255, .07);
  --text: #e6ecff;
  --muted: #8b93b0;
  --dim: #6f779a;
  --accent: #6d8bff;
  --cyan: #67e8ff;
  --font: 'Manrope', sans-serif;
  --mono: 'JetBrains Mono', monospace;
  --maxw: 1280px;
}

* {
  box-sizing: border-box;
}

/* Шапка липкая, поэтому переход по якорю без отступа заводит цель под неё.
   Отступ на корне действует на все якоря сразу — от оглавления статьи до
   ссылки «Перейти к содержанию». */
html {
  scroll-padding-top: 90px;
}

body {
  margin: 0;
  background: var(--bg);
  color: var(--text);
  font-family: var(--font);
  -webkit-font-smoothing: antialiased;
}

a {
  text-decoration: none;
  color: inherit;
}

img,
svg {
  max-width: 100%;
}

/* ============================================================================
   STEP 2: LAYOUT & TYPOGRAPHY
   ============================================================================ */

.container {
  max-width: var(--maxw);
  margin: 0 auto;
  padding: 0 40px;
}

.section {
  padding: 80px 40px;
}

.section--center {
  text-align: center;
}

.h1 {
  font: 800 46px/1.1 var(--font);
  letter-spacing: -.03em;
  margin: 0 0 18px;
}

.h2 {
  font: 800 32px/1.15 var(--font);
  letter-spacing: -.02em;
  margin: 0 0 14px;
}

.lead {
  font: 400 16px/1.6 var(--font);
  color: var(--muted);
  margin: 0 0 22px;
}

.eyebrow {
  font: 700 11.5px var(--mono);
  text-transform: uppercase;
  letter-spacing: .08em;
  color: var(--dim);
  margin: 0 0 12px;
}

.stack {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.row {
  display: flex;
  align-items: center;
  gap: 16px;
}

.grid-2 {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 20px;
}

.grid-3 {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}

.grid-4 {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 20px;
}

/* ============================================================================
   STEP 3: CARDS & BUTTONS
   ============================================================================ */

.card {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: 14px;
  padding: 22px;
}

.card__title {
  font: 700 15px var(--font);
  margin: 0 0 6px;
}

.card__desc {
  font: 400 13px/1.55 var(--font);
  color: var(--muted);
  margin: 0;
}

.btn {
  display: inline-block;
  border-radius: 9px;
  padding: 12px 20px;
  font: 700 13px var(--mono);
  cursor: pointer;
  border: 1px solid transparent;
}

.btn--primary {
  background: var(--accent);
  color: var(--bg);
}

.btn--ghost {
  background: transparent;
  color: var(--accent);
  border-color: var(--accent);
}

/* ============================================================================
   STEP 4: RESPONSIVE & ACCESSIBILITY
   ============================================================================ */

@media (max-width: 900px) {
  .grid-3,
  .grid-4 {
    grid-template-columns: repeat(2, 1fr);
  }

  .section {
    padding: 56px 20px;
  }

  .container {
    padding: 0 20px;
  }

  .h1 {
    font-size: 34px;
  }
}

@media (max-width: 560px) {
  .grid-2,
  .grid-3,
  .grid-4 {
    grid-template-columns: 1fr;
  }
}

@media (prefers-reduced-motion: reduce) {
  [data-reveal] {
    opacity: 1 !important;
    transform: none !important;
  }

  * {
    animation-duration: .01ms !important;
    transition-duration: .01ms !important;
  }
}

/* ============================================================================
   PAGE-SPECIFIC CLASSES (Tasks 4-14 will append here)
   ============================================================================ */

/* ============================================================================
   TASK 3: NAV & FOOTER
   ============================================================================ */

.nav{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:14px 40px;background:rgba(8,11,20,.86);backdrop-filter:blur(14px);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:50}
.nav__brand{display:flex;align-items:center;gap:10px;flex:none}
.nav__name{font:800 17px var(--font);letter-spacing:-.02em;white-space:nowrap}
.nav__link{color:var(--muted);white-space:nowrap;flex-shrink:0}
.nav__link:hover{color:var(--text)}
.nav__link--active{color:var(--accent)}
.nav__cta{flex:none;padding:9px 16px;font-size:12px}

.footer{border-top:1px solid rgba(255,255,255,.08);padding:52px 40px 32px;background:var(--bg)}
.footer__grid{max-width:var(--maxw);margin:0 auto;display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr;gap:40px}
.footer__brand{display:flex;align-items:center;gap:10px;margin-bottom:16px}
.footer__name{font:800 18px var(--font);white-space:nowrap}
.footer__about{font:400 13px/1.6 var(--font);color:var(--muted);max-width:280px;margin:0}
.footer__head{font:700 12px var(--mono);color:var(--dim);text-transform:uppercase;letter-spacing:.08em;margin-bottom:14px}
.footer__col{display:flex;flex-direction:column;gap:9px;font:400 13px var(--font)}
.footer__col a{color:#c3c9de}
.footer__col a:hover{color:var(--text)}
.footer__bottom{max-width:var(--maxw);margin:36px auto 0;padding-top:22px;border-top:1px solid rgba(255,255,255,.06);display:flex;align-items:center;justify-content:space-between;font:400 12px var(--font);color:var(--dim)}
.footer__legal{display:flex;gap:20px}
@media (max-width:1100px) and (min-width:901px){
  .nav{gap:12px;padding:14px 20px}
  .nav__links{gap:10px}
}
@media (max-width:900px){
  .nav{padding:12px 20px}
  .footer__grid{grid-template-columns:1fr 1fr}
  .footer__bottom{flex-direction:column;gap:12px;text-align:center}
}

[data-reveal]{transition:opacity .7s cubic-bezier(.2,.7,.2,1),transform .7s cubic-bezier(.2,.7,.2,1)}
[data-reveal].is-hidden{opacity:0;transform:translateY(28px)}
[data-scan-slide]{display:none}
[data-scan-slide].is-active{display:block}

/* ============================================================================
   TASK 4: ABOUT PAGE
   ============================================================================ */

.about-hero{padding-top:80px;padding-bottom:50px}
.about-hero__title{font-size:60px;max-width:820px}
.about-hero__accent{color:var(--accent)}
.about-hero__lead{font-size:18px;max-width:640px}

.about-stat{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:26px}
.about-stat__big{font:700 40px var(--mono);color:var(--accent);letter-spacing:-.02em}
.about-stat__label{font:600 14px var(--font);margin:6px 0 4px}
.about-stat__desc{font:400 12.5px/1.45 var(--font);color:var(--muted)}

.about-mission__box{background:#0b0f1c;border:1px solid var(--line);border-radius:24px;padding:48px;display:grid;grid-template-columns:.9fr 1.1fr;gap:44px;align-items:center}
.about-mission__title{margin:0}
.about-mission__item{align-items:flex-start}
.about-mission__no{flex:none;width:28px;height:28px;border-radius:7px;background:rgba(109,139,255,.12);border:1px solid rgba(109,139,255,.3);display:grid;place-items:center;font:700 12px var(--mono);color:var(--accent)}
.about-mission__text{font:400 15px/1.6 var(--font);color:#c3c9de}

.about-products__grid{margin-top:24px}
.about-products__title{font-size:18px}

.about-values__head{margin-bottom:32px}
.about-values__grid{margin-top:0}
.about-value{background:linear-gradient(180deg,var(--surface),#0b0f1c);border:1px solid var(--line);border-radius:16px;padding:24px}
.about-value__no{width:34px;height:34px;border-radius:9px;background:rgba(109,139,255,.1);border:1px solid rgba(109,139,255,.28);display:grid;place-items:center;font:700 13px var(--mono);color:var(--accent);margin-bottom:14px}
.about-value__title{font:700 16px var(--font);margin-bottom:8px}
.about-value__desc{font:400 13px/1.55 var(--font);color:var(--muted)}

.about-stack__box{background:#0b0f1c;border:1px solid var(--line);border-radius:20px;padding:36px}
.about-stack__title{font-size:28px;margin-bottom:20px}
.about-stack__tags{display:flex;flex-wrap:wrap;gap:8px}
.about-stack__tag{font:600 12px var(--mono);color:#c3c9de;border:1px solid rgba(255,255,255,.12);padding:8px 14px;border-radius:12px}

.about-cta__box{max-width:1000px;background:linear-gradient(135deg,#0b0f1c,#0e1526);border:1px solid rgba(109,139,255,.2);border-radius:24px;padding:52px}
.about-cta__lead{max-width:460px;margin-left:auto;margin-right:auto}

@media (max-width:900px){
  .about-hero__title{font-size:38px}
  .about-mission__box{grid-template-columns:1fr;gap:28px}
}

/* ============================================================
   ОБЩИЕ ЭЛЕМЕНТЫ СТРАНИЦ (используются на нескольких страницах)
   ============================================================ */
.pill{display:inline-flex;align-items:center;gap:8px;font:600 11px var(--mono);color:var(--accent);text-transform:uppercase;letter-spacing:.12em;border:1px solid rgba(109,139,255,.35);padding:7px 13px;border-radius:20px;margin-bottom:26px}
.accent{color:var(--accent)}
.btn--outline{border-color:rgba(255,255,255,.18);color:var(--text);font-weight:600}
.btn--outline:hover{border-color:rgba(255,255,255,.4)}
.cta-box{max-width:1000px;margin:0 auto;background:linear-gradient(135deg,#0b0f1c,#0e1526);border:1px solid rgba(109,139,255,.2);border-radius:24px;padding:52px}
.cta-box__lead{max-width:480px;margin:0 auto 26px}

/* ============================================================
   FEATURES (/features)
   ============================================================ */
.feat-hero{padding:76px 40px 56px}
.feat-hero__title{font-size:62px;line-height:1;letter-spacing:-.035em;max-width:840px;margin:0 auto 20px;text-wrap:balance}
.feat-hero__lead{font-size:18px;max-width:620px;margin:0 auto 32px}
.feat-hero__actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}

.bento{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.bento__item{background:var(--surface);border:1px solid rgba(255,255,255,.08);border-radius:16px;padding:24px;color:var(--text);display:block;transition:transform .3s,border-color .3s}
.bento__item:hover{transform:translateY(-4px);border-color:rgba(109,139,255,.4)}
.bento__item--span1{grid-column:span 1}
.bento__item--span2{grid-column:span 2}
.bento__item--span3{grid-column:span 3}
.bento__head{display:flex;align-items:center;justify-content:space-between}
.bento__no{font:600 10px var(--mono);color:var(--accent);letter-spacing:.1em}
.bento__arrow{font:700 13px var(--mono);color:var(--dim)}
.bento__title{font:700 20px var(--font);margin:8px 0 6px}
.bento__desc{font:400 13.5px/1.5 var(--font);color:#9aa2c0}

.feat-groups__grid{gap:12px;margin-top:24px}
.feat-group{padding:26px;border-radius:16px}
.feat-group__no{width:38px;height:38px;border-radius:10px;background:rgba(109,139,255,.1);border:1px solid rgba(109,139,255,.28);display:grid;place-items:center;font:700 14px var(--mono);color:var(--accent);margin-bottom:16px}
.feat-group__title{font:700 18px var(--font);margin-bottom:14px}
.feat-group__items{gap:9px}
.feat-group__item{display:flex;gap:10px;font:400 13px/1.45 var(--font);color:#9aa2c0}
.feat-group__bullet{color:var(--accent);font:700 12px var(--mono);flex:none}

.feat-steps__head{margin-bottom:38px}
.feat-steps__grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}
.feat-step{background:var(--surface);border:1px solid rgba(255,255,255,.08);border-radius:14px;padding:22px}
.feat-step__no{font:800 34px var(--mono);color:rgba(109,139,255,.25);margin-bottom:12px}
.feat-step__title{font:700 15px var(--font);margin-bottom:8px}
.feat-step__desc{font:400 12.5px/1.5 var(--font);color:var(--muted)}

@media (max-width:900px){
  .feat-hero{padding:56px 20px 40px}
  .feat-hero__title{font-size:38px}
  .feat-hero__lead{font-size:16px}
  .bento{grid-template-columns:repeat(2,1fr)}
  .bento__item--span2,.bento__item--span3{grid-column:span 2}
  .feat-steps__grid{grid-template-columns:repeat(2,1fr)}
  .cta-box{padding:36px 24px}
}
@media (max-width:560px){
  .bento{grid-template-columns:1fr}
  .bento__item--span1,.bento__item--span2,.bento__item--span3{grid-column:span 1}
  .feat-steps__grid{grid-template-columns:1fr}
  .feat-hero__actions{flex-direction:column}
}

/* ============================================================
   INTEGRATIONS (/integrations)
   ============================================================ */
.tag{font:600 10px var(--mono);color:var(--muted);border:1px solid rgba(255,255,255,.1);padding:5px 9px;border-radius:10px}

.intg-hero{padding:76px 40px 50px}
.intg-hero__title{font-size:60px;line-height:1;letter-spacing:-.035em;max-width:800px;margin:0 auto 20px;text-wrap:balance}
.intg-hero__lead{font-size:18px;max-width:600px;margin:0 auto 32px}

.intg-cards__grid{gap:12px}
.intg-card{padding:26px;border-radius:16px}
.intg-card__head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:12px;gap:12px}
.intg-card__title{font:800 20px var(--font)}
.intg-card__badge{font:500 10px var(--mono);color:var(--accent);white-space:nowrap}
.intg-card__desc{font:400 13.5px/1.6 var(--font);color:#9aa2c0;margin-bottom:18px}
.intg-card__tags{display:flex;flex-wrap:wrap;gap:6px}
.intg-card--custom{background:linear-gradient(135deg,#0e1424,#111a2e);border:1px solid rgba(109,139,255,.2);display:flex;flex-direction:column;justify-content:center}
.intg-card__kicker{font:600 11px var(--mono);color:var(--accent);text-transform:uppercase;letter-spacing:.1em;margin-bottom:12px}
.intg-card--custom .intg-card__desc{font-size:14px}
.intg-card__link{font:700 13px var(--mono);color:var(--accent)}
.intg-card__link:hover{text-decoration:underline}

.intg-flow__box{background:#0b0f1c;border:1px solid rgba(255,255,255,.08);border-radius:20px;padding:40px}
.intg-flow__title{font-size:32px;margin:0 0 8px}
.intg-flow__lead{font:400 14px var(--font);color:#9aa2c0;margin:0 0 24px}
.intg-flow__grid{gap:12px}
.intg-step{background:var(--surface);border:1px solid rgba(255,255,255,.08);border-radius:14px;padding:22px}
.intg-step__no{font:800 28px var(--mono);color:rgba(109,139,255,.25);margin-bottom:10px}
.intg-step__title{font:700 15px var(--font);margin-bottom:6px}
.intg-step__desc{font:400 12px/1.5 var(--font);color:var(--muted)}

.intg-geo__grid{gap:14px;margin-top:24px}
.intg-geo__items{gap:8px}
.intg-geo__item{display:flex;gap:10px;font:400 13px var(--font);color:#9aa2c0}
.intg-geo__bullet{color:var(--accent);font:700 12px var(--mono);flex:none}

.intg-cta__lead{max-width:460px;margin:0 auto 26px}

@media (max-width:900px){
  .intg-hero{padding:56px 20px 40px}
  .intg-hero__title{font-size:38px}
  .intg-hero__lead{font-size:16px}
  .intg-flow__box{padding:26px 20px}
  .intg-flow__title{font-size:26px}
}
@media (max-width:560px){
  .intg-geo__grid{grid-template-columns:1fr}
  .intg-card__head{flex-direction:column;gap:4px}
}

/* ============================================================
   ROUTING (/routing)
   ============================================================ */
.rout-hero{padding:70px 40px 50px}
.rout-hero__grid{display:grid;grid-template-columns:1fr 1fr;gap:44px;align-items:center}
.rout-hero__title{font-size:56px;line-height:1.05;letter-spacing:-.035em;margin:0 0 18px}
.rout-hero__metrics{display:flex;gap:30px;margin:26px 0 28px;flex-wrap:wrap}
.rout-metric__big{font:800 26px var(--mono);color:var(--accent)}
.rout-metric__label{font:400 12px var(--font);color:var(--muted);margin-top:2px}
.rout-map{background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:20px;aspect-ratio:360/220}
.rout-map__svg{width:100%;height:100%;display:block}
@keyframes rout-dash{to{stroke-dashoffset:-20}}
.rout-map__line{animation:rout-dash 1s linear infinite}

.rout-features__grid,.rout-modes__grid,.rout-benefits__grid{gap:12px;margin-top:24px}
.rout-feature__no{font:600 10px var(--mono);color:var(--accent);letter-spacing:.1em;margin-bottom:10px}

.rout-arch__grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin-top:24px}
.rout-arch__item{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:22px}
.rout-arch__no{font:800 28px var(--mono);color:rgba(109,139,255,.25);margin-bottom:10px}
.rout-arch__title{font:700 15px var(--font);margin-bottom:6px}
.rout-arch__desc{font:400 12px/1.5 var(--font);color:var(--muted)}

.rout-mode__tag{font:600 10px var(--mono);color:var(--accent);text-transform:uppercase;letter-spacing:.08em;margin-bottom:10px}
.rout-mode__title{font:700 16px var(--font);margin-bottom:8px}
.rout-mode--recommended{border-color:rgba(109,139,255,.4)}

.rout-constraints__list{display:flex;flex-wrap:wrap;gap:8px;margin-top:24px}
.rout-monitoring__grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin-top:24px}

@media (prefers-reduced-motion:reduce){
  .rout-map__line{animation:none}
}
@media (max-width:900px){
  .rout-hero{padding:48px 20px 36px}
  .rout-hero__grid{grid-template-columns:1fr;gap:28px}
  .rout-hero__title{font-size:36px}
  .rout-arch__grid,.rout-monitoring__grid{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:560px){
  .rout-arch__grid,.rout-monitoring__grid{grid-template-columns:1fr}
  .rout-hero__metrics{gap:20px}
}

/* ============================================================
   WAREHOUSE (/warehouse)
   ============================================================ */
.wh-hero{padding:70px 40px 40px}
.wh-hero__title{font-size:52px;line-height:1.05;letter-spacing:-.035em;max-width:900px;margin:0 auto 18px;text-wrap:balance}
.wh-hero__lead{max-width:640px;margin:0 auto 28px}
.wh-hero__actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-bottom:44px}
.wh-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;max-width:900px;margin:0 auto}
.wh-stat__big{font:800 30px var(--mono);color:var(--accent)}
.wh-stat__label{font:400 12px var(--font);color:var(--muted);margin-top:4px}

.wh-modules{padding-bottom:0}
.wh-module{padding-top:32px;padding-bottom:32px}
.wh-module__grid{display:grid;grid-template-columns:1fr 1fr;gap:44px;align-items:center}
.wh-module__grid--reversed .wh-module__text{order:2}
.wh-module__no{font:600 10px var(--mono);color:var(--accent);text-transform:uppercase;letter-spacing:.12em;margin-bottom:10px}
.wh-module__title{font:800 30px var(--font);letter-spacing:-.02em;margin:0 0 18px}
.wh-module__items{gap:10px}
.wh-module__item{display:flex;gap:10px;font:400 14px/1.5 var(--font);color:#9aa2c0}
.wh-module__bullet{color:var(--accent);font:700 13px var(--mono);flex:none}

.wh-panel{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:20px;display:flex;flex-direction:column;gap:12px}
.wh-panel__head{display:flex;align-items:center;justify-content:space-between}
.wh-panel__row{display:flex;align-items:center;justify-content:space-between;gap:14px;background:#0b0f1c;border:1px solid var(--line);border-radius:12px;padding:14px 16px}
.wh-panel__row--ok{border-color:rgba(109,139,255,.3)}
.wh-panel__row--warn{border-color:rgba(255,180,84,.3)}
.wh-panel__title{font:700 14px var(--font)}
.wh-panel__sub{font:400 12px var(--font);color:var(--muted);margin-top:3px}
.wh-panel__count{font:700 14px var(--mono);color:var(--accent);white-space:nowrap}
.wh-panel__pct{font:800 18px var(--mono);color:var(--accent)}
.wh-panel__figures{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;text-align:center}
.wh-figure{font:800 22px var(--mono);color:var(--text)}
.wh-figure--warn{color:#ffb454}
.wh-figure--dim{color:var(--muted)}
.wh-progress{height:8px;border-radius:4px;background:rgba(255,255,255,.07);overflow:hidden}
.wh-progress__bar{width:87%;height:100%;background:var(--accent);border-radius:4px}

.wh-badge{font:700 11px var(--mono);padding:6px 11px;border-radius:10px;white-space:nowrap}
.wh-badge--ok,.wh-badge--done{background:rgba(109,139,255,.14);color:var(--accent)}
.wh-badge--warn,.wh-badge--progress{background:rgba(255,180,84,.14);color:#ffb454}
.wh-badge--waiting{background:rgba(255,255,255,.06);color:var(--muted)}

.wh-ship{display:flex;align-items:center;justify-content:space-between;gap:8px}
.wh-ship__step{flex:1;text-align:center;background:#0b0f1c;border:1px solid var(--line);border-radius:12px;padding:14px 6px}
.wh-ship__no{font:800 20px var(--mono);color:rgba(109,139,255,.4)}
.wh-ship__label{font:600 12px var(--font);margin-top:4px}
.wh-ship__arrow{color:var(--dim);font:700 14px var(--mono);flex:none}

.wh-cells{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.wh-cell{border-radius:12px;padding:14px 10px;text-align:center;background:var(--surface);border:1px solid rgba(255,255,255,.12)}
.wh-cell--empty{background:rgba(109,139,255,.08);border-color:rgba(109,139,255,.3)}
.wh-cell--empty .wh-cell__id,.wh-cell--empty .wh-cell__qty{color:var(--accent)}
.wh-cell--full{background:rgba(255,180,84,.12);border-color:rgba(255,180,84,.3)}
.wh-cell--full .wh-cell__id,.wh-cell--full .wh-cell__qty{color:#ffb454}
.wh-cell__id{font:700 13px var(--mono)}
.wh-cell__qty{font:400 11px var(--font);color:var(--muted);margin-top:4px}

.wh-roles__grid{gap:12px;margin-top:24px}
.wh-role__slug{font:500 11px var(--mono);color:var(--dim);margin-top:10px}

.wh-eco__modules{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:24px}
.wh-eco__module{background:var(--surface);border:1px solid rgba(109,139,255,.25);border-radius:12px;padding:14px 20px;font:700 14px var(--font)}
.wh-eco__link{color:var(--accent);font:700 16px var(--mono)}
.wh-eco__shared{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px}

@media (max-width:900px){
  .wh-hero{padding:48px 20px 32px}
  .wh-hero__title{font-size:34px}
  .wh-stats{grid-template-columns:repeat(2,1fr)}
  .wh-module__grid{grid-template-columns:1fr;gap:26px}
  .wh-module__grid--reversed .wh-module__text{order:0}
  .wh-module__title{font-size:24px}
}
@media (max-width:560px){
  .wh-cells{grid-template-columns:repeat(2,1fr)}
  .wh-ship{flex-wrap:wrap}
  .wh-panel__figures{grid-template-columns:1fr}
}

/* ============================================================
   PRICING (/pricing)
   ============================================================ */
.pric-hero{padding:70px 40px 30px}
.pric-hero__title{font-size:52px;line-height:1.05;letter-spacing:-.035em;max-width:820px;margin:0 auto 18px;text-wrap:balance}
.pric-hero__lead{max-width:620px;margin:0 auto}

.pric-plans__grid{gap:16px;align-items:start}
.plan{position:relative;background:var(--surface);border:1px solid rgba(255,255,255,.08);border-radius:18px;padding:28px;display:flex;flex-direction:column}
.plan--popular{background:linear-gradient(180deg,#111a2e,#0d1424);border-color:rgba(109,139,255,.5)}
.plan__badge{position:absolute;top:-12px;left:50%;transform:translateX(-50%);background:var(--accent);color:var(--bg);font:700 10px var(--mono);text-transform:uppercase;letter-spacing:.08em;padding:6px 14px;border-radius:12px;white-space:nowrap}
.plan__tag{font:600 10px var(--mono);color:var(--accent);text-transform:uppercase;letter-spacing:.1em;margin-bottom:10px}
.plan__name{font:800 26px var(--font);letter-spacing:-.02em}
.plan__limit{font:400 13px var(--font);color:var(--muted);margin-top:4px}
.plan__price{font:800 30px var(--mono);margin-top:18px}
.plan__note{font:400 12px var(--font);color:var(--dim);margin-top:4px}
.plan__features{gap:10px;margin:22px 0 24px}
.plan__feature{display:flex;gap:10px;font:400 13px/1.5 var(--font);color:#9aa2c0}
.plan__check{color:var(--accent);font:700 12px var(--mono);flex:none}
.plan__cta{margin-top:auto;text-align:center}

.pric-sfr__box{background:linear-gradient(135deg,#0b0f1c,#101a30);border:1px solid rgba(109,139,255,.25);border-radius:20px;padding:40px}
.pric-sfr__kicker{font:600 11px var(--mono);color:#ffb454;text-transform:uppercase;letter-spacing:.1em;margin-bottom:12px}
.pric-sfr__title{font-size:30px;margin:0 0 22px}
.pric-sfr__metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;max-width:640px;margin-bottom:26px}
.pric-sfr__big{font:800 24px var(--mono);color:var(--accent)}
.pric-sfr__label{font:400 12px var(--font);color:var(--muted);margin-top:3px}
.pric-sfr__items{gap:10px;margin-bottom:26px}

.pric-common__grid{gap:12px;margin-top:24px}

@media (max-width:900px){
  .pric-hero{padding:48px 20px 24px}
  .pric-hero__title{font-size:34px}
  .pric-sfr__box{padding:26px 20px}
  .pric-sfr__title{font-size:24px}
  .pric-sfr__metrics{grid-template-columns:1fr;gap:14px}
}

/* ============================================================
   DOWNLOAD (/download)
   ============================================================ */
.dl-hero{padding:70px 40px 50px}
.dl-hero__grid{display:grid;grid-template-columns:1fr 1fr;gap:44px;align-items:center}
.dl-hero__title{font-size:52px;line-height:1.05;letter-spacing:-.035em;margin:0 0 18px}

.dl-stores{display:flex;flex-wrap:wrap;gap:10px;margin:26px 0}
.dl-store{display:flex;gap:1px;background:var(--surface);border:1px solid rgba(255,255,255,.14);border-radius:12px;padding:11px 18px;transition:border-color .2s,transform .2s}
a.dl-store:hover{border-color:rgba(109,139,255,.5);transform:translateY(-2px)}
.dl-store__kicker{font:500 9.5px var(--mono);color:var(--dim);text-transform:uppercase;letter-spacing:.08em}
.dl-store__name{font:700 15px var(--font);color:var(--text)}
.dl-store__note{font:600 9.5px var(--mono);color:var(--accent);text-transform:uppercase;letter-spacing:.06em;margin-top:2px}
.dl-store--soon{opacity:.45;cursor:default}
.dl-store--soon:hover{border-color:rgba(255,255,255,.14);transform:none}
.dl-store--soon .dl-store__note{color:var(--dim)}

.dl-stats{display:flex;gap:34px;flex-wrap:wrap}
.dl-stat__big{font:800 24px var(--mono);color:var(--accent)}
.dl-stat__label{font:400 12px var(--font);color:var(--muted);margin-top:2px}

.dl-visual{display:flex;gap:20px;justify-content:center;align-items:center;flex-wrap:wrap}
.dl-matrix,.dl-qr{display:grid;grid-template-columns:repeat(12,1fr);gap:2px;width:190px;aspect-ratio:1;padding:12px;border-radius:16px}
.dl-matrix{background:var(--surface);border:1px solid var(--line)}
.dl-qr{background:#e6ecff}
.dl-matrix__cell,.dl-qr__cell{aspect-ratio:1;border-radius:1px}
.dl-matrix__cell.is-on{background:var(--accent)}
.dl-qr__cell.is-on{background:var(--bg)}

.dl-features__grid{gap:12px;margin-top:24px}
.dl-reqs__box{background:#0b0f1c;border:1px solid var(--line);border-radius:20px;padding:36px}
.dl-reqs__title{font-size:26px;margin:0 0 20px}
.dl-reqs__items{gap:10px}
.dl-reqs__ios{font:400 13px/1.6 var(--font);color:var(--muted);margin:20px 0 0;padding-top:18px;border-top:1px solid var(--line)}

@media (max-width:900px){
  .dl-hero{padding:48px 20px 36px}
  .dl-hero__grid{grid-template-columns:1fr;gap:32px}
  .dl-hero__title{font-size:34px}
  .dl-reqs__box{padding:26px 20px}
}

/* ============================================================
   SCANNER (/scanner)
   ============================================================ */
.scan-hero{padding:70px 40px 50px}
.scan-hero__grid{display:grid;grid-template-columns:1fr 1fr;gap:44px;align-items:center}
.scan-hero__title{font-size:50px;line-height:1.05;letter-spacing:-.035em;margin:0 0 18px}
.scan-chips{display:flex;flex-wrap:wrap;gap:6px;margin:24px 0 26px}

.scan-demo{background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:26px;display:flex;flex-direction:column;align-items:center;gap:18px;cursor:pointer}
.scan-demo__matrix{display:grid;grid-template-columns:repeat(12,1fr);gap:2px;width:170px;aspect-ratio:1}
.scan-demo__slide{text-align:center;width:100%}
.scan-demo__fmt{font:600 10px var(--mono);color:var(--accent);text-transform:uppercase;letter-spacing:.1em}
.scan-demo__code{font:700 14px var(--mono);color:var(--text);margin:8px 0;word-break:break-all}
.scan-demo__status{font:400 12px var(--font);color:var(--muted)}

.scan-how__grid,.scan-features__grid,.scan-devices__grid{gap:12px;margin-top:24px}
.scan-sources__grid,.scan-formats__grid{gap:14px;margin-top:24px}
.scan-source__title{font:800 20px var(--font);margin-bottom:6px}
.scan-formats__kind{font:700 12px var(--mono);color:var(--accent);text-transform:uppercase;letter-spacing:.1em;margin-bottom:14px}
.scan-formats__list{display:flex;flex-wrap:wrap;gap:8px}

@media (max-width:900px){
  .scan-hero{padding:48px 20px 36px}
  .scan-hero__grid{grid-template-columns:1fr;gap:32px}
  .scan-hero__title{font-size:34px}
}

/* ============================================================
   FAQ (/faq)
   ============================================================ */
.faq-hero{padding:70px 40px 24px}
.faq-hero__title{font-size:48px;line-height:1.08;letter-spacing:-.035em;max-width:760px;margin:0 auto 16px;text-wrap:balance}
.faq-hero__lead{max-width:600px;margin:0 auto}

.faq-filter{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:26px}
.faq-cat{display:inline-flex;align-items:center;gap:7px;background:transparent;border:1px solid rgba(255,255,255,.14);border-radius:20px;padding:9px 15px;color:var(--muted);font:600 12px var(--mono);cursor:pointer;transition:border-color .2s,color .2s,background .2s}
.faq-cat:hover{border-color:rgba(109,139,255,.5);color:var(--text)}
.faq-cat.is-active{background:var(--accent);border-color:var(--accent);color:var(--bg)}
.faq-cat__count{font:700 10px var(--mono);opacity:.7}

.faq-list{display:flex;flex-direction:column;gap:10px}
.faq-item{background:var(--surface);border:1px solid var(--line);border-radius:14px;overflow:hidden;transition:border-color .2s}
.faq-item.is-open{border-color:rgba(109,139,255,.4)}
.faq-q{display:flex;align-items:center;justify-content:space-between;gap:16px;width:100%;background:none;border:0;color:inherit;font:700 15px/1.4 var(--font);text-align:left;padding:18px 20px;cursor:pointer}
.faq-q__icon{flex:none;font:400 20px var(--mono);color:var(--accent);transition:transform .25s}
.faq-item.is-open .faq-q__icon{transform:rotate(45deg)}
/* Без JS ответы раскрыты: контент остаётся доступным. Класс js-on ставит
   app.js на <html> до первой отрисовки — только тогда включается аккордеон. */
.faq-a{font:400 14px/1.65 var(--font);color:#9aa2c0;padding:0 20px 18px}
.js-on .faq-a{display:none}
.js-on .faq-item.is-open .faq-a{display:block}
.js-on .faq-q{cursor:pointer}
.faq-q{cursor:default}

@media (max-width:900px){
  .faq-hero{padding:48px 20px 20px}
  .faq-hero__title{font-size:32px}
  .faq-q{font-size:14px;padding:16px}
  .faq-a{padding:0 16px 16px}
}

/* ============================================================
   CONTACTS (/contacts)
   ============================================================ */
.cnt-hero{padding:70px 40px 24px}
.cnt-hero__title{font-size:48px;line-height:1.08;letter-spacing:-.035em;max-width:760px;margin:0 auto 16px;text-wrap:balance}
.cnt-hero__lead{max-width:600px;margin:0 auto}

.cnt-grid{display:grid;grid-template-columns:1.3fr 1fr;gap:32px;align-items:start}
.form{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:28px}
.form__field{display:block;margin-bottom:16px}
.form__label{display:block;font:600 11px var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--dim);margin-bottom:7px}
.form__input{width:100%;background:#0b0f1c;border:1px solid var(--line);border-radius:9px;padding:12px 14px;color:var(--text);font:400 14px var(--font)}
.form__input:focus{outline:2px solid var(--accent);outline-offset:1px;border-color:transparent}
.form__input--area{resize:vertical;min-height:96px;font-family:var(--font)}
.form__input.is-invalid{border-color:#ff6b6b}
.form__err{display:block;font:400 12px var(--font);color:#ff6b6b;margin-top:5px}
.form__submit{width:100%;margin-top:6px}
.form__note{font:400 11.5px/1.5 var(--font);color:var(--dim);margin:12px 0 0;text-align:center}
.form__hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.form__ok{background:rgba(109,139,255,.1);border:1px solid var(--accent);border-radius:18px;padding:32px}
.form__ok-title{font:800 20px var(--font);margin-bottom:8px}
.form__ok-text{font:400 14px/1.6 var(--font);color:#9aa2c0;margin:0}

.cnt-side{display:flex;flex-direction:column;gap:14px}
.cnt-contacts{display:flex;flex-direction:column;gap:10px}
.cnt-contact{display:flex;align-items:center;gap:14px;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:14px 16px;transition:border-color .2s}
a.cnt-contact:hover{border-color:rgba(109,139,255,.45)}
.cnt-contact__mark{flex:none;width:36px;height:36px;border-radius:10px;background:rgba(109,139,255,.1);border:1px solid rgba(109,139,255,.28);display:grid;place-items:center;font:700 12px var(--mono);color:var(--accent)}
.cnt-contact__label{display:block;font:500 11px var(--mono);color:var(--dim);text-transform:uppercase;letter-spacing:.06em}
.cnt-contact__value{display:block;font:700 14px var(--font);margin-top:2px}
.cnt-perks__title{font:700 14px var(--font);margin-bottom:14px}
.cnt-perks__list{gap:10px}
.cnt-steps__grid{gap:12px;margin-top:24px}

@media (max-width:900px){
  .cnt-hero{padding:48px 20px 20px}
  .cnt-hero__title{font-size:32px}
  .cnt-grid{grid-template-columns:1fr;gap:22px}
  .form{padding:22px 18px}
}

/* ============================================================
   HOME (/) — главная
   ============================================================ */
.home-hero{padding:70px 40px 50px}
.home-hero__grid{display:grid;grid-template-columns:1.1fr .9fr;gap:44px;align-items:center}
.home-hero__title{font-size:54px;line-height:1.05;letter-spacing:-.035em;margin:0 0 18px}
.home-hero__lead{font-size:17px;max-width:560px}
.home-hero__actions{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:22px}

.home-problems__grid,.home-solutions__grid,.home-admin__grid,.home-scan__grid,
.home-adv__grid,.home-industries__grid,.home-security__grid,.home-tech__grid,
.home-steps__grid,.home-plans__grid{gap:12px;margin-top:24px}
.home-problem__no{font:800 22px var(--mono);color:rgba(109,139,255,.3);margin-bottom:8px}

.home-products__grid{gap:16px;margin-top:24px}
.home-product{padding:28px}
.home-product__tag{font:600 10px var(--mono);color:var(--accent);text-transform:uppercase;letter-spacing:.1em;margin-bottom:10px}
.home-product__title{font:800 24px var(--font);letter-spacing:-.02em}
.home-product__sub{font:400 13px var(--font);color:var(--muted);margin-top:4px}
.home-product__list{gap:14px;margin-top:20px}
.home-product__item{padding-left:14px;border-left:2px solid rgba(109,139,255,.3)}
.home-product__item-title{font:700 13.5px var(--font)}
.home-product__item-desc{font:400 12.5px/1.5 var(--font);color:var(--muted);margin-top:3px}

.home-wh__chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:24px}
.home-wh__grid{gap:10px;margin-top:18px}
.home-tech__label{font:600 11px var(--mono);color:var(--accent);text-transform:uppercase;letter-spacing:.08em;margin-bottom:6px}
.home-tech__value{font:400 13.5px/1.5 var(--font);color:#9aa2c0}
.home-plans__note{font:400 13px var(--font);color:var(--muted);margin-top:20px;text-align:center}
.home-cta__points{display:inline-flex;flex-direction:column;gap:8px;margin-bottom:24px;text-align:left}

@media (max-width:900px){
  .home-hero{padding:48px 20px 36px}
  .home-hero__grid{grid-template-columns:1fr;gap:32px}
  .home-hero__title{font-size:34px}
  .home-product{padding:22px 18px}
  .home-product__title{font-size:20px}
}

.form__alert{background:rgba(255,107,107,.1);border:1px solid #ff6b6b;border-radius:10px;padding:14px 16px;font:600 13px/1.5 var(--font);color:#ff6b6b;margin-bottom:18px}

/* ============================================================================
   STEP 9: РЕДИЗАЙН СЕКЦИЙ ГЛАВНОЙ
   Пять блоков ушли от общей плиточной сетки: у каждого своя форма,
   продиктованная содержанием. Номера остались только там, где обозначают
   реальный порядок (проблемы, шаги), и сняты со списков без порядка.
   ============================================================================ */

/* --- Экосистема: bento ---------------------------------------------------- */
.bento{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:28px}
.bento__cell{display:flex;flex-direction:column;gap:6px;background:var(--surface);
  border:1px solid var(--line);border-radius:14px;padding:22px;position:relative;overflow:hidden}
a.bento__cell{transition:border-color .2s,transform .2s}
a.bento__cell:hover{border-color:rgba(109,139,255,.45);transform:translateY(-2px)}
a.bento__cell:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.bento__cell--span2{grid-column:span 2}
.bento__cell--span3{grid-column:span 3;flex-direction:row;align-items:center;
  justify-content:space-between;gap:20px;background:linear-gradient(90deg,var(--surface),#111a2e);
  border-color:rgba(109,139,255,.2)}
.bento__title{font:700 20px/1.2 var(--font);color:var(--text)}
.bento__desc{font:400 13px/1.5 var(--font);color:var(--muted)}
.bento__more{font:700 13px var(--mono);color:var(--accent);white-space:nowrap}
/* Свечение в углу крупной плитки — единственная декорация в блоке. */
.bento__cell--span2::after{content:'';position:absolute;right:-20px;top:-20px;
  width:120px;height:120px;border-radius:50%;
  background:radial-gradient(circle,rgba(109,139,255,.18),transparent 70%);pointer-events:none}

/* --- Проблемы: нумерованный перечень -------------------------------------- */
.prob-list{list-style:none;margin:28px 0 0;padding:0;border-top:1px solid var(--line)}
.prob{display:flex;gap:22px;align-items:baseline;padding:22px 0;border-bottom:1px solid var(--line)}
.prob__no{font:700 32px/1 var(--mono);color:rgba(109,139,255,.35);flex-shrink:0;min-width:52px}
.prob__body{display:flex;flex-direction:column;gap:5px}
.prob__title{font:700 18px/1.3 var(--font);color:var(--text)}
.prob__desc{font:400 14px/1.6 var(--font);color:var(--muted);max-width:70ch}

/* --- Решение: свойства без номеров ---------------------------------------- */
.trait-row{display:grid;grid-template-columns:repeat(4,1fr);gap:26px;margin-top:28px}
.trait{border-top:2px solid var(--accent);padding-top:16px}
.trait__title{font:700 17px/1.3 var(--font);color:var(--text);margin-bottom:6px}
.trait__desc{font:400 13px/1.6 var(--font);color:var(--muted)}

/* --- Модули веб-панели: плотная сетка 3x3 --------------------------------- */
.modgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;margin-top:28px;
  background:var(--line);border:1px solid var(--line);border-radius:14px;overflow:hidden}
.modcell{background:var(--bg);padding:20px 22px}
.modcell__title{font:700 16px/1.3 var(--font);color:var(--text);margin-bottom:6px}
.modcell__desc{font:400 13px/1.55 var(--font);color:var(--muted)}

/* --- Преимущества: липкий заголовок + поток ------------------------------- */
.split{display:grid;grid-template-columns:minmax(260px,1fr) minmax(0,2fr);gap:48px;align-items:start}
.split__aside{position:sticky;top:96px}
/* Шесть преимуществ в одну колонку дают слишком длинную ленту — раскладываем
   в две, чтобы блок читался вместе с липким заголовком слева. */
.split__main{display:grid;grid-template-columns:repeat(2,1fr);gap:0 40px}
.adv{padding:18px 0;border-bottom:1px solid var(--line)}
.adv:nth-child(-n+2){padding-top:0}
.adv:nth-last-child(-n+2){border-bottom:0;padding-bottom:0}
.adv__title{font:700 17px/1.3 var(--font);color:var(--text);margin-bottom:5px}
.adv__desc{font:400 14px/1.6 var(--font);color:var(--muted);max-width:72ch}

@media (max-width:900px){
  .bento,.modgrid{grid-template-columns:repeat(2,1fr)}
  .bento__cell--span2,.bento__cell--span3{grid-column:span 2}
  .bento__cell--span3{flex-direction:column;align-items:flex-start}
  .trait-row{grid-template-columns:repeat(2,1fr)}
  .split{grid-template-columns:1fr;gap:28px}
  .split__aside{position:static}
  .split__main{grid-template-columns:1fr;gap:0}
  .adv{padding-top:18px}
  .adv:first-child{padding-top:0}
  .adv:not(:last-child){border-bottom:1px solid var(--line);padding-bottom:18px}
}
@media (max-width:560px){
  .bento,.modgrid,.trait-row{grid-template-columns:1fr}
  .bento__cell--span2,.bento__cell--span3{grid-column:span 1}
  .prob{gap:14px}
  .prob__no{font-size:24px;min-width:38px}
}
.modgrid--4{grid-template-columns:repeat(4,1fr)}
@media (max-width:900px){.modgrid--4{grid-template-columns:repeat(2,1fr)}}
@media (max-width:560px){.modgrid--4{grid-template-columns:1fr}}

/* ============================================================================
   STEP 10: /features — полосы модулей и лента процесса
   ============================================================================ */

/* --- Полосы модулей ------------------------------------------------------- */
.mod-strips{border-top:1px solid var(--line)}
.strip{padding:0;border-bottom:1px solid var(--line)}
.strip__inner{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  gap:56px;align-items:start;padding-top:52px;padding-bottom:52px}
/* Чётные полосы зеркальны: глаз не засыпает на шести одинаковых блоках. */
.strip:nth-child(even) .strip__head{order:2}
.strip:nth-child(even) .strip__items{order:1}
.strip__head{position:relative;padding-left:76px}
.strip__no{position:absolute;left:0;top:-6px;font:700 44px/1 var(--mono);
  color:rgba(109,139,255,.28)}
.strip__kicker{font:600 11px var(--mono);color:var(--accent);
  text-transform:uppercase;letter-spacing:.12em;margin-bottom:8px}
.strip__title{font:800 30px/1.15 var(--font);color:var(--text);
  letter-spacing:-.02em;margin:0 0 12px}
.strip__desc{font:400 15px/1.65 var(--font);color:var(--muted);margin:0 0 18px;max-width:46ch}
.strip__link{font:700 14px var(--font);color:var(--accent)}
.strip__link:hover{text-decoration:underline}
.strip__items{list-style:none;margin:0;padding:0;display:grid;
  grid-template-columns:repeat(2,1fr);gap:1px;background:var(--line);
  border:1px solid var(--line);border-radius:14px;overflow:hidden}
.strip__item{background:var(--bg);padding:20px 18px;font:600 14px/1.45 var(--font);
  color:var(--text);display:flex;align-items:center;min-height:74px}

/* --- Лента процесса ------------------------------------------------------- */
.flow{list-style:none;margin:32px 0 0;padding:0;display:grid;
  grid-template-columns:repeat(5,1fr);gap:20px;position:relative}
/* Линия-соединитель: шаги идут друг за другом, и это видно. */
.flow::before{content:'';position:absolute;top:19px;left:8%;right:8%;height:1px;
  background:linear-gradient(90deg,transparent,rgba(109,139,255,.4),transparent)}
.flow__step{position:relative;padding-top:0}
.flow__no{width:38px;height:38px;border-radius:50%;background:var(--bg);
  border:1px solid rgba(109,139,255,.45);color:var(--accent);
  font:700 15px var(--mono);display:grid;place-items:center;margin-bottom:16px;
  position:relative;z-index:1}
.flow__title{font:700 15px/1.3 var(--font);color:var(--text);margin-bottom:6px}
.flow__desc{font:400 13px/1.55 var(--font);color:var(--muted)}

@media (max-width:900px){
  .strip__inner{grid-template-columns:1fr;gap:28px;padding-top:38px;padding-bottom:38px}
  .strip:nth-child(even) .strip__head{order:0}
  .strip:nth-child(even) .strip__items{order:0}
  .strip__head{padding-left:62px}
  .strip__no{font-size:34px}
  .strip__title{font-size:25px}
  .flow{grid-template-columns:repeat(2,1fr);gap:26px}
  .flow::before{display:none}
}
@media (max-width:560px){
  .strip__items{grid-template-columns:1fr}
  .strip__item{min-height:0;padding:15px 16px}
  .flow{grid-template-columns:1fr}
}

/* ============================================================================
   STEP 11: /about — манифест, цифры, слои, облако тегов
   ============================================================================ */

.about-hero{padding-top:88px;padding-bottom:44px}
.about-hero__title{font-size:52px;max-width:16ch;line-height:1.08}
.about-hero__lead{font-size:17px;max-width:62ch}

/* --- Цифры полосой -------------------------------------------------------- */
.figures{display:grid;grid-template-columns:repeat(4,1fr);gap:0;
  border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.figure{padding:26px 28px;border-right:1px solid var(--line)}
.figure:last-child{border-right:0}
.figure:first-child{padding-left:0}
.figure__big{font:700 38px/1 var(--mono);color:var(--accent);letter-spacing:-.02em}
.figure__label{font:600 14px var(--font);color:var(--text);margin:8px 0 4px}
.figure__desc{font:400 12.5px/1.45 var(--font);color:var(--muted)}

/* --- Манифест ------------------------------------------------------------- */
/* Единственный крупнотипографский блок на сайте: три предложения о том,
   зачем компания существует. Заявление не бывает плиткой. */
.manifest{margin-top:8px}
/* Каждое предложение начинается с акцентной черты — ритм без нумерации. */
.manifest__line{font:700 34px/1.28 var(--font);letter-spacing:-.02em;
  color:var(--text);margin:0 0 26px;max-width:34ch;
  padding-left:26px;border-left:2px solid var(--accent)}
.manifest__line:last-child{margin-bottom:0}

/* --- Три слоя платформы --------------------------------------------------- */
/* Разделители через gap + фон: border-right обрывался бы на разной высоте
   колонок, потому что тянется только до конца своего текста. */
.layers{display:grid;grid-template-columns:repeat(3,1fr);gap:0 1px;margin-top:26px;
  border-top:1px solid var(--line);background:var(--line)}
.layer{background:var(--bg);padding:26px 28px 26px 0}
.layer:not(:first-child){padding-left:28px}
.layer__title{font:700 19px/1.25 var(--font);color:var(--text);margin-bottom:10px}
.layer__desc{font:400 14px/1.65 var(--font);color:var(--muted)}

/* --- Облако технологий ---------------------------------------------------- */
.tagcloud{display:flex;flex-wrap:wrap;gap:9px;margin-top:24px}
.tagcloud__tag{font:600 12.5px var(--mono);color:#c3c9de;background:var(--surface);
  border:1px solid var(--line);border-radius:8px;padding:9px 14px}

@media (max-width:900px){
  .about-hero__title{font-size:36px;max-width:none}
  .figures{grid-template-columns:repeat(2,1fr)}
  .figure{border-bottom:1px solid var(--line);padding-left:0}
  .figure:nth-child(2n){border-right:0;padding-left:20px}
  .figure:nth-last-child(-n+2){border-bottom:0}
  .manifest__line{font-size:25px;max-width:none}
  .layers{grid-template-columns:1fr;gap:1px 0}
  .layer{padding:22px 0}
  .layer:not(:first-child){padding-left:0}
}
@media (max-width:560px){
  .figures{grid-template-columns:1fr}
  .figure{padding-left:0 !important;border-right:0}
  .manifest__line{font-size:21px;padding-left:18px}
}

/* ============================================================================
   STEP 12: HERO — приведён к Kodlog Landing.dc.html
   Порядок блоков шаблона: пилюля → H1 → лид → теги модулей → кнопки → цифры.
   ============================================================================ */

.home-hero{padding-top:76px;padding-bottom:70px}
.home-hero__grid{display:grid;grid-template-columns:1.15fr .85fr;gap:48px;align-items:center}
.home-hero__title{font-size:66px;line-height:.98;letter-spacing:-.035em;margin:0 0 22px;text-wrap:balance}
.home-hero__lead{font-size:17px;line-height:1.6;max-width:460px;margin:0 0 20px}

/* Пилюля с живой точкой */
.pill--live{display:inline-flex;align-items:center;gap:8px;font:600 11px var(--mono);
  color:var(--accent);text-transform:uppercase;letter-spacing:.12em;
  border:1px solid rgba(109,139,255,.35);padding:7px 13px;border-radius:20px;margin-bottom:28px}
.pill__dot{width:6px;height:6px;border-radius:50%;background:var(--accent);
  animation:blink 1.4s steps(1) infinite}

.scan-chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:34px}
.scan-chips .tag{font:600 11px var(--mono);color:var(--muted);
  border:1px solid rgba(255,255,255,.12);padding:6px 12px;border-radius:20px}

.home-hero__actions{display:flex;gap:12px;margin-bottom:44px}
.btn--outline{border:1px solid rgba(255,255,255,.18);color:var(--text);background:transparent}

.hero-stats{display:flex;gap:38px;flex-wrap:wrap}
.hero-stat__big{font:700 30px var(--mono);color:var(--accent)}
.hero-stat__label{font:500 11px var(--mono);color:var(--dim);
  text-transform:uppercase;letter-spacing:.05em;margin-top:2px}

/* --- Карточка сканера ----------------------------------------------------- */
.scan-card{width:290px;justify-self:center;cursor:pointer;background:#0d1220;
  border:1px solid rgba(109,139,255,.25);border-radius:20px;padding:18px;
  box-shadow:0 24px 60px -20px rgba(109,139,255,.25);animation:floaty 6s ease-in-out infinite}
.scan-card__head{display:flex;align-items:center;justify-content:space-between;
  margin-bottom:12px;font:700 11px var(--mono);letter-spacing:.06em}
.scan-card__name{color:var(--accent)}
.scan-card__online{display:flex;align-items:center;gap:6px;color:#9aa2c0}
.scan-card__dot{width:7px;height:7px;border-radius:50%;background:var(--accent);
  box-shadow:0 0 8px var(--accent);animation:blink 1.6s steps(1) infinite}
.scan-card__frame{position:relative;aspect-ratio:1/1;border-radius:14px;
  background:#060a12;overflow:hidden;display:grid;place-items:center}
.scan-card__matrix{width:52%;aspect-ratio:1/1;display:grid;
  grid-template-columns:repeat(12,1fr);background:#0a0f1a;
  border-left:2px solid var(--accent);border-bottom:2px solid var(--accent)}
.scan-card__cell{background:transparent}
.scan-card__cell.is-on{background:var(--accent)}
.scan-card__beam{position:absolute;left:8%;right:8%;height:2px;
  background:linear-gradient(90deg,transparent,var(--accent),transparent);
  box-shadow:0 0 12px var(--accent);animation:scanline 2.6s ease-in-out infinite}
.scan-card__slide{display:none}
.scan-card__slide.is-active{display:block}
.scan-card__status{margin-top:12px;padding:10px 12px;border-radius:9px;
  background:rgba(109,139,255,.1);border:1px solid rgba(109,139,255,.25);
  font:600 12px var(--mono);color:var(--accent)}
.scan-card__code{margin-top:8px;font:500 10.5px/1.5 var(--mono);color:#7b83a4;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.scan-card__hint{margin-top:10px;text-align:center;font:500 9.5px var(--mono);
  color:#5a6284;text-transform:uppercase;letter-spacing:.1em}

@keyframes blink{0%,55%{opacity:1}55.01%,100%{opacity:.25}}
@keyframes floaty{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}
@keyframes scanline{0%{top:10%}50%{top:82%}100%{top:10%}}

@media (max-width:900px){
  .home-hero__grid{grid-template-columns:1fr;gap:36px}
  .home-hero__title{font-size:38px}
  .hero-stats{gap:24px}
  .scan-card{justify-self:start}
}
@media (max-width:560px){
  .home-hero__title{font-size:32px}
  .scan-card{width:100%;max-width:290px}
  .home-hero__actions{flex-direction:column;align-items:stretch}
  .btn{text-align:center}
}

/* ============================================================================
   STEP 13: секции главной, добавленные по шаблону — ROUTING, DOWNLOAD, FAQ
   ============================================================================ */

.pill--outline{display:inline-block;font:600 11px var(--mono);color:var(--accent);
  text-transform:uppercase;letter-spacing:.12em;border:1px solid rgba(109,139,255,.35);
  padding:6px 12px;border-radius:20px;margin-bottom:18px}

/* --- Маршрутизация -------------------------------------------------------- */
.rt-box{background:#0b0f1c;border:1px solid rgba(255,255,255,.08);border-radius:24px;
  padding:48px;display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:center}
.rt-title{font:800 42px/1.02 var(--font);letter-spacing:-.03em;margin:0 0 16px}
.rt-lead{font:400 16px/1.6 var(--font);color:#9aa2c0;margin:0 0 26px}
.rt-chips{display:flex;flex-wrap:wrap;gap:8px}
.rt-chips .tag{font:600 12px var(--mono);color:#c3c9de;
  border:1px solid rgba(255,255,255,.12);padding:7px 13px;border-radius:20px}
.rt-map{position:relative;background:#0d1220;border:1px solid rgba(255,255,255,.08);
  border-radius:18px;padding:26px;height:220px;overflow:hidden;margin-bottom:14px}
.rt-map::before{content:'';position:absolute;inset:0;
  background-image:linear-gradient(rgba(120,140,255,.08) 1px,transparent 1px),
    linear-gradient(90deg,rgba(120,140,255,.08) 1px,transparent 1px);
  background-size:28px 28px}
.rt-map__svg{position:relative;width:100%;height:100%}
.rt-map__caption{position:absolute;bottom:14px;left:26px;font:600 11px var(--mono);color:#9aa2c0}
.rt-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.rt-stat{background:var(--surface);border:1px solid var(--line);border-radius:12px;
  padding:14px;text-align:center}
.rt-stat__big{font:700 22px var(--mono);color:var(--text)}
.rt-stat__big--accent{color:var(--accent)}
.rt-stat__label{font:500 10px var(--font);color:var(--muted);margin-top:2px}

/* --- Скачать -------------------------------------------------------------- */
.dl-grid{display:grid;grid-template-columns:1fr .7fr;gap:48px;align-items:center}
.dl-title{font:800 44px var(--font);letter-spacing:-.03em;margin:0 0 16px}
.dl-lead{font:400 16px/1.6 var(--font);color:#9aa2c0;max-width:440px;margin:0 0 24px}
.dl-stats{display:flex;gap:34px;margin-bottom:28px;flex-wrap:wrap}
.dl-stat__big{font:700 26px var(--mono);color:var(--accent)}
.dl-stat__label{font:500 11px var(--font);color:var(--muted)}
.dl-stores{display:flex;gap:12px;flex-wrap:wrap}
/* Кнопки магазинов в секции главной: без иконок, текст колонкой. На
   странице /download они горизонтальные с иконкой — см. STEP 19. */
.home-download .dl-store{display:flex;flex-direction:column;background:var(--surface);
  border:1px solid rgba(255,255,255,.12);border-radius:11px;padding:12px 20px;color:var(--text)}
a.dl-store:hover{border-color:rgba(109,139,255,.45)}
a.dl-store:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.dl-store--soon{opacity:.55}
.dl-store__kicker{font:500 10px var(--mono);color:var(--muted)}
.dl-store__name{font:700 15px var(--font)}

.phone{justify-self:center;width:230px;height:400px;background:#0d1220;
  border:1px solid rgba(109,139,255,.2);border-radius:34px;padding:16px;
  box-shadow:0 30px 70px -25px rgba(109,139,255,.25)}
.phone__screen{height:100%;background:#060a12;border-radius:22px;padding:18px;
  display:flex;flex-direction:column}
.phone__brand{display:flex;align-items:center;gap:8px;font:700 13px var(--font);margin-bottom:16px}
.phone__logo{width:22px;height:22px;border-radius:6px;background:var(--accent);
  color:var(--bg);display:grid;place-items:center;font:800 12px var(--mono)}
.phone__chips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:16px}
.phone__chip{font:600 9px var(--mono);color:var(--muted);
  border:1px solid rgba(255,255,255,.12);padding:3px 7px;border-radius:10px}
.phone__chip.is-active{color:var(--accent);border-color:rgba(109,139,255,.3)}
.phone__frame{position:relative;flex:1;border-radius:14px;background:#0a0f1a;
  overflow:hidden;display:grid;place-items:center}
.phone__matrix{width:56%;aspect-ratio:1/1;display:grid;grid-template-columns:repeat(12,1fr);
  border-left:2px solid var(--accent);border-bottom:2px solid var(--accent)}
.phone__cell{background:transparent}
.phone__cell.is-on{background:var(--accent)}
.phone__beam{position:absolute;left:10%;right:10%;height:2px;
  background:linear-gradient(90deg,transparent,var(--accent),transparent);
  box-shadow:0 0 12px var(--accent);animation:scanline 2.6s ease-in-out infinite}

/* --- FAQ на главной ------------------------------------------------------- */
.faq-narrow{max-width:900px;margin:0 auto}
.home-faq__head{margin-bottom:36px}
.faq-title{font:800 42px var(--font);letter-spacing:-.03em;margin:0}

@media (max-width:900px){
  .rt-box{grid-template-columns:1fr;gap:32px;padding:28px}
  .rt-title{font-size:30px}
  .dl-grid{grid-template-columns:1fr;gap:36px}
  .dl-title,.faq-title{font-size:30px}
  .phone{justify-self:start}
}
@media (max-width:560px){
  .rt-stats{grid-template-columns:1fr}
  .dl-stores{flex-direction:column}
  .dl-store{align-items:flex-start}
}

/* ============================================================================
   STEP 14: плитки и заголовки секций — возврат к подаче Kodlog Landing.dc.html
   ============================================================================ */

.sec-head{margin-bottom:38px}
.sec-title{font:800 42px var(--font);letter-spacing:-.03em;margin:0 0 8px}
.sec-sub{font:400 16px var(--font);color:#9aa2c0;margin:0}

.tiles{display:grid;gap:12px}
.tiles--3{grid-template-columns:repeat(3,1fr)}
.tiles--4{grid-template-columns:repeat(4,1fr)}
.tile{background:var(--surface);border:1px solid rgba(255,255,255,.08);
  border-radius:14px;padding:22px;transition:border-color .3s}
.tile:hover{border-color:rgba(109,139,255,.4)}
.tile__no{font:700 13px var(--mono);color:#3a4360;margin-bottom:14px}
.tile__title{font:700 16px var(--font);margin-bottom:8px}
.tile__desc{font:400 13px/1.5 var(--font);color:#9aa2c0}

/* --- Решение — КодЛог ----------------------------------------------------- */
.sol-box{background:#0b0f1c;border:1px solid rgba(255,255,255,.08);border-radius:24px;
  padding:48px;position:relative;overflow:hidden}
.sol-box::before{content:'';position:absolute;right:-60px;top:-60px;width:280px;height:280px;
  border-radius:50%;background:radial-gradient(circle,rgba(109,139,255,.1),transparent 70%);
  pointer-events:none}
.sol-grid{display:grid;grid-template-columns:1fr 1fr;gap:44px;align-items:center;
  position:relative}
.sol-title{font:800 44px var(--font);letter-spacing:-.03em;margin:0 0 16px}
.sol-lead{font:400 16px/1.6 var(--font);color:#9aa2c0;margin:0}
.sol-list{display:flex;flex-direction:column;gap:14px}
.sol-item{display:flex;gap:14px;align-items:flex-start;background:var(--surface);
  border:1px solid rgba(255,255,255,.08);border-radius:12px;padding:16px 18px}
.sol-item__no{flex:none;width:28px;height:28px;border-radius:7px;
  background:rgba(109,139,255,.12);border:1px solid rgba(109,139,255,.3);
  display:grid;place-items:center;font:700 12px var(--mono);color:var(--accent)}
.sol-item__title{font:700 15px var(--font);margin-bottom:3px}
.sol-item__desc{font:400 13px var(--font);color:#9aa2c0}

@media (max-width:900px){
  .tiles--3,.tiles--4{grid-template-columns:repeat(2,1fr)}
  .sec-title{font-size:30px}
  .sol-box{padding:28px}
  .sol-grid{grid-template-columns:1fr;gap:28px}
  .sol-title{font-size:30px}
}
@media (max-width:560px){
  .tiles--3,.tiles--4{grid-template-columns:1fr}
}

/* ============================================================================
   STEP 15: /scanner — приведено к Scanner.dc.html
   ============================================================================ */

.scan-hero{padding-top:72px;padding-bottom:60px}
.scan-hero__grid{display:grid;grid-template-columns:1.1fr .9fr;gap:48px;align-items:center}
.scan-hero__title{font-size:56px;line-height:1;letter-spacing:-.035em;margin:0 0 20px;text-wrap:balance}
.scan-hero__lead{font-size:17px;line-height:1.6;max-width:480px;margin:0 0 24px}
/* Чипы форматов здесь акцентные, в отличие от нейтральных на главной. */
.scan-chips--accent{margin-bottom:30px}
.scan-chips--accent .tag{font:600 11px var(--mono);color:var(--accent);
  border:1px solid rgba(109,139,255,.3);padding:6px 12px;border-radius:18px}

.tile__tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}
.tile__tags .tag{font:600 10.5px var(--mono);color:var(--muted);
  border:1px solid rgba(255,255,255,.12);padding:4px 9px;border-radius:14px}

.scan-features__title,.scan-formats__title,.scan-devices__title{margin-bottom:26px}
.scan-source__title{font:700 19px var(--font);margin-bottom:4px}
.scan-source__kind{font:600 12px var(--mono);color:var(--accent);margin-bottom:12px}
.scan-formats__kind{font:700 15px var(--font);color:var(--text);margin-bottom:14px}
.scan-formats__list{display:flex;flex-wrap:wrap;gap:8px}

@media (max-width:900px){
  .scan-hero__grid{grid-template-columns:1fr;gap:36px}
  .scan-hero__title{font-size:34px}
  .scan-card{justify-self:start}
}
@media (max-width:560px){
  .scan-hero__title{font-size:29px}
}

/* ============================================================================
   STEP 16: /routing и /pricing — приведено к шаблонам
   ============================================================================ */

/* --- Routing: hero -------------------------------------------------------- */
.rout-hero__grid{grid-template-columns:1.05fr .95fr}
.rout-hero__title{font-size:58px;line-height:1.02;letter-spacing:-.035em}
.rout-map{position:relative}
/* Подпись под схемой маршрута — была потеряна при переносе. */
.rout-map__caption{position:absolute;bottom:20px;left:26px;
  font:600 12px var(--mono);color:#9aa2c0}

/* --- Pricing: тариф СФР --------------------------------------------------- */
.sfr-box{position:relative;overflow:hidden;background:linear-gradient(135deg,#0d1424,#101a30);
  border:1px solid rgba(109,139,255,.3);border-radius:24px;padding:48px}
/* Циановое свечение снизу — акцент, отделяющий госконтракт от обычных планов. */
.sfr-box::after{content:'';position:absolute;bottom:-100px;left:20%;width:300px;height:300px;
  border-radius:50%;background:radial-gradient(circle,rgba(103,232,255,.18),transparent 65%);
  pointer-events:none}
.sfr-grid{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:44px;align-items:center}
.sfr-badge{display:inline-flex;align-items:center;gap:8px;font:700 11px var(--mono);
  color:var(--bg);background:linear-gradient(90deg,var(--accent),var(--cyan));
  text-transform:uppercase;letter-spacing:.1em;padding:7px 14px;border-radius:20px;margin-bottom:20px}
.sfr-title{font:800 38px/1.05 var(--font);letter-spacing:-.03em;margin:0 0 14px}
.sfr-desc{font:400 16px/1.6 var(--font);color:#c3c9de;margin:0 0 20px}
.sfr-metrics{display:flex;flex-wrap:wrap;gap:20px;margin-bottom:24px}
.sfr-metric__big{font:700 26px var(--mono);color:var(--cyan)}
.sfr-metric__label{font:500 11px var(--font);color:var(--muted)}
.sfr-cta{background:linear-gradient(90deg,var(--accent),var(--cyan));color:var(--bg);
  padding:15px 30px;border-radius:10px;font:700 14px var(--font)}
.sfr-panel{background:rgba(8,11,20,.5);border:1px solid rgba(109,139,255,.25);
  border-radius:16px;padding:28px;backdrop-filter:blur(6px)}
.sfr-panel__head{font:600 11px var(--mono);color:var(--accent);
  text-transform:uppercase;letter-spacing:.1em;margin-bottom:16px}
.sfr-panel__list{display:flex;flex-direction:column;gap:13px}
.sfr-item{display:flex;gap:11px;font:400 14px/1.45 var(--font);color:var(--text)}
.sfr-item__check{color:var(--cyan);font:700 13px var(--mono);flex:none}
.pric-common__title{margin-bottom:26px}

@media (max-width:900px){
  .rout-hero__title{font-size:36px}
  .rout-map__caption{position:static;margin-top:10px;left:auto;bottom:auto}
  .sfr-box{padding:28px}
  .sfr-grid{grid-template-columns:1fr;gap:28px}
  .sfr-title{font-size:28px}
}
@media (max-width:560px){
  .sfr-metrics{gap:14px}
  .sfr-cta{display:block;text-align:center}
}

/* ============================================================================
   STEP 17: /about — блоки для B2B-клиента
   ============================================================================ */

.about-sec__title{margin-bottom:26px}

/* --- Инженерные решения: решение + обоснование ---------------------------- */
.eng-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:26px 40px;margin-top:26px}
.eng{display:flex;gap:18px;align-items:flex-start}
.eng__no{font:700 15px var(--mono);color:var(--accent);flex:none;
  width:34px;height:34px;border-radius:9px;display:grid;place-items:center;
  background:rgba(109,139,255,.1);border:1px solid rgba(109,139,255,.28)}
.eng__title{font:700 17px/1.3 var(--font);color:var(--text);margin-bottom:7px}
.eng__desc{font:400 14px/1.65 var(--font);color:var(--muted)}

/* --- Продукт в цифрах ----------------------------------------------------- */
.pfig__big{font:700 30px var(--mono);color:var(--accent);letter-spacing:-.02em}
.pfig__label{font:600 14px var(--font);color:var(--text);margin:6px 0 6px}

@media (max-width:900px){
  .eng-grid{grid-template-columns:1fr;gap:22px}
}

/* ============================================================================
   STEP 18: /about — таймлайн, клиенты, команда
   ============================================================================ */

/* --- Таймлайн ------------------------------------------------------------- */
.tline{list-style:none;margin:26px 0 0;padding:0;position:relative}
/* Вертикальная линия связывает вехи в последовательность. */
.tline::before{content:'';position:absolute;left:7px;top:10px;bottom:10px;width:1px;
  background:linear-gradient(180deg,var(--accent),rgba(109,139,255,.15))}
.tline__item{position:relative;padding:0 0 30px 42px}
.tline__item:last-child{padding-bottom:0}
.tline__item::before{content:'';position:absolute;left:0;top:7px;width:15px;height:15px;
  border-radius:50%;background:var(--bg);border:2px solid var(--accent)}
/* Плановая веха: полая точка и приглушённый текст — визуально отделена
   от того, что уже сделано. */
.tline__item--planned::before{border-color:var(--dim);border-style:dashed}
.tline__item--planned .tline__title,.tline__item--planned .tline__desc{color:var(--muted)}
.tline__year{display:flex;align-items:center;gap:10px;font:700 20px var(--mono);
  color:var(--accent);margin-bottom:6px}
.tline__item--planned .tline__year{color:var(--dim)}
.tline__tag{font:600 10px var(--mono);color:var(--dim);text-transform:uppercase;
  letter-spacing:.1em;border:1px solid var(--line);border-radius:20px;padding:3px 9px}
.tline__title{font:700 18px/1.3 var(--font);color:var(--text);margin-bottom:6px}
.tline__desc{font:400 14px/1.65 var(--font);color:var(--muted);max-width:70ch}

/* --- Клиенты -------------------------------------------------------------- */
.clients{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin-top:26px}
.client{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:26px 28px}
.client__name{font:800 22px/1.2 var(--font);color:var(--text);letter-spacing:-.02em;margin-bottom:8px}
.client__desc{font:400 14px/1.6 var(--font);color:var(--muted)}

@media (max-width:900px){
  .clients{grid-template-columns:1fr}
  .tline__year{font-size:17px}
}

/* ============================================================================
   STEP 19: /download — приведено к Download.dc.html + «Войти» в шапке
   ============================================================================ */

/* --- Кнопка входа в шапке ------------------------------------------------- */
.nav__actions{display:flex;align-items:center;gap:18px;flex:none}
.nav__login{font:600 12px var(--mono);color:var(--muted);text-transform:uppercase;
  letter-spacing:.03em;white-space:nowrap}
.nav__login:hover{color:var(--text)}
.nav__login:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}

/* --- Download: кнопки магазинов ------------------------------------------- */
.dl-hero__lead{max-width:460px}
.dl-store{display:flex;align-items:center;gap:12px;background:var(--surface);
  border:1px solid rgba(255,255,255,.12);border-radius:12px;padding:12px 18px;
  color:var(--text);transition:border-color .25s}
a.dl-store:hover{border-color:rgba(109,139,255,.4)}
a.dl-store:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.dl-store__icon{flex:none;width:32px;height:32px;border-radius:9px;
  background:rgba(109,139,255,.12);border:1px solid rgba(109,139,255,.25);
  display:grid;place-items:center;color:var(--accent);font:700 13px var(--mono)}
.dl-store__text{display:flex;flex-direction:column}
.dl-store__kicker{font:500 10px var(--mono);color:var(--muted)}
.dl-store__name{font:700 15px var(--font)}
.dl-store__note{font:500 9.5px var(--mono);color:var(--dim);
  text-transform:uppercase;letter-spacing:.08em;margin-top:2px}

/* --- Download: мокап телефона и QR ---------------------------------------- */
.dl-visual{display:flex;align-items:center;gap:26px;justify-self:center}
.dl-phone{width:230px;background:#0d1220;border:1px solid rgba(109,139,255,.2);
  border-radius:34px;padding:16px;box-shadow:0 30px 70px -25px rgba(109,139,255,.3)}
.dl-phone__screen{background:#060a12;border-radius:22px;padding:18px;
  display:flex;flex-direction:column;gap:14px}
.dl-phone__brand{display:flex;align-items:center;gap:8px;font:700 13px var(--font)}
.dl-phone__logo{width:24px;height:24px;border-radius:7px;background:var(--accent);
  color:var(--bg);display:grid;place-items:center;font:800 12px var(--mono)}
.dl-phone__chips{display:flex;gap:6px;flex-wrap:wrap}
.dl-phone__chip{font:600 9px var(--mono);color:var(--muted);
  border:1px solid rgba(255,255,255,.12);padding:3px 8px;border-radius:10px}
.dl-phone__chip.is-active{color:var(--accent);border-color:rgba(109,139,255,.35)}
.dl-phone__frame{position:relative;aspect-ratio:1/1;border-radius:14px;
  background:#0a0f1a;overflow:hidden;display:grid;place-items:center}
.dl-phone__matrix{width:60%;aspect-ratio:1/1;display:grid;grid-template-columns:repeat(12,1fr)}
.dl-phone__cell{background:transparent}
.dl-phone__cell.is-on{background:var(--accent)}
.dl-phone__beam{position:absolute;left:10%;right:10%;height:2px;
  background:linear-gradient(90deg,transparent,var(--accent),transparent);
  box-shadow:0 0 12px var(--accent);animation:scanline 2.6s ease-in-out infinite}
.dl-phone__btn{background:var(--accent);color:var(--bg);border-radius:10px;
  padding:11px;text-align:center;font:700 13px var(--font)}

.dl-install{display:flex;flex-direction:column;align-items:center;gap:12px}
.dl-qr{width:130px;aspect-ratio:1/1;display:grid;grid-template-columns:repeat(12,1fr);
  background:#e9edff;border-radius:12px;padding:9px}
.dl-qr__cell{background:transparent}
.dl-qr__cell.is-on{background:#080b14}
.dl-install__hint{font:500 10px/1.5 var(--mono);color:var(--dim);
  text-transform:uppercase;letter-spacing:.08em;text-align:center}

@media (max-width:1100px){
  .dl-visual{flex-direction:column}
}
@media (max-width:900px){
  .nav__actions{gap:12px}
  .dl-visual{justify-self:start;flex-direction:row;flex-wrap:wrap}
}
@media (max-width:560px){
  .nav__login{display:none}
  .dl-stores{flex-direction:column;align-items:stretch}
}

/* ============================================================================
   STEP 20: /pricing — новая тарифная сетка
   Три основных тарифа в ряд, отраслевой отдельным блоком ниже.
   ============================================================================ */

/* --- Входит во все тарифы (над сеткой) ------------------------------------ */
.incl{background:linear-gradient(135deg,rgba(109,139,255,.09),rgba(103,232,255,.05));
  border:1px solid rgba(109,139,255,.28);border-radius:18px;padding:26px 30px}
.incl__title{font:800 20px var(--font);color:var(--text);margin-bottom:4px}
.incl__note{font:600 12px var(--mono);color:var(--cyan);margin-bottom:18px}
.incl__list{display:grid;grid-template-columns:repeat(4,1fr);gap:11px 22px}
.incl__item{display:flex;gap:9px;font:400 13.5px/1.4 var(--font);color:var(--text)}
.incl__check{color:var(--cyan);font:700 12px var(--mono);flex:none}

/* --- Карточки тарифов ----------------------------------------------------- */
.plans{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:8px}
.plan2{display:flex;flex-direction:column;position:relative;background:var(--surface);
  border:1px solid var(--line);border-radius:18px;padding:28px 26px}
.plan2--popular{border-color:rgba(109,139,255,.5);
  background:linear-gradient(180deg,rgba(109,139,255,.08),var(--surface) 40%);
  box-shadow:0 24px 60px -30px rgba(109,139,255,.5)}
.plan2__badge{position:absolute;top:-11px;left:26px;background:var(--accent);
  color:var(--bg);font:700 10.5px var(--mono);text-transform:uppercase;
  letter-spacing:.08em;padding:5px 12px;border-radius:20px}
.plan2__tag{font:600 11px var(--mono);color:var(--dim);text-transform:uppercase;
  letter-spacing:.1em;margin-bottom:8px}
.plan2__name{font:800 28px/1.1 var(--font);color:var(--text);letter-spacing:-.02em;margin:0 0 18px}
.plan2__price{display:flex;align-items:baseline;gap:7px;flex-wrap:wrap}
.plan2__from{font:500 13px var(--font);color:var(--muted)}
.plan2__sum{font:800 30px var(--mono);color:var(--accent);letter-spacing:-.02em}
.plan2__period{font:500 13px var(--font);color:var(--muted)}
/* Внедрение обычным шрифтом: скрытые платежи убивают доверие. */
.plan2__setup{font:600 13px var(--font);color:#c3c9de;margin-top:7px;
  padding-bottom:18px;border-bottom:1px solid var(--line)}
.plan2__specs{margin:16px 0 0;padding:0}
.spec{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:7px 0}
.spec__key{font:400 13px var(--font);color:var(--muted);margin:0}
.spec__val{font:700 13.5px var(--mono);color:var(--text);margin:0;text-align:right}
.plan2__features{display:flex;flex-direction:column;gap:9px;margin-top:16px;
  padding-top:16px;border-top:1px solid var(--line)}
.plan2__feature{display:flex;gap:9px;font:400 13px/1.45 var(--font);color:#c3c9de}
.plan2__check{color:var(--accent);font:700 12px var(--mono);flex:none}
/* Overage мелко и сноской — не основной драйвер цены. */
.plan2__limit{margin-top:16px;font:400 11.5px/1.5 var(--font);color:var(--dim)}
.plan2__cta{margin-top:auto}
.plan2 .plan2__cta{margin-top:22px;text-align:center}

/* --- Калькулятор ---------------------------------------------------------- */
.pric-calc__title{margin-bottom:24px}
.calc{display:grid;grid-template-columns:minmax(0,320px) 1fr;gap:36px;
  background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:30px}
.calc__label{display:block;font:600 13px var(--font);color:var(--text);margin-bottom:14px}
.calc__row{display:flex;align-items:center;gap:16px}
.calc__range{flex:1;accent-color:var(--accent);height:4px}
.calc__out{font:800 26px var(--mono);color:var(--accent);min-width:2.5ch;text-align:right}
.calc__hint{font:400 12px/1.5 var(--font);color:var(--dim);margin:14px 0 0}
.calc__results{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.calc__card{background:var(--bg);border:1px solid var(--line);border-radius:14px;padding:20px}
.calc__card.is-exceeded{opacity:.5;border-color:rgba(255,107,107,.4)}
.calc__plan{font:700 15px var(--font);color:var(--text);margin-bottom:10px}
.calc__sum{font:800 22px var(--mono);color:var(--accent);letter-spacing:-.02em}
.calc__per{font:500 11px var(--font);color:var(--muted);margin-top:2px}
.calc__setup{font:400 11.5px var(--font);color:var(--dim);margin-top:10px;
  padding-top:10px;border-top:1px solid var(--line)}
.calc__over{font:600 11px var(--mono);color:#ff6b6b;margin-top:8px}

/* --- Отраслевой тариф ----------------------------------------------------- */
.ind-box{position:relative;overflow:hidden;background:linear-gradient(135deg,#0d1424,#101a30);
  border:1px solid rgba(103,232,255,.28);border-radius:24px;padding:44px}
.ind-box::after{content:'';position:absolute;bottom:-110px;left:15%;width:320px;height:320px;
  border-radius:50%;background:radial-gradient(circle,rgba(103,232,255,.16),transparent 65%);
  pointer-events:none}
.ind-grid{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:44px;align-items:start}
.ind-badge{display:inline-flex;align-items:center;gap:8px;font:700 11px var(--mono);
  color:var(--bg);background:linear-gradient(90deg,var(--accent),var(--cyan));
  text-transform:uppercase;letter-spacing:.1em;padding:7px 14px;border-radius:20px;margin-bottom:18px}
.ind-title{font:800 34px/1.08 var(--font);letter-spacing:-.03em;margin:0 0 12px}
.ind-desc{font:400 15px/1.65 var(--font);color:#c3c9de;margin:0 0 22px}
.ind-price{display:flex;flex-wrap:wrap;gap:26px;margin-bottom:24px}
.ind-price__sum{font:700 24px var(--mono);color:var(--cyan)}
.ind-price__label{font:500 11px var(--font);color:var(--muted);margin-top:2px}
.ind-cta{background:linear-gradient(90deg,var(--accent),var(--cyan));color:var(--bg);
  padding:14px 28px;border-radius:10px;font:700 14px var(--font)}
.ind-panel{background:rgba(8,11,20,.5);border:1px solid rgba(109,139,255,.25);
  border-radius:16px;padding:26px;backdrop-filter:blur(6px)}
.ind-panel__head{font:600 11px var(--mono);color:var(--accent);text-transform:uppercase;
  letter-spacing:.1em;margin-bottom:14px}
.ind-panel__base{font:700 14px var(--font);color:var(--text);padding-bottom:14px;
  border-bottom:1px solid var(--line);margin-bottom:14px}
.ind-panel__list{display:flex;flex-direction:column;gap:11px;margin-bottom:16px}
.ind-item{display:flex;gap:10px;font:400 14px/1.45 var(--font);color:var(--text)}
.ind-item__check{color:var(--cyan);font:700 13px var(--mono);flex:none}
.ind-specs{margin:0;padding-top:6px;border-top:1px solid var(--line)}
.ind-panel__support{font:500 12.5px var(--font);color:var(--muted);margin-top:12px;
  padding-top:12px;border-top:1px solid var(--line)}
.ind-terms{position:relative;margin-top:28px;padding:16px 20px;border-radius:12px;
  background:rgba(103,232,255,.07);border:1px solid rgba(103,232,255,.2);
  font:400 13.5px/1.6 var(--font);color:#c3c9de}
.ind-terms__key{display:block;font:700 11px var(--mono);color:var(--cyan);
  text-transform:uppercase;letter-spacing:.1em;margin-bottom:5px}
.ind-limit{position:relative;margin-top:14px;font:400 11.5px/1.5 var(--font);color:var(--dim)}

@media (max-width:1100px){
  .incl__list{grid-template-columns:repeat(2,1fr)}
  .calc{grid-template-columns:1fr;gap:26px}
}
@media (max-width:900px){
  .plans{grid-template-columns:1fr;gap:26px}
  /* Рекомендуемый тариф первым — без прокрутки. */
  .plan2--popular{order:-1}
  .calc__results{grid-template-columns:1fr}
  .ind-box{padding:26px}
  .ind-grid{grid-template-columns:1fr;gap:26px}
  .ind-title{font-size:26px}
}
@media (max-width:560px){
  .incl__list{grid-template-columns:1fr}
  .incl{padding:22px}
  .plan2__name{font-size:24px}
  .ind-price{gap:18px}
}

/* ============================================================================
   STEP 21: доступность — ссылка «к содержанию» для клавиатуры
   ============================================================================ */
.skip-link{position:absolute;left:-9999px;top:0;z-index:100;
  background:var(--accent);color:var(--bg);padding:12px 20px;
  font:700 13px var(--font);border-radius:0 0 10px 0}
.skip-link:focus{left:0}

/* ============================================================================
   STEP 22: навигация — группировка, выпадающее меню, мобильный бургер
   Десять пунктов в один ряд не читались: шесть продуктовых страниц собраны
   в выпадающее меню, в строке осталось пять пунктов.
   ============================================================================ */

/* Ссылки по центру окна, а не по центру свободного места: бренд и действия
   разной ширины, поэтому обе крайние группы получают одинаковый flex:1 —
   тогда середина приходится ровно на центр шапки. */
/* Три колонки: боковые равной доли, средняя по содержимому. Только так центр
   ссылок совпадает с центром окна — при flex-раскладке ширина бренда и кнопок
   разная, и середина свободного места уезжает (замер: сдвиг 52px вправо). */
.nav{display:grid;grid-template-columns:1fr auto 1fr;justify-content:initial}
.nav__menu{display:contents}
.nav__links{grid-column:2}
.nav__actions{grid-column:3;justify-self:end}
.nav__links{display:flex;align-items:center;gap:4px;flex-wrap:nowrap}

/* 13px обычным регистром вместо 11.5px капсом моноширинным: капс с
   разрядкой читается заметно медленнее сплошного текста. */
.nav__link{display:inline-flex;align-items:center;gap:5px;
  font:600 13.5px var(--font);color:#c3c9de;white-space:nowrap;
  padding:9px 13px;border-radius:9px;transition:color .18s,background .18s}
.nav__link:hover{color:var(--text);background:rgba(255,255,255,.05)}
.nav__link:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.nav__link--active{color:var(--text);background:rgba(109,139,255,.14)}
.nav__link--btn{border:0;background:transparent;cursor:pointer;font-family:var(--font)}

.nav__caret{font-size:9px;opacity:.7;transition:transform .2s}
.nav__group{position:relative}
.nav__group.is-open .nav__caret{transform:rotate(180deg)}

/* --- Выпадающее меню продуктов -------------------------------------------- */
.nav__drop{display:flex;flex-direction:column;gap:2px;min-width:290px;padding:8px;
  background:#0c1120;border:1px solid rgba(255,255,255,.1);border-radius:14px;
  box-shadow:0 24px 60px -20px rgba(0,0,0,.8)}
.drop__item{display:flex;flex-direction:column;gap:2px;padding:10px 13px;border-radius:10px;
  transition:background .16s}
.drop__item:hover{background:rgba(109,139,255,.12)}
.drop__item:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.drop__item--active{background:rgba(109,139,255,.16)}
.drop__label{font:700 14px var(--font);color:var(--text)}
.drop__desc{font:400 12px var(--font);color:var(--muted)}

.nav__cta{flex:none;padding:10px 18px;font-size:12.5px}
.nav__burger{display:none;flex-direction:column;justify-content:center;gap:5px;
  width:42px;height:38px;padding:0 10px;background:transparent;cursor:pointer;
  border:1px solid var(--line);border-radius:10px}
.nav__burger-bar{display:block;height:2px;background:var(--text);border-radius:2px;
  transition:transform .22s,opacity .22s}
.nav__burger:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

/* --- Прогрессивное улучшение ---------------------------------------------- */
/* Без JS выпадашка раскрыта статическим списком, бургера нет: меню остаётся
   рабочим. Класс js-on включает интерактивное поведение. */
.js-on .nav__drop{position:absolute;top:calc(100% + 10px);left:0;z-index:60;
  opacity:0;visibility:hidden;transform:translateY(-6px);
  transition:opacity .18s,transform .18s,visibility .18s}
.js-on .nav__group.is-open .nav__drop,
.js-on .nav__group:not(.is-dismissed):hover .nav__drop{opacity:1;visibility:visible;transform:translateY(0)}

@media (max-width:1200px){
  .nav__menu{gap:16px}
  .nav__link{padding:8px 10px;font-size:13px}
  .nav__login{display:none}
}

@media (max-width:1000px){
  .js-on .nav__burger{display:flex}
  /* Обратно во flex: grid-центрирование нужно только на десктопе, а бургер-меню
     раскрывается третьей строкой — это раскладка потока, не трёх колонок. */
  .nav{display:flex;justify-content:space-between;flex-wrap:wrap;row-gap:0}
  .nav__menu{display:none}
  .nav__links,.nav__actions{grid-column:auto}
  /* Меню разворачивается под шапкой на всю ширину. */
  .js-on .nav__menu{display:none;order:3;width:100%;flex-direction:column;
    align-items:stretch;gap:14px;padding:16px 0 6px;
    border-top:1px solid var(--line);margin-top:14px}
  .js-on .nav.is-open .nav__menu{display:flex}
  .nav__links{flex-direction:column;align-items:stretch;gap:2px}
  .nav__link{padding:12px 14px;font-size:15px}
  .nav__link--btn{justify-content:space-between;width:100%}
  .nav__group{position:static}
  /* В раскрытом меню выпадашка становится обычным вложенным списком. */
  .js-on .nav__drop{position:static;opacity:1;visibility:visible;transform:none;
    min-width:0;margin:2px 0 6px 12px;box-shadow:none;background:transparent;
    border:0;border-left:2px solid rgba(109,139,255,.3);border-radius:0;padding:2px 0 2px 10px}
  .js-on .nav__group:hover .nav__drop{transform:none}
  .nav__actions{flex-direction:column;align-items:stretch;gap:10px;width:100%}
  .nav__login{display:block;text-align:center;padding:11px}
  .nav__cta{text-align:center;padding:13px}
  .nav.is-open .nav__burger-bar:nth-child(1){transform:translateY(7px) rotate(45deg)}
  .nav.is-open .nav__burger-bar:nth-child(2){opacity:0}
  .nav.is-open .nav__burger-bar:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
}

/* ============================================================================
   STEP 23: база знаний, кейсы, страница 1С, SLA
   ============================================================================ */

/* Недостающие утилиты, на которые опираются новые страницы. */
.h3{font:700 20px/1.25 var(--font);letter-spacing:-.01em;margin:0 0 10px}
.chip{display:inline-flex;align-items:center;padding:6px 12px;border-radius:999px;
  font:600 12px var(--mono);color:var(--muted);background:rgba(255,255,255,.04);
  border:1px solid var(--line);white-space:nowrap}

/* --- База знаний: список --------------------------------------------------- */
.blog-hero__lead{max-width:720px;margin-left:auto;margin-right:auto}

.blog-feature{display:grid;grid-template-columns:1fr auto;gap:40px;align-items:center;
  padding:38px 40px;border:1px solid var(--line);border-radius:22px;
  background:linear-gradient(135deg,#0b0f1c,#0e1526);transition:border-color .2s,transform .2s}
.blog-feature:hover{border-color:rgba(109,139,255,.4);transform:translateY(-2px)}
.blog-feature__meta{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:14px}
.blog-feature__title{margin:0 0 12px}
.blog-feature__lead{margin:0 0 18px;max-width:60ch}
.blog-feature__more{font:700 14px var(--font);color:var(--accent)}
.blog-feature__art{flex:none;opacity:.8}

.blog-tag{font:600 11px var(--mono);text-transform:uppercase;letter-spacing:.06em;
  color:var(--accent);background:rgba(109,139,255,.12);padding:5px 10px;border-radius:6px}
.blog-date,.blog-read{font:500 12.5px var(--mono);color:var(--dim)}

.blog-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:28px}
.blog-card{display:flex}
.blog-card__link{display:flex;flex-direction:column;gap:12px;width:100%;padding:26px 24px;
  border:1px solid var(--line);border-radius:18px;background:var(--card);
  transition:border-color .2s,transform .2s}
.blog-card__link:hover{border-color:rgba(109,139,255,.4);transform:translateY(-2px)}
.blog-card__meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.blog-card__title{font:700 17px/1.35 var(--font);margin:0}
.blog-card__lead{font:400 14px/1.6 var(--font);color:var(--muted);margin:0;flex:1}
.blog-card__foot{display:flex;align-items:center;justify-content:space-between;
  padding-top:12px;border-top:1px solid var(--line)}
.blog-card__more{font:700 13px var(--font);color:var(--accent)}

/* --- База знаний: статья --------------------------------------------------- */
.blog-article__inner{max-width:860px}
.blog-crumbs{display:flex;gap:8px;align-items:center;margin-bottom:22px;
  font:500 12.5px var(--mono);color:var(--dim)}
.blog-crumbs a{color:var(--dim)}
.blog-crumbs a:hover{color:var(--accent)}

.blog-article__head{margin-bottom:34px;padding-bottom:28px;border-bottom:1px solid var(--line)}
.blog-article__title{margin:14px 0 16px;font-size:38px}
.blog-article__lead{margin:0;font-size:17px}

.blog-toc{margin:0 0 30px;padding:20px 24px;border:1px solid var(--line);
  border-radius:14px;background:rgba(255,255,255,.02)}
.blog-toc__title{font:700 12px var(--mono);text-transform:uppercase;letter-spacing:.08em;
  color:var(--dim);margin-bottom:12px}
.blog-toc__list{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:7px}
.blog-toc__list a{font:500 14.5px var(--font);color:var(--muted)}
.blog-toc__list a:hover{color:var(--accent)}

/* Ширина строки ограничена: длинную строку глаз теряет при переходе на следующую. */
.blog-text{max-width:68ch}
.blog-text p{font:400 16.5px/1.75 var(--font);color:#c8cee2;margin:0 0 20px}
.blog-text__h{font:800 24px/1.3 var(--font);letter-spacing:-.02em;margin:36px 0 14px;
  scroll-margin-top:90px}
.blog-text__list{margin:0 0 22px;padding-left:22px;display:flex;flex-direction:column;gap:10px}
.blog-text__list li{font:400 16px/1.65 var(--font);color:#c8cee2}
.blog-text__list--num li::marker{color:var(--accent);font-weight:700}

.blog-inline-cta{display:flex;align-items:center;justify-content:space-between;gap:26px;
  margin:44px 0 0;padding:28px 32px;border:1px solid rgba(109,139,255,.25);border-radius:18px;
  background:linear-gradient(135deg,rgba(109,139,255,.09),rgba(109,139,255,.02))}
.blog-inline-cta__title{font:700 18px var(--font);margin-bottom:6px}
.blog-inline-cta__desc{font:400 14.5px/1.6 var(--font);color:var(--muted);margin:0;max-width:46ch}

.blog-related{margin-top:52px;padding-top:34px;border-top:1px solid var(--line)}
.blog-related__title{margin-bottom:20px}
.blog-related__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.blog-related__item{display:flex;flex-direction:column;gap:10px;padding:20px;
  border:1px solid var(--line);border-radius:14px;background:var(--card);
  transition:border-color .2s}
.blog-related__item:hover{border-color:rgba(109,139,255,.4)}
.blog-related__item .blog-tag{align-self:flex-start}
.blog-related__name{font:700 15px/1.4 var(--font)}
.blog-related__more{font:600 13px var(--font);color:var(--accent);margin-top:auto}

/* --- Страница 1С ----------------------------------------------------------- */
.onec-hero__inner{display:grid;grid-template-columns:1.05fr .95fr;gap:56px;align-items:center}
.onec-hero__chips{display:flex;flex-wrap:wrap;gap:8px;margin:20px 0 26px}
.onec-hero__actions{display:flex;flex-wrap:wrap;gap:12px}

.onec-flow{display:flex;flex-direction:column;gap:14px;padding:28px;
  border:1px solid var(--line);border-radius:20px;background:var(--card)}
.onec-flow__node{display:flex;align-items:center;gap:14px;padding:18px 20px;
  border-radius:14px;border:1px solid var(--line);background:rgba(255,255,255,.02)}
.onec-flow__node--dst{border-color:rgba(109,139,255,.3);background:rgba(109,139,255,.07)}
.onec-flow__badge{font:800 15px var(--font);padding:8px 14px;border-radius:9px;
  background:rgba(109,139,255,.16);color:var(--accent)}
.onec-flow__label{font:500 14px var(--font);color:var(--muted)}
.onec-flow__arrows{display:flex;flex-direction:column;gap:8px;padding-left:12px}
.onec-flow__arrow{font:600 12.5px var(--mono);color:var(--accent)}
.onec-flow__arrow--back{color:var(--dim)}

.onec-exchange__grid,.onec-bounds__grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:26px}
.onec-ex,.onec-bound{padding:28px;border:1px solid var(--line);border-radius:18px;background:var(--card)}
.onec-ex--from{border-left:3px solid rgba(109,139,255,.5)}
.onec-ex--to{border-left:3px solid rgba(103,232,255,.45)}
.onec-ex__title,.onec-bound__title{font:700 18px var(--font);margin:0 0 8px}
.onec-ex__desc{font:400 14.5px/1.6 var(--font);color:var(--muted);margin:0 0 16px}
.onec-ex__list,.onec-bound__list{margin:0;padding:0;list-style:none;
  display:flex;flex-direction:column;gap:10px}
.onec-ex__list li,.onec-bound__list li{position:relative;padding-left:22px;
  font:400 14.5px/1.55 var(--font);color:#c3c9de}
.onec-ex__list li::before{content:"\2192";position:absolute;left:0;color:var(--accent)}
.onec-bound--ok .onec-bound__list li::before{content:"\2713";position:absolute;left:0;color:#4ade80}
.onec-bound--gap .onec-bound__list li::before{content:"!";position:absolute;left:2px;
  color:#fbbf24;font-weight:700}
.onec-bound--ok{border-color:rgba(74,222,128,.22)}
.onec-bound--gap{border-color:rgba(251,191,36,.22)}

.onec-methods__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:26px}
.onec-steps__grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-top:26px}
.onec-method{padding:26px;border:1px solid var(--line);border-radius:18px;background:var(--card)}
.onec-method__badge{display:inline-block;font:600 11px var(--mono);text-transform:uppercase;
  letter-spacing:.06em;color:var(--accent);background:rgba(109,139,255,.12);
  padding:5px 10px;border-radius:6px;margin-bottom:14px}
.onec-method__title{font:700 17px var(--font);margin:0 0 8px}
.onec-method__desc{font:400 14px/1.6 var(--font);color:var(--muted);margin:0 0 16px}
.onec-method__time{font:700 13px var(--mono);color:#c3c9de;padding-top:12px;
  border-top:1px solid var(--line)}

.onec-configs__list{display:flex;flex-direction:column;gap:2px;margin-top:24px;
  border:1px solid var(--line);border-radius:16px;overflow:hidden}
.onec-config{display:grid;grid-template-columns:1.2fr .6fr 1.4fr;gap:20px;align-items:center;
  padding:18px 24px;background:var(--card)}
.onec-config__name{font:700 15px var(--font)}
.onec-config__ver{font:600 13px var(--mono);color:var(--accent)}
.onec-config__note{font:400 14px var(--font);color:var(--muted)}

.onec-step{padding:24px;border:1px solid var(--line);border-radius:16px;background:var(--card)}
.onec-step__no{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;
  border-radius:9px;background:rgba(109,139,255,.14);color:var(--accent);
  font:800 14px var(--mono);margin-bottom:12px}
.onec-step__title{font:700 16px var(--font);margin:0 0 6px}
.onec-step__desc{font:400 14px/1.6 var(--font);color:var(--muted);margin:0}

/* --- Кейсы ----------------------------------------------------------------- */
.cases-hero__lead{max-width:700px;margin-left:auto;margin-right:auto}
.case{padding:38px 40px;border:1px solid var(--line);border-radius:22px;
  background:linear-gradient(135deg,#0b0f1c,#0e1526);margin-bottom:22px}
.case__head{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;
  flex-wrap:wrap;margin-bottom:14px}
.case__client{margin:0 0 4px}
.case__industry{font:600 13px var(--mono);color:var(--accent)}
.case__modules{display:flex;flex-wrap:wrap;gap:8px}
.case__lead{max-width:70ch;margin-bottom:26px}
.case__cols{display:grid;grid-template-columns:1fr 1fr;gap:28px}
.case__col-title{font:700 12px var(--mono);text-transform:uppercase;letter-spacing:.08em;
  color:var(--dim);margin:0 0 12px}
.case__list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:10px}
.case__list li{position:relative;padding-left:24px;font:400 15px/1.55 var(--font);color:#c3c9de}
.case__list--task li::before{content:"?";position:absolute;left:4px;color:#fbbf24;font-weight:700}
.case__list--done li::before{content:"\2713";position:absolute;left:0;color:#4ade80}

.case__figures{display:flex;flex-wrap:wrap;gap:36px;margin-top:28px;padding-top:24px;
  border-top:1px solid var(--line)}
.case__figure-val{font:800 30px var(--font);color:var(--accent);letter-spacing:-.02em}
.case__figure-label{font:500 13px var(--mono);color:var(--dim);margin-top:4px}

.case__quote{margin:26px 0 0;padding:24px 28px;border-left:3px solid var(--accent);
  background:rgba(109,139,255,.06);border-radius:0 14px 14px 0}
.case__quote-text{font:400 16px/1.7 var(--font);color:#d5dae9;margin:0 0 14px;font-style:italic}
.case__quote-author{display:flex;flex-direction:column;gap:2px}
.case__quote-name{font:700 14px var(--font)}
.case__quote-role{font:500 12.5px var(--mono);color:var(--dim)}

.cases-industries__grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-top:24px}
.cases-industry{padding:24px;border:1px solid var(--line);border-radius:16px;background:var(--card)}
.cases-industry__title{font:700 16px/1.3 var(--font);margin:0 0 8px}
.cases-industry__desc{font:400 14px/1.55 var(--font);color:var(--muted);margin:0}

/* --- SLA ------------------------------------------------------------------- */
.sla-hero__lead{max-width:700px;margin-left:auto;margin-right:auto}
.sla-commit__grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-top:26px}
.sla-commit__item{padding:26px 24px;border:1px solid var(--line);border-radius:16px;background:var(--card)}
.sla-commit__label{font:600 12px var(--mono);text-transform:uppercase;letter-spacing:.06em;
  color:var(--dim);margin-bottom:12px}
.sla-commit__value{font:800 24px var(--font);color:var(--accent);letter-spacing:-.02em}
/* Несогласованное значение подаётся спокойнее: это не цифра, а отсылка к договору. */
.sla-commit__value--pending{font-size:18px;color:#c3c9de}
.sla-commit__note{font:400 13px/1.5 var(--font);color:var(--muted);margin-top:10px}
.sla-commit__hint{font:400 14.5px/1.6 var(--font);color:var(--muted);margin:20px 0 0;
  padding:16px 20px;border-left:2px solid rgba(109,139,255,.4);background:rgba(109,139,255,.05);
  border-radius:0 10px 10px 0}

.sla-severity__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:26px}
.sla-sev{padding:26px;border:1px solid var(--line);border-radius:18px;background:var(--card)}
.sla-sev--crit{border-color:rgba(248,113,113,.28)}
.sla-sev--major{border-color:rgba(251,191,36,.26)}
.sla-sev--minor{border-color:rgba(109,139,255,.24)}
.sla-sev__level{font:800 17px var(--font);margin-bottom:10px}
.sla-sev--crit .sla-sev__level{color:#f87171}
.sla-sev--major .sla-sev__level{color:#fbbf24}
.sla-sev--minor .sla-sev__level{color:var(--accent)}
.sla-sev__desc{font:400 14.5px/1.6 var(--font);color:var(--muted);margin:0 0 16px}
.sla-sev__examples{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:8px;
  padding-top:14px;border-top:1px solid var(--line)}
.sla-sev__examples li{font:500 13px var(--mono);color:var(--dim)}

.sla-measures__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:26px}
.sla-measure{padding:24px;border:1px solid var(--line);border-radius:16px;background:var(--card)}
.sla-measure__title{font:700 16px var(--font);margin:0 0 8px}
.sla-measure__desc{font:400 14px/1.6 var(--font);color:var(--muted);margin:0}

.sla-support__inner{display:grid;grid-template-columns:1fr 1fr;gap:48px}
.sla-channels{display:flex;flex-direction:column;gap:14px}
.sla-channel{padding:20px 24px;border:1px solid var(--line);border-radius:14px;background:var(--card)}
.sla-channel__title{font:700 15px var(--font);margin-bottom:4px}
.sla-channel__value{font:600 14px var(--mono);color:var(--accent);margin-bottom:6px}
.sla-channel__note{font:400 13.5px/1.5 var(--font);color:var(--muted)}
.sla-maint{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:14px}
.sla-maint li{position:relative;padding-left:24px;font:400 15px/1.6 var(--font);color:#c3c9de}
.sla-maint li::before{content:"\2014";position:absolute;left:0;color:var(--accent)}

/* --- Адаптив новых страниц -------------------------------------------------- */
@media (max-width:1000px){
  .blog-grid,.blog-related__grid,.onec-methods__grid,.sla-severity__grid,
  .sla-measures__grid{grid-template-columns:1fr 1fr}
  .onec-steps__grid,.cases-industries__grid,.sla-commit__grid{grid-template-columns:1fr 1fr}
  .onec-hero__inner,.sla-support__inner{grid-template-columns:1fr;gap:32px}
  .blog-feature{grid-template-columns:1fr}
  .blog-feature__art{display:none}
}

@media (max-width:720px){
  .blog-grid,.blog-related__grid,.onec-exchange__grid,.onec-bounds__grid,
  .onec-methods__grid,.onec-steps__grid,.cases-industries__grid,
  .sla-commit__grid,.sla-severity__grid,.sla-measures__grid,
  .case__cols{grid-template-columns:1fr}
  .blog-feature,.case{padding:26px 22px}
  .blog-article__title{font-size:28px}
  .blog-inline-cta{flex-direction:column;align-items:flex-start;gap:18px}
  .onec-config{grid-template-columns:1fr;gap:6px}
}

/* ============================================================================
   STEP 24: строка доверия на главной и сравнительная таблица тарифов
   ============================================================================ */

/* --- Строка доверия под первым экраном -------------------------------------- */
.trust{padding:22px 40px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);
  background:rgba(255,255,255,.015)}
.trust__inner{display:flex;align-items:center;gap:22px;flex-wrap:wrap}
.trust__label{font:700 11px var(--mono);text-transform:uppercase;letter-spacing:.09em;
  color:var(--dim);flex:none}
.trust__clients{display:flex;align-items:center;gap:18px;flex-wrap:wrap}
/* Названия клиентов набраны заметнее прочего: это главное в строке. */
.trust__client{font:800 17px var(--font);letter-spacing:-.01em;color:#dde2f0;cursor:default}
.trust__sep{width:1px;height:22px;background:var(--line);flex:none}
.trust__facts{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.trust__fact{position:relative;padding-left:16px;font:500 13px var(--font);color:var(--muted)}
.trust__fact::before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);
  width:6px;height:6px;border-radius:50%;background:rgba(109,139,255,.7)}
.trust__link{margin-left:auto;font:700 13px var(--font);color:var(--accent);white-space:nowrap}
.trust__link:hover{text-decoration:underline}

@media (max-width:1000px){
  .trust{padding:18px 20px}
  .trust__sep,.trust__facts{display:none}
  .trust__link{margin-left:0}
}

/* --- Сравнительная таблица тарифов ------------------------------------------ */
/* Прокрутка внутри контейнера: иначе широкая таблица растянула бы страницу
   и по горизонтали поехал бы весь макет. */
.cmp__scroll{overflow-x:auto;margin-top:26px;border:1px solid var(--line);border-radius:18px}
.cmp{width:100%;border-collapse:collapse;min-width:720px;background:var(--card)}

.cmp thead th{position:sticky;top:0;z-index:2;background:#0c1120;
  padding:20px 18px;text-align:center;border-bottom:1px solid var(--line)}
.cmp__corner{text-align:left !important;font:700 12px var(--mono);text-transform:uppercase;
  letter-spacing:.07em;color:var(--dim)}
.cmp__plan-name{display:block;font:800 18px var(--font);letter-spacing:-.01em}
.cmp__plan-tag{display:block;margin-top:4px;font:500 12px var(--font);color:var(--muted)}
.cmp__plan--pop{background:rgba(109,139,255,.1)}
.cmp__plan--pop .cmp__plan-name{color:var(--accent)}

.cmp tbody tr{border-bottom:1px solid rgba(255,255,255,.05)}
.cmp tbody tr:last-child{border-bottom:0}
.cmp__label{text-align:left;padding:16px 18px;vertical-align:top;font-weight:400}
.cmp__label-text{display:block;font:600 14.5px var(--font);color:#d5dae9}
.cmp__label-note{display:block;margin-top:3px;font:400 12.5px var(--font);color:var(--dim)}
.cmp__val{padding:16px 18px;text-align:center;font:600 15px var(--font);color:#c3c9de;
  white-space:nowrap}
.cmp__val--pop{background:rgba(109,139,255,.05)}
.cmp__yes{color:#4ade80;font-size:16px}

/* Заголовок группы «Входит во все тарифы» — визуальный разделитель. */
.cmp__group th{padding:18px;background:rgba(255,255,255,.03);
  font:700 12px var(--mono) !important;text-transform:uppercase;letter-spacing:.07em;
  color:var(--accent)}

@media (max-width:720px){
  .cmp__label{padding:14px 12px}
  .cmp__val{padding:14px 12px;font-size:14px}
  .cmp thead th{padding:16px 12px}
  .cmp__plan-name{font-size:16px}
  .cmp__plan-tag{display:none}
}

/* ============================================================================
   STEP 25: блок автономной работы на главной
   Выделен акцентной рамкой и свечением: остальные секции идут на общем фоне,
   поэтому блок читается как отдельное заявление, а не пункт списка.
   ============================================================================ */

.offline__box{position:relative;overflow:hidden;padding:48px 48px 44px;border-radius:26px;
  border:1px solid rgba(109,139,255,.32);
  background:linear-gradient(150deg,rgba(109,139,255,.11),rgba(12,17,32,.6) 46%,#0b0f1c)}
/* Свечение из угла — тот же приём, что в hero, чтобы блок не выглядел чужим. */
.offline__box::before{content:"";position:absolute;top:-160px;right:-120px;width:460px;height:460px;
  background:radial-gradient(circle,rgba(109,139,255,.16),transparent 68%);pointer-events:none}

.offline__head{position:relative;max-width:72ch}
.offline__kicker{display:inline-flex;align-items:center;gap:9px;margin-bottom:16px;
  padding:7px 15px;border-radius:999px;border:1px solid rgba(109,139,255,.4);
  background:rgba(109,139,255,.12);
  font:700 11.5px var(--mono);text-transform:uppercase;letter-spacing:.09em;color:var(--accent)}
.offline__dot{width:7px;height:7px;border-radius:50%;background:var(--accent);flex:none;
  box-shadow:0 0 0 4px rgba(109,139,255,.18)}
.offline__title{margin:0 0 14px;max-width:20ch}
.offline__lead{margin:0;max-width:64ch}

/* --- Три цифры --- */
.offline__figures{position:relative;display:grid;grid-template-columns:repeat(3,1fr);gap:20px;
  margin:34px 0;padding:28px 0;border-top:1px solid rgba(255,255,255,.08);
  border-bottom:1px solid rgba(255,255,255,.08)}
.offline__big{font:800 40px/1 var(--font);letter-spacing:-.03em;color:var(--accent)}
.offline__flabel{margin-top:8px;font:700 13px var(--mono);text-transform:uppercase;
  letter-spacing:.06em;color:#d5dae9}
.offline__fdesc{margin-top:8px;font:400 13.5px/1.55 var(--font);color:var(--muted);max-width:32ch}

/* --- Схема дня и список --- */
.offline__body{position:relative;display:grid;grid-template-columns:.95fr 1.05fr;gap:44px;
  align-items:start}

.offline__timeline{display:flex;flex-direction:column}
.offline__step{display:grid;grid-template-columns:64px 1fr auto;align-items:center;gap:14px;
  padding:16px 18px;border-radius:14px;border:1px solid var(--line);background:rgba(255,255,255,.02)}
/* Автономный отрезок выделен: именно он — суть блока. */
.offline__step--off{border-color:rgba(109,139,255,.35);background:rgba(109,139,255,.08)}
.offline__time{font:700 12px var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--dim)}
.offline__act{font:600 14.5px var(--font);color:#d5dae9}
.offline__net{font:600 11px var(--mono);text-transform:uppercase;letter-spacing:.05em;
  padding:5px 10px;border-radius:6px;white-space:nowrap}
.offline__net--on{color:var(--muted);background:rgba(255,255,255,.05)}
.offline__net--off{color:var(--accent);background:rgba(109,139,255,.16)}
.offline__line{width:2px;height:18px;margin-left:31px;
  background:linear-gradient(180deg,rgba(109,139,255,.5),rgba(109,139,255,.15))}

.offline__points{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:18px}
.offline__point{position:relative;padding-left:26px}
.offline__point::before{content:"\2713";position:absolute;left:0;top:1px;color:#4ade80;font-size:14px}
.offline__pt{display:block;font:700 15px var(--font);margin-bottom:4px}
.offline__pd{display:block;font:400 14px/1.6 var(--font);color:var(--muted)}

.offline__foot{position:relative;display:flex;flex-wrap:wrap;gap:12px;margin-top:36px;
  padding-top:28px;border-top:1px solid rgba(255,255,255,.08)}

@media (max-width:1000px){
  .offline__box{padding:36px 30px 32px}
  .offline__body{grid-template-columns:1fr;gap:32px}
  .offline__big{font-size:34px}
}

@media (max-width:720px){
  .offline__box{padding:28px 22px 26px;border-radius:20px}
  .offline__figures{grid-template-columns:1fr;gap:22px;margin:26px 0;padding:22px 0}
  .offline__fdesc{max-width:none}
  .offline__step{grid-template-columns:1fr;gap:6px;padding:14px 16px}
  .offline__net{justify-self:start}
  .offline__line{margin-left:24px}
  .offline__foot .btn{width:100%;text-align:center}
}

/* ============================================================================
   STEP 26: совместимость устройств — группы вместо восьми плиток
   ============================================================================ */

.scan-devices__lead{max-width:64ch;margin-bottom:30px}

.dev-groups{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;align-items:start}

.dev-group{position:relative;overflow:hidden;display:flex;flex-direction:column;
  padding:30px 28px 26px;border:1px solid var(--line);border-radius:20px;
  background:var(--card);transition:border-color .2s,transform .2s}
.dev-group:hover{border-color:rgba(109,139,255,.38);transform:translateY(-2px)}
/* Тонкая цветная кромка сверху отличает группы, не крася карточку целиком. */
.dev-group::before{content:"";position:absolute;top:0;left:0;right:0;height:2px;
  background:linear-gradient(90deg,rgba(109,139,255,.75),transparent 78%)}
.dev-group--phone::before{background:linear-gradient(90deg,rgba(103,232,255,.7),transparent 78%)}
.dev-group--tablet::before{background:linear-gradient(90deg,rgba(74,222,128,.6),transparent 78%)}

.dev-group__head{display:flex;align-items:center;gap:16px;margin-bottom:16px}
.dev-group__art{flex:none;display:flex;align-items:center;justify-content:center;
  width:64px;height:64px;border-radius:16px;color:var(--accent);
  background:rgba(109,139,255,.1);border:1px solid rgba(109,139,255,.22)}
.dev-group--phone .dev-group__art{color:#67e8ff;background:rgba(103,232,255,.09);
  border-color:rgba(103,232,255,.22)}
.dev-group--tablet .dev-group__art{color:#4ade80;background:rgba(74,222,128,.09);
  border-color:rgba(74,222,128,.2)}
.dev-group__title{font:800 19px/1.2 var(--font);letter-spacing:-.01em;margin:0 0 5px}
.dev-group__os{font:600 12px var(--mono);color:var(--dim)}

.dev-group__lead{font:400 14.5px/1.6 var(--font);color:var(--muted);margin:0 0 20px}

.dev-group__list{margin:0 0 18px;padding:0;list-style:none;display:flex;flex-direction:column;
  gap:1px;border-radius:12px;overflow:hidden;background:rgba(255,255,255,.05)}
.dev-item{display:flex;align-items:baseline;justify-content:space-between;gap:12px;
  padding:12px 14px;background:#0c1120}
.dev-item__name{font:700 14.5px var(--font);color:#d5dae9}
.dev-item__count{font:500 12px var(--mono);color:var(--dim);text-align:right;white-space:nowrap}

/* Замечание внизу — то, что важно знать до закупки техники. */
.dev-group__note{margin-top:auto;position:relative;padding-left:20px;
  font:400 13px/1.5 var(--font);color:var(--muted)}
.dev-group__note::before{content:"i";position:absolute;left:0;top:1px;
  display:flex;align-items:center;justify-content:center;width:14px;height:14px;
  border-radius:50%;border:1px solid rgba(109,139,255,.5);
  font:700 9px var(--mono);color:var(--accent)}

/* --- Строка требований ------------------------------------------------------ */
.dev-reqs{display:flex;align-items:center;flex-wrap:wrap;gap:12px 26px;margin-top:22px;
  padding:18px 24px;border:1px solid var(--line);border-radius:14px;
  background:rgba(255,255,255,.02)}
.dev-reqs__label{font:700 11px var(--mono);text-transform:uppercase;letter-spacing:.08em;
  color:var(--dim);margin-right:4px}
.dev-req{display:inline-flex;align-items:baseline;gap:8px}
.dev-req__k{font:600 13px var(--font);color:var(--muted)}
.dev-req__v{font:700 13px var(--mono);color:#d5dae9}

@media (max-width:1000px){
  .dev-groups{grid-template-columns:1fr 1fr}
  /* Третья карточка занимает всю ширину, а не висит половиной строки. */
  .dev-group--tablet{grid-column:1 / -1}
  .dev-group--tablet .dev-group__list{display:grid;grid-template-columns:repeat(3,1fr);gap:1px}
}

@media (max-width:720px){
  .dev-groups{grid-template-columns:1fr}
  .dev-group{padding:26px 22px 22px}
  .dev-group--tablet .dev-group__list{grid-template-columns:1fr}
  .dev-reqs{flex-direction:column;align-items:flex-start;gap:10px;padding:18px 20px}
  .dev-req{width:100%;justify-content:space-between}
}

/* ============================================================================
   STEP 27: страница 404 — курьер не нашёл адрес
   ============================================================================ */

.e404__inner{display:grid;grid-template-columns:1.1fr .9fr;gap:56px;align-items:center}

/* --- Карта ------------------------------------------------------------------ */
.e404__art{position:relative;padding:24px;border:1px solid var(--line);border-radius:22px;
  background:linear-gradient(150deg,rgba(109,139,255,.06),#0b0f1c 60%);overflow:hidden}
.e404__map{display:block;width:100%;height:auto}

/* Пунктир бежит по дороге — ощущение движения даже до появления машины. */
.e404__dash{animation:e404-dash 1.4s linear infinite}
@keyframes e404-dash{to{stroke-dashoffset:-22}}

/* Машина едет по тому же пути, что нарисована дорога. offset-path принимает
   ту же кривую, поэтому маршрут и движение не разъезжаются: правится один
   раз в разметке. */
.e404__car{
  offset-path:path("M40 232 L128 232 Q168 232 168 192 L168 128 Q168 96 208 96 L332 96 Q372 96 372 136 L372 196 Q372 232 412 232 L520 232");
  offset-rotate:auto;
  animation:e404-drive 6s cubic-bezier(.45,0,.55,1) infinite}
@keyframes e404-drive{
  0%       {offset-distance:0%;   opacity:0}
  6%       {opacity:1}
  /* Замирает у ненайденной точки — это смысловая пауза, а не пауза ради паузы. */
  78%,92%  {offset-distance:100%; opacity:1}
  97%,100% {offset-distance:100%; opacity:0}
}

/* Отметки доставленных точек проявляются по мере проезда. */
.e404__pin{opacity:0;animation:e404-pin 6s linear infinite}
.e404__pin:nth-of-type(1){animation-delay:0s}
.e404__pin--done:last-of-type{animation-delay:.4s}
@keyframes e404-pin{
  0%,22%   {opacity:0;transform:scale(.6)}
  30%,100% {opacity:1;transform:scale(1)}
}
.e404__pin{transform-box:fill-box;transform-origin:center}

/* Ненайденный адрес пульсирует — единственный красный элемент на карте. */
.e404__lost{transform-box:fill-box;transform-origin:center;
  animation:e404-lost 6s ease-in-out infinite}
@keyframes e404-lost{
  0%,70%   {opacity:.35;transform:scale(.94)}
  80%,95%  {opacity:1;  transform:scale(1)}
  100%     {opacity:.35;transform:scale(.94)}
}

/* Движение отключается, если система просит убрать анимацию: мигающая
   картинка мешает людям с вестибулярными нарушениями. */
@media (prefers-reduced-motion: reduce){
  .e404__dash,.e404__car,.e404__pin,.e404__lost{animation:none}
  .e404__car{offset-distance:88%}
  .e404__pin,.e404__lost{opacity:1}
}

/* --- Текст ------------------------------------------------------------------ */
.e404__code{font:800 76px/1 var(--font);letter-spacing:-.04em;
  background:linear-gradient(135deg,#6d8bff,#67e8ff);-webkit-background-clip:text;
  background-clip:text;color:transparent;margin-bottom:8px}
.e404__kicker{font:700 11.5px var(--mono);text-transform:uppercase;letter-spacing:.08em;
  color:var(--dim);margin:0 0 10px}
.e404__title{margin:0 0 14px}
.e404__lead{margin:0 0 26px;max-width:44ch}
.e404__actions{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:34px}

.e404__suggest{padding-top:26px;border-top:1px solid var(--line)}
.e404__suggest-label{display:block;margin-bottom:14px;font:700 11px var(--mono);
  text-transform:uppercase;letter-spacing:.08em;color:var(--dim)}
.e404__links{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.e404__link{display:flex;flex-direction:column;gap:3px;padding:13px 16px;
  border:1px solid var(--line);border-radius:12px;background:var(--card);
  transition:border-color .18s,transform .18s}
.e404__link:hover{border-color:rgba(109,139,255,.42);transform:translateY(-2px)}
.e404__link:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.e404__link-name{font:700 14.5px var(--font);color:#d5dae9}
.e404__link-desc{font:400 12.5px var(--font);color:var(--muted)}

@media (max-width:1000px){
  .e404__inner{grid-template-columns:1fr;gap:34px}
  /* Карта уходит под текст: сначала объяснение, потом иллюстрация. */
  .e404__art{order:2}
  .e404__body{order:1}
  .e404__code{font-size:60px}
}

@media (max-width:720px){
  .e404__art{padding:14px;border-radius:16px}
  .e404__code{font-size:52px}
  .e404__links{grid-template-columns:1fr}
  .e404__actions .btn{width:100%;text-align:center}
}
