/*
 * Cater2U Care — design system
 *
 * Direction: warm and human. Emerald green and orchid from the logo carry the
 * brand, on soft lilac and mint surfaces.
 *
 * Structure: tokens, base, layout, components, then the Elementor bridge.
 * Every rule that has to beat Elementor's global kit is scoped to `body.c2u`,
 * because the kit emits selectors like `.elementor-kit-4 a` that would
 * otherwise win on specificity.
 */

/* ============================================================
   1. Tokens
   ============================================================ */

:root {
  /* Brand */
  --c2u-primary: #087F57;        /* emerald, from the logo */
  --c2u-primary-dark: #066347;
  --c2u-primary-light: #E4F5EC;  /* mint tint */
  --c2u-accent: #9333B8;         /* orchid, from the logo */
  --c2u-accent-dark: #712A8F;
  --c2u-accent-light: #F6EAFB;

  /* Ink */
  --c2u-ink: #241B2C;
  --c2u-ink-soft: #5A5166;
  --c2u-ink-faint: #6B6275;

  /* Surfaces */
  --c2u-cream: #FAF6FD;
  --c2u-peach: #E8F6EF;
  --c2u-blush: #F6EAFB;
  --c2u-white: #fff;
  --c2u-line: #E6DFEC;
  --c2u-line-soft: #F0EAF4;

  /* Type */
  --c2u-font-head: 'Source Serif 4', Georgia, 'Times New Roman', serif;
  --c2u-font-body: 'Instrument Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;

  /* Scale */
  --c2u-wrap: 1240px;
  --c2u-gutter: clamp(1.25rem, 4vw, 2.75rem);
  --c2u-section: clamp(3.5rem, 7vw, 6rem);
  --c2u-gap: clamp(1.25rem, 2.2vw, 1.75rem);

  --c2u-r-sm: 12px;
  --c2u-r: 16px;
  --c2u-r-lg: 22px;
  --c2u-r-xl: 28px;

  --c2u-shadow-sm: 0 1px 2px rgba(42, 36, 34, .05);
  --c2u-shadow: 0 4px 16px -8px rgba(42, 36, 34, .22);
  --c2u-shadow-lg: 0 18px 48px -28px rgba(42, 36, 34, .45);
}

/* ============================================================
   2. Base
   ============================================================ */

*, *::before, *::after { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
  }
}

body {
  margin: 0;
  font-family: var(--c2u-font-body);
  font-size: 17px;
  line-height: 1.7;
  color: var(--c2u-ink);
  background: var(--c2u-white);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  overflow-x: hidden;
}

h1, h2, h3, h4, h5 {
  font-family: var(--c2u-font-head);
  font-weight: 600;
  line-height: 1.14;
  letter-spacing: -.018em;
  color: var(--c2u-ink);
  margin: 0 0 .5em;
  text-wrap: balance;
}
h1 { font-size: clamp(2.35rem, 4.6vw, 3.6rem); line-height: 1.06; }
h2 { font-size: clamp(1.75rem, 3.1vw, 2.5rem); }
h3 { font-size: clamp(1.15rem, 1.5vw, 1.3rem); }
h4 { font-size: 1.05rem; }

p { margin: 0 0 1.15em; color: var(--c2u-ink-soft); }
p:last-child { margin-bottom: 0; }

a { color: var(--c2u-primary); text-underline-offset: .18em; text-decoration-thickness: 1px; }
a:hover { color: var(--c2u-primary-dark); }

img, svg, video, iframe { max-width: 100%; }
img, svg, video { height: auto; display: block; }

strong, b { font-weight: 600; color: var(--c2u-ink); }

:focus-visible { outline: 3px solid var(--c2u-primary); outline-offset: 2px; border-radius: 4px; }

.screen-reader-text {
  position: absolute !important; width: 1px; height: 1px;
  padding: 0; margin: -1px; overflow: hidden;
  clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}

.c2u-skip {
  position: absolute; left: -9999px; top: 0; z-index: 999;
  padding: .9rem 1.4rem; background: var(--c2u-ink); color: #fff;
  border-radius: 0 0 var(--c2u-r-sm) 0; font-weight: 600; text-decoration: none;
}
.c2u-skip:focus { left: 0; color: #fff; }

/* ============================================================
   3. Layout
   ============================================================ */

.c2u-wrap {
  width: 100%;
  max-width: var(--c2u-wrap);
  margin-inline: auto;
  padding-inline: var(--c2u-gutter);
}

.c2u-section { padding-block: var(--c2u-section); }

.c2u-grid { display: grid; gap: var(--c2u-gap); }
.c2u-grid--2 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr)); }
.c2u-grid--3 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 290px), 1fr)); }
.c2u-grid--4 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 230px), 1fr)); }

.c2u-layout {
  display: grid;
  gap: clamp(2rem, 5vw, 3.75rem);
  padding-block: var(--c2u-section);
  align-items: start;
}
@media (min-width: 1000px) {
  .c2u-layout:has(.c2u-layout__side) { grid-template-columns: minmax(0, 1fr) 320px; }
}
.c2u-layout__side { position: sticky; top: 100px; }

/* ============================================================
   4. Buttons
   ============================================================ */

.c2u-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .5rem;
  padding: .95rem 1.7rem;
  border: 2px solid transparent;
  border-radius: var(--c2u-r-sm);
  font: 600 .97rem/1.25 var(--c2u-font-body);
  text-decoration: none;
  white-space: nowrap;
  cursor: pointer;
  transition: background-color .16s ease, color .16s ease, border-color .16s ease, transform .16s ease;
}
.c2u-btn:hover { transform: translateY(-1px); }
.c2u-btn:active { transform: none; }
.c2u-btn--lg { padding: 1.1rem 2rem; font-size: 1.02rem; }
.c2u-btn--sm { padding: .7rem 1.2rem; font-size: .9rem; }

.c2u-btn--primary { background: var(--c2u-primary); color: #fff; }
.c2u-btn--primary:hover { background: var(--c2u-primary-dark); color: #fff; }

.c2u-btn--ghost { background: var(--c2u-white); color: var(--c2u-ink); border-color: var(--c2u-line); }
.c2u-btn--ghost:hover { border-color: var(--c2u-primary); color: var(--c2u-primary); background: var(--c2u-white); }

.c2u-btn--light { background: #fff; color: var(--c2u-primary); }
.c2u-btn--light:hover { background: var(--c2u-cream); color: var(--c2u-primary-dark); }

.c2u-btn--outline-light { background: transparent; color: #fff; border-color: rgba(255,255,255,.45); }
.c2u-btn--outline-light:hover { background: rgba(255,255,255,.14); color: #fff; border-color: rgba(255,255,255,.8); }

.c2u-icon { flex: none; }

/* ============================================================
   5. Header
   ============================================================ */

.c2u-topbar {
  background: var(--c2u-cream);
  border-bottom: 1px solid var(--c2u-line);
  color: var(--c2u-ink-soft);
  font-size: .855rem;
}
.c2u-topbar__inner {
  display: flex; flex-wrap: wrap; align-items: center;
  justify-content: space-between; gap: .4rem 1.5rem;
  padding-block: .6rem;
}
.c2u-topbar__msg { margin: 0; }
.c2u-topbar__links { display: flex; flex-wrap: wrap; gap: 1.4rem; }
.c2u-topbar__link {
  display: inline-flex; align-items: center; gap: .4rem;
  text-decoration: none; font-weight: 500; white-space: nowrap;
}
.c2u-topbar__link .c2u-icon { width: 15px; height: 15px; opacity: .6; }
@media (max-width: 760px) {
  .c2u-topbar__msg { display: none; }
  .c2u-topbar__inner { justify-content: center; }
}

.c2u-nav {
  background: rgba(255,255,255,.94);
  backdrop-filter: saturate(180%) blur(12px);
  border-bottom: 1px solid var(--c2u-line);
  position: sticky; top: 0; z-index: 60;
}
.c2u-nav.is-stuck { box-shadow: 0 2px 14px -8px rgba(42,36,34,.35); }
.c2u-nav__inner {
  display: flex; align-items: center; gap: 1.25rem;
  min-height: 82px;
}

.c2u-brand { flex: 0 0 auto; }
.c2u-logo { display: block; line-height: 0; }
.c2u-logo__img { height: 50px; width: auto; }
@media (max-width: 600px) { .c2u-logo__img { height: 38px; } }

.c2u-menu { display: flex; align-items: center; gap: 1.25rem; margin-left: auto; }
.c2u-menu__list { display: flex; align-items: center; gap: .1rem; list-style: none; margin: 0; padding: 0; }
.c2u-menu__item { position: relative; }
.c2u-menu__link {
  display: inline-flex; align-items: center; gap: .25rem;
  padding: .55rem .72rem;
  font: 500 .945rem/1.3 var(--c2u-font-body);
  color: var(--c2u-ink);
  text-decoration: none;
  border-radius: 9px;
  white-space: nowrap;
}
.c2u-menu__link:hover { background: var(--c2u-blush); color: var(--c2u-primary); }
.c2u-menu__item.is-current > .c2u-menu__link { color: var(--c2u-primary); font-weight: 600; }
.c2u-menu__caret { opacity: .5; }
.c2u-menu__toggle { display: none; }

.c2u-menu__sub {
  position: absolute; top: calc(100% + 8px); left: 0;
  min-width: 254px; padding: .45rem; margin: 0;
  list-style: none; background: #fff;
  border: 1px solid var(--c2u-line);
  border-radius: var(--c2u-r);
  box-shadow: var(--c2u-shadow-lg);
  opacity: 0; visibility: hidden; transform: translateY(6px);
  transition: opacity .16s ease, transform .16s ease, visibility .16s;
}
.c2u-menu__item--parent:hover > .c2u-menu__sub,
.c2u-menu__item--parent:focus-within > .c2u-menu__sub,
.c2u-menu__item--parent.is-open > .c2u-menu__sub {
  opacity: 1; visibility: visible; transform: translateY(0);
}
.c2u-menu__sublink {
  display: block; padding: .55rem .75rem; border-radius: 9px;
  color: var(--c2u-ink); font-size: .92rem; text-decoration: none;
}
.c2u-menu__sublink:hover { background: var(--c2u-blush); color: var(--c2u-primary); }

.c2u-menu__cta { display: flex; align-items: center; gap: .55rem; flex: 0 0 auto; }
.c2u-menu__phone { padding: .7rem 1.1rem; font-size: .9rem; }

.c2u-burger {
  display: none; flex-direction: column; justify-content: center; gap: 5px;
  width: 46px; height: 46px; padding: 0; margin-left: auto;
  border: 1px solid var(--c2u-line); border-radius: var(--c2u-r-sm);
  background: #fff; cursor: pointer;
}
.c2u-burger__bar {
  display: block; width: 19px; height: 2px; margin-inline: auto;
  background: var(--c2u-ink); border-radius: 2px;
  transition: transform .2s ease, opacity .2s ease;
}
.c2u-burger[aria-expanded="true"] .c2u-burger__bar:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.c2u-burger[aria-expanded="true"] .c2u-burger__bar:nth-child(2) { opacity: 0; }
.c2u-burger[aria-expanded="true"] .c2u-burger__bar:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

@media (max-width: 1180px) { .c2u-menu__phone { display: none; } }
@media (max-width: 1040px) {
  .c2u-burger { display: flex; }
  .c2u-menu {
    position: fixed; inset: 0 0 0 auto;
    width: min(370px, 88vw);
    flex-direction: column; align-items: stretch; gap: 0;
    padding: 1.4rem;
    background: #fff;
    box-shadow: -8px 0 44px rgba(0,0,0,.18);
    /* The closed drawer stays inside the screen and is clipped away, rather
       than being parked past the right edge. Nothing ever extends beyond the
       viewport, so no browser can treat it as extra page width, and it is
       hidden from the tab order and screen readers until opened. */
    clip-path: inset(0 0 0 100%);
    visibility: hidden;
    transition: clip-path .26s cubic-bezier(.4,0,.2,1), visibility 0s linear .26s;
    overflow-y: auto; z-index: 70;
  }
  .c2u-menu.is-open { clip-path: inset(0); visibility: visible; transition-delay: 0s; }
  .c2u-menu__list { flex-direction: column; align-items: stretch; gap: 0; margin-top: 3.2rem; }
  .c2u-menu__item { border-bottom: 1px solid var(--c2u-line-soft); }
  .c2u-menu__link { padding: .95rem .3rem; font-size: 1.04rem; justify-content: space-between; border-radius: 0; }
  .c2u-menu__caret { display: none; }
  .c2u-menu__toggle {
    display: flex; align-items: center; justify-content: center;
    position: absolute; top: 3px; right: 0;
    width: 48px; height: 48px;
    background: none; border: 0; cursor: pointer; color: var(--c2u-ink-faint);
  }
  .c2u-menu__toggle[aria-expanded="true"] svg { transform: rotate(180deg); }
  .c2u-menu__sub {
    position: static; opacity: 1; visibility: visible; transform: none;
    display: none; box-shadow: none; border: 0;
    padding: 0 0 .6rem .85rem; margin-left: .2rem;
    border-left: 2px solid var(--c2u-blush);
  }
  .c2u-menu__item--parent.is-open > .c2u-menu__sub { display: block; }
  .c2u-menu__cta { margin-top: 1.6rem; flex-direction: column; align-items: stretch; }
  .c2u-menu__phone { display: inline-flex; }
}

body.c2u-menu-open { overflow: hidden; }
/* Nothing on this site is meant to scroll sideways. */
html { overflow-x: clip; }
body { overflow-x: clip; max-width: 100%; }
.c2u-backdrop {
  position: fixed; inset: 0; z-index: 65;
  background: rgba(42,36,34,.45);
  opacity: 0; pointer-events: none; transition: opacity .25s ease;
}
.c2u-backdrop.is-on { opacity: 1; pointer-events: auto; }

/* ============================================================
   6. Page hero and breadcrumbs
   ============================================================ */

.c2u-pagehero {
  background: var(--c2u-cream);
  border-bottom: 1px solid var(--c2u-line);
  padding-block: clamp(2.5rem, 5.5vw, 4rem);
}
.c2u-pagehero__title { margin-bottom: .3em; max-width: 20ch; }
.c2u-pagehero__sub { max-width: 58ch; font-size: 1.1rem; }

.c2u-crumbs { margin-bottom: 1.1rem; font-size: .85rem; }
.c2u-crumbs__list {
  display: flex; flex-wrap: wrap; gap: .4rem;
  list-style: none; margin: 0; padding: 0;
  color: var(--c2u-ink-faint);
}
.c2u-crumbs__item + .c2u-crumbs__item::before { content: "/"; margin-right: .4rem; opacity: .5; }
.c2u-crumbs a { color: inherit; text-decoration: none; }
.c2u-crumbs a:hover { color: var(--c2u-primary); text-decoration: underline; }
.c2u-crumbs [aria-current] { color: var(--c2u-ink); font-weight: 500; }

/* ============================================================
   7. Prose
   ============================================================ */

.c2u-prose { max-width: 70ch; font-size: 1.08rem; }
.c2u-prose > * + * { margin-top: 1.15em; }
.c2u-prose h2 { margin-top: 2em; margin-bottom: .45em; }
.c2u-prose h3 { margin-top: 1.7em; margin-bottom: .35em; }
.c2u-prose ul, .c2u-prose ol { padding-left: 1.3em; }
.c2u-prose li { margin-bottom: .5em; }
.c2u-prose li::marker { color: var(--c2u-accent); }
.c2u-prose img { border-radius: var(--c2u-r-lg); margin-block: 1.7em; }
.c2u-prose a { text-decoration: underline; }

.c2u-prose blockquote {
  margin: 2em 0; padding: 1.3rem 1.6rem;
  background: var(--c2u-blush);
  border-left: 3px solid var(--c2u-primary);
  border-radius: 0 var(--c2u-r) var(--c2u-r) 0;
  font-family: var(--c2u-font-head);
  font-size: 1.22rem; line-height: 1.5;
  color: var(--c2u-ink);
}
.c2u-prose blockquote p { color: inherit; }

.c2u-prose .c2u-note {
  margin: 2em 0; padding: 1.2rem 1.4rem;
  background: var(--c2u-accent-light);
  border: 1px solid rgba(147,51,184,.18);
  border-radius: var(--c2u-r);
  font-size: 1rem;
}
.c2u-prose .c2u-note p { color: var(--c2u-ink); margin: 0; }

.c2u-prose table { width: 100%; border-collapse: collapse; margin-block: 1.8em; font-size: .96rem; }
.c2u-prose th, .c2u-prose td { padding: .75rem .9rem; border-bottom: 1px solid var(--c2u-line); text-align: left; }
.c2u-prose th { background: var(--c2u-cream); font-weight: 600; }

/* ============================================================
   8. Cards
   ============================================================ */

.c2u-card {
  display: flex; flex-direction: column;
  background: #fff;
  border: 1px solid var(--c2u-line);
  border-radius: var(--c2u-r-lg);
  overflow: hidden;
  transition: transform .18s ease, box-shadow .18s ease;
}
.c2u-card:hover { transform: translateY(-3px); box-shadow: var(--c2u-shadow-lg); }
.c2u-card__media { display: block; aspect-ratio: 16 / 10; background: var(--c2u-peach); overflow: hidden; }
.c2u-card__media img { width: 100%; height: 100%; object-fit: cover; }
.c2u-card__placeholder { display: grid; place-items: center; height: 100%; color: var(--c2u-primary); opacity: .3; }
.c2u-card__placeholder .c2u-icon { width: 48px; height: 48px; }
.c2u-card__body { padding: 1.4rem 1.5rem 1.6rem; display: flex; flex-direction: column; flex: 1; }
.c2u-card__cat {
  align-self: flex-start; margin-bottom: .65rem;
  padding: .28rem .7rem;
  background: var(--c2u-blush); color: var(--c2u-primary);
  border-radius: 99px;
  font: 600 .72rem/1.4 var(--c2u-font-body);
  letter-spacing: .05em; text-transform: uppercase; text-decoration: none;
}
.c2u-card__title { font-size: 1.2rem; margin-bottom: .45rem; }
.c2u-card__title a { color: inherit; text-decoration: none; }
.c2u-card__title a:hover { color: var(--c2u-primary); }
.c2u-card__excerpt { font-size: .95rem; flex: 1; }
.c2u-card__meta {
  margin: 1rem 0 0; font-size: .82rem;
  color: var(--c2u-ink-faint); display: flex; gap: .45rem;
}

/* ============================================================
   9. Forms
   ============================================================ */

.c2u-form {
  background: #fff;
  border: 1px solid var(--c2u-line);
  border-radius: var(--c2u-r-xl);
  padding: clamp(1.5rem, 3vw, 2.4rem);
  box-shadow: var(--c2u-shadow);
}
.c2u-form__title {
  font-family: var(--c2u-font-head); font-size: 1.45rem;
  font-weight: 600; color: var(--c2u-ink); margin: 0 0 1.3rem;
}
.c2u-form__grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 1rem 1.15rem; }
@media (max-width: 640px) { .c2u-form__grid { grid-template-columns: 1fr; } }
.c2u-field { margin: 0; display: flex; flex-direction: column; }
.c2u-field--full { grid-column: 1 / -1; }
@media (max-width: 640px) { .c2u-field--half { grid-column: 1 / -1; } }

.c2u-field > label { font: 600 .9rem/1.4 var(--c2u-font-body); color: var(--c2u-ink); margin-bottom: .35rem; }
.c2u-req { color: var(--c2u-primary); }

.c2u-field input, .c2u-field select, .c2u-field textarea {
  width: 100%; padding: .8rem .95rem;
  font: 400 1rem/1.5 var(--c2u-font-body);
  color: var(--c2u-ink); background: #fff;
  border: 1.5px solid var(--c2u-line); border-radius: var(--c2u-r-sm);
  transition: border-color .15s ease, box-shadow .15s ease;
}
.c2u-field input:focus, .c2u-field select:focus, .c2u-field textarea:focus {
  border-color: var(--c2u-primary);
  box-shadow: 0 0 0 3px var(--c2u-primary-light);
  outline: none;
}
.c2u-field textarea { resize: vertical; min-height: 118px; }
.c2u-field__help { margin-top: .32rem; font-size: .82rem; color: var(--c2u-ink-faint); }
.c2u-field__error { margin-top: .32rem; font-size: .82rem; color: #A5262B; font-weight: 500; }
.c2u-field.has-error input, .c2u-field.has-error select, .c2u-field.has-error textarea { border-color: #A5262B; }

.c2u-hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

/* SMS consent. Never pre-checked, never required. */
.c2u-field--check { margin-top: .5rem; }
.c2u-consent {
  display: grid; grid-template-columns: auto 1fr; gap: .75rem;
  align-items: start; padding: 1rem 1.1rem;
  background: var(--c2u-cream);
  border: 1px solid var(--c2u-line);
  border-radius: var(--c2u-r);
}
.c2u-consent input[type="checkbox"] {
  width: 20px; height: 20px; margin: .18rem 0 0;
  accent-color: var(--c2u-primary); cursor: pointer;
}
.c2u-consent label {
  margin: 0; font: 400 .86rem/1.6 var(--c2u-font-body);
  color: var(--c2u-ink-soft); cursor: pointer;
}
.c2u-consent__links { display: block; margin-top: .4rem; font-size: .84rem; }
.c2u-consent__links a { color: var(--c2u-primary); font-weight: 500; text-decoration: underline; }

.c2u-form__foot { margin-top: 1.5rem; display: flex; flex-direction: column; gap: .8rem; align-items: flex-start; }
.c2u-form__submit { min-width: 230px; }
.c2u-form__submit[disabled] { opacity: .6; cursor: progress; }
.c2u-form__privacy { margin: 0; font-size: .84rem; color: var(--c2u-ink-faint); }
.c2u-form__privacy a { color: var(--c2u-primary); text-decoration: underline; }

.c2u-form__notice {
  padding: 1rem 1.2rem; margin-bottom: 1.3rem;
  border-radius: var(--c2u-r); font-size: .96rem;
}
.c2u-form__notice--ok { background: var(--c2u-accent-light); color: var(--c2u-accent-dark); border: 1px solid rgba(147,51,184,.25); }
.c2u-form__notice--error { background: #FBECEC; color: #8C1F23; border: 1px solid rgba(165,38,43,.25); }

.c2u-search { display: flex; gap: .5rem; max-width: 430px; }
.c2u-search__input { flex: 1; padding: .75rem .95rem; font: inherit; border: 1.5px solid var(--c2u-line); border-radius: var(--c2u-r-sm); }
.c2u-search__btn { padding: .75rem 1.3rem; font: 600 .95rem/1.2 var(--c2u-font-body); border: 0; border-radius: var(--c2u-r-sm); background: var(--c2u-primary); color: #fff; cursor: pointer; }

/* ============================================================
   10. FAQ, post, misc
   ============================================================ */

.c2u-faq { margin-top: 3rem; }
.c2u-faq__title { margin-bottom: 1.2rem; }
.c2u-faq__item {
  border: 1px solid var(--c2u-line); border-radius: var(--c2u-r);
  margin-bottom: .6rem; background: #fff; overflow: hidden;
}
.c2u-faq__item[open] { border-color: var(--c2u-primary); background: var(--c2u-blush); }
.c2u-faq__item summary {
  padding: 1.05rem 3rem 1.05rem 1.3rem;
  font-weight: 600; cursor: pointer; position: relative; list-style: none;
  font-size: 1.02rem; color: var(--c2u-ink);
}
.c2u-faq__item summary::-webkit-details-marker { display: none; }
.c2u-faq__item summary::after {
  content: "+"; position: absolute; right: 1.3rem; top: 50%;
  transform: translateY(-50%); font-size: 1.4rem; font-weight: 400;
  color: var(--c2u-primary);
}
.c2u-faq__item[open] summary::after { content: "\2212"; }
.c2u-faq__answer { padding: 0 1.3rem 1.3rem; }

.c2u-post__head { background: var(--c2u-cream); padding-block: clamp(2rem,5vw,3.4rem) clamp(2rem,5vw,2.8rem); }
.c2u-post__headinner { max-width: 800px; }
.c2u-post__cat {
  display: inline-block; margin-bottom: .9rem; padding: .3rem .85rem;
  background: var(--c2u-primary); color: #fff; border-radius: 99px;
  font: 600 .75rem/1.5 var(--c2u-font-body);
  letter-spacing: .05em; text-transform: uppercase; text-decoration: none;
}
.c2u-post__title { margin-bottom: .4rem; }
.c2u-post__meta { margin: 0; color: var(--c2u-ink-faint); font-size: .9rem; display: flex; flex-wrap: wrap; gap: .45rem; }
.c2u-post__figure { margin: 0; background: linear-gradient(var(--c2u-cream) 50%, #fff 50%); }
.c2u-post__figure img { width: 100%; border-radius: var(--c2u-r-xl); box-shadow: var(--c2u-shadow-lg); }
.c2u-post__tags { margin-top: 2.5rem; display: flex; flex-wrap: wrap; gap: .5rem; }
.c2u-post__tags a {
  padding: .3rem .8rem; background: var(--c2u-cream);
  border-radius: 99px; font-size: .85rem; text-decoration: none; color: var(--c2u-ink-soft);
}
.c2u-post__tags a:hover { background: var(--c2u-blush); color: var(--c2u-primary); }

.c2u-takeaways {
  margin-bottom: 2.5rem; padding: 1.5rem 1.7rem;
  background: var(--c2u-accent-light);
  border-radius: var(--c2u-r-lg);
  border: 1px solid rgba(147,51,184,.18);
}
.c2u-takeaways__title { font-size: 1.08rem; margin-bottom: .6rem; color: var(--c2u-accent-dark); }
.c2u-takeaways ul { margin: 0; padding-left: 1.2em; }
.c2u-takeaways li { margin-bottom: .4em; color: var(--c2u-ink); }
.c2u-takeaways li::marker { color: var(--c2u-accent); }

.c2u-postcta {
  margin-top: 3rem; padding: clamp(1.6rem,4vw,2.4rem);
  background: var(--c2u-primary); color: #fff;
  border-radius: var(--c2u-r-xl);
}
.c2u-postcta h2 { color: #fff; font-size: 1.5rem; }
.c2u-postcta p { color: rgba(255,255,255,.86); }
.c2u-postcta__actions { display: flex; flex-wrap: wrap; gap: .7rem; margin-top: 1.3rem; }

.c2u-related { margin-top: 3.5rem; }
.c2u-related__title { margin-bottom: 1.4rem; }

.c2u-results { list-style: none; margin: 0; padding: 0; max-width: 760px; }
.c2u-results__item { padding-block: 1.5rem; border-bottom: 1px solid var(--c2u-line); }
.c2u-results__title { font-size: 1.28rem; margin-bottom: .2rem; }
.c2u-results__title a { text-decoration: none; }
.c2u-results__url { margin: 0 0 .5rem; font-size: .85rem; color: var(--c2u-accent-dark); }

.c2u-pagination { margin-top: 3rem; }
.c2u-pagination .nav-links { display: flex; flex-wrap: wrap; gap: .4rem; justify-content: center; }
.c2u-pagination .page-numbers {
  display: grid; place-items: center; min-width: 42px; height: 42px; padding-inline: .7rem;
  border: 1px solid var(--c2u-line); border-radius: var(--c2u-r-sm);
  text-decoration: none; color: var(--c2u-ink); font-weight: 500;
}
.c2u-pagination .page-numbers:hover { background: var(--c2u-blush); }
.c2u-pagination .page-numbers.current { background: var(--c2u-primary); color: #fff; border-color: var(--c2u-primary); }

.c2u-widget { margin-bottom: 2rem; padding: 1.5rem; background: var(--c2u-cream); border-radius: var(--c2u-r-lg); }
.c2u-widget__title { font-size: 1.08rem; margin-bottom: .8rem; }
.c2u-widget ul { list-style: none; margin: 0; padding: 0; }
.c2u-widget li { padding-block: .4rem; border-bottom: 1px solid var(--c2u-line); }
.c2u-widget li:last-child { border-bottom: 0; }
.c2u-widget a { text-decoration: none; color: var(--c2u-ink); }
.c2u-widget a:hover { color: var(--c2u-primary); }

/* ============================================================
   11. Prefooter, footer, call bar
   ============================================================ */

.c2u-prefooter { background: var(--c2u-primary); color: #fff; padding-block: clamp(2.75rem, 6vw, 4.25rem); }
.c2u-prefooter__inner {
  display: grid; grid-template-columns: minmax(0,1fr) auto;
  gap: clamp(1.75rem, 4vw, 3.5rem); align-items: center;
}
@media (max-width: 900px) { .c2u-prefooter__inner { grid-template-columns: 1fr; } }
.c2u-prefooter__title { color: #fff; margin-bottom: .35em; max-width: 18ch; }
.c2u-prefooter__text p { color: rgba(255,255,255,.85); max-width: 54ch; margin: 0; }
.c2u-prefooter__actions { display: flex; flex-wrap: wrap; gap: .7rem; }

.c2u-footer { background: var(--c2u-ink); color: rgba(255,255,255,.75); padding-block: clamp(2.75rem,6vw,4rem) 1.5rem; font-size: .93rem; }
.c2u-footer__grid { display: grid; gap: 2.5rem; grid-template-columns: 1.4fr 1fr 1fr 1.3fr; }
@media (max-width: 1000px) { .c2u-footer__grid { grid-template-columns: repeat(2,1fr); } }
@media (max-width: 600px) { .c2u-footer__grid { grid-template-columns: 1fr; } }
.c2u-footer__about { max-width: 330px; }
.c2u-footer .c2u-logo { margin-bottom: 1.1rem; }
.c2u-footer .c2u-logo__img { height: 58px; background: #fff; padding: .5rem .7rem; border-radius: var(--c2u-r-sm); }
.c2u-footer__blurb { color: rgba(255,255,255,.66); font-size: .9rem; }
.c2u-footer__title {
  color: #fff; font-family: var(--c2u-font-body);
  font-size: .82rem; font-weight: 600; letter-spacing: .1em;
  text-transform: uppercase; margin-bottom: 1.1rem;
}
.c2u-footer__list { list-style: none; margin: 0; padding: 0; }
.c2u-footer__list li { margin-bottom: .55rem; }
.c2u-footer__item { display: flex; gap: .65rem; margin-bottom: 1rem; align-items: flex-start; line-height: 1.55; }
.c2u-footer__item .c2u-icon { margin-top: .25rem; color: var(--c2u-accent); opacity: .95; flex: none; }
.c2u-footer__item strong { color: #fff; font-weight: 600; }

.c2u-social { display: flex; gap: .5rem; margin-bottom: 1.1rem; }
.c2u-social__link { display: grid; place-items: center; width: 38px; height: 38px; border-radius: var(--c2u-r-sm); background: rgba(255,255,255,.09); }
.c2u-social__link:hover { background: var(--c2u-primary); }

.c2u-bbb {
  display: inline-flex; align-items: center; gap: .7rem;
  padding: .6rem .9rem; background: rgba(255,255,255,.07);
  border: 1px solid rgba(255,255,255,.16); border-radius: var(--c2u-r-sm);
  text-decoration: none;
}
.c2u-bbb:hover { background: rgba(255,255,255,.13); }
.c2u-bbb__mark {
  font-family: var(--c2u-font-head); font-weight: 700; font-size: 1.1rem;
  background: #0C5EA8; color: #fff; padding: .25rem .5rem; border-radius: 5px;
}
.c2u-bbb__text { display: flex; flex-direction: column; line-height: 1.3; }
.c2u-bbb__text strong { font-size: .83rem; }

.c2u-footer__bar {
  margin-top: 2.5rem; padding-top: 1.5rem;
  border-top: 1px solid rgba(255,255,255,.12);
  display: flex; flex-wrap: wrap; gap: .7rem 2rem; align-items: center;
  font-size: .84rem;
}
.c2u-footer__copy { margin: 0; }
.c2u-footer__legal { display: flex; flex-wrap: wrap; gap: 1.2rem; list-style: none; margin: 0; padding: 0; }
.c2u-footer__note { margin: 0; flex-basis: 100%; font-size: .79rem; line-height: 1.6; }

.c2u-callbar {
  display: none; position: fixed; left: 0; right: 0; bottom: 0; z-index: 80;
  align-items: center; justify-content: center; gap: .5rem;
  padding: .9rem; background: var(--c2u-primary);
  font-weight: 600; text-decoration: none;
  box-shadow: 0 -4px 20px rgba(0,0,0,.2);
}
@media (max-width: 767px) {
  .c2u-callbar { display: flex; }
  body { padding-bottom: 56px; }
}

.c2u-404 { padding-block: clamp(3rem,9vw,6.5rem); background: var(--c2u-cream); }
.c2u-404__inner { max-width: 620px; }
.c2u-404__code { font-family: var(--c2u-font-head); font-size: clamp(4rem,13vw,6.5rem); line-height: 1; margin: 0; color: var(--c2u-primary); opacity: .22; }
.c2u-404__title { margin-top: -.25em; }
.c2u-404__text { font-size: 1.08rem; }
.c2u-404__links { display: flex; flex-wrap: wrap; gap: .7rem; margin-block: 1.8rem; }
.c2u-404__call { margin-bottom: 2rem; }

@media print {
  .c2u-header, .c2u-footer, .c2u-prefooter, .c2u-callbar, .c2u-form { display: none !important; }
  body { font-size: 12pt; }
}

/* ============================================================
   12. Elementor bridge
   ------------------------------------------------------------
   The importer writes the brand palette into Elementor's own global
   settings, which is the right home for it. These rules handle the
   things globals cannot express: component shapes, alignment and
   the few places Elementor's widget stylesheets need overriding.

   Everything is scoped to `body.c2u` because Elementor emits
   `.elementor-kit-N a` and `.elementor-kit-N button`, which beat a
   single class on their own.
   ============================================================ */

/* --- Typography inside the builder --- */
body.c2u .elementor-heading-title { font-family: var(--c2u-font-head); color: var(--c2u-ink); }
body.c2u .elementor-widget-text-editor,
body.c2u .elementor-widget-text-editor p { color: var(--c2u-ink-soft); }
body.c2u .elementor-widget-text-editor a { color: var(--c2u-primary); text-decoration: underline; }

/* Lead paragraph directly under a section heading */
body.c2u .c2u-lead .elementor-widget-container { font-size: 1.12rem; line-height: 1.65; }

/* --- Eyebrow pill --- */
body.c2u .c2u-eyebrow { background: none !important; }
body.c2u .c2u-eyebrow .elementor-heading-title {
  display: inline-block;
  padding: .36rem .9rem;
  background: var(--c2u-blush);
  color: var(--c2u-accent-dark);
  border-radius: 99px;
  font-family: var(--c2u-font-body);
  font-size: .74rem;
  font-weight: 600;
  letter-spacing: .11em;
  text-transform: uppercase;
  line-height: 1.5;
}
body.c2u .c2u-eyebrow--green .elementor-heading-title { background: var(--c2u-accent-light); color: var(--c2u-accent-dark); }
body.c2u .c2u-eyebrow--light .elementor-heading-title { background: rgba(255,255,255,.18); color: #fff; }

/* --- Buttons --- */
body.c2u .elementor-button {
  font-family: var(--c2u-font-body);
  font-weight: 600;
  font-size: .97rem;
  line-height: 1.25;
  border-radius: var(--c2u-r-sm);
  padding: .95rem 1.7rem;
  background-color: var(--c2u-primary);
  color: #fff;
  border: 2px solid transparent;
  transition: background-color .16s ease, color .16s ease, border-color .16s ease, transform .16s ease;
}
body.c2u .elementor-button:hover { background-color: var(--c2u-primary-dark); color: #fff; transform: translateY(-1px); }
body.c2u .elementor-button .elementor-button-content-wrapper { gap: .5rem; }
body.c2u .elementor-size-lg { padding: 1.1rem 2rem; font-size: 1.02rem; }

body.c2u .c2u-btn-outline .elementor-button {
  background-color: #fff;
  color: var(--c2u-ink);
  border-color: var(--c2u-line);
}
body.c2u .c2u-btn-outline .elementor-button:hover {
  background-color: #fff;
  color: var(--c2u-primary);
  border-color: var(--c2u-primary);
}
body.c2u .c2u-btn-light .elementor-button { background-color: #fff; color: var(--c2u-primary); }
body.c2u .c2u-btn-light .elementor-button:hover { background-color: var(--c2u-cream); color: var(--c2u-primary-dark); }
body.c2u .c2u-btn-ghost-light .elementor-button {
  background-color: transparent; color: #fff; border-color: rgba(255,255,255,.45);
}
body.c2u .c2u-btn-ghost-light .elementor-button:hover {
  background-color: rgba(255,255,255,.14); color: #fff; border-color: rgba(255,255,255,.8);
}

/* --- Checklists. The marker is drawn in CSS, so no icon font loads. --- */
body.c2u .c2u-checklist .elementor-icon-list-items { list-style: none; margin: 0; padding: 0; }
body.c2u .c2u-checklist .elementor-icon-list-item { align-items: flex-start; }
body.c2u .c2u-checklist .elementor-icon-list-icon { display: none; }
body.c2u .c2u-checklist .elementor-icon-list-item > .elementor-icon-list-text,
body.c2u .c2u-checklist .elementor-icon-list-item > a {
  position: relative;
  display: block;
  padding-left: 2.05rem;
  line-height: 1.6;
  color: var(--c2u-ink);
  font-size: .98rem;
  text-decoration: none;
}
body.c2u .c2u-checklist .elementor-icon-list-item > .elementor-icon-list-text::before,
body.c2u .c2u-checklist .elementor-icon-list-item > a::before {
  content: "";
  position: absolute; left: 0; top: .18em;
  width: 1.35rem; height: 1.35rem;
  border-radius: 8px;
  background-color: var(--c2u-accent-light);
  background-repeat: no-repeat; background-position: center; background-size: 60%;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%239333B8' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 12l5 5L20 6'/%3E%3C/svg%3E");
}
body.c2u .c2u-checklist--pin .elementor-icon-list-item > .elementor-icon-list-text::before,
body.c2u .c2u-checklist--pin .elementor-icon-list-item > a::before {
  background-color: var(--c2u-blush);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23087F57' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 2a7 7 0 00-7 7c0 5 7 13 7 13s7-8 7-13a7 7 0 00-7-7z'/%3E%3Ccircle cx='12' cy='9' r='2.4'/%3E%3C/svg%3E");
}
body.c2u .c2u-checklist--arrow .elementor-icon-list-item > .elementor-icon-list-text::before,
body.c2u .c2u-checklist--arrow .elementor-icon-list-item > a::before {
  background-color: var(--c2u-blush);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23087F57' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 12h14M13 6l6 6-6 6'/%3E%3C/svg%3E");
}
body.c2u .c2u-checklist--no .elementor-icon-list-item > .elementor-icon-list-text::before,
body.c2u .c2u-checklist--no .elementor-icon-list-item > a::before {
  background-color: #FBECEC;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23A5262B' stroke-width='3' stroke-linecap='round'%3E%3Cpath d='M6 6l12 12M18 6L6 18'/%3E%3C/svg%3E");
}
body.c2u .c2u-checklist .elementor-icon-list-item > a:hover { color: var(--c2u-primary); text-decoration: underline; }

/* --- Tiles: icon cards --- */
body.c2u .c2u-tile {
  background: var(--c2u-cream);
  border: 1px solid transparent;
  border-radius: var(--c2u-r-lg);
  padding: 1.85rem 1.7rem 2rem;
  height: 100%;
  transition: background-color .18s ease, box-shadow .18s ease, transform .18s ease;
}
body.c2u .c2u-tile:hover { background: #fff; box-shadow: var(--c2u-shadow-lg); transform: translateY(-2px); }
body.c2u .c2u-tile .elementor-image-box-wrapper { text-align: left; }
body.c2u .c2u-tile .elementor-image-box-img { margin: 0 0 1.15rem !important; width: auto !important; float: none !important; }
body.c2u .c2u-tile .elementor-image-box-img img {
  width: 52px; height: 52px;
  padding: 11px;
  background: #fff;
  border-radius: 14px;
  box-shadow: var(--c2u-shadow-sm);
}
body.c2u .c2u-tile .elementor-image-box-title {
  font-family: var(--c2u-font-head);
  font-size: 1.2rem; font-weight: 600; line-height: 1.25;
  color: var(--c2u-ink); margin: 0 0 .45rem;
}
body.c2u .c2u-tile .elementor-image-box-title a { color: inherit; text-decoration: none; }
body.c2u .c2u-tile .elementor-image-box-title a:hover { color: var(--c2u-primary); }
body.c2u .c2u-tile .elementor-image-box-description {
  color: var(--c2u-ink-soft); font-size: .95rem; line-height: 1.65; margin: 0;
}

/* --- Tiles: photo cards. Photographs must never be shrunk to icon size. --- */
body.c2u .c2u-photocard {
  background: #fff;
  border: 1px solid var(--c2u-line);
  border-radius: var(--c2u-r-lg);
  overflow: hidden;
  height: 100%;
  transition: box-shadow .18s ease, transform .18s ease;
}
body.c2u .c2u-photocard:hover { box-shadow: var(--c2u-shadow-lg); transform: translateY(-2px); }
body.c2u .c2u-photocard .elementor-image-box-wrapper { text-align: left; display: block; }
body.c2u .c2u-photocard .elementor-image-box-img {
  margin: 0 !important; width: 100% !important; float: none !important;
}
body.c2u .c2u-photocard .elementor-image-box-img img {
  width: 100%; height: auto; aspect-ratio: 16 / 10;
  object-fit: cover; border-radius: 0; display: block;
}
body.c2u .c2u-photocard .elementor-image-box-content { padding: 1.4rem 1.5rem 1.6rem; }
body.c2u .c2u-photocard .elementor-image-box-title {
  font-family: var(--c2u-font-head);
  font-size: 1.18rem; font-weight: 600; line-height: 1.25;
  color: var(--c2u-ink); margin: 0 0 .45rem;
}
body.c2u .c2u-photocard .elementor-image-box-title a { color: inherit; text-decoration: none; }
body.c2u .c2u-photocard .elementor-image-box-title a:hover { color: var(--c2u-primary); }
body.c2u .c2u-photocard .elementor-image-box-description {
  color: var(--c2u-ink-soft); font-size: .93rem; line-height: 1.65; margin: 0;
}

/* --- Numbered steps --- */
body.c2u .c2u-step-num .elementor-heading-title {
  font-family: var(--c2u-font-head);
  font-size: clamp(2rem, 3.4vw, 2.6rem);
  font-weight: 700; line-height: 1;
  color: var(--c2u-primary);
  letter-spacing: -.02em;
}

/* --- Panels --- */
body.c2u .c2u-panel {
  background: var(--c2u-cream);
  border-radius: var(--c2u-r-lg);
  padding: clamp(1.5rem, 3vw, 2.1rem);
  border: 1px solid var(--c2u-line);
}
body.c2u .c2u-panel h3 { margin-top: 0; font-size: 1.15rem; }
body.c2u .c2u-panel p { color: var(--c2u-ink-soft); font-size: .96rem; }
body.c2u .c2u-panel p strong { color: var(--c2u-ink); }
body.c2u .c2u-panel--blush { background: var(--c2u-blush); border-color: rgba(147,51,184,.14); }
body.c2u .c2u-panel--green { background: var(--c2u-accent-light); border-color: rgba(147,51,184,.16); }

/* --- Images inside the builder --- */
body.c2u .elementor-widget-image img { border-radius: var(--c2u-r-xl); }
body.c2u .c2u-media-tall img { aspect-ratio: 4 / 5; object-fit: cover; width: 100%; }
body.c2u .c2u-media-wide img { aspect-ratio: 16 / 10; object-fit: cover; width: 100%; }
body.c2u .c2u-media-square img { aspect-ratio: 1 / 1; object-fit: cover; width: 100%; }
body.c2u .elementor-widget-google_maps iframe { border-radius: var(--c2u-r-xl); }

/* --- Accordion --- */
body.c2u .elementor-accordion .elementor-accordion-item { border: 0; margin-bottom: .6rem; }
body.c2u .elementor-accordion .elementor-tab-title {
  font-family: var(--c2u-font-body);
  font-weight: 600; font-size: 1.02rem; line-height: 1.5;
  color: var(--c2u-ink);
  background: #fff;
  border: 1px solid var(--c2u-line);
  border-radius: var(--c2u-r);
  padding: 1.05rem 1.3rem;
  transition: background-color .16s ease, border-color .16s ease;
}
body.c2u .elementor-accordion .elementor-tab-title:hover { border-color: var(--c2u-primary); }
body.c2u .elementor-accordion .elementor-tab-title.elementor-active {
  background: var(--c2u-blush);
  border-color: var(--c2u-primary);
  border-radius: var(--c2u-r) var(--c2u-r) 0 0;
}
body.c2u .elementor-accordion .elementor-tab-content {
  background: var(--c2u-blush);
  border: 1px solid var(--c2u-primary);
  border-top: 0;
  border-radius: 0 0 var(--c2u-r) var(--c2u-r);
  color: var(--c2u-ink-soft);
  padding: 0 1.3rem 1.25rem;
}
body.c2u .elementor-accordion .elementor-accordion-icon { color: var(--c2u-primary); }
body.c2u .elementor-accordion .elementor-tab-title span { color: inherit; }

/* --- Sections on dark and brand backgrounds --- */
body.c2u .c2u-on-dark .elementor-heading-title,
body.c2u .c2u-on-dark h2, body.c2u .c2u-on-dark h3 { color: #fff; }
body.c2u .c2u-on-dark .elementor-widget-text-editor,
body.c2u .c2u-on-dark .elementor-widget-text-editor p { color: rgba(255,255,255,.82); }
body.c2u .c2u-on-dark .c2u-checklist .elementor-icon-list-text { color: rgba(255,255,255,.88); }
body.c2u .c2u-on-dark .c2u-checklist .elementor-icon-list-text::before { background-color: rgba(255,255,255,.16); }
body.c2u .c2u-on-dark .c2u-photocard { background: rgba(255,255,255,.05); border-color: rgba(255,255,255,.14); }
body.c2u .c2u-on-dark .c2u-photocard .elementor-image-box-title,
body.c2u .c2u-on-dark .c2u-photocard .elementor-image-box-title a { color: #fff; }
body.c2u .c2u-on-dark .c2u-photocard .elementor-image-box-description { color: rgba(255,255,255,.72); }
body.c2u .c2u-on-dark .c2u-tile { background: rgba(255,255,255,.05); }
body.c2u .c2u-on-dark .c2u-tile:hover { background: rgba(255,255,255,.09); box-shadow: none; }
body.c2u .c2u-on-dark .c2u-tile .elementor-image-box-title { color: #fff; }
body.c2u .c2u-on-dark .c2u-tile .elementor-image-box-description { color: rgba(255,255,255,.72); }
body.c2u .c2u-on-dark .c2u-step-num .elementor-heading-title { color: rgba(255,255,255,.4); }

/* --- Theme chrome link colours, protected from the Elementor kit --- */
body.c2u .c2u-topbar a { color: var(--c2u-ink-soft); }
body.c2u .c2u-topbar a:hover { color: var(--c2u-primary); }
body.c2u .c2u-menu__link { color: var(--c2u-ink); }
body.c2u .c2u-menu__link:hover, body.c2u .c2u-menu__item.is-current > .c2u-menu__link { color: var(--c2u-primary); }
body.c2u .c2u-menu__sublink { color: var(--c2u-ink); }
body.c2u .c2u-menu__sublink:hover { color: var(--c2u-primary); }
body.c2u .c2u-menu__link--toggle,
body.c2u .c2u-menu__toggle {
  appearance: none; border: 0; background-color: transparent;
  font: 500 .945rem/1.3 var(--c2u-font-body);
  color: var(--c2u-ink); cursor: pointer;
  padding: .55rem .72rem; border-radius: 9px;
}
body.c2u .c2u-menu__link--toggle:hover { background-color: var(--c2u-blush); color: var(--c2u-primary); }
body.c2u .c2u-burger { background-color: #fff; padding: 0; }
@media (max-width: 1040px) { body.c2u .c2u-menu__link--toggle { width: 100%; text-align: left; display: flex; justify-content: space-between; align-items: center; font-size: 1.04rem; padding: .95rem .3rem; border-radius: 0; } }

body.c2u a.c2u-btn--primary, body.c2u .c2u-btn--primary { background-color: var(--c2u-primary); color: #fff; }
body.c2u a.c2u-btn--primary:hover, body.c2u .c2u-btn--primary:hover { background-color: var(--c2u-primary-dark); color: #fff; }
body.c2u a.c2u-btn--ghost, body.c2u .c2u-btn--ghost { background-color: #fff; color: var(--c2u-ink); }
body.c2u a.c2u-btn--ghost:hover, body.c2u .c2u-btn--ghost:hover { color: var(--c2u-primary); }
body.c2u a.c2u-btn--light, body.c2u .c2u-btn--light { background-color: #fff; color: var(--c2u-primary); }
body.c2u a.c2u-btn--outline-light, body.c2u .c2u-btn--outline-light { background-color: transparent; color: #fff; }
body.c2u .c2u-form__submit { background-color: var(--c2u-primary); color: #fff; border-radius: var(--c2u-r-sm); padding: .95rem 1.7rem; font: 600 .97rem/1.25 var(--c2u-font-body); }
body.c2u .c2u-form__submit:hover { background-color: var(--c2u-primary-dark); }
body.c2u .c2u-search__btn { background-color: var(--c2u-primary); color: #fff; }

body.c2u .c2u-prefooter a { color: #fff; }
body.c2u .c2u-prefooter .c2u-btn--light { color: var(--c2u-primary); }
body.c2u .c2u-footer a { color: rgba(255,255,255,.78); text-decoration: none; }
body.c2u .c2u-footer a:hover { color: #fff; text-decoration: underline; }
body.c2u .c2u-footer__item a { color: #fff; text-decoration: underline; }
body.c2u .c2u-footer__bar { color: rgba(255,255,255,.72); }
body.c2u .c2u-footer__note { color: rgba(255,255,255,.62); }
body.c2u .c2u-bbb, body.c2u .c2u-bbb:hover { color: #fff; text-decoration: none; }
body.c2u .c2u-bbb__text span { color: rgba(255,255,255,.7); }
body.c2u .c2u-social__link { color: #fff; }
body.c2u .c2u-callbar { color: #fff; text-decoration: none; }
body.c2u .c2u-postcta a:not(.c2u-btn) { color: #fff; }
body.c2u .c2u-card__title a { color: var(--c2u-ink); }
body.c2u .c2u-card__title a:hover { color: var(--c2u-primary); }
body.c2u .c2u-card__cat { color: var(--c2u-primary); }
body.c2u .c2u-post__cat { color: #fff; }
body.c2u .c2u-crumbs a { color: var(--c2u-ink-faint); }
body.c2u .c2u-crumbs a:hover { color: var(--c2u-primary); }
body.c2u .c2u-prose a, body.c2u .c2u-form__privacy a, body.c2u .c2u-consent__links a {
  text-decoration: underline; text-underline-offset: .18em;
}

/* Grid cells must be allowed to shrink below their content width, or a
   four-up row wraps to three-plus-one. */
body.c2u .c2u-gcell { min-width: 0; }
body.c2u .c2u-gcell > .e-con-inner { min-width: 0; }
body.c2u .c2u-split > .e-con-inner > .e-con { min-width: 0; }

/* Cards inside a grid cell fill the cell height so a row stays even. */
body.c2u .c2u-gcell > .e-con-inner > .elementor-widget,
body.c2u .c2u-gcell > .elementor-widget { width: 100%; }
/* Only a card that is alone in its cell stretches. Headings and text keep
   their natural height, otherwise a short column inflates every widget in
   it and the rows stop lining up (the 3-step bug). */
body.c2u .c2u-gcell > .elementor-widget-image-box,
body.c2u .c2u-gcell > .elementor-widget-html:only-child,
body.c2u .c2u-gcell > .e-con-inner > .elementor-widget-image-box,
body.c2u .c2u-gcell > .e-con-inner > .elementor-widget-html:only-child { height: 100%; }
body.c2u .c2u-gcell .elementor-widget-image-box { height: 100%; }
body.c2u .c2u-gcell .elementor-widget-image-box > .elementor-widget-container { height: 100%; }

/* A photo card on a dark section still needs its picture area to read as an
   image slot rather than a hole. */
body.c2u .c2u-on-dark .c2u-photocard .elementor-image-box-img { background: rgba(255,255,255,.06); }

/* The Elementor kit sets a global heading colour, which was overriding the
   white heading on the plum call to action. */
body.c2u .c2u-prefooter__title,
body.c2u .c2u-prefooter h2 { color: #fff; max-width: 22ch; }
body.c2u .c2u-prefooter__text p { color: rgba(255,255,255,.86); }
body.c2u .c2u-postcta h2 { color: #fff; }
body.c2u .c2u-pagehero__title { color: var(--c2u-ink); }
body.c2u .c2u-post__title { color: var(--c2u-ink); }
body.c2u .c2u-footer__title { color: #fff; }
body.c2u .c2u-takeaways__title { color: var(--c2u-accent-dark); }
body.c2u .c2u-404__code { color: var(--c2u-primary); }

/* The BBB badge sits on the dark footer, so its bold text must be light. */
body.c2u .c2u-bbb__text strong,
body.c2u .c2u-footer strong { color: #fff; }
body.c2u .c2u-prefooter strong,
body.c2u .c2u-postcta strong { color: #fff; }
body.c2u .c2u-on-dark strong { color: #fff; }

/* Everything inside the dark footer inherits a light colour by default, so a
   stray span cannot fall back to the body ink. */
body.c2u .c2u-footer,
body.c2u .c2u-footer p,
body.c2u .c2u-footer span,
body.c2u .c2u-footer li { color: rgba(255,255,255,.78); }
body.c2u .c2u-footer__item span { color: rgba(255,255,255,.82); }
body.c2u .c2u-prefooter p,
body.c2u .c2u-prefooter span { color: rgba(255,255,255,.86); }
/* ...but a light button sits on the plum, so its own label keeps the brand
   colour rather than inheriting the light one. */
body.c2u .c2u-prefooter .c2u-btn--light,
body.c2u .c2u-prefooter .c2u-btn--light span,
body.c2u .c2u-prefooter .c2u-btn--light strong { color: var(--c2u-primary); }
body.c2u .c2u-postcta .c2u-btn--light,
body.c2u .c2u-postcta .c2u-btn--light span { color: var(--c2u-primary); }
body.c2u .c2u-postcta p { color: rgba(255,255,255,.86); }

/* --- Directions card ---------------------------------------------------
   Replaces the embedded Google map: no third-party request, no cookie set
   before consent, and it can never render as a grey hole. */
body.c2u .c2u-mapcard {
  container-type: inline-size;
  display: grid;
  grid-template-columns: 1fr;
  border: 1px solid var(--c2u-line);
  border-radius: var(--c2u-r-lg);
  background: #fff;
  overflow: hidden;
}
/* The card sits in a full-width band on one page and in a narrow column on
   another, so it measures itself rather than the viewport. */
@container (min-width: 520px) {
  body.c2u .c2u-mapcard { grid-template-columns: .9fr 1.1fr; align-items: stretch; }
}
body.c2u .c2u-mapcard__art {
  position: relative;
  min-height: 190px;
  background-color: #E4F5EC;
  overflow: hidden;
}
body.c2u .c2u-mapcard__art svg {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  display: block;
}
body.c2u .c2u-mapcard__body {
  padding: 1.75rem 1.7rem 1.85rem;
  display: flex; flex-direction: column; justify-content: center; gap: .55rem;
}
body.c2u .c2u-mapcard__label {
  margin: 0;
  font-size: .76rem; font-weight: 700; letter-spacing: .09em; text-transform: uppercase;
  color: var(--c2u-primary);
}
body.c2u .c2u-mapcard__addr {
  margin: 0 0 .45rem;
  font-family: var(--c2u-font-head);
  font-size: 1.12rem; font-weight: 600; line-height: 1.45;
  color: var(--c2u-ink);
}
body.c2u .c2u-mapcard .c2u-btn { align-self: flex-start; }

/* --- Office panels ----------------------------------------------------- */
body.c2u .c2u-office__links {
  display: flex; flex-wrap: wrap; align-items: center; gap: .4rem 1.1rem;
  margin-bottom: 0;
}
body.c2u .c2u-office__dir {
  position: relative;
  padding-right: 1.05rem;
  font-weight: 600;
  color: var(--c2u-accent-dark);
}
body.c2u .c2u-office__dir::after {
  content: "";
  position: absolute; right: 0; top: .34em;
  width: .72rem; height: .72rem;
  background-repeat: no-repeat; background-position: center; background-size: contain;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23712A8F' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 4h6v6M20 4L10 14M18 14v5a1 1 0 01-1 1H5a1 1 0 01-1-1V7a1 1 0 011-1h5'/%3E%3C/svg%3E");
}

/* Linked checklist items keep the body ink; only the marker is coloured. */
body.c2u .c2u-checklist .elementor-icon-list-item > a,
body.c2u .c2u-checklist .elementor-icon-list-item > a .elementor-icon-list-text { color: var(--c2u-ink); }
body.c2u .c2u-checklist .elementor-icon-list-item > a:hover,
body.c2u .c2u-checklist .elementor-icon-list-item > a:hover .elementor-icon-list-text { color: var(--c2u-primary); }

/* --- Column alignment inside Elementor containers ----------------------
   An Elementor container wraps, so every widget in it is its own flex line,
   and the default align-content then shares any spare height out between
   those lines. In a row of columns that is fatal: the column with the
   shortest paragraph has the most spare height, so its number, heading and
   text each drift down by a different amount and the row stops lining up.
   Packing the lines to the top is what makes columns read as a row. */
body.c2u .c2u-gcell,
body.c2u .c2u-gcell > .e-con-inner,
body.c2u .c2u-split > .e-con-inner > .e-con,
body.c2u .c2u-split > .e-con-inner > .e-con > .e-con-inner { align-content: flex-start; }

/* The same applies to any theme section container: a heading and its lead
   paragraph should sit together, not drift apart to fill the band. */
body.c2u .e-con.e-parent > .e-con-inner { align-content: flex-start; }

/* ── Trust strip ─────────────────────────────────────────── */
body.c2u .c2u-strip {
  background: #fff;
  border-top: 1px solid var(--c2u-line);
  border-bottom: 1px solid var(--c2u-line);
}
body.c2u .c2u-strip .e-con-inner {
  display: flex;
  flex-wrap: wrap;
  gap: 0;
  padding: 0;
}
body.c2u .c2u-strip__item {
  display: flex;
  align-items: flex-start;
  gap: 14px;
  padding: 36px 28px;
  flex: 1 1 240px;
  border-right: 1px solid var(--c2u-line);
}
body.c2u .c2u-strip__item:last-child { border-right: none; }
body.c2u .c2u-strip__icon {
  flex: none;
  width: 40px;
  height: 40px;
  border-radius: 11px;
  background: var(--c2u-blush);
  display: grid;
  place-items: center;
  color: var(--c2u-primary);
}
body.c2u .c2u-strip__icon svg { width: 20px; height: 20px; }
body.c2u .c2u-strip__body { display: flex; flex-direction: column; gap: 3px; }
body.c2u .c2u-strip__body b {
  display: block;
  font: 600 14.5px/1.3 var(--c2u-font-body);
  color: var(--c2u-ink);
}
body.c2u .c2u-strip__body span {
  font-size: 13.5px;
  color: var(--c2u-ink-soft);
  line-height: 1.5;
}
@media (max-width: 767px) {
  body.c2u .c2u-strip__item {
    flex: 1 1 48%;
    border-right: none;
    border-bottom: 1px solid var(--c2u-line);
    padding: 24px 20px;
  }
  body.c2u .c2u-strip__item:nth-child(odd) { border-right: 1px solid var(--c2u-line); }
  body.c2u .c2u-strip__item:last-child,
  body.c2u .c2u-strip__item:nth-last-child(2):nth-child(odd) { border-bottom: none; }
}

/* ── Alignment foundation (v2.2) ─────────────────────────────
   Elementor gives every container a 10px default padding. That
   pushed buttons, cards and step numbers 10px to the right of the
   headings above them. Set the default to zero; any padding the
   builder sets explicitly still wins because it is more specific. */
body.c2u {
  --container-default-padding-top: 0px;
  --container-default-padding-right: 0px;
  --container-default-padding-bottom: 0px;
  --container-default-padding-left: 0px;
}
/* Spare height must never be shared between wrapped lines. */
body.c2u .e-con,
body.c2u .e-con > .e-con-inner { align-content: flex-start; }

/* ── Numbered steps ─────────────────────────────────────────── */
body.c2u .c2u-gcell:has(.c2u-stat-num) { gap: 10px; }
body.c2u .c2u-stat-num .elementor-heading-title {
  display: inline-grid;
  place-items: center;
  width: 46px;
  height: 46px;
  margin-bottom: 8px;
  border-radius: 50%;
  background: var(--c2u-blush);
  color: var(--c2u-primary);
  font: 600 17px/1 var(--c2u-font-head);
  letter-spacing: 0;
}

/* ── Footer: warm peach, in the approved palette (v2.2) ───────
   The first build used a charcoal footer that was never part of the
   Warm & Human direction. The plum call-to-action band above it now
   sits on peach, and the page ends light like it began. */
body.c2u .c2u-footer { background: var(--c2u-peach); color: var(--c2u-ink-soft); border-top: 0; }
body.c2u .c2u-footer,
body.c2u .c2u-footer p,
body.c2u .c2u-footer span,
body.c2u .c2u-footer li,
body.c2u .c2u-footer__blurb,
body.c2u .c2u-footer__bar,
body.c2u .c2u-footer__note,
body.c2u .c2u-footer__item span { color: var(--c2u-ink-soft); }
body.c2u .c2u-footer strong,
body.c2u .c2u-footer__item strong,
body.c2u .c2u-bbb__text strong { color: var(--c2u-ink); }
body.c2u .c2u-footer__title { color: var(--c2u-primary); font-family: var(--c2u-font-head); }
body.c2u .c2u-footer a { color: var(--c2u-ink); text-decoration: none; }
body.c2u .c2u-footer a:hover { color: var(--c2u-primary); text-decoration: underline; }
body.c2u .c2u-footer__item a { color: var(--c2u-ink); text-decoration: underline; text-underline-offset: 3px; }
body.c2u .c2u-footer__item .c2u-icon { color: var(--c2u-accent); }
body.c2u .c2u-footer .c2u-logo__img { background: #fff; box-shadow: 0 1px 0 rgba(42,36,34,.06); }
body.c2u .c2u-social__link { background: #fff; color: var(--c2u-primary); }
body.c2u .c2u-social__link:hover { background: var(--c2u-primary); color: #fff; text-decoration: none; }
body.c2u .c2u-bbb, body.c2u .c2u-bbb:hover { background: #fff; border: 1px solid var(--c2u-line); color: var(--c2u-ink); text-decoration: none; }
body.c2u .c2u-bbb__text span { color: var(--c2u-ink-soft); }
body.c2u .c2u-footer__bar { border-top: 1px solid rgba(42,36,34,.12); }
body.c2u .c2u-footer .c2u-bbb__mark,
body.c2u .c2u-footer .c2u-bbb__mark span { color: #fff; }

/* ── Cards on tinted sections (v2.2) ──────────────────────────
   A cream card on a cream section disappears, and its padding then
   reads as the icon being indented. On any tinted section the card
   turns white with a hairline border. */
body.c2u .c2u-on-tint .c2u-tile,
body.c2u .c2u-on-tint .c2u-photocard { background: #fff; border-color: var(--c2u-line); }
body.c2u .c2u-on-tint .c2u-tile:hover { border-color: transparent; }
body.c2u .c2u-on-tint .c2u-tile .elementor-image-box-img img {
  width: 52px; height: 52px; padding: 0; background: transparent; box-shadow: none; border-radius: 0;
}

/* ── One grid for the whole site (v2.2) ───────────────────────
   Header, footer and blog pages sat on a 1152px column starting at
   144px; Elementor pages sat on a 1200px column starting at 120px,
   and the Home hero at 140px. Everything now shares one left edge:
   1200px of content, with the same side gutter everywhere. */
:root { --c2u-wrap: 1288px; }
body.c2u .e-con.e-parent { padding-inline: var(--c2u-gutter); }

/* ── Blog intro: left aligned with the cards below it ───────── */
body.c2u .c2u-blogintro { max-width: var(--c2u-wrap); padding-block: 3.25rem 0; }
body.c2u .c2u-blogintro > * { max-width: 46rem; margin-inline: 0; }

/* ── Blog sidebar ───────────────────────────────────────────── */
body.c2u .c2u-side { display: grid; gap: 1.25rem; }
body.c2u .c2u-side__card { background: var(--c2u-cream); border: 1px solid var(--c2u-line); border-radius: var(--c2u-r-lg); padding: 1.5rem 1.5rem 1.6rem; }
body.c2u .c2u-side__title { font: 600 1.15rem/1.25 var(--c2u-font-head); color: var(--c2u-ink); margin: 0 0 .85rem; }
body.c2u .c2u-side__card p { font-size: .95rem; color: var(--c2u-ink-soft); margin: 0 0 1.1rem; }
body.c2u .c2u-side__card--cta { background: var(--c2u-primary); border-color: var(--c2u-primary); }
body.c2u .c2u-side__card--cta .c2u-side__title { color: #fff; }
body.c2u .c2u-side__card--cta p { color: rgba(255,255,255,.88); }
body.c2u .c2u-side__card--cta .c2u-btn--light,
body.c2u .c2u-side__card--cta .c2u-btn--light span { color: var(--c2u-primary); }
body.c2u .c2u-btn--block { display: flex; justify-content: center; width: 100%; }
body.c2u .c2u-side__link { display: inline-block; margin-top: .9rem; color: #fff; font-size: .9rem; text-decoration: underline; text-underline-offset: 3px; }
body.c2u .c2u-side__link:hover { color: #fff; text-decoration-thickness: 2px; }
body.c2u .c2u-side__list { list-style: none; margin: 0; padding: 0; }
body.c2u .c2u-side__list li + li { border-top: 1px solid var(--c2u-line); }
body.c2u .c2u-side__list a { display: block; padding: .7rem 0; color: var(--c2u-ink); font-size: .95rem; line-height: 1.4; text-decoration: none; }
body.c2u .c2u-side__list a:hover { color: var(--c2u-primary); }
body.c2u .c2u-side__tags { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: .5rem; }
body.c2u .c2u-side__tags a { display: block; padding: .4rem .85rem; background: #fff; border: 1px solid var(--c2u-line); border-radius: 99px; font-size: .85rem; color: var(--c2u-primary); text-decoration: none; }
body.c2u .c2u-side__tags a:hover { background: var(--c2u-primary); color: #fff; }

/* ── Trust strip: sit on the page grid (v2.2) ───────────────── */
body.c2u .c2u-strip__item:first-child { padding-left: 0; }
body.c2u .c2u-strip__item:last-child { padding-right: 0; }
@media (max-width: 767px) {
  body.c2u .c2u-strip__item,
  body.c2u .c2u-strip__item:nth-child(odd) {
    flex: 1 1 100%;
    padding: 18px 0;
    border-right: 0;
    border-bottom: 1px solid var(--c2u-line);
  }
  body.c2u .c2u-strip__item:last-child,
  body.c2u .c2u-strip__item:nth-last-child(2):nth-child(odd) { border-bottom: 0; }
  body.c2u .c2u-strip.e-con.e-parent { padding-block: 10px; }
}

/* The directions card is a size container, which has no width of its own;
   without this it collapsed to nothing inside a shrink-wrapping phone cell. */
body.c2u .c2u-mapcard,
body.c2u .elementor-widget-html:has(.c2u-mapcard),
body.c2u .elementor-widget-html:has(.c2u-mapcard) > .elementor-widget-container { width: 100%; }

/* ── Prose blocks: heading left, text right (v2.3) ────────────
   A heading followed by paragraphs used to sit in a narrow column
   hugging the left edge, leaving the right 40% of the page empty. On
   wide screens the heading now takes the left column and the text the
   right, so the section fills the grid and reads as an editorial layout.
   Below 900px it stacks as before. */
@media (min-width: 900px) {
  body.c2u .c2u-prose-block:has(> .elementor-widget-heading:first-child):has(> :nth-child(2)) {
    display: grid;
    grid-template-columns: minmax(0, 4fr) minmax(0, 7fr);
    column-gap: 72px;
    row-gap: 0;
    align-items: start;
    width: 100%;
    max-width: none;
    margin: 0;
  }
  body.c2u .c2u-prose-block:has(> .elementor-widget-heading:first-child):has(> :nth-child(2)) > * { grid-column: 2; margin: 0 0 1.1rem; }
  body.c2u .c2u-prose-block:has(> .elementor-widget-heading:first-child):has(> :nth-child(2)) > :first-child {
    grid-column: 1; grid-row: 1 / span 8; margin: 0; position: sticky; top: 110px;
  }
}

/* ── "Not sure what you need?" card in the services grid ───── */
body.c2u .c2u-ctacard {
  height: 100%; box-sizing: border-box;
  display: flex; flex-direction: column; align-items: flex-start; justify-content: center; gap: .9rem;
  background: var(--c2u-primary); color: #fff;
  border-radius: var(--c2u-r-lg); padding: 1.85rem 1.7rem 2rem;
}
body.c2u .c2u-ctacard h3 { font: 600 1.35rem/1.2 var(--c2u-font-head); color: #fff; margin: 0; }
body.c2u .c2u-ctacard p { color: rgba(255,255,255,.9); font-size: .95rem; line-height: 1.6; margin: 0; }
body.c2u .c2u-ctacard .c2u-btn--light,
body.c2u .c2u-ctacard .c2u-btn--light span { color: var(--c2u-primary); }

/* Headings and text inside a grid cell (Our mission / Our vision and the
   like) were touching. A small default gap; single-widget cards are
   unaffected because there is nothing to separate. */
body.c2u .c2u-gcell { gap: .6rem; }

/* ============================================================
   v3 design
   A bolder, more confident layer: leaf-shaped photographs, an
   overlapping feature bar, floating info cards, a deep plum band
   and pill buttons. Same brand colours, new structure.
   ============================================================ */

:root { --c2u-night: #2A1240; --c2u-night-2: #3B1B5A; }

/* Pill buttons everywhere */
body.c2u .elementor-button,
body.c2u .c2u-btn { border-radius: 999px; }
body.c2u .elementor-size-lg { padding: 1.05rem 2.15rem; }

/* Eyebrows get a small dot */
body.c2u .c2u-eyebrow .elementor-heading-title::before {
  content: ""; display: inline-block; width: 7px; height: 7px; border-radius: 50%;
  background: currentColor; margin-right: .55rem; vertical-align: .08em;
}

/* Section headings a touch larger and tighter */
body.c2u .e-con.e-parent h2.elementor-heading-title {
  font-size: clamp(1.85rem, 3.3vw, 2.65rem); line-height: 1.12; letter-spacing: -.018em;
}

/* ---- Floating info cards ---- */
body.c2u .c2u-hero-media { position: relative; width: 100%; }
body.c2u .c2u-fw.elementor-widget { position: absolute; z-index: 4; width: max-content !important; max-width: calc(100% - 24px); margin: 0; }
body.c2u .c2u-float {
  display: flex; align-items: center; gap: .8rem;
  background: #fff; border-radius: 20px; padding: .8rem 1.15rem .8rem .8rem;
  box-shadow: 0 22px 44px -22px rgba(46, 26, 48, .5); border: 1px solid var(--c2u-line-soft);
  text-align: left;
}
body.c2u .c2u-float__ico {
  flex: none; width: 46px; height: 46px; border-radius: 50%;
  display: grid; place-items: center; background: var(--c2u-primary); color: #fff;
}
body.c2u .c2u-float__ico .c2u-icon { width: 22px; height: 22px; }
body.c2u .c2u-float__ico--jade { background: var(--c2u-accent); }
body.c2u .c2u-float__txt { display: flex; flex-direction: column; line-height: 1.25; }
body.c2u .c2u-float__txt small { font-size: .74rem; color: var(--c2u-ink-faint); }
body.c2u .c2u-float__txt b { font-size: .96rem; color: var(--c2u-ink); font-weight: 650; }
body.c2u .c2u-float__txt a { font: 700 1.2rem/1.2 var(--c2u-font-head); color: var(--c2u-primary); text-decoration: none; }
body.c2u .c2u-fw--call { left: -26px; bottom: 44px; }
body.c2u .c2u-fw--badge { right: -10px; top: 46px; }
body.c2u .c2u-fw--office { left: -14px; top: 34px; }
body.c2u .c2u-fw--night { left: -26px; bottom: 44px; }
body.c2u .c2u-fw--faq { left: -22px; bottom: 36px; }

/* ---- 1. Hero ---- */
body.c2u .c2u-hero--v3.e-con.e-parent {
  background:
    radial-gradient(55% 75% at 100% 0%, #F1E0FA 0%, rgba(243, 228, 241, 0) 70%),
    radial-gradient(45% 55% at 0% 100%, #DDF3E8 0%, rgba(229, 241, 234, 0) 70%),
    var(--c2u-cream);
}
body.c2u .c2u-hero--v3 h1.elementor-heading-title {
  font-size: clamp(2.35rem, 4.5vw, 4rem); line-height: 1.03; letter-spacing: -.028em; font-weight: 600;
}
body.c2u .c2u-hero--v3 h1 em { font-style: italic; font-weight: 500; color: var(--c2u-primary); }
body.c2u .c2u-hero-lead .elementor-widget-container { font-size: 1.14rem; line-height: 1.7; max-width: 35em; }
body.c2u .c2u-ticks { list-style: none; margin: 1.5rem 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: .6rem 1.7rem; }
body.c2u .c2u-ticks li { display: flex; align-items: center; gap: .5rem; font-size: .92rem; font-weight: 600; color: var(--c2u-ink); }
body.c2u .c2u-ticks .c2u-icon { width: 20px; height: 20px; color: var(--c2u-accent); }

body.c2u .c2u-hero-media > .elementor-widget-image { position: relative; z-index: 1; width: 100%; }
body.c2u .c2u-hero-media > .elementor-widget-image::before {
  content: ""; position: absolute; z-index: -1; inset: 26px -20px -22px 34px;
  border-radius: 40px 170px 40px 170px; background: var(--c2u-primary-light); transform: rotate(2.5deg);
}
body.c2u .c2u-hero-img img,
body.c2u .c2u-faq-img img,
body.c2u .c2u-night-img img { width: 100%; object-fit: cover; box-shadow: none; display: block; }
body.c2u .c2u-hero-img img { aspect-ratio: 5 / 5.8; border-radius: 40px 170px 40px 170px; }
body.c2u .c2u-night-img img { aspect-ratio: 5 / 5.4; border-radius: 170px 40px 170px 40px; }
body.c2u .c2u-faq-img img { aspect-ratio: 4 / 4.8; border-radius: 40px 40px 170px 40px; }
body.c2u .c2u-night-media > .elementor-widget-image::before { background: rgba(255, 255, 255, .08); border-radius: 170px 40px 170px 40px; transform: rotate(-2.5deg); }

/* ---- 2. Feature bar ---- */
body.c2u .c2u-fbar.e-con.e-parent { margin-top: -82px; position: relative; z-index: 5; padding-block: 0; background: none; }
body.c2u .c2u-fcard {
  display: flex; align-items: center; gap: 1rem; height: 100%;
  background: #fff; border: 1px solid var(--c2u-line-soft); border-radius: 24px; padding: 1.5rem 1.6rem;
  box-shadow: 0 26px 54px -30px rgba(46, 26, 48, .55);
}
body.c2u .c2u-fcard__ico {
  flex: none; width: 54px; height: 54px; border-radius: 18px; display: grid; place-items: center;
  background: var(--c2u-primary-light); color: var(--c2u-primary);
}
body.c2u .c2u-fcard__ico .c2u-icon { width: 26px; height: 26px; }
body.c2u .c2u-fcard__body { display: flex; flex-direction: column; line-height: 1.35; }
body.c2u .c2u-fcard__body b { font: 600 1.08rem/1.25 var(--c2u-font-head); color: var(--c2u-ink); }
body.c2u .c2u-fcard__body span { font-size: .9rem; color: var(--c2u-ink-soft); margin-top: .15rem; }

/* ---- 3. About collage ---- */
body.c2u .c2u-collage { position: relative; width: 100%; padding-bottom: 14% !important; }
body.c2u .c2u-collage__a.elementor-widget { width: 80%; }
body.c2u .c2u-collage__a img { width: 100%; aspect-ratio: 4 / 4.5; object-fit: cover; border-radius: 40px 150px 40px 40px; box-shadow: none; display: block; }
body.c2u .c2u-collage__b.elementor-widget { position: absolute; right: 0; bottom: 0; width: 48%; z-index: 2; }
body.c2u .c2u-collage__b img {
  width: 100%; aspect-ratio: 1 / 1; object-fit: cover; border-radius: 40px 40px 40px 120px;
  border: 8px solid #fff; box-shadow: 0 24px 48px -26px rgba(46, 26, 48, .5); display: block;
}
body.c2u .c2u-mini { list-style: none; margin: .4rem 0 .4rem; padding: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 1.1rem 1.5rem; }
body.c2u .c2u-mini li { display: flex; gap: .8rem; align-items: flex-start; }
body.c2u .c2u-mini__ico { flex: none; width: 44px; height: 44px; border-radius: 50%; display: grid; place-items: center; background: var(--c2u-accent-light); color: var(--c2u-accent); }
body.c2u .c2u-mini__ico .c2u-icon { width: 21px; height: 21px; }
body.c2u .c2u-mini b { display: block; font-size: .98rem; color: var(--c2u-ink); font-weight: 650; line-height: 1.3; }
body.c2u .c2u-mini li > span:last-child { font-size: .88rem; color: var(--c2u-ink-soft); line-height: 1.45; }

/* ---- 4. Services ---- */
body.c2u .c2u-svc3 .c2u-tile {
  background: #fff; border: 1px solid var(--c2u-line); border-radius: 26px; padding: 2rem 1.9rem 1.8rem; position: relative;
}
body.c2u .c2u-svc3 .c2u-tile:hover { border-color: var(--c2u-primary); box-shadow: 0 26px 50px -30px rgba(46, 26, 48, .5); transform: translateY(-3px); }
body.c2u .c2u-svc3 .c2u-tile .elementor-image-box-img img {
  width: 64px; height: 64px; padding: 15px; border-radius: 20px; background: var(--c2u-primary-light); box-shadow: none;
}
body.c2u .c2u-svc3 .c2u-tile .elementor-image-box-title { font-size: 1.32rem; }
body.c2u .c2u-svc3 .c2u-tile .elementor-image-box-description { font-size: .96rem; }
body.c2u .c2u-svc3 .c2u-tile .elementor-image-box-content::after {
  content: ""; display: block; width: 42px; height: 42px; margin-top: 1.2rem; border-radius: 50%;
  background: var(--c2u-primary-light) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23087F57' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14M13 6l6 6-6 6'/%3E%3C/svg%3E") center / 20px no-repeat;
  transition: background-color .18s ease;
}
body.c2u .c2u-svc3 .c2u-tile:hover .elementor-image-box-content::after {
  background-color: var(--c2u-primary);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14M13 6l6 6-6 6'/%3E%3C/svg%3E");
}
body.c2u .c2u-headrow > .e-con-inner > .e-con:last-child { gap: 1.1rem; align-items: flex-start; }

/* ---- 5. Deep plum band ---- */
body.c2u .c2u-night.e-con.e-parent { position: relative; overflow: hidden; background-color: var(--c2u-night); }
body.c2u .c2u-night.e-con.e-parent::after {
  content: ""; position: absolute; right: -180px; top: -200px; width: 640px; height: 640px; border-radius: 50%;
  background: radial-gradient(circle, rgba(147, 51, 184, .6), rgba(147, 51, 184, 0) 68%); pointer-events: none;
}
body.c2u .c2u-night > .e-con-inner { position: relative; z-index: 1; }
body.c2u .c2u-night .c2u-checklist .elementor-icon-list-text::before { background-color: rgba(255, 255, 255, .16); }

/* ---- 6. Why families choose us ---- */
body.c2u .c2u-why-list > .elementor-widget { width: 100%; }
body.c2u .c2u-why-list .c2u-tile { background: var(--c2u-cream); border-radius: 24px; padding: 1.6rem 1.7rem; height: auto; }
body.c2u .c2u-why-list .c2u-tile:hover { transform: none; box-shadow: none; background: var(--c2u-cream); }
body.c2u .c2u-why-list .c2u-tile .elementor-image-box-wrapper { display: flex; gap: 1.3rem; align-items: flex-start; }
body.c2u .c2u-why-list .c2u-tile .elementor-image-box-img { margin: 0 !important; flex: none; }
body.c2u .c2u-why-list .c2u-tile .elementor-image-box-img img { width: 58px; height: 58px; padding: 13px; border-radius: 50%; background: #fff; }

/* ---- 7. Steps ---- */
@media (min-width: 1025px) {
  body.c2u .c2u-steps3 .c2u-gcell { position: relative; }
  body.c2u .c2u-steps3 .c2u-gcell:not(:last-child)::after {
    content: ""; position: absolute; top: 23px; left: 66px; right: -20px; border-top: 2px dashed #D9BFEA; pointer-events: none;
  }
}

/* ---- 9. Booking form ---- */
body.c2u .c2u-formcard.e-con {
  background: #fff; border-radius: 30px; padding: clamp(1.4rem, 3vw, 2.4rem);
  box-shadow: 0 34px 70px -40px rgba(46, 26, 48, .6); border: 1px solid var(--c2u-line-soft); width: 100%;
}
body.c2u .c2u-callrow {
  display: inline-flex; align-items: center; gap: .9rem; margin-top: .6rem; text-decoration: none;
  background: #fff; border-radius: 99px; padding: .6rem 1.5rem .6rem .6rem; box-shadow: var(--c2u-shadow);
}
body.c2u .c2u-callrow__ico { width: 46px; height: 46px; border-radius: 50%; display: grid; place-items: center; background: var(--c2u-primary); color: #fff; }
body.c2u .c2u-callrow__ico .c2u-icon { width: 22px; height: 22px; }
body.c2u .c2u-callrow span { display: flex; flex-direction: column; line-height: 1.25; }
body.c2u .c2u-callrow small { font-size: .74rem; color: var(--c2u-ink-faint); }
body.c2u .c2u-callrow b { font: 700 1.2rem/1.2 var(--c2u-font-head); color: var(--c2u-primary); }

/* ---- 11. Latest guides ---- */
body.c2u .elementor-widget-shortcode { width: 100%; }
body.c2u .c2u-latest { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; }
body.c2u .c2u-latest .c2u-card { border-radius: 26px; }
body.c2u .c2u-latest .c2u-card__title { font-size: 1.22rem; }

/* ---- Inner page banner ---- */
body.c2u .c2u-pagehero.e-con.e-parent { position: relative; overflow: hidden; background-color: var(--c2u-night); }
body.c2u .c2u-pagehero.e-con.e-parent::after {
  content: ""; position: absolute; right: -140px; top: -180px; width: 560px; height: 560px; border-radius: 50%;
  background: radial-gradient(circle, rgba(147, 51, 184, .65), rgba(147, 51, 184, 0) 68%); pointer-events: none;
}
body.c2u .c2u-pagehero > .e-con-inner { position: relative; z-index: 1; }
body.c2u .c2u-pagehero h1.elementor-heading-title { color: #fff; font-size: clamp(2.2rem, 4.2vw, 3.4rem); line-height: 1.07; letter-spacing: -.022em; }
body.c2u .c2u-pagehero .elementor-widget-text-editor p { color: rgba(255, 255, 255, .84); font-size: 1.12rem; }
body.c2u .c2u-pagehero .c2u-crumbs,
body.c2u .c2u-pagehero .c2u-crumbs a { color: rgba(255, 255, 255, .72); }
body.c2u .c2u-pagehero .c2u-crumbs a:hover { color: #fff; }
body.c2u .c2u-pagehero .c2u-crumbs [aria-current] { color: #fff; }

/* Service page hero image shape */
body.c2u .c2u-hero-svc .elementor-widget-image img { border-radius: 40px 150px 40px 150px; box-shadow: none; aspect-ratio: 5 / 4.4; object-fit: cover; width: 100%; }

/* Photo cards, a little rounder */
body.c2u .c2u-photocard { border-radius: 26px; }

/* ---- Responsive ---- */
@media (max-width: 1024px) {
  body.c2u .c2u-latest { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  body.c2u .c2u-fw--call, body.c2u .c2u-fw--night, body.c2u .c2u-fw--faq, body.c2u .c2u-fw--office { left: 8px; }
  body.c2u .c2u-fw--badge { right: 8px; }
}
@media (max-width: 767px) {
  body.c2u .c2u-fbar.e-con.e-parent { margin-top: -64px; }
  body.c2u .c2u-hero-img img { aspect-ratio: 5 / 5.2; border-radius: 28px 100px 28px 100px; }
  body.c2u .c2u-night-img img { border-radius: 100px 28px 100px 28px; aspect-ratio: 5 / 4.6; }
  body.c2u .c2u-faq-img img { border-radius: 28px 28px 100px 28px; }
  body.c2u .c2u-collage__a img { border-radius: 28px 100px 28px 28px; }
  body.c2u .c2u-collage__b img { border-radius: 28px 28px 28px 80px; border-width: 6px; }
  body.c2u .c2u-hero-media > .elementor-widget-image::before { inset: 18px -8px -14px 16px; border-radius: 28px 100px 28px 100px; }
  body.c2u .c2u-fw.elementor-widget { transform: scale(.9); transform-origin: left bottom; }
  body.c2u .c2u-fw--badge.elementor-widget { transform-origin: right top; }
  body.c2u .c2u-mini { grid-template-columns: 1fr; }
  body.c2u .c2u-latest { grid-template-columns: 1fr; }
  body.c2u .c2u-fcard { padding: 1.2rem 1.25rem; }
  body.c2u .c2u-why-list .c2u-tile .elementor-image-box-wrapper { flex-direction: column; gap: .9rem; }
}

/* Booking section: keep the text beside the tall form in view */
@media (min-width: 900px) {
  body.c2u .c2u-book3 .c2u-split > .e-con-inner > .e-con:first-child { position: sticky; top: 120px; align-self: flex-start; }
}
body.c2u .c2u-headrow--end > .e-con-inner > .e-con:last-child { align-items: flex-end; }
@media (max-width: 767px) { body.c2u .c2u-headrow--end > .e-con-inner > .e-con:last-child { align-items: flex-start; } }

/* Template-rendered page banner (blog, articles, archives): same deep plum band */
body.c2u section.c2u-pagehero {
  position: relative; overflow: hidden; background: var(--c2u-night);
  padding-block: clamp(2.75rem, 6vw, 4.75rem);
}
body.c2u section.c2u-pagehero::after {
  content: ""; position: absolute; right: -140px; top: -180px; width: 560px; height: 560px; border-radius: 50%;
  background: radial-gradient(circle, rgba(147, 51, 184, .65), rgba(147, 51, 184, 0) 68%); pointer-events: none;
}
body.c2u section.c2u-pagehero > .c2u-wrap { position: relative; z-index: 1; }
body.c2u section.c2u-pagehero .c2u-pagehero__title { color: #fff; max-width: 24ch; }
body.c2u section.c2u-pagehero .c2u-pagehero__sub { color: rgba(255, 255, 255, .84); }

/* v3.1 palette touches: orchid highlights, mint and orchid plates */
body.c2u .c2u-hero--v3 h1 em { color: var(--c2u-accent); }
body.c2u .c2u-hero-media > .elementor-widget-image::before { background: #EFD9F8; }
body.c2u .c2u-fw .c2u-float__ico { background: var(--c2u-primary); }
body.c2u .c2u-fw .c2u-float__ico--jade { background: var(--c2u-accent); }
body.c2u .c2u-head--center { align-self: center; margin-inline: auto; }
body.c2u .c2u-night-media > .elementor-widget-image::before { background: rgba(255, 255, 255, .09); }
body.c2u .c2u-on-dark .c2u-checklist:not(.c2u-checklist--pin):not(.c2u-checklist--no) .elementor-icon-list-text::before {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23A7F0CE' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.2 4.2L19 7'/%3E%3C/svg%3E");
}

/* ============================================================
   v3.1: BBB rating badge and reviews
   ============================================================ */
body.c2u .c2u-bbb__grade {
  margin-left: .2rem; font: 700 1.35rem/1 var(--c2u-font-head); color: #0C5EA8;
  background: #E8F1FA; border-radius: 10px; padding: .4rem .6rem;
}
body.c2u .c2u-bbb--large { padding: .9rem 1.2rem; gap: .9rem; border-radius: 18px; box-shadow: var(--c2u-shadow); }
body.c2u .c2u-bbb--large .c2u-bbb__mark { font-size: 1.5rem; padding: .35rem .7rem; border-radius: 8px; }
body.c2u .c2u-bbb--large .c2u-bbb__text strong { font-size: 1rem; }
body.c2u .c2u-bbb--large .c2u-bbb__text span { font-size: .85rem; }
body.c2u .c2u-bbb--large .c2u-bbb__grade { font-size: 2rem; padding: .45rem .8rem; }
body.c2u .c2u-bbb-seal img { display: block; height: 64px; width: auto; }
body.c2u .c2u-bbb-seal--large img { height: 96px; }

body.c2u .c2u-rev { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); gap: 2rem; align-items: stretch; width: 100%; }
body.c2u .c2u-rev--solo { grid-template-columns: minmax(0, 1fr); max-width: 560px; margin-inline: auto; }
body.c2u .c2u-rev__bbb, body.c2u .c2u-rev__google {
  background: #fff; border: 1px solid var(--c2u-line); border-radius: 28px; padding: clamp(1.4rem, 3vw, 2.2rem);
}
body.c2u .c2u-rev__bbb { display: flex; flex-direction: column; align-items: flex-start; justify-content: center; gap: 1rem; }
body.c2u .c2u-rev__bbb p { margin: 0; font-size: .95rem; color: var(--c2u-ink-soft); }
body.c2u .c2u-g { display: flex; flex-direction: column; gap: 1.2rem; height: 100%; }
body.c2u .c2u-g__head { display: flex; align-items: center; gap: 1rem; }
body.c2u .c2u-g__score { font: 700 3rem/1 var(--c2u-font-head); color: var(--c2u-ink); }
body.c2u .c2u-g__count { display: block; font-size: .9rem; color: var(--c2u-ink-soft); margin-top: .15rem; }
body.c2u .c2u-stars { display: inline-flex; gap: 2px; }
body.c2u .c2u-g__list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; }
body.c2u .c2u-g__card { margin: 0; background: var(--c2u-cream); border-radius: 20px; padding: 1.15rem 1.2rem; display: flex; flex-direction: column; gap: .6rem; }
body.c2u .c2u-g__card blockquote { margin: 0; font-size: .93rem; line-height: 1.6; color: var(--c2u-ink); flex: 1; }
body.c2u .c2u-g__card figcaption { font-size: .85rem; color: var(--c2u-ink-soft); display: flex; flex-direction: column; }
body.c2u .c2u-g__card figcaption b { color: var(--c2u-ink); }
body.c2u .c2u-g__actions { display: flex; flex-wrap: wrap; gap: .7rem; margin-top: auto; }
body.c2u .c2u-gwidget { width: 100%; }
@media (max-width: 1024px) {
  body.c2u .c2u-rev { grid-template-columns: minmax(0, 1fr); }
  body.c2u .c2u-g__list { grid-template-columns: minmax(0, 1fr); }
}

/* v3.2: page photo panel (shown until a real photo is chosen for the page) */
body.c2u .c2u-photo-panel { width: 100%; }
body.c2u .c2u-photo-panel__in { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 18px; min-height: 340px; padding: 36px 24px; text-align: center; border-radius: 40px 150px 40px 150px; background: linear-gradient(145deg, #E8F6EF 0%, #F6EAFB 100%); border: 1px solid var(--c2u-line-soft, #F0EAF4); }
body.c2u .c2u-photo-panel__in img { width: 96px; height: 96px; }
body.c2u .c2u-photo-panel__in span { font-family: var(--c2u-font-head, "Source Serif 4", Georgia, serif); font-size: 1.35rem; font-weight: 600; color: #241B2C; }
body.c2u .c2u-faq-img.c2u-photo-panel .c2u-photo-panel__in { min-height: 420px; border-radius: 40px 40px 170px 40px; }
body.c2u .c2u-media-wide.c2u-photo-panel .c2u-photo-panel__in { min-height: 220px; border-radius: 28px; }
@media (max-width: 767px) { body.c2u .c2u-photo-panel__in { min-height: 220px; border-radius: 28px 90px 28px 90px; } }
