/* Homepage: elementi dinamici (solo CSS/vanilla JS, rispettano reduced-motion) */
.hero{position:relative;overflow:hidden}.hero>.container{position:relative;z-index:1}
.hero-fx{position:absolute;inset:0;pointer-events:none;z-index:0}
.hero-blob{position:absolute;width:520px;height:520px;border-radius:50%;filter:blur(90px);opacity:.32;will-change:transform}
.hero-blob.b1{background:#2f6fe4;left:-140px;top:-160px;animation:fxDrift 18s ease-in-out infinite alternate}
.hero-blob.b2{background:var(--gold);right:-160px;bottom:-220px;opacity:.18;animation:fxDrift 22s ease-in-out infinite alternate-reverse}
.hero-grid-bg{position:absolute;inset:0;background-image:linear-gradient(#ffffff0d 1px,transparent 1px),linear-gradient(90deg,#ffffff0d 1px,transparent 1px);background-size:56px 56px;-webkit-mask-image:radial-gradient(ellipse at 60% 40%,#000 10%,transparent 70%);mask-image:radial-gradient(ellipse at 60% 40%,#000 10%,transparent 70%);animation:fxGrid 30s linear infinite}
@keyframes fxDrift{to{transform:translate(120px,80px) scale(1.15)}}
@keyframes fxGrid{to{background-position:56px 56px,56px 56px}}
.hero-rotator{font-family:var(--mono);font-size:13px;letter-spacing:.06em;text-transform:uppercase;color:#a9b3c3;margin:18px 0 0!important;display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.hr-w{display:inline-grid;color:var(--gold-light);border:1px solid #ffffff22;border-radius:30px;padding:4px 14px;background:#ffffff08}
.hr-w>span{grid-area:1/1;opacity:0;animation:fxWord 10s infinite}
.hr-w>span:nth-child(2){animation-delay:2.5s}.hr-w>span:nth-child(3){animation-delay:5s}.hr-w>span:nth-child(4){animation-delay:7.5s}
@keyframes fxWord{0%{opacity:0;transform:translateY(8px)}4%,22%{opacity:1;transform:none}26%,100%{opacity:0;transform:translateY(-8px)}}
.system-center{animation:fxGlow 3.6s ease-in-out infinite}
@keyframes fxGlow{50%{box-shadow:0 0 0 10px #c9a46a14,0 0 40px #2f6fe455}}
/* Card: glow che segue il puntatore + tilt */
.fx-tilt{position:relative;transform:perspective(900px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));transition:transform .25s ease,box-shadow .25s ease}
.fx-tilt:after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:0;transition:opacity .25s;background:radial-gradient(260px circle at var(--mx,50%) var(--my,50%),#2f6fe41f,transparent 65%)}
.fx-tilt:hover:after{opacity:1}
.solution-icon,.tool-icon{transition:transform .4s cubic-bezier(.2,.7,.2,1)}
.solution-card:hover .solution-icon,.tool-card:hover .tool-icon{transform:translateY(-3px) rotate(-8deg) scale(1.08)}
.solution-card.is-visible .solution-icon{animation:fxPop .7s cubic-bezier(.2,.7,.2,1) both;animation-delay:var(--reveal-delay,0ms)}
@keyframes fxPop{0%{transform:scale(.4) rotate(-30deg);opacity:0}70%{transform:scale(1.12)}100%{transform:none;opacity:1}}
/* SERP */
.product-logo img{animation:fxFloat 6s ease-in-out infinite}
@keyframes fxFloat{50%{transform:translateY(-8px)}}
.fx-on .dashboard .progress i{transform-origin:left;transform:scaleX(0);transition:transform 1.2s cubic-bezier(.2,.7,.2,1) .2s}
.fx-on .dashboard .dash-stats i{transform-origin:left;transform:scaleX(0);transition:transform 1s cubic-bezier(.2,.7,.2,1) .1s}
.fx-on .dashboard.fx-in .progress i,.fx-on .dashboard.fx-in .dash-stats i{transform:none}
.fx-on .dashboard .table-row:not(.table-head){opacity:0;transform:translateY(8px);transition:.5s}
.fx-on .dashboard.fx-in .table-row:not(.table-head){opacity:1;transform:none}
.fx-on .dashboard.fx-in .table-row:nth-child(4){transition-delay:.15s}.fx-on .dashboard.fx-in .table-row:nth-child(5){transition-delay:.3s}.fx-on .dashboard.fx-in .table-row:nth-child(6){transition-delay:.45s}
/* Casi */
.grano-ring{animation:fxSpin 40s linear infinite}.industrial-lines{animation:fxGrid 20s linear infinite}
.case-card:hover .commerce-tile{transform:translateY(-6px) rotate(-3deg);transition:transform .5s}
@keyframes fxSpin{to{transform:rotate(360deg)}}
/* Strumenti: nastro scorrevole */
.fx-marquee{overflow:hidden;margin:0 0 26px;-webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.fx-marquee-track{display:flex;gap:12px;width:max-content;animation:fxMarq 40s linear infinite}
.fx-marquee:hover .fx-marquee-track{animation-play-state:paused}
.fx-marquee span{font-family:var(--mono);font-size:12px;letter-spacing:.05em;padding:7px 14px;border:1px solid var(--line);border-radius:30px;white-space:nowrap;color:var(--ink)}
.fx-marquee span:before{content:"◆ ";color:var(--gold)}
@keyframes fxMarq{to{transform:translateX(-50%)}}
/* Metodo: linea di avanzamento */
.method-steps{position:relative}
.fx-on .method-steps:before{content:"";position:absolute;left:0;right:0;top:0;height:2px;background:linear-gradient(90deg,var(--gold),#2f6fe4);transform-origin:left;transform:scaleX(var(--p,0));transition:transform .15s linear}
.fx-on .method-steps>div{transition:opacity .4s,transform .4s;opacity:.35;transform:translateY(6px)}
.fx-on .method-steps>div.fx-lit{opacity:1;transform:none}
/* Bottoni: riflesso */
.button{position:relative;overflow:hidden}
.button:after{content:"";position:absolute;top:0;bottom:0;left:-60%;width:40%;background:linear-gradient(100deg,transparent,#ffffff55,transparent);transform:skewX(-20deg);animation:fxShine 5s ease-in-out infinite;pointer-events:none}
@keyframes fxShine{0%,70%{left:-60%}100%{left:130%}}
.final-cta{position:relative;overflow:hidden}.final-cta:before{content:"";position:absolute;width:600px;height:600px;right:-200px;top:-300px;border-radius:50%;background:radial-gradient(#2f6fe433,transparent 70%);animation:fxDrift 16s ease-in-out infinite alternate}.final-cta>.container{position:relative}
@media(prefers-reduced-motion:reduce){.hero-blob,.hero-grid-bg,.system-center,.product-logo img,.grano-ring,.industrial-lines,.fx-marquee-track,.button:after,.final-cta:before,.solution-card .solution-icon{animation:none!important}.hr-w>span{animation:none;opacity:0}.hr-w>span:first-child{opacity:1}.fx-tilt{transform:none!important}}
/* Divisore hero → chi siamo */
.sec-divider{background:var(--navy);line-height:0;margin:-1px 0}
.sec-divider svg{display:block;width:100%;height:clamp(48px,7vw,110px)}
.sd-a{fill:var(--navy)}.sd-b{fill:#0b3e6c}.sd-l{fill:none;stroke:var(--gold);stroke-width:3;stroke-dasharray:1600;stroke-dashoffset:1600;animation:sdDraw 2.4s ease-out .3s forwards}
@keyframes sdDraw{to{stroke-dashoffset:0}}
#chi-siamo.about-section{background:radial-gradient(ellipse at 80% 40%,#ffffff14,transparent 55%),#0b3e6c;border-top:0}
/* Mini anteprime animate (dati illustrativi) */
.mk{position:relative;height:92px;margin:14px 0 12px;border:1px solid var(--line);border-radius:10px;background:#fff;padding:22px 10px 8px;overflow:hidden;font:500 10px/1.2 "IBM Plex Mono",monospace;color:var(--muted);box-shadow:0 6px 18px #0b3e6c12}
.mk-t{position:absolute;top:6px;left:10px;font-size:9px;letter-spacing:.06em;text-transform:uppercase}
.mk-bars{display:flex;align-items:flex-end;gap:6px;height:56px}.mk-bars i{flex:1;height:var(--h);background:linear-gradient(#397fbe,#0b3e6c);border-radius:3px 3px 0 0;transform-origin:bottom;animation:mkGrow 3.2s ease-in-out var(--d) infinite}
@keyframes mkGrow{0%,100%{transform:scaleY(.35)}50%{transform:scaleY(1)}}
.mk-up{position:absolute;top:6px;right:10px;color:#1f9d6b;animation:mkBlink 1.6s infinite}
@keyframes mkBlink{50%{opacity:.3}}
.mk-nodes{position:relative;display:flex;justify-content:space-between;align-items:center;height:56px}.mk-nodes:before{content:"";position:absolute;left:8%;right:8%;top:50%;height:2px;background:var(--line)}
.mk-nodes em{position:relative;font-style:normal;background:var(--paper);border:1px solid var(--line);border-radius:6px;padding:5px 6px;color:var(--ink)}
.mk-dot{position:absolute;top:calc(50% - 5px);left:8%;width:10px;height:10px;border-radius:50%;background:#397fbe;box-shadow:0 0 0 4px #397fbe33;animation:mkMove 3s ease-in-out infinite}
@keyframes mkMove{0%{left:8%}45%,55%{left:calc(50% - 5px)}100%{left:calc(92% - 10px)}}
.mk-row{display:flex;align-items:center;gap:6px;margin:4px 0}.mk-row small{width:72px;flex:none}.mk-row i{flex:1;height:7px;border-radius:4px;background:var(--paper);position:relative;overflow:hidden}
.mk-row i:after{content:"";position:absolute;inset:0;width:var(--p);background:#397fbe;border-radius:4px;transform-origin:left;animation:mkFill 3.5s ease-out var(--d,0s) infinite}
@keyframes mkFill{0%{transform:scaleX(0)}60%,100%{transform:scaleX(1)}}
.mk-cols{position:relative;display:grid;grid-template-columns:repeat(3,1fr);gap:5px;height:58px}.mk-cols div{background:var(--paper);border-radius:5px;padding:3px 4px}
.mk-card{position:absolute;top:18px;left:4px;width:calc(33.3% - 12px);height:14px;border-radius:4px;background:#fff;border:1px solid #397fbe;border-left:4px solid #397fbe;animation:mkKan 6s ease-in-out infinite}
.mk-card.c2{top:36px;border-left-color:#1f9d6b;animation-delay:-3s}
@keyframes mkKan{0%,20%{left:4px}35%,55%{left:calc(33.3% + 3px)}70%,100%{left:calc(66.6% + 2px)}}
.mk-step{display:flex;gap:3px;margin-top:8px}.mk-step b{flex:1;height:4px;border-radius:2px;background:#c9def0;animation:mkStep 4.5s infinite}
.mk-step b:nth-child(2){animation-delay:.3s}.mk-step b:nth-child(3){animation-delay:.6s}.mk-step.s2 b{animation-delay:1.2s}.mk-step.s2 b+b{animation-delay:1.5s}.mk-step.s2 b+b+b{animation-delay:1.8s}.mk-step.s3 b{animation-delay:2.4s}.mk-step.s3 b+b{animation-delay:2.7s}.mk-step.s3 b+b+b{animation-delay:3s}
@keyframes mkStep{0%,10%{background:#c9def0}20%,90%{background:#397fbe}100%{background:#c9def0}}
.mk-tool{height:64px;padding:10px;display:flex;align-items:center;gap:6px}
.mk-ok{margin-left:auto;padding:4px 7px;border-radius:5px;background:#1f9d6b;color:#fff;opacity:0;animation:mkOk 4s infinite}
@keyframes mkOk{0%,55%{opacity:0;transform:translateY(4px)}65%,90%{opacity:1;transform:none}100%{opacity:0}}
.mk-pg{width:22px;height:30px;border:1px solid #397fbe;border-radius:3px;background:repeating-linear-gradient(#fff 0 5px,#c9def0 5px 6px);animation:mkMerge 4s infinite}.mk-pg.p2{margin-left:-10px;animation-delay:.15s}.mk-pg.p3{margin-left:-10px;animation-delay:.3s}
@keyframes mkMerge{0%,15%{transform:translateX(0)}45%,90%{transform:translateX(-8px)}100%{transform:none}}
.mk-f{height:12px;width:60px;border-radius:3px;background:var(--paper);position:relative;overflow:hidden}.mk-f:after{content:"";position:absolute;inset:3px;width:0;background:#397fbe66;animation:mkType 4s steps(6) infinite}.mk-f.f2:after{animation-delay:.6s}
@keyframes mkType{0%,10%{width:0}45%,90%{width:calc(100% - 6px)}100%{width:0}}
.mk-q{color:var(--ink)}.mk-opt{width:18px;height:18px;display:grid;place-items:center;border:1px solid var(--line);border-radius:4px;animation:mkPick 4s infinite}.mk-opt.o2{animation-delay:.6s}.mk-opt.o3{animation:none}
@keyframes mkPick{0%,20%{background:#fff;color:inherit}30%,45%{background:#397fbe;color:#fff}55%,100%{background:#fff;color:inherit}}
.mk-qr{width:38px;height:38px;background:conic-gradient(from 90deg,#0b3e6c 25%,#fff 0 50%,#0b3e6c 0 75%,#fff 0) 0 0/9px 9px;border:3px solid #0b3e6c;border-radius:3px;animation:mkScan 4s infinite}
@keyframes mkScan{0%,20%{clip-path:inset(0 100% 0 0)}60%,100%{clip-path:inset(0)}}
.mk-ck{padding:5px 7px;border-radius:5px;background:var(--navy);color:#fff;animation:mkUp 4s infinite}
@keyframes mkUp{0%,10%{transform:translateY(30px);opacity:0}30%,90%{transform:none;opacity:1}100%{opacity:0}}
@media(prefers-reduced-motion:reduce){.mk *,.mk *:after,.sd-l{animation:none!important}.sd-l{stroke-dashoffset:0}.mk-ok{opacity:1}}
/* Loghi clienti */
.clients-band{background:linear-gradient(180deg,#0b3e6c,var(--navy));padding:56px 0 64px;overflow:hidden}
.clients-band h2{margin:0 0 28px;font-size:clamp(24px,3vw,36px)}
.clients-marquee{overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent);mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent)}
.clients-track{display:flex;width:max-content}
.clients-group{display:flex;flex:none;list-style:none;margin:0;padding:0;animation:clMarq 36s linear infinite}
.clients-marquee:hover .clients-group{animation-play-state:paused}
.clients-group li{flex:none;display:flex;align-items:center;padding:0 clamp(28px,4vw,56px)}
.clients-group img{height:clamp(56px,7vw,84px);width:auto;opacity:.85;filter:drop-shadow(0 2px 8px #0006);transition:opacity .3s}
.clients-group li:hover img{opacity:1}
@keyframes clMarq{from{transform:translateX(0)}to{transform:translateX(-100%)}}
@media(prefers-reduced-motion:reduce){.clients-group{animation:none!important;flex-wrap:wrap;justify-content:center;row-gap:24px;flex:1}.clients-track{width:auto}.clients-group[aria-hidden]{display:none}.clients-marquee{-webkit-mask-image:none;mask-image:none}}
.clients-group img.logo-sm{height:clamp(40px,5vw,60px)}.clients-group img.logo-xs{height:clamp(18px,2.2vw,26px)}
/* Pagine servizio (audit, visita, partner) */
.fx-page .audit-hero{position:relative;overflow:hidden;background:var(--navy);color:#fff}
.fx-page .audit-hero>.container{position:relative;z-index:1}
.fx-page .audit-lead h1,.fx-page .audit-lead li{color:#fff}.fx-page .audit-lead p{color:#c9def0}
.fx-page .audit-lead ul li:before{color:var(--gold)}
.fx-page .audit-form-card{box-shadow:0 30px 70px #0008}
.fx-page .audit-lead .mk{max-width:440px;margin-top:28px}
.sec-divider.to-light .sd-b{fill:#fff}
.fx-page .sec-divider+section{padding-top:48px}
.fx-page .audit-details+.audit-details{background:var(--paper)}
.fx-page .outcomes-list li{border-radius:12px;transition:transform .2s,box-shadow .2s}
.fx-page .outcomes-list li.fx-tilt{transform:perspective(800px) rotateX(var(--rx,0)) rotateY(var(--ry,0))}
.fx-page .analysis-list li{transition:transform .2s,color .2s}.fx-page .analysis-list li:hover{transform:translateX(6px);color:#397fbe}
.fx-page .audit-repeat{background:linear-gradient(180deg,var(--paper),#e4eff9)}
.fx-page .audit-form-card h2{color:var(--ink)}
.clients-tp{margin-top:28px;text-align:center}
