/* Завершающий слой компонентов и адаптивности. Переменные общие для всех страниц. */
:root {
  --content-width:1180px;
  --card-radius:22px;
  --section-space:92px;
  --anchor-offset:108px;
}
html { scroll-padding-top:var(--anchor-offset); }
body { overflow-x:clip; }
img { height:auto; }
button,input,select,textarea { font:inherit; }
button { cursor:pointer; }
[hidden] { display:none !important; }
:focus-visible { outline:3px solid #1788d0 !important; outline-offset:4px; }
.fragment-target { scroll-margin-top:0; }
.shell { max-width:var(--content-width); }
.reveal { opacity:1; transform:none; }
.reveal.will-reveal:not(.show) { opacity:0; transform:translateY(26px); }
.hero .reveal,.subhero .reveal { opacity:1; transform:none; }

/* Шапка сохраняет плавающую форму; на светлых страницах текст сразу тёмный. */
.site-header.is-scrolled .header-grid,.page-article .site-header .header-grid { background:#fff; }
.page-article .site-header .brand b,.page-article .site-header .brand small,
.page-article .site-header .desktop-nav a { color:var(--ink); }
.page-article .site-header .menu-toggle span { background:var(--ink); }
.mobile-menu { pointer-events:auto; max-height:calc(100dvh - 160px); overflow-y:auto; overscroll-behavior:contain; }
.admin-bar .site-header { top:32px; }
.desktop-nav .nav-dropdown a { min-height:44px; }

/* Восстановленные базовые стили галереи: только один активный слайд занимает сцену. */
.v25-slide { position:absolute; inset:0; opacity:0; pointer-events:none; transition:opacity .55s ease; }
.v25-slide.is-active { opacity:1; z-index:1; }
.v25-slide > img { width:100%; height:100%; object-fit:contain; background:#edf2f5; }
.v25-thumb { flex:0 0 78px; height:60px; padding:0; border:2px solid transparent; border-radius:10px; overflow:hidden; opacity:.65; }
.v25-thumb img { width:100%; height:100%; object-fit:cover; }
.v25-gallery-footer { grid-template-columns:auto auto minmax(0,1fr); }
.gallery-pause { min-width:82px; min-height:44px; padding:8px 12px; border:1px solid var(--line); border-radius:10px; background:#fff; color:var(--ink); }
.v25-gallery-viewport { touch-action:pan-y; }
.if-crossfade .ba-reveal { inset:0; height:100%; }
.if-crossfade .ba-layer { position:absolute; inset:0; }
.if-crossfade .ba-base { position:absolute; }
.if-crossfade .ba-reveal picture { width:100%; height:100%; }

.page-security .security-hero-media { background-position:right center !important; }

/* Пять фото: крупный кадр слева и четыре вторичных справа без пустой нижней ячейки. */
.service-topic-gallery { grid-template-columns:repeat(4,minmax(0,1fr)); grid-auto-rows:230px; }
.service-topic-gallery figure { position:relative; min-height:0 !important; }
.service-topic-gallery img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.service-topic-gallery.count-1 { grid-auto-rows:450px; }
.service-topic-gallery.count-1 figure { grid-column:1/-1; }
.service-topic-gallery.count-2 { grid-auto-rows:350px; }
.service-topic-gallery.count-2 figure { grid-column:span 2; }
.service-topic-gallery.count-3 figure:first-child { grid-column:span 2; grid-row:span 2; }
.service-topic-gallery.count-3 figure:not(:first-child) { grid-column:span 2; }
.service-topic-gallery.count-4 { grid-auto-rows:290px; }
.service-topic-gallery.count-4 figure { grid-column:span 2; }
.service-topic-gallery.count-5 figure:first-child { grid-column:span 2; grid-row:span 2; }
.service-topic-gallery.count-5 figure:not(:first-child) { grid-column:span 1; }
/* Вертикальное оборудование и предметные фото показываем полностью. */
#acs .service-topic-gallery img,#trattamento-acqua .service-topic-gallery img,
#quadri-elettrici .service-topic-gallery img,.project-track-security .project-card img { object-fit:contain; }
.series-card-copy { display:block; padding:12px; }
.series-ref-card img { height:auto; aspect-ratio:5/6; object-fit:contain; background:#edf2f5; }
.series-note { font-size:.85rem; line-height:1.5; color:var(--muted); }
.service-news-item time { color:#586d7b; }
.service-news-item strong { font-size:1rem; line-height:1.4; }
.service-news-empty p { font-size:.9rem; }
.service-news-card { min-width:0; }
.service-start-layout,.contact-layout,.hero-request-grid { min-width:0; }
.service-start-layout > *, .contact-layout > *, .hero-request-grid > * { min-width:0; }

/* Формы отправляются сервером; honeypot скрыт и исключён из фокуса. */
.form-honeypot { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); }
.form-consent { display:flex !important; align-items:flex-start; gap:10px; font-size:.82rem !important; line-height:1.5; margin:16px 0; }
.form-consent input { flex:0 0 20px; width:20px !important; height:20px; min-height:20px !important; margin:2px 0; }
.form-consent a,.article-content a { color:var(--brand); text-decoration:underline; text-underline-offset:3px; }
.form-result { padding:12px; border-left:3px solid var(--brand); background:#edf6fc; color:var(--ink); }
.hero-request-strip .hero-form-inline { height:auto !important; min-height:0 !important; aspect-ratio:auto !important; }
.hero-request-strip .hero-request-grid { align-items:start !important; }
.metrics-note { color:#c7d9e8; font-size:.72rem; line-height:1.5; padding-bottom:14px; margin-top:0; }
.policy { max-width:960px; margin:auto; padding:130px 24px 80px; }
.policy-card { border:1px solid var(--line); border-radius:24px; padding:32px; }
.policy h1 { font-size:clamp(2.1rem,6vw,4.5rem); }
.policy p { line-height:1.75; }
.policy-links { text-align:center; padding:16px 16px 28px; font-size:.85rem; }
.policy-links a { display:inline-block; padding:12px 4px; text-decoration:underline; }
.policy-links span { margin:0 8px; }
.post-summary { padding:26px 0; border-bottom:1px solid var(--line); }
.post-summary p { line-height:1.7; }
.article-content { overflow-wrap:anywhere; }
.article-content table { width:100%; border-collapse:collapse; }
.article-content th,.article-content td { border:1px solid var(--line); padding:10px; }
.article-content pre { overflow:auto; padding:18px; background:var(--soft); }
.article-content iframe { max-width:100%; }
.article-navigation { margin-top:40px; padding-top:24px; border-top:1px solid var(--line); }
.article-navigation .nav-links { display:flex; justify-content:space-between; gap:24px; }

@media (hover:hover) and (pointer:fine) {
  .if-crossfade:hover .ba-reveal { opacity:1; }
  .v42-hover-compare:hover .v42-tech { opacity:1; transform:none; }
  .v42-hover-compare:hover .v42-base { opacity:.16; }
  .v42-hover-compare:hover .v42-state-tech { opacity:1; transform:none; }
  .v42-hover-compare:hover .v42-state-base { opacity:0; }
}
@media (max-width:1020px) {
  .desktop-nav,.header-cta { display:none; }
  .header-grid { grid-template-columns:1fr auto; }
  .menu-toggle { display:block; min-width:44px; min-height:44px; }
  .service-topic-gallery { grid-auto-rows:190px; }
}
@media (max-width:900px) {
  .service-start-layout { grid-template-columns:minmax(0,1fr); }
  .service-news-card { width:100%; }
  .contact-layout { grid-template-columns:1fr; }
}
@media (max-width:782px) {
  .admin-bar .site-header { top:46px; }
}
/* Телефон: крупный первый кадр, затем горизонтальная лента предметных фото на всю ширину. */
@media (max-width:620px) {
  .service-topic-gallery,.service-topic-gallery.count-1,.service-topic-gallery.count-2,.service-topic-gallery.count-4 {
    grid-template-columns:minmax(0,1fr); grid-auto-rows:auto; gap:12px;
  }
  .service-topic-gallery[class*="count-"] figure,
  .service-topic-gallery[class*="count-"] figure:first-child,
  .service-topic-gallery[class*="count-"] figure:not(:first-child) {
    grid-column:1; grid-row:auto; height:auto; aspect-ratio:4/3;
  }
  .service-topic-gallery[class*="count-"] figure:first-child { aspect-ratio:5/4; }
  .service-topic-gallery img { object-fit:contain; }
  .service-topic-head h2 { font-size:clamp(2rem,9vw,2.8rem); line-height:1.08; }
  .service-mini-list li { font-size:.88rem; line-height:1.5; }
  .service-news-head { display:block; }
  .service-news-head h2 { margin-top:8px; }
  .service-news-item { grid-template-columns:70px minmax(0,1fr); }
  .service-news-item strong { font-size:.95rem; }
  .form-row { grid-template-columns:1fr; }
  input,select,textarea { font-size:16px !important; }
  .lead-form { padding:20px; }
  .arrows button { min-width:44px; min-height:44px; }
  .v25-gallery-footer { grid-template-columns:auto 1fr; }
  .v25-thumbs { grid-column:1/-1; }
  .v25-gallery-counter { justify-self:end; }
  .v25-thumb { flex-basis:66px; }
  #progetti .v25-before-after .v5-ba { aspect-ratio:4/5; }
  .v25-gallery-viewport { aspect-ratio:4/5 !important; }
  .v25-slide > img { object-fit:contain; }
  .policy-links { padding-bottom:90px; }
  .policy-card { padding:22px; }
  .page-security .subhero { min-height:640px; }
  .page-security .security-hero-media { background-size:auto 50% !important; background-position:100% top !important; background-color:#07131d; }
}
/* Доступность: останавливаем также SVG, счётчики и пульсацию карты. */
@media (prefers-reduced-motion:reduce) {
  html { scroll-behavior:auto; }
  *,*::before,*::after { animation:none !important; transition:none !important; scroll-behavior:auto !important; }
  .reveal.will-reveal:not(.show),.word-reveal .v42-word { opacity:1; transform:none; filter:none; }
}

/* Зарегистрированная переменная поддерживает плавное заполнение кольца. */
@property --ring { syntax:'<number>'; initial-value:0; inherits:false; }
@media (max-width:900px) {
  .signal-grid-v26 { grid-template-columns:repeat(3,minmax(0,1fr)); overflow:visible; }
  .metric-card-v26 { min-width:0; }
}
@media (max-width:620px) {
  .signal-grid-v26 { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .metric-card-v26 { min-height:114px; }
  .v25-gallery-viewport { aspect-ratio:4/3 !important; }
  .v25-slide > img { height:calc(100% - 65px); }
  .v25-slide-copy { bottom:8px; padding:8px 10px; }
  .v25-slide-copy h4 { font-size:1rem; margin:3px 0 0; }
}


/* V42.15: компактное меню с раскрытием категорий по нажатию. */
.mobile-menu-accordion { border-bottom:1px solid var(--line); }
.mobile-menu-accordion summary {
  display:flex; align-items:center; justify-content:space-between; gap:16px;
  min-height:52px; padding:12px 4px; cursor:pointer; list-style:none;
  font:750 1rem/1.3 Manrope,sans-serif; color:var(--ink);
}
.mobile-menu-accordion summary::-webkit-details-marker { display:none; }
.mobile-menu-accordion summary > span { transition:transform .2s ease; }
.mobile-menu-accordion[open] summary > span { transform:rotate(180deg); }
.mobile-menu-accordion[open] summary { color:var(--brand); }
.mobile-menu-accordion .mobile-subnav { padding:0 8px 12px 14px; margin:0; border-left:2px solid #d7e9f5; }
.mobile-menu-accordion .mobile-subnav a { min-height:44px; padding:11px 8px; font-size:.9rem; line-height:1.4; }
.gallery-swipe-hint { display:none; }

/* На телефоне и небольшом планшете фотографии перелистываются вбок.
   Следующий кадр немного виден, чтобы направление свайпа было понятно. */
@media (max-width:900px) {
  .gallery-swipe-hint { display:flex; justify-content:space-between; gap:16px; margin:0 0 12px; font-size:.8rem; line-height:1.4; color:var(--muted); }
  .dark-section .gallery-swipe-hint { color:#b7c6ce; }
  .service-topic-block { overflow:visible; }
  .service-topic-gallery[class*="count-"] {
    display:flex; gap:12px; overflow-x:auto; padding:3px 2px 14px;
    scroll-snap-type:x mandatory; scroll-padding-inline:2px;
    overscroll-behavior-x:contain; scrollbar-width:thin;
    scrollbar-color:#93b6ce transparent; align-items:stretch;
  }
  .service-topic-gallery[class*="count-"] figure,
  .service-topic-gallery[class*="count-"] figure:first-child,
  .service-topic-gallery[class*="count-"] figure:not(:first-child) {
    flex:0 0 86%; width:86%; height:auto; min-height:0!important;
    aspect-ratio:4/3; scroll-snap-align:start; border-radius:18px;
  }
  .service-topic-gallery.count-1 figure:first-child { flex-basis:100%; width:100%; }
  .service-topic-gallery img { object-fit:contain; }
  .v42-compare-grid {
    display:flex; gap:14px; overflow-x:auto; padding:4px 2px 16px;
    scroll-snap-type:x mandatory; overscroll-behavior-x:contain; scrollbar-width:thin;
  }
  .v42-compare-grid > article { flex:0 0 88%; min-width:0; scroll-snap-align:start; }
  .v42-compare-grid .v42-compare-media { aspect-ratio:4/3; }
}

.mobile-menu-accordion summary { -webkit-tap-highlight-color:transparent; }


/* V42.15.4 — на телефоне вместо набора графиков показываем одну сильную визуальную сцену. */
@media (max-width:900px){
  .signal-strip-v26{
    padding:12px 0!important;
    background:linear-gradient(145deg,#041523,#082c50 58%,#051b2e)!important;
  }
  .signal-strip-v26 .signal-grid-v26{display:none!important}
  .signal-strip-v26 .metrics-note{display:none!important}
  .mobile-smart-visual{
    display:block;
    width:min(100% - 24px,720px);
    aspect-ratio:16/9;
    margin:0 auto;
    border-radius:18px;
    background-image:
      linear-gradient(180deg,rgba(3,19,34,.02),rgba(3,19,34,.12)),
      url('../images/mobile/home-smart-visual.webp');
    background-size:cover;
    background-position:center;
    background-repeat:no-repeat;
    box-shadow:0 14px 34px rgba(0,10,22,.24),inset 0 0 0 1px rgba(255,255,255,.08);
    overflow:hidden;
  }
}
@media (max-width:620px){
  .signal-strip-v26{padding:9px 0!important}
  .mobile-smart-visual{
    width:calc(100% - 18px);
    border-radius:15px;
    background-position:48% center;
    box-shadow:0 10px 26px rgba(0,10,22,.22),inset 0 0 0 1px rgba(255,255,255,.07);
  }
}

/* V42.15.5 — живая мобильная визуальная сцена вместо графиков.
   Идея: оставить изображение лёгким, а движение добавить CSS-анимациями.
   Так мобильный блок остаётся быстрым, но выглядит «живым». */
@media (max-width:900px){
  .mobile-smart-visual{
    position:relative;
    isolation:isolate;
  }
  .mobile-smart-visual::after{
    content:"";
    position:absolute;
    inset:0;
    background:
      radial-gradient(circle at 24% 36%, rgba(71,164,255,.16), transparent 26%),
      linear-gradient(180deg, rgba(2,12,23,.04), rgba(2,12,23,.16));
    pointer-events:none;
    z-index:1;
  }
  .mobile-smart-visual > *{
    position:absolute;
    z-index:2;
    pointer-events:none;
  }

  /* Волна/полоса в верхней части изображения. */
  .msv-wave{
    left:14%;
    top:19%;
    width:58%;
    height:3px;
    border-radius:999px;
    overflow:hidden;
    background:linear-gradient(90deg, rgba(42,122,214,.16), rgba(105,195,255,.4), rgba(42,122,214,.12));
    box-shadow:0 0 0 1px rgba(124,205,255,.08), 0 0 14px rgba(83,175,255,.12);
    opacity:0;
  }
  .msv-wave::before,
  .msv-wave::after{
    content:"";
    position:absolute;
    inset:-5px 0;
    border-radius:inherit;
  }
  .msv-wave::before{
    background:linear-gradient(90deg, transparent 0%, rgba(215,245,255,0) 8%, rgba(215,245,255,.95) 48%, rgba(215,245,255,0) 92%, transparent 100%);
    width:32%;
    left:-34%;
    filter:blur(1.2px);
  }
  .msv-wave::after{
    background:radial-gradient(circle at center, rgba(124,205,255,.22), transparent 68%);
    transform:scaleY(8);
    opacity:.7;
  }

  /* Верхние кружки/узлы сигнала. */
  .msv-node{
    width:10px;
    height:10px;
    border-radius:50%;
    background:rgba(221,245,255,.96);
    box-shadow:0 0 0 3px rgba(255,175,49,.12), 0 0 0 1px rgba(255,199,82,.52), 0 0 12px rgba(78,183,255,.42);
    opacity:0;
    transform:scale(.5);
  }
  .msv-node::after{
    content:"";
    position:absolute;
    inset:-8px;
    border-radius:50%;
    border:1px solid rgba(255,188,64,.45);
    opacity:.0;
    transform:scale(.8);
  }
  .msv-node.n1{left:18.2%; top:12.7%}
  .msv-node.n2{left:28.5%; top:12.4%}
  .msv-node.n3{left:39.2%; top:13.2%}
  .msv-node.n4{left:49.8%; top:15.6%}
  .msv-node.n5{left:57.3%; top:20.6%}
  .msv-node.n6{left:63.7%; top:28.8%}

  /* Лёгкая анимация в зоне телефона — график внутри экрана. */
  .msv-phone-ui{
    left:22.4%;
    top:32.1%;
    width:10.8%;
    height:26%;
    border-radius:14px;
    overflow:hidden;
    opacity:0;
  }
  .msv-phone-glow{
    position:absolute;
    inset:8% 10%;
    border-radius:10px;
    background:linear-gradient(180deg, rgba(12,35,58,.12), rgba(39,116,196,.1));
    box-shadow:inset 0 0 0 1px rgba(140,210,255,.08);
  }
  .msv-phone-line{
    position:absolute;
    left:10%;
    top:18%;
    width:80%;
    height:48%;
    overflow:visible;
  }
  .msv-phone-line path{
    stroke:#77d4ff;
    stroke-width:4;
    stroke-linecap:round;
    stroke-linejoin:round;
    filter:drop-shadow(0 0 4px rgba(96,196,255,.42));
    stroke-dasharray:130;
    stroke-dashoffset:130;
  }
  .msv-phone-dot{
    left:73%;
    top:27%;
    width:6px;
    height:6px;
    border-radius:50%;
    background:#dff8ff;
    box-shadow:0 0 8px rgba(114,206,255,.85), 0 0 15px rgba(114,206,255,.32);
    opacity:0;
  }
  .msv-phone-bars{
    bottom:16%;
    width:9%;
    border-radius:999px 999px 3px 3px;
    background:linear-gradient(180deg, rgba(125,209,255,.95), rgba(61,146,242,.78));
    opacity:0;
    transform-origin:bottom center;
    box-shadow:0 0 6px rgba(92,175,255,.18);
  }
  .msv-phone-bars.b1{left:18%; height:18%}
  .msv-phone-bars.b2{left:32%; height:28%}
  .msv-phone-bars.b3{left:46%; height:38%}

  /* Тёплый свет в окнах дома. Позиции подобраны под текущую картинку. */
  .msv-window{
    background:linear-gradient(180deg, rgba(255,239,196,.18), rgba(255,203,116,.4));
    box-shadow:0 0 18px rgba(255,206,132,.12), inset 0 0 20px rgba(255,233,188,.12);
    opacity:0;
    border-radius:3px;
    mix-blend-mode:screen;
  }
  .msv-window.w1{left:45.2%; top:31.4%; width:20.8%; height:17.4%; border-radius:4px}
  .msv-window.w2{left:68.6%; top:35.8%; width:2.8%; height:10.4%; border-radius:3px}
  .msv-window.w3{left:74.9%; top:38.4%; width:2.3%; height:7.4%; border-radius:3px}
  .msv-window.w4{left:77.8%; top:37.5%; width:4.3%; height:8.3%; border-radius:3px}
  .msv-window.w5{left:45.4%; top:55.6%; width:33.7%; height:13.8%; border-radius:4px}

  .mobile-smart-visual.is-live .msv-wave{
    animation:msvWaveFade .6s ease forwards;
  }
  .mobile-smart-visual.is-live .msv-wave::before{
    animation:msvWaveRun 5.4s ease-in-out infinite .25s;
  }
  .mobile-smart-visual.is-live .msv-wave::after{
    animation:msvWaveBreath 3.8s ease-in-out infinite;
  }
  .mobile-smart-visual.is-live .msv-node{animation:msvNodeIn .7s cubic-bezier(.17,.84,.32,1) forwards}
  .mobile-smart-visual.is-live .msv-node::after{animation:msvNodePulse 4.6s ease-in-out infinite}
  .mobile-smart-visual.is-live .n1{animation-delay:.15s}.mobile-smart-visual.is-live .n1::after{animation-delay:.85s}
  .mobile-smart-visual.is-live .n2{animation-delay:.35s}.mobile-smart-visual.is-live .n2::after{animation-delay:1.05s}
  .mobile-smart-visual.is-live .n3{animation-delay:.55s}.mobile-smart-visual.is-live .n3::after{animation-delay:1.25s}
  .mobile-smart-visual.is-live .n4{animation-delay:.75s}.mobile-smart-visual.is-live .n4::after{animation-delay:1.45s}
  .mobile-smart-visual.is-live .n5{animation-delay:.95s}.mobile-smart-visual.is-live .n5::after{animation-delay:1.65s}
  .mobile-smart-visual.is-live .n6{animation-delay:1.15s}.mobile-smart-visual.is-live .n6::after{animation-delay:1.85s}

  .mobile-smart-visual.is-live .msv-phone-ui{animation:msvPhoneFloat 1.8s ease forwards .3s, msvPhoneBreath 5.6s ease-in-out infinite 2.1s}
  .mobile-smart-visual.is-live .msv-phone-line path{animation:msvDraw 1.9s cubic-bezier(.22,.88,.24,1) forwards .75s}
  .mobile-smart-visual.is-live .msv-phone-dot{animation:msvDotOn .35s ease forwards 1.6s, msvDotPulse 2.8s ease-in-out infinite 2s}
  .mobile-smart-visual.is-live .msv-phone-bars.b1{animation:msvBarGrow .8s cubic-bezier(.2,.9,.28,1) forwards .9s, msvBarFloat 4.2s ease-in-out infinite 1.8s}
  .mobile-smart-visual.is-live .msv-phone-bars.b2{animation:msvBarGrow .85s cubic-bezier(.2,.9,.28,1) forwards 1.05s, msvBarFloat 4.2s ease-in-out infinite 1.95s}
  .mobile-smart-visual.is-live .msv-phone-bars.b3{animation:msvBarGrow .95s cubic-bezier(.2,.9,.28,1) forwards 1.2s, msvBarFloat 4.2s ease-in-out infinite 2.1s}

  .mobile-smart-visual.is-live .msv-window.w1{animation:msvLightOn 1.1s ease forwards .55s, msvLightFlicker 5.6s ease-in-out infinite 1.9s}
  .mobile-smart-visual.is-live .msv-window.w2{animation:msvLightOn .95s ease forwards 1.15s, msvLightFlicker 5.2s ease-in-out infinite 2.25s}
  .mobile-smart-visual.is-live .msv-window.w3{animation:msvLightOn .9s ease forwards 1.35s, msvLightFlicker 5.1s ease-in-out infinite 2.45s}
  .mobile-smart-visual.is-live .msv-window.w4{animation:msvLightOn .9s ease forwards 1.52s, msvLightFlicker 5.2s ease-in-out infinite 2.62s}
  .mobile-smart-visual.is-live .msv-window.w5{animation:msvLightOn 1.25s ease forwards 1.85s, msvLightFlicker 5.8s ease-in-out infinite 3.1s}

  @keyframes msvWaveFade{from{opacity:0}to{opacity:.92}}
  @keyframes msvWaveRun{0%{left:-34%;opacity:0}8%{opacity:.9}50%{opacity:1}92%{opacity:.45}100%{left:104%;opacity:0}}
  @keyframes msvWaveBreath{0%,100%{opacity:.35}50%{opacity:.78}}
  @keyframes msvNodeIn{0%{opacity:0;transform:scale(.45)}70%{opacity:1;transform:scale(1.08)}100%{opacity:1;transform:scale(1)}}
  @keyframes msvNodePulse{0%,100%{opacity:.0;transform:scale(.72)}32%{opacity:.42;transform:scale(1)}65%{opacity:.12;transform:scale(1.24)}}
  @keyframes msvPhoneFloat{0%{opacity:0;transform:translateY(10px) scale(.96)}100%{opacity:1;transform:translateY(0) scale(1)}}
  @keyframes msvPhoneBreath{0%,100%{transform:translateY(0)}50%{transform:translateY(-1.5px)}}
  @keyframes msvDraw{from{stroke-dashoffset:130}to{stroke-dashoffset:0}}
  @keyframes msvDotOn{from{opacity:0;transform:scale(.6)}to{opacity:1;transform:scale(1)}}
  @keyframes msvDotPulse{0%,100%{box-shadow:0 0 6px rgba(114,206,255,.55), 0 0 12px rgba(114,206,255,.16)}50%{box-shadow:0 0 10px rgba(114,206,255,.9), 0 0 18px rgba(114,206,255,.34)}}
  @keyframes msvBarGrow{0%{opacity:0;transform:scaleY(.18)}100%{opacity:.95;transform:scaleY(1)}}
  @keyframes msvBarFloat{0%,100%{transform:scaleY(1)}50%{transform:scaleY(1.08)}}
  @keyframes msvLightOn{0%{opacity:0}100%{opacity:1}}
  @keyframes msvLightFlicker{0%,100%{opacity:.84}12%{opacity:.92}22%{opacity:.82}50%{opacity:.95}66%{opacity:.88}82%{opacity:.96}}
}

@media (max-width:620px){
  .msv-wave{left:13%; top:18%; width:60%}
  .msv-node{width:9px; height:9px}
  .msv-phone-ui{left:22.2%; top:31.8%; width:11.5%; height:26.6%}
}

@media (prefers-reduced-motion: reduce){
  .mobile-smart-visual .msv-wave,
  .mobile-smart-visual .msv-node,
  .mobile-smart-visual .msv-phone-ui,
  .mobile-smart-visual .msv-window{opacity:1}
  .mobile-smart-visual .msv-wave::before,
  .mobile-smart-visual .msv-wave::after,
  .mobile-smart-visual .msv-node::after,
  .mobile-smart-visual .msv-phone-line path,
  .mobile-smart-visual .msv-phone-dot,
  .mobile-smart-visual .msv-phone-bars,
  .mobile-smart-visual .msv-window,
  .mobile-smart-visual .msv-phone-ui{animation:none !important}
  .mobile-smart-visual .msv-phone-line path{stroke-dashoffset:0}
  .mobile-smart-visual .msv-phone-dot{opacity:1}
  .mobile-smart-visual .msv-phone-bars{opacity:.95; transform:scaleY(1)}
  .mobile-smart-visual .msv-window{opacity:.88}
}


/* V42.15.6 — единая логика меню.
   Первый пункт каждого мобильного подраздела ведёт на саму страницу услуги. */
.mobile-menu-accordion .mobile-subnav .mobile-subnav-main{
  font-weight:900!important;
  color:var(--ink)!important;
  font-size:.95rem!important;
  padding-top:13px!important;
  padding-bottom:12px!important;
}
.mobile-menu-accordion .mobile-subnav .mobile-subnav-main::after{
  content:"→";
  margin-left:7px;
  color:var(--brand);
  font-weight:900;
}

/* V42.15.7 — адаптация новых блоков. */
@media (max-width:900px){
  .service-prose-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .service-prose-visual-grid{grid-template-columns:1fr}
  .service-prose-image{max-width:720px}
  .service-prose-image img{aspect-ratio:16/9}
  .article-cta-panel{align-items:flex-start;flex-direction:column}
}
@media (max-width:620px){
  .territory-note{margin:11px 0 0;font-size:.82rem}
  .territory-note strong{font-size:.9rem}
  .topic-article-callout{margin-top:20px;padding:18px;border-radius:18px}
  .topic-article-callout h3{font-size:1.25rem}
  .topic-article-callout p{font-size:.88rem}
  .service-prose-grid,.service-prose-grid.compact-copy{grid-template-columns:1fr}
  .service-prose-grid article{padding:18px;border-radius:17px}
  .service-prose-image{border-radius:18px}
  .article-cta-panel{margin-top:34px;padding:22px;border-radius:20px}
  .article-cta-panel h2{font-size:1.65rem}
  .article-sources{margin-top:34px;padding-top:22px}
}

/* V42.15.8: explicit common layout, and map copy in normal document flow. */
#richiesta-rapida .hero-request-copy {
  height:auto !important;
  min-height:0 !important;
  overflow:visible;
}
#richiesta-rapida .hero-request-copy > .territory-note {
  display:grid !important;
  max-width:none;
  opacity:1;
  transform:none;
  flex-shrink:0;
}
.service-fragment-nav > .service-start-layout {
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(320px,390px);
  grid-template-areas:"intro news";
  gap:26px;
  align-items:start;
}
.service-start-layout > .service-start-main { grid-area:intro; }
.service-start-layout > .service-news-card { grid-area:news; width:100%; margin:0; }
.service-intro-copy h2 { font:800 clamp(1.4rem,2.3vw,2rem)/1.18 Manrope,sans-serif; margin:12px 0; }
.service-intro-copy p { color:var(--muted); line-height:1.65; margin:12px 0 0; }
@media(max-width:900px) {
  .service-fragment-nav > .service-start-layout {
    grid-template-columns:minmax(0,1fr);
    grid-template-areas:"intro" "news";
    gap:20px;
  }
}


/* V42.15.9 — responsive technical visual. */
@media (max-width:900px){
  .ftv-product-explainer-grid{
    grid-template-columns:1fr;
    gap:24px;
    padding:24px;
  }
  .ftv-product-explainer-visual{
    width:min(100%,680px);
    margin-inline:auto;
  }
}
@media (max-width:620px){
  .ftv-product-explainer-grid{
    gap:20px;
    padding:18px;
    border-radius:20px;
  }
  .ftv-product-explainer-copy h2{font-size:1.65rem}
  .ftv-product-explainer-copy p,
  .ftv-product-explainer-copy .ftv-product-points li{font-size:.9rem}
  .ftv-product-explainer-visual{border-radius:16px}
  .ftv-product-explainer-visual figcaption{font-size:.68rem}
}

/* Elementor keeps the theme's full-width section geometry. */
#main > .elementor > .elementor-section { margin:0; padding:0; }
#main > .elementor > .elementor-section > .elementor-container { max-width:none; }
#main > .elementor > .elementor-section > .elementor-container > .elementor-column > .elementor-widget-wrap { padding:0; }
.elementor-widget[class*="elementor-widget-if-"] { margin:0; width:100%; }
.elementor-editor-active .reveal,
.elementor-editor-active [class*="v42-word"] { opacity:1 !important; transform:none !important; }
.elementor-editor-active .site-header { pointer-events:none; }

/* V42.15.12: Elementor's generic img height:auto must not shrink the Home background. */
.page-home .hero > picture.hero-media {
  position:absolute;
  inset:0;
  display:block;
  width:100%;
  height:100%;
}
.page-home .hero > picture.hero-media > img {
  position:absolute;
  inset:0;
  display:block;
  width:100%;
  height:100%;
  max-width:none;
  object-fit:cover;
}
