:root{--plum:#211641;--deep:#120b2a;--cyan:#4d84ff;--lime:#9be051;--warm:#ecb66e;--muted:#d7d0e3;--line:rgba(255,255,255,.15)}
    *{box-sizing:border-box}html{scroll-behavior:smooth;background:var(--plum)}body{margin:0;min-width:320px;background:var(--plum);color:#fff;font-family:Inter,Arial,sans-serif}a{color:inherit}img{display:block;max-width:100%}
    .shell{max-width:1240px;width:100%;margin:0 auto;padding:0 28px}.header{position:sticky;top:0;z-index:20;height:80px;background:rgba(42,32,73,.68);border-bottom:1px solid rgba(255,255,255,.16);box-shadow:0 8px 30px rgba(9,4,23,.18);backdrop-filter:blur(24px) saturate(1.2);-webkit-backdrop-filter:blur(24px) saturate(1.2)}.header .shell{height:100%;display:flex;align-items:center;justify-content:space-between;gap:30px}.brands{display:flex;align-items:center;gap:14px;text-decoration:none}.brand-code{display:flex;flex-direction:column;font-family:Montserrat,Arial,sans-serif;font-weight:900;line-height:1.02;letter-spacing:-.02em}.brand-code__line{display:block;font-size:18px;white-space:nowrap}.brand-code__line--top,.brand-code__bracket{color:#4d84ff}.brand-code__line--bottom{color:#fff}.nav{display:flex;gap:34px}.nav a{position:relative;padding:29px 0 26px;color:rgba(255,255,255,.66);font-size:14px;font-weight:700;text-decoration:none}.nav a:hover{color:#fff}.nav a:after{position:absolute;right:0;bottom:-1px;left:0;height:2px;background:var(--cyan);content:"";transform:scaleX(0);transition:.2s}.nav a:hover:after{transform:scaleX(1)}.academy-link{padding:11px 20px;border:1px solid rgba(255,255,255,.18);border-radius:999px;background:rgba(255,255,255,.07);font-size:13px;font-weight:800;text-decoration:none}
    .hero{position:relative;min-height:calc(100svh - 80px);overflow:hidden;isolation:isolate}.hero:before{position:absolute;inset:0;z-index:-2;background:radial-gradient(circle at 78% 48%,rgba(77,132,255,.09),transparent 31%),radial-gradient(circle at 42% 46%,rgba(236,182,110,.07),transparent 33%);content:""}.aura{position:absolute;z-index:-1;top:46%;left:58%;width:min(475px,39vw);aspect-ratio:619/526;background:url("../images/vibraimage/aura.svg") center/contain no-repeat;filter:blur(12px) saturate(1.08);opacity:.88;transform:translate(-50%,-50%);animation:aura 10s ease-in-out infinite alternate}.hero-grid{position:relative;width:min(1296px,calc(100% - 80px));min-height:calc(100svh - 80px);margin:auto;padding:72px 0 94px;display:grid;grid-template-columns:minmax(0,1.08fr) minmax(430px,.92fr);align-items:center;gap:72px}.eyebrow,.badge,.kicker{margin:0 0 28px;color:var(--cyan);font-size:12px;font-weight:900;letter-spacing:.22em;text-transform:uppercase}.eyebrow,.badge{width:max-content;display:flex;align-items:center;gap:10px;padding:9px 16px;border:1px solid rgba(77,132,255,.5);border-radius:999px;background:rgba(18,11,42,.4)}.eyebrow i,.badge i{width:8px;height:8px;border-radius:50%;background:var(--lime);box-shadow:0 0 12px var(--lime)}h1{max-width:760px;margin:0;background:linear-gradient(120deg,#eb9978 4%,#ecde76 56%,#a4ff9a);background-clip:text;color:transparent;font-family:Montserrat,Arial,sans-serif;font-size:clamp(44px,4vw,62px);font-weight:900;letter-spacing:-.045em;line-height:.98;white-space:nowrap;text-transform:uppercase}.dash{width:54px;height:4px;margin:30px 0 28px;border-radius:9px;background:var(--lime);box-shadow:0 0 16px rgba(155,224,81,.5)}.hero-copy h2{max-width:670px;margin:0;font-family:Montserrat,Arial,sans-serif;font-size:clamp(22px,1.75vw,28px);line-height:1.2}.lead{max-width:620px;margin:26px 0 0;color:var(--muted);font-size:17px;line-height:1.65}.cta{width:max-content;margin-top:34px;padding:17px 27px;display:flex;align-items:center;gap:24px;border-radius:999px;background:linear-gradient(110deg,var(--cyan),#5a90ff 58%,var(--lime) 125%);box-shadow:0 14px 30px rgba(9,4,23,.42);color:#0e0a24;font-weight:900;text-decoration:none;transition:.2s}.cta:hover{transform:translateY(-2px);box-shadow:0 18px 35px rgba(9,4,23,.5),0 0 28px rgba(77,132,255,.3)}.count{margin-top:48px;display:flex;align-items:center;gap:18px}.count strong{padding-right:18px;border-right:1px solid rgba(255,255,255,.25);font:900 64px/.85 Montserrat,Arial}.count span{font:800 17px/1.2 Montserrat,Arial;text-transform:uppercase}
    .tech{position:relative;padding:42px;overflow:hidden;border:1px solid rgba(255,255,255,.24);border-radius:28px;background:linear-gradient(140deg,rgba(255,255,255,.14),rgba(31,22,63,.56));box-shadow:0 24px 56px rgba(9,4,23,.42),inset 0 0 45px rgba(77,132,255,.06);backdrop-filter:blur(24px)}.tech:before{position:absolute;top:0;bottom:0;left:0;width:5px;background:linear-gradient(var(--cyan),#6a95ff,var(--lime));content:""}.tech h2{margin:0 0 22px;font:900 clamp(32px,3vw,46px)/1 Montserrat,Arial;text-transform:uppercase}.tech p{margin:0;color:#ede9f5;font-size:16px;line-height:1.68;text-shadow:0 1px 4px rgba(0,0,0,.4)}.tech .tech-lead{margin-bottom:16px;color:#fff;font-size:19px;font-weight:800;line-height:1.48;text-shadow:0 1px 4px rgba(0,0,0,.4)}.tags{margin-top:30px;padding-top:24px;display:flex;flex-wrap:wrap;gap:18px 26px;border-top:1px solid var(--line)}.tags span{display:flex;align-items:center;gap:9px;font-size:12px;font-weight:900;text-transform:uppercase}.tags i{width:9px;height:9px;border-radius:50%;background:var(--cyan);box-shadow:0 0 10px var(--cyan)}.tags span:last-child i{background:var(--lime);box-shadow:0 0 10px var(--lime)}
    .section{position:relative;padding:108px 0 96px;border-top:1px solid rgba(255,255,255,.07)}.section:before{position:absolute;inset:0;background:radial-gradient(circle at 8% 28%,rgba(77,132,255,.08),transparent 28%),radial-gradient(circle at 92% 76%,rgba(155,224,81,.06),transparent 26%);content:"";pointer-events:none}.section-head{position:relative;margin-bottom:48px;display:grid;grid-template-columns:1fr minmax(280px,440px);align-items:end;gap:56px}.kicker{margin-bottom:14px}.section-head h2,.reading-title h2{margin:0;font:900 clamp(36px,4.6vw,64px)/1.02 Montserrat,Arial;letter-spacing:-.04em;text-transform:uppercase}.section-head>p{margin:0;color:var(--muted);font-size:16px;line-height:1.65}.grid{position:relative;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.card{--accent:var(--cyan);min-height:116px;border:1px solid var(--line);border-radius:18px;background:rgba(17,10,39,.54);box-shadow:0 16px 36px rgba(9,4,23,.24);transition:.25s}.card.lime{--accent:var(--lime)}.card.warm{--accent:var(--warm)}.card:hover,.card[open]{border-color:var(--accent);background:rgba(28,18,58,.87);transform:translateY(-3px)}summary{min-height:114px;padding:24px;display:flex;align-items:center;gap:18px;cursor:pointer;list-style:none}summary::-webkit-details-marker{display:none}.num{width:52px;height:52px;display:grid;flex:0 0 52px;place-items:center;border:1px solid var(--accent);border-radius:50%;color:var(--accent);font-weight:900}.name{min-width:0;display:flex;flex:1;flex-direction:column;gap:5px}.name small{color:var(--accent);font-size:9px;font-weight:900;letter-spacing:.14em;text-transform:uppercase}.name strong{overflow-wrap:anywhere;font:800 19px/1.2 Montserrat,Arial}.plus{font-size:25px;color:rgba(255,255,255,.55);transition:.2s}.card[open] .plus{color:var(--accent);transform:rotate(45deg)}.body{margin:0 24px;padding:0 0 28px 70px;border-top:1px solid rgba(255,255,255,.1)}.body p{margin:16px 0 0;color:var(--muted);font-size:14px;line-height:1.64}.body p:first-child{color:#fff;font-weight:800}
    .reading{padding:96px 0;background:#171030;border-block:1px solid rgba(255,255,255,.08)}.reading-title{max-width:850px;margin-bottom:48px}.reading-title h2{margin-bottom:0}.reading-lead{margin:20px 0 0;max-width:720px;color:var(--muted);font-size:16px;line-height:1.7}.reading-lead+.reading-lead{margin-top:14px}.reading-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.reading-grid article{padding:30px;border:1px solid rgba(255,255,255,.11);border-radius:20px;background:rgba(255,255,255,.035)}.reading-grid article>span{color:var(--cyan);font-weight:900}.reading-grid h3{margin:20px 0 10px;font:800 19px Montserrat,Arial}.reading-grid p,.note{margin:0;color:var(--muted);font-size:14px;line-height:1.65}.note{margin-top:22px;padding:18px 22px;border-left:3px solid var(--warm);border-radius:0 12px 12px 0;background:rgba(236,182,110,.06)}
    .contacts{padding-bottom:104px}.contacts:before{background:none}.contact-grid{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:18px}.contact{min-height:190px;padding:30px;display:flex;align-items:center;gap:28px;border:1px solid var(--line);border-radius:22px;background:rgba(17,10,39,.6)}.contact>img{width:110px;height:100px;object-fit:contain}.contact>div{min-width:0;display:flex;flex:1;flex-direction:column;gap:8px}.contact-label{margin:0 0 5px;color:rgba(255,255,255,.56);font-size:11px;font-weight:900;letter-spacing:.12em;text-transform:uppercase}.contact a{width:max-content;font:800 16px Montserrat,Arial;text-decoration:none}.qr{width:96px!important;height:96px!important;padding:7px;flex:0 0 96px;border-radius:10px;background:#fff}.qr img{width:100%;height:100%}
    /* Плавный переход от фиолетового фона секций (--plum) к более тёмному
       (--deep, тот же оттенок, просто глубже) — футер выглядит логичным
       завершением страницы, а не отдельным куском другого цвета. */
    footer{padding:58px 0 30px;background:linear-gradient(180deg,var(--plum),var(--deep) 140px)}.footer-grid{margin-bottom:46px;display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr;gap:48px}.footer-grid p,.footer-grid a{margin:0;color:#fff;font-size:13px;line-height:1.7;text-decoration:none}.footer-about{max-width:290px;font-size:14px!important}.footer-col{display:flex;flex-direction:column;gap:8px}.footer-col h3{margin:0 0 10px;padding-bottom:12px;border-bottom:1px solid rgba(255,255,255,.08);font-size:12px;text-transform:uppercase}.footer-bottom{padding-top:24px;display:flex;justify-content:space-between;gap:20px;border-top:1px solid rgba(255,255,255,.07);font-size:12px}.footer-bottom div{display:flex;gap:20px}.footer-bottom a{text-decoration:none}
    @keyframes aura{from{transform:translate(-50%,-50%) scale(.98);opacity:.8}to{transform:translate(-50%,-50%) scale(1.04);opacity:.94}}
    @media(max-width:1050px){.nav{display:none}.grid{grid-template-columns:repeat(2,1fr)}.footer-grid{grid-template-columns:1fr 1fr}
      /* Ниже 1050px три карточки услуг в ряд уже не помещаются: 1fr — это
         minmax(auto,1fr), а auto не даёт колонке сжаться уже самого длинного
         слова («Совершенствование»), поэтому сетка распирала страницу и
         появлялась горизонтальная прокрутка. Две колонки с minmax(0,1fr)
         сжимаются свободно, а третья карточка занимает всю ширину — так в
         ряду не остаётся пустой ячейки. */
      .reading-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
      .reading-grid article:last-child{grid-column:1/-1}}
    @media(max-width:780px){.header{height:68px}.shell{padding:0 16px}.brand-code__line{font-size:16px}.academy-link{font-size:11px;padding:9px 13px}.section,.reading{padding:72px 0}.section-head{grid-template-columns:1fr;gap:20px}.reading-grid,.contact-grid{grid-template-columns:1fr}}
    @media(max-width:560px){.academy-link{width:38px;height:38px;padding:0;display:grid;place-items:center;overflow:hidden;color:transparent;font-size:0}.academy-link:before{content:"↗";color:#fff;font-size:17px}.eyebrow,.badge{font-size:10px;padding:8px 12px}.grid{grid-template-columns:1fr}.card:hover{transform:none}.body{margin:0 20px;padding-left:0}.contact{padding:24px;align-items:flex-start;flex-wrap:wrap;gap:20px}.contact>img{width:80px;height:72px}.qr{width:76px!important;height:76px!important;flex-basis:76px}.footer-grid{grid-template-columns:1fr;gap:28px}.footer-bottom,.footer-bottom div{flex-direction:column}.footer-bottom div{gap:8px}}

    .grid{align-items:start}
    @media(max-width:560px){.header .shell{gap:14px}.brand-code__line{font-size:14px}}
    @media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}

    /* Показатели идут в заданном порядке (Т1…Т14), а не сгруппированы по
       категориям — цвет каждой карточки задаётся её собственным классом
       (.warm/.lime, по умолчанию — cyan), а не колонкой, в которой она стоит. */
    #indicators .grid{gap:18px}
    .indicator-column{display:flex;flex-direction:column;gap:14px}
    /* Ниже 1050px обёртки-колонки убираем из раскладки (display:contents):
       все 14 карточек становятся прямыми элементами общей сетки и текут
       подряд, заполняя строки без пропусков. Раньше каждая обёртка
       раскладывалась в две колонки сама по себе, а карточек в них 5 + 5 + 4 —
       поэтому справа от 05 и от 10 оставались пустые «дырки». */
    @media(max-width:1050px){
      .indicator-column{display:contents}
      #indicators .grid{grid-template-columns:repeat(2,minmax(0,1fr))}
    }
    @media(max-width:780px){#indicators .grid{grid-template-columns:1fr}}


    #indicators{interpolate-size:allow-keywords}
    #indicators .card{overflow:clip}
    #indicators .card::details-content{block-size:0;overflow:hidden;opacity:0;transition:block-size .4s ease,opacity .28s ease,content-visibility .4s allow-discrete}
    #indicators .card[open]::details-content{block-size:auto;opacity:1}

    .contact>img.academy-contact-logo{height:100px;filter:brightness(1.3) drop-shadow(0 0 4px #fff) drop-shadow(0 0 12px rgba(77,132,255,.95)) drop-shadow(0 0 26px rgba(77,132,255,.8))}

    /* Contact alignment and narrow-screen typography. */
    /* Колонки с фиксированным минимумом (210px/140px) не давали карточкам
       сжиматься — на ширинах ~780-1230px это распирало сетку и вызывало
       горизонтальный скролл всей страницы. Текстовая колонка теперь гибкая
       (minmax(0,1fr)), а под QR ровно его реальный размер (96px). */
    .contact-grid>.contact{min-width:0}
    .contact-grid>.contact:nth-child(2){display:grid;grid-template-columns:110px minmax(0,1fr) 96px}
    .contact-grid>.contact:nth-child(2)>.qr{justify-self:center}
    @media(max-width:560px){
      .section-head h2,.reading-title h2{max-width:100%;font-size:clamp(28px,8vw,36px);overflow-wrap:normal;word-break:normal}
      #indicators .name strong{font-size:clamp(14px,3.8vw,18px);overflow-wrap:normal;word-break:normal;hyphens:none}
      .contact-grid>.contact{min-height:0;display:grid;align-items:center;gap:20px}
      .contact-grid>.contact:first-child{grid-template-columns:100px minmax(0,1fr)}
      .contact-grid>.contact:first-child>img.academy-contact-logo{width:100px;height:100px}
      .contact-grid>.contact:nth-child(2){grid-template-columns:80px minmax(0,1fr)}
      .contact-grid>.contact:nth-child(2)>.qr{grid-column:1/-1;justify-self:center}
    }



    /* Academy QR code mirrors the ELSYS contact card without changing its text. */
    .contact-grid>.contact:first-child{display:grid;grid-template-columns:110px minmax(0,1fr) 96px}
    .contact-grid>.contact:first-child::after{width:96px;height:96px;justify-self:center;border-radius:10px;background:#fff url("../images/vibraimage/eacademy-qr.svg") center/cover no-repeat;content:""}
    @media(max-width:560px){
      .contact-grid>.contact:first-child{grid-template-columns:100px minmax(0,1fr)}
      .contact-grid>.contact:first-child::after{width:76px;height:76px;grid-column:1/-1;justify-self:center}
    }

    /* Use the full card width for expanded indicator descriptions. */
    #indicators .body{padding-left:0}

    /* Блок «Запишитесь на консультацию» в разделе услуг профайлинга.
       Оформлен в палитре страницы: те же переменные, что у карточек. */
    .consult{margin-top:34px;padding:34px;display:grid;grid-template-columns:1fr minmax(320px,460px);gap:40px;align-items:start;border:1px solid rgba(255,255,255,.11);border-radius:20px;background:rgba(255,255,255,.035)}
    .consult__copy h3{margin:0 0 14px;font:800 clamp(22px,2.4vw,30px)/1.15 Montserrat,Arial;letter-spacing:-.02em}
    .consult__copy p{margin:0;color:var(--muted);font-size:15px;line-height:1.65}
    .consult__copy p.kicker{color:var(--cyan)}
    .consult__form{display:flex;flex-direction:column;gap:12px}
    .consult__row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
    .consult__form input[type=text],.consult__form input[type=email],.consult__form input[type=tel],.consult__form textarea{
        width:100%;padding:13px 16px;border:1px solid rgba(255,255,255,.14);border-radius:12px;
        background:rgba(18,11,42,.6);color:#fff;font:400 14px/1.5 Inter,Arial;transition:border-color .2s}
    .consult__form input::placeholder,.consult__form textarea::placeholder{color:rgba(215,208,227,.5)}
    .consult__form input:focus,.consult__form textarea:focus{outline:none;border-color:var(--cyan)}
    .consult__form textarea{resize:vertical;min-height:84px}
    .consult__field{display:flex;flex-direction:column}
    .consult__error{display:none;margin-top:5px;color:var(--warm);font-size:12px;line-height:1.4}
    .consult__consent{display:flex;align-items:flex-start;gap:9px;color:var(--muted);font-size:12px;line-height:1.5;cursor:pointer}
    .consult__consent input{margin-top:2px;accent-color:var(--cyan);flex:none}
    .consult__form button{margin-top:4px;padding:14px 22px;border:none;border-radius:12px;background:linear-gradient(100deg,#4d84ff,#7b5cff);color:#fff;font:800 14px Montserrat,Arial;cursor:pointer;transition:.2s}
    .consult__form button:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 12px 26px rgba(77,132,255,.28)}
    .consult__form button:disabled{opacity:.55;cursor:not-allowed;transform:none;box-shadow:none}
    .consult__msg{margin:0;min-height:18px;font-size:13px;line-height:1.5}
    .consult__msg.ok{color:var(--lime)}
    .consult__msg.err{color:var(--warm)}

    /* Маркированный список в карточке «Разнообразные области применения».
       Маркер рисуем через ::before, а не list-style — так его цвет
       (акцентный, как у номера карточки) работает одинаково во всех
       браузерах, включая Safari, где ::marker{color} поддерживается не везде.
       Текст с отступом слева, маркеры висят в этом отступе. */
    .reading-list{margin:12px 0 0;padding:0;list-style:none}
    .reading-list li{position:relative;padding-left:18px;color:var(--muted);font-size:14px;line-height:1.65}
    .reading-list li+li{margin-top:7px}
    .reading-list li:before{position:absolute;top:0;left:2px;color:var(--cyan);content:"•";font-weight:900}
    @media(max-width:780px){
      .consult{padding:26px;grid-template-columns:1fr;gap:26px}
      .consult__row{grid-template-columns:1fr}
    }

    /* ===== Появление секций при прокрутке =====
       Тот же приём, что на основном сайте (см. base.html): класс js-on
       ставится до отрисовки, секции скрыты и проявляются, попав во вьюпорт. */
    html.js-on main>section{opacity:0;transform:translateY(40px);transition:opacity .7s cubic-bezier(.22,1,.36,1),transform .7s cubic-bezier(.22,1,.36,1)}
    html.js-on main>section.is-visible{opacity:1;transform:none}
    @media(prefers-reduced-motion:reduce){html.js-on main>section{opacity:1;transform:none;transition:none}}
    @media(max-width:600px){html.js-on main>section{transform:translateY(16px);transition-duration:.55s}}



    /* ===== ПЕРВЫЙ ЭКРАН =====
       Текст слева, карточка «О технологии» справа, аура — фоновым свечением
       между ними; сверху строка с фестивалем. Шапка сайта (логотип, меню,
       телефон) остаётся на месте, первый экран живёт под ней.

       Цветовая связь с шапкой: первый экран начинается ровно тем тоном,
       который даёт подложка шапки, и растворяется книзу в цвет страницы,
       поэтому границы между шапкой и первым экраном не видно. */
    .header{background:rgba(26,20,66,.72);border-bottom:1px solid rgba(77,132,255,.16)}
    .hero{display:flex;flex-direction:column;background:linear-gradient(180deg,#1a1442,#1c1546 48%,var(--plum))}
    .hero:before{background:radial-gradient(58% 46% at 52% 48%,rgba(77,132,255,.18),transparent 72%),radial-gradient(40% 34% at 84% 18%,rgba(155,224,81,.06),transparent 70%)}

    /* Аура — фоновое пятно ровно по центру первого экрана.
       Прозрачность задаём в самой анимации: она перебивает статическое
       opacity, поэтому одного объявления в .aura недостаточно. */
    .aura{top:47%;left:50%;width:min(780px,55vw);filter:blur(18px) saturate(1.12)}
    @keyframes aura{
      from{transform:translate(-50%,-50%) scale(.98);opacity:.72}
      to{transform:translate(-50%,-50%) scale(1.04);opacity:.88}
    }

    /* Сетка первого экрана — пропорции с макета: текст 34%, центральная зона
       под ауру 25%, карточка 33%, промежутки по 4%. Контейнер как у шапки. */
    /* Нижнее поле больше верхнего: на макете блок стоит чуть выше центра
       (центр контента ≈46% высоты экрана, а не 50%). */
    .hero-grid{max-width:1240px;width:100%;min-height:0;margin:auto;padding:24px 28px 40px;
      grid-template-columns:52fr 3fr 37fr;align-items:center;gap:4%}
    /* Подъём применяем только там, где экран достаточно высокий: на низких
       окнах лишнее нижнее поле вытолкнуло бы блок за пределы экрана. */
    @media(min-height:820px){.hero-grid{padding-bottom:clamp(24px,6svh,64px)}}
    .tech{grid-column:3}

    /* Левая колонка: заголовок в обычном регистре, как в макете. */
    /* «Виброизображение» — одно длинное слово, переносить его нельзя, поэтому
       кегль считаем от ширины самой колонки (cqi), а не от ширины окна:
       при любом размере экрана строка гарантированно влезает. */
    .hero-copy{position:relative;z-index:2;min-width:0;container-type:inline-size}
    /* Капс шире строчных букв: кегль и потолок уменьшены (было 8.6cqi/64px),
       иначе последняя буква слова обрезалась контейнером. */
    .hero-copy h1{max-width:none;margin:0;padding:.02em 0 .08em;font-size:min(58px,7.8cqi);letter-spacing:-.03em;line-height:1.04;white-space:normal;text-transform:uppercase}
    /* Строки тянутся на всю колонку: обрезать их процентами при крупном кегле
       нельзя — текст начинал упираться в ауру. */
    /* Отступы между заголовком, подзаголовком, лидом, кнопкой и метриками
       увеличены: колонка с текстом была заметно короче правой карточки и
       высоты первого экрана, из-за чего сверху и снизу оставалось много
       пустого места — теперь текст сам занимает больше вертикали. */
    .hero-copy h2{max-width:none;margin-top:56px;font-size:max(21px,min(28px,5.6cqi));line-height:1.3}
    .hero-copy .lead{max-width:none;margin-top:32px;font-size:19px;line-height:1.6}
    /* Кнопка «Узнать о показателях» и вторая, ведущая к услугам
       профайлинга, стоят в одной строке рядом — .hero-ctas несёт общий
       верхний отступ, у самих .cta он обнулён. */
    .hero-ctas{margin-top:64px;display:flex;flex-wrap:wrap;align-items:center;gap:16px}
    .cta{margin-top:0;padding:16px 32px;gap:12px;display:inline-flex;align-items:center;background:linear-gradient(100deg,#4d84ff,#7b5cff);color:#fff;font-size:18px;font-weight:700;box-shadow:0 16px 34px rgba(24,16,64,.55);transition:.2s}
    .cta span{display:grid;flex:none;place-items:center;font-size:19px;transition:transform .2s}
    .cta:hover{transform:translateY(-2px);box-shadow:0 20px 40px rgba(24,16,64,.6),0 0 26px rgba(77,132,255,.35)}
    .cta:hover span{transform:translateX(4px)}
    /* Вторая кнопка — стеклянная, в палитре карточки «О технологии»:
       ниже по значимости, чем основной CTA с градиентом. */
    .cta--ghost{background:linear-gradient(140deg,rgba(255,255,255,.1),rgba(255,255,255,.03));color:#fff;border:1px solid rgba(255,255,255,.22);box-shadow:none}
    .cta--ghost:hover{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.42);box-shadow:0 12px 28px rgba(9,4,23,.35)}
    .cta--ghost span{color:var(--lime)}

    /* Две метрики под кнопкой, разделены волосяными линиями. */
    .stats{margin-top:48px;padding-top:34px;display:flex;align-items:center;gap:clamp(18px,2vw,30px);border-top:1px solid rgba(255,255,255,.14)}
    .stat{display:flex;align-items:center;gap:13px}
    .stat+.stat{padding-left:clamp(18px,2vw,30px);border-left:1px solid rgba(255,255,255,.14)}
    .stat strong{font:900 clamp(38px,3.4vw,52px)/.85 Montserrat,Arial}
    .stat span{color:#8fa6ff;font:800 13px/1.4 Montserrat,Arial;letter-spacing:.05em;text-transform:uppercase}

    /* Карточка «О технологии»: заголовок — небольшой лейбл, акцент перешёл
       на верхнюю кромку, характеристики внизу — пилюли с цветными точками. */
    /* Панель — стекло: фон первого экрана и аура просвечивают сквозь неё. */
    .tech{padding:32px;border:1px solid rgba(255,255,255,.14);border-radius:24px;background:linear-gradient(140deg,rgba(255,255,255,.08),rgba(15,10,35,.78));box-shadow:0 30px 60px rgba(6,3,20,.32);backdrop-filter:blur(18px) saturate(1.15);-webkit-backdrop-filter:blur(18px) saturate(1.15)}
    .tech:before{top:0;right:0;bottom:auto;left:0;width:auto;height:1px;background:linear-gradient(90deg,rgba(155,224,81,.9),rgba(155,224,81,0) 58%)}
    .tech h2.tech-kicker{margin:0 0 22px;color:var(--lime);font:900 12px/1 Montserrat,Arial;letter-spacing:.2em;text-transform:uppercase}
    .tech .tech-lead{margin-bottom:28px;font-size:19px;line-height:1.45}
    .tech p{font-size:16px;line-height:1.6}
    /* Обе пилюли стоят в одну строку: карточка узкая, поэтому кегль и поля
       подобраны так, чтобы «Наглядный результат» вставал справа от
       «Бесконтактно», а не переносился под него. */
    .tags{margin-top:26px;padding-top:20px;gap:8px;border-top:1px solid rgba(255,255,255,.1)}
    /* В одну строку — только там, где карточка достаточно широкая. Ниже ~1200px
       она сужается, и принудительный nowrap выдавливал пилюли за её пределы,
       растягивая по горизонтали всю страницу. */
    @media(min-width:1300px){.tags{flex-wrap:nowrap}}
    .tags span{padding:8px 12px;gap:7px;flex:none;white-space:nowrap;border:1px solid rgba(255,255,255,.12);border-radius:999px;background:rgba(255,255,255,.07);font-size:11px}
    .tags i{width:7px;height:7px;flex:none}
    .tags i{box-shadow:0 0 10px rgba(77,132,255,.75)}
    .tags span i.is-lime{background:var(--lime);box-shadow:0 0 10px rgba(155,224,81,.7)}
    .tags span i.is-warm{background:var(--warm);box-shadow:0 0 10px rgba(236,182,110,.7)}

    /* Планшеты: текст и карточка встают друг под другом. */
    @media(max-width:1050px){
      .hero-grid{grid-template-columns:minmax(0,1fr);gap:26px;padding:20px 28px 32px}
      .hero-copy h2,.hero-copy .lead{max-width:none}
      .hero-copy h2{margin-top:28px}
      .hero-copy .lead{margin-top:18px}
      .stats{margin-top:28px;padding-top:24px}
      .tech{grid-column:auto;padding:26px 28px}
      .tech .tech-lead{font-size:16px}
      .stats{margin-top:26px;padding-top:22px}
      .aura{top:44%;left:50%;width:min(720px,86vw)}
    }

    /* Мобильные: контейнер как у шапки (100% − 32px). */
    @media(max-width:780px){
      .hero{min-height:auto}
      /* Верхний отступ (было 0) — весь первый экран (текст + карточка «О
         технологии») сдвинут чуть ниже шапки, а не начинается вплотную под
         ней. */
      .hero-grid{width:100%;padding:36px 16px 44px;gap:40px}
      /* Текстовая группа (заголовок…метрики) центрируется по вертикали в
         пределах первого экрана — так отступы сверху и снизу получаются
         ровными, а не «всё прижато к шапке, дальше пусто». Карточка
         «О технологии» идёт ниже, за пределами первого экрана — обычная
         прокрутка к следующему смысловому блоку. */
      .hero-copy{min-height:calc(100svh - 94px);display:flex;flex-direction:column;justify-content:center;text-align:center}
      .hero-copy h1{margin-inline:auto}
      .hero-copy h2{max-width:34ch;margin:34px auto 0;font-size:19px}
      .hero-copy .lead{max-width:none;margin:26px auto 0;font-size:14.5px}
      /* Две кнопки в ряд не помещаются в ширину экрана — на телефоне они
         встают друг под другом, каждая по ширине своего текста. */
      .hero-ctas{margin:80px auto 0;flex-direction:column;align-items:center;gap:14px}
      .stats{justify-content:center;margin-top:88px;padding-top:24px}
      .tech{padding:26px}
      /* Аура на телефоне — небольшое тихое свечение за текстом первого
         блока («Виброизображение»…метрики), а не за карточкой «О
         технологии» ниже. .aura позиционируется от верха всей .hero
         (текст + карточка вместе), поэтому центр по вертикали считаем не
         от 50% всей секции, а от середины именно .hero-copy — её высота
         здесь calc(100svh - 94px), начинается от верха .hero (padding-top
         у .hero-grid — 0). Маленький размер и низкая прозрачность — чтобы
         силуэты не превращались в размытые пятна поверх текста, как было
         при старой (полноразмерной) ауре. Анимация пульсации прозрачности
         (@keyframes aura) перебивает статический opacity — на мобильном
         она не нужна, поэтому отключаем её и фиксируем прозрачность. */
      /* На большом размере блюр(18px) из базового правила не растворяет
         края картинки полностью — виден прямоугольный контур самого SVG.
         Радиальная маска мягко гасит края в прозрачность независимо от
         блюра, поэтому свечение выглядит облаком, а не «квадратом». */
      .aura{
        top:calc((100svh - 94px) * 0.36 + 36px);left:50%;width:min(460px,92vw);opacity:.6;animation:none;
        -webkit-mask-image:radial-gradient(closest-side,#000 45%,transparent 100%);
        mask-image:radial-gradient(closest-side,#000 45%,transparent 100%);
      }
    }
    @media(max-width:560px){
      .hero-copy{min-height:calc(100svh - 100px)}
      .aura{top:calc((100svh - 100px) * 0.36 + 36px)}
      /* Две метрики в ряд на телефон не помещаются: подпись второй уходила
         за край экрана, а «психофизиологических» рвалось посреди слова.
         Ставим их друг под другом; колонка с цифрами одной ширины, чтобы
         подписи начинались с одной линии. Ширина подписи — по самому
         длинному слову (min-content): иначе блок растягивался на всю ширину
         и визуально съезжал влево от центрированного первого экрана. */
      .stat strong{font-size:34px;text-align:center}
      .stats{
        width:100%;
        display:grid;
        grid-template-columns:minmax(0,max-content);
        justify-content:center;
        gap:16px;
      }
      .stat{
        min-width:0;
        display:grid;
        grid-template-columns:52px minmax(0,1fr);
        gap:12px;
        text-align:left;
      }
      .stat span{
        width:min-content;
        font-size:12px;
        letter-spacing:.035em;
      }
      .stat+.stat{margin-left:0;padding-left:0;border-left:0}
      /* Длинное слово остаётся целым, но уменьшается ровно настолько,
         насколько требует доступная ширина мобильного экрана. */
      #indicators .section-head__long-word{
        display:inline-block;
        max-width:100%;
        font-size:clamp(21px,6.4vw,30px);
        letter-spacing:-.055em;
        white-space:nowrap;
      }
    }

    /* Call action in the VibraImage header. */
    .academy-link{display:inline-flex;align-items:center;justify-content:center;gap:9px}
    .academy-link svg{width:18px;height:18px;flex:none;fill:currentColor}

    /* Natural Russian wrapping keeps expanded cards compact on every width. */
    #indicators .name strong,
    #indicators .body p{
      overflow-wrap:break-word;
      word-break:normal;
      word-spacing:normal;
      hyphens:auto;
      text-align:left;
      text-wrap:pretty;
    }
    /* Заголовки карточек не переносим по слогам: hyphens:auto рвал их
       посреди слова («Энергетические затра-ты»). Длинные названия просто
       переходят на следующую строку целиком. */
    #indicators .name strong{hyphens:none}
    #indicators .body p{font-size:clamp(13px,.9vw,14px);line-height:1.5}

    @media(max-width:560px){
      .header{height:74px}
      .brand-code__line{font-size:18px}
      .academy-link{width:44px;height:44px;padding:0;color:#fff;font-size:0;overflow:visible}
      .academy-link:before{content:none}
      .academy-link svg{width:21px;height:21px}
      .academy-link span{display:none}
      #indicators .body p{font-size:clamp(12px,3.45vw,14px);line-height:1.46}
    }
