*{box-sizing:border-box}
:root{
  --ground:#0b0b0d;
  --ink:#edebe6;
  --mist:#8b8a84;
  --dim:#55544f;
  --line:rgba(240,238,232,.85);
}
html{background:var(--ground)}
body{
  margin:0;background:var(--ground);color:var(--ink);
  font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;
  -webkit-font-smoothing:antialiased;overflow-x:hidden;
}
.mono{font-family:ui-monospace,"SF Mono",Menlo,monospace}

/* ---------- scroll track + sticky stage ---------- */
.track{height:760vh;position:relative}
.stage{position:sticky;top:0;height:100vh;height:100svh;overflow:hidden}
.stage::after{ /* film grain */
  content:"";position:absolute;inset:0;pointer-events:none;opacity:.015;z-index:14;
  background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='140' height='140'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2'/><feColorMatrix type='saturate' values='0'/></filter><rect width='140' height='140' filter='url(%23n)' opacity='0.6'/></svg>");
}

/* ---------- mondo 3D ---------- */
#gl,#css3d{position:absolute;inset:0;opacity:0;pointer-events:none}
#gl{z-index:10}
#css3d{z-index:15}
#gl canvas{display:block}

/* ---------- fase lavori: interfaccia sopra il mondo 3D ---------- */
.worksHead{position:absolute;z-index:35;top:9vh;left:7vw;right:7vw;
  display:flex;justify-content:space-between;align-items:baseline;pointer-events:none}
.worksHead h2{margin:0;font-weight:300;text-transform:lowercase;
  font-size:clamp(1.4rem,2.6vw,2.1rem);letter-spacing:-.01em}
.worksHead span{font-size:.64rem;letter-spacing:.3em;text-transform:uppercase;
  color:var(--mist);font-family:ui-monospace,"SF Mono",Menlo,monospace}

/* ---------- pannello live (vive dentro il mondo 3D via CSS3D) ---------- */
#livePanel{width:1280px;height:800px;border-radius:68px;overflow:hidden;
  border:1px solid rgba(200,244,228,.42);background:rgba(14,20,19,.12);
  box-shadow:0 28px 90px rgba(0,0,0,.42),inset 0 0 0 1px rgba(255,255,255,.12),
    inset 0 10px 18px rgba(255,255,255,.045),inset 0 -16px 24px rgba(0,40,30,.12);
  opacity:0;pointer-events:none;isolation:isolate;contain:paint;
  backface-visibility:hidden;-webkit-backface-visibility:hidden;will-change:transform}
#livePanel.ready{opacity:1}
#livePanel::before{content:"";position:absolute;z-index:2;inset:0;pointer-events:none;
  border-radius:inherit;background:rgba(5,11,9,var(--depth-shade,0))}
#livePanel::after{content:"";position:absolute;z-index:4;inset:0;pointer-events:none;
  border-radius:inherit;background:linear-gradient(115deg,transparent 0 42%,
    rgba(255,255,255,.08) 48%,transparent 55%);opacity:.28}
#livePanel.front{pointer-events:auto}
#livePanel iframe{position:absolute;inset:0;width:100%;height:100%;border:0;
  border-radius:inherit;transform:none;pointer-events:none;background:#0e0e10;
  filter:none;opacity:1;backface-visibility:hidden;-webkit-backface-visibility:hidden}
#livePanel.live iframe{pointer-events:auto}
.waterSurface{position:absolute;inset:0;z-index:1;width:100%;height:100%;
  border-radius:inherit;pointer-events:none;opacity:1;image-rendering:auto}
.ifrCover{position:absolute;inset:0;display:flex;flex-direction:column;gap:.6rem;
  align-items:flex-end;justify-content:flex-end;padding:24px;cursor:pointer;
  background:linear-gradient(to top,rgba(11,11,13,.25),rgba(11,11,13,0) 28%);
  border:0;border-radius:inherit;color:var(--ink);text-align:left;font-family:inherit;
  width:100%;z-index:3}
.ifrCover em{display:none}
.ifrCover span{font-size:.85rem;letter-spacing:.16em;text-transform:uppercase;
  color:rgba(237,235,230,.82);font-family:ui-monospace,"SF Mono",Menlo,monospace;
  border:1px solid rgba(211,242,231,.24);border-radius:999px;padding:.72rem .95rem;
  background:rgba(7,13,11,.72)}
#livePanel.live .ifrCover{display:none}
.ifrExit{display:none;position:absolute;right:16px;top:16px;z-index:5;
  padding:.6rem 1rem;border:1px solid var(--line);
  background:rgba(11,11,13,.85);color:var(--ink);cursor:pointer;font-size:.8rem;
  letter-spacing:.14em;text-transform:uppercase;
  font-family:ui-monospace,"SF Mono",Menlo,monospace;white-space:nowrap}
#livePanel.live .ifrExit{display:block}

/* ---------- apertura liquida del progetto ---------- */
.liquidTransition{position:fixed;z-index:89;inset:0;pointer-events:none;
  opacity:0;overflow:hidden;will-change:opacity}
.liquidTransition::before{content:"";position:absolute;inset:-20vmax;background:
    radial-gradient(circle at var(--wipe-x,50%) var(--wipe-y,50%),
      rgba(88,138,120,.42),rgba(9,18,15,.99) 22%,#050807 58%),
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='220' height='220'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.045' numOctaves='3'/></filter><rect width='100%25' height='100%25' filter='url(%23n)' opacity='.32'/></svg>");
  background-blend-mode:soft-light;clip-path:circle(0 at var(--wipe-x,50%) var(--wipe-y,50%));
  will-change:clip-path}
.liquidTransition::after{content:"";position:absolute;inset:-35vmax;
  transform-origin:var(--wipe-x,50%) var(--wipe-y,50%);opacity:0;
  background:repeating-radial-gradient(circle at var(--wipe-x,50%) var(--wipe-y,50%),
    transparent 0 3.5vmax,rgba(190,241,221,.48) 4vmax,
    rgba(77,139,116,.15) 5.4vmax,transparent 7.2vmax);
  mix-blend-mode:screen;filter:blur(9px) saturate(1.4);will-change:transform,opacity}
.liquidTransition.run{animation:waveScene .92s linear both}
.liquidTransition.run::before{animation:liquidOpen .82s cubic-bezier(.72,0,.18,1) both}
.liquidTransition.run::after{animation:waveTunnel .78s cubic-bezier(.14,.65,.2,1) both}
@keyframes waveScene{0%,82%{opacity:1}100%{opacity:0}}
@keyframes liquidOpen{
  0%{clip-path:circle(0 at var(--wipe-x,50%) var(--wipe-y,50%))}
  100%{clip-path:circle(145vmax at var(--wipe-x,50%) var(--wipe-y,50%))}
}
@keyframes waveTunnel{
  0%{opacity:0;transform:scale(.08)}
  12%{opacity:.92}
  72%{opacity:.58;transform:scale(2.2)}
  100%{opacity:0;transform:scale(3.6)}
}
.projectDetail{position:fixed;z-index:88;inset:0;display:grid;place-items:center;
  background:radial-gradient(circle at 55% 45%,#13201d 0,#090d0c 48%,#060808 100%);
  opacity:0;visibility:hidden;pointer-events:none;overflow:hidden;
  transition:opacity .35s ease,visibility 0s linear .35s}
.projectDetail.open{opacity:1;visibility:visible;pointer-events:auto;
  transition:opacity .2s ease,visibility 0s}
.detailGhost{position:absolute;inset:0;display:flex;align-items:center;
  font-size:clamp(8rem,25vw,28rem);font-weight:300;letter-spacing:-.08em;
  color:rgba(200,231,220,.035);text-transform:uppercase;white-space:nowrap;
  transform:translateX(-5%);pointer-events:none}
.detailClose{position:absolute;z-index:4;right:4vw;top:4vh;border:1px solid rgba(218,244,234,.25);
  border-radius:999px;padding:.7rem 1.1rem;background:rgba(8,13,12,.56);color:var(--ink);
  font:600 .62rem ui-monospace,"SF Mono",Menlo,monospace;letter-spacing:.16em;
  text-transform:uppercase;cursor:pointer;backdrop-filter:blur(12px)}
.detailCopy{position:absolute;z-index:3;left:5vw;bottom:7vh;width:min(28rem,38vw)}
.detailCopy .mono{margin:0 0 1rem;color:#91b8a9;font-size:.61rem;letter-spacing:.2em;
  text-transform:uppercase}.detailCopy h1{margin:0;font-size:clamp(1.2rem,2.5vw,2.6rem);
  font-weight:300}.detailCopy #detailTag{font:.62rem ui-monospace,"SF Mono",Menlo,monospace;
  letter-spacing:.16em;text-transform:uppercase;color:#91a29c}.detailCopy #detailDescription{
  max-width:23rem;line-height:1.55;color:#b8c2be;font-size:.78rem}
.detailMedia{position:relative;width:min(58vw,920px);aspect-ratio:16/9;border-radius:32px;
  overflow:hidden;background:rgba(142,191,172,.08);border:1px solid rgba(220,255,240,.18);
  box-shadow:0 50px 150px rgba(0,0,0,.68),inset 0 1px 0 rgba(255,255,255,.12);
  transform:perspective(1000px) rotateY(-2deg)}
.detailMedia iframe,.detailPlaceholder{position:absolute;inset:0;width:100%;height:100%;border:0}
.detailPlaceholder{background:radial-gradient(circle at 40% 40%,var(--detail-b,#6cae91),
  var(--detail-a,#19372b) 48%,#07100d 100%)}
.detailMedia.has-live .detailPlaceholder{display:none}
.detailWater{position:absolute;z-index:2;inset:-20%;pointer-events:none;mix-blend-mode:screen;
  opacity:.16;background:
    radial-gradient(ellipse 34% 25% at var(--detail-x,50%) var(--detail-y,50%),
      rgba(205,244,229,.22),rgba(104,166,143,.07) 38%,transparent 72%),
    linear-gradient(118deg,transparent 28%,rgba(225,250,240,.06) 48%,transparent 67%);
  filter:blur(16px);transition:background-position .1s linear}
body.detail-open{overflow:hidden}

@media(max-width:760px){
  .detailMedia{width:88vw;transform:none}.detailCopy{left:6vw;bottom:5vh;width:80vw}
  .detailGhost{font-size:42vw}.detailClose{right:5vw;top:3vh}
}
