/* ==========================================================================
   Symmetrics Health — static clone of symmetricshealth.ca (WordPress + Divi)
   Hand-written CSS reproducing the rendered result of the original Divi CSS.
   All values read directly from the mirror's Divi dynamic/critical CSS.

   FONT LICENSE NOTE: bookman-jf-pro is served from Symmetrics Health's own
   Adobe Fonts (Typekit) kit pzo5uln and is licensed to Symmetrics for their
   domain only. The woff2 files in assets/fonts are self-hosted here for this
   local fidelity test ONLY and must not ship on any public deploy.
   ========================================================================== */

/* .h-display: a heading demoted from <h1> to <h2>/<h3> on 2026-08-29 so each page
   has exactly one h1. It inherits every rule the h1 had, so nothing moves visually. */

/* ---------- Fonts ---------- */
@font-face {
  font-family: "bookman-jf-pro"; /* licensed to Symmetrics — local test only, do not deploy publicly */
  src: url("../fonts/bookman-jf-pro-normal.woff2") format("woff2");
  font-style: normal; font-weight: 400; font-stretch: normal; font-display: auto;
}
@font-face {
  font-family: "bookman-jf-pro";
  src: url("../fonts/bookman-jf-pro-italic.woff2") format("woff2");
  font-style: italic; font-weight: 400; font-stretch: normal; font-display: auto;
}
/* NOTE: Open Sans + Source Sans Pro @font-face rules live in fonts-home.css,
   linked by index.html only — see that file for why careers must fall back. */
@font-face {
  font-family: 'Merriweather'; font-style: normal; font-weight: 400; font-display: swap;
  src: url("../fonts/merriweather-400.woff2") format("woff2");
}
@font-face {
  font-family: 'Merriweather'; font-style: normal; font-weight: 700; font-display: swap;
  src: url("../fonts/merriweather-700.woff2") format("woff2");
}
@font-face {
  font-family: 'Fredoka One'; font-style: normal; font-weight: 400; font-display: swap;
  src: url("../fonts/fredokaone-400.woff2") format("woff2");
}
@font-face {
  font-family: ETmodules; font-display: block; font-weight: 400; font-style: normal;
  src: url("../fonts/ETmodules.woff") format("woff"), url("../fonts/ETmodules.ttf") format("truetype");
}
@font-face {
  font-family: 'Font Awesome 5 Free'; font-style: normal; font-weight: 400; font-display: block;
  src: url("../fonts/fa-regular-400.woff2") format("woff2");
}
@font-face {
  font-family: 'Font Awesome 5 Free'; font-style: normal; font-weight: 900; font-display: block;
  src: url("../fonts/fa-solid-900.woff2") format("woff2");
}

.far { font-family: 'Font Awesome 5 Free'; font-weight: 400; -moz-osx-font-smoothing: grayscale; -webkit-font-smoothing: antialiased; display: inline-block; font-style: normal; font-variant: normal; text-rendering: auto; line-height: 1; }
.fas { font-family: 'Font Awesome 5 Free'; font-weight: 900; -moz-osx-font-smoothing: grayscale; -webkit-font-smoothing: antialiased; display: inline-block; font-style: normal; font-variant: normal; text-rendering: auto; line-height: 1; }
.fa-envelope:before { content: "\f0e0"; }
.fa-phone:before { content: "\f095"; }

/* ---------- Reset / base ---------- */
*, *:before, *:after { -webkit-box-sizing: border-box; box-sizing: border-box; }
html { -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; }
h1, h2, h3, h4, h5, h6, i, iframe, img, li, object, ol, p, pre, span, strong, ul,
body, div, section, header, footer, main, nav, a, figure {
  margin: 0; padding: 0; border: 0; outline: 0; font-size: 100%; vertical-align: baseline; background: transparent;
}
ul, ol { list-style: none; }
body {
  font-family: 'Open Sans', Arial, sans-serif;
  font-size: 16px;
  color: #333333;
  background-color: #fff;
  line-height: 1.8em;
  font-weight: 500;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
a { color: #ffffff; text-decoration: none; }
p { padding-bottom: 1em; }
img { max-width: 100%; height: auto; }
h1, h2, h3, h4, h5, h6 { color: #333333; padding-bottom: 10px; line-height: 1em; font-weight: 500; }
h1, .h-display { font-family: bookman-jf-pro, serif; font-weight: 400 !important; font-size: 70px; }
h2 { font-size: 26px; }
h3 { font-size: 22px; }
h4 { font-size: 18px; }
h6 { font-size: 14px; }
#page-container { overflow: hidden; }
.screen-reader-text { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }

/* ---------- Header ---------- */
#main-header {
  line-height: 23px;
  font-weight: 500;
  top: 0;
  background: rgba(255,255,255,0);
  width: 100%;
  box-shadow: none;
  position: relative;
  z-index: 99999;
}
.header-container {
  width: 80%;
  max-width: 1080px;
  margin: auto;
  position: relative;
}
.logo_container { position: absolute; height: 100%; width: 100%; }
.logo_container a { display: inline; } /* inline, like the original, so #logo's % max-height resolves against .logo_container */
.logo_helper { display: inline-block; height: 100%; vertical-align: middle; width: 0; }
#logo {
  width: auto;
  max-height: 85%;
  margin-top: 30px;
  margin-bottom: 0;
  display: inline-block;
  float: none;
  vertical-align: middle;
}
#et-top-navigation { float: right; font-weight: 600; padding: 45px 0 0 240px; }
body.careers #et-top-navigation { padding-left: 274px; }
#top-menu-nav, #top-menu { line-height: 0; float: left; }
#top-menu-nav { font-family: helvetica neue; font-weight: 500; }
.nav li { position: relative; line-height: 1em; }
#top-menu li { display: inline-block; font-size: 14px; padding-right: 22px; word-wrap: break-word; }
#top-menu > li:last-child { padding-right: 0; }
#top-menu a {
  color: #293232;
  text-decoration: none;
  display: block;
  position: relative;
  transition: opacity 0.4s ease-in-out, background-color 0.4s ease-in-out;
}
#top-menu li a { font-size: 15px; }
#top-menu > li > a { padding-bottom: 45px; }
#top-menu-nav > ul > li > a:hover { opacity: 0.7; transition: all 0.4s ease-in-out; }
#top-menu li.current-menu-item > a { color: #990c2f; }
.appointment-btn a {
  border: 1px solid #293132;
  padding: 12px 12px 14px 12px !important;
  border-radius: 4px;
}
.appointment-btn a:hover {
  border: 1px solid #293132;
  background: #293132;
  color: white !important;
  opacity: 1 !important;
}
/* Menu icons: on the homepage the original loads FontAwesome (glyphs visible,
   kept out of the line box like the original's 59px li); on careers the
   original page never loads the FA module styles, so the icons collapse and
   those links get a shorter bottom padding — both quirks reproduced. */
body.home #top-menu i.far, body.home #top-menu i.fas { font-style: normal; }
body.home #top-menu i.far, body.home #top-menu i.fas {
  display: inline-block; width: 15px; height: 15px; line-height: 15px; text-align: center;
}
body.home #top-menu i.far:before, body.home #top-menu i.fas:before {
  font-family: 'Font Awesome 5 Free';
  font-size: 15px;
  position: static;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
body.home #top-menu i.fa-envelope:before { content: "\f0e0"; font-weight: 400; }
body.home #top-menu i.fa-phone:before { content: "\f095"; font-weight: 900; }
/* careers icons: FA never loads there -> the empty <i> is display:none,
   so those links are pure 45px padding and the header grows to 136px */
body.careers #top-menu li a i { display: none; }

/* mobile nav (hidden on desktop) */
#et_mobile_nav_menu { float: right; display: none; }
.mobile_nav .select_page { display: none; }
.mobile_menu_bar {
  position: relative;
  display: block;
  line-height: 0;
  padding-bottom: 24px;
}
.mobile_menu_bar:before {
  font-family: ETmodules !important;
  font-style: normal;
  font-weight: 400;
  line-height: 1;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "a";
  font-size: 32px;
  color: #990c2f;
  position: relative;
  left: 0;
  top: 2px;
  cursor: pointer;
}
.et_mobile_menu { display: none; }

/* ---------- Sections / rows / columns (Divi geometry) ---------- */
section { position: relative; background-color: #fff; background-position: 50%; background-size: cover; padding: 4% 0; }
.row { width: 80%; max-width: 1080px; margin: auto; position: relative; padding: 2% 0; }
.row:after, .hero-row:after, .pr-row:after, .contact-row:after, .map-row:after, .car-jobs-row:after, .car-hero-row:after, .header-container:after, #footer-widgets:after {
  content: ""; display: block; clear: both; visibility: hidden; line-height: 0; height: 0; width: 0;
}
.col-full { float: left; width: 100%; position: relative; }
/* desktop (min-width:981px) Divi gutter-3 module bottom margins */
.section-heading, .car-intro, .car-why, .car-hero-txt { margin-bottom: 2.75%; }
.hero-text, .hero-img, .g3 .pr-img, .g3 .pr-txt { margin-bottom: 5.82%; }
.job-blurb { margin-bottom: 9.27%; }
.fee-txt { margin-bottom: 13.174%; }
/* Divi drops the bottom margin of a column's last module */
.hero-text:last-child, .hero-img:last-child, .car-intro:last-child, .car-why:last-child,
.car-hero-txt:last-child, .job-blurb:last-child, .fee-txt:last-child,
.g3 .pr-img:last-child, .g3 .pr-txt:last-child { margin-bottom: 0; }
/* Divi drops the bottom padding of a text module's last paragraph */
.pr-txt p:last-of-type, .fee-txt p:last-of-type, .job-desc p:last-of-type,
.car-intro p:last-of-type, .car-why p:last-of-type, .car-hero-txt p:last-of-type { padding-bottom: 0; }

/* ---------- Hero (#about) ---------- */
.sec-hero {
  background-image: linear-gradient(90deg, #ffffff 67%, #f4f4f4 67%);
  box-shadow: inset 10px 125px 0px 0px #ffffff;
  padding: 50px 0 0 0;
}
.hero-row { width: 89%; max-width: 1350px; margin: auto; position: relative; padding: 0 0 5px 0; }
.hero-col { float: left; width: 47.25%; margin-right: 5.5%; position: relative; background-position: 50%; background-size: cover; }
.hero-col-img { margin-right: 0; padding-top: 30px; }
.hero-col-text { padding: 30px 60px 70px 70px; }
.hero-text {
  font-family: 'Source Sans Pro', Helvetica, Arial, Lucida, sans-serif;
  font-size: 18px;
  line-height: 2em;
  padding: 30px 0 !important;
  word-wrap: break-word;
}
.hero-text h1 { font-size: 36px; line-height: 1.3em; }
.hero-text > :last-child { padding-bottom: 0; }
.hero-img { display: block; text-align: left; margin-left: 0; margin-right: auto; line-height: 0; }
.pr-img-wrap { display: inline-block; position: relative; max-width: 100%; }
.hero-img img, .pr-img img { position: relative; }

/* ---------- Section heading bands (#services, #practitioners, fees head) ---------- */
.sec-services { padding: 80px 0; }
.services-row { padding: 0 0 15px 0 !important; }
.section-heading { word-wrap: break-word; }
.section-heading h1, .section-heading .h-display { font-size: 42px; line-height: 0.8em; }
.et-divider { margin: 0; position: relative; width: 13%; height: 23px; }
.et-divider:before {
  content: ""; height: 1px; border-top: 2px solid #990c2f;
  position: absolute; left: 0; right: 0; top: 0; z-index: 10; width: auto;
}
.et-divider-internal { display: inline-block; width: 100%; }

.sec-practitioners { padding: 0 0 51.2px 0; }
.practitioners-row { padding: 100px 0 0 0 !important; }

/* ---------- Service cards (#ethics) ---------- */
.sec-ethics { padding: 24px 0 0 0; background-color: #ffffff; }
.cards-row {
  max-width: 1440px;
  padding: 0 !important;
  z-index: 99;
  border-bottom-color: rgba(51,51,51,0.06);
  background-color: rgba(255,255,255,0);
}
.card-col { float: left; width: 50%; position: relative; }
.card-col-left { padding-right: 5px; }
.card-col-right { padding-left: 5px; }
.svc-card {
  position: relative;
  border: 0 solid #333;
  padding: 40px;
  text-align: center;
  min-height: 400px;
}
.svc-card-desc {
  padding-bottom: 20px;
  position: relative;
  font-family: 'Source Sans Pro', Helvetica, Arial, Lucida, sans-serif;
  font-size: 18px;
}
.svc-card-desc p:last-of-type { padding-bottom: 0; }
.svc-physio  { background-color: #f7f7f7; margin-top: -70px !important; }
.svc-chiro   { background-color: #ffffff; border-width: 3px; border-color: #f7f7f7; margin-top: 10px !important; }
.svc-osteo   { background-color: #ffffff; border-radius: 1px 1px 1px 1px; overflow: hidden; border-width: 3px; border-color: #f7f7f7; }
.svc-massage { background-color: #f7f7f7; margin-top: 10px !important; }
.svc-book-wrap { margin-top: 10px !important; margin-bottom: 0 !important; }
.btn-wrap-center { text-align: center; }
.btn-book {
  display: inline-block;
  position: relative;
  font-size: 20px;
  font-weight: 500;
  padding: .3em 1em;
  line-height: 1.7em !important;
  background-color: transparent;
  border: 2px solid;
  border-radius: 3px;
  transition: all 300ms ease 0ms;
}
.svc-book {
  color: #293132 !important;
  border-width: 1px !important;
  border-color: #293132;
  font-size: 16px;
  font-family: 'Source Sans Pro', Helvetica, Arial, Lucida, sans-serif !important;
  font-weight: 700 !important;
  background-color: #ffffff;
  padding: 12px 30px !important;
  transition: color 300ms ease 0ms, background-color 300ms ease 0ms;
}
.svc-book:hover { color: #ffffff !important; background-color: #293132; }

/* ---------- Practitioners (#practitioners2 x2 — duplicate id reproduced on purpose) ---------- */
.sec-practitioners2 {
  background-clip: content-box;
  padding: 200px 1px 0 0;
  /* the original Divi CSS pointed at images/50.png, which 404s. Reproduced on
     purpose during the clone, removed 2026-08-29 because it fired a 404 on every
     page view and the image was never visible. */
  background-size: initial;
  background-position: left center;
  background-attachment: fixed;
}
.pr-row { width: 80%; max-width: 1080px; margin: auto; position: relative; padding: 0 0 100px 0 !important; }
.pr-row-first { margin-top: -200px; padding-top: 0 !important; }
.pr-row-alex { padding-top: 1px !important; }
.pr-row.g3 { padding: 2% 0 !important; }
.pr-col { float: left; position: relative; min-height: 1px; }
.g1 .pr-col { width: 50%; margin-right: 0; }
.g3 .pr-col { width: 47.25%; margin-right: 5.5%; }
.g3 .pr-col-txt { margin-right: 0; }
.pc7, .pc9, .pc11, .pc13, .pc15, .pc17, .pc19, .pc21, .pc23, .pc25 { padding-top: 5%; }
.pc8, .pc18 { padding-bottom: 60px; }
.pr-img { display: block; text-align: left; margin-left: 0; margin-right: auto; line-height: 0; }
.pi-sarah { width: 100%; max-width: 100%; }
.pi-julia { width: 100%; max-width: 100%; }
.pr-txt { word-wrap: break-word; font-family: 'Source Sans Pro', Helvetica, Arial, Lucida, sans-serif; font-size: 18px; }
.pt3, .pt4, .pt5, .pt6, .pt7, .pt8, .pt9, .pt10, .pt11, .pt12 {
  color: #2d2d2d !important;
  background-color: #f7f7f7;
  padding: 60px 40px !important;
  text-align: center;
}
.pt8, .pt10, .pt11, .pt12 { text-align: left; }
.pr-txt > :last-child { padding-bottom: 0; }
.pr-txt h1 { font-size: 20px; line-height: 1.7em; }
.pt5 h1 { font-size: 20px; line-height: 1.7em; }
#hidden-bio { display: none; }
#extra-bio:hover #hidden-bio { display: block; }

/* ---------- Fees ---------- */
.sec-fees {
  padding-top: 6vw;
  padding-bottom: 60px;
  background-color: rgba(247,247,247,0.5) !important;
  box-shadow: inset 0px 80px 80px -40px rgba(0,0,0,0.07);
}
.fees-top-divider {
  display: block;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 60px;
  z-index: 1;
  transform: scale(1,-1);
  background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDBweCIgdmlld0JveD0iMCAwIDEyODAgMTQwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxnIGZpbGw9IiNmZmZmZmYiPjxwYXRoIGQ9Ik0xMjgwIDMuNEMxMDUwLjU5IDE4IDEwMTkuNCA4NC44OSA3MzQuNDIgODQuODljLTMyMCAwLTMyMC04NC4zLTY0MC04NC4zQzU5LjQuNTkgMjguMiAxLjYgMCAzLjRWMTQwaDEyODB6IiBmaWxsLW9wYWNpdHk9Ii4zIi8+PHBhdGggZD0iTTAgMjQuMzFjNDMuNDYtNS42OSA5NC41Ni05LjI1IDE1OC40Mi05LjI1IDMyMCAwIDMyMCA4OS4yNCA2NDAgODkuMjQgMjU2LjEzIDAgMzA3LjI4LTU3LjE2IDQ4MS41OC04MFYxNDBIMHoiIGZpbGwtb3BhY2l0eT0iLjUiLz48cGF0aCBkPSJNMTI4MCA1MS43NmMtMjAxIDEyLjQ5LTI0Mi40MyA1My40LTUxMy41OCA1My40LTMyMCAwLTMyMC01Ny02NDAtNTctNDguODUuMDEtOTAuMjEgMS4zNS0xMjYuNDIgMy42VjE0MGgxMjgweiIvPjwvZz48L3N2Zz4=");
  background-size: 133.33333333333% 60px;
}
.fees-head-row { padding: 70px 0 25.6px 0 !important; }
.fee-col { float: left; width: 20.875%; margin-right: 5.5%; position: relative; }
.fee-col-last { margin-right: 0; }
.fee-txt {
  word-wrap: break-word;
  font-family: 'Source Sans Pro', Helvetica, Arial, Lucida, sans-serif;
  font-size: 17px;
  transition: 0.4s all;
}
.fee-txt:hover { -webkit-transform: scale(1.05); transform: scale(1.05); }
.fee-physio { margin-right: -80px !important; }
.fee-txt h1, .fee-txt .h-display { font-size: 20px; line-height: 1.8em; }
.fee-osteo h1, .fee-osteo .h-display { font-size: 20px; line-height: 1.3em; }

/* ---------- Contact ---------- */
.sec-contact {
  padding: 0;
  margin: 0;
  background-color: #8c1b30 !important;
}
.contact-row {
  width: 100%;
  max-width: 100%;
  margin: 0 auto !important;
  padding: 40px !important;
  background-color: #8c1b30;
  position: relative;
}
.contact-col { float: left; width: 33.3333%; margin-right: 0; position: relative; }
.c-blurb { color: #fff; font-family: 'Source Sans Pro', Helvetica, Arial, Lucida, sans-serif; text-align: center; }
.c-blurb-icon { display: inline-block; margin-bottom: 30px; line-height: 0; max-width: 100%; }
.c-blurb-icon .et-pb-icon {
  font-family: ETmodules !important;
  font-weight: 400 !important;
  font-size: 32px;
  color: #ffffff;
  font-style: normal;
  line-height: 1;
  display: inline-block;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
.c-blurb-head {
  font-family: 'Source Sans Pro', Helvetica, Arial, Lucida, sans-serif;
  font-weight: 700;
  font-size: 18px;
  line-height: 1.4em;
  color: #fff !important;
}
.c-blurb-desc { color: #fff; }
.c-blurb-desc p:last-of-type { padding-bottom: 0; }
.c-social {
  list-style-type: none !important;
  margin: 15px 0 0 0 !important;
  padding: 0;
  background-color: RGBA(0,0,0,0);
  text-align: center;
}
.c-social li { display: inline-block; margin: 0 6px 8px 6px !important; position: relative; }
.c-social li a.icon {
  display: inline-block;
  text-decoration: none;
  text-align: center;
  position: relative;
  vertical-align: middle;
  width: 32px;
  height: 32px;
  padding: 6px;
  -webkit-box-sizing: content-box;
  box-sizing: content-box;
  border-radius: 6px 6px 6px 6px;
  background-color: rgba(255,255,255,0.19) !important;
  box-shadow: 10px 10px 0px 0px rgba(0,0,0,0.3);
  transition: background-color 300ms ease 0ms;
}
.c-social li a.icon:hover { background-color: #293232 !important; }
.c-social li a.icon:before {
  font-family: ETmodules;
  font-style: normal;
  font-weight: 400;
  font-size: 16px;
  line-height: 32px;
  display: block;
  width: 32px;
  height: 32px;
  color: #ffffff;
  position: relative;
  z-index: 10;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
.c-social li a.icon span { display: none; }
.et-social-facebook a.icon:before { content: "\e093"; }
.et-social-twitter a.icon:before { content: "\e094"; }
.et-social-instagram a.icon:before { content: "\e09a"; }
.et-social-youtube a.icon:before { content: "\e0a3"; }
.c-book-wrap { margin-top: 20px !important; }
.c-book {
  color: #fff !important;
  border-width: 2px !important;
  border-color: #293232;
  border-radius: 6px;
  font-size: 18px;
  font-family: 'Source Sans Pro', Helvetica, Arial, Lucida, sans-serif !important;
  font-weight: 600 !important;
  background-color: #293232;
  padding-right: 1em !important;
  padding-left: 1em !important;
  transition: color 300ms ease 0ms, background-color 300ms ease 0ms, border 300ms ease 0ms;
}
.c-book:hover { color: #FFFFFF !important; border-color: #FFFFFF !important; background-color: rgba(41,50,50,0); }
.map-row { width: 100%; max-width: 100%; margin: auto; position: relative; padding: 0 !important; }
.map-col { float: left; width: 100%; padding: 0; position: relative; }
.map-embed { display: block; width: 100%; height: 440px; border: 0; }
.map-pin { display: none; visibility: hidden; }

/* ---------- Careers page ---------- */
.car-hero {
  background-color: #000000 !important;
  background-image: linear-gradient(180deg, rgba(0,0,0,0.39) 0%, #333333 100%), url("../images/PT-Room--1024x683.jpg");
  background-position: 50%;
  background-size: cover;
}
.car-hero-row { width: 77.3%; max-width: 1080px; margin: auto; position: relative; padding: 2% 85px 6px 83px !important; }
.car-hero-txt { padding: 119px 0 93px 0 !important; word-wrap: break-word; }
.car-hero-txt > :last-child { padding-bottom: 0; }
.car-intro { word-wrap: break-word; padding-bottom: 11px !important; }
.car-intro > :last-child { padding-bottom: 0; }
.job-col { float: left; width: 29.667%; margin-right: 5.5%; position: relative; min-height: 1px; }
.job-col-last { margin-right: 0; }
.job-blurb { position: relative; }
/* Divi's .et_pb_blurb_content rule: blurb content is max-width 550px, centered.
   Only bites at <=980 where blurb columns go full-width (614.4px at 768px). */
.job-icon, .job-head, .job-desc { max-width: 550px; margin-left: auto; margin-right: auto; }
.job-icon { display: block; margin: 0 auto 30px; line-height: 0; max-width: 100%; width: max-content; }
.job-icon .et-pb-icon {
  display: inline-block;
  font-family: 'Font Awesome 5 Free' !important;
  font-weight: 900 !important;
  font-size: 60px;
  color: #ffffff;
  font-style: normal;
  line-height: 1;
  border-radius: 5px 5px 5px 5px;
  overflow: hidden;
  padding: 5px !important;
  background-color: #990c2f;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
.job-rmt .job-icon .et-pb-icon { border-color: #E02B20; }
.job-head { font-weight: 700; text-align: center; font-size: 20px; line-height: 20px; padding-bottom: 10px; }
.job-desc h3 { font-size: 20px; line-height: 20px; padding-bottom: 10px; }
.job-physio { padding-bottom: 3px !important; }
.job-desc ul, .car-why ul {
  list-style-type: disc;
  padding: 0 0 23px 1em;
  line-height: 26px;
}
.car-why { word-wrap: break-word; }
.car-why > :last-child { padding-bottom: 0; }

/* ---------- Footer ---------- */
#main-footer { background-color: #293132; }
.footer-container { width: 80%; max-width: 1080px; margin: auto; position: relative; }
#footer-widgets { padding: 6% 0 0; }
.footer-widget { float: left; width: 29.667%; margin-right: 5.5%; margin-bottom: 5.5%; color: #fff; position: relative; }
.footer-widget:last-child { margin-right: 0; }
.fwidget { margin-bottom: 18.539%; }
.fwidget:last-child { margin-bottom: 0; }
/* the original's second social widget ends in a (hidden) Trustindex block that
   still occupies 16px; the reviews themselves never render — reproduced as a shell */
.fwidget-trustindex { height: 16px; }
.footer-widget h4 {
  color: white !important;
  text-transform: uppercase;
  padding-bottom: 17px;
  font-family: source sans pro;
  font-weight: 600;
  line-height: 1em;
}
.footer-widget li {
  list-style-type: none;
  padding-left: 0;
  margin-bottom: 5px;
  font-size: 13px;
  line-height: 1.8em;
}
.footer-widget a { color: rgba(255,255,255,0.70) !important; text-decoration: none; }
.footer-widget li a:hover { color: #ffffff; }
.footer-social { list-style-type: none !important; margin: 0 0 15px; padding: 0; }
.footer-social li { display: inline-block; margin-bottom: 8px; position: relative; }
.footer-social li a.icon {
  display: inline-block;
  margin-right: 8px;
  text-align: center;
  position: relative;
  vertical-align: middle;
  width: 32px;
  height: 32px;
  padding: 0;
  -webkit-box-sizing: content-box;
  box-sizing: content-box;
  border-radius: 3px;
  background-color: rgba(255, 255, 255, 0.28) !important;
}
.footer-social li a.icon:before {
  font-family: ETmodules;
  font-style: normal;
  font-weight: 400;
  font-size: 16px;
  line-height: 32px;
  display: block;
  width: 32px;
  height: 32px;
  color: #fff;
  position: relative;
  z-index: 10;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
.footer-social li a.icon span { display: none; }
/* Divi last-text-module-in-widget rule: trailing p loses its bottom padding */
.footer-widget p:last-of-type { padding-bottom: 0; }
/* careers-page quirk: the social module styles are tree-shaken from the
   careers CSS bundle, so the footer social icons render as plain text links */
body.careers .footer-social li { display: list-item; margin-bottom: 5px; }
body.careers .footer-social li a.icon {
  display: inline; width: auto; height: auto; margin: 0; border-radius: 0;
  vertical-align: baseline;
}
body.careers .footer-social li a.icon:before { content: none; }
body.careers .footer-social li a.icon span { display: inline; }
.footer-book-btn {
  background: #9a1a31 !important; /* original uses #9a1a31 here, not #990c2f — reproduced verbatim */
  color: white !important;
  padding: 9px;
  display: block;
  text-align: center;
  border: 0 !important;
  font-family: source sans pro;
  font-size: 17px;
  width: 80%;
  margin-top: 10px;
  border-radius: 3px;
  line-height: 1.7em !important;
  transition: all .2s;
}
.footer-book-btn:hover { color: #FFFFFF !important; background: #b1203a !important; }
#footer-bottom { background-color: rgba(0,0,0,0.32); padding: 15px 0 5px; }
#footer-info {
  text-align: center;
  float: none;
  color: rgba(255,255,255,0.3);
  font-size: 12px;
  padding-bottom: 10px;
}

/* ---------- Scroll top ---------- */
.et_pb_scroll_top {
  position: fixed;
  z-index: 99999;
  right: 0;
  bottom: 124px;
  display: none;
  padding: 5px;
  border-top-left-radius: 2px;
  border-top-right-radius: 2px;
  background: rgba(0,0,0,0.2);
  cursor: pointer;
}
.et_pb_scroll_top:before {
  font-family: ETmodules;
  content: "\32";
  font-size: 20px;
  color: #fff;
  display: block;
  padding: 5px 10px;
}
.et_pb_scroll_top.et-visible { display: block; }

/* ==========================================================================
   Responsive — Divi breakpoints: 1350 / 1550 / 1064-1120 logo, then
   980px (tablet), 767px (phone), 479px (small phone)
   ========================================================================== */
@media only screen and (min-width: 1350px) {
  section { padding: 54px 0; }
  .row { padding: 27px 0; }
  .pr-row.g3 { padding: 27px 0 !important; }
  .car-hero-row { padding-top: 27px !important; }
  /* these rows carry their own padding, repeat to beat the .row default */
  .services-row { padding: 0 0 15px 0 !important; }
  .practitioners-row { padding: 100px 0 0 0 !important; }
  .fees-head-row { padding: 70px 0 25.6px 0 !important; }
  .pr-row { padding: 0 0 100px 0 !important; }
  .pr-row-alex { padding-top: 1px !important; }
  .sec-hero { padding: 50px 0 0 0; }
  .sec-services { padding: 80px 0; }
  .sec-practitioners { padding: 0 0 51.2px 0; }
  .sec-ethics { padding: 24px 0 0 0; }
  .sec-practitioners2 { padding: 200px 1px 0 0; }
  .sec-fees { padding-top: 6vw; padding-bottom: 60px; }
  .sec-contact { padding: 0; }
}
@media only screen and (min-width: 981px) and (max-width: 1064px) {
  #logo { max-height: 55.5% !important; margin-top: 0 !important; padding-left: 20px !important; }
}
@media only screen and (min-width: 1065px) and (max-width: 1120px) {
  #logo { max-height: 72.5% !important; }
}
@media only screen and (min-width: 1550px) {
  .hero-col-text { padding-left: 0 !important; }
}

@media only screen and (max-width: 980px) {
  #logo { max-height: 60% !important; margin-top: 0 !important; }
  .logo_container { height: 100%; }
  #et-top-navigation { padding: 24px 0 0 131px; }
  #top-menu { display: none; }
  #et_mobile_nav_menu { display: block; }
  .appointment-btn a {
    background: #293132;
    color: white !important;
    text-align: center;
  }
  .appointment-btn a:hover { background: #fff; color: #293132 !important; }

  section { padding: 50px 0; }
  .row { padding: 30px 0; }
  .section-heading, .et-divider, .car-intro, .car-why, .car-hero-txt,
  .hero-text, .hero-img, .g3 .pr-img, .g3 .pr-txt, .job-blurb, .fee-txt { margin-bottom: 0; }
  .section-heading { margin-bottom: 10px !important; }

  /* hero */
  .sec-hero { background-image: none; padding: 0; }
  .hero-row { width: 80%; max-width: 80%; }
  .hero-col { width: 100%; margin-right: 0; margin-bottom: 30px; }
  .hero-col-img { margin-bottom: 0; }
  .hero-img img { width: auto; }

  /* services heading */
  .sec-services { padding: 40px 0; }
  .section-heading h1, .section-heading .h-display { font-size: 28px; line-height: 1.3em; }

  /* practitioners heading */
  .sec-practitioners { padding: 0 0 10px 0; }
  .practitioners-row { padding: 40px 0 0 0 !important; }

  /* practitioner rows */
  .pr-row { padding: 0 0 60px 0 !important; }
  .pr-row-first { padding: 0 !important; }
  .pr-row-alex { padding: 1px 0 60px 0 !important; }
  .pr-row.g3 { padding: 30px 0 !important; }
  .g1 .pr-col, .g3 .pr-col { width: 100%; margin: 0 !important; }
  .g3 .pr-col-img { margin-bottom: 30px !important; }
  .pi-rob, .pi-scott, .pi-lori, .pi-gerry, .pi-jordanne { text-align: center; margin-left: auto; margin-right: auto; }
  .pr-img img { width: auto; }

  /* service cards */
  .card-col { width: 100%; margin-bottom: 0; }
  .card-col-left { padding-right: 0; }
  .card-col-right { padding-left: 0; }
  .svc-osteo { margin-top: 10px !important; }
  .cards-btn-row { padding-top: 10px !important; }

  /* fees */
  .fees-head-row { padding: 90px 0 25.6px 0 !important; }
  .fees-cols-row { display: -webkit-box; display: -ms-flexbox; display: flex; -ms-flex-wrap: wrap; flex-wrap: wrap; }
  .fee-col { width: 47.25%; margin-right: 5.5%; margin-bottom: 30px; }
  .fee-col:nth-child(2n) { margin-right: 0; }
  .fee-col:nth-last-child(-n+2) { margin-bottom: 0; }
  .fee-physio { margin-right: 0 !important; }

  /* contact */
  .contact-col { width: 100%; }
  .map-embed { height: 350px; }

  /* careers */
  .car-hero-row { padding-top: 30px !important; }
  .job-col { width: 100%; margin-right: 0; margin-bottom: 30px; }
  .job-col-empty { display: none; }
  .job-col-last { margin-bottom: 0; }

  /* footer */
  #footer-widgets { padding: 8% 0; }
  .footer-widget { width: 46.25% !important; margin: 0 7.5% 7.5% 0 !important; }
  .footer-widget:nth-child(2n) { margin-right: 0 !important; }
  .footer-widget:nth-last-child(-n+2) { margin-bottom: 0 !important; }
  .fwidget { margin-bottom: 16.205%; }
}

@media only screen and (max-width: 767px) {
  .sec-services { padding: 40px 0; }
  .sec-practitioners { padding: 0; }
  .fees-head-row { padding: 90px 0 0 0 !important; }
  .fees-cols-row { padding-left: 15px !important; }
  .contact-col-hours .c-blurb { padding-top: 60px !important; padding-bottom: 60px !important; }
  .map-embed { height: 220px; }
  #footer-widgets { padding: 10% 0; }
  .footer-widget { width: 100% !important; margin-right: 0 !important; margin-bottom: 11.5% !important; }
  .footer-widget:nth-last-child(-n+2) { margin-bottom: 11.5% !important; }
  .fwidget { margin-bottom: 9.5%; }
  .fwidget:last-child { margin-bottom: 0; }
}

@media only screen and (max-width: 479px) {
  .fee-col { width: 100%; margin: 0 0 30px; }
  .fee-col:nth-last-child(2) { margin-bottom: 30px; }
  .fee-col:last-child { margin-bottom: 0; }
  .map-embed { height: 200px; }
  #footer-widgets { padding: 12% 0; }
}


/* ---------- 2026-08-26 refresh: uniform practitioner photos ---------- */
.sec-practitioners2 .pr-img img { width: 100%; aspect-ratio: 724 / 1085; object-fit: cover; object-position: top center; }
.sec-practitioners2 .pr-img-wrap { width: 100%; }

/* ---------- refresh: reviews band ---------- */
.sec-reviews { padding: 80px 0 0; }
.sec-reviews .row { padding-top: 0; }
.sec-reviews .et-divider { margin-bottom: 40px; }
.reviews-widget { max-width: 1281.6px; margin: 0 auto; }

/* ---------- refresh: scroll-in animations (match the live site's Divi config) ---------- */
html.anim-ready .anim:not(.anim-in) { opacity: 0; }
html.anim-ready .anim-fade { transition: opacity 1350ms ease-in-out; }
html.anim-ready .anim-slide-up { transition: transform 1000ms ease-in-out, opacity 1000ms ease-in-out; }
html.anim-ready .anim-slide-down { transition: transform 1000ms ease-in-out, opacity 1000ms ease-in-out; }
html.anim-ready .anim-slide-up:not(.anim-in) { transform: translateY(20%); }
html.anim-ready .anim-slide-down:not(.anim-in) { transform: translateY(-10%); }
@media (prefers-reduced-motion: reduce) {
  html.anim-ready .anim { opacity: 1 !important; transform: none !important; transition: none !important; }
}

/* ---------- refresh: footer fixes (match original exactly) ---------- */

/* ==========================================================================
   2026-08-26 v3 restructure (Robert's feedback): dropdown nav, brief service
   cards, discipline-grouped team grid with expandable bios, FAQ, service pages
   ========================================================================== */

/* ---------- nav dropdown ---------- */
#top-menu li.menu-item-has-children { position: relative; }
#top-menu .sub-menu {
  position: absolute; top: 100%; left: -18px; z-index: 50;
  min-width: 200px; padding: 12px 0; margin: 0;
  background: #ffffff; border-top: 3px solid #990c2f;
  box-shadow: 0 2px 12px rgba(0,0,0,0.12);
  opacity: 0; visibility: hidden; transition: opacity 0.2s ease;
  list-style: none; line-height: normal;
}
#top-menu li.menu-item-has-children:hover .sub-menu,
#top-menu li.menu-item-has-children:focus-within .sub-menu { opacity: 1; visibility: visible; }
#top-menu .sub-menu li { display: block; padding: 0; float: none; }
#top-menu .sub-menu li a { display: block; padding: 8px 20px !important; font-size: 14px; color: #293232; }
#top-menu .sub-menu li a:hover { color: #990c2f; opacity: 1; }
.et_mobile_menu li.sub-item a { padding-left: 30px; font-size: 14px; }

/* ---------- brief service cards ---------- */
.cards-row-brief { display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px; }
.cards-row-brief::after { content: none; }
a.svc-brief { display: block; text-decoration: none; color: inherit; margin-bottom: 0; }
a.svc-brief .svc-card-desc { height: 100%; }
a.svc-brief:hover h1, a.svc-brief:hover .h-display { color: #990c2f; }
.svc-more { color: #990c2f; font-weight: 700; font-size: 15px; margin-top: 14px; }
.svc-more::after { content: " \2192"; }

/* ---------- team grid ---------- */
.sec-team { padding: 40px 0 80px; max-width: 1281.6px; margin: 0 auto; width: 80%; }
.team-group { margin-bottom: 56px; }
.team-group-title {
  font-family: bookman-jf-pro, serif; font-weight: 400; font-size: 28px;
  color: #333333; margin: 0 0 8px; padding-bottom: 12px;
  border-bottom: 2px solid #990c2f; display: inline-block;
}
.team-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px; margin-top: 24px; }
.pr-card { background: #f7f7f7; padding: 0 0 18px; text-align: center; }
.pr-card-photo { line-height: 0; }
.pr-card-photo img { width: 100%; aspect-ratio: 724 / 905; object-fit: cover; object-position: top center; }
.pr-card-name { font-family: bookman-jf-pro, serif; font-weight: 400; font-size: 19px; color: #333333; margin: 14px 12px 2px; }
.pr-card-role { font-family: 'Source Sans Pro', Helvetica, Arial, sans-serif; font-size: 14px; font-weight: 700; color: #990c2f; margin: 0 12px 12px; line-height: 1.4; }
.bio-btn {
  font-family: 'Source Sans Pro', Helvetica, Arial, sans-serif; font-size: 15px; font-weight: 700;
  color: #293132; background: #ffffff; border: 1px solid #293132; border-radius: 3px;
  padding: 7px 26px; cursor: pointer; transition: all 0.2s ease;
}
.bio-btn:hover, .bio-btn[aria-expanded="true"] { background: #990c2f; border-color: #990c2f; color: #ffffff; }
.bio-panel { background: #f7f7f7; border-left: 3px solid #990c2f; margin-top: 24px; padding: 36px 40px; text-align: left; }
.bio-panel[hidden] { display: none; }
.bio-name { font-family: bookman-jf-pro, serif; font-weight: 400; font-size: 22px; color: #333333; margin: 0 0 2px; }
.bio-panel .pr-card-role { margin: 0 0 16px; font-size: 16px; }
.bio-panel p { font-family: 'Source Sans Pro', Helvetica, Arial, sans-serif; font-size: 17px; line-height: 1.8; color: #333333; padding-bottom: 14px; text-align: left !important; }
.bio-panel p:last-child { padding-bottom: 0; }
.bio-src { display: none; }

/* ---------- FAQ ---------- */
.sec-faq { padding: 80px 0; }
.faq-list { max-width: 900px; margin: 40px auto 0; }
.faq-item { border-bottom: 1px solid #dcdcdc; }
.faq-item:first-child { border-top: 1px solid #dcdcdc; }
.faq-item summary {
  font-family: 'Source Sans Pro', Helvetica, Arial, sans-serif; font-size: 18px; font-weight: 700;
  color: #293132; padding: 18px 40px 18px 4px; cursor: pointer; list-style: none; position: relative;
}
.faq-item summary::-webkit-details-marker { display: none; }
.faq-item summary::after {
  content: "+"; position: absolute; right: 8px; top: 50%; transform: translateY(-50%);
  font-size: 24px; font-weight: 400; color: #990c2f; transition: transform 0.2s ease;
}
.faq-item[open] summary::after { content: "\2212"; }
.faq-item summary:hover { color: #990c2f; }
.faq-a p { font-family: 'Source Sans Pro', Helvetica, Arial, sans-serif; font-size: 17px; line-height: 1.8; color: #333333; padding: 0 4px 20px; }
.faq-a a { color: #990c2f; }

/* ---------- service pages ---------- */
.svc-page-head { padding-top: 40px; }
.sec-svc-desc .svc-desc-block { background: #f7f7f7; padding: 40px 44px; max-width: 900px; margin: 0 auto; }
.sec-svc-desc .svc-desc-block h1, .sec-svc-desc .svc-desc-block .h-display { display: none; }
.sec-svc-desc { padding-bottom: 20px; }
.sec-team-page { padding-top: 0; }
.sec-team-page .sec-team { width: 100%; padding: 20px 0 40px; }
.sec-fees-page { padding: 20px 0 0; background: rgba(247,247,247,0.5); }
.fees-cols-single { display: flex; justify-content: center; }
.fee-col-page { float: none; width: auto; min-width: 340px; }
.sec-svc-cta { padding: 50px 0 90px; text-align: center; background: rgba(247,247,247,0.5); }

/* ---------- responsive ---------- */
@media (max-width: 980px) {
  .cards-row-brief { grid-template-columns: repeat(2, 1fr); }
  .team-grid { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 767px) {
  .cards-row-brief { grid-template-columns: 1fr; gap: 18px; }
  .team-grid { grid-template-columns: repeat(2, 1fr); gap: 14px; }
  .sec-team { width: 90%; }
  .team-group { margin-bottom: 40px; }
  .pr-card-name { font-size: 17px; }
  .pr-card-role { font-size: 12.5px; }
  .bio-btn { padding: 6px 20px; font-size: 14px; }
  .bio-panel { padding: 24px 20px; }
  .faq-item summary { font-size: 16.5px; }
  .sec-svc-desc .svc-desc-block { padding: 28px 22px; }
  .fee-col-page { min-width: 0; width: 100%; }
}

/* ==========================================================================
   2026-08-27 round 2 (Robert's edits): tighter spacing, centred fees on
   service pages, per-page FAQs, gallery
   ========================================================================== */

/* home: close the gap between Our Services and the cards (was 119px) */
#services.sec-services { padding-bottom: 10px; }
#ethics.sec-ethics .cards-row-brief { padding-top: 8px; }

/* service pages: close the gap between the title and the description (was 176px) */
.svc-page-head { padding: 36px 0 6px; }
.sec-svc-desc { padding-top: 0; }
.sec-svc-desc .row { padding-top: 10px; }

/* service pages: Fees title centred, fees directly underneath */
.sec-fees-page { padding-top: 40px; }
.sec-fees-page .fees-head-row { padding-bottom: 0; }
.sec-fees-page .fees-heading h1, .sec-fees-page .fees-heading .h-display { text-align: center; }
.sec-fees-page .et-divider { margin: 0 auto; }
.sec-fees-page .fees-cols-row { padding-top: 6px; }
.fee-col-page .fee-txt h1, .fee-col-page .fee-txt .h-display { text-align: center; }

/* service pages: FAQ band + book button sit tight on the grey band */
.sec-faq-page { padding: 36px 0 0; background: rgba(247,247,247,0.5); }
.sec-faq-page .faq-list { margin-top: 24px; background: #ffffff; padding: 6px 28px 10px; }
.sec-svc-cta { padding: 36px 0 80px; }

/* gallery */
.sec-gallery { padding: 10px 0 30px; }
.gal-row { padding-top: 0; }
.gal-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 18px; grid-auto-flow: dense; }
.gal-tile { display: block; line-height: 0; overflow: hidden; }
.gal-tile img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.35s ease; }
.gal-tile:hover img { transform: scale(1.03); }
.gal-landscape { aspect-ratio: 3 / 2; }
.gal-portrait { aspect-ratio: 3 / 2; }
@media (min-width: 768px) {
  .gal-portrait { grid-row: span 2; aspect-ratio: auto; }
}
@media (min-width: 981px) { .gal-grid { grid-template-columns: repeat(3, 1fr); } }
.lightbox { position: fixed; inset: 0; z-index: 200; background: rgba(20,22,22,0.94);
  display: flex; align-items: center; justify-content: center; }
.lightbox[hidden] { display: none; }
.lightbox img { max-width: 88vw; max-height: 88vh; box-shadow: 0 8px 40px rgba(0,0,0,0.5); }
.lb-close, .lb-prev, .lb-next { position: absolute; background: none; border: none; color: #ffffff;
  font-size: 44px; line-height: 1; cursor: pointer; padding: 12px 18px; opacity: 0.85; }
.lb-close:hover, .lb-prev:hover, .lb-next:hover { opacity: 1; }
.lb-close { top: 14px; right: 18px; }
.lb-prev { left: 8px; top: 50%; transform: translateY(-50%); font-size: 60px; }
.lb-next { right: 8px; top: 50%; transform: translateY(-50%); font-size: 60px; }
@media (max-width: 767px) {
  .gal-grid { grid-template-columns: 1fr; gap: 14px; }
  .gal-portrait { grid-row: auto; aspect-ratio: 3 / 2; }
  .sec-faq-page .faq-list { padding: 2px 14px 6px; }
}
.fee-col-page .fee-txt { margin: 0 !important; }
.fee-col.fee-col-page { margin: 0 !important; float: none; }
/* round 3: the box was centred but its fixed 340px width left the text
   looking off-centre. Size to content, centre the block, keep lines tidy. */
.fee-col-page { width: -moz-fit-content; width: fit-content; min-width: 0; }
.fee-col-page .fee-txt { display: inline-block; text-align: left; }
.fee-col-page .fee-txt h1, .fee-col-page .fee-txt .h-display { text-align: center; margin-bottom: 6px; }
.fee-col-page .fee-txt p { white-space: nowrap; }
@media (max-width: 479px) { .fee-col-page .fee-txt p { white-space: normal; } }

/* ==========================================================================
   2026-08-27 round 4: mobile readability, tighter service cards,
   clickable discipline headings, in-row bio panels
   ========================================================================== */

/* discipline headings link to their service page */
.team-group-title a { color: inherit; text-decoration: none; }
.team-group-title a:hover { color: #990c2f; }
.team-group-title a::after { content: " \203A"; color: #990c2f; font-weight: 400; }

/* brief service cards: the 400px min-height was built for the old long copy
   and left a lot of dead space under the short blurbs */
.svc-brief { min-height: 0; padding: 30px 32px; display: flex; }
.svc-brief .svc-card-desc { padding-bottom: 0; display: flex; flex-direction: column; }
.svc-brief .svc-more { margin-top: auto; padding-top: 14px; }

/* bio panel now lives inside the grid, directly under its row */
.team-grid .bio-panel { margin-top: 0; margin-bottom: 4px; }

@media (max-width: 767px) {
  /* text was running at 182px inside a 390px screen: the desktop hero padding
     and the 80% row width were both still applying */
  .row { width: 90%; }
  .hero-row { width: 90%; max-width: 90%; }
  .hero-col-text { padding: 20px 0 30px 0 !important; }
  .hero-text, .hero-text p { max-width: 100% !important; }
  .sec-team { width: 92%; }
  .faq-list { max-width: 100%; }

  /* service cards: no dead space, comfortable line length */
  .svc-brief { padding: 22px 20px; }
  .svc-card { min-height: 0; padding: 24px 20px; }
  .svc-card-desc { padding-bottom: 0; }
  .sec-ethics { padding-top: 8px; }
  .cards-row-brief { gap: 12px; }

  /* section rhythm: 50px + 30px row padding stacked up everywhere */
  section { padding: 34px 0; }
  .row { padding: 16px 0; }
  .sec-services { padding: 30px 0 4px; }
  .sec-team { padding: 20px 0 40px; }
  .sec-faq { padding: 30px 0; }

  /* bio panel full width under its row */
  .team-grid .bio-panel { padding: 22px 18px; }
}

/* round 4b: hero paragraph sat 120px above the team photo once stacked */
@media (max-width: 767px) {
  .hero-col-text { padding: 20px 0 4px 0 !important; }
  .hero-col { margin-bottom: 10px; }
  .hero-col-img { padding-top: 0 !important; }
  .hero-text p:last-of-type { padding-bottom: 6px; }
}

/* ---------- gift cards ---------- */
.sec-gift-intro { padding: 0 0 6px; }
.gift-intro { font-family: 'Source Sans Pro', Helvetica, Arial, sans-serif; font-size: 19px;
  line-height: 1.75; color: #333333; max-width: 760px; margin: 0 auto; text-align: center; }
.sec-gift { padding: 20px 0 10px; }
.gift-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
.gift-card-tile { background: #f7f7f7; border-top: 3px solid #990c2f; padding: 34px 26px 30px;
  text-align: center; display: flex; flex-direction: column; }
.gift-amt { font-family: 'Merriweather', Georgia, serif; font-size: 44px; font-weight: 700; color: #b1203a; line-height: 1.1; }
.gift-label { font-family: 'Source Sans Pro', Helvetica, Arial, sans-serif; font-size: 14px;
  font-weight: 700; color: #293132; margin-top: 6px; }
.gift-note { font-family: 'Source Sans Pro', Helvetica, Arial, sans-serif; font-size: 16px;
  line-height: 1.6; color: #333333; margin: 14px 0 22px; flex: 1; }
a.gift-buy { display: inline-block; background: #990c2f; color: #ffffff !important; border-color: #990c2f;
  margin-top: auto; }
a.gift-buy:hover { background: #b1203a; border-color: #b1203a; }
.gift-custom { text-align: center; font-family: 'Source Sans Pro', Helvetica, Arial, sans-serif;
  font-size: 17px; margin-top: 28px; color: #333333; }
.gift-custom a { color: #990c2f; font-weight: 700; }
.sec-gift-how { padding: 30px 0 10px; background: rgba(247,247,247,0.5); }
.gift-steps { max-width: 760px; margin: 26px auto 0; padding-left: 22px;
  font-family: 'Source Sans Pro', Helvetica, Arial, sans-serif; font-size: 17px; line-height: 1.8; color: #333333; }
.gift-steps li { margin-bottom: 12px; }
.gift-legal { max-width: 760px; margin: 26px auto 0; font-family: 'Source Sans Pro', Helvetica, Arial, sans-serif;
  font-size: 15px; line-height: 1.7; color: #666666; }
@media (max-width: 980px) { .gift-grid { grid-template-columns: 1fr; max-width: 420px; margin: 0 auto; } }
@media (max-width: 767px) {
  .gift-intro { font-size: 17px; }
  .gift-card-tile { padding: 26px 20px 24px; }
  .gift-amt { font-size: 38px; }
}

/* ---------- round 5: keep the Book button on one line and make it the
     obvious primary action. It was wrapping to a second row below ~1200px,
     which dropped it over the hero and made it look broken. ---------- */
#top-menu { display: flex; align-items: flex-start; flex-wrap: nowrap; }
#top-menu > li { white-space: nowrap; }
#top-menu li.appointment-btn { margin-left: 8px; }
#top-menu .sub-menu { white-space: normal; }
#top-menu .sub-menu li { white-space: nowrap; }
.appointment-btn a {
  background: #990c2f;
  color: #ffffff !important;
  border-color: #990c2f !important;
  padding: 12px 26px !important;
}
.appointment-btn a:hover { background: #b1203a; border-color: #b1203a !important; color: #ffffff !important; opacity: 1; }
@media (max-width: 1120px) {
  #top-menu li { padding-right: 15px; }
  #top-menu li a { font-size: 14px; }
}

/* ==========================================================================
   2026-08-27 round 6
   - the flex rule from round 5 leaked past the mobile breakpoint and un-hid
     the desktop menu on phones; it is scoped to desktop here
   - sticky header that shrinks on scroll
   - tinted header + alternating section bands
   - tighter desktop rhythm under the section headings
   ========================================================================== */

/* --- 1. desktop-only nav layout (was breaking the mobile header) --- */
@media (min-width: 981px) {
  #top-menu { display: flex; align-items: center; flex-wrap: nowrap; }
  #top-menu > li { display: flex; align-items: center; white-space: nowrap; }
  /* nav links carry a 45px bottom padding from Divi; centre the button on the
     text itself rather than on that padded box */
  #top-menu > li > a { padding-bottom: 45px; }
  #top-menu li.appointment-btn { margin-left: 10px; align-items: flex-start; }
  #top-menu li.appointment-btn a { margin-top: 0; transform: translateY(-22.5px); }
}
@media (max-width: 980px) {
  #top-menu { display: none !important; }
}

/* --- 2. sticky, shrinking header --- */
#main-header {
  position: sticky; top: 0; z-index: 100;
  background: rgba(252, 251, 250, 0.94);
  -webkit-backdrop-filter: saturate(180%) blur(10px);
  backdrop-filter: saturate(180%) blur(10px);
  border-bottom: 1px solid rgba(41, 49, 50, 0.10);
  transition: box-shadow 0.25s ease, background 0.25s ease;
}
#main-header .header-container,
#main-header #logo,
#main-header #et-top-navigation,
#top-menu > li > a,
#top-menu li.appointment-btn a { transition: all 0.25s ease; }

body.scrolled #main-header {
  background: rgba(252, 251, 250, 0.97);
  box-shadow: 0 2px 14px rgba(41, 49, 50, 0.10);
}
@media (min-width: 981px) {
  body.scrolled #main-header #logo { max-height: 62px !important; }
  body.scrolled #top-menu > li > a { padding-bottom: 26px; }
  body.scrolled #main-header #et-top-navigation { padding-top: 14px; }
  body.scrolled #top-menu li.appointment-btn a { margin-top: 0; transform: translateY(-13px); padding: 9px 22px !important; }
}
@media (max-width: 980px) {
  body.scrolled #main-header #logo { max-height: 46px !important; }
}
/* anchor jumps must clear the sticky header */
#about, #services, #ethics, #practitioners, #practitioners2, #fees, #contact, #faq, #reviews {
  scroll-margin-top: 96px;
}

/* --- 3. alternating section bands so the page reads in blocks --- */
.sec-services  { background-color: #ffffff; }
.sec-ethics    { background-color: #ffffff; }
.sec-reviews   { background-color: #faf8f7; }
.sec-team      { background-color: transparent; }
#practitioners2.sec-team, .sec-practitioners { background-color: #faf8f7; }
.sec-practitioners { padding-bottom: 0; }
#practitioners2.sec-team { width: 100%; max-width: none; padding-left: 0; padding-right: 0; }
#practitioners2.sec-team .team-group { max-width: 1281.6px; width: 80%; margin-left: auto; margin-right: auto; }
.sec-faq       { background-color: #ffffff; }
.sec-gallery   { background-color: #ffffff; }
.sec-svc-desc  { background-color: #ffffff; }

/* --- 4. tighter rhythm under the section headings (desktop) --- */
@media (min-width: 981px) {
  .sec-services { padding-bottom: 0; }
  #ethics.sec-ethics { padding-top: 6px; }
  #ethics.sec-ethics .cards-row-brief { padding-top: 0; }
  .sec-practitioners .row { padding-bottom: 6px; }
  #practitioners2.sec-team { padding-top: 14px; }
  #practitioners2.sec-team .team-group:first-child { margin-top: 0; }
  .team-grid { margin-top: 16px; }
}

/* round 6b: #page-container had overflow:hidden (Divi legacy), which makes it a
   scroll container and stops position:sticky from ever pinning to the viewport.
   overflow:clip clips exactly the same way WITHOUT creating a scroll container. */
#page-container { overflow: clip; }
@supports not (overflow: clip) { #page-container { overflow: hidden; } }

/* round 6c: in the shrunk state the logo was taller than the header bar and
   spilled past its background. Contain the header and size the logo to fit. */
#main-header { overflow: hidden; }
#main-header .header-container { display: flex; align-items: center; justify-content: space-between; }
@media (min-width: 981px) {
  #main-header .logo_container { position: static; height: auto; display: flex; align-items: center; }
  #main-header #logo { position: static; max-height: 84px !important; width: auto; margin: 0 !important; transform: none !important; }
  body.scrolled #main-header #logo { max-height: 44px !important; }
  #main-header #et-top-navigation { padding-top: 34px !important; padding-left: 0 !important; }
  body.scrolled #main-header #et-top-navigation { padding-top: 12px !important; }
}
@media (max-width: 980px) {
  #main-header .logo_container { display: flex; align-items: center; }
  #main-header #logo { position: static; max-height: 56px !important; width: auto; margin: 0 !important; }
  body.scrolled #main-header #logo { max-height: 40px !important; }
  #main-header #et-top-navigation { padding: 0 !important; }
}

/* round 6d: .logo_container is absolutely positioned (Divi) and spanned the whole
   flex row, so the burger stacked on top of the logo. Make both normal flex items. */
#main-header .header-container { position: relative; }
#main-header .logo_container { position: relative !important; flex: 0 0 auto; width: auto !important; }
#main-header .logo_helper { display: none; }
#et_mobile_nav_menu { float: none !important; margin-left: auto; align-items: center; }
/* one clean switch point: desktop menu above 980, burger at 980 and below */
@media (min-width: 981px) { #et_mobile_nav_menu { display: none !important; } }
@media (max-width: 980px)  { #et_mobile_nav_menu { display: flex !important; } }
#main-header #et-top-navigation { margin-left: auto; }
/* solid header so page text never shows through the bar while scrolling */
#main-header { background: #fcfbfa; }
body.scrolled #main-header { background: #fcfbfa; }

/* round 6e: on phones the header box stayed the same height even though the
   logo shrank, so the shrink was invisible. Give it explicit heights. */
@media (max-width: 980px) {
  #main-header .header-container { height: 68px; transition: height 0.25s ease; }
  body.scrolled #main-header .header-container { height: 50px; }
  #main-header #logo { max-height: 52px !important; }
  body.scrolled #main-header #logo { max-height: 36px !important; }
}

/* ==========================================================================
   2026-08-27 round 7 — header rebuilt cleanly rather than patched further.
   Fixes: mobile menu was clipped by overflow:hidden; burger overflowed the
   shrunk bar; nav text rode to the top when shrunk instead of staying centred.
   ========================================================================== */

/* the menu is a dropdown BELOW the bar, so the bar must not clip it */
#main-header { overflow: visible; }
#main-header .header-container { overflow: visible; }

/* one flex row, vertically centred, with an explicit height that animates.
   Everything inside centres automatically, at both sizes. */
#main-header .header-container {
  display: flex; align-items: center; justify-content: space-between;
  height: 94px; transition: height 0.25s ease;
}
body.scrolled #main-header .header-container { height: 60px; }

@media (min-width: 981px) {
  /* drop the Divi 45px bottom padding that made the links top-heavy */
  #main-header #et-top-navigation { padding: 0 !important; margin-left: auto; display: flex; align-items: center; }
  body.scrolled #main-header #et-top-navigation { padding: 0 !important; }
  #top-menu { align-items: center; }
  #top-menu > li { align-items: center; }
  #top-menu > li > a { padding-bottom: 0 !important; }
  body.scrolled #top-menu > li > a { padding-bottom: 0 !important; }
  /* button now centres naturally: no transform needed */
  #top-menu li.appointment-btn { align-items: center; }
  #top-menu li.appointment-btn a,
  body.scrolled #top-menu li.appointment-btn a { transform: none; margin-top: 0; }
  #main-header #logo { max-height: 78px !important; }
  body.scrolled #main-header #logo { max-height: 44px !important; }
  /* the dropdown hangs off the bar, so anchor it to the header not the row */
  #top-menu .sub-menu { top: calc(100% + 8px); }
  #top-menu li.menu-item-has-children { padding-bottom: 0; }
  #top-menu li.menu-item-has-children::after { content: ""; position: absolute; left: 0; right: 0; top: 100%; height: 14px; }
}

@media (max-width: 980px) {
  #main-header .header-container { height: 68px; }
  body.scrolled #main-header .header-container { height: 54px; }
  #main-header #logo { max-height: 50px !important; }
  body.scrolled #main-header #logo { max-height: 36px !important; }
  /* burger: no stray padding, centred in the bar at both heights */
  .mobile_menu_bar { padding: 0 !important; display: flex; align-items: center; justify-content: center;
                     height: 40px; width: 40px; }
  .mobile_menu_bar:before { top: 0 !important; left: 0 !important; position: static !important; }
  #et_mobile_nav_menu, .mobile_nav { display: flex; align-items: center; height: 100%; }
  /* the menu drops BELOW the bar instead of being trapped inside it */
  .et_mobile_menu {
    position: absolute; top: 100%; left: 0; right: 0; width: 100%;
    background: #ffffff; border-top: 3px solid #990c2f;
    box-shadow: 0 10px 24px rgba(41,49,50,0.16);
    max-height: calc(100vh - 68px); overflow-y: auto; z-index: 120; padding: 6px 0;
  }
  .et_mobile_menu li a { display: block; padding: 13px 24px; font-size: 16px; }
}

/* round 7b: "Our Practitioners" sat 36px right of the discipline headings,
   because the section heading uses .row (max 1080) while the team groups used
   a wider 1281.6 container. Same container = same left edge. */
#practitioners2.sec-team .team-group { max-width: 1080px; }
/* pull the rule up closer under the heading */
.sec-practitioners .section-heading { margin-bottom: 4px !important; }
.sec-practitioners .et-divider { margin-top: 2px; }

/* round 7b: cards lined up regardless of how names wrap. Reserving space for
   a two-line name and a two-line role keeps every Bio button on one line. */
.pr-card { display: flex; flex-direction: column; }
.pr-card-photo { flex: 0 0 auto; }
.pr-card-name {
  display: flex; align-items: center; justify-content: center; text-align: center;
  min-height: 2.6em; margin: 14px 12px 2px;
}
.pr-card-role {
  display: flex; align-items: center; justify-content: center; text-align: center;
  min-height: 2.8em; margin: 0 12px 12px;
}
.bio-btn { margin-top: auto; align-self: center; }
@media (max-width: 767px) {
  .pr-card-name { min-height: 2.8em; }
  .pr-card-role { min-height: 3.2em; }
}

/* round 7c: the mobile menu was originally styled for a dark background, so on
   the new white panel every link was white-on-white (invisible but present). */
@media (max-width: 980px) {
  .et_mobile_menu li a { color: #293132 !important; border-bottom: 1px solid rgba(41,49,50,0.08); }
  .et_mobile_menu li:last-child a { border-bottom: 0; }
  .et_mobile_menu li a:hover { color: #990c2f !important; background: rgba(153,12,47,0.04); }
  .et_mobile_menu li.sub-item a { color: #5a6162 !important; }
  .et_mobile_menu li.appointment-btn a {
    background: #990c2f; color: #ffffff !important; text-align: center;
    margin: 10px 18px 6px; border-radius: 3px; border-bottom: 0;
  }
}

/* ==========================================================================
   2026-08-27 round 8
   ========================================================================== */

/* 1. The round-7 "strip the Divi 45px bottom padding" rule also hit the Book
      button, leaving it 12px top / 0 bottom so it looked cut off at rest.
      Exclude the button and give it its own symmetric padding. */
@media (min-width: 981px) {
  #top-menu > li:not(.appointment-btn) > a { padding-bottom: 0 !important; }
  #top-menu li.appointment-btn a,
  body.scrolled #top-menu li.appointment-btn a {
    padding: 13px 26px !important; line-height: 1 !important; display: inline-block;
  }
}

/* 2. Mobile menu: keep the five service sub-links out of the drop-down so it
      opens short. Services still goes to the services section, and every service
      page is reachable from the cards there. */
@media (max-width: 980px) {
  .et_mobile_menu li.sub-item { display: none !important; }
}

/* 3. No enlarge-on-hover. .fee-txt:hover came from the original Divi site,
      the gallery one was mine. */
.fee-txt:hover { -webkit-transform: none !important; transform: none !important; }
.gal-tile:hover img { transform: none; }

/* 4. Softer, deeper red for the contact band: the clinic's own primary maroon
      rather than the brighter crimson. */
.sec-contact, .sec-contact .contact-band { background-color: #8c1b30 !important; }
.footer-book-btn:hover { background: #8c1b30 !important; }

/* ==========================================================================
   2026-08-27 round 9 — header jitter fix.
   With position:sticky the header stayed IN the document flow, so shrinking it
   moved every following section up, which changed scrollY, which crossed the
   threshold back the other way, which un-shrank it... an oscillation loop right
   at the boundary. The standard fix: take the header OUT of flow (fixed) and
   reserve its full height once with a constant spacer, so the shrink can never
   move the page. The JS adds hysteresis so the class can't flip-flop either.
   ========================================================================== */
#main-header { position: fixed !important; top: 0; left: 0; right: 0; width: 100%; }
#page-container { padding-top: 94px; }
@media (max-width: 980px) { #page-container { padding-top: 68px; } }
/* the spacer is constant, so only the bar itself animates */
#main-header .header-container { will-change: height; }

/* round 9: gallery hover zoom back (the fee-column scale stays off) */
.gal-tile:hover img { transform: scale(1.04); }

/* round 9b: the dropdown was resolving its left/right against .header-container
   (312px, the 80% content width) rather than the full bar, so the page showed
   through a 39px gutter each side. Anchor it to #main-header instead. */
@media (max-width: 980px) {
  #main-header .header-container { position: static; }
  .et_mobile_menu { left: 0; right: 0; width: 100%; }
}

/* ===================================================================
   ROUND 10: contact page, exercise library, photo strip, bike fitting
   =================================================================== */

/* ---------- Contact page ---------- */
.sec-contact-page { padding: 40px 0 60px; }
.cp-grid { display: grid; grid-template-columns: 1fr 1.15fr; gap: 60px; align-items: start; }
.cp-h2 { font-family: 'bookman-jf-pro', 'URW Bookman', Georgia, serif; font-size: 24px;
  color: #990c2f; margin: 0 0 12px; font-weight: 700; }
.cp-info .cp-h2 + .cp-h2 { margin-top: 28px; }
.cp-info .cp-h2:not(:first-child) { margin-top: 32px; }
.cp-line { font-size: 17px; line-height: 1.8em; color: #293132; margin: 0; }
.cp-line a { color: #990c2f; text-decoration: none; }
.cp-line a:hover { text-decoration: underline; }
.cp-hours { border-collapse: collapse; width: 100%; max-width: 380px; font-size: 16px; }
.cp-hours th, .cp-hours td { text-align: left; padding: 7px 0; border-bottom: 1px solid #e6e6e6;
  font-weight: 400; color: #293132; }
.cp-hours th { padding-right: 24px; font-weight: 600; }
.cp-hours td { text-align: right; }
.cp-note { font-size: 15px; color: #6b7275; margin: 20px 0 26px; }
.cp-formnote { font-size: 15px; color: #6b7275; margin: 0 0 22px; line-height: 1.7em; }
.cp-form-wrap { background: #f7f7f7; padding: 34px 34px 38px; border-radius: 4px; }
.cp-field { margin-bottom: 18px; }
.cp-field label { display: block; font-size: 14px; font-weight: 600; color: #293132;
  margin-bottom: 6px; letter-spacing: 0.02em; }
.cp-field input, .cp-field select, .cp-field textarea {
  width: 100%; padding: 12px 14px; font-size: 16px; font-family: inherit; color: #293132;
  background: #fff; border: 1px solid #d4d4d4; border-radius: 3px; box-sizing: border-box; }
.cp-field textarea { resize: vertical; min-height: 130px; }
.cp-field input:focus, .cp-field select:focus, .cp-field textarea:focus {
  outline: none; border-color: #990c2f; box-shadow: 0 0 0 2px rgba(153,12,47,0.12); }
.cp-privacy { font-size: 13px; color: #7a8083; line-height: 1.6em; margin: 0 0 20px; }
.cp-submit { display: inline-block; cursor: pointer; font-family: inherit;
  background-color: #990c2f; border: 2px solid #990c2f; color: #fff !important;
  font-size: 18px; padding: .45em 1.4em; letter-spacing: .02em; }
.cp-submit:hover { background-color: #7d0a26; border-color: #7d0a26; }
.cp-submit:focus-visible { outline: 3px solid #293132; outline-offset: 2px; }
.cp-hp { position: absolute; left: -9999px; }
.sec-contact-map { padding: 0; }
.sec-contact-map .map-container { width: 100%; height: 420px; }
.sec-contact-map .map-embed { width: 100%; height: 100%; border: 0; display: block; }
@media (max-width: 980px) {
  .cp-grid { grid-template-columns: 1fr; gap: 40px; }
  .cp-form-wrap { padding: 26px 22px 30px; }
  .sec-contact-map .map-container { height: 320px; }
}

/* ---------- Exercise library ---------- */
.sec-exercises { padding: 10px 0 50px; }
.ex-controls { max-width: 520px; margin: 0 auto 18px; }
.ex-search-label { position: absolute; left: -9999px; }
.ex-search { width: 100%; padding: 13px 16px; font-size: 16px; font-family: inherit;
  border: 1px solid #d4d4d4; border-radius: 3px; box-sizing: border-box; color: #293132; }
.ex-search:focus { outline: none; border-color: #990c2f; box-shadow: 0 0 0 2px rgba(153,12,47,0.12); }
.ex-chips { display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; margin: 0 0 14px; }
.ex-chip { font-family: inherit; font-size: 13px; letter-spacing: 0.04em; padding: 8px 15px;
  border: 1px solid #d4d4d4; background: #fff; color: #56595b; border-radius: 40px;
  cursor: pointer; transition: background .18s, color .18s, border-color .18s; }
.ex-chip:hover { border-color: #990c2f; color: #990c2f; }
.ex-chip.is-on { background: #990c2f; border-color: #990c2f; color: #fff; }
.ex-count { text-align: center; font-size: 14px; color: #7a8083; margin: 0 0 24px; }
.ex-grid { list-style: none; margin: 0; padding: 0; display: grid;
  grid-template-columns: repeat(auto-fill, minmax(196px, 1fr)); gap: 26px 18px; }
.ex-card { margin: 0; }
.ex-card[hidden] { display: none; }
.ex-thumb { display: block; position: relative; width: 100%; padding: 0; border: 0;
  background: #000; cursor: pointer; border-radius: 3px; overflow: hidden; line-height: 0; }
.ex-thumb img { width: 100%; height: auto; aspect-ratio: 3 / 4; object-fit: cover; display: block; transition: transform .3s ease, opacity .3s ease; }
.ex-thumb:hover img { transform: scale(1.05); opacity: .85; }
.ex-thumb:focus-visible { outline: 3px solid #990c2f; outline-offset: 2px; }
.ex-play { position: absolute; left: 50%; bottom: 12px; width: 46px; height: 32px; margin-left: -23px;
  background: rgba(153,12,47,0.94); border-radius: 7px; transition: background .18s;
  box-shadow: 0 2px 10px rgba(0,0,0,0.35); }
.ex-play::after { content: ""; position: absolute; left: 18px; top: 9px; border-style: solid;
  border-width: 7px 0 7px 11px; border-color: transparent transparent transparent #fff; }
.ex-thumb:hover .ex-play { background: #990c2f; }
.ex-card iframe { width: 100%; aspect-ratio: 3 / 4; border: 0; display: block; border-radius: 3px; background: #000; }
.ex-title { font-size: 15px; line-height: 1.45em; color: #293132; margin: 10px 0 0; }
.ex-empty { text-align: center; color: #7a8083; font-size: 16px; padding: 30px 0; }
.ex-yt-wrap { margin-top: 44px; }
@media (max-width: 600px) { .ex-grid { grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 20px 12px; }
  .ex-title { font-size: 13.5px; } }

/* ---------- Homepage photo strip ---------- */
.sec-photostrip { padding: 44px 0 50px; background: #f7f7f7; }
.ps-viewport { overflow: hidden; margin: 6px 0 22px; }
.ps-track { list-style: none; margin: 0; padding: 0; display: flex;
  transition: transform .7s cubic-bezier(.4,0,.2,1); will-change: transform; }
.ps-slide { flex: 0 0 50%; padding: 0 8px; box-sizing: border-box; }
.ps-slide img { width: 100%; height: auto; object-fit: cover; display: block; border-radius: 2px; }
/* two-across cards share one shape. left off phones on purpose: there the photo
   keeps its own ratio, taken from the width/height attributes so the slot is the
   right size before the photo has even loaded */
@media (min-width: 601px) { .ps-slide img { aspect-ratio: 3 / 2; } }
.ps-controls { display: flex; justify-content: center; align-items: center; gap: 10px; margin-bottom: 26px; }
.ps-btn { font-family: inherit; font-size: 14px; min-width: 40px; padding: 7px 14px;
  border: 1px solid #cfcfcf; background: #fff; color: #56595b; border-radius: 3px; cursor: pointer;
  transition: border-color .18s, color .18s; }
.ps-btn:hover { border-color: #990c2f; color: #990c2f; }
.ps-btn:focus-visible { outline: 2px solid #990c2f; outline-offset: 2px; }
@media (max-width: 980px) { .ps-slide { flex: 0 0 50%; padding: 0 6px; } }
@media (max-width: 600px) { .ps-slide { flex: 0 0 100%; } }
@media (prefers-reduced-motion: reduce) { .ps-track { transition: none; } }

/* ---------- Bike fitting ---------- */
.sec-bf-hero { padding: 30px 0 20px; }
.bf-hero { display: grid; grid-template-columns: 0.85fr 1.15fr; gap: 48px; align-items: center; }
.bf-hero-img img { width: 100%; height: auto; display: block; border-radius: 3px; }
.bf-h2 { font-family: 'bookman-jf-pro', 'URW Bookman', Georgia, serif; font-size: 28px;
  color: #990c2f; margin: 0 0 18px; line-height: 1.25em; font-weight: 700; }
.bf-hero-txt p { font-size: 17px; line-height: 1.8em; color: #293132; margin: 0 0 16px; }
.sec-bf-who, .sec-bf-bring { padding: 34px 0 10px; }
.bf-list { list-style: disc outside; max-width: 820px; margin: 0; padding: 0 0 0 20px; }
.bf-list li { display: list-item; font-size: 17px; line-height: 1.8em; color: #293132;
  margin-bottom: 10px; padding-left: 4px; }
.bf-note { max-width: 820px; margin: 22px 0 0; font-size: 15px; color: #6b7275; line-height: 1.7em; }
@media (max-width: 980px) { .bf-hero { grid-template-columns: 1fr; gap: 28px; }
  .bf-hero-img { max-width: 420px; margin: 0 auto; } .bf-h2 { font-size: 24px; } }

/* ---------- Running assessment ---------- */
.sec-run { padding: 40px 0 20px; }
.run-block { display: grid; grid-template-columns: 0.7fr 1.3fr; gap: 40px; align-items: center;
  max-width: 900px; margin: 10px auto 0; }
.run-img img { width: 100%; height: auto; display: block; border-radius: 3px; }
.run-txt p { font-size: 17px; line-height: 1.8em; color: #293132; margin: 0 0 16px; }
.run-price { color: #b1203a; font-family: 'Merriweather', Georgia, 'Times New Roman', serif;
  font-weight: bold; font-size: 22px; }
.run-fee { margin-bottom: 18px !important; }
.run-more { text-align: center; font-size: 16px; color: #56595b; margin: 34px 0 0; }
.run-more a { color: #990c2f; }
@media (max-width: 780px) { .run-block { grid-template-columns: 1fr; gap: 24px; }
  .run-img { max-width: 300px; margin: 0 auto; } }
.ex-more-wrap { text-align: center; margin-top: 34px; }
.ex-more-wrap[hidden] { display: none; }
.ex-more { font-family: inherit; font-size: 15px; letter-spacing: .03em; padding: 11px 26px;
  border: 1px solid #990c2f; background: #fff; color: #990c2f; border-radius: 3px; cursor: pointer;
  transition: background .18s, color .18s; }
.ex-more:hover { background: #990c2f; color: #fff; }
.ex-more:focus-visible { outline: 2px solid #293132; outline-offset: 2px; }

/* ---------- Bike fitting: the seven-step process ---------- */
.sec-bf-process { padding: 34px 0 44px; }
.bf-intro { font-size: 17px; color: #56595b; margin: 0 0 30px; }
.bf-steps { list-style: none; counter-reset: bfstep; margin: 0; padding: 0;
  max-width: 860px; display: grid; gap: 4px; }
.bf-step { counter-increment: bfstep; position: relative; padding: 18px 0 18px 66px;
  border-bottom: 1px solid #ececec; }
.bf-step:last-child { border-bottom: 0; }
.bf-step::before { content: counter(bfstep); position: absolute; left: 0; top: 13px;
  width: 42px; height: 42px; line-height: 42px; text-align: center;
  background: #990c2f; color: #fff; border-radius: 50%;
  font-family: 'bookman-jf-pro', 'URW Bookman', Georgia, serif; font-size: 20px; }
.bf-step-title { font-family: 'bookman-jf-pro', 'URW Bookman', Georgia, serif;
  font-size: 21px; color: #293132; margin: 0 0 5px; font-weight: 400; line-height: 1.3em; }
.bf-step-body { font-size: 16.5px; line-height: 1.75em; color: #56595b; margin: 0; }
@media (max-width: 600px) {
  .bf-step { padding: 15px 0 15px 54px; }
  .bf-step::before { width: 36px; height: 36px; line-height: 36px; font-size: 17px; top: 14px; }
  .bf-step-title { font-size: 19px; }
  .bf-step-body { font-size: 15.5px; }
}

/* ===================================================================
   ROUND 11: fees dropdown, video lightbox, strip changes
   =================================================================== */

/* ---------- Fees as a dropdown (every page except the home page) ---------- */
.sec-fees-drop { padding: 10px 0 6px; }
.fees-details { border-top: 1px solid #e2e2e2; border-bottom: 1px solid #e2e2e2; }
.fees-details > summary { list-style: none; cursor: pointer; position: relative;
  padding: 20px 46px 20px 0; font-family: 'bookman-jf-pro', 'URW Bookman', Georgia, serif;
  font-size: 23px; color: #293132; }
.fees-details > summary::-webkit-details-marker { display: none; }
.fees-details > summary::after { content: "+"; position: absolute; right: 6px; top: 50%;
  transform: translateY(-50%); font-size: 26px; line-height: 1; color: #990c2f;
  font-family: Georgia, serif; transition: transform .2s ease; }
.fees-details[open] > summary::after { content: "\2013"; }
.fees-details > summary:hover { color: #990c2f; }
.fees-details > summary:focus-visible { outline: 2px solid #990c2f; outline-offset: 3px; }
.fees-drop-body { padding: 4px 0 26px; }
.fees-drop-body .fee-col,
.fees-drop-body .fee-col-page { width: auto; max-width: 100%; float: none; padding: 0; }
.fees-drop-body .fee-txt { text-align: left; }
.fees-drop-body .fee-txt h1, .fees-drop-body .fee-txt .h-display { font-size: 21px !important; text-align: left; margin: 0 0 10px; }
.fees-drop-body .fee-txt p { text-align: left; margin: 0 0 7px; }

/* ---------- Video lightbox on the exercise library ---------- */
.vlightbox { position: fixed; inset: 0; z-index: 220; background: rgba(18,20,20,0.95);
  display: flex; align-items: center; justify-content: center; padding: 20px; }
.vlightbox[hidden] { display: none; }
.vlb-stage { display: flex; flex-direction: column; align-items: center; gap: 14px;
  max-width: 92vw; }
.vlb-frame { width: min(58vh, 88vw); aspect-ratio: 9 / 16; max-height: 82vh;
  background: #000; border-radius: 4px; overflow: hidden; box-shadow: 0 10px 50px rgba(0,0,0,0.55); }
.vlb-frame iframe { width: 100%; height: 100%; border: 0; display: block; }
.vlb-title { color: #fff; font-size: 17px; text-align: center; margin: 0; max-width: 90vw; }
.vlb-close, .vlb-prev, .vlb-next { position: absolute; background: none; border: none;
  color: #fff; line-height: 1; cursor: pointer; padding: 12px 18px; opacity: 0.85; }
.vlb-close:hover, .vlb-prev:hover, .vlb-next:hover { opacity: 1; }
.vlb-close { top: 12px; right: 16px; font-size: 44px; }
.vlb-prev, .vlb-next { top: 50%; transform: translateY(-50%); font-size: 60px; }
.vlb-prev { left: 6px; } .vlb-next { right: 6px; }
.vlb-close:focus-visible, .vlb-prev:focus-visible, .vlb-next:focus-visible {
  outline: 2px solid #fff; outline-offset: 2px; }
@media (max-width: 600px) {
  .vlb-frame { width: min(52vh, 82vw); }
  .vlb-prev, .vlb-next { font-size: 44px; padding: 10px 8px; }
  .vlb-title { font-size: 15px; }
}

/* ---------- Photo strip: clickable slides, full photos on phones ---------- */
.ps-open { display: block; width: 100%; padding: 0; border: 0; background: none;
  cursor: pointer; line-height: 0; }
.ps-open:focus-visible { outline: 3px solid #990c2f; outline-offset: 2px; }
.ps-viewport { touch-action: pan-y; }
@media (max-width: 600px) {
  /* one photo per screen, filling the row edge to edge. nothing is cropped and
     nothing is letterboxed either: each photo keeps its own shape and the
     viewport is resized in JS to whichever slide is showing */
  .ps-slide { flex: 0 0 100%; padding: 0; }
  /* max-height is a safety valve: on a short, wide phone screen a portrait shot
     would otherwise run taller than the screen itself */
  .ps-slide img { width: 100%; height: auto; max-height: 92vh; object-fit: contain;
    background: transparent; }
  .ps-track { align-items: flex-start; }
  .ps-viewport { transition: height .35s cubic-bezier(.4,0,.2,1); }
}
@media (max-width: 600px) and (prefers-reduced-motion: reduce) {
  .ps-viewport { transition: none; }
}

/* ---------- Bike fitting block on the physiotherapy page ---------- */
.sec-bfx { padding-top: 46px; }
.run-block-rev { grid-template-columns: 1.3fr 0.7fr; }
.run-block-rev .run-img { order: 2; }
.run-block-rev .run-txt { order: 1; }
@media (max-width: 780px) {
  .run-block-rev { grid-template-columns: 1fr; }
  .run-block-rev .run-img { order: 1; max-width: 300px; margin: 0 auto; }
  .run-block-rev .run-txt { order: 2; }
}

/* ===================================================================
   ROUND 12: aligned service cards, full-size fees heading, tighter gaps
   =================================================================== */

/* ---------- Line up "Learn more" across the four service cards ----------
   The cards are staggered by design (different margin-tops), but grid
   stretch gives them a shared bottom edge, so pinning the link to the
   bottom of each card puts all four on one line. Multi-column only:
   at one card per row there is nothing to align. */
@media (min-width: 768px) {
  a.svc-brief { display: flex; }
  a.svc-brief .svc-card-desc { display: flex; flex-direction: column; width: 100%; }
  a.svc-brief .svc-card-desc > div { display: flex; flex-direction: column; flex: 1 1 auto; }
  a.svc-brief .svc-more { margin-top: auto; padding-top: 16px; }
}

/* ---------- Fees dropdown with a full-size section heading ---------- */
.sec-fees-drop { padding: 26px 0 10px; }
.fees-details { border-top: 0; border-bottom: 0; }
.fees-details > summary { padding: 6px 56px 10px 0; }
.fees-sum { display: block; }
.fees-sum-title { display: block; font-family: bookman-jf-pro, serif; font-weight: 400;
  font-size: 42px; line-height: 1.25em; color: #333333; margin-bottom: 6px; }
.fees-details > summary:hover .fees-sum-title { color: #990c2f; }
.fees-sum .et-divider { display: block; margin: 0; width: 13%; height: 23px; position: relative; }
.fees-details > summary::after { top: 26px; transform: none; font-size: 34px; }
.fees-details[open] > summary::after { top: 30px; }
.fees-drop-body { padding: 2px 0 30px; }
@media (max-width: 767px) {
  .fees-sum-title { font-size: 30px; }
  .fees-details > summary::after { top: 16px; font-size: 28px; }
  .fees-details[open] > summary::after { top: 20px; }
}

/* ---------- Tighten the gap under the last practitioner group ---------- */
.sec-team { padding-bottom: 34px; }
.team-group:last-child { margin-bottom: 0; }

/* ---------- Tighten the gap under Inside the Clinic ---------- */
.sec-photostrip { padding-bottom: 30px; }
.ps-controls { margin-bottom: 18px; }
.sec-photostrip .btn-wrap { margin-bottom: 0; }

/* ---------- Careers: full-width job accordions ---------- */
.car-intro { max-width: 900px; }
.car-intro p { font-size: 17px; line-height: 1.8em; color: #293132; margin: 0; }
.car-jobs-row { padding-top: 46px !important; }
.job-item { border-top: 1px solid #e2e2e2; }
.job-item:last-of-type { border-bottom: 1px solid #e2e2e2; }
.job-item > summary { list-style: none; cursor: pointer; position: relative;
  display: flex; align-items: center; gap: 22px; padding: 18px 52px 18px 0; }
.job-item > summary::-webkit-details-marker { display: none; }
.job-item > summary::after { content: "+"; position: absolute; right: 8px; top: 50%;
  transform: translateY(-50%); font-size: 30px; line-height: 1; color: #990c2f; font-family: Georgia, serif; }
.job-item[open] > summary::after { content: "\2013"; }
.job-item > summary:focus-visible { outline: 2px solid #990c2f; outline-offset: 3px; }
.job-thumb { flex: 0 0 190px; line-height: 0; overflow: hidden; border-radius: 3px; }
.job-thumb img { width: 190px; height: 118px; object-fit: cover; display: block;
  transition: transform .35s ease; }
.job-item > summary:hover .job-thumb img { transform: scale(1.04); }
.job-sum { display: flex; flex-direction: column; gap: 6px; }
.job-title { font-family: bookman-jf-pro, serif; font-size: 26px; color: #293132; line-height: 1.2em; }
.job-item > summary:hover .job-title { color: #990c2f; }
.job-meta { font-size: 14.5px; color: #6b7275; letter-spacing: .01em; }
.job-body { padding: 2px 0 34px; max-width: 860px; }
.job-body p { font-size: 16.5px; line-height: 1.8em; color: #293132; margin: 0 0 18px; }
.job-body h3 { font-family: bookman-jf-pro, serif; font-weight: 400; font-size: 21px;
  color: #990c2f; margin: 26px 0 10px; }
.job-body ul { margin: 0 0 6px; padding-left: 20px; list-style: disc outside; }
.job-body li { display: list-item; font-size: 16.5px; line-height: 1.75em; color: #293132;
  margin-bottom: 7px; padding-left: 4px; }
.job-apply { margin-top: 24px !important; font-size: 16px !important; }
.job-apply a, .car-why a { color: #990c2f; }
.car-why-row { padding-top: 54px !important; }
.car-why p { font-size: 17px; line-height: 1.8em; color: #293132; margin: 0 0 16px; max-width: 860px; }
.car-tagline { margin-top: 24px !important; }
@media (max-width: 600px) {
  .job-item > summary { gap: 14px; padding: 15px 40px 15px 0; }
  .job-thumb { flex: 0 0 96px; }
  .job-thumb img { width: 96px; height: 74px; }
  .job-title { font-size: 20px; }
  .job-meta { font-size: 13px; }
  .job-body p, .job-body li { font-size: 15.5px; }
  .job-body h3 { font-size: 19px; }
}

/* ===================================================================
   ROUND 13: careers hero, fees always expanded
   =================================================================== */

/* ---------- Fees: same look, no dropdown ---------- */
.fees-open-body { padding: 6px 0 4px; }
.fees-open-body .fee-col,
.fees-open-body .fee-col-page { width: auto; max-width: 100%; float: none; padding: 0; }
.fees-open-body .fee-txt { text-align: left; }
.fees-open-body .fee-txt h1, .fees-open-body .fee-txt .h-display { font-size: 21px !important; text-align: left; margin: 0 0 10px; }
.fees-open-body .fee-txt p { text-align: left; margin: 0 0 7px; }

/* ---------- Careers hero ---------- */
.car-hero {
  background-color: #2b2f30 !important;
  /* lighter scrim than the original near-black gradient, so the photo behind
     it reads as a clinic instead of a dark smudge */
  background-image: linear-gradient(180deg, rgba(20,22,22,0.34) 0%, rgba(20,22,22,0.52) 100%),
                    url("../images/PT-Room--1024x683.jpg");
  background-position: 50% 45%;
  background-size: cover;
}
.car-hero-txt { padding: 96px 0 96px 0 !important; text-align: center; }
.car-hero-title {
  font-family: bookman-jf-pro, serif;
  font-weight: 400;
  font-size: 82px;
  line-height: 1.05em;
  letter-spacing: 0.02em;
  color: #ffffff;
  margin: 0;
  text-shadow: 0 2px 18px rgba(0,0,0,0.4);
}
@media (max-width: 980px) {
  .car-hero-txt { padding: 74px 0 74px 0 !important; }
  .car-hero-title { font-size: 62px; }
  /* The base .car-hero-row carries fixed 83px/85px side padding, which is fine
     at desktop and crushes the row on a phone: at 390px it left 133px of usable
     width and wrapped the "s" off the end of "Careers". Shrink it here and drop
     it entirely on phones. Fixed 2026-08-31. */
  .car-hero-row { padding-left: 40px !important; padding-right: 40px !important; }
}
@media (max-width: 600px) {
  .car-hero-txt { padding: 56px 0 56px 0 !important; }
  .car-hero-title { font-size: 46px; }
  .car-hero-row { width: 90%; padding-left: 0 !important; padding-right: 0 !important; }
}

/* ==========================================================================
   2026-08-28 round 7
   - header call + email icon links (restores the two icon items the original
     site had; drawn as inline SVG so they do not depend on Font Awesome,
     which collapses on the non-home pages)
   - Fees nav item + Fees page
   - bike fitting page: contact-to-book buttons
   ========================================================================== */

#top-menu li.hdr-icon { padding-right: 14px; }
#top-menu li.hdr-icon a {
  color: #293232;
  line-height: 1;
  padding-bottom: 45px;
}
#top-menu li.hdr-icon a svg { display: block; }
#top-menu li.hdr-icon a:hover { color: #990c2f; opacity: 1; }
#top-menu li.hdr-icon + li.appointment-btn { margin-left: 6px; }

@media (max-width: 1240px) {
  #top-menu li { padding-right: 16px; }
  #top-menu li.hdr-icon { padding-right: 11px; }
  .appointment-btn a { padding: 12px 18px !important; }
}
@media (max-width: 1120px) {
  #top-menu li.hdr-icon { padding-right: 9px; }
  .appointment-btn a { padding: 11px 14px !important; }
}

@media (max-width: 980px) {
  #top-menu li.hdr-icon { display: none; }
  .et_mobile_menu li.mob-contact a { color: #293132 !important; font-weight: 600; }
}

/* ---------- bike fitting: contact-to-book buttons ---------- */
.bf-contact-btns { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; }
.btn-wrap-center.bf-contact-btns { justify-content: center; }
a.btn-book.btn-book-primary {
  background: #990c2f;
  border-color: #990c2f !important;
  color: #ffffff !important;
}
a.btn-book.btn-book-primary:hover { background: #b1203a; border-color: #b1203a !important; color: #ffffff !important; }
.bf-book-note {
  margin-top: 16px;
  font-family: 'Source Sans Pro', Helvetica, Arial, sans-serif;
  font-size: 16px; line-height: 1.7; color: #5a6162; margin-top: 14px;
}
.btn-wrap-center + .bf-book-note { text-align: center; }

/* ---------- Fees page ---------- */
.sec-fees-all { padding-top: 10px; }
.fees-all-intro {
  max-width: 760px; margin: 0 auto 10px; text-align: center;
  font-family: 'Source Sans Pro', Helvetica, Arial, sans-serif;
  font-size: 18px; line-height: 1.8; color: #333333;
}
.fees-all-group { margin-top: 46px; }
.fees-all-group .fee-col { width: 100%; padding: 0; }
.fees-all-note {
  max-width: 760px; margin: 46px auto 0; text-align: center;
  font-family: 'Source Sans Pro', Helvetica, Arial, sans-serif;
  font-size: 16px; line-height: 1.8; color: #5a6162;
}
.fees-all-note a { color: #990c2f; font-weight: 600; }
.fees-all-intro a { color: #990c2f; font-weight: 600; }
.fees-all-bike .fees-open-body { display: block; }
.fees-all-bike .fee-txt { text-align: left; }
.fees-all-bike .fee-physio { margin-right: 0 !important; }
.fees-all-bike .fees-all-note { margin-left: 0; margin-right: 0; text-align: left; max-width: 640px; }
.fees-more-row { padding-top: 0 !important; }

/* ---------- pelvic floor physiotherapy (added 2026-08-29) ---------- */
.pr-card-nophoto {
  aspect-ratio: 724 / 905;
  background: #f2f2f3;
  border: 1px solid #e2e2e2;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 10px;
  line-height: 1.2;
  text-align: center;
  padding: 10px;
}
.pr-nophoto-initials {
  font-family: 'Merriweather', Georgia, 'Times New Roman', serif;
  font-size: 40px;
  font-weight: bold;
  color: #990c2f;
  letter-spacing: 1px;
}
.pr-nophoto-label {
  font-size: 12.5px;
  color: #6b7275;
  letter-spacing: 0.4px;
}
.sec-cond .cond-list {
  list-style: none;
  margin: 0 auto;
  padding: 0;
  max-width: 820px;
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 10px 34px;
  text-align: left;
}
.sec-cond .cond-list li {
  position: relative;
  padding-left: 20px;
  font-size: 16px;
  line-height: 1.7em;
  color: #333333;
}
.sec-cond .cond-list li:before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.72em;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: #990c2f;
}
.sec-cond .cond-note {
  max-width: 820px;
  margin: 26px auto 0;
  text-align: left;
  font-size: 15px;
  color: #56595b;
}
.sec-cond .cond-note a { color: #990c2f; font-weight: 600; }
.cards-row-brief.cards-row-5 .svc-card-desc h1, .cards-row-brief.cards-row-5 .svc-card-desc .h-display { line-height: 1.15em !important; margin-bottom: 14px !important; }
.sec-cond .btn-wrap-center { margin-top: 26px; }
/* Services row, rebuilt 2026-08-29. Three columns flowing left, so Massage sits
   under Physiotherapy and Pelvic Floor under Chiropractic. The cards lose their
   inherited centring and their side padding, which puts the first column's text on
   the same left edge as the "Our Services" heading, and a hairline rule over each
   card gives the columns structure so the empty third slot in row two reads as
   deliberate. Learn more and the Book An Appointment button line up on that same
   left edge. */
.cards-row-brief {
  /* .cards-row widens this to 1440px, which pushed the grid's left edge outside
     the section heading and the button. Back to the 1080px every other row uses. */
  max-width: 1080px;
}
.cards-row-brief .svc-brief {
  text-align: left;
  padding: 20px 0 0;
  border-top: 2px solid #990c2f;
}
.cards-row-brief .svc-more { text-align: left; }
.cards-btn-row .svc-book-wrap { text-align: left; margin-top: 26px !important; }

@media (min-width: 981px) {
  .cards-row-brief.cards-row-5 { grid-template-columns: repeat(3, 1fr); gap: 34px 40px; }
  .team-grid.team-grid-5 { grid-template-columns: repeat(5, 1fr); gap: 18px; }
}
@media (max-width: 767px) {
  .sec-cond .cond-list { grid-template-columns: 1fr; gap: 8px; }
  .pr-nophoto-initials { font-size: 30px; }
  .pr-nophoto-label { font-size: 11px; }
}
