/* Movimento delle pagine prodotto: la pagina Prodotti (/prodotti/, /products/, /proizvodi/)
 * e, con .pm-single, la pagina di ciascun prodotto (Xaflo, Migrator, StockAI, Atlas, in ogni lingua).
 * Si anima solo transform, translate, rotate, scale e opacity: niente layout né ridisegno a ogni fotogramma.
 * Gli stati nascosti valgono solo con .pm-ready (lo mette product-motion.js): senza JS la pagina resta com'era.
 * Fuori schermo le animazioni si fermano (.pm-off). Con «riduci movimento» resta tutto fermo e visibile.
 * .pm-pin (desktop): ogni riga è alta, testo e scheda restano fermi e la demo segue lo scorrimento.
 * Chi siamo (.page-template-chi-siamo) ha un suo blocco: founder, come lavoriamo, prodotti, sfera dell'apertura. */
.rw-cms-product .pc-page{--pm-ease:cubic-bezier(.16,1,.3,1);counter-reset:pm-row;position:relative}
.xp-page.pm-single{--pm-ease:cubic-bezier(.16,1,.3,1)}
.rw-cms-product .pc-page>:not(.pm-gl,.pm-dock){position:relative;z-index:1}
:is(.rw-cms-product .pc-page,.xp-page.pm-single) .pm-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.rw-cms-product .pc-page .pc-xaflo{--pm:#86a3ff}
.rw-cms-product .pc-page .pc-migrator{--pm:#5fe0b4}
.rw-cms-product .pc-page .pc-stockai{--pm:#6be3b3}
.rw-cms-product .pc-page .pc-atlas{--pm:#a796ff}

/* Introduzione: entra al caricamento, solo CSS. */
@keyframes pmRise{from{opacity:0;translate:0 22px}}
@keyframes pmShine{from{background-position:100% 0}to{background-position:0 0}}
.rw-cms-product .pc-page .pc-intro>*{animation:pmRise .9s var(--pm-ease) both}
.rw-cms-product .pc-page .pc-intro>:nth-child(2){animation-delay:.06s}
.rw-cms-product .pc-page .pc-intro>:nth-child(3){animation-delay:.14s}
.rw-cms-product .pc-page .pc-intro>.pc-jump{animation:none}
.rw-cms-product .pc-page .pc-jump a{position:relative;animation:pmRise .8s var(--pm-ease) both}
.rw-cms-product .pc-page .pc-jump a:nth-child(1){animation-delay:.22s}
.rw-cms-product .pc-page .pc-jump a:nth-child(2){animation-delay:.28s}
.rw-cms-product .pc-page .pc-jump a:nth-child(3){animation-delay:.34s}
.rw-cms-product .pc-page .pc-jump a:nth-child(4){animation-delay:.4s}
.rw-cms-product .pc-page .pc-jump a::after{content:'';position:absolute;left:0;right:0;bottom:-1px;height:1px;background:linear-gradient(90deg,#9fb6ff,#7ce7c0);transform:scaleX(0);transform-origin:left;transition:transform .5s var(--pm-ease)}
.rw-cms-product .pc-page .pc-jump a:hover::after,.rw-cms-product .pc-page .pc-jump a:focus-visible::after,.rw-cms-product .pc-page .pc-jump a.pm-cur::after{transform:scaleX(1)}
.rw-cms-product .pc-page .pc-jump a.pm-cur{color:#fff}
.rw-cms-product .pc-page .pc-intro>.rw-cms-heading>span{background:linear-gradient(100deg,#d1c5ff 0 38%,#fff 48%,#9fe9d0 54%,#d1c5ff 64% 100%) 100% 0/260% 100%;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;animation:pmShine 2.6s ease-in-out .5s both}

/* Apertura 3D: tela WebGL a destra del titolo, con il nome della forma sotto. */
.rw-cms-product .pc-page .pm-gl{position:absolute;z-index:0;top:0;right:-2%;width:min(48%,620px);height:560px;pointer-events:none;opacity:0;transition:opacity 1.8s ease}
:is(.rw-cms-product .pc-page,.xp-page.pm-single) .pm-gl.pm-on{opacity:1}
:is(.rw-cms-product .pc-page,.xp-page.pm-single) .pm-gl canvas{display:block;width:100%;height:100%}
.rw-cms-product .pc-page .pm-gl-cap{position:absolute;left:0;right:6%;top:62px;margin:0;display:flex;justify-content:flex-end;gap:12px;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:#c9d4f2;font-variant-numeric:tabular-nums}
.rw-cms-product .pc-page .pm-gl-cap b{font-weight:500;color:#7f8fb3}
.rw-cms-product .pc-page .pm-gl-cap b:empty{display:none}

/* Nastro di parole fra l'apertura e i prodotti. */
.rw-cms-product .pc-page .pm-marquee{overflow:hidden;margin:6px 0 34px;padding:20px 0;border-top:1px solid #ffffff10;-webkit-mask:linear-gradient(90deg,transparent,#000 10%,#000 90%,transparent);mask:linear-gradient(90deg,transparent,#000 10%,#000 90%,transparent)}
.rw-cms-product .pc-page .pm-marquee-track{display:flex;align-items:center;gap:34px;width:max-content;animation:pmMarquee 46s linear infinite}
.rw-cms-product .pc-page .pm-marquee span{font-size:clamp(34px,5vw,70px);font-weight:600;letter-spacing:-.045em;line-height:1;white-space:nowrap;color:transparent;-webkit-text-stroke:1px #ffffff40}
.rw-cms-product .pc-page .pm-marquee span:nth-of-type(3n+2){color:#b8c6ff2e;-webkit-text-stroke:0}
.rw-cms-product .pc-page .pm-marquee b{font-size:22px;color:#8ea7ff;font-weight:400}
@keyframes pmMarquee{to{transform:translateX(-50%)}}

/* Righe prodotto: bagliore, numero grande, prospettiva per la scheda. */
.rw-cms-product .pc-page .pc-row{position:relative;isolation:isolate;perspective:1600px;counter-increment:pm-row}
.rw-cms-product .pc-page .pc-row::before{content:'';position:absolute;z-index:-1;pointer-events:none;top:2%;bottom:2%;right:0;width:62%;background:radial-gradient(closest-side,color-mix(in srgb,var(--pm) 15%,transparent),transparent);animation:pmBreath 9s ease-in-out infinite alternate}
/* Il numero sta dietro l'angolo alto della scheda e ne sbuca sopra. */
.rw-cms-product .pc-page .pc-row::after{content:counter(pm-row,decimal-leading-zero);position:absolute;z-index:-1;pointer-events:none;top:-.3em;right:-.03em;font-size:clamp(120px,13vw,200px);font-weight:700;line-height:.8;letter-spacing:-.06em;color:transparent;-webkit-text-stroke:1px color-mix(in srgb,var(--pm) 34%,transparent);font-variant-numeric:tabular-nums}
@keyframes pmBreath{from{opacity:.5;transform:scale(.92)}to{opacity:1;transform:scale(1.05)}}
@supports (animation-timeline:view()){
 .rw-cms-product .pc-page .pc-row::after{animation:pmDrift linear both;animation-timeline:view();animation-range:entry 0% exit 100%}
 @keyframes pmDrift{from{translate:0 70px}to{translate:0 -70px}}
}

/* Comparsa allo scorrimento. */
.rw-cms-product .pc-page .pc-detail>*{transition:opacity .9s var(--pm-ease),translate 1s var(--pm-ease),clip-path 1.1s var(--pm-ease);transition-delay:calc(var(--pm-i,0)*70ms)}
.rw-cms-product .pc-page.pm-ready .pc-row:not(.pm-in) .pc-detail>:not(h2){opacity:0;translate:0 28px}
/* Titoli: ogni lettera sale ruotando, una dopo l'altra. */
:is(.rw-cms-product .pc-page,.xp-page.pm-single) .pm-w{display:inline-block;font-style:normal;white-space:nowrap}
:is(.rw-cms-product .pc-page,.xp-page.pm-single) .pm-ch{display:inline-block;font-style:normal;transform-origin:50% 100%;transition:transform .95s var(--pm-ease),opacity .6s ease;transition-delay:calc(.08s + var(--c,0)*28ms)}
.rw-cms-product .pc-page.pm-ready .pc-row:not(.pm-in) .pm-ch{opacity:0;transform:perspective(500px) translateY(.6em) rotateX(-80deg)}
.rw-cms-product .pc-page.pm-ready .pc-row:not(.pm-in)::after{opacity:0}
.rw-cms-product .pc-page .pc-row::after{transition:opacity 1.4s ease .2s}
.rw-cms-product .pc-page .pc-outro{transition:opacity .9s var(--pm-ease),translate 1s var(--pm-ease)}
.rw-cms-product .pc-page.pm-ready .pc-outro:not(.pm-in){opacity:0;translate:0 30px}

/* La scheda animata: entra in 3D, poi segue il puntatore. */
.rw-cms-product .pc-page [data-product-motion]{position:relative;isolation:isolate;transform:rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));transition:opacity 1s var(--pm-ease),translate 1.3s var(--pm-ease),rotate 1.3s var(--pm-ease),scale 1.3s var(--pm-ease),transform .9s var(--pm-ease),box-shadow .5s ease}
.rw-cms-product .pc-page [data-product-motion].pm-hover{transition:opacity 1s var(--pm-ease),translate 1.3s var(--pm-ease),rotate 1.3s var(--pm-ease),scale 1.3s var(--pm-ease),transform .18s linear,box-shadow .5s ease;box-shadow:0 40px 90px #0007,0 0 0 1px color-mix(in srgb,var(--pm) 35%,transparent)}
.rw-cms-product .pc-page.pm-ready .pc-row:not(.pm-in) [data-product-motion]{opacity:0;translate:0 90px;rotate:x 18deg;scale:.93}
.rw-cms-product .pc-page [data-product-motion]>:not(.pm-beam,.pm-spot){transition:opacity .7s var(--pm-ease),translate .9s var(--pm-ease);transition-delay:calc(.35s + var(--pm-i,0)*80ms)}
.rw-cms-product .pc-page.pm-ready .pc-row:not(.pm-in) [data-product-motion]>:not(.pm-beam,.pm-spot){opacity:0;translate:0 18px}
@keyframes pmCardIn{from{opacity:0;translate:0 70px;rotate:x 16deg;scale:.94}}
.rw-cms-product .pc-page>.pc-row:first-of-type [data-product-motion]{animation:pmCardIn 1.4s var(--pm-ease) .3s both}
.rw-cms-product .pc-page>.pc-row:first-of-type .pc-detail>*{animation:pmRise .9s var(--pm-ease) both;animation-delay:calc(.2s + var(--pm-i,0)*70ms)}
/* Pulsante «Scopri»: il cerchio segue il puntatore (translate lo mette il JS). */
.rw-cms-product .pc-page .pc-discover>span{transition:transform .3s,translate .45s var(--pm-ease)}

/* Fascio di luce che gira sul bordo: un anello fisso con dentro un cono che ruota.
 * Esiste solo sotto il puntatore: una maschera che cambia a ogni fotogramma costa, quindi da fermo non c'è. */
:is(.rw-cms-product .pc-page,.xp-page.pm-single) .pm-beam{position:absolute;inset:0;z-index:3;pointer-events:none;border-radius:inherit;padding:1px;overflow:hidden;display:none;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude}
:is(.rw-cms-product .pc-page,.xp-page.pm-single) .pm-beam::before{content:'';position:absolute;left:50%;top:50%;width:var(--pm-d,150%);height:var(--pm-d,150%);translate:-50% -50%;background:conic-gradient(from 0deg,transparent 0 60%,color-mix(in srgb,var(--pm) 60%,transparent) 76%,#fff 83%,color-mix(in srgb,var(--pm) 60%,transparent) 88%,transparent 97%);animation:pmSpin 3.4s linear infinite}
:is(.rw-cms-product .pc-page,.xp-page.pm-single) .pm-hover .pm-beam{display:block}
@keyframes pmSpin{to{transform:rotate(1turn)}}
/* Luce che segue il puntatore (si muove con translate, non si ridisegna). */
:is(.rw-cms-product .pc-page,.xp-page.pm-single) .pm-spot{position:absolute;left:0;top:0;z-index:-1;width:560px;height:560px;border-radius:50%;pointer-events:none;background:radial-gradient(closest-side,color-mix(in srgb,var(--pm) 22%,transparent),transparent);translate:calc(var(--sx,0px) - 280px) calc(var(--sy,0px) - 280px);opacity:0;transition:opacity .5s ease}
:is(.rw-cms-product .pc-page,.xp-page.pm-single) .pm-hover .pm-spot{opacity:1}

/* Avanzamento della demo, visibile quando la scheda è ferma. */
.rw-cms-product .pc-page .pm-prog{position:absolute;left:0;right:0;bottom:0;z-index:3;height:2px;pointer-events:none;background:linear-gradient(90deg,transparent,var(--pm));transform:scaleX(var(--p,0));transform-origin:left;opacity:0;transition:opacity .4s}
.rw-cms-product .pc-page.pm-pin .pm-prog{opacity:1}

/* Racconto allo scorrimento (desktop): la riga è alta, testo e scheda restano fermi. */
@media(min-width:1001px){
 .rw-cms-product .pc-page.pm-pin .pc-row{min-height:185vh;align-items:start}
 .rw-cms-product .pc-page.pm-pin .pc-detail,.rw-cms-product .pc-page.pm-pin .pc-row [data-product-motion]{position:sticky;top:110px}
 /* Righe alte quasi due schermi: al posto del bagliore grande, un'ombra colorata ferma sotto la scheda. */
 .rw-cms-product .pc-page.pm-pin .pc-row::before{display:none}
 .rw-cms-product .pc-page.pm-pin .pc-row [data-product-motion]{box-shadow:0 40px 140px -30px color-mix(in srgb,var(--pm) 40%,transparent),0 25px 70px #0004}
}

/* Barra dei prodotti fissa in basso. */
:is(.rw-cms-product .pc-page,.xp-page.pm-single) .pm-dock{position:fixed;left:50%;bottom:18px;z-index:60;display:flex;gap:2px;padding:5px;border:1px solid #ffffff1c;border-radius:999px;background:#0a0f1bf2;box-shadow:0 18px 50px #000a;translate:-50% 150%;opacity:0;visibility:hidden;transition:translate .6s var(--pm-ease),opacity .4s ease,visibility 0s .6s}
:is(.rw-cms-product .pc-page,.xp-page.pm-single) .pm-dock.pm-show{translate:-50% 0;opacity:1;visibility:visible;transition:translate .6s var(--pm-ease),opacity .4s ease}
.rw-cms-product .pc-page .pm-dock a{position:relative;display:flex;align-items:center;gap:8px;min-height:44px;box-sizing:border-box;padding:0 16px;border-radius:999px;color:#93a1bf;font-size:12px;white-space:nowrap;overflow:hidden;transition:color .3s,background-color .3s}
.rw-cms-product .pc-page .pm-dock a b{font-weight:500;color:#5c6a88;font-variant-numeric:tabular-nums;transition:color .3s}
.rw-cms-product .pc-page .pm-dock a i{position:absolute;left:16px;right:16px;bottom:7px;height:2px;border-radius:2px;background:var(--pm);transform:scaleX(var(--p,0));transform-origin:left;opacity:.85}
.rw-cms-product .pc-page .pm-dock a:hover,.rw-cms-product .pc-page .pm-dock a.pm-cur{color:#f1f5ff;background:#ffffff0f}
.rw-cms-product .pc-page .pm-dock a.pm-cur b{color:var(--pm)}
:is(.rw-cms-product .pc-page,.xp-page.pm-single) .pm-dock a:focus-visible{outline:2px solid #c3d5ff;outline-offset:-2px}

/* ---------- Pagina del singolo prodotto (.pm-single, la mette il JS) ---------- */
.xp-page.pm-p1{--pm:#86a3ff}.xp-page.pm-p2{--pm:#5fe0b4}.xp-page.pm-p3{--pm:#6be3b3}.xp-page.pm-p4{--pm:#a796ff}
/* Apertura: testo e scheda entrano al caricamento, solo CSS. Il titolo sale senza dissolvenza, per non ritardarne la comparsa. */
@keyframes pmLift{from{translate:0 22px}}
.xp-page:not(.pc-page)>.xp-hero{perspective:1600px}
.xp-page:not(.pc-page)>.xp-hero>.xp-copy>*{animation:pmRise .9s cubic-bezier(.16,1,.3,1) both}
.xp-page:not(.pc-page)>.xp-hero>.xp-copy>:is(h1,h2){animation-name:pmLift}
.xp-page:not(.pc-page)>.xp-hero>.xp-copy>:nth-child(2){animation-delay:.08s}
.xp-page:not(.pc-page)>.xp-hero>.xp-copy>:nth-child(3){animation-delay:.16s}
.xp-page:not(.pc-page)>.xp-hero>.xp-copy>:nth-child(4){animation-delay:.24s}
.xp-page:not(.pc-page)>.xp-hero>.xp-copy>:nth-child(n+5){animation-delay:.3s}
.xp-page:not(.pc-page)>.xp-hero>:is(.xp-scene,[data-product-motion],.at-product-preview){animation:pmCardIn 1.4s cubic-bezier(.16,1,.3,1) .25s both}
/* Desktop: la demo arriva dopo le particelle. Senza JS compare da sola a 2,6 s; senza WebGL il JS mette .pm-now e compare subito.
 * Con .pm-wait aspetta nascosta; .pm-born la fa comparire con un lampo nel colore del prodotto; .pm-done chiude l'entrata. */
@media(min-width:1001px){
 .xp-page:not(.pc-page)>.xp-hero>:is(.xp-scene,[data-product-motion],.at-product-preview){animation-delay:2.6s}
 .xp-page.pm-now>.xp-hero>.pm-card{animation-delay:.25s}
}
.xp-page.pm-wait>.xp-hero>.pm-card{animation:none;opacity:0;scale:.96}
.xp-page.pm-wait>.xp-hero>.pm-card.pm-born{opacity:1;scale:1;transition:opacity .9s ease,scale 1.3s var(--pm-ease),transform .9s var(--pm-ease),box-shadow .5s ease}
.xp-page.pm-done>.xp-hero>.pm-card{animation:none}
.xp-page.pm-single .pm-flash{position:absolute;inset:0;z-index:4;pointer-events:none;border-radius:inherit;background:radial-gradient(ellipse at 50% 50%,color-mix(in srgb,var(--pm) 55%,#fff 10%),color-mix(in srgb,var(--pm) 18%,transparent) 55%,transparent 80%);opacity:0}
.xp-page.pm-single .pm-born .pm-flash{animation:pmFlash 1.2s ease-out both}
@keyframes pmFlash{0%{opacity:.85}100%{opacity:0}}
.xp-page.pm-single>.xp-hero{position:relative;isolation:isolate}
.xp-page.pm-single>.xp-hero>:not(.pm-gl){position:relative;z-index:1}
.xp-page.pm-single>.xp-hero>.pm-gl{position:absolute;z-index:0;pointer-events:none;opacity:0;transition:opacity 2s ease}
.xp-page.pm-single>.xp-hero>.pm-gl.pm-on{opacity:1}
.xp-page.pm-single .pm-card{transform:rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));transition:transform .9s var(--pm-ease),box-shadow .5s ease}
.xp-page.pm-single .pm-card.pm-hover{transition:transform .18s linear,box-shadow .5s ease;box-shadow:0 40px 90px #0007,0 0 0 1px color-mix(in srgb,var(--pm) 35%,transparent)}
.xp-page.pm-single .pm-card .pm-prog{display:none}

/* Sezioni: gli elementi entrano a cascata, gli screenshot si raddrizzano in 3D. */
.xp-page.pm-single .pm-persp{perspective:1400px}
.xp-page.pm-single .pm-it{--pm-d0:calc(var(--pm-i,0)*75ms);transition:opacity .8s var(--pm-ease) var(--pm-d0),translate 1s var(--pm-ease) var(--pm-d0),rotate 1.2s var(--pm-ease) var(--pm-d0),scale 1.2s var(--pm-ease) var(--pm-d0),transform .9s var(--pm-ease)}
.xp-page.pm-single.pm-ready :is(.xp-section,.xp-final):not(.pm-in) .pm-it{opacity:0;translate:0 32px}
.xp-page.pm-single.pm-ready :is(.xp-section,.xp-final):not(.pm-in) .pm-shot{translate:0 70px;rotate:x 16deg;scale:.94}
.xp-page.pm-single.pm-ready :is(.xp-section,.xp-final):not(.pm-in) .pm-ch{opacity:0;transform:perspective(500px) translateY(.6em) rotateX(-80deg)}
.xp-page.pm-single .pm-shot{position:relative;transform:rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg))}
.xp-page.pm-single .pm-shot.pm-hover{transition:opacity .8s var(--pm-ease),translate 1s var(--pm-ease),rotate 1.2s var(--pm-ease),scale 1.2s var(--pm-ease),transform .18s linear,box-shadow .5s ease;box-shadow:0 30px 70px #0006,0 0 0 1px color-mix(in srgb,var(--pm) 30%,transparent)}
/* Riflesso che segue il puntatore sullo screenshot (si muove con translate, non si ridisegna). */
.xp-page.pm-single .pm-glare{position:absolute;left:0;top:0;z-index:2;width:520px;height:520px;border-radius:50%;pointer-events:none;background:radial-gradient(closest-side,#ffffff1c,transparent);translate:calc(var(--sx,0px) - 260px) calc(var(--sy,0px) - 260px);opacity:0;transition:opacity .5s ease}
.xp-page.pm-single .pm-hover>.pm-glare{opacity:1}
.xp-page.pm-single .xp-actions .pill{transition:translate .4s var(--pm-ease)}

/* Barra in basso: nome, pulsante principale e linea di lettura. */
.xp-page.pm-single .pm-dock-one{align-items:center;gap:6px;padding:5px 5px 5px 8px}
.xp-page.pm-single .pm-dock-name{display:flex;align-items:center;gap:9px;padding:0 12px 0 8px;color:#e4eaf8;font-size:12px;white-space:nowrap}
.xp-page.pm-single .pm-dock-name>i{width:7px;height:7px;border-radius:50%;background:var(--pm);box-shadow:0 0 12px var(--pm)}
.xp-page.pm-single .pm-dock-cta{display:inline-flex;align-items:center;min-height:42px;box-sizing:border-box;padding:0 20px;border-radius:999px;background:#f3f6ff;color:#0b1120;font-size:13px;font-weight:600;white-space:nowrap;transition:background-color .3s,translate .4s var(--pm-ease)}
.xp-page.pm-single .pm-dock-cta:hover{background:#fff}
.xp-page.pm-single .pm-dock-cta:focus-visible{outline:2px solid #c3d5ff;outline-offset:3px}
.xp-page.pm-single .pm-dock-line{position:absolute;left:22px;right:22px;bottom:-1px;height:2px;border-radius:2px;background:linear-gradient(90deg,transparent,var(--pm));transform:scaleX(var(--p,0));transform-origin:left}
@media(max-width:760px){
 .xp-page.pm-single .pm-dock-name{display:none}
 .xp-page.pm-single .pm-dock-one{padding:5px}
 .xp-page.pm-single .pm-dock-cta{max-width:calc(100vw - 40px);overflow:hidden;text-overflow:ellipsis}
}

/* ---------- Chi siamo ---------- */
/* Apertura: la sfera di particelle prende il posto di anelli e cubo; le etichette restano sopra. */
.page-template-chi-siamo .svc-visual>.pm-gl{position:absolute;inset:-4% -2%;z-index:0;pointer-events:none;opacity:0;transition:opacity 1.6s ease}
.page-template-chi-siamo .svc-visual>.pm-gl.pm-on{opacity:1}
.page-template-chi-siamo .svc-visual>.pm-gl canvas{display:block;width:100%;height:100%}
.page-template-chi-siamo .svc-visual.pm-gl-on>.orbit-ring,.page-template-chi-siamo .svc-visual.pm-gl-on>.cube-stage{opacity:0;transition:opacity 1s ease}
.page-template-chi-siamo .svc-visual>.chip-f{z-index:2}
/* Titoli lettera per lettera, quando il tema mostra il blocco (.rv.in). */
.page-template-chi-siamo .pm-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.page-template-chi-siamo .pm-w{display:inline-block;font-style:normal;white-space:nowrap}
.page-template-chi-siamo .pm-ch{display:inline-block;font-style:normal;transform-origin:50% 100%;transition:transform .95s cubic-bezier(.16,1,.3,1),opacity .6s ease;transition-delay:calc(.15s + var(--c,0)*28ms)}
.page-template-chi-siamo .rv:not(.in) .pm-ch{opacity:0;transform:perspective(500px) translateY(.6em) rotateX(-80deg)}

/* Il founder. */
.pm-founder{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:clamp(36px,6vw,90px);align-items:center}
.pm-founder-photo{position:relative;margin:0;max-width:420px;aspect-ratio:548/723;overflow:hidden;border:1px solid var(--line);border-radius:var(--r);background:radial-gradient(ellipse at 50% 30%,#1a2550,#08080c 70%)}
.pm-founder-photo img{display:block;width:100%;height:100%;object-fit:cover}
.pm-founder-photo::after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(to top,#050507 0,transparent 38%)}
.pm-founder .h-sec{margin:14px 0 0}
.pm-founder-role{margin:8px 0 26px;color:var(--vio);font-size:12.5px;font-weight:600;letter-spacing:.16em;text-transform:uppercase}
.pm-founder blockquote{margin:0 0 30px;padding:0;border:0}
.pm-founder blockquote p{margin:0;font-size:clamp(19px,2vw,24px);line-height:1.45;color:var(--txt)}
.pm-founder-facts{display:flex;gap:44px;margin:0 0 30px;padding:0;list-style:none}
.pm-founder-facts b{display:block;font-size:30px;font-weight:600;letter-spacing:-.02em;color:var(--txt)}
.pm-founder-facts span{color:var(--faint);font-size:11.5px;letter-spacing:.14em;text-transform:uppercase}

/* Come lavoriamo: la linea si riempie scorrendo (--p) e i passi si accendono (.pm-on). Senza JS è tutto acceso. */
.pm-steps{position:relative;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin:0;padding:0;list-style:none}
.pm-steps::before,.pm-steps::after{content:'';position:absolute;left:22px;right:0;top:22px;height:1px;background:var(--line2)}
.pm-steps::after{background:linear-gradient(90deg,var(--vio),var(--org));transform:scaleX(var(--p,1));transform-origin:left}
.pm-step{position:relative;padding:62px 22px 0 0}
.pm-step>h3,.pm-step>p{transition:opacity .6s ease}
.pm-step-n{position:absolute;top:0;left:0;z-index:1;display:grid;place-items:center;width:44px;height:44px;border:1px solid var(--line2);border-radius:50%;background:var(--bg);color:var(--mut);font-size:12px;font-weight:600;letter-spacing:.06em;transition:color .5s,border-color .5s,background-color .5s,box-shadow .5s}
.pm-step h3{margin:0 0 10px;font-size:19px}
.pm-step p{margin:0;color:var(--mut);font-size:14px}
.pm-steps.pm-js .pm-step:not(.pm-on)>h3,.pm-steps.pm-js .pm-step:not(.pm-on)>p{opacity:.45}
.pm-steps.pm-js .pm-step:not(.pm-on) .pm-step-n{color:var(--faint)}
.pm-steps .pm-step.pm-on .pm-step-n,.pm-steps:not(.pm-js) .pm-step-n{color:#fff;border-color:var(--vio);background:#101a3a;box-shadow:0 0 0 6px var(--vio-soft),0 0 24px #5f87ff55}

/* I prodotti: stessi colori della pagina Prodotti. Al passaggio la scheda si alza appena, senza inclinarsi. */
.pm-prods{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.pm-prod{position:relative;display:flex;flex-direction:column;gap:12px;padding:28px 24px 24px;overflow:hidden;border:1px solid var(--line);border-radius:var(--r);background:var(--card);color:var(--txt);text-decoration:none;transition:border-color .3s,transform .4s var(--ease)}
.pm-prod::before{content:'';position:absolute;left:-30%;right:-30%;bottom:-70%;height:130%;pointer-events:none;background:radial-gradient(closest-side,color-mix(in srgb,var(--pm) 24%,transparent),transparent);opacity:0;transition:opacity .5s ease}
.pm-prod:hover,.pm-prod:focus-visible{border-color:color-mix(in srgb,var(--pm) 45%,transparent);transform:translateY(-3px)}
.pm-prod:hover::before,.pm-prod:focus-visible::before{opacity:1}
.pm-prod:focus-visible{outline:2px solid #c3d5ff;outline-offset:3px}
.pm-prod-dot{width:10px;height:10px;border-radius:50%;background:var(--pm);box-shadow:0 0 14px var(--pm)}
.pm-prod strong{font-size:18px;font-weight:600}
.pm-prod-line{flex:1;color:var(--mut);font-size:13.5px}
.pm-prod-go{display:inline-flex;align-items:center;gap:6px;color:var(--pm);font-size:13px}
.pm-prod-go svg{transition:transform .3s ease}
.pm-prod:hover .pm-prod-go svg{transform:translateX(4px)}

@media(max-width:1000px){
 .pm-prods{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:760px){
 .pm-founder{grid-template-columns:1fr}
 .pm-founder-photo{max-width:300px}
 .pm-steps{grid-template-columns:1fr;gap:30px}
 .pm-steps::before,.pm-steps::after{left:22px;right:auto;top:22px;bottom:0;width:1px;height:auto}
 .pm-steps::after{background:linear-gradient(180deg,var(--vio),var(--org));transform:scaleY(var(--p,1));transform-origin:top}
 .pm-step{padding:8px 0 0 70px}
 .pm-prods{grid-template-columns:1fr}
}

/* Anelli e pacchetti condivisi. */
@keyframes pmPulse{0%{opacity:.7;transform:scale(1)}70%,100%{opacity:0;transform:scale(2.6)}}
@keyframes pmNode{0%{opacity:1}18%,100%{opacity:0}}
@keyframes pmTravel{0%{opacity:0;transform:translateX(0)}4%{opacity:1}30%{opacity:1;transform:translateX(100%)}34%,100%{opacity:0;transform:translateX(100%)}}

/* 01 Xaflo: la richiesta si scrive, parte, attraversa il nodo e costruisce la pagina. Ciclo di 12 s. */
.rw-cms-product .pc-page .pc-command>p:first-of-type{clip-path:inset(-20% 100% -20% 0);animation:pmType 12s infinite}
.rw-cms-product .pc-page .pc-command>p:first-of-type::after{content:'';display:inline-block;width:2px;height:1.05em;margin-left:5px;vertical-align:-3px;background:#a9c1ff;animation:pmCaret 1s steps(1) infinite}
@keyframes pmType{0%,3%{clip-path:inset(-20% 100% -20% 0);animation-timing-function:steps(18,end)}15%,90%{clip-path:inset(-20% -10px -20% 0)}95%,100%{clip-path:inset(-20% 100% -20% 0)}}
@keyframes pmCaret{50%{opacity:0}}
.rw-cms-product .pc-page .pc-command b{animation:pmSend 12s var(--pm-ease) infinite}
@keyframes pmSend{0%,16%{opacity:1;translate:0 0}19%{opacity:0;translate:8px -8px}20%{opacity:0;translate:-6px 6px}25%,100%{opacity:1;translate:0 0}}
.rw-cms-product .pc-page .pc-flow>i{position:relative}
.rw-cms-product .pc-page .pc-flow>i::after{content:'';position:absolute;left:-2px;top:0;width:5px;height:5px;border-radius:50%;background:#e3ebff;box-shadow:0 0 10px 2px var(--pm);opacity:0;animation:pmDrop 12s infinite}
.rw-cms-product .pc-page .pc-flow>i:last-child::after{animation-delay:.9s}
@keyframes pmDrop{0%,17%{opacity:0;transform:translateY(-3px)}18%{opacity:1}23%{opacity:1;transform:translateY(15px)}24%,100%{opacity:0;transform:translateY(15px)}}
.rw-cms-product .pc-page .pc-flow>span{position:relative}
.rw-cms-product .pc-page .pc-flow>span::after{content:'';position:absolute;inset:-1px;border-radius:inherit;border:1px solid var(--pm);opacity:0;animation:pmRing12 12s infinite}
@keyframes pmRing12{0%,23%{opacity:0;transform:scale(1)}25%{opacity:.9;transform:scale(1)}36%,100%{opacity:0;transform:scale(2)}}
.rw-cms-product .pc-page .pc-mini-cards i{position:relative;overflow:hidden}
.rw-cms-product .pc-page .pc-mini-cards i::after{content:'';position:absolute;inset:0;background:linear-gradient(105deg,transparent 30%,#ffffff80 50%,transparent 70%);transform:translateX(-120%);animation:pmSheen 12s infinite}
.rw-cms-product .pc-page .pc-mini-cards i:nth-child(2)::after{animation-delay:.15s}
.rw-cms-product .pc-page .pc-mini-cards i:nth-child(3)::after{animation-delay:.3s}
@keyframes pmSheen{0%,42%{transform:translateX(-120%)}54%,100%{transform:translateX(120%)}}

/* 02 Rocket Migrator: scansione all'esportazione e al ripristino, barra che scorre. Ciclo di 16 s. */
.rw-cms-product .pc-page .rm-window{position:relative}
.rw-cms-product .pc-page .rm-window::after{content:'';position:absolute;left:0;right:0;top:0;height:40%;pointer-events:none;background:linear-gradient(to bottom,transparent,color-mix(in srgb,var(--pm) 22%,transparent) 85%,#d2fff0 100%);opacity:0;transform:translateY(-100%)}
.rw-cms-product .pc-page .rm-source::after{animation:pmScanOut 16s infinite}
.rw-cms-product .pc-page .rm-destination::after{animation:pmScanIn 16s infinite}
@keyframes pmScanOut{0%,3%{opacity:0;transform:translateY(-100%)}5%{opacity:1}22%{opacity:1;transform:translateY(250%)}24%,100%{opacity:0;transform:translateY(250%)}}
@keyframes pmScanIn{0%,44%{opacity:0;transform:translateY(-100%)}46%{opacity:1}68%{opacity:1;transform:translateY(250%)}70%,100%{opacity:0;transform:translateY(250%)}}
.rw-cms-product .pc-page .rm-progress i{position:relative;overflow:hidden}
.rw-cms-product .pc-page .rm-progress i::after{content:'';position:absolute;top:0;bottom:0;left:0;width:35%;background:linear-gradient(90deg,transparent,#ffffffb0,transparent);transform:translateX(-100%);animation:pmRun 1.8s linear infinite}
@keyframes pmRun{to{transform:translateX(290%)}}
.rw-cms-product .pc-page .rm-archive-icon{position:relative}
.rw-cms-product .pc-page .rm-archive-icon::after{content:'';position:absolute;inset:-1px;border-radius:inherit;border:1px solid var(--pm);opacity:0;animation:pmRing16 16s infinite}
@keyframes pmRing16{0%,20%{opacity:0;transform:scale(1)}22%{opacity:.9;transform:scale(1)}32%,100%{opacity:0;transform:scale(1.8)}}

/* 03 RocketStockAI: dati che passano per l'AI, laser sul codice a barre. Ciclo di 16 s. */
.rw-cms-product .pc-page .sa-systems>b{position:relative;animation:none;box-shadow:0 0 26px #50a58955}
.rw-cms-product .pc-page .sa-systems>b::after{content:'';position:absolute;inset:-1px;border-radius:inherit;border:1px solid var(--pm);opacity:0;animation:pmRing16 16s infinite;animation-delay:-1.6s}
.rw-cms-product .pc-page .sa-systems>i{position:relative}
.rw-cms-product .pc-page .sa-systems>i::after{content:'';position:absolute;left:0;top:-3px;width:100%;height:7px;background:radial-gradient(circle 3px at 3px 50%,#eafff6,var(--pm) 60%,transparent);opacity:0;animation:pmPass 16s infinite}
.rw-cms-product .pc-page .sa-systems>i:last-of-type::after{animation-delay:1.1s}
@keyframes pmPass{0%,2%{opacity:0;transform:translateX(0)}3%{opacity:1}9%{opacity:1;transform:translateX(100%)}10%,100%{opacity:0;transform:translateX(100%)}}
.rw-cms-product .pc-page .sa-barcode{position:relative}
.rw-cms-product .pc-page .sa-barcode::after{content:'';position:absolute;top:-4px;bottom:-4px;left:0;width:100%;background:linear-gradient(90deg,#ff5c7a 0 2px,transparent 2px);opacity:0;animation:pmLaser 16s infinite}
@keyframes pmLaser{0%,46%{opacity:0;transform:translateX(0)}47%{opacity:1}55%{opacity:1;transform:translateX(100%)}56%,100%{opacity:0;transform:translateX(100%)}}

/* 04 Xaflo Atlas: contatto, visita, proposta si accendono in sequenza. Ciclo di 6 s. */
.rw-cms-product .pc-page .at-flow>i{position:relative;animation:none;background:linear-gradient(90deg,#3a5385,#7f93cf,#3a5385)}
.rw-cms-product .pc-page .at-flow>i::after{content:'';position:absolute;left:0;top:-3px;width:100%;height:8px;background:radial-gradient(circle 3px at 3px 50%,#fff,var(--pm) 60%,transparent);opacity:0;animation:pmTravel 6s infinite}
.rw-cms-product .pc-page .at-flow>i:nth-of-type(2)::after{animation-delay:2s}
.rw-cms-product .pc-page .at-flow>span{position:relative}
.rw-cms-product .pc-page .at-flow>span::after{content:'';position:absolute;inset:-1px;border-radius:inherit;border:1px solid var(--pm);box-shadow:0 0 16px color-mix(in srgb,var(--pm) 45%,transparent);opacity:0;animation:pmNode 6s infinite}
.rw-cms-product .pc-page .at-flow>span:nth-of-type(2)::after{animation-delay:1.9s}
.rw-cms-product .pc-page .at-flow>span:nth-of-type(3)::after{animation-delay:3.9s}
.rw-cms-product .pc-page .at-dot{position:relative}
.rw-cms-product .pc-page .at-dot::after{content:'';position:absolute;inset:0;border-radius:50%;border:1px solid #95e3c3;animation:pmPulse 2.4s ease-out infinite}

/* Fuori schermo tutto fermo. */
:is(.rw-cms-product .pc-page,.xp-page.pm-single) .pm-off::before,:is(.rw-cms-product .pc-page,.xp-page.pm-single) .pm-off::after,:is(.rw-cms-product .pc-page,.xp-page.pm-single) .pm-off *,:is(.rw-cms-product .pc-page,.xp-page.pm-single) .pm-off *::before,:is(.rw-cms-product .pc-page,.xp-page.pm-single) .pm-off *::after{animation-play-state:paused!important}

@media(max-width:760px){
 .rw-cms-product .pc-page .pc-row::before{width:100%;top:40%;bottom:0}
 .rw-cms-product .pc-page .pc-row::after{display:none}
 .rw-cms-product .pc-page .pm-gl{right:-25%;width:100%}
 .rw-cms-product .pc-page .pm-gl.pm-on{opacity:.42}
 .rw-cms-product .pc-page .pm-gl-cap{display:none}
 .rw-cms-product .pc-page .pm-marquee{margin-bottom:18px;padding:14px 0}
 .rw-cms-product .pc-page .pm-dock{bottom:12px;max-width:calc(100vw - 24px)}
 .rw-cms-product .pc-page .pm-dock a{padding:0 12px}
 .rw-cms-product .pc-page .pm-dock a span{display:none}
 .rw-cms-product .pc-page .pm-dock a.pm-cur span{display:inline;max-width:140px;overflow:hidden;text-overflow:ellipsis}
 .rw-cms-product .pc-page .pm-dock a i{left:10px;right:10px}
}
@media(prefers-reduced-motion:reduce){
 .pm-step>h3,.pm-step>p,.pm-step-n,.pm-prod,.pm-prod::before{transition:none!important}
 .xp-page:not(.pc-page)>.xp-hero>*,.xp-page:not(.pc-page)>.xp-hero>.xp-copy>*{animation:none!important}
 .xp-page.pm-single *,.xp-page.pm-single *::before,.xp-page.pm-single *::after{transition:none!important}
 .rw-cms-product .pc-page *,.rw-cms-product .pc-page *::before,.rw-cms-product .pc-page *::after,.rw-cms-product .pc-page .pc-row::before,.rw-cms-product .pc-page .pc-row::after{animation:none!important;transition:none!important}
 .rw-cms-product .pc-page .pc-command>p:first-of-type{clip-path:none}
 .rw-cms-product .pc-page .pc-intro>.rw-cms-heading>span{background-position:0 0}
 .rw-cms-product .pc-page .pm-beam,.rw-cms-product .pc-page .pm-spot,.rw-cms-product .pc-page .pm-prog{display:none}
}
