/* Vibes family layer for vibesstudio.com: the header, buttons, bottom bar and
   footer match vibesgym.com; the studio keeps its dark look, cinematic hero,
   timetable and instructor features. Loaded after each page's own styles. */

/* Family bar: same on both sites */
.vfam{background:#000;border-bottom:1px solid rgba(255,255,255,.06);font-size:12.5px;font-weight:800}
.vfam .wrap,.tb-in{max-width:1600px;margin:0 auto;padding-left:clamp(18px,3vw,40px);padding-right:clamp(18px,3vw,40px)}
.vfam-in{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:34px;flex-wrap:nowrap}
.vfam-sites{display:flex;gap:2px}
.vfam-sites a{position:relative;color:#9e97b5;padding:9px 10px;text-decoration:none;letter-spacing:.02em}
.vfam-sites a:hover{color:#fff}
.vfam-sites a.on{color:#fff}
.vfam-sites a.on::after{content:"";position:absolute;left:10px;right:10px;bottom:3px;height:2px;border-radius:2px;background:var(--vt-accent,#77679a)}
.vfam-note{margin:0;color:#8f88a6;font-weight:700}
.vfam-note a{color:#e4ddf5;font-weight:900;text-decoration:none}
@media (max-width:700px){.vfam-note span{display:none}}

/* Header: same size and weight as the vibesgym.com bar */
.topbar{background:#0b0b0d;border-bottom:1px solid rgba(255,255,255,.08)}
.tb-in{height:78px;gap:18px}
.tb-logo img{height:24px}
.tb-nav{justify-content:center}
.tb-logo img{height:26px}
.tb-nav a,.tb-drop summary{color:#fff;opacity:.9;font-weight:800;font-size:13.5px;padding:9px 10px;border-radius:10px}
.tb-nav a:hover,.tb-drop summary:hover,.tb-drop[open] summary{opacity:1;background:rgba(255,255,255,.07)}
.tb-ctas{display:flex;gap:10px;flex:none}
.tb-btn{display:inline-flex;align-items:center;justify-content:center;font-weight:900;font-size:14px;line-height:1;padding:10px 14px;border-radius:12px;border:2px solid transparent;text-decoration:none;white-space:nowrap;transition:filter .15s ease,background-color .15s ease}
.tb-buy{background:var(--vt-accent,#77679a);border-color:var(--vt-accent,#77679a);color:#fff;box-shadow:0 12px 26px rgba(119,103,154,.28)}
.tb-buy:hover{filter:brightness(1.08)}
.tb-ghost{background:transparent;border-color:rgba(255,255,255,.4);color:#fff}
.tb-ghost:hover{background:rgba(255,255,255,.08)}
.tb-book-m,.tb-burger{display:none}
.tb-burger summary{list-style:none;cursor:pointer;width:44px;height:44px;border-radius:12px;border:1px solid rgba(255,255,255,.25);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px}
.tb-burger summary::-webkit-details-marker{display:none}
.tb-burger summary span{display:block;width:18px;height:2px;border-radius:2px;background:#fff}
.tb-burger-panel{position:absolute;left:0;right:0;top:100%;background:#0b0b0d;border-bottom:1px solid rgba(255,255,255,.1);padding:10px 18px 18px;display:flex;flex-direction:column;max-height:calc(100vh - 120px);overflow-y:auto;z-index:200}
.tb-burger-panel a{color:#fff;font-weight:800;font-size:16px;padding:12px 4px;border-bottom:1px solid rgba(255,255,255,.06);text-decoration:none}
.tb-div{height:10px}
@media (max-width:980px){
  .tb-in{height:70px;flex-wrap:nowrap;padding-top:0;justify-content:space-between}
  .tb-nav,.tb-ctas{display:none}
  .tb-book-m{display:inline-flex}
  .tb-burger{display:block}
  .topbar{position:sticky}
}

/* Bottom bar: two equal buttons, centred, like vibesgym.com */
.stickybar{background:linear-gradient(180deg,rgba(10,10,12,.94),rgba(10,10,12,.98));border-top:1px solid rgba(255,255,255,.1)}
.sb-in{justify-content:center;padding:10px 12px calc(10px + env(safe-area-inset-bottom,0px))}
.sb-msg{display:none}
.sb-btns{display:grid;grid-template-columns:repeat(2,minmax(0,280px));gap:10px;width:100%;justify-content:center}
.sb-btn{min-height:50px;font-size:14px;border-radius:12px;font-weight:900;display:inline-flex;align-items:center;justify-content:center}

/* Footer: same four column layout as vibesgym.com, in the studio's dark */
.vs-foot{background:#0a0a0c;border-top:1px solid rgba(255,255,255,.08);padding:48px 0 110px}
.vs-foot .wrap{max-width:1160px}
.vs-foot-in{display:block}
.vs-foot-grid{display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr;gap:16px}
.vs-foot-col{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.1);border-radius:14px;padding:22px 20px}
.vs-foot-col a{display:block;font-size:14px;padding:5px 0;color:#e8e6ef;text-decoration:none}
.vs-foot-col a:hover{color:#fff;text-decoration:underline}
.vs-foot-h{font-size:12px;font-weight:900;letter-spacing:.12em;text-transform:uppercase;color:#a5a2b3;margin:0 0 10px}
.vs-foot-brand img{height:25px;width:auto;margin-bottom:14px}
.vs-foot-addr{margin:0;font-size:14px;line-height:1.65;color:#a5a2b3}
.vs-foot-addr a,.vs-foot-social a{display:inline;padding:0;color:#d9d0f2}
.vs-foot-social{margin:12px 0 0;font-size:14px;color:#a5a2b3}
.vs-foot-legal{margin:22px 0 0;font-size:12.5px;color:#8f88a6}
@media (max-width:860px){.vs-foot-grid{grid-template-columns:1fr 1fr}.vs-foot-brand{grid-column:1/-1}}
@media (max-width:480px){.vs-foot-grid{grid-template-columns:1fr}}
/* Seasonal theme layer: only applies while html.vt-on is set. */
.vt-on [data-vt-sky]{position:relative}
.vt-sky{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:0}
.vt-moon{position:absolute;right:6%;top:14%;width:clamp(40px,6vw,74px);color:#ffe7b8;filter:drop-shadow(0 0 22px rgba(255,200,120,.55));opacity:.85}
.vt-bat{position:absolute;width:clamp(26px,3vw,40px);color:#120a1c;opacity:.8;animation:none}
.vt-bat0{left:62%;top:22%}.vt-bat1{left:74%;top:40%;width:22px;animation-delay:-4s}.vt-bat2{left:12%;top:18%;width:20px;animation-delay:-8s;opacity:.55}.vt-bat3{left:84%;top:12%;width:18px;animation-delay:-11s;opacity:.6}
@keyframes vtfly{0%,100%{transform:translate(0,0) rotate(-4deg)}25%{transform:translate(18px,-10px) rotate(5deg)}50%{transform:translate(36px,4px) rotate(-3deg)}75%{transform:translate(14px,10px) rotate(4deg)}}
.vt-ground{position:absolute;right:clamp(12px,4vw,48px);bottom:-6px;display:flex;align-items:flex-end;gap:6px;pointer-events:none;z-index:1}
.vt-pk{display:block;color:var(--vt-accent)}.vt-pk0{width:46px}.vt-pk1{width:32px}
.vt-on [data-vt-ground]{position:relative}
@media (prefers-reduced-motion:reduce){.vt-bat{animation:none}}
.vt-on .vfam,.vt-on .topbar,.vt-on .tb-burger-panel{background:var(--vt-header)}
.vt-on .tb-buy,.vt-on .btn-primary{background:var(--vt-accent);border-color:var(--vt-accent);color:var(--vt-accent-text);box-shadow:0 12px 26px rgba(240,122,34,.32)}
.vt-on .promo-bar{background:linear-gradient(90deg,var(--vt-accent),#c4561a)}
.vt-on .hero-in,.vt-on .hero .wrap{position:relative;z-index:2}
.vt-on .eyebrow,.vt-on .kicker{color:var(--vt-accent)}
.vt-on .vs-foot{background:linear-gradient(180deg,#0a0a0c,var(--vt-header))}
/* Artwork from GymStrato's theme feed replaces the drawn ornaments */
.vt-art .vt-sky,.vt-art .vt-ground{display:none}
.vt-hero-art{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:1;pointer-events:none;max-width:none}
.vt-art .nav,.vt-art .topbar{position:relative}
.vt-art .nav::after,.vt-art .topbar::after{content:"";position:absolute;left:0;right:0;top:100%;height:40px;background:var(--vt-header-strip) center top/auto 100% repeat-x;pointer-events:none;z-index:5}
.vt-art [data-vt-ground]{position:relative}
.vt-art [data-vt-ground]::before{content:"";position:absolute;left:0;right:0;bottom:100%;height:clamp(80px,12vw,180px);background:var(--vt-footer) center bottom/cover no-repeat;pointer-events:none}
.vt-art .vg-legal-head::before,.vt-art .vg-legal-head::after{content:"";position:absolute;top:0;width:clamp(120px,18vw,240px);aspect-ratio:1;background:var(--vt-corner-l) left top/contain no-repeat;pointer-events:none;z-index:1}
.vt-art .vg-legal-head::before{left:0}
.vt-art .vg-legal-head::after{right:0;left:auto;background-image:var(--vt-corner-r);background-position:right top;border-radius:0;inset:auto 0 auto auto}
.vt-art .vg-legal,.vt-art .v2-soft{background-image:var(--vt-pattern)}

/* Family bar stays on screen with the header, like vibesgym.com */
.vfam{position:sticky;top:0;z-index:101}
.vfam-in{min-height:37.4px}
.topbar{position:sticky;top:38px;z-index:100}
[id]{scroll-margin-top:140px}

/* Timetable drawn from GymStrato in the site's style (gtt) */
.gtt-page{background:#0a0a0c;padding:0 0 80px}
.gtt-hero{background:#0b0b0d;color:#fff;padding:48px 0 30px;position:relative;overflow:hidden}
.gtt-hero h1{font-size:clamp(32px,5vw,52px);font-weight:900;margin:0 0 8px;color:#fff}
.gtt-hero p{margin:0;color:rgba(255,255,255,.8);font-size:17px;max-width:640px}
.gtt-hero .wrap{position:relative;z-index:2}
.gtt{max-width:1180px;margin:0;padding:0 clamp(18px,3vw,40px)}
.gtt-days{display:flex;flex-wrap:wrap;gap:8px;margin:26px 0 8px}
.gtt-days a{display:flex;flex-direction:column;align-items:center;min-width:76px;padding:10px 14px;border-radius:14px;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.1);color:#fff;text-decoration:none!important;box-shadow:none}
.gtt-days a strong{font-size:15px;font-weight:900}
.gtt-days a span{font-size:13px;color:#a5a2b3}
.gtt-days a:hover{border-color:#77679a}
.gtt-day{margin-top:28px;scroll-margin-top:140px}
.gtt-day h2{font-size:26px;font-weight:900;margin:0 0 12px;color:#fff}
.gtt-day h2 span{font-weight:700;color:#a5a2b3;font-size:18px;margin-left:6px}
.gtt-list{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.gtt-row{display:grid;grid-template-columns:110px 1fr auto;align-items:center;gap:18px;padding:18px 20px;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.1);border-radius:14px;box-shadow:none}
.gtt-time strong{display:block;color:#fff;font-size:24px;font-weight:900;letter-spacing:-.01em;font-variant-numeric:tabular-nums}
.gtt-time span{font-size:13px;color:#a5a2b3}
.gtt-info strong{display:block;font-size:19px;font-weight:900;color:#fff}
.gtt-info span{font-size:15px;color:#a5a2b3}
.gtt-book{display:inline-flex;align-items:center;justify-content:center;min-width:110px;padding:14px 22px;border-radius:12px;font-weight:900;font-size:15px;background:var(--vt-accent,#77679a);color:#fff!important;text-decoration:none!important;box-shadow:0 12px 26px rgba(119,103,154,.28)}
.gtt-book:hover{filter:brightness(1.08)}
.gtt-none,.gtt-empty{padding:18px 20px;background:#fff;border-radius:14px;border:1px dashed rgba(255,255,255,.12);color:#a5a2b3}
.gtt-foot{margin:28px 0 0;color:#a5a2b3;font-size:14.5px}
.gtt-foot a{font-weight:800;color:#d9d0f2}
@media (max-width:640px){.gtt-row{grid-template-columns:72px 1fr;gap:6px 14px;padding:16px}.gtt-time strong{font-size:20px}.gtt-book{grid-column:1/-1;width:100%}.gtt-days a{min-width:0;flex:1 1 calc(33% - 8px)}}
.vt-on .gtt-hero{background:linear-gradient(160deg,var(--vt-header),#0b0b0d 75%)}
.vt-on .gtt-days a:hover{border-color:var(--vt-accent)}
.gtt-hero .wrap{max-width:1600px;margin:0 auto;padding:0 clamp(18px,3vw,40px)}

/* Studio terms page (terms.php): same layout as the vibesgym.com legal pages */
.vsl-page{background:#0a0a0c;padding:0 0 80px}
.vsl-hero{background:#0b0b0d;color:#fff;padding:48px 0 34px;position:relative;overflow:hidden;border-bottom:1px solid rgba(255,255,255,.08)}
.vsl-hero .wrap,.vsl-wrap{max-width:1100px;margin:0 auto;padding:0 clamp(18px,3vw,40px);position:relative;z-index:2}
.vsl-kicker{margin:0 0 10px;font-size:13px;font-weight:900;letter-spacing:.14em;text-transform:uppercase;color:var(--vt-accent,#9b8cbd)}
.vsl-hero h1{font-size:clamp(32px,5vw,52px);font-weight:900;margin:0 0 8px;color:#fff;line-height:1.05}
.vsl-meta{margin:0 0 14px;color:rgba(255,255,255,.7);font-size:16px}
.vsl-lead{margin:0 0 18px;color:rgba(255,255,255,.88);font-size:17px;max-width:700px}
.vsl-actions{margin:0 0 20px}
.vsl-btn{display:inline-flex;padding:13px 20px;border-radius:12px;font-weight:900;background:var(--vt-accent,#77679a);color:#fff!important;text-decoration:none}
.vsl-toc{display:flex;flex-wrap:wrap;gap:8px}
.vsl-toc a{font-size:14px;font-weight:800;padding:8px 13px;border-radius:999px;border:1px solid rgba(255,255,255,.18);color:#fff;text-decoration:none;background:rgba(255,255,255,.04)}
.vsl-toc a.on,.vsl-toc a:hover{background:var(--vt-accent,#77679a);border-color:var(--vt-accent,#77679a)}
.vsl-body{background:#fff;color:#1b1824;border-radius:18px;padding:clamp(22px,4vw,48px);margin-top:-1px;font-size:16.5px;line-height:1.65;margin-top:28px}
.vsl-body h2{font-size:24px;font-weight:900;margin:36px 0 12px;color:#14111c;scroll-margin-top:150px}
.vsl-body h2:first-child{margin-top:0}
.vsl-body h3,.vsl-body h3.vsl-sub{font-size:17px;font-weight:900;margin:24px 0 8px;color:#14111c}
.vsl-body h3.vsl-sub span{color:var(--vt-accent,#77679a);margin-right:4px}
.vsl-body ul{padding-left:20px}.vsl-body li{margin:6px 0}.vsl-body li::marker{color:var(--vt-accent,#77679a)}
.vsl-body a{color:#5b4c86}
.vsl-body [id]{scroll-margin-top:150px}
#t-studio{background:#f6f3fb;border-radius:14px;padding:4px 18px 10px;margin:0 -18px}
.vsl-foot{color:rgba(255,255,255,.75);margin:22px 0 0}.vsl-foot a{color:#fff}

/* ===== Studio linked look (v8): same shell as vibesgym.com =====
   Same 1600px width and side padding, light content sections with the
   gym site's cards, dark header and hero, no scroll fade ins. */
.wrap{max-width:1600px;padding-left:clamp(18px,3vw,40px);padding-right:clamp(18px,3vw,40px)}
.promo-bar-in{max-width:1600px}
.vs-foot .wrap{max-width:1600px}
html.anim .rv,.anim .rv{opacity:1!important;transform:none!important;transition:none!important}

/* Hero: left aligned like the gym home page */
.hero-cine{min-height:0;padding:96px 0 64px;text-align:left}
.hero-cine .logo{width:min(300px,64vw);margin:0 0 30px;filter:none}
.hero-cine .eyebrow{letter-spacing:.2em}
.hero-cine h1{max-width:18ch;margin:0 0 16px}
.hero-cine .lead{margin:0 0 28px;max-width:620px}
.hero-cine .dates{margin:0 0 28px}
.hero-cine .cta{justify-content:flex-start}
.hero-cue{display:none}

/* Content sections: light, like the gym site */
main > section{
  --panel:#fff;--line:#ece9f5;--muted:#5a5866;--purple-light:#6b5aa2;
  background:#fff;color:#111827;border-bottom:0!important}
main > section:nth-of-type(even){background:#faf9fd}
main > section::before{display:none}
main > section h2{color:#111827}
main > section a:not(.btn):not(.tt-row):not(.prow):not(.step):not(.od-row):not(.tag):not(.od-calbtn){color:#6b5aa2}
main > section :is(.step,.step b,.prow,.tt-tab,.tt-name,.mfee b,.od-count,.od-price,.od-warn b,.inst h4,.inst-name,.pcard h3,.mcard h4,.mprice,.founding h3,.founding .big,.fv h3,.hire-card h3,.nr h2,.faq-i summary,.ridenote h3,.od-name,.stat b,.tag){color:#111827}
main > section :is(.founding p,.mlead,.mlist li,.which,.od-calbtn,.fv p,.nr p,.hire-card p,.faq-i p,.find p,.od-founding p,.inst-teaches li,.inst p,.ridenote p,.step,.mstrap,.od-step p){color:#3f3d4a}
main > section .find a{color:#111827}
main > section :is(.pcard,.mcard,.fv,.hire-card,.faq-i,.inst,.tt-rows,.stat,.step,.od-card,.od-step,.od-row,.find-map){box-shadow:0 6px 16px rgba(17,24,39,.08);border-radius:18px}
main > section .tt-rows,main > section .faq-i{border-radius:14px}
main > section :is(.prow:hover,.tt-row:hover,.od-row:hover){background:#f4f0fb}
main > section .tt-tab[aria-pressed="true"]{color:#fff}
main > section :is(.founding,.od-founding,.nr,.ridenote,.handoff){background:#f4f0fb}
main > section .mcard-hi{box-shadow:0 0 0 2px #77679a,0 14px 28px rgba(17,24,39,.12)}
main > section .bv{color:#fff}
main > section .inst-teaches li{background:#f4f0fb}
@media (min-width:900px){
  main > section .price-cards,main > section .mcards{grid-template-columns:repeat(2,minmax(0,1fr))}
  main > section .inst-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
}
main > section .btn-ghost{color:#111827;border-color:#cfc8e2;background:#fff}
main > section .btn-ghost:hover{background:#f4f0fb}
body{background:#faf9fd;background-image:none}

/* Footer: light cards like the vibesgym.com footer */
.vs-foot{background:#faf9fd;border-top:1px solid #ece9f5;padding:48px 0 120px}
.vt-on .vs-foot{background:linear-gradient(180deg,#fff,var(--vt-tint,#faf9fd))}
.vs-foot-col{background:#fff;border:1px solid #ece9f5;border-radius:14px;box-shadow:0 6px 16px rgba(17,24,39,.08)}
.vs-foot-col a{color:#111827}
.vs-foot-col a:hover{color:#77679a}
.vs-foot-h{color:#5a5866}
.vs-foot-addr,.vs-foot-social{color:#5a5866}
.vs-foot-addr a,.vs-foot-social a{color:#6b5aa2}
.vs-foot-legal{color:#5a5866}
.vs-foot-brand img{filter:brightness(0)}
.vs-foot .wrap{max-width:1600px!important}
.vs-foot-grid{max-width:none;width:100%}
.vt-on body{background:var(--vt-tint,#faf9fd)}
.hero,.hero-cine{background-color:#0a0a0c}

/* Timetable and terms pages: light page under a dark title band, like vibesgym.com */
.gtt-page,.vsl-page{background:#faf9fd}
.vt-on .gtt-page,.vt-on .vsl-page{background:var(--vt-tint,#faf9fd)}
.gtt{max-width:1600px;margin:0 auto}
.gtt-days a{background:#fff;border:1px solid #ece9f5;color:#111827;box-shadow:0 6px 16px rgba(17,24,39,.08)}
.gtt-days a span{color:#5a5866}
.gtt-day h2{color:#111827}
.gtt-day h2 span{color:#5a5866}
.gtt-row{background:#fff;border:1px solid #ece9f5;border-radius:18px;box-shadow:0 6px 16px rgba(17,24,39,.08)}
.gtt-time strong,.gtt-info strong{color:#111827}
.gtt-time span,.gtt-info span{color:#5a5866}
.gtt-none,.gtt-empty{background:#fff;border:1px dashed #dcd7ea;color:#5a5866}
.gtt-foot{color:#5a5866}
.gtt-foot a{color:#6b5aa2}
@media (min-width:1100px){.gtt-list{grid-template-columns:repeat(2,minmax(0,1fr))}}
.vsl-body{box-shadow:0 6px 16px rgba(17,24,39,.08);border:1px solid #ece9f5}
.vsl-foot{color:#5a5866}
.vsl-foot a{color:#6b5aa2}
