:root{
  --bg:#0A1218; --ink:#EAF2F2; --dim:#8FA3A8; --soft:#C3D2D5;
  --acc:#3DF0C4; --acc2:#2FD6CE; --pale:#BFF7EE;
  --glass:rgba(255,255,255,.05); --stroke:rgba(255,255,255,.11);
  --shadow:0 22px 60px rgba(0,0,0,.5);
  --ease:cubic-bezier(.19,1,.22,1);
  color-scheme:dark;
}
*{box-sizing:border-box}
html{overflow-x:hidden;width:100%}
body{margin:0;background:var(--bg);color:var(--ink);font-family:"Manrope",system-ui,sans-serif;
  -webkit-font-smoothing:antialiased;overflow-x:hidden;width:100%;max-width:100%;position:relative}
main{overflow-x:clip;max-width:100%}
img{display:block;max-width:100%}
a{color:inherit}
.wrap{max-width:1200px;width:100%;margin:0 auto;padding:0 clamp(18px,4vw,44px)}
.aura{position:fixed;inset:0;z-index:-1;pointer-events:none;
  background:radial-gradient(52% 38% at 18% 8%,rgba(61,240,196,.18) 0%,transparent 64%),
             radial-gradient(46% 36% at 86% 26%,rgba(47,214,206,.14) 0%,transparent 66%),
             radial-gradient(60% 44% at 50% 96%,rgba(47,214,206,.09) 0%,transparent 70%),var(--bg)}

/* ---------- NAV ---------- */
nav.site{display:flex;align-items:center;gap:clamp(13px,2.2vw,28px);padding:22px 0 18px;flex-wrap:wrap}
nav.site .brand{font-family:"Archivo",sans-serif;font-weight:900;font-size:16px;letter-spacing:-.03em;
  text-transform:uppercase;margin-right:auto}
/* "Sound Engineer" in Syne, più piccolo del nome e staccato da "Cody" */
nav.site .brand i{font-family:"Syne",sans-serif;font-style:normal;font-weight:600;font-size:.8em;
  letter-spacing:-.01em;margin-left:.35em;
  text-transform:none;color:var(--acc)}
nav.site a{font-family:"DM Mono",monospace;font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;
  color:rgba(234,242,242,.72);text-decoration:none;transition:color .25s}
nav.site a:hover,nav.site a:focus-visible{color:var(--acc);outline:none}
/* selettore della lingua: stesso carattere del menu, la lingua attiva in turchese */
nav.site .lingue{display:flex;align-items:center;gap:7px;padding-left:clamp(13px,2.2vw,28px);
  border-left:1px solid var(--stroke);font-family:"DM Mono",monospace;font-size:10.5px;letter-spacing:.18em;
  color:rgba(234,242,242,.3)}
nav.site .lingue button{font:inherit;letter-spacing:inherit;text-transform:uppercase;background:none;border:0;
  padding:4px 1px;margin:0;color:rgba(234,242,242,.5);cursor:pointer;transition:color .25s}
nav.site .lingue button:hover{color:var(--ink)}
nav.site .lingue button:focus-visible{color:var(--ink);outline:1px solid var(--acc);outline-offset:3px;border-radius:3px}
nav.site .lingue button[aria-pressed="true"]{color:var(--acc);cursor:default}
/* le voci stanno in un contenitore che sul computer non esiste (display:contents): il menu resta in riga */
nav.site .voci{display:contents}
nav.site .burger{display:none}
/* telefono e tablet: accanto alla lingua le tre lineette; le voci stanno in una tendina a schermo intero */
@media (max-width:820px){
  nav.site{position:relative;z-index:40;column-gap:14px}
  nav.site .lingue{border-left:0;padding-left:0}
  nav.site .burger{display:grid}
  /* in DM Mono lo spazio è largo quanto una lettera: "Prima e dopo" sembrava tre voci */
  nav.site a{word-spacing:-.35em}
  /* un velo di vetro scuro copre tutto; in alto restano nome, lingua e la X. Come la finestra delle
     copertine: il velo (::before) entra in dissolvenza e lo scuro e la sfocatura crescono insieme,
     poi le voci salgono una dopo l'altra */
  nav.site .voci{display:none;flex-direction:column;position:fixed;inset:0;z-index:-1;justify-content:center;
    padding:90px clamp(28px,9vw,48px) 48px;visibility:hidden}
  nav.site .voci::before{content:"";position:absolute;inset:0;z-index:-1;
    background:rgba(8,14,19,.9);backdrop-filter:blur(22px) saturate(1.35);-webkit-backdrop-filter:blur(22px) saturate(1.35);
    opacity:0}
  nav.site .voci a{font-size:15px;letter-spacing:.24em;padding:20px 2px;text-align:center;
    border-bottom:1px solid var(--stroke);opacity:0;transform:translateY(8px)}
  nav.site .voci a:last-child{border-bottom:0}
  /* la tendina esiste solo mentre si apre, è aperta o si chiude (classe attiva, la mette app.js) */
  nav.site.attiva .voci{display:flex}
  nav.site.aperto .voci{visibility:visible;transition:visibility 0s}
  nav.site.aperto .voci::before{opacity:1;transition:opacity .45s var(--ease)}
  nav.site.aperto .voci a{opacity:1;transform:none;transition:opacity .4s var(--ease),transform .5s var(--ease),color .25s}
  nav.site.aperto .voci a:nth-child(1){transition-delay:.06s,.06s,0s}
  nav.site.aperto .voci a:nth-child(2){transition-delay:.11s,.11s,0s}
  nav.site.aperto .voci a:nth-child(3){transition-delay:.16s,.16s,0s}
  nav.site.aperto .voci a:nth-child(4){transition-delay:.21s,.21s,0s}
  nav.site.aperto .voci a:nth-child(5){transition-delay:.26s,.26s,0s}
  nav.site.aperto .voci a:nth-child(6){transition-delay:.31s,.31s,0s}
  /* chiusura morbida: curva regolare, le voci escono in ordine inverso (Contact per prima)
     e il velo sparisce del tutto solo quando sono uscite */
  nav.site:not(.aperto) .voci{transition:visibility 0s linear .62s}
  nav.site:not(.aperto) .voci::before{transition:opacity .45s cubic-bezier(.4,0,.2,1) .12s}
  nav.site:not(.aperto) .voci a{transition:opacity .3s cubic-bezier(.4,0,.2,1),transform .35s cubic-bezier(.4,0,.2,1),color .25s}
  nav.site:not(.aperto) .voci a:nth-child(5){transition-delay:.03s,.03s,0s}
  nav.site:not(.aperto) .voci a:nth-child(4){transition-delay:.06s,.06s,0s}
  nav.site:not(.aperto) .voci a:nth-child(3){transition-delay:.09s,.09s,0s}
  nav.site:not(.aperto) .voci a:nth-child(2){transition-delay:.12s,.12s,0s}
  nav.site:not(.aperto) .voci a:nth-child(1){transition-delay:.15s,.15s,0s}
  /* con la tendina aperta la pagina sotto non scorre */
  body.menu-aperto{overflow:hidden}
}
/* le tre lineette: diventano una X quando la tendina è aperta */
nav.site .burger{width:40px;height:40px;place-items:center;padding:0;margin:0 -8px 0 0;background:none;border:0;
  cursor:pointer;position:relative}
nav.site .burger span{position:absolute;left:11px;width:18px;height:1.5px;border-radius:1px;background:var(--ink);
  transition:transform .3s var(--ease),opacity .2s}
nav.site .burger span:nth-child(1){top:14px}
nav.site .burger span:nth-child(2){top:19.25px}
nav.site .burger span:nth-child(3){top:24.5px}
nav.site.aperto .burger span:nth-child(1){transform:translateY(5.25px) rotate(45deg)}
nav.site.aperto .burger span:nth-child(2){opacity:0}
nav.site.aperto .burger span:nth-child(3){transform:translateY(-5.25px) rotate(-45deg)}
nav.site .burger:focus-visible{outline:1px solid var(--acc);outline-offset:-4px;border-radius:8px}

/* ---------- HERO (chiusa, non si tocca) ---------- */
.herobox{position:relative;border-radius:clamp(14px,1.6vw,22px);overflow:hidden;
  border:1px solid var(--stroke);box-shadow:var(--shadow);isolation:isolate}
.herobox .photo{position:absolute;inset:0;z-index:0}
.herobox .photo img{width:100%;height:100%;object-fit:cover;object-position:center 32%;transform:scaleX(-1)}
.herobox .scrim{position:absolute;inset:0;z-index:1;
  background:linear-gradient(96deg,rgba(8,14,19,.80) 0%,rgba(8,14,19,.68) 28%,rgba(8,14,19,.30) 56%,
    rgba(8,14,19,.08) 78%,rgba(10,18,24,.30) 100%)}
.herobox .inner{position:relative;z-index:2;min-height:clamp(400px,64vh,600px);display:flex;
  flex-direction:column;justify-content:center;padding:clamp(30px,5vw,64px);max-width:min(620px,66%)}
/* telefono: la foto resta protagonista in alto e la faccia si vede, il testo scende sotto */
@media (max-width:820px){
  .herobox{display:flex;flex-direction:column}
  .herobox .photo{position:relative;inset:auto;width:100%;aspect-ratio:4/3}
  .herobox .photo img{object-position:34% 32%}
  .herobox .scrim{background:linear-gradient(180deg,rgba(8,14,19,0) 34%,rgba(8,14,19,.55) 58%,
    rgba(8,14,19,.93) 76%,rgba(10,18,24,.97) 100%)}
  .herobox .inner{max-width:100%;min-height:0;margin-top:-16%;padding:clamp(20px,5vw,34px)}
}
.kicker{font-family:"DM Mono",monospace;font-size:10px;letter-spacing:.32em;text-transform:uppercase;
  color:var(--dim);margin:0 0 20px}
.kicker em{font-style:normal;color:var(--acc)}
.h1{font-family:"Archivo",sans-serif;font-weight:900;text-transform:uppercase;letter-spacing:-.04em;
  line-height:.96;margin:0 0 19px;text-wrap:balance;font-size:clamp(29px,4.2vw,54px);max-width:13ch}
.grad{background:linear-gradient(168deg,#FFFFFF 6%,var(--pale) 46%,var(--acc) 98%);
  -webkit-background-clip:text;background-clip:text;color:transparent;
  filter:drop-shadow(0 0 22px rgba(61,240,196,.22)) drop-shadow(0 14px 40px rgba(0,0,0,.55))}
.lede{font-size:clamp(13.5px,1.05vw,15px);line-height:1.66;color:var(--soft);max-width:40ch;margin:0;
  font-weight:300;text-shadow:0 2px 18px rgba(0,0,0,.55)}
.lede b{color:var(--ink);font-weight:600}

h2.sec{font-family:"Archivo",sans-serif;font-weight:800;text-transform:uppercase;letter-spacing:-.035em;
  font-size:clamp(24px,3.6vw,44px);margin:0;line-height:1}
.sechead{display:flex;flex-direction:column;align-items:flex-start;
  margin-bottom:clamp(20px,3vh,34px)}
.sechead .row{display:flex;align-items:stretch;gap:clamp(12px,1.6vw,18px);width:100%}
.sechead .bar{width:3px;border-radius:2px;flex:0 0 auto;transform-origin:top;transform:scaleY(0);
  background:linear-gradient(180deg,var(--acc),rgba(61,240,196,.12));
  transition:transform .85s var(--ease) .12s}
.sechead.in .bar{transform:scaleY(1)}
.sechead .stack{display:flex;flex-direction:column;gap:9px;justify-content:center;flex:1 1 auto;min-width:0}

.sechead .cap{font-family:"DM Mono",monospace;font-size:10.5px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--dim)}
.card{background:var(--glass);border:1px solid var(--stroke);border-radius:16px;
  backdrop-filter:blur(22px) saturate(1.35);box-shadow:var(--shadow)}
section{padding:clamp(50px,7.5vh,100px) 0}

/* ---------- CORNICE 1: Glow Border, cometa sul perimetro ---------- */
.gframe{position:absolute;inset:0;border-radius:inherit;padding:2px;pointer-events:none;z-index:6;
  overflow:hidden;
  -webkit-mask-image:linear-gradient(#fff 0 0),linear-gradient(#fff 0 0);
  -webkit-mask-clip:content-box,border-box;-webkit-mask-composite:xor;
  mask-image:linear-gradient(#fff 0 0),linear-gradient(#fff 0 0);
  mask-clip:content-box,border-box;mask-composite:exclude}
.gframe i{position:absolute;top:50%;left:50%;translate:-50% -50%;transform-origin:center;
  background:conic-gradient(from 0deg at 50% 50%,
    #B9FFF4 0deg, var(--acc) 12deg, rgba(61,240,196,.55) 34deg, rgba(140,225,255,.13) 64deg,
    rgba(140,225,255,.13) 78deg, rgba(61,240,196,.5) 146deg,
    #B9FFF4 180deg, var(--acc) 192deg, rgba(61,240,196,.55) 214deg, rgba(140,225,255,.13) 244deg,
    rgba(140,225,255,.13) 258deg, rgba(61,240,196,.5) 326deg,
    #B9FFF4 360deg);
  animation:gspin 7s linear infinite;will-change:transform}
/* alone morbido verso l'interno: il riquadro ritaglia tutto quello che esce dai bordi */
.ghalo{position:absolute;inset:0;border-radius:inherit;pointer-events:none;z-index:5;
  box-shadow:inset 0 0 18px rgba(61,240,196,.11),inset 0 0 52px rgba(61,240,196,.055)}
@keyframes gspin{to{rotate:360deg}}

/* ---------- RELEASES: carosello a scorrimento del giro 6 ---------- */
.cfout{position:relative;
  mask-image:linear-gradient(90deg,transparent 0,#000 16%,#000 84%,transparent 100%);
  -webkit-mask-image:linear-gradient(90deg,transparent 0,#000 16%,#000 84%,transparent 100%)}
.cf{display:flex;gap:12px;overflow-x:auto;perspective:1600px;
  padding:26px max(12px,calc(50% - 150px)) 30px;scrollbar-width:none;cursor:grab;
  -webkit-overflow-scrolling:touch}
@media (max-width:700px){
  .cf{gap:8px;padding:20px max(10px,calc(50% - 118px)) 24px}
  .cfi{padding:9px 9px 8px}
}
.cf.dragging{cursor:grabbing}
.cf::-webkit-scrollbar{display:none}
.cfi{flex:0 0 auto;width:clamp(198px,26vw,290px);text-decoration:none;will-change:transform;
  background:rgba(255,255,255,.045);border:1px solid var(--stroke);border-radius:16px;
  padding:14px 14px 12px;backdrop-filter:blur(14px);transition:border-color .3s;
  user-select:none;-webkit-user-select:none;position:relative;isolation:isolate;
  cursor:pointer}
.cfi:hover{border-color:rgba(61,240,196,.34)}
.cfi:focus-visible{outline:2px solid var(--acc);outline-offset:3px}
.cfi img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:10px;background:#111a1f;
  box-shadow:0 18px 40px rgba(0,0,0,.5);-webkit-user-drag:none;pointer-events:none}
/* tre righe: artista, titolo, e in piccolo da dove viene e l'anno */
.cfi .ar{font-size:12.5px;font-weight:600;margin-top:9px;line-height:1.18;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cfi .t{font-size:12px;font-weight:300;color:var(--soft);margin-top:2px;line-height:1.2;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cfi .s{font-family:"DM Mono",monospace;font-size:9px;letter-spacing:.06em;
  color:var(--dim);margin-top:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* ---------- PANNELLO DEL LAVORO: finestra al centro, sopra la pagina scurita ---------- */
.pn-body{display:flex;flex-direction:column;gap:18px}
.pn-head{display:flex;gap:14px;align-items:center;min-width:0}
.pn-head img{width:92px;height:92px;flex:0 0 auto;border-radius:10px;object-fit:cover;
  box-shadow:0 12px 30px rgba(0,0,0,.5)}
.pn-head>div{min-width:0}
.pn-ar{font-family:"Archivo",sans-serif;font-weight:800;font-size:19px;letter-spacing:-.02em;
  line-height:1.12;margin:0}
.pn-ti{font-size:14px;font-weight:300;color:var(--soft);margin:3px 0 0}
.pn-s{font-family:"DM Mono",monospace;font-size:10px;letter-spacing:.06em;color:var(--dim);margin:6px 0 0}
.pn-lab{font-family:"DM Mono",monospace;font-size:9.5px;letter-spacing:.22em;text-transform:uppercase;
  color:var(--dim);margin:0 0 8px}
.pn-ruoli{display:flex;flex-wrap:wrap;gap:6px}
.pn-ruoli span{font-family:"DM Mono",monospace;font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;
  color:var(--acc);border:1px solid rgba(61,240,196,.3);border-radius:99px;padding:4px 9px}
.pn-nota{font-size:12.5px;font-weight:300;line-height:1.5;color:var(--soft);margin:10px 0 0}
/* brani col numero che hanno sul disco; feat e prod sulla riga sotto, sigle dei ruoli a destra */
.pn-brani{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:7px;
  font-size:13px;line-height:1.4;color:var(--soft)}
.pn-brani li{display:grid;grid-template-columns:2.1em minmax(0,1fr) auto;gap:8px;align-items:baseline}
.pn-bp{font-family:"DM Mono",monospace;font-size:10px;letter-spacing:.06em;color:var(--dim)}
.pn-bn i{display:block;font-style:normal;font-size:11.5px;font-weight:300;color:var(--dim);margin-top:1px}
.pn-bs{font-family:"DM Mono",monospace;font-size:9px;letter-spacing:.12em;color:var(--dim);white-space:nowrap}
.pn-bdx{display:flex;align-items:center;gap:8px;align-self:center}
.pn-bl{display:flex;gap:5px}
.pn-bl a{width:27px;height:27px;border-radius:50%;border:1px solid var(--stroke);background:rgba(255,255,255,.06);
  display:grid;place-items:center;color:var(--ink);transition:border-color .25s,color .25s}
.pn-bl a svg{width:13px;height:13px;fill:currentColor}
.pn-bl a:hover,.pn-bl a:focus-visible{border-color:var(--acc);color:var(--acc);outline:none}
.pn-btns{display:flex;gap:8px;flex-wrap:wrap}
.pn-btn{display:inline-flex;align-items:center;gap:8px;padding:9px 15px 9px 11px;border-radius:99px;
  border:1px solid var(--stroke);background:rgba(255,255,255,.06);text-decoration:none;
  font-size:12.5px;font-weight:600;color:var(--ink);transition:border-color .25s,color .25s}
.pn-btn svg{width:17px;height:17px;fill:currentColor;flex:0 0 auto}
.pn-btn:hover,.pn-btn:focus-visible{border-color:var(--acc);color:var(--acc);outline:none}
.pn-x{position:absolute;top:12px;right:12px;width:32px;height:32px;border-radius:50%;
  border:1px solid var(--stroke);background:rgba(0,0,0,.28);color:var(--ink);cursor:pointer;
  font-size:18px;line-height:1;transition:border-color .25s,color .25s}
.pn-x:hover,.pn-x:focus-visible{border-color:var(--acc);color:var(--acc);outline:none}

/* la dissolvenza sta sul velo e sulla finestra, mai sul contenitore: un contenitore
   semitrasparente impedisce al browser di sfocare la pagina, e il blur scattava a fine apertura.
   Il contenitore si mostra e si nasconde soltanto, aspettando in chiusura che la dissolvenza finisca */
.pn-modal{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:18px;
  visibility:hidden;pointer-events:none;transition:visibility 0s linear .45s}
.pn-modal.aperta{visibility:visible;pointer-events:auto;transition-delay:0s}
.pn-scrim{position:absolute;inset:0;background:rgba(4,9,12,.74);backdrop-filter:blur(6px);
  opacity:0;transition:opacity .35s var(--ease)}
.pn-modal.aperta .pn-scrim{opacity:1}
.pn-dialog{position:relative;width:min(480px,100%);max-height:calc(100vh - 36px);overflow:auto;
  padding:26px;background:rgba(14,24,30,.92);transform:translateY(14px) scale(.97);opacity:0;
  transition:opacity .35s var(--ease),transform .45s var(--ease)}
.pn-modal.aperta .pn-dialog{transform:none;opacity:1}
/* telefono: i ruoli stanno su una riga e le sigle dei brani si stringono, staccandosi dai titoli */
@media (max-width:560px){
  .pn-dialog{padding:22px 20px}
  .pn-ruoli{gap:4px}
  .pn-ruoli span{padding:4px 6px;letter-spacing:.04em}
  .pn-brani li{column-gap:14px}
  .pn-bs{letter-spacing:.03em;word-spacing:-.3em}
  .pn-punto{display:none}
  .pn-data{display:block}
  /* Spotify, Apple Music e YouTube su una riga sola */
  .pn-btns{gap:5px;flex-wrap:nowrap}
  /* occupano tutta la riga, e testo e icone crescono con lo schermo */
  .pn-btn{flex:1 1 auto;justify-content:center;white-space:nowrap;padding:8px 7px;gap:5px;font-size:clamp(11.5px,3.2vw,12.5px)}
  .pn-btn svg{width:clamp(14px,4vw,16px);height:clamp(14px,4vw,16px)}
}

/* segnalibro: un puntino per lavoro, quello al centro è acceso */
.dots{display:flex;gap:7px;align-items:center;justify-content:center;flex-wrap:wrap;
  margin-top:6px;padding:0 clamp(18px,4vw,44px)}
.dots button{height:8px;width:8px;border-radius:50%;background:rgba(255,255,255,.22);border:none;
  cursor:pointer;padding:0;transition:background .3s,transform .3s var(--ease)}
.dots button:hover{background:rgba(255,255,255,.45)}
.dots button[aria-current="true"]{background:var(--acc);transform:scale(1.45)}

/* ---------- ARTISTI ---------- */
.artbox{position:relative;overflow:hidden;border-radius:clamp(14px,1.6vw,22px);
  border:1px solid var(--stroke);box-shadow:var(--shadow)}
.artbox .bg{position:relative;z-index:0;line-height:0}
.artbox .bg img{width:100%;height:auto;object-position:50% 50%}
.artbox .veil{position:absolute;inset:0;z-index:1;
  background:linear-gradient(180deg,rgba(10,18,24,.42) 0%,rgba(10,18,24,.14) 22%,rgba(10,18,24,.30) 50%,
    rgba(10,18,24,.88) 80%,rgba(10,18,24,.97) 100%)}
.artbox .content{position:absolute;inset:0;z-index:2;
  padding:clamp(30px,6vh,80px) clamp(20px,3vw,44px) clamp(24px,4vh,52px);
  display:flex;flex-direction:column;justify-content:flex-end}
/* su schermo stretto la foto intera diventa una striscia: si torna al taglio, tenendo alta la figura */
@media (max-width:760px){
  .artbox{min-height:500px}
  .artbox .bg{position:absolute;inset:0}
  .artbox .bg img{height:100%;object-fit:cover;object-position:50% 46%}
}
.arthead{display:flex;align-items:baseline;gap:clamp(10px,1.4vw,18px);flex-wrap:wrap;margin-bottom:clamp(18px,2.6vh,30px)}
.arthead h2{font-family:"Archivo",sans-serif;font-weight:900;text-transform:uppercase;letter-spacing:-.045em;
  font-size:clamp(38px,7vw,86px);margin:0;line-height:.9;position:relative;color:transparent;
  background-image:linear-gradient(168deg,rgba(226,255,248,.62),rgba(61,240,196,.5)),var(--bgimg);
  background-size:cover;background-position:center 26%;
  -webkit-background-clip:text;background-clip:text;
  filter:drop-shadow(0 3px 18px rgba(0,0,0,.9)) drop-shadow(0 0 26px rgba(61,240,196,.22))}
.arthead h2::after{content:attr(data-t);position:absolute;inset:0;z-index:-1;
  color:transparent;-webkit-text-stroke:1px rgba(61,240,196,.5)}
/* accanto al titolo, sulla stessa linea di base: "registrati" in bianco, più piccolo del titolo */
.arthead span{font-family:"Archivo",sans-serif;font-weight:800;font-size:clamp(20px,3vw,38px);letter-spacing:-.025em;text-transform:uppercase;
  line-height:1;color:#FFFFFF;text-shadow:0 3px 18px rgba(0,0,0,.85)}
.rows{display:flex;flex-direction:column;gap:clamp(2px,.5vw,6px);position:relative;z-index:2}
/* niente spazio fra le due copie del rullo: lo spazio dopo l'ultima barra lo dà già il padding della traccia,
   così il primo nome ha la stessa distanza degli altri e il giro non salta */
.row{display:flex;gap:0;white-space:nowrap;overflow:hidden}
.track{display:flex;gap:.7em;padding-right:.7em;animation:slide var(--dur,46s) linear infinite;
  will-change:transform}
.row:nth-child(even) .track{animation-direction:reverse}
/* telefono: la prima riga (i nomi più importanti) mostra meno nomi alla volta, quindi scorre un po' più veloce */
@media (max-width:760px){
  .track{gap:.35em;padding-right:.35em}     /* meno spazio attorno alle "/": si vedono più nomi */
  .r1 .track{animation-duration:25s}     /* la prima riga è corta (6 nomi): poco più veloce della seconda */
  .r2 .track{animation-duration:43s}
}
.rows:hover .track{animation-play-state:paused}
@keyframes slide{from{transform:translateX(0)}to{transform:translateX(-100%)}}
.art{position:relative;display:inline-block;font-family:"Archivo",sans-serif;font-weight:800;
  letter-spacing:-.02em;color:#E9F3F3;transition:color .3s;text-shadow:0 6px 24px rgba(0,0,0,.6)}
/* al passaggio gli altri si ritirano e il nome puntato prende luce bianca attorno alle lettere */
.rows:hover .art{opacity:.28}
.rows:hover .sep{opacity:.16}
.rows .art:hover{opacity:1;color:#FFFFFF;transform:translateY(-2px) scale(1.04);
  text-shadow:0 0 10px rgba(255,255,255,.95),0 0 24px rgba(255,255,255,.6),
    0 0 44px rgba(214,255,248,.4),0 6px 24px rgba(0,0,0,.6)}
.art{transition:opacity .35s var(--ease),color .3s,transform .35s var(--ease)}
.sep{transition:opacity .35s var(--ease)}
.r1 .art{font-size:clamp(22px,2.9vw,36px)}
.r2 .art{font-size:clamp(19px,2.5vw,31px);color:#CFDEDE}
.r3 .art{font-size:clamp(17px,2.2vw,27px);color:#AFC4C6}
.sep{color:rgba(61,240,196,.5);font-family:"Archivo",sans-serif;font-weight:800}
.r1 .sep{font-size:clamp(22px,2.9vw,36px)}
.r2 .sep{font-size:clamp(19px,2.5vw,31px)}
.r3 .sep{font-size:clamp(17px,2.2vw,27px)}

/* ---------- ABOUT: banda sotto il titolo (giro 8) · su telefono diventa scheda centrata ---------- */
.idband{display:flex;align-items:center;gap:clamp(18px,3vw,36px);padding:clamp(18px,2.4vw,26px);
  margin-bottom:clamp(16px,2.4vw,24px);flex-wrap:wrap}
.face-r{width:clamp(96px,11vw,132px);aspect-ratio:1;border-radius:50%;overflow:hidden;flex:0 0 auto;
  border:1px solid rgba(61,240,196,.32);box-shadow:0 0 0 7px rgba(61,240,196,.05),var(--shadow)}
.face-r img{width:100%;height:100%;object-fit:cover;object-position:center 14%}
.idband .who{flex:1 1 210px;min-width:0}
.idband .nm{font-family:"Archivo",sans-serif;font-weight:800;font-size:clamp(18px,2vw,23px);letter-spacing:-.02em}
.idband .rl{font-family:"DM Mono",monospace;font-size:10px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--acc);margin-top:7px}
.facts{display:flex;gap:1px;background:var(--stroke);border:1px solid var(--stroke);border-radius:12px;
  overflow:hidden;flex-wrap:wrap}
.facts div{background:rgba(10,20,26,.72);padding:12px 16px;font-family:"DM Mono",monospace;font-size:11px;
  color:var(--dim);letter-spacing:.04em;flex:1 1 auto;white-space:nowrap}
.facts div b{color:var(--acc);font-weight:500}
@media (max-width:900px){
  .idband{flex-direction:column;text-align:center;gap:16px;padding:clamp(22px,5vw,28px)}
  .face-r{width:clamp(140px,38vw,190px)}
  .idband .who{flex:0 0 auto}
  .idband .rl{margin-top:8px}
  .facts{width:100%;flex-direction:column}
  .facts div{text-align:center}
}
.prose{padding:clamp(22px,3vw,38px);display:grid;
  grid-template-columns:minmax(0,1.12fr) minmax(0,.88fr);gap:clamp(26px,3.6vw,50px)}
.prose .cols{columns:1}
@media (max-width:820px){.prose{grid-template-columns:1fr;gap:clamp(22px,4vw,30px)}}

/* elenco esperienze, accanto al racconto */
.exp{min-width:0}
.exp h3{margin-top:0}
.exp ul{list-style:none;margin:0;padding:0}
.exp li{padding:10px 0 11px;border-bottom:1px solid var(--stroke);font-size:13px;line-height:1.6;
  color:var(--dim);font-weight:300}
.exp li:first-child{padding-top:0}
.exp li:last-child{border-bottom:0;padding-bottom:0}
.exp li b{color:var(--ink);font-weight:600}
.prose p{font-size:15px;line-height:1.74;color:var(--soft);margin:0 0 14px;font-weight:300;break-inside:avoid}
.prose p:last-child{margin-bottom:0}
.prose p b{color:var(--ink);font-weight:600}
.prose h3{font-family:"DM Mono",monospace;font-size:10px;letter-spacing:.26em;text-transform:uppercase;
  color:var(--acc);margin:26px 0 12px;font-weight:500;break-after:avoid}
.prose h3:first-child{margin-top:0}

/* ---------- PRIMA E DOPO ---------- */
.bawrap{position:relative;border-radius:16px;overflow:hidden}
.ba{position:relative;padding:clamp(20px,2.8vw,34px);display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,270px);gap:clamp(20px,3vw,38px);align-items:center}
@media (max-width:900px){.ba{grid-template-columns:1fr}}
@media (min-width:700px){.cfstage{--cw:clamp(196px,25vw,300px)}}
/* un solo Pokemon a vista: sta accanto alla descrizione e cambia con lo stadio scelto */
.ba .side .mon1{position:relative;height:clamp(58px,7vw,78px);display:flex;align-items:flex-end;
  margin-bottom:14px}
.monwrap{position:relative;display:inline-flex;align-items:flex-end;height:100%}
.ba .side .mon1 img{max-height:100%;width:auto;object-fit:contain;object-position:bottom left;
  filter:drop-shadow(0 0 16px rgba(61,240,196,.28));animation:monin .5s var(--ease)}

@keyframes monin{from{opacity:0;transform:translateY(7px) scale(.93)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.ba .side .mon1 img{animation:none}}
.ba .side .lab{font-family:"DM Mono",monospace;font-size:9.5px;letter-spacing:.24em;text-transform:uppercase;
  color:var(--dim);margin:0 0 10px}
.ba .side h3{font-family:"Archivo",sans-serif;font-weight:800;font-size:clamp(19px,2.2vw,25px);
  letter-spacing:-.025em;margin:0 0 11px;line-height:1.08}
.ba .side p{font-size:13.5px;line-height:1.62;color:#B6C6C9;margin:0;font-weight:300}
.tracks{display:flex;gap:7px;margin-bottom:16px;flex-wrap:nowrap;align-items:center}
@media (max-width:560px){
  .tracks b{display:none}
  .tracks{gap:6px}
  .tracks button{flex:1 1 0;padding:8px 4px;letter-spacing:.1em;text-align:center;font-size:9.5px}
}
.tracks b{font-family:"DM Mono",monospace;font-size:9.5px;letter-spacing:.22em;text-transform:uppercase;
  color:var(--dim);font-weight:400;margin-right:4px}
.tracks button{font-family:"DM Mono",monospace;font-size:10px;letter-spacing:.16em;text-transform:uppercase;
  background:rgba(255,255,255,.03);color:var(--dim);border:1px solid var(--stroke);border-radius:99px;
  padding:7px 15px;cursor:pointer;transition:.25s}
.tracks button:hover{color:var(--ink);border-color:rgba(255,255,255,.3)}
.tracks button[aria-pressed="true"]{color:#061014;background:var(--acc);border-color:var(--acc);font-weight:500}
/* i tre stadi come una linea evolutiva: cresce la creatura, cresce il brano */
.evo{display:flex;align-items:stretch;justify-content:center;gap:clamp(5px,.8vw,9px);margin-top:16px}
.evo .arw2{align-self:center;color:var(--dim);font-family:"DM Mono",monospace;font-size:15px;opacity:.55}
.stage{flex:0 1 86px;max-width:86px;min-width:0;background:rgba(255,255,255,.03);border:1px solid var(--stroke);
  border-radius:10px;padding:13px 6px 12px;cursor:pointer;text-align:center;
  transition:border-color .3s,background .3s,transform .35s var(--ease);color:inherit}
.stage:hover{border-color:rgba(61,240,196,.34)}
.stage[aria-pressed="true"]{border-color:var(--acc);background:rgba(61,240,196,.08);
  box-shadow:0 0 26px rgba(61,240,196,.16)}
.stage .lv{display:block;font-family:"DM Mono",monospace;font-size:7px;letter-spacing:.16em;
  text-transform:uppercase;color:var(--dim);margin-top:6px}
.stage .nm2{display:block;font-family:"Archivo",sans-serif;font-weight:800;font-size:10px;
  letter-spacing:.02em;text-transform:uppercase;margin-top:2px;color:#D6E4E6}
.stage[aria-pressed="true"] .nm2{color:var(--acc)}
.player{display:flex;align-items:center;gap:clamp(14px,2vw,22px)}
.pbtn{width:clamp(48px,5.4vw,60px);height:clamp(48px,5.4vw,60px);border-radius:50%;flex:0 0 auto;
  border:1px solid rgba(61,240,196,.34);background:radial-gradient(120% 120% at 30% 20%,
  rgba(61,240,196,.2) 0%,rgba(47,214,206,.07) 55%,transparent 100%);cursor:pointer;display:grid;
  place-items:center;transition:.3s;box-shadow:0 0 22px rgba(61,240,196,.12)}
.pbtn:hover{box-shadow:0 0 32px rgba(61,240,196,.26);transform:translateY(-1px)}
.pbtn svg{width:40%;height:40%;fill:var(--acc);stroke:none}
.wave{flex:1 1 auto;min-width:0}
.wave svg{width:100%;height:clamp(52px,7vw,78px);display:block;overflow:visible;cursor:pointer;touch-action:pan-y}
.wave svg:focus-visible{outline:1px solid var(--acc);outline-offset:6px;border-radius:4px}
.wave .bar{fill:rgba(234,242,242,.20)}
.wave .bar.on{fill:var(--acc)}
.wave .ph{stroke:var(--pale);stroke-width:1.6}
.tline{display:flex;justify-content:space-between;font-family:"DM Mono",monospace;font-size:10px;
  color:var(--dim);letter-spacing:.1em;margin-top:9px;gap:12px}
.tline .note{color:var(--acc);opacity:.8}
/* il browser aspetta un tocco: il play pulsa finché non si ascolta */
.pbtn.invito{animation:invito 1.5s ease-in-out infinite}
@keyframes invito{0%,100%{box-shadow:0 0 22px rgba(61,240,196,.12)}
  50%{box-shadow:0 0 0 7px rgba(61,240,196,.12),0 0 40px rgba(61,240,196,.42)}}
@media (prefers-reduced-motion:reduce){.pbtn.invito{animation:none}}

/* ---------- SERVIZI ---------- */
.svcwrap{display:flex;flex-direction:column;gap:clamp(12px,1.6vw,18px)}
.svc{display:grid;grid-template-columns:auto minmax(0,1fr);gap:clamp(16px,2.4vw,30px);align-items:start;
  padding:clamp(20px,2.4vw,30px);transition:border-color .35s}
.svc:hover{border-color:rgba(61,240,196,.32)}
.ico{width:clamp(48px,5vw,64px);height:clamp(48px,5vw,64px);border-radius:15px;display:grid;
  place-items:center;flex:0 0 auto;background:radial-gradient(120% 120% at 30% 20%,
  rgba(61,240,196,.18) 0%,rgba(47,214,206,.07) 55%,transparent 100%);
  border:1px solid rgba(61,240,196,.26);
  box-shadow:0 0 0 1px rgba(255,255,255,.03) inset,0 10px 26px rgba(0,0,0,.4),0 0 22px rgba(61,240,196,.12);
  transition:box-shadow .4s,transform .4s var(--ease)}
.svc:hover .ico{box-shadow:0 0 0 1px rgba(255,255,255,.05) inset,0 12px 30px rgba(0,0,0,.45),
  0 0 34px rgba(61,240,196,.3);transform:translateY(-2px)}
.ico svg{width:58%;height:58%;stroke:var(--acc);color:var(--acc);fill:none;stroke-width:1.4;
  stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 6px rgba(61,240,196,.45))}
.svc .n{font-family:"DM Mono",monospace;font-size:9.5px;letter-spacing:.24em;color:var(--acc);margin:0 0 6px}
.svc h3{font-family:"Archivo",sans-serif;font-weight:800;font-size:21px;letter-spacing:-.02em;margin:0 0 9px}
.svc p{font-size:14px;line-height:1.66;color:#B6C6C9;margin:0;font-weight:300}

/* ---------- CHIUSURA: testo dentro la foto su computer, impilato sul telefono (giro 7) ---------- */
.closing{position:relative}
.shot{position:relative;border-radius:clamp(16px,2vw,24px);overflow:hidden;border:1px solid var(--stroke);
  box-shadow:var(--shadow);isolation:isolate}
.shot img{width:100%;aspect-ratio:16/8.4;object-fit:cover;object-position:56% 26%;display:block}
.shot .tint{position:absolute;inset:0;z-index:1;
  background:linear-gradient(96deg,rgba(8,14,19,.92) 0%,rgba(8,14,19,.82) 26%,rgba(8,14,19,.44) 52%,
    rgba(8,14,19,.10) 78%,rgba(10,18,24,.30) 100%)}
.closing .in{position:absolute;inset:0;z-index:3;display:flex;flex-direction:column;justify-content:center;
  padding:clamp(22px,4.4vw,64px);max-width:min(620px,60%)}
.closing .big{font-family:"Archivo",sans-serif;font-weight:900;text-transform:uppercase;
  font-size:clamp(22px,3.9vw,54px);letter-spacing:-.04em;line-height:.98;margin:0 0 clamp(10px,1.6vw,20px);
  text-shadow:0 6px 30px rgba(0,0,0,.6)}
.closing .big i{font-family:"Instrument Serif",Georgia,serif;font-style:italic;font-weight:400;
  text-transform:none;color:var(--acc);letter-spacing:-.01em}
.closing p{font-size:clamp(12px,1.05vw,15px);line-height:1.66;color:var(--soft);
  margin:0 0 clamp(12px,1.8vw,24px);font-weight:300;max-width:40ch;text-shadow:0 2px 14px rgba(0,0,0,.6)}
.soc{display:flex;gap:clamp(6px,.8vw,9px);flex-wrap:wrap}
.soc a{font-family:"DM Mono",monospace;font-size:clamp(9px,.85vw,10.5px);letter-spacing:.16em;
  text-transform:uppercase;color:var(--ink);text-decoration:none;border:1px solid rgba(255,255,255,.28);
  padding:clamp(8px,.9vw,11px) clamp(11px,1.3vw,16px);border-radius:2px;transition:.25s;
  background:rgba(8,14,19,.32);backdrop-filter:blur(6px)}
.soc a:hover{color:#061014;border-color:var(--acc);background:var(--acc)}
@media (max-width:880px){
  /* testo sopra e foto sotto nel suo riquadro, con la stessa cornice degli altri */
  .closing{display:flex;flex-direction:column-reverse;gap:clamp(20px,5vw,30px)}
  .closing .in{position:static;max-width:100%;padding:0}
  .closing .big{font-size:clamp(30px,8.6vw,44px)}
  .closing p{font-size:14.5px;max-width:46ch;color:var(--soft);text-shadow:none}
  .shot img{aspect-ratio:4/3;object-position:60% 34%}
  .shot .tint{background:linear-gradient(180deg,rgba(10,18,24,.06) 0%,rgba(10,18,24,.28) 100%)}
  .soc a{color:var(--dim);background:none;backdrop-filter:none;border-color:var(--stroke)}
  .soc a:hover{color:#061014}
}

.rv{opacity:0;transform:translateY(26px)}
.rv-l{opacity:0;transform:translateX(-54px)}
.rv-r{opacity:0;transform:translateX(54px)}
.rv,.rv-l,.rv-r{transition:opacity .85s var(--ease),transform .85s var(--ease)}
.rv.in,.rv-l.in,.rv-r.in{opacity:1;transform:none}
/* telefono: dissolvenza distribuita in modo regolare, senza lo scatto iniziale della curva del computer */
@media (max-width:820px){
  .rv,.rv-l,.rv-r{transition:opacity .8s cubic-bezier(.4,0,.2,1),transform .9s cubic-bezier(.22,.61,.36,1)}
  /* Releases (titolo e carosello) entra un po' più lento */
  #releases .rv{transition:opacity 1s cubic-bezier(.4,0,.2,1),transform 1.1s cubic-bezier(.22,.61,.36,1)}
  #releases .cfout.rv{transition:opacity 1.15s cubic-bezier(.4,0,.2,1),transform 1.25s cubic-bezier(.22,.61,.36,1)}
  #artists .rv{transition:opacity 1s cubic-bezier(.4,0,.2,1),transform 1.1s cubic-bezier(.22,.61,.36,1)}
  /* il play si centra sulla forma d'onda, non sull'insieme forma d'onda più riga dei tempi */
  .player{align-items:flex-start}
  .pbtn{margin-top:calc((clamp(52px,7vw,78px) - clamp(48px,5.4vw,60px)) / 2)}
}
@media (prefers-reduced-motion:reduce){
  .rv,.rv-l,.rv-r,#releases .rv,#releases .cfout.rv,#artists .rv{opacity:1 !important;transform:none !important;transition:none}
  .track,.gframe i{animation:none}
  .slide{transition:none}
}

/* ---------- MAGIA: spettro, meter e rivelazioni sonore ---------- */
:root{--boost:1}

/* separatore fra le sezioni: una linea sottile, ferma, sfumata ai bordi (giro 25) */
.hair{height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.16) 22%,
  rgba(255,255,255,.16) 78%,transparent)}

/* separatore a spettro del giro 23, spento: resta qui se un domani lo si rivuole */
.wavesep{display:flex;align-items:flex-end;justify-content:center;gap:3px;
  height:clamp(26px,3.4vw,40px);pointer-events:none;opacity:.42;
  mask-image:linear-gradient(90deg,transparent,#000 16%,#000 84%,transparent);
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 16%,#000 84%,transparent)}
.wavesep i{display:block;width:3px;height:100%;border-radius:2px;transform-origin:bottom;
  background:linear-gradient(180deg,var(--acc) 0%,rgba(61,240,196,.18) 100%);
  animation:spectro var(--d,2.2s) cubic-bezier(.42,0,.58,1) infinite alternate;
  animation-delay:var(--dl,0s)}
@keyframes spectro{
  from{transform:scaleY(calc(var(--h) * .22))}
  to{transform:scaleY(calc(var(--h) * var(--boost)))}
}


/* la forma d'onda del player si accende attorno al punto di ascolto */
.wave .bar.hot{fill:var(--pale)}
.wave.playing .ph{filter:drop-shadow(0 0 6px rgba(191,247,238,.9))}

@media (prefers-reduced-motion:reduce){
  .wavesep i{animation:none}
  .pn-modal,.pn-scrim,.pn-dialog{transition:none}
  nav.site .voci,nav.site .voci::before,nav.site .voci a,nav.site .burger span{transition:none !important}
}

/* Bordi luminosi: tenuti nel foglio di stile ma spenti.
   Per riaccenderli basta aggiungere la classe "bordi" al body. */
body:not(.bordi) .gframe,
body:not(.bordi) .ghalo{display:none !important}
