/* ========================================================================
   Dunning Lean — main.css
   Single concatenated stylesheet. Token-first, no preprocessor.
   ======================================================================== */

/* ----- Design tokens (Dunning Brand Guidelines v1.0, 2026) ----- */
:root {
	/* Brand palette — strict five-color system, no extra hues. */
	--c-slate: #4E6172;     /* PRIMARY */
	--c-brass: #D3B68B;     /* ACCENT */
	--c-bone:  #F2EAD9;     /* GROUND */
	--c-cream: #F9F6F1;     /* LIFT */
	--c-ink:   #222929;     /* TEXT */
	--c-white: #ffffff;

	/* Derived tokens (slate tints + brass tints, on-brand). */
	--c-slate-90:  #5D6F7F;
	--c-slate-80:  #717F8D;
	--c-slate-40:  #B7BFC6;
	--c-bone-deep: #E7DDC5;     /* slightly deeper bone for borders */
	--c-cream-warm:#F5F0E5;     /* tone between cream and bone for sub-surfaces */
	--c-brass-warm:#E2C8A6;     /* lighter brass tint for accent backgrounds */

	/* Semantic aliases consumed by component styles. Keep section files
	   referencing these names so future palette swaps are 1-line changes. */
	--c-ink-alt:      var(--c-ink);
	--c-ivory:        var(--c-cream);
	--c-ivory-warm:   var(--c-cream-warm);
	--c-ivory-accent: var(--c-bone);
	--c-accent:       var(--c-slate);
	--c-cta:          var(--c-slate);
	--c-cta-hover:    #3F5060;
	--c-muted:        #6E7986;        /* slate-toned body gray */
	--c-stone:        var(--c-bone-deep);
	--c-mint-pale:    var(--c-cream-warm);
	--c-mint-subtle:  var(--c-bone-deep);

	/* Licensed brand fonts via Adobe Typekit (kit arm0xja):
	   freight-sans-pro = workhorse (every headline, subhead, body, CTA)
	   the-seasons      = editorial; reserved for the italic tagline only. */
	--ff-sans:  "freight-sans-pro", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
	--ff-serif: "the-seasons", "Times New Roman", Georgia, serif;

	--radius-card: 8px;
	--radius-btn: 6px;
	--btn-h: 48px;

	--container: 1296px;
	--gutter: 72px;
	--gutter-mobile: 24px;

	--sec-pad-y: 120px;
	--sec-pad-y-tight: 64px;
	--sec-pad-y-mobile: 64px;

	--shadow-card: 0 1px 2px rgba(16, 44, 51, .04), 0 8px 24px rgba(16, 44, 51, .03);
}

/* ----- Reset / base ----- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; tab-size: 4; scroll-behavior: smooth; font-size: 17px; }
body {
	margin: 0;
	font-family: var(--ff-sans);
	font-size: 17px;          /* Body floor — never below 16px even after browser min-font enforcement. */
	line-height: 1.65;
	color: var(--c-ink);
	background: var(--c-ivory);
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}
img, picture, video, svg { display: block; max-width: 100%; height: auto; }
a { color: inherit; text-decoration: none; }
button { font: inherit; cursor: pointer; }
ul, ol { margin: 0; padding: 0; }
h1, h2, h3, h4, h5, h6, p { margin: 0; }

/* Skip link */
.dfd-skip {
	position: absolute; left: -9999px; top: 0;
	background: var(--c-ink); color: var(--c-ivory-accent);
	padding: 12px 16px; z-index: 999; border-radius: 0 0 6px 0;
}
.dfd-skip:focus { left: 0; }

/* ----- Layout ----- */
.dfd-container {
	max-width: calc(var(--container) + var(--gutter) * 2);
	margin: 0 auto;
	padding: 0 var(--gutter);
	width: 100%;
}
.dfd-section { padding: var(--sec-pad-y) 0; position: relative; }
.dfd-section--tight { padding: var(--sec-pad-y-tight) 0; }
.dfd-section--dark { background: var(--c-ink); color: var(--c-ivory-accent); }

/* ----- Texture system (brand background guidance) ----- */
.dfd-section--texture-ivory,
.dfd-section--texture-warm,
.dfd-section--texture-stone,
.dfd-section--texture-teal {
	background-size: cover;
	background-position: center;
	background-repeat: no-repeat;
	isolation: isolate;
}
.dfd-section--texture-ivory::before,
.dfd-section--texture-warm::before,
.dfd-section--texture-stone::before,
.dfd-section--texture-teal::before {
	content: "";
	position: absolute;
	inset: 0;
	pointer-events: none;
	z-index: 0;
}
.dfd-section--texture-ivory  { background-image: url('../img/texture-ivory-paper.jpg'); }
.dfd-section--texture-ivory::before { background: rgba(254, 251, 245, 0.78); }

.dfd-section--texture-warm   { background-image: url('../img/texture-warm-wall-shadow.jpg'); }
.dfd-section--texture-warm::before { background: rgba(254, 251, 245, 0.62); }

.dfd-section--texture-stone  { background-image: url('../img/texture-stone-slate-grain.jpg'); }
.dfd-section--texture-stone::before { background: rgba(254, 251, 245, 0.85); }

.dfd-section--texture-teal   { background-image: url('../img/texture-muted-teal-plaster.jpg'); color: var(--c-cream); }
.dfd-section--texture-teal::before { background: rgba(16, 44, 51, 0.40); }
.dfd-section--texture-teal .dfd-h2,
.dfd-section--texture-teal .dfd-h3,
.dfd-section--texture-teal .dfd-h4 { color: var(--c-cream); }
.dfd-section--texture-teal .dfd-lead,
.dfd-section--texture-teal .dfd-proof-card__body { color: var(--c-bone); }
.dfd-section--texture-teal .dfd-eyebrow { color: var(--c-brass); }
.dfd-section--texture-teal .dfd-eyebrow::before { background: var(--c-brass); }

/* Lift content above the readability overlay. */
.dfd-section--texture-ivory > *,
.dfd-section--texture-warm > *,
.dfd-section--texture-stone > *,
.dfd-section--texture-teal > * { position: relative; z-index: 1; }

/* ----- Typography (per Brand Hierarchy: sans bold leads, italic serif closes) ----- */
.dfd-h1, .dfd-h2, .dfd-h3, .dfd-h4, .dfd-h5 {
	font-family: var(--ff-sans);
	font-weight: 700;
	/* Was --c-ink (near-black). Softened to slate on 2026-07-21 per client
	   feedback that the black headings felt stark and intense. */
	color: var(--c-slate);
	font-style: normal;
}

/* Hero / display headline: bold sentence case, tight letter-spacing.
   Was uppercase — dropped 2026-07-21 per client feedback that the all-caps
   H1 felt intense against the calm brand voice. Uppercase treatment now
   reserved for eyebrows and the tagline lockup. */
.dfd-h1 {
	font-size: clamp(40px, 5.4vw, 68px);
	line-height: 1.08;
	letter-spacing: -0.015em;
}

/* Section headlines: sentence case for readability of longer phrases. */
.dfd-h2 {
	font-size: clamp(32px, 3.6vw, 46px);
	line-height: 1.18;
	letter-spacing: -0.012em;
}
.dfd-h2--on-dark, .dfd-h2--on-cta { color: var(--c-cream); }

.dfd-h3 {
	font-size: clamp(22px, 2.1vw, 26px);
	line-height: 1.3;
	font-weight: 600;
}
.dfd-h3--on-dark { color: var(--c-cream); }

.dfd-h4 { font-size: clamp(19px, 1.55vw, 21px); line-height: 1.35; font-weight: 600; }
.dfd-h5 { font-size: 17px; line-height: 1.4; font-weight: 600; letter-spacing: 0.005em; }

/* Tagline lockup — matches the display H1 aesthetic: uppercase bold sans, tight
   tracking. Client override: brand-profile v1.0 reserves the-seasons italic
   for the tagline, but per client audit (2026-07-06) the tagline must read
   crisp and grounded, not editorial/script. Never use --ff-serif here. */
.dfd-tagline {
	font-family: var(--ff-sans);
	font-style: normal !important;
	font-weight: 800;
	font-size: clamp(18px, 1.8vw, 22px);
	line-height: 1.25;
	letter-spacing: 0.02em;
	text-transform: uppercase;
	color: var(--c-ink);
}
.dfd-tagline--on-dark { color: var(--c-cream); }
.dfd-tagline strong { font-weight: 800; color: var(--c-slate); }

.dfd-eyebrow {
	font-family: var(--ff-sans);
	font-size: 16px;
	font-weight: 600;
	line-height: 1.4;
	text-transform: uppercase;
	letter-spacing: 0.14em;
	color: var(--c-slate);
	display: inline-flex;
	align-items: center;
	gap: 14px;
}
.dfd-eyebrow::before {
	content: "";
	display: inline-block;
	width: 32px;
	height: 1.5px;
	background: var(--c-brass);
}
.dfd-eyebrow--brass { color: var(--c-brass); }
.dfd-eyebrow--on-dark { color: var(--c-brass); }
.dfd-eyebrow--on-dark::before { background: var(--c-brass); }

.dfd-lead { font-size: 19px; line-height: 1.65; color: var(--c-muted); }
.dfd-section--dark .dfd-lead { color: var(--c-mint-subtle); }

.dfd-prose { font-size: 17px; line-height: 1.7; color: var(--c-muted); max-width: 70ch; }
.dfd-prose > * + * { margin-top: 1em; }
.dfd-prose h2, .dfd-prose h3 { color: var(--c-ink); margin-top: 1.6em; }
.dfd-prose--wide { max-width: 90ch; }
.dfd-prose--narrow { max-width: 56ch; }

/* ----- Buttons ----- */
.dfd-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	height: var(--btn-h);
	padding: 0 28px;
	border-radius: var(--radius-btn);
	font-family: var(--ff-sans);
	font-weight: 600;
	font-size: 16px;
	line-height: 1;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	border: 1px solid transparent;
	cursor: pointer;
	transition: background-color .18s ease, color .18s ease, transform .18s ease, border-color .18s ease;
	white-space: nowrap;
	min-height: 48px;
}
.dfd-btn--sm { height: 48px; padding: 0 22px; font-size: 15px; }
.dfd-btn--primary { background: var(--c-cta); color: var(--c-white); }
.dfd-btn--primary:hover { background: var(--c-cta-hover); }
.dfd-btn--outline { background: var(--c-ivory); border-color: var(--c-accent); color: var(--c-accent); }
.dfd-btn--outline:hover { background: var(--c-mint-pale); }
.dfd-btn--on-dark { background: var(--c-ivory-accent); color: var(--c-ink); }
.dfd-btn--on-dark:hover { background: var(--c-white); }

/* Desktop-only phone-icon prefix on .dfd-btn--phone buttons. The JS shim
   in main.js swaps the label from "Call to schedule" to the pretty phone
   number (e.g. "(518) 842-3220") on hover-capable / fine-pointer devices,
   because those devices can't dial a tel: link. This gives the button a
   phone glyph so the number reads as a callable UI element even without
   the tel: interaction. Icon uses `mask` so it inherits the button's text
   color (works for --primary, --on-dark, --outline). */
@media (hover: hover) and (pointer: fine) {
	.dfd-btn--phone { gap: 10px; }
	.dfd-btn--phone::before {
		content: "";
		display: inline-block;
		width: 1em;
		height: 1em;
		flex-shrink: 0;
		background-color: currentColor;
		-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20 15.5c-1.2 0-2.5-.2-3.6-.6-.35-.1-.75 0-1 .25l-2.2 2.2c-2.8-1.4-5.15-3.75-6.55-6.55l2.2-2.2c.25-.25.35-.65.25-1C8.7 6.5 8.5 5.2 8.5 4c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1 0 9.4 7.6 17 17 17 .55 0 1-.45 1-1v-3.5c0-.55-.45-1-1-1z' fill='%23000'/%3E%3C/svg%3E") center/contain no-repeat;
		mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20 15.5c-1.2 0-2.5-.2-3.6-.6-.35-.1-.75 0-1 .25l-2.2 2.2c-2.8-1.4-5.15-3.75-6.55-6.55l2.2-2.2c.25-.25.35-.65.25-1C8.7 6.5 8.5 5.2 8.5 4c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1 0 9.4 7.6 17 17 17 .55 0 1-.45 1-1v-3.5c0-.55-.45-1-1-1z' fill='%23000'/%3E%3C/svg%3E") center/contain no-repeat;
	}
}

.dfd-cta-row { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 28px; }
.dfd-cta-row--tight { margin-top: 16px; }

/* ----- Header ----- */
.dfd-header { position: sticky; top: 0; z-index: 50; }
.dfd-utility {
	background: var(--c-ink);
	color: var(--c-ivory-accent);
	font-size: 13px;
	font-weight: 500;
	line-height: 1.35;
	letter-spacing: 0.02em;
}
.dfd-utility__row {
	display: flex;
	justify-content: space-between;
	align-items: center;
	min-height: 36px;
	padding-top: 6px;
	padding-bottom: 6px;
}
.dfd-utility__right { display: inline-flex; gap: 10px; align-items: center; }
.dfd-utility__right a { color: var(--c-brass); font-weight: 500; }
.dfd-utility__right a:hover { color: var(--c-cream); }
.dfd-utility__sep { color: rgba(249,246,241,.45); }
.dfd-nav-wrap {
	background: var(--c-ivory);
	border-bottom: 1px solid var(--c-stone);
}
.dfd-nav {
	display: flex;
	align-items: center;
	gap: 32px;
	min-height: 96px;
}
.dfd-brand { display: inline-flex; align-items: center; flex-shrink: 0; }
.dfd-brand__mark {
	display: inline-block;
	height: 72px;
	line-height: 0;
	color: var(--c-slate);
}
.dfd-brand__mark svg,
.dfd-brand__mark img { height: 100%; width: auto; display: block; }
.screen-reader-text {
	clip: rect(1px, 1px, 1px, 1px);
	position: absolute !important;
	height: 1px; width: 1px;
	overflow: hidden;
	word-wrap: normal !important;
}

.dfd-nav__primary { flex: 1; }
.dfd-nav__list {
	display: flex;
	gap: 36px;
	list-style: none;
	justify-content: center;
}
.dfd-nav__item { list-style: none; }
.dfd-nav__link {
	font-family: var(--ff-sans);
	font-weight: 600;
	font-size: 16px;
	color: var(--c-ink-alt);
	padding: 12px 4px;
	border-bottom: 2px solid transparent;
	transition: border-color .18s ease, color .18s ease;
	letter-spacing: 0.01em;
}
.dfd-nav__link:hover { color: var(--c-accent); border-bottom-color: var(--c-accent); }
.dfd-nav__ctas { display: flex; gap: 12px; flex-shrink: 0; }

.dfd-burger {
	display: none;
	width: 44px; height: 44px;
	border: 1px solid var(--c-stone);
	background: var(--c-ivory);
	border-radius: 6px;
	flex-direction: column;
	justify-content: center;
	align-items: center;
	gap: 5px;
	padding: 0;
}
.dfd-burger span { display: block; width: 20px; height: 2px; background: var(--c-ink); }

.dfd-mobile-menu {
	background: var(--c-ivory);
	border-bottom: 1px solid var(--c-stone);
	padding: 20px var(--gutter-mobile) 24px;
}
.dfd-mobile-menu .dfd-nav__list { flex-direction: column; gap: 4px; align-items: stretch; }
.dfd-mobile-menu .dfd-nav__link { display: block; padding: 14px 0; border-bottom: 1px solid var(--c-stone); }
.dfd-mobile-menu__ctas { display: flex; flex-direction: column; gap: 10px; margin-top: 18px; }
.dfd-mobile-menu__ctas .dfd-btn { width: 100%; }

/* ----- Hero ----- */
.dfd-hero { position: relative; background: var(--c-ivory-warm); padding-top: 96px; padding-bottom: 140px; overflow: hidden; }
.dfd-hero__grid {
	position: relative;
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 60px;
	align-items: center;
}
.dfd-hero__copy { max-width: 620px; }
.dfd-hero__headline { margin-top: 14px; color: var(--c-slate); }
.dfd-hero__lead { margin-top: 24px; }
.dfd-hero__caption { margin-top: 22px; font-size: 13px; color: var(--c-muted); line-height: 1.55; max-width: 50ch; }

.dfd-hero__media { position: relative; }
.dfd-hero__watermark {
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
	width: 130%;
	max-width: 760px;
	aspect-ratio: 1 / 1;
	pointer-events: none;
	z-index: 0;
}
.dfd-hero__watermark svg { width: 100%; height: 100%; display: block; }
.dfd-hero__photo {
	position: relative;
	z-index: 1;
	margin: 0;
	border-radius: var(--radius-card);
	overflow: hidden;
	border: 1px solid var(--c-stone);
}
.dfd-hero__photo img { width: 100%; height: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.dfd-hero__panel {
	position: absolute;
	top: 32px;
	left: 32px;
	right: 32px;
	background: rgba(249, 246, 241, 0.94);
	backdrop-filter: blur(4px);
	border: 1px solid var(--c-bone-deep);
	border-radius: var(--radius-card);
	padding: 28px 30px;
}
.dfd-hero__panel-title { color: var(--c-ink); }
.dfd-hero__panel-body { margin-top: 12px; font-size: 15px; line-height: 1.55; color: var(--c-muted); }
.dfd-hero__panel-chip {
	display: inline-block;
	margin-top: 22px;
	padding: 6px 14px;
	background: var(--c-cream-warm);
	border: 1px solid var(--c-brass-warm);
	border-radius: 999px;
	font-family: var(--ff-sans);
	font-size: 11px;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 0.12em;
	color: var(--c-slate);
}
.dfd-hero__stats {
	position: relative;
	z-index: 2;
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 16px;
	margin-top: 18px;
	padding: 0;
}
.dfd-stat-card {
	background: var(--c-white);
	border: 1px solid var(--c-stone);
	border-radius: var(--radius-card);
	padding: 22px 26px;
	box-shadow: var(--shadow-card);
}
.dfd-stat-card--dark { background: var(--c-slate); border-color: var(--c-slate); }
.dfd-stat-card__title { font-family: var(--ff-sans); font-weight: 700; font-size: 18px; line-height: 1.3; color: var(--c-ink); }
.dfd-stat-card--dark .dfd-stat-card__title { color: var(--c-cream); }
.dfd-stat-card__sub { margin-top: 8px; font-size: 16px; line-height: 1.45; color: var(--c-muted); }
.dfd-stat-card--dark .dfd-stat-card__sub { color: var(--c-bone); }

/* ----- Card slider (GSAP infinite horizontal loop) -----
   Dark slate background so the frosted glass cards have real contrast
   to refract through — pulls the eye into this section. */
.dfd-cards {
	overflow: hidden;
	background: linear-gradient(180deg, #3d4d5d 0%, var(--c-slate) 55%, #3d4d5d 100%);
	padding: 96px 0;
	color: var(--c-cream);
	position: relative;
}
.dfd-cards::before {
	/* Soft ambient brass glow top-right + slate glow bottom-left so the dark
	   slab doesn't read as a flat block. */
	content: "";
	position: absolute;
	inset: 0;
	background:
		radial-gradient(60% 70% at 80% 10%, rgba(211, 182, 139, 0.18) 0%, rgba(211, 182, 139, 0) 60%),
		radial-gradient(50% 60% at 10% 90%, rgba(34, 41, 41, 0.30) 0%, rgba(34, 41, 41, 0) 60%);
	pointer-events: none;
	z-index: 0;
}
.dfd-cards > .dfd-container,
.dfd-cards > .dfd-cards__viewport { position: relative; z-index: 1; }
.dfd-cards__head {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	align-items: flex-end;
	gap: 32px;
	max-width: 920px;
	margin-bottom: 40px;
}
.dfd-cards__head .dfd-eyebrow { color: var(--c-brass); }
.dfd-cards__head .dfd-h2 { color: var(--c-cream); }
.dfd-cards__head .dfd-lead { color: var(--c-bone); }
.dfd-cards__controls {
	display: flex;
	gap: 14px;
	justify-content: flex-end;
	margin-bottom: 28px;
}
.dfd-cards__btn {
	width: 56px;
	height: 56px;
	border-radius: 50%;
	background: transparent;
	border: 1.5px solid var(--c-cream);
	color: var(--c-cream);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	cursor: pointer;
	transition: background-color .2s, color .2s, transform .2s;
}
.dfd-cards__btn:hover {
	background: var(--c-cream);
	color: var(--c-slate);
}
.dfd-cards__btn:active { transform: scale(.95); }

.dfd-cards__viewport {
	cursor: grab;
	-webkit-user-select: none; user-select: none;
}
.dfd-cards__viewport.is-dragging { cursor: grabbing; }
.dfd-cards__track {
	display: flex;
	gap: 24px;
	padding: 8px 0 24px;     /* room for card hover lift + shadow */
	will-change: transform;
}
/* Glass card — gradient backdrop + brass border + frosted highlight.
   Built to read as "glass" against the cream page background by combining a
   layered background gradient, a high-opacity inset highlight, a subtle
   colored accent blob behind the card body, and a soft drop shadow. */
.dfd-card {
	flex: 0 0 360px;
	position: relative;
	border-radius: 20px;
	overflow: hidden;
	display: flex;
	flex-direction: column;
	min-height: 280px;
	isolation: isolate;
	background:
		linear-gradient(135deg, rgba(255, 255, 255, 0.85) 0%, rgba(255, 255, 255, 0.55) 100%);
	border: 1px solid rgba(255, 255, 255, 0.7);
	box-shadow:
		inset 0 1px 0 rgba(255, 255, 255, 0.9),
		inset 0 -1px 0 rgba(78, 97, 114, 0.08),
		0 1px 2px rgba(78, 97, 114, 0.04),
		0 18px 48px rgba(78, 97, 114, 0.12);
	backdrop-filter: blur(14px) saturate(140%);
	-webkit-backdrop-filter: blur(14px) saturate(140%);
	transition: transform .45s cubic-bezier(.2,.7,.2,1), box-shadow .45s ease;
}
/* Soft colored blob behind each card to give the glass something to refract
   through. Alternating slate / brass keeps the row visually varied. */
.dfd-card::before {
	content: "";
	position: absolute;
	z-index: -1;
	inset: -20% -20% auto auto;
	width: 70%;
	aspect-ratio: 1 / 1;
	background: radial-gradient(circle, rgba(78, 97, 114, 0.55) 0%, rgba(78, 97, 114, 0) 65%);
	filter: blur(28px);
	pointer-events: none;
}
.dfd-card:nth-child(even)::before {
	inset: auto auto -20% -20%;
	background: radial-gradient(circle, rgba(211, 182, 139, 0.60) 0%, rgba(211, 182, 139, 0) 65%);
}
.dfd-card:nth-child(3n)::before {
	inset: -25% auto auto 50%;
	transform: translateX(-50%);
	width: 60%;
	background: radial-gradient(circle, rgba(34, 41, 41, 0.35) 0%, rgba(34, 41, 41, 0) 65%);
}
.dfd-card:hover {
	transform: translateY(-6px);
	box-shadow:
		inset 0 1px 0 rgba(255, 255, 255, 0.95),
		inset 0 -1px 0 rgba(78, 97, 114, 0.10),
		0 2px 4px rgba(78, 97, 114, 0.06),
		0 28px 64px rgba(78, 97, 114, 0.18);
}
/* Image is now optional — keep the styling clean for the legacy case. */
.dfd-card__image {
	margin: 0;
	aspect-ratio: 4 / 3;
	overflow: hidden;
	background: var(--c-bone);
	border-bottom: 1px solid rgba(255, 255, 255, 0.5);
}
.dfd-card__image img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .6s ease; }
.dfd-card:hover .dfd-card__image img { transform: scale(1.04); }

.dfd-card__body {
	padding: 36px 32px 36px;
	display: flex;
	flex-direction: column;
	gap: 14px;
	flex: 1;
	justify-content: center;
}
.dfd-card__title {
	font-family: var(--ff-sans);
	font-weight: 700;
	font-size: 22px;
	line-height: 1.25;
	color: var(--c-ink);
	letter-spacing: -0.005em;
}
.dfd-card__body-text {
	font-size: 16px;
	line-height: 1.6;
	color: var(--c-muted);
}

/* ----- Quick action band ----- */
.dfd-quick { padding-top: 0; padding-bottom: 0; }
.dfd-quick__band {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	border: 1px solid var(--c-stone);
	border-radius: var(--radius-card);
	overflow: hidden;
	background: var(--c-ivory-accent);
}
.dfd-quick__band--paper {
	background:
		linear-gradient(180deg, rgba(255,255,255,.45), rgba(255,255,255,0)),
		var(--c-ivory-accent);
}
.dfd-quick__cell {
	padding: 32px 28px;
	border-right: 1px solid var(--c-stone);
}
.dfd-quick__cell:last-child { border-right: none; }
.dfd-quick__title { font-family: var(--ff-sans); font-weight: 700; font-size: 19px; line-height: 1.3; color: var(--c-ink); }
.dfd-quick__sub { margin-top: 10px; font-size: 16px; line-height: 1.55; color: var(--c-muted); }

/* ----- Proof grid ----- */
.dfd-proof__grid {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr);
	gap: 80px;
	align-items: start;
}
.dfd-proof__copy { padding-top: 8px; }
.dfd-proof__copy .dfd-h2 { margin-top: 14px; }
.dfd-proof__copy .dfd-lead { margin-top: 24px; }

.dfd-proof__cards {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 18px;
}
.dfd-proof-card {
	background: var(--c-white);
	border: 1px solid var(--c-stone);
	border-radius: var(--radius-card);
	padding: 26px 26px 28px;
	min-height: 220px;
}
.dfd-proof-card--accent { background: var(--c-mint-pale); }
.dfd-proof-card .dfd-h4 { color: var(--c-ink); }
.dfd-proof-card__body { margin-top: 14px; font-size: 16px; line-height: 1.6; color: var(--c-muted); }

/* ----- Process band ----- */
.dfd-process {
	position: relative;
	background-color: var(--c-ivory-warm);
	background-size: cover;
	background-position: center;
	overflow: hidden;
}
.dfd-process__veil {
	position: absolute; inset: 0;
	background: linear-gradient(180deg, rgba(254,251,245,.92), rgba(247,242,232,.85));
	pointer-events: none;
}
.dfd-process__inner { position: relative; }
.dfd-process__head { max-width: 760px; }
.dfd-process__head .dfd-h2 { margin-top: 12px; }
.dfd-process__lead { margin-top: 18px; }
.dfd-process__steps {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 24px;
	margin-top: 56px;
	list-style: none;
}
.dfd-step {
	background: var(--c-white);
	border: 1px solid var(--c-stone);
	border-radius: var(--radius-card);
	padding: 28px 30px;
	display: flex;
	gap: 20px;
}
.dfd-step__num {
	flex-shrink: 0;
	width: 48px; height: 48px;
	background: var(--c-slate);
	color: var(--c-cream);
	border: 2px solid var(--c-brass);
	border-radius: 50%;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	font-family: var(--ff-sans);
	font-weight: 600;
	font-size: 18px;
}
.dfd-step__title { color: var(--c-ink); }
.dfd-step__copy { margin-top: 10px; font-size: 16px; line-height: 1.6; color: var(--c-muted); }

/* ----- Doctor band ----- */
.dfd-doctor__card {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1.4fr);
	gap: 56px;
	background: var(--c-white);
	border: 1px solid var(--c-stone);
	border-radius: var(--radius-card);
	padding: 48px;
}
.dfd-doctor__photo { margin: 0; border-radius: var(--radius-card); overflow: hidden; border: 1px solid var(--c-stone); }
.dfd-doctor__photo img { width: 100%; height: 100%; aspect-ratio: 4 / 5; object-fit: cover; }
.dfd-doctor__copy .dfd-h2 { margin-top: 12px; }
.dfd-doctor__bio { margin-top: 22px; max-width: 56ch; }
.dfd-checklist {
	list-style: none;
	margin-top: 26px;
	display: flex;
	flex-direction: column;
	gap: 12px;
}
.dfd-checklist li { display: flex; gap: 14px; align-items: flex-start; font-size: 17px; line-height: 1.5; color: var(--c-ink-alt); }
.dfd-check {
	width: 20px; height: 20px;
	background: var(--c-brass);
	color: var(--c-ink);
	border-radius: 50%;
	flex-shrink: 0;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	font-size: 12px;
	font-weight: 700;
	margin-top: 1px;
}

/* ----- Services overview ----- */
.dfd-services__head { max-width: 720px; margin-bottom: 48px; }
.dfd-services__head .dfd-h2 { margin-top: 12px; }
.dfd-services__head .dfd-lead { margin-top: 18px; }
.dfd-services__grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 18px;
}
.dfd-services__grid--cols-2 { grid-template-columns: repeat(2, 1fr); gap: 22px; }
.dfd-svc-card {
	background: var(--c-white);
	border: 1px solid var(--c-stone);
	border-radius: var(--radius-card);
	padding: 24px 26px;
	display: block;
	color: inherit;
	transition: border-color .18s, transform .18s;
}
a.dfd-svc-card:hover { border-color: var(--c-accent); transform: translateY(-1px); }
.dfd-svc-card__mark {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 42px; height: 42px;
	background: var(--c-cream-warm);
	border: 1px solid var(--c-brass-warm);
	border-radius: 6px;
	font-family: var(--ff-sans);
	font-weight: 700;
	font-size: 17px;
	color: var(--c-slate);
	margin-bottom: 20px;
}
.dfd-svc-card__title { color: var(--c-ink); }
.dfd-svc-card__blurb { margin-top: 10px; font-size: 16px; line-height: 1.55; color: var(--c-muted); }

/* ----- Insurance band ----- */
.dfd-insurance__grid {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr);
	gap: 56px;
	align-items: start;
}
.dfd-insurance__copy .dfd-h2 { margin-top: 14px; }
.dfd-insurance__body { margin-top: 26px; max-width: 60ch; color: var(--c-bone); font-size: 18px; line-height: 1.6; }
.dfd-insurance__copy .dfd-btn { margin-top: 28px; }
.dfd-insurance__cards { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.dfd-insurance-card { background: var(--c-ivory); border-radius: var(--radius-card); padding: 30px 28px; min-height: 200px; color: var(--c-ink); }
.dfd-insurance-card__title { color: var(--c-ink); }
.dfd-insurance-card__body { margin-top: 14px; font-size: 16px; line-height: 1.55; color: var(--c-muted); }

/* ----- Footer CTA ----- */
.dfd-fcta__card {
	display: grid;
	grid-template-columns: minmax(0, 1.6fr) auto;
	gap: 32px;
	align-items: center;
	background: var(--c-slate);
	color: var(--c-cream);
	border: 1px solid var(--c-brass);
	border-radius: var(--radius-card);
	padding: 40px 48px;
}
.dfd-fcta__copy .dfd-h2 { color: var(--c-cream); }
.dfd-fcta__body { margin-top: 14px; font-size: 17px; line-height: 1.65; color: rgba(249,246,241,.86); max-width: 55ch; font-weight: 400; }
.dfd-fcta__aside { display: flex; flex-direction: column; align-items: flex-end; gap: 20px; }
.dfd-fcta__nap {
	display: flex;
	flex-direction: column;
	align-items: flex-end;
	gap: 3px;
	font-style: normal;
	font-size: 15px;
	line-height: 1.5;
	color: rgba(249,246,241,.82);
	text-align: right;
}
.dfd-fcta__nap-name { font-weight: 700; color: var(--c-cream); letter-spacing: 0.005em; }
.dfd-fcta__nap-line { color: rgba(249,246,241,.72); }
.dfd-fcta__nap-phone {
	margin-top: 4px;
	font-weight: 600;
	color: var(--c-cream);
	border-bottom: 1px solid rgba(211,182,139,.45);
	padding-bottom: 1px;
	transition: color .15s ease, border-color .15s ease;
}
.dfd-fcta__nap-phone:hover { color: var(--c-brass); border-color: var(--c-brass); }
.dfd-fcta__tagline { display: block; text-align: center; margin: 36px auto 0; max-width: 720px; color: var(--c-slate); }

/* ----- FAQ accordion ----- */
.dfd-faq__head { max-width: 720px; margin-bottom: 32px; }
.dfd-faq__head .dfd-h2 { margin-top: 12px; }
.dfd-faq__grid { display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr); gap: 56px; align-items: start; }
.dfd-faq__items { display: flex; flex-direction: column; gap: 12px; }
.dfd-faq__item { background: var(--c-white); border: 1px solid var(--c-stone); border-radius: var(--radius-card); padding: 4px 26px; }
.dfd-faq__q { list-style: none; cursor: pointer; padding: 22px 0; display: flex; align-items: center; justify-content: space-between; gap: 16px; font-weight: 600; font-size: 17px; color: var(--c-ink); min-height: 44px; }
.dfd-faq__q::-webkit-details-marker { display: none; }
.dfd-faq__chev { font-size: 24px; color: var(--c-accent); transition: transform .2s ease; flex-shrink: 0; }
.dfd-faq__item[open] .dfd-faq__chev { transform: rotate(45deg); }
.dfd-faq__a { padding: 0 0 22px; font-size: 16px; line-height: 1.65; color: var(--c-muted); }

.dfd-faq__side { background: var(--c-mint-pale); border: 1px solid var(--c-mint-subtle); border-radius: var(--radius-card); padding: 32px; }
.dfd-faq__side-body { margin-top: 14px; font-size: 16px; line-height: 1.6; color: var(--c-ink-alt); margin-bottom: 24px; }

/* ----- Emergency band ----- */
.dfd-emergency__row { display: flex; align-items: center; justify-content: space-between; gap: 32px; flex-wrap: wrap; }
.dfd-emergency__copy { max-width: 760px; }
.dfd-emergency__body { margin-top: 12px; color: var(--c-bone); font-size: 17px; line-height: 1.55; }

/* ----- Contact module ----- */
.dfd-contact__head { max-width: 720px; margin-bottom: 40px; }
.dfd-contact__head .dfd-h2 { margin-top: 12px; }
.dfd-contact__grid {
	display: grid;
	grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr) minmax(0, .9fr);
	gap: 28px;
	align-items: start;
}
.dfd-contact__card { background: var(--c-white); border: 1px solid var(--c-stone); border-radius: var(--radius-card); padding: 36px; }
.dfd-contact__card .dfd-h3 { color: var(--c-ink); margin-bottom: 18px; }
.dfd-contact__addr { font-style: normal; font-size: 17px; line-height: 1.6; color: var(--c-muted); display: flex; flex-direction: column; gap: 4px; margin-bottom: 26px; }
.dfd-contact__hours { background: var(--c-white); border: 1px solid var(--c-stone); border-radius: var(--radius-card); padding: 36px; }
.dfd-hours-table { width: 100%; border-collapse: collapse; margin-top: 18px; font-size: 17px; }
.dfd-hours-table th { text-align: left; font-weight: 600; color: var(--c-ink-alt); padding: 12px 0; border-bottom: 1px solid var(--c-stone); }
.dfd-hours-table td { text-align: right; color: var(--c-muted); padding: 12px 0; border-bottom: 1px solid var(--c-stone); }
.dfd-hours-table tr:last-child th, .dfd-hours-table tr:last-child td { border-bottom: none; }
.dfd-contact__holidays { margin-top: 26px; padding-top: 22px; border-top: 1px solid var(--c-stone); }
.dfd-contact__holidays .dfd-h5 { color: var(--c-ink); margin-bottom: 8px; }
.dfd-contact__holidays p { font-size: 16px; color: var(--c-muted); line-height: 1.6; }
.dfd-contact__photo { margin: 0; border-radius: var(--radius-card); overflow: hidden; border: 1px solid var(--c-stone); }
.dfd-contact__photo img { width: 100%; height: 100%; aspect-ratio: 4 / 5; object-fit: cover; }

/* ----- Footer ----- */
.dfd-footer { background: var(--c-bone); border-top: 1px solid var(--c-bone-deep); padding: 88px 0 36px; color: var(--c-muted); font-size: 16px; line-height: 1.6; }
.dfd-footer__grid { display: grid; grid-template-columns: 1.4fr 1fr 1fr 1fr; gap: 48px; align-items: start; }
.dfd-footer__mark { display: inline-block; height: 88px; line-height: 0; }
.dfd-footer__mark svg,
.dfd-footer__mark img { height: 100%; width: auto; display: block; }
.dfd-footer__tagline { margin-top: 18px; font-size: 21px; max-width: 28ch; }
.dfd-footer__addr { font-style: normal; margin-top: 26px; display: flex; flex-direction: column; gap: 4px; color: var(--c-ink); font-size: 16px; }
.dfd-footer__phone { display: inline-block; margin-top: 10px; font-size: 20px; color: var(--c-slate) !important; font-weight: 600; }
.dfd-footer h4 { font-family: var(--ff-sans); font-size: 17px; font-weight: 700; color: var(--c-ink); margin-bottom: 18px; letter-spacing: 0.005em; }
.dfd-footer__hours li, .dfd-footer__nav li { font-size: 16px; padding: 4px 0; }
.dfd-footer__legal { margin-top: 64px; padding-top: 28px; border-top: 1px solid var(--c-bone-deep); font-size: 14px; }
.dfd-footer h4 { font-family: var(--ff-serif); font-size: 16px; color: var(--c-ink); margin-bottom: 14px; }
.dfd-footer__hours, .dfd-footer__nav { list-style: none; display: flex; flex-direction: column; gap: 8px; }
.dfd-footer__hours li { display: flex; justify-content: space-between; gap: 12px; }
.dfd-footer__nav a { color: var(--c-muted); }
.dfd-footer__nav a:hover { color: var(--c-accent); }
.dfd-footer__legal { margin-top: 56px; padding-top: 24px; border-top: 1px solid var(--c-stone); font-size: 12px; }

/* ----- Sticky mobile call bar ----- */
.dfd-callbar {
	display: none;
	position: fixed;
	left: 0; right: 0; bottom: 0;
	background: var(--c-ink);
	color: var(--c-ivory-accent);
	padding: 12px var(--gutter-mobile);
	z-index: 60;
	box-shadow: 0 -4px 20px rgba(16, 44, 51, .18);
}
.dfd-callbar__link { display: flex; align-items: center; justify-content: space-between; gap: 14px; color: inherit; min-height: 52px; }
.dfd-callbar__label { font-size: 17px; font-weight: 600; }
.dfd-callbar__cta {
	display: inline-flex; align-items: center; justify-content: center;
	background: var(--c-brass);
	color: var(--c-ink);
	font-weight: 700; font-size: 15px;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	padding: 0 26px;
	height: 52px;
	border-radius: 6px;
}

/* ============================================================
   Responsive — tablet (≤1080px), large mobile (≤768px), small mobile (≤480px)
   ============================================================ */

/* ----- Tablet (≤1080px) ----- */
@media (max-width: 1080px) {
	:root { --gutter: 40px; --sec-pad-y: 96px; }
	.dfd-hero__grid { gap: 40px; }
	.dfd-hero__watermark { max-width: 640px; }
	.dfd-proof__grid { gap: 48px; }
	.dfd-doctor__card { padding: 40px; gap: 40px; }
	.dfd-services__grid { grid-template-columns: repeat(2, 1fr); }
	.dfd-process__steps { grid-template-columns: 1fr; gap: 18px; }
	.dfd-quick__band { grid-template-columns: repeat(2, 1fr); }
	.dfd-quick__cell:nth-child(2) { border-right: none; }
	.dfd-quick__cell:nth-child(-n+2) { border-bottom: 1px solid var(--c-stone); }
	.dfd-contact__grid { grid-template-columns: 1fr 1fr; }
	.dfd-contact__photo { grid-column: 1 / -1; max-width: 520px; }
	.dfd-insurance__grid { grid-template-columns: 1fr; gap: 36px; }
	.dfd-faq__grid { grid-template-columns: 1fr; gap: 36px; }
	.dfd-footer__grid { grid-template-columns: 1fr 1fr; gap: 40px; }
}

/* ----- Mobile (≤768px) — bespoke layer ----- */
@media (max-width: 768px) {
	:root {
		--gutter: 22px;
		--sec-pad-y: 64px;
		--btn-h: 52px;          /* easier to tap */
	}
	html, body { font-size: 17px; }
	body { padding-bottom: 84px; }   /* room for sticky callbar */

	/* Header: keep utility bar tight, simpler nav row. */
	.dfd-utility { font-size: 13px; }
	.dfd-utility__row { flex-direction: column; align-items: center; gap: 4px; min-height: 56px; padding: 12px 0; text-align: center; }
	.dfd-utility__right { font-size: 13px; opacity: .85; flex-wrap: wrap; justify-content: center; }
	.dfd-utility__sep { display: none; }
	.dfd-utility__right a { display: inline-flex; align-items: center; min-height: 24px; }

	.dfd-nav-wrap { border-bottom-color: var(--c-bone-deep); }
	.dfd-nav { min-height: 72px; gap: 10px; }
	.dfd-nav__primary, .dfd-nav__ctas { display: none; }
	.dfd-burger { display: inline-flex; margin-left: auto; width: 52px; height: 52px; border-radius: 8px; }
	.dfd-brand__mark { height: 56px; }       /* shorter logo on mobile */

	.dfd-mobile-menu {
		padding: 24px var(--gutter) 32px;
		border-bottom: 1px solid var(--c-bone-deep);
		background: var(--c-cream);
	}
	.dfd-mobile-menu .dfd-nav__list { flex-direction: column; gap: 0; }
	.dfd-mobile-menu .dfd-nav__link {
		display: block;
		padding: 18px 0;
		border-bottom: 1px solid var(--c-bone-deep);
		font-size: 18px;
		min-height: 56px;
	}
	.dfd-mobile-menu__ctas { display: flex; flex-direction: column; gap: 12px; margin-top: 24px; }
	.dfd-mobile-menu__ctas .dfd-btn { width: 100%; height: 56px; font-size: 16px; }

	/* Buttons: full width by default; CTA rows stack. */
	.dfd-cta-row { flex-direction: column; align-items: stretch; gap: 12px; }
	.dfd-cta-row .dfd-btn { width: 100%; }

	/* Type scale on mobile — keep H1 punchy but readable. */
	.dfd-h1 { font-size: clamp(36px, 9.5vw, 44px); }
	.dfd-h2 { font-size: clamp(28px, 7.5vw, 34px); }
	.dfd-tagline { font-size: clamp(22px, 6vw, 26px); }

	/* Hero: stack, watermark scaled and pushed to corner. */
	.dfd-hero { padding-top: 48px; padding-bottom: 72px; }
	.dfd-hero__watermark { max-width: 520px; width: 140%; }
	.dfd-hero__grid { grid-template-columns: 1fr; gap: 32px; }
	.dfd-hero__copy { max-width: 100%; }
	.dfd-hero__photo img { aspect-ratio: 4 / 5; }   /* taller, magazine-style on mobile */
	.dfd-hero__stats { margin-top: 16px; padding: 0; grid-template-columns: 1fr; gap: 12px; }
	.dfd-hero__caption { font-size: 14px; }
	.dfd-hero__panel { top: 20px; left: 20px; right: 20px; padding: 22px; }
	.dfd-hero__panel-body { font-size: 15px; }

	/* Section bands: tighter padding, no bleed. */
	.dfd-section--tight { padding: 40px 0; }

	/* Quick action band */
	.dfd-quick__band { grid-template-columns: 1fr; }
	.dfd-quick__cell { border-right: none !important; border-bottom: 1px solid var(--c-stone); padding: 24px 22px; }
	.dfd-quick__cell:last-child { border-bottom: none; }

	/* Card slider — narrower cards, tighter controls */
	.dfd-cards__head { flex-direction: column; align-items: flex-start; gap: 14px; }
	.dfd-cards__controls { justify-content: flex-start; margin-bottom: 22px; }
	.dfd-cards__btn { width: 48px; height: 48px; }
	.dfd-card { flex: 0 0 78vw; max-width: 320px; }
	.dfd-card__body { padding: 22px 22px 26px; }
	.dfd-card__title { font-size: 19px; }

	/* Proof grid */
	.dfd-proof__grid { grid-template-columns: 1fr; gap: 28px; }
	.dfd-proof__cards { grid-template-columns: 1fr; gap: 14px; }
	.dfd-proof-card { padding: 26px; min-height: 0; }

	/* Process band */
	.dfd-process__steps { margin-top: 36px; }
	.dfd-step { padding: 24px 22px; gap: 18px; }
	.dfd-step__num { width: 44px; height: 44px; font-size: 17px; }

	/* Doctor band */
	.dfd-doctor__card { grid-template-columns: 1fr; padding: 26px; gap: 26px; }
	.dfd-doctor__photo img { aspect-ratio: 4 / 5; max-height: 420px; }

	/* Services grid */
	.dfd-services__head { margin-bottom: 32px; }
	.dfd-services__grid { grid-template-columns: 1fr; gap: 14px; }
	.dfd-svc-card { padding: 24px 22px; }

	/* Insurance band */
	.dfd-insurance__cards { grid-template-columns: 1fr; gap: 14px; }
	.dfd-insurance-card { padding: 26px 22px; min-height: 0; }

	/* Emergency band */
	.dfd-emergency__row { flex-direction: column; align-items: stretch; gap: 18px; }
	.dfd-emergency__cta .dfd-btn { width: 100%; }

	/* Contact module */
	.dfd-contact__grid { grid-template-columns: 1fr; gap: 16px; }
	.dfd-contact__card, .dfd-contact__hours { padding: 28px 22px; }
	.dfd-contact__photo { max-width: 100%; }
	.dfd-cta-row--tight { flex-direction: column; }

	/* FAQ */
	.dfd-faq__items { gap: 10px; }
	.dfd-faq__item { padding: 0 22px; }
	.dfd-faq__q { padding: 20px 0; font-size: 16px; }
	.dfd-faq__side { padding: 28px 22px; }

	/* Footer CTA */
	.dfd-fcta__card { grid-template-columns: 1fr; padding: 32px 24px; gap: 22px; text-align: left; }
	.dfd-fcta__cta .dfd-btn { width: 100%; }
	.dfd-fcta__aside { align-items: stretch; gap: 16px; }
	.dfd-fcta__nap { align-items: flex-start; text-align: left; }
	.dfd-fcta__tagline { text-align: left; margin-top: 28px; }

	/* Footer */
	.dfd-footer { padding: 56px 0 32px; }
	.dfd-footer__grid { grid-template-columns: 1fr; gap: 40px; }
	.dfd-footer__mark { height: 72px; }
	.dfd-footer__tagline { font-size: 19px; }

	/* Sticky callbar */
	.dfd-callbar { display: block; padding: 10px var(--gutter); }
}

/* ----- Small mobile (≤480px) — squeeze further ----- */
@media (max-width: 480px) {
	:root { --gutter: 18px; --sec-pad-y: 56px; }
	.dfd-h1 { font-size: 36px; }
	.dfd-h2 { font-size: 28px; }
	.dfd-lead { font-size: 17px; }
	.dfd-hero { padding-top: 36px; padding-bottom: 56px; }
	.dfd-hero__photo img { aspect-ratio: 1 / 1; }
	.dfd-fcta__card { padding: 26px 20px; }
	.dfd-doctor__card, .dfd-contact__card, .dfd-contact__hours { padding: 24px 20px; }
}

/* ----- GSAP reveal anchors (Novix-inspired editorial pacing) ----- */
/* These initial states only apply when JS hydrates the .js-anim flag.
   This avoids a flash of hidden content on no-JS clients. */
.js-anim .dfd-hero__watermark { will-change: transform; }
.js-anim .dfd-svc-card,
.js-anim .dfd-proof-card,
.js-anim .dfd-stat-card,
.js-anim .dfd-step,
.js-anim .dfd-quick__cell,
.js-anim .dfd-insurance-card { will-change: transform; }

/* Word-level reveal — each word is wrapped in span.dfd-word; the inner
   span.dfd-word__inner is what GSAP animates with `y: 110%`. The outer
   span clips so words appear to rise into view from below a fixed line. */
.dfd-word {
	display: inline-block;
	overflow: hidden;
	vertical-align: top;
	padding-bottom: 0.08em;       /* breathing room for descenders */
}
.dfd-word__inner {
	display: inline-block;
	will-change: transform;
}

/* Image clip-path reveal — initial clipped state applied at load so
   GSAP has a defined "from" without flash. */
.js-anim .dfd-doctor__photo,
.js-anim .dfd-contact__photo,
.js-anim .dfd-hero__photo {
	will-change: clip-path;
}

/* ----- Reduced motion ----- */
@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	* { transition-duration: 0.01ms !important; animation-duration: 0.01ms !important; }
	/* When motion is reduced, body never gets .js-anim, so nothing is hidden.
	   These overrides cover the rare case where it does (e.g. user toggles mid-session). */
	.js-anim .dfd-word__inner { transform: none !important; }
	.js-anim .dfd-hero__photo,
	.js-anim .dfd-doctor__photo,
	.js-anim .dfd-contact__photo { clip-path: none !important; }
}
