/* Sprint 3 - ambient AI network for the home hero */
.hero-image-visual{position:relative;overflow:visible}
.hero-ai-network{position:absolute;inset:-8% -6% -10% -6%;z-index:0;pointer-events:none;overflow:hidden;opacity:.72;mask-image:linear-gradient(to right,transparent 0,#000 17%,#000 100%)}
.hero-ai-network canvas{position:absolute;inset:0;width:100%;height:100%}
.hero-ai-halo{position:absolute;z-index:1;width:220px;height:220px;margin:-110px 0 0 -110px;border-radius:50%;pointer-events:none;opacity:0;background:radial-gradient(circle,rgba(87,221,255,.12),rgba(101,111,255,.045) 38%,transparent 70%);filter:blur(6px);transition:opacity .25s ease}
.hero-image-visual:hover .hero-ai-halo{opacity:1}
.hero-data-pulse{position:absolute;z-index:3;top:23%;right:17%;width:27%;height:28%;pointer-events:none;overflow:visible;opacity:.74}
.hero-data-pulse__path{fill:none;stroke:rgba(119,239,255,.18);stroke-width:1.1;stroke-dasharray:3 7}
.hero-data-pulse__dot{fill:#8ff8ff;filter:drop-shadow(0 0 5px rgba(109,238,255,.9));offset-path:path('M 6 18 C 42 1, 80 38, 130 44 S 202 72, 244 91');animation:dataTravel 5.2s cubic-bezier(.4,0,.2,1) infinite}
.hero-data-pulse__dot--2{animation-delay:2.6s;opacity:.55}
.hero-ambient-code{position:absolute;inset:0;z-index:1;pointer-events:none;font:600 clamp(10px,.9vw,14px)/1 ui-monospace,SFMono-Regular,Consolas,monospace;color:rgba(156,239,255,.20)}
.hero-ambient-code span{position:absolute;opacity:0;animation:ambientFloat 11s ease-in-out infinite}
.hero-ambient-code span:nth-child(1){left:8%;top:13%;animation-delay:0s}.hero-ambient-code span:nth-child(2){right:3%;top:43%;animation-delay:2.3s}.hero-ambient-code span:nth-child(3){left:14%;bottom:10%;animation-delay:4.7s}.hero-ambient-code span:nth-child(4){right:13%;bottom:7%;animation-delay:7s}
.hero-scanline{position:absolute;z-index:2;left:1%;right:1%;top:0;height:1px;opacity:0;background:linear-gradient(90deg,transparent,rgba(113,236,255,.35),transparent);box-shadow:0 0 18px rgba(100,225,255,.22);animation:heroScan 15s ease-in-out infinite;pointer-events:none}
.hero-laptop-stage,.hero-ai{z-index:4}
@keyframes dataTravel{0%,12%{offset-distance:0%;opacity:0}20%{opacity:1}72%{opacity:.85}88%,100%{offset-distance:100%;opacity:0}}
@keyframes ambientFloat{0%,100%{opacity:0;transform:translateY(8px)}12%,58%{opacity:1;transform:translateY(0)}75%{opacity:0;transform:translateY(-8px)}}
@keyframes heroScan{0%,68%{top:0;opacity:0}72%{opacity:.35}88%{top:100%;opacity:.18}92%,100%{top:100%;opacity:0}}
@media(max-width:900px){.hero-ai-network,.hero-ai-halo,.hero-data-pulse,.hero-ambient-code,.hero-scanline{display:none}}
@media(prefers-reduced-motion:reduce){.hero-ai-network,.hero-ai-halo,.hero-data-pulse,.hero-ambient-code,.hero-scanline{display:none!important}}

/* Sprint 3 shared treatment for all internal-page heroes */
.ai-sprint3-hero{position:relative;isolation:isolate;overflow:hidden}
.ai-sprint3-hero>.hero-ai-network{inset:0;z-index:0;opacity:.48;mask-image:linear-gradient(90deg,rgba(0,0,0,.35),#000 28%,#000 72%,rgba(0,0,0,.35))}
.ai-sprint3-hero>.hero-ai-halo{z-index:1;width:260px;height:260px;margin:-130px 0 0 -130px;opacity:0}
.ai-sprint3-hero:hover>.hero-ai-halo{opacity:.75}
.ai-sprint3-hero>.hero-ambient-code{z-index:1;inset:0;color:rgba(156,239,255,.14)}
.ai-sprint3-hero>.hero-scanline{z-index:1;left:0;right:0}
.ai-sprint3-hero>*:not(.hero-ai-network):not(.hero-ai-halo):not(.hero-ambient-code):not(.hero-scanline){position:relative;z-index:2}
.ai-sprint3-hero.section-light>.hero-ai-network,.ai-sprint3-hero[class*="light"]>.hero-ai-network{opacity:.24;mix-blend-mode:multiply}
.ai-sprint3-hero.section-light>.hero-ambient-code,.ai-sprint3-hero[class*="light"]>.hero-ambient-code{color:rgba(22,90,120,.14)}
