
:root{
 --ink:#25221f;--muted:#746b66;--rose:#b77f79;--rose-dark:#9f6863;
 --blush:#ead8d3;--cream:#fbf7f2;--sand:#efe5dc;--white:#fff;
 --line:#e8ddd6;--shadow:0 22px 58px rgba(51,36,28,.10);
 --radius:2px
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;color:var(--ink);background:#fff;font-family:Arial,Helvetica,sans-serif;line-height:1.65}
a{text-decoration:none;color:inherit} img{max-width:100%;display:block}
.wrap{width:min(1180px,calc(100% - 40px));margin:auto}
.topbar{background:var(--ink);color:#fff;font-size:12px;letter-spacing:.05em}
.topbar .wrap{display:flex;justify-content:space-between;gap:22px;padding:8px 0}
header{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.96);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
.nav{min-height:88px;display:flex;align-items:center;justify-content:space-between;gap:24px}
.logo img{width:225px;max-height:70px;object-fit:contain}
.menu{display:flex;align-items:center;gap:18px;text-transform:uppercase;font-size:11px;letter-spacing:.095em}
.menu a:hover{color:var(--rose-dark)}
.btn{display:inline-flex;align-items:center;justify-content:center;padding:13px 20px;border:1px solid var(--ink);font-size:11px;letter-spacing:.12em;text-transform:uppercase;transition:.2s}
.btn:hover{background:var(--ink);color:#fff}
.btn.rose{background:var(--rose);border-color:var(--rose);color:#fff}
.btn.rose:hover{background:var(--rose-dark);border-color:var(--rose-dark)}
.mobile-book{display:none}

.hero{display:grid;grid-template-columns:1fr 1fr;min-height:690px;background:var(--cream)}
.hero-copy{padding:92px max(40px,calc((100vw - 1180px)/2));align-self:center}
.hero-media{position:relative;overflow:hidden}
.hero-media img{width:100%;height:100%;object-fit:cover}
.hero-media:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(251,247,242,.1),transparent 40%)}
.kicker{color:var(--rose-dark);text-transform:uppercase;letter-spacing:.22em;font-size:11px;margin-bottom:18px}
h1,h2,h3{font-family:Georgia,"Times New Roman",serif;font-weight:400;line-height:1.08;margin:0}
h1{font-size:clamp(52px,6vw,84px);letter-spacing:-.025em}
h2{font-size:clamp(38px,4.3vw,58px)}
h3{font-size:29px}
.lead{font-size:18px;color:var(--muted);max-width:680px;margin:24px 0 30px}
.actions{display:flex;gap:12px;flex-wrap:wrap}
section{padding:92px 0}.soft{background:var(--cream)}.blush{background:var(--blush)}
.section-head{max-width:780px;margin-bottom:44px}
.section-head p,.copy p{color:var(--muted);font-size:17px}

.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
.service-card{background:#fff;border:1px solid var(--line);overflow:hidden;transition:.2s}
.service-card:hover{transform:translateY(-4px);box-shadow:var(--shadow)}
.service-card img{width:100%;height:245px;object-fit:cover}
.service-card .body{padding:28px}.service-card p{color:var(--muted)}
.tag{font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--rose-dark);margin-bottom:20px}
.link{font-weight:700;color:var(--rose-dark)}

.split{display:grid;grid-template-columns:1fr 1fr;gap:68px;align-items:center}
.panel{padding:52px;background:var(--blush)}
.panel p{color:#605550}
.about-support-copy p{color:var(--muted);font-size:17px}
.ticks{display:grid;gap:10px;margin-top:24px}
.ticks div{padding:14px 0;border-bottom:1px solid #dfcfca}
.ticks div:before{content:"✓";color:var(--rose-dark);margin-right:10px}
.feature-image{border:1px solid var(--line);box-shadow:var(--shadow)}
.feature-image img{width:100%;height:520px;object-fit:cover}

.icon-card{background:#fff;border:1px solid var(--line);padding:28px}
.icon{width:48px;height:48px;border:1px solid var(--rose);border-radius:50%;display:grid;place-items:center;color:var(--rose-dark);font:22px Georgia,serif;margin-bottom:20px}
.icon-card p{color:var(--muted);font-size:15px}

.locations{display:grid;grid-template-columns:1fr 1fr;gap:24px}
.location{background:#fff;border:1px solid var(--line);overflow:hidden}
.location img{width:100%;height:250px;object-fit:cover}
.location .body{padding:30px}.location .days{color:var(--rose-dark);font-weight:700}
.location-links{display:flex;gap:12px;flex-wrap:wrap;margin-top:20px}

.stats{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--line)}
.stat{text-align:center;padding:28px;border-right:1px solid var(--line)}
.stat:last-child{border-right:0}.stat strong{display:block;font:22px Georgia,serif}.stat span{font-size:12px;color:var(--muted)}

.testimonials{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.quote{background:#fff;border:1px solid var(--line);padding:30px}
.quote p{font:21px/1.5 Georgia,serif}.quote small{color:var(--rose-dark);text-transform:uppercase;letter-spacing:.12em}

.subhero{padding:88px 0 62px;background:var(--cream)}
.subhero-grid{display:grid;grid-template-columns:1fr 1fr;align-items:stretch}
.subhero-copy{padding:70px max(40px,calc((100vw - 1180px)/2))}
.subhero-media img{width:100%;height:100%;min-height:440px;object-fit:cover}
.subhero p{max-width:760px;color:var(--muted);font-size:18px}
.breadcrumbs{font-size:12px;color:var(--muted);margin-bottom:18px}.breadcrumbs a{color:var(--rose-dark)}

.copy{max-width:900px}.copy h2{font-size:42px;margin:44px 0 16px}.copy h3{margin:30px 0 12px}
.info-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:22px}
.info{padding:28px;border:1px solid var(--line);background:#fff}.info p{color:var(--muted)}
.notice{padding:28px;border-left:4px solid var(--rose);background:var(--cream);margin:32px 0}

.about-intro{display:grid;grid-template-columns:.8fr 1.2fr;gap:68px;align-items:start}
.about-intro img{width:100%;height:auto;max-height:680px;object-fit:cover}
.timeline{position:relative;margin-top:20px}
.timeline:before{content:"";position:absolute;left:20px;top:6px;bottom:6px;width:1px;background:var(--rose)}
.timeline-item{position:relative;padding:0 0 28px 62px}
.timeline-dot{position:absolute;left:7px;top:2px;width:28px;height:28px;border-radius:50%;background:var(--cream);border:1px solid var(--rose);display:grid;place-items:center;color:var(--rose-dark);font-size:12px}
.timeline-item h3{font-size:24px;margin-bottom:6px}.timeline-item p{margin:0;color:var(--muted)}
.badges{display:flex;gap:12px;flex-wrap:wrap;margin-top:22px}
.badge{border:1px solid var(--rose);background:#fff;padding:12px 16px;font-size:12px;text-transform:uppercase;letter-spacing:.09em;color:var(--rose-dark)}
.approach-quote{font:30px/1.4 Georgia,serif;max-width:850px;margin:0 auto;text-align:center}

.process{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}
.process-step{background:#fff;padding:28px}.process-step strong{display:block;font:25px Georgia,serif;margin-bottom:8px}.process-step span{color:var(--muted);font-size:14px}

.condition-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.condition{border:1px solid var(--line);padding:26px;background:#fff}.condition p{color:var(--muted)}

.faq details{padding:18px 0;border-bottom:1px solid var(--line)}
.faq summary{cursor:pointer;font:23px Georgia,serif}

.booking-shell{max-width:930px;margin:auto;padding:38px;background:#fff;border:1px solid var(--line);box-shadow:var(--shadow)}
.booking-visual{display:grid;grid-template-columns:1fr 1fr;gap:28px;align-items:center}
.booking-visual img{width:100%;height:360px;object-fit:cover}
.embed{margin-top:24px;padding:28px;border:1px dashed var(--rose);background:var(--cream)}

.map-card{padding:28px;background:var(--cream);border:1px solid var(--line)}
.map-card a{color:var(--rose-dark);font-weight:700}

.cta{background:var(--ink);color:#fff;text-align:center}
.cta p{max-width:690px;margin:18px auto 28px;color:#d8d1cd}
footer{background:#171614;color:#d6cfca;padding:52px 0 28px}
.footer-grid{display:grid;grid-template-columns:2fr 1fr 1.2fr;gap:36px}
.footer-grid img{width:205px;background:#fff;padding:4px;filter:grayscale(1)}
footer h4{color:#fff;font-size:11px;text-transform:uppercase;letter-spacing:.15em}
footer p,footer a{font-size:14px;color:#cec7c2}
.footer-links{display:grid;gap:7px}.copyline{border-top:1px solid #332f2c;margin-top:35px;padding-top:18px;font-size:12px}

.reveal{opacity:0;transform:translateY(14px);transition:.55s ease}
.reveal.visible{opacity:1;transform:none}

@media(max-width:980px){
 .menu{display:none}.mobile-book{display:inline-flex}
 .hero,.subhero-grid,.split,.about-intro,.booking-visual{grid-template-columns:1fr}
 .hero-media{min-height:430px}.hero-copy,.subhero-copy{padding:70px 24px}
 .grid3,.grid4,.locations,.info-grid,.testimonials,.condition-grid,.footer-grid{grid-template-columns:1fr}
 .stats,.process{grid-template-columns:1fr 1fr}
 .subhero-media img{min-height:350px}
}
@media(max-width:620px){
 .topbar .wrap{flex-direction:column;gap:2px}
 .stats,.process{grid-template-columns:1fr}
 .stat{border-right:0;border-bottom:1px solid var(--line)}
 section{padding:68px 0}.logo img{width:175px}.hero-media{min-height:350px}
 .about-intro img{max-height:560px}
}

/* Version 4.1 refinements */
.location img{
  height:320px;
  object-fit:cover;
  object-position:center;
}
.subhero-media img[src*="vic-about"]{
  object-position:center 18%;
}

/* Version 4.2 image refinements */
.feature-image img{
  object-fit:cover;
  object-position:center;
}
.location img{
  height:330px;
  object-fit:cover;
  object-position:center;
}

/* Version 5 — approved location imagery */
.location img,
.subhero-media img[src*="clinic-ringwood"],
.subhero-media img[src*="clinic-highcliffe"]{
  width:100%;
  height:auto !important;
  aspect-ratio:2 / 1;
  object-fit:contain !important;
  object-position:center !important;
  background:#efe5dc;
}
.feature-image img[src*="homepage-treatment-room"]{
  width:100%;
  height:auto !important;
  aspect-ratio:2 / 1;
  object-fit:contain !important;
  object-position:center !important;
  background:#efe5dc;
}
@media(max-width:620px){
  .location img,
  .subhero-media img[src*="clinic-ringwood"],
  .subhero-media img[src*="clinic-highcliffe"],
  .feature-image img[src*="homepage-treatment-room"]{
    aspect-ratio:16 / 9;
  }
}

/* Version 5.2 cookie consent */
#cookie-banner{
  position:fixed;left:20px;right:20px;bottom:20px;z-index:9999;
  max-width:980px;margin:auto;padding:20px 22px;background:#25221f;color:#fff;
  display:flex;align-items:center;justify-content:space-between;gap:24px;
  box-shadow:0 18px 50px rgba(0,0,0,.25);border:1px solid rgba(255,255,255,.14)
}
#cookie-banner p{margin:5px 0 0;color:#d8d1cd;font-size:14px}
.cookie-actions{display:flex;gap:10px;flex-shrink:0}
.cookie-actions button{
  padding:11px 15px;border:1px solid #fff;background:transparent;color:#fff;
  text-transform:uppercase;letter-spacing:.08em;font-size:10px;cursor:pointer
}
.cookie-actions #cookie-accept{background:#b77f79;border-color:#b77f79}
@media(max-width:720px){
  #cookie-banner{flex-direction:column;align-items:flex-start}
}

/* Version 6 launch polish */
.cookie-settings-link{
  margin-top:8px;padding:0;border:0;background:none;color:#d9aaa5;
  text-decoration:underline;cursor:pointer;font-size:12px
}
#cookie-banner{
  border-radius:2px
}
a:focus-visible,button:focus-visible{
  outline:3px solid #d9aaa5;outline-offset:3px
}

/* =========================================================
   VERSION 7 — LAUNCH CANDIDATE CONSISTENCY PASS
   ========================================================= */

:root{
  --heart:#b77f79;
  --heart-soft:#f5e9e5;
}

/* Ensure card grids always render as cards */
.grid4,
.process,
.condition-grid,
.testimonials{
  display:grid !important;
}

.grid4{
  grid-template-columns:repeat(4,minmax(0,1fr)) !important;
  gap:20px !important;
}

.process{
  grid-template-columns:repeat(4,minmax(0,1fr)) !important;
  gap:18px !important;
  background:transparent !important;
  border:0 !important;
}

.icon-card,
.process-step,
.condition,
.quote{
  background:#fff !important;
  border:1px solid var(--line) !important;
  padding:30px !important;
  box-shadow:0 10px 28px rgba(51,36,28,.06) !important;
  transition:transform .22s ease, box-shadow .22s ease, border-color .22s ease !important;
}

.icon-card:hover,
.process-step:hover,
.condition:hover,
.quote:hover{
  transform:translateY(-4px);
  box-shadow:0 18px 38px rgba(51,36,28,.10) !important;
  border-color:#d9b4ae !important;
}

/* Consistent dusty-rose heart icon */
.icon{
  width:50px !important;
  height:50px !important;
  border:1px solid var(--heart) !important;
  border-radius:50% !important;
  display:grid !important;
  place-items:center !important;
  color:transparent !important;
  background:var(--heart-soft) !important;
  position:relative !important;
  margin-bottom:20px !important;
  font-size:0 !important;
}

.icon::before{
  content:"♡";
  color:var(--heart);
  font-family:Georgia,"Times New Roman",serif;
  font-size:28px;
  line-height:1;
}

/* Numbered journey cards */
.process-step{
  position:relative;
  min-height:210px;
}

.process-step::before{
  content:"♡";
  display:block;
  width:42px;
  height:42px;
  border:1px solid var(--heart);
  border-radius:50%;
  background:var(--heart-soft);
  color:var(--heart);
  font:24px/40px Georgia,"Times New Roman",serif;
  text-align:center;
  margin-bottom:18px;
}

.process-step strong{
  display:block !important;
  font:26px/1.15 Georgia,"Times New Roman",serif !important;
  margin-bottom:12px !important;
}

.process-step span{
  display:block !important;
  color:var(--muted) !important;
  line-height:1.65 !important;
}

/* Standardise section headings */
.section-head .kicker,
.kicker{
  letter-spacing:.20em !important;
}

.section-head h2{
  max-width:900px;
}

/* Cards should not collapse into plain text */
.icon-card h3,
.condition h3,
.quote h3{
  margin:0 0 12px !important;
}

.icon-card p,
.condition p,
.quote p{
  margin:0 !important;
}

/* Responsive */
@media(max-width:1100px){
  .grid4{grid-template-columns:repeat(2,minmax(0,1fr)) !important}
  .process{grid-template-columns:repeat(2,minmax(0,1fr)) !important}
}

@media(max-width:680px){
  .grid4,
  .process{
    grid-template-columns:1fr !important;
  }
  .icon-card,
  .process-step,
  .condition,
  .quote{
    padding:24px !important;
  }
}

/* Version 8 Personal Training image */
.service-card img[src*="training.jpg"]{
  object-fit:cover;
  object-position:58% 42%;
}
.subhero-media img[src*="training.jpg"]{
  object-fit:cover;
  object-position:58% 42%;
}
@media(max-width:680px){
  .service-card img[src*="training.jpg"],
  .subhero-media img[src*="training.jpg"]{
    object-position:60% 40%;
  }
}

/* Version 9 — final Personal Training image replacement */
.service-card img[src*="training-card.jpg"]{
  width:100%;
  height:245px;
  object-fit:cover;
  object-position:58% 45%;
}
.subhero-media img[src*="training.jpg"]{
  width:100%;
  height:100%;
  min-height:440px;
  object-fit:cover;
  object-position:58% 42%;
}
@media(max-width:680px){
  .service-card img[src*="training-card.jpg"]{
    object-position:60% 42%;
  }
  .subhero-media img[src*="training.jpg"]{
    object-position:60% 40%;
    min-height:360px;
  }
}

/* Version 10 — exact Personal Training image everywhere */
.service-card img[src*="training.jpg"]{
  width:100%;
  height:245px;
  object-fit:cover;
  object-position:58% 44%;
}
.subhero-media img[src*="training.jpg"]{
  width:100%;
  height:100%;
  min-height:440px;
  object-fit:cover;
  object-position:58% 42%;
}
@media(max-width:680px){
  .service-card img[src*="training.jpg"]{
    object-position:60% 42%;
  }
  .subhero-media img[src*="training.jpg"]{
    min-height:360px;
    object-position:60% 40%;
  }
}

/* Version 11 — clean Personal Training image with cache-safe filename */
.service-card img[src*="vitalis-personal-training-clean-v11.jpg"]{
  width:100%;
  height:245px;
  object-fit:cover;
  object-position:58% 44%;
}
.subhero-media img[src*="vitalis-personal-training-clean-v11.jpg"]{
  width:100%;
  height:100%;
  min-height:440px;
  object-fit:cover;
  object-position:58% 42%;
}
@media(max-width:680px){
  .service-card img[src*="vitalis-personal-training-clean-v11.jpg"]{
    object-position:60% 42%;
  }
  .subhero-media img[src*="vitalis-personal-training-clean-v11.jpg"]{
    min-height:360px;
    object-position:60% 40%;
  }
}


/* VERSION 16 — MOBILE NAVIGATION & MOBILE POLISH */
.mobile-menu-button{display:none;appearance:none;border:1px solid var(--line);background:var(--cream);color:var(--charcoal);width:46px;height:46px;border-radius:50%;font-size:1.35rem;line-height:1;cursor:pointer;align-items:center;justify-content:center}
.mobile-drawer{position:fixed;inset:0;z-index:9999;pointer-events:none;visibility:hidden}
.mobile-drawer.is-open{pointer-events:auto;visibility:visible}
.mobile-drawer-backdrop{position:absolute;inset:0;background:rgba(36,35,33,.5);opacity:0;transition:opacity .25s ease}
.mobile-drawer.is-open .mobile-drawer-backdrop{opacity:1}
.mobile-drawer-panel{position:absolute;top:0;right:0;width:min(88vw,390px);height:100%;background:var(--cream);padding:24px;transform:translateX(100%);transition:transform .28s ease;overflow-y:auto;box-shadow:-20px 0 60px rgba(45,44,42,.18)}
.mobile-drawer.is-open .mobile-drawer-panel{transform:translateX(0)}
.mobile-drawer-top{display:flex;align-items:center;justify-content:space-between;gap:18px;padding-bottom:18px;border-bottom:1px solid var(--line)}
.mobile-drawer-top .logo img{width:170px;height:auto}
.mobile-drawer-close{appearance:none;border:0;background:transparent;color:var(--charcoal);font-size:2rem;cursor:pointer;padding:4px 8px}
.mobile-drawer-nav{display:grid;gap:4px;padding:22px 0}
.mobile-drawer-nav a{display:block;text-decoration:none;padding:14px 4px;border-bottom:1px solid rgba(45,44,42,.10);font-family:Georgia,'Times New Roman',serif;font-size:1.3rem;text-transform:none;letter-spacing:0}
.mobile-drawer-nav a:hover,.mobile-drawer-nav a:focus{color:var(--rose-dark)}
.mobile-drawer-book{display:block;text-align:center;text-decoration:none;background:var(--rose);color:#fff;border-radius:999px;padding:15px 18px;font-weight:800;margin-top:10px}
body.mobile-nav-open{overflow:hidden}
.mobile-sticky-book{display:none}
@media(max-width:980px){
 .mobile-menu-button{display:inline-flex}
 .mobile-book{display:none!important}
 .mobile-sticky-book{display:block;position:fixed;left:14px;right:14px;bottom:14px;z-index:9980;background:var(--rose);color:#fff;text-align:center;text-decoration:none;padding:14px 18px;border-radius:999px;font-weight:800;box-shadow:0 12px 35px rgba(45,44,42,.24)}
 body{padding-bottom:78px}
 .nav{gap:12px}
 .booking-shell{padding:8px}
 footer .footer-links,footer nav{display:grid;gap:8px}
}
@media(max-width:520px){
 .wrap{width:min(94%,1180px)}
 .mobile-drawer-panel{width:92vw}
 .mobile-drawer-nav a{font-size:1.2rem}
 .btn{min-height:46px}
 p,li{font-size:1rem}
}
