/* Caratteri ospitati sul sito: nessuna richiesta a Google Fonts */
@font-face{ font-family:'Cormorant Garamond'; font-style:normal; font-weight:500; font-display:swap; src:url('fonts/cormorant-garamond-500.woff2') format('woff2'); }
@font-face{ font-family:'Poppins'; font-style:normal; font-weight:200; font-display:swap; src:url('fonts/poppins-200.woff2') format('woff2'); }
@font-face{ font-family:'Poppins'; font-style:normal; font-weight:300; font-display:swap; src:url('fonts/poppins-300.woff2') format('woff2'); }

:root{
  --midnight: #171E28;
  --champagne: #D1B894;
  --panna: #F2EDE4;
  --warm: #FBF9F5;
  --placeholder: #E5DED3;
  --border: rgba(23,30,40,.15);

  --font-display: 'Cormorant Garamond', Georgia, serif;
  --font-sans: 'Poppins', system-ui, sans-serif;
}

*,*::before,*::after{ box-sizing:border-box; }
html{ scroll-behavior:smooth; }
body{
  margin:0; background:var(--panna); color:var(--midnight);
  font-family:var(--font-sans); font-weight:300; -webkit-font-smoothing:antialiased;
}
a{ color:inherit; text-decoration:none; }
p,h1,h2,h3{ margin:0; }
button{ font:inherit; color:inherit; background:none; border:0; cursor:pointer; padding:0; }

.wrap{ max-width:80rem; margin-inline:auto; padding-inline:1.5rem; }
@media (min-width:768px){ .wrap{ padding-inline:2.5rem; } }

.display{ font-family:var(--font-display); font-weight:500; }
.label{ text-transform:uppercase; letter-spacing:.18em; font-size:.75rem; font-weight:200; }
.prose{ font-size:1rem; font-weight:300; line-height:1.7; }
@media (min-width:768px){ .prose{ font-size:1.0625rem; } }

.bg-midnight{ background:var(--midnight); }
.bg-panna{ background:var(--panna); }
.bg-warm{ background:var(--warm); }
.bg-champagne{ background:var(--champagne); color:var(--midnight); }
.t-champagne{ color:var(--champagne); }
.t-panna{ color:var(--panna); }

.pad{ padding-block:8rem; }
.pad-b{ padding-bottom:8rem; }
@media (min-width:768px){ .pad{ padding-block:12rem; } .pad-b{ padding-bottom:12rem; } }

/* ---------- Buttons & links ---------- */
.btn{
  display:inline-flex; align-items:center; justify-content:center;
  text-transform:uppercase; letter-spacing:.18em; font-size:.72rem; font-weight:200;
  padding:.9rem 1.6rem; border:1px solid;
  background-image:linear-gradient(var(--btn-fill), var(--btn-fill));
  background-repeat:no-repeat; background-size:0% 100%;
  transition:background-size .4s, color .4s;
}
.btn:hover{ color:var(--btn-ink); background-size:100% 100%; }
.btn-dark{ color:var(--champagne); --btn-fill:var(--champagne); --btn-ink:var(--midnight); }
.btn-light{ color:var(--midnight); --btn-fill:var(--midnight); --btn-ink:var(--champagne); }
.btn .arrow{ margin-left:.75rem; }

.action{
  position:relative; display:inline-flex; align-items:center; gap:.6em; padding-bottom:6px;
  text-transform:uppercase; letter-spacing:.18em; font-size:.75rem; font-weight:200;
}
.action::after{
  content:""; position:absolute; left:0; bottom:0; width:40%; height:1px;
  background:currentColor; transition:width .5s;
}
.action:hover::after{ width:100%; }

/* ---------- Announce / header ---------- */
.announce{
  position:relative; z-index:50; display:block; width:100%;
  padding:.625rem 0; text-align:center; font-size:.62rem;
  background:var(--midnight); color:var(--champagne);
}
.site-header{
  position:sticky; top:0; z-index:40; height:72px; margin-bottom:-72px;
  background:transparent; transition:background-color .7s;
}
.site-header.scrolled{ background:var(--midnight); }
.site-header .wrap{ height:100%; display:flex; align-items:center; justify-content:space-between; }
.logo{ font-family:var(--font-display); font-weight:500; text-transform:uppercase; letter-spacing:.35em; color:var(--champagne); font-size:1.25rem; }
.head-right{ display:flex; align-items:center; gap:1.5rem; color:var(--champagne); }
.head-right .btn{ padding:.625rem 1.25rem; display:none; }
@media (min-width:768px){ .head-right .btn{ display:inline-flex; } }
.burger{ width:2rem; height:2rem; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:7px; }
.burger span{ display:block; width:1.5rem; height:1px; background:var(--champagne); transition:transform .4s; }
.menu-open .burger span:first-child{ transform:translateY(4px) rotate(45deg); }
.menu-open .burger span:last-child{ transform:translateY(-4px) rotate(-45deg); }

.menu{
  position:fixed; inset:0; z-index:35; background:var(--midnight); color:var(--panna);
  display:flex; flex-direction:column; justify-content:center;
  opacity:0; pointer-events:none; transition:opacity .6s;
}
.menu-open .menu{ opacity:1; pointer-events:auto; }
.menu .wrap{ width:100%; }
.menu ul{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:1rem; }
.menu a{ font-family:var(--font-display); font-size:clamp(2.2rem,6vw,4rem); line-height:1.1; transition:color .5s; }
.menu a:hover{ color:var(--champagne); }
.menu .label{ color:var(--champagne); margin-top:3rem; display:block; }
body.menu-open{ overflow:hidden; }

.mobile-cta{
  position:fixed; inset-inline:0; bottom:0; z-index:40; height:3.5rem;
  display:flex; align-items:center; justify-content:center;
  background:var(--midnight); color:var(--champagne);
  border-top:1px solid color-mix(in srgb, var(--champagne) 30%, transparent);
}
@media (min-width:768px){ .mobile-cta{ display:none; } }

/* ---------- Hero ---------- */
.hero{
  position:relative; height:100svh; display:flex; align-items:center; justify-content:center;
  overflow:hidden; background:var(--midnight);
}
.hero-bg{ position:absolute; inset:0; }
.blob{ position:absolute; border-radius:9999px; filter:blur(80px); will-change:transform; }
.blob-a{
  width:60vmax; height:60vmax; top:-20%; left:-10%;
  background:radial-gradient(circle, rgba(209,184,148,.12), transparent 65%);
  animation:drift-a 26s ease-in-out infinite;
}
.blob-b{
  width:50vmax; height:50vmax; bottom:-20%; right:-10%;
  background:radial-gradient(circle, rgba(242,237,228,.08), transparent 65%);
  animation:drift-b 30s ease-in-out infinite;
}
.blob-c{
  width:40vmax; height:40vmax; top:30%; left:30%;
  background:radial-gradient(circle, rgba(209,184,148,.07), transparent 65%);
  animation:drift-c 22s ease-in-out infinite;
}
.grain{
  position:absolute; inset:0; opacity:.035; pointer-events:none;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='200' height='200'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3' stitchTiles='stitch'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");
}
.hero-center{ position:relative; text-align:center; }
.hero-title{
  font-family:var(--font-display); font-weight:500; text-transform:uppercase; line-height:1;
  font-size:clamp(72px,16vw,180px); color:var(--panna);
  letter-spacing:.35em; padding-left:.35em;
  animation:nore-in 1.5s ease-out both;
}
.hero-sub{
  margin-top:2rem; padding-left:.4em; color:var(--champagne);
  font-size:.75rem; font-weight:200; text-transform:uppercase; letter-spacing:.4em; line-height:2;
  animation:slow-fade 1.2s ease-out .8s both;
}
@media (min-width:768px){ .hero-sub{ font-size:.875rem; } }
.scroll-line{
  position:absolute; left:50%; bottom:6rem; width:1px; height:3.5rem; background:var(--champagne);
  transform-origin:top; animation:pulse-line 3s ease-in-out infinite;
}
@media (min-width:768px){ .scroll-line{ bottom:2.5rem; } }

@keyframes drift-a{ 0%,100%{ transform:translate(-10%,-5%); } 50%{ transform:translate(15%,10%); } }
@keyframes drift-b{ 0%,100%{ transform:translate(10%,10%); } 50%{ transform:translate(-15%,-8%); } }
@keyframes drift-c{ 0%,100%{ transform:translateY(15%); } 50%{ transform:translate(8%,-12%); } }
@keyframes nore-in{ from{ opacity:0; letter-spacing:.1em; } to{ opacity:1; letter-spacing:.35em; } }
@keyframes slow-fade{ from{ opacity:0; } to{ opacity:1; } }
@keyframes pulse-line{ 0%,100%{ opacity:.25; transform:scaleY(.6); } 50%{ opacity:1; transform:scaleY(1); } }

/* ---------- Sections ---------- */
.intro{ max-width:900px; font-size:22px; font-weight:300; text-transform:uppercase; line-height:1.5; }
@media (min-width:768px){ .intro{ font-size:clamp(28px,3vw,40px); } }

.why{ display:grid; gap:2rem; border-top:1px solid var(--border); padding-top:4rem; }
.why .display{ font-size:28px; line-height:1.375; }
@media (min-width:768px){
  .why{ grid-template-columns:4fr 8fr; }
  .why .display{ font-size:36px; }
}

.photo{ background:var(--placeholder) center/cover no-repeat; display:flex; align-items:center; justify-content:center; color:var(--midnight); }
.photo > .label{ font-size:.65rem; position:relative; z-index:0; }

.duo{ display:grid; }
@media (min-width:768px){ .duo{ grid-template-columns:1fr 1fr; } }
.duo-item{ position:relative; aspect-ratio:4/5; overflow:hidden; }
.duo-item .photo{ position:absolute; inset:0; transition:transform 1.2s ease; }
.duo-item:hover .photo{ transform:scale(1.03); }
.duo-cap{
  position:absolute; inset-inline:0; bottom:0; padding:8rem 1.5rem 1.5rem; color:var(--panna);
  background:linear-gradient(to top, rgba(23,30,40,.8), rgba(23,30,40,.3), transparent);
}
.duo-cap .prose{ margin-top:.75rem; max-width:24rem; }
@media (min-width:768px){ .duo-cap{ padding:10rem 2.5rem 2.5rem; } }
.center-link{ margin-top:4rem; text-align:center; }

.cycle h2{ margin-top:2rem; font-size:3rem; line-height:1.25; }
@media (min-width:768px){ .cycle h2{ font-size:4.5rem; } }
.cycle .prose{ margin-top:2rem; max-width:36rem; }
.cycle-track{ margin-top:5rem; }
.cycle-h{ display:none; }
.cycle-h .nums{ display:flex; justify-content:space-between; font-size:2.25rem; }
.cycle-h .bar{ position:relative; margin-top:1.5rem; height:1px; background:var(--border); }
.cycle-h .fill{ position:absolute; inset:0; background:var(--midnight); transform-origin:left; transform:scaleX(0); transition:transform 2.5s ease-in-out; }
.cycle-v{ position:relative; padding-left:2rem; }
.cycle-v .bar{ position:absolute; left:0; top:0; bottom:0; width:1px; background:var(--border); }
.cycle-v .fill{ position:absolute; inset:0; background:var(--midnight); transform-origin:top; transform:scaleY(0); transition:transform 2.5s ease-in-out; }
.cycle-v .nums{ display:flex; flex-direction:column; gap:1.25rem; font-size:1.875rem; }
.is-visible .fill{ transform:none; }
@media (min-width:768px){ .cycle-h{ display:block; } .cycle-v{ display:none; } }
.cycle .after{ margin-top:4rem; }

.studio-grid{ display:grid; gap:4rem; }
.studio-grid .display{ margin-top:2rem; font-size:28px; line-height:1.375; color:var(--panna); }
.studio-grid .action{ margin-top:3rem; color:var(--champagne); }
.studio-pics{ display:grid; grid-template-columns:repeat(2, minmax(0,1fr)); gap:1rem; }
.studio-pics .photo{ aspect-ratio:3/4; }
@media (min-width:768px){
  .studio-grid{ grid-template-columns:minmax(0,5fr) minmax(0,7fr); align-items:end; }
  .studio-pics .photo:last-child{ margin-top:4rem; }
  .studio-grid .display{ font-size:36px; }
}

.offer .prose{ margin-top:1.5rem; max-width:32rem; }
.offer-list{ margin-top:4rem; border-top:1px solid var(--midnight); }
.offer-row{
  display:grid; grid-template-columns:1fr auto; column-gap:1.5rem; row-gap:.5rem;
  padding-block:2rem; border-bottom:1px solid var(--midnight);
}
.offer-row .display{ font-size:1.875rem; }
.offer-row .prose{ grid-column:span 2; margin:0; }
@media (min-width:768px){
  .offer-row{ grid-template-columns:5fr 5fr 2fr; align-items:baseline; }
  .offer-row .display{ font-size:2.25rem; }
  .offer-row .prose{ grid-column:auto; }
  .offer-row .price{ order:3; text-align:right; }
}
.offer .btn{ margin-top:3.5rem; }
.offer-foot{
  margin-top:5rem; padding-top:1.5rem; border-top:1px solid var(--midnight);
  display:flex; flex-direction:column; gap:1rem;
}
.offer-foot .label{ font-size:.65rem; line-height:1.625; }
@media (min-width:768px){ .offer-foot{ flex-direction:row; align-items:center; justify-content:space-between; } }

.team-line{ display:flex; flex-direction:column; align-items:center; gap:2rem; text-align:center; }
.team-line .display{ font-size:2.25rem; }
@media (min-width:768px){ .team-line{ flex-direction:row; justify-content:center; gap:3rem; } .team-line .display{ font-size:3rem; } }
.pad-team{ padding-block:8rem; }
@media (min-width:768px){ .pad-team{ padding-block:11rem; } }

.carousel{ position:relative; }
.carousel-viewport{ overflow-x:auto; scroll-snap-type:x mandatory; scrollbar-width:none; padding-inline:1.5rem; }
.carousel-viewport::-webkit-scrollbar{ display:none; }
@media (min-width:768px){ .carousel-viewport{ padding-inline:2.5rem; } }
.carousel-track{ display:flex; gap:1rem; }
.carousel-track .photo{ flex:none; aspect-ratio:3/4; width:70vw; scroll-snap-align:start; }
@media (min-width:640px){ .carousel-track .photo{ width:40vw; } }
@media (min-width:768px){ .carousel-track .photo{ width:26vw; } }
.carousel-btn{
  position:absolute; top:50%; transform:translateY(-50%);
  width:3rem; height:3rem; display:none; align-items:center; justify-content:center;
  background:rgba(242,237,228,.8); font-size:1.25rem; font-weight:200;
}
.carousel-btn.prev{ left:.5rem; }
.carousel-btn.next{ right:.5rem; }
@media (min-width:768px){ .carousel-btn{ display:flex; } }

/* ---------- Prenota ---------- */
.site-header.solid{ background:var(--midnight); margin-bottom:0; }
.booking{ padding:80px 0 6rem; }
.booking-wrap{ max-width:64rem; }
.booking h1{ font-size:3rem; }
@media (min-width:768px){ .booking h1{ font-size:4.5rem; } }
.booking .prose{ margin-top:1.5rem; }
.booking-widget{ position:relative; margin-top:3.5rem; padding-inline:1.5rem; }
@media (min-width:768px){ .booking-widget{ padding-inline:2.5rem; } }
@media (max-width:600px){ .booking-widget{ padding-inline:0; } }
.booking-loading{ position:absolute; inset-inline:0; top:2.5rem; text-align:center; pointer-events:none; }
.booking-frame{ min-height:700px; width:100%; background:var(--warm); }
/* Correzioni al widget bsport (classi bs-*) */
/* Ogni giorno della settimana ha una larghezza minima: se non c'è spazio, il calendario scorre di lato */
.booking-frame[id*="bsport-widget"] .cleanslate .bs-week-card{
  overflow-x:auto !important; -webkit-overflow-scrolling:touch;
  padding-bottom:1.75rem !important; /* la barra di scorrimento sta sotto le lezioni, non sopra */
}
.booking-frame[id*="bsport-widget"] .cleanslate .bs-week-card,
.booking-frame[id*="bsport-widget"] .cleanslate .bs-week__cardMode__sessionsGroup__inner{
  grid-template-columns:repeat(7, minmax(170px, 1fr)) !important;
}
@media (max-width:600px){
  .booking-frame[id*="bsport-widget"] .cleanslate .bs-marketplace-filters__list{
    flex-wrap:wrap !important; justify-content:center !important; overflow:visible !important;
    gap:.5rem !important; padding-inline:.75rem !important;
  }
  .booking-frame[id*="bsport-widget"] .cleanslate .bs-calendar-search__container{
    min-width:0 !important; width:100% !important; flex:1 1 100% !important; margin:0 !important;
  }
}

/* ---------- Contatti ---------- */
.contact-grid{ display:grid; gap:4rem; }
@media (min-width:900px){ .contact-grid{ grid-template-columns:5fr 7fr; gap:6rem; } }
.contact-grid h2{ margin-top:2rem; font-size:3rem; line-height:1.1; }
@media (min-width:768px){ .contact-grid h2{ font-size:4.5rem; } }
.contact-grid > div > .prose{ margin-top:1.5rem; max-width:28rem; }
.contact-direct{ list-style:none; padding:0; margin-top:2.5rem !important; display:flex; flex-direction:column; gap:.25rem; }
.contact-direct a{ display:inline-block; padding-block:.35rem; }
.contact-direct a:hover{ color:var(--champagne); }

.contact-form{ display:flex; flex-direction:column; gap:2rem; }
.field{ display:flex; flex-direction:column; gap:.6rem; flex:1; }
.field .label span{ text-transform:none; letter-spacing:0; opacity:.6; }
.field-row{ display:flex; flex-direction:column; gap:2rem; }
@media (min-width:640px){ .field-row{ flex-direction:row; } }
.contact-form input, .contact-form select, .contact-form textarea{
  font:inherit; font-size:1rem; font-weight:300; color:var(--midnight);
  background:transparent; border:0; border-bottom:1px solid var(--midnight); border-radius:0;
  padding:.5rem 0; outline:none; transition:border-color .3s;
}
.contact-form select{ appearance:none; cursor:pointer;
  background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8'><path d='M1 1l5 5 5-5' fill='none' stroke='%23171E28'/></svg>") no-repeat right center; }
.contact-form textarea{ resize:vertical; min-height:6rem; }
.contact-form input:focus, .contact-form select:focus, .contact-form textarea:focus{ border-color:var(--champagne); }
.contact-form.tried :invalid{ border-color:#A4503A; }
.consent{ display:flex; gap:.75rem; align-items:flex-start; font-size:.9rem; cursor:pointer; }
.consent input{ width:1.25rem; height:1.25rem; margin-top:.2rem; flex:none; accent-color:var(--midnight); }
.consent a{ text-decoration:underline; text-underline-offset:3px; }
.contact-form.tried .consent input:invalid + span{ color:#A4503A; }
.contact-form .btn{ align-self:flex-start; }
.form-status{ min-height:1.5em; font-size:.9rem; margin:0; }
.hp{ position:absolute; left:-9999px; width:1px; height:1px; opacity:0; }

/* ---------- Pagine legali ---------- */
.legal{ padding:80px 0 8rem; }
.legal-wrap{ max-width:48rem; }
.legal h1{ margin-top:1.5rem; font-size:3rem; line-height:1.1; }
@media (min-width:768px){ .legal h1{ font-size:4.5rem; } }
.legal-lede{ margin-top:1.5rem; }
.legal h2{ margin-top:3.5rem; padding-top:1.5rem; border-top:1px solid var(--border); font-size:1.75rem; }
.legal .prose{ margin-top:1rem; }
.legal ul{ padding-left:1.1rem; display:flex; flex-direction:column; gap:.6rem; }
.legal strong{ font-weight:300; color:var(--midnight); text-decoration:underline; text-decoration-color:var(--champagne); text-underline-offset:4px; }
.legal a{ text-decoration:underline; text-underline-offset:3px; }
.legal-table{ margin-top:1.5rem; overflow-x:auto; }
.legal table{ width:100%; min-width:36rem; border-collapse:collapse; font-size:.88rem; }
.legal th{ text-align:left; text-transform:uppercase; letter-spacing:.14em; font-size:.65rem; font-weight:200; padding:.75rem .75rem .75rem 0; border-bottom:1px solid var(--midnight); }
.legal td{ padding:.85rem .75rem .85rem 0; border-bottom:1px solid var(--border); vertical-align:top; }
.legal td:first-child{ font-family:ui-monospace, SFMono-Regular, Menlo, monospace; font-size:.78rem; }

/* ---------- Footer ---------- */
footer{ background:var(--midnight); color:var(--panna); padding:6rem 0 5rem; }
@media (min-width:768px){ footer{ padding-bottom:2.5rem; } }
footer .logo{ font-size:3rem; }
@media (min-width:768px){ footer .logo{ font-size:4.5rem; } }
.foot-grid{ margin-top:4rem; display:grid; gap:3rem; }
@media (min-width:768px){ .foot-grid{ grid-template-columns:repeat(3,1fr); } }
.foot-grid ul{ list-style:none; margin:1.25rem 0 0; padding:0; display:flex; flex-direction:column; gap:.25rem; }
.foot-grid a{ transition:color .5s; }
.foot-grid a:hover{ color:var(--champagne); }
.foot-bottom{
  margin-top:5rem; padding-top:1.5rem; border-top:1px solid var(--champagne);
  display:flex; flex-direction:column; gap:1rem; font-size:.62rem;
}
.foot-bottom div{ display:flex; flex-wrap:wrap; gap:.75rem 2rem; }
.foot-bottom a{ white-space:nowrap; }
.foot-bottom a:hover{ color:var(--champagne); }
@media (min-width:768px){ .foot-bottom{ flex-direction:row; justify-content:space-between; } }

.foot-credit{ margin-top:1.25rem; text-align:right; font-size:.62rem; }
.foot-credit a{ display:inline-flex; align-items:center; gap:.75rem; }
.foot-credit a span{ opacity:.6; transition:opacity .5s, color .5s; }
.foot-credit a span{ text-decoration:underline; text-decoration-color:transparent; text-underline-offset:4px; transition:opacity .5s, color .5s, text-decoration-color .5s; }
.foot-credit a:hover span, .foot-credit a:focus-visible span{ opacity:1; color:var(--champagne); text-decoration-color:currentColor; }

/* ---------- Reveal ---------- */
.reveal{ opacity:0; transform:translateY(16px); transition:opacity .8s, transform .8s; }
.reveal.is-visible{ opacity:1; transform:none; }

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{ transition:none !important; animation:none !important; }
  .reveal{ opacity:1; transform:none; }
  .fill{ transform:none !important; }
  html{ scroll-behavior:auto; }
}
