/*
Theme Name: CrossFit Avanguardia
Theme URI: https://crossfitavanguardia.com
Author: CrossFit Avanguardia
Description: Tema personalizzato per CrossFit Avanguardia — Milano. Palette calda, fotografie reali, contenuti modificabili nell'editor a blocchi di WordPress.
Version: 50.0.0
Requires at least: 6.1
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: crossfit-avanguardia
*/

:root,[data-theme="light"]{
  --color-bg:#f5f2ec;--color-surface:#efeae1;--color-surface-2:#e8e2d7;
  --color-surface-offset:#e0d9cc;--color-surface-dark:#1b1a17;
  --color-divider:oklch(0.28 0.01 60 / 0.09);--color-border:oklch(0.28 0.01 60 / 0.13);
  --color-text:#22201c;--color-text-muted:#5f5a51;--color-text-faint:#9c968b;
  --color-text-inverse:#ffffff;--color-primary:#d8562f;
  --color-primary-hover:#bf4826;--color-primary-active:#a13e21;--color-primary-light:#f6ebe3;
  --font-display:'Barlow Condensed','Arial Narrow',sans-serif;
  --font-body:'Barlow','Helvetica Neue',sans-serif;
  --text-xs:clamp(0.75rem,0.7rem + 0.25vw,0.875rem);
  --text-sm:clamp(0.875rem,0.8rem + 0.35vw,1rem);
  --text-base:clamp(1rem,0.95rem + 0.25vw,1.125rem);
  --text-lg:clamp(1.125rem,1rem + 0.75vw,1.5rem);
  --text-xl:clamp(1.5rem,1.2rem + 1.25vw,2.25rem);
  --text-2xl:clamp(1.75rem,1.2rem + 1.9vw,2.75rem);
  --text-3xl:clamp(2.1rem,1.2rem + 2.6vw,3.5rem);
  --text-hero:clamp(2.75rem,1.4rem + 4.4vw,5rem);
  --space-1:0.25rem;--space-2:0.5rem;--space-3:0.75rem;--space-4:1rem;
  --space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;
  --space-12:3rem;--space-16:4rem;--space-20:5rem;--space-24:6rem;
  --radius-sm:0.25rem;--radius-md:0.375rem;--radius-lg:0.5rem;
  --radius-xl:0.75rem;--radius-full:9999px;
  --shadow-sm:0 1px 3px oklch(0.1 0 0 / 0.08);
  --shadow-md:0 4px 12px oklch(0.1 0 0 / 0.10);
  --shadow-lg:0 12px 32px oklch(0.1 0 0 / 0.14);
  --transition:180ms cubic-bezier(0.16,1,0.3,1);
  --content-narrow:640px;--content-default:960px;--content-wide:1200px;
}
[data-theme="dark"]{
  --color-bg:#17150f;--color-surface:#201d17;--color-surface-2:#28241d;
  --color-surface-offset:#302b23;--color-surface-dark:#100e0a;
  --color-divider:oklch(1 0 0 / 0.07);--color-border:oklch(1 0 0 / 0.10);
  --color-text:#ece8e1;--color-text-muted:#9a938a;--color-text-faint:#544f47;
  --color-text-inverse:#17150f;--color-primary:#e0724c;
  --color-primary-hover:#ec8663;--color-primary-active:#d8562f;--color-primary-light:#2c1810;
  --shadow-sm:0 1px 3px oklch(0 0 0 / 0.3);
  --shadow-md:0 4px 12px oklch(0 0 0 / 0.4);
  --shadow-lg:0 12px 32px oklch(0 0 0 / 0.5);
}
@media(prefers-color-scheme:dark){:root:not([data-theme]){
  --color-bg:#17150f;--color-surface:#201d17;--color-surface-2:#28241d;
  --color-surface-offset:#302b23;--color-surface-dark:#100e0a;--color-divider:oklch(1 0 0 / 0.07);
  --color-border:oklch(1 0 0 / 0.10);--color-text:#ece8e1;--color-text-muted:#9a938a;
  --color-text-faint:#544f47;--color-text-inverse:#17150f;--color-primary:#e0724c;
  --color-primary-hover:#ec8663;--color-primary-active:#d8562f;--color-primary-light:#2c1810;
}}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;scroll-behavior:smooth;scroll-padding-top:80px}
body{min-height:100dvh;font-family:var(--font-body);font-size:var(--text-base);color:var(--color-text);background:var(--color-bg);line-height:1.6}
img,video{display:block;max-width:100%;height:auto}
ul[role="list"]{list-style:none}
button{cursor:pointer;background:none;border:none;font:inherit;color:inherit}
a{color:inherit;text-decoration:none}
h1,h2,h3,h4,h5,h6{text-wrap:balance;line-height:1.1}
p,li{text-wrap:pretty}
:focus-visible{outline:2px solid var(--color-primary);outline-offset:3px;border-radius:var(--radius-sm)}
::selection{background:oklch(from var(--color-primary) l c h / 0.18)}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:0.01ms !important;transition-duration:0.01ms !important}}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
.container{max-width:var(--content-wide);margin-inline:auto;padding-inline:var(--space-6)}
.container--narrow{max-width:var(--content-default);margin-inline:auto;padding-inline:var(--space-6)}
.skip-link{position:absolute;top:-100%;left:var(--space-4);background:var(--color-primary);color:#fff;padding:var(--space-2) var(--space-4);border-radius:var(--radius-md);z-index:1000;transition:top .2s}
.skip-link:focus{top:var(--space-4)}
.site-nav{position:fixed;top:var(--cfa-banner-h,0px);left:0;right:0;z-index:100;background:var(--color-bg);border-bottom:1px solid var(--color-border);height:72px;display:flex;align-items:center;transition:background var(--transition),box-shadow var(--transition)}
.site-nav.scrolled{box-shadow:var(--shadow-md)}
.nav-inner{width:100%;max-width:var(--content-wide);margin-inline:auto;padding-inline:var(--space-6);display:flex;align-items:center;justify-content:space-between;gap:var(--space-6)}
.nav-logo{display:flex;align-items:center;gap:var(--space-3);flex-shrink:0}
.nav-logo svg{width:36px;height:36px}
.nav-logo-text{font-family:var(--font-display);font-weight:800;font-size:1.05rem;letter-spacing:.02em;line-height:1}
.nav-logo-text span{color:var(--color-primary)}
.nav-links{display:flex;align-items:center;gap:var(--space-1);list-style:none;flex-shrink:0}
.nav-links a{white-space:nowrap;font-size:var(--text-sm);font-weight:500;letter-spacing:.03em;padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);transition:color var(--transition),background var(--transition);color:var(--color-text-muted)}
.nav-links a:hover{color:var(--color-text);background:var(--color-surface)}
.nav-links a.active{color:var(--color-text)}
.nav-cta{background:var(--color-primary);color:#fff;padding:var(--space-2) var(--space-5);border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:600;letter-spacing:.03em;transition:background var(--transition);white-space:nowrap}
.nav-cta:hover{background:var(--color-primary-hover)}
.nav-right{display:flex;align-items:center;gap:var(--space-3)}
.nav-phone{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);font-weight:600;color:var(--color-text-muted);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);border:1px solid var(--color-border);transition:color var(--transition),border-color var(--transition),background var(--transition);white-space:nowrap}
.nav-phone:hover{color:var(--color-text);border-color:var(--color-text);background:var(--color-surface)}
.theme-toggle{width:40px;height:40px;border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;color:var(--color-text-muted);transition:background var(--transition),color var(--transition)}
.theme-toggle:hover{background:var(--color-surface);color:var(--color-text)}
.lang-toggle{display:flex;align-items:center;border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden;flex-shrink:0}
.lang-toggle button{padding:var(--space-2) var(--space-3);font-size:var(--text-xs);font-weight:700;letter-spacing:.04em;color:var(--color-text-muted);transition:background var(--transition),color var(--transition);line-height:1}
.lang-toggle button:hover{color:var(--color-text)}
.lang-toggle button.active{background:var(--color-primary);color:#fff}
.hamburger{display:none;width:40px;height:40px;border-radius:var(--radius-md);align-items:center;justify-content:center;color:var(--color-text);transition:background var(--transition)}
.hamburger:hover{background:var(--color-surface)}
.mobile-nav{display:none;position:fixed;top:72px;left:0;right:0;bottom:0;background:var(--color-bg);z-index:99;padding:var(--space-6);flex-direction:column;gap:var(--space-2);border-top:1px solid var(--color-border);overflow-y:auto}
.mobile-nav.open{display:flex}
.mobile-nav a{font-size:var(--text-lg);font-weight:500;padding:var(--space-4) var(--space-2);border-bottom:1px solid var(--color-divider);color:var(--color-text);transition:color var(--transition)}
.mobile-nav a:hover{color:var(--color-primary)}
.mobile-nav .nav-cta{margin-top:var(--space-4);text-align:center;padding:var(--space-4);font-size:var(--text-base)}
.mobile-nav .mobile-phone{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-base);font-weight:600;color:var(--color-primary);padding:var(--space-4) var(--space-2);border-bottom:1px solid var(--color-divider)}
.mobile-nav .lang-toggle{margin-top:var(--space-4);align-self:flex-start}
@media(max-width:1150px){.nav-phone{display:none}}
@media(max-width:1000px){.nav-links{display:none}.hamburger{display:flex}.desktop-cta{display:none}.nav-phone{display:none}.nav-right .lang-toggle{display:none}}
.hero{padding-top:calc(72px + var(--cfa-banner-h,0px));min-height:clamp(520px,70svh,660px);display:grid;grid-template-columns:1fr 1fr;overflow:hidden}
.hero-content{display:flex;flex-direction:column;justify-content:center;padding:clamp(var(--space-6),3vw,var(--space-12)) var(--space-6) clamp(var(--space-6),3vw,var(--space-12)) clamp(var(--space-6),6vw,var(--space-20))}
.hero-eyebrow{font-size:var(--text-xs);font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--color-primary);margin-bottom:var(--space-4);display:flex;align-items:center;gap:var(--space-2)}
.hero-eyebrow::before{content:'';display:block;width:24px;height:2px;background:var(--color-primary)}
.hero-headline{font-family:var(--font-display);font-size:var(--text-hero);font-weight:700;line-height:1.03;letter-spacing:-.005em;margin-bottom:var(--space-6)}
.hero-headline em{color:var(--color-primary);font-style:normal}
.hero-sub{font-size:var(--text-lg);color:var(--color-text-muted);font-weight:400;max-width:44ch;margin-bottom:var(--space-10);line-height:1.6}
.hero-actions{display:flex;flex-wrap:wrap;gap:var(--space-3);align-items:center}
.btn-primary{background:var(--color-primary);color:#fff;padding:var(--space-3) var(--space-6);border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:600;letter-spacing:.01em;transition:background var(--transition);display:inline-flex;align-items:center;gap:var(--space-2)}
.btn-primary:hover{background:var(--color-primary-hover)}
.btn-ghost{color:var(--color-text);border:1px solid var(--color-border);padding:var(--space-3) var(--space-6);border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:500;letter-spacing:.01em;transition:border-color var(--transition),background var(--transition);display:inline-flex;align-items:center;gap:var(--space-2)}
.btn-ghost:hover{border-color:var(--color-text);background:var(--color-surface)}
.hero-meta{display:flex;align-items:center;gap:var(--space-5);flex-wrap:wrap;margin-top:var(--space-8);padding-top:var(--space-5);border-top:1px solid var(--color-divider)}
.hero-meta-item{display:inline-flex;align-items:baseline;gap:var(--space-2);font-size:var(--text-sm);color:var(--color-text-muted);white-space:nowrap}
.hm-num{font-family:var(--font-display);font-size:var(--text-xl);font-weight:700;line-height:1;color:var(--color-text);letter-spacing:-.01em}
.hm-num em{color:var(--color-primary);font-style:normal}
.hero-meta-sep{width:1px;height:20px;background:var(--color-divider);flex-shrink:0}
.hero-image{position:relative;overflow:hidden}
.hero-image img{width:100%;height:100%;object-fit:cover}
.hero-image-overlay{position:absolute;inset:0;background:linear-gradient(to right,var(--color-bg) 0%,transparent 20%)}
@media(max-width:768px){
  .hero{grid-template-columns:1fr;min-height:auto}
  .hero-meta-sep{display:none}
  .hero-image{height:55vw;min-height:260px;order:-1}
  .hero-image-overlay{background:linear-gradient(to bottom,transparent 60%,var(--color-bg) 100%)}
  .hero-content{padding:var(--space-8) var(--space-4)}
  .hero-meta{gap:var(--space-4)}
}
.section-label{font-size:var(--text-xs);font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--color-text-faint);display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-4)}
.section-label::before{content:'';display:block;width:20px;height:2px;background:var(--color-primary)}
.section-title{font-family:var(--font-display);font-size:var(--text-3xl);font-weight:700;line-height:1.04;letter-spacing:-.005em}
.section-title em{color:var(--color-primary);font-style:normal}
.section-body{font-size:var(--text-base);color:var(--color-text-muted);max-width:52ch;line-height:1.7;margin-top:var(--space-4)}
.about-section{padding-block:clamp(var(--space-16),10vw,var(--space-24))}
.about-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-16);align-items:center}
.about-image-wrap{position:relative}
.about-image-wrap img{border-radius:var(--radius-xl);width:100%;aspect-ratio:4/5;object-fit:cover}
.about-pillars{margin-top:var(--space-8);display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4)}
.pillar{padding:var(--space-5);background:var(--color-surface);border-radius:var(--radius-lg);border:1px solid var(--color-border)}
.pillar-title{font-family:var(--font-display);font-size:var(--text-lg);font-weight:700;letter-spacing:.005em;margin-bottom:var(--space-1)}
.pillar-body{font-size:var(--text-sm);color:var(--color-text-muted);line-height:1.5}
@media(max-width:768px){.about-grid{grid-template-columns:1fr;gap:var(--space-8)}.about-pillars{grid-template-columns:1fr}}
.services-section{padding-block:clamp(var(--space-16),10vw,var(--space-24));background:var(--color-surface)}
.services-header{margin-bottom:var(--space-12)}
.services-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-6)}
.service-card{background:var(--color-bg);border-radius:var(--radius-xl);overflow:hidden;border:1px solid var(--color-border);transition:box-shadow var(--transition),transform var(--transition);display:flex;flex-direction:column}
.service-card:hover{box-shadow:var(--shadow-lg);transform:translateY(-3px)}
.service-card.featured{border-color:var(--color-primary);position:relative}
.service-card-image{aspect-ratio:4/5;overflow:hidden}
.service-card-image img{width:100%;height:100%;object-fit:cover;transition:transform .5s ease}
.service-card:hover .service-card-image img{transform:scale(1.03)}
.service-card-body{padding:var(--space-6);flex:1;display:flex;flex-direction:column}
.service-tag{font-size:var(--text-xs);font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--color-primary);margin-bottom:var(--space-3);display:flex;align-items:center;gap:var(--space-1)}
.service-tag.elite{background:var(--color-primary);color:#fff;display:inline-flex;padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);margin-bottom:var(--space-3)}
.service-name{font-family:var(--font-display);font-size:var(--text-xl);font-weight:700;line-height:1.1;margin-bottom:var(--space-3)}
.service-desc{font-size:var(--text-sm);color:var(--color-text-muted);line-height:1.65;flex:1;margin-bottom:var(--space-5)}
.service-detail-list{list-style:none;display:flex;flex-direction:column;gap:var(--space-2);margin-bottom:var(--space-5)}
.service-detail-list li{font-size:var(--text-sm);color:var(--color-text-muted);display:flex;align-items:flex-start;gap:var(--space-2)}
.service-detail-list li::before{content:'';display:block;width:5px;height:5px;border-radius:50%;background:var(--color-primary);margin-top:.5em;flex-shrink:0}
.service-link{display:inline-flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);font-weight:600;letter-spacing:.01em;color:var(--color-primary);margin-top:auto;transition:gap var(--transition)}
.service-link:hover{gap:var(--space-3)}
.elite-badge{position:absolute;top:var(--space-4);right:var(--space-4);background:var(--color-primary);color:#fff;font-size:var(--text-xs);font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:var(--space-1) var(--space-3);border-radius:var(--radius-full)}
@media(max-width:900px){.services-grid{grid-template-columns:1fr}}
.community-band{padding-block:clamp(var(--space-16),10vw,var(--space-24))}
.community-values{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-6);margin-top:var(--space-12)}
.value-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-xl);padding:var(--space-8)}
.value-icon{width:48px;height:48px;border-radius:var(--radius-lg);background:var(--color-primary-light);display:flex;align-items:center;justify-content:center;margin-bottom:var(--space-5)}
.value-icon svg{width:24px;height:24px;color:var(--color-primary)}
.value-title{font-family:var(--font-display);font-size:var(--text-lg);font-weight:700;letter-spacing:.005em;margin-bottom:var(--space-2)}
.value-body{font-size:var(--text-sm);color:var(--color-text-muted);line-height:1.6}
@media(max-width:900px){.community-values{grid-template-columns:1fr}}
.community-bar{background:var(--color-surface);color:var(--color-text);border-block:1px solid var(--color-border);padding-block:clamp(var(--space-12),8vw,var(--space-20))}
.community-bar-inner{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-16);align-items:center}
.community-title{font-family:var(--font-display);font-size:var(--text-3xl);font-weight:700;line-height:1.04;color:var(--color-text)}
.community-title em{color:var(--color-primary);font-style:normal}
.community-body{color:var(--color-text-muted);margin-top:var(--space-4);font-size:var(--text-base);line-height:1.7;max-width:44ch}
.community-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-6)}
.c-stat{text-align:center}
.c-stat-num{font-family:var(--font-display);font-size:var(--text-2xl);font-weight:700;color:var(--color-text);line-height:1}
.c-stat-num span{color:var(--color-primary)}
.c-stat-label{font-size:var(--text-xs);color:var(--color-text-faint);letter-spacing:.1em;text-transform:uppercase;margin-top:var(--space-1)}
@media(max-width:768px){.community-bar-inner{grid-template-columns:1fr;gap:var(--space-10)}}
.cta-strip{background:var(--color-surface);border-block:1px solid var(--color-border);padding-block:clamp(var(--space-12),6vw,var(--space-20));text-align:center}
.cta-strip h2{font-family:var(--font-display);font-size:var(--text-3xl);font-weight:700;color:var(--color-text);line-height:1.04;margin-bottom:var(--space-4)}
.cta-strip p{color:var(--color-text-muted);font-size:var(--text-base);max-width:50ch;margin-inline:auto;margin-bottom:var(--space-8)}
.btn-white{background:var(--color-primary);color:#fff;padding:var(--space-3) var(--space-6);border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:600;letter-spacing:.01em;transition:background var(--transition);display:inline-flex;align-items:center;gap:var(--space-2)}
.btn-white:hover{background:var(--color-primary-hover)}
.site-footer{background:var(--color-surface-dark);color:oklch(1 0 0 / 0.5);padding-block:var(--space-12)}
[data-theme="dark"] .site-footer{background:var(--color-surface-offset)}
.footer-inner{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:var(--space-8)}
.footer-brand-name{font-family:var(--font-display);font-weight:700;font-size:var(--text-xl);color:#fff;letter-spacing:.01em;margin-bottom:var(--space-3)}
[data-theme="dark"] .footer-brand-name{color:var(--color-text)}
.footer-brand-name span{color:var(--color-primary)}
.footer-brand p{font-size:var(--text-sm);line-height:1.65;max-width:32ch}
.footer-col h4{font-size:var(--text-xs);font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:oklch(1 0 0 / 0.8);margin-bottom:var(--space-4)}
[data-theme="dark"] .footer-col h4{color:var(--color-text-muted)}
.footer-col ul{list-style:none;display:flex;flex-direction:column;gap:var(--space-2)}
.footer-col ul li a{font-size:var(--text-sm);transition:color var(--transition)}
.footer-col ul li a:hover{color:#fff}
.footer-bottom{margin-top:var(--space-8);padding-top:var(--space-6);border-top:1px solid oklch(1 0 0 / 0.08);display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:var(--space-4)}
[data-theme="dark"] .footer-bottom{border-top-color:var(--color-divider)}
.footer-bottom p{font-size:var(--text-xs)}
@media(max-width:768px){.footer-inner{grid-template-columns:1fr 1fr}}
@media(max-width:480px){.footer-inner{grid-template-columns:1fr}.footer-bottom{flex-direction:column;text-align:center}}
/* Only hide reveal elements once we know scripts are running. If main.js
   fails to load, .cfa-js is never set and everything stays visible rather
   than the page rendering as a column of blank space. */
.cfa-js .reveal{opacity:0;transform:translateY(24px);transition:opacity .6s ease,transform .6s ease}
.cfa-js .reveal.visible{opacity:1;transform:translateY(0)}
.reveal-delay-1{transition-delay:.1s}
.reveal-delay-2{transition-delay:.2s}
.reveal-delay-3{transition-delay:.3s}
.reveal-delay-4{transition-delay:.4s}
#whatsapp-float{position:fixed;bottom:var(--space-8);right:var(--space-8);z-index:500;background:#25D366;color:#fff;width:60px;height:60px;border-radius:50%;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 20px oklch(0 0 0 / 0.25);transition:transform 180ms cubic-bezier(0.16,1,0.3,1),box-shadow 180ms ease;text-decoration:none}
#whatsapp-float:hover{transform:scale(1.1) translateY(-2px);box-shadow:0 8px 28px oklch(0 0 0 / 0.3)}
@media(max-width:480px){#whatsapp-float{bottom:var(--space-6);right:var(--space-4);width:52px;height:52px}}
.s-heading{font-family:var(--font-display);font-size:var(--text-2xl);font-weight:700;line-height:1.08;margin-bottom:var(--space-4)}
.schedule-wrapper{padding-block:clamp(var(--space-16),10vw,var(--space-24))}
/* --- Orario: griglia a fasce orarie ------------------------------------
   Ogni riga della griglia vale 30 minuti a partire dalle 07:00, così un blocco
   può occupare esattamente la sua fascia. Row 1 = intestazioni dei giorni. */
.schedule-cal{
  --cal-slot:13px;
  display:grid;
  grid-template-columns:62px repeat(7,minmax(104px,1fr));
  grid-template-rows:auto repeat(var(--cal-rows,30),var(--cal-slot));
  min-width:820px;position:relative;
  border:1px solid var(--color-border);border-radius:var(--radius-xl);
  background:var(--color-bg);padding:0 var(--space-2) var(--space-4) 0;overflow:hidden}
.cal-corner{grid-column:1;grid-row:1;background:var(--color-surface);
  border-bottom:1px solid var(--color-border)}
.cal-dayhead{grid-row:1;background:var(--color-surface);
  border-bottom:1px solid var(--color-border);border-left:1px solid var(--color-border);
  padding:var(--space-3) var(--space-2);text-align:center;
  font-family:var(--font-display);font-weight:700;font-size:var(--text-sm);letter-spacing:.03em}
.cal-time{grid-column:1;font-size:10px;font-weight:600;letter-spacing:.04em;
  color:var(--color-text-faint);text-align:right;padding-right:var(--space-3);
  transform:translateY(-0.5em);white-space:nowrap}
.cal-line{grid-column:2 / -1;height:0;align-self:start;
  border-top:1px solid var(--color-divider);pointer-events:none}
.cal-daycol{border-left:1px solid var(--color-divider);pointer-events:none}
.schedule-class{
  margin:1px 3px;border-radius:var(--radius-md);padding:var(--space-1) var(--space-2);
  overflow:hidden;display:flex;flex-direction:column;justify-content:center;
  border:1px solid transparent;z-index:1;
  transition:transform var(--transition),box-shadow var(--transition)}
.sc-time{font-size:10px;font-weight:700;letter-spacing:.02em;line-height:1.1;
  color:var(--color-primary)}
.sc-name{font-size:11px;font-weight:700;line-height:1.1;margin-top:1px;color:var(--color-text);
  overflow-wrap:break-word;hyphens:auto}
.schedule-legend{display:flex;flex-wrap:wrap;gap:var(--space-4);margin-bottom:var(--space-6);align-items:center}
.legend-item{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-xs);color:var(--color-text-muted)}
.legend-dot{width:10px;height:10px;border-radius:var(--radius-sm);flex-shrink:0}
@media(max-width:700px){.schedule-cal{--cal-slot:12px;grid-template-columns:52px repeat(7,minmax(92px,1fr));min-width:740px}}
.schedule-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;
  scrollbar-width:thin;overscroll-behavior-x:contain}
.schedule-swipe-hint{display:none}
@media(max-width:860px){
  .schedule-swipe-hint{
    display:flex;align-items:center;gap:var(--space-2);
    font-size:var(--text-xs);font-weight:700;letter-spacing:.08em;text-transform:uppercase;
    color:var(--color-primary);margin:0 0 var(--space-3)}
  .schedule-swipe-hint span{animation:cfa-nudge 1.6s ease-in-out infinite}
  /* A visible track, so it is obvious there is more to the right. */
  .schedule-scroll::-webkit-scrollbar{height:6px}
  .schedule-scroll::-webkit-scrollbar-thumb{background:var(--color-primary);border-radius:99px}
  .schedule-scroll::-webkit-scrollbar-track{background:var(--color-surface);border-radius:99px}
}
@keyframes cfa-nudge{0%,100%{transform:translateX(0)}50%{transform:translateX(4px)}}
@media(prefers-reduced-motion:reduce){.schedule-swipe-hint span{animation:none}}

/* ============================================================
   WordPress additions — layout & utility classes
   (These replace the inline styles used in the original
   single-file version, so page content can be edited as blocks.)
   ============================================================ */
main{display:block}
.interior{padding-top:calc(72px + var(--cfa-banner-h,0px))}

/* WordPress injects <div class="wp-block-group__inner-container"> inside every
   Group block when the theme has no theme.json (core's wp_restore_group_inner_container
   back-compat shim). That wrapper becomes the single child of every grid and flex
   container the layout depends on, so .hero, .about-grid, .services-grid and the rest
   collapse into one column. The filter is removed in functions.php; this makes the
   wrapper layout-transparent as well, so the layout holds even if it reappears. */
.wp-block-group > .wp-block-group__inner-container{display:contents}
body.admin-bar .site-nav{top:calc(32px + var(--cfa-banner-h,0px))}
body.admin-bar .hero{min-height:clamp(520px,70svh,660px)}
@media(max-width:782px){body.admin-bar .site-nav{top:calc(46px + var(--cfa-banner-h,0px))}}
/* Gutenberg wraps every image in <figure class="wp-block-image">. That extra
   element sits between an image container and its <img>, which breaks any
   height:100% chain the layout depends on and lets core's height:auto win over
   the theme's sizing rules. The figure is made layout-transparent below and
   each image container restates its sizing at figure-aware specificity. */
figure{margin:0}
.wp-block-image{margin:0;display:block;max-width:100%}
.wp-block-image img{display:block;width:100%}

/* Hero: image fills the full grid cell. */
.hero-image .wp-block-image{height:100%}
.hero-image .wp-block-image img{width:100%;height:100%;object-fit:cover}

/* Service cards: the 4/5 frame is set on the container, so the figure and the
   image must both fill it or the photo (2:3) mis-crops and the card collapses. */
.service-card-image .wp-block-image{height:100%}
.service-card-image .wp-block-image img{width:100%;height:100%;object-fit:cover;transition:transform .5s ease}
.service-card:hover .service-card-image .wp-block-image img{transform:scale(1.03)}

/* Portrait feature images (about block and the .u-img-43 utility). */
.about-image-wrap .wp-block-image img{width:100%;aspect-ratio:4/5;object-fit:cover;border-radius:var(--radius-xl)}

.page-pad{padding-block:clamp(var(--space-16),10vw,var(--space-24))}
.u-content-default{max-width:var(--content-default);margin-inline:auto}
.u-fs-3xl{font-size:var(--text-3xl)}
.u-mb0{margin-bottom:0}
.u-mb4{margin-bottom:var(--space-4)}
.u-mb5{margin-bottom:var(--space-5)}
.u-mb6{margin-bottom:var(--space-6)}
.u-mb8{margin-bottom:var(--space-8)}
.u-mb10{margin-bottom:var(--space-10)}
.u-mt4{margin-top:var(--space-4)}
.u-mt8{margin-top:var(--space-8)}
.u-mt16{margin-top:var(--space-16)}

.u-lead-lg{font-size:var(--text-lg);color:var(--color-text-muted);max-width:52ch;margin-bottom:var(--space-16)}
.u-intro-base{font-size:var(--text-base);color:var(--color-text-muted);line-height:1.7;max-width:52ch;margin-bottom:var(--space-8)}
.u-body{font-size:var(--text-base);line-height:1.7;color:var(--color-text-muted)}
.u-body-lg{font-size:var(--text-lg);line-height:1.7;color:var(--color-text-muted)}
.u-note{font-size:var(--text-xs);color:var(--color-text-faint);margin-top:var(--space-4);line-height:1.5}
.u-em-primary{color:var(--color-primary);font-style:normal}
.text-link{color:var(--color-primary);font-weight:600}

.u-img-43{border-radius:var(--radius-xl)}
.wp-block-image.u-img-43 img{width:100%;aspect-ratio:4/5;object-fit:cover;border-radius:var(--radius-xl)}

.u-grid-split{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-16);align-items:start;margin-top:var(--space-12)}
.u-grid-2col{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-5)}
.pillar--lg{padding:var(--space-6)}
.pillar--lg .pillar-title{font-size:var(--text-lg);margin-bottom:var(--space-3)}
.pillar--lg .pillar-body{font-size:var(--text-base)}

.service-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-12);align-items:center}
.service-row--divided{margin-bottom:var(--space-20);padding-bottom:var(--space-20);border-bottom:1px solid var(--color-divider)}
.service-row--flip > :first-child{order:2}

.elite-box{background:var(--color-surface);border-radius:var(--radius-xl);overflow:hidden;border:1px solid var(--color-border)}
.elite-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-12);align-items:center;padding:var(--space-12)}
.elite-features{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4);margin-bottom:var(--space-8)}
.elite-feature{padding:var(--space-4);background:var(--color-bg);border-radius:var(--radius-lg);border:1px solid var(--color-border)}
.elite-feature-title{font-family:var(--font-display);font-size:var(--text-base);font-weight:700;margin-bottom:var(--space-1)}
.elite-feature-body{font-size:var(--text-sm);color:var(--color-text-muted)}
.u-elite-h{font-family:var(--font-display);font-size:var(--text-2xl);font-weight:700;line-height:1.08;margin-bottom:var(--space-5)}

.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-16);align-items:start}
.contact-single{max-width:var(--content-default)}

.sched-free{margin-top:var(--space-12);padding:var(--space-8);background:var(--color-surface);border-radius:var(--radius-xl);border:1px solid var(--color-border);display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--space-6)}
.sched-free-h{font-family:var(--font-display);font-size:var(--text-xl);font-weight:700;margin-bottom:var(--space-2)}
.sched-free-p{font-size:var(--text-sm);color:var(--color-text-muted);max-width:44ch}

.footer-legal-link{font-size:var(--text-xs);color:oklch(1 0 0 / 0.5);text-decoration:underline;transition:color var(--transition)}
.footer-legal-link:hover{color:#fff}
.footer-legal-btn{background:none;border:none;cursor:pointer;font-family:var(--font-body)}

@media(max-width:768px){
  .u-grid-split,.service-row,.elite-grid,.contact-grid{grid-template-columns:1fr;gap:var(--space-8)}
  .u-grid-2col,.elite-features{grid-template-columns:1fr}
  .elite-grid{padding:var(--space-6)}
}


/* ============================================================
   Promotions banner — scrolling ticker
   Messages run continuously across the top. The sequence is printed twice and
   the track slides exactly -50%, so the loop repeats with no visible seam.
   ============================================================ */
.promo-banner{position:fixed;top:0;left:0;right:0;z-index:110;
  background:var(--color-primary);color:#fff;
  display:flex;align-items:center;gap:var(--space-4);
  padding:var(--space-3) var(--space-4) var(--space-3) 0;overflow:hidden}
body.admin-bar .promo-banner{top:32px}
@media(max-width:782px){body.admin-bar .promo-banner{top:46px}}

.promo-ticker{flex:1;min-width:0;overflow:hidden;
  -webkit-mask-image:linear-gradient(to right,transparent 0,#000 28px,#000 calc(100% - 28px),transparent 100%);
          mask-image:linear-gradient(to right,transparent 0,#000 28px,#000 calc(100% - 28px),transparent 100%)}
.promo-track{display:flex;width:max-content;
  animation:cfa-marquee var(--promo-duration,30s) linear infinite}
.promo-seq{display:flex;align-items:center;flex-shrink:0}
.promo-msg{font-size:var(--text-sm);font-weight:600;letter-spacing:.01em;white-space:nowrap;
  padding:0 var(--space-2)}
.promo-sep{opacity:.5;font-size:9px;padding:0 var(--space-5);line-height:1}
@keyframes cfa-marquee{from{transform:translateX(0)}to{transform:translateX(-50%)}}

/* Let people actually read (and click) — stop on hover and on keyboard focus. */
.promo-banner:hover .promo-track,
.promo-banner:focus-within .promo-track{animation-play-state:paused}

.promo-banner-close{flex-shrink:0;color:#fff;opacity:.7;display:flex;padding:var(--space-2);
  border-radius:var(--radius-sm);transition:opacity var(--transition)}
.promo-banner-close:hover{opacity:1}

/* Moving text is a barrier for some readers — respect the OS setting and
   simply list the messages instead of animating them. */
@media(prefers-reduced-motion:reduce){
  .promo-track{animation:none;width:auto;justify-content:center}
  .promo-seq:nth-child(2){display:none}
  .promo-ticker{-webkit-mask-image:none;mask-image:none}
  .promo-msg{white-space:normal}
  .promo-sep{padding:0 var(--space-3)}
}
@media(max-width:600px){
  .promo-banner{gap:var(--space-2);padding-right:var(--space-2)}
  .promo-msg{font-size:var(--text-xs)}
  }

/* ============================================================
   Home — "Più di una Palestra" photo band
   Every tile keeps a 3:2 box because the source photos are all 3:2 landscape;
   fixed-height rows would letterbox them and crop faces out.
   ============================================================ */
.community-photos{display:grid;grid-template-columns:repeat(6,1fr);gap:var(--space-4);
  margin-top:var(--space-12)}
.community-photos > *{overflow:hidden;border-radius:var(--radius-xl);position:relative;
  aspect-ratio:3/2;background:var(--color-surface)}
.community-photos .wp-block-image,.community-photos figure{height:100%;margin:0}
.community-photos img{width:100%;height:100%;object-fit:cover;display:block}
.cp-a,.cp-b{grid-column:span 3}
.cp-c,.cp-d,.cp-e{grid-column:span 2}
.community-note{display:flex;align-items:flex-start;gap:var(--space-3);margin-top:var(--space-8);
  font-size:var(--text-sm);color:var(--color-text-muted);line-height:1.6}
.community-note svg{flex-shrink:0;margin-top:2px}
.community-note strong{color:var(--color-text);font-weight:700}
@media(max-width:900px){
  .community-photos{grid-template-columns:repeat(2,1fr)}
  .cp-a{grid-column:span 2}
  .cp-b,.cp-c,.cp-d,.cp-e{grid-column:span 1}
}
@media(max-width:560px){
  .community-photos{grid-template-columns:1fr;gap:var(--space-3)}
  .cp-a,.cp-b,.cp-c,.cp-d,.cp-e{grid-column:span 1}
}



/* ============================================================
   Coach page — one coach per row, square headshot, side alternates
   ============================================================ */
.coach-list{display:flex;flex-direction:column;gap:var(--space-16);margin-top:var(--space-12);
  --coach-photo-size:300px}
.coach-row{display:grid;grid-template-columns:var(--coach-photo-size) 1fr;gap:var(--space-10);
  align-items:center}
/* Flipped rows must also flip the track widths. Reordering alone would drop the
   photo into the 1fr column and render it far larger than on the other rows —
   every coach gets the same size box. */
.coach-row--flip{grid-template-columns:1fr var(--coach-photo-size)}
.coach-row--flip > :first-child{order:2}
.coach-photo{position:relative}
.coach-photo .wp-block-image,.coach-photo figure{margin:0}
.coach-photo img{width:100%;aspect-ratio:1/1;object-fit:cover;display:block;
  border-radius:var(--radius-xl);background:var(--color-surface)}
.coach-role{font-size:var(--text-xs);font-weight:600;letter-spacing:.14em;text-transform:uppercase;
  color:var(--color-text-faint);display:flex;align-items:center;gap:var(--space-2);
  margin-bottom:var(--space-3)}
.coach-role::before{content:'';display:block;width:20px;height:2px;background:var(--color-primary)}
.coach-name{font-family:var(--font-display);font-size:var(--text-2xl);font-weight:700;
  line-height:1.06;letter-spacing:-.005em;margin-bottom:var(--space-4)}
.coach-bio{font-size:var(--text-base);color:var(--color-text-muted);line-height:1.7;max-width:56ch}
@media(max-width:1100px){.coach-list{--coach-photo-size:240px}}
@media(max-width:820px){
  .coach-list{gap:var(--space-12)}
  .coach-row,.coach-row--flip{grid-template-columns:1fr;gap:var(--space-6)}
  .coach-row--flip > :first-child{order:0}
  .coach-photo{max-width:240px}
}


/* ============================================================
   Navigation dropdowns
   Eight flat links no longer fit beside the logo, phone and CTA, so the
   pages are grouped under two parents. Parents stay clickable and lead to
   their own page; the submenu is an addition, not a replacement.
   ============================================================ */
.nav-links .has-dropdown{position:relative}
.nav-links .has-dropdown > a{display:inline-flex;align-items:center;gap:var(--space-1)}
.nav-chev{transition:transform var(--transition);opacity:.6;flex-shrink:0}
.nav-links .has-dropdown:hover > a .nav-chev,
.nav-links .has-dropdown:focus-within > a .nav-chev{transform:rotate(180deg);opacity:1}
.nav-links .dropdown{
  position:absolute;top:100%;left:0;min-width:210px;
  background:var(--color-bg);border:1px solid var(--color-border);
  border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);
  padding:var(--space-2);margin-top:var(--space-2);list-style:none;
  display:flex;flex-direction:column;gap:2px;
  opacity:0;visibility:hidden;transform:translateY(-6px);
  transition:opacity var(--transition),transform var(--transition),visibility var(--transition);
  z-index:120}
/* Bridge the gap so the pointer can travel from parent to menu. */
.nav-links .has-dropdown::after{content:'';position:absolute;top:100%;left:0;right:0;height:var(--space-3)}
.nav-links .has-dropdown:hover > .dropdown,
.nav-links .has-dropdown:focus-within > .dropdown{opacity:1;visibility:visible;transform:translateY(0)}
.nav-links .dropdown a{display:block;white-space:nowrap;padding:var(--space-2) var(--space-3);
  border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:500;color:var(--color-text-muted)}
.nav-links .dropdown a:hover{background:var(--color-surface);color:var(--color-text)}

/* Mobile menu keeps every page reachable, with the groups as quiet headings. */
.mobile-nav-group{font-size:var(--text-xs);font-weight:700;letter-spacing:.14em;text-transform:uppercase;
  color:var(--color-text-faint);padding:var(--space-4) 0 var(--space-1)}
.mobile-nav-group:first-of-type{padding-top:var(--space-2)}


/* ============================================================
   Promo box (Abbonamenti) — rendered by the theme, shares the
   banner's on/off switch and end date.
   ============================================================ */
.promo-box{margin-top:var(--space-10);padding:var(--space-8);
  background:rgba(216,86,47,.07);
  background:color-mix(in oklch,var(--color-primary) 7%,var(--color-bg));
  border:1px solid rgba(216,86,47,.32);
  border:1px solid color-mix(in oklch,var(--color-primary) 32%,transparent);
  border-radius:var(--radius-xl)}
.promo-box-head{display:flex;align-items:center;gap:var(--space-4);flex-wrap:wrap;
  margin-bottom:var(--space-5)}
.promo-box-tag{font-family:var(--font-display);font-size:var(--text-xl);font-weight:700;
  line-height:1.1;color:var(--color-text)}
.promo-box-until{font-size:var(--text-xs);font-weight:700;letter-spacing:.08em;
  text-transform:uppercase;color:#fff;background:var(--color-primary);
  padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);white-space:nowrap}
.promo-box-list{list-style:none;display:flex;flex-direction:column;gap:var(--space-3);
  margin:0 0 var(--space-8)}
.promo-box-list li{font-size:var(--text-base);color:var(--color-text-muted);line-height:1.55;
  display:flex;align-items:flex-start;gap:var(--space-3)}
.promo-box-list li::before{content:'';display:block;width:7px;height:7px;border-radius:50%;
  background:var(--color-primary);margin-top:.6em;flex-shrink:0}
@media(max-width:600px){
  .promo-box{padding:var(--space-6)}
  .promo-box .btn-primary{width:100%;justify-content:center}
}


/* ============================================================
   Abbonamenti — pricing tables
   Two variables (duration x frequency) read better as a table than as cards;
   people compare eight numbers here, so alignment matters more than styling.
   ============================================================ */
.price-section-title{font-family:var(--font-display);font-size:var(--text-2xl);font-weight:700;
  line-height:1.1;margin-bottom:var(--space-5);margin-top:var(--space-12)}
.price-table-wrap{border:1px solid var(--color-border);border-radius:var(--radius-xl);
  overflow:hidden;background:var(--color-bg)}
/* Safety net: if the table ever outgrows its box, let it scroll rather than
   silently clipping the last column (which is what used to happen on phones). */
@media(max-width:700px){.price-table-wrap{overflow-x:auto;overflow-y:hidden}}
.price-table{width:100%;border-collapse:collapse}
.price-table th,.price-table td{padding:var(--space-4) var(--space-5);text-align:right}
.price-table thead th{background:var(--color-surface);
  font-family:var(--font-body);font-size:var(--text-xs);font-weight:700;letter-spacing:.1em;
  text-transform:uppercase;color:var(--color-text-faint);
  border-bottom:1px solid var(--color-border)}
.price-table th:first-child,.price-table thead th:first-child{text-align:left}
.price-table tbody th{text-align:left;font-family:var(--font-display);font-size:var(--text-lg);
  font-weight:700;color:var(--color-text)}
.price-table tbody tr+tr th,.price-table tbody tr+tr td{border-top:1px solid var(--color-divider)}
.price-table tbody td{font-size:var(--text-sm);color:var(--color-text-muted);white-space:nowrap}
.pt-num{font-family:var(--font-display);font-size:var(--text-xl);font-weight:700;
  color:var(--color-text);letter-spacing:-.01em}
.price-extra{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);
  padding:var(--space-4) var(--space-5);background:var(--color-surface);
  border-top:1px solid var(--color-border);font-size:var(--text-sm);color:var(--color-text-muted)}
.price-extra strong{font-family:var(--font-display);font-size:var(--text-lg);font-weight:700;
  color:var(--color-text)}

.price-note-box{margin-top:var(--space-8);font-size:var(--text-sm);color:var(--color-text-muted);
  line-height:1.7;max-width:64ch}
.price-note-box p+p{margin-top:var(--space-3)}
.price-note-box strong{color:var(--color-text);font-weight:700}

.sgt-box{margin-top:var(--space-10);padding:var(--space-8);background:var(--color-surface);
  border:1px solid var(--color-border);border-radius:var(--radius-xl);
  display:flex;align-items:center;justify-content:space-between;gap:var(--space-8);flex-wrap:wrap}
.sgt-title{font-family:var(--font-display);font-size:var(--text-xl);font-weight:700;
  margin-bottom:var(--space-2)}
.sgt-body{font-size:var(--text-sm);color:var(--color-text-muted);line-height:1.65;max-width:52ch}
.sgt-box .btn-primary{flex-shrink:0}

@media(max-width:700px){
  .price-table th,.price-table td{padding:var(--space-3)}
  .price-table thead th{font-size:10px;letter-spacing:.06em}
  .price-table tbody th{font-size:var(--text-base)}
  .pt-num{font-size:var(--text-lg)}
  .sgt-box{padding:var(--space-6)}
  .sgt-box .btn-primary{width:100%;justify-content:center}
}

/* Full-width photo band (empty-gym shots) */
.gym-band{margin-top:var(--space-10);border-radius:var(--radius-xl);overflow:hidden}
.gym-band .wp-block-image,.gym-band figure{margin:0}
.gym-band img{width:100%;aspect-ratio:16/9;object-fit:cover;display:block}
@media(max-width:600px){.gym-band img{aspect-ratio:4/3}}

.pt-none{color:var(--color-text-faint)}


/* "10 ingressi" and similar: a real row in the table, separated from the
   duration rows above it so it reads as a different kind of product. */
.price-extra-row th,.price-extra-row td{border-top:2px solid var(--color-border) !important}
.price-extra-row th{font-family:var(--font-display)}
.price-extra-row td{text-align:right}

/* Student columns in the pricing table, marked with the brand colour */
.price-table .price-grouprow th{font-family:var(--font-body);font-size:10px;font-weight:700;
  letter-spacing:.12em;text-transform:uppercase;color:var(--color-text-faint);
  padding-bottom:var(--space-1);border-bottom:none;background:transparent;text-align:right}
.price-table .price-grouprow td{background:transparent;border:none}
.price-table th.is-student,.price-table td.is-student{
  background:rgba(216,86,47,.07);
  background:color-mix(in oklch,var(--color-primary) 7%,transparent)}
.price-table .price-grouprow th.is-student{color:var(--color-primary)}
.price-table thead th.is-student{color:var(--color-primary)}
.price-table td.is-student .pt-num{color:var(--color-primary)}
.price-extra-vals{display:inline-flex;align-items:baseline;gap:var(--space-4);flex-wrap:wrap}
.price-extra-vals .is-student{color:var(--color-primary);font-family:var(--font-body);
  font-size:var(--text-sm);font-weight:700}
@media(max-width:700px){
  .price-table .price-grouprow th{font-size:9px;letter-spacing:.06em}
}

/* Phones: tighten the cells so all four price columns fit 375px without
   scrolling. Measured — at default padding the table needs 385px in a 325px
   box, so the Studenti Open column was being cut off entirely. */
@media(max-width:560px){
  .price-table th,.price-table td{padding:var(--space-2) 5px}
  .price-table thead th{font-size:9px;letter-spacing:.02em}
  .price-table tbody th{font-size:var(--text-sm)}
  .pt-num{font-size:var(--text-base)}
  .price-table .price-grouprow th{font-size:8px;letter-spacing:.02em}
  .price-extra-vals{gap:var(--space-2)}
}


/* ============================================================
   News/Eventi — posts index and single post
   ============================================================ */
.news-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-6);margin-top:var(--space-12)}
.news-card{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-xl);
  overflow:hidden;transition:box-shadow var(--transition),transform var(--transition)}
.news-card:hover{box-shadow:var(--shadow-lg);transform:translateY(-3px)}
.news-card-link{display:flex;flex-direction:column;height:100%}
.news-card-image{aspect-ratio:3/2;overflow:hidden;background:var(--color-surface)}
.news-card-image img{width:100%;height:100%;object-fit:cover;display:block;
  transition:transform .5s ease}
.news-card:hover .news-card-image img{transform:scale(1.03)}
.news-card-body{padding:var(--space-6);display:flex;flex-direction:column;flex:1}
.news-date{font-size:var(--text-xs);font-weight:700;letter-spacing:.1em;text-transform:uppercase;
  color:var(--color-primary);margin-bottom:var(--space-3)}
.news-title{font-family:var(--font-display);font-size:var(--text-xl);font-weight:700;line-height:1.12;
  margin-bottom:var(--space-3);color:var(--color-text)}
.news-excerpt{font-size:var(--text-sm);color:var(--color-text-muted);line-height:1.65;flex:1;
  margin-bottom:var(--space-5)}
.news-more{display:inline-flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);
  font-weight:600;color:var(--color-primary);margin-top:auto;transition:gap var(--transition)}
.news-card:hover .news-more{gap:var(--space-3)}
.news-pagination{display:flex;gap:var(--space-3);flex-wrap:wrap;margin-top:var(--space-12);
  align-items:center;justify-content:center}
.news-pagination .page-numbers{display:inline-flex;align-items:center;justify-content:center;
  min-width:38px;height:38px;padding:0 var(--space-3);border:1px solid var(--color-border);
  border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:600;color:var(--color-text-muted)}
.news-pagination .page-numbers:hover{border-color:var(--color-text);color:var(--color-text)}
.news-pagination .page-numbers.current{background:var(--color-primary);border-color:var(--color-primary);color:#fff}

.post-head{max-width:var(--content-default);margin-bottom:var(--space-8)}
.post-back{display:inline-flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);
  font-weight:600;color:var(--color-text-muted);margin-bottom:var(--space-6);transition:color var(--transition)}
.post-back:hover{color:var(--color-primary)}
.post-hero{border-radius:var(--radius-xl);overflow:hidden;margin-bottom:var(--space-10)}
.post-hero img{width:100%;aspect-ratio:16/9;object-fit:cover;display:block}
.post-body{max-width:68ch;font-size:var(--text-base);line-height:1.75;color:var(--color-text-muted)}
.post-body > * + *{margin-top:var(--space-5)}
.post-body h2{font-family:var(--font-display);font-size:var(--text-2xl);font-weight:700;
  line-height:1.15;color:var(--color-text);margin-top:var(--space-10)}
.post-body h3{font-family:var(--font-display);font-size:var(--text-xl);font-weight:700;
  color:var(--color-text);margin-top:var(--space-8)}
.post-body a{color:var(--color-primary);font-weight:600;text-decoration:underline}
.post-body img{border-radius:var(--radius-lg);height:auto}
.post-body ul,.post-body ol{padding-left:1.3em}
.post-body li+li{margin-top:var(--space-2)}
.post-body blockquote{border-left:3px solid var(--color-primary);padding-left:var(--space-5);
  font-size:var(--text-lg);color:var(--color-text)}
.post-nav{display:flex;justify-content:space-between;gap:var(--space-6);flex-wrap:wrap;
  margin-top:var(--space-16);padding-top:var(--space-8);border-top:1px solid var(--color-divider);
  font-size:var(--text-sm);font-weight:600}
.post-nav a{color:var(--color-text-muted)}
.post-nav a:hover{color:var(--color-primary)}
@media(max-width:900px){.news-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:600px){.news-grid{grid-template-columns:1fr}}


/* Hero — the "10+ anni" statement, promoted above the headline */
.hero-years{display:inline-flex;align-items:center;gap:var(--space-4);margin-bottom:var(--space-6)}
.hero-years-num{font-family:var(--font-display);font-size:clamp(3rem,2rem + 3vw,4.5rem);font-weight:700;
  line-height:.9;color:var(--color-primary);letter-spacing:-.02em}
.hero-years-num em{font-style:normal}
.hero-years-label{font-family:var(--font-body);font-size:var(--text-sm);font-weight:600;
  line-height:1.3;color:var(--color-text-muted);letter-spacing:.02em;
  padding-left:var(--space-4);border-left:2px solid var(--color-primary)}
@media(max-width:768px){
  .hero-years{gap:var(--space-3);margin-bottom:var(--space-5)}
  .hero-years-num{font-size:2.75rem}
  .hero-years-label{font-size:var(--text-xs);padding-left:var(--space-3)}
}

/* "Coached in English" badge on Elite Group Training */
.lang-badge{display:inline-flex;align-items:center;gap:var(--space-2);
  background:rgba(216,86,47,.10);
  background:color-mix(in oklch,var(--color-primary) 10%,var(--color-bg));
  border:1px solid rgba(216,86,47,.32);
  border:1px solid color-mix(in oklch,var(--color-primary) 32%,transparent);
  color:var(--color-primary);border-radius:var(--radius-full);
  padding:var(--space-2) var(--space-4);margin-bottom:var(--space-5);
  font-size:var(--text-xs);font-weight:700;letter-spacing:.06em;text-transform:uppercase}


/* ============================================================
   Map: click-to-load placeholder
   The Google embed is only inserted when the visitor asks for it, so no
   third-party request or cookie occurs on page load.
   ============================================================ */
.map-consent{margin-top:var(--space-8);border-radius:var(--radius-xl);overflow:hidden;
  border:1px solid var(--color-border);background:var(--color-surface);aspect-ratio:16/9;
  display:flex;align-items:center;justify-content:center;text-align:center}
.map-consent.is-loaded{display:block;background:none;padding:0}
.map-consent-inner{padding:var(--space-8);max-width:44ch;display:flex;flex-direction:column;
  align-items:center;gap:var(--space-3);color:var(--color-text-muted)}
.map-consent-inner svg{color:var(--color-primary)}
.map-consent-title{font-family:var(--font-display);font-size:var(--text-lg);font-weight:700;
  color:var(--color-text);margin:0}
.map-consent-body{font-size:var(--text-xs);line-height:1.6;margin:0}
.map-consent-btn{margin-top:var(--space-2)}
.map-consent-alt{font-size:var(--text-xs);font-weight:600;color:var(--color-primary);
  text-decoration:underline}
@media(max-width:600px){.map-consent{aspect-ratio:4/3}.map-consent-inner{padding:var(--space-5)}}

/* ============ LEGAL PAGES (privacy / cookie policy) ============ */
.footer-legal-entity {
  font-size: var(--text-xs);
  opacity: .65;
  line-height: 1.6;
  max-width: 70ch;
}
.legal-body {
  max-width: 72ch;
  margin-top: var(--space-10);
  font-size: var(--text-base);
  line-height: 1.75;
  color: var(--color-text-muted);
}
.legal-body h2 {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: 600;
  line-height: 1.2;
  color: var(--color-text);
  margin: var(--space-12) 0 var(--space-4);
  padding-top: var(--space-6);
  border-top: 1px solid var(--color-border);
}
.legal-body h2:first-child { margin-top: 0; padding-top: 0; border-top: 0; }
.legal-body h3 {
  font-family: var(--font-display);
  font-size: var(--text-lg);
  font-weight: 600;
  color: var(--color-text);
  margin: var(--space-8) 0 var(--space-3);
}
.legal-body p { margin: 0 0 var(--space-4); }
.legal-body ul { margin: 0 0 var(--space-6); padding-left: 1.25em; }
.legal-body li { margin-bottom: var(--space-2); }
.legal-body strong { color: var(--color-text); font-weight: 600; }
.legal-body code {
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: .88em;
  background: var(--color-surface-alt, rgba(0,0,0,.05));
  padding: .12em .45em;
  border-radius: var(--radius-sm);
}
.legal-updated {
  font-size: var(--text-sm);
  letter-spacing: .04em;
  text-transform: uppercase;
  opacity: .6;
  margin-bottom: var(--space-10) !important;
}
.legal-table {
  width: 100%;
  border-collapse: collapse;
  margin: 0 0 var(--space-8);
  font-size: var(--text-sm);
}
.legal-table th,
.legal-table td {
  text-align: left;
  padding: var(--space-3) var(--space-4);
  border-bottom: 1px solid var(--color-border);
  vertical-align: top;
}
.legal-table th {
  font-family: var(--font-display);
  font-weight: 600;
  color: var(--color-text);
  border-bottom-width: 2px;
}
@media (max-width: 640px) {
  .legal-table, .legal-table tbody, .legal-table tr, .legal-table td { display: block; width: 100%; }
  .legal-table thead { display: none; }
  .legal-table tr { border-bottom: 1px solid var(--color-border); padding: var(--space-3) 0; }
  .legal-table td { border: 0; padding: var(--space-1) 0; }
  .legal-table td:first-child { font-weight: 600; color: var(--color-text); }
}

.pricing-terms {
  max-width: 70ch;
  margin: var(--space-8) 0 0;
  padding: var(--space-6);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  font-size: var(--text-sm);
  line-height: 1.7;
  color: var(--color-text-muted);
}
.pricing-terms p { margin: 0 0 var(--space-3); }
.pricing-terms p:last-child { margin-bottom: 0; }
.pricing-terms strong { color: var(--color-text); font-weight: 600; }

/* ============ EVENTS (news posts with a date) ============ */
.news-kind {
  display: inline-block;
  background: var(--color-primary);
  color: #fff;
  border-radius: var(--radius-sm);
  padding: .15em .5em;
  margin-right: .5em;
  letter-spacing: .08em;
}
.news-kind.is-past { background: var(--color-text-muted); }
.news-price-hint {
  font-size: var(--text-sm);
  font-weight: 600;
  color: var(--color-text);
  margin: 0 0 var(--space-4);
}
/* A band across the top of the post rather than a tall card: facts run
   horizontally, prices sit alongside them, and only narrow screens stack. */
.event-box {
  max-width: var(--content-default);
  margin: 0 0 var(--space-10);
  padding: var(--space-6) var(--space-8);
  border: 1px solid var(--color-border);
  border-top: 3px solid var(--color-primary);
  border-radius: var(--radius-lg);
  background: var(--color-surface);
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  gap: var(--space-10);
}
/* Facts and prices live together on the left and wrap against each other;
   the button is a separate column, so it never drops under them. */
.event-main {
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  gap: var(--space-6) var(--space-10);
}
.event-box.is-past { border-top-color: var(--color-text-muted); opacity: .85; }
.event-past-flag {
  flex: 1 0 100%;
  font-size: var(--text-xs);
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--color-text-muted);
  margin: 0;
}
.event-facts {
  margin: 0;
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-5) var(--space-10);
}
.event-fact { display: block; }
.event-fact dt {
  font-family: var(--font-display);
  font-size: var(--text-xs);
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--color-text-muted);
  margin: 0 0 var(--space-1);
}
.event-fact dd {
  margin: 0;
  font-size: var(--text-base);
  font-weight: 600;
  color: var(--color-text);
  line-height: 1.35;
}
.event-prices {
  flex: 0 1 auto;
  margin: 0;
  padding-left: var(--space-10);
  border-left: 1px solid var(--color-border);
}
.event-prices-title {
  font-family: var(--font-display);
  font-size: var(--text-xs);
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--color-text-muted);
  margin: 0 0 var(--space-1);
}
.event-prices ul {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2) var(--space-6);
}
.event-prices li {
  display: flex;
  align-items: baseline;
  gap: var(--space-2);
  white-space: nowrap;
}
.event-price-label { color: var(--color-text-muted); font-size: var(--text-sm); }
.event-price-value {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: var(--text-base);
  color: var(--color-text);
}
.event-cta {
  flex: 0 0 auto;
  align-self: center;
  padding-left: var(--space-10);
  border-left: 1px solid var(--color-border);
}
.event-cta .btn-primary { white-space: nowrap; }
/* Below this the band has no room to run across, so it becomes a stack —
   but a tight one, not the tall card it replaced. */
@media (max-width: 820px) {
  .event-box { flex-wrap: wrap; gap: var(--space-5); padding: var(--space-6); }
  .event-main { flex: 1 0 100%; gap: var(--space-5); }
  .event-prices {
    flex: 1 0 100%;
    padding-left: 0;
    padding-top: var(--space-5);
    border-left: 0;
    border-top: 1px solid var(--color-border);
  }
  .event-cta {
    flex: 1 0 100%;
    padding-left: 0;
    padding-top: var(--space-5);
    border-left: 0;
    border-top: 1px solid var(--color-border);
  }
  .event-cta .btn-primary { width: 100%; justify-content: center; }
}
}
