/*
Theme Name: Dieringer Chiropractic: Laurel
Theme URI: https://mymokenachiro.net/
Author: Dependent Media
Author URI: https://dependentmedia.com/
Description: Block theme for Dieringer Chiropractic Health Clinic (Dr. Robert Dieringer, D.C., Wolf Road, Mokena, Illinois). Built to the Sierra direction: light, restrained, photo-led. From their own logo: the laurel branches either side of the name (a single leaf marks the labels) and the pale blue spine circle (the page bands). Photos are matted like the framed prints on their waiting-room wall. Every page is core blocks. Rebuild 2026-11.
Version: 1.0.0
Requires at least: 6.6
Requires PHP: 8.1
License: Proprietary
Text Domain: dch-laurel
*/

/* ---------- fonts (self-hosted, latin; tools/get-fonts.py). Fira Sans 400 + 600 only: one file fewer on the phone LCP path ---------- */
@font-face { font-family: "Libre Baskerville"; src: url(assets/fonts/libre-baskerville-roman.woff2) format("woff2"); font-weight: 400 700; font-style: normal; font-display: swap; }
@font-face { font-family: "Libre Baskerville"; src: url(assets/fonts/libre-baskerville-italic.woff2) format("woff2"); font-weight: 400; font-style: italic; font-display: swap; }
@font-face { font-family: "Fira Sans"; src: url(assets/fonts/fira-sans-400.woff2) format("woff2"); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: "Fira Sans"; src: url(assets/fonts/fira-sans-600.woff2) format("woff2"); font-weight: 600; font-style: normal; font-display: swap; }

/* ---------- tokens ---------- */
:root {
	--ink: #1C2629; --text: #384346; --mute: #56636A; --line: #D6DFE1; --field: #75858A;
	--wall: #EAF2F4; --wall-2: #DCEAEE; --sky: #9BCAD5;
	--laurel: #35631F; --laurel-deep: #27491A; --laurel-tint: #EDF3E8;
	--foot: #17303A; --foot-2: #21414D; --on-foot: #FFFFFF; --on-foot-soft: #B9CDD3;
	--err: #A3261C;
	--serif: "Libre Baskerville", Georgia, "Times New Roman", serif;
	--sans: "Fira Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
	--wide: 1200px; --gut: clamp(16px, 4vw, 40px); --sec: clamp(52px, 7vw, 96px);
	--head-h: 77px;
	--tab: 3px 999px 999px 3px; /* the button shape: square-ish left, round right */
	--leaf: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 20'%3E%3Cpath d='M7 1Q15 9 7 19Q-1 9 7 1Z' fill='%2335631F'/%3E%3Cpath d='M7 5V16' stroke='%23fff' stroke-width='1.1' stroke-linecap='round'/%3E%3C/svg%3E");
}

/* ---------- base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-padding-top: calc(var(--head-h) + 16px); }
body { margin: 0; background: #fff; color: var(--text); font: 400 1.0625rem/1.65 var(--sans); text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased; }
img, svg { max-width: 100%; height: auto; }
a { color: var(--laurel); text-decoration-thickness: 1px; text-underline-offset: .18em; }
a:hover { color: var(--laurel-deep); text-decoration-thickness: 2px; }
:focus-visible { outline: 3px solid var(--laurel-deep); outline-offset: 2px; border-radius: 2px; }
h1, h2, h3, h4 { color: var(--ink); margin: 0 0 .55em; text-wrap: balance; }
h1 { font: 400 clamp(2.05rem, 4.1vw, 3.1rem)/1.16 var(--serif); letter-spacing: -.01em; }
h2 { font: 400 clamp(1.55rem, 2.7vw, 2.2rem)/1.22 var(--serif); }
h3 { font: 600 1.2rem/1.3 var(--sans); }
h4 { font: 600 1.05rem/1.35 var(--sans); }
p { margin: 0 0 1em; }
ul, ol { margin: 0 0 1em; padding-left: 1.25em; }
li { margin: .25em 0; }
strong { color: var(--ink); font-weight: 600; }
.screen-reader-text { position: absolute !important; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.dch-ico { width: 1.15em; height: 1.15em; flex: none; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; vertical-align: -.2em; }

/* ---------- sections ---------- */
.dch-main { display: block; }
.dch-sec { padding: var(--sec) max(var(--gut), calc((100% - var(--wide)) / 2)); }
.dch-sec--wall { background: var(--wall); }
.dch-sec--tight { padding-top: calc(var(--sec) * .6); padding-bottom: calc(var(--sec) * .6); }
.dch-sec + .dch-sec:not(.dch-sec--wall):not(.dch-hero) { padding-top: 0; }
.dch-sec--wall + .dch-sec, .dch-hero + .dch-sec, .dch-head + .dch-sec { padding-top: var(--sec) !important; }
.dch-sec__intro { max-width: 46rem; margin-bottom: clamp(28px, 4vw, 44px); }
.dch-sec__intro > :last-child { margin-bottom: 0; }
.dch-kicker { display: flex; align-items: center; gap: .55em; margin: 0 0 .9em; color: var(--laurel-deep); font: 600 .8125rem/1.25 var(--sans); letter-spacing: .12em; text-transform: uppercase; }
.dch-kicker::before { content: ""; width: 11px; height: 16px; flex: none; background: var(--leaf) center / contain no-repeat; transform: rotate(28deg); }
.dch-lead { font-size: clamp(1.125rem, 1.6vw, 1.25rem); line-height: 1.6; color: var(--text); max-width: 40rem; }
.dch-prose { max-width: 44rem; }
.dch-prose h2 { margin-top: 1.4em; }
.dch-prose h3 { margin-top: 1.3em; }
.dch-split { display: grid; gap: clamp(28px, 5vw, 72px); align-items: start; }
@media (min-width: 900px) { .dch-split { grid-template-columns: minmax(0, 1.15fr) minmax(0, .85fr); } .dch-split--even { grid-template-columns: 1fr 1fr; } .dch-split--mid { align-items: center; } }
.dch-split > .wp-block-group > :last-child { margin-bottom: 0; }

/* ---------- buttons (D-shaped tab: square-ish left, round right; no shadow) ---------- */
.dch-btn, .wp-block-button__link, .dch-nf .nf-form-content input[type="submit"], .dch-nf .nf-form-content input[type="button"] {
	display: inline-flex; align-items: center; justify-content: center; gap: .5em; min-height: 48px; padding: .72em 1.55em .72em 1.15em;
	border: 2px solid var(--laurel); border-radius: var(--tab); background: var(--laurel); color: #fff;
	font: 600 1rem/1.2 var(--sans); letter-spacing: .01em; text-decoration: none; cursor: pointer; transition: background-color .15s, border-color .15s, color .15s;
}
.dch-btn:hover, .wp-block-button__link:hover, .dch-nf .nf-form-content input[type="submit"]:hover { background: var(--laurel-deep); border-color: var(--laurel-deep); color: #fff; text-decoration: none; }
.dch-btn--line, .is-style-outline > .wp-block-button__link { background: transparent; color: var(--laurel-deep); }
.dch-btn--line:hover, .is-style-outline > .wp-block-button__link:hover { background: var(--laurel-tint); color: var(--laurel-deep); border-color: var(--laurel-deep); }
.wp-block-buttons { display: flex; flex-wrap: wrap; gap: 12px 14px; margin: 1.4em 0 0; }
.wp-block-buttons:first-child { margin-top: 0; }
.dch-more { margin: 26px 0 0; font-weight: 600; }
.wp-block-button { margin: 0; }

/* ---------- header ---------- */
.dch-skip { position: absolute; left: 12px; top: -60px; z-index: 100; padding: 10px 16px; background: var(--ink); color: #fff; font-weight: 600; border-radius: var(--tab); }
.dch-skip:focus { top: 10px; color: #fff; }
.dch-header { position: sticky; top: 0; z-index: 50; background: #fff; border-bottom: 1px solid var(--line); transition: box-shadow .2s; }
.dch-header.is-scrolled { box-shadow: 0 6px 18px -12px rgba(28, 38, 41, .35); }
.dch-bar__in { display: flex; align-items: center; gap: 18px; max-width: calc(var(--wide) + 2 * var(--gut)); margin: 0 auto; padding: 12px var(--gut); min-height: var(--head-h); }
.dch-brand { display: flex; align-items: center; gap: 11px; color: var(--ink); text-decoration: none; margin-right: auto; min-width: 0; }
.dch-brand:hover { color: var(--ink); }
.dch-brand__mark { width: 46px; height: 46px; flex: none; }
.dch-brand__name { display: block; font: 400 1.18rem/1.15 var(--serif); white-space: nowrap; }
.dch-brand__sub { display: block; margin-top: 4px; color: var(--mute); font: 600 .6875rem/1.2 var(--sans); letter-spacing: .14em; text-transform: uppercase; white-space: nowrap; }
.dch-nav { display: none; }
.dch-bar__cta { display: flex; align-items: center; gap: 16px; }
.dch-bar__tel { display: none; align-items: center; gap: 7px; color: var(--ink); font: 600 1rem/1 var(--sans); text-decoration: none; white-space: nowrap; }
.dch-bar__tel .dch-ico { color: var(--laurel); }
.dch-bar__tel:hover { color: var(--laurel-deep); text-decoration: underline; }
.dch-bar__book { display: none; white-space: nowrap; min-height: 44px; padding-top: .6em; padding-bottom: .6em; }
.dch-bar__menu { display: inline-flex; align-items: center; gap: 7px; min-height: 44px; padding: 8px 14px 8px 11px; border: 1.5px solid var(--ink); border-radius: var(--tab); background: #fff; color: var(--ink); font: 600 .95rem/1 var(--sans); cursor: pointer; }
.dch-bar__menu .dch-ico--close, .dch-bar__menu[aria-expanded="true"] .dch-ico--menu { display: none; }
.dch-bar__menu[aria-expanded="true"] .dch-ico--close { display: block; }
@media (min-width: 768px) { .dch-bar__tel, .dch-bar__book { display: inline-flex; } }
@media (min-width: 1280px) {
	.dch-nav { display: block; margin-right: auto; }
	.dch-bar__menu { display: none; }
	.dch-brand { margin-right: 4px; }
	.dch-bar__in { max-width: 1360px; padding-left: 24px; padding-right: 24px; gap: 14px; }
	.dch-bar__cta { gap: 14px; }
}
@media (min-width: 1280px) and (max-width: 1439px) {
	.dch-brand__name { font-size: 1.04rem; }
	.dch-brand__sub { font-size: .625rem; letter-spacing: .12em; }
	.dch-brand__mark { width: 40px; height: 40px; }
	.dch-menu__link { padding: 10px 5px; font-size: .9rem; }
	.dch-menu__toggle { width: 22px; margin-left: -5px; }
	.dch-bar__tel { font-size: .94rem; }
	.dch-bar__book { padding: .55em 1.15em .55em .9em; font-size: .94rem; }
}
@media (max-width: 400px) { .dch-brand__mark { width: 38px; height: 38px; } .dch-brand__name { font-size: 1.02rem; } .dch-brand__sub { font-size: .625rem; letter-spacing: .1em; } .dch-bar__in { gap: 10px; } }

/* menu (desktop bar) */
.dch-menu { list-style: none; margin: 0; padding: 0; }
.dch-menu--bar { display: flex; align-items: center; gap: 2px; }
.dch-menu--bar > .dch-menu__item { position: relative; display: flex; align-items: center; }
.dch-menu__link { display: block; padding: 10px 8px; color: var(--ink); font: 600 .96rem/1.2 var(--sans); text-decoration: none; white-space: nowrap; }
.dch-menu__link:hover, .dch-menu__item.is-in > .dch-menu__link { color: var(--laurel-deep); text-decoration: underline; text-decoration-thickness: 2px; }
.dch-menu__toggle { display: inline-flex; align-items: center; justify-content: center; width: 26px; height: 32px; margin-left: -6px; padding: 0; border: 0; background: none; color: var(--mute); cursor: pointer; border-radius: 3px; }
.dch-menu__toggle .dch-ico { width: 18px; height: 18px; transition: transform .15s; }
.dch-menu__toggle[aria-expanded="true"] .dch-ico { transform: rotate(180deg); }
.dch-sub { list-style: none; margin: 0; padding: 8px 0; }
.dch-menu--bar .dch-sub { position: absolute; left: 0; top: 100%; min-width: 240px; padding: 8px 0; background: #fff; border: 1px solid var(--line); border-top: 2px solid var(--laurel); box-shadow: 0 14px 30px -18px rgba(28, 38, 41, .45); display: none; }
.dch-menu--bar .has-sub:hover > .dch-sub, .dch-menu--bar .has-sub.is-open > .dch-sub { display: block; }
.dch-menu--bar .has-sub::after { content: ""; position: absolute; left: 0; right: 0; top: 100%; height: 10px; } /* hover bridge */
.dch-sub a { display: block; padding: 8px 18px; color: var(--ink); font: 400 .95rem/1.3 var(--sans); text-decoration: none; }
.dch-sub a:hover, .dch-sub a[aria-current="page"] { background: var(--wall); color: var(--laurel-deep); text-decoration: underline; }
.dch-sub .is-first a { font-weight: 600; }

/* menu (phone/tablet panel) */
.dch-panel { border-top: 1px solid var(--line); background: #fff; max-height: calc(100vh - var(--head-h)); overflow-y: auto; }
.dch-panel[hidden] { display: none; }
.dch-panel nav { max-width: calc(var(--wide) + 2 * var(--gut)); margin: 0 auto; padding: 8px var(--gut) 4px; }
.dch-menu--panel > .dch-menu__item { display: flex; flex-wrap: wrap; align-items: center; border-bottom: 1px solid var(--line); }
.dch-menu--panel .dch-menu__link { flex: 1; padding: 14px 0; font-size: 1.05rem; }
.dch-menu--panel .dch-menu__toggle { width: 48px; height: 48px; margin: 0; }
.dch-menu--panel .dch-sub { display: none; width: 100%; padding: 0 0 10px 12px; }
.dch-menu--panel .is-open > .dch-sub { display: block; }
.dch-panel__contact { display: flex; flex-wrap: wrap; gap: 10px 22px; max-width: calc(var(--wide) + 2 * var(--gut)); margin: 0 auto; padding: 14px var(--gut) 22px; }
.dch-panel__contact a { display: inline-flex; align-items: center; gap: 7px; color: var(--ink); font-weight: 600; text-decoration: none; min-height: 44px; }

/* ---------- breadcrumbs ---------- */
.dch-crumbs ol { display: flex; flex-wrap: wrap; gap: 4px 0; list-style: none; margin: 0 0 18px; padding: 0; font-size: .9rem; color: var(--mute); }
.dch-crumbs li { margin: 0; }
.dch-crumbs li + li::before { content: "/"; margin: 0 .5em; color: #94A3A8; }
.dch-crumbs a { color: var(--mute); }
.dch-crumbs a:hover { color: var(--laurel-deep); }

/* ---------- matted photos (white mat + thin ink frame, like the prints on their waiting-room wall) ---------- */
.dch-mat, .dch-fig { margin: 0; }
.dch-mat, .dch-fig img { background: #fff; }
.dch-fig img, .dch-mat > img { display: block; width: 100%; height: auto; padding: 9px; border: 1px solid #2E3A3E; }
.dch-fig.is-wide img, .dch-mat.is-wide > img { aspect-ratio: 3 / 2; object-fit: cover; }
.dch-fig figcaption, .dch-plate { display: inline-block; margin: 12px 0 0; padding: 5px 11px 5px 10px; border-left: 3px solid var(--laurel); background: var(--wall); color: var(--mute); font: 600 .8125rem/1.35 var(--sans); }
.dch-sec--wall .dch-fig figcaption, .dch-sec--wall .dch-plate, .dch-hero .dch-plate { background: #fff; }
.dch-fig--portrait img { max-width: 420px; }

/* ---------- home hero: pale-blue "wall", headline left, the matted banner hanging below the wall's edge ---------- */
.dch-hero { --hang: 0px; padding: clamp(32px, 6vw, 64px) max(var(--gut), calc((100% - var(--wide)) / 2)) clamp(36px, 5vw, 56px); background: var(--wall); }
.dch-hero__grid { display: grid; gap: 30px; }
.dch-hero__text h1 { max-width: 15ch; }
.dch-hero__facts { margin: 22px 0 0; color: var(--mute); font-size: .95rem; }
.dch-hero__facts strong { color: var(--ink); }
@media (min-width: 960px) {
	.dch-hero__grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); gap: clamp(36px, 4.5vw, 64px); align-items: center; }
}
/* Wide screens: the matted banner hangs below the wall's bottom edge (its caption bar sits on the white page). */
@media (min-width: 1200px) {
	.dch-hero { --hang: 104px; padding-bottom: 0; background: linear-gradient(to bottom, var(--wall) 0, var(--wall) calc(100% - var(--hang)), #fff calc(100% - var(--hang))); }
	.dch-hero__grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1.18fr); align-items: start; }
	.dch-hero__text { padding: 12px 0 calc(var(--hang) + 16px); }
}
/* the banner (rotating photos, slow crossfade, pause/play + bars) */
.dch-banner { position: relative; }
.dch-banner__frame { padding: 10px; background: #fff; border: 1px solid #2E3A3E; }
.dch-banner__stage { position: relative; aspect-ratio: 4 / 3; overflow: hidden; background: var(--wall-2); }
.dch-banner__slide { position: absolute; inset: 0; margin: 0; opacity: 0; transition: opacity 1.6s ease-in-out; }
.dch-banner__slide.is-on { opacity: 1; }
.dch-banner__slide img { display: block; width: 100%; height: 100%; object-fit: cover; }
.dch-banner__bar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px 16px; margin-top: 12px; }
.dch-banner__bar .dch-plate { margin: 0; }
.dch-banner__ctl { display: flex; align-items: center; gap: 2px; margin-left: auto; }
.dch-banner__dot { position: relative; width: 32px; height: 40px; padding: 0; border: 0; background: none; cursor: pointer; }
.dch-banner__dot::before { content: ""; position: absolute; left: 6px; right: 6px; top: 50%; height: 4px; margin-top: -2px; border-radius: 2px; background: #9AA9AE; transition: background-color .2s; }
.dch-banner__dot[aria-current="true"]::before { background: var(--laurel); left: 2px; right: 2px; }
.dch-banner__pause { display: inline-flex; align-items: center; justify-content: center; width: 46px; height: 40px; margin-left: 8px; padding: 0 4px 0 0; border: 1.5px solid var(--ink); border-radius: var(--tab); background: #fff; color: var(--ink); cursor: pointer; }
.dch-banner__pause .dch-ico { width: 20px; height: 20px; }
.dch-banner__pause .dch-ico--play, .dch-banner__pause.is-paused .dch-ico--pause { display: none; }
.dch-banner__pause.is-paused .dch-ico--play { display: block; }
.dch-banner__pause:hover { background: var(--wall); }

/* ---------- inner page head (same wall, the page photo hangs below it) ---------- */
.dch-head { --hang: 0px; padding: clamp(28px, 4.5vw, 56px) max(var(--gut), calc((100% - var(--wide)) / 2)) clamp(36px, 5vw, 60px); background: var(--wall); }
.dch-head h1 { max-width: 22ch; }
.dch-head .dch-lead { margin-bottom: 0; }
.dch-head--photo { --hang: clamp(70px, 10vw, 140px); padding-bottom: 0; background: linear-gradient(to bottom, var(--wall) 0, var(--wall) calc(100% - var(--hang)), #fff calc(100% - var(--hang))); }
.dch-head__grid { display: grid; gap: 28px; }
.dch-head__grid > :first-child { padding-bottom: 8px; }
@media (min-width: 900px) {
	.dch-head__grid { grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr); gap: clamp(32px, 5vw, 64px); align-items: start; }
	.dch-head--photo .dch-head__grid > :first-child { padding-bottom: calc(var(--hang) + 20px); }
}
.dch-head .wp-block-buttons { margin-top: 1.5em; }

/* ---------- cards: services (matted photo + text) ---------- */
.dch-cards { display: grid; gap: clamp(26px, 3vw, 36px); grid-template-columns: repeat(auto-fill, minmax(min(100%, 250px), 1fr)); }
.dch-card { display: flex; flex-direction: column; }
.dch-card .dch-mat { margin-bottom: 16px; }
.dch-card .dch-mat img { aspect-ratio: 3 / 2; object-fit: cover; }
.dch-card h3 { margin-bottom: .35em; }
.dch-card h3 a { color: var(--ink); text-decoration: none; }
.dch-card h3 a:hover { color: var(--laurel-deep); text-decoration: underline; }
.dch-card p { margin-bottom: .6em; }
.dch-card__more { margin-top: auto; font-weight: 600; }
.dch-card--plain { padding: 22px 22px 18px; background: #fff; border: 1px solid var(--line); border-top: 3px solid var(--laurel); }
.dch-sec--wall .dch-card--plain { border-color: #CBD9DD; border-top-color: var(--laurel); }

/* link lists with a small arrow */
.dch-links { list-style: none; margin: 0; padding: 0; }
.dch-links li { margin: 0; }
.dch-links a { display: inline-flex; align-items: center; gap: .4em; padding: 5px 0; font-weight: 600; }
.dch-links .dch-ico { width: 1em; height: 1em; }
.dch-links--cols { columns: 2 15rem; column-gap: 40px; }
.dch-links--cols li { break-inside: avoid; }
.dch-cond { display: grid; gap: 0 40px; grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); list-style: none; margin: 0; padding: 0; }
.dch-cond li { margin: 0; padding: 16px 0 14px; border-top: 1px solid var(--line); }
.dch-cond a { font: 400 1.15rem/1.3 var(--serif); color: var(--ink); text-decoration: none; }
.dch-cond a:hover { color: var(--laurel-deep); text-decoration: underline; }
.dch-cond span { display: block; margin-top: 4px; color: var(--mute); font-size: .95rem; line-height: 1.5; }

/* checklists with a leaf */
.dch-checks { list-style: none; padding: 0; }
.dch-checks li { position: relative; padding-left: 1.7em; margin: .5em 0; }
.dch-checks li::before { content: ""; position: absolute; left: .2em; top: .3em; width: 10px; height: 15px; background: var(--leaf) center / contain no-repeat; transform: rotate(28deg); }
.dch-steps { counter-reset: s; list-style: none; padding: 0; }
.dch-steps li { counter-increment: s; position: relative; padding: 0 0 0 2.6em; margin: 0 0 .9em; }
.dch-steps li::before { content: counter(s); position: absolute; left: 0; top: -.05em; width: 1.8em; height: 1.8em; display: grid; place-items: center; border: 1.5px solid var(--laurel); border-radius: 50%; color: var(--laurel-deep); font: 600 .9rem/1 var(--sans); }

/* side card on service/condition pages */
.dch-aside { padding: 24px 24px 20px; background: #fff; border: 1px solid #2E3A3E; box-shadow: inset 0 0 0 8px #fff, inset 0 0 0 9px var(--line); }
.dch-aside > :last-child { margin-bottom: 0; }
.dch-aside h2 { font-size: 1.35rem; }
.dch-aside .dch-hours { margin-bottom: 1em; }

/* ---------- who we help ---------- */
.dch-aud { display: grid; gap: 22px; grid-template-columns: repeat(auto-fill, minmax(min(100%, 320px), 1fr)); }
.dch-aud__item { padding: 24px 24px 18px; background: #fff; border: 1px solid #CBD9DD; }
.dch-aud__item h3 { display: flex; align-items: baseline; gap: .5em; }
.dch-aud__item h3::before { content: ""; width: 10px; height: 15px; flex: none; background: var(--leaf) center / contain no-repeat; transform: rotate(28deg); }
.dch-aud--rows { grid-template-columns: 1fr; gap: 0; }
.dch-aud--rows .dch-aud__item { display: grid; gap: 8px 40px; padding: 30px 0; background: none; border: 0; border-top: 1px solid var(--line); }
@media (min-width: 800px) { .dch-aud--rows .dch-aud__item { grid-template-columns: 1fr 1.4fr 1fr; } .dch-aud--rows h2 { margin: 0; } }
.dch-aud--rows h2 { font-size: 1.5rem; }

/* ---------- credentials ---------- */
.dch-creds { display: grid; gap: 0 40px; grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); list-style: none; margin: 0; padding: 0; }
.dch-creds li { margin: 0; padding: 18px 0 16px; border-top: 1px solid #C6D6DA; }
.dch-creds strong { display: block; font: 400 1.3rem/1.25 var(--serif); color: var(--ink); }
.dch-creds span { display: block; margin-top: 5px; color: var(--text); font-size: .98rem; }

/* ---------- reviews ---------- */
.dch-reviews { display: grid; gap: 26px; grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); }
.dch-review { margin: 0; padding: 4px 0 0 22px; border-left: 2px solid var(--sky); }
.dch-review blockquote { margin: 0; }
.dch-review p { font: italic 400 1.05rem/1.65 var(--serif); color: var(--ink); }
.dch-review figcaption { color: var(--mute); font-size: .92rem; font-weight: 600; }
.dch-reviews__more { margin-top: 26px; }
.dch-reviews--all { grid-template-columns: repeat(auto-fill, minmax(min(100%, 340px), 1fr)); gap: 30px 40px; }

/* ---------- strip of office photos ---------- */
.dch-strip { display: grid; gap: 18px; grid-template-columns: repeat(2, 1fr); list-style: none; margin: 0; padding: 0; }
@media (min-width: 900px) { .dch-strip { grid-template-columns: repeat(4, 1fr); } }
.dch-strip li { margin: 0; }
.dch-strip a { display: block; }
.dch-strip img { display: block; width: 100%; aspect-ratio: 4 / 3; object-fit: cover; padding: 7px; background: #fff; border: 1px solid #2E3A3E; }
.dch-strip a:hover img { border-color: var(--laurel); outline: 2px solid var(--laurel); }

/* ---------- map + visit ---------- */
.dch-visit { display: grid; gap: clamp(28px, 4vw, 56px); align-items: start; }
@media (min-width: 900px) { .dch-visit { grid-template-columns: minmax(0, 1.25fr) minmax(0, .75fr); } }
.dch-map-wrap { margin: 0; padding: 10px; background: #fff; border: 1px solid #2E3A3E; }
.dch-map { display: block; width: 100%; height: auto; }
.dch-map-wrap figcaption { margin-top: 10px; color: var(--mute); font-size: .85rem; }
.dch-addr { font-style: normal; margin: 0 0 1em; }
.dch-addr strong { font: 400 1.2rem/1.35 var(--serif); }
.dch-hours { width: 100%; border-collapse: collapse; font-size: .97rem; }
.dch-hours caption { text-align: left; font: 600 1rem/1.3 var(--sans); color: var(--ink); padding-bottom: 6px; }
.dch-hours th, .dch-hours td { padding: 7px 0; border-top: 1px solid var(--line); text-align: left; vertical-align: top; }
.dch-hours th { font-weight: 600; color: var(--ink); padding-right: 14px; white-space: nowrap; }
.dch-hours td small { display: block; color: var(--mute); font-size: .85rem; }
.dch-hours .is-today th, .dch-hours .is-today td { color: var(--laurel-deep); }
.dch-towns { margin-top: 1em; }

/* ---------- call to action band ---------- */
.dch-cta { display: grid; gap: 20px 40px; align-items: center; padding: clamp(28px, 4vw, 44px) clamp(22px, 4vw, 48px); background: var(--wall); border: 1px solid #C6D6DA; }
@media (min-width: 900px) { .dch-cta { grid-template-columns: 1.2fr auto; } }
.dch-cta h2 { margin-bottom: .3em; }
.dch-cta p { margin: 0; }
.dch-cta .wp-block-buttons, .dch-cta__btns { display: flex; flex-wrap: wrap; gap: 12px; margin: 0; }

/* ---------- wellness plans ---------- */
.dch-plans { display: grid; gap: 22px; grid-template-columns: repeat(auto-fill, minmax(min(100%, 250px), 1fr)); }
.dch-plan { padding: 22px; background: #fff; border: 1px solid #CBD9DD; border-top: 3px solid var(--laurel); }
.dch-plan h3 { margin-bottom: .2em; }
.dch-plan__price { font: 400 1.9rem/1.2 var(--serif); color: var(--ink); margin: .2em 0 .4em; }
.dch-plan__price small { font: 400 .95rem/1.4 var(--sans); color: var(--mute); }

/* ---------- letters gallery (core Gallery) + filters + lightbox ---------- */
.dch-filters { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 22px; }
.dch-filter { min-height: 42px; padding: 8px 18px 8px 14px; border: 1.5px solid var(--field); border-radius: var(--tab); background: #fff; color: var(--ink); font: 600 .95rem/1.2 var(--sans); cursor: pointer; }
.dch-filter[aria-pressed="true"] { border-color: var(--laurel); background: var(--laurel); color: #fff; }
.dch-filter:hover { border-color: var(--laurel); }
.dch-count { color: var(--mute); font-size: .92rem; margin: -8px 0 18px; }
.wp-block-gallery.dch-letters { display: grid !important; gap: 18px !important; grid-template-columns: repeat(2, 1fr); margin: 0; }
@media (min-width: 640px) { .wp-block-gallery.dch-letters { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 1000px) { .wp-block-gallery.dch-letters { grid-template-columns: repeat(6, 1fr); } }
.wp-block-gallery.dch-letters figure.wp-block-image { width: auto !important; margin: 0 !important; display: block; }
.wp-block-gallery.dch-letters figure.wp-block-image[hidden] { display: none !important; }
.wp-block-gallery.dch-letters figure.wp-block-image a { display: block; height: auto !important; flex: none !important; }
.wp-block-gallery.dch-letters figure.wp-block-image img { width: 100% !important; height: auto !important; aspect-ratio: 1156 / 1500; object-fit: cover !important; padding: 6px; background: #fff; border: 1px solid #2E3A3E; }
.wp-block-gallery.dch-letters figure.wp-block-image a:hover img { outline: 2px solid var(--laurel); }
.wp-block-gallery.has-nested-images.dch-letters figure.wp-block-image figcaption { position: static !important; background: none !important; color: var(--mute) !important; font: 600 .8rem/1.35 var(--sans) !important; padding: 8px 0 0 !important; text-align: left !important; text-shadow: none !important; max-height: none !important; overflow: visible !important; }
.dch-lb { width: min(96vw, 900px); max-height: 96vh; padding: 0; border: 0; background: #fff; color: var(--ink); box-shadow: 0 20px 60px rgba(0, 0, 0, .4); }
.dch-lb::backdrop { background: rgba(14, 24, 28, .82); }
.dch-lb__fig { margin: 0; padding: 14px 14px 0; text-align: center; }
.dch-lb__fig img { display: block; max-width: 100%; max-height: calc(96vh - 130px); width: auto; margin: 0 auto; }
.dch-lb__fig figcaption { padding: 10px 4px 0; color: var(--mute); font-size: .92rem; }
.dch-lb__bar { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 12px 14px 14px; }
.dch-lb__n { color: var(--mute); font-size: .92rem; }
.dch-lb__btns { display: flex; gap: 8px; }
.dch-lb__btn { display: inline-flex; align-items: center; justify-content: center; min-width: 52px; min-height: 48px; padding: 0 14px; border: 1.5px solid var(--ink); border-radius: var(--tab); background: #fff; color: var(--ink); font: 600 .95rem/1 var(--sans); cursor: pointer; }
.dch-lb__btn:hover { background: var(--wall); }

/* ---------- blog ---------- */
.dch-posts { display: grid; gap: 34px 30px; grid-template-columns: repeat(auto-fill, minmax(min(100%, 320px), 1fr)); list-style: none; margin: 0; padding: 0; }
.dch-posts .wp-block-post { margin: 0; display: flex; flex-direction: column; }
.dch-posts .wp-block-post-featured-image { margin: 0 0 14px; }
.dch-posts .wp-block-post-featured-image img { display: block; width: 100%; aspect-ratio: 3 / 2; object-fit: cover; padding: 7px; background: #fff; border: 1px solid #2E3A3E; }
.dch-posts .wp-block-post-title { font: 400 1.3rem/1.3 var(--serif); margin: 0 0 .3em; }
.dch-posts .wp-block-post-title a { color: var(--ink); text-decoration: none; }
.dch-posts .wp-block-post-title a:hover { color: var(--laurel-deep); text-decoration: underline; }
.dch-posts .wp-block-post-date { color: var(--mute); font-size: .9rem; margin-bottom: .4em; }
.dch-posts .wp-block-post-excerpt p { margin: 0 0 .4em; }
.dch-posts .wp-block-post-excerpt__more-link { font-weight: 600; }
.wp-block-query-pagination { display: flex; gap: 18px; margin-top: 40px; font-weight: 600; }
.dch-post-img { margin: 0 0 28px; max-width: 44rem; }
.dch-post-img img { display: block; width: 100%; height: auto; padding: 9px; background: #fff; border: 1px solid #2E3A3E; }
.dch-head .wp-block-post-date { color: var(--mute); margin-top: 6px; }
.dch-prose img { height: auto; }
.dch-prose .wp-block-image, .dch-prose figure { margin: 1.4em 0; }

/* ---------- forms (Ninja Forms, free) ---------- */
.dch-form { max-width: 46rem; }
.dch-nf .nf-form-fields-required { color: var(--mute); font-size: .92rem; margin-bottom: 16px; }
.dch-nf .nf-field-container { margin-bottom: 20px; }
.dch-nf .nf-field-label label, .dch-nf .nf-field-label .nf-label-span, .dch-nf legend { display: block; margin-bottom: 7px; color: var(--ink); font: 600 1rem/1.35 var(--sans); }
.dch-nf .ninja-forms-req-symbol, .dch-nf .nf-form-fields-required .ninja-forms-req-symbol { color: var(--err); }
.dch-nf input[type="text"], .dch-nf input[type="email"], .dch-nf input[type="tel"], .dch-nf textarea, .dch-nf select {
	width: 100%; min-height: 50px; padding: 11px 13px; border: 1.5px solid var(--field); border-radius: 3px; background: #fff; color: var(--ink); font: 400 1.05rem/1.4 var(--sans); }
.dch-nf textarea { min-height: 130px; resize: vertical; }
.dch-nf input:focus, .dch-nf textarea:focus, .dch-nf select:focus { outline: 3px solid var(--laurel-deep); outline-offset: 1px; border-color: var(--laurel-deep); }
.dch-nf .nf-field-description { color: var(--mute); font-size: .92rem; margin-top: 6px; }
.dch-nf .nf-field-description p { margin: 0; }
.dch-nf ul { list-style: none; margin: 0; padding: 0; }
.dch-nf .listradio-wrap li, .dch-nf .listcheckbox-wrap li { display: flex; align-items: center; gap: 10px; margin: 0 0 6px; }
.dch-nf .listradio-wrap li label, .dch-nf .listcheckbox-wrap li label { margin: 0; font-weight: 400; color: var(--text); padding: 6px 0; cursor: pointer; }
.dch-nf input[type="radio"], .dch-nf input[type="checkbox"] { width: 20px; height: 20px; margin: 0; accent-color: var(--laurel); flex: none; }
.dch-nf .nf-error-msg, .dch-nf .nf-error .nf-error-msg { color: var(--err); font-size: .95rem; font-weight: 600; margin-top: 6px; }
.dch-nf .nf-error input, .dch-nf .nf-error textarea { border-color: var(--err); }
.dch-nf .nf-form-errors .nf-error-msg { padding: 10px 14px; border-left: 3px solid var(--err); background: #FBEFEE; margin-bottom: 14px; }
.dch-nf .nf-pass .ninja-forms-field { border-color: var(--field); }
.dch-nf .nf-field-element:after { display: none !important; } /* NF's tick/cross icons */
@media (min-width: 640px) { .dch-nf .nf-form-content nf-fields-wrap { display: flex; flex-wrap: wrap; column-gap: 20px; } .dch-nf nf-field { flex: 1 1 100%; } .dch-nf nf-field:has(.dch-half) { flex: 1 1 calc(50% - 10px); } }
.dch-thanks { padding: 30px 28px; background: var(--wall); border: 1px solid #C6D6DA; }
.dch-thanks:focus { outline: none; }
.dch-thanks__check { width: 52px; height: 52px; display: grid; place-items: center; border: 2px solid var(--laurel); border-radius: 50%; color: var(--laurel); margin-bottom: 16px; }
.dch-thanks__check .dch-ico { width: 28px; height: 28px; stroke-width: 2.4; }
.dch-thanks ol { padding-left: 1.3em; }
.dch-confetti { position: fixed; inset: 0; z-index: 90; pointer-events: none; }
.dch-ccard { padding: 26px 26px 22px; background: #fff; border: 1px solid #CBD9DD; }
.dch-ccard__big { font: 400 1.45rem/1.3 var(--serif); }
.dch-ccard__big a { color: var(--ink); text-decoration: none; }
.dch-ccard__big a:hover { text-decoration: underline; }
.dch-ccard__list { list-style: none; margin: 0 0 1em; padding: 0; }
.dch-ccard__list li { display: flex; gap: 10px; margin: 0 0 10px; overflow-wrap: anywhere; }
.dch-ccard__list .dch-ico { color: var(--laurel); margin-top: .3em; }

/* ---------- footer (the one dark band) ---------- */
.dch-foot { background: var(--foot); color: var(--on-foot-soft); font-size: .97rem; }
.dch-foot a { color: var(--on-foot); }
.dch-foot a:hover { color: #fff; text-decoration-thickness: 2px; }
.dch-foot :focus-visible { outline-color: #fff; }
.dch-foot__in { display: grid; gap: 36px 48px; max-width: calc(var(--wide) + 2 * var(--gut)); margin: 0 auto; padding: clamp(48px, 6vw, 72px) var(--gut) 36px; }
@media (min-width: 760px) { .dch-foot__in { grid-template-columns: 1.3fr 1fr; } }
@media (min-width: 1100px) { .dch-foot__in { grid-template-columns: 1.25fr 1.15fr .8fr .8fr; } }
.dch-foot__name { margin: 0 0 14px; color: #fff; font: 400 1.4rem/1.2 var(--serif); }
.dch-foot__name span { display: block; margin-top: 6px; color: var(--on-foot-soft); font: 600 .72rem/1.2 var(--sans); letter-spacing: .14em; text-transform: uppercase; }
.dch-foot__h { margin: 0 0 12px; color: #fff; font: 600 .82rem/1.2 var(--sans); letter-spacing: .12em; text-transform: uppercase; }
.dch-foot ul { list-style: none; margin: 0; padding: 0; }
.dch-foot li { margin: 0 0 8px; }
.dch-foot__facts li { display: flex; gap: 10px; }
.dch-foot__facts .dch-ico { margin-top: .25em; color: #C7E0A8; }
.dch-foot .dch-hours th, .dch-foot .dch-hours td { border-top-color: var(--foot-2); padding: 5px 0; }
.dch-foot .dch-hours th { color: #fff; font-weight: 600; }
.dch-foot .dch-hours td small { color: var(--on-foot-soft); }
.dch-foot .dch-hours .is-today th, .dch-foot .dch-hours .is-today td { color: #C7E0A8; }
.dch-foot__base { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 8px 24px; max-width: calc(var(--wide) + 2 * var(--gut)); margin: 0 auto; padding: 20px var(--gut) 26px; border-top: 1px solid var(--foot-2); font-size: .9rem; }
.dch-foot__base p { margin: 0; }
.dch-credit a[href="https://dependentmedia.com/"] { color: #fff; text-decoration: underline; }

/* ---------- phones: bottom bar with exactly two buttons (Call, Make an appointment) ---------- */
.dch-callbar { display: none; }
@media (max-width: 767px) {
	.dch-callbar { position: fixed; left: 0; right: 0; bottom: 0; z-index: 60; display: grid; grid-template-columns: 1fr 1.5fr; gap: 8px; padding: 8px 10px calc(8px + env(safe-area-inset-bottom)); background: #fff; border-top: 1px solid var(--line); box-shadow: 0 -6px 18px -12px rgba(28, 38, 41, .4); }
	.dch-callbar a { display: inline-flex; align-items: center; justify-content: center; gap: 7px; min-height: 48px; border: 2px solid var(--laurel); border-radius: var(--tab); font: 600 1rem/1 var(--sans); text-decoration: none; }
	.dch-foot .dch-callbar__call { background: #fff; color: var(--laurel-deep); } /* inside the footer: beat its white links */
	.dch-foot .dch-callbar__book { background: var(--laurel); color: #fff; }
	.dch-foot .dch-callbar a:focus-visible { outline-color: var(--laurel-deep); }
	body { padding-bottom: calc(66px + env(safe-area-inset-bottom)); }
	html { scroll-padding-bottom: 84px; }
}

/* ---------- the one quiet fade-in (sections below the fold, once) ---------- */
.dch-rise { opacity: 0; transform: translateY(14px); transition: opacity .7s ease-out, transform .7s ease-out; }
.dch-rise.is-in { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
	.dch-rise { opacity: 1; transform: none; transition: none; }
	.dch-banner__slide { transition: none; }
	html { scroll-behavior: auto; }
}

/* ---------- 404 / misc ---------- */
.dch-links--big a { font-size: 1.1rem; }
.wp-block-separator { border: 0; border-top: 1px solid var(--line); margin: 2em 0; }
.wp-block-table table { border-collapse: collapse; width: 100%; }
.wp-block-table td, .wp-block-table th { border: 1px solid var(--line); padding: 8px 10px; }
.dch-small { margin-top: 1em; color: var(--mute); font-size: .92rem; }
a[href^="tel:"] { white-space: nowrap; }
.dch-nf .field-wrap .nf-field-description { order: 20; }
.dch-nf .listradio-wrap input[type="radio"], .dch-nf .listcheckbox-wrap input[type="checkbox"] { width: 20px !important; height: 20px !important; }
