/* =====================================================================
   VIRTUS VOLLEY NAPOLI — Premium Design System
   Sporty / iper-visuale · Graphicnart
   ===================================================================== */

:root {
  /* Brand (palette ufficiale Virtus Volley Napoli) */
  --vvn-blue: #3f8ecd;
  --vvn-blue-2: #5ba3dd;
  --vvn-blue-dark: #2f73a8;
  --vvn-blue-deep: #16233b;   /* navy ufficiale */
  --vvn-ink: #16233b;         /* navy: testo e sezioni scure */
  --vvn-navy-2: #0f1a2c;
  --vvn-white: #ffffff;
  --vvn-paper: #f3f6fa;
  --vvn-line: rgba(255, 255, 255, .12);

  /* Gradients */
  --vvn-grad: linear-gradient(135deg, #5ba3dd 0%, #3f8ecd 45%, #2f73a8 100%);
  --vvn-grad-deep: linear-gradient(160deg, #1d2f4d 0%, #16233b 100%);
  --vvn-mesh:
    radial-gradient(80% 120% at 0% 0%, rgba(91,163,221,.55) 0%, transparent 55%),
    radial-gradient(80% 120% at 100% 100%, rgba(15,26,44,.7) 0%, transparent 55%),
    var(--vvn-blue);

  /* Type (font ufficiali) */
  --vvn-font-display: 'Bebas Neue', 'Arial Narrow', sans-serif;
  --vvn-font-body: 'Barlow', system-ui, sans-serif;

  /* Shape — design squadrato/angolare (no angoli arrotondati) */
  --vvn-radius: 0px;
  --vvn-radius-lg: 0px;
  --vvn-shadow: 0 24px 60px -20px rgba(0, 60, 90, .45);
  --vvn-shadow-hover: 0 40px 90px -25px rgba(0, 110, 163, .55);
  --vvn-ease: cubic-bezier(.16, 1, .3, 1);
}

/* Bebas Neue ha un solo peso: niente grassetto sintetico */
body { font-synthesis: none; }

/* Sito a tutta larghezza: rimuovo il vincolo 1140px di Hello/Elementor su .site-main.
   Le sezioni full-bleed spaziano edge-to-edge, il contenuto resta in .vvn-container. */
.home main.site-main,
.post-type-archive-atleta main.site-main,
.single-atleta main.site-main,
.single-post main.site-main,
.blog main.site-main {
  max-width: 100% !important;
  width: 100% !important;
  margin: 0 !important;
  padding: 0 !important;
}
html, body { overflow-x: clip; }

/* =====================================================================
   MOTION — stati iniziali (attivi solo con JS) + fallback
   ===================================================================== */
.vvn-js [data-reveal] { opacity: 0; transform: translateY(42px); will-change: transform, opacity; }
.vvn-js .vvn-hero [data-hero] { opacity: 0; transform: translateY(24px); }
.vvn-js .vvn-hero__title { opacity: 0; } /* GSAP gestisce lo slide a righe */
.vvn-js .vvn-hero__title .line { display: block; overflow: hidden; padding-bottom: .06em; }
.vvn-js .vvn-hero__title .line__in { display: block; }
.vvn-js .vvn-hero__logo { opacity: 0; animation: none; } /* GSAP controlla il pallone */

/* Lenis smooth scroll */
html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }
.lenis.lenis-smooth [data-lenis-prevent] { overscroll-behavior: contain; }
.lenis.lenis-stopped { overflow: hidden; }

/* Fallback (CDN offline) e reduced-motion: tutto visibile, niente transform */
.vvn-js-failed [data-reveal],
.vvn-js-failed .vvn-hero [data-hero],
.vvn-js-failed .vvn-hero__logo,
.vvn-reduced [data-reveal],
.vvn-reduced .vvn-hero [data-hero],
.vvn-reduced .vvn-hero__logo { opacity: 1 !important; transform: none !important; }
.vvn-js-failed .vvn-hero__title,
.vvn-reduced .vvn-hero__title { opacity: 1 !important; }
.vvn-js-failed .vvn-hero__title .line__in,
.vvn-reduced .vvn-hero__title .line__in { transform: none !important; }

/* =====================================================================
   MARQUEE TICKER
   ===================================================================== */
.vvn-ticker {
  background: var(--vvn-ink);
  color: #fff;
  overflow: hidden;
  border-block: 1px solid rgba(255, 255, 255, .08);
  position: relative;
  z-index: 6;
}
.vvn-ticker__track {
  display: inline-flex;
  align-items: center;
  white-space: nowrap;
  padding-block: 1.05rem;
  animation: vvnMarquee 28s linear infinite;
}
.vvn-ticker__track > span {
  display: inline-flex;
  align-items: center;
  gap: 2.6rem;
  padding-right: 2.6rem;
  font-family: var(--vvn-font-display);
  text-transform: uppercase;
  letter-spacing: .14em;
  font-size: 1.35rem;
  color: rgba(255, 255, 255, .85);
}
.vvn-ticker__track i {
  width: 9px; height: 9px;
  border-radius: 50%;
  background: var(--vvn-blue);
  display: inline-block;
}
.vvn-ticker__track em { color: var(--vvn-blue-2); font-style: normal; }
@keyframes vvnMarquee { to { transform: translateX(-50%); } }
.vvn-ticker:hover .vvn-ticker__track { animation-play-state: paused; }
@media (prefers-reduced-motion: reduce) { .vvn-ticker__track { animation: none; } }

/* ---------- Base typography ---------- */
.vvn-scope,
.single-atleta .site-main,
.post-type-archive-atleta .site-main {
  font-family: var(--vvn-font-body);
  color: var(--vvn-ink);
  line-height: 1.6;
}

.vvn-display {
  font-family: var(--vvn-font-display);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .01em;
  line-height: .95;
}

/* Kicker / eyebrow */
.vvn-kicker {
  font-family: var(--vvn-font-display);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .28em;
  font-size: .78rem;
  color: var(--vvn-blue);
  display: inline-flex;
  align-items: center;
  gap: .6rem;
}
.vvn-kicker::before {
  content: "";
  width: 34px;
  height: 3px;
  background: var(--vvn-grad);
  display: inline-block;
}

/* ---------- Buttons ---------- */
.vvn-btn {
  --c: var(--vvn-white);
  font-family: var(--vvn-font-display);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .09em;
  font-size: .9rem;
  display: inline-flex;
  align-items: center;
  gap: .6rem;
  padding: .95rem 2.3rem;
  width: max-content;
  max-width: 100%;
  border-radius: 0;
  background: var(--vvn-grad);
  color: var(--c);
  text-decoration: none;
  box-shadow: 0 12px 30px -10px rgba(0, 144, 211, .7);
  transition: transform .35s var(--vvn-ease), box-shadow .35s var(--vvn-ease);
  position: relative;
  overflow: hidden;
}
.vvn-btn::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(120deg, transparent 30%, rgba(255,255,255,.35) 50%, transparent 70%);
  transform: translateX(-120%);
  transition: transform .7s var(--vvn-ease);
}
.vvn-btn:hover { transform: translateY(-3px); box-shadow: var(--vvn-shadow-hover); }
.vvn-btn:hover::after { transform: translateX(120%); }
.vvn-btn--ghost {
  background: transparent;
  color: var(--vvn-blue);
  box-shadow: inset 0 0 0 2px var(--vvn-blue);
}

/* ---------- Section heading ---------- */
.vvn-section { padding: clamp(3rem, 7vw, 7rem) 0; }
.vvn-container { width: min(1200px, 92vw); margin-inline: auto; }
.vvn-head { margin-bottom: 2.6rem; }
.vvn-head h2 {
  font-family: var(--vvn-font-display);
  text-transform: uppercase;
  font-weight: 700;
  font-size: clamp(2rem, 5vw, 3.4rem);
  line-height: .98;
  margin: .5rem 0 0;
}
.vvn-head h2 em { color: var(--vvn-blue); font-style: normal; }

/* =====================================================================
   HOMEPAGE
   ===================================================================== */

/* ---- HERO ---- */
.vvn-hero {
  position: relative;
  min-height: calc(100vh - 78px);
  display: flex;
  align-items: center;
  overflow: hidden;
  background: var(--vvn-mesh);
  color: #fff;
  clip-path: polygon(0 0, 100% 0, 100% 92%, 0 100%);
}
.vvn-hero__video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  z-index: 0;
}
.vvn-hero__tint {
  position: absolute;
  inset: 0;
  z-index: 1;
  background:
    linear-gradient(100deg, rgba(15,26,44,.94) 0%, rgba(22,35,59,.72) 38%, rgba(22,35,59,.42) 68%, rgba(63,142,205,.30) 100%),
    linear-gradient(to top, rgba(15,26,44,.55), transparent 40%);
}
.vvn-hero__inner { position: relative; z-index: 3; padding: 4rem 0; }
.vvn-hero .vvn-kicker { color: #bdeaff; }
.vvn-hero .vvn-kicker::before { background: #fff; }
.vvn-hero__title {
  font-family: var(--vvn-font-display);
  font-weight: 700;
  text-transform: uppercase;
  font-size: clamp(3.2rem, 10vw, 8rem);
  line-height: .86;
  margin: 1rem 0 1.4rem;
  letter-spacing: -.01em;
}
.vvn-hero__title .accent { color: var(--vvn-blue-2); font-style: normal; }
.vvn-hero__lead {
  max-width: 46ch;
  font-size: clamp(1rem, 1.6vw, 1.25rem);
  color: rgba(255, 255, 255, .82);
  line-height: 1.65;
}
.vvn-hero__cta { display: flex; flex-wrap: wrap; gap: 1rem; margin-top: 2.2rem; }
.vvn-hero__watermark {
  position: absolute;
  right: -2vw; bottom: -8vh;
  font-family: var(--vvn-font-display);
  font-weight: 700;
  font-size: 42vw;
  line-height: 1;
  color: rgba(255, 255, 255, .06);
  z-index: 1;
  pointer-events: none;
}
.vvn-hero__logo {
  position: absolute;
  top: 0; bottom: 0; right: 4%;
  height: clamp(240px, 40vw, 620px);
  width: clamp(240px, 40vw, 620px);
  margin-block: auto; /* centro verticale senza transform: lo lascio a GSAP */
  z-index: 2;
  pointer-events: none;
}
.vvn-hero__logo svg {
  width: 100%;
  height: 100%;
  display: block;
  overflow: visible;
  filter: drop-shadow(0 28px 55px rgba(0, 15, 35, .4));
}
@keyframes vvnFloat { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-26px) } }
.vvn-hero__scroll {
  position: absolute;
  left: 50%; bottom: 8%;
  transform: translateX(-50%);
  font-family: var(--vvn-font-display);
  text-transform: uppercase;
  letter-spacing: .3em;
  font-size: .7rem;
  color: rgba(255,255,255,.6);
  z-index: 3;
  animation: vvnBob 2s ease-in-out infinite;
}
@keyframes vvnBob { 0%,100% { transform: translateX(-50%) translateY(0) } 50% { transform: translateX(-50%) translateY(8px) } }
@media (max-width: 880px) { .vvn-hero__logo { display: none; } }

/* ---- PROSSIMA PARTITA ---- */
.vvn-nextmatch { background: var(--vvn-paper); padding: 0 0 clamp(2rem,5vw,3.5rem); }
.vvn-nextmatch__card {
  margin-top: -4rem;
  position: relative;
  z-index: 5;
  background: var(--vvn-grad-deep);
  border: 1px solid rgba(255,255,255,.1);
  border-radius: var(--vvn-radius-lg);
  padding: clamp(1.8rem, 4vw, 3rem);
  display: grid;
  grid-template-columns: 1fr auto auto;
  align-items: center;
  gap: 2rem;
  box-shadow: var(--vvn-shadow);
  color: #fff;
}
.vvn-nextmatch__date { font-family: var(--vvn-font-display); font-size: 1.4rem; text-transform: uppercase; margin: .6rem 0 .2rem; }
.vvn-nextmatch__venue { color: rgba(255,255,255,.6); font-size: .9rem; }
.vvn-nextmatch__teams { display: flex; align-items: center; gap: 1.4rem; }
.vvn-team { display: flex; align-items: center; gap: .8rem; }
.vvn-team__logo {
  width: 64px; height: 64px;
  display: grid; place-items: center;
  border-radius: 0;
  background: var(--vvn-grad);
  font-family: var(--vvn-font-display); font-weight: 700; font-size: 1.1rem;
}
.vvn-team__logo--away { background: rgba(255,255,255,.12); }
.vvn-team__name { font-family: var(--vvn-font-display); text-transform: uppercase; line-height: .95; font-size: 1.05rem; }
.vvn-nextmatch__vs { font-family: var(--vvn-font-display); font-size: 1.6rem; color: var(--vvn-blue-2); }
@media (max-width: 880px) {
  .vvn-nextmatch__card { grid-template-columns: 1fr; text-align: center; }
  .vvn-nextmatch__teams { justify-content: center; }
}

/* ---- CLASSIFICA ---- */
.vvn-standings { background: var(--vvn-paper); }
.vvn-split { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(2rem,5vw,4rem); align-items: center; }
.vvn-table { width: 100%; border-collapse: collapse; background: #fff; border-radius: var(--vvn-radius); overflow: hidden; box-shadow: var(--vvn-shadow); }
.vvn-table th {
  background: var(--vvn-ink); color: #fff;
  font-family: var(--vvn-font-display); text-transform: uppercase; letter-spacing: .1em;
  font-size: .75rem; text-align: left; padding: 1rem 1.2rem;
}
.vvn-table th:last-child, .vvn-table td:last-child { text-align: center; }
.vvn-table th:first-child, .vvn-table td:first-child { text-align: center; width: 48px; }
.vvn-table td { padding: 1rem 1.2rem; border-bottom: 1px solid #eef3f7; font-weight: 500; }
.vvn-table td:last-child { font-family: var(--vvn-font-display); font-size: 1.1rem; }
.vvn-table .is-vvn { background: linear-gradient(90deg, rgba(0,144,211,.12), transparent); }
.vvn-table .is-vvn td { color: var(--vvn-blue-dark); font-weight: 700; }
@media (max-width: 820px) { .vvn-split { grid-template-columns: 1fr; } }

/* ---- NEWS ---- */
.vvn-news-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 1.6rem; }
.vvn-news-card {
  text-decoration: none; color: var(--vvn-ink);
  border-radius: var(--vvn-radius); overflow: hidden;
  background: #fff; box-shadow: 0 18px 40px -24px rgba(0,40,58,.4);
  transition: transform .4s var(--vvn-ease), box-shadow .4s var(--vvn-ease);
  display: flex; flex-direction: column;
}
.vvn-news-card:hover { transform: translateY(-6px); box-shadow: var(--vvn-shadow-hover); }
.vvn-news-card__img {
  display: block; aspect-ratio: 16/10; position: relative;
  background: var(--vvn-grad-deep) center/cover no-repeat;
}
.vvn-news-card__cat {
  position: absolute; left: 1rem; top: 1rem;
  font-family: var(--vvn-font-display); text-transform: uppercase; letter-spacing: .08em;
  font-size: .68rem; font-style: normal; color: #fff;
  background: var(--vvn-blue); padding: .3rem .7rem; border-radius: 0;
}
.vvn-news-card__body { padding: 1.3rem 1.4rem 1.5rem; }
.vvn-news-card__date { font-size: .78rem; color: var(--vvn-blue); font-weight: 600; text-transform: uppercase; letter-spacing: .06em; }
.vvn-news-card__title { display: block; font-family: var(--vvn-font-display); text-transform: uppercase; font-size: 1.25rem; line-height: 1.05; margin-top: .5rem; }

/* ---- ROSTER BAND ---- */
.vvn-rosterband {
  background: var(--vvn-mesh); color: #fff;
  padding: clamp(3rem,8vw,6rem) 0;
  clip-path: polygon(0 6%, 100% 0, 100% 100%, 0 94%);
}
.vvn-rosterband__inner { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 2rem; }
.vvn-rosterband__title { font-family: var(--vvn-font-display); text-transform: uppercase; font-weight: 700; font-size: clamp(2.4rem,6vw,4.2rem); line-height: .9; margin: .5rem 0 0; }
.vvn-rosterband .vvn-btn { flex: none; white-space: nowrap; }

/* ---- SPONSOR ---- */
.vvn-sponsor-row { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: clamp(2rem,6vw,5rem); }
.vvn-sponsor img { height: clamp(38px, 6vw, 60px); width: auto; object-fit: contain; filter: grayscale(1) brightness(.4); opacity: .7; transition: filter .35s var(--vvn-ease), opacity .35s var(--vvn-ease); }
.vvn-sponsor:hover img { filter: none; opacity: 1; }

/* =====================================================================
   PAGINE EDITORIALI ELEMENTOR (classi vvn-ed-*)
   Stile brand applicato a contenuti editabili da Elementor.
   ===================================================================== */

/* Page header */
.vvn-ed-head {
  background: var(--vvn-mesh);
  color: #fff;
  padding: clamp(4rem, 9vw, 8rem) 0 clamp(5rem, 10vw, 9rem) !important;
  clip-path: polygon(0 0, 100% 0, 100% 88%, 0 100%);
  margin-bottom: clamp(2rem, 5vw, 4rem);
}
.vvn-ed-kicker .elementor-heading-title {
  font-family: var(--vvn-font-display);
  text-transform: uppercase;
  letter-spacing: .28em;
  font-size: .85rem;
  color: #cfe6f7;
  margin-bottom: .8rem;
}
.vvn-ed-title .elementor-heading-title {
  font-family: var(--vvn-font-display);
  text-transform: uppercase;
  font-size: clamp(3rem, 9vw, 7rem);
  line-height: .9;
  color: #fff;
}

/* Sezioni standard */
.vvn-ed-section { padding-block: clamp(2rem, 5vw, 4rem) !important; }
.vvn-ed-pb0 { padding-bottom: 0 !important; }
.vvn-ed-center { text-align: center; }
.vvn-ed-center .elementor-button-wrapper { text-align: center; }

/* Lead */
.vvn-ed-lead, .vvn-ed-lead p {
  font-family: var(--vvn-font-body);
  font-size: clamp(1.2rem, 2vw, 1.6rem);
  line-height: 1.5;
  color: var(--vvn-ink);
  font-weight: 500;
}

/* Heading editoriali */
.vvn-ed-h2 .elementor-heading-title {
  font-family: var(--vvn-font-display);
  text-transform: uppercase;
  font-size: clamp(1.9rem, 4vw, 3.2rem);
  line-height: .98;
  color: var(--vvn-ink);
  margin-bottom: 1rem;
}

/* Prosa */
.vvn-ed-prose, .vvn-ed-prose p {
  font-family: var(--vvn-font-body);
  color: #45535f;
  font-size: 1.05rem;
  line-height: 1.75;
}
.vvn-ed-prose p { margin-bottom: 1rem; }
.vvn-ed-prose ul { list-style: none; margin: .4rem 0 1.1rem; padding: 0; }
.vvn-ed-prose li {
  position: relative;
  padding-left: 1.4rem;
  font-family: var(--vvn-font-body);
  color: #45535f;
  font-size: 1.02rem;
  line-height: 1.6;
  margin-bottom: .5rem;
}
.vvn-ed-prose li::before {
  content: "";
  position: absolute;
  left: 0;
  top: .55em;
  width: 8px;
  height: 8px;
  background: var(--vvn-blue);
}
.vvn-ed-prose strong { color: var(--vvn-ink); }

/* Oltre la Rete: foto a banda uniforme (crop cover) */
.vvn-otr-pic img {
  width: 100%;
  height: clamp(280px, 34vw, 400px);
  object-fit: cover;
  object-position: center;
  display: block;
}
@media (max-width: 767px) { .vvn-otr-pic img { height: clamp(220px, 60vw, 300px); } }
.vvn-ed-prose a { color: var(--vvn-blue-dark); text-decoration: none; border-bottom: 1px solid currentColor; }
.vvn-ed-prose a:hover { color: var(--vvn-blue); }

/* Immagine */
.vvn-ed-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: 0;
  box-shadow: var(--vvn-shadow);
  display: block;
}

/* Milestone / tappe */
.vvn-ed-cards .elementor-column-wrap,
.vvn-ed-cards .elementor-widget-wrap { align-content: flex-start; }
.vvn-ed-card .elementor-widget-wrap {
  background: var(--vvn-paper);
  padding: 2rem 1.8rem !important;
  border-top: 4px solid var(--vvn-blue);
  height: 100%;
}
.vvn-ed-year .elementor-heading-title {
  font-family: var(--vvn-font-display);
  font-size: 3.2rem;
  line-height: 1;
  color: var(--vvn-blue);
}
.vvn-ed-mh .elementor-heading-title {
  font-family: var(--vvn-font-display);
  text-transform: uppercase;
  font-size: 1.4rem;
  color: var(--vvn-ink);
  margin: .3rem 0 .6rem;
}

/* CTA */
.vvn-ed-cta {
  background: var(--vvn-grad-deep);
  color: #fff;
  padding: clamp(3rem, 7vw, 6rem) 0 !important;
  text-align: center;
  clip-path: polygon(0 8%, 100% 0, 100% 100%, 0 100%);
  margin-top: clamp(2rem, 5vw, 4rem);
}
.vvn-ed-cta .elementor-heading-title { color: #fff; }

/* Bottone editoriale -> stile brand squadrato */
.vvn-ed-btn .elementor-button {
  font-family: var(--vvn-font-display);
  text-transform: uppercase;
  letter-spacing: .09em;
  border-radius: 0;
  padding: 1rem 2.3rem;
  font-size: 1rem;
}

/* Staff: card foto premium (immagini brandizzate) */
.vvn-staff-photo {
  position: relative;
  display: block;
  overflow: hidden;
  box-shadow: var(--vvn-shadow);
  transition: transform .5s var(--vvn-ease), box-shadow .5s var(--vvn-ease);
}
.vvn-staff-photo img {
  width: 100%; height: auto; display: block;
  transition: transform .85s var(--vvn-ease);
}
.vvn-staff-photo:hover { transform: translateY(-8px); box-shadow: var(--vvn-shadow-hover); }
.vvn-staff-photo:hover img { transform: scale(1.06); }
.vvn-staff-photo::after {
  content: ""; position: absolute; left: 0; bottom: 0;
  width: 100%; height: 6px; background: var(--vvn-grad);
  transform: scaleX(0); transform-origin: left;
  transition: transform .55s var(--vvn-ease); z-index: 3;
}
.vvn-staff-photo:hover::after { transform: scaleX(1); }

/* Disposizione sfalsata (zigzag) per dinamismo */
.elementor-column:has(.vvn-staff-photo):nth-child(even) { margin-top: 3.4rem; }
@media (max-width: 767px) { .elementor-column:has(.vvn-staff-photo):nth-child(even) { margin-top: 0; } }

/* Reveal allo scroll */
.vvn-js .vvn-staff-photo { opacity: 0; transform: translateY(45px); }
.vvn-js-failed .vvn-staff-photo,
.vvn-reduced .vvn-staff-photo { opacity: 1 !important; transform: none !important; }

/* Persona (organigramma): ruolo + nome */
.vvn-ed-role .elementor-heading-title {
  font-family: var(--vvn-font-display);
  text-transform: uppercase;
  letter-spacing: .16em;
  font-size: .82rem;
  margin-bottom: .35rem;
}
.vvn-ed-name .elementor-heading-title {
  font-family: var(--vvn-font-display);
  text-transform: uppercase;
  font-size: 1.7rem;
  line-height: 1;
}
.elementor .vvn-ed-diri,
.elementor .vvn-ed-diri p {
  font-family: var(--vvn-font-display) !important;
  text-transform: uppercase !important;
  font-size: 1.3rem !important;
  letter-spacing: .04em;
  line-height: 2.1;
  text-align: center;
}

/* Override font del brand sui contenuti Elementor (batte il kit Roboto) */
.elementor .vvn-ed-kicker .elementor-heading-title,
.elementor .vvn-ed-title .elementor-heading-title,
.elementor .vvn-ed-h2 .elementor-heading-title,
.elementor .vvn-ed-year .elementor-heading-title,
.elementor .vvn-ed-mh .elementor-heading-title,
.elementor .vvn-ed-role .elementor-heading-title,
.elementor .vvn-ed-name .elementor-heading-title,
.elementor .vvn-ed-diri .elementor-widget-container,
.elementor .vvn-ed-btn .elementor-button {
  font-family: var(--vvn-font-display) !important;
}
.elementor .vvn-ed-lead,
.elementor .vvn-ed-lead p,
.elementor .vvn-ed-prose,
.elementor .vvn-ed-prose p {
  font-family: var(--vvn-font-body) !important;
}

/* Coerenza font globale: qualsiasi heading/testo Elementor (anche senza classe
   o con stili inline) usa i font del brand, mai il kit Roboto di default. */
.elementor-widget-heading .elementor-heading-title,
.elementor-widget-text-editor,
.elementor-widget-text-editor p,
.elementor-widget-text-editor li,
.elementor-widget-text-editor a {
  font-family: var(--vvn-font-body);
}
.elementor-widget-heading .elementor-heading-title {
  font-family: var(--vvn-font-display);
}

/* =====================================================================
   DIVENTA PARTNER (classi vvn-sp-*)
   ===================================================================== */
/* Testo chiaro su sezioni scure (hero, business league, cta) */
.elementor .vvn-sp-herotext,
.elementor .vvn-sp-herotext p {
  font-family: var(--vvn-font-body) !important;
  color: #eaf2fb !important;
}
.vvn-sp-herobtns { margin-top: 1.6rem; }
.vvn-sp-herobtns .elementor-button { width: 100%; }
.vvn-sp-herobtns .elementor-column { margin-bottom: .6rem; }

/* Numeri statistici (band scura) */
.vvn-sp-statnum .elementor-heading-title {
  font-family: var(--vvn-font-display);
  font-size: clamp(2.8rem, 6vw, 4.4rem);
  line-height: .9;
  letter-spacing: .01em;
}
.elementor .vvn-sp-statlabel,
.elementor .vvn-sp-statlabel p {
  font-family: var(--vvn-font-body) !important;
  color: #cdddf0 !important;
  text-transform: uppercase;
  letter-spacing: .12em;
  font-size: .82rem;
  margin: .5rem 0 0;
  line-height: 1.35;
}

/* Card pacchetti (tier) */
.vvn-sp-tiername .elementor-heading-title {
  font-family: var(--vvn-font-display);
  text-transform: uppercase;
  font-size: 1.45rem;
  line-height: 1.02;
  min-height: 2.9rem;
}
.vvn-sp-tierprice .elementor-heading-title {
  font-family: var(--vvn-font-display);
  font-size: 2.4rem;
  line-height: 1;
  margin: .2rem 0 .7rem;
}
.elementor .vvn-sp-tierdesc-l,
.elementor .vvn-sp-tierdesc-l p {
  font-family: var(--vvn-font-body) !important;
  color: #dbe8f5 !important;
  font-size: .95rem;
  line-height: 1.5;
}

/* =====================================================================
   ARTICOLO SINGOLO (news)
   ===================================================================== */
.vvn-article__hero {
  position: relative;
  min-height: 64vh;
  display: flex;
  align-items: flex-end;
  overflow: hidden;
  background: var(--img, var(--vvn-grad-deep)) center / cover no-repeat;
  background-color: var(--vvn-ink);
}
.vvn-article__tint {
  position: absolute; inset: 0;
  background: linear-gradient(to top, rgba(10,18,30,.96) 2%, rgba(16,26,44,.6) 45%, rgba(16,26,44,.25) 100%);
}
.vvn-article__head {
  position: relative; z-index: 2;
  color: #fff;
  padding-bottom: clamp(2.5rem, 6vw, 5rem);
  padding-top: 6rem;
}
.vvn-article__cat {
  display: inline-block;
  background: var(--vvn-blue);
  color: #fff;
  font-family: var(--vvn-font-display);
  text-transform: uppercase;
  letter-spacing: .12em;
  font-size: .78rem;
  padding: .45rem 1rem;
  margin-bottom: 1.2rem;
}
.vvn-article__title {
  font-family: var(--vvn-font-display);
  text-transform: uppercase;
  font-size: clamp(2.2rem, 5.2vw, 4.6rem);
  line-height: .98;
  color: #fff;
  max-width: 20ch;
  margin: 0;
}
.vvn-article__date {
  display: block;
  margin-top: 1.2rem;
  color: #bdd6ea;
  font-family: var(--vvn-font-display);
  letter-spacing: .14em;
  text-transform: uppercase;
  font-size: .85rem;
}
.vvn-article__body { padding: clamp(3rem, 7vw, 5.5rem) 0; background: #fff; }
.vvn-article__body .vvn-container { width: min(760px, 92vw); }
.vvn-article__body p {
  font-family: var(--vvn-font-body);
  color: #2c3a45;
  font-size: 1.13rem;
  line-height: 1.8;
  margin-bottom: 1.4rem;
}
.vvn-article__body strong { color: var(--vvn-ink); font-weight: 700; }
.vvn-article__body blockquote {
  margin: 2.4rem 0;
  padding: .4rem 0 .4rem 2rem;
  border-left: 4px solid var(--vvn-blue);
}
.vvn-article__body blockquote p {
  font-size: 1.35rem;
  line-height: 1.55;
  color: var(--vvn-ink);
  font-weight: 500;
  font-style: italic;
  margin-bottom: .8rem;
}
.vvn-article__body blockquote cite {
  font-family: var(--vvn-font-display);
  font-style: normal;
  text-transform: uppercase;
  letter-spacing: .08em;
  font-size: .85rem;
  color: var(--vvn-blue-dark);
}
/* Primo paragrafo in evidenza (occhiello editoriale) */
.vvn-article__body > .vvn-container > p:first-of-type {
  font-size: 1.32rem;
  line-height: 1.65;
  color: var(--vvn-ink);
  font-weight: 500;
}
/* Sottotitoli interni */
.vvn-article__body h2,
.vvn-article__body h3,
.vvn-article__body h4 {
  font-family: var(--vvn-font-display);
  text-transform: uppercase;
  color: var(--vvn-ink);
  line-height: 1.02;
  margin: 2.6rem 0 1rem;
}
.vvn-article__body h2 { font-size: clamp(1.8rem, 3.4vw, 2.4rem); }
.vvn-article__body h3 { font-size: clamp(1.5rem, 2.8vw, 1.9rem); }
.vvn-article__body h4 { font-size: 1.3rem; }
/* Liste */
.vvn-article__body ul,
.vvn-article__body ol {
  margin: 0 0 1.6rem;
  padding-left: 0;
  list-style: none;
}
.vvn-article__body ul li,
.vvn-article__body ol li {
  font-family: var(--vvn-font-body);
  color: #2c3a45;
  font-size: 1.13rem;
  line-height: 1.7;
  margin-bottom: .7rem;
  padding-left: 1.7rem;
  position: relative;
}
.vvn-article__body ul li::before {
  content: ""; position: absolute; left: 0; top: .62em;
  width: .55rem; height: .55rem; background: var(--vvn-blue);
}
.vvn-article__body ol { counter-reset: vvn-ol; }
.vvn-article__body ol li { counter-increment: vvn-ol; }
.vvn-article__body ol li::before {
  content: counter(vvn-ol); position: absolute; left: 0; top: 0;
  font-family: var(--vvn-font-display); color: var(--vvn-blue); font-size: 1.1rem; line-height: 1.7;
}
/* Link inline */
.vvn-article__body a {
  color: var(--vvn-blue-dark);
  text-decoration: none;
  border-bottom: 1px solid currentColor;
  transition: color .25s var(--vvn-ease);
}
.vvn-article__body a:hover { color: var(--vvn-blue); }
/* Immagini, figure, embed */
.vvn-article__body img,
.vvn-article__body iframe,
.vvn-article__body video {
  max-width: 100%;
  height: auto;
  display: block;
}
.vvn-article__body figure { margin: 2.4rem 0; }
.vvn-article__body figure img { width: 100%; }
.vvn-article__body figcaption {
  margin-top: .7rem;
  font-family: var(--vvn-font-body);
  font-size: .9rem;
  color: #6a7a85;
  text-align: center;
}
.vvn-article__body em { font-style: italic; }
.vvn-article__body hr {
  border: 0; height: 1px; background: #e2e9f0; margin: 3rem 0;
}
.vvn-article__back { margin-top: 3rem; }

/* =====================================================================
   ARCHIVIO NEWS (coded)
   ===================================================================== */
.vvn-pagehead {
  position: relative;
  overflow: hidden;
  background: var(--vvn-grad-deep);
  color: #fff;
  padding: clamp(4rem, 9vw, 7rem) 0 clamp(4rem, 8vw, 6rem);
}
.vvn-pagehead::before {
  content: ""; position: absolute; inset: 0;
  background: url('../img/vvn-pattern.svg') repeat;
  opacity: .13;
}
.vvn-pagehead .vvn-container { position: relative; z-index: 1; }
.vvn-pagehead .vvn-kicker { color: #cfe6f7; }
.vvn-pagehead .vvn-kicker::before { background: #fff; }
.vvn-pagehead h1 {
  font-family: var(--vvn-font-display);
  text-transform: uppercase;
  font-size: clamp(3rem, 9vw, 7rem);
  line-height: .9;
  margin: .5rem 0 0;
  color: #fff;
}
.vvn-newsarchive .vvn-news-card__excerpt {
  display: block; margin-top: .7rem;
  color: #5a6b76; font-size: .95rem; line-height: 1.6;
}
.vvn-newsarchive .vvn-news-card__more {
  display: inline-block; margin-top: 1rem;
  font-family: var(--vvn-font-display); text-transform: uppercase;
  letter-spacing: .1em; font-size: .78rem; color: var(--vvn-blue);
}
.vvn-pagination {
  display: flex; flex-wrap: wrap; gap: .5rem; justify-content: center; margin-top: 3.5rem;
}
.vvn-pagination a, .vvn-pagination span {
  padding: .65rem 1.05rem;
  font-family: var(--vvn-font-display); letter-spacing: .05em;
  background: var(--vvn-paper); color: var(--vvn-ink); text-decoration: none;
  transition: background .25s, color .25s;
}
.vvn-pagination a:hover { background: var(--vvn-blue); color: #fff; }
.vvn-pagination .current { background: var(--vvn-blue); color: #fff; }

/* =====================================================================
   HEADER premium (override Hello Elementor)
   ===================================================================== */
.site-header {
  position: sticky;
  top: 0;
  z-index: 999;
  background: var(--vvn-blue-deep);
  background-image: linear-gradient(90deg, rgba(0,180,255,.10), rgba(0,40,58,0) 40%);
  box-shadow: 0 10px 30px -18px rgba(0, 0, 0, .8);
  border-bottom: 1px solid rgba(255, 255, 255, .08);
}
.site-header .site-header-inner,
.site-header > .ehf-container,
.site-header .site-branding-container {
  min-height: 78px;
}
/* Logo testuale */
.site-header .site-title,
.site-header .site-title a {
  font-family: var(--vvn-font-display) !important;
  text-transform: uppercase;
  font-weight: 700;
  letter-spacing: .02em;
  color: #fff !important;
  font-size: 1.5rem;
}
.site-header .site-title a:hover { color: var(--vvn-blue-2) !important; }
.site-header .site-description { color: rgba(255,255,255,.6); }

/* Logo esteso (versione index.html) al posto della scritta */
.site-header .site-title a {
  display: block;
  width: 102px;
  height: 62px;
  padding: 0;
  background: url('../img/virtus-logo.svg') left center / contain no-repeat;
  text-indent: -9999px;
  white-space: nowrap;
  overflow: hidden;
}
@media (max-width: 600px) {
  .site-header .site-title a { width: 78px; height: 48px; }
}

/* Menu */
.site-header .site-navigation .menu,
.site-header nav .menu {
  gap: .35rem;
}
.site-header .site-navigation a,
.site-header nav .menu a {
  font-family: var(--vvn-font-display);
  text-transform: uppercase;
  font-weight: 500;
  letter-spacing: .08em;
  font-size: .92rem;
  color: rgba(255, 255, 255, .85) !important;
  padding: .55rem .9rem;
  border-radius: 0;
  position: relative;
  transition: color .25s var(--vvn-ease), background .25s var(--vvn-ease);
}
.site-header .site-navigation a:hover,
.site-header nav .menu a:hover,
.site-header .menu .current-menu-item > a {
  color: #fff !important;
  background: rgba(255, 255, 255, .08);
}
.site-header .menu > li > a::after {
  content: "";
  position: absolute;
  left: .9rem; right: .9rem; bottom: .28rem;
  height: 2px;
  background: var(--vvn-grad);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .3s var(--vvn-ease);
}
.site-header .menu > li:hover > a::after { transform: scaleX(1); }

/* Dropdown submenu */
.site-header .menu .sub-menu {
  background: #fff;
  border-radius: 0;
  box-shadow: 0 30px 60px -20px rgba(0, 40, 58, .45);
  padding: .5rem;
  min-width: 230px;
  border: none;
}
.site-header .menu .sub-menu a {
  color: var(--vvn-ink) !important;
  font-size: .82rem;
  letter-spacing: .06em;
  padding: .6rem .8rem;
}
.site-header .menu .sub-menu a:hover {
  color: var(--vvn-blue) !important;
  background: var(--vvn-paper);
}

/* Mobile toggle on-brand */
.site-header .elementor-menu-toggle,
.site-header .menu-toggle { color: #fff; }

/* =====================================================================
   MARQUEE partner (home)
   ===================================================================== */
.vvn-marquee {
  position: relative;
  overflow: hidden;
  width: 100%;
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 7%, #000 93%, transparent);
          mask-image: linear-gradient(90deg, transparent, #000 7%, #000 93%, transparent);
}
.vvn-marquee__track {
  display: flex;
  width: max-content;
  align-items: center;
  animation: vvn-marquee 34s linear infinite;
}
.vvn-marquee:hover .vvn-marquee__track { animation-play-state: paused; }
.vvn-marquee__item {
  flex: 0 0 auto;
  width: clamp(150px, 16vw, 210px);
  height: 110px;
  display: grid;
  place-items: center;
  margin: 0 clamp(.5rem, 1.4vw, 1.1rem);
}
.vvn-marquee__item img {
  max-width: 100%;
  max-height: 64px;
  width: auto;
  object-fit: contain;
  filter: none;
  opacity: .85;
  transition: filter .35s var(--vvn-ease), opacity .35s var(--vvn-ease);
}
.vvn-marquee__item:hover img { filter: none; opacity: 1; }
.vvn-marquee__ph {
  display: grid;
  place-items: center;
  width: 100%;
  height: 84px;
  border: 1px solid rgba(22, 35, 59, .14);
  background: #fff;
  color: #aeb9c4;
  font-family: var(--vvn-font-display);
  font-size: 1.15rem;
  letter-spacing: .14em;
}
@keyframes vvn-marquee { to { transform: translateX(-50%); } }

/* =====================================================================
   FOOTER premium
   ===================================================================== */
.vvn-footer {
  background: var(--vvn-blue-deep);
  color: rgba(255, 255, 255, .72);
  font-family: var(--vvn-font-body);
}
.vvn-footer__main { padding: clamp(3rem, 6vw, 5rem) 0 clamp(2.4rem, 4vw, 3.4rem); }
.vvn-footer__grid {
  display: grid;
  grid-template-columns: 1.6fr 1fr 1fr;
  gap: clamp(2rem, 5vw, 4rem);
  align-items: start;
}
.vvn-footer__logo { display: inline-block; }
.vvn-footer__logo svg { width: clamp(170px, 18vw, 220px); height: auto; display: block; }
.vvn-footer__logo svg path,
.vvn-footer__logo svg polygon,
.vvn-footer__logo svg rect { fill: #fff; }
.vvn-footer__tag {
  margin-top: 1.4rem;
  font-size: .95rem;
  line-height: 1.55;
  color: rgba(255, 255, 255, .6);
  max-width: 34ch;
}
.vvn-footer__nav { display: flex; flex-direction: column; gap: .8rem; }
.vvn-footer__navtitle {
  font-family: var(--vvn-font-display);
  letter-spacing: .12em;
  font-size: 1.15rem;
  color: var(--vvn-blue-2);
  margin-bottom: .4rem;
}
.vvn-footer__nav a {
  color: rgba(255, 255, 255, .72);
  text-decoration: none;
  font-size: .95rem;
  width: max-content;
  transition: color .25s var(--vvn-ease);
}
.vvn-footer__nav a:hover { color: #fff; }

.vvn-footer__contact { list-style: none; margin: 1.3rem 0 0; padding: 0; display: flex; flex-direction: column; gap: .55rem; }
.vvn-footer__contact a {
  color: rgba(255, 255, 255, .72);
  text-decoration: none;
  font-size: .92rem;
  line-height: 1.4;
  transition: color .25s var(--vvn-ease);
}
.vvn-footer__contact a:hover { color: var(--vvn-blue-2); }
.vvn-footer__social { display: flex; gap: .7rem; margin-top: 1.6rem; }
.vvn-footer__social a {
  display: grid;
  place-items: center;
  width: 42px;
  height: 42px;
  color: #fff;
  border: 1px solid rgba(255, 255, 255, .2);
  transition: background .25s var(--vvn-ease), border-color .25s var(--vvn-ease), transform .25s var(--vvn-ease);
}
.vvn-footer__social a:hover { background: var(--vvn-blue); border-color: var(--vvn-blue); transform: translateY(-2px); }

.vvn-classifica-note {
  text-align: center;
  margin-top: 1.2rem;
  font-family: var(--vvn-font-body);
  font-size: .82rem;
  color: #7a8794;
}
.vvn-classifica-table { margin: 0 auto; }

/* Classifica completa (stile Lega) */
.vvn-classifica-scroll { width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; }
.vvn-classifica-full { width: 100%; min-width: 760px; font-size: .9rem; border-collapse: collapse; }
.vvn-classifica-full th, .vvn-classifica-full td { white-space: nowrap; }
/* separatori tra i gruppi di colonne (dopo Punti, Partite, Risultati, Set, Punti) */
.vvn-classifica-full th:nth-child(3),
.vvn-classifica-full thead tr:last-child th:nth-child(3),
.vvn-classifica-full thead tr:last-child th:nth-child(9),
.vvn-classifica-full thead tr:last-child th:nth-child(11),
.vvn-classifica-full thead tr:last-child th:nth-child(13),
.vvn-classifica-full tbody td:nth-child(3),
.vvn-classifica-full tbody td:nth-child(6),
.vvn-classifica-full tbody td:nth-child(12),
.vvn-classifica-full tbody td:nth-child(14),
.vvn-classifica-full tbody td:nth-child(16) { border-right: 1px solid #e4ebf1; }
.vvn-classifica-full thead th {
  font-family: var(--vvn-font-display);
  letter-spacing: .04em;
  background: var(--vvn-ink);
  color: #fff;
  padding: .5rem .4rem;
  text-align: center;
  font-weight: 400;
  font-size: .82rem;
  border-bottom: 1px solid rgba(255, 255, 255, .12);
}
.vvn-classifica-full thead tr:first-child th { border-bottom: 1px solid rgba(255, 255, 255, .22); }
.vvn-classifica-full th.team { text-align: left; }
.vvn-classifica-full tbody td {
  padding: .6rem .4rem;
  text-align: center;
  border-bottom: 1px solid #eef3f7;
  font-weight: 500;
  font-variant-numeric: tabular-nums;
}
.vvn-classifica-full tbody td:first-child { width: 36px; color: #8a97a4; }
.vvn-classifica-full td.team { text-align: left; white-space: nowrap; font-weight: 700; color: var(--vvn-ink); }
.vvn-classifica-full td.pts { font-family: var(--vvn-font-display); font-size: 1.2rem; color: var(--vvn-blue-dark); }
.vvn-classifica-full tbody tr:hover { background: #f7fafc; }
.vvn-classifica-full .is-vvn { background: linear-gradient(90deg, rgba(63,142,205,.14), transparent); }
.vvn-classifica-full .is-vvn td.team { color: var(--vvn-blue-dark); }

.vvn-footer__sponsors {
  background: #fff;
  padding: clamp(1.6rem, 3vw, 2.2rem) 0;
}
.vvn-footer__sponsors-inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 1.2rem;
}
.vvn-footer__sponsors-label {
  font-family: var(--vvn-font-display);
  letter-spacing: .2em;
  font-size: .95rem;
  color: #8a97a4;
  text-transform: uppercase;
}
.vvn-footer__logos {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: clamp(2rem, 6vw, 4.5rem);
  flex-wrap: wrap;
}
.vvn-footer__sponsor img {
  height: clamp(46px, 6vw, 64px);
  width: auto;
  object-fit: contain;
  display: block;
}

.vvn-footer__bar { background: var(--vvn-navy-2); }
.vvn-footer__bar-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  flex-wrap: wrap;
  padding: 1.3rem 0;
}
.vvn-footer__copy { font-size: .82rem; color: rgba(255, 255, 255, .5); }
.vvn-footer__credit { font-size: .82rem; color: rgba(255, 255, 255, .55); }
.vvn-footer__credit a {
  color: #fff;
  text-decoration: none;
  font-weight: 600;
  transition: color .25s var(--vvn-ease);
}
.vvn-footer__credit a:hover { color: var(--vvn-blue-2); }
.vvn-footer__heart { color: var(--vvn-blue-2); }

@media (max-width: 880px) {
  .vvn-footer__grid { grid-template-columns: 1fr 1fr; }
  .vvn-footer__brand { grid-column: 1 / -1; }
  .vvn-footer__bar-inner { justify-content: center; text-align: center; }
}

/* =====================================================================
   ROSTER — archive grid
   ===================================================================== */
.vvn-roster-hero {
  background: var(--vvn-mesh);
  color: #fff;
  padding: clamp(4rem, 10vw, 8rem) 0 clamp(6rem, 12vw, 10rem);
  position: relative;
  overflow: hidden;
  clip-path: polygon(0 0, 100% 0, 100% 88%, 0 100%);
}
.vvn-roster-hero h1 {
  font-family: var(--vvn-font-display);
  font-weight: 700;
  text-transform: uppercase;
  font-size: clamp(3rem, 11vw, 8rem);
  line-height: .88;
  margin: .4rem 0 0;
}
.vvn-roster-hero .vvn-kicker { color: #bdeaff; }
.vvn-roster-hero .vvn-kicker::before { background: #fff; }

.vvn-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 1.6rem;
  margin-top: -5rem;
  position: relative;
  z-index: 2;
}

/* Athlete card */
.vvn-card {
  position: relative;
  border-radius: var(--vvn-radius-lg);
  overflow: hidden;
  background: var(--vvn-grad-deep);
  aspect-ratio: 3 / 4;
  text-decoration: none;
  display: block;
  box-shadow: var(--vvn-shadow);
  transition: transform .5s var(--vvn-ease), box-shadow .5s var(--vvn-ease);
  isolation: isolate;
}
.vvn-card:hover { transform: translateY(-8px); box-shadow: var(--vvn-shadow-hover); }

.vvn-card__photo {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: top center;
  transition: transform .8s var(--vvn-ease);
  z-index: 1;
}
.vvn-card:hover .vvn-card__photo { transform: scale(1.06); }

.vvn-card__num {
  position: absolute;
  top: -.15em;
  right: .04em;
  font-family: var(--vvn-font-display);
  font-weight: 700;
  font-size: 11rem;
  line-height: 1;
  color: rgba(255, 255, 255, .14);
  z-index: 2;
  pointer-events: none;
  transition: color .5s var(--vvn-ease);
}
/* Il numero e' un watermark dentro al link <a>: evita che l'hover del tema
   lo schiarisca a bianco pieno. In hover resta sobrio, con un tocco di blu brand. */
.vvn-card:hover .vvn-card__num,
.vvn-card:focus .vvn-card__num {
  color: rgba(63, 142, 205, .22);
}
.vvn-card__overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, rgba(0,40,58,.92) 8%, rgba(0,40,58,.15) 55%, transparent 80%);
  z-index: 3;
}
.vvn-card__body {
  position: absolute;
  left: 0; right: 0; bottom: 0;
  padding: 1.4rem 1.5rem 1.6rem;
  z-index: 4;
  color: #fff;
  transform: translateY(0);
  transition: transform .5s var(--vvn-ease);
}
.vvn-card__role {
  font-family: var(--vvn-font-display);
  text-transform: uppercase;
  letter-spacing: .18em;
  font-size: .72rem;
  color: var(--vvn-blue-2);
  font-weight: 600;
}
.vvn-card__name {
  font-family: var(--vvn-font-display);
  text-transform: uppercase;
  font-weight: 700;
  font-size: 1.6rem;
  line-height: .98;
  margin: .25rem 0 0;
}
.vvn-card__name span { display: block; color: var(--vvn-blue-2); }
.vvn-card__cta {
  margin-top: .9rem;
  font-family: var(--vvn-font-display);
  text-transform: uppercase;
  letter-spacing: .14em;
  font-size: .74rem;
  opacity: 0;
  transform: translateY(8px);
  transition: opacity .4s var(--vvn-ease), transform .4s var(--vvn-ease);
}
.vvn-card:hover .vvn-card__cta { opacity: 1; transform: translateY(0); }

/* =====================================================================
   SINGLE ATLETA
   ===================================================================== */
.vvn-athlete {
  position: relative;
  background: var(--vvn-mesh);
  color: #fff;
  overflow: hidden;
}
.vvn-athlete__wrap {
  width: min(1200px, 92vw);
  margin-inline: auto;
  display: grid;
  grid-template-columns: 1.1fr .9fr;
  gap: 2rem;
  align-items: end;
  min-height: 78vh;
  padding: clamp(2rem, 6vw, 5rem) 0 0;
}
.vvn-athlete__bignum {
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  font-family: var(--vvn-font-display);
  font-weight: 700;
  font-size: clamp(20rem, 48vw, 52rem);
  color: rgba(255, 255, 255, .07);
  line-height: 1;
  z-index: 0;
  pointer-events: none;
}
.vvn-athlete__info { position: relative; z-index: 2; padding-bottom: clamp(2rem, 6vw, 5rem); }
.vvn-athlete__role {
  font-family: var(--vvn-font-display);
  text-transform: uppercase;
  letter-spacing: .26em;
  color: #bdeaff;
  font-weight: 600;
  font-size: .9rem;
}
.vvn-athlete__name {
  font-family: var(--vvn-font-display);
  text-transform: uppercase;
  font-weight: 700;
  font-size: clamp(3rem, 9vw, 6.5rem);
  line-height: .9;
  margin: .4rem 0 1.4rem;
}
.vvn-athlete__name span { display: block; color: var(--vvn-blue-2); }

.vvn-stats {
  display: flex;
  flex-wrap: wrap;
  gap: 2.4rem;
  margin-top: 1.5rem;
  padding-top: 1.5rem;
  border-top: 1px solid var(--vvn-line);
}
.vvn-stat__val {
  font-family: var(--vvn-font-display);
  font-weight: 700;
  font-size: 2.4rem;
  line-height: 1;
}
.vvn-stat__label {
  text-transform: uppercase;
  letter-spacing: .14em;
  font-size: .7rem;
  opacity: .7;
  margin-top: .3rem;
}
.vvn-athlete__photo {
  position: relative;
  z-index: 1;
  align-self: end;
}
.vvn-athlete__photo img {
  display: block;
  width: 100%;
  max-height: 78vh;
  object-fit: contain;
  filter: drop-shadow(0 30px 50px rgba(0,0,0,.4));
}
.vvn-athlete__bio {
  background: var(--vvn-paper);
  color: var(--vvn-ink);
}
.vvn-athlete__bio .vvn-container { padding: clamp(3rem, 7vw, 6rem) 0; max-width: 760px; }

/* ---------- Responsive ---------- */
@media (max-width: 880px) {
  .vvn-athlete__wrap { grid-template-columns: 1fr; min-height: auto; }
  /* La foto resta visibile anche su mobile, impilata sotto le info. */
  .vvn-athlete__photo {
    display: block;
    order: 2;
    width: 100%;
    max-width: 420px;
    margin: 1.4rem auto 0;
    align-self: center;
  }
  .vvn-athlete__photo img { max-height: 62vh; margin-inline: auto; }
  .vvn-athlete__info { order: 1; }
  .vvn-card__num { font-size: 8rem; }
}

/* =====================================================================
   WPFORMS — moduli di contatto on-brand (squadrati, blu Virtus)
   ===================================================================== */
.wpforms-container { margin: 0 auto; max-width: 760px; }
.wpforms-form .wpforms-field { padding: 0 0 1.3rem; }
.wpforms-form .wpforms-field-label {
  font-family: var(--vvn-font-body);
  font-weight: 600;
  color: var(--vvn-ink);
  font-size: .95rem;
  margin-bottom: .5rem;
}
.wpforms-form .wpforms-required-label { color: var(--vvn-blue); }
.wpforms-form input[type="text"],
.wpforms-form input[type="email"],
.wpforms-form input[type="tel"],
.wpforms-form input[type="url"],
.wpforms-form input[type="number"],
.wpforms-form textarea,
.wpforms-form select {
  width: 100%;
  border-radius: 0 !important;
  border: 1px solid #d4dde6 !important;
  background: #fff !important;
  padding: .85rem 1rem !important;
  font-family: var(--vvn-font-body) !important;
  font-size: 1rem !important;
  line-height: 1.4 !important;
  color: var(--vvn-ink) !important;
  box-shadow: none !important;
  transition: border-color .25s var(--vvn-ease), box-shadow .25s var(--vvn-ease);
}
.wpforms-form textarea { min-height: 150px; resize: vertical; }
/* I campi WPForms (medium/small) di default sono ~60% larghezza: a tutta larghezza */
.wpforms-container div.wpforms-field,
.wpforms-container div.wpforms-field-medium,
.wpforms-container div.wpforms-field-small,
.wpforms-container div.wpforms-field-large {
  max-width: 100% !important;
  width: 100% !important;
}
.wpforms-container .wpforms-field input,
.wpforms-container .wpforms-field textarea,
.wpforms-container .wpforms-field select { width: 100% !important; max-width: 100% !important; }
.wpforms-form input:focus,
.wpforms-form textarea:focus,
.wpforms-form select:focus {
  border-color: var(--vvn-blue) !important;
  box-shadow: inset 0 0 0 1px var(--vvn-blue) !important;
  outline: none !important;
}
.wpforms-form .wpforms-field-description { font-family: var(--vvn-font-body); font-size: .82rem; color: #7a8794; }
.wpforms-container .wpforms-form .wpforms-submit-container,
.wpforms-form .wpforms-submit-container {
  width: 100% !important;
  display: block !important;
  text-align: left !important;
  max-width: 100% !important;
}
.wpforms-container .wpforms-form button.wpforms-submit,
.wpforms-container .wpforms-form button[type="submit"],
.wpforms-form button[type="submit"],
.wpforms-form .wpforms-submit {
  display: block;
  width: 100% !important;
  max-width: 100% !important;
  box-sizing: border-box !important;
  background: var(--vvn-blue) !important;
  color: #fff !important;
  border: 0 !important;
  border-radius: 0 !important;
  font-family: var(--vvn-font-display) !important;
  letter-spacing: .08em !important;
  font-size: 1.2rem !important;
  padding: .9rem 2.6rem !important;
  margin-top: .4rem;
  cursor: pointer;
  transition: background .25s var(--vvn-ease), transform .25s var(--vvn-ease);
}
.wpforms-form button[type="submit"]:hover,
.wpforms-form .wpforms-submit:hover { background: var(--vvn-blue-dark) !important; transform: translateY(-2px); }
.wpforms-confirmation-container-full,
div.wpforms-container .wpforms-confirmation-container-full {
  background: rgba(63, 142, 205, .1) !important;
  border: 1px solid var(--vvn-blue) !important;
  border-radius: 0 !important;
  color: var(--vvn-ink) !important;
  font-family: var(--vvn-font-body) !important;
}
.wpforms-form .wpforms-error { font-family: var(--vvn-font-body); }
.wpforms-form input.wpforms-error,
.wpforms-form textarea.wpforms-error,
.wpforms-form select.wpforms-error { border-color: #d23b3b !important; }

/* =====================================================================
   ACCESSIBILITÀ & UX
   ===================================================================== */
/* Focus da tastiera visibile e coerente col brand su tutti gli elementi
   interattivi del tema (i :hover non bastano per chi naviga da tastiera). */
.vvn-scope a:focus-visible,
.vvn-scope button:focus-visible,
.vvn-btn:focus-visible,
.vvn-card:focus-visible,
.vvn-news-card:focus-visible,
.site-header a:focus-visible,
.vvn-footer a:focus-visible,
.vvn-pagination a:focus-visible {
  outline: 3px solid var(--vvn-blue-2);
  outline-offset: 3px;
  border-radius: 2px;
}
/* Su sfondi scuri/blu usa un focus chiaro per garantire contrasto. */
.vvn-hero a:focus-visible,
.vvn-rosterband a:focus-visible,
.vvn-nextmatch__card a:focus-visible,
.site-header a:focus-visible,
.vvn-footer a:focus-visible,
.vvn-card:focus-visible { outline-color: #ffffff; }

/* Skip-link: reso visibile quando riceve focus (override screen-reader-text). */
.skip-link:focus {
  position: fixed !important;
  top: 12px; left: 12px;
  z-index: 100000;
  width: auto; height: auto;
  clip: auto; clip-path: none;
  padding: .7rem 1.2rem;
  background: var(--vvn-ink);
  color: #fff;
  font-family: var(--vvn-font-display);
  letter-spacing: .06em;
  text-decoration: none;
}

/* Risparmio dati: niente video pesante in hero, resta lo sfondo brand. */
@media (prefers-reduced-data: reduce) {
  .vvn-hero__video { display: none; }
}

/* Tap target più ampi su mobile per i link di navigazione/footer. */
@media (max-width: 880px) {
  .vvn-footer__nav a,
  .vvn-footer__contact a { padding-block: .25rem; }
}

/* =====================================================================
   MENU MOBILE (hamburger dropdown) — leggibile e on-brand
   Il tema parent dà sfondo bianco al dropdown, ma il nostro override
   colora i link di bianco -> bianco su bianco. Qui forziamo navy + bianco.
   ===================================================================== */
.site-header .site-navigation-dropdown ul.menu,
.site-header .site-navigation-dropdown ul.menu li ul {
  background: var(--vvn-blue-deep) !important;
}
.site-header .site-navigation-dropdown ul.menu li a {
  background: var(--vvn-blue-deep) !important;
  color: #fff !important;
  box-shadow: inset 0 -1px 0 rgba(255, 255, 255, .1) !important;
  letter-spacing: .06em;
}
/* Sottovoci leggermente più scure per gerarchia */
.site-header .site-navigation-dropdown ul.menu li ul li a {
  background: var(--vvn-navy-2) !important;
  padding-inline-start: 34px !important;
  font-size: .9rem;
}
.site-header .site-navigation-dropdown ul.menu li a:hover,
.site-header .site-navigation-dropdown ul.menu li a:focus {
  background: rgba(255, 255, 255, .1) !important;
  color: #fff !important;
}
.site-header .site-navigation-dropdown ul.menu li.current-menu-item > a {
  background: var(--vvn-blue) !important;
  color: #fff !important;
}
/* Freccia delle voci con sottomenu, visibile su navy */
.site-header .site-navigation-dropdown ul.menu li.menu-item-has-children:after {
  color: var(--vvn-blue-2) !important;
}
/* Sottovoci sempre visibili nel menu mobile: ogni pagina è raggiungibile con un tap
   (il toggle del tema parent richiede di colpire la freccia ed è poco intuitivo). */
@media (max-width: 992px) {
  .site-header .site-navigation-dropdown ul.menu li ul { display: block !important; }
  .site-header .site-navigation-dropdown ul.menu > li > ul > li {
    max-height: none !important;
    transform: none !important;
  }
  .site-header .site-navigation-dropdown ul.menu li.menu-item-has-children:after { display: none !important; }
}
