/* Живая линия процесса и заголовок «задача → решение» */
.process-line .flow-canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:1}
.scan-text .solution{background:none;-webkit-text-fill-color:#f4f3ea;color:#f4f3ea}
@media(forced-colors:active){.scan-text .solution{-webkit-text-fill-color:CanvasText}}

/* Единый фон страницы: свечение закреплено за окном, а не за блоками, поэтому нет границ между секциями */
body:has(#home-main:not([hidden]))::before{content:'';position:fixed;inset:0;z-index:-1;pointer-events:none;
  background:radial-gradient(ellipse 65% 45% at 51% 112%,#eda048b0 0,transparent 72%),radial-gradient(ellipse 55% 55% at 0 100%,#8d421880 0,transparent 70%),radial-gradient(ellipse 45% 40% at 85% 105%,#a4733270 0,transparent 70%),radial-gradient(ellipse 40% 30% at 60% 70%,#25482b30 0,transparent 70%);
  animation:glow-breathe 14s ease-in-out infinite alternate}
#home-main .dark-hero,#home-main .approach,#home-main .contact{background:transparent}
#home-main .hero-glow,#home-main .contact:before{display:none}
#home-main .hero-grid{-webkit-mask-image:linear-gradient(#000 40%,transparent);mask-image:linear-gradient(#000 40%,transparent)}
#home-main .dark-hero{padding-bottom:24px}
@media(prefers-reduced-motion:reduce){body:has(#home-main:not([hidden]))::before{animation:none}}
body:has(#home-main:not([hidden])){background:transparent}

/* 3. Полоски: шаг привязан к размеру шрифта, штрихи букв читаются лучше */
#home-main .scan-text{--p:max(.034em,2.6px);
  background-image:repeating-linear-gradient(0deg,#f4f3ea 0,#f4f3ea calc(var(--p)*.62),transparent calc(var(--p)*.62),transparent var(--p))}
@media(max-width:600px){#home-main .scan-text{background-image:repeating-linear-gradient(0deg,#f4f3ea 0,#f4f3ea calc(var(--p)*.62),transparent calc(var(--p)*.62),transparent var(--p))}}

/* 1. Лёгкий старт заголовка: строка «сканируется» сверху вниз, затем решение становится сплошным */
#home-main .scan-text{position:relative}
html:not(.no-intro) #home-main .scan-text .task{animation:scan-reveal .9s cubic-bezier(.23,1,.32,1) both}
html:not(.no-intro) #home-main .scan-text .solution{animation:solve .7s ease-out .85s both}
html:not(.no-intro) #home-main .scan-text::after{content:'';position:absolute;left:0;right:0;top:0;height:2px;background:#7bcc9c;box-shadow:0 0 14px #7bcc9c;opacity:0;pointer-events:none;animation:scan-bar 1.1s cubic-bezier(.23,1,.32,1) both}
@keyframes scan-reveal{from{clip-path:inset(0 0 100% 0)}to{clip-path:inset(0 0 0 0)}}
@keyframes solve{from{-webkit-text-fill-color:transparent;color:transparent}to{-webkit-text-fill-color:#f4f3ea;color:#f4f3ea}}
@keyframes scan-bar{0%{top:0;opacity:1}85%{opacity:1}100%{top:100%;opacity:0}}
@media(prefers-reduced-motion:reduce){html #home-main .scan-text .task,html #home-main .scan-text .solution,html #home-main .scan-text::after{animation:none}}

/* 2. Свечение смещается за курсором и прокруткой */
body:has(#home-main:not([hidden]))::before{
  background:radial-gradient(ellipse 65% 45% at calc(51% + var(--gx,0)*9%) calc(112% - var(--gs,0)*14%),#eda048b0 0,transparent 72%),radial-gradient(ellipse 55% 55% at 0 100%,#8d421880 0,transparent 70%),radial-gradient(ellipse 45% 40% at calc(85% - var(--gx,0)*6%) 105%,#a4733270 0,transparent 70%),radial-gradient(ellipse 40% 30% at calc(60% + var(--gx,0)*5%) calc(70% + var(--gs,0)*8%),#25482b30 0,transparent 70%)}
