/* =========================================================
   Cosimo Politi — Portfolio
   Cinematic dark theme · gold/amber accent
   ========================================================= */

:root{
  --bg:            #0a0a0b;
  --bg-soft:       #101012;
  --bg-elev:       #16161a;
  --line:          rgba(255,255,255,.10);
  --text:          #f2f2f0;
  --muted:         #9a9a97;
  --faint:         #82827e;
  --gold:          #c9a15a;
  --gold-soft:     #e6c98a;
  --gold-deep:     #a8823f;

  --font-serif: "Cormorant Garamond", Georgia, serif;
  --font-sans:  "Hanken Grotesk", system-ui, -apple-system, sans-serif;

  --ease:        cubic-bezier(.22,1,.36,1);
  --ease-out:    cubic-bezier(.16,1,.3,1);
  --ease-reveal: cubic-bezier(.2,1,.22,1);

  --pad: clamp(1.25rem, 5vw, 6rem);
  --maxw: 1400px;
}

/* ---------- Reset ---------- */
*,*::before,*::after{ box-sizing:border-box; margin:0; padding:0; }
html{ scroll-behavior:smooth; -webkit-text-size-adjust:100%; }
@media (prefers-reduced-motion: reduce){ html{ scroll-behavior:auto; } }

body{
  font-family:var(--font-sans);
  background:var(--bg);
  color:var(--text);
  line-height:1.6;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
img{ display:block; max-width:100%; }
a{ color:inherit; text-decoration:none; }
button{ font:inherit; color:inherit; background:none; border:none; cursor:pointer; }
::selection{ background:var(--gold); color:#000; }

/* Focus visibile solo da tastiera (accessibilità) */
:focus{ outline:none; }
:focus-visible{ outline:2px solid var(--gold); outline-offset:4px; border-radius:3px; }

/* Hide native cursor only where custom cursor is active (desktop) */
@media (hover:hover) and (pointer:fine){
  body.has-cursor{ cursor:none; }
  body.has-cursor a, body.has-cursor button{ cursor:none; }
}

/* ---------- Film grain ---------- */
.grain{
  position:fixed; inset:-50%; z-index:2; pointer-events:none;
  opacity:.045; mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  animation:grain 8s steps(6) infinite;
}
@keyframes grain{
  0%{transform:translate(0,0)} 20%{transform:translate(-4%,3%)}
  40%{transform:translate(3%,-4%)} 60%{transform:translate(-3%,2%)}
  80%{transform:translate(4%,-2%)} 100%{transform:translate(0,0)}
}

/* ---------- Preloader ---------- */
.preloader{
  position:fixed; inset:0; z-index:1000;
  background:var(--bg); display:grid; place-items:center;
  transition:opacity .8s var(--ease), visibility .8s;
}
.preloader.is-done{ opacity:0; visibility:hidden; }
.preloader__inner{ display:flex; flex-direction:column; align-items:center; gap:1.4rem; }
.preloader__mark{
  width:clamp(4.5rem,14vw,7.5rem); height:clamp(4.5rem,14vw,7.5rem);
  background-color:var(--gold);
  -webkit-mask:url(../img/cp-logo.svg) center/contain no-repeat;
  mask:url(../img/cp-logo.svg) center/contain no-repeat;
}
.preloader__bar{ width:min(60vw,240px); height:1px; background:var(--line); overflow:hidden; }
.preloader__fill{ display:block; height:100%; width:0; background:var(--gold); }
.preloader__count{ font-size:.7rem; letter-spacing:.3em; color:var(--faint); }

/* ---------- Custom cursor ---------- */
.cursor{ position:fixed; top:0; left:0; z-index:900; pointer-events:none; display:none; }
@media (hover:hover) and (pointer:fine){ .cursor{ display:block; } }
.cursor__dot{
  position:absolute; width:5px; height:5px; border-radius:50%;
  background:var(--gold); transform:translate(-50%,-50%);
}
.cursor__ring{
  position:absolute; width:34px; height:34px; border-radius:50%;
  border:1px solid rgba(201,161,90,.5); transform:translate(-50%,-50%);
  transition:width .35s var(--ease), height .35s var(--ease), background .35s, border-color .35s;
}
.cursor.is-hover .cursor__ring{ width:64px; height:64px; background:rgba(201,161,90,.08); border-color:var(--gold); }
.cursor.is-hidden .cursor__ring, .cursor.is-hidden .cursor__dot{ opacity:0; }
.cursor__label{
  position:absolute; transform:translate(-50%,-50%); font-size:.6rem;
  letter-spacing:.2em; text-transform:uppercase; color:#000; font-weight:600;
  opacity:0; transition:opacity .3s;
}
.cursor.is-label .cursor__ring{ width:72px; height:72px; background:var(--gold); border-color:var(--gold); }
.cursor.is-label .cursor__label{ opacity:1; }
.cursor.is-label .cursor__dot{ opacity:0; }

/* =========================================================
   Navigation
   ========================================================= */
.nav{
  position:fixed; top:0; left:0; right:0; z-index:100;
  display:flex; align-items:center; justify-content:space-between;
  padding:1.4rem var(--pad);
  transition:padding .5s var(--ease), background .5s var(--ease), backdrop-filter .5s;
}
.nav.is-scrolled{
  padding:.9rem var(--pad);
  background:rgba(10,10,11,.72);
  backdrop-filter:blur(14px);
  border-bottom:1px solid var(--line);
}
.nav__logo{ display:flex; align-items:center; gap:.7rem; }
.nav__logo-mark{
  width:2.7rem; height:2.7rem; display:block; flex:none;
  background-color:var(--gold);
  -webkit-mask:url(../img/cp-logo.svg) center/contain no-repeat;
  mask:url(../img/cp-logo.svg) center/contain no-repeat;
}
.nav__logo-text{
  font-family:"Jost", var(--font-sans);
  font-size:.82rem; letter-spacing:.34em; text-transform:uppercase; font-weight:500;
}
.nav__links{ display:flex; align-items:center; gap:2.2rem; }
.nav__links a{
  position:relative; font-size:.78rem; letter-spacing:.16em; text-transform:uppercase;
  color:var(--muted); transition:color .3s;
}
.nav__links a::after{
  content:""; position:absolute; left:0; bottom:-6px; width:0; height:1px;
  background:var(--gold); transition:width .4s var(--ease);
}
.nav__links a:hover{ color:var(--text); }
.nav__links a:hover::after{ width:100%; }
.nav__cta{
  color:var(--gold) !important; border:1px solid var(--line);
  padding:.6rem 1.2rem; border-radius:40px; transition:border-color .3s, background .3s;
}
.nav__cta::after{ display:none; }
.nav__cta:hover{ border-color:var(--gold); background:rgba(201,161,90,.08); }

.nav__toggle{ display:none; width:34px; height:34px; position:relative; z-index:101; }
.nav__toggle span{
  position:absolute; left:6px; right:6px; height:1.5px; background:var(--text);
  transition:transform .4s var(--ease), opacity .3s;
}
.nav__toggle span:nth-child(1){ top:13px; }
.nav__toggle span:nth-child(2){ bottom:13px; }
.nav.is-open .nav__toggle span:nth-child(1){ transform:translateY(5px) rotate(45deg); }
.nav.is-open .nav__toggle span:nth-child(2){ transform:translateY(-5px) rotate(-45deg); }

/* =========================================================
   Hero
   ========================================================= */
.hero{ position:relative; min-height:100svh; display:flex; align-items:flex-end; overflow:hidden; }
.hero__media{ position:absolute; inset:0; z-index:0; }
.hero__poster{
  position:absolute; inset:0; background-size:cover; background-position:center;
  filter:saturate(.9) contrast(1.04) brightness(.62);
  animation:kenburns 18s ease-out forwards;
}
@keyframes kenburns{ from{ transform:scale(1.12) } to{ transform:scale(1.0) } }

/* Showreel video di sfondo — sempre a copertura, dietro texture e scrim */
.hero__video{
  position:absolute; inset:0; overflow:hidden;
  opacity:0; transition:opacity 1.6s var(--ease);
}
.hero__video.is-playing{ opacity:1; }
.hero__video video{
  position:absolute; inset:0; width:100%; height:100%;
  object-fit:cover; object-position:center;
  pointer-events:none;
  filter:saturate(.95) contrast(1.03) brightness(.64);
}

/* Trama fine a puntini: texture editoriale + aiuta la leggibilità del testo */
.hero__texture{
  position:absolute; inset:0; pointer-events:none;
  background-image:radial-gradient(rgba(0,0,0,.6) 1px, transparent 1.3px);
  background-size:3px 3px; opacity:.12;
}
.hero__scrim{
  position:absolute; inset:0;
  background:
    radial-gradient(130% 100% at 18% 100%, rgba(8,8,9,.92) 0%, rgba(8,8,9,.35) 50%, transparent 78%),
    linear-gradient(to top, var(--bg) 1%, rgba(8,8,9,.28) 42%, rgba(8,8,9,.62) 100%);
}
.hero__content{
  position:relative; z-index:1; padding:0 var(--pad) clamp(4rem,10vh,8rem);
  max-width:960px;
}
.hero__eyebrow{
  font-size:.72rem; letter-spacing:.34em; text-transform:uppercase; color:var(--gold-soft);
  margin-bottom:1.6rem;
}
.hero__title{
  font-family:var(--font-serif); font-weight:400;
  font-size:clamp(3rem, 11vw, 9rem); line-height:.95; letter-spacing:-.01em;
  margin-bottom:1.8rem;
}
.hero__title em{ font-style:italic; color:var(--gold-soft); }
.hero__sub{ max-width:80ch; color:var(--muted); font-size:clamp(1rem,1.4vw,1.15rem); font-weight:300; margin-bottom:2.4rem; }
.hero__actions{ display:flex; flex-wrap:wrap; gap:1rem; }
.hero__scroll{
  position:absolute; right:var(--pad); bottom:clamp(2rem,6vh,4rem); z-index:1;
  display:flex; flex-direction:column; align-items:center; gap:.8rem;
  font-size:.62rem; letter-spacing:.3em; text-transform:uppercase; color:var(--faint);
  writing-mode:vertical-rl;
}
.hero__scroll-line{ width:1px; height:60px; background:linear-gradient(var(--gold),transparent); animation:scrollpulse 2s var(--ease) infinite; }
@keyframes scrollpulse{ 0%,100%{ transform:scaleY(.4); transform-origin:top; opacity:.4 } 50%{ transform:scaleY(1); opacity:1 } }
@media (max-width:640px){ .hero__scroll{ display:none; } }

/* Animated title lines */
/* padding-bottom evita che overflow:hidden tagli le discendenti (g, p, y);
   il margin-bottom negativo mantiene invariata la spaziatura tra le righe */
.line{ display:block; overflow:hidden; padding-bottom:.14em; margin-bottom:-.14em; }
.line__inner{ display:block; transform:translateY(110%); transition:transform 1s var(--ease); }
.is-ready .hero__title .line__inner,
.contact__title.is-in .line__inner{ transform:translateY(0); }
.hero__title .line:nth-child(2) .line__inner{ transition-delay:.12s; }

/* ---------- Buttons ---------- */
.btn{
  display:inline-flex; align-items:center; gap:.7rem;
  font-size:.76rem; letter-spacing:.16em; text-transform:uppercase; font-weight:500;
  padding:1rem 1.8rem; border-radius:44px; transition:transform .4s var(--ease), background .4s, color .4s, border-color .4s;
}
.btn__icon{ font-size:.7em; }
.btn--play{ background:var(--gold); color:#0a0a0b; }
.btn--play:hover{ transform:translateY(-3px); background:var(--gold-soft); }
.btn--ghost{ border:1px solid var(--line); color:var(--text); }
.btn--ghost:hover{ border-color:var(--gold); color:var(--gold-soft); }
.btn--solid{ background:var(--gold); color:#0a0a0b; justify-content:center; width:100%; }
.btn--solid:hover{ background:var(--gold-soft); }

/* =========================================================
   Marquee
   ========================================================= */
.marquee{
  border-top:1px solid var(--line); border-bottom:1px solid var(--line);
  overflow:hidden; padding:1.4rem 0; background:var(--bg-soft);
}
.marquee__track{
  display:inline-flex; align-items:center; gap:2.5rem; white-space:nowrap;
  animation:marquee 32s linear infinite; will-change:transform;
}
.marquee__track span{
  font-family:var(--font-serif); font-style:italic; font-size:clamp(1.6rem,4vw,2.6rem);
  color:var(--faint);
}
.marquee__track .dot{ color:var(--gold); font-style:normal; font-size:1rem; }
@keyframes marquee{ to{ transform:translateX(-50%); } }

/* =========================================================
   Sections (shared)
   ========================================================= */
.section{ padding:clamp(5rem,12vh,9rem) var(--pad); max-width:var(--maxw); margin:0 auto; }
.section__head{ max-width:720px; margin-bottom:clamp(2.5rem,6vh,4.5rem); }
.section__index{
  display:inline-block; font-size:.7rem; letter-spacing:.28em; text-transform:uppercase;
  color:var(--gold); margin-bottom:1.2rem;
}
.section__title{
  font-family:var(--font-serif); font-weight:400; line-height:1;
  font-size:clamp(2.4rem,6vw,4.5rem); letter-spacing:-.01em; margin-bottom:1.2rem;
}
.section__lead{ color:var(--muted); font-weight:300; max-width:52ch; }

/* ---------- Reveal animation ---------- */
.reveal{ opacity:0; transform:translateY(18px); transition:opacity 1.1s var(--ease-reveal), transform 1.1s var(--ease-reveal); transition-delay:var(--reveal-d, 0s); }
.reveal.is-in{ opacity:1; transform:none; }
@media (prefers-reduced-motion: reduce){
  .reveal{ opacity:1 !important; transform:none !important; }
  .line__inner{ transform:none !important; }
  .hero__poster{ animation:none !important; }
  .marquee__track,.grain{ animation:none !important; }
  .work-card__reveal, .photo-item img, .about__portrait{ clip-path:none !important; }
  .work-card__img, .photo-item img, .about__portrait{ transform:none !important; }
}

/* =========================================================
   Video work grid
   ========================================================= */
.work__grid{ display:grid; grid-template-columns:repeat(2,1fr); gap:clamp(1rem,2vw,1.6rem); }
.work-card{
  position:relative; aspect-ratio:16/9; overflow:hidden; border-radius:4px;
}
.work-card.is-hidden{ display:none; }
.work-card__reveal{
  position:absolute; inset:0;
  clip-path:inset(100% 0 0 0 round 4px);
  transition:clip-path 1.2s var(--ease-reveal) var(--reveal-d, 0s);
}
.work-card.is-in .work-card__reveal{ clip-path:inset(0 0 0 0 round 4px); }
.work-card__img{
  position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:center;
  transform:scale(1.28); transition:transform 1.5s var(--ease-reveal), filter 1.2s;
  filter:brightness(.65) saturate(.9);
}
.work-card.is-in .work-card__img{ transform:scale(1.02); }
.work-card:hover .work-card__img{ transform:scale(1.08); filter:brightness(.8) saturate(1); }
.work-card__scrim{ position:absolute; inset:0; background:linear-gradient(to top, rgba(8,8,9,.85), transparent 60%); }
.work-card__body{ position:absolute; left:0; bottom:0; padding:clamp(1.2rem,2.5vw,2rem); z-index:1; }
.work-card__cat{ font-size:.66rem; letter-spacing:.24em; text-transform:uppercase; color:var(--gold-soft); }
.work-card__title{ font-family:var(--font-serif); font-size:clamp(1.4rem,2.6vw,2.1rem); margin-top:.4rem; line-height:1.05; }
.work-card__play{
  position:absolute; top:50%; left:50%; transform:translate(-50%,-50%) scale(.8);
  width:70px; height:70px; border-radius:50%; border:1px solid rgba(255,255,255,.5);
  display:grid; place-items:center; z-index:1; opacity:0;
  transition:opacity .5s var(--ease), transform .5s var(--ease), background .4s;
  backdrop-filter:blur(4px);
}
.work-card__play::after{ content:"▶"; font-size:.9rem; margin-left:3px; }
.work-card:hover .work-card__play{ opacity:1; transform:translate(-50%,-50%) scale(1); background:rgba(201,161,90,.2); border-color:var(--gold); }

@media (max-width:600px){
  .work__grid{ grid-template-columns:1fr; }
}

/* "Carica altro" */
.work__more-wrap{ display:flex; justify-content:center; margin-top:clamp(2rem,4vw,3.2rem); }
.work__more-wrap[hidden]{ display:none; }
.work__more{
  font-family:"Jost", var(--font-sans);
  font-size:.76rem; letter-spacing:.2em; text-transform:uppercase; font-weight:500;
  color:var(--gold-soft); padding:1rem 2.6rem; border:1px solid var(--line);
  border-radius:44px; display:inline-flex; align-items:center; gap:.8rem;
  transition:border-color .35s var(--ease), background .35s, color .35s, transform .35s var(--ease);
}
.work__more span{ font-size:1.1em; line-height:0; transition:transform .35s var(--ease); }
.work__more:hover{ border-color:var(--gold); background:rgba(201,161,90,.08); color:var(--gold); transform:translateY(-2px); }
.work__more:hover span{ transform:rotate(90deg); }

/* =========================================================
   Photo grid
   ========================================================= */
.photo__filters,
.work__filters{ display:flex; flex-wrap:wrap; gap:.6rem; margin-bottom:2.5rem; }
.filter{
  font-size:.72rem; letter-spacing:.14em; text-transform:uppercase; color:var(--muted);
  padding:.55rem 1.1rem; border:1px solid var(--line); border-radius:40px;
  transition:color .3s, border-color .3s, background .3s;
}
.filter:hover{ color:var(--text); border-color:var(--faint); }
.filter.is-active{ color:#0a0a0b; background:var(--gold); border-color:var(--gold); }

.photo__grid{ columns:3; column-gap:clamp(.8rem,1.5vw,1.4rem); }
@media (max-width:900px){ .photo__grid{ columns:2; } }
@media (max-width:560px){ .photo__grid{ columns:1; } }
.photo-item{
  position:relative; margin-bottom:clamp(.8rem,1.5vw,1.4rem); break-inside:avoid;
  overflow:hidden; border-radius:3px; cursor:pointer;
}
.photo-item.is-hidden{ display:none; }
.photo-item img{
  width:100%; display:block; filter:brightness(.85);
  clip-path:inset(100% 0 0 0 round 3px); transform:scale(1.2);
  transition:clip-path 1.1s var(--ease-reveal) var(--reveal-d, 0s), transform 1.4s var(--ease-reveal), filter .6s;
}
.photo-item.is-in img{ clip-path:inset(0 0 0 0 round 3px); transform:scale(1); }
.photo-item:hover img{ transform:scale(1.06); filter:brightness(1); }
.photo-item__tag{
  position:absolute; bottom:0; left:0; right:0; padding:1.4rem 1rem .9rem;
  font-size:.66rem; letter-spacing:.2em; text-transform:uppercase; color:#fff;
  background:linear-gradient(transparent, rgba(8,8,9,.8)); opacity:0; transform:translateY(8px);
  transition:opacity .4s, transform .4s;
}
.photo-item:hover .photo-item__tag{ opacity:1; transform:none; }

/* =========================================================
   About
   ========================================================= */
.about__grid{ display:grid; grid-template-columns:.85fr 1.15fr; gap:clamp(2rem,6vw,6rem); align-items:center; }
@media (max-width:860px){ .about__grid{ grid-template-columns:1fr; } }
.about__media{ position:relative; }
.about__media.reveal{ opacity:1; transform:none; } /* il movimento è sul ritratto, non sul blocco */
.about__portrait{
  aspect-ratio:3/4; background-size:cover; background-position:center;
  border-radius:4px; filter:grayscale(.15) contrast(1.05);
  clip-path:inset(100% 0 0 0 round 4px); transform:scale(1.12);
  transition:clip-path 1.4s var(--ease-reveal), transform 1.7s var(--ease-reveal);
}
.about__media.is-in .about__portrait{ clip-path:inset(0 0 0 0 round 4px); transform:scale(1); }

/* Parallasse trattenuta: solo CSS, scroll-driven — enhancement su Chrome/Edge, no-op altrove */
@supports (animation-timeline: view()){
  @media (prefers-reduced-motion: no-preference){
    .about__portrait{ animation:aboutParallax linear both; animation-timeline:view(); animation-range:entry 0% exit 100%; }
    @keyframes aboutParallax{ from{ background-position:center 40%; } to{ background-position:center 60%; } }
  }
}
.about__caption{
  position:absolute; bottom:-.5rem; left:-.5rem;
  font-size:.66rem; letter-spacing:.2em; text-transform:uppercase; color:var(--faint);
  background:var(--bg); padding:.4rem .7rem;
}
.about__body p{ color:var(--muted); font-weight:300; margin-bottom:1.2rem; max-width:52ch; }
.about__stats{ display:flex; gap:clamp(1.5rem,4vw,3rem); margin:2.4rem 0; }
.stat__num{ font-family:var(--font-serif); font-size:clamp(2.2rem,4vw,3.2rem); color:var(--gold-soft); display:block; line-height:1; }
.stat__num::after{ content:"+"; color:var(--gold); }
.stat__label{ font-size:.68rem; letter-spacing:.18em; text-transform:uppercase; color:var(--faint); }
.about__clients{ list-style:none; display:flex; flex-wrap:wrap; gap:1.6rem; padding-top:2rem; border-top:1px solid var(--line); }
.about__clients li{ font-family:var(--font-serif); font-style:italic; font-size:1.3rem; color:var(--faint); transition:color .3s; }
.about__clients li:hover{ color:var(--gold-soft); }

/* =========================================================
   Contact
   ========================================================= */
.contact{ max-width:var(--maxw); }
.contact__inner{ max-width:1100px; }
.contact__title{
  font-family:var(--font-serif); font-weight:400; line-height:.98;
  font-size:clamp(2.6rem,8vw,6rem); letter-spacing:-.01em; margin:1rem 0 3rem;
}
.contact__title em{ font-style:italic; color:var(--gold-soft); }
.contact__grid{ display:grid; grid-template-columns:1.3fr .7fr; gap:clamp(2rem,6vw,5rem); }
@media (max-width:820px){ .contact__grid{ grid-template-columns:1fr; } }

.field{ position:relative; margin-bottom:1.8rem; }
.field input, .field textarea{
  width:100%; background:transparent; border:none; border-bottom:1px solid var(--line);
  padding:.9rem 0; color:var(--text); font-size:1rem; font-family:var(--font-sans);
  transition:border-color .4s; resize:none;
}
.field input:focus, .field textarea:focus{ outline:none; border-color:var(--gold); }
.field label{
  position:absolute; left:0; top:.9rem; color:var(--faint); pointer-events:none;
  transition:transform .35s var(--ease), color .35s, font-size .35s;
}
.field input:focus + label, .field input:not(:placeholder-shown) + label,
.field textarea:focus + label, .field textarea:not(:placeholder-shown) + label{
  transform:translateY(-1.5rem); font-size:.68rem; letter-spacing:.16em; text-transform:uppercase; color:var(--gold-soft);
}
.contact__note{ margin-top:1rem; font-size:.8rem; color:var(--gold-soft); min-height:1.2em; }

.contact__aside{ display:flex; flex-direction:column; gap:2rem; }
.contact__label{ display:block; font-size:.66rem; letter-spacing:.24em; text-transform:uppercase; color:var(--faint); margin-bottom:.5rem; }
.contact__link{ font-family:var(--font-serif); font-size:1.4rem; color:var(--gold-soft); border-bottom:1px solid transparent; transition:border-color .3s; }
.contact__link:hover{ border-color:var(--gold-soft); }
.contact__aside p{ color:var(--muted); font-weight:300; }
.contact__socials{ display:flex; flex-direction:column; gap:.5rem; }
.contact__socials a{ color:var(--muted); font-size:.9rem; width:fit-content; transition:color .3s, padding-left .3s; }
.contact__socials a:hover{ color:var(--gold-soft); padding-left:.5rem; }

/* =========================================================
   Footer
   ========================================================= */
.footer{ padding:clamp(3rem,6vh,5rem) var(--pad) 2rem; border-top:1px solid var(--line); max-width:var(--maxw); margin:0 auto; }
.footer__top{ display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:1rem; padding-bottom:3rem; }
.footer__brand{ display:flex; align-items:center; gap:1.1rem; }
.footer__brand-mark{
  width:clamp(3.2rem,7vw,4.6rem); height:clamp(3.2rem,7vw,4.6rem); flex:none;
  background-color:var(--gold);
  -webkit-mask:url(../img/cp-logo.svg) center/contain no-repeat;
  mask:url(../img/cp-logo.svg) center/contain no-repeat;
}
.footer__brand-text{ display:flex; flex-direction:column; gap:.5rem; }
.footer__brand-name{
  font-family:"Jost", var(--font-sans);
  font-size:clamp(1.1rem,2.4vw,1.6rem); letter-spacing:.34em; text-transform:uppercase;
  font-weight:500; color:var(--text); line-height:1;
}
.footer__brand-tag{
  font-family:"Jost", var(--font-sans);
  font-size:clamp(.62rem,1.2vw,.76rem); letter-spacing:.3em; text-transform:uppercase;
  font-weight:400; color:var(--gold-soft); line-height:1;
}
.footer__back{ font-size:.72rem; letter-spacing:.2em; text-transform:uppercase; color:var(--muted); transition:color .3s; }
.footer__back:hover{ color:var(--gold-soft); }
.footer__bottom{ display:flex; justify-content:space-between; flex-wrap:wrap; gap:.6rem; font-size:.72rem; letter-spacing:.1em; color:var(--faint); padding-top:1.5rem; border-top:1px solid var(--line); }

/* =========================================================
   Lightbox
   ========================================================= */
.lightbox{
  position:fixed; inset:0; z-index:800; display:grid; place-items:center;
  background:rgba(6,6,7,.94); backdrop-filter:blur(8px);
  opacity:0; visibility:hidden; transition:opacity .5s var(--ease), visibility .5s;
  padding:clamp(1rem,5vw,4rem);
}
.lightbox.is-open{ opacity:1; visibility:visible; }
.lightbox__close{
  position:absolute; top:clamp(1rem,3vw,2rem); right:clamp(1rem,3vw,2rem); z-index:2;
  width:48px; height:48px; border:1px solid var(--line); border-radius:50%; font-size:1rem;
  color:var(--text); transition:border-color .3s, transform .3s, background .3s;
}
.lightbox__close:hover{ border-color:var(--gold); transform:rotate(90deg); background:rgba(201,161,90,.1); }
.lightbox__frame{ width:min(1100px,100%); }
.lightbox__ratio{ position:relative; width:100%; aspect-ratio:16/9; background:#000; border-radius:4px; overflow:hidden; }
.lightbox__ratio iframe{ position:absolute; inset:0; width:100%; height:100%; border:0; }
.lightbox__fallback{
  display:block; margin-top:1rem; text-align:center;
  font-size:.72rem; letter-spacing:.14em; text-transform:uppercase; color:var(--faint);
  transition:color .3s;
}
.lightbox__fallback:hover{ color:var(--gold-soft); }

.lightbox--photo .lightbox__img{
  max-width:100%; max-height:82vh; border-radius:3px; transform:scale(.96);
  transition:transform .5s var(--ease); box-shadow:0 30px 80px rgba(0,0,0,.6);
}
.lightbox--photo.is-open .lightbox__img{ transform:scale(1); }
.lightbox__nav{
  position:absolute; top:50%; transform:translateY(-50%); z-index:2;
  width:54px; height:54px; border:1px solid var(--line); border-radius:50%;
  font-size:1.6rem; color:var(--text); transition:border-color .3s, background .3s;
}
.lightbox__nav:hover{ border-color:var(--gold); background:rgba(201,161,90,.1); }
.lightbox__nav--prev{ left:clamp(.5rem,3vw,2rem); }
.lightbox__nav--next{ right:clamp(.5rem,3vw,2rem); }
.lightbox__caption{ position:absolute; bottom:clamp(1rem,3vw,2rem); left:50%; transform:translateX(-50%); font-size:.72rem; letter-spacing:.2em; text-transform:uppercase; color:var(--faint); }
@media (max-width:560px){ .lightbox__nav{ width:42px; height:42px; font-size:1.2rem; } }

/* =========================================================
   Mobile nav
   ========================================================= */
@media (max-width:820px){
  .nav__toggle{ display:block; }
  .nav__links{
    position:fixed; top:0; left:0; width:100%; height:100svh; z-index:100;
    flex-direction:column; justify-content:center; gap:2rem;
    background:rgba(10,10,11,.98); backdrop-filter:blur(20px);
    transform:translateY(-100%); transition:transform .6s var(--ease);
  }
  .nav.is-open .nav__links{ transform:translateY(0); }
  .nav__links a{ font-size:1.1rem; letter-spacing:.2em; color:var(--text); }
  .nav__cta{ margin-top:1rem; }
}

/* =========================================================
   Note legali (footer) + Cookie banner + gate consenso
   ========================================================= */
.footer__legal{ display:flex; flex-wrap:wrap; gap:1.4rem; }
.footer__legal a{ color:var(--faint); transition:color .3s; }
.footer__legal a:hover{ color:var(--gold-soft); }

.cookie{
  position:fixed; left:0; right:0; bottom:0; z-index:850;
  background:rgba(12,12,14,.97); backdrop-filter:blur(14px);
  border-top:1px solid var(--line);
  padding:clamp(1.2rem,3vw,1.7rem) var(--pad);
  animation:cookieIn .6s var(--ease-out) both;
}
.cookie[hidden]{ display:none; }
@keyframes cookieIn{ from{ transform:translateY(100%); } to{ transform:translateY(0); } }
.cookie__inner{
  max-width:var(--maxw); margin:0 auto;
  display:flex; align-items:center; justify-content:space-between;
  gap:clamp(1.2rem,3vw,3rem); flex-wrap:wrap;
}
.cookie__text{ color:var(--muted); font-size:.86rem; font-weight:300; max-width:66ch; line-height:1.55; }
.cookie__text strong{ color:var(--text); font-weight:500; }
.cookie__text a{ color:var(--gold-soft); border-bottom:1px solid transparent; transition:border-color .3s; }
.cookie__text a:hover{ border-color:var(--gold-soft); }
.cookie__actions{ display:flex; gap:.8rem; flex:none; align-items:flex-start; }
.cookie__accept{ display:flex; flex-direction:column; align-items:center; gap:.45rem; }
.cookie__hint{ font-size:.6rem; letter-spacing:.14em; text-transform:uppercase; color:var(--faint); white-space:nowrap; }
.cookie__btn{
  font-family:"Jost", var(--font-sans);
  font-size:.74rem; letter-spacing:.16em; text-transform:uppercase; font-weight:500;
  padding:.85rem 1.9rem; border-radius:44px;
  transition:background .3s, border-color .3s, color .3s, transform .35s var(--ease);
}
.cookie__btn:hover{ transform:translateY(-2px); }
.cookie__btn--accept{ background:var(--gold); color:#0a0a0b; }
.cookie__btn--accept:hover{ background:var(--gold-soft); }
.cookie__btn--ghost{ border:1px solid var(--line); color:var(--text); }
.cookie__btn--ghost:hover{ border-color:var(--gold); color:var(--gold-soft); }
@media (max-width:640px){
  .cookie__actions{ width:100%; align-items:stretch; }
  .cookie__actions > .cookie__btn{ flex:1; text-align:center; }
  .cookie__accept{ flex:1; }
  .cookie__accept .cookie__btn{ width:100%; }
}

/* Placeholder consenso dentro il player video */
.lightbox__consent{
  position:absolute; inset:0; background:#000;
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  gap:1.6rem; text-align:center; padding:2rem;
}
.lightbox__consent p{ color:var(--muted); max-width:46ch; font-weight:300; }
.lightbox__consent strong{ color:var(--text); }
.lightbox__consent-actions{ display:flex; gap:1rem; flex-wrap:wrap; justify-content:center; }

/* =========================================================
   Pagine legali (privacy / cookie)
   ========================================================= */
.legal{ max-width:820px; margin:0 auto; padding:clamp(7rem,14vh,10rem) var(--pad) 5rem; }
.legal__back{ font-size:.72rem; letter-spacing:.2em; text-transform:uppercase; color:var(--muted); transition:color .3s; }
.legal__back:hover{ color:var(--gold-soft); }
.legal h1{ font-family:var(--font-serif); font-weight:400; font-size:clamp(2.4rem,6vw,3.6rem); line-height:1.05; margin:1.6rem 0 .6rem; }
.legal__updated{ color:var(--faint); font-size:.8rem; margin-bottom:3rem; }
.legal h2{ font-family:var(--font-serif); font-weight:500; font-size:clamp(1.4rem,3vw,1.9rem); margin:2.8rem 0 .8rem; }
.legal h3{ font-size:1rem; font-weight:600; margin:1.6rem 0 .5rem; color:var(--text); }
.legal p, .legal li{ color:var(--muted); font-weight:300; line-height:1.75; }
.legal p{ margin-bottom:1rem; }
.legal ul{ margin:0 0 1.2rem 1.2rem; }
.legal li{ margin-bottom:.45rem; }
.legal a{ color:var(--gold-soft); border-bottom:1px solid transparent; transition:border-color .3s; }
.legal a:hover{ border-bottom-color:var(--gold-soft); }
.legal strong{ color:var(--text); font-weight:500; }
.legal .fill{ color:var(--gold-soft); }
.legal .note{ font-size:.84rem; color:var(--faint); border-left:2px solid var(--line); padding-left:1.1rem; margin:1.6rem 0; }

/* =========================================================
   Gate anteprima privata
   ========================================================= */
.gate{
  position:fixed; inset:0; z-index:2000; background:var(--bg);
  display:grid; place-items:center; padding:2rem;
}
.gate[hidden], .gate-ok .gate{ display:none; }
.gate__box{
  display:flex; flex-direction:column; align-items:center; gap:1.15rem;
  text-align:center; max-width:340px; width:100%;
  animation:gateIn .7s var(--ease-out) both;
}
.gate--shake{ animation:gateShake .45s; }
@keyframes gateIn{ from{ opacity:0; transform:translateY(14px); } to{ opacity:1; transform:none; } }
@keyframes gateShake{ 10%,90%{transform:translateX(-2px)} 30%,70%{transform:translateX(4px)} 50%{transform:translateX(-6px)} }
.gate__mark{
  width:4rem; height:4rem; background-color:var(--gold);
  -webkit-mask:url(../img/cp-logo.svg) center/contain no-repeat;
  mask:url(../img/cp-logo.svg) center/contain no-repeat;
}
.gate__title{ font-family:var(--font-serif); font-weight:400; font-size:2.1rem; line-height:1; }
.gate__sub{ color:var(--muted); font-size:.9rem; font-weight:300; max-width:30ch; }
.gate__input{
  width:100%; background:transparent; border:1px solid var(--line); border-radius:44px;
  padding:.95rem 1.4rem; color:var(--text); font-size:1rem; text-align:center; font-family:var(--font-sans);
  transition:border-color .3s;
}
.gate__input:focus{ outline:none; border-color:var(--gold); }
.gate__btn{
  width:100%; background:var(--gold); color:#0a0a0b; padding:.95rem; border-radius:44px;
  font-family:"Jost", var(--font-sans); text-transform:uppercase; letter-spacing:.16em;
  font-size:.78rem; font-weight:500; transition:background .3s, transform .3s var(--ease);
}
.gate__btn:hover{ background:var(--gold-soft); transform:translateY(-2px); }
.gate__error{ color:#e08a8a; font-size:.82rem; }
