/* Effetti e microinterazioni (fx.js). */
.scroll-progress{position:fixed;left:0;top:0;right:0;height:4px;z-index:20;transform:scaleX(0);transform-origin:left;background:linear-gradient(90deg,var(--hero-accent),var(--sculpture-front),var(--green));pointer-events:none}
.motion-off .scroll-progress{display:none}

/* Hero */
/* La sfumatura fucsia dell'hero diventa un livello che si sposta col puntatore (fx.js): stessa sfumatura di hero::before, un po' più grande per non scoprire i bordi. */
.hero.has-hot::before{display:none}
.hero-hot{position:absolute;inset:-40px;z-index:0;pointer-events:none;background:radial-gradient(ellipse at 112% 80%,var(--hero-hot) 0%,transparent 42%);-webkit-mask-image:linear-gradient(#000 62%,transparent 100%);mask-image:linear-gradient(#000 62%,transparent 100%);will-change:transform}
.flow-on .hero-hot{opacity:.9}
.motion-off .hero-hot{transform:none!important}
/* Bagliore morbido che segue il puntatore: tinta chiara, niente fucsia pieno. */
.hero-glow{position:absolute;left:0;top:0;width:620px;height:620px;margin:-310px 0 0 -310px;border-radius:50%;pointer-events:none;z-index:0;opacity:0;background:radial-gradient(circle,color-mix(in srgb,#fff 55%,transparent) 0%,color-mix(in srgb,var(--hero-accent) 12%,transparent) 40%,transparent 70%);filter:blur(20px);transition:opacity .8s var(--ease);will-change:transform}
.hero.is-glowing .hero-glow{opacity:.75}
.motion-off .hero-glow{display:none}
.word{display:inline-block;white-space:nowrap}
.ch{display:inline-block;transform-origin:50% 100%;will-change:transform}

/* Titoli a righe */
.rv-line{display:block;overflow:clip;padding-bottom:.09em;margin-bottom:-.09em}
.hero .hero-title>.line.wave-open,.rv-line.wave-open{overflow:visible}
.rv-inner{display:inline-block;transform-origin:0 100%}

/* Bottoni */
.pill,.header-contact{transition:background .35s var(--ease),color .35s var(--ease),border-color .35s var(--ease)}
.pill:hover{transform:none}
.pill>span{transition:transform .5s var(--ease),background .35s}
.pill:hover>span{transform:rotate(-45deg) scale(1.08)}

/* Card con luce */
.build-card,.care-grid article,.soon-card{position:relative;transform-style:preserve-3d;transition:box-shadow .45s var(--ease)}
.build-card:hover{transform:none;box-shadow:14px 14px 0 var(--ink)}
.build-card::after,.care-grid article::after,.soon-card::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:0;transition:opacity .4s;background:radial-gradient(circle 280px at var(--mx,50%) var(--my,50%),color-mix(in srgb,var(--sculpture-front) 28%,transparent),transparent 70%)}
.care-grid article::after{background:radial-gradient(circle 280px at var(--mx,50%) var(--my,50%),#ffffff8c,transparent 70%)}
.soon-card::after{background:radial-gradient(circle 260px at var(--mx,50%) var(--my,50%),#ffffff1f,transparent 70%)}
.is-lit::after{opacity:1}
.build-card h3,.build-card p,.build-tags{position:relative;z-index:1}
.build-tags li{transition:background .25s,color .25s,transform .25s var(--ease)}
.build-tags li:hover{background:var(--ink);color:#fff;transform:translateY(-2px) rotate(-3deg)}
.build-index{align-self:flex-start;display:inline-grid;place-items:center;min-width:44px;height:30px;padding:0 10px;border:1.5px solid currentColor;border-radius:30px;transition:background .35s var(--ease),color .35s var(--ease)}
.build-card:hover .build-index{background:var(--dark);border-color:var(--dark);color:#fff}
.soon-card.is-blur:hover h3,.soon-card.is-blur:hover p{filter:blur(3px)}

/* Dashboard */
.mock-list b{display:inline-block;transition:background .3s,color .3s}
.mock-list b.busy{background:var(--ink);color:#fff;animation:mock-pulse .7s ease-in-out infinite alternate}
@keyframes mock-pulse{to{opacity:.45}}
.mock-summary strong{display:block}
.mock-foot{display:flex;align-items:center;gap:16px;margin-top:16px}
.mock-progress{flex:1;min-width:0}
.mock-progress-label{font-size:12px;color:#17132fb0}
.mock-foot .mock-bar{margin-top:8px}
.mock-run{flex:none;display:inline-flex;align-items:center;gap:8px;border:2px solid var(--ink);border-radius:30px;background:var(--ink);color:#fff;font:inherit;font-size:13px;font-weight:700;padding:9px 16px;cursor:pointer;transition:background .25s,color .25s}
.mock-run:hover{background:#fff;color:var(--ink)}
.mock-run span{display:inline-block;transition:transform .6s var(--ease)}
.mock-run:hover span{transform:rotate(180deg)}
.mock-run:disabled{opacity:.7;cursor:progress}
.mock-run:disabled span{animation:mock-spin 1s linear infinite}
@keyframes mock-spin{to{transform:rotate(360deg)}}
.mock-run:focus-visible{outline:3px solid var(--sculpture-front);outline-offset:2px}

/* Battito della sezione manutenzione */
.care-pulse{position:relative;display:flex;align-items:center;gap:22px;margin:-20px 0 44px}
.care-pulse svg{flex:1;height:64px;overflow:visible}
.care-pulse path{fill:none;stroke:currentColor;stroke-width:3;stroke-linejoin:round;stroke-linecap:round;vector-effect:non-scaling-stroke}
.pulse-base{opacity:.22}
.pulse-run{stroke-dasharray:160 840;animation:pulse-run 3.2s linear infinite}
@keyframes pulse-run{from{stroke-dashoffset:1000}to{stroke-dashoffset:0}}
.care-live{display:inline-flex;align-items:center;gap:10px;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.08em;flex:none}
.care-live i{position:relative;width:12px;height:12px;border-radius:50%;background:currentColor}
.care-live i::after{content:"";position:absolute;inset:0;border-radius:50%;background:currentColor;animation:live-ping 1.6s ease-out infinite}
@keyframes live-ping{to{transform:scale(3);opacity:0}}
.motion-off .pulse-run{stroke-dasharray:none;opacity:.9}

/* Fascia competenze */
.client-set>span{transition:transform .35s var(--ease),color .25s}
.client-set>span:hover{transform:skewX(-10deg) scale(1.06);color:var(--sculpture-front)}

/* Contatti */
.contact-title-link>span{display:inline-block;transition:transform .6s var(--ease)}
.contact-title-link:hover>span{transform:rotate(45deg) scale(1.15)}

@media(max-width:800px){.care-pulse{margin:-10px 0 30px;gap:14px}.care-pulse svg{height:46px}.mock-foot{flex-wrap:wrap}.mock-run{width:100%;justify-content:center}}

/* Come lavoriamo: titolo sticky e passaggi che si impilano. */
.method-heading{position:sticky;top:110px}
.method-steps{display:flex;flex-direction:column;gap:28px}
.method-steps article,.method-steps .crm-preview{position:sticky;margin:0;transform-origin:50% 0}
.method-steps article{top:110px;padding:clamp(28px,3vw,46px);min-height:300px;background:#fff;border:3px solid var(--ink);border-radius:6px;box-shadow:8px 8px 0 var(--ink)}
.method-steps article:nth-child(2){top:130px;background:#f4f1ff}
.method-steps article:nth-child(3){top:150px;background:#e9fff9}
.method-steps .crm-preview{top:170px}
.method-steps article .step-number{display:inline-grid;place-items:center;min-width:44px;height:30px;padding:0 10px;border:1.5px solid currentColor;border-radius:30px;margin-bottom:26px}
@media(max-width:800px){
 .method-heading{position:static}
 .method-steps article{top:80px;min-height:0}
 .method-steps article:nth-child(2){top:95px}.method-steps article:nth-child(3){top:110px}.method-steps .crm-preview{top:125px}
}




/* Isola di navigazione */
.scroll-progress{display:none}
/* niente sfocatura dietro la barra: andava ricalcolata a ogni fotogramma di scroll; fondo quasi pieno, stesso effetto */
.island{position:fixed;z-index:12;top:14px;left:0;right:0;margin:0 auto;width:fit-content;display:flex;align-items:center;gap:6px;padding:6px;border-radius:100px;color:#fff;background:color-mix(in srgb,#17132f 94%,transparent);border:1px solid #ffffff26;box-shadow:0 10px 40px -12px #17132f80,inset 0 1px 0 #ffffff1f;transform:translateY(-140%);opacity:0;transition:transform .7s cubic-bezier(.34,1.56,.64,1),opacity .4s;overflow:hidden;max-width:calc(100vw - 24px)}
.island.is-visible{transform:none;opacity:1}
.island-leaf{display:grid;place-items:center;width:42px;height:42px;border-radius:50%;background:var(--hero-accent);flex:none;transition:transform .5s var(--ease)}
.island-leaf:hover{transform:rotate(-20deg) scale(1.08)}
.island-leaf img{width:18px}
.island-current{display:block;font-size:14px;font-weight:700;white-space:nowrap;padding:0;min-width:0;overflow:hidden;max-width:0;opacity:0;transition:max-width .6s var(--ease),opacity .3s,padding .6s var(--ease)}
.island.is-compact .island-current{max-width:220px;opacity:1;padding:0 10px 0 6px}
.island-links{display:grid;grid-template-columns:1fr;transition:grid-template-columns .6s var(--ease),opacity .4s}
.island.is-compact .island-links{grid-template-columns:0fr;opacity:0}
.island-links-inner{position:relative;display:flex;overflow:hidden;min-width:0}
.island-links a{position:relative;z-index:1;padding:11px 15px;font-size:14px;white-space:nowrap;border-radius:40px;transition:color .3s}
.island-links a.is-on{color:#17132f}
.island-blob{position:absolute;left:0;top:0;bottom:0;width:0;border-radius:40px;background:#fff;opacity:0;transition:transform .5s cubic-bezier(.34,1.4,.64,1),width .5s cubic-bezier(.34,1.4,.64,1),opacity .3s}
.island-cta{display:flex;align-items:center;gap:10px;flex:none;padding:0 6px 0 18px;height:42px;border-radius:40px;background:var(--green);color:#17132f;font-size:14px;font-weight:700;transition:background .3s}
.island-cta span{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:#17132f;color:var(--green);transition:transform .5s var(--ease)}
.island-cta:hover span{transform:rotate(45deg)}
.island-menu{display:none;position:relative;width:42px;height:42px;border-radius:50%;border:0;background:#ffffff1f;flex:none}
.island-menu i{position:absolute;left:13px;width:16px;height:1.5px;background:#fff;top:17px}.island-menu i+i{top:23px}
.island-progress{position:absolute;left:22px;right:22px;bottom:0;height:2px;border-radius:2px;background:linear-gradient(90deg,var(--green),var(--sculpture-front));transform-origin:left;transform:scaleX(0)}
.island a:focus-visible,.island button:focus-visible{outline:2px solid var(--green);outline-offset:2px}
@media(max-width:1000px){
 .island-links{display:none}
 .island .island-current{max-width:220px;opacity:1;padding:0 10px 0 6px}
 .island-menu{display:block}
}
@media(max-width:800px){.island.is-visible.is-compact{transform:translateY(-140%);opacity:0}}
@media(max-width:420px){.island-cta{padding:0;width:42px;justify-content:center;font-size:0;gap:0}.island-cta span{font-size:16px}}
.motion-off .island{transition:opacity .2s}

/* Fascia: anteprima che segue il cursore */
.client-band{position:relative}
.band-preview{position:absolute;left:0;top:0;z-index:3;display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:10px;background:#fff;color:#17132f;box-shadow:6px 6px 0 var(--sculpture-front);pointer-events:none;opacity:0;transition:opacity .25s;white-space:nowrap}
.band-preview.is-on{opacity:1}
.band-preview code{font:600 13px/1.2 ui-monospace,SFMono-Regular,Menlo,monospace}
.band-preview-dot{width:8px;height:8px;border-radius:50%;background:var(--green);box-shadow:0 0 0 3px color-mix(in srgb,var(--green) 35%,transparent)}
.client-set>span[data-preview]{cursor:default}

/* Prova: foglia che accompagna lo scroll e diventa CTA */
.leaf-follow body>.sculpture{position:fixed;right:-6vw;top:9vh;width:42vw;height:68vh;z-index:6;transform-origin:50% 50%;will-change:transform}
.leaf-follow .hero{isolation:auto}
.leaf-follow .hero .hero-title,.leaf-follow .contact-title-link,.leaf-follow .hero-copy,.leaf-follow .hero-actions,.leaf-follow .hero-bottom{position:relative;z-index:7}
.leaf-cta{position:fixed;right:26px;top:calc(var(--leaf-cy,calc(100vh - 91px)) - 65px);z-index:11;width:130px;height:130px;border-radius:50%;pointer-events:none;outline:none}
.leaf-docked .leaf-cta{pointer-events:auto;cursor:pointer}
.leaf-cta::before{content:"";position:absolute;inset:8px;border-radius:50%;border:1.5px dashed currentColor;opacity:0;transform:scale(.8) rotate(0);transition:opacity .4s,transform .6s var(--ease);color:var(--ink)}
.leaf-docked .leaf-cta:hover::before,.leaf-docked .leaf-cta:focus-visible::before{opacity:.5;transform:scale(1.08) rotate(90deg)}
.leaf-bubble{position:absolute;right:calc(100% - 6px);bottom:62%;display:flex;align-items:center;gap:10px;white-space:nowrap;padding:12px 12px 12px 18px;border-radius:24px 24px 6px 24px;background:#17132f;color:#fff;font-size:15px;font-weight:700;box-shadow:6px 6px 0 var(--green);opacity:0;transform:translate(14px,10px) scale(.7);transform-origin:100% 100%;transition:opacity .3s,transform .55s cubic-bezier(.34,1.56,.64,1);pointer-events:none}
.leaf-bubble-text{display:inline-block}
.leaf-disc{display:none}
/* foglia presa in prestito da un'altra sezione (index.js): niente fumetto, niente disco */
.leaf-busy .leaf-cta,.leaf-busy .leaf-disc{opacity:0;pointer-events:none!important}
.leaf-bubble i{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--green);color:#17132f;font-style:normal;transition:transform .5s var(--ease)}
.leaf-docked .leaf-cta:hover .leaf-bubble,.leaf-docked .leaf-cta:focus-visible .leaf-bubble,.leaf-docked .leaf-cta.is-peek .leaf-bubble{opacity:1;transform:none}
.leaf-cta:hover .leaf-bubble i{transform:rotate(45deg)}
.leaf-docked .leaf-cta:focus-visible .leaf-bubble{outline:2px solid var(--green);outline-offset:3px}
@media(max-width:800px){
 .leaf-follow body>.sculpture{right:-12vw;top:5vh;width:74vw;height:40vh}
 .leaf-cta{right:12px;top:calc(var(--leaf-cy,calc(100vh - 45px)) - 33px);width:66px;height:66px}
 .leaf-cta::before{display:none}
 /* disco scuro sotto la foglia parcheggiata: si legge come pulsante e non si confonde col testo */
 .leaf-disc{display:block;position:fixed;z-index:5;right:15px;top:calc(var(--leaf-cy,calc(100vh - 45px)) - 30px);width:60px;height:60px;border-radius:50%;background:#17132f;border:1px solid #ffffff26;box-shadow:4px 4px 0 var(--green);transform:scale(0);transition:transform .45s cubic-bezier(.34,1.56,.64,1);pointer-events:none}
 .leaf-docked .leaf-disc{transform:none}
 .leaf-docked body>.sculpture{opacity:1}
 .leaf-follow .hero .hero-eyebrow{position:relative;z-index:7}
 .leaf-bubble{font-size:13px;padding:9px 9px 9px 14px;right:calc(100% + 2px);bottom:50%;width:max-content;max-width:calc(100vw - 100px);white-space:normal;line-height:1.25}
 .leaf-bubble i{width:24px;height:24px;flex:none}
}
.build-index,.method-steps article .step-number{line-height:1;text-box:trim-both cap alphabetic;font-variant-numeric:tabular-nums}
/* Illustrazioni dei passaggi: in alto a destra, si disegnano quando la scheda arriva */
.method-steps article{position:sticky}
.method-steps article .step-art{position:absolute;top:clamp(18px,2.4vw,34px);right:clamp(18px,2.6vw,40px);width:clamp(110px,11vw,170px);height:auto;color:var(--ink);overflow:visible}
.method-steps article h3{padding-right:clamp(0px,9vw,150px)}
.step-art .fill{transform:translate(6px,6px)}
.step-art .art-lines{stroke-width:2.5;opacity:0}
.art-ready .step-art .draw{stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset 1s var(--ease)}
.art-ready .step-art .fill{opacity:0;transform:translate(0,0);transition:opacity .3s,transform .6s cubic-bezier(.34,1.56,.64,1) .55s}
.art-ready .step-art .art-ring{transform-origin:80px 60px;transform:scale(1.35);transition:transform 1.1s cubic-bezier(.34,1.3,.64,1) .2s}
.art-ready .step-art .art-corners{transform-origin:80px 60px;transform:scale(1.18);transition:transform .9s var(--ease) .3s}
.art-ready .step-art .art-drop{transform:translateY(-46px);opacity:0;transition:transform .7s cubic-bezier(.3,1.6,.6,1) .5s,opacity .2s .5s}
.art-ready .step-art .art-drop .art-lines{transition:opacity .2s 1s}
.art-ready .is-in .step-art .draw{stroke-dashoffset:0}
.art-ready .is-in .step-art .draw:nth-of-type(2){transition-delay:.12s}
.art-ready .is-in .step-art .draw:nth-of-type(3){transition-delay:.24s}
.art-ready .is-in .step-art .art-pulse{transition:stroke-dashoffset 1.4s cubic-bezier(.5,0,.3,1) .35s}
.art-ready .is-in .step-art .fill{opacity:1;transform:translate(6px,6px)}
.art-ready .is-in .step-art .art-ring,.art-ready .is-in .step-art .art-corners{transform:none}
.art-ready .is-in .step-art .art-drop{transform:none;opacity:1}
.art-ready .is-in .step-art .art-drop .art-lines{opacity:1}
.is-in .step-art .art-live-ring{transform-origin:124px 27px;animation:art-live 1.8s ease-out 1.2s infinite}
@keyframes art-live{0%{transform:scale(1);opacity:.9}100%{transform:scale(3.2);opacity:0}}
.method-steps article:hover .step-art .art-ring{transform:scale(.92);transition-delay:0s}
.method-steps article:hover .step-art .art-drop{transform:translateY(-6px) rotate(-3deg);transition-delay:0s}
.motion-off .step-art *{transition:none!important;animation:none!important}
@media(max-width:700px){.method-steps article .step-art{width:92px;top:20px;right:18px}.method-steps article h3{padding-right:0}}

/* Menu mobile: si apre dal bottone come un'estensione dell'header.
   Logo e bottone restano al loro posto, il ☰ diventa ✕. */
.mobile-menu{inset:0;width:100%;max-width:100%;height:100dvh;max-height:none;min-height:0;margin:0;padding:0 var(--g) calc(24px + env(safe-area-inset-bottom));flex-direction:column;overflow:hidden auto;overscroll-behavior:contain;background:var(--agency-bg);color:var(--agency-fg)}
.mobile-menu[open]{display:flex}
.mobile-menu::backdrop{background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none}
.menu-top{position:relative;z-index:1;display:flex;align-items:center;gap:20px;margin:0;padding-top:20px}
.menu-brand{width:132px;flex:none}
.menu-brand img{display:block;width:100%;height:auto}
.menu-top .lang-switch{margin:0 0 0 auto;min-height:44px;min-width:44px}
.menu-close{position:relative;flex:none;width:44px;height:44px;padding:0;border:1px solid currentColor;border-radius:50%;background:transparent;color:inherit;font-size:0}
.menu-close i{position:absolute;left:11px;top:16px;width:20px;height:1px;background:currentColor;transition:transform .5s var(--ease)}
.menu-close i:last-child{top:25px}
.mobile-menu.is-open .menu-close i{transform:translateY(4.5px) rotate(45deg)}
.mobile-menu.is-open .menu-close i:last-child{transform:translateY(-4.5px) rotate(-45deg)}
.mobile-menu nav{position:relative;z-index:1;counter-reset:m;display:flex;flex-direction:column;gap:0;margin-top:clamp(28px,7vh,64px)}
.mobile-menu nav a{counter-increment:m;display:flex;align-items:center;gap:16px;padding:15px 0;border-bottom:1px solid color-mix(in srgb,var(--agency-fg) 22%,transparent);font-size:clamp(30px,8.4vw,46px);font-weight:500;line-height:1.05;letter-spacing:-.04em;transition:color .3s}
.mobile-menu nav a:first-child{border-top:1px solid color-mix(in srgb,var(--agency-fg) 22%,transparent)}
.mobile-menu nav a::before{content:counter(m,decimal-leading-zero);align-self:flex-start;margin-top:.35em;font:500 12px/1 ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.04em;opacity:.6}
.mobile-menu nav a::after{content:"↗";margin-left:auto;font-size:.55em;opacity:.35;transition:transform .4s var(--ease),opacity .3s}
.mobile-menu nav a:is(:hover,:active,.is-current){color:var(--agency-accent)}
.mobile-menu nav a:is(:hover,:active,.is-current)::after{opacity:1;transform:translate(3px,-3px)}
.mobile-menu nav a.is-current::before{opacity:1}
.menu-foot{position:relative;z-index:1;margin-top:auto;padding-top:36px}
.menu-cta{display:flex;align-items:center;justify-content:space-between;min-height:64px;padding:8px 8px 8px 24px;border-radius:100px;background:var(--agency-accent);color:#17132f;font-size:20px;font-weight:700;box-shadow:6px 6px 0 #17132f}
.menu-cta span{display:grid;place-items:center;width:48px;height:48px;border-radius:50%;background:#17132f;color:var(--agency-accent);font-size:22px;transition:transform .5s var(--ease)}
.menu-cta:is(:hover,:active) span{transform:rotate(45deg)}
.menu-meta{display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px 20px;margin-top:26px;font-size:15px}
.menu-meta a{border-bottom:1px solid color-mix(in srgb,currentColor 45%,transparent)}
.menu-meta .client-area{margin:0;font-size:15px}
.menu-leaf{position:absolute;right:-22vw;bottom:18vh;width:min(88vw,520px);height:auto;opacity:.09;transform:rotate(-18deg);pointer-events:none}
@media(max-width:520px){.menu-top{padding-top:18px;gap:15px}.menu-brand{width:115px}}
@media(max-height:620px){.mobile-menu nav a{padding:10px 0;font-size:28px}.menu-foot{padding-top:24px}}
/* Le frecce di Frecce.woff2 stanno ~0,1em sopra il centro della riga di Cabinet: nei cerchi le riportiamo al centro. */
.header-contact span,.menu-cta span,.island-cta span,.pill>span,.leaf-bubble i{padding-top:.2em}

/* Barra flottante (16/10): si legge come indice della pagina, il menu del sito è dietro le lineette */
/* 1. il bottone del menu c'è anche su desktop, in fondo dopo "Parliamone" */
.island-menu{display:block}
.island-menu:hover{background:#ffffff33}
/* 2. la foglia porta in cima: al passaggio diventa una freccia */
.island-leaf{position:relative;overflow:hidden}
.island-leaf img,.island-up{transition:transform .45s var(--ease),opacity .3s}
.island-up{position:absolute;inset:0;display:grid;place-items:center;font-size:19px;font-weight:700;color:#fff;transform:translateY(100%);opacity:0}
.island-leaf:hover{transform:none}
.island-leaf:hover img,.island-leaf:focus-visible img{transform:translateY(-120%);opacity:0}
.island-leaf:hover .island-up,.island-leaf:focus-visible .island-up{transform:none;opacity:1}
/* 3. etichetta prima delle voci */
.island-label{position:relative;z-index:1;align-self:center;padding:0 4px 0 10px;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;opacity:.55}

/* Pannello del menu sotto la barra flottante: stesso fondo, bordo e ombra della barra, attaccato sotto */
.island-panel{position:fixed;z-index:12;padding:10px;border-radius:30px;color:#fff;background:#17132f;border:1px solid #ffffff26;box-shadow:0 24px 60px -16px #17132f99,inset 0 1px 0 #ffffff1f;transform-origin:50% 0;transform:translateY(-10px) scaleY(.92);opacity:0;transition:transform .45s cubic-bezier(.34,1.3,.64,1),opacity .25s}
.island-panel.is-open{transform:none;opacity:1}
.ip-links{list-style:none;margin:0;padding:0}
.ip-links li{opacity:0;transform:translateY(8px);transition:opacity .35s,transform .45s var(--ease);transition-delay:calc(var(--i) * 45ms + 80ms)}
.island-panel.is-open .ip-links li{opacity:1;transform:none}
.ip-links a{display:flex;align-items:center;gap:14px;padding:16px 18px;border-radius:20px;font-size:clamp(22px,2vw,28px);font-weight:700;letter-spacing:-.02em;transition:background .25s,color .25s}
.ip-links a:hover,.ip-links a:focus-visible{background:#fff;color:#17132f}
.ip-links a[aria-current]{color:var(--green)}
.ip-links a[aria-current]:hover{color:#17132f}
.ip-num{font-size:12px;font-weight:700;letter-spacing:.06em;opacity:.5}
.ip-arrow{margin-left:auto;transition:transform .35s var(--ease)}
.ip-links a:hover .ip-arrow{transform:translateX(4px)}
.ip-foot{display:flex;flex-wrap:wrap;justify-content:space-between;gap:10px 18px;margin-top:6px;padding:14px 18px 8px;border-top:1px solid #ffffff1f;font-size:14px}
.ip-foot a{opacity:.75;transition:opacity .2s}
.ip-foot a:hover{opacity:1;text-decoration:underline}
/* le lineette diventano ✕ sul posto */
.island-menu i{transition:transform .4s var(--ease),top .4s var(--ease)}
.island.menu-open .island-menu{background:#fff}
.island.menu-open .island-menu i{top:20px;background:#17132f;transform:rotate(45deg)}
.island.menu-open .island-menu i+i{transform:rotate(-45deg)}
/* con il pannello aperto la barra resta larga e visibile */
.island.menu-open{transform:none;opacity:1}
@media(prefers-reduced-motion:reduce){.island-panel,.ip-links li,.island-menu i{transition:none}}

/* Sottomenu Servizi: una card che sale sopra il pannello */
.island-panel{overflow:hidden;transition:transform .45s cubic-bezier(.34,1.3,.64,1),opacity .25s,height .45s var(--ease)}
.ip-main{transition:opacity .3s,transform .45s var(--ease)}
.island-panel.has-sub .ip-main{opacity:.35;transform:scale(.97)}
.ip-open{display:flex;align-items:center;gap:14px;width:100%;padding:16px 18px;border:0;border-radius:20px;background:none;color:inherit;font:inherit;font-size:clamp(22px,2vw,28px);font-weight:700;letter-spacing:-.02em;text-align:left;cursor:pointer;transition:background .25s,color .25s}
.ip-open:hover,.ip-open:focus-visible{background:#fff;color:#17132f}
.ip-open:hover .ip-arrow{transform:translateX(4px)}
.ip-sub{position:absolute;left:6px;right:6px;top:6px;overflow-y:auto;overscroll-behavior:contain;padding:12px 14px 16px;border-radius:24px;background:#2a2450;border:1px solid #ffffff26;box-shadow:0 -10px 40px -10px #0008;transform:translateY(40px) scale(.98);opacity:0;transition:transform .5s cubic-bezier(.34,1.2,.64,1),opacity .3s}
.ip-sub.is-open{transform:none;opacity:1}
.ip-sub-head{display:flex;justify-content:space-between;align-items:center;gap:12px}
.ip-back{padding:9px 14px;border:1px solid #ffffff33;border-radius:99px;background:none;color:#fff;font:inherit;font-size:14px;font-weight:700;cursor:pointer}
.ip-back:hover{background:#fff;color:#17132f}
.ip-all{font-size:14px;font-weight:700;opacity:.8}
.ip-all:hover{opacity:1;text-decoration:underline}
.ip-sub-title{margin:16px 4px 6px;font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;opacity:.55}
.ip-sub-list{list-style:none;margin:0;padding:0;display:grid;gap:2px}
.ip-sub-list li{opacity:0;transform:translateY(8px);transition:opacity .3s,transform .4s var(--ease);transition-delay:calc(var(--i) * 35ms + 120ms)}
.ip-sub.is-open .ip-sub-list li{opacity:1;transform:none}
.ip-sub-main{display:block;padding:10px 12px;border-radius:14px;font-size:clamp(18px,1.6vw,22px);font-weight:700;letter-spacing:-.01em}
.ip-sub-main:hover,.ip-sub-main:focus-visible{background:#fff;color:#17132f}
.ip-sub-main[aria-current]{color:var(--green)}
.ip-sub-tech{display:flex;flex-wrap:wrap;gap:6px;padding:0 12px 10px}
.ip-sub-tech a{padding:4px 10px;border:1px solid #ffffff2e;border-radius:99px;font-size:13px;opacity:.85}
.ip-sub-tech a:hover{background:#fff;color:#17132f;opacity:1}
/* lingue: una pillola per lingua, quella attuale piena */
.ip-foot{align-items:center}
.ip-langs{display:flex;gap:6px;list-style:none;margin:0;padding:0}
.ip-langs a{display:block;min-width:38px;padding:6px 10px;border:1px solid #ffffff33;border-radius:99px;font-size:12px;font-weight:700;letter-spacing:.06em;text-align:center;opacity:1}
.ip-langs a:hover{background:#ffffff1f;text-decoration:none}
.ip-langs a[aria-current]{background:#fff;color:#17132f;border-color:#fff}
@media(prefers-reduced-motion:reduce){.ip-sub,.ip-sub-list li,.ip-main,.island-panel{transition:none}}
/* voce della pagina attuale: al passaggio scura come le altre (verde su bianco non si leggeva) */
.ip-sub-main[aria-current]:hover,.ip-sub-main[aria-current]:focus-visible{color:#17132f}
/* spazio tra le tecnologie di un servizio e il servizio dopo */
.ip-sub-list{gap:10px}
.ip-sub-tech{padding:4px 12px 0}
/* uscita verso un'altra pagina: le voci sfumano mentre parte il passaggio */
.mobile-menu.is-leaving nav,.mobile-menu.is-leaving .menu-foot,.island-panel.is-leaving .ip-main,.island-panel.is-leaving .ip-sub{opacity:.25;transition:opacity .35s}
