/* =====================================================================
   Cheshire Dental Centre — brand overrides for the Oralic template
   Loaded AFTER Content/style.css. This file ONLY re-skins the template
   (colour, logo, small content-fit fixes). It does NOT change the
   template layout, grids, components, animations or responsive system.

   CLIENT COLOUR DIRECTION
     Warm cream        #F8F2E4  — main light page background / light surfaces
     Walnut brown      #7C4A20  — dark contrast sections, footer, strong accents
     Primary bronze    #926F34  — buttons, icons, borders, active/branded details
     Bronze highlight  #A88448  — hover states, lighter accents, dividers
   Supporting accessible shades are derived below; the four brand colours
   stay the recognisable foundation.
   ===================================================================== */

/* ---------- 1. Brand palette ---------- */
:root {
  /* client brand foundation */
  --color-cream: #F8F2E4;
  --color-walnut: #7C4A20;
  --color-bronze: #926F34;
  --color-bronze-highlight: #A88448;

  /* derived, accessibility-checked supporting shades */
  --color-ink: #3F2E1A;          /* body text on cream  ~11:1  */
  --color-cream-2: #F1E7D2;      /* deeper cream — subtle tints / hovers on light */
  --color-cream-3: #EADFC6;      /* warm surface for chips / pills */
  --color-walnut-deep: #58371A;  /* richer walnut for dark scrims / active */
  --color-line: #E6D8BE;         /* warm hairline on cream */
  --color-line-strong: #D9C7A3;
  --color-bronze-soft: rgba(146,111,52,.12);
  --color-on-dark: #F8F2E4;      /* cream text/marks on walnut */
  --color-on-dark-soft: #E7D8BE;

  /* retune the template's own variables (propagates most of the re-skin) */
  --_colors---primary: #3F2E1A;          /* main text -> deep warm walnut */
  --_colors---text-secondary: #6E5836;   /* muted body text  ~5.6:1 */
  --_colors---brand-color: #926F34;      /* buttons / brand -> bronze */
  --_colors---acent-color: #926F34;      /* accents -> bronze */
  --_colors---secondary-bg: #7C4A20;     /* dark panels -> walnut */
  --_colors---bg-light: #F8F2E4;         /* page + light surfaces -> cream */
  --_colors---white: #ffffff;            /* keep white (clean cards + white text on dark) */
  --_colors---border: #E6D8BE;           /* warm light border */
  --_colors---border-black: #C9B489;     /* dashed dividers -> warm tan */
  --_colors---input-text: #6E5836;
  --_colors---transparent-90: rgba(248,242,228,.9);

  /* old custom vars remapped so any legacy rule follows the new palette */
  --cdc-gold: #926F34;
  --cdc-gold-deep: #7C4A20;
  --cdc-slate: #7C4A20;
}

/* ---------- 1b. Typography system (retype — the core of the "less AI" refinement) ----------
   The template shipped Inter (body) + Stack Sans Text (headings) + Lilex — a MONOSPACE coding
   font — for every eyebrow/label/nav/button. That trio (mono "tech costume" + generic Inter +
   voiceless weight-400 geometric headings) was the main reason the demo read as AI-generated.
   We retire all three and drive the whole system from the template's own variables so the change
   propagates without touching Content/style.css. New pairing:
     • Display / headings : Spectral      — a restrained editorial serif (warm, established, premium)
     • Body / UI / labels : Source Sans 3 — a highly readable humanist sans (replaces Inter AND Lilex)
   Loaded via one Google Fonts css2 <link> (display=swap) in <head>. Serif + humanist sans = a real
   contrast-axis pairing; neither is a reflex-reject face; it stays readable on mobile. */
:root, body {
  --font-family--body-font: "Source Sans 3", system-ui, -apple-system, Segoe UI, sans-serif;
  --font-family--heading-font: "Spectral", Georgia, "Times New Roman", serif;
  --font-family--helping-font: "Source Sans 3", system-ui, -apple-system, Segoe UI, sans-serif;

  /* comfortable reading — undo the template's tight -.05em body tracking */
  --letter-spacing--body--text-m: -0.003em;
  --letter-spacing--body--text-l: -0.005em;
  --letter-spacing--body--text-xl: -0.01em;

  /* controlled, fluid display scale — calmer ceilings than the template's fixed 70/64/48px */
  --font-size--heading--h1-heading: clamp(2.5rem, 1.9rem + 2.1vw, 3.6rem);
  --font-size--heading--h2-heading: clamp(2.1rem, 1.6rem + 1.9vw, 3.1rem);
  --font-size--heading--h3-heading: clamp(1.7rem, 1.35rem + 1.3vw, 2.4rem);
  --font-size--heading--h4-heading: clamp(1.4rem, 1.2rem + .7vw, 1.85rem);
  --line-height--heading--h1-heading: 1.1em;
  --line-height--heading--h2-heading: 1.12em;
  --line-height--heading--h3-heading: 1.18em;

  /* serifs collide under tight tracking — neutralise the template's negative heading tracking */
  --letter-spacing--heading--h1: -0.01em;
  --letter-spacing--heading--h2: -0.005em;
  --letter-spacing--heading--h3: 0em;
  --letter-spacing--heading--h4: 0em;
  --letter-spacing--heading--h5: 0em;
  --letter-spacing--heading--h6: .015em;
}

/* Display headings get a touch more weight for authority; small headings stay 400 (elegant serif).
   Balanced wraps on headings, pretty wraps on prose. */
.heading-style-01, .heading-style-02, .heading-style-03 { font-weight: 500; }
h1, h2, h3, h4, .heading-style-01, .heading-style-02, .heading-style-03 { text-wrap: balance; }
p, li { text-wrap: pretty; }

/* Uppercase micro-labels (eyebrows, nav, buttons, marquees) now render in the humanist sans, not
   mono — give them a refined, even tracking instead of the mono default. */
.tag-wrapper, .tag-wrapper > div, .text-l.helping-font, .text-m.helping-font { letter-spacing: .06em; }

/* ---------- 1c. Shape / radii — cap over-rounded corners (template cards were ~24–44px) ----------
   These two tokens drive card corners and large blocks across the template; capping them tightens
   every card at once to a calmer, more considered radius. */
:root, body {
  --radius--radius-4xl: 16px;   /* was 24px — service / blog / team / faq cards */
  --radius--radius-3xl: 24px;   /* was 44px — hero-intro block + large blocks */
}

/* ---------- 2. Base surfaces ---------- */
body { background-color: var(--color-cream); color: var(--color-ink); }
.page-wrapper { background-color: var(--color-cream); }

/* ---------- 3. Header / navigation ---------- */
.navbar { background-color: rgba(248,242,228,.72) !important; backdrop-filter: saturate(1.3) blur(8px); -webkit-backdrop-filter: saturate(1.3) blur(8px); }
.nav-link { color: var(--color-ink); }
/* walnut (6.7:1) not bronze (4.14:1) so the active/hover nav link clears AA on cream */
.nav-link:hover, .nav-link.w--current { color: var(--color-walnut); }
.nav-dropdown-toggle { color: var(--color-ink); }
/* mega-dropdown surface */
.dropdown-list, .w-dropdown-list { background-color: #fff; }
.nav-dropdown-link { color: var(--color-ink); }
.nav-dropdown-link:hover { color: var(--color-bronze); }
.dropdown-ball { background-color: var(--color-bronze) !important; }
/* temporary text logo (see LOGO note in README) */
.cdc-logo-text { font-family: var(--font-family--heading-font); font-weight: 600; font-size: 1.32rem; letter-spacing: -.01em; color: var(--color-walnut); white-space: nowrap; line-height: 1; }
@media (max-width: 767px) { .cdc-logo-text { font-size: 1.12rem; } }

/* ---------- 4. Buttons ---------- */
.button-primary { background-color: var(--color-bronze); color: #fff; transition: background-color .3s ease, box-shadow .3s ease, transform .3s ease; }
.button-primary:hover { background-color: var(--color-walnut); box-shadow: 0 10px 28px rgba(124,74,32,.24); }  /* darken so white text stays readable */
.button-primary .button-text { color: #fff; }
/* white / secondary button variant -> warm cream with walnut text + bronze edge */
.button-primary.w-variant-964dc905-7073-6898-5f22-c030ce6c3dad {
  background-color: #fff; color: var(--color-walnut); box-shadow: inset 0 0 0 1.5px var(--color-line-strong);
}
.button-primary.w-variant-964dc905-7073-6898-5f22-c030ce6c3dad .button-text { color: var(--color-walnut); }
.button-primary.w-variant-964dc905-7073-6898-5f22-c030ce6c3dad:hover { background-color: var(--color-cream-2); box-shadow: inset 0 0 0 1.5px var(--color-bronze); }
/* submit + generic webflow buttons */
.w-button, .submit-button { background-color: var(--color-bronze); color: #fff; }
.w-button:hover, .submit-button:hover { background-color: var(--color-walnut); }
/* blog/feature-card "Learn more" ships as cream bg + WHITE text (invisible) -> legible ghost button */
.button-primary.blogs-card { background-color: #fff; box-shadow: inset 0 0 0 1.5px var(--color-line-strong); }
.button-primary.blogs-card .button-text { color: var(--color-walnut); }
.button-primary.blogs-card:hover { background-color: var(--color-cream-2); box-shadow: inset 0 0 0 1.5px var(--color-bronze); }

/* ---------- 5. Links, eyebrows, dividers ---------- */
a { color: var(--color-ink); }
/* Eyebrows: demote the cream "pill + ✚" scaffold (an eyebrow sat above every section — AI grammar)
   to a quiet, tracked bronze micro-label. Kept for section context; the small cross stays as an
   on-brand tick. Colour is context-aware so dark bands keep it legible without the pill. */
.tag-wrapper { background-color: transparent !important; padding: 0 !important; gap: .5em; }
.tag-wrapper > div { color: var(--color-bronze); font-weight: 600; font-size: .8rem; letter-spacing: .16em; }
.tag-icon { width: 15px; height: 15px; }
.tag-icon svg path { fill: var(--color-bronze); }
/* dark bands (home hero photo, treatment hero photo, services photo, CTA photo, walnut
   standards column) -> cream label + mark. Scoped to the genuinely dark heroes only:
   inner-page heroes (about/team/services/eleanor/suppliers/contact/booking) sit on a
   LIGHT cream surface and must keep the default bronze eyebrow, not cream-on-cream. */
.hero-section.home .tag-wrapper > div, .cdc-treatment-hero .tag-wrapper > div, .service-section .tag-wrapper > div, .cta-serction .tag-wrapper > div,
.testimonial-section .tag-wrapper > div,
.our-standards-section .standards-single-inner.main-bg .tag-wrapper > div { color: var(--color-on-dark); }
.hero-section.home .tag-icon svg path, .cdc-treatment-hero .tag-icon svg path, .service-section .tag-icon svg path, .cta-serction .tag-icon svg path, .testimonial-section .tag-icon svg path { fill: var(--color-on-dark); }

/* ---------- 6. Icons on LIGHT surfaces -> bronze (dark icons on dark panels stay light) ---------- */
.feature-card-icon svg path,
.testing-card-front .w-embed svg path,
.standards-single-inner._2-grid .w-embed svg path,
.service-card .card-icon svg path,
.scope-list-item .w-embed svg path { fill: var(--color-bronze); }

/* ---------- 7. Dark sections (walnut) — text/marks read as cream ---------- */
.our-standards-section .standards-single-inner.main-bg { background-color: var(--color-walnut); }
.standards-item-logo, .standards-single-inner.main-bg svg path { }  /* tick marks keep their own light fill */

/* ---------- 8. Hero feature chips (on the hero photo) ---------- */
.hero-feature-icon-wrp { background-color: rgba(248,242,228,.14); }
.feature-list-icon svg path { fill: var(--color-on-dark); }

/* ---------- 9. Cards — subtle warm lift on the cream page ---------- */
.team-member-card, .blogs-card-link, .service-card {
  border: 1px solid var(--color-line);
}
.team-member-card:hover, .blogs-card-link:hover { border-color: var(--color-bronze-highlight); }
/* what-we-check flip cards were cream-on-cream with no edge -> give the front a warm border + soft lift */
.testing-card-front { border: 1px solid var(--color-line); box-shadow: 0 14px 34px rgba(124,74,32,.06); }

/* ---------- 10. Footer -> walnut band with cream content ---------- */
.footer-section { background-color: var(--color-walnut); color: var(--color-on-dark); }
.footer-section a, .footer-section .text-m, .footer-section .link-title, .footer-section p, .footer-section address { color: var(--color-on-dark); }
.footer-section a:hover { color: #fff; }  /* brighten on hover (bronze-highlight on walnut was only 2.95:1) */
/* The footer nav/bottom links are in a Webflow hover-group that dims the NON-hovered siblings to
   bronze (~1.6:1, invisible on walnut) via inline styles. Defeat that inline styling with !important
   so siblings stay legible cream and only the hovered link brightens to white. */
.footer-section .footer-link { color: var(--color-on-dark) !important; transition: color .25s ease; }
.footer-section .footer-link:hover { color: #fff !important; }
.footer-section svg path { fill: var(--color-on-dark); }
/* decorative footer icons that ship as navy (#1F2A44 -> globally walnut) would vanish on the walnut
   footer (e.g. the "View on map" arrow) — force them back to cream */
.footer-section [fill="#1F2A44"], .footer-section [fill="#1f2a44"], .footer-section [fill="#7791A5"], .footer-section [fill="#7791a5"] { fill: var(--color-on-dark) !important; }
/* social pills: template gives a WHITE circle + cream glyph (invisible) -> cream pill + walnut glyph */
.footer-section .social-link { background-color: var(--color-on-dark); border-color: var(--color-on-dark); }
.footer-section .social-link svg path { fill: var(--color-walnut); }
.footer-section .social-link:hover { background-color: var(--color-bronze); border-color: var(--color-bronze); }
.footer-section .social-link:hover svg path { fill: #fff; }
.cdc-footer-logo-text { font-family: var(--font-family--heading-font); font-weight: 600; font-size: 1.5rem; letter-spacing: -.01em; color: var(--color-on-dark); line-height: 1; }
/* the "keep in touch" box inside the footer -> warm cream card with dark text */
.footer-contact-form-wrp { background-color: var(--color-cream); }
.footer-section .footer-contact-form-wrp,
.footer-section .footer-contact-form-wrp h2,
.footer-section .footer-contact-form-wrp .text-m,
.footer-section .footer-contact-form-wrp p,
.footer-section .footer-contact-form-wrp .footer-contact-title * { color: var(--color-ink) !important; }
.footer-contact-form-wrp .button-primary { background-color: var(--color-bronze) !important; }
.footer-contact-form-wrp .button-primary .button-text { color: #fff !important; }

/* ---------- 11. Recolour leftover template accent blues/navys -> walnut ----------
   (marquee separators, sparkle accents, tab-icons — reads well on cream). On DARK
   bands these are re-lightened below so they don't disappear. */
[fill="#7791A5"], [fill="#7791a5"], [stroke="#7791A5"] { fill: var(--color-walnut) !important; }
[fill="#1F2A44"], [fill="#1f2a44"] { fill: var(--color-walnut) !important; }

/* CTA pre-footer marquee band ships bronze bg + dark text/icons (2.8:1 / 1.6:1, muddy)
   -> white text + white separators (white on bronze = 4.63:1, AA) */
.marquee-logo-block.cta, .marquee-logo-block.cta .marquee-item { color: #fff !important; }
.marquee-logo-block.cta .marquee-item-icon svg path,
.marquee-logo-block.cta svg path { fill: #fff !important; }

/* ---------- 12. Warm the (cool-toned) services background photo ---------- */
img.service-section-bg { filter: sepia(.45) saturate(1.35) brightness(.9) hue-rotate(-8deg); }

/* ---------- 13b. Services slider arrows ship as a cool translucent-WHITE chip
   (reads as generic grey over the dark photo) -> warm translucent cream chip + bronze hover */
.left-arrow.service, .right-arrow.service {
  background-color: rgba(124,74,32,.55);
  box-shadow: inset 0 0 0 1px rgba(248,242,228,.45);
}
.left-arrow.service:hover, .right-arrow.service:hover { background-color: var(--color-bronze); box-shadow: none; }
.left-arrow.service svg path, .right-arrow.service svg path { fill: var(--color-on-dark); }

/* ---------- 13c. Ghost/secondary button dot + hover-arrow ship as cold BLACK <img> SVGs
   (Button Ball.svg / Button icon Black.svg). They're <img> so `fill` can't apply -> tint to walnut
   to match the warm button text. (Bronze buttons use the white icon set and are untouched.) */
.button-primary.blogs-card .button-arrow,
.button-primary.w-variant-964dc905-7073-6898-5f22-c030ce6c3dad .button-arrow {
  filter: brightness(0) saturate(100%) invert(26%) sepia(46%) saturate(720%) hue-rotate(3deg) brightness(93%) contrast(90%);
}

/* ---------- 13. Nav dropdown thumbnails now use a warm walnut mark (nav-thumb.png) ---------- */

/* ---------- 14. Mobile logo must fit the header (text wordmark is wider than the old mark) ---------- */
@media (max-width: 767px) { .cdc-logo-text { font-size: .78rem; letter-spacing: -.02em; } }
@media (max-width: 380px) { .cdc-logo-text { font-size: .7rem; } }

/* Hero feature icons sit on the dark hero photo -> keep them cream (light) */
.hero-feature-item .feature-list-icon svg path { fill: var(--color-on-dark) !important; }

/* ==============================================================
   STRUCTURAL RULES (unchanged behaviour — colour-updated only)
   ============================================================== */

/* ---------- Brand logos (approved assets) ---------- */
/* Header: compact lockup, full logo kept visible + aspect preserved, header stays compact */
.cdc-nav-logo { display: flex; align-items: center; }
.cdc-logo-img { height: 100px; width: auto; display: block; object-fit: contain; }
@media (max-width: 991px) { .cdc-logo-img { height: 70px; } }
@media (max-width: 767px) { .cdc-logo-img { height: 70px; } }
@media (max-width: 380px) { .cdc-logo-img { height: 70px; } }

/* Footer: full brand lockup sits in a deliberate cream card so its cream background reads as an
   intentional framed lockup on the walnut footer (no accidental rectangle, no blend-mode tricks) */
.footer-logo-link { display: inline-block; background: rgb(253,245,231); padding: 15px 20px; border-radius: 14px; box-shadow: 0 14px 34px rgba(40,24,8,.20); line-height: 0; }
.cdc-footer-logo-img { display: block; width: 320px; max-width: 100%; height: auto; object-fit: contain; }
@media (max-width: 767px) { .footer-logo-link { padding: 13px 16px; } .cdc-footer-logo-img { width: 250px; } }

img.standards-item-logo { height: 100px; width: auto; }

/* Uniform, well-sized footer social icons */
.social-link { display: inline-flex; align-items: center; justify-content: center; }
.social-link .w-embed, .social-link .w-embed svg, .social-link svg { width: 21px; height: 21px; display: block; }

/* Background videos replaced by CDC stills — hide the inert Webflow control */
.w-background-video--control { display: none !important; }
.testimonial-top-wrp.video video,
.w-background-video > video { width: 100%; height: 100%; object-fit: cover; }

/* Philosophy band — full-bleed CDC still + walnut scrim (animation untouched) */
.our-philosophy-section .pilocophy-main-block { position: relative; min-height: 100vh; }
.our-philosophy-section .philosophy-bg-video {
  position: absolute !important; inset: 0 !important; width: 100% !important; height: 100% !important; z-index: 0;
}
.philosophy-bg-video .cdc-bg-still { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; }
.philosophy-bg-video::after {
  content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none;
  background: linear-gradient(180deg, rgba(58,42,20,.46), rgba(58,42,20,.66));
}
.our-philosophy-section .philosophy-content-block { z-index: 3 !important; }

/* Testimonial avatar token */
.testimonial-author-image[src*="favicon"] { background: var(--color-walnut); object-fit: contain; padding: 4px; }

/* CTA — rotating badge + walnut scrim so the heading/marquee pop over the photo */
.cta-short-image { object-fit: contain; }
.cta-serction { position: relative; }
img.section-bg-image { z-index: 0; filter: saturate(1.03); }
.cta-serction::after {
  content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none;
  background: linear-gradient(90deg, rgba(48,32,14,.9) 0%, rgba(58,40,18,.62) 48%, rgba(58,40,18,.44) 100%);
}
.cta-serction .container, .cta-content-block, .cta-rotate-image-wrp { position: relative; z-index: 2; }
/* The dark final-CTA band has no top spacing of its own. Most pages precede it with a
   tinted/padded band so the seam reads fine, but the legal pages (.utility-section) and the
   Eleanor story (.cdc-aesthetics-story) end on plain-white content with padding-bottom:0 and
   butt flush against the dark band. Give those three a matching bottom pad (not a blanket CTA
   top-margin, which would double-gap every already-fine page). */
.utility-section { padding-bottom: clamp(3.5rem, 7vw, 6rem); }
.cdc-aesthetics-story { padding-bottom: clamp(3.5rem, 7vw, 6rem); }

/* Hidden for this phase (kept in the DOM so the client can restore them later) */
.pricing-section, .testimonial-section { display: none !important; }

/* ---------- Accessibility ---------- */
:focus-visible { outline: 3px solid var(--color-walnut); outline-offset: 2px; }
/* on dark bands (walnut footer, hero/services/CTA photos, walnut standards column) a walnut ring is
   near-invisible — switch the focus ring to cream so keyboard focus stays clearly visible */
.footer-section :focus-visible,
.hero-section :focus-visible,
.service-section :focus-visible,
.cta-serction :focus-visible,
.our-standards-section .standards-single-inner.main-bg :focus-visible { outline-color: var(--color-on-dark); }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; }
}

/* =====================================================================
   COMPOSITION & SECTION-RHYTHM REFINEMENT
   Turns the "stacked template sections" into one art-directed page.
   Template structure, imagery, content and main.js all preserved; this is
   layout/proportion/rhythm only, driven from the override stylesheet.
   ===================================================================== */

/* ---------- Section rhythm — alternate cream / warm off-white so the page
   isn't uniformly beige (dark bands stay only on services + CTA + footer) ---------- */
.feature-section, .what-we-section, .faq-sectrion { background-color: #FCF8F0; }

/* ---------- 1. Header — pull the logo back from oversized; keep it prominent ---------- */
.cdc-logo-img { height: 66px; }
@media (max-width: 991px) { .cdc-logo-img { height: 58px; } }
@media (max-width: 767px) { .cdc-logo-img { height: 50px; } }
@media (max-width: 380px) { .cdc-logo-img { height: 44px; } }

/* ---------- 2. Hero — clean self-contained layering (photo -> scrim -> content) + warm scrim.
   The template paints .hero-bg at z-index:-1 (and, on mobile, .hero-bg-mask at z-index:-1). Combined
   with the contrast filter on .hero-bg (a filter forms its own stacking context) that dropped the
   photo behind the page background on mobile. Fix: isolate the hero so all its layers stack in one
   context, and give each an explicit positive z-index — scoped by selector so no !important is needed
   for the stacking order. This replaces the earlier Content/style.css z-index:0 workaround. ---------- */
.hero-section.home { position: relative; isolation: isolate; }
.hero-section.home .hero-bg { z-index: 0; filter: contrast(1.12) saturate(1.14) brightness(1.04); } /* photo at the bottom; lift the hazy image (no blur) */
.hero-section.home .hero-bg-mask {
  z-index: 1; pointer-events: none;                                     /* decorative scrim, above the photo, never intercepts clicks */
  -webkit-backdrop-filter: none; backdrop-filter: none;                 /* no full-image blur */
  background:                                                           /* desktop: warm directional gradient — consistent dark left zone (sign lettering subordinate), building bright centre-right */
    radial-gradient(120% 92% at 100% 100%, rgba(32,20,8,.50), transparent 55%),
    linear-gradient(93deg, rgba(30,19,8,.88) 0%, rgba(30,19,8,.82) 27%, rgba(36,23,10,.5) 45%, rgba(40,25,10,.14) 66%, rgba(40,25,10,0) 100%);
}
.hero-section.home .hero-main-wrapper { z-index: 2; }                   /* eyebrow, H1, trust points, paragraph, CTAs — all above the scrim */
/* IX2 sets an inline filter:blur(12px) entrance state on the section; keep it unblurred at rest
   (inner content still fades in via IX2). !important is required here only to beat that inline style. */
.hero-section.home { filter: none !important; }
/* compact the three trust points so they read as one tidy group */
.hero-left-content { grid-row-gap: 14px; }
.hero-feature-item { grid-column-gap: 14px; }
.hero-feature-text { max-width: 34ch; }
/* intro dead-space + philosophy full-bleed (kept from the composition pass) */
.intro-section { padding-top: clamp(3rem, 6vw, 6rem) !important; padding-bottom: clamp(3rem, 6vw, 6rem) !important; }
.intro-contant-wrapper { max-width: 50ch; }
.our-philosophy-section .philosophy-bg-video, .our-philosophy-section .pilocophy-main-block { transform: none !important; scale: 1 !important; }

/* ---------- 3. About / "personal touch" — editorial two-column composition
   (text left, a deliberate practitioner image pair right) instead of tiny
   centred copy ringed by four floating corner cut-outs ---------- */
.marquee-logo-block.intro { display: none !important; }   /* redundant trust marquee (repeated in feature strip) */
.intro-block {
  display: grid;
  grid-template-columns: 1.02fr .98fr;                       /* col 1 = text+CTAs (content-block), col 2 = image pair */
  grid-column-gap: clamp(2rem, 4.5vw, 5rem);
  grid-row-gap: 0;
  align-items: center;                                       /* vertically balance the text against the portrait pair */
  max-width: none;
  border-radius: 0;
  text-align: left;
}
/* the template makes .intro-content-block a fixed 890x890 cream CIRCLE (the old circular motif) —
   reset it to a normal auto-sized text block so the about section is compact */
.intro-content-block { width: auto; height: auto; border-radius: 0; background-color: transparent; text-align: left; align-items: flex-start; }
.intro-contant-wrapper { text-align: left; align-items: flex-start; max-width: 46ch; }
.button-wrapper.intro { justify-content: flex-start; margin-top: 1.5rem; }   /* CTAs live inside .intro-content-block */
/* right column: a purposeful overlapping pair from the existing photos (drop 2 of the 4).
   Sized by HEIGHT so the composition is bounded and the section stays compact (no tall empty area). */
.intro-image-wrappweer { position: relative; width: 100%; height: clamp(390px, 31vw, 470px); min-height: 0; }
.intro-image { border: 5px solid #fff; box-shadow: 0 22px 48px rgba(40,24,8,.16); object-fit: cover; }
.intro-image.top-left { inset: 0 auto 0 0; height: 100%; width: auto; aspect-ratio: 4 / 5; max-width: 72%; border-radius: 18px; z-index: 1; }
.intro-image.bottom-right { inset: auto 0 -7% auto; height: 66%; width: auto; aspect-ratio: 1 / 1; max-width: 48%; border-radius: 16px; z-index: 2; }
.intro-image.top-right, .intro-image.bottom-left { display: none !important; }

/* ---------- 4. "Our Approach" + gallery + scope — replaces the broken sticky/marquee IX2 scene.
   The scene's driver (data-w-id) is removed from index.html; here the four cross-faded absolute
   stages become a stable, normal-flow editorial sequence: a full-width Approach image panel, a
   clean 3-image gallery, then the scope-of-care content. No scroll effect, no blank stage. ---------- */
.relative-section.cdc-approach { height: auto; }                        /* was 500vh -> normal flow */
.relative-section.cdc-approach .position-sticky { position: static; top: auto; }
.marquee-section { display: none !important; }                          /* remove the giant wordmark marquee */

/* 1) Our Approach — full-width image panel (existing philosophy image + heading + paragraph + scrim) */
.our-philosophy-section { position: static; opacity: 1; height: auto; }
.our-philosophy-section .pilocophy-main-block { position: relative; min-height: clamp(360px, 42vw, 520px); }
.our-philosophy-section .philosophy-bg-video { transform: none !important; scale: 1 !important; }
.philosophy-bg-video .cdc-bg-still { object-position: center 42%; }
.philosophy-content-block { position: absolute; inset: 0; }

/* 2) Gallery — clean three-image band with consistent intentional heights (no full-viewport tiles) */
.gallery-section { position: static; opacity: 1; height: auto; }
.gallery-main-block { grid-template-columns: 1fr 1fr 1fr; }
.gallery-single-item, .gallery-single-item._01, .gallery-single-item._02, .gallery-single-item._03 { height: clamp(240px, 24vw, 340px); }
.gallery-image { width: 100%; height: 100%; object-fit: cover; }

/* 3) Scope of care — reveal the (IX2-hidden) content into normal flow */
.scope-content-block { position: static; opacity: 1 !important; height: auto; padding-top: clamp(3rem, 6vw, 5rem); padding-bottom: clamp(1rem, 3vw, 3rem); }

.rectangle.bg-video, .rectangle { display: none !important; }           /* stray decorative rectangle */

/* ---------- 5. Services — more presence, cleaner cards, one edge not two ---------- */
.service-card { border: 1px solid var(--color-line); box-shadow: none; }
.service-card:hover { border-color: var(--color-bronze-highlight); box-shadow: 0 18px 40px rgba(124,74,32,.10); }

/* ---------- 6. Comparison — informative, not a decorative brown block ---------- */
/* soften the central column (warm, lighter walnut) so it reads as emphasis not a slab */
.standards-single-inner.main-bg { position: relative; }
/* the "us" mark: a small header mark, not a cream block on the column */
img.standards-item-logo { height: 54px; width: auto; }

/* ---------- 7. Examination inclusions — composed tiles, no dead middle ----------
   Front: icon chip anchored top, title anchored to the bottom edge
   (space-between), and a quiet "+" affordance so the flip is discoverable.
   The height stays 340px because the flip side needs it for its checklist. */
.testing-item-card { height: 340px; }
.testing-card-front { justify-content: space-between; padding: 28px; }
.testing-card-front::after {
  content: "+" / "";                                /* decorative — silent for AT */
  position: absolute; top: 24px; right: 24px;
  width: 32px; height: 32px;
  display: flex; align-items: center; justify-content: center;
  border: 1px solid var(--color-line-strong); border-radius: 50%;
  color: var(--color-bronze-text);
  font-family: var(--font-family--body-font); font-size: 20px; font-weight: 400; line-height: 1;
}
.testing-card-card-icon-wrp { width: 58px; height: 58px; }
.testing-card-icon { width: 32px; height: 32px; }
/* flip side: warm the cool blue clinical photo to sit in the page's palette
   (same grade as the services background) */
img.testing-card-bg { filter: sepia(.45) saturate(1.25) brightness(.85) hue-rotate(-8deg); }

/* ---------- 8. Team — portrait-dominant cards (were tiny 80px thumbs), stronger hierarchy ---------- */
/* the team ticker repeated the same four faces (shown as large portraits directly
   above) as tiny dark thumbnails, with trust copy already carried by the hero and
   the pre-footer band — removed as redundant furniture (kept in the DOM) */
.team-member-marquee-block { display: none !important; }
/* the second team row (a flex variant) stretched its two cards to half the block,
   making Helen/Ellie ~50% larger than everyone else — match row-1 card width so
   all five people carry equal visual weight */
.collection-list.team-member._02 .collection-item.team-member { width: calc((100% - 24px) / 3); }
@media (max-width: 991px) {
  .collection-list.team-member._02 .collection-item.team-member { width: calc((100% - 12px) / 2); }
}
@media (max-width: 479px) {
  .collection-list.team-member._02 .collection-item.team-member { width: 100%; }
}
.team-card-icon-wrp { display: none !important; }                 /* drop the decorative dot */
.team-card-top-wrp { display: block; }
.team-card-image-wrap { width: 100%; height: auto; border-radius: 12px; overflow: hidden; }
/* height:auto lets the width/height attributes set the aspect ratio (for CLS) without
   pinning the pixel height — otherwise the About cards' height="696" attribute forces a
   ~300x696 elongated crop. The homepage cards (no height attr) already scale this way. */
.team-card-image-wrap img { width: 100%; height: auto; object-fit: cover; object-position: center 22%; }
.team-member-card { padding: 10px 10px 6px; }
.team-member-card-info { margin-top: 14px; padding: 0 6px 8px; }

/* ---------- 9. FAQ — tighter measure, less dead space, heading pinned beside the list ---------- */
.faq-sectrion { padding-top: clamp(3.5rem, 6vw, 6.5rem) !important; padding-bottom: clamp(3.5rem, 6vw, 6.5rem) !important; }
.faq-title-block { max-width: 360px; position: sticky; top: 118px; align-self: flex-start; }
.faq-content-block { grid-column-gap: clamp(2rem, 4vw, 4rem); }

/* ---------- 10. Blog — keep it compact + secondary (image ratios refined in QA) ---------- */
.blogs-section.home-page { padding-top: clamp(3.5rem, 6vw, 6.5rem) !important; padding-bottom: clamp(3.5rem, 6vw, 6.5rem) !important; }

/* ---------- Responsive QA (tablet + mobile) ---------- */
@media (max-width: 991px) {
  /* About: stack to one column — text + CTAs, then the practitioner pair */
  .intro-block { grid-template-columns: 1fr; grid-row-gap: 1.75rem; }
  .intro-contant-wrapper { max-width: 60ch; }
  .intro-image-wrappweer { min-height: 0; height: auto; display: grid; grid-template-columns: 1.2fr 1fr; grid-column-gap: 14px; align-items: center; }
  .intro-image.top-left, .intro-image.bottom-right { position: static !important; inset: auto !important; max-width: 100% !important; width: 100%; height: auto !important; margin: 0; }
  .intro-image.top-left { aspect-ratio: 4 / 5; }
  .intro-image.bottom-right { aspect-ratio: 4 / 5; }
  .button-wrapper.intro { margin-top: 1.25rem; }
}
@media (max-width: 767px) {
  /* Team: keep portraits prominent but squarer so the mobile section stays manageable */
  .team-card-image-wrap { aspect-ratio: 1 / 1; }
  /* FAQ heading no longer sticky once stacked */
  .faq-title-block { position: static; max-width: none; }

  /* ===== Mobile hero: readable white text over a repositioned building ===== */
  /* lead with the building; shift the text-heavy roadside sign off from behind the content */
  .hero-section.home .hero-bg { object-position: 70% 34%; }
  /* strong warm walnut scrim — darkest behind the eyebrow + H1, sustained behind trust + paragraph;
     enough image still shows to recognise the practice */
  .hero-section.home .hero-bg-mask {
    background: linear-gradient(180deg,
      rgba(34,21,9,.88) 0%, rgba(34,21,9,.82) 24%, rgba(34,21,9,.62) 48%,
      rgba(30,19,8,.56) 74%, rgba(28,18,8,.66) 100%);
  }
  /* restrained text-shadow safety net after the scrim */
  .hero-section.home h1,
  .hero-section.home .tag-wrapper > div,
  .hero-section.home .hero-intro-block h2 { text-shadow: 0 1px 12px rgba(18,11,4,.55); }
  .hero-feature-text { max-width: none; font-size: .9rem; }
  /* trust items: one compact vertical group (icon + label + supporting line clearly associated) */
  .hero-left-content { display: flex; flex-direction: column; grid-row-gap: 0; gap: 16px; align-items: stretch; }
  .hero-feature-item { display: flex; flex-direction: row; align-items: center; grid-column-gap: 0; gap: 12px; }
  .hero-feature-item .feature-list-wrp { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
  /* CTAs: equal full-width, stacked in one column, consistent height */
  .hero-intro-block .button-wrapper.hero { display: flex; flex-direction: column; gap: 12px; align-items: stretch; width: 100%; }
  .hero-intro-block .button-wrapper.hero .button-primary { width: 100%; justify-content: center; }
}

/* ---------- 11. Footer — logo not oversized; the compact mark sits neatly in its cream card ---------- */
.footer-logo-link { padding: 14px 20px; border-radius: 14px; }
.cdc-footer-logo-img { width: 210px; }
@media (max-width: 767px) { .cdc-footer-logo-img { width: 190px; } }

/* =====================================================================
   FINAL ART DIRECTION (v1.3) — holistic finishing pass.
   Removes the residue of earlier narrow fixes and gives the whole page
   one deliberate component grammar. Foundation first, then sections.
   ===================================================================== */

/* ---------- F1. Trust feature band — each cell is one composed unit ----------
   The template pushed the text 140px (spacing-16xl) below the icon, leaving a
   dead void in every cell. Close it to a considered gap so icon chip, heading
   and supporting line read together. */
.feature-card-content { padding-top: 26px; }
.feature-card { padding: 34px 32px 38px 36px; }

/* Shared icon-chip grammar across all light bands (trust band + examination
   cards now match): white chip, warm hairline, same radius. */
.feature-icon-wrapper {
  background-color: #fff;
  border: 1px solid var(--color-line);
  border-radius: 12px;
  width: 56px; height: 56px;
}
.testing-card-card-icon-wrp { border: 1px solid var(--color-line); border-radius: 12px; width: 56px; height: 56px; }
@media (max-width: 479px) {
  .feature-icon-wrapper { width: 48px; height: 48px; }
  .feature-card { padding: 26px 20px; }
}

/* ---------- F2. Eyebrow micro-labels — deepen the bronze one step so the
   small tracked caps hold ~4.9:1 on cream (brand bronze alone was ~4.1:1).
   Dark bands keep their cream labels via the earlier higher-specificity rules. */
:root { --color-bronze-text: #7E602D; }
.tag-wrapper > div { color: var(--color-bronze-text); }
.tag-icon svg path { fill: var(--color-bronze-text); }

/* =====================================================================
   NAVIGATION & INTERACTION POLISH (v1.3.1)
   ===================================================================== */

/* ---------- N1. Treatments mega-dropdown — grouped text links ----------
   Each treatment family is a native <details name="cdc-treatments">. On desktop
   (below) the families are force-open and laid out as a grid of columns; on mobile
   (N2) they collapse to exclusive accordions. The panel content is real CDC
   treatments; the Webflow w-dropdown wrapper keeps hover/keyboard/click behaviour. */
.nav-overview-block.cdc-mega {
  display: block;
  margin-top: 0;   /* the template puts a 67px top margin here — remove it */
  background-color: #fff;
  border: 1px solid var(--color-line);
  border-radius: 16px;
  box-shadow: 0 26px 50px -26px rgba(40, 26, 10, .38);
  padding: 30px clamp(24px, 3vw, 44px) 26px;
}
.cdc-mega-inner { max-width: 1180px; margin: 0 auto; }
.cdc-mega-grid {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  grid-column-gap: 26px;
  grid-row-gap: 8px;
}
.cdc-mega-group { display: block; }
/* the family label is a <summary>; strip the native disclosure marker */
summary.cdc-mega-label { list-style: none; }
summary.cdc-mega-label::-webkit-details-marker { display: none; }
summary.cdc-mega-label::marker { content: ""; }
.cdc-mega-label {
  color: var(--color-bronze-text);
  font-family: var(--font-family--body-font);
  font-size: .76rem; font-weight: 600;
  letter-spacing: .14em; text-transform: uppercase;
  margin-bottom: 10px;
}
.cdc-mega-link {
  display: block;
  color: var(--color-ink);
  font-size: 1rem; line-height: 1.35;
  padding: 5px 0;
  text-decoration: none;
  transition: color .2s ease;
}
.cdc-mega-link:hover { color: var(--color-walnut); }
.cdc-mega-foot {
  display: flex; align-items: center; grid-column-gap: 18px; gap: 18px;
  margin-top: 24px; padding-top: 20px;
  border-top: 1px solid var(--color-line);
}
.cdc-mega-tel { color: var(--color-ink); font-weight: 600; text-decoration: none; }
.cdc-mega-tel:hover { color: var(--color-walnut); }
.cdc-mega-all { font-weight: 600; color: var(--color-bronze-text); }
/* toggle caret: sits beside the "Treatments" label, flips when the menu opens */
.nav-dropdown-toggle { display: inline-flex; align-items: center; gap: 6px; }
.nav-dropdown-toggle .cdc-mega-caret { transition: transform .2s ease; }
.nav-dropdown.w--open .nav-dropdown-toggle .cdc-mega-caret,
.nav-dropdown.cdc-mega-open .nav-dropdown-toggle .cdc-mega-caret,
.nav-dropdown-toggle.w--open .cdc-mega-caret { transform: rotate(180deg); }

/* ---------- Desktop (>=992px): flush, hover-stable panel; families always open ----------
   The template opened the panel as position:fixed at inset:40% 0 auto — ~300px below the
   toggle with a dead transparent gap, so travelling the mouse to it fired Webflow's
   mouseleave close. Re-anchor the panel directly beneath the toggle (viewport-centred) and
   add a transparent hover bridge from the toggle to the panel so the pointer never leaves the
   dropdown. The panel no longer overlaps the header, so pointer-events can stay on. */
@media (min-width: 992px) {
  /* Header layout: logo left, links centred, Book CTA right. The template centred
     the logo by making it the middle child of a space-between row (links | logo |
     button); reorder to the conventional practice header instead. Reordering the
     flex children (not the DOM) keeps the markup — and the two IX2 data-w-ids — intact.
     Scoped to >=992px, so the Webflow mobile overlay (<=991px) is untouched. */
  .nav-left-wrapper  { order: 1; }              /* logo -> flush left */
  .nav-menu          { order: 2; flex: 1 1 auto; } /* links grow into the middle */
  .nav-menu-wrp      { justify-content: center; }  /* and centre within it */
  .nav-right-wrapper { order: 3; }              /* Book CTA -> right */

  .nav-dropdown { position: static; }
  /* The panel's hoverable box starts flush at the toggle's bottom (top:64px ~= toggle
     bottom) and its transparent 14px padding-top is a FULL-WIDTH bridge, so the pointer
     travelling from the toggle to any link never leaves the (interactive, descendant)
     dropdown — Webflow's mouseleave close never fires. The strip it covers is the navbar's
     empty bottom padding, below the links, so no header link is blocked. */
  .dropdown-list.w--open {
    position: fixed; inset: auto; left: 50%; transform: translateX(-50%);
    top: 64px; padding-top: 14px;
    width: min(1180px, calc(100vw - 40px)); min-width: 0; margin: 0;
    background: transparent; pointer-events: auto;
  }
  /* force every family open on desktop regardless of the <details> [open] state */
  summary.cdc-mega-label { cursor: default; pointer-events: none; }
  .cdc-mega-group > :not(summary) { display: block !important; }
  .cdc-mega-group::details-content { content-visibility: visible !important; }
}

/* ---------- N2. Mobile navigation (<=991px) ---------- */
/* the Book CTA inside the open mobile menu — hidden in the desktop nav row */
.cdc-mobile-book { display: none; }
@media (max-width: 991px) {
  .nav-dropdown { order: 0; width: 100%; }
  /* centre the Treatments label like the sibling nav-links (the template left it
     off-centre with padding-left:16px). The caret is taken out of flow to the
     right so it can't push the centred label off-axis. */
  .nav-dropdown-toggle { justify-content: center; width: 100%; position: relative;
    padding-left: 0 !important; padding-right: 0 !important; }
  .nav-dropdown-toggle .cdc-mega-caret { position: absolute; right: 1.4rem; top: 50%; margin-top: -3px; }
  /* long menus must scroll on height-constrained phones */
  .nav-menu-wrp { padding-top: 24px; padding-bottom: 36px; max-height: calc(100dvh - 96px); overflow-y: auto; }
  .cdc-mobile-book { display: flex; width: min(340px, 86%); justify-content: center; margin-top: 10px; }
  /* The Treatments panel is controlled solely by cheshire-custom.js via the
     cdc-mega-open class (Webflow only binds its own tap-open on touch browsers,
     and with data-hover it opens-but-never-closes on tap). Neutralise Webflow's
     w--open on mobile so a stray tap can't leave the panel stuck open; show and
     inline-flow the panel only when the shim opens it (the whole menu scrolls). */
  .nav-dropdown:not(.cdc-mega-open) > .dropdown-list.w-dropdown-list { display: none !important; }
  .nav-dropdown.cdc-mega-open > .dropdown-list.w-dropdown-list {
    display: block; position: static;
    height: auto !important; max-height: none !important; overflow: visible !important; }
  .nav-overview-block.cdc-mega { height: auto !important; max-height: none !important; overflow: visible !important;
    background: transparent; border: none; box-shadow: none; padding: 6px 0 2px; }
  .cdc-mega-inner { max-width: min(380px, 92%); }
  /* each family is a collapsible accordion row (collapsed by default; name= makes them exclusive) */
  .cdc-mega-grid { display: block; }
  .cdc-mega-group { border-top: 1px solid var(--color-line); }
  .cdc-mega-group:last-of-type { border-bottom: 1px solid var(--color-line); }
  summary.cdc-mega-label {
    display: flex; justify-content: center; align-items: center; gap: 8px;
    cursor: pointer; margin: 0; padding: 15px 4px; color: var(--color-walnut); font-size: .8rem;
  }
  summary.cdc-mega-label::after {
    content: "+"; color: var(--color-bronze); font-size: 1.35rem; line-height: 1; font-weight: 400;
  }
  .cdc-mega-group[open] > summary.cdc-mega-label::after { content: "\2013"; }
  .cdc-mega-group > .cdc-mega-link { text-align: center; padding: 9px 0; }
  .cdc-mega-group > .cdc-mega-link:last-child { padding-bottom: 14px; }
  .cdc-mega-foot { flex-direction: column; align-items: center; gap: 12px; margin-top: 18px; padding-top: 18px; }
}

/* ---------- N3. Examination cards — click / touch / keyboard state ----------
   cheshire-custom.js toggles cdc-open / cdc-closed with aria-expanded; these
   class states must beat IX2's inline hover opacity, hence !important. The
   flip via class is instant (no transition), which also satisfies
   prefers-reduced-motion; the decorative IX2 hover flip is unchanged. */
.testing-item-card { cursor: pointer; }
.testing-item-card.cdc-open .testing-card-front { opacity: 0 !important; }
.testing-item-card.cdc-open .testing-card-back { opacity: 1 !important; }
.testing-item-card.cdc-closed .testing-card-front { opacity: 1 !important; }
.testing-item-card.cdc-closed .testing-card-back { opacity: 0 !important; }

/* ---------- F3. Services band — calm the busy background photo with one even
   walnut veil (photo stays recognisable; heading, paragraph and arrows gain a
   consistent surface). The veil paints above the z-auto bg image and below the
   z-1 content block, so nothing else changes. */
.service-section::after {
  content: ""; position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(180deg, rgba(44,29,13,.62) 0%, rgba(44,29,13,.42) 40%, rgba(44,29,13,.58) 100%);
}

/* ---------- F4. Comparison table on mobile — show the whole argument ----------
   The template hid the "Typical practice" column behind an affordance-less
   550px horizontal scroll at small widths. Restack instead: every row fits the
   viewport as [what matters | us | typical], nothing clipped, no side-scroll. */
@media (max-width: 767px) {
  .standards-item-block { overflow: visible; }
  /* minmax(0,…) keeps the three tracks identical in every row (each row is its
     own grid — a long word like "Experienced" must not push the walnut column) */
  .standard-single-item {
    width: 100%;
    overflow: visible;
    grid-template-columns: minmax(0, 1.7fr) minmax(0, 1fr) minmax(0, 1fr);
    grid-column-gap: 10px;
  }
  .standards-single-inner._2-grid { padding-right: 4px; hyphens: auto; }
  img.standards-item-logo { height: 40px; }
}
@media (max-width: 479px) {
  /* a little more room for the label track so words never break mid-word */
  .standard-single-item { grid-template-columns: minmax(0, 2.1fr) minmax(0, 1fr) minmax(0, 1fr); }
}

/* =====================================================================
   FINAL VISUAL POLISH (v1.4) — targeted fixes from manual review.
   Override-only (index.html touched only for content/asset swaps).
   ===================================================================== */

/* ---------- P1. Hero — ONE coherent warm scrim across the whole photo:
   dark left (behind H1 + trust), light over the building centre, darker
   again lower-right (behind the right paragraph + CTAs). Replaces the
   earlier linear + disconnected corner-radial. ---------- */
.hero-section.home .hero-bg-mask {
  background:
    linear-gradient(180deg, rgba(22,13,5,0) 38%, rgba(22,13,5,.42) 66%, rgba(18,11,4,.66) 100%),
    linear-gradient(96deg,
      rgba(22,13,5,.90) 0%, rgba(24,15,6,.82) 22%,
      rgba(30,19,8,.34) 44%, rgba(30,19,8,.12) 58%,
      rgba(32,20,9,.32) 80%, rgba(30,18,7,.54) 100%);
}
/* subtle safety net so the right paragraph clears the brightest pavement pixels
   without over-darkening the whole photo (the scrim does the main work) */
.hero-section.home .hero-intro-block h2 { text-shadow: 0 1px 10px rgba(16,10,3,.5); }

/* ---------- P2. About — stop the continuous IX2 float loop on the two
   practitioner portraits (they bounced like a heartbeat). CSS !important
   beats the inline transform the interaction re-applies each frame, so the
   pair sits static; the opacity entrance still plays. ---------- */
.intro-image.top-left, .intro-image.bottom-right { transform: none !important; }
/* refine the pair: a finer white edge + calmer shadow (deliberate, static) */
.intro-image { border-width: 4px; box-shadow: 0 20px 44px rgba(40,24,8,.18); }

/* ---------- P3A. Our Approach eyebrow — cream on the dark image panel
   (was bronze-on-brown, unreadable); slightly deeper even scrim. ---------- */
.our-philosophy-section .tag-wrapper > div { color: var(--color-on-dark); }
.our-philosophy-section .tag-icon svg path { fill: var(--color-on-dark); }
.our-philosophy-section .philosophy-bg-video::after {
  background: linear-gradient(180deg, rgba(42,27,12,.62) 0%, rgba(42,27,12,.5) 52%, rgba(42,27,12,.58) 100%);
}

/* ---------- P3B/C. Remove the disconnected 3-image strip and rebuild
   Our Care as a deliberate desktop split: care copy left, a static
   overlapping image pair (reused from the former strip) right. ---------- */
.gallery-section { display: none !important; }
.scope-content-block .container {
  display: grid;
  grid-template-columns: 1.02fr .98fr;
  grid-column-gap: clamp(2rem, 4.5vw, 5rem);
  align-items: center;
}
.scope-content-wrapper { max-width: 52ch; }
/* bounded overlapping pair (same grammar as the About portraits) so the section
   stays compact and balanced against the copy — not a tall vertical banner */
.cdc-care-media { position: relative; align-self: center; height: clamp(400px, 32vw, 480px); }
.cdc-care-img { display: block; object-fit: cover; border: 4px solid #fff; border-radius: 16px; box-shadow: 0 22px 48px rgba(40,24,8,.16); }
.cdc-care-main { position: absolute; inset: 0 0 0 auto; height: 100%; width: auto; aspect-ratio: 4 / 5; max-width: 74%; object-position: center 38%; }
.cdc-care-sub { position: absolute; inset: auto auto -6% 0; height: 68%; width: auto; aspect-ratio: 1 / 1; z-index: 2; object-position: center 20%; }

/* ---------- P4. Comparison — approved dimensional tooth mark (transparent),
   an embossed bronze mark on the walnut column (no cream rectangle, no
   generic white tooth). Sized by height so the column keeps its width. ---------- */
img.standards-item-logo { height: 78px; width: auto; }

/* ---------- P5. Check-up slider — the prev/next arrows were 7px off the card
   bottoms and 25px off the section edge (cramped vs the services slider). Add
   breathing room below the cards and beneath the controls. ---------- */
/* the template anchors these arrows at bottom:-15% (a % of the slider height —
   fragile and cramped). Pin them a fixed distance below the cards, then reserve
   matching section padding so there's clean space beneath the controls. */
.left-arrow.testing-section, .right-arrow.testring-section.what-we {
  top: auto; bottom: -78px; width: 46px; height: 46px;
}
.what-we-section { padding-bottom: 98px !important; }
@media (max-width: 767px) {
  .left-arrow.testing-section, .right-arrow.testring-section.what-we { bottom: -66px; }
  .what-we-section { padding-bottom: 88px !important; }
}

/* feature trust band — desktop top padding follows the template (manual edit);
   the client asked for a taller 120px top gap on mobile only. */
@media (max-width: 767px) { .feature-section { padding-top: 120px !important; } }

/* ---------- P6. Meet the team — three people on the homepage. The template's
   second card row used to be hidden here; it was removed from index.njk on
   2026-07-23 instead, so only the section spacing remains. ---------- */
.team-member-section { padding-top: clamp(3.5rem, 6vw, 6rem) !important; padding-bottom: clamp(3.5rem, 6vw, 6rem) !important; }

/* ---------- P7. Blog "At the practice" — equal cards regardless of the
   source image ratio (feature-1 is 4:3, feature-2 is 2:1). One media
   aspect + cover; tighter top padding; CTA pinned to the card bottom. ---------- */
.blogs-section.home-page { padding-top: clamp(3rem, 5vw, 5rem) !important; }
/* equal card heights regardless of copy length: stretch the grid items and let
   each card fill its cell; the image fills the card's right column (cover). */
.blogs-content-block .w-dyn-items { align-items: stretch; }
.blogs-content-block .w-dyn-item { display: flex; }
.blogs-card-link { height: 100%; align-items: stretch; }
.blogs-card-right { align-self: stretch; }
.blogs-thumbnail-image { width: 100%; height: 100%; object-fit: cover; object-position: center; }
.blogs-card-left { display: flex; flex-direction: column; }
.blogs-card-left-bottom { margin-top: auto; }

/* ---------- P8. Final CTA — supporting line fills the headline→button gap;
   the group reads eyebrow / headline / line / button (cream on the dark
   photo). ---------- */
.cdc-cta-support {
  color: var(--color-on-dark);
  max-width: 44ch;
  margin-top: 1.1rem;
  font-size: clamp(1.05rem, .9rem + .5vw, 1.2rem);
  line-height: 1.5;
}

/* ---------- Responsive (tablet + mobile) for the polish pass ---------- */
@media (max-width: 991px) {
  /* Our Care: stack — copy, then the image pair below */
  .scope-content-block .container { grid-template-columns: 1fr; grid-row-gap: clamp(2.25rem, 5vw, 3rem); }
  .scope-content-wrapper { max-width: 60ch; }
  .cdc-care-media { width: 100%; max-width: 500px; margin: 0 auto; height: clamp(340px, 64vw, 440px); }
  .cdc-care-sub { inset: auto auto -5% 0; }
}
@media (max-width: 767px) {
  img.standards-item-logo { height: 46px; }
}

/* ---------- 2026-08-01 client edit: the archived Welcome panel is replaced
   by a focused award feature between the hero and Our Approach. ---------- */
.cdc-home-award-section {
  padding-block: clamp(3.5rem, 7vw, 6.5rem);
  background: var(--color-cream-2, #f5efe6);
}
.cdc-home-award-block {
  display: grid;
  grid-template-columns: minmax(18rem, .82fr) minmax(0, 1.18fr);
  align-items: center;
  gap: clamp(2rem, 5vw, 5rem);
  padding: clamp(1.5rem, 4vw, 4rem);
  overflow: hidden;
  background: #fff;
  border: 1px solid var(--color-line, rgba(42, 27, 12, .14));
  border-radius: 24px;
  box-shadow: 0 24px 70px rgba(40, 24, 8, .09);
}
.cdc-home-award-media {
  display: flex;
  justify-content: center;
  align-items: center;
  min-height: clamp(22rem, 39vw, 34rem);
  border-radius: 18px;
  background: radial-gradient(circle at 50% 42%, #fff 0, #f8f1e5 72%);
}
.cdc-home-award-image {
  display: block;
  width: auto;
  max-width: 82%;
  height: clamp(20rem, 36vw, 31rem);
  object-fit: contain;
  filter: drop-shadow(0 24px 28px rgba(40, 24, 8, .17));
}
.cdc-home-award-content { max-width: 40rem; }
.cdc-home-award-eyebrow {
  margin-bottom: 1rem;
  color: var(--color-bronze-text, #8a5a2b);
  letter-spacing: .08em;
  text-transform: uppercase;
}
@media (max-width: 767px) {
  .cdc-home-award-block { grid-template-columns: 1fr; padding: 1.25rem 1.25rem 2rem; }
  .cdc-home-award-media { min-height: 22rem; }
  .cdc-home-award-image { height: 20rem; }
}
/* ---------- Homepage Invisalign promotion ---------- */
.cdc-invisalign-popup {
  width: min(58rem, calc(100vw - 2rem));
  max-width: none;
  max-height: min(42rem, calc(100dvh - 2rem));
  padding: 0;
  overflow: hidden;
  color: var(--color-ink, #2a1b0c);
  background: #fff;
  border: 0;
  border-radius: 24px;
  box-shadow: 0 32px 90px rgba(28, 18, 8, .3);
}
.cdc-invisalign-popup::backdrop {
  background: rgba(24, 17, 10, .68);
  backdrop-filter: blur(5px);
}
.cdc-invisalign-popup[open] { animation: cdc-popup-in .28s ease-out both; }
.cdc-invisalign-popup-card {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr);
  min-height: 28rem;
}
.cdc-invisalign-popup-close {
  position: absolute;
  top: 1rem;
  right: 1rem;
  z-index: 2;
  display: grid;
  width: 2.75rem;
  height: 2.75rem;
  padding: 0;
  place-items: center;
  color: #2a1b0c;
  font: 400 2rem/1 Arial, sans-serif;
  background: rgba(255, 255, 255, .94);
  border: 1px solid rgba(42, 27, 12, .14);
  border-radius: 999px;
  cursor: pointer;
  box-shadow: 0 8px 20px rgba(42, 27, 12, .12);
}
.cdc-invisalign-popup-close:hover,
.cdc-invisalign-popup-close:focus-visible { background: #f5efe6; }
.cdc-invisalign-popup-media { min-height: 28rem; background: #eee7dd; }
.cdc-invisalign-popup-media img { width: 100%; height: 100%; object-fit: cover; }
.cdc-invisalign-popup-content {
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: clamp(2.25rem, 5vw, 4.5rem);
}
.cdc-invisalign-popup-eyebrow {
  margin-bottom: .85rem;
  color: var(--color-bronze-text, #8a5a2b);
  letter-spacing: .08em;
  text-transform: uppercase;
}
.cdc-invisalign-popup-content h2 { margin: 0 0 1rem; }
.cdc-invisalign-popup-content p { max-width: 34rem; margin: 0; line-height: 1.65; }
.cdc-invisalign-popup-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .85rem 1.25rem;
  margin-top: 1.75rem;
}
.cdc-invisalign-popup-cta {
  display: inline-flex;
  align-items: center;
  gap: .75rem;
  min-height: 3rem;
  padding: .75rem 1.15rem;
  color: #fff;
  font-weight: 600;
  text-decoration: none;
  background: var(--color-walnut, #3b2717);
  border-radius: 999px;
}
.cdc-invisalign-popup-cta:hover,
.cdc-invisalign-popup-cta:focus-visible { background: #7b532d; }
.cdc-invisalign-popup-later {
  padding: .6rem 0;
  color: var(--color-ink, #2a1b0c);
  background: transparent;
  border: 0;
  border-bottom: 1px solid currentColor;
  cursor: pointer;
}
@keyframes cdc-popup-in {
  from { opacity: 0; transform: translateY(18px) scale(.98); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}
@media (max-width: 700px) {
  .cdc-invisalign-popup { width: min(30rem, calc(100vw - 1.25rem)); max-height: calc(100dvh - 1.25rem); }
  .cdc-invisalign-popup-card { grid-template-columns: 1fr; min-height: 0; }
  .cdc-invisalign-popup-media { min-height: 0; height: clamp(10rem, 38vw, 13rem); }
  .cdc-invisalign-popup-content { padding: 1.65rem 1.35rem 1.75rem; }
  .cdc-invisalign-popup-close { top: .7rem; right: .7rem; }
}
@media (prefers-reduced-motion: reduce) {
  .cdc-invisalign-popup[open] { animation: none; }
}