/* ==========================================================================
   Duo Motion, stile della home
   ========================================================================== */

/* ================= HERO (scrub) ================= */
.hero{position:relative;height:520vh;height:max(520vh,3800px)} /* schermi bassi (telefono coricato): ogni fascia resta piena abbastanza a lungo */
.hero-stage{position:sticky;top:0;height:100vh;height:100lvh;overflow:hidden;background:#05060B}
/* uscita: il fondo del palco diventa trasparente e il bordo basso sfuma (--hf da 0 a 1, solo mentre esce) */
.hero-stage.leaving{background:transparent;
  -webkit-mask-image:linear-gradient(to bottom,#000 calc(100% - var(--hf,0) * 42%),transparent);
  mask-image:linear-gradient(to bottom,#000 calc(100% - var(--hf,0) * 42%),transparent)}
.hero .poster{position:absolute;inset:0;background-size:cover;background-position:center}
.hero .hero-frames{position:absolute;inset:0;width:100%;height:100%;display:block;opacity:0;transition:opacity .9s var(--ease-out)}
.hero-stage.video-ready .hero-frames{opacity:1}
.hero-stage.video-failed .hero-frames{display:none}
.hero .scrim{position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(ellipse 120% 90% at 50% 45%,rgba(5,5,10,.2) 35%,rgba(5,5,10,.66) 100%),
             linear-gradient(to bottom,rgba(5,6,11,.55) 0%,rgba(5,6,11,0) 18%,rgba(5,6,11,0) 78%,rgba(7,8,13,.9) 100%)}

.band{position:absolute;opacity:0;text-shadow:var(--tshadow);pointer-events:none;--k:0}
.band .btn{text-shadow:none}
.band.live{pointer-events:auto}
.band::before{content:"";position:absolute;inset:-40% -28%;z-index:-1;pointer-events:none;opacity:calc(.25 + .75*var(--k,1));
  background:radial-gradient(closest-side,rgba(5,5,10,var(--sa,.66)) 0%,rgba(5,5,10,calc(var(--sa,.66)*.94)) 60%,rgba(5,5,10,calc(var(--sa,.66)*.5)) 82%,rgba(5,5,10,0) 100%)}

/* fascia 1: titolo centrale interattivo */
.b1{left:50%;top:50%;transform:translate(-50%,-50%);width:min(1240px,92vw);text-align:center;--sa:.84}
.b1::before{inset:-48% -30%}
.kicker{display:inline-block;font:600 12px/1 var(--f-label);letter-spacing:.22em;text-transform:uppercase;color:#D6DAE6;margin-bottom:22px;padding:10px 14px 10px 17px;border-radius:99px;
  background:rgba(8,8,15,.62);border:1px solid rgba(150,150,190,.22);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);text-shadow:0 1px 3px rgba(5,5,10,.85);
  opacity:calc(var(--k)*1)}
.hero-title{font-family:var(--f-display);line-height:.9;letter-spacing:-.03em;color:#fff}
.ht-a{display:block;font-size:clamp(64px,13.2vw,228px);white-space:nowrap}
.ht-a .wd{display:inline-block}
.ht-a .b{font-weight:800}
.ht-a .l{font-weight:300}
.ht-a .sp{display:inline-block;width:.24em}
.ht-a .ch{display:inline-block;--kc:clamp(0,(var(--k,0) - var(--th,0))*2.4,1);opacity:var(--kc);
  transform:translate(calc((1 - var(--kc))*var(--jx,0px)),calc((1 - var(--kc))*var(--jy,0px))) rotate(calc((1 - var(--kc))*var(--jr,0deg)))}
.ht-a .ch > span{display:inline-block;will-change:transform}
.ht-a{position:relative}
.ht-gl{position:absolute;left:-14%;right:-14%;top:-75%;bottom:-75%;pointer-events:none;opacity:0;transition:opacity 1s var(--ease-out)}
.ht-gl canvas{display:block;width:100%;height:100%}
.hero-title.gl .ht-gl{opacity:1}
.hero-title.gl .ht-a .wd,.hero-title.gl .ht-a .sp{visibility:hidden}
.ht-b{display:block;margin-top:clamp(10px,1.4vw,22px);font:500 clamp(16px,1.76vw,28px)/1 "Outfit",var(--f-label);letter-spacing:.42em;margin-right:-.42em;color:#E3E6F0;
  opacity:clamp(0,(var(--k) - .35)*2.4,1);transform:translateY(calc((1 - clamp(0,(var(--k) - .35)*2.4,1))*14px))}
.hero-sub{margin:clamp(22px,2.6vw,34px) auto 0;max-width:34ch;font-size:clamp(17px,1.5vw,21px);color:#E3E6F0;
  opacity:clamp(0,(var(--k) - .55)*2.6,1);transform:translateY(calc((1 - clamp(0,(var(--k) - .55)*2.6,1))*16px))}
.static-cta{display:none;margin-top:30px}

/* fascia 2: a sinistra, parole che scendono */
.b2{left:var(--gutter);top:50%;transform:translateY(-50%);width:min(680px,88vw);--sa:.92}
.b2::before{inset:-60% -48% -48% -34%}
.band-title{font-family:var(--f-display);font-weight:800;font-size:clamp(38px,5.2vw,82px);line-height:1;letter-spacing:-.025em;color:#fff}
.b2 .band-title .w{display:inline-block;--kc:clamp(0,(var(--k,0) - var(--th,0))*2.8,1);opacity:var(--kc);transform:translateY(calc((1 - var(--kc))*-26px))}
.b2 p{margin-top:24px;max-width:40ch;font-size:clamp(17px,1.35vw,20px);color:#E3E6F0;
  opacity:clamp(0,(var(--k) - .5)*3,1);transform:translateY(calc((1 - clamp(0,(var(--k) - .5)*3,1))*12px))}

/* fascia 3: in basso al centro, tra i bracci degli anelli */
.b3{left:50%;bottom:clamp(36px,8vh,96px);transform:translateX(-50%);width:min(980px,92vw);text-align:center;--sa:.84}
.b3::before{inset:-60% -26% -42%}
.b3 .band-title{font-size:clamp(40px,5.6vw,92px)}
.b3 .band-title em{font-style:normal;font-weight:300}
.b3 .band-title em .w{background:linear-gradient(100deg,#8DB8FF,#BFA9FF);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:none;
  filter:drop-shadow(0 2px 14px rgba(5,5,10,.95))}
.b3 .band-title .w{display:inline-block;--kc:clamp(0,(var(--k,0) - var(--th,0))*3,1);opacity:var(--kc);transform:translateY(calc((1 - var(--kc))*34px))}
.b3-sub{margin:22px auto 0;max-width:52ch;color:#E3E6F0;font-size:clamp(16px,1.25vw,19px);
  --ks:clamp(0,(var(--k) - .62)*4,1);opacity:var(--ks);transform:translateY(calc((1 - var(--ks))*14px))}
.b3-cta{margin-top:30px;display:flex;gap:14px;justify-content:center;flex-wrap:wrap;
  --kb:clamp(0,(var(--k) - .76)*5,1);opacity:var(--kb);transform:translateY(calc((1 - var(--kb))*16px))}

/* interfaccia: anello di caricamento, invito a scorrere, avanzamento */
.hero-ui{position:absolute;left:0;right:0;bottom:28px;display:flex;justify-content:center;pointer-events:none}
.loader{display:flex;align-items:center;gap:12px;font:600 11px/1 var(--f-label);letter-spacing:.2em;text-transform:uppercase;color:var(--text-secondary);transition:opacity .6s;font-variant-numeric:tabular-nums}
.loader .ring{width:28px;height:28px;transform:rotate(-90deg)}
.loader .ring circle{fill:none;stroke-width:3}
.loader .ring-bg{stroke:rgba(255,255,255,.12)}
.loader .ring-fg{stroke:#8B9CFF;transition:stroke-dashoffset .2s linear}
.hero-stage.video-ready .loader,.hero-stage.video-failed .loader,.hero-stage.static .loader{opacity:0}
.cue{position:absolute;bottom:0;display:flex;flex-direction:column;align-items:center;gap:10px;font:600 11px/1 var(--f-label);letter-spacing:.24em;text-transform:uppercase;color:#C9CDDB;opacity:0;transition:opacity .8s}
.hero-stage.video-ready .cue,.hero-stage.video-failed .cue{opacity:1}
.hero-stage.scrolled .cue{opacity:0}
.cue-line{width:1px;height:46px;background:linear-gradient(to bottom,rgba(255,255,255,0),#fff);transform-origin:top;animation:cue 2.2s var(--ease-io) infinite;animation-delay:-.6s}
@keyframes cue{0%{transform:scaleY(0);opacity:1}55%{transform:scaleY(1);opacity:1}100%{transform:scaleY(1);opacity:0}}
.hero-progress{position:absolute;right:var(--gutter);bottom:4px;width:2px;height:120px;background:rgba(255,255,255,.12);border-radius:2px;overflow:hidden}
.hero-progress i{position:absolute;inset:0;background:var(--grad);transform-origin:top;transform:scaleY(var(--p,0))}

/* telefono: la hero è viva come sul computer, con il film verticale; qui solo misure adatte allo schermo piccolo */
@media (max-width:720px){
  .ht-a{font-size:clamp(40px,11.6vw,120px)}
  .kicker{font-size:11px;letter-spacing:.11em}
  .ht-b{letter-spacing:.3em;margin-right:-.3em;font-size:clamp(13px,3.9vw,20px)}
  .hero-sub{font-size:16px;max-width:30ch}
  .b2{width:calc(100vw - 2*var(--gutter))}
  .b2 .band-title{font-size:clamp(34px,9.4vw,48px)}
  .b2 p{font-size:16px}
  .b3{bottom:clamp(26px,6vh,56px)}
  .b3 .band-title{font-size:clamp(34px,9.4vw,48px)}
  .b3-sub{font-size:15.5px}
  .b3-cta{gap:10px}
  .hero-progress{height:72px}
}
@media (max-height:560px){.cue,.hero-progress{display:none}}

/* ================= intestazioni centrate ================= */
.head.center{align-items:center;text-align:center}
.head.center .lede{margin-left:auto;margin-right:auto}

/* ================= 01 CONFRONTO ================= */
.compare{max-width:1180px;margin:0 auto}
.browser{border-radius:18px;overflow:hidden;border:1px solid var(--line-strong);background:#0C0E16;box-shadow:0 60px 120px -40px rgba(0,0,0,.8),0 0 0 1px rgba(255,255,255,.02)}
.b-bar{height:40px;display:flex;align-items:center;gap:8px;padding:0 16px;background:#11131D;border-bottom:1px solid var(--line)}
.b-bar i{width:10px;height:10px;border-radius:50%;background:#2A2E3D}
.b-bar i:nth-child(1){background:#FF5F57}.b-bar i:nth-child(2){background:#FEBC2E}.b-bar i:nth-child(3){background:#28C840}
.b-url{margin-left:14px;flex:1;max-width:340px;height:24px;border-radius:7px;background:#1A1D2A;font:600 11px/24px var(--f-label);letter-spacing:.06em;color:var(--text-secondary);padding:0 12px;overflow:hidden;white-space:nowrap}
.cmp-view{position:relative;aspect-ratio:16/9;overflow:hidden;--x:22%;user-select:none;touch-action:pan-y}
.cmp-layer{position:absolute;inset:0}
.cmp-pro{clip-path:inset(0 calc(100% - var(--x)) 0 0)}

/* il modello già pronto: volutamente anonimo */
.cmp-tpl{background:#fff;color:#333;font-family:Arial,Helvetica,sans-serif;display:flex;flex-direction:column}
.tpl-top{display:flex;justify-content:space-between;align-items:center;padding:2.2% 4%;background:#f2f2f2;border-bottom:3px solid #1a5fb4;font-size:clamp(8px,1.05vw,14px)}
.tpl-top b{color:#1a5fb4;font-family:"Times New Roman",serif;font-size:1.35em;letter-spacing:.02em}
.tpl-top span{color:#1a5fb4;text-decoration:underline}
.tpl-slider{position:relative;margin:2.4% 4% 0;height:44%;display:flex;align-items:center;gap:1.5%}
.tpl-img{flex:1;height:100%;background:#ccc center/cover;filter:saturate(.75) contrast(.9)}
.tpl-arrow{font-size:clamp(14px,2.2vw,30px);color:#999}
.tpl-body{padding:2.4% 4%;font-size:clamp(7px,1vw,14px);line-height:1.5}
.tpl-body h3{font:700 clamp(10px,1.6vw,22px)/1.2 "Times New Roman",serif;color:#1a5fb4;margin-bottom:1.2%}
.tpl-body p{max-width:70ch;color:#555}
.tpl-btn{display:inline-block;margin-top:1.8%;padding:.6em 1.4em;background:linear-gradient(#f7f7f7,#ddd);border:1px solid #aaa;border-radius:3px;color:#333}
.tpl-foot{margin-top:auto;padding:1.4% 4%;background:#333;color:#bbb;font-size:clamp(6px,.8vw,11px)}

/* lo stesso ristorante, fatto da Duo Motion */
.cmp-pro{background:#0E2233;color:#F2EFE8;font-family:Fraunces,Georgia,serif;overflow:hidden}
.pro-img{position:absolute;inset:0;background:#0E2233 center/cover;transform:scale(1.08);transition:transform 8s var(--ease-out)}
.compare.in .pro-img{transform:scale(1)}
.pro-img::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(9,22,33,.92) 0%,rgba(9,22,33,.55) 46%,rgba(9,22,33,.1) 100%),linear-gradient(to top,rgba(9,22,33,.85),rgba(9,22,33,0) 40%)}
.pro-nav{position:absolute;top:0;left:0;right:0;display:flex;justify-content:space-between;align-items:center;padding:3.2% 5%;font-size:clamp(10px,1.3vw,18px)}
.pro-nav b{font-weight:600;font-size:1.5em;letter-spacing:.02em}
.pro-nav span{font:600 .62em/1 var(--f-label);letter-spacing:.2em;text-transform:uppercase;color:#E8DCC0}
.pro-hero{position:absolute;left:5%;top:24%;max-width:52%}
.pro-kick{font:600 clamp(7px,.8vw,12px)/1 var(--f-label);letter-spacing:.24em;text-transform:uppercase;color:#C9A15A}
.pro-hero h3{margin-top:4%;font-weight:400;font-size:clamp(30px,6.4vw,92px);line-height:.95;letter-spacing:-.02em}
.pro-hero h3 em{color:#C9A15A;font-style:italic}
.pro-btn{display:inline-block;margin-top:8%;padding:.95em 1.8em;border-radius:99px;background:#C9A15A;color:#0E2233;font:600 clamp(7px,.82vw,13px)/1 var(--f-label);letter-spacing:.16em;text-transform:uppercase;box-shadow:0 10px 40px -10px rgba(201,161,90,.6)}
.pro-live{position:absolute;right:5%;top:46%;display:flex;align-items:center;gap:.8em;padding:.8em 1.2em;border-radius:99px;background:rgba(9,22,33,.6);border:1px solid rgba(242,239,232,.18);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);font:600 clamp(7px,.78vw,12px)/1 var(--f-label);letter-spacing:.08em}
.pro-live i{width:.6em;height:.6em;border-radius:50%;background:#7EE2A8;box-shadow:0 0 0 0 rgba(126,226,168,.6);animation:live 2s ease-out infinite;animation-delay:-.4s}
@keyframes live{0%{box-shadow:0 0 0 0 rgba(126,226,168,.55)}100%{box-shadow:0 0 0 .9em rgba(126,226,168,0)}}
.pro-ticker{position:absolute;left:0;right:0;bottom:0;padding:1.4% 0;border-top:1px solid rgba(242,239,232,.15);overflow:hidden;white-space:nowrap;font:600 clamp(7px,.85vw,13px)/1 var(--f-label);letter-spacing:.14em;text-transform:uppercase;color:#E8DCC0}
.pro-track{display:inline-block;animation:ticker 26s linear infinite;animation-delay:-6s;padding-left:4%}
@keyframes ticker{to{transform:translateX(-50%)}}

.cmp-tag{position:absolute;top:calc(40px + 3%);padding:8px 12px;border-radius:99px;font:600 10px/1 var(--f-label);letter-spacing:.16em;text-transform:uppercase;transition:opacity .4s;pointer-events:none}
.cmp-tag-l{right:3%;background:#1a5fb4;color:#fff}
.cmp-tag-r{left:3%;background:rgba(201,161,90,.95);color:#0E2233}
.cmp-tag{top:auto;bottom:16%}
.cmp-handle{position:absolute;top:0;bottom:0;left:var(--x);width:44px;margin-left:-22px;cursor:ew-resize;display:flex;align-items:center;justify-content:center;z-index:3;touch-action:none}
.cmp-handle::before{content:"";position:absolute;top:0;bottom:0;left:50%;width:2px;margin-left:-1px;background:linear-gradient(to bottom,#3B82F6,#8B5CF6);box-shadow:0 0 18px rgba(109,108,247,.9)}
.cmp-knob{position:relative;width:52px;height:52px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;background:rgba(10,12,20,.75);border:1px solid rgba(255,255,255,.35);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:transform .4s var(--ease-out)}
.cmp-knob::after{content:"";position:absolute;inset:-6px;border-radius:50%;border:1px solid rgba(139,92,246,.5);animation:knob 2.4s ease-out infinite;animation-delay:-1s}
@keyframes knob{0%{transform:scale(.85);opacity:1}100%{transform:scale(1.5);opacity:0}}
.cmp-handle.dragging .cmp-knob{transform:scale(1.12)}
@media (hover:hover) and (pointer:fine){.cmp-handle:hover .cmp-knob{transform:scale(1.12)}}
.cmp-hint{position:absolute;top:calc(50% + 40px);font:600 10px/1 var(--f-label);letter-spacing:.2em;text-transform:uppercase;color:#fff;text-shadow:0 1px 6px #000;transition:opacity .4s}
.compare.touched .cmp-hint{opacity:0}
.cmp-done{min-height:1.6em;margin-top:22px;text-align:center;font:600 13px/1.6 var(--f-label);letter-spacing:.1em;color:var(--text-secondary);transition:color .6s}
.compare.complete .cmp-done{color:#fff}
.compare.complete .browser{box-shadow:0 60px 120px -40px rgba(0,0,0,.8),0 0 0 1px rgba(139,92,246,.45),0 0 80px -10px rgba(109,108,247,.45);transition:box-shadow 1s var(--ease-out)}
.compare.complete .pro-btn{animation:btnpulse 2.4s ease-in-out infinite}
@keyframes btnpulse{50%{box-shadow:0 10px 60px -6px rgba(201,161,90,.95)}}

/* ================= 02 SHOWREEL ================= */
.reel-head{align-items:flex-start}
.reel{max-width:1240px;margin:0 auto}
.reel-stage{position:relative;aspect-ratio:16/9;border-radius:22px;overflow:hidden;background:radial-gradient(ellipse at 50% 30%,#141830 0%,#0A0C14 60%);border:1px solid var(--line-strong);
  box-shadow:0 60px 140px -50px rgba(0,0,0,.9)}
.reel-grid{position:absolute;inset:0;opacity:.35;background-image:linear-gradient(rgba(255,255,255,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.05) 1px,transparent 1px);background-size:60px 60px;
  mask-image:radial-gradient(ellipse at center,#000 30%,transparent 75%);-webkit-mask-image:radial-gradient(ellipse at center,#000 30%,transparent 75%)}
.scene{position:absolute;inset:0;opacity:0;visibility:hidden;transition:opacity .6s var(--ease-out),visibility 0s .6s}
.scene.on{opacity:1;visibility:visible;transition:opacity .6s var(--ease-out),visibility 0s}
.chip{position:absolute;padding:9px 14px;border-radius:99px;background:rgba(10,12,20,.8);border:1px solid rgba(255,255,255,.14);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);font:600 11px/1 var(--f-label);letter-spacing:.14em;text-transform:uppercase;color:#fff;opacity:0;transform:translateY(10px)}
.scene.on .chip{animation:chipIn .7s var(--ease-out) forwards}
.scene.on .chip.c2{animation-delay:.5s}
@keyframes chipIn{to{opacity:1;transform:none}}
.chip.c1{left:4%;top:6%}.chip.c2{right:4%;bottom:6%}

/* layout: browser che scorre */
.mock-browser{position:absolute;left:50%;top:12%;width:76%;height:84%;transform:translateX(-50%) translateY(30px) scale(.96);border-radius:12px 12px 0 0;overflow:hidden;border:1px solid var(--line-strong);background:#0C0E16;opacity:0}
.scene.on .mock-browser{animation:rise .9s var(--ease-out) forwards}
@keyframes rise{to{opacity:1;transform:translateX(-50%) translateY(0) scale(1)}}
.mock-browser .b-bar{height:28px}.mock-browser .b-bar i{width:8px;height:8px}.mock-browser .b-url{height:18px;line-height:18px;font-size:9px}
.mb-view{position:absolute;top:28px;left:0;right:0;bottom:0;overflow:hidden}
.mb-view img{width:100%;height:auto;transform:translateY(0)}
.scene.on .mb-view img{animation:pageScroll 3.4s var(--ease-io) .5s forwards}
@keyframes pageScroll{to{transform:translateY(calc(-100% + 100cqh))}}
.mb-view{container-type:size}

/* responsive: tre telefoni */
.phone{position:absolute;bottom:-8%;width:21%;aspect-ratio:9/19.2;border-radius:28px;padding:8px;background:#1A1C26;border:1px solid rgba(255,255,255,.18);box-shadow:0 40px 80px -20px rgba(0,0,0,.8);opacity:0;transform:translateY(60%)}
.phone .ph-view{position:relative;width:100%;height:100%;border-radius:21px;overflow:hidden;background:#000;container-type:size}
.phone .ph-view img{width:100%;height:auto}
.phone.p1{left:13%;--r:-7deg}.phone.p2{left:39.5%;bottom:-2%;--r:0deg;z-index:2}.phone.p3{left:66%;--r:7deg}
.scene.on .phone{animation:phoneIn 1s var(--ease-out) forwards}
.scene.on .phone.p2{animation-delay:.12s}.scene.on .phone.p3{animation-delay:.24s}
@keyframes phoneIn{to{opacity:1;transform:translateY(0) rotate(var(--r))}}
.scene.on .phone .ph-view img{animation:pageScroll 2.8s var(--ease-io) 1s forwards}

/* interazioni: carte e cursore finto */
.ic-card{position:absolute;top:20%;width:24%;aspect-ratio:4/5;border-radius:16px;overflow:hidden;background:#151826;border:1px solid var(--line);box-shadow:0 30px 60px -20px rgba(0,0,0,.7);opacity:0;transform:translateY(30px)}
.ic-card img{width:100%;height:100%;object-fit:cover;transition:transform .8s var(--ease-out)}
.ic-card span{position:absolute;left:12px;bottom:12px;font:600 12px/1 var(--f-body);color:#fff;text-shadow:0 1px 8px #000}
.ic-card.k1{left:11%}.ic-card.k2{left:38%}.ic-card.k3{left:65%}
.ic-btn{position:absolute;right:12px;bottom:10px;font:600 10px/1 var(--f-label);letter-spacing:.12em;padding:8px 10px;border-radius:99px;background:#fff;color:#0A0C14;font-style:normal;opacity:0;transform:translateY(8px)}
.scene.on .ic-card{animation:rise2 .8s var(--ease-out) forwards}
.scene.on .ic-card.k2{animation-delay:.08s}.scene.on .ic-card.k3{animation-delay:.16s}
@keyframes rise2{to{opacity:1;transform:none}}
.scene.on .ic-card.k2{animation:rise2 .8s var(--ease-out) .08s forwards,hoverLift .6s var(--ease-out) 1.9s forwards}
@keyframes hoverLift{from{opacity:1;transform:none}to{opacity:1;transform:translateY(-14px);box-shadow:0 50px 80px -20px rgba(0,0,0,.8),0 0 0 1px rgba(139,92,246,.6)}}
.scene.on .ic-card.k2 img{animation:zoomIn .9s var(--ease-out) 1.9s forwards}
@keyframes zoomIn{to{transform:scale(1.1)}}
.scene.on .ic-card.k2 .ic-btn{animation:chipIn .5s var(--ease-out) 2.2s forwards}
.fake-cursor{position:absolute;width:26px;height:26px;left:20%;top:85%;opacity:0;filter:drop-shadow(0 4px 8px rgba(0,0,0,.6));z-index:5}
.sc-int.on .fake-cursor{animation:curInt 3.6s var(--ease-io) forwards}
@keyframes curInt{0%{opacity:0;left:20%;top:85%}12%{opacity:1}45%{left:50%;top:55%}70%{left:55%;top:68%}100%{opacity:1;left:56%;top:69%}}

/* e-commerce */
.shop{position:absolute;left:50%;top:50%;width:72%;height:76%;transform:translate(-50%,-46%);border-radius:14px;overflow:hidden;background:#F3F0EA;color:#1A1A1A;font-family:"Bodoni Moda",Georgia,serif;opacity:0;box-shadow:0 40px 90px -30px rgba(0,0,0,.8)}
.scene.on .shop{animation:shopIn .8s var(--ease-out) forwards}
@keyframes shopIn{to{opacity:1;transform:translate(-50%,-50%)}}
.shop-top{display:flex;justify-content:space-between;align-items:center;padding:3% 4%;border-bottom:1px solid rgba(26,26,26,.1);font-size:clamp(10px,1.3vw,18px)}
.shop-top b{font-weight:500;letter-spacing:.06em}
.bag{position:relative;font:600 .6em/1 var(--f-label);letter-spacing:.14em;text-transform:uppercase}
.badge{position:absolute;right:-16px;top:-10px;width:18px;height:18px;border-radius:50%;background:#1A1A1A;color:#F3F0EA;font:600 10px/18px var(--f-label);text-align:center;font-style:normal;transform:scale(0)}
.sc-shop.on .badge{animation:pop .5s var(--ease-back) 2.35s forwards}
@keyframes pop{to{transform:scale(1)}}
.shop-body{display:grid;grid-template-columns:1fr 1fr;height:84%}
.shop-img{overflow:hidden;background:#E8E3DA}
.shop-img img{width:100%;height:100%;object-fit:cover}
.shop-info{padding:8% 9%;display:flex;flex-direction:column;gap:5%}
.shop-cat{font:600 clamp(7px,.75vw,11px)/1 var(--f-label);letter-spacing:.2em;text-transform:uppercase;color:#7C7468}
.shop-name{font-weight:500;font-size:clamp(16px,2.2vw,32px);line-height:1.05}
.shop-price{font:600 clamp(10px,1.1vw,16px)/1 var(--f-label);color:#1A1A1A}
.shop-sizes{display:flex;gap:8px}
.shop-sizes i{width:2.4em;height:2.4em;border:1px solid rgba(26,26,26,.25);border-radius:50%;font:600 clamp(7px,.75vw,11px)/2.4em var(--f-label);text-align:center;font-style:normal}
.shop-sizes i.on{background:#1A1A1A;color:#F3F0EA}
.shop-add{position:relative;display:block;margin-top:4%;height:3.6em;border-radius:99px;background:#1A1A1A;color:#F3F0EA;font:600 clamp(7px,.8vw,12px)/3.6em var(--f-label);letter-spacing:.14em;text-transform:uppercase;text-align:center;overflow:hidden}
.shop-add span{position:absolute;left:0;right:0;transition:transform .5s var(--ease-out)}
.shop-add .t2{transform:translateY(100%);background:#2F5D3A}
.sc-shop.on .shop-add .t1{animation:upOut .5s var(--ease-out) 2.2s forwards}
.sc-shop.on .shop-add .t2{animation:upIn .5s var(--ease-out) 2.2s forwards}
@keyframes upOut{to{transform:translateY(-100%)}}
@keyframes upIn{to{transform:translateY(0)}}
.drawer{position:absolute;top:0;right:0;bottom:0;width:38%;background:#fff;box-shadow:-30px 0 60px -20px rgba(0,0,0,.35);padding:5%;display:flex;flex-direction:column;gap:6%;transform:translateX(102%);font-size:clamp(9px,1vw,15px)}
.sc-shop.on .drawer{animation:drawerIn .8s var(--ease-out) 2.75s forwards}
@keyframes drawerIn{to{transform:none}}
.dr-item{display:flex;gap:8%;align-items:center;font-size:.9em;line-height:1.4}
.dr-item img{width:34%;aspect-ratio:4/5;object-fit:cover;border-radius:6px}
.dr-item em{font:600 .8em/1 var(--f-label);font-style:normal;color:#7C7468}
.dr-btn{margin-top:auto;padding:1em;border-radius:99px;background:#1A1A1A;color:#fff;text-align:center;font:600 .62em/1 var(--f-label);letter-spacing:.14em;text-transform:uppercase}
.sc-shop.on .fake-cursor{animation:curShop 3.8s var(--ease-io) forwards}
@keyframes curShop{0%{opacity:0;left:30%;top:90%}15%{opacity:1}50%{left:68%;top:66%}56%{transform:scale(.8)}62%{transform:scale(1)}100%{opacity:1;left:69%;top:67%}}

/* dettagli */
.det-type{position:absolute;left:8%;top:18%;display:flex;gap:4%;width:50%}
.ty{font-size:clamp(40px,7vw,110px);line-height:1;color:#fff;opacity:0;transform:translateY(30px)}
.sc-det.on .ty{animation:rise2 .8s var(--ease-out) forwards}
.sc-det.on .t2{animation-delay:.12s}.sc-det.on .t3{animation-delay:.24s}.sc-det.on .t4{animation-delay:.36s}
.det-sw{position:absolute;left:8%;bottom:16%;display:flex;gap:10px}
.det-sw i{width:clamp(28px,3.4vw,48px);aspect-ratio:1;border-radius:50%;border:1px solid rgba(255,255,255,.2);transform:scale(0)}
.sc-det.on .det-sw i{animation:pop .5s var(--ease-back) forwards}
.sc-det.on .det-sw i:nth-child(2){animation-delay:.08s}.sc-det.on .det-sw i:nth-child(3){animation-delay:.16s}.sc-det.on .det-sw i:nth-child(4){animation-delay:.24s}.sc-det.on .det-sw i:nth-child(5){animation-delay:.32s}.sc-det.on .det-sw i:nth-child(6){animation-delay:.4s}
.det-curve{position:absolute;right:7%;top:22%;width:36%;overflow:visible}
.det-curve path{fill:none;stroke:#8B9CFF;stroke-width:2;stroke-dasharray:1;stroke-dashoffset:1}
.sc-det.on .det-curve path{animation:drawP 1.8s var(--ease-io) .3s forwards}
@keyframes drawP{to{stroke-dashoffset:0}}
.det-ball{fill:#fff;offset-path:path("M10 150 C 120 150, 140 10, 290 10");offset-distance:0%;offset-rotate:0deg}
.sc-det.on .det-ball{animation:ball 1.8s var(--ease-io) .3s forwards}
@keyframes ball{to{offset-distance:100%}}
.det-curve::after{content:""}

/* finale */
.reel-end{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.1em;font:800 clamp(34px,6.4vw,92px)/.95 var(--f-display);letter-spacing:-.02em;
  background:radial-gradient(ellipse at center,rgba(20,24,48,.94),rgba(7,8,13,.98));opacity:0;visibility:hidden;transition:opacity .6s,visibility 0s .6s}
.reel-end .thin{font-weight:300;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.reel-end b{display:block;transform:translateY(30px);opacity:0}
.reel-end.on{opacity:1;visibility:visible;transition:opacity .6s,visibility 0s}
.reel-end.on b{animation:rise2 .9s var(--ease-out) forwards}
.reel-end.on b.thin{animation-delay:.15s}

.reel-ui{display:flex;align-items:center;gap:16px;margin-top:18px}
.reel-play{flex:0 0 auto;width:48px;height:48px;border-radius:50%;border:1px solid var(--line-strong);display:flex;align-items:center;justify-content:center;transition:border-color .3s,background-color .3s}
.reel-play:hover{border-color:rgba(255,255,255,.4);background:rgba(255,255,255,.04)}
.reel-play .i-play{display:none}
.reel.paused .reel-play .i-play{display:block}.reel.paused .reel-play .i-pause{display:none}
.reel-chapters{flex:1;display:grid;grid-template-columns:repeat(5,1fr);gap:10px}
.reel-chapters button{position:relative;text-align:left;padding:12px 0 14px;font:600 11px/1.2 var(--f-label);letter-spacing:.12em;text-transform:uppercase;color:var(--text-dim);transition:color .3s}
.reel-chapters button .n{margin-right:8px;color:var(--text-dim)}
.reel-chapters button[aria-selected="true"]{color:#fff}
.reel-chapters button i{position:absolute;left:0;right:0;bottom:0;height:2px;background:rgba(255,255,255,.12);overflow:hidden}
.reel-chapters button i::after{content:"";position:absolute;inset:0;background:var(--grad);transform-origin:left;transform:scaleX(var(--p,0))}
@media (max-width:720px){
  .reel-chapters{grid-template-columns:repeat(5,auto);overflow-x:auto;padding:6px;scroll-padding-inline:8px}
  .reel-chapters button{white-space:nowrap;padding-right:12px}
  .reel-chapters button .n{display:none}
  .chip{font-size:9px;padding:7px 10px}
}

/* ================= 03 SERVIZI ================= */
.svc-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
.svc{position:relative;display:grid;grid-template-columns:70px 1.1fr 1fr 40px;align-items:baseline;gap:24px;padding:clamp(26px,3.6vw,44px) 0;border-bottom:1px solid var(--line);cursor:default;isolation:isolate}
.svc::before{content:"";position:absolute;inset:0 calc(var(--gutter) * -1);z-index:-1;background:linear-gradient(90deg,rgba(59,130,246,.08),rgba(139,92,246,.08));transform:scaleY(0);transform-origin:bottom;transition:transform .6s var(--ease-out)}
.svc.active::before{transform:scaleY(1)}
@media (hover:hover) and (pointer:fine){.svc:hover::before{transform:scaleY(1)}}
.svc-n{font:600 12px/1 var(--f-label);letter-spacing:.16em;color:var(--text-dim)}
.svc-name{font:800 clamp(30px,4.4vw,64px)/1 var(--f-display);letter-spacing:-.02em;text-transform:uppercase;transition:transform .7s var(--ease-out),color .4s}
@media (hover:hover) and (pointer:fine){.svc:hover .svc-name{transform:translateX(16px)}}

.svc-desc{color:var(--text-secondary);max-width:38ch;transition:color .4s}
.svc:hover .svc-desc{color:#E3E6F0}
.svc-arrow{font:400 22px/1 var(--f-body);color:var(--text-dim);transition:transform .6s var(--ease-out),color .3s}
@media (hover:hover) and (pointer:fine){.svc:hover .svc-arrow{transform:translateX(6px) rotate(-45deg);color:#fff}}
.svc-name{color:#fff}
.svc-preview{position:fixed;left:0;top:0;z-index:50;width:260px;height:190px;margin:-95px 0 0 -130px;border-radius:18px;pointer-events:none;
  background:linear-gradient(160deg,#151a2e,#0D0F18);border:1px solid rgba(139,92,246,.35);box-shadow:0 40px 80px -20px rgba(0,0,0,.8),0 0 60px -20px rgba(109,108,247,.6);
  opacity:0;transform:scale(.6);transition:opacity .35s,transform .5s var(--ease-out);overflow:hidden}
.svc-preview.show{opacity:1}
.svc-preview .pv{position:absolute;inset:0;opacity:0;transition:opacity .3s}
.svc-preview[data-show="design"] .pv-design,.svc-preview[data-show="dev"] .pv-dev,.svc-preview[data-show="brand"] .pv-brand,.svc-preview[data-show="anim"] .pv-anim,.svc-preview[data-show="care"] .pv-care{opacity:1}
.svc-preview .pvwrap{position:absolute;inset:0}
.svc-preview.pos{transition:opacity .35s,transform .5s var(--ease-out)}
/* design: blocchi che si compongono */
.wf{position:absolute;border-radius:6px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.14);transform:scale(0);transform-origin:left top}
.w1{left:8%;top:10%;width:84%;height:10%}.w2{left:8%;top:28%;width:52%;height:34%;background:linear-gradient(135deg,rgba(59,130,246,.35),rgba(139,92,246,.35))}.w3{left:64%;top:28%;width:28%;height:15%}.w4{left:64%;top:47%;width:28%;height:15%}.w5{left:8%;top:70%;width:34%;height:12%;border-radius:99px;background:rgba(255,255,255,.85)}
.svc-preview[data-show="design"] .wf{animation:wf 2.6s var(--ease-out) infinite}
.svc-preview[data-show="design"] .w2{animation-delay:.12s}.svc-preview[data-show="design"] .w3{animation-delay:.24s}.svc-preview[data-show="design"] .w4{animation-delay:.36s}.svc-preview[data-show="design"] .w5{animation-delay:.48s}
@keyframes wf{0%{transform:scale(0)}25%,85%{transform:scale(1)}100%{transform:scale(1);opacity:0}}
/* dev: codice che si scrive */
.pv-dev code{position:absolute;left:8%;top:14%;right:8%;display:flex;flex-direction:column;gap:9px;font:400 11px/1.3 var(--f-mono);color:#B8C4FF;white-space:pre}
.pv-dev code span{clip-path:inset(0 100% 0 0)}
.svc-preview[data-show="dev"] .pv-dev code span{animation:type 3s steps(26) infinite}
.svc-preview[data-show="dev"] .l2{animation-delay:.35s!important}.svc-preview[data-show="dev"] .l3{animation-delay:.7s!important}.svc-preview[data-show="dev"] .l4{animation-delay:1.05s!important}
@keyframes type{0%{clip-path:inset(0 100% 0 0)}35%,90%{clip-path:inset(0 0 0 0)}100%{clip-path:inset(0 0 0 0);opacity:0}}
.pv-dev .speed{position:absolute;right:8%;bottom:12%;font:600 26px/1 var(--f-display);background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
/* brand */
.pv-brand .aa{position:absolute;left:10%;top:16%;font:800 64px/1 var(--f-display);color:#fff}
.pv-brand i{position:absolute;bottom:16%;width:34px;height:34px;border-radius:50%;background:var(--c);border:1px solid rgba(255,255,255,.25);transform:scale(0)}
.pv-brand i:nth-of-type(1){left:10%}.pv-brand i:nth-of-type(2){left:28%}.pv-brand i:nth-of-type(3){left:46%}.pv-brand i:nth-of-type(4){left:64%}
.svc-preview[data-show="brand"] .pv-brand i{animation:sw 2.4s var(--ease-back) infinite}
.svc-preview[data-show="brand"] .pv-brand i:nth-of-type(2){animation-delay:.1s}.svc-preview[data-show="brand"] .pv-brand i:nth-of-type(3){animation-delay:.2s}.svc-preview[data-show="brand"] .pv-brand i:nth-of-type(4){animation-delay:.3s}
@keyframes sw{0%{transform:scale(0)}25%,85%{transform:scale(1)}100%{transform:scale(0)}}
/* animazioni: orbite */
.pv-anim svg{position:absolute;left:50%;top:50%;width:150px;height:150px;margin:-75px 0 0 -75px}
.pv-anim ellipse{fill:none;stroke:rgba(255,255,255,.25);stroke-width:1.5}
.pv-anim i{position:absolute;left:50%;top:50%;width:10px;height:10px;margin:-5px 0 0 -5px;border-radius:50%}
.pv-anim .o1{background:#3B82F6;box-shadow:0 0 14px #3B82F6;offset-path:path("M 0 0 m -42 -18 a 46 18 -24 1 0 84 36 a 46 18 -24 1 0 -84 -36");animation:orb 2.4s linear infinite}
.pv-anim .o2{background:#8B5CF6;box-shadow:0 0 14px #8B5CF6;offset-path:path("M 0 0 m -42 18 a 46 18 24 1 1 84 -36 a 46 18 24 1 1 -84 36");animation:orb 2.4s linear infinite;animation-delay:-1.2s}
@keyframes orb{to{offset-distance:100%}}
/* manutenzione */
.pv-care svg{position:absolute;left:6%;right:6%;top:30%;width:88%;height:auto}
.pv-care path{fill:none;stroke:#7EE2A8;stroke-width:2;stroke-dasharray:1;stroke-dashoffset:1}
.svc-preview[data-show="care"] .pv-care path{animation:drawLoop 2.4s var(--ease-io) infinite}
@keyframes drawLoop{0%{stroke-dashoffset:1}60%,100%{stroke-dashoffset:0}}
.online{position:absolute;left:8%;bottom:14%;display:flex;align-items:center;gap:8px;font:600 11px/1 var(--f-label);letter-spacing:.14em;text-transform:uppercase;color:#7EE2A8}
.online i{width:8px;height:8px;border-radius:50%;background:#7EE2A8;animation:live 2s ease-out infinite}
@media (max-width:900px){
  .svc{grid-template-columns:44px 1fr;gap:10px 16px}
  .svc-desc{grid-column:2}
  .svc-arrow{display:none}
  .svc-preview{display:none}
}
@media (pointer:coarse){.svc-preview{display:none}}

/* ================= 04 LAVORI (orizzontale) ================= */
.work{position:relative;height:var(--work-h,400vh)}
.work-pin{position:sticky;top:0;height:100vh;height:100lvh;overflow:hidden;overflow:clip;display:flex;flex-direction:column;justify-content:center;padding-top:calc(var(--nav-h) - 10px)}
.work-head{display:flex;justify-content:space-between;align-items:flex-end;gap:40px;margin-bottom:clamp(22px,3.6vh,44px)}
.work-head .title{font-size:clamp(40px,6vw,92px);margin-top:16px}
.work-note{max-width:40ch;color:var(--text-secondary);font-size:15px}
.work-viewport{position:relative}
.work-track{display:flex;gap:clamp(18px,2.4vw,36px);padding:0 var(--gutter);will-change:transform}
.work-track::after{content:"";flex:0 0 1px} /* spazio a fine fila: l'anello del focus di "Tutti i lavori" non viene tagliato */
.wcard{position:relative;flex:0 0 auto;width:min(70vw,1000px,calc((100vh - 300px) * 16 / 9.4));display:block;color:#fff} /* finestre basse: la scheda si riduce invece di uscire dallo schermo */
.wcard-media{position:relative;aspect-ratio:16/9.4;border-radius:20px;overflow:hidden;background:#0F1220;transform:skewX(var(--skew,0deg));transition:border-radius .6s var(--ease-out)}
/* la schermata del sito (16:10) è un filo più alta della scheda: --pp (0-1) la fa scorrere in su del 6% */
.wcard-media img{position:absolute;left:0;top:0;width:100%;height:auto;min-height:100%;object-fit:cover;object-position:50% 0;translate:0 calc(var(--pp,0) * -6%);transform-origin:50% 0;scale:1.02;transition:scale 1.2s var(--ease-out),filter .6s}
@media (hover:hover) and (pointer:fine){.wcard:hover .wcard-media img{scale:1.06}}
.wcard-media::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(5,6,11,.5),rgba(5,6,11,0) 34%);pointer-events:none}
.wcard-num{display:flex;gap:10px;align-items:center;margin-bottom:12px;font:600 11px/1 var(--f-label);letter-spacing:.2em;text-transform:uppercase;color:#C9CDDB}
.wcard-num .badge-concept{padding:6px 10px;border-radius:99px;border:1px solid rgba(255,255,255,.35);font-size:11px;background:rgba(10,12,20,.5);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
/* lastra scura in basso: titolo e dati staccati dai testi del sito (niente blur: la fila si muove a ogni fotogramma) */
.wcard-body{position:absolute;left:16px;right:16px;bottom:16px;z-index:2;display:flex;justify-content:space-between;align-items:flex-end;gap:20px;padding:20px 24px;border-radius:16px;
  background:linear-gradient(180deg,rgba(15,17,28,.97),rgba(8,9,15,.985));border:1px solid rgba(255,255,255,.12);box-shadow:0 18px 40px -18px rgba(0,0,0,.8)}
.wcard-title{font:800 clamp(28px,3.2vw,52px)/.92 var(--f-display);letter-spacing:-.03em}
.wcard-title .thin{display:block;font-weight:300;font-size:.46em;letter-spacing:.02em;margin-top:8px;color:#D9DCE6}
.wcard-meta{display:grid;gap:6px;font:600 11px/1.4 var(--f-label);letter-spacing:.1em;text-transform:uppercase;color:#C9CDDB;text-align:right}
.wcard-meta b{font-weight:500;color:#fff}
.wcard-cta{display:inline-flex;align-items:center;gap:10px;margin-top:12px;font:600 12px/1 var(--f-label);letter-spacing:.16em;justify-content:flex-end}
.wcard-cta .arrow{transition:transform .5s var(--ease-out)}
@media (hover:hover) and (pointer:fine){.wcard:hover .wcard-cta .arrow{transform:translateX(6px)}}
.wcard-line{position:absolute;left:0;right:0;bottom:-16px;height:1px;background:var(--line)}
.wcard-line::after{content:"";position:absolute;inset:0;background:var(--grad);transform:scaleX(0);transform-origin:left;transition:transform .9s var(--ease-out)}
@media (hover:hover) and (pointer:fine){.wcard:hover .wcard-line::after{transform:scaleX(1)}}
.wcard.all{width:min(36vw,460px)}
.wcard.all .wcard-media{display:flex;align-items:center;justify-content:center;background:radial-gradient(ellipse at center,#161B33,#0B0D16);border:1px solid var(--line-strong)}
.wcard.all .wcard-media::after{display:none}
.all-in{position:relative;text-align:center;z-index:2}
.all-in .ring-all{width:140px;height:140px;margin:0 auto 22px;border-radius:50%;border:1px solid rgba(255,255,255,.2);display:flex;align-items:center;justify-content:center;font-size:30px;transition:transform .8s var(--ease-out),border-color .4s,background-color .4s}
@media (hover:hover) and (pointer:fine){.wcard.all:hover .ring-all{transform:scale(1.08) rotate(-45deg);border-color:transparent;background:var(--grad)}}
.all-in b{font:800 clamp(24px,2.4vw,36px)/1 var(--f-display);letter-spacing:-.01em}
.all-in span{display:block;margin-top:10px;font:600 11px/1 var(--f-label);letter-spacing:.2em;text-transform:uppercase;color:var(--text-secondary)}
.work-progress{display:flex;align-items:center;gap:22px;margin-top:clamp(26px,4vh,46px);font:600 12px/1 var(--f-label);letter-spacing:.14em;color:var(--text-secondary);font-variant-numeric:tabular-nums}
.wp-count b{color:#fff;font-weight:500}
.wp-bar{flex:1;height:1px;background:var(--line);position:relative;overflow:hidden}
.wp-bar i{position:absolute;inset:0;background:var(--grad);transform-origin:left;transform:scaleX(var(--wp,0))}
.wp-hint{text-transform:uppercase;letter-spacing:.2em}
@media (max-width:900px),(pointer:coarse) and (max-height:500px){
  .work{height:auto}
  .work-pin{position:relative;height:auto;padding:clamp(100px,14vh,160px) 0 40px}
  .work-head{flex-direction:column;align-items:flex-start}
  .work-viewport{overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none}
  .work-viewport::-webkit-scrollbar{display:none}
  .work-track{transform:none!important;padding-top:8px;padding-bottom:30px}
  .wcard{width:84vw;scroll-snap-align:center}
  .wcard.all{width:60vw}
  .wcard-body{flex-direction:column;align-items:flex-start}
  .wcard-meta{text-align:left}
  .wcard-cta{justify-content:flex-start}
  .work-progress{display:none}
  .wcard-media{transform:none;aspect-ratio:16/10} /* tablet e finestre strette: schermata da computer */
  .wcard-media img{height:100%;translate:none}
  .wcard-title{font-size:30px}
  .wcard-body{left:10px;right:10px;bottom:10px;padding:16px 18px;gap:12px}
  .wcard-num{margin-bottom:10px;font-size:11px}
  .wcard-meta{gap:4px;font-size:11px}
}
/* telefono in piedi: la schermata da telefono, in piedi */
@media (pointer:coarse) and (max-width:600px){
  .wcard-media{aspect-ratio:9/16}
}
/* telefono coricato: schermata in piedi alta quasi quanto lo schermo, lastra accanto (prima la scheda era alta 3 schermi) */
@media (pointer:coarse) and (max-height:500px){
  .work-pin{padding:calc(var(--nav-h) + 8px) 0 24px}
  .wcard{width:auto}
  .wcard:not(.all){display:flex;align-items:flex-end}
  .wcard:not(.all) .wcard-media{flex:0 0 auto;height:min(78svh,calc(100svh - var(--nav-h) - 30px));width:auto;aspect-ratio:9/16;border-radius:16px}
  .wcard:not(.all) .wcard-body{position:relative;left:auto;right:auto;bottom:auto;margin:0 0 14px -26px;width:min(46vw,380px)}
  .wcard.all{width:40vw}
  .wcard.all .wcard-media{height:min(78svh,calc(100svh - var(--nav-h) - 30px));aspect-ratio:auto}
  .wcard-line{display:none}
}

/* ================= 05 PERCHE NOI ================= */
.why-title{max-width:18ch}
.why-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;perspective:1200px}
.why-card{position:relative;padding:clamp(28px,3.4vw,48px);border-radius:22px;border:1px solid var(--line);overflow:visible; /* visible: con hidden il 3D si appiattiva */
  background:linear-gradient(115deg,transparent calc(var(--mx) - 18%),rgba(255,255,255,calc(.07 * var(--sh,0))) var(--mx),transparent calc(var(--mx) + 18%)),linear-gradient(160deg,rgba(21,24,38,.9),rgba(12,14,22,.9));
  transform-style:preserve-3d;--rx:0deg;--ry:0deg;--mx:50%;--my:50%;min-height:300px;display:flex;flex-direction:column}
.why-card.in{transform:rotateX(var(--rx)) rotateY(var(--ry));transition:transform .6s var(--ease-out),opacity 1s var(--ease-out)}
.why-card.in.tilting{transition:opacity 1s var(--ease-out)} /* mentre la guida la molla (home.js) niente transizione CSS */
.why-card::before{content:"";position:absolute;inset:0;border-radius:inherit;padding:1px;background:radial-gradient(400px circle at var(--mx) var(--my),rgba(139,92,246,.9),rgba(59,130,246,.4) 30%,transparent 60%);
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;opacity:0;transition:opacity .4s}
.why-card::after{content:"";position:absolute;inset:0;border-radius:inherit;background:radial-gradient(500px circle at var(--mx) var(--my),rgba(109,108,247,.14),transparent 50%);opacity:0;transition:opacity .4s;pointer-events:none}
.why-card:hover::before,.why-card:hover::after{opacity:1}
.why-n{font:600 12px/1 var(--f-label);letter-spacing:.16em;color:var(--text-dim)}
/* oggetto di vetro: galleggia sopra la scheda (più in alto del titolo) e fluttua piano */
.why-3d{display:block;width:clamp(104px,9.6vw,148px);height:auto;margin:10px 0 auto -10px;transform:translateZ(70px);filter:drop-shadow(0 22px 26px rgba(0,0,0,.55));animation:fluttua 6s ease-in-out infinite}
.why-card:nth-child(2) .why-3d{animation-delay:-1.5s}.why-card:nth-child(3) .why-3d{animation-delay:-3s}.why-card:nth-child(4) .why-3d{animation-delay:-4.5s}
@keyframes fluttua{0%,100%{translate:0 -5px;rotate:-2deg}50%{translate:0 6px;rotate:2deg}}
.why-card h3{margin-top:30px;font:800 clamp(26px,2.6vw,40px)/1 var(--f-display);letter-spacing:-.01em;text-transform:uppercase;transform:translateZ(40px)}
.why-card p{margin-top:14px;color:var(--text-secondary);max-width:40ch;transform:translateZ(20px)}
@media (max-width:820px){.why-grid{grid-template-columns:1fr}.why-card{min-height:0}}

/* ================= 06 CHI SIAMO ================= */
.about-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(40px,6vw,100px);align-items:center}
.about-text .title{margin:26px 0 34px}
.about-text .title{font-size:clamp(40px,7.2vw,94px)} /* sempre due righe: "Two minds." e "One motion." (prima da 1440 px in su andava su quattro) */
.about-text .title .thin{display:block}
.about-story{font-size:clamp(20px,1.9vw,28px);line-height:1.45;color:#fff;max-width:30ch;font-weight:400}
.about-story .sw{opacity:var(--o,.18);transition:opacity .3s}
.duo{position:relative;width:min(100%,460px);aspect-ratio:1;margin:0 auto}
.duo-orbits{position:absolute;inset:0;width:100%;height:100%}
.duo-orbits ellipse{fill:none;stroke-width:1.5}
.orb-a{stroke:rgba(59,130,246,.55)}.orb-b{stroke:rgba(139,92,246,.55)}
.sph{transition:filter .5s}
.sph-a{filter:drop-shadow(0 0 7px rgba(59,130,246,.9))}
.sph-b{filter:drop-shadow(0 0 7px rgba(139,92,246,.9))}
.duo.hl-a .sph-a{filter:drop-shadow(0 0 14px #3B82F6) drop-shadow(0 0 26px rgba(59,130,246,.8))}
.duo.hl-b .sph-b{filter:drop-shadow(0 0 14px #8B5CF6) drop-shadow(0 0 26px rgba(139,92,246,.8))}
.duo.hl-a .orb-a{stroke:rgba(59,130,246,1)}.duo.hl-b .orb-b{stroke:rgba(139,92,246,1)}
.duo-core{position:absolute;left:50%;top:50%;width:62%;transform:translate(-50%,-50%)}
.duo-core img{filter:drop-shadow(0 0 40px rgba(109,108,247,.45));animation:levita 7s ease-in-out infinite;animation-delay:-2s}
@keyframes levita{0%,100%{transform:translateY(-6px) rotate(-1.5deg)}50%{transform:translateY(6px) rotate(1deg)}}
.duo-orbits ellipse{opacity:.35}
.duo-core img{width:100%;height:auto}
/* logo vivo: occupa tutto il riquadro (gli anelli del video arrivano quasi ai bordi); l'immagine ferma resta sotto finché il video non c'è */
.duo-core.duo-gl{width:100%;height:100%;display:flex;align-items:center;justify-content:center}
.duo-gl img{width:62%;transition:opacity .8s var(--ease-out)}
.duo-gl canvas{position:absolute;inset:0;width:100%;height:100%;opacity:0;transition:opacity .8s var(--ease-out),filter .5s;filter:drop-shadow(0 0 30px rgba(109,108,247,.3))}
.duo-gl.gl canvas{opacity:1}
.duo-gl.gl img{opacity:0}
.duo.hl-a .duo-gl canvas{filter:drop-shadow(0 0 26px rgba(59,130,246,.95)) brightness(1.12)}  /* Gabriele: blu */
.duo.hl-b .duo-gl canvas{filter:drop-shadow(0 0 26px rgba(139,92,246,.95)) brightness(1.12)}  /* Andrea: viola */
.people{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:30px}
.person{padding:22px 24px;border-radius:18px;border:1px solid var(--line);background:rgba(16,18,27,.7);transition:border-color .4s,transform .6s var(--ease-out);cursor:default}
@media (hover:hover) and (pointer:fine){.person:hover{transform:translateY(-4px)}}
.person[data-person="a"]:hover{border-color:rgba(59,130,246,.6)}
.person[data-person="b"]:hover{border-color:rgba(139,92,246,.6)}
.p-dot{display:block;width:10px;height:10px;border-radius:50%;margin-bottom:16px}
.p-dot.a{background:#3B82F6;box-shadow:0 0 12px #3B82F6}.p-dot.b{background:#8B5CF6;box-shadow:0 0 12px #8B5CF6}
.person h3{font:800 clamp(22px,2vw,30px)/1 var(--f-display);text-transform:uppercase;letter-spacing:.01em}
.person p{margin-top:8px;font:600 11px/1.45 var(--f-label);letter-spacing:.06em;text-transform:uppercase;color:var(--text-secondary)}
.person .p-role{display:block;text-wrap:balance} /* "Co-Founder /" sopra, il ruolo intero sotto */
@media (max-width:480px){.person{padding:18px 14px}.person p{letter-spacing:.04em}} /* telefono: il ruolo sta su due righe al massimo */
@media (max-width:900px){.about-grid{grid-template-columns:1fr}}

/* ================= 07 PROMESSE ================= */
.promise-head{max-width:900px}
.promise-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.pr{position:relative;padding:clamp(28px,3vw,44px) clamp(18px,2vw,30px) clamp(32px,3.4vw,50px);border-left:1px solid var(--line);transition:background-color .5s}
.pr:first-child{border-left:0}
.pr:hover{background:linear-gradient(180deg,rgba(109,108,247,.08),transparent)}
.pr-check{width:40px;height:40px;fill:none;stroke:#9BB0FF;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.pr h3{margin-top:24px;font:800 clamp(19px,1.6vw,24px)/1.15 var(--f-display);letter-spacing:-.005em}
.pr p{margin-top:12px;color:var(--text-secondary);font-size:15.5px}
@media (max-width:1000px){.promise-list{grid-template-columns:1fr 1fr}.pr:nth-child(3){border-left:0}.pr:nth-child(n+3){border-top:1px solid var(--line)}}
@media (max-width:600px){.promise-list{grid-template-columns:1fr}.pr{border-left:0}.pr+.pr{border-top:1px solid var(--line)}}

/* ================= 08 METODO ================= */
.process{position:relative;height:300vh}
.process-pin{position:sticky;top:0;height:100vh;height:100lvh;display:flex;align-items:center}
.process-head{margin-bottom:clamp(60px,10vh,110px)}
.timeline{position:relative;padding-top:4px}
.tl-line{position:absolute;left:0;right:0;top:0;width:100%;height:40px}
.tl-line path{fill:none;stroke-width:2;vector-effect:non-scaling-stroke}
.tl-bg{stroke:rgba(255,255,255,.1)}
.tl-fill{position:absolute;left:0;top:19px;width:100%;height:2px;background:#7E8BFF;box-shadow:0 0 12px rgba(126,139,255,.45);transform-origin:0 50%;transform:scaleX(var(--lf,0))}
.tl-ball{position:absolute;top:20px;left:0;width:18px;height:18px;margin:-9px 0 0 -9px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff,#8B9CFF 50%,#3B3FD8);box-shadow:0 0 24px rgba(139,156,255,.9);transform:translateX(calc(var(--tp,0) * var(--tw,0px)))}
.steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(5,1fr);gap:20px;padding-top:62px}
.step{position:relative;opacity:.38;transition:opacity .6s var(--ease-out)}
.step:focus-within{opacity:1}
.step::before{content:"";position:absolute;left:0;top:-48px;width:12px;height:12px;border-radius:50%;background:#0B0D15;border:1px solid rgba(255,255,255,.3);transition:background-color .5s,border-color .5s,box-shadow .5s}
.step.on{opacity:1}
.step.on::before{background:#8B9CFF;border-color:#8B9CFF;box-shadow:0 0 16px rgba(139,156,255,.9)}
.step-btn{display:block;text-align:left;width:100%}
.st-n{display:block;font:600 12px/1 var(--f-label);letter-spacing:.16em;color:var(--text-dim)}
.st-t{display:block;margin-top:14px;font:800 clamp(22px,2.4vw,38px)/1 var(--f-display);text-transform:uppercase;letter-spacing:-.01em;transition:transform .6s var(--ease-out)}
@media (hover:hover) and (pointer:fine){.step-btn:hover .st-t{transform:translateX(6px)}}
.step p{margin-top:16px;color:var(--text-secondary);font-size:15.5px;max-width:24ch;opacity:0;transform:translateY(10px);transition:opacity .6s var(--ease-out),transform .6s var(--ease-out)}
.step.on p{opacity:1;transform:none}
@media (max-width:900px){
  .process{height:auto}
  .process-pin{position:relative;height:auto;padding:clamp(110px,15vh,190px) 0}
  .process-head{margin-bottom:50px}
  .tl-line,.tl-fill,.tl-ball{display:none}
  .steps{grid-template-columns:1fr;gap:34px;padding-top:0;border-left:1px solid rgba(255,255,255,.12);padding-left:28px}
  .step{opacity:1}
  .step::before{left:-35px;top:6px}
  .step p{opacity:1;transform:none}
}

/* ================= 09 DOMANDE ================= */
.faq-grid{display:grid;grid-template-columns:.8fr 1.2fr;gap:clamp(40px,6vw,100px);align-items:start}
.faq-side{position:sticky;top:120px}
.faq-side .title{margin-top:24px}
.faq-list{border-top:1px solid var(--line)}
.qa{border-bottom:1px solid var(--line)}
.qa h3{margin:0}
.qa-q{width:100%;display:flex;justify-content:space-between;align-items:center;gap:24px;text-align:left;padding:28px 0;font:600 clamp(18px,1.6vw,23px)/1.35 var(--f-body);color:#fff;transition:color .3s}
.qa-q:hover{color:#C9D3FF}
.qa-ic{position:relative;flex:0 0 auto;width:36px;height:36px;border-radius:50%;border:1px solid var(--line-strong);transition:transform .6s var(--ease-out),background-color .4s,border-color .4s}
.qa-ic::before,.qa-ic::after{content:"";position:absolute;left:50%;top:50%;width:12px;height:1.5px;margin:-.75px 0 0 -6px;background:#fff;transition:transform .5s var(--ease-out)}
.qa-ic::after{transform:rotate(90deg)}
.qa.open .qa-ic{transform:rotate(180deg);background:var(--grad);border-color:transparent}
.qa.open .qa-ic::after{transform:rotate(0)}
.qa-a{display:grid;grid-template-rows:0fr;transition:grid-template-rows .6s var(--ease-out)}
.qa-a > div{overflow:hidden}
.qa.open .qa-a{grid-template-rows:1fr}
.qa-a p{padding:0 60px 28px 0;color:var(--text-secondary);max-width:60ch;opacity:0;transform:translateY(-8px);transition:opacity .5s,transform .6s var(--ease-out)}
.qa.open .qa-a p{opacity:1;transform:none;transition-delay:.12s}
@media (max-width:900px){.faq-grid{grid-template-columns:1fr}.faq-side{position:relative;top:0}}

/* ================= 10 CONTATTI ================= */
.contact{position:relative;padding:clamp(120px,16vh,200px) 0;overflow:hidden}
.contact-bg{position:absolute;inset:0;background:center/cover no-repeat;opacity:.35;mask-image:linear-gradient(to bottom,transparent,#000 25%,#000 70%,transparent);-webkit-mask-image:linear-gradient(to bottom,transparent,#000 25%,#000 70%,transparent)}
.contact-bg::after{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at 30% 40%,rgba(7,8,13,.55),rgba(7,8,13,.9))}
.contact-grid{position:relative;display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(40px,6vw,90px);align-items:start}
.contact-over{margin-top:26px;font:600 13px/1 var(--f-label);letter-spacing:.2em;text-transform:uppercase;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.mail-link{display:inline-flex;flex-direction:column;gap:8px;margin-top:34px}
.ml-label{font:600 12px/1 var(--f-label);letter-spacing:.18em;text-transform:uppercase;color:var(--text-dim)}
.ml-addr{position:relative;font:600 clamp(18px,1.7vw,24px)/1.2 var(--f-body);color:#fff;padding-bottom:6px}
.ml-addr::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:var(--grad);transform:scaleX(.25);transform-origin:left;transition:transform .7s var(--ease-out)}
@media (hover:hover) and (pointer:fine){.mail-link:hover .ml-addr::after{transform:scaleX(1)}}
.contact-title{margin:18px 0 26px;font:800 clamp(48px,7.6vw,100px)/.92 var(--f-display);letter-spacing:-.035em}
.ct-vis .ch{display:inline-block}
.ct-vis .ch > span{display:inline-block;will-change:transform}
.contact-title.ct-hidden .ct-vis .ch{opacity:0;transform:translateY(.45em) rotate(6deg)}
.honey{position:absolute!important;left:-9999px;width:1px;height:1px;overflow:hidden}
.cmp-tag-r{opacity:var(--tr,0)}
.cmp-tag-l{opacity:var(--tl,1)}
.form{display:grid;grid-template-columns:1fr 1fr;gap:16px;padding:clamp(24px,3vw,40px);border-radius:24px;background:rgba(14,16,25,.78);border:1px solid var(--line-strong);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}
.form .full{grid-column:1/-1}
.field{position:relative}
.field input,.field textarea{width:100%;padding:24px 18px 10px;border-radius:14px;border:1px solid var(--line-strong);background:rgba(255,255,255,.03);color:#fff;font:400 16px/1.4 var(--f-body);transition:border-color .3s,background-color .3s;resize:vertical}
.field textarea{min-height:130px}
.field label{position:absolute;left:18px;top:18px;color:var(--text-secondary);font-size:15px;pointer-events:none;transform-origin:left top;transition:transform .35s var(--ease-out),color .3s;max-width:calc(100% - 36px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.field input:focus,.field textarea:focus{outline:none;border-color:rgba(139,156,255,.8);background:rgba(255,255,255,.05)}
.field input:focus + label,.field input:not(:placeholder-shown) + label,.field textarea:focus + label,.field textarea:not(:placeholder-shown) + label{transform:translateY(-11px) scale(.76);color:#B8C4FF}
.field.err input{border-color:#FF7A7A}
.chips{border:0;margin:6px 0 4px;padding:0;display:flex;flex-wrap:wrap;gap:10px}
.chips legend{width:100%;margin-bottom:12px;font:600 12px/1 var(--f-label);letter-spacing:.16em;text-transform:uppercase;color:var(--text-secondary)}
.chip-in{position:relative}
.chip-in input{position:absolute;opacity:0;inset:0;width:100%;height:100%;margin:0;scroll-margin-bottom:12px}
.chip-in span{display:inline-flex;align-items:center;min-height:42px;padding:0 18px;border-radius:99px;border:1px solid var(--line-strong);font-size:14.5px;color:#E3E6F0;transition:border-color .3s,background-color .3s,color .3s,transform .4s var(--ease-back)}
.chip-in:hover span{border-color:rgba(255,255,255,.45)}
.chip-in input:checked + span{background:var(--grad-btn);border-color:transparent;color:#fff;transform:scale(1.04)}
.chip-in input:focus-visible + span{outline:2px solid var(--accent);outline-offset:3px}
.form-foot{display:flex;align-items:center;gap:20px;flex-wrap:wrap;margin-top:6px}
.form-msg{font-size:15px;color:var(--text-secondary);min-height:1.4em}
.form-msg.ok{color:#7EE2A8}.form-msg.bad{color:#FF9A9A}
.form.sent .btn{pointer-events:none;opacity:.6}
@media (max-width:900px){.contact-grid{grid-template-columns:1fr}.form{grid-template-columns:1fr}}

/* scritta della hero fatta con Higgsfield (video disegnato in WebGL): la inclina il JS verso il mouse */
.ht-gl canvas{transform-origin:50% 50%;will-change:transform}
html.titolo-attesa .hero-title:not(.gl) .ht-a .wd,html.titolo-attesa .hero-title:not(.gl) .ht-a .sp{visibility:hidden}
.hero-title.gl .ht-b{margin-top:clamp(16px,2vw,32px)}
/* il portfolio cambia altezza dopo il caricamento: niente ancoraggio automatico dello scroll (prima, tornando indietro, la pagina saltava di ~1700 px) */
html{overflow-anchor:none}
/* showreel e confronto: arrivano inclinati all'indietro e si raddrizzano mentre si scorre (dove il browser lo sa fare) */
@supports (animation-timeline: view()){
  .reel-stage,.compare .browser{transform-origin:50% 100%;animation:tilt3d linear both;animation-timeline:view();animation-range:entry 0% cover 40%}
}
@keyframes tilt3d{from{transform:perspective(1400px) rotateX(26deg) scale(.9);opacity:.3}to{transform:none;opacity:1}}
@media (max-width:720px){@keyframes tilt3d{from{transform:perspective(1000px) rotateX(14deg) scale(.94);opacity:.3}to{transform:none;opacity:1}}}
/* tablet in piedi e finestre strette (16:10): titolo a sinistra, dati a destra, lastra bassa */
@media (min-width:601px) and (max-width:900px) and (min-height:501px){.wcard-body{flex-direction:row;align-items:flex-end}.wcard-meta{text-align:right;max-width:52%}.wcard-cta{justify-content:flex-end}.wcard-num{white-space:nowrap}}
/* computer con finestra bassa: la lastra si fa compatta e non esce dalla scheda */
@media (min-width:901px) and (pointer:fine){.work-track{align-items:flex-start}}
@media (min-width:901px) and (max-height:820px) and (pointer:fine){.wcard-num{white-space:nowrap;margin-bottom:8px}.wcard-body{left:12px;right:12px;bottom:12px;padding:14px 18px;gap:16px}.wcard-title{font-size:clamp(24px,4.6vh,44px)}.wcard-title .thin{margin-top:5px}.wcard-meta{gap:3px}.wcard-cta{margin-top:6px}}
@media (min-width:901px) and (max-height:620px) and (pointer:fine){.wcard-meta{display:none}.work-head{margin-bottom:14px}.work-head .title{font-size:clamp(32px,4.4vw,60px);margin-top:8px}.work-progress{margin-top:14px}} /* finestre bassissime */
