:root{
  --bg:#05050a;--bg2:#0b0b14;--ink:#f2f2f7;--mute:#9a9aae;
  --cyan:#7df9ff;--pink:#ff5ad9;--vio:#8a6bff;
  --display:'Unbounded',system-ui,sans-serif;--text:'Inter',system-ui,sans-serif;
  --wrap:1180px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--text);line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden}
a{color:inherit}
h1,h2,h3{font-family:var(--display);font-weight:500;line-height:1.05;margin:0 0 .6em;letter-spacing:-.01em}
h2{font-size:clamp(1.8rem,3.6vw,3rem);max-width:16ch}
h3{font-size:clamp(1.4rem,2.4vw,2rem)}
p{margin:0 0 1em}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 clamp(20px,4vw,48px)}
.kicker{font-family:var(--display);font-weight:300;font-size:.72rem;letter-spacing:.22em;text-transform:uppercase;color:var(--cyan);margin-bottom:1.4rem}
.skip{position:absolute;left:-999px;top:0;background:var(--cyan);color:#000;padding:.5rem 1rem;z-index:99}
.skip:focus{left:8px;top:8px}

/* header */
.top{position:fixed;inset:0 0 auto;z-index:20;display:flex;justify-content:space-between;align-items:center;padding:18px clamp(20px,4vw,48px);mix-blend-mode:difference}
.brand{font-family:var(--display);font-weight:800;font-size:.85rem;letter-spacing:.2em;text-decoration:none;display:flex;align-items:center;gap:10px}
.brand-dot{width:10px;height:10px;border-radius:50%;background:#fff;box-shadow:0 0 18px #fff,0 0 40px var(--cyan)}
.top nav{display:flex;gap:26px;font-size:.85rem}
.top nav a{text-decoration:none;opacity:.8}
.top nav a:hover{opacity:1}
.nav-cta{border:1px solid currentColor;padding:6px 14px;border-radius:999px}
@media(max-width:700px){.top nav a:not(.nav-cta){display:none}}

/* hero */
.hero{position:relative;min-height:100svh;display:grid;grid-template-rows:1fr auto;isolation:isolate;overflow:hidden}
#beam{position:absolute;inset:0;width:100%;height:100%;z-index:-1}
.hero-inner{padding:clamp(120px,18vh,180px) clamp(20px,4vw,48px) 40px;max-width:var(--wrap);margin:0 auto;width:100%}
.hero h1{font-size:clamp(2.4rem,7.2vw,6.4rem);font-weight:800;margin:0 0 .5em;transform-style:preserve-3d;perspective:1000px}
.hero h1 .line{display:block;will-change:transform}
.accent{background:linear-gradient(90deg,var(--cyan),var(--pink) 60%,var(--vio));-webkit-background-clip:text;background-clip:text;color:transparent}
.lead{font-size:clamp(1.05rem,1.6vw,1.3rem);max-width:56ch;color:#d5d5e2}
.hero-cta{display:flex;gap:14px;flex-wrap:wrap;margin-top:1.8rem}
.btn{display:inline-block;background:var(--ink);color:#000;text-decoration:none;font-weight:500;padding:14px 26px;border-radius:999px;font-size:.95rem;transition:transform .2s,box-shadow .2s}
.btn:hover{transform:translateY(-2px);box-shadow:0 10px 40px rgba(125,249,255,.35)}
.btn.ghost{background:transparent;color:var(--ink);border:1px solid rgba(255,255,255,.35)}
.hint{margin-top:2.6rem;font-size:.75rem;color:var(--mute);letter-spacing:.08em}
@media(hover:none){.hint{display:none}}
.hero-meta{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid rgba(255,255,255,.12);max-width:var(--wrap);margin:0 auto;width:100%;padding:0 clamp(20px,4vw,48px)}
.hero-meta div{padding:22px 0;display:flex;flex-direction:column;gap:4px;font-size:.9rem}
.hero-meta div+div{padding-left:24px;border-left:1px solid rgba(255,255,255,.12)}
.hero-meta span{font-size:.7rem;letter-spacing:.18em;text-transform:uppercase;color:var(--mute)}
.hero-meta strong{font-weight:500}
@media(max-width:700px){.hero-meta{grid-template-columns:1fr}.hero-meta div+div{padding-left:0;border-left:0;border-top:1px solid rgba(255,255,255,.12)}}

/* sections */
section{padding:clamp(80px,12vh,150px) 0}
.grid-2{display:grid;grid-template-columns:1fr 1.3fr;gap:clamp(30px,6vw,90px);align-items:start}
@media(max-width:820px){.grid-2{grid-template-columns:1fr}}
.prose{font-size:1.08rem;color:#d5d5e2;max-width:60ch}
.facts{list-style:none;padding:0;margin:2.4rem 0 0;display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.facts li{border-top:1px solid rgba(255,255,255,.14);padding-top:14px;display:flex;flex-direction:column}
.facts strong{font-family:var(--display);font-size:2.4rem;font-weight:300;color:var(--cyan);line-height:1}
.facts span{font-size:.8rem;color:var(--mute);margin-top:6px}
@media(max-width:560px){.facts{grid-template-columns:1fr}}

.festival{background:var(--bg2)}

/* opere */
.opera{display:grid;grid-template-columns:1fr 1fr;gap:clamp(30px,5vw,70px);align-items:center;max-width:var(--wrap);margin:0 auto;padding:clamp(50px,8vh,90px) clamp(20px,4vw,48px)}
.opera.reverse .opera-visual{order:2}
@media(max-width:820px){.opera{grid-template-columns:1fr}.opera.reverse .opera-visual{order:0}}
.opera-visual{aspect-ratio:4/3;border-radius:22px;background:#000;position:relative;overflow:hidden;border:1px solid rgba(255,255,255,.08)}
.num{font-family:var(--display);font-weight:300;color:var(--pink);letter-spacing:.2em;font-size:.8rem;margin-bottom:.4rem}
.tag{color:var(--cyan);font-weight:500;margin-bottom:1rem}
.opera-text p:not(.num):not(.tag){color:#d5d5e2;font-size:1.05rem}
.specs{display:grid;gap:10px;margin:1.6rem 0 0;padding:0}
.specs div{display:grid;grid-template-columns:120px 1fr;gap:12px;border-top:1px solid rgba(255,255,255,.12);padding-top:10px;font-size:.9rem}
.specs dt{color:var(--mute)}.specs dd{margin:0}

/* visual 01: room with anamorphic figure */
.room{position:absolute;inset:0;perspective:600px;transform-style:preserve-3d}
.wall,.floor{position:absolute;background:repeating-linear-gradient(0deg,rgba(255,255,255,.06) 0 1px,transparent 1px 34px),repeating-linear-gradient(90deg,rgba(255,255,255,.06) 0 1px,transparent 1px 34px),#07070e}
.wall.left{left:0;top:0;width:50%;height:70%;transform-origin:right;transform:rotateY(35deg)}
.wall.right{right:0;top:0;width:50%;height:70%;transform-origin:left;transform:rotateY(-35deg)}
.floor{left:0;bottom:0;width:100%;height:40%;transform-origin:top;transform:rotateX(55deg)}
.figure{position:absolute;left:50%;top:50%;width:34%;aspect-ratio:1;translate:-50% -50%;border-radius:50%;background:radial-gradient(circle at 35% 35%,#fff,var(--cyan) 30%,var(--vio) 60%,transparent 72%);filter:blur(.3px) drop-shadow(0 0 40px var(--cyan));transform:skewX(calc(var(--mx,0)*-14deg)) scaleX(calc(1 + var(--mx,0)*.35)) scaleY(calc(1 - var(--my,0)*.15));transition:transform .15s linear}

/* visual 02: ray + reticle */
.target-scene{position:absolute;inset:0;background:radial-gradient(ellipse at 70% 40%,rgba(138,107,255,.15),transparent 55%),#06060d}
.ray{position:absolute;left:18%;bottom:22%;width:70%;height:2px;transform-origin:left;transform:rotate(calc(-28deg + var(--my,0)*14deg));background:linear-gradient(90deg,rgba(255,255,255,.9),var(--pink) 60%,transparent);box-shadow:0 0 12px var(--pink)}
.reticle{position:absolute;left:calc(66% + var(--mx,0)*8%);top:calc(34% + var(--my,0)*10%);width:70px;height:70px;translate:-50% -50%;border:2px solid var(--cyan);border-radius:50%;box-shadow:0 0 30px var(--cyan),inset 0 0 20px rgba(125,249,255,.3);transition:left .15s,top .15s}
.reticle span{position:absolute;left:50%;top:50%;width:8px;height:8px;translate:-50% -50%;background:#fff;border-radius:50%;box-shadow:0 0 14px #fff}
.reticle::before,.reticle::after{content:"";position:absolute;background:var(--cyan);left:50%;top:50%}
.reticle::before{width:2px;height:110%;translate:-50% -50%}
.reticle::after{height:2px;width:110%;translate:-50% -50%}
.hand{position:absolute;left:10%;bottom:12%;width:70px;height:90px;border-radius:30px 30px 8px 8px;background:linear-gradient(180deg,#2a2a3a,#111119);box-shadow:0 0 30px rgba(255,90,217,.25)}
.hand::before{content:"";position:absolute;left:38%;top:-38px;width:16px;height:52px;border-radius:8px;background:#2a2a3a}

/* visual 03: body */
.body-scene{position:absolute;inset:0;background:#000;display:grid;place-items:center}
.silhouette{width:38%;height:78%;border-radius:45% 45% 20% 20%/30% 30% 10% 10%;background:linear-gradient(160deg,var(--pink),var(--vio) 45%,var(--cyan));background-size:200% 200%;animation:flow 6s ease-in-out infinite alternate;-webkit-mask:radial-gradient(circle at 50% 13%,#000 11%,transparent 12%),linear-gradient(#000,#000) 50% 100%/62% 78% no-repeat;mask:radial-gradient(circle at 50% 13%,#000 11%,transparent 12%),linear-gradient(#000,#000) 50% 100%/62% 78% no-repeat;filter:drop-shadow(0 0 40px rgba(255,90,217,.5))}
@keyframes flow{from{background-position:0 0}to{background-position:100% 100%}}
.glow{position:absolute;inset:0;background:radial-gradient(circle at 50% 55%,rgba(138,107,255,.25),transparent 45%);pointer-events:none}

/* come */
.come{background:var(--bg2)}
.steps{list-style:none;padding:0;margin:2.5rem 0 0;display:grid;grid-template-columns:repeat(3,1fr);gap:24px;counter-reset:s}
.steps li{border:1px solid rgba(255,255,255,.1);border-radius:18px;padding:28px 26px;background:rgba(255,255,255,.02)}
.steps h3{font-size:1.25rem;margin:.5rem 0 .5rem}
.steps p{color:#c9c9d8;font-size:.98rem;margin:0}
.step-n{font-family:var(--display);font-weight:300;color:var(--pink);font-size:2rem}
@media(max-width:820px){.steps{grid-template-columns:1fr}}
.stack{display:flex;flex-wrap:wrap;gap:10px;margin-top:2.4rem}
.stack span{font-size:.78rem;letter-spacing:.06em;border:1px solid rgba(255,255,255,.18);border-radius:999px;padding:6px 14px;color:var(--mute)}

/* contatti */
.contatti .btn{margin-top:.6rem}

footer{border-top:1px solid rgba(255,255,255,.1);padding:28px 0;font-size:.8rem;color:var(--mute)}
.foot{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap}

/* reveal */
.reveal{opacity:0;transform:translateY(24px);transition:opacity .8s ease,transform .8s ease}
.reveal.in{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none}.silhouette{animation:none}}
