/* ============================================================
   SOMA WELLBEING CENTRE — Foundation CSS
   Paste into: WPCode (CSS snippet) OR Astra child theme style.css OR
   Elementor > Site Settings > Custom CSS.
   APPLY ON STAGING FIRST. Nothing here is required for Elementor's own
   Global Colors/Fonts — this covers the design tokens (for Custom HTML
   widgets) and the bespoke bits Elementor can't do natively.
   ============================================================ */

/* ---- 1. Design tokens (mirror these in Elementor Global Colors) ---- */
:root{
  --soma-cream:#f6f1ea;      /* page background            */
  --soma-paper:#fffdf9;      /* cards / surfaces           */
  --soma-ink:#3a352e;        /* body text + headings       */
  --soma-muted:#6b635a;      /* secondary text             */
  --soma-sage:#8a9a7b;       /* primary / buttons          */
  --soma-sage-dark:#6f7f61;  /* hover / links              */
  --soma-spruce:#464f3d;     /* dark bands                 */
  --soma-spruce-2:#3a4233;   /* footer                     */
  --soma-terra:#bd8b6a;      /* accent: eyebrows, prices   */
  --soma-line:#e6ddd1;       /* borders                    */
  --soma-radius:16px;        /* cards                      */
  --soma-radius-pill:30px;   /* buttons                    */
  --soma-ease-out:cubic-bezier(.22,.61,.36,1); /* strong ease-out for UI */
}

/* Fonts: preferred route is Elementor Global Fonts (Headings = Spectral,
   Body = Jost) which loads Google Fonts for you. If you are NOT
   using Elementor global fonts, uncomment the import below. */
/* @import url('https://fonts.googleapis.com/css2?family=Spectral:wght@500;600&family=Jost:wght@300;400;500;600&display=swap'); */

/* ---- 2. Reusable helpers (use inside Elementor HTML widgets) ---- */

/* Eyebrow label (terra, uppercase, spaced) — above section headings */
.soma-eyebrow{
  color:var(--soma-terra);
  font-family:'Jost',sans-serif;
  font-size:12px;
  font-weight:500;
  letter-spacing:4px;
  text-transform:uppercase;
  display:inline-block;
}

/* Small caps discipline label (sage) — under practitioner/treatment names */
.soma-disc{
  color:var(--soma-sage-dark);
  font-family:'Jost',sans-serif;
  font-size:11px;
  font-weight:500;
  letter-spacing:2px;
  text-transform:uppercase;
}

/* Pill buttons (match Elementor button styling to these) */
.soma-btn{
  display:inline-flex;align-items:center;justify-content:center;
  font-family:'Jost',sans-serif;font-size:14px;font-weight:500;letter-spacing:.6px;
  padding:12px 26px;border-radius:var(--soma-radius-pill);
  background:var(--soma-sage);color:#fff;text-decoration:none;
  transition:background .25s ease;
}
.soma-btn:hover{background:var(--soma-sage-dark);color:#fff;}
.soma-btn-ghost{
  background:transparent;color:var(--soma-ink);
  border:1px solid var(--soma-line);
}
.soma-btn-ghost:hover{border-color:var(--soma-sage);color:var(--soma-sage-dark);background:transparent;}

/* Price / figure accent (Spectral, terra) */
.soma-price{font-family:'Spectral',serif;font-weight:400;color:var(--soma-terra);}

/* Cancellation microcopy (booking areas, light bg) — subtle, single-source */
.soma-cancel-note{font-family:'Jost',sans-serif;font-size:13.5px;line-height:1.55;color:var(--soma-muted);max-width:520px;margin:16px auto 0;text-align:center;}

/* Home hero: soften the busy reception photo behind the headline. The overlay
   sits above the background image and below the text, so blurring its backdrop
   frosts the photo only — the headline and buttons stay crisp. */
.elementor-element-84109b5 > .elementor-background-overlay{
  -webkit-backdrop-filter:blur(6px);
  backdrop-filter:blur(6px);
}
/* Treatments small hero: light cream wash + strong blur so the heading + intro
   stay readable even where the text crosses the darker massage couch. */
.elementor-element-923880e > .elementor-background-overlay{
  -webkit-backdrop-filter:blur(12px);
  backdrop-filter:blur(12px);
}

/* Dark band wrapper (spruce) — for full-width sections built as HTML */
.soma-band{background:var(--soma-spruce);color:#eef1e9;}
.soma-band .soma-eyebrow{color:#c3cdb5;}

/* ---- 3. Mobile sticky action bar (Elementor can't do this natively) ----
   Add the markup below once, in a global HTML widget / footer, then this
   CSS pins it to the bottom on phones only. Update the tel: number and the
   page links to your real slugs. */
.soma-mobile-bar{
  display:none;position:fixed;left:0;right:0;bottom:0;z-index:999;
  background:rgba(255,253,249,.95);backdrop-filter:blur(12px);
  border-top:1px solid var(--soma-line);
  padding:8px 10px calc(8px + env(safe-area-inset-bottom));
}
.soma-mobile-bar .inner{display:flex;gap:8px;max-width:640px;margin:0 auto;}
.soma-mobile-bar a{
  flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;
  font-family:'Jost',sans-serif;font-size:11px;letter-spacing:.5px;text-transform:uppercase;
  color:var(--soma-muted);text-decoration:none;padding:9px 4px;border-radius:12px;
}
.soma-mobile-bar a.primary{background:var(--soma-sage);color:#fff;}
.soma-mobile-bar a svg{width:20px;height:20px;}
@media(max-width:768px){
  .soma-mobile-bar{display:block;}
  body{padding-bottom:74px;} /* stop the bar covering footer content */
}
/*  MARKUP to paste once (HTML widget), update links + phone:
<div class="soma-mobile-bar"><div class="inner">
  <a href="/treatments/">
    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6"><path d="M4 19c0-8 6-13 14-14-1 9-6 14-14 14z"/></svg>
    <span>Treatments</span></a>
  <a href="tel:+44XXXXXXXXXX">
    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6"><path d="M5 4h3l2 5-2 1.5a11 11 0 005 5L19 13l1 5-3 1c-8 0-13-5-13-13z" stroke-linecap="round" stroke-linejoin="round"/></svg>
    <span>Call</span></a>
  <a class="primary" href="/room-hire-enquiry/">
    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6"><path d="M4 5h16v11H8l-4 4z" stroke-linecap="round" stroke-linejoin="round"/></svg>
    <span>Enquire</span></a>
</div></div>
*/

/* ---- 4. Practitioner avatar row (home "Meet the team" teaser) ---- */
.soma-prac-mini{display:flex;gap:34px;justify-content:center;flex-wrap:wrap;}
.soma-prac-mini a{display:flex;flex-direction:column;align-items:center;gap:11px;text-decoration:none;transition:transform .25s ease;}
.soma-prac-mini a:hover{transform:translateY(-4px);}
.soma-prac-mini img{width:104px;height:104px;border-radius:50%;object-fit:cover;border:3px solid rgba(255,255,255,.18);box-shadow:0 12px 26px rgba(0,0,0,.2);}
.soma-prac-mini b{color:#fff;font-family:'Spectral',serif;font-size:20px;font-weight:400;}
.soma-prac-mini span{color:#c3cdb5;font-size:11px;letter-spacing:1.2px;text-transform:uppercase;}

/* ---- Practitioner card sizing (reliable width cap; Elementor drops container width) ---- */
.soma-pcard{width:100% !important;max-width:360px !important;}
.soma-pcard img{width:100%;height:auto;display:block;}

/* ---- Concept-style pill chips for the "browse by need" tab filters ---- */
.elementor-widget-tabs .elementor-tabs-wrapper{
  display:flex;flex-wrap:wrap;gap:10px;justify-content:center;border:0 !important;
}
.elementor-widget-tabs .elementor-tab-title,
.elementor-widget-tabs .elementor-tab-mobile-title{
  border:1px solid #E6DDD1 !important;
  background:#FFFDF9 !important;
  border-radius:30px !important;
  padding:10px 18px !important;
  margin:0 !important;
  font-family:'Jost',sans-serif !important;
  font-size:13.5px !important;
  font-weight:500 !important;
  color:#6B635A !important;
  line-height:1.2 !important;
  transition:background .2s,border-color .2s,color .2s;
  cursor:pointer;
}
.elementor-widget-tabs .elementor-tab-title:hover{border-color:#8A9A7B !important;color:#3A352E !important;}
.elementor-widget-tabs .elementor-tab-title.elementor-active,
.elementor-widget-tabs .elementor-tab-mobile-title.elementor-active{
  background:#8A9A7B !important;color:#fff !important;border-color:#8A9A7B !important;
}
/* remove Elementor's default title borders / indicator lines */
.elementor-widget-tabs .elementor-tab-title:before,
.elementor-widget-tabs .elementor-tab-title:after{content:none !important;border:0 !important;}
.elementor-widget-tabs .elementor-tabs-content-wrapper{border:0 !important;}
.elementor-widget-tabs .elementor-tab-content{border:0 !important;padding:22px 0 0 !important;background:transparent !important;}

/* ---- Footer navigation band (orientation + Explore + Visit) ---- */
.soma-footer-nav{background:var(--soma-spruce);color:#c8d0bd;font-family:'Jost',sans-serif;padding:52px 24px 46px;}
.soma-footer-inner{max-width:1160px;margin:0 auto;display:grid;grid-template-columns:1.6fr 1fr 1.3fr;gap:40px;}
.soma-footer-name{font-family:'Spectral',serif;font-weight:400;font-size:24px;color:#fff;line-height:1.1;margin-bottom:12px;}
.soma-footer-brand p{margin:0;font-size:14.5px;line-height:1.65;color:#b9c2ae;max-width:38ch;}
.soma-footer-h{font-family:'Jost',sans-serif;font-size:12px;font-weight:600;letter-spacing:2px;text-transform:uppercase;
  color:var(--soma-terra);margin:0 0 14px;}
.soma-footer-col ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px;}
.soma-footer-col li a{display:inline-block;padding:6px 0;font-size:15px;color:#d3dac8;text-decoration:none;
  transition:color .2s ease;}
.soma-footer-col li a:hover{color:#fff;}
.soma-footer-visit address{font-style:normal;font-size:14.5px;line-height:1.8;color:#b9c2ae;margin:0;}
.soma-footer-visit address a{color:#d3dac8;text-decoration:underline;text-underline-offset:2px;transition:color .2s ease;}
.soma-footer-visit address a:hover{color:#fff;}
.soma-footer-hours{margin-top:12px;display:flex;flex-direction:column;gap:2px;font-size:13.5px;color:#9fa992;}
@media (max-width:860px){
  .soma-footer-inner{grid-template-columns:1fr 1fr;gap:32px;}
  .soma-footer-brand{grid-column:1 / -1;}
}
@media (max-width:520px){
  .soma-footer-nav{padding:44px 22px 38px;}
  .soma-footer-inner{grid-template-columns:1fr;gap:28px;}
}

/* ---- Footer credit bar (contact + socials + Brava Digital backlink) ---- */
.soma-credit-bar{background:#3A4233;color:#b3bea6;padding:15px 24px;font-family:'Jost',sans-serif;font-size:13px;}
.soma-credit-inner{max-width:1160px;margin:0 auto;display:flex;flex-wrap:wrap;gap:10px 22px;align-items:center;justify-content:space-between;}
.soma-credit-contact{display:flex;align-items:center;gap:16px;}
.soma-credit-contact a{color:#b3bea6;text-decoration:none;display:inline-flex;align-items:center;transition:color .2s;}
.soma-credit-contact a:hover{color:#fff;}
.soma-credit-contact svg{width:18px;height:18px;}
.soma-credit-text a{color:#BD8B6A;text-decoration:none;}
.soma-credit-text a:hover{text-decoration:underline;}
@media(max-width:600px){.soma-credit-inner{justify-content:center;text-align:center;}.soma-credit-contact{justify-content:center;}}

/* Hide Astra's default copyright / "Powered by" bar (copyright moved into .soma-credit-bar) */
.site-below-footer-wrap{display:none !important;}

/* ---- Forminator forms: soft, concept-style ---- */
.forminator-ui.forminator-custom-form{font-family:'Jost',sans-serif;}
.forminator-ui .forminator-row{margin-bottom:2px;}
.forminator-ui .forminator-field{margin-bottom:16px;}
.forminator-ui .forminator-label,
.forminator-ui label{font-family:'Jost',sans-serif !important;font-size:12px !important;font-weight:600 !important;letter-spacing:.6px !important;text-transform:uppercase !important;color:#6B635A !important;margin-bottom:7px !important;}
.forminator-ui .forminator-required,.forminator-ui .forminator-label--required span{color:#BD8B6A !important;}
.forminator-ui input.forminator-input,
.forminator-ui input[type="text"],
.forminator-ui input[type="email"],
.forminator-ui input[type="tel"],
.forminator-ui input[type="date"],
.forminator-ui textarea.forminator-textarea,
.forminator-ui textarea,
.forminator-ui select,
.forminator-ui .forminator-select .select2-selection{
  font-family:'Jost',sans-serif !important;font-size:15px !important;color:#3A352E !important;
  background:#FFFDF9 !important;border:1px solid #E6DDD1 !important;border-radius:10px !important;
  padding:12px 14px !important;height:auto !important;box-shadow:none !important;transition:border-color .2s,box-shadow .2s;
}
.forminator-ui input.forminator-input:focus,
.forminator-ui textarea:focus,
.forminator-ui select:focus,
.forminator-ui .forminator-select .select2-selection:focus{
  border-color:#8A9A7B !important;box-shadow:0 0 0 3px rgba(138,154,123,.18) !important;background:#fff !important;outline:none !important;
}
.forminator-ui textarea.forminator-textarea,.forminator-ui textarea{min-height:112px;}
.forminator-ui .forminator-checkbox,.forminator-ui .forminator-radio{font-family:'Jost',sans-serif;color:#3A352E;font-size:14px;}
.forminator-ui .forminator-checkbox-box,.forminator-ui .forminator-radio-box{border-color:#C9CDBF !important;}
.forminator-ui .forminator-checkbox-input:checked ~ .forminator-checkbox-box,
.forminator-ui .forminator-radio-input:checked ~ .forminator-radio-box{background:#8A9A7B !important;border-color:#8A9A7B !important;}
.forminator-ui .forminator-button.forminator-button-submit,
.forminator-ui button.forminator-button,
.forminator-ui .forminator-pagination-steps + .forminator-button,
.forminator-ui .forminator-button-back{
  font-family:'Jost',sans-serif !important;font-weight:500 !important;font-size:14px !important;letter-spacing:.4px !important;
  border-radius:30px !important;padding:13px 30px !important;box-shadow:none !important;transition:background .2s,border-color .2s !important;
}
/* every form button (submit, pagination submit/next) is sage with white text... */
.forminator-ui .forminator-button{background:#8A9A7B !important;color:#fff !important;border:1px solid #8A9A7B !important;}
.forminator-ui .forminator-button:hover{background:#6F7F61 !important;border-color:#6F7F61 !important;color:#fff !important;}
/* ...except the "back" button, which is a ghost */
.forminator-ui .forminator-button-back,
.forminator-ui .forminator-pagination-back,
.forminator-ui .forminator-pagination-previous{background:transparent !important;color:#6F7F61 !important;border:1px solid #E6DDD1 !important;}
.forminator-ui .forminator-button-back:hover,
.forminator-ui .forminator-pagination-back:hover,
.forminator-ui .forminator-pagination-previous:hover{background:#F6F1EA !important;color:#464F3D !important;}

/* ---- [soma_practitioners] : single source of truth for practitioner displays ---- */
.soma-prac-ava{flex:none;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;overflow:hidden;}
.soma-prac-ava img{width:100%;height:100%;object-fit:cover;object-position:center center;display:block;}
.soma-prac-ava-mono{color:#fff;font-family:'Spectral',serif;font-weight:400;}

/* teaser row (home) */
.soma-prac-row{display:flex;flex-wrap:wrap;gap:26px 30px;justify-content:center;align-items:flex-start;}
.soma-prac-chip{width:150px;display:flex;flex-direction:column;align-items:center;gap:7px;text-decoration:none;text-align:center;}
.soma-prac-chip .soma-prac-ava{transition:transform .2s;}
.soma-prac-chip:hover .soma-prac-ava{transform:scale(1.05);}
.soma-prac-name{font-family:'Spectral',serif;font-weight:400;font-size:19px;line-height:1.15;}
.soma-prac-disc{font-family:'Jost',sans-serif;font-size:11px;letter-spacing:1px;text-transform:uppercase;line-height:1.3;}

/* directory grid */
.soma-prac-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:22px;max-width:1200px;margin:0 auto;align-items:stretch;}
.soma-prac-card{background:#FFFDF9;border:1px solid #E6DDD1;border-radius:16px;overflow:hidden;display:flex;flex-direction:column;text-align:left;}
.soma-prac-card-photo{width:100%;height:220px;overflow:hidden;flex:none;}
.soma-prac-card-photo img{width:100%!important;height:100%!important;max-width:none!important;object-fit:cover!important;object-position:center center;display:block;margin:0;}
.soma-prac-card-mono{display:flex;align-items:center;justify-content:center;color:#fff;font-family:'Spectral',serif;font-weight:400;font-size:40px;}
/* split preview for duo practitioners (e.g. Nova Serene: Sophie | Alice) */
.soma-prac-ava-split{display:flex!important;padding:0;}
.soma-prac-ava-split img{width:50%!important;height:100%!important;object-fit:cover;object-position:center 22%;display:block;}
.soma-prac-ava-split img+img{border-left:2px solid #FFFDF9;}
.soma-prac-card-photo-split{display:flex;}
.soma-prac-card-photo-split img{width:50%!important;height:100%!important;object-fit:cover;object-position:center 24%;display:block;}
.soma-prac-card-photo-split img+img{border-left:2px solid #FFFDF9;}

/* ---- treatments "browse by need" pill filter ---- */
.soma-filter{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;align-items:center;margin:0 auto 26px;max-width:840px;}
.soma-chip{font-family:'Jost',sans-serif;font-size:13.5px;font-weight:500;letter-spacing:.3px;line-height:1.2;
  color:#6F7F61!important;background:#FFFDF9!important;border:1px solid #E6DDD1!important;border-radius:30px!important;
  padding:9px 18px!important;cursor:pointer;-webkit-appearance:none;appearance:none;box-shadow:none!important;
  transition:background .2s,color .2s,border-color .2s;}
.soma-chip:hover{border-color:#8A9A7B!important;color:#464F3D!important;background:#FFFDF9!important;}
.soma-chip.is-active{background:#8A9A7B!important;border-color:#8A9A7B!important;color:#fff!important;}
.soma-chip:focus-visible{outline:2px solid #8A9A7B;outline-offset:2px;}
.soma-tgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:22px;max-width:1080px;margin:0 auto;align-items:stretch;}
/* Fallback so a filtered card restored via style.display="" stays a flex column
   (the JS clears the inline display, which would otherwise drop it to block). */
.soma-tcard{display:flex;flex-direction:column;}
@media(max-width:600px){.soma-chip{font-size:12px;padding:8px 13px!important;}}
/* deep-link "Showing <type>" banner (populated by soma-animations.js) */
.soma-tbanner{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:14px;
  max-width:840px;margin:0 auto 22px;padding:11px 18px;background:var(--soma-paper);
  border:1px solid var(--soma-line);border-radius:14px;font-family:'Jost',sans-serif;font-size:14px;color:var(--soma-ink);}
.soma-tbanner[hidden]{display:none;} /* class+attr beats the class rule, so hidden actually hides */
.soma-tbanner strong{color:var(--soma-sage-dark);}
.soma-tbanner-clear{-webkit-appearance:none;appearance:none;-webkit-tap-highlight-color:transparent;
  background:transparent;border:0;box-shadow:none;color:var(--soma-sage-dark);font-family:'Jost',sans-serif;
  font-size:13.5px;font-weight:500;text-decoration:underline;text-underline-offset:2px;cursor:pointer;padding:4px 6px;border-radius:6px;}
/* override Astra's global button:hover/focus (sage fill) so this stays a text link on tap */
.soma-tbanner-clear:hover,.soma-tbanner-clear:focus,.soma-tbanner-clear:active{background:transparent;color:var(--soma-spruce);box-shadow:none;}
.soma-tbanner-clear:focus-visible{outline:2px solid var(--soma-sage-dark);outline-offset:2px;}

/* ================= mobile flow ================= */
@media (max-width:767px){
  /* stop any minor overflow scrolling the page sideways */
  html{overflow-x:clip;}
  /* scale big display headings so they fit and wrap cleanly */
  h1.elementor-heading-title{font-size:35px!important;line-height:1.14!important;}
  h2.elementor-heading-title{font-size:27px!important;line-height:1.2!important;}
  h3.elementor-heading-title{font-size:21px!important;line-height:1.2!important;}
  /* practitioner + treatment cards fill the column */
  .soma-prac-card{width:100%!important;}
  .soma-prac-card-name{font-size:23px;}
  /* comfortable body sizing */
  .elementor-widget-text-editor{font-size:16px;}
}
@media (max-width:520px){
  h1.elementor-heading-title{font-size:31px!important;}
  h2.elementor-heading-title{font-size:25px!important;}
}
.soma-prac-card-body{padding:22px;display:flex;flex-direction:column;gap:10px;flex:1;background:#FFFDF9;}
.soma-prac-card-name{font-family:'Spectral',serif;font-weight:400;font-size:24px;color:#3A352E;margin:0;line-height:1.1;}
.soma-prac-card-disc{font-family:'Jost',sans-serif;font-size:11px;letter-spacing:2px;text-transform:uppercase;color:#6F7F61;}
.soma-prac-card-bio{font-family:'Jost',sans-serif;font-size:14px;color:#6B635A;margin:0;line-height:1.55;}
.soma-prac-tags{display:flex;flex-wrap:wrap;gap:7px;}
.soma-prac-tag{font-family:'Jost',sans-serif;font-size:12px;background:#F6F1EA;border:1px solid #E6DDD1;padding:4px 11px;border-radius:20px;color:#3A352E;line-height:1.6;}
.soma-prac-card-price{font-family:'Spectral',serif;font-size:21px;font-weight:400;color:#BD8B6A;margin-top:auto;}
.soma-prac-card-cta{display:flex;gap:10px;margin-top:4px;}
.soma-btn-primary,.soma-btn-ghost{flex:1;text-align:center;text-decoration:none;font-family:'Jost',sans-serif;font-size:13px;font-weight:500;letter-spacing:.3px;padding:12px 8px;border-radius:30px;transition:background .2s;}
.soma-btn-primary{background:#8A9A7B;color:#fff;}
.soma-btn-primary:hover{background:#6F7F61;color:#fff;}
.soma-btn-ghost{background:transparent;color:#6F7F61;border:1px solid #E6DDD1;}
.soma-btn-ghost:hover{background:#F6F1EA;}
@media(max-width:600px){.soma-prac-chip{width:43%;}}

/* ================= mobile refinements (profile template, forms, cards) ================= */
@media (max-width:767px){
  /* Prevent iOS auto-zoom on focus: form controls must be >=16px */
  .forminator-ui input.forminator-input,
  .forminator-ui input[type="text"],
  .forminator-ui input[type="email"],
  .forminator-ui input[type="tel"],
  .forminator-ui input[type="date"],
  .forminator-ui textarea.forminator-textarea,
  .forminator-ui textarea,
  .forminator-ui select,
  .forminator-ui .forminator-select .select2-selection{font-size:16px!important;}
  /* treatment cards fill the column like practitioner cards */
  .soma-tcard{width:100%!important;}
}

/* Practitioner profile template uses inline-styled headings, so the global
   Elementor mobile scale doesn't reach them — scale them here (>=!important
   beats inline). Also tighten section padding + stacked column gaps. */
@media (max-width:600px){
  #soma-practitioner h1{font-size:33px!important;line-height:1.1!important;}
  #soma-practitioner h2{font-size:26px!important;}
  #soma-practitioner h3{font-size:22px!important;}
  #soma-practitioner blockquote{font-size:21px!important;line-height:1.45!important;} /* client review quote */
  #soma-practitioner section{padding-top:46px!important;padding-bottom:46px!important;padding-left:20px!important;padding-right:20px!important;}
  #soma-practitioner section>div{gap:28px!important;}
  /* lead + booking intro read a touch smaller on narrow screens */
  #soma-practitioner .soma-pf-prose{font-size:15.5px!important;}
}

/* ---- gentle scroll-reveal animations (paired with soma-animations.js) ---- */
html{scroll-behavior:smooth;}
@media (prefers-reduced-motion: no-preference){
  /* :not(:first-child) keeps the hero visible on first paint (better LCP); only below-fold sections fade in on scroll. */
  .soma-js .e-con.e-parent:not(:first-child){opacity:0;transform:translateY(28px);transition:opacity .75s var(--soma-ease-out),transform .75s var(--soma-ease-out);will-change:opacity,transform;}
  .soma-js .e-con.e-parent.soma-in{opacity:1;transform:none;}
  /* stagger the practitioner chips / cards as their section reveals */
  .soma-js .soma-prac-chip,.soma-js .soma-prac-card{opacity:0;transform:translateY(18px);transition:opacity .6s ease,transform .6s ease;}
  .soma-js .soma-in .soma-prac-chip,.soma-js .soma-in .soma-prac-card{opacity:1;transform:none;}
  .soma-prac-chip:nth-child(1),.soma-prac-card:nth-child(1){transition-delay:.06s;}
  .soma-prac-chip:nth-child(2),.soma-prac-card:nth-child(2){transition-delay:.14s;}
  .soma-prac-chip:nth-child(3),.soma-prac-card:nth-child(3){transition-delay:.22s;}
  .soma-prac-chip:nth-child(4),.soma-prac-card:nth-child(4){transition-delay:.30s;}
  .soma-prac-chip:nth-child(5),.soma-prac-card:nth-child(5){transition-delay:.38s;}
  .soma-prac-card:nth-child(6){transition-delay:.46s;}
}

/* ---- scroll cue: "there's more below" hint (soma-animations.js toggles .is-visible) ---- */
.soma-scrollcue{
  position:fixed;right:20px;bottom:20px;left:auto;
  width:40px;height:40px;padding:0;margin:0;
  display:flex;align-items:center;justify-content:center;
  background:transparent !important;border:0 !important;box-shadow:none !important;border-radius:8px;
  -webkit-appearance:none;appearance:none;
  color:#6F7F61 !important;cursor:pointer;z-index:900;
  opacity:0;visibility:hidden;pointer-events:none;transform:translateY(8px);
  transition:opacity .4s ease,transform .4s ease,visibility .4s;
}
.soma-scrollcue.is-visible{opacity:.72;visibility:visible;pointer-events:auto;transform:translateY(0);}
.soma-scrollcue:hover{opacity:1;color:#464F3D !important;background:transparent !important;}
.soma-scrollcue:focus-visible{outline:2px solid #8A9A7B;outline-offset:3px;}
.soma-scrollcue svg{width:26px;height:26px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;display:block;filter:drop-shadow(0 1px 1px rgba(255,255,255,.55)) drop-shadow(0 1px 3px rgba(0,0,0,.25));}
@media (prefers-reduced-motion:no-preference){
  .soma-scrollcue.is-visible svg{animation:soma-bob 1.8s ease-in-out infinite;}
  @keyframes soma-bob{0%,100%{transform:translateY(-2px)}50%{transform:translateY(2px)}}
}
@media(max-width:768px){.soma-scrollcue{display:none!important;}} /* mobile action bar occupies this corner */

/* ---- Header "Call" pill (end of the primary nav, desktop) ---- */
.soma-nav-call a{display:inline-flex;align-items:center;gap:7px;}
.soma-nav-call svg{width:16px;height:16px;flex:none;}
@media(min-width:922px){
  .soma-nav-call{margin-left:8px;display:flex;align-items:center;}
  .soma-nav-call a{border:1px solid var(--soma-line);border-radius:30px;padding:7px 15px!important;
    font-size:14px;color:var(--soma-ink);transition:border-color .2s ease,color .2s ease,background .2s ease;}
  .soma-nav-call a:hover{border-color:var(--soma-sage);color:var(--soma-sage-dark);background:var(--soma-paper);}
}

/* ---- Room-hire quick-contact block (sits under the enquiry CTA, dark bands) ---- */
.soma-room-cta{display:flex;flex-direction:column;align-items:center;text-align:center;gap:14px;margin-top:8px;font-family:'Jost',sans-serif;}
.soma-room-cta--start{align-items:flex-start;text-align:left;} /* hero: match the left-aligned column */
/* both CTAs on one row (side by side on desktop, wrap to stacked on mobile) */
.soma-room-buttons{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;}
.soma-room-primary{display:inline-block;font-family:'Jost',sans-serif;font-size:14px;font-weight:500;letter-spacing:.3px;
  padding:13px 28px;border-radius:30px;text-decoration:none;background:var(--soma-paper);color:var(--soma-spruce);
  border:1px solid var(--soma-paper);transition:background .2s ease,color .2s ease;}
.soma-room-primary:hover{background:#fff;color:var(--soma-spruce);}
.soma-room-viewing{display:inline-block;font-size:14px;font-weight:500;letter-spacing:.3px;padding:12px 26px;border-radius:30px;
  text-decoration:none;color:#fff;border:1px solid rgba(255,255,255,.42);background:transparent;transition:background .2s ease,border-color .2s ease;}
.soma-room-viewing:hover{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.72);color:#fff;}
.soma-room-quick{font-size:14.5px;color:#CDD5C3;}
.soma-room-quick a{color:#fff;text-decoration:underline;text-underline-offset:2px;}
.soma-room-quick a:hover{text-decoration:none;}
.soma-room-reassure{font-size:13px;color:#a7b199;max-width:480px;line-height:1.55;margin-top:2px;}
/* light-background inline quick-contact line (e.g. above the enquiry form) */
.soma-quick-inline{font-family:'Jost',sans-serif;font-size:15px;color:#6B635A;text-align:center;margin:8px auto 0;}
.soma-quick-inline a{color:var(--soma-sage-dark);text-decoration:underline;text-underline-offset:2px;font-weight:500;}
.soma-quick-inline a:hover{color:var(--soma-terra);}

/* ============================================================
   GLOBAL INTERACTION + ACCESSIBILITY POLISH
   Site-wide focus, navigation, link and button states. Cascades to
   Elementor pages too (where inline colours don't override these).
   ============================================================ */

/* ---- Accessible focus ring (keyboard users), understated for mouse ---- */
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
summary:focus-visible,
[tabindex]:focus-visible,
.elementor-button:focus-visible,
.menu-link:focus-visible{
  outline:2px solid var(--soma-sage-dark);
  outline-offset:3px;
  border-radius:4px;
}
/* Don't show the ring on mouse click, only keyboard */
a:focus:not(:focus-visible),
button:focus:not(:focus-visible){outline:none;}

/* Skip-to-content helper (add <a class="soma-skip" href="#content">Skip to content</a> if needed) */
.soma-skip{position:absolute;left:-999px;top:0;z-index:1000;background:var(--soma-spruce);color:#fff;
  padding:10px 16px;border-radius:0 0 8px 0;font-family:'Jost',sans-serif;font-size:14px;text-decoration:none;}
.soma-skip:focus{left:0;}

/* ---- Primary navigation: understated active + hover/focus ---- */
.main-header-menu .menu-link,
.ast-header-navigation-wrap .menu-link{
  position:relative;
  transition:color .2s ease;
}
/* thin sage underline that grows from the left on hover / current page */
.main-header-menu .menu-link::after,
.ast-header-navigation-wrap .menu-link::after{
  content:"";position:absolute;left:0;right:auto;bottom:2px;height:1.5px;width:0;
  background:var(--soma-sage);transition:width .28s cubic-bezier(.22,.61,.36,1);
}
.main-header-menu .menu-item:hover > .menu-link::after,
.main-header-menu .menu-link:focus-visible::after,
.main-header-menu .current-menu-item > .menu-link::after,
.main-header-menu .current-menu-ancestor > .menu-link::after{width:100%;}
.main-header-menu .current-menu-item > .menu-link{color:var(--soma-ink);}
@media (prefers-reduced-motion:reduce){
  .main-header-menu .menu-link::after{transition:none;}
}

/* ---- Content text links: subtle terra underline transition ---- */
.entry-content a:not(.elementor-button):not(.soma-btn):not([class*="soma-"]),
.soma-pf-prose a{
  color:var(--soma-sage-dark);
  text-decoration:underline;
  text-decoration-color:rgba(111,127,97,.35);
  text-underline-offset:3px;
  transition:text-decoration-color .2s ease,color .2s ease;
}
.entry-content a:not(.elementor-button):hover,
.soma-pf-prose a:hover{color:var(--soma-terra);text-decoration-color:var(--soma-terra);}

/* ---- Buttons & pressables: press feedback + consistent easing (site-wide) ----
   scale(0.97) on :active gives a tactile "pressed" response (scales content too),
   which reads better than a nudge. Covers every pressable, not just the buttons. */
.elementor-button,.soma-btn,.soma-btn-primary,.soma-btn-ghost,.forminator-button,
.soma-chip,.soma-cat-chip,.soma-room-primary,.soma-room-viewing,.soma-tbanner-clear,
.soma-nav-call a,.soma-mobile-bar a{
  transition:background-color .2s ease,border-color .2s ease,color .2s ease,transform .14s var(--soma-ease-out);
}
.elementor-button:active,.soma-btn:active,.soma-btn-primary:active,.soma-btn-ghost:active,.forminator-button:active,
.soma-chip:active,.soma-cat-chip:active,.soma-room-primary:active,.soma-room-viewing:active,.soma-tbanner-clear:active,
.soma-nav-call a:active,.soma-mobile-bar a:active{transform:scale(.97);}
@media (prefers-reduced-motion:reduce){
  .elementor-button:active,.soma-btn:active,.soma-btn-primary:active,.soma-btn-ghost:active,.forminator-button:active,
  .soma-chip:active,.soma-cat-chip:active,.soma-room-primary:active,.soma-room-viewing:active,.soma-tbanner-clear:active,
  .soma-nav-call a:active,.soma-mobile-bar a:active{transform:none;}
}

/* ---- Hover-lift only on true hover devices (no stuck states after a tap) ---- */
@media (hover: none),(pointer: coarse){
  .soma-prac-mini a:hover{transform:none;}
  .soma-prac-chip:hover .soma-prac-ava{transform:none;}
}

/* ---- Treatment category chips: shared, interactive (home + about) ---- */
.soma-cat-row{display:flex;flex-wrap:wrap;gap:9px;justify-content:center;max-width:680px;margin:2px auto 0;}
.soma-cat-chip{
  font-family:'Jost',sans-serif;font-size:13.5px;line-height:1.4;
  background:var(--soma-paper);border:1px solid var(--soma-line);
  padding:8px 16px;border-radius:20px;color:var(--soma-ink);text-decoration:none;
  transition:background .2s ease,border-color .2s ease,color .2s ease,transform .12s ease;
}
.soma-cat-chip:hover{border-color:var(--soma-sage);color:var(--soma-sage-dark);background:#fff;}
.soma-cat-chip:active{transform:translateY(1px);}
@media (prefers-reduced-motion:reduce){.soma-cat-chip:active{transform:none;}}

/* ---- Room-hire FAQ accordion (native <details>) ---- */
.soma-faq{max-width:760px;margin:0 auto;text-align:left;}
.soma-faq-item{border-bottom:1px solid var(--soma-line);}
.soma-faq-item:first-child{border-top:1px solid var(--soma-line);}
.soma-faq-item summary{cursor:pointer;list-style:none;padding:18px 44px 18px 0;position:relative;
  font-family:'Spectral',serif;font-size:21px;font-weight:400;color:var(--soma-ink);line-height:1.25;}
.soma-faq-item summary::-webkit-details-marker{display:none;}
.soma-faq-item summary::after{content:"+";position:absolute;right:4px;top:15px;font-family:'Jost',sans-serif;
  font-size:24px;line-height:1;color:var(--soma-sage-dark);transition:color .2s ease;}
.soma-faq-item[open] summary::after{content:"\2013";}
.soma-faq-item summary:hover{color:var(--soma-sage-dark);}
.soma-faq-item summary:focus-visible{outline:2px solid var(--soma-sage-dark);outline-offset:3px;border-radius:4px;}
.soma-faq-answer{padding:0 44px 20px 0;font-family:'Jost',sans-serif;font-size:15px;line-height:1.65;color:#6B635A;}
@media (prefers-reduced-motion:no-preference){
  .soma-faq-item[open] .soma-faq-answer{animation:soma-faq-in .28s ease;}
  @keyframes soma-faq-in{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
}

/* ---- Soma arc motif: a restrained divider derived from the identity ----
   Usage: <div class="soma-arc" aria-hidden="true"></div> between sections,
   or add .soma-arc-top to a section for a subtle framing line. */
.soma-arc{width:100%;display:flex;justify-content:center;padding:6px 0;}
.soma-arc::before{
  content:"";width:64px;height:32px;border:1.5px solid var(--soma-line);
  border-bottom:0;border-radius:64px 64px 0 0;display:block;
}

/* ---- Card lift: shared, restrained hover for interactive cards ---- */
.soma-prac-card,.soma-tcard{
  position:relative;
  transition:border-color .25s ease,box-shadow .25s ease,transform .25s ease;
}
@media (prefers-reduced-motion:no-preference){
  .soma-prac-card:hover,.soma-tcard:hover{
    transform:translateY(-3px);
    border-color:var(--soma-sage);
    box-shadow:0 14px 30px rgba(58,53,46,.08);
  }
}
.soma-prac-card:focus-within,.soma-tcard:focus-within{border-color:var(--soma-sage);}

/* Whole-card clickable via a stretched primary link (single tab stop).
   The secondary action (.soma-above) sits above the invisible overlay. */
.soma-stretch::after{content:"";position:absolute;inset:0;z-index:1;}
.soma-above{position:relative;z-index:2;}

/* Photo gently scales as the card lifts (motion-gated) */
.soma-prac-card-photo img{transition:transform .55s cubic-bezier(.22,.61,.36,1);}
@media (prefers-reduced-motion:no-preference){
  .soma-prac-card:hover .soma-prac-card-photo img{transform:scale(1.045);}
}
/* keep the zoom from spilling past the rounded top corners */
.soma-prac-card-photo{border-top-left-radius:inherit;border-top-right-radius:inherit;}

/* ---- room carousels: cap height so room rows stay compact ---- */
.elementor-widget-image-carousel .swiper-slide-image{
  height:320px!important;object-fit:cover!important;border-radius:16px;display:block;width:100%;
}
@media(max-width:767px){
  .elementor-widget-image-carousel .swiper-slide-image{height:240px!important;}
}

/* ---- carousel controls: on-brand, larger touch target, keyboard-friendly ----
   Elementor renders prev/next as role="button" tabindex="0"; we make them a
   soft paper disc with a sage chevron, clearly visible but understated. */
.elementor-widget-image-carousel .elementor-swiper-button{
  width:44px;height:44px;top:50%;transform:translateY(-50%);
  display:flex;align-items:center;justify-content:center;
  background:var(--soma-sage-dark);color:#fff;
  border:1px solid rgba(255,255,255,.35);border-radius:50%;
  box-shadow:0 4px 14px rgba(58,53,46,.28);
  transition:background .2s ease,color .2s ease,box-shadow .2s ease,transform .2s ease;
  cursor:pointer;
}
.elementor-widget-image-carousel .elementor-swiper-button-prev{left:14px;right:auto;}
.elementor-widget-image-carousel .elementor-swiper-button-next{right:14px;left:auto;}
.elementor-widget-image-carousel .elementor-swiper-button i,
.elementor-widget-image-carousel .elementor-swiper-button svg{font-size:17px;width:17px;height:17px;}
.elementor-widget-image-carousel .elementor-swiper-button:hover{background:var(--soma-spruce);color:#fff;box-shadow:0 6px 18px rgba(58,53,46,.34);}
.elementor-widget-image-carousel .elementor-swiper-button:focus-visible{outline:2px solid var(--soma-sage-dark);outline-offset:3px;}
@media (prefers-reduced-motion:no-preference){
  .elementor-widget-image-carousel .elementor-swiper-button:hover{transform:translateY(-50%) scale(1.06);}
}
.elementor-widget-image-carousel .swiper-slide-image{transition:transform .5s cubic-bezier(.22,.61,.36,1);}

/* pagination dots: bigger, higher contrast, active pill in sage */
.elementor-widget-image-carousel .swiper-pagination-bullet{
  width:8px;height:8px;background:var(--soma-ink);opacity:.28;border-radius:5px;
  transition:opacity .2s ease,background .2s ease,width .2s ease;margin:0 4px!important;
}
.elementor-widget-image-carousel .swiper-pagination-bullet-active{opacity:1;background:var(--soma-sage);width:22px;}
.elementor-widget-image-carousel .swiper-pagination-bullet:focus-visible{outline:2px solid var(--soma-sage-dark);outline-offset:2px;opacity:1;}
@media(max-width:767px){
  /* keep arrows comfortably tappable but tucked to the edges on phones */
  .elementor-widget-image-carousel .elementor-swiper-button{width:40px;height:40px;}
  .elementor-widget-image-carousel .elementor-swiper-button-prev{left:8px;}
  .elementor-widget-image-carousel .elementor-swiper-button-next{right:8px;}
}
/* people carousel (e.g. Nova Serene: Sophie & Alice) — taller, face-positioned */
.elementor-widget-image-carousel.soma-people-carousel .swiper-slide-image{height:440px!important;object-position:center 24%!important;border-radius:18px;}
.soma-people-carousel .elementor-image-carousel-caption{font-family:'Jost',sans-serif;font-size:12px;letter-spacing:2px;text-transform:uppercase;color:#6F7F61;padding-top:12px;}
@media(max-width:767px){.elementor-widget-image-carousel.soma-people-carousel .swiper-slide-image{height:360px!important;}}
