/*
Theme Name: Erin Woods Denture Clinic
Theme URI: https://www.erinwoodsdenture.ca/
Author: Erin Woods Denture Clinic
Author URI: https://www.erinwoodsdenture.ca/
Description: A warm, modern, high-end block theme for Erin Woods Denture Clinic in Calgary. Clean, cohesive styling in a sign-red palette with real photos, before/after results, and a call-first design built for trust and local SEO.
Requires at least: 6.5
Tested up to: 6.7
Requires PHP: 7.4
Version: 2.34.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: erin-woods-dentures
Tags: block-theme, healthcare, full-site-editing, custom-colors, two-columns
*/

/* ============================================================
   0. Tokens — refined elevation scale (soft, layered, premium)
   ============================================================ */
:root {
	--ewd-shadow-xs: 0 1px 2px rgba(36,28,25,.05);
	--ewd-shadow-sm: 0 1px 2px rgba(36,28,25,.04), 0 4px 14px rgba(36,28,25,.06);
	--ewd-shadow-md: 0 2px 6px rgba(36,28,25,.05), 0 14px 30px rgba(36,28,25,.09);
	--ewd-shadow-lg: 0 6px 16px rgba(36,28,25,.07), 0 30px 60px rgba(122,20,24,.13);
	--ewd-shadow-xl: 0 10px 24px rgba(36,28,25,.10), 0 50px 90px rgba(122,20,24,.18);
	--ewd-radius: 18px;
	--ewd-radius-lg: 26px;
	--ewd-radius-xl: 34px;
	--ewd-line: rgba(36,28,25,.10);
	--ewd-sky: #6fb7da; /* tertiary accent — the light-blue border on Barbara's shop sign (use sparingly) */

	/* Brand shades — the light/deep stops the gradients are built from */
	--ewd-red-1: #d83b44;
	--ewd-red-2: #c91f29;
	--ewd-red-3: #b3141d;
	--ewd-maroon-1: #8f1620;
	--ewd-maroon-2: #a8131c;
	--ewd-amber-1: #f9c860;
	--ewd-amber-3: #e5961f;
	--ewd-green-1: #27ae60;
	--ewd-green-2: #1f9d55;

	/* Reusable gradients — single source of truth */
	--ewd-grad-primary: linear-gradient(180deg, var(--ewd-red-1) 0%, var(--ewd-red-2) 52%, var(--ewd-red-3) 100%);
	--ewd-grad-secondary: linear-gradient(180deg, var(--ewd-amber-1) 0%, var(--wp--preset--color--secondary) 58%, var(--ewd-amber-3) 100%);
	--ewd-grad-maroon: linear-gradient(160deg, var(--wp--preset--color--primary-dark) 0%, var(--ewd-red-3) 55%, var(--wp--preset--color--primary-dark) 100%);
	--ewd-grad-feature: linear-gradient(160deg, var(--ewd-maroon-1) 0%, var(--ewd-red-3) 100%);
	--ewd-grad-green: linear-gradient(180deg, var(--ewd-green-1), var(--ewd-green-2));
	--ewd-grad-ink: linear-gradient(180deg, var(--wp--preset--color--primary), var(--ewd-maroon-1));

	/* Card / panel surfaces */
	--ewd-surface: #ffffff;
	--ewd-surface-warm: #fffdf8;
}

html { scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }

body {
	-webkit-font-smoothing: antialiased;
	text-rendering: optimizeLegibility;
	overflow-x: hidden;
	background: #fff;
}
:where(.ewd-section, [id]) { scroll-margin-top: 82px; }

/* Constrain measure for readability everywhere */
.ewd-section p { max-width: 64ch; }
.ewd-section .has-text-align-center { margin-left: auto; margin-right: auto; }

/* ============================================================
   1–2. Clean, flat section colors + a soft hairline divider.
   (No texture overlays — restraint reads as premium.)
   ============================================================ */
.ewd-section + .ewd-section { box-shadow: 0 -1px 0 var(--ewd-line); }

/* ============================================================
   3. Header
   ============================================================ */
.ewd-site-header {
	position: sticky; top: 0; z-index: 100;
	transition: box-shadow .25s ease, padding .25s ease;
	background: var(--ewd-grad-maroon);
	box-shadow: 0 2px 14px rgba(122,20,24,.22);
	border-bottom: 2px solid var(--ewd-sky) !important;
}
.ewd-site-header.is-scrolled { box-shadow: 0 4px 18px rgba(122,20,24,.32); }
.ewd-site-header .wp-block-site-title a,
.ewd-site-header .wp-block-navigation a,
.ewd-nav .wp-block-navigation-item__content,
.ewd-site-header .wp-block-navigation__responsive-container-open,
.ewd-site-header .wp-block-navigation__responsive-container-close { color: #fff !important; text-decoration: none !important; }
.ewd-site-header .ewd-eyebrow { color: rgba(255,255,255,.92) !important; }
.ewd-site-header .wp-block-site-title a:hover,
.ewd-nav .wp-block-navigation-item__content:hover,
.ewd-nav .wp-block-navigation-item__content:focus { color: var(--wp--preset--color--secondary) !important; text-decoration: none !important; }
.ewd-header-call .wp-block-button__link { white-space: nowrap; }
.ewd-site-header .wp-block-site-title, .ewd-site-header .wp-block-site-title a { white-space: nowrap; }
.ewd-nav ul.wp-block-navigation__container { flex-wrap: nowrap; }
.ewd-nav .wp-block-navigation-item__content { white-space: nowrap; }
/* Emergency header button — white pill with red text, stays visible on mobile */
.ewd-emergency-btn .wp-block-button__link { background: #fff !important; color: var(--wp--preset--color--primary) !important; white-space: nowrap; font-weight: 700; box-shadow: 0 2px 8px rgba(0,0,0,.16); }
.ewd-emergency-btn .wp-block-button__link:hover { background: #fff !important; color: var(--wp--preset--color--primary-dark) !important; transform: translateY(-1px); box-shadow: 0 4px 12px rgba(0,0,0,.22); }
@media (max-width: 600px) { .ewd-emergency-btn .wp-block-button__link { font-size: .76rem !important; padding: .5rem .75rem !important; } }
@media (max-width: 600px) {
	.ewd-site-header .wp-block-site-title { font-size: 1.2rem !important; }
	.ewd-header-call { display: none !important; } /* the sticky bottom call bar covers mobile */
}

/* ============================================================
   4. Buttons — gradient + layered depth + clean SVG icons
   ============================================================ */
.wp-block-button__link {
	position: relative;
	font-family: var(--wp--preset--font-family--body);
	font-weight: 600;
	letter-spacing: .005em;
	transition: transform .18s ease, box-shadow .2s ease, filter .2s ease;
}
.wp-block-button__link.has-primary-background-color,
.ewd-callbar a.ewd-call {
	background: var(--ewd-grad-primary) !important;
	color: #fff !important;
	box-shadow: inset 0 1px 0 rgba(255,255,255,.30), 0 8px 20px rgba(176,27,36,.30), 0 2px 6px rgba(122,20,24,.22);
}
.wp-block-button__link.has-primary-background-color:hover,
.ewd-callbar a.ewd-call:hover {
	transform: translateY(-2px);
	filter: brightness(1.06);
	box-shadow: inset 0 1px 0 rgba(255,255,255,.30), 0 14px 30px rgba(176,27,36,.36), 0 3px 8px rgba(122,20,24,.26);
}
.wp-block-button__link.has-secondary-background-color {
	background: var(--ewd-grad-secondary) !important;
	color: #3c2a10 !important;
	box-shadow: inset 0 1px 0 rgba(255,255,255,.45), 0 8px 18px rgba(226,150,40,.30), 0 2px 5px rgba(160,100,20,.18);
}
.wp-block-button__link.has-secondary-background-color:hover { transform: translateY(-2px); filter: brightness(1.04); }

/* Clean phone glyph on every click-to-call button */
.wp-block-button__link[href^="tel:"]::before {
	content: ""; display: inline-block; width: 1.02em; height: 1.02em;
	margin-right: .5em; vertical-align: -0.15em;
	background-color: currentColor;
	-webkit-mask: url('assets/img/icons/phone.svg') center/contain no-repeat;
	mask: url('assets/img/icons/phone.svg') center/contain no-repeat;
}

/* Ghost / outline */
.ewd-btn-ghost .wp-block-button__link {
	background: rgba(255,255,255,.5) !important;
	color: var(--wp--preset--color--primary) !important;
	box-shadow: inset 0 0 0 1.5px var(--wp--preset--color--primary), var(--ewd-shadow-xs);
	backdrop-filter: blur(2px);
}
.ewd-btn-ghost .wp-block-button__link:hover {
	background: var(--wp--preset--color--primary) !important; color: #fff !important;
	transform: translateY(-2px); box-shadow: var(--ewd-shadow-md);
}
/* Gold "Ask Barb" button — gold outline that fills solid gold on hover */
.ewd-btn-gold .wp-block-button__link {
	background: var(--ewd-grad-secondary) !important;
	color: var(--wp--preset--color--contrast) !important;
	box-shadow: var(--ewd-shadow-xs);
	transition: transform .2s ease, box-shadow .2s ease, filter .2s ease;
}
.ewd-btn-gold .wp-block-button__link:hover {
	background: var(--ewd-grad-secondary) !important; color: var(--wp--preset--color--contrast) !important;
	box-shadow: var(--ewd-shadow-md); transform: translateY(-2px); filter: brightness(1.05);
}
.ewd-btn-text { background: none; border: 0; color: var(--wp--preset--color--muted); font: 600 1rem/1 var(--wp--preset--font-family--body); cursor: pointer; padding: .5rem; }
.ewd-btn-text:hover { color: var(--wp--preset--color--primary); }

/* ============================================================
   5. Typography accents + hierarchy
   ============================================================ */
.ewd-eyebrow {
	display: inline-flex; align-items: center; gap: .6rem;
	text-transform: uppercase; letter-spacing: .18em; font-weight: 700;
	font-size: .78rem; color: var(--wp--preset--color--primary);
	margin: 0 0 .9rem;
}
.ewd-eyebrow::before { content: ""; width: 28px; height: 2px; background: var(--wp--preset--color--secondary); }
.has-text-align-center.ewd-eyebrow { display: flex; justify-content: center; }

.ewd-mark { position: relative; white-space: nowrap; }
.ewd-mark::after {
	content: ""; position: absolute; left: -.04em; right: -.04em; bottom: .08em; height: .34em;
	background: linear-gradient(90deg, rgba(242,169,59,.55), rgba(242,169,59,.30));
	border-radius: 3px; z-index: -1;
}
/* Hero headline slides in from the left; the highlight draws in last */
.ewd-reveal-left { opacity: 0; transform: translateX(-46px); transition: opacity .7s ease, transform .8s cubic-bezier(.18,.7,.2,1); }
.ewd-reveal-left.is-visible { opacity: 1; transform: none; }
.ewd-reveal-left .ewd-mark::after { transform: scaleX(0); transform-origin: left center; transition: transform .55s cubic-bezier(.2,.7,.2,1); }
.ewd-reveal-left.is-visible .ewd-mark::after { transform: scaleX(1); transition-delay: .85s; }
@media (prefers-reduced-motion: reduce) {
	.ewd-reveal-left { opacity: 1; transform: none; transition: none; }
	.ewd-reveal-left .ewd-mark::after { transform: none; }
}
.ewd-script { font-family: var(--wp--preset--font-family--heading); font-style: italic; font-weight: 400; color: var(--wp--preset--color--primary); }

/* ============================================================
   6. Hero
   ============================================================ */
.ewd-hero { position: relative; overflow: clip; isolation: isolate; }

.ewd-hero__intro p { max-width: 33rem; }

/* Layered photo frame: soft tinted panel + thick white edge + deep shadow */
.ewd-framed { position: relative; display: block; }
.ewd-framed::before {
	content: ""; position: absolute; inset: 16px -16px -16px 16px;
	background: linear-gradient(150deg, rgba(242,169,59,.5), rgba(242,169,59,.12));
	border-radius: var(--ewd-radius-xl); z-index: 0;
}
.ewd-framed--red::before { background: linear-gradient(150deg, rgba(204,33,40,.92), rgba(122,20,24,.5)); }
.ewd-framed img {
	position: relative; z-index: 1; display: block; width: 100%;
	border-radius: var(--ewd-radius-xl); border: 7px solid #fff;
	box-shadow: var(--ewd-shadow-xl);
	aspect-ratio: 4 / 5; object-fit: cover;
}
.ewd-framed--wide img { aspect-ratio: 16 / 11; }

/* Floating glass chip overlapping a photo */
.ewd-float {
	position: absolute; z-index: 3;
	background: rgba(255,255,255,.92); backdrop-filter: blur(6px);
	border: 1px solid rgba(255,255,255,.7);
	border-radius: 14px; padding: .7rem 1rem;
	box-shadow: var(--ewd-shadow-md);
	font-weight: 600; font-size: .92rem;
	display: flex; align-items: center; gap: .55rem;
}
.ewd-float__dot { width: 9px; height: 9px; border-radius: 50%; background: var(--wp--preset--color--secondary); box-shadow: 0 0 0 4px rgba(242,169,59,.25); }
.ewd-float--tl { top: 6%; left: 5%; }
.ewd-float--br { bottom: 6%; right: 5%; }
@media (prefers-reduced-motion: no-preference) {
	.ewd-float { animation: ewd-bob 4.5s ease-in-out infinite; }
	.ewd-float--br { animation-delay: -2.2s; }
	@keyframes ewd-bob { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-8px); } }
}
@media (max-width: 781px) { .ewd-float--tl { left: 4%; } .ewd-float--br { right: 4%; } }

/* ============================================================
   7. Cards
   ============================================================ */
.ewd-card {
	position: relative;
	background: var(--ewd-surface);
	border: 1px solid var(--ewd-line);
	border-radius: var(--ewd-radius-lg);
	padding: 1.7rem 1.55rem;
	box-shadow: var(--ewd-shadow-sm);
	transition: transform .22s ease, box-shadow .22s ease, border-color .22s ease;
	height: 100%;
}
.ewd-card:hover { transform: translateY(-6px); box-shadow: var(--ewd-shadow-lg); border-color: rgba(242,169,59,.6); }
.ewd-card__icon {
	width: 56px; height: 56px; display: grid; place-items: center; border-radius: 16px;
	background: linear-gradient(160deg, #fff2e4, #fbe2cf);
	color: var(--wp--preset--color--primary);
	box-shadow: inset 0 1px 0 rgba(255,255,255,.8), var(--ewd-shadow-xs);
	margin-bottom: 1.1rem;
}
.ewd-card__icon svg { width: 30px; height: auto; }
/* hover-revealed flavor text on the "What we do" cards */
/* Flavor text is always in the layout (space reserved) and just fades in —
   so hovering never reflows the card or shifts the page. */
.ewd-card__more { opacity: 0; margin-top: .65rem; color: var(--wp--preset--color--muted); font-size: .94rem; line-height: 1.5; transition: opacity .35s ease; }
.ewd-card:hover .ewd-card__more, .ewd-card:focus-within .ewd-card__more { opacity: 1; }

/* Bold feature card (the specialty) */
.ewd-feature {
	background: var(--ewd-grad-feature);
	color: #fff; border: 0; overflow: hidden; box-shadow: var(--ewd-shadow-lg);
}
.ewd-feature :where(h2,h3,p,li,.ewd-eyebrow) { color: #fff; position: relative; z-index: 1; }
.ewd-feature .ewd-eyebrow { color: var(--wp--preset--color--secondary); }
.ewd-feature .ewd-eyebrow::before { background: var(--wp--preset--color--secondary); }
.ewd-tag { display: inline-block; background: var(--wp--preset--color--secondary); color: var(--wp--preset--color--contrast); font: 700 .72rem/1 var(--wp--preset--font-family--body); letter-spacing: .12em; text-transform: uppercase; padding: .45rem .7rem; border-radius: 999px; }

/* ============================================================
   8. Grid utilities
   ============================================================ */
.ewd-grid { display: grid; gap: 1.4rem; align-items: stretch; }
.ewd-grid-3 { grid-template-columns: repeat(3, 1fr); }
.ewd-grid-2 { grid-template-columns: repeat(2, 1fr); }
@media (max-width: 900px) { .ewd-grid-3 { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 600px) { .ewd-grid-3, .ewd-grid-2 { grid-template-columns: 1fr; } }

/* ============================================================
   9. Stats
   ============================================================ */
.ewd-stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.25rem; }
.ewd-stat { text-align: center; padding: .3rem 1rem; display: flex; flex-direction: column; justify-content: center; }
.ewd-stat__num {
	font-family: var(--wp--preset--font-family--heading); font-weight: 700; line-height: 1.04;
	font-size: clamp(1.55rem, 1.25rem + 1vw, 2rem); letter-spacing: -0.02em;
	color: var(--wp--preset--color--primary);
}
.ewd-stat__label { margin-top: .28rem; color: var(--wp--preset--color--muted); font-weight: 600; font-size: .72rem; text-transform: uppercase; letter-spacing: .06em; line-height: 1.3; }
.ewd-stat + .ewd-stat { border-left: 1px solid var(--ewd-line); }
@media (max-width: 781px) { .ewd-stats { grid-template-columns: repeat(2, 1fr); gap: 1.5rem 1rem; } .ewd-stat:nth-child(odd) { border-left: 0; } }

/* ============================================================
   11. Process steps
   ============================================================ */
.ewd-step-card .wp-block-heading { min-height: 2.5em; display: flex; align-items: flex-end; }
.ewd-step-card .ewd-step-num {
	font-family: var(--wp--preset--font-family--heading); font-size: 1.15rem; font-weight: 700;
	width: 46px; height: 46px; border-radius: 50%; display: grid; place-items: center;
	background: var(--ewd-grad-primary); color: #fff;
	box-shadow: inset 0 1px 0 rgba(255,255,255,.3), 0 8px 18px rgba(176,27,36,.30);
}

/* ============================================================
   12. Testimonial
   ============================================================ */
.ewd-quote { font-family: var(--wp--preset--font-family--heading); font-size: clamp(1.45rem, 1rem + 1.8vw, 2.2rem); line-height: 1.32; font-weight: 500; }
.ewd-quote-mark { color: var(--wp--preset--color--secondary); font-family: var(--wp--preset--font-family--heading); }
.ewd-stars { color: var(--wp--preset--color--secondary); letter-spacing: 3px; font-size: 1.25rem; }

/* ============================================================
   13. FAQ accordion
   ============================================================ */
.ewd-faq details {
	background: var(--ewd-surface);
	border: 1px solid var(--ewd-line); border-radius: 16px;
	padding: 0 1.3rem; margin-bottom: .8rem; box-shadow: var(--ewd-shadow-xs);
	transition: border-color .2s ease, box-shadow .2s ease;
}
.ewd-faq details[open] { border-color: rgba(242,169,59,.7); box-shadow: var(--ewd-shadow-sm); }
.ewd-faq summary { list-style: none; cursor: pointer; padding: 1.15rem 0; font-family: var(--wp--preset--font-family--heading); font-weight: 600; font-size: 1.1rem; display: flex; justify-content: space-between; align-items: center; gap: 1rem; }
.ewd-faq summary::-webkit-details-marker { display: none; }
.ewd-faq summary::after { content: "+"; font-family: var(--wp--preset--font-family--body); font-weight: 400; font-size: 1.7rem; color: var(--wp--preset--color--primary); transition: transform .25s ease; line-height: 1; }
.ewd-faq details[open] summary::after { transform: rotate(45deg); }
.ewd-faq details > *:not(summary) { padding-bottom: 1.2rem; margin-top: -.2rem; color: var(--wp--preset--color--muted); }
/* faint moving colour shimmer across each FAQ bubble */
.ewd-faq details { position: relative; overflow: hidden; }
.ewd-faq summary, .ewd-faq details > *:not(summary) { position: relative; z-index: 1; }
.ewd-faq details::after { content: ""; position: absolute; inset: 0; z-index: 0; pointer-events: none; background: linear-gradient(115deg, transparent 33%, rgba(242,169,59,.13) 47%, rgba(204,33,40,.07) 54%, transparent 69%); background-size: 250% 100%; background-position: 160% 0; }
@media (prefers-reduced-motion: no-preference) { .ewd-faq details::after { animation: ewd-faq-shimmer 7s linear infinite; } }
@keyframes ewd-faq-shimmer { 0% { background-position: 165% 0; } 100% { background-position: -65% 0; } }
/* two independent FAQ columns — an open item only pushes its own column */
.ewd-faq-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1.4rem; align-items: start; }
.ewd-faq-col { display: flex; flex-direction: column; gap: .8rem; }
.ewd-faq details { margin-bottom: 0; }
@media (max-width: 781px) { .ewd-faq-grid { grid-template-columns: 1fr; } }

/* ============================================================
   14. Location / map
   ============================================================ */
.ewd-map { border-radius: var(--ewd-radius-lg); overflow: hidden; box-shadow: var(--ewd-shadow-md); border: 7px solid #fff; aspect-ratio: 16 / 11; width: 100%; }
.ewd-map iframe { width: 100%; height: 100%; border: 0; display: block; }
.ewd-entrance { display: inline-flex; align-items: center; gap: .55rem; background: var(--wp--preset--color--contrast); color: #fff; padding: .7rem 1.1rem; border-radius: 999px; font-weight: 600; box-shadow: var(--ewd-shadow-sm); }
.ewd-entrance::before { content: ""; width: 1.05em; height: 1.05em; background-color: var(--wp--preset--color--secondary); -webkit-mask: url('assets/img/icons/pin.svg') center/contain no-repeat; mask: url('assets/img/icons/pin.svg') center/contain no-repeat; }
.ewd-amenities { list-style: none; padding: 0; margin: 1.3rem 0 0; display: grid; gap: .55rem; }
.ewd-amenities li { display: flex; align-items: flex-start; gap: .6rem; font-size: .95rem; line-height: 1.4; }
.ewd-amenities li::before { content: ""; flex: none; width: 18px; height: 18px; margin-top: .12rem; background-color: var(--wp--preset--color--primary); -webkit-mask: url('assets/img/icons/check.svg') center/contain no-repeat; mask: url('assets/img/icons/check.svg') center/contain no-repeat; }

/* ============================================================
   15. Trust row
   ============================================================ */
.ewd-trustrow { display: flex; flex-wrap: wrap; gap: 1rem 1.4rem; align-items: center; }
.ewd-trustrow span { display: inline-flex; align-items: center; gap: .5rem; font-weight: 600; font-size: .95rem; }
.ewd-trust-check { display: inline-grid; place-items: center; width: 20px; height: 20px; border-radius: 50%; background: var(--ewd-grad-primary); flex: none; }
.ewd-trust-check::before { content: ""; width: 12px; height: 12px; background: #fff; -webkit-mask: url('assets/img/icons/check.svg') center/contain no-repeat; mask: url('assets/img/icons/check.svg') center/contain no-repeat; }

/* ============================================================
   16. Streamlined contact / callback form
   ============================================================ */
.ewd-form { background: var(--ewd-surface); border: 1px solid var(--ewd-line); border-radius: var(--ewd-radius-xl); padding: clamp(1.5rem, 1rem + 2vw, 2.5rem); box-shadow: var(--ewd-shadow-lg); max-width: 620px; }
.ewd-hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.ewd-form__head { margin-bottom: 1.5rem; }
.ewd-step-indicator { font: 700 .78rem/1 var(--wp--preset--font-family--body); letter-spacing: .12em; text-transform: uppercase; color: var(--wp--preset--color--primary); }
.ewd-progress { height: 7px; background: #f1ddcb; border-radius: 999px; margin-top: .55rem; overflow: hidden; box-shadow: inset 0 1px 2px rgba(122,20,24,.12); }
.ewd-progress-bar { display: block; height: 100%; width: 33%; background: var(--wp--preset--gradient--warm-brand); border-radius: 999px; transition: width .35s cubic-bezier(.2,.8,.2,1); }
.ewd-step { border: 0; padding: 0; margin: 0; }
.ewd-step__title { font-family: var(--wp--preset--font-family--heading); font-size: 1.5rem; font-weight: 600; padding: 0; line-height: 1.2; }
.ewd-step__hint { color: var(--wp--preset--color--muted); margin: .4rem 0 1.2rem; }
.ewd-chips { display: grid; grid-template-columns: repeat(2, 1fr); gap: .7rem; }
.ewd-chip { text-align: left; background: var(--ewd-surface-warm); border: 1.5px solid var(--ewd-line); border-radius: 14px; padding: .9rem 1rem; cursor: pointer; transition: border-color .18s ease, box-shadow .18s ease, transform .12s ease; display: flex; flex-direction: column; gap: .15rem; box-shadow: var(--ewd-shadow-xs); }
.ewd-chip:hover { border-color: var(--wp--preset--color--secondary); background: linear-gradient(180deg, #fff7e6 0%, #fdeac9 100%); transform: translateY(-2px); box-shadow: 0 8px 20px rgba(242,169,59,.28); }
.ewd-chip:hover .ewd-chip__desc { color: #8a6420; }
.ewd-chip.is-selected { border-color: var(--wp--preset--color--primary); background: linear-gradient(180deg,#fff,#fbe9e0); }
.ewd-chip__label { font-family: var(--wp--preset--font-family--heading); font-weight: 600; font-size: 1.02rem; }
.ewd-chip__desc { font-size: .82rem; color: var(--wp--preset--color--muted); line-height: 1.35; }
@media (max-width: 520px) { .ewd-chips { grid-template-columns: 1fr; } }
.ewd-label { display: block; margin-bottom: 1rem; font-weight: 600; font-size: .95rem; }
.ewd-label input, .ewd-label select, .ewd-label textarea { width: 100%; margin-top: .4rem; padding: .85rem .9rem; border: 1.5px solid var(--ewd-line); border-radius: 12px; font: 400 1rem/1.4 var(--wp--preset--font-family--body); background: #fff; color: var(--wp--preset--color--contrast); }
.ewd-label input:focus, .ewd-label select:focus, .ewd-label textarea:focus { outline: none; border-color: var(--ewd-sky); box-shadow: 0 0 0 3px rgba(111,183,218,.3); }
.ewd-field-error { border-color: var(--wp--preset--color--primary) !important; background: #fff6f5; }
.ewd-pricing-note { background: linear-gradient(180deg,#fdeede,#f8e2cf); border-left: 4px solid var(--wp--preset--color--secondary); border-radius: 12px; padding: 1rem 1.1rem; font-size: .95rem; line-height: 1.55; margin-bottom: 1.1rem; }
.ewd-step__nav { display: flex; justify-content: space-between; align-items: center; gap: 1rem; margin-top: .4rem; }
.ewd-submit { width: auto; }
.ewd-consent { text-align: center; color: var(--wp--preset--color--muted); font-size: .78rem; line-height: 1.45; margin: .85rem auto 0; max-width: 44ch; opacity: .9; }
.ewd-or { text-align: center; color: var(--wp--preset--color--muted); font-size: .85rem; margin: 1.1rem 0 .5rem; }
.ewd-call-inline { display: block; text-align: center; font-size: 1.1rem; }
.ewd-call-inline strong { font-family: var(--wp--preset--font-family--heading); }
.ewd-form-success { background: var(--ewd-surface); border: 1px solid var(--ewd-line); border-left: 5px solid #1f9d55; border-radius: var(--ewd-radius-lg); padding: 2rem; box-shadow: var(--ewd-shadow-md); max-width: 620px; }
.ewd-form-success__icon { width: 54px; height: 54px; border-radius: 50%; background: var(--ewd-grad-green); color: #fff; display: grid; place-items: center; font-size: 1.6rem; font-weight: 700; margin-bottom: 1rem; box-shadow: 0 8px 18px rgba(31,157,85,.3); }
.ewd-form-success__cta { margin-top: 1.2rem; }

/* ============================================================
   17b. Before / after gallery (a real-results differentiator)
   ============================================================ */
/* before/after carousel — shows 3, swipes/scrolls when more are added */
.ewd-ba-grid { display: grid; grid-auto-flow: column; grid-auto-columns: calc((100% - 2.2rem) / 3); gap: 1.1rem; overflow-x: auto; scroll-snap-type: x mandatory; padding-bottom: .7rem; scrollbar-width: thin; scrollbar-color: var(--wp--preset--color--secondary) transparent; }
.ewd-ba { scroll-snap-align: start; }
.ewd-ba-grid::-webkit-scrollbar { height: 7px; }
.ewd-ba-grid::-webkit-scrollbar-thumb { background: var(--wp--preset--color--secondary); border-radius: 99px; }
@media (max-width: 781px) { .ewd-ba-grid { grid-auto-columns: 86%; } }
.ewd-ba { margin: 0; background: var(--ewd-surface); border: 1px solid var(--ewd-line); border-radius: var(--ewd-radius-lg); padding: .8rem; box-shadow: var(--ewd-shadow-sm); transition: transform .22s ease, box-shadow .22s ease; }
.ewd-ba:hover { transform: translateY(-5px); box-shadow: var(--ewd-shadow-lg); }
.ewd-ba__pair { display: grid; grid-template-columns: 1fr 1fr; gap: .55rem; }
.ewd-ba__img { position: relative; border-radius: 13px; overflow: hidden; aspect-ratio: 4/5; box-shadow: var(--ewd-shadow-xs); }
.ewd-ba__img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ewd-ba__img span { position: absolute; left: .55rem; bottom: .55rem; font: 700 .66rem/1 var(--wp--preset--font-family--body); letter-spacing: .1em; text-transform: uppercase; color: #fff; padding: .35rem .55rem; border-radius: 999px; backdrop-filter: blur(2px); }
.ewd-ba__img--before span { background: rgba(122,20,24,.85); }
.ewd-ba__img--after span { background: var(--wp--preset--color--secondary); color: var(--wp--preset--color--contrast); }
.ewd-ba__cap { margin: .8rem .3rem .2rem; color: var(--wp--preset--color--muted); font-size: .92rem; }

/* ============================================================
   17c. Stacking tiles — sticky-stack base + scroll-driven recede
   (concept: scroll-driven-animations.style stacking cards)
   ============================================================ */
.ewd-stack { list-style: none; margin: 2.5rem 0 0; padding: 0; display: grid; gap: 2.5rem; }
.ewd-stack__item { position: sticky; top: calc(96px + var(--i, 0) * 16px); }
.ewd-tile {
	display: grid; grid-template-columns: 1.05fr 1fr; gap: clamp(1.2rem, 3vw, 2.6rem); align-items: center;
	background: var(--ewd-surface); border: 1px solid var(--ewd-line);
	border-radius: var(--ewd-radius-xl); box-shadow: var(--ewd-shadow-lg);
	padding: clamp(1.3rem, 3vw, 2.3rem); overflow: hidden;
}
.ewd-tile--alt { background: var(--ewd-grad-feature); border: 0; }
.ewd-tile { position: relative; }
.ewd-tile__media { margin: 0; position: relative; z-index: 1; }
.ewd-tile__media img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: var(--ewd-radius-lg); box-shadow: var(--ewd-shadow-md); display: block; }
.ewd-tile__body { position: relative; z-index: 1; }
.ewd-tile__eyebrow { font: 700 .76rem/1 var(--wp--preset--font-family--body); letter-spacing: .15em; text-transform: uppercase; color: var(--wp--preset--color--primary); margin: 0 0 .7rem; }
.ewd-tile h3 { font-size: clamp(1.5rem, 1.1rem + 1.6vw, 2.1rem); margin: 0 0 .6rem; }
.ewd-tile p { color: var(--wp--preset--color--muted); margin: 0; font-size: 1.05rem; line-height: 1.6; }
.ewd-tile--alt :where(h3, p) { color: #fff; }
.ewd-tile--alt .ewd-tile__eyebrow { color: var(--wp--preset--color--secondary); }
.ewd-tile--alt p { color: rgba(255,255,255,.88); }
@media (max-width: 781px) {
	.ewd-tile { grid-template-columns: 1fr; }
	.ewd-stack__item { top: 78px; }
	.ewd-tile__media { order: -1; }
}
@supports (animation-timeline: view()) {
	.ewd-stack__item {
		animation: ewd-stack-recede linear both;
		animation-timeline: view();
		animation-range: exit 5% exit 95%;
		transform-origin: 50% 0;
	}
	@keyframes ewd-stack-recede { to { transform: scale(.9); filter: brightness(.85); } }
}
@media (prefers-reduced-motion: reduce) {
	.ewd-stack__item { position: static; animation: none; }
}

/* ============================================================
   17d. Price guide (boxed) + clinic extras tile
   ============================================================ */
.ewd-pricecard { max-width: 900px; margin: 2rem auto 1.2rem; padding: .5rem 2.2rem; }
.ewd-pricecard:hover { transform: none; box-shadow: var(--ewd-shadow-sm); border-color: var(--ewd-line); }
.ewd-prices { margin: 0; display: grid; grid-template-columns: 1fr 1fr; column-gap: 2.8rem; }
.ewd-prices__row { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 1.1rem .2rem; border-bottom: 1px solid var(--ewd-line); }
.ewd-prices__row:nth-last-child(-n+2) { border-bottom: 0; }
.ewd-prices__name { font-family: var(--wp--preset--font-family--heading); font-weight: 600; font-size: 1.05rem; line-height: 1.25; }
.ewd-prices__name small { display: block; font-family: var(--wp--preset--font-family--body); font-weight: 400; font-size: .84rem; color: var(--wp--preset--color--muted); margin-top: .15rem; }
.ewd-prices__price { text-align: right; font-family: var(--wp--preset--font-family--heading); font-weight: 800; font-size: 1.3rem; color: var(--wp--preset--color--primary); white-space: nowrap; }
.ewd-prices__price span { display: block; font-size: .68rem; font-weight: 700; color: var(--wp--preset--color--muted); line-height: 1; margin-bottom: .15rem; text-transform: uppercase; letter-spacing: .1em; }
.ewd-prices__price--consult { display: inline-block; background: var(--wp--preset--color--blush); color: var(--wp--preset--color--primary-dark); font-size: .8rem; font-weight: 700; padding: .45rem .85rem; border-radius: 999px; }
.ewd-prices__note { text-align: center; color: var(--wp--preset--color--contrast); font-size: 1.02rem; line-height: 1.7; max-width: 620px; margin: 0 auto; }
@media (max-width: 640px) { .ewd-prices { grid-template-columns: 1fr; } .ewd-prices__row:nth-last-child(2) { border-bottom: 1px solid var(--ewd-line); } }

.ewd-extras { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.8rem; margin-top: clamp(3rem, 6vw, 5rem); padding: 1.8rem 2rem; background: var(--ewd-surface); border: 1px solid var(--ewd-line); border-radius: var(--ewd-radius-lg); box-shadow: var(--ewd-shadow-sm); }
.ewd-extras__item { display: flex; gap: 1rem; align-items: flex-start; }
.ewd-extras__item .ewd-card__icon { margin: 0; flex: none; }
.ewd-extras__item h3 { font-size: 1.1rem; margin: 0 0 .3rem; }
.ewd-extras__item p { margin: 0; color: var(--wp--preset--color--muted); font-size: .96rem; line-height: 1.5; }
@media (max-width: 600px) { .ewd-extras { grid-template-columns: 1fr; gap: 1.4rem; padding: 1.5rem; } }

/* Condensed coverage row (replaces the big cards) */
.ewd-assurances { display: grid; grid-template-columns: repeat(4, 1fr); gap: 2rem 1.8rem; margin-top: var(--wp--preset--spacing--50); }
.ewd-assurance { display: flex; align-items: flex-start; gap: .7rem; }
.ewd-assurance__ic { flex: none; width: 40px; height: 40px; display: grid; place-items: center; border-radius: 11px; background: linear-gradient(160deg, #fff2e4, #fbe2cf); color: var(--wp--preset--color--primary); box-shadow: inset 0 1px 0 rgba(255,255,255,.8); }
.ewd-assurance__ic svg { width: 20px; height: 20px; display: block; }
.ewd-assurance strong { display: block; font-family: var(--wp--preset--font-family--heading); font-weight: 700; font-size: .98rem; line-height: 1.2; }
.ewd-assurance small { display: block; color: var(--wp--preset--color--muted); font-size: .82rem; line-height: 1.35; margin-top: .15rem; }
@media (max-width: 880px) { .ewd-assurances { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 460px) { .ewd-assurances { grid-template-columns: 1fr; } }
.ewd-assurances--compact { margin-top: var(--wp--preset--spacing--40); gap: 1.1rem 1.6rem; max-width: 820px; margin-inline: auto; }
.ewd-assurances--compact .ewd-assurance { align-items: center; }
.ewd-assurances--compact .ewd-assurance strong { font-size: .92rem; }
.ewd-assurances--compact .ewd-assurance__ic { width: 34px; height: 34px; }
@media (max-width: 720px) { .ewd-assurances--compact { grid-template-columns: 1fr 1fr; } }

/* "Get in touch" scroll-drawn arrow pointing at the call pill */
.ewd-contact-left { position: relative; }
.ewd-cta-arrow { position: absolute; right: -8px; top: 39%; width: clamp(96px, 12vw, 140px); height: auto; z-index: 0; pointer-events: none; filter: drop-shadow(0 6px 8px rgba(122,20,24,.3)); }
.ewd-cta-arrow__shaft { stroke-dasharray: 100; stroke-dashoffset: 0; }
.ewd-cta-arrow__head { opacity: 1; }
.ewd-cta-arrow.ewd-anim-ready .ewd-cta-arrow__shaft { stroke-dashoffset: 100; }
.ewd-cta-arrow.ewd-anim-ready .ewd-cta-arrow__head { opacity: 0; }
.ewd-cta-arrow.ewd-anim-ready.is-drawn .ewd-cta-arrow__shaft { animation: ewd-arrow-draw 1.1s ease forwards; }
.ewd-cta-arrow.ewd-anim-ready.is-drawn .ewd-cta-arrow__head { animation: ewd-arrow-head .45s ease .85s forwards; }
@keyframes ewd-arrow-draw { to { stroke-dashoffset: 0; } }
@keyframes ewd-arrow-head { to { opacity: 1; } }
@media (prefers-reduced-motion: reduce) { .ewd-cta-arrow__shaft { stroke-dashoffset: 0; } .ewd-cta-arrow__head { opacity: 1; } }
@media (max-width: 781px) { .ewd-cta-arrow { display: none; } }

/* one-line review prompt on desktop */
.ewd-review-cta { max-width: none !important; }
@media (min-width: 620px) { .ewd-review-cta { white-space: nowrap; } }

/* ============================================================
   17e. Care-tips parallax banner (full-bleed page break)
   ============================================================ */
.ewd-banner { display: flex; align-items: center; justify-content: center; text-align: center; width: 100vw; margin-left: calc(50% - 50vw); min-height: clamp(230px, 30vw, 320px); padding: 2.5rem 1.25rem; background-size: cover; background-position: center; background-attachment: fixed; color: #fff; text-decoration: none; }
.ewd-banner__inner { display: flex; flex-direction: column; align-items: center; gap: .6rem; max-width: 640px; }
.ewd-banner .ewd-eyebrow { color: var(--wp--preset--color--secondary); }
.ewd-banner__title { font-family: var(--wp--preset--font-family--heading); font-weight: 800; letter-spacing: -0.02em; font-size: clamp(2rem, 1.2rem + 2.8vw, 3rem); line-height: 1.04; }
.ewd-banner__cta { font-weight: 700; font-size: 1.02rem; border-bottom: 2px solid var(--wp--preset--color--secondary); padding-bottom: 3px; transition: color .2s ease; }
.ewd-banner:hover .ewd-banner__cta { color: var(--wp--preset--color--secondary); }
@media (max-width: 781px) { .ewd-banner { background-attachment: scroll; } }

/* Dedicated page-header band (Denture Care, News) — a full-width branded banner
   so these read clearly as their own pages, not a continuation of the homepage. */
.ewd-page-head {
	position: relative; overflow: hidden; text-align: center;
	background:
		radial-gradient(900px 340px at 82% -45%, rgba(242,169,59,.20), transparent),
		linear-gradient(130deg, #7a1418 0%, #6b1430 40%, #4a1542 76%, #371038 100%);
	border-bottom: 4px solid var(--wp--preset--color--secondary);
}
.ewd-page-head > * { position: relative; z-index: 1; }
.ewd-page-head::after {
	content: ""; position: absolute; inset: 0; opacity: .5; pointer-events: none;
	background-image: radial-gradient(rgba(255,255,255,.06) 1px, transparent 1px);
	background-size: 22px 22px; mix-blend-mode: overlay;
}
.ewd-page-head .ewd-eyebrow { color: var(--wp--preset--color--secondary); justify-content: center; }
.ewd-page-head .ewd-eyebrow::before { background: var(--wp--preset--color--secondary); }
.ewd-page-head h1 { color: #fff; }
.ewd-page-head p { color: rgba(255,255,255,.92) !important; margin-left: auto; margin-right: auto; }

/* Sub-page accents — a touch of the deep-purple brand on Care / News pages */
.ewd-article .ewd-callout { background: linear-gradient(135deg, #f3e9f4, #fbeef0); border-left-color: #6b2a63; }
.ewd-article .ewd-callout strong { color: #5a2350; }
.ewd-article a, .ewd-news-card__date { color: #7a1845; }
.ewd-news-card { border-top: 3px solid #6b2a63; }

/* Friends & Links bar (full-width deep-purple band at the foot of the homepage) */
.ewd-links-bar {
	position: relative; overflow: hidden; text-align: center; color: #fff;
	background:
		radial-gradient(700px 320px at 14% -35%, rgba(242,169,59,.16), transparent),
		linear-gradient(135deg, #4a1542 0%, #5a2350 48%, #371038 100%);
	border-top: 4px solid var(--wp--preset--color--secondary);
}
.ewd-links-bar > * { position: relative; z-index: 1; }
.ewd-links-bar::after {
	content: ""; position: absolute; inset: 0; opacity: .5; pointer-events: none;
	background-image: radial-gradient(rgba(255,255,255,.06) 1px, transparent 1px);
	background-size: 22px 22px; mix-blend-mode: overlay;
}
.ewd-links-bar .ewd-eyebrow { color: var(--wp--preset--color--secondary); justify-content: center; }
.ewd-links-bar .ewd-eyebrow::before { background: var(--wp--preset--color--secondary); }
.ewd-links-bar h2.ewd-links-title { color: #fff; font-size: clamp(1.45rem, 1.2rem + 1.05vw, 1.85rem); margin-bottom: .2rem; }
.ewd-links-bar p.ewd-links-sub { color: rgba(255,255,255,.85); font-size: .98rem; max-width: 560px; margin: .2rem auto 0; line-height: 1.5; }
.ewd-links-bar .ewd-links-note a, .ewd-links-bar p a { color: var(--wp--preset--color--secondary); font-weight: 700; }
.ewd-link-pill .wp-block-button__link {
	background: #fff; border: 1px solid rgba(255,255,255,.5); color: var(--wp--preset--color--contrast);
	border-radius: 999px; font-weight: 600; gap: .45rem; font-size: .9rem;
	padding: .42rem 1rem !important; min-height: 40px;
	transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease;
}

/* Mobile: clip stray decorative overflow (decorative SVGs, sticky bar) — no sideways scroll */
html, body { overflow-x: clip; }
.ewd-callbar { left: 0 !important; right: 0 !important; width: 100% !important; box-sizing: border-box; max-width: 100vw; }

/* Reviews band was too tall — tighten the vertical padding */
#testimonials { padding-top: var(--wp--preset--spacing--40) !important; padding-bottom: var(--wp--preset--spacing--40) !important; }

/* News post cards — more breathing room for the text & layout */
.ewd-news-grid { gap: 1.9rem !important; }
.ewd-news-card > :not(.ewd-news-card__img) { margin-left: 1.5rem; margin-right: 1.5rem; }
.ewd-news-card__date { margin-top: 1.35rem; }
.ewd-news-card .wp-block-post-title { margin: .55rem 1.5rem .55rem; }
.ewd-news-card .wp-block-post-excerpt { margin-bottom: 1.55rem; line-height: 1.6; }

/* Contact-form title */
.ewd-form-title { font-size: 1.4rem; margin-bottom: .2rem; }
.ewd-form-subtitle { font-size: .96rem; margin-bottom: 1.1rem; }

/* Social share widget (posts, news & care pages) */
.ewd-share { display: flex; align-items: center; flex-wrap: wrap; gap: .55rem; margin: 2rem 0; }
.ewd-arch-bg .ewd-share, .ewd-links-bar .ewd-share { justify-content: center; margin-top: 1.4rem; }
.ewd-share__label { font-family: var(--wp--preset--font-family--heading); font-weight: 700; font-size: .9rem; color: var(--wp--preset--color--muted); margin-right: .25rem; }
.ewd-share__btn { display: inline-flex; align-items: center; justify-content: center; gap: .4rem; min-height: 44px; min-width: 44px; padding: 0 .75rem; border-radius: 999px; border: 1px solid var(--ewd-line); background: #fff; color: var(--wp--preset--color--primary-dark); cursor: pointer; text-decoration: none; transition: transform .15s ease, box-shadow .15s ease, background .15s ease, color .15s ease, border-color .15s ease; }
.ewd-share__btn svg { width: 20px; height: 20px; fill: currentColor; }
.ewd-share__btn--mail svg, .ewd-share__btn--sms svg, .ewd-share__btn--copy svg { fill: none; }
.ewd-share__btn:hover { transform: translateY(-2px); box-shadow: var(--ewd-shadow-sm); border-color: var(--wp--preset--color--secondary); }
.ewd-share__btn--fb:hover { background: #1877f2; color: #fff; border-color: #1877f2; }
.ewd-share__btn--x:hover { background: #111; color: #fff; border-color: #111; }
.ewd-share__btn--mail:hover { background: var(--wp--preset--color--primary); color: #fff; border-color: var(--wp--preset--color--primary); }
.ewd-share__btn--sms:hover { background: #1f9d55; color: #fff; border-color: #1f9d55; }
.ewd-share__copytext { font-weight: 600; font-size: .9rem; }
.ewd-share--copied .ewd-share__btn--copy { background: var(--wp--preset--color--primary); color: #fff; border-color: var(--wp--preset--color--primary); }
.ewd-link-pill .wp-block-button__link:hover { transform: translateY(-2px); box-shadow: 0 10px 22px rgba(0,0,0,.28); border-color: var(--wp--preset--color--secondary); }
.ewd-link-ico { font-size: 1.2em; line-height: 1; }
.ewd-link-pill--accent .wp-block-button__link { background: var(--wp--preset--color--secondary) !important; color: #3a2410 !important; border-color: var(--wp--preset--color--secondary) !important; font-weight: 700; }
.ewd-link-pill--accent .wp-block-button__link:hover { box-shadow: 0 12px 26px rgba(0,0,0,.32); }

/* (Active-section nav outline removed — the submenu revamp made it unnecessary.) */

/* "More" dropdown — a readable white panel that gently drops open (like the FAQ cards) */
.ewd-nav .wp-block-navigation__submenu-container {
	background: #fff; border: 1px solid var(--ewd-line); border-radius: 12px;
	box-shadow: var(--ewd-shadow-lg); padding: .4rem; min-width: 186px; margin-top: .55rem;
	opacity: 0; visibility: hidden; transform: translateY(-10px); transform-origin: top center;
	transition: opacity .3s ease, transform .34s cubic-bezier(.16,1,.3,1), visibility 0s linear .34s;
}
.ewd-nav .ewd-has-submenu:hover > .wp-block-navigation__submenu-container,
.ewd-nav .ewd-has-submenu:focus-within > .wp-block-navigation__submenu-container {
	opacity: 1; visibility: visible; transform: translateY(0);
	transition: opacity .3s ease, transform .34s cubic-bezier(.16,1,.3,1), visibility 0s;
}
.ewd-nav .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
	color: var(--wp--preset--color--contrast) !important; border: 0 !important; border-radius: 8px;
	padding: .55rem .85rem; display: block; white-space: nowrap;
}
.ewd-nav .wp-block-navigation__submenu-container .wp-block-navigation-item__content:hover {
	background: var(--wp--preset--color--paper); color: var(--wp--preset--color--primary) !important;
}

/* Care page article layout */
.ewd-article h2 { margin-top: 2.4rem; margin-bottom: .55rem; font-size: clamp(1.5rem, 1.2rem + 1vw, 1.9rem); }
.ewd-article > h2:first-child { margin-top: 0; }
.ewd-article p { font-size: 1.08rem; line-height: 1.75; max-width: none; }
.ewd-callout { background: var(--wp--preset--color--blush); border-left: 4px solid var(--wp--preset--color--secondary); border-radius: 10px; padding: 1rem 1.25rem; line-height: 1.6; max-width: none; }
.ewd-callout strong { color: var(--wp--preset--color--primary-dark); }
.ewd-doorimg { margin: 1.3rem auto 0 !important; }
.ewd-doorimg img { max-width: 230px; width: 100%; border-radius: 16px; box-shadow: var(--ewd-shadow-md); }
.ewd-emergency-note { max-width: 600px; margin: 1.2rem auto 0; text-align: left; }
.ewd-article-img { margin: 2.4rem 0 !important; }
.ewd-article-img img { width: 100%; aspect-ratio: 16 / 10; object-fit: cover; border-radius: 16px; box-shadow: var(--ewd-shadow-md); display: block; }
.ewd-article-img figcaption { text-align: center; font-size: .88rem; color: var(--wp--preset--color--muted); font-style: italic; margin-top: .6rem; }

/* "Find us" treasure-map trail behind the text. It is DRAWN toward the X as the
   section scrolls into view — the same scroll trigger (.is-drawn) the CTA arrow
   uses to point at the phone number — and THEN settles into a gentle marching /
   pulse loop. Base state (no JS) is a static, visible trail. */
.ewd-loc-left { position: relative; }
.ewd-loc-left > *:not(.ewd-map-route) { position: relative; z-index: 1; }
.ewd-map-route { position: absolute; top: 50%; left: -4%; width: min(122%, 480px); height: auto; transform: translateY(-50%); opacity: .32; z-index: 0; pointer-events: none; }
.ewd-map-route .ewd-route-x    { transform-box: fill-box; transform-origin: center; }
.ewd-map-route .ewd-route-ring { transform-box: fill-box; transform-origin: center; }

/* 1) Draw-on-scroll: JS adds .ewd-anim-ready (hides it via OPACITY — keeping full
      box area so the scroll observer still sees it; clipping to zero width would
      deadlock IntersectionObserver and it would never fire). Then .is-drawn (in
      view) wipes the dashes open left→right, toward the X. */
.ewd-map-route.ewd-anim-ready { opacity: 0; }
.ewd-map-route.ewd-anim-ready.is-drawn { animation: ewd-route-draw 1.7s ease forwards; }
@keyframes ewd-route-draw {
	from { opacity: .32; clip-path: inset(0 100% 0 0); }
	to   { opacity: .32; clip-path: inset(0 0 0 0); }
}

/* 2) Once drawn, the dashes march to the X, it stamps, the treasure ring pulses,
      and the start point glows (loops begin only after the 1.7s draw). */
.ewd-map-route.is-drawn .ewd-route-path  { animation: ewd-route-march 3s linear 1.7s infinite; }
@keyframes ewd-route-march { to { stroke-dashoffset: -26; } }
.ewd-map-route.is-drawn .ewd-route-x     { animation: ewd-route-x-stamp 3s ease-in-out 1.7s infinite; }
@keyframes ewd-route-x-stamp { 0%, 64%, 100% { transform: scale(1); } 80% { transform: scale(1.22); } }
.ewd-map-route.is-drawn .ewd-route-ring  { animation: ewd-route-ring 3s ease-out 1.7s infinite; }
@keyframes ewd-route-ring { 0%, 55% { opacity: 0; transform: scale(.5); } 74% { opacity: .5; } 100% { opacity: 0; transform: scale(1.35); } }
.ewd-map-route.is-drawn .ewd-route-start { animation: ewd-route-start 3s ease-in-out 1.7s infinite; }
@keyframes ewd-route-start { 0%, 100% { opacity: .45; } 50% { opacity: 1; } }

/* Continuous loops respect reduced-motion; the one-time draw still plays (a
   gentle line-draw, matching the site's motion policy and the CTA arrow). */
@media (prefers-reduced-motion: reduce) {
	.ewd-map-route.is-drawn .ewd-route-path, .ewd-map-route.is-drawn .ewd-route-x,
	.ewd-map-route.is-drawn .ewd-route-ring, .ewd-map-route.is-drawn .ewd-route-start { animation: none; }
}

/* ============================================================
   18. Footer
   ============================================================ */
.ewd-footer { position: relative; overflow: hidden; color: #fff;
	background:
		radial-gradient(100% 80% at 100% 0%, rgba(242,169,59,.18), transparent 55%),
		var(--ewd-grad-maroon);
}
.ewd-footer > * { position: relative; z-index: 1; }
.ewd-footer :where(a,p,h2,h3,li,span) { color: #fff; }
.ewd-footer a:hover { color: var(--wp--preset--color--secondary); text-decoration: none; }
.ewd-footer .wp-block-site-title a { color: #fff; }
.ewd-footer h3 { color: var(--wp--preset--color--secondary); font-size: .82rem; text-transform: uppercase; letter-spacing: .14em; }
.ewd-footer .wp-block-list { font-size: .9rem; line-height: 1.4; list-style: none; padding-left: 0; }
.ewd-footer .wp-block-list li + li { margin-top: .7rem; }
.ewd-footer .wp-block-list a { opacity: .92; }
/* smaller, more compact footer overall */
.ewd-footer { font-size: .84rem; }
.ewd-footer p, .ewd-footer li, .ewd-footer a { font-size: inherit !important; }
.ewd-footer .ewd-fnum, .ewd-footer .ewd-fnum a { font-size: 1.12rem !important; }
.ewd-footer .wp-block-site-title, .ewd-footer .wp-block-site-title a { font-size: 1.2rem !important; }
.ewd-footer h3 { font-size: .72rem !important; }
.ewd-footer .wp-block-columns { gap: 1.4rem 2rem !important; }
.ewd-footer .wp-block-separator { margin-top: var(--wp--preset--spacing--30) !important; }

/* ============================================================
   19. Mobile sticky call bar (extreme mobile-friendliness)
   ============================================================ */
.ewd-callbar { display: none; }
@media (max-width: 781px) {
	.ewd-callbar {
		display: grid; grid-template-columns: 1fr 1fr; gap: .6rem;
		position: fixed; left: 0; right: 0; bottom: 0; z-index: 200;
		padding: .6rem .75rem calc(.6rem + env(safe-area-inset-bottom));
		background: rgba(255,255,255,.92); backdrop-filter: blur(10px);
		box-shadow: 0 -6px 20px rgba(36,28,25,.14); border-top: 1px solid var(--ewd-line);
	}
	.ewd-callbar a { display: flex; align-items: center; justify-content: center; gap: .5rem; padding: .95rem 1rem; border-radius: 14px; font-weight: 700; font-family: var(--wp--preset--font-family--body); text-decoration: none; font-size: 1.02rem; }
	.ewd-callbar a.ewd-call { color: #fff; }
	.ewd-callbar a.ewd-book { background: #fff; color: var(--wp--preset--color--primary); box-shadow: inset 0 0 0 1.5px var(--wp--preset--color--primary); }
	.ewd-callbar a.ewd-call::before { content: ""; width: 1.05em; height: 1.05em; background: #fff; -webkit-mask: url('assets/img/icons/phone.svg') center/contain no-repeat; mask: url('assets/img/icons/phone.svg') center/contain no-repeat; }
	body { padding-bottom: 4.6rem; } /* room for the bar */
}

/* ============================================================
   20. Scroll-reveal & motion
   ============================================================ */
@media (prefers-reduced-motion: no-preference) {
	.ewd-reveal { opacity: 0; transform: translateY(24px); transition: opacity .7s ease, transform .7s cubic-bezier(.2,.8,.2,1); will-change: opacity, transform; }
	.ewd-reveal.is-visible { opacity: 1; transform: none; }
}

/* ============================================================
   21. Accessibility
   ============================================================ */
a:focus-visible, button:focus-visible, summary:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible, .wp-block-button__link:focus-visible {
	outline: 3px solid var(--wp--preset--color--secondary); outline-offset: 2px;
}
.wp-block-navigation__responsive-container.is-menu-open { background-color: var(--wp--preset--color--primary) !important; }

/* ============================================================
   22. Extra mobile tightening
   ============================================================ */
@media (max-width: 781px) {
	.ewd-section { padding-left: 1.1rem; padding-right: 1.1rem; }
	.ewd-framed::before { inset: 12px -12px -12px 12px; }
	.wp-block-columns { gap: 1.5rem !important; }
	h1 { letter-spacing: -0.02em; }
}

/* ============================================================
   23. v2.21 — cohesive imagery, richer motion & UI polish
   (appended last so these refinements win the cascade)
   ============================================================ */

/* ---- 23a. Unified image grade --------------------------------------
   Pull every photo — phone snaps, social grabs, lab shots — into one
   warm, lightly filmic look so they read as a single shoot. Purely a
   render-time treatment: the source files are never altered. */
:root {
	--ewd-grade: saturate(.9) contrast(1.045) brightness(1.015) sepia(.08);
	--ewd-wash: linear-gradient(165deg, rgba(242,169,59,.12), rgba(122,20,24,.05) 55%, rgba(36,28,25,.12));
}
.ewd-framed img,
.ewd-tile__media img,
.ewd-ba__img img,
.ewd-article-img img,
.ewd-card__strip {
	filter: var(--ewd-grade);
}
/* The clinic-door photo has heavy glass reflections/shadows — the warm grade
   made it look noisy/glitchy, so it renders clean and unfiltered. */
.ewd-doorimg img { filter: none; }
/* A faint warm wash over the simple rounded wrappers knits colours together */
.ewd-tile__media, .ewd-ba__img, .ewd-article-img { position: relative; }
.ewd-tile__media::after,
.ewd-ba__img::after,
.ewd-article-img::after {
	content: ""; position: absolute; inset: 0; z-index: 2; pointer-events: none;
	background: var(--ewd-wash); mix-blend-mode: multiply;
}
.ewd-tile__media::after { border-radius: var(--ewd-radius-lg); }
.ewd-ba__img::after { border-radius: 13px; }
.ewd-article-img::after { border-radius: 16px; }

/* ---- 23b. "What we do" cards — photo accent strip + beefier icons --- */
.ewd-card__icon {
	width: 64px; height: 64px; border-radius: 18px;
	background: linear-gradient(160deg, #ffe9d2, #f6cba2);
	box-shadow: inset 0 1px 0 rgba(255,255,255,.85), 0 7px 16px rgba(176,27,36,.16);
	margin-bottom: 1.15rem;
}
.ewd-card__icon svg { width: 34px; }
#services .ewd-card { overflow: hidden; }
#services .ewd-card .ewd-card__icon {
	margin-top: -34px; position: relative; z-index: 2; border: 3px solid #fff;
}
.ewd-card__strip {
	height: 86px; margin: -1.7rem -1.55rem 0; position: relative;
	background-image: var(--img); background-size: 132% auto;
	background-position: 50% 50%; background-repeat: no-repeat;
}
.ewd-card__strip::after {
	content: ""; position: absolute; inset: 0;
	background: linear-gradient(180deg, rgba(122,20,24,.08), rgba(36,28,25,.30));
	mix-blend-mode: multiply;
}
.ewd-card:hover .ewd-card__strip { filter: var(--ewd-grade) brightness(1.05); }
@media (prefers-reduced-motion: no-preference) {
	.ewd-card__strip { animation: ewd-strip-pan 22s ease-in-out infinite alternate; }
	@keyframes ewd-strip-pan { from { background-position: 14% 50%; } to { background-position: 86% 50%; } }
}

/* ---- 23c. On-load reveal — fires on first paint, never on scroll ---- */
@media (prefers-reduced-motion: no-preference) {
	.ewd-reveal-load { opacity: 0; transform: translateY(20px); transition: opacity .85s ease, transform .95s cubic-bezier(.2,.8,.2,1); will-change: opacity, transform; }
	.ewd-reveal-load.is-visible { opacity: 1; transform: none; }
}

/* ---- 23d. Pricing — more depth & punch ------------------------------ */
.ewd-pricecard { padding: 0; overflow: hidden; }
.ewd-price-head {
	display: flex; align-items: center; justify-content: space-between; gap: 1rem;
	background: var(--ewd-grad-maroon); color: #fff; padding: 1.05rem 2.2rem;
	box-shadow: inset 0 -1px 0 rgba(255,255,255,.12);
}
.ewd-price-head strong { font-family: var(--wp--preset--font-family--heading); font-weight: 700; font-size: 1.12rem; }
.ewd-price-head span { font-size: .72rem; text-transform: uppercase; letter-spacing: .12em; opacity: .85; font-weight: 700; }
.ewd-pricecard .ewd-prices { padding: .6rem 2.2rem 1.2rem; }
.ewd-prices__row { padding: 1.05rem .9rem; border-radius: 12px; }
.ewd-prices__price { background: linear-gradient(180deg, var(--ewd-red-1), var(--ewd-red-3)); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }
.ewd-prices__row--feature { background: linear-gradient(180deg,#fff6e6,#fbe7c8); box-shadow: inset 0 0 0 1.5px rgba(242,169,59,.55); }
/* Pricing is a reference chart, not a menu of buttons — no mouse reactions */
.ewd-pricecard, .ewd-pricecard *, .ewd-prices__row { transition: none !important; cursor: default; }
.ewd-pricecard:hover, .ewd-prices__row:hover { transform: none; box-shadow: var(--ewd-shadow-sm); }
.ewd-prices__tag { display: inline-block; margin-top: .25rem; background: var(--wp--preset--color--secondary); color: var(--wp--preset--color--contrast); font: 700 .6rem/1 var(--wp--preset--font-family--body); letter-spacing: .1em; text-transform: uppercase; padding: .3rem .5rem; border-radius: 999px; }

/* ---- 23e. Mobile header declutter + consistent buttons -------------- */
@media (max-width: 600px) {
	.ewd-emergency-btn { display: none !important; } /* was clipping; the sticky red call bar covers urgent calls */
	.ewd-site-header .ewd-eyebrow { display: none; }   /* free the crowded top row */
}
.wp-block-button__link { min-height: 2.9rem; display: inline-flex; align-items: center; justify-content: center; text-align: center; }
@media (max-width: 600px) {
	.ewd-hero .wp-block-button, #contact .wp-block-button, .ewd-hero .wp-block-button__link { width: 100%; }
}

/* ---- 23f. FAQ content fade (paired with slower JS height tween) ----- */
.ewd-faq summary::after { transition: transform .45s cubic-bezier(.33,0,.2,1) !important; }
.ewd-faq details > *:not(summary) { transition: opacity .4s ease; }

/* ---- 23g. Find Us — map fills the column and balances the content -- */
.ewd-map { aspect-ratio: auto; height: clamp(440px, 52vh, 620px); width: 100%; }
@media (max-width: 781px) { .ewd-map { height: 340px; } }

/* ---- 23h. Multi-step form — fleshed-out progress bar --------------- */
.ewd-form__head { margin-bottom: 1.7rem; }
.ewd-step-indicator { display: inline-flex; align-items: center; gap: .5rem; }
.ewd-step-indicator::before { content: ""; width: 9px; height: 9px; border-radius: 50%; background: var(--wp--preset--color--primary); box-shadow: 0 0 0 4px rgba(204,33,40,.15); }
.ewd-progress { height: 10px; background: #f1ddcb; box-shadow: inset 0 1px 3px rgba(122,20,24,.16); }
.ewd-progress-bar { background: var(--ewd-grad-primary); box-shadow: 0 1px 4px rgba(176,27,36,.4); position: relative; overflow: hidden; }
.ewd-progress-bar::after { content: ""; position: absolute; inset: 0; background: linear-gradient(100deg, transparent 30%, rgba(255,255,255,.5) 50%, transparent 70%); background-size: 200% 100%; }
@media (prefers-reduced-motion: no-preference) { .ewd-progress-bar::after { animation: ewd-prog-shine 2.4s linear infinite; } }
@keyframes ewd-prog-shine { from { background-position: 180% 0; } to { background-position: -80% 0; } }
.ewd-steps-dots { display: flex; gap: .4rem; margin-top: .6rem; }
.ewd-steps-dots span { flex: 1; height: 4px; border-radius: 999px; background: #ecd9c6; transition: background .35s ease; }
.ewd-steps-dots span.is-done { background: var(--wp--preset--color--secondary); }

/* ---- 23i. Reviews wall — easy to grow, reads as real Google reviews - */
.ewd-reviews { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.2rem; margin-top: 2rem; align-items: start; }
@media (max-width: 900px) { .ewd-reviews { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 600px) { .ewd-reviews { grid-template-columns: 1fr; } }
.ewd-review { background: var(--ewd-surface); border: 1px solid var(--ewd-line); border-radius: var(--ewd-radius-lg); padding: 1.4rem 1.45rem; box-shadow: var(--ewd-shadow-sm); transition: transform .22s ease, box-shadow .22s ease; display: flex; flex-direction: column; gap: .55rem; }
.ewd-review:hover { transform: translateY(-5px); box-shadow: var(--ewd-shadow-lg); }
.ewd-review__stars { color: var(--wp--preset--color--secondary); letter-spacing: 2px; font-size: 1.02rem; }
.ewd-review__text { font-size: .98rem; line-height: 1.6; color: var(--wp--preset--color--contrast); margin: 0; }
.ewd-review__who { display: flex; align-items: center; gap: .65rem; margin-top: auto; padding-top: .4rem; }
.ewd-review__avatar { flex: none; width: 38px; height: 38px; border-radius: 50%; display: grid; place-items: center; font-family: var(--wp--preset--font-family--heading); font-weight: 700; color: #fff; background: var(--ewd-grad-primary); box-shadow: var(--ewd-shadow-xs); }
.ewd-review__name { font-weight: 700; font-size: .92rem; line-height: 1.1; }
.ewd-review__role { font-size: .8rem; color: var(--wp--preset--color--muted); }
.ewd-reviews-head { display: flex; flex-direction: column; align-items: center; gap: .3rem; }
.ewd-reviews-rating { display: inline-flex; align-items: center; gap: .55rem; font-weight: 600; color: var(--wp--preset--color--muted); font-size: .96rem; }
.ewd-reviews-rating strong { font-family: var(--wp--preset--font-family--heading); font-size: 1.5rem; color: var(--wp--preset--color--primary); }
/* Few reviews still look intentional — a single one becomes a featured card */
.ewd-reviews--1 { grid-template-columns: 1fr; max-width: 720px; margin-inline: auto; }
.ewd-reviews--1 .ewd-review { padding: 2.1rem 2.3rem; align-items: center; text-align: center; }
.ewd-reviews--1 .ewd-review__stars { font-size: 1.25rem; letter-spacing: 3px; }
.ewd-reviews--1 .ewd-review__text { font-size: 1.2rem; line-height: 1.65; font-family: var(--wp--preset--font-family--heading); font-weight: 500; }
.ewd-reviews--1 .ewd-review__who { justify-content: center; }
@media (min-width: 901px) { .ewd-reviews--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); max-width: 760px; margin-inline: auto; } }

/* ---- 23j. Footer social — logo links (Facebook now; room for more) -- */
.ewd-social { display: flex; gap: .6rem; margin-top: 1rem; }
.ewd-social a { display: inline-grid; place-items: center; width: 40px; height: 40px; border-radius: 11px; background: rgba(255,255,255,.12); border: 1px solid rgba(255,255,255,.18); transition: background .2s ease, transform .2s ease; }
.ewd-social a:hover { background: rgba(255,255,255,.22); transform: translateY(-2px); }
.ewd-social svg { width: 20px; height: 20px; fill: #fff; }

/* ---- 23k. Contact — subtle dashed "X marks the spot": fades in on
   scroll, and the dashes gently march along the line (always-on, subtle). */
.ewd-draw-dash { position: absolute; pointer-events: none; z-index: 0; opacity: .5; }
.ewd-draw-dash.ewd-anim-ready { clip-path: inset(0 100% 0 0); }
.ewd-draw-dash.ewd-anim-ready.is-drawn { animation: ewd-route-wipe 1.6s ease forwards; }
/* keep the dashed connector + arrow behind the contact text */
.ewd-contact-left > *:not(.ewd-cta-arrow):not(.ewd-draw-dash) { position: relative; z-index: 1; }
.ewd-cta-arrow { opacity: .9; }

/* ---- 23l. Keep the "main line is fastest" sentence on a single line - */
.ewd-oneline { white-space: nowrap; max-width: none !important; font-size: clamp(.7rem, 2.9vw, .92rem) !important; }

/* ============================================================
   24. Hybrid motion policy
   Gentle effects play for EVERYONE (declared with no media query so
   they win the cascade even when the OS asks to reduce motion). Only
   genuinely heavy effects — parallax, infinite bobbing, scroll-driven
   recede — still honour the preference further down.
   ============================================================ */
.ewd-reveal { opacity: 0; transform: translateY(30px); transition: opacity 1.3s ease, transform 1.6s cubic-bezier(.16,.8,.24,1); will-change: opacity, transform; }
.ewd-reveal.is-visible { opacity: 1; transform: none; }
.ewd-reveal-load { opacity: 0; transform: translateY(26px); transition: opacity 1.5s ease, transform 1.9s cubic-bezier(.16,.8,.24,1); will-change: opacity, transform; }
.ewd-reveal-load.is-visible { opacity: 1; transform: none; }
.ewd-reveal-left { opacity: 0; transform: translateX(-56px); transition: opacity 1.4s ease, transform 1.9s cubic-bezier(.16,.8,.24,1); }
.ewd-reveal-left.is-visible { opacity: 1; transform: none; }
.ewd-reveal-left .ewd-mark::after { transform: scaleX(0); transform-origin: left center; transition: transform .8s cubic-bezier(.2,.7,.2,1); }
.ewd-reveal-left.is-visible .ewd-mark::after { transform: scaleX(1); transition-delay: 1.5s; }

/* Entrance pill slides in from the side on scroll (task 23) */
.ewd-reveal-sidein { transform: translateX(-34px); }
.ewd-reveal-sidein.is-visible { transform: none; }

/* Ambient loops that should always feel alive */
.ewd-card__strip { animation: ewd-strip-pan 22s ease-in-out infinite alternate; }
.ewd-progress-bar::after { animation: ewd-prog-shine 2.2s linear infinite; }
/* FAQ shimmer only sweeps on hover or while open — not all at once forever */
.ewd-faq details::after { animation: none; }
.ewd-faq details:hover::after,
.ewd-faq details[open]::after { animation: ewd-faq-shimmer 3.4s ease-in-out infinite; }

/* Amenities — small "flavour" line, deliberately understated */
.ewd-amenities { gap: .32rem; margin-top: 1rem; }
.ewd-amenities li { font-size: .78rem; line-height: 1.3; color: var(--wp--preset--color--muted); }
.ewd-amenities li::before { width: 13px; height: 13px; margin-top: .15rem; }

/* Line-draw accents draw in even under reduce-motion (higher specificity wins) */
.ewd-cta-arrow.ewd-anim-ready .ewd-cta-arrow__shaft { stroke-dashoffset: 100; }
.ewd-cta-arrow.ewd-anim-ready .ewd-cta-arrow__head { opacity: 0; }
.ewd-cta-arrow.ewd-anim-ready.is-drawn .ewd-cta-arrow__shaft { animation: ewd-arrow-draw 1.1s ease forwards; }
.ewd-cta-arrow.ewd-anim-ready.is-drawn .ewd-cta-arrow__head { animation: ewd-arrow-head .45s ease .85s forwards; }
/* the "find us" treasure trail draws in on scroll too (like the arrow above).
   Hide via opacity (NOT a zero-width clip) so the scroll observer can still see it. */
.ewd-map-route.ewd-anim-ready { opacity: 0; }
.ewd-map-route.ewd-anim-ready.is-drawn { animation: ewd-route-draw 1.7s ease forwards; }

/* The genuinely heavy effects still respect the OS preference */
/* Stats — give the numbers more room so they don't crowd the divider lines */
.ewd-stats { gap: 1.4rem; }
.ewd-stat { padding: .35rem 1.5rem; }
@media (max-width: 781px) { .ewd-stat { padding: .4rem 1.2rem; } }

@media (prefers-reduced-motion: reduce) {
	.ewd-float { animation: none !important; }
	.ewd-stack__item { animation: none !important; }
}

/* ---- 25. Hero photo — frame holds still; the PHOTO slowly expands -----
   The white frame and its size stay put; only the image inside zooms,
   clipped by the frame, like a slow breath. */
.ewd-hero__photo { position: relative; }
.ewd-hero__photo::before {
	content: ""; position: absolute; inset: 16px -16px -16px 16px; z-index: 0;
	background: linear-gradient(150deg, rgba(242,169,59,.5), rgba(242,169,59,.12));
	border-radius: var(--ewd-radius-xl); background-size: 230% 230%;
	animation: ewd-frame-fade 11s ease-in-out infinite alternate;
}
.ewd-hero__photo .ewd-framed {
	position: relative; z-index: 1; overflow: hidden;
	border: 7px solid #fff; border-radius: var(--ewd-radius-xl);
	box-shadow: var(--ewd-shadow-xl); aspect-ratio: 4 / 5;
}
.ewd-hero__photo .ewd-framed::before { display: none; } /* glow lives on the column now */
.ewd-hero__photo .ewd-framed img {
	width: 100%; height: 100%; aspect-ratio: auto;
	border: 0; border-radius: 0; box-shadow: none;
	transition: transform 5s cubic-bezier(.2,.6,.2,1); transform-origin: center;
}
.ewd-hero__photo .ewd-framed:hover img { transform: scale(1.08); }

/* The soft coloured fade behind every framed photo drifts slowly, the same
   way the FAQ bubbles shimmer — a quiet, always-on glow. */
.ewd-framed::before { background-size: 230% 230%; animation: ewd-frame-fade 11s ease-in-out infinite alternate; }
@keyframes ewd-frame-fade { from { background-position: 8% 0%; } to { background-position: 92% 100%; } }

/* ---- 26. "Extras" row (in-house lab + cleaning products) — more juice -
   Tinted panel, bold red-gradient icons, a divider, and a hover wash so
   the two perks read as real highlights rather than fine print. */
.ewd-extras { background: linear-gradient(155deg, #fffaf3 0%, var(--wp--preset--color--blush) 100%); gap: 0; padding: 0; overflow: hidden; box-shadow: var(--ewd-shadow-md); border-color: rgba(242,169,59,.45); }
.ewd-extras__item { align-items: center; gap: 1.15rem; padding: 1.7rem 1.9rem; position: relative; transition: background .25s ease; }
.ewd-extras__item::before { content: ""; position: absolute; left: 0; top: 14%; bottom: 14%; width: 4px; border-radius: 0 4px 4px 0; background: var(--ewd-grad-secondary); }
.ewd-extras__item + .ewd-extras__item { box-shadow: inset 1px 0 0 rgba(122,20,24,.10); }
.ewd-extras__item:hover { background: rgba(255,255,255,.55); }
.ewd-extras__item .ewd-card__icon { width: 60px; height: 60px; background: var(--ewd-grad-primary); color: #fff; box-shadow: inset 0 1px 0 rgba(255,255,255,.3), 0 8px 18px rgba(176,27,36,.28); }
.ewd-extras__item h3 { font-size: 1.16rem; color: var(--wp--preset--color--primary-dark); }
@media (max-width: 600px) {
	.ewd-extras__item + .ewd-extras__item { box-shadow: inset 0 1px 0 rgba(122,20,24,.10); }
	.ewd-extras__item::before { top: 0; bottom: auto; left: 14%; right: 14%; width: auto; height: 4px; border-radius: 0 0 4px 4px; }
}

/* ---- 27. "How it works" steps — more compact, less bulky ----------- */
#process .ewd-grid { max-width: 940px; margin-inline: auto; }
#process .ewd-card { padding: 1.25rem 1.35rem; }
.ewd-step-card .wp-block-heading { min-height: 0; font-size: 1.12rem; align-items: flex-start; margin-top: .7rem !important; }
.ewd-step-card .ewd-step-num { width: 40px; height: 40px; font-size: 1.02rem; }
#process .ewd-card p { font-size: .95rem; line-height: 1.5; }

/* ---- 28. Frosted blur + fade at the very top, once you scroll ------- */
.ewd-site-header::after {
	content: ""; position: absolute; top: 100%; left: 0; right: 0; height: 66px;
	pointer-events: none; opacity: 0; transition: opacity .5s ease;
	background: linear-gradient(to bottom, rgba(251,244,236,.55), rgba(251,244,236,0));
	-webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
	-webkit-mask-image: linear-gradient(to bottom, #000 0%, #000 28%, transparent 100%);
	mask-image: linear-gradient(to bottom, #000 0%, #000 28%, transparent 100%);
}
.ewd-site-header.is-scrolled::after { opacity: 1; }

/* ---- 29. Soften the overall vibe — gentler shadows, warmer paper ---- */
:root {
	--ewd-shadow-sm: 0 1px 2px rgba(36,28,25,.03), 0 6px 18px rgba(36,28,25,.05);
	--ewd-shadow-md: 0 2px 8px rgba(36,28,25,.04), 0 16px 38px rgba(36,28,25,.06);
	--ewd-shadow-lg: 0 6px 18px rgba(36,28,25,.05), 0 34px 70px rgba(122,20,24,.10);
	--ewd-shadow-xl: 0 10px 26px rgba(36,28,25,.07), 0 54px 96px rgba(122,20,24,.14);
}
body { background: #fdf8f2; }

/* ---- 30. "What we do" cards — a little shorter --------------------- */
.ewd-card__strip { height: 64px; }
#services .ewd-card { padding-bottom: 1.3rem; }
#services .ewd-card .ewd-card__icon { margin-top: -30px; margin-bottom: .8rem; }
#services .ewd-card h3 { margin-bottom: .35rem; }
#services .ewd-card p.has-muted-color { font-size: .95rem; line-height: 1.45; }
.ewd-card__more { margin-top: .45rem; }

/* ---- 31. Before photos — correct the harsh/dark lighting ----------- */
.ewd-ba__img--before img { filter: var(--ewd-grade) brightness(1.14) contrast(.93) saturate(.97); }

/* ---- 32. Reviews auto-scroll when MORE than 3 (no user controls) --- */
.ewd-reviews--auto { grid-template-columns: none; grid-auto-flow: column; grid-auto-columns: minmax(290px, 330px); overflow: hidden; max-width: none; margin-inline: 0; }

/* ---- 33. Card depth — a subtle 3D lift without harshness ----------- */
.ewd-card:not(.ewd-feature) {
	background-image: linear-gradient(180deg, #ffffff 0%, #fffbf4 100%);
	box-shadow: inset 0 1px 0 rgba(255,255,255,.92), var(--ewd-shadow-md);
	border-color: rgba(36,28,25,.07);
}

/* ---- 34. Subtle hi-def grain on the warm (blush/paper) sections ----
   A faint fractal-noise tile sits in the background layer (behind all
   content, so text stays crisp) for depth without looking dirty. */
.has-blush-background-color, .has-paper-background-color {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='150' height='150'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.05'/%3E%3C/svg%3E");
	background-size: 150px 150px;
}

/* ---- 35. Credential / trust badges -------------------------------- */
.ewd-badges { display: flex; flex-wrap: wrap; gap: .6rem; margin-top: 1.6rem; }
.ewd-badge { display: inline-flex; align-items: center; gap: .5rem; background: #fff; border: 1px solid var(--ewd-line); border-radius: 999px; padding: .5rem .9rem; font-weight: 600; font-size: .85rem; box-shadow: var(--ewd-shadow-xs); color: var(--wp--preset--color--primary-dark); }
.ewd-badge svg { width: 19px; height: 19px; color: var(--wp--preset--color--primary); flex: none; }

/* ---- 36. News / blog cards — even flex layout, "Read more" pinned bottom */
.ewd-news-grid { gap: 2.2rem !important; }
.ewd-news-card { display: flex; flex-direction: column; height: 100%; padding: 0 2rem 2rem; overflow: hidden; }
.ewd-news-card__img { margin: 0 -2rem 1.5rem !important; }   /* break out full-width */
.ewd-news-card__img img { width: 100%; aspect-ratio: 16 / 10; object-fit: cover; display: block; filter: var(--ewd-grade); }
.ewd-news-card > :not(.ewd-news-card__img) { margin-left: 0; margin-right: 0; }   /* gutters come from card padding */
.ewd-news-card__date { margin-top: 0; font-size: .78rem; letter-spacing: .06em; text-transform: uppercase; color: var(--wp--preset--color--muted); font-weight: 700; }
.ewd-news-card .wp-block-post-title { margin: .6rem 0 0; line-height: 1.3; }
.ewd-news-card .wp-block-post-title a { color: var(--wp--preset--color--contrast); text-decoration: none; }
.ewd-news-card .wp-block-post-title a:hover { color: var(--wp--preset--color--primary); }
.ewd-news-card .wp-block-post-excerpt { display: flex; flex-direction: column; flex: 1 1 auto; margin: .95rem 0 0; color: var(--wp--preset--color--muted); font-size: .96rem; line-height: 1.6; }
.ewd-news-card .wp-block-post-excerpt__excerpt { margin: 0; }
.ewd-news-card .wp-block-post-excerpt__more-link { margin-top: auto; padding-top: 1.25rem; display: inline-block; color: var(--wp--preset--color--primary); font-weight: 600; }
.ewd-news-card:not(:has(.ewd-news-card__img)) > *:first-child { margin-top: 1.9rem; }

/* ---- 37. Deeper, passionate purple ---------------------------------
   A heavier plum counter-tone to the reds and warm light. It lives in the
   DEEP elements (header, footer, the specialty feature card, the alt
   stacking tiles, deep shadows, the arch sections) so it adds richness and
   depth without fighting the bright, warm content areas. */
:root {
	--ewd-plum-1: #5a2350;
	--ewd-plum-2: #3a153c;
	--ewd-grad-maroon: linear-gradient(160deg, #481a44 0%, var(--wp--preset--color--primary-dark) 50%, var(--ewd-red-3) 100%);
	--ewd-grad-feature: linear-gradient(155deg, #5a2350 0%, var(--ewd-maroon-1) 52%, var(--ewd-red-3) 100%);
	--ewd-shadow-lg: 0 6px 18px rgba(58,21,60,.06), 0 34px 70px rgba(74,26,68,.13);
	--ewd-shadow-xl: 0 10px 26px rgba(58,21,60,.08), 0 54px 96px rgba(74,26,68,.17);
}
.ewd-footer {
	background:
		radial-gradient(120% 95% at 0% 100%, rgba(90,35,80,.5), transparent 55%),
		radial-gradient(100% 80% at 100% 0%, rgba(242,169,59,.16), transparent 55%),
		var(--ewd-grad-maroon);
}
/* a quiet plum glow in the corner of the warm "arch" sections */
.ewd-arch-bg { position: relative; }
.ewd-arch-bg::after {
	content: ""; position: absolute; inset: 0; pointer-events: none; z-index: 0;
	background: radial-gradient(75% 60% at 92% 4%, rgba(90,35,80,.08), transparent 60%);
}
.ewd-arch-bg > * { position: relative; z-index: 1; }
/* the gold highlight under "right" picks up a touch more depth beside plum */
.ewd-mark::after { background: linear-gradient(90deg, rgba(242,169,59,.6), rgba(242,169,59,.32)); }

/* ---- 38. Push the purple further — plum becomes a real part of the
   palette: a dramatic deep-plum reviews band plus accents throughout. */

/* The reviews section becomes a deep-plum band; the white cards pop on it. */
#testimonials { background: linear-gradient(165deg, #3a153c 0%, #5a2350 46%, #7a1418 100%) !important; }
#testimonials .ewd-eyebrow { color: var(--wp--preset--color--secondary) !important; }
#testimonials .ewd-eyebrow::before { background: var(--wp--preset--color--secondary) !important; }
#testimonials h2 { color: #fff !important; }
#testimonials .ewd-reviews-rating { color: rgba(255,255,255,.85) !important; }
#testimonials .ewd-reviews-rating strong { color: var(--wp--preset--color--secondary) !important; }
#testimonials .ewd-review-cta { color: rgba(255,255,255,.82) !important; }
#testimonials .ewd-btn-ghost .wp-block-button__link { background: rgba(255,255,255,.10) !important; color: #fff !important; box-shadow: inset 0 0 0 1.5px rgba(255,255,255,.55); -webkit-backdrop-filter: none; backdrop-filter: none; }
#testimonials .ewd-btn-ghost .wp-block-button__link:hover { background: #fff !important; color: var(--wp--preset--color--primary-dark) !important; }

/* Process step numbers go plum -> red for depth. */
.ewd-step-card .ewd-step-num { background: linear-gradient(160deg, #5a2350, #b3141d) !important; box-shadow: inset 0 1px 0 rgba(255,255,255,.3), 0 8px 18px rgba(74,26,68,.38) !important; }

/* Eyebrow accent dash picks up a red -> plum sweep site-wide. */
.ewd-eyebrow::before { background: linear-gradient(90deg, var(--wp--preset--color--primary), #5a2350) !important; }

/* Primary call buttons gain a plum-tinted glow. */
.wp-block-button__link.has-primary-background-color,
.ewd-callbar a.ewd-call {
	box-shadow: inset 0 1px 0 rgba(255,255,255,.30), 0 10px 24px rgba(90,30,80,.30), 0 2px 7px rgba(58,21,60,.26) !important;
}

/* A soft plum vignette warms the hero's lower-right corner. */
.ewd-hero::after { content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none; background: radial-gradient(55% 60% at 100% 100%, rgba(90,35,80,.13), transparent 62%); }

/* FAQ open state + selected form chips lean plum. */
.ewd-faq details[open] { border-color: rgba(90,35,80,.55); }
.ewd-chip.is-selected { border-color: #5a2350; background: linear-gradient(180deg,#fff,#f3e6ef); }

/* Stat numbers shade red -> plum so the strip carries the tone too. */
.ewd-stat__num { background: linear-gradient(180deg, var(--ewd-red-2), #5a2350); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }
.ewd-stat__num .ewd-count { -webkit-text-fill-color: transparent; }

/* Care-page sign-off signature (white background drops out via multiply blend) */
.ewd-signoff { font-size: 1.12rem; margin: 0 0 .15rem; }
.ewd-signature { margin: .1rem 0 !important; }
.ewd-signature img { width: 300px; max-width: 72%; height: auto; mix-blend-mode: multiply; }
.ewd-sign-name { margin-top: .15rem !important; font-size: .96rem; color: var(--wp--preset--color--muted); }

/* ============================================================
   39. Accessibility — big, easy tap targets & legible links.
   Most patients are 60+, often with limited dexterity, tremor,
   or low vision, so everything clickable gets a generous hit area
   (WCAG 2.5.5 / 44px+), clear underlines, and a visible focus ring.
   ============================================================ */
.wp-block-button__link {
	min-height: 54px; padding: .95rem 1.85rem !important;
	display: inline-flex; align-items: center; justify-content: center;
	font-size: 1.06rem; line-height: 1.2;
}
.ewd-header-call .wp-block-button__link,
.ewd-emergency-btn .wp-block-button__link { min-height: 44px; padding: .55rem 1.1rem !important; font-size: .92rem; }
.ewd-link-pill .wp-block-button__link { min-height: 50px; }

/* nav links — roomy vertical hit area */
.ewd-nav .wp-block-navigation-item__content { padding: .6rem .7rem; }
.ewd-nav .wp-block-navigation__submenu-container .wp-block-navigation-item__content { min-height: 50px; display: flex; align-items: center; }

/* FAQ rows & service chips — large, obvious tap targets */
.ewd-faq summary { min-height: 60px; display: flex; align-items: center; padding-top: 1rem; padding-bottom: 1rem; font-size: 1.08rem; cursor: pointer; }
.ewd-chip { min-height: 64px; cursor: pointer; }

/* content links: clearly underlined and easy to see/tap */
.ewd-article a, .ewd-section p a, .ewd-form a, .ewd-links-bar p a { text-decoration: underline; text-underline-offset: 3px; text-decoration-thickness: 2px; }
a[href^="tel:"] { font-weight: 700; }

/* form fields — taller, finger-friendly */
.ewd-form input, .ewd-form select, .ewd-form textarea { min-height: 52px; font-size: 1.05rem; }
.ewd-form textarea { min-height: 100px; }

/* clear sky-blue focus ring for keyboard / switch users */
a:focus-visible, button:focus-visible, .wp-block-button__link:focus-visible,
summary:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible,
.ewd-chip:focus-visible {
	outline: 3px solid var(--ewd-sky); outline-offset: 2px; border-radius: 6px;
}

/* ============================================================
   40. Before/After film-roll ticker — loops slowly, pauses on
   hover, edge zones scrub it back/forward.
   ============================================================ */
.ewd-ba-wrap { position: relative; margin-top: 2rem; }
.ewd-ba-marquee { overflow-x: auto; overflow-y: hidden; scrollbar-width: none; -ms-overflow-style: none;
	-webkit-mask-image: linear-gradient(90deg, transparent, #000 4%, #000 96%, transparent);
	mask-image: linear-gradient(90deg, transparent, #000 4%, #000 96%, transparent); }
.ewd-ba-marquee::-webkit-scrollbar { display: none; }
.ewd-ba-track, .ewd-ba-dupe { display: flex; gap: 1.4rem; }
.ewd-ba-track { width: max-content; }
.ewd-ba-track .ewd-ba { flex: 0 0 clamp(270px, 30vw, 360px); margin: 0; }
/* clickable prev/next arrows (desktop); swipe on touch */
.ewd-ba-edge { position: absolute; top: 0; bottom: 0; width: 66px; z-index: 4; display: flex; align-items: center; border: 0; padding: 0; cursor: pointer; opacity: 0; transition: opacity .2s ease; }
.ewd-ba-wrap:hover .ewd-ba-edge, .ewd-ba-edge:focus-visible { opacity: 1; }
.ewd-ba-edge--l { left: 0; justify-content: flex-start; padding-left: .4rem; background: linear-gradient(90deg, rgba(251,244,236,.96), rgba(251,244,236,.4) 60%, transparent); }
.ewd-ba-edge--r { right: 0; justify-content: flex-end; padding-right: .4rem; background: linear-gradient(270deg, rgba(251,244,236,.96), rgba(251,244,236,.4) 60%, transparent); }
.ewd-ba-edge span { width: 48px; height: 48px; border-radius: 50%; background: #fff; box-shadow: var(--ewd-shadow-md); display: grid; place-items: center; color: var(--wp--preset--color--primary); font-size: 1.6rem; font-weight: 800; line-height: 1; transition: transform .15s ease; }
.ewd-ba-edge:hover span { transform: scale(1.08); }
@media (prefers-reduced-motion: reduce) { .ewd-ba-marquee { scroll-behavior: auto; } }

/* Enlarge the Find-Us Google map to fill more of the right/bottom space */
.ewd-map { aspect-ratio: auto; height: clamp(520px, 60vh, 760px); }
@media (max-width: 781px) { .ewd-map { height: 380px; } }

/* Headings & section sub-headings: keep them on one line where they fit,
   and balance the wrap (no orphan words) where they don't. */
h1, h2, h3, h4 { text-wrap: balance; }
.ewd-section > p:not(.ewd-callout),
.ewd-section .has-text-align-center,
.ewd-page-head p, .ewd-links-sub, .ewd-eyebrow,
.ewd-step__title, .ewd-step__hint { text-wrap: balance; }

/* Hero storefront photo — fades in on load WITH its frame + drop shadow */
.ewd-photo-fade { opacity: 0; transform: scale(.985); transition: opacity 1s ease, transform 1.1s cubic-bezier(.16,1,.3,1); }
.ewd-photo-fade.is-visible { opacity: 1; transform: none; }

/* Pricing — live offer/deal banner + the in-card "Book" button */
.ewd-price-offer { display: flex; align-items: center; gap: .65rem; justify-content: center; max-width: 580px; margin: 0 auto 1.1rem; background: linear-gradient(135deg, #fff2d6, #ffe1ad); border: 1px solid #f0c879; color: #5a3a12; border-radius: 14px; padding: .7rem 1.1rem; font-weight: 600; box-shadow: var(--ewd-shadow-sm); }
.ewd-price-offer__badge { flex: none; background: var(--wp--preset--color--primary); color: #fff; font: 800 .68rem/1 var(--wp--preset--font-family--heading); letter-spacing: .1em; text-transform: uppercase; padding: .35rem .6rem; border-radius: 999px; }
.ewd-pricecard__cta { margin-top: 1.3rem; padding-top: 1.3rem; border-top: 1px solid var(--ewd-line); text-align: center; }
.ewd-pricecard { padding-bottom: 1.7rem; }
.ewd-prices__note { max-width: 640px; margin-left: auto; margin-right: auto; }
.ewd-prices__disclaimer { max-width: 660px; margin: .55rem auto 0; text-align: center; font-size: .8rem; font-style: italic; line-height: 1.5; color: var(--wp--preset--color--muted); opacity: .85; }
/* The price promise — standout callout with a soft warm glow + an animated
   sheen sweep, echoing the FAQ shimmer. */
.ewd-price-promise {
	position: relative; overflow: hidden; isolation: isolate;
	max-width: 760px; margin: 1.5rem auto 0; padding: 1.4rem 1.9rem;
	background: linear-gradient(150deg, #ffffff, #fff5ea);
	border: 1px solid rgba(242,169,59,.55); border-left: 5px solid var(--wp--preset--color--primary);
	border-radius: 16px;
	box-shadow: var(--ewd-shadow-sm), 0 10px 30px -10px rgba(242,169,59,.45);
	color: var(--wp--preset--color--contrast); line-height: 1.62;
}
.ewd-price-promise strong { color: var(--wp--preset--color--primary-dark); }
/* moving diagonal shine across the callout (sits above the panel, low alpha so
   text stays legible as it passes) */
.ewd-price-promise::after {
	content: ""; position: absolute; inset: 0; z-index: 2; pointer-events: none; border-radius: inherit;
	background: linear-gradient(115deg, transparent 36%, rgba(255,255,255,.30) 47%, rgba(242,169,59,.22) 50%, rgba(255,255,255,.30) 53%, transparent 64%);
	background-size: 250% 100%; background-position: 160% 0;
}
@media (prefers-reduced-motion: no-preference) {
	.ewd-price-promise::after { animation: ewd-price-sheen 6.5s ease-in-out infinite; }
	.ewd-price-promise { animation: ewd-price-glow 4.5s ease-in-out infinite; }
}
@keyframes ewd-price-sheen { 0% { background-position: 165% 0; } 55%, 100% { background-position: -70% 0; } }
@keyframes ewd-price-glow {
	0%, 100% { box-shadow: var(--ewd-shadow-sm), 0 10px 26px -12px rgba(242,169,59,.35); }
	50%      { box-shadow: var(--ewd-shadow-sm), 0 12px 34px -8px rgba(242,169,59,.60); }
}

/* ---- Condense the page: trim section padding so it's ~10 scrolls, not 12 ---- */
:root, body {
	--wp--preset--spacing--60: clamp(2.75rem, 1.6rem + 4vw, 4.5rem); /* was clamp(3.5rem,2rem+5vw,6rem) */
	--wp--preset--spacing--50: clamp(2.1rem, 1.6rem + 1.5vw, 2.7rem); /* was 3rem */
}

/* Clicking "Emergency" lands the section with the call button comfortably in view */
#emergency { scroll-margin-top: 82px; }

/* "Stay in the loop" (news page) — more depth, layering & a sky-blue hairline */
.ewd-arch-bg.has-blush-background-color {
	border-radius: var(--ewd-radius-lg); position: relative; overflow: hidden;
	box-shadow: var(--ewd-shadow-md), inset 0 1px 0 rgba(255,255,255,.7);
	border-top: 2px solid var(--ewd-sky);
}
.ewd-arch-bg.has-blush-background-color::after {
	content: ""; position: absolute; inset: 0; pointer-events: none;
	background: radial-gradient(120% 80% at 50% -20%, rgba(255,255,255,.55), transparent 60%);
}

/* Sky-blue hairline accents (the shop sign's blue) — used sparingly */
.ewd-stat + .ewd-stat { border-left-color: rgba(111,183,218,.5); }

/* Footer Facebook — a labelled button showing the page name */
.ewd-social { margin-top: 1.1rem; }
.ewd-social a.ewd-social__btn { display: inline-flex; align-items: center; justify-content: flex-start; place-items: initial; gap: .75rem; width: max-content; height: auto; max-width: 100%; background: rgba(255,255,255,.1); border: 1px solid rgba(255,255,255,.28); border-radius: 14px; padding: .6rem 1.05rem; color: #fff !important; text-decoration: none; white-space: nowrap; transition: background .2s ease, transform .2s ease, border-color .2s ease; }
.ewd-social a.ewd-social__btn:hover { background: rgba(255,255,255,.2); border-color: var(--wp--preset--color--secondary); transform: translateY(-2px); }
.ewd-social a.ewd-social__btn svg { width: 30px; height: 30px; flex: none; fill: currentColor; }
.ewd-social a.ewd-social__btn .ewd-social__label { display: flex; flex-direction: column; line-height: 1.18; font-weight: 700; font-size: .96rem; text-align: left; white-space: nowrap; }
.ewd-social a.ewd-social__btn .ewd-social__label small { font-weight: 500; font-size: .78rem; opacity: .82; }

/* "How it works" cards — equal height, top-aligned, no reveal stagger so the
   three boxes line up in a straight row with matching bases. */
.ewd-grid.ewd-grid-3 { align-items: stretch; }
/* Grid items must NOT carry WordPress's flow block-gap margin — it was pushing
   the 2nd & 3rd cards down 24px and breaking the row alignment. Grid uses gap. */
.ewd-grid > *, .ewd-grid-3 > *, .ewd-grid-2 > * { margin-top: 0 !important; margin-block-start: 0 !important; }
.ewd-step-card { padding: 1.4rem 1.4rem !important; display: flex; flex-direction: column; height: 100%; }
.ewd-step-card.ewd-reveal:not(:hover), .ewd-step-card.ewd-reveal.is-visible:not(:hover) { transform: none !important; }
.ewd-step-card .ewd-step-num { margin: 0; }
.ewd-step-card .wp-block-heading { min-height: 0 !important; margin-top: .7rem !important; font-size: 1.08rem; align-items: flex-start; }
.ewd-step-card p { font-size: .96rem; line-height: 1.55; margin-top: .4rem; }
