:root{
  --bg-0:#1a1b1d;
  --bg-1:#202123;
  --steel-1:#2d2e30;
  --steel-2:#3c3d3f;
  --steel-3:#4d4e50;
  --chrome:#d2d3d5;
  --chrome-hi:#f2f2f0;
  --ink:#ebecee;
  --ink-dim:#b5b6b8;
  --ink-dimmer:#8a8d91;
  --accent:#ffb800;
  --accent-2:#e6a300;
  --accent-deep:#a87900;
  --danger:#ff8a65;
  --ok:#7fe3a8;
  --radius:14px;
  --maxw:1560px;
}
*,*::before,*::after{box-sizing:border-box;}
html{scroll-behavior:smooth;font-size:112.5%;}
@media (prefers-reduced-motion: reduce){ html{scroll-behavior:auto;} }
body{
  margin:0;
  background:var(--bg-0);
  color:var(--ink);
  font-family:'Inter',system-ui,sans-serif;
  line-height:1.6;
  overflow-x:hidden;
  min-width:360px;
}
h1,h2,h3,.wordmark,.stat-num,.price-num{
  font-family:'Saira Condensed',system-ui,sans-serif;
  font-weight:600;
  letter-spacing:.01em;
  text-transform:uppercase;
  color:var(--chrome-hi);
}
h2{font-size:clamp(2rem,3.2vw,3.6rem);margin:0 0 .3em;line-height:1.02;}
h3{font-size:clamp(1.1rem,1.6vw,1.4rem);margin:0 0 .4em;}
p{margin:0 0 1em;color:var(--ink-dim);}
a{color:var(--accent);}
a:focus-visible,button:focus-visible,summary:focus-visible,[tabindex]:focus-visible,input:focus-visible{
  outline:3px solid var(--accent);
  outline-offset:2px;
  border-radius:4px;
}
::selection{background:var(--accent-deep);color:#fff;}

.skip-link{
  position:fixed;top:-60px;left:12px;z-index:1000;
  background:var(--accent);color:#1a1b1d;padding:.7em 1.2em;border-radius:8px;
  font-weight:700;transition:top .2s;
}
.skip-link:focus{top:56px;}

/* preview strip */
.preview-strip{
  position:fixed;top:0;left:0;right:0;z-index:999;
  background:#141517;color:var(--ink-dimmer);
  font:500 11px/1.8 'Inter',sans-serif;letter-spacing:.06em;
  text-align:center;padding:2px 8px;
  border-bottom:1px solid #2b2c2e;
}
.preview-strip b{color:var(--accent);}

/* background canvas */
#bg-canvas{
  position:fixed;inset:0;width:100%;height:100%;z-index:0;
  background:linear-gradient(180deg,var(--bg-0),#1d1e20 60%,var(--bg-0));
}
.noise-fallback{display:none;}
.no-js .noise-fallback,
html:not(.js) .noise-fallback{display:block;}

main,header.nav,footer{position:relative;z-index:1;}

/* NAV */
header.nav{
  position:sticky;top:22px;z-index:100;
  background:rgba(26,27,29,.72);
  border:1px solid rgba(138,141,145,.22);
  border-radius:16px;
  margin:22px auto 0;
  max-width:var(--maxw);
  width:calc(100% - 28px);
  padding:.6em 1em;
  display:flex;align-items:center;justify-content:space-between;gap:1em;
}
.wordmark{
  display:flex;align-items:center;gap:.55em;
  font-size:1.15rem;letter-spacing:.04em;white-space:nowrap;
  color:var(--chrome-hi);text-decoration:none;
}
.wordmark img{flex:none;display:block;}
.nav-links{display:flex;gap:1.4em;list-style:none;margin:0;padding:0;flex-wrap:wrap;}
.nav-links a{
  color:var(--ink-dim);text-decoration:none;font-size:.92rem;font-weight:500;
  padding:.3em 0;border-bottom:2px solid transparent;
}
.nav-links a:hover,.nav-links a:focus-visible{color:var(--chrome-hi);border-bottom-color:var(--accent);}
.nav-cta-group{display:flex;gap:.6em;align-items:center;}
.btn{
  display:inline-flex;align-items:center;gap:.5em;
  font:600 .88rem/1 'Inter',sans-serif;letter-spacing:.02em;
  padding:.75em 1.15em;border-radius:9px;text-decoration:none;
  border:1px solid transparent;cursor:pointer;white-space:nowrap;
  min-height:44px;
}
.btn-accent{background:linear-gradient(180deg,var(--accent),var(--accent-2));color:#1a1b1d;}
.btn-accent:hover{filter:brightness(1.08);}
.btn-ghost{background:transparent;border-color:rgba(138,141,145,.4);color:var(--ink);}
.btn-ghost:hover{border-color:var(--accent);color:var(--chrome-hi);}
.nav-toggle{
  display:none;background:none;border:1px solid rgba(138,141,145,.4);border-radius:9px;
  width:44px;height:44px;color:var(--ink);align-items:center;justify-content:center;cursor:pointer;
}
.nav-toggle svg{pointer-events:none;}

.mobile-menu{
  display:none;
  position:fixed;top:0;right:0;bottom:0;
  width:min(320px,86vw);
  background:#1c1d1f;border-left:1px solid rgba(138,141,145,.25);
  z-index:200;padding:5.2em 1.4em 2em;
  transform:translateX(100%);
  transition:transform .35s ease;
  overflow-y:auto;
}
.mobile-menu.open{transform:translateX(0);}
.mobile-menu ul{list-style:none;margin:0 0 1.5em;padding:0;display:flex;flex-direction:column;gap:.2em;}
.mobile-menu a{
  display:block;color:var(--ink);text-decoration:none;padding:.85em .2em;
  border-bottom:1px solid rgba(138,141,145,.15);font-size:1.02rem;
}
.mobile-menu a:hover,.mobile-menu a:focus-visible{color:var(--accent);}
.menu-close{
  position:absolute;top:1.1em;right:1.1em;background:none;border:1px solid rgba(138,141,145,.4);
  border-radius:8px;width:44px;height:44px;color:var(--ink);cursor:pointer;
}
.scrim{
  display:none;position:fixed;inset:0;background:rgba(19,20,22,.6);z-index:150;
}
.scrim.open{display:block;}

@media (max-width:820px){
  .nav-links,.nav-cta-group .btn-ghost,.nav-cta-group .btn-accent{display:none;}
  .nav-toggle{display:inline-flex;}
  .mobile-menu{display:block;}
}

main{max-width:var(--maxw);margin:0 auto;padding:0 48px;}
@media (max-width:480px){ main{padding:0 20px;} }
section{padding:4.6em 0;border-bottom:1px solid rgba(138,141,145,.12);}
section:last-of-type{border-bottom:none;}
.eyebrow{
  font:700 .78rem/1 'Inter',sans-serif;letter-spacing:.18em;text-transform:uppercase;
  color:var(--accent);margin:0 0 .8em;display:flex;align-items:center;gap:.6em;
}
.eyebrow::before{content:"";width:26px;height:2px;background:var(--accent);display:block;}

/* section head/body split — asymmetric grid, keeps heading beside its content */
.section-grid{display:grid;grid-template-columns:minmax(230px,300px) minmax(0,1fr);gap:clamp(2em,4vw,5em);align-items:start;}
.section-grid .s-head{position:sticky;top:110px;}
.s-num{display:block;font:700 3rem/1 'Saira Condensed',system-ui,sans-serif;color:rgba(138,141,145,.16);margin:0 0 -.15em;}
.s-intro{color:var(--ink-dim);font-size:1.05rem;max-width:34ch;margin:1em 0 0;}
@media (max-width:980px){
  .section-grid{grid-template-columns:minmax(0,1fr);}
  .section-grid .s-head{position:static;margin-bottom:2em;}
}

/* HERO */
/* the header is sticky (in flow), so the hero only needs a small breathing gap, not a header-sized offset */
.hero{
  display:flex;flex-direction:column;
  padding:1.6em 0 3em;position:relative;border-bottom:1px solid rgba(138,141,145,.12);
}
.hero-beam-panel{
  position:relative;border-radius:22px;overflow:hidden;
  padding:clamp(1.8em,4vw,3.2em) clamp(1.4em,5vw,3.2em);
  background:linear-gradient(160deg,rgba(37,38,40,.78),rgba(26,27,29,.85));
  border:1px solid rgba(138,141,145,.25);
  box-shadow:0 40px 80px -30px rgba(14,15,17,.6);
}
.hero-beam-panel::after{
  content:"";position:absolute;top:-40%;left:-25%;width:42%;height:180%;pointer-events:none;
  background:linear-gradient(115deg,transparent,rgba(255,206,110,.24) 45%,rgba(255,206,110,.06) 58%,transparent);
  transform:translateX(-10%) rotate(8deg);
  animation:sweep 9s ease-in-out infinite;
  will-change:transform;
}
@media (prefers-reduced-motion: reduce){ .hero-beam-panel::after{animation:none;transform:translateX(140%) rotate(8deg);} }
@keyframes sweep{
  0%{transform:translateX(-10%) rotate(8deg);}
  50%{transform:translateX(260%) rotate(8deg);}
  100%{transform:translateX(-10%) rotate(8deg);}
}
.hero .eyebrow{color:var(--accent);}
.hero h1{
  font-family:'Saira Stencil One','Saira Condensed',system-ui,sans-serif;
  font-weight:400;letter-spacing:.01em;text-transform:uppercase;
  font-size:clamp(2.6rem,8.4vw,5.6rem);line-height:.98;margin:0 0 .25em;
  background:linear-gradient(100deg,var(--chrome) 0%,var(--chrome-hi) 22%,var(--accent) 38%,var(--chrome-hi) 52%,var(--chrome) 70%,var(--chrome-hi) 88%);
  background-size:320% 100%;
  -webkit-background-clip:text;background-clip:text;color:transparent;
  animation:chrome-shine 14s linear infinite;
}
@media (prefers-reduced-motion: reduce){ .hero h1{animation:none;background-position:40% 0;} }
@keyframes chrome-shine{
  0%{background-position:0% 0;}
  100%{background-position:-320% 0;}
}
.hero .claim{font-size:clamp(1.05rem,2.4vw,1.3rem);color:var(--ink);max-width:46ch;margin:0 0 1.6em;}
.hero .old-name{color:var(--ink-dimmer);font-size:.85rem;margin:-1em 0 1.8em;}
.hero-actions{display:flex;flex-wrap:wrap;gap:.8em;margin-bottom:1.5em;}
.status-card{
  display:inline-flex;align-items:center;gap:.9em;flex-wrap:wrap;
  background:rgba(22,23,25,.6);border:1px solid rgba(138,141,145,.3);
  border-radius:12px;padding:.9em 1.3em;
}
.status-dot{width:12px;height:12px;border-radius:50%;flex:none;background:var(--ink-dimmer);box-shadow:0 0 0 4px rgba(138,141,145,.15);}
.status-card.open .status-dot{background:var(--ok);box-shadow:0 0 0 4px rgba(204,205,207,.2);}
.status-card.closed .status-dot{background:var(--danger);box-shadow:0 0 0 4px rgba(165,166,168,.2);}
.status-text strong{color:var(--chrome-hi);font-size:1.02rem;}
.status-text span{display:block;color:var(--ink-dim);font-size:.85rem;}

.hero-stats{display:flex;flex-wrap:wrap;gap:2.2em;margin-top:1.4em;}

.hero-grid{position:relative;display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:2.5em;align-items:center;}
.hero-plate{display:flex;align-items:center;justify-content:center;}
.hero-plate svg{width:100%;max-width:400px;height:auto;filter:drop-shadow(0 30px 60px rgba(14,15,17,.55));}
@media (max-width:1050px){
  .hero-grid{grid-template-columns:1fr;}
  .hero-plate{max-width:260px;margin:0 auto;opacity:.9;}
}
.stat-num{font-size:clamp(1.6rem,3vw,2.1rem);color:var(--accent);}
.stat-label{color:var(--ink-dimmer);font-size:.82rem;letter-spacing:.03em;}

/* generic grid helpers */
.grid{display:grid;gap:1.4em;}
.grid-3{grid-template-columns:repeat(3,1fr);}
.grid-2{grid-template-columns:repeat(2,1fr);}
@media (max-width:880px){.grid-3{grid-template-columns:repeat(2,1fr);} }
@media (max-width:620px){.grid-3,.grid-2{grid-template-columns:1fr;} }

.card{
  background:linear-gradient(165deg,rgba(45,46,48,.75),rgba(32,33,35,.75));
  border:1px solid rgba(138,141,145,.22);
  border-radius:var(--radius);padding:1.6em;
}

/* reveal on scroll */
.reveal{opacity:0;transform:translateY(18px);transition:opacity .5s ease,transform .5s ease;}
.reveal.in{opacity:1;transform:none;}
html:not(.js) .reveal{opacity:1;transform:none;}

/* O nas */
.about-wrap{display:flex;gap:3em;align-items:flex-start;flex-wrap:wrap;}
.about-text{flex:1 1 420px;min-width:280px;}
.about-illust{flex:1 1 280px;min-width:240px;display:flex;justify-content:center;}

/* services */
.service-icon{width:42px;height:42px;color:var(--accent);margin-bottom:.7em;}

/* services as a technical spec list, not another icon card grid */
.spec-list{list-style:none;margin:0;padding:0;border-top:1px solid rgba(138,141,145,.28);}
.spec-item{
  display:grid;grid-template-columns:56px minmax(220px,.9fr) 1.3fr;
  gap:1.8em;align-items:center;padding:1.7em 0;
  border-bottom:1px solid rgba(138,141,145,.18);
  transition:border-color .25s;
}
.spec-item:hover{border-bottom-color:var(--accent);}
.spec-index{
  font:600 1.05rem/1 'Saira Condensed',system-ui,sans-serif;color:var(--accent-deep);letter-spacing:.04em;
}
.spec-title{display:flex;align-items:center;gap:1em;}
.spec-title svg{width:28px;height:28px;color:var(--accent);flex:none;}
.spec-title h3{margin:0;font-size:clamp(1.05rem,1.6vw,1.25rem);}
.spec-desc{margin:0;color:var(--ink-dim);max-width:56ch;}
@media (max-width:820px){
  .spec-item{grid-template-columns:40px 1fr;grid-template-areas:"i t" "d d";row-gap:.6em;}
  .spec-index{grid-area:i;}
  .spec-title{grid-area:t;}
  .spec-desc{grid-area:d;}
}

/* hours table (secondary/compact reference) */
.hours-table{width:100%;border-collapse:collapse;margin-top:1em;}
.hours-table th{text-align:left;font:600 .78rem/1 'Inter';letter-spacing:.08em;text-transform:uppercase;color:var(--ink-dimmer);padding:.6em .8em;border-bottom:1px solid rgba(138,141,145,.25);}
.hours-table td{padding:.85em .8em;border-bottom:1px solid rgba(138,141,145,.14);color:var(--ink);}
/* compact contact-section table: day label is short and must never break mid-word;
   the time column also gets nowrap above 760px, where the two-column contact-grid
   would otherwise squeeze it — below that it's a full-width single column with
   enough room to wrap normally between "…, " and the second time range */
.contact-hours .hours-table td:first-child,.contact-hours .hours-table th:first-child{white-space:nowrap;}
@media (min-width:761px){
  .contact-hours .hours-table td,.contact-hours .hours-table th{white-space:nowrap;}
}
.hours-table tr.today td{background:rgba(255,184,0,.08);}
.hours-table tr.today td:first-child{border-left:3px solid var(--accent);padding-left:calc(.8em - 3px);}
.badge-today{background:var(--accent);color:#1a1b1d;font:700 .68rem/1 'Inter';padding:.3em .55em;border-radius:5px;margin-left:.6em;letter-spacing:.04em;text-transform:uppercase;vertical-align:middle;}
.hours-table-toggle{margin-top:1.8em;}
.hours-table-toggle summary{cursor:pointer;color:var(--accent);font-weight:600;padding:.4em 0;list-style:none;min-height:44px;display:inline-flex;align-items:center;}
.hours-table-toggle summary::-webkit-details-marker{display:none;}
.hours-table-toggle[open] .hours-table{margin-top:1em;}

/* opening-hours timeline — the primary, on-brand visualisation */
.hours-scale{display:grid;grid-template-columns:150px 1fr 210px;gap:1.4em;margin-bottom:.4em;}
.hours-scale-track{display:flex;justify-content:space-between;color:var(--ink-dimmer);font:600 .74rem/1 'Inter',sans-serif;letter-spacing:.05em;text-transform:uppercase;}
.hours-timeline{border-top:1px solid rgba(138,141,145,.28);}
.hours-row{
  display:grid;grid-template-columns:150px 1fr 210px;gap:1.4em;align-items:center;
  padding:.85em .6em;margin:0 -.6em;border-bottom:1px solid rgba(138,141,145,.16);border-radius:8px;
}
.hours-row.today{background:rgba(255,184,0,.07);}
.hours-day{font:600 1.05rem/1 'Saira Condensed',system-ui,sans-serif;letter-spacing:.02em;color:var(--ink);text-transform:uppercase;}
.hours-row.today .hours-day{color:var(--chrome-hi);}
.hours-track{position:relative;height:12px;background:rgba(138,141,145,.14);border-radius:6px;}
.hours-bar{position:absolute;top:0;bottom:0;background:linear-gradient(90deg,var(--accent-2),var(--accent));border-radius:6px;}
.hours-row.today .hours-bar{box-shadow:0 0 0 1px rgba(255,184,0,.55),0 0 18px rgba(255,184,0,.4);}
.hours-now{position:absolute;top:-7px;bottom:-7px;width:2px;background:var(--chrome-hi);}
.hours-now::after{
  content:"TEĎ";position:absolute;top:-1.7em;left:50%;transform:translateX(-50%);
  font:700 .62rem/1 'Inter',sans-serif;letter-spacing:.05em;color:var(--chrome-hi);
  background:#1a1b1d;padding:.22em .45em;border-radius:4px;white-space:nowrap;
}
.hours-time{font:600 .95rem/1.3 'Inter',sans-serif;color:var(--ink-dim);text-align:right;}
.hours-row.today .hours-time{color:var(--chrome-hi);}
@media (max-width:760px){
  .hours-scale,.hours-row{grid-template-columns:86px 1fr;}
  .hours-scale span:last-child,.hours-time{display:none;}
}

/* pricing */
.tabbar{display:flex;gap:.5em;flex-wrap:wrap;margin-bottom:1.4em;}
.tab{
  background:rgba(45,46,48,.6);border:1px solid rgba(138,141,145,.3);color:var(--ink-dim);
  padding:.7em 1.2em;border-radius:9px;cursor:pointer;font:600 .88rem 'Inter';min-height:44px;
}
.tab[aria-selected="true"]{background:var(--accent);color:#1a1b1d;border-color:var(--accent);}
.tab-panel{display:none;}
.tab-panel.active{display:block;}
.price-list{list-style:none;margin:0;padding:0;border-top:1px solid rgba(138,141,145,.28);}
.price-row{
  display:flex;justify-content:space-between;gap:1.2em;align-items:baseline;
  padding:1em .3em;border-bottom:1px solid rgba(138,141,145,.16);
  transition:background-color .2s;
}
.price-row:hover{background-color:rgba(255,184,0,.05);}
.price-row span:first-child{color:var(--ink);}
.price-row .price-num{color:var(--accent);font-family:'Saira Condensed',system-ui,sans-serif;font-weight:600;font-size:1.3rem;white-space:nowrap;}
.price-row.featured{position:relative;padding-left:1em;border-left:3px solid var(--accent);background-color:rgba(255,184,0,.06);}
.price-row.featured span:first-child{color:var(--chrome-hi);font-weight:600;}
.price-row .featured-tag{
  display:inline-block;margin-left:.7em;font:700 .66rem/1 'Inter',sans-serif;letter-spacing:.05em;
  color:#1a1b1d;background:var(--accent);padding:.28em .5em;border-radius:4px;vertical-align:middle;
}
.price-note{font-size:.85rem;color:var(--ink-dimmer);margin-top:1em;}

/* schedule */
/* schedule — same spec-list rhythm as Služby, with bold lesson times */
.schedule-list .spec-title{min-width:0;}
.lesson-slot{display:inline-flex;gap:.5em;align-items:baseline;margin-right:1.8em;color:var(--ink-dim);}
.lesson-slot strong{font-family:'Saira Condensed',system-ui,sans-serif;font-weight:600;color:var(--accent);white-space:nowrap;}

/* trainers — bold typographic roster with expandable bios, not avatar cards */
.trainer-index{list-style:none;margin:0;padding:0;border-top:1px solid rgba(138,141,145,.3);}
.trainer-row{border-bottom:1px solid rgba(138,141,145,.18);}
.trainer-row details{width:100%;}
.trainer-row summary{
  display:grid;grid-template-columns:56px 1fr 9em 32px;gap:1.4em;align-items:center;
  padding:1.3em 0;cursor:pointer;list-style:none;min-height:44px;
}
.trainer-row summary::-webkit-details-marker{display:none;}
.trainer-row--plain{
  /* same tracks as the expandable rows (empty toggle column) so the phones line up */
  display:grid;grid-template-columns:56px 1fr 9em 32px;gap:1.4em;align-items:center;padding:1.3em 0;
}
.trainer-num{font:600 1rem/1 'Saira Condensed',system-ui,sans-serif;color:var(--accent-deep);letter-spacing:.04em;}
.trainer-name{
  font-family:'Saira Condensed',system-ui,sans-serif;font-weight:600;text-transform:none;
  letter-spacing:0;color:var(--chrome-hi);font-size:clamp(1.4rem,2.4vw,2.1rem);
  transition:color .2s;
}
.trainer-row summary:hover .trainer-name,
.trainer-row summary:focus-visible .trainer-name{color:var(--accent);}
.trainer-phone{color:var(--accent);font-size:1rem;text-decoration:none;white-space:nowrap;font-variant-numeric:tabular-nums;}
.trainer-phone:hover{text-decoration:underline;}
.trainer-toggle{
  position:relative;width:32px;height:32px;border:1px solid rgba(138,141,145,.4);border-radius:50%;
  flex:none;transition:transform .25s,border-color .25s;
}
.trainer-toggle::before,.trainer-toggle::after{
  content:"";position:absolute;background:var(--accent);top:50%;left:50%;transform:translate(-50%,-50%);
}
.trainer-toggle::before{width:12px;height:2px;}
.trainer-toggle::after{width:2px;height:12px;transition:opacity .2s;}
.trainer-row details[open] .trainer-toggle{transform:rotate(180deg);border-color:var(--accent);}
.trainer-row details[open] .trainer-toggle::after{opacity:0;}
.trainer-bio{padding:0 0 1.6em 5.6em;max-width:66ch;}
.trainer-bio p{margin:0 0 .5em;font-size:1.02rem;}
.trainer-bio a{color:var(--accent);font-size:.95rem;text-decoration:none;}
.trainer-bio a:hover{text-decoration:underline;}
@media (max-width:760px){
  .trainer-row summary,.trainer-row--plain{grid-template-columns:1fr auto;grid-template-areas:"name toggle" "num phone";row-gap:.4em;}
  .trainer-num{grid-area:num;}
  .trainer-name{grid-area:name;}
  .trainer-phone{grid-area:phone;}
  .trainer-toggle{grid-area:toggle;}
  .trainer-bio{padding-left:0;}
}

/* bar */
details.bar-group{
  background:rgba(32,33,35,.6);border:1px solid rgba(138,141,145,.2);border-radius:10px;
  padding:.2em 1.1em;margin-bottom:.7em;
}
details.bar-group summary{
  cursor:pointer;padding:.9em 0;font-weight:600;color:var(--chrome-hi);list-style:none;
  display:flex;justify-content:space-between;align-items:center;min-height:44px;
}
details.bar-group summary::-webkit-details-marker{display:none;}
details.bar-group summary .chev{transition:transform .25s;color:var(--accent);}
details.bar-group[open] summary .chev{transform:rotate(180deg);}
.bar-items{list-style:none;margin:0;padding:0 0 1em;display:grid;gap:.4em;}
.bar-items li{display:flex;justify-content:space-between;color:var(--ink-dim);font-size:.92rem;padding:.35em 0;border-top:1px dashed rgba(138,141,145,.18);}
.bar-items li span:last-child{color:var(--accent);font-weight:600;}

/* prostor / plan */
.zone-map{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1.2em;}
.zone-card svg{width:100%;height:auto;display:block;margin-bottom:.8em;}
/* tablet: auto-fit's own 3-narrow-column step reads as squeezed text ("Volné činky, cardio /
   stroje…") — force a clean 2-column layout (third card full-width) in that band instead */
@media (max-width:1100px) and (min-width:561px){
  .zone-map{grid-template-columns:repeat(2,1fr);}
  .zone-card:nth-child(3){grid-column:1 / -1;}
}
@media (max-width:560px){
  .zone-map{grid-template-columns:1fr;}
}

/* practical info — roomy tiles that always fill the full column width, even on an
   incomplete last row (flexbox grow, not fixed grid tracks) */
.info-grid3{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:1.4em;}
.info-tile{
  flex:1 1 300px;
  display:flex;gap:1.1em;align-items:flex-start;
  padding:1.7em 1.8em;border-radius:var(--radius);
  background:linear-gradient(165deg,rgba(45,46,48,.7),rgba(32,33,35,.7));
  border:1px solid rgba(138,141,145,.22);
}
.info-tile svg{flex:none;width:32px;height:32px;color:var(--accent);margin-top:.1em;}
.info-tile strong{
  display:block;color:var(--chrome-hi);margin-bottom:.35em;
  font:600 1.15rem/1.2 'Saira Condensed',system-ui,sans-serif;text-transform:none;letter-spacing:0;
}
.info-tile span{display:block;color:var(--ink-dim);font-size:1rem;line-height:1.55;}
@media (max-width:620px){ .info-tile{flex-basis:100%;} }

/* calculator */
.calc-box{display:flex;flex-wrap:wrap;gap:1.6em;align-items:flex-end;}
.calc-field label{display:block;font-size:.85rem;color:var(--ink-dimmer);margin-bottom:.4em;}
.calc-field input[type=range]{width:220px;accent-color:var(--accent);}
.calc-field select{
  background:var(--steel-1);color:var(--ink);border:1px solid rgba(138,141,145,.35);
  border-radius:8px;padding:.6em .8em;min-height:44px;font:inherit;
}
.calc-result{
  background:rgba(255,184,0,.08);border:1px solid rgba(255,184,0,.35);
  border-radius:12px;padding:1.2em 1.4em;margin-top:1.4em;
}
.calc-result strong{color:var(--accent);font-size:1.15rem;}

/* contact — two columns need real room: the phone number (unbreakable nbsp string) needs
   ~280px+ and the nowrap hours table ~400px+, or one of them visually overflows its own
   box even though the page itself doesn't scroll. Below 1200px there just isn't enough
   width for both side by side, so stack to a single column instead of squeezing either. */
.contact-grid{display:grid;grid-template-columns:minmax(280px,1.3fr) minmax(400px,.8fr);gap:3.5em;align-items:start;}
@media (max-width:1200px){.contact-grid{grid-template-columns:minmax(0,1fr);}}

.contact-phone{display:flex;flex-direction:column;gap:.3em;text-decoration:none;margin-bottom:1.8em;}
.contact-phone-label{color:var(--ink-dimmer);font:600 .8rem/1 'Inter',sans-serif;letter-spacing:.1em;text-transform:uppercase;}
.contact-phone-num{
  font-family:'Saira Condensed',system-ui,sans-serif;font-weight:700;letter-spacing:.01em;
  font-size:clamp(1.9rem,11vw,4rem);line-height:1;color:var(--chrome-hi);transition:color .2s;
}
.contact-phone:hover .contact-phone-num,.contact-phone:focus-visible .contact-phone-num{color:var(--accent);}
.contact-address{display:flex;gap:.9em;align-items:flex-start;margin-bottom:1.4em;}
.contact-address svg{flex:none;width:24px;height:24px;color:var(--accent);margin-top:.2em;}
.contact-address p{margin:0;font-size:1.08rem;color:var(--ink);max-width:36ch;}
.contact-map-cta{margin-bottom:2em;}
.contact-secondary{
  list-style:none;margin:0;padding:1.5em 0 0;border-top:1px solid rgba(138,141,145,.2);
  display:grid;gap:.9em;
}
.contact-secondary li{display:flex;gap:.8em;align-items:center;}
.contact-secondary svg{flex:none;width:20px;height:20px;color:var(--accent);}
.contact-secondary a{color:var(--ink-dim);text-decoration:none;font-size:.98rem;}
.contact-secondary a:hover{color:var(--accent);}

.contact-hours{
  background:linear-gradient(165deg,rgba(45,46,48,.72),rgba(32,33,35,.72));
  border:1px solid rgba(138,141,145,.22);border-radius:var(--radius);
  padding:2em 2.2em 1.8em;
}
.contact-hours h3{margin-bottom:.9em;}
.contact-hours-link{
  display:inline-block;margin-top:1.2em;color:var(--accent);text-decoration:none;
  font-size:.92rem;font-weight:600;
}
.contact-hours-link:hover{text-decoration:underline;}

footer{
  padding:3em 14px 2.5em;border-top:1px solid rgba(138,141,145,.15);
  color:var(--ink-dimmer);font-size:.85rem;
}
.footer-inner{max-width:var(--maxw);margin:0 auto;display:flex;flex-wrap:wrap;justify-content:space-between;gap:1.5em;}
footer a{color:var(--ink-dim);}

.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;}

/* mobile: bump small inline text links to the 44px touch target minimum without
   touching the approved desktop layout (scoped to this breakpoint only) */
@media (max-width:760px){
  .wordmark,.trainer-phone,.contact-secondary a,footer a,.price-note a,.trainer-bio a,.contact-hours-link{
    display:inline-flex;align-items:center;min-height:44px;
  }
}

/* gallery — tabs per zone; photo slots wait for the client's real photos */
.gallery-panel.active{display:flex;flex-direction:column;gap:1.2em;}
.gallery-note{max-width:62ch;}
.gallery-note p{margin:0;}
.gallery-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.9em;}
.shot{
  position:relative;margin:0;aspect-ratio:4/3;border-radius:12px;overflow:hidden;
  background:
    repeating-linear-gradient(135deg,rgba(138,141,145,.07) 0 2px,transparent 2px 14px),
    linear-gradient(160deg,var(--steel-1),var(--bg-1));
  border:1px solid rgba(138,141,145,.22);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5em;
  color:var(--ink-dimmer);font-size:.82rem;text-align:center;padding:1em;
}
.shot svg{width:30px;height:30px;color:var(--accent);opacity:.8;}
.shot--big{grid-column:span 2;grid-row:span 2;aspect-ratio:auto;}
@media (max-width:620px){ .gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr));} .shot--big{grid-row:auto;aspect-ratio:16/10;} }

/* news */
.news-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.4em;}
.news-card{display:flex;flex-direction:column;gap:.7em;height:100%;}
.news-date{font:700 .74rem/1 'Inter',sans-serif;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);}
.news-card h3{margin:0;text-transform:none;letter-spacing:0;font-size:clamp(1.2rem,1.7vw,1.45rem);line-height:1.2;}
.news-card p{margin:0;}
.news-tag{margin-top:auto;align-self:flex-start;font:600 .72rem/1 'Inter',sans-serif;color:var(--ink-dimmer);border:1px solid rgba(138,141,145,.3);border-radius:999px;padding:.45em .8em;}
@media (max-width:1100px){ .news-list{grid-template-columns:minmax(0,1fr);} }

/* FAQ */
.faq-list{border-top:1px solid rgba(138,141,145,.28);}
.faq-item{border-bottom:1px solid rgba(138,141,145,.18);}
.faq-item summary{
  display:flex;justify-content:space-between;align-items:center;gap:1.4em;
  padding:1.25em 0;cursor:pointer;list-style:none;min-height:44px;
  font:600 clamp(1.05rem,1.4vw,1.25rem)/1.35 'Saira Condensed',system-ui,sans-serif;color:var(--chrome-hi);
}
.faq-item summary::-webkit-details-marker{display:none;}
.faq-item summary:hover{color:var(--accent);}
.faq-item summary .trainer-toggle{flex:none;}
.faq-item[open] summary .trainer-toggle{transform:rotate(180deg);border-color:var(--accent);}
.faq-item[open] summary .trainer-toggle::after{opacity:0;}
.faq-item p{margin:0 0 1.4em;max-width:70ch;font-size:1.02rem;}

/* floating social rail (desktop); on small screens the same links live in the footer */
.social-rail{
  position:fixed;right:14px;top:50%;transform:translateY(-50%);z-index:90;
  display:flex;flex-direction:column;gap:.5em;padding:.55em;
  background:rgba(26,27,29,.78);border:1px solid rgba(138,141,145,.25);border-radius:14px;
}
.social-rail a,.social-row a{
  width:42px;height:42px;display:inline-flex;align-items:center;justify-content:center;border-radius:10px;
  color:var(--ink-dim);transition:color .2s,background-color .2s;
}
.social-rail a:hover,.social-rail a:focus-visible,.social-row a:hover,.social-row a:focus-visible{color:#1a1b1d;background:var(--accent);}
.social-rail svg,.social-row svg{width:20px;height:20px;}
.social-row{display:flex;gap:.4em;margin-top:.8em;}
@media (max-width:1180px){ .social-rail{display:none;} }
/* keep content clear of the rail until the viewport is wide enough to leave a free margin */
@media (min-width:1181px) and (max-width:1720px){ main{padding-right:96px;} }

/* ---------- multi-page additions ---------- */
.nav-links a[aria-current="page"],.mobile-menu a[aria-current="page"]{color:var(--chrome-hi);border-bottom-color:var(--accent);}
.mobile-menu a[aria-current="page"]{color:var(--accent);}

.section-more{margin:1.6em 0 0;}
.section-more a{color:var(--accent);font-weight:600;text-decoration:none;display:inline-flex;align-items:center;min-height:44px;}
.section-more a:hover{text-decoration:underline;}
.spec-link{color:inherit;text-decoration:none;border-bottom:1px solid rgba(255,184,0,.45);}
.spec-link:hover,.spec-link:focus-visible{color:var(--accent);}
.news-link{color:inherit;text-decoration:none;}
.news-link::after{content:"";position:absolute;inset:0;border-radius:inherit;}
.news-card{position:relative;transition:border-color .2s;}
.news-card:hover{border-color:rgba(255,184,0,.5);}
.news-card:hover .news-link{color:var(--accent);}
.news-card:focus-within{outline:3px solid var(--accent);outline-offset:2px;}
.news-list--archive .news-card h2{margin:0;text-transform:none;letter-spacing:0;font-size:clamp(1.25rem,1.8vw,1.55rem);line-height:1.2;}

/* subpage header */
.page-head{padding:2.6em 0 3.2em;}
.crumbs{font-size:.88rem;color:var(--ink-dimmer);margin:0 0 1.6em;}
.crumbs a{color:var(--ink-dim);text-decoration:none;}
.crumbs a:hover{color:var(--accent);}
.crumbs span[aria-hidden]{margin:0 .5em;}
.page-head h1{
  font-family:'Saira Stencil One','Saira Condensed',system-ui,sans-serif;font-weight:400;
  text-transform:uppercase;letter-spacing:.01em;line-height:1;margin:0 0 .35em;
  font-size:clamp(2.4rem,6vw,4.6rem);color:var(--chrome-hi);
}
.page-head .lead{font-size:clamp(1.05rem,2vw,1.25rem);color:var(--ink);max-width:58ch;margin:0;}
.page-head .actions{display:flex;flex-wrap:wrap;gap:.8em;margin-top:1.8em;}
@media (max-width:480px){ .page-head{padding-top:2.2em;} }

/* trainer profiles */
.profile-list{list-style:none;margin:0;padding:0;border-top:1px solid rgba(138,141,145,.28);}
.profile{display:grid;grid-template-columns:56px minmax(0,1fr) 12em;gap:1.4em;padding:2em 0;border-bottom:1px solid rgba(138,141,145,.18);}
.profile h2{font-size:clamp(1.5rem,2.6vw,2.2rem);text-transform:none;letter-spacing:0;margin:0 0 .3em;}
.profile p{margin:0 0 .8em;max-width:62ch;}
.profile-tags{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.45em;}
.profile-tags li{font:600 .76rem/1 'Inter',sans-serif;color:var(--ink-dim);border:1px solid rgba(138,141,145,.3);border-radius:999px;padding:.5em .85em;}
.profile-contact{display:flex;flex-direction:column;gap:.5em;align-items:flex-start;}
.profile-contact .trainer-phone{font-size:1.1rem;}
.profile-contact a:not(.trainer-phone){color:var(--ink-dim);text-decoration:none;font-size:.95rem;display:inline-flex;align-items:center;min-height:44px;}
.profile-contact a:not(.trainer-phone):hover{color:var(--accent);}
@media (max-width:760px){
  .profile{grid-template-columns:minmax(0,1fr);gap:.8em;}
  .profile .trainer-num{display:none;}
}
.name-list{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.6em;}
.name-list li{padding:.6em 1em;border:1px solid rgba(138,141,145,.25);border-radius:10px;color:var(--ink);}

/* article */
.article{max-width:72ch;}
.article .article-meta{display:flex;gap:1em;align-items:center;margin:0 0 1.2em;}
.article p,.article li{font-size:1.08rem;color:var(--ink-dim);}
.article h2{font-size:clamp(1.4rem,2.2vw,1.9rem);margin:1.6em 0 .5em;}
.article ul{padding-left:1.2em;margin:0 0 1em;}
.article a{color:var(--accent);}

/* footer site links */
.footer-links ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,auto));gap:.35em 1.8em;}
.footer-links a{text-decoration:none;}
.footer-links a:hover{color:var(--accent);}
a[data-planned]{opacity:.55;cursor:default;}
.trainer-name .muted{font:500 .55em/1 "Inter",sans-serif;color:var(--ink-dimmer);letter-spacing:0;vertical-align:middle;}
