/* ============================================================
   Libero Volley — Stili componenti (front-end + editor)
   Accodato da functions.php. theme.json governa colori/font/spazi;
   qui stanno le classi dei moduli brand (card, programmi, coach,
   orario, hero, badge) e gli stati hover/press.
   ============================================================ */

:root {
  --navy-900:#0F1A36; --navy-800:#16213F; --navy-700:#22315F; --navy-600:#2C3E73;
  --navy-300:#8E9CC2; --navy-200:#C2CADD; --navy-100:#E3E7F1;
  --sky-700:#0E6BA8; --sky-600:#1280BE; --sky-500:#1685C6; --sky-100:#DCEFFA;
  --gold-700:#B8860B; --gold-500:#F6C746; --gold-400:#F8D266; --gold-100:#FEF6E2;
  --paper:#F5F7FB; --mist:#ECEFF6; --cloud:#DEE3EE; --steel:#9AA3B8; --slate:#5C6680;
  --radius-md:12px; --radius-lg:18px; --radius-pill:999px;
  --shadow-sm:0 2px 6px rgba(15,26,54,.08);
  --shadow-md:0 6px 18px rgba(15,26,54,.10);
  --shadow-brand:0 14px 34px rgba(34,49,95,.28);
  --ease-out:cubic-bezier(.16,1,.3,1);
}

/* ---- Helpers ---- */
.lv-eyebrow{
  font-family:var(--wp--preset--font-family--sans),sans-serif;
  font-weight:700; font-size:.75rem; letter-spacing:.12em;
  text-transform:uppercase; color:var(--sky-600); margin:0 0 .4rem;
}
.lv-eyebrow.is-gold{ color:var(--gold-400); }
.lv-display{ font-family:var(--wp--preset--font-family--display),serif; line-height:1.04; letter-spacing:-.01em; }

/* ---- Buttons: block styles (is-style-*) on core/button ---- */
.wp-block-button.is-style-lv-gold > .wp-block-button__link{
  background:var(--gold-500); color:var(--navy-800);
}
.wp-block-button.is-style-lv-gold > .wp-block-button__link:hover{ background:var(--gold-400); }
.wp-block-button.is-style-lv-ghost > .wp-block-button__link{
  background:transparent; color:var(--navy-700); box-shadow:inset 0 0 0 1.5px var(--navy-200);
}
.wp-block-button.is-style-lv-ghost > .wp-block-button__link:hover{ background:var(--navy-100); }
.wp-block-button.is-style-lv-inverse > .wp-block-button__link{
  background:#fff; color:var(--navy-800);
}
.wp-block-button.is-style-lv-inverse > .wp-block-button__link:hover{ background:var(--navy-100); }
.wp-block-button__link{ transition:background .12s ease, transform .12s ease; }
.wp-block-button__link:active{ transform:scale(.97); }

/* ---- Group block styles ---- */
.wp-block-group.is-style-lv-card{
  background:#fff; border:1px solid var(--cloud); border-radius:var(--radius-md);
  box-shadow:var(--shadow-sm);
}
.wp-block-group.is-style-lv-card-invert{
  background:var(--navy-700); color:#fff; border-radius:var(--radius-md);
  box-shadow:var(--shadow-brand);
}
.wp-block-group.is-style-lv-card-invert :is(h1,h2,h3,h4,h5,h6){ color:#fff; }
.wp-block-group.is-style-lv-rail-gold{ border-top:3px solid var(--gold-500); }
.wp-block-group.is-style-lv-rail-sky{ border-top:3px solid var(--sky-500); }

/* ---- Eyebrow as a paragraph style ---- */
.wp-block-paragraph.is-style-lv-eyebrow{
  font-weight:700; font-size:.75rem; letter-spacing:.12em;
  text-transform:uppercase; color:var(--sky-600); margin-bottom:.4rem;
}

/* ============================================================
   PROGRAMMI — griglia card (pattern: programmi)
   ============================================================ */
.lv-program-card{
  position:relative; display:flex; flex-direction:column; gap:.9rem;
  background:#fff; border:1px solid var(--cloud); border-radius:var(--radius-lg);
  padding:1.5rem; box-shadow:var(--shadow-sm);
  transition:box-shadow .2s var(--ease-out), transform .2s var(--ease-out);
  height:100%;
}
.lv-program-card:hover{ box-shadow:var(--shadow-md); transform:translateY(-3px); }
.lv-program-card::before{
  content:""; position:absolute; left:0; right:0; top:0; height:3px;
  border-radius:var(--radius-lg) var(--radius-lg) 0 0; background:var(--sky-500);
}
.lv-program-card.lv-level-intermediate::before{ background:var(--gold-500); }
.lv-program-card.lv-level-advanced::before{ background:var(--navy-700); }
.lv-program-card .lv-badge-row{ display:flex; align-items:center; gap:.5rem; flex-wrap:wrap; }
.lv-chip{
  font-size:.6875rem; font-weight:800; letter-spacing:.08em; text-transform:uppercase;
  padding:.25rem .6rem; border-radius:var(--radius-pill); color:var(--sky-700); background:var(--sky-100);
}
.lv-level-intermediate .lv-chip{ color:var(--gold-700); background:var(--gold-100); }
.lv-level-advanced .lv-chip{ color:var(--navy-700); background:var(--navy-100); }
.lv-program-card .lv-age{ font-size:.75rem; font-weight:700; color:var(--slate); }
.lv-program-card h3{ font-family:var(--wp--preset--font-family--display),serif; font-size:1.6rem; line-height:1.05; margin:0; color:var(--navy-800); }
.lv-program-card .lv-meta{ display:flex; flex-direction:column; gap:.5rem; margin-top:auto; }
.lv-program-card .lv-meta span{ font-size:.875rem; color:var(--slate); }
.lv-program-card .lv-foot{
  display:flex; align-items:flex-end; justify-content:space-between; gap:.75rem;
  padding-top:.9rem; border-top:1px solid var(--mist);
}
.lv-program-card .lv-price{ font-weight:900; font-size:2.25rem; line-height:1; color:var(--navy-700); font-variant-numeric:tabular-nums; }
.lv-program-card .lv-price small{ font-size:.75rem; font-weight:700; color:var(--slate); }
.lv-program-card .lv-spots{ font-size:.6875rem; font-weight:700; color:var(--gold-700); margin-top:.3rem; }
.lv-enroll{
  flex:none; padding:.7rem 1.25rem; font-weight:700; font-size:.875rem; letter-spacing:.04em;
  text-transform:uppercase; color:#fff; background:var(--navy-700); border:none;
  border-radius:var(--radius-pill); cursor:pointer; text-decoration:none; transition:background .12s;
}
.lv-enroll:hover{ background:var(--navy-800); text-decoration:none; }

/* ============================================================
   COACH — card con sfondo astratto
   ============================================================ */
.lv-coach-card{
  background:#fff; border:1px solid var(--cloud); border-radius:var(--radius-md);
  overflow:hidden; box-shadow:var(--shadow-sm);
  transition:box-shadow .2s var(--ease-out), transform .2s var(--ease-out);
}
.lv-coach-card:hover{ box-shadow:var(--shadow-md); transform:translateY(-3px); }
.lv-coach-photo{
  position:relative; aspect-ratio:5/4; background:var(--navy-800) center/cover no-repeat;
  display:flex; align-items:flex-end; justify-content:center;
}
.lv-coach-photo img{ width:100%; height:100%; object-fit:cover; object-position:top center; display:block; }
.lv-coach-photo .lv-silhouette{ width:42%; opacity:.78; margin-bottom:-2px; }
.lv-coach-role{
  position:absolute; top:.75rem; left:.85rem; font-size:.6875rem; font-weight:800;
  letter-spacing:.08em; text-transform:uppercase; padding:.25rem .6rem;
  border-radius:var(--radius-pill); color:var(--navy-800); background:var(--gold-500);
}
.lv-coach-body{ padding:.9rem 1rem 1.1rem; }
.lv-coach-body .lv-name{ font-weight:800; font-size:1.125rem; color:var(--navy-800); line-height:1.1; }
.lv-coach-body .lv-spec{ font-weight:700; font-size:.75rem; color:var(--sky-600); margin-top:.25rem; }
.lv-coach-body .lv-cstat{
  margin-top:.75rem; padding-top:.75rem; border-top:1px solid var(--mist);
  display:flex; align-items:baseline; gap:.5rem;
}
.lv-coach-body .lv-cstat b{ font-weight:900; font-size:1.375rem; color:var(--navy-700); font-variant-numeric:tabular-nums; }
.lv-coach-body .lv-cstat span{ font-size:.6875rem; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--steel); }

/* ============================================================
   ORARIO — righe classi (shortcode [lv_orario] / CPT classe)
   ============================================================ */
.lv-timetable{ display:flex; flex-direction:column; gap:1.5rem; }
.lv-day-group .lv-eyebrow{ margin-bottom:.6rem; }
.lv-classrows{ display:flex; flex-direction:column; gap:.5rem; }
.lv-classrow{
  display:flex; align-items:center; gap:1rem; padding:.75rem 1rem;
  background:#fff; border:1px solid var(--cloud); border-radius:var(--radius-md);
}
.lv-classrow .lv-time{ display:flex; flex-direction:column; align-items:center; width:54px; flex:none; }
.lv-classrow .lv-time .lv-d{ font-weight:700; font-size:.6875rem; letter-spacing:.1em; color:var(--steel); }
.lv-classrow .lv-time .lv-t{ font-weight:900; font-size:1.125rem; line-height:1.1; color:var(--navy-700); font-variant-numeric:tabular-nums; }
.lv-classrow .lv-sep{ width:1px; align-self:stretch; background:var(--mist); }
.lv-classrow .lv-info{ flex:1; min-width:0; }
.lv-classrow .lv-info .lv-title{ font-weight:800; font-size:.875rem; color:var(--navy-800); }
.lv-classrow .lv-info .lv-sub{ display:flex; align-items:center; gap:.5rem; margin-top:.25rem; }
.lv-classrow .lv-info .lv-coach{ font-size:.75rem; color:var(--slate); }
.lv-classrow .lv-info .lv-lvl{
  font-size:.6875rem; font-weight:800; letter-spacing:.06em; text-transform:uppercase;
  padding:.12rem .5rem; border-radius:var(--radius-pill); color:var(--slate); background:var(--mist);
}
.lv-classrow .lv-info .lv-lvl.beginner{ color:var(--sky-700); background:var(--sky-100); }
.lv-classrow .lv-info .lv-lvl.intermediate{ color:var(--gold-700); background:var(--gold-100); }
.lv-classrow .lv-info .lv-lvl.advanced{ color:var(--navy-700); background:var(--navy-100); }
.lv-classrow .lv-end{ flex:none; text-align:right; }
.lv-classrow .lv-spots{ font-size:.75rem; font-weight:700; color:var(--gold-700); }
.lv-classrow .lv-full{ font-size:.75rem; font-weight:800; letter-spacing:.06em; text-transform:uppercase; color:var(--steel); }

/* ============================================================
   STAT band (numeri eroe)
   ============================================================ */
.lv-stat{ display:flex; flex-direction:column; gap:.15rem; }
.lv-stat b{ font-weight:900; font-size:3rem; line-height:1; letter-spacing:-.02em; color:var(--navy-700); font-variant-numeric:tabular-nums; }
.lv-stat.on-navy b{ color:#fff; }
.lv-stat.gold b{ color:var(--gold-500); }
.lv-stat span{ font-weight:700; font-size:.75rem; letter-spacing:.1em; text-transform:uppercase; color:var(--slate); }
.lv-stat.on-navy span{ color:var(--navy-200); }

/* ============================================================
   HERO
   ============================================================ */
.lv-hero{ position:relative; overflow:hidden; }

/* Gold bar — bordo decorativo sinistro via pseudo-elemento (evita HTML non valido nel cover block) */
.lv-hero::before{
  content:""; position:absolute; left:0; top:0; bottom:0;
  width:6px; background:var(--gold-500); z-index:20; pointer-events:none;
}

/* Watermark crest — background-image iniettato da wp_head (URL dinamico del tema) */
.lv-hero::after{
  content:""; position:absolute;
  right:-120px; top:50%; transform:translateY(-50%);
  width:620px; height:620px;
  background:center/contain no-repeat;
  opacity:.06; pointer-events:none; z-index:2;
}

/* Il contenuto dell'hero deve stare sopra il watermark */
.lv-hero .wp-block-cover__inner-container{ position:relative; z-index:3 !important; }

/* Badge pill (gold) used in hero / page headers */
.lv-pill-badge{
  display:inline-block; font-size:.75rem; font-weight:800; letter-spacing:.08em;
  text-transform:uppercase; padding:.4rem .8rem; border-radius:var(--radius-pill);
  background:var(--gold-500); color:var(--navy-800);
}

/* ---- Sezioni full-width: nessun margine esterno, zero gap tra sezioni ---- */
.wp-block-post-content > .alignfull{
  margin-top:0 !important;
  margin-bottom:0 !important;
}

/* Responsive niceties */
@media (max-width:781px){
  .lv-hero::after{ width:380px; height:380px; right:-90px; opacity:.05; }
}

/* Reduce motion */
@media (prefers-reduced-motion: reduce){
  .lv-program-card, .lv-coach-card, .wp-block-button__link{ transition:none; }
}

/* ============================================================
   COACH — griglia da shortcode [lv_coach]
   ============================================================ */
.lv-coach-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:1.5rem; }
@media (max-width:1024px){ .lv-coach-grid{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:560px){ .lv-coach-grid{ grid-template-columns:1fr; } }

/* ============================================================
   QUOTA / PREZZI — card piano
   ============================================================ */
.lv-price-card{
  position:relative; display:flex; flex-direction:column; gap:.7rem;
  background:#fff; border:1px solid var(--cloud); border-radius:var(--radius-lg);
  padding:1.75rem 1.5rem; box-shadow:var(--shadow-sm); height:100%;
}
.lv-price-card.featured{ background:var(--navy-700); color:#fff; border-color:var(--navy-600); box-shadow:var(--shadow-brand); }
.lv-price-card .lv-plan{ font-size:.6875rem; font-weight:800; letter-spacing:.1em; text-transform:uppercase; color:var(--sky-600); }
.lv-price-card.featured .lv-plan{ color:var(--gold-400); }
.lv-price-card .lv-amount{ font-weight:900; font-size:3rem; line-height:1; color:var(--navy-700); font-variant-numeric:tabular-nums; }
.lv-price-card.featured .lv-amount{ color:var(--gold-500); }
.lv-price-card .lv-amount small{ font-size:.95rem; font-weight:700; color:var(--slate); }
.lv-price-card.featured .lv-amount small{ color:var(--navy-200); }
.lv-price-card .lv-note{ font-size:.875rem; line-height:1.5; color:var(--slate); }
.lv-price-card.featured .lv-note{ color:var(--navy-200); }
.lv-price-card .lv-enroll{ margin-top:auto; text-align:center; }
.lv-price-badge{
  position:absolute; top:1rem; right:1rem; font-size:.625rem; font-weight:800;
  letter-spacing:.08em; text-transform:uppercase; padding:.25rem .6rem;
  border-radius:var(--radius-pill); background:var(--gold-500); color:var(--navy-800);
}

/* ============================================================
   SLIDER — meccanismo condiviso (galleria + eventi)
   ============================================================ */
.lv-slider-wrap{ position:relative; }

.lv-slider-track{
  display:flex;
  overflow-x:auto;
  scroll-snap-type:x mandatory;
  scroll-behavior:smooth;
  gap:1.25rem;
  -webkit-overflow-scrolling:touch;
  scrollbar-width:none;
}
.lv-slider-track::-webkit-scrollbar{ display:none; }

.lv-slider-nav{
  display:flex; gap:.5rem; justify-content:flex-end;
  margin-top:1rem;
  padding-inline:var(--wp--preset--spacing--40, 1.5rem);
}

.lv-slider-prev,
.lv-slider-next{
  display:flex; align-items:center; justify-content:center;
  width:42px; height:42px; border-radius:50%;
  background:var(--navy-700); color:#fff; border:none; cursor:pointer;
  transition:background .12s;
}
.lv-slider-prev:hover,.lv-slider-next:hover{ background:var(--navy-800); }
.lv-slider-prev:disabled,.lv-slider-next:disabled{ background:var(--cloud); color:var(--steel); cursor:default; }

/* ============================================================
   GALLERIA — carosello foto + lightbox
   ============================================================ */
.lv-gallery-track{
  padding-inline:var(--wp--preset--spacing--40, 1.5rem);
}

.lv-gallery-item{
  flex:0 0 clamp(220px, 30vw, 360px);
  scroll-snap-align:start;
  aspect-ratio:3/2;
  border-radius:var(--radius-lg);
  overflow:hidden;
  position:relative;
  cursor:pointer;
  background:var(--mist);
}
.lv-gallery-item img{
  width:100%; height:100%; object-fit:cover; display:block;
  transition:transform .35s var(--ease-out);
}
.lv-gallery-item:hover img{ transform:scale(1.05); }
.lv-gallery-item:focus-visible{ outline:3px solid var(--sky-500); outline-offset:2px; }

.lv-gallery-caption{
  position:absolute; bottom:0; left:0; right:0;
  padding:.45rem .75rem;
  background:linear-gradient(transparent, rgba(15,26,54,.72));
  color:#fff; font-size:.75rem; font-weight:700;
}

/* Lightbox */
#lv-lightbox{
  display:none; position:fixed; inset:0; z-index:9999;
  align-items:center; justify-content:center;
}
#lv-lightbox.is-open{ display:flex; }

.lv-lb-backdrop{
  position:absolute; inset:0;
  background:rgba(10,14,28,.92);
}
.lv-lb-img{
  position:relative; z-index:1;
  max-width:90vw; max-height:88vh;
  object-fit:contain; border-radius:var(--radius-md);
  box-shadow:0 24px 64px rgba(0,0,0,.6);
}
.lv-lb-close,
.lv-lb-prev,
.lv-lb-next{
  position:absolute; z-index:2;
  width:48px; height:48px; border-radius:50%; border:none;
  background:rgba(255,255,255,.14); color:#fff; cursor:pointer;
  display:flex; align-items:center; justify-content:center;
  font-size:1.75rem; line-height:1;
  transition:background .12s;
}
.lv-lb-close:hover,.lv-lb-prev:hover,.lv-lb-next:hover{ background:rgba(255,255,255,.28); }
.lv-lb-close{ top:1rem; right:1rem; font-size:1.25rem; }
.lv-lb-prev { left:1rem; top:50%; transform:translateY(-50%); }
.lv-lb-next { right:1rem; top:50%; transform:translateY(-50%); }

/* ============================================================
   EVENTI — slider card verticali 4:5
   ============================================================ */
.lv-eventi-track{
  padding-inline:var(--wp--preset--spacing--40, 1.5rem);
  align-items:stretch;
}

.lv-eventi-track .lv-slider-item{
  flex:0 0 clamp(190px, 22vw, 270px);
  scroll-snap-align:start;
}

.lv-evento-card{
  display:block; width:100%; aspect-ratio:4/5;
  border-radius:var(--radius-lg); overflow:hidden; position:relative;
  background:var(--navy-800) center/cover no-repeat;
  text-decoration:none;
  box-shadow:var(--shadow-md);
  transition:transform .2s var(--ease-out), box-shadow .2s var(--ease-out);
}
.lv-evento-card:hover{
  transform:translateY(-4px);
  box-shadow:var(--shadow-brand);
  text-decoration:none;
}

/* Gradiente per leggibilità testo */
.lv-evento-card::before{
  content:""; position:absolute; inset:0; z-index:1;
  background:linear-gradient(
    to bottom,
    rgba(15,26,54,.38) 0%,
    transparent 38%,
    transparent 52%,
    rgba(15,26,54,.88) 100%
  );
}

.lv-evento-date{
  position:absolute; top:.85rem; left:.85rem; z-index:2;
  font-size:.6rem; font-weight:800; letter-spacing:.12em; text-transform:uppercase;
  padding:.28rem .6rem; border-radius:var(--radius-pill);
  background:var(--gold-500); color:var(--navy-800);
}

.lv-evento-body{
  position:absolute; bottom:0; left:0; right:0; z-index:2;
  padding:.9rem 1rem 1rem;
}
.lv-evento-title{
  font-family:var(--wp--preset--font-family--display),serif;
  font-size:1.1rem; line-height:1.15; color:#fff; font-weight:400;
  margin-bottom:.3rem;
}
.lv-evento-luogo{
  display:flex; align-items:center; gap:.3rem;
  font-size:.6875rem; font-weight:700; color:var(--navy-200);
  letter-spacing:.02em;
}

@media (max-width:600px){
  .lv-gallery-item{ flex-basis:clamp(200px,78vw,320px); }
  .lv-eventi-track .lv-slider-item{ flex-basis:clamp(170px,64vw,240px); }
}

/* ============================================================
   FORM — stili condivisi (contatti + prova gratuita)
   ============================================================ */
.lv-form .lv-field-grid{ display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.lv-form label{ display:flex; flex-direction:column; gap:6px; font-size:.75rem; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:var(--slate); }
.lv-form .lv-field-full{ grid-column:1 / -1; }
.lv-form input,
.lv-form select,
.lv-form textarea{ font:400 1rem/1.4 Montserrat,sans-serif; color:var(--navy-800); padding:11px 14px; border:1.5px solid var(--cloud); border-radius:8px; background:#fff; width:100%; box-sizing:border-box; }
.lv-form input:focus,
.lv-form select:focus,
.lv-form textarea:focus{ outline:none; border-color:var(--sky-500); box-shadow:0 0 0 3px rgba(22,133,198,.25); }
.lv-form .lv-form-submit{ margin-top:18px; border:none; display:inline-block; width:100%; text-align:center; cursor:pointer; }
.lv-form .lv-form-submit:disabled{ opacity:.65; cursor:not-allowed; }
.lv-form-feedback{ margin-top:12px; padding:10px 14px; border-radius:8px; font-size:.875rem; font-weight:600; display:none; }
.lv-form-feedback.lv-form-success{ display:block; background:#DCFCE7; color:#166534; }
.lv-form-feedback.lv-form-error{ display:block; background:#FEE2E2; color:#991B1B; }
@media (max-width:600px){ .lv-form .lv-field-grid{ grid-template-columns:1fr; } }

/* ============================================================
   CONTATTI — lista info + mappa
   ============================================================ */
.lv-contact-list{ display:flex; flex-direction:column; gap:1.1rem; margin-top:1.5rem; }
.lv-contact-item{ display:flex; gap:.85rem; align-items:flex-start; }
.lv-contact-item .lv-ci-icon{
  flex:none; width:44px; height:44px; border-radius:var(--radius-md);
  background:var(--navy-100); color:var(--navy-700);
  display:flex; align-items:center; justify-content:center;
}
.lv-contact-item .lv-ci-text{ font-size:1rem; line-height:1.45; color:var(--navy-800); font-weight:600; }
.lv-contact-item .lv-ci-text a{ color:var(--navy-800); text-decoration:none; font-weight:700; }
.lv-contact-item .lv-ci-text a:hover{ color:var(--sky-600); }
.lv-contact-item .lv-ci-label{
  display:block; font-size:.6875rem; font-weight:800; letter-spacing:.1em;
  text-transform:uppercase; color:var(--steel); margin-bottom:3px;
}
.lv-map{
  position:relative; width:100%; aspect-ratio:16/7; border-radius:var(--radius-md);
  overflow:hidden; border:1px solid var(--cloud); box-shadow:var(--shadow-sm);
}
.lv-map iframe{ position:absolute; inset:0; width:100%; height:100%; border:0; }
@media (max-width:600px){ .lv-map{ aspect-ratio:4/3; } }
