/* =============================================================
   CTA Blocks — Stylesheet  v1.1.8
   All colours driven by CSS custom properties.
   Override per-block via shortcode attrs:
     bg, text_color, accent_color, btn_color, btn_text_color
   ============================================================= */

/* ── BRAND DEFAULTS ── */
:root {
  --cb-p:   #6B2347;
  --cb-pd:  #4E1933;
  --cb-pp:  #3A1126;
  --cb-pl:  #F7EEF3;
  --cb-g:   #C4A882;
  --cb-gd:  #A88C68;
  --cb-f:   #1F3A2B;
  --cb-fd:  #162B1F;
  --cb-cr:  #FAF7F4;
  --cb-bd:  #EAD8E2;
  --cb-t:   #1A0A14;
  --cb-tm:  #5C3D4A;
  --cb-ts:  #9A7A87;
  --cb-gr:  #4ade80;
  --cb-r:   14px;
  --cb-pill:50px;
  --cb-sf:  'Georgia', serif;
  --cb-sb:  'Segoe UI', system-ui, sans-serif;
}

/*
  Per-block overrides (set as inline style on wrapper by PHP):
    --cb-bg   = background
    --cb-tc   = text / heading colour
    --cb-ac   = accent (overline, badge number, dots, bed icons)
    --cb-bc   = primary button background
    --cb-btc  = primary button text colour
*/

/* ── RESET SCOPE ── */
.cb-cta, .cb-cta-b, .cb-cta-c, .cb-cta-e, .cb-cta-f,
.cb-cta-g, .cb-cta-i, .cb-cta-j, .cb-cta-k, .cb-cta-m,
.cb-cta-n {
  box-sizing: border-box;
  font-family: var(--cb-sb) !important;
  font-size: 1rem !important;
  line-height: 1.6 !important;
  max-width: 860px !important;
  margin-top: 28px !important;
  margin-bottom: 28px !important;
  margin-left: auto !important;
  margin-right: auto !important;
}
.cb-sticky {
  box-sizing: border-box;
  font-family: var(--cb-sb) !important;
  font-size: 1rem !important;
  line-height: 1.6 !important;
}
.cb-cta *, .cb-cta-b *, .cb-cta-c *, .cb-cta-e *, .cb-cta-f *,
.cb-cta-g *, .cb-cta-i *, .cb-cta-j *, .cb-cta-k *, .cb-cta-m *,
.cb-cta-n *, .cb-sticky * {
  box-sizing: border-box;
}

/* ── SUPPRESS wpautop <br> INJECTION ──
   WordPress re-applies wpautop after shortcode expansion, converting every
   newline in the PHP template output to <br />. Hide them all inside block
   scope, then restore the intentional ones inside headings only.
*/
.cb-cta br, .cb-cta-b br, .cb-cta-c br, .cb-cta-e br, .cb-cta-f br,
.cb-cta-g br, .cb-cta-i br, .cb-cta-j br, .cb-cta-k br, .cb-cta-m br,
.cb-cta-n br { display: none; }
.cb-cta-b h2 br, .cb-cta-j h2 br { display: inline; }

/* ── THEME OVERRIDE RESETS ──
   Neutralise conflicting global rules from the parent/generated theme CSS:
   1. p { float: left; width: 100% } — breaks flex container height
   2. .entry-content h2/h3 { margin: 15px 0 } — adds unwanted top margin
   3. a:hover::before { content: "\f138" } — injects arrow icon into buttons
   4. h1,h2,h3 { font-family: Lato; font-weight: 900 !important } — forces wrong heading style
   5. h1,h2 { font-size: 16px !important; line-height: 24px !important } — kills clamp() sizing
*/
.cb-cta p, .cb-cta-b p, .cb-cta-c p, .cb-cta-e p, .cb-cta-f p,
.cb-cta-g p, .cb-cta-i p, .cb-cta-j p, .cb-cta-k p, .cb-cta-m p,
.cb-cta-n p {
  float: none !important;
  width: auto !important;
  clear: none !important;
  padding: 0 !important;
  margin: 0 !important;
}
.cb-cta h2, .cb-cta h3,
.cb-cta-b h2, .cb-cta-b h3,
.cb-cta-c h2, .cb-cta-c h3,
.cb-cta-e h2, .cb-cta-e h3,
.cb-cta-f h2, .cb-cta-f h3,
.cb-cta-g h2, .cb-cta-g h3,
.cb-cta-i h2, .cb-cta-i h3,
.cb-cta-j h2, .cb-cta-j h3,
.cb-cta-k h2, .cb-cta-k h3,
.cb-cta-m h2, .cb-cta-m h3,
.cb-cta-n h2, .cb-cta-n h3 {
  font-family: var(--cb-sf) !important;
  font-weight: 400 !important;
  letter-spacing: normal !important;
  margin-top: 0 !important;
  margin-bottom: 0 !important;
  float: none !important;
  width: auto !important;
}
.cb-btn::before, .cb-btn:hover::before,
.cb-btn::after,  .cb-btn:hover::after,
.cb-btn-phone::before, .cb-btn-phone:hover::before,
.cb-btn-phone::after,  .cb-btn-phone:hover::after {
  content: none !important;
  display: none !important;
  margin: 0 !important;
}
/* prevent theme a:hover rules (background:#fff, color:!important, box-shadow, underline) */
.cb-btn:hover, .cb-btn:focus, .cb-btn:active,
.cb-btn-phone:hover, .cb-btn-phone:focus, .cb-btn-phone:active {
  text-decoration: none !important;
  color: inherit !important;
  box-shadow: none !important;
  font-weight: inherit !important;
}
/* cb-left must form a block formatting context to contain floated theme children */
.cb-left { display: flow-root; }
/* Journey steps: force step content visible — generated CSS heading/color inheritance can bleed in */
.cb-g-t  { color: var(--cb-pp, #3A1126) !important; font-size: 0.82rem !important; font-weight: 700 !important; line-height: 1.3 !important; }
.cb-g-d  { color: var(--cb-ts, #9A7A87) !important; font-size: 0.82rem !important; font-weight: 400 !important; line-height: 1.35 !important; }
.cb-g-em { font-size: 1.25rem !important; line-height: 1 !important; margin-bottom: 5px !important; }
.cb-g-num { font-size: 0.82rem !important; font-weight: 700 !important; font-family: var(--cb-sb) !important; letter-spacing: normal !important; }

/* ── ANIMATIONS ── */
@keyframes cb-pulse-dot {
  0%,100% { box-shadow: 0 0 0 0 rgba(74,222,128,.55); }
  60%      { box-shadow: 0 0 0 5px rgba(74,222,128,0); }
}
@keyframes cb-pulse-ring {
  0%,100% { box-shadow: 0 0 0 0 rgba(74,222,128,.4); }
  60%      { box-shadow: 0 0 0 6px rgba(74,222,128,0); }
}

/* ── OVERLINE + LIVE DOT ── */
.cb-over {
  display: flex; align-items: center; gap: 7px; margin-bottom: 9px !important;
  font-size: 0.75rem; font-weight: 700; letter-spacing: .13em;
  text-transform: uppercase;
  color: var(--cb-ac, var(--cb-g));
}
.cb-live-dot {
  width: 7px; height: 7px; border-radius: 50%;
  background: var(--cb-gr); flex-shrink: 0;
  animation: cb-pulse-dot 2s ease infinite;
}

/* ── TAG PILL ── */
.cb-tag {
  display: inline-block; font-size: 0.82rem; font-weight: 700;
  letter-spacing: .12em; text-transform: uppercase;
  padding: 4px 14px !important; border-radius: 20px; margin-bottom: 14px !important;
}

/* ── TEL LINE ── */
.cb-tel-line {
  display: block; text-align: center; font-size: 0.75rem;
  color: rgba(255,255,255,.32); text-decoration: none;
}
.cb-tel-line:hover { color: rgba(255,255,255,.6); }

/* ── BUTTONS ── */
.cb-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 7px;
  font-family: var(--cb-sb); font-weight: 700; font-size: 0.82rem;
  letter-spacing: .08em; text-transform: uppercase; text-decoration: none;
  border-radius: var(--cb-pill); border: 2px solid transparent;
  min-height: 42px; padding: 0 22px !important; cursor: pointer;
  transition: transform .15s, box-shadow .15s, background .15s;
  white-space: nowrap;
}
.cb-btn:active { transform: scale(.97); }

/* Gold / accent button — uses --cb-bc / --cb-btc overrides */
.cb-btn-g {
  background: var(--cb-bc,  var(--cb-g));
  color:      var(--cb-btc, var(--cb-pp));
}
.cb-btn-g:hover {
  background: var(--cb-bc, var(--cb-gd));
  color: var(--cb-btc, var(--cb-pp)) !important;
  filter: brightness(0.92);
  transform: translateY(-1px);
  box-shadow: 0 4px 14px rgba(196,168,130,.35);
}

/* Purple button */
.cb-btn-p  { background: var(--cb-p);  color: #fff; }
.cb-btn-p:hover  { background: var(--cb-pd); color: #fff !important; transform: translateY(-2px); box-shadow: 0 6px 18px rgba(107,35,71,.35); }

/* Deep purple */
.cb-btn-pp { background: var(--cb-pp); color: #fff; }
.cb-btn-pp:hover { background: #0d050a; color: #fff !important; transform: translateY(-2px); }

/* Forest green */
.cb-btn-f  { background: var(--cb-f);  color: #fff; }
.cb-btn-f:hover  { background: var(--cb-fd); color: #fff !important; transform: translateY(-2px); box-shadow: 0 6px 18px rgba(31,58,43,.4); }

/* White */
.cb-btn-w  { background: #fff; color: var(--cb-f); border-color: #fff; }
.cb-btn-w:hover  { background: rgba(255,255,255,.88); color: var(--cb-f) !important; transform: translateY(-2px); }

/* Outline white */
.cb-btn-ow { background: transparent; color: #fff; border-color: rgba(255,255,255,.32); }
.cb-btn-ow:hover { background: rgba(255,255,255,.08) !important; border-color: rgba(255,255,255,.65) !important; color: #fff !important; transform: translateY(-1px); }

/* Outline purple */
.cb-btn-op { background: transparent; color: var(--cb-p); border-color: var(--cb-p); }
.cb-btn-op:hover { background: var(--cb-p) !important; color: #fff !important; transform: translateY(-2px); }

.cb-btn-sm { min-height: 40px; padding: 0 20px !important; }
.cb-btn-lg { min-height: 48px; padding: 0 36px !important; }

.cb-btns   { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; }
.cb-btns-c { justify-content: center; }
@media(max-width: 420px) {
  .cb-btns { flex-direction: column; }
  .cb-btns .cb-btn { width: 100%; }
}

/* =============================================================
   SHARED CTA LAYOUT (v1, v2, v3)
   ============================================================= */
.cb-cta {
  border-radius: var(--cb-r);
  padding: clamp(20px,3vw,28px) clamp(20px,3vw,34px) !important;
  display: flex; flex-direction: column; gap: 20px;
  color: var(--cb-tc, #fff);
}
@media(min-width: 600px) {
  .cb-cta { flex-direction: row; align-items: center; justify-content: space-between; gap: 32px; }
}
.cb-left  { flex: 1; min-width: 0; }
.cb-right { display: flex; flex-direction: column; gap: 9px; flex-shrink: 0; width: 100%; }
@media(min-width: 600px) { .cb-right { width: 196px; } }

.cb-cta h2 {
  font-family: var(--cb-sf);
  font-size: clamp(1.05rem,2.8vw,1.42rem) !important;
  font-weight: 400; line-height: 1.25 !important; margin-bottom: 6px !important;
  color: var(--cb-tc, #fff);
}
.cb-cta .cb-sub {
  font-size: 0.88rem; line-height: 1.55; margin-bottom: 14px !important;
  color: var(--cb-tc, rgba(255,255,255,.55));
  opacity: .7;
}

/* ── V1 — Pulsing Dots ── */
.cb-v1 { background: var(--cb-bg, linear-gradient(135deg, var(--cb-pp) 0%, var(--cb-pd) 100%)); }

.cb-dot-row { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.cb-avail-dot {
  width: 10px; height: 10px; border-radius: 50%;
  background: var(--cb-gr);
  animation: cb-pulse-dot 2s ease infinite;
}
.cb-dot-label { font-size: 0.82rem; color: rgba(255,255,255,.45); }
.cb-dot-label strong { color: rgba(255,255,255,.8); font-weight: 600; }

/* ── V2 — Count Badge ── */
.cb-v2 { background: var(--cb-bg, linear-gradient(135deg, var(--cb-p) 0%, var(--cb-pp) 100%)); }

.cb-count-badge {
  display: inline-flex; align-items: center; gap: 10px;
  background: rgba(74,222,130,.12); border: 1px solid rgba(74,222,128,.3);
  border-radius: 8px; padding: 8px 14px !important;
}
.cb-count-num {
  font-family: var(--cb-sf); font-size: 1.6rem; font-weight: 700; line-height: 1;
  color: var(--cb-gr);
}
.cb-count-text { display: flex; flex-direction: column; gap: 1px; }
.cb-count-text span:first-child { font-size: 0.82rem; font-weight: 700; color: rgba(255,255,255,.85); line-height: 1.2; }
.cb-count-text span:last-child  { font-size: 0.75rem; color: rgba(255,255,255,.38); }

/* ── V3 — Bed Icons ── */
.cb-v3 { background: var(--cb-bg, linear-gradient(135deg, #4E1933 0%, #3A1126 100%)); }

.cb-bed-strip  { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.cb-bed-icons  { display: flex; gap: 6px; }
.cb-bed-icon {
  display: flex; align-items: center; justify-content: center;
  width: 30px; height: 22px; border-radius: 5px;
  background: rgba(74,222,128,.14); border: 1px solid rgba(74,222,128,.38);
  animation: cb-pulse-ring 2.5s ease infinite;
}
.cb-bed-svg { stroke: var(--cb-gr); }
.cb-bed-label { font-size: 0.82rem; color: rgba(255,255,255,.45); }
.cb-bed-label strong { color: rgba(255,255,255,.8); font-weight: 600; }

/* =============================================================
   B — EMPATHY BANNER
   ============================================================= */
.cb-cta-b {
  background: var(--cb-bg, var(--cb-p));
  border-radius: var(--cb-r);
  padding: clamp(32px,5vw,54px) clamp(20px,5vw,48px) !important;
  text-align: center; color: var(--cb-tc, #fff);
  position: relative; overflow: hidden;
}
.cb-cta-b::before {
  content: ''; position: absolute; inset: 0; pointer-events: none;
  background: radial-gradient(circle at 85% -20%, rgba(196,168,130,.14) 0%, transparent 55%),
              radial-gradient(circle at 10% 110%, rgba(255,255,255,.05) 0%, transparent 45%);
}
.cb-cta-b > * { position: relative; }
.cb-cta-b .cb-tag {
  background: rgba(196,168,130,.22);
  color: var(--cb-ac, var(--cb-g));
}
.cb-cta-b h2 {
  font-family: var(--cb-sf); font-size: clamp(1.35rem,4vw,2.1rem) !important;
  font-weight: 400; line-height: 1.22 !important; margin-bottom: 10px !important;
  color: var(--cb-tc, #fff);
}
.cb-cta-b p { font-size: 0.94rem; opacity: .83; max-width: 460px; margin: 0 auto 26px !important; }

/* =============================================================
   C — GLASSMORPHISM
   ============================================================= */
.cb-cta-c {
  background: var(--cb-bg, linear-gradient(135deg, var(--cb-pp) 0%, var(--cb-p) 100%));
  border-radius: var(--cb-r);
  padding: clamp(28px,5vw,52px) clamp(20px,5vw,44px) !important;
  position: relative; overflow: hidden;
}
.cb-cta-c::before {
  content: ''; position: absolute; top: -60px; right: -60px;
  width: 260px; height: 260px; background: rgba(196,168,130,.1);
  border-radius: 50%; pointer-events: none;
}
.cb-cta-c-inner {
  position: relative; background: rgba(255,255,255,.07);
  backdrop-filter: blur(8px); border: 1px solid rgba(255,255,255,.15);
  border-radius: var(--cb-r); padding: clamp(22px,4vw,40px) !important;
  color: var(--cb-tc, #fff);
  display: flex; flex-direction: column; gap: 16px;
}
@media(min-width: 580px) { .cb-cta-c-inner { flex-direction: row; align-items: center; } }
.cb-cta-c-inner .cb-icon { font-size: 2.8rem; flex-shrink: 0; }
.cb-cta-c-inner h3 {
  font-family: var(--cb-sf); font-size: clamp(1.05rem,3vw,1.5rem) !important;
  font-weight: 400; margin-bottom: 7px !important; color: var(--cb-tc, #fff);
}
.cb-cta-c-inner p { font-size: 0.94rem; opacity: .82; line-height: 1.7; margin-bottom: 18px !important; }

/* =============================================================
   E — FREE EVALUATION
   ============================================================= */
.cb-cta-e {
  background: var(--cb-bg, var(--cb-pp));
  border-radius: var(--cb-r);
  padding: clamp(32px,5vw,54px) clamp(20px,5vw,48px) !important;
  text-align: center; color: var(--cb-tc, #fff);
}
.cb-cta-e h2 {
  font-family: var(--cb-sf); font-size: clamp(1.25rem,3.5vw,1.85rem) !important;
  font-weight: 400; line-height: 1.3 !important; margin-bottom: 10px !important;
  color: var(--cb-tc, #fff);
}
.cb-cta-e p { font-size: 0.94rem; opacity: .80; max-width: 520px; margin: 0 auto 28px !important; }

/* =============================================================
   F — SPLIT CARD
   ============================================================= */
.cb-cta-f {
  display: grid; grid-template-columns: 1fr;
  border-radius: var(--cb-r); overflow: hidden;
  box-shadow: 0 6px 28px rgba(107,35,71,.13);
}
@media(min-width: 620px) { .cb-cta-f { grid-template-columns: 1fr 1fr; } }

.cb-f-l {
  background: var(--cb-bg, var(--cb-pp));
  color: var(--cb-tc, #fff);
  padding: clamp(28px,5vw,44px) clamp(22px,5vw,40px) !important;
}
.cb-f-l .cb-tag {
  background: var(--cb-bc, var(--cb-g));
  color: var(--cb-btc, var(--cb-pp));
}
.cb-f-l h2 {
  font-family: var(--cb-sf); font-size: clamp(1.15rem,3.5vw,1.6rem) !important;
  font-weight: 400; line-height: 1.3 !important; margin-bottom: 10px !important;
  color: var(--cb-tc, #fff);
}
.cb-f-l p { font-size: 0.94rem; opacity: .78; line-height: 1.75; }

.cb-f-r {
  background: var(--cb-pl);
  padding: clamp(28px,5vw,44px) clamp(22px,5vw,40px) !important;
  display: flex; flex-direction: column; gap: 12px; justify-content: center;
}
.cb-tile {
  display: flex; align-items: center; gap: 14px;
  background: #fff; border: 1.5px solid var(--cb-bd); border-radius: 12px;
  padding: 13px 16px !important; text-decoration: none;
  transition: border-color .18s, transform .18s, box-shadow .18s;
}
.cb-tile:hover {
  border-color: var(--cb-ac, var(--cb-p));
  transform: translateY(-2px);
  box-shadow: 0 5px 16px rgba(107,35,71,.12);
}
.cb-tile-ico {
  width: 40px; height: 40px; background: var(--cb-pl); border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 1.05rem; flex-shrink: 0;
}
.cb-tile strong { display: block; font-size: 0.88rem; color: var(--cb-pp); }
.cb-tile span   { font-size: 0.82rem; color: var(--cb-ts); }
.cb-f-note { font-size: 0.82rem; color: var(--cb-ts); text-align: center; }

/* =============================================================
   G — JOURNEY STEPS
   ============================================================= */
.cb-cta-g {
  background: #fff; border-radius: var(--cb-r);
  border: 1.5px solid var(--cb-bd); overflow: hidden;
  box-shadow: 0 2px 18px rgba(0,0,0,.06);
}
.cb-g-head {
  background: var(--cb-bg, var(--cb-p));
  padding: 22px 24px !important; color: var(--cb-tc, #fff); text-align: center;
}
.cb-g-head .cb-over { color: var(--cb-ac, var(--cb-g)); margin-bottom: 6px !important; justify-content: center; }
.cb-g-head h3 {
  font-family: var(--cb-sf); font-size: clamp(1rem,3vw,1.28rem) !important;
  font-weight: 400; color: var(--cb-tc, #fff);
}
.cb-g-grid { display: grid; grid-template-columns: repeat(2,1fr); }
@media(min-width: 520px) { .cb-g-grid { grid-template-columns: repeat(4,1fr); } }

.cb-g-step {
  padding: 20px 10px 16px !important; text-align: center;
  border-right: 1px solid var(--cb-bd); border-bottom: 1px solid var(--cb-bd);
  cursor: default !important; transition: none !important;
}
.cb-g-step * { transition: none !important; }
.cb-g-step:nth-child(2n) { border-right: none; }
@media(min-width: 520px) {
  .cb-g-step { border-bottom: none; }
  .cb-g-step:nth-child(2n) { border-right: 1px solid var(--cb-bd); }
  .cb-g-step:last-child    { border-right: none; }
}
.cb-g-num {
  width: 34px; height: 34px;
  background: var(--cb-bc, var(--cb-p));
  color: var(--cb-btc, #fff);
  border-radius: 50%; display: flex; align-items: center; justify-content: center;
  font-size: 0.82rem; font-weight: 700; margin: 0 auto 7px !important;
  border: 3px solid var(--cb-cr);
}
.cb-g-em { font-size: 1.25rem; margin-bottom: 5px !important; }
.cb-g-t  { font-size: 0.82rem; font-weight: 700; color: var(--cb-pp); line-height: 1.3; margin-top: 4px !important; }
.cb-g-d  { font-size: 0.82rem; color: var(--cb-ts); margin-top: 3px !important; line-height: 1.35; }
.cb-g-foot {
  padding: 18px 24px !important; text-align: center;
  background: var(--cb-pl); border-top: 1px solid var(--cb-bd);
}
.cb-g-foot p { font-size: 0.82rem; color: var(--cb-ts); margin-top: 10px !important; }

/* =============================================================
   I — WARD GRID
   ============================================================= */
.cb-cta-i {
  background: var(--cb-bg, linear-gradient(135deg, var(--cb-f), var(--cb-fd)));
  border-radius: var(--cb-r);
  padding: clamp(26px,4vw,42px) clamp(20px,4vw,38px) !important;
  color: var(--cb-tc, #fff);
  display: flex; flex-direction: column; gap: 22px;
}
@media(min-width: 600px) {
  .cb-cta-i { flex-direction: row; align-items: center; justify-content: space-between; }
}
.cb-i-copy .cb-over { margin-bottom: 6px !important; }
.cb-i-copy h3 {
  font-family: var(--cb-sf); font-size: clamp(1rem,3vw,1.3rem) !important;
  font-weight: 400; margin-bottom: 6px !important; color: var(--cb-tc, #fff);
}
.cb-i-copy p { font-size: 0.88rem; color: rgba(255,255,255,.60); margin-bottom: 14px !important; }

.cb-ward { display: flex; gap: 7px; flex-wrap: wrap; }
.cb-wb {
  display: flex; flex-direction: column; align-items: center; gap: 4px;
  padding: 8px 10px 6px !important; border-radius: 9px; min-width: 48px;
  border: 1.5px solid rgba(255,255,255,.12); background: rgba(255,255,255,.06);
}
.cb-wb.cb-free {
  background: rgba(74,222,128,.14);
  border-color: var(--cb-gr);
}
.cb-wi { font-size: 1.1rem; line-height: 1; }
.cb-wn { font-size: 0.82rem; font-weight: 700; letter-spacing: .04em; color: rgba(255,255,255,.38); }
.cb-wb.cb-free .cb-wn { color: var(--cb-gr); }
.cb-ward-note { margin-top: 8px !important; font-size: 0.82rem; color: rgba(255,255,255,.48); }
.cb-i-btns { display: flex; flex-direction: column; gap: 9px; flex-shrink: 0; }
@media(max-width: 599px) { .cb-i-btns { flex-direction: row; flex-wrap: wrap; } }

/* =============================================================
   J — BOLD TYPOGRAPHIC
   ============================================================= */
.cb-cta-j {
  background: var(--cb-bg, var(--cb-g));
  border-radius: var(--cb-r);
  padding: clamp(30px,5vw,54px) clamp(24px,5vw,52px) !important;
  display: flex; flex-direction: column; gap: 22px; align-items: flex-start;
}
@media(min-width: 620px) {
  .cb-cta-j { flex-direction: row; align-items: center; justify-content: space-between; }
}
.cb-cta-j h2    {
  font-family: var(--cb-sf); font-size: clamp(1.5rem,4vw,2.3rem) !important;
  font-weight: 400; line-height: 1.15 !important;
  color: var(--cb-tc, var(--cb-pp));
}
.cb-cta-j h2 em { font-style: italic; color: var(--cb-ac, var(--cb-p)); }
.cb-j-btns { display: flex; flex-direction: column; gap: 10px; flex-shrink: 0; }
@media(min-width: 620px) { .cb-j-btns { align-items: flex-end; } }

/* =============================================================
   K — ASSESSMENT CARD
   ============================================================= */
.cb-cta-k {
  background: var(--cb-bg, #fff);
  border: 1.5px solid var(--cb-bd); border-radius: var(--cb-r);
  padding: clamp(24px,4vw,40px) !important;
  display: flex; flex-direction: column; gap: 16px;
  box-shadow: 0 2px 18px rgba(0,0,0,.05);
}
@media(min-width: 560px) { .cb-cta-k { flex-direction: row; align-items: flex-start; } }
.cb-k-ico {
  width: 56px; height: 56px;
  background: var(--cb-ac, var(--cb-pl));
  border-radius: 50%; display: flex; align-items: center; justify-content: center;
  font-size: 1.55rem; flex-shrink: 0;
}
.cb-k-copy h3 {
  font-family: var(--cb-sf); font-size: clamp(1rem,2.5vw,1.22rem) !important;
  font-weight: 400; margin-bottom: 6px !important;
  color: var(--cb-tc, var(--cb-pp));
}
.cb-k-copy p { font-size: 0.94rem; color: var(--cb-tm); line-height: 1.65; margin-bottom: 18px !important; }

/* =============================================================
   M — EDITORIAL
   ============================================================= */
.cb-cta-m {
  background: var(--cb-bg, var(--cb-f));
  border-radius: var(--cb-r);
  padding: clamp(36px,6vw,60px) clamp(24px,5vw,54px) !important;
  color: var(--cb-tc, #fff); position: relative; overflow: hidden;
}
.cb-cta-m::before {
  content: ''; position: absolute; inset: 0; pointer-events: none;
  background: radial-gradient(circle at 90% -10%, rgba(255,255,255,.04) 0%, transparent 50%),
              radial-gradient(circle at -5%  95%,  rgba(196,168,130,.06) 0%, transparent 45%);
}
.cb-cta-m > * { position: relative; }
.cb-cta-m .cb-over { margin-bottom: 13px !important; }
.cb-cta-m h2 {
  font-family: var(--cb-sf); font-size: clamp(1.5rem,4.5vw,2.4rem) !important;
  font-weight: 400; line-height: 1.2 !important; margin-bottom: 14px !important; max-width: 680px;
  color: var(--cb-tc, #fff);
}
.cb-cta-m .cb-desc { font-size: 0.94rem; color: rgba(255,255,255,.78); line-height: 1.8; max-width: 600px; margin-bottom: 26px !important; }
.cb-m-checks { display: grid; grid-template-columns: 1fr; gap: 9px 30px; margin-bottom: 34px !important; max-width: 620px; }
@media(min-width: 500px) { .cb-m-checks { grid-template-columns: 1fr 1fr; } }
.cb-m-check { display: flex; align-items: center; gap: 9px; font-size: 0.88rem; color: rgba(255,255,255,.86); }
.cb-m-check span { color: var(--cb-ac, var(--cb-g)); font-weight: 700; flex-shrink: 0; }
.cb-m-btns { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; }
@media(max-width: 440px) {
  .cb-m-btns { flex-direction: column; }
  .cb-m-btns .cb-btn, .cb-m-btns .cb-btn-phone { width: 100%; justify-content: center; }
}
.cb-btn-phone {
  display: inline-flex; align-items: center; gap: 9px; text-decoration: none;
  font-family: var(--cb-sb); font-weight: 700; font-size: 0.82rem;
  letter-spacing: 0; text-transform: none;
  color: var(--cb-tc, #fff); border: 2px solid rgba(255,255,255,.38);
  border-radius: var(--cb-pill); padding: 0 28px !important; min-height: 44px; white-space: nowrap;
  transition: border-color .18s, background .18s, transform .18s, box-shadow .18s;
}
.cb-btn-phone:hover {
  border-color: #fff !important; background: rgba(255,255,255,.10) !important;
  transform: translateY(-2px); box-shadow: none !important;
}
.cb-badge {
  width: 22px; height: 22px; background: var(--cb-ac, var(--cb-g)); border-radius: 50%;
  display: flex; align-items: center; justify-content: center; flex-shrink: 0;
}

/* =============================================================
   N — TRUST STATS
   ============================================================= */
.cb-cta-n { border-radius: var(--cb-r); overflow: hidden; box-shadow: 0 4px 22px rgba(31,58,43,.13); }

.cb-n-stats {
  background: var(--cb-bg, var(--cb-f));
  display: grid; grid-template-columns: repeat(3,1fr);
}
@media(max-width: 460px) { .cb-n-stats { grid-template-columns: 1fr; } }

.cb-n-stat {
  padding: clamp(22px,4vw,34px) clamp(14px,3vw,24px) !important; text-align: center;
  border-right: 1px solid rgba(255,255,255,.09);
}
.cb-n-stat:last-child { border-right: none; }
@media(max-width: 460px) {
  .cb-n-stat { border-right: none; border-bottom: 1px solid rgba(255,255,255,.07); }
  .cb-n-stat:last-child { border-bottom: none; }
}
.cb-n-num {
  font-family: var(--cb-sf); font-size: clamp(1.8rem,5vw,2.5rem); line-height: 1; margin-bottom: 8px !important;
  color: var(--cb-ac, var(--cb-g));
}
.cb-n-lbl { font-size: 0.82rem; color: rgba(255,255,255,.65); line-height: 1.4; max-width: 140px; margin: 0 auto !important; }

.cb-n-card {
  background: #fff;
  padding: clamp(24px,4vw,38px) clamp(20px,4vw,36px) !important;
  display: flex; flex-direction: column; gap: 22px;
}
@media(min-width: 600px) {
  .cb-n-card { flex-direction: row; align-items: center; justify-content: space-between; gap: 32px; }
}
.cb-n-card h3 {
  font-family: var(--cb-sf); font-size: clamp(1.05rem,2.8vw,1.38rem) !important;
  font-weight: 400; color: var(--cb-t); margin-bottom: 8px !important;
}
.cb-n-card p { font-size: 0.94rem; color: var(--cb-tm); line-height: 1.7; max-width: 440px; }
.cb-n-btns { display: flex; flex-direction: column; align-items: flex-start; gap: 10px; flex-shrink: 0; }
@media(min-width: 600px) { .cb-n-btns { align-items: flex-end; } }
.cb-n-tel {
  font-size: 0.88rem; color: var(--cb-ts); text-decoration: none;
  border-bottom: 1px solid var(--cb-bd); transition: color .15s, border-color .15s;
}
.cb-n-tel:hover { color: var(--cb-f); border-color: var(--cb-f); }

/* =============================================================
   MOBILE ≤ 559px — centre content + equalise button widths
   ============================================================= */
@media(max-width: 559px) {

  /* dots / availability blocks */
  .cb-cta { text-align: center; }
  .cb-right .cb-btn,
  .cb-right .cb-btn-phone { width: 100%; justify-content: center; }

  /* overline row — flex container, text-align doesn't centre flex items */
  .cb-over { justify-content: center; }

  /* v1 dots row / v3 bed-strip */
  .cb-dot-row, .cb-bed-strip { justify-content: center; }

  /* glassmorphism block */
  .cb-cta-c-inner    { text-align: center; }
  .cb-cta-c .cb-btns { flex-direction: column; align-items: stretch; }
  .cb-cta-c .cb-btn  { width: 100%; justify-content: center; }

  /* split contact block — left panel */
  .cb-f-l { text-align: center; }

  /* ward / bed-grid block */
  .cb-cta-i          { text-align: center; }
  .cb-ward           { justify-content: center; }
  .cb-i-btns         { flex-direction: column; align-items: stretch; width: 100%; }
  .cb-i-btns .cb-btn { width: 100%; justify-content: center; }

  /* bold typographic block */
  .cb-cta-j          { align-items: stretch; text-align: center; }
  .cb-j-btns         { width: 100%; }
  .cb-j-btns .cb-btn { width: 100%; justify-content: center; }

  /* typo block — stack & equalise buttons (extends the ≤420px rule) */
  .cb-cta-b .cb-btns { flex-direction: column; align-items: stretch; width: 100%; }
  .cb-cta-b .cb-btn  { width: 100%; justify-content: center; }

  /* editorial / assessment block */
  .cb-cta-k { align-items: center; text-align: center; }
  .cb-cta-k .cb-btn { width: 100%; justify-content: center; }

  /* N stats lower card */
  .cb-n-card { text-align: center; align-items: center; }
  .cb-n-btns { align-items: stretch; width: 100%; }
  .cb-n-btns .cb-btn { width: 100%; justify-content: center; }
}

/* =============================================================
   STICKY BAR
   ============================================================= */
.cb-sticky {
  display: none; position: fixed; bottom: 0; left: 0; right: 0; z-index: 999;
  background: var(--cb-bg, var(--cb-pp)); border-top: 2px solid var(--cb-p);
  padding: 10px 12px !important; gap: 8px;
  box-shadow: 0 -4px 20px rgba(0,0,0,.28);
}
@media(max-width: 860px) { .cb-sticky { display: flex; } }
.cb-sticky a {
  flex: 1; display: flex; align-items: center; justify-content: center; gap: 7px;
  border-radius: var(--cb-pill); text-decoration: none; padding: 12px 8px !important;
  font-family: var(--cb-sb); font-size: 0.82rem; font-weight: 700;
  letter-spacing: .07em; text-transform: uppercase; transition: background .18s;
}
.cb-s-call { background: var(--cb-bc, var(--cb-p)); color: var(--cb-btc, #fff); }
.cb-s-call:active { filter: brightness(.85); }
.cb-s-back { background: var(--cb-ac, var(--cb-g)); color: var(--cb-pp); }
.cb-s-back:active { filter: brightness(.9); }
