/* Proposta D — Cuvée (reference: klimtwine.com)
 * Bottiglia stile Cristal Rosé al centro: fotogrammi in path tracing su due canvas fissi sopra al testo
 * (trasmissione in multiply + riflessi in plus-lighter: il vetro lascia vedere il fondo vero).
 * Avorio e cipria, notte solo per Mezzanotte e Pit Lane; dettagli rame come la bottiglia.
 * Titoli Bodoni Moda (didone ad alto contrasto, più deciso del Cormorant), testo Anek Bangla leggero (font del sito attuale).
 * Foto dell'edizione 2025 lungo la navigazione: fluttuanti in parallasse, sfondi a tutto schermo nei capitoli notte, rullino.
 */
:root {
  --sinapps-color-primary: #B07656;   /* Rame — linee, dettagli, testi grandi */
  --sinapps-color-secondary: #F6F1EA; /* Avorio — fondo */
  --sinapps-color-text: #2B2220;      /* Inchiostro caldo */
  --sinapps-color-accent: #8C5A42;    /* Rame scuro — testi piccoli in rame (contrasto AA su avorio) */
  --cv-cipria: #EFDFD6;
  --cv-notte: #1D1718;
  --cv-avorio-testo: #F3ECE3;

  --sinapps-font-primary: 'Anek Bangla', 'Helvetica Neue', Arial, sans-serif;   /* titoli: maiuscolo largo e sottile, come il logo */
  --cv-font-script: 'Bodoni Moda', 'Didot', 'Bodoni 72', Georgia, serif;          /* solo corsivo d'accento */
  --sinapps-font-text: 'Anek Bangla', 'Helvetica Neue', Arial, sans-serif;

  --cv-ink: var(--sinapps-color-text);
  --cv-ink-soft: rgba(43, 34, 32, 0.68);
  --cv-line: rgba(140, 90, 66, 0.28);
  --cv-copper: var(--sinapps-color-accent);
  --cv-gutter: clamp(20px, 3.4vw, 52px);
  --cv-ease: cubic-bezier(.2, .7, .1, 1);
}
body[data-tone="light"] {
  --cv-ink: var(--cv-avorio-testo);
  --cv-ink-soft: rgba(243, 236, 227, 0.7);
  --cv-line: rgba(214, 160, 128, 0.3);
  --cv-copper: #D9A383;
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
html, body { overflow-x: clip; }
body {
  margin: 0;
  background: var(--sinapps-color-secondary);
  color: var(--cv-ink);
  font-family: var(--sinapps-font-text);
  font-size: 16px; font-weight: 300; line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  transition: background-color 1.1s ease, color .8s ease;
}
img { max-width: 100%; display: block; }
a { color: inherit; }
a:focus-visible, button:focus-visible { outline: 1px solid currentColor; outline-offset: 4px; }
h1, h2, h3 { margin: 0; font-weight: 300; text-wrap: balance; }
em { font-style: italic; }

/* ---------- canvas bottiglia ---------- */
.cv-bottle { position: fixed; inset: 0; width: 100%; height: 100%; z-index: 5; pointer-events: none; opacity: 0; }
#cv-bottle-t { mix-blend-mode: multiply; }
#cv-bottle-e { mix-blend-mode: plus-lighter; }
@supports not (mix-blend-mode: plus-lighter) { #cv-bottle-e { mix-blend-mode: screen; } }

/* ---------- elementi ricorrenti ---------- */
.cv-eyebrow { font-size: 11px; font-weight: 500; letter-spacing: 0.32em; text-transform: uppercase; color: var(--cv-copper); }
.cv-cta {
  display: inline-flex; align-items: center; justify-content: center; min-height: 44px; padding: 0 24px; border-radius: 999px;
  border: 1px solid var(--cv-copper); color: var(--cv-ink); text-decoration: none; background: transparent;
  font-size: 11px; font-weight: 500; letter-spacing: 0.24em; text-transform: uppercase;
  transition: background-color .35s ease, color .35s ease, border-color .35s ease;
}
.cv-cta:hover { background: var(--cv-copper); color: var(--sinapps-color-secondary); }
body[data-tone="light"] .cv-cta:hover { color: var(--cv-notte); }

/* ---------- header ---------- */
.cv-header {
  position: fixed; inset: 0 0 auto; z-index: 20;
  padding: calc(env(safe-area-inset-top, 0px) + 22px) var(--cv-gutter) 0;
  display: grid; grid-template-columns: 1fr auto 1fr; align-items: start; gap: 24px;
}
.cv-header__nav { display: flex; flex-direction: column; gap: 3px; font-size: 12px; letter-spacing: 0.08em; }
.cv-header__nav a { text-decoration: none; opacity: .8; transition: opacity .3s ease; }
.cv-header__nav a:hover { opacity: 1; }
.cv-logo { display: flex; flex-direction: column; align-items: center; gap: 7px; text-decoration: none; line-height: 1; color: var(--cv-ink); }
/* il logo vero del sito (bianco su trasparente) usato come maschera: prende il colore del tono della pagina */
.cv-logo__mark {
  display: block; width: 118px; height: 28px; background: currentColor;
  -webkit-mask: url(../img/logo-wordmark.png) center / contain no-repeat; mask: url(../img/logo-wordmark.png) center / contain no-repeat;
}
.cv-logo__sub { font-size: 9px; font-weight: 500; letter-spacing: 0.6em; color: var(--cv-copper); }
.cv-header__right { justify-self: end; display: flex; gap: 22px; align-items: center; font-size: 12px; letter-spacing: 0.06em; }
.cv-header__right a:not(.cv-cta) { text-decoration: none; opacity: .8; }

/* ---------- pillola capitoli (in basso) ---------- */
.cv-pill { position: fixed; left: 50%; bottom: calc(env(safe-area-inset-bottom, 0px) + 20px); transform: translateX(-50%); z-index: 20; }
.cv-pill__btn {
  display: inline-flex; align-items: center; gap: 10px; min-height: 44px; padding: 6px 16px 6px 7px;
  border: 1px solid rgba(140, 90, 66, 0.25); border-radius: 999px; background: rgba(251, 248, 244, 0.92); color: var(--sinapps-color-text);
  font: inherit; font-size: 11px; cursor: pointer; backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  box-shadow: 0 8px 28px rgba(60, 35, 25, 0.10);
}
.cv-pill__icon { width: 30px; height: 30px; border-radius: 50%; background: var(--sinapps-color-primary); display: grid; place-items: center; }
.cv-pill__icon svg { width: 10px; height: 20px; }
.cv-pill__icon svg path { fill: #FBF8F4; }
.cv-pill__label { min-width: 110px; text-align: left; font-weight: 500; letter-spacing: 0.2em; text-transform: uppercase; }
.cv-pill__chev { transition: transform .3s var(--cv-ease); color: var(--sinapps-color-accent); }
.cv-pill.is-open .cv-pill__chev { transform: rotate(180deg); }
.cv-pill__menu {
  position: absolute; left: 50%; bottom: calc(100% + 10px); transform: translate(-50%, 8px); min-width: 230px;
  margin: 0; padding: 8px; list-style: none; background: #FBF8F4; color: var(--sinapps-color-text); border-radius: 18px;
  border: 1px solid rgba(140, 90, 66, 0.18); box-shadow: 0 14px 40px rgba(60, 35, 25, 0.14);
  opacity: 0; visibility: hidden; transition: opacity .3s ease, transform .3s var(--cv-ease), visibility .3s;
}
.cv-pill.is-open .cv-pill__menu { opacity: 1; visibility: visible; transform: translate(-50%, 0); }
.cv-pill__menu a { display: flex; justify-content: space-between; gap: 16px; padding: 10px 12px; border-radius: 10px; text-decoration: none; font-size: 14px; }
.cv-pill__menu b { font-family: var(--sinapps-font-primary); font-size: 17px; font-weight: 500; }
.cv-pill__menu a:hover, .cv-pill__menu a[aria-current="true"] { background: rgba(176, 118, 86, 0.10); }
.cv-pill__menu span { color: var(--sinapps-color-accent); font-variant-numeric: tabular-nums; font-size: 12px; }

/* ---------- hero ---------- */
#sinapps-cv-hero {
  position: relative; min-height: 100vh; min-height: 100svh;
  padding: 0 var(--cv-gutter) calc(env(safe-area-inset-bottom, 0px) + 32px);
  display: grid; grid-template-rows: 1fr auto; align-items: center;
}
.cv-hero__title {
  font-family: var(--sinapps-font-primary); font-weight: 400;
  font-size: clamp(52px, 7vw, 124px); line-height: 0.95; letter-spacing: -0.03em;
  max-width: 7.4em;
}
.cv-hero__title em { color: var(--sinapps-color-primary); font-weight: 400; }
.cv-hero__foot { display: flex; justify-content: space-between; align-items: flex-end; gap: 24px; font-size: 12px; letter-spacing: 0.06em; }
.cv-hero__foot p { margin: 0; max-width: 32em; color: var(--cv-ink-soft); font-size: 15px; letter-spacing: 0; }
.cv-hero__scroll { white-space: nowrap; color: var(--cv-copper); text-transform: uppercase; letter-spacing: 0.24em; font-size: 10px; }

/* ---------- capitolo sticky ---------- */
.cv-chapter { position: relative; height: 220vh; }
.cv-chapter__stage {
  position: sticky; top: 0; height: 100vh; height: 100svh; overflow: hidden;
  padding: calc(env(safe-area-inset-top, 0px) + 96px) var(--cv-gutter) calc(env(safe-area-inset-bottom, 0px) + 100px);
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); grid-template-rows: auto auto 1fr;
  column-gap: 34vw; row-gap: 20px;
}
.cv-chapter__title {
  grid-column: 1 / -1; font-family: var(--sinapps-font-primary); font-weight: 400;
  font-size: clamp(54px, 7.6vw, 140px); line-height: 0.9; letter-spacing: -0.035em; white-space: nowrap;
}
.cv-chapter__title b { font-weight: 500; font-style: italic; color: var(--sinapps-color-primary); margin-right: 0.14em; }
.cv-chapter__title em { font-style: italic; color: var(--sinapps-color-primary); }
.cv-chapter__meta {
  grid-column: 1 / -1; display: grid; grid-template-columns: subgrid;
  font-size: 10px; font-weight: 500; letter-spacing: 0.28em; text-transform: uppercase; color: var(--cv-copper);
  border-top: 1px solid var(--cv-line); padding-top: 14px;
}
.cv-chapter__meta span:last-child { font-variant-numeric: tabular-nums; }
.cv-chapter__left { align-self: center; font-family: var(--sinapps-font-primary); font-size: clamp(22px, 2vw, 32px); font-weight: 400; line-height: 1.25; max-width: 12em; }
.cv-chapter__left p { margin: 0; }
.cv-chapter__right { align-self: center; display: flex; flex-direction: column; gap: 14px; max-width: 25em; font-size: 14px; }
.cv-chapter__right h3 { font-family: var(--sinapps-font-primary); font-weight: 500; font-size: 24px; line-height: 1.1; }
.cv-chapter__right p { margin: 0; color: var(--cv-ink-soft); }
.cv-chapter__links { display: flex; flex-direction: column; gap: 6px; padding-top: 8px; font-size: 11px; letter-spacing: 0.18em; text-transform: uppercase; }
.cv-chapter__links a { text-decoration: none; border-bottom: 1px solid var(--cv-line); align-self: flex-start; padding-bottom: 3px; transition: border-color .3s ease; }
.cv-chapter__links a:hover { border-color: var(--cv-copper); }
.cv-lineup { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; }
.cv-lineup li { display: flex; align-items: center; gap: 12px; padding: 6px 0; border-bottom: 1px solid var(--cv-line); font-family: var(--sinapps-font-primary); font-size: 18px; font-weight: 400; }
.cv-lineup li span:first-of-type { flex: 1; }
.cv-lineup__pic { width: 40px; height: 40px; border-radius: 50%; object-fit: cover; flex: none; filter: contrast(1.05); }
.cv-lineup li span + span { font-family: var(--sinapps-font-text); color: var(--cv-copper); font-size: 10px; letter-spacing: 0.24em; text-transform: uppercase; white-space: nowrap; align-self: center; }
.cv-lineup__stage { padding-top: 14px; font-family: var(--sinapps-font-text) !important; font-size: 10px !important; letter-spacing: 0.28em; text-transform: uppercase; color: var(--cv-copper); border-bottom: 0 !important; }

/* reveal: il titolo sale da una maschera, le colonne sfumano */
.cv-mask { display: block; overflow: hidden; padding-bottom: 0.1em; }
.cv-mask > span { display: inline-block; transform: translateY(110%); transition: transform 1.2s var(--cv-ease); }
.cv-fade { opacity: 0; transform: translateY(18px); transition: opacity 1s ease, transform 1.1s var(--cv-ease); }
.is-active .cv-mask > span { transform: none; }
.is-active .cv-fade { opacity: 1; transform: none; }
.is-active .cv-fade--d1 { transition-delay: .15s; }
.is-active .cv-fade--d2 { transition-delay: .3s; }
.is-active .cv-fade--d3 { transition-delay: .45s; }

/* ---------- il luogo: testo nella metà sinistra, la bottiglia a destra (cuvee.js, KEYS.luogo) ---------- */
#sinapps-cv-luogo .cv-chapter__stage { display: flex; flex-direction: column; align-items: flex-start; justify-content: center; gap: 28px; text-align: left; }
.cv-luogo__text {
  margin: 0; max-width: min(13.5em, 46vw); font-family: var(--sinapps-font-primary);
  font-size: clamp(28px, 3.1vw, 52px); font-weight: 400; line-height: 1.16; letter-spacing: -0.02em;
}
.cv-luogo__text .w { opacity: 0.2; transition: opacity .25s linear; }

/* ---------- biglietti ---------- */
#sinapps-cv-biglietti .cv-chapter__stage { grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr); column-gap: 6vw; }
.cv-tickets { grid-column: 2; align-self: center; display: flex; flex-direction: column; }
.cv-ticket {
  display: grid; grid-template-columns: minmax(0, 1fr) auto auto; align-items: center; gap: 8px 28px;
  padding: 22px 0; border-top: 1px solid var(--cv-line);
}
.cv-ticket:last-of-type { border-bottom: 1px solid var(--cv-line); }
.cv-ticket strong { font-family: var(--sinapps-font-primary); font-weight: 400; font-size: clamp(26px, 2.4vw, 38px); line-height: 1.05; display: block; }
.cv-ticket small { display: block; margin-top: 6px; font-size: 13px; color: var(--cv-ink-soft); }
.cv-ticket__price { font-family: var(--sinapps-font-primary); font-weight: 400; font-size: clamp(32px, 3vw, 48px); color: var(--sinapps-color-accent); font-variant-numeric: lining-nums tabular-nums; }
.cv-ticket .cv-cta { white-space: nowrap; }
.cv-tickets__note { margin: 18px 0 0; font-size: 12px; color: var(--cv-ink-soft); }

/* ---------- informazioni, finale e footer (flusso normale, la bottiglia è uscita) ---------- */
#sinapps-cv-info { position: relative; z-index: 6; background: var(--sinapps-color-secondary); }
/* menù in alto con un velo quando la pagina scorre normale (niente più testo sotto ai link) */
.cv-header { transition: background-color .5s ease, backdrop-filter .5s ease, transform .55s cubic-bezier(.2, .7, .1, 1); }
/* header che si alza scorrendo giù e si riabbassa scorrendo su */
body.cv-head-hide .cv-header { transform: translateY(-110%); }
body.cv-in-info .cv-header { background: rgba(246, 241, 234, 0.9); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); padding-bottom: 14px; }
/* sopra finale e footer scuri il velo diventa notte e i testi avorio */
body.cv-in-info.cv-header-dark .cv-header { background: rgba(29, 23, 24, 0.88); color: #F3ECE3; }
body.cv-header-dark .cv-header .cv-logo, body.cv-header-dark .cv-header .cv-header__right a:not(.cv-cta) { color: #F3ECE3; }
body.cv-header-dark .cv-header .cv-cta { color: #F3ECE3; border-color: #D9A383; }
body.cv-header-dark .cv-header .cv-logo__sub { color: #D9A383; }

.cv-info__wrap {
  padding: clamp(130px, 14vw, 190px) var(--cv-gutter) clamp(110px, 12vw, 170px);
  display: grid; grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr); gap: 7vw; align-items: start;
}
.cv-info__photo { margin: 0; position: sticky; top: 120px; will-change: transform; }
.cv-info__photo img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; border-radius: 18vw 18vw 3px 3px; box-shadow: 0 40px 90px rgba(60, 35, 25, 0.2); }
.cv-info__photo figcaption { margin-top: 14px; font-size: 10px; font-weight: 500; letter-spacing: 0.26em; text-transform: uppercase; color: var(--cv-copper); }
.cv-info__body { display: flex; flex-direction: column; gap: 18px; }
.cv-info__title { font-family: var(--sinapps-font-primary); font-weight: 400; font-size: clamp(52px, 6.4vw, 112px); line-height: 0.92; letter-spacing: -0.035em; margin: 0 0 clamp(24px, 3vw, 44px); }
.cv-info__title em { font-style: italic; color: var(--sinapps-color-primary); }
.cv-faq { border-top: 1px solid var(--cv-line); }
.cv-faq details { border-bottom: 1px solid var(--cv-line); }
.cv-faq summary {
  list-style: none; cursor: pointer; display: flex; align-items: baseline; gap: 22px; padding: 24px 44px 24px 0; position: relative;
  font-family: var(--sinapps-font-primary); font-size: clamp(22px, 2vw, 32px); line-height: 1.15; transition: color .3s ease;
}
.cv-faq summary::-webkit-details-marker { display: none; }
.cv-faq summary span { font-family: var(--sinapps-font-text); font-size: 11px; font-weight: 500; letter-spacing: 0.2em; color: var(--cv-copper); min-width: 2em; }
.cv-faq summary::after {
  content: ''; position: absolute; right: 4px; top: 50%; width: 14px; height: 14px; margin-top: -7px;
  background: linear-gradient(var(--cv-copper), var(--cv-copper)) center / 14px 1.5px no-repeat, linear-gradient(var(--cv-copper), var(--cv-copper)) center / 1.5px 14px no-repeat;
  transition: transform .35s var(--cv-ease);
}
.cv-faq details[open] summary::after { transform: rotate(45deg); }
.cv-faq summary:hover { color: var(--sinapps-color-accent); }
.cv-faq details p { margin: 0 0 26px calc(2em + 22px); max-width: 38em; font-size: 15px; color: var(--cv-ink-soft); }
.cv-faq details p a { color: var(--sinapps-color-accent); }
.cv-faq details p b { font-weight: 500; color: var(--cv-ink); }

/* finale: la festa a tutto schermo */
.cv-finale { position: relative; overflow: hidden; min-height: 100vh; min-height: 100svh; display: grid; place-items: center; color: #F3ECE3; background: #1D1718; }
.cv-finale__bg { position: absolute; inset: -10vh 0; will-change: transform; }
.cv-finale__bg img { width: 100%; height: 100%; object-fit: cover; }
.cv-finale__bg::after { content: ''; position: absolute; inset: 0; background: radial-gradient(ellipse at 50% 55%, rgba(29, 23, 24, 0.55) 0%, rgba(29, 23, 24, 0.88) 70%); }
.cv-finale__inner { position: relative; z-index: 1; text-align: center; padding: 140px var(--cv-gutter); display: flex; flex-direction: column; align-items: center; gap: 30px; }
.cv-finale .cv-eyebrow { color: #D9A383; }
.cv-finale__claim { margin: 0; font-family: var(--sinapps-font-primary); font-weight: 400; font-size: clamp(64px, 10vw, 176px); line-height: 0.88; letter-spacing: -0.04em; }
.cv-finale__claim em { font-style: italic; color: #D9A383; }
.cv-countdown--light { justify-content: center; }
.cv-countdown--light b { color: #F3ECE3; }
.cv-countdown--light > div:nth-child(4) b { color: #D9A383; }
.cv-countdown--light span { color: #D9A383; }
.cv-finale__cta { display: flex; flex-direction: column; align-items: center; gap: 12px; }
.cv-finale__cta .cv-cta--fill { margin: 0; min-height: 54px; padding: 0 34px; font-size: 12px; background: #D9A383; border-color: #D9A383; color: #1D1718; }
.cv-finale__cta .cv-cta--fill:hover { background: #F3ECE3; border-color: #F3ECE3; }
.cv-finale__cta span { font-size: 11px; letter-spacing: 0.16em; text-transform: uppercase; color: rgba(243, 236, 227, 0.6); }

/* footer scuro con fascia a scacchi */
.cv-footer { background: #1D1718; color: rgba(243, 236, 227, 0.72); padding: clamp(80px, 9vw, 120px) var(--cv-gutter) 0; font-size: 14px; }
.cv-footer a { color: #F3ECE3; text-decoration: none; transition: color .3s ease; }
.cv-footer a:hover { color: #D9A383; }
.cv-footer__top { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.6fr); gap: 60px; padding-bottom: clamp(60px, 7vw, 100px); border-bottom: 1px solid rgba(214, 160, 128, 0.25); }
.cv-footer__logo { display: inline-flex; flex-direction: column; gap: 14px; align-self: start; color: #F3ECE3; }
.cv-footer__mark { display: block; width: min(340px, 70vw); aspect-ratio: 528 / 124; background: currentColor; -webkit-mask: url(../img/logo-wordmark.png) left center / contain no-repeat; mask: url(../img/logo-wordmark.png) left center / contain no-repeat; }
.cv-footer__logo > span:last-child { font-size: 11px; letter-spacing: 0.6em; color: #D9A383; }
.cv-footer__cols { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 32px; }
.cv-footer__cols > div { display: flex; flex-direction: column; gap: 10px; }
.cv-footer__cols h3 { margin: 0 0 6px; font-family: var(--sinapps-font-text); font-size: 10px; font-weight: 500; letter-spacing: 0.28em; text-transform: uppercase; color: #D9A383; }
.cv-footer__cols p { margin: 0; }
.cv-footer__cols b { font-weight: 400; color: #F3ECE3; font-variant-numeric: tabular-nums; }
.cv-footer__wa { align-self: flex-start; margin-top: 6px; padding: 10px 18px; border: 1px solid #D9A383; border-radius: 999px; font-size: 11px; letter-spacing: 0.18em; text-transform: uppercase; }
.cv-footer__wa:hover { background: #D9A383; color: #1D1718 !important; }
.cv-footer__bottom { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 12px 32px; padding: 28px 0 calc(env(safe-area-inset-bottom, 0px) + 100px); font-size: 12px; color: rgba(243, 236, 227, 0.5); }
.cv-footer__bottom a { color: rgba(243, 236, 227, 0.7); }
.cv-footer__flag { height: 14px; margin: 0 calc(var(--cv-gutter) * -1); background: repeating-conic-gradient(#B07656 0 25%, #1D1718 0 50%) 0 0 / 14px 14px; opacity: 0.85; }

/* ---------- hero: finestra ad arco con la serata 2025, riga info, countdown ---------- */
.cv-hero__main { position: relative; z-index: 2; align-self: center; display: flex; flex-direction: column; gap: 30px; padding-top: 9vh; }
.cv-hero__kicker { margin: 0; display: flex; flex-wrap: wrap; gap: 6px 0; font-size: 11px; font-weight: 500; letter-spacing: 0.28em; text-transform: uppercase; color: var(--cv-copper); }
.cv-hero__kicker span + span::before { content: ''; display: inline-block; width: 4px; height: 4px; border-radius: 50%; background: currentColor; margin: 0 16px; vertical-align: 3px; }
.cv-hero__window {
  position: absolute; z-index: 0; margin: 0; left: 52vw; top: 21vh; width: 30vw; height: 68vh;
  border-radius: 15vw 15vw 3px 3px; overflow: hidden; will-change: transform;
  box-shadow: 0 40px 90px rgba(60, 35, 25, 0.22);
}
.cv-hero__window img { width: 100%; height: 100%; object-fit: cover; animation: cv-kenburns 18s ease-in-out infinite alternate; }
.cv-hero__window::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(246, 241, 234, 0) 55%, rgba(246, 241, 234, 0.28) 100%); }
@keyframes cv-kenburns { from { transform: scale(1.14) translate(-2%, 1%); } to { transform: scale(1.02) translate(1%, -1%); } }
.cv-countdown { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 18px 30px; }
.cv-countdown > div { display: flex; flex-direction: column; gap: 4px; min-width: 2.2em; }
.cv-countdown b { font-family: var(--sinapps-font-primary); font-weight: 400; font-size: clamp(36px, 3.4vw, 56px); line-height: 1; font-variant-numeric: lining-nums tabular-nums; }
.cv-countdown > div:nth-child(4) b { color: var(--sinapps-color-primary); }
.cv-countdown span { font-size: 10px; font-weight: 500; letter-spacing: 0.26em; text-transform: uppercase; color: var(--cv-copper); }
.cv-cta--fill { background: var(--sinapps-color-primary); border-color: var(--sinapps-color-primary); color: #FBF8F4; margin-left: 10px; align-self: center; }
.cv-cta--fill:hover { background: var(--sinapps-color-text); border-color: var(--sinapps-color-text); color: #FBF8F4; }

/* ---------- pit lane: line-up grande, sui due lati della bottiglia ---------- */
#sinapps-cv-party .cv-chapter__left, #sinapps-cv-party .cv-chapter__right { font-family: var(--sinapps-font-text); font-size: 14px; max-width: 30em; display: flex; flex-direction: column; gap: 14px; }
#sinapps-cv-party .cv-lineup li { font-size: clamp(22px, 2vw, 32px); padding: 10px 0; gap: 16px; }
#sinapps-cv-party .cv-lineup__pic { width: 56px; height: 56px; }
#sinapps-cv-party .cv-lineup__head { font-size: clamp(36px, 3.4vw, 56px) !important; }
#sinapps-cv-party .cv-lineup__head .cv-lineup__pic { width: 88px; height: 88px; }
#sinapps-cv-party .cv-lineup li i { font-style: italic; color: var(--cv-copper); font-size: 0.75em; padding: 0 0.15em; }
#sinapps-cv-party .cv-lineup__stage { display: block; padding: 0; }
#sinapps-cv-party .cv-chapter__right p { margin: 0; color: var(--cv-ink-soft); }
.cv-note { font-size: 12px; }

/* ---------- foto dell'edizione 2025 ---------- */
/* i testi stanno sopra alle foto; la bottiglia (canvas fisso) sta sopra a tutto */
.cv-chapter__stage > :not(.cv-float):not(.cv-chapter__bg) { position: relative; z-index: 2; }
.cv-float {
  position: absolute; z-index: 1; margin: 0; will-change: transform;
  opacity: 0; transition: opacity 1.2s ease;
}
.is-active .cv-float { opacity: 1; }
.cv-float img { display: block; width: 100%; height: auto; border-radius: 3px; box-shadow: 0 24px 60px rgba(60, 35, 25, 0.18); }
.cv-float figcaption { margin-top: 10px; font-size: 10px; font-weight: 500; letter-spacing: 0.24em; text-transform: uppercase; color: var(--cv-copper); }
body[data-tone="light"] .cv-float img { box-shadow: 0 24px 60px rgba(0, 0, 0, 0.45); }
/* luogo: sotto al testo e tra testo e bottiglia */
/* luogo: composizione come l'apertura — grande finestra ad arco con la sala dietro la bottiglia inclinata,
   più una "stampa" con bordo avorio (la parete col logo) che si sovrappone all'arco. Si scoprono con una tendina dal basso. */
.cv-float--luogo-a { left: auto; right: 9vw; top: 17vh; bottom: auto; width: 30vw; }
.cv-float--luogo-a img { height: 66vh; width: 100%; object-fit: cover; border-radius: 15vw 15vw 3px 3px; animation: cv-kenburns 20s ease-in-out infinite alternate; }
.cv-float--luogo-a figcaption { position: absolute; left: 0; bottom: -30px; }
.cv-float--luogo-b { left: 49vw; top: auto; bottom: 9vh; width: 12vw; rotate: -4deg; z-index: 2; }
.cv-float--luogo-b img { border: 8px solid #FBF8F4; border-bottom-width: 34px; border-radius: 2px; box-shadow: 0 30px 60px rgba(60, 35, 25, 0.25); }
.cv-float--luogo-a, .cv-float--luogo-b { clip-path: inset(100% -40vw -40vh -40vw); transition: opacity 1.2s ease, clip-path 1.4s cubic-bezier(.7, 0, .2, 1); }
.cv-float--luogo-b { transition-delay: 0s, .35s; }
.is-active .cv-float--luogo-a, .is-active .cv-float--luogo-b { clip-path: inset(-40vh -40vw -40vh -40vw); }
/* cena: i piatti attorno alla bottiglia, nella fascia tra le due colonne */
.cv-float--dish { width: 9.5vw; }
.cv-float--dish figcaption { letter-spacing: 0.16em; }
.cv-float--cena-a { left: 33vw; top: 36vh; transform: rotate(-3deg); }
.cv-float--cena-b { left: 35vw; bottom: 6vh; }
.cv-float--cena-c { right: 35vw; top: 33vh; transform: rotate(2deg); }
.cv-float--cena-d { right: 36vw; bottom: 5vh; }
/* mezzanotte e pit lane: foto a tutto schermo dietro, velate dal colore notte */
.cv-chapter__bg { position: absolute; inset: -8vh 0; z-index: 0; will-change: transform; opacity: 0; transition: opacity 1.4s ease; }
.is-active .cv-chapter__bg { opacity: 1; }
.cv-chapter__bg img { width: 100%; height: 100%; object-fit: cover; filter: saturate(0.85); }
.cv-chapter__bg::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(29, 23, 24, 0.86) 0%, rgba(29, 23, 24, 0.62) 45%, rgba(29, 23, 24, 0.9) 100%); }
.cv-float--mezz-a { left: 34vw; top: 30vh; width: 10vw; }
.cv-float--mezz-b { right: 33vw; bottom: 10vh; width: 9vw; }
.cv-float--party-a { left: 42vw; bottom: 3vh; width: 16vw; }

/* ---------- rullino: la serata 2025 ---------- */
.cv-reel { position: relative; height: 340vh; }
.cv-reel__stage {
  position: sticky; top: 0; height: 100vh; height: 100svh; overflow: hidden;
  padding: calc(env(safe-area-inset-top, 0px) + 96px) 0 calc(env(safe-area-inset-bottom, 0px) + 92px);
  display: flex; flex-direction: column; gap: clamp(24px, 4vh, 44px);
}
.cv-reel__head { padding: 0 var(--cv-gutter); display: flex; flex-direction: column; gap: 14px; }
.cv-reel__title { white-space: normal; }
.cv-reel__track { display: flex; align-items: stretch; gap: clamp(16px, 2vw, 32px); padding: 0 var(--cv-gutter); flex: 1; min-height: 0; will-change: transform; }
.cv-reel__item { margin: 0; flex: none; height: 100%; display: flex; flex-direction: column; gap: 10px; }
.cv-reel__item img { height: calc(100% - 28px); width: auto; aspect-ratio: 4 / 5; object-fit: cover; border-radius: 3px; display: block; box-shadow: 0 24px 60px rgba(60, 35, 25, 0.16); }
/* tutte uguali: stessa altezza e stesso formato 4:5, ritaglio al centro */
.cv-reel__item figcaption { font-size: 12px; color: var(--cv-ink-soft); white-space: nowrap; }
.cv-reel__item figcaption b { font-weight: 500; font-size: 10px; letter-spacing: 0.24em; text-transform: uppercase; color: var(--cv-copper); margin-right: 8px; }
.cv-reel__more { position: absolute; right: var(--cv-gutter); top: calc(env(safe-area-inset-top, 0px) + 104px); font-size: 11px; letter-spacing: 0.18em; text-transform: uppercase; text-decoration: none; border-bottom: 1px solid var(--cv-line); padding-bottom: 3px; }

/* ---------- tablet ≤1024 ---------- */
@media (max-width: 1024px) {
  .cv-header__nav { display: none; }
  .cv-header { grid-template-columns: 1fr auto; }
  .cv-logo { align-items: flex-start; }
  .cv-chapter__stage { column-gap: 30vw; }
  .cv-chapter__title { font-size: clamp(48px, 9vw, 96px); }
  .cv-info__wrap { grid-template-columns: minmax(0, 1fr); }
  .cv-info__photo { position: relative; top: 0; max-width: 480px; }
  .cv-footer__top { grid-template-columns: minmax(0, 1fr); }
  .cv-footer__cols { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .cv-ticket { grid-template-columns: minmax(0, 1fr) auto; }
  .cv-ticket .cv-cta { grid-column: 1 / -1; justify-self: start; }
}

/* ---------- mobile ≤767: titolo in alto, bottiglia al centro, testi in basso ---------- */
@media (max-width: 767px) {
  .cv-header__right a:not(.cv-cta) { display: none; }
  .cv-logo__mark { width: 92px; height: 22px; }
  .cv-hero__title { font-size: clamp(44px, 12.4vw, 60px); }
  .cv-hero__foot { flex-direction: column; align-items: flex-start; padding-bottom: 60px; }
  .cv-chapter__stage {
    grid-template-columns: minmax(0, 1fr); grid-template-rows: auto auto 1fr auto auto;
    padding-top: calc(env(safe-area-inset-top, 0px) + 84px); padding-bottom: calc(env(safe-area-inset-bottom, 0px) + 88px); row-gap: 10px;
  }
  .cv-chapter__title { font-size: clamp(42px, 12vw, 58px); white-space: normal; }
  .cv-chapter__meta { display: flex; justify-content: space-between; }
  .cv-chapter__left { grid-row: 4; align-self: end; font-size: 21px; max-width: none; padding-right: 28%; }
  .cv-chapter__right { grid-row: 5; align-self: end; font-size: 13px; gap: 8px; }
  .cv-chapter__right h3 { font-size: 20px; }
  .cv-chapter__right > p { display: none; }
  .cv-chapter__links { flex-direction: row; flex-wrap: wrap; gap: 4px 16px; }
  .cv-lineup li { padding: 4px 0; font-size: 16px; }
  /* luogo: testo in alto, bottiglia in basso */
  #sinapps-cv-luogo .cv-chapter__stage { justify-content: flex-start; gap: 18px; }
  .cv-luogo__text { max-width: none; font-size: clamp(27px, 7.6vw, 34px); }
  #sinapps-cv-biglietti .cv-chapter__stage { grid-template-columns: minmax(0, 1fr); grid-template-rows: auto auto 1fr; }
  .cv-tickets { grid-column: 1; grid-row: 3; align-self: end; }
  .cv-ticket { grid-template-columns: minmax(0, 1fr) auto auto; padding: 12px 0; gap: 4px 14px; }
  .cv-ticket small { display: none; }
  .cv-ticket .cv-cta { grid-column: auto; min-height: 38px; padding: 0 14px; }
  .cv-tickets__note { display: none; }
  .cv-info__photo img { border-radius: 40vw 40vw 3px 3px; }
  .cv-faq summary { gap: 14px; padding: 18px 36px 18px 0; }
  .cv-faq details p { margin-left: 0; }
  .cv-finale__claim { font-size: clamp(58px, 17vw, 84px); }
  .cv-countdown--light { position: static !important; }
  .cv-footer__cols { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 28px 20px; }
  /* foto: su mobile solo quelle che non coprono i testi, più piccole */
  .cv-float--luogo-b, .cv-float--cena-b, .cv-float--cena-d, .cv-float--mezz-b, .cv-float--party-a { display: none; }
  .cv-float--luogo-a { width: 58vw; right: 6vw; top: auto; bottom: 14vh; }
  .cv-float--luogo-a img { height: 34vh; border-radius: 29vw 29vw 3px 3px; }
  .cv-float--luogo-a figcaption { display: none; }
  .cv-float--dish { width: 22vw; }
  .cv-float--dish { translate: none !important; }   /* su mobile i piatti restano fermi sotto la riga del capitolo */
  /* piatti nella fascia libera della griglia (riga 3, tra titolo e testo): non possono coprire il testo a nessuna altezza */
  .cv-float--cena-a, .cv-float--cena-c {
    position: relative; inset: auto; grid-column: 1; grid-row: 3; align-self: center; justify-self: start;
    width: auto; rotate: none; transform: none; margin: 0;
  }
  .cv-float--cena-c { margin-left: calc(min(15vh, 26vw) / 1.5 + 14px); margin-top: 4vh; }
  .cv-float--cena-a img, .cv-float--cena-c img { height: min(15vh, 26vw); width: auto; }
  .cv-float--mezz-a { left: var(--cv-gutter); top: 32vh; width: 24vw; }
  .cv-float figcaption { display: none; }
  .cv-reel { height: 300vh; }
  .cv-reel__track { max-height: 58vh; align-self: stretch; }
  .cv-reel__more { position: static; margin: 0 var(--cv-gutter); align-self: flex-start; }
  .cv-lineup__pic { width: 30px; height: 30px; }
  /* hero mobile: finestra dietro la bottiglia, countdown in basso, paragrafo nascosto */
  .cv-hero__main { position: static; padding-top: 0; align-self: start; margin-top: calc(env(safe-area-inset-top, 0px) + 92px); gap: 16px; }
  .cv-hero__main > * { position: relative; z-index: 2; }
  .cv-hero__main > .cv-countdown { position: absolute; z-index: 2; left: var(--cv-gutter); }
  .cv-hero__kicker { font-size: 9px; letter-spacing: 0.2em; }
  .cv-hero__kicker span + span::before { margin: 0 8px; }
  .cv-hero__window { left: auto; right: 4vw; top: auto; bottom: 12vh; width: 50vw; height: 44vh; border-radius: 25vw 25vw 3px 3px; }
  /* countdown in basso a sinistra, su due righe: non tocca l'arco a destra */
  .cv-countdown { bottom: calc(env(safe-area-inset-bottom, 0px) + 104px); display: grid; grid-template-columns: repeat(2, auto); gap: 14px 22px; }
  .cv-countdown b { font-size: 30px; }
  .cv-countdown .cv-cta--fill { display: none; }
  .cv-hero__foot { display: none; }
  #sinapps-cv-hero { padding-left: var(--cv-gutter); }
  /* pit lane mobile: line-up compatta sotto la bottiglia */
  #sinapps-cv-party .cv-chapter__left { display: flex; }
  #sinapps-cv-party .cv-chapter__left, #sinapps-cv-party .cv-chapter__right { gap: 6px; padding-right: 0; }
  #sinapps-cv-party .cv-chapter__right p { display: none; }
  #sinapps-cv-party .cv-lineup li { font-size: 17px; padding: 4px 0; gap: 10px; }
  #sinapps-cv-party .cv-lineup__pic { width: 32px; height: 32px; }
  #sinapps-cv-party .cv-lineup__head { font-size: 24px !important; }
  #sinapps-cv-party .cv-lineup__head .cv-lineup__pic { width: 44px; height: 44px; }
  #sinapps-cv-party .cv-lineup__head span + span { display: none; }   /* la bottiglia sta in basso a destra */
  #sinapps-cv-mezzanotte .cv-chapter__left, #sinapps-cv-mezzanotte .cv-chapter__right,
  #sinapps-cv-cena .cv-chapter__left, #sinapps-cv-cena .cv-chapter__right { padding-right: 46%; }
  #sinapps-cv-cena .cv-chapter__links { flex-direction: column; }
  .cv-float--mezz-a { top: 26vh; }
}

@media (prefers-reduced-motion: reduce) {
  body, .cv-mask > span, .cv-fade, .cv-luogo__text .w, .cv-float, .cv-chapter__bg { transition: none !important; }
  .cv-hero__window img { animation: none; }
  .cv-faq summary::after { transition: none; }
  .cv-float, .cv-chapter__bg { transform: none !important; }
  .cv-mask > span, .cv-fade { transform: none; opacity: 1; }
}

/* =========================================================================
 * TIPOGRAFIA (09/10): il corsivo Bodoni resta solo per gli accenti; titoli in maiuscolo largo e sottile
 * (Anek Bangla a larghezza 125, lo stesso carattere del logo); numeri sottili e larghi come il "2026" del logo.
 * ========================================================================= */
.cv-hero__title, .cv-chapter__title, .cv-info__title, .cv-finale__claim {
  font-family: var(--sinapps-font-primary); font-stretch: 125%; font-weight: 300; text-transform: uppercase; letter-spacing: 0.02em;
}
.cv-hero__title em, .cv-chapter__title em, .cv-chapter__title b, .cv-info__title em, .cv-finale__claim em {
  font-family: var(--cv-font-script); font-style: italic; font-weight: 400; font-stretch: normal; text-transform: none; letter-spacing: -0.03em; color: var(--sinapps-color-primary);
}
/* hero: riga in maiuscolo, poi l'accento corsivo gigante */
.cv-hero__title { font-size: clamp(22px, 2.5vw, 42px); line-height: 1.15; max-width: none; }
.cv-hero__title em { display: block; max-width: 45vw; font-size: clamp(76px, 10.4vw, 184px); line-height: 0.9; margin-top: 0.08em; }
@media (max-width: 767px) { .cv-hero__title em { max-width: none; } }
/* capitoli: numero corsivo grande + nome in maiuscolo largo */
.cv-chapter__title { font-size: clamp(30px, 3.9vw, 70px); line-height: 1; display: flex; align-items: baseline; }
.cv-chapter__title b { font-size: 2.1em; line-height: 0.8; margin-right: 0.22em; font-weight: 500; }
.cv-chapter__title em { font-size: 1.5em; }
.cv-info__title { font-size: clamp(30px, 3.6vw, 64px); line-height: 1.05; }
.cv-info__title em { font-size: 1.6em; }
.cv-finale__claim { font-size: clamp(30px, 4.4vw, 76px); line-height: 1.1; }
.cv-finale__claim em { display: inline-block; font-size: 2.4em; line-height: 0.95; color: #D9A383; }
/* testi grandi: Anek leggero (niente più serif dritto) */
.cv-luogo__text { font-family: var(--sinapps-font-text); font-weight: 300; font-size: clamp(26px, 2.6vw, 44px); line-height: 1.22; letter-spacing: -0.01em; }
.cv-chapter__left { font-family: var(--sinapps-font-text); font-weight: 300; font-size: clamp(20px, 1.7vw, 28px); line-height: 1.3; }
.cv-chapter__right h3 { font-family: var(--sinapps-font-primary); font-stretch: 125%; font-weight: 500; font-size: 13px; letter-spacing: 0.14em; text-transform: uppercase; }
.cv-lineup li { font-family: var(--sinapps-font-text); font-weight: 300; }
#sinapps-cv-party .cv-lineup li i { font-family: var(--cv-font-script); }
#sinapps-cv-party .cv-lineup__head > span:first-of-type { font-family: var(--sinapps-font-primary); font-stretch: 125%; font-weight: 300; text-transform: uppercase; letter-spacing: 0.02em; font-size: 0.8em; }
.cv-faq summary { font-family: var(--sinapps-font-text); font-weight: 300; }
.cv-ticket strong { font-family: var(--sinapps-font-primary); font-stretch: 125%; font-weight: 400; text-transform: uppercase; letter-spacing: 0.04em; font-size: clamp(16px, 1.5vw, 22px); }
.cv-pill__menu b { font-family: var(--sinapps-font-text); font-weight: 400; font-size: 15px; }
/* numeri: sottili e larghi come il "2026" del logo */
.cv-countdown b, .cv-ticket__price { font-family: var(--sinapps-font-primary); font-stretch: 125%; font-weight: 200; letter-spacing: 0.01em; }
.cv-ticket__price { color: var(--sinapps-color-accent); }
@media (max-width: 767px) {
  .cv-hero__title { font-size: 17px; }
  .cv-hero__title em { font-size: clamp(56px, 16vw, 76px); }
  .cv-chapter__title { font-size: clamp(22px, 6.6vw, 30px); flex-wrap: wrap; }
  .cv-info__title { font-size: 26px; }
  .cv-finale__claim { font-size: 26px; }
  .cv-luogo__text { font-size: clamp(22px, 6.4vw, 28px); }
  .cv-chapter__left { font-size: 18px; }
}
