/*
Theme Name: Doctors at Australia Fair
Theme URI: https://www.doctorsataustraliafair.com.au
Author: Calibre Agency
Author URI: https://calibreagency.co
Description: Block theme for Doctors at Australia Fair. Started from the Cloud Doc theme and retokened to Design B (place- and service-led) with Direction C's address strip.
Version: 0.1.0
Requires at least: 6.6
Tested up to: 7.1
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: daf
*/

/* Block themes are styled almost entirely from theme.json.
   Only the few things block markup can't express live here. */

:root {
	--daf-navy: var(--wp--preset--color--contrast);
	--daf-blue: var(--wp--preset--color--primary);
	--daf-tint: var(--wp--preset--color--tint);
	--daf-level: var(--wp--preset--color--level);
	--daf-slate: var(--wp--preset--color--muted);
	--daf-line: var(--wp--preset--color--line);
	--daf-tap: 44px;          /* minimum tap target, everywhere */
	--daf-bar-h: 78px;        /* sticky bar height incl. padding */
	--daf-bp-nav: 1024px;     /* nav collapses + sticky bar shows below this (keep the media queries in step) */
	--daf-section: var(--wp--preset--spacing--40); /* B7: the one vertical gap between sections, on every page */
	--daf-h1: clamp(2rem, 1.55rem + 1.9vw, 2.75rem); /* B7: one H1 size for every page type (32px phone, 44px desktop) */
}

html { overflow-x: clip; }
h1, h2, h3 { text-wrap: balance; }

/* ---------- Shared bits ---------- */

/* Level / shop marker: yellow is for these markers only. */
.daf-lvl {
	display: inline-grid;
	place-items: center;
	flex: none;
	min-width: 30px;
	height: 30px;
	padding: 0 6px;
	border-radius: 6px;
	background: var(--daf-level);
	color: var(--daf-navy);
	font-weight: 800;
	font-size: 14px;
	line-height: 1;
}

/* "To confirm" chip for an unconfirmed fact (B7, CAL-861: short label, full note in title + data-confirm; see inc/confirm.php).
   Launch is gated on clearing every one of these (CAL-852). Sized in rem so it's the same small chip inside a heading. */
.daf-tbc {
	display: inline-block;
	padding: 0 6px;
	border: 1px dashed #C98F00;
	border-radius: 5px;
	background: rgba(242, 194, 48, 0.12);
	color: var(--daf-navy);
	font-size: 0.75rem;
	font-weight: 600;
	letter-spacing: 0;
	line-height: 1.5;
	vertical-align: 0.2em;
	max-width: 100%;
	white-space: normal; /* nowrap pushed long placeholders past 390px; html overflow-x:clip hid it from scrollWidth */
	cursor: help;
}
/* A row that shares its block's chip (hours, fee tables): a dash, with the note in data-confirm. */
.daf-tbc-row { color: var(--daf-slate); }

.daf-btn,
.wp-block-button__link {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	min-height: 50px;
	text-decoration: none;
	border: 2px solid var(--daf-blue);
}
.daf-btn {
	padding: 0 1.4rem;
	border-radius: 12px;
	background: var(--daf-blue);
	color: #fff;
	font-weight: 700;
	font-size: 1rem;
	white-space: nowrap;
}
.daf-btn:hover,
.wp-block-button__link:hover { background: var(--daf-navy); border-color: var(--daf-navy); color: #fff; text-decoration: none; }
.wp-block-button.is-style-outline > .wp-block-button__link { background: #fff; color: var(--daf-navy); border-color: var(--daf-line); }
.wp-block-button.is-style-outline > .wp-block-button__link:hover { background: var(--daf-tint); color: var(--daf-navy); border-color: var(--daf-line); }

a:focus-visible,
button:focus-visible { outline: 3px solid var(--daf-level); outline-offset: 2px; }

.daf-ico { width: 20px; height: 20px; flex: none; }

/* ---------- Header ---------- */
.daf-header {
	background: #fff;
	border-bottom: 1px solid var(--daf-line);
	padding-top: 10px;
	padding-bottom: 10px;
}
.daf-header__row { gap: 16px; }

/* Logo: never cropped. It shrinks before anything clips it. */
.daf-logo { display: inline-flex; align-items: center; min-height: var(--daf-tap); flex: 0 1 auto; min-width: 0; }
.daf-logo img { display: block; width: clamp(160px, 15vw, 216px); max-width: 100%; height: auto; object-fit: contain; }

.daf-header__actions { gap: 24px; flex: none; }
.daf-header__cta { display: flex; align-items: center; gap: 20px; }
.daf-header__phone {
	display: inline-flex;
	align-items: center;
	min-height: var(--daf-tap);
	font-weight: 700;
	color: var(--daf-navy);
	text-decoration: none;
	white-space: nowrap;
}
.daf-header__phone:hover { color: var(--daf-blue); text-decoration: underline; }

/* Main nav */
.daf-nav { font-weight: 600; font-size: 1rem; }
.daf-nav .wp-block-navigation__container { gap: 4px 22px; }
.daf-nav .wp-block-navigation-item__content {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: var(--daf-tap);
	min-width: var(--daf-tap);
	color: var(--daf-navy);
	white-space: nowrap;
}
.daf-nav .wp-block-navigation-item__content:hover { color: var(--daf-blue); }

/* Menu / Close buttons (text, not icons: hasIcon false) */
.daf-nav .wp-block-navigation__responsive-container-open,
.daf-nav .wp-block-navigation__responsive-container-close {
	min-height: var(--daf-tap);
	min-width: var(--daf-tap);
	padding: 0 16px;
	border-radius: 10px;
	background: var(--daf-tint);
	color: var(--daf-navy);
	font: 700 1rem/1 var(--wp--preset--font-family--sans);
	align-items: center;
	justify-content: center;
}
/* Open overlay: big, stacked links */
.daf-nav .wp-block-navigation__responsive-container.is-menu-open {
	padding: 16px clamp(1rem, 4vw, 2.5rem) 24px;
	background: #fff;
	color: var(--daf-navy);
}
.daf-nav .is-menu-open .wp-block-navigation__responsive-container-content { padding-top: 64px; }
.daf-nav .is-menu-open .wp-block-navigation__container { gap: 0; width: 100%; }
.daf-nav .is-menu-open .wp-block-navigation-item { width: 100%; border-bottom: 1px solid var(--daf-line); }
.daf-nav .is-menu-open .wp-block-navigation-item__content { width: 100%; min-height: 56px; justify-content: flex-start; color: var(--daf-navy); font-size: 1.25rem; font-weight: 700; }
.daf-nav .is-menu-open .wp-block-navigation__container,
.daf-nav .is-menu-open .wp-block-navigation__responsive-container-content { align-items: stretch !important; }

/* Below 1024px: nav collapses to the Menu button (core only does this below 600px),
   the phone and Book button leave the header, and the sticky bar takes over. */
@media (max-width: 1023px) {
	.daf-nav .wp-block-navigation__responsive-container-open:not(.always-shown) { display: flex !important; }
	.daf-nav .wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open) { display: none !important; }
	.daf-nav .wp-block-navigation__responsive-container.is-menu-open { display: flex !important; }
	.daf-nav .is-menu-open .wp-block-navigation__responsive-container-close { display: flex !important; }
	.daf-nav .is-menu-open .wp-block-navigation__container { flex-direction: column; align-items: flex-start; }
	.daf-header__cta { display: none; }
}

/* Sticky header on desktop only. On a phone the sticky bar does the job and the
   header would eat too much of the screen. */
@media (min-width: 1024px) {
	.wp-site-blocks > header.wp-block-template-part {
		position: sticky;
		top: var(--wp-admin--admin-bar--height, 0px);
		z-index: 50;
	}
	html { scroll-padding-top: 96px; }
}

.wp-site-blocks > header.wp-block-template-part > * + * { margin-block-start: 0; }

/* ---------- Main ---------- */
.wp-site-blocks > header.wp-block-template-part + * { margin-block-start: 0 !important; }
.wp-site-blocks > footer.wp-block-template-part { margin-block-start: 0; }
.wp-block-post-content > .alignfull { margin-block: 0; }

/* ---------- Footer ---------- */
.daf-footer {
	background: var(--daf-navy);
	color: #D5E3EC;
	font-size: var(--wp--preset--font-size--small);
	line-height: 1.6;
	padding-top: var(--wp--preset--spacing--50);
	padding-bottom: var(--wp--preset--spacing--30);
}
.daf-footer p { margin: 0; }
.daf-footer strong { color: #fff; }
.daf-footer__grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: 28px;
}
@media (min-width: 640px) { .daf-footer__grid { grid-template-columns: 1fr 1fr; } }
@media (min-width: 1024px) { .daf-footer__grid { grid-template-columns: 1.35fr 1fr 0.8fr 1.1fr; gap: 40px; } }
.daf-footer__brand > * + * { margin-top: 14px; }
.daf-logo--reverse img { width: 200px; }
.daf-footer__addr { display: flex; gap: 10px; align-items: flex-start; color: #fff; }
.daf-footer__label {
	margin-bottom: 6px !important;
	font-size: 0.8125rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: #fff;
}
.daf-footer__row { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; min-height: var(--daf-tap); }
.daf-footer__links { list-style: none; margin: 0; padding: 0; }
.daf-footer__link {
	display: inline-flex;
	align-items: center;
	min-height: var(--daf-tap);
	min-width: var(--daf-tap);
	color: #fff;
	font-weight: 600;
	text-decoration: underline;
	text-decoration-color: rgba(255, 255, 255, 0.35);
	text-underline-offset: 3px;
}
.daf-footer__link:hover { text-decoration-color: #fff; color: #fff; }
.daf-footer__phone { font-size: 1.0625rem; }
.daf-nolink { color: #fff; }
.daf-footer .daf-tbc { color: #fff; }
.daf-footer__base {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0 24px;
	margin-top: var(--wp--preset--spacing--40);
	padding-top: 12px;
	border-top: 1px solid rgba(255, 255, 255, 0.15);
	font-size: 0.8125rem;
	color: #A9C1D0;
}
.daf-footer__base p:last-child { flex-basis: 100%; padding-top: 4px; }

/* ---------- Sticky mobile bar: Book / Call / Find us ---------- */
.daf-bookbar {
	position: fixed;
	left: 0;
	right: 0;
	bottom: 0;
	z-index: 100;
	display: none;
	grid-template-columns: 1.35fr 1fr 1fr;
	gap: 8px;
	padding: 10px 12px calc(12px + env(safe-area-inset-bottom, 0px));
	background: #fff;
	border-top: 1px solid var(--daf-line);
	box-shadow: 0 -10px 24px -16px rgba(11, 42, 60, 0.5);
}
.daf-bookbar a {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 2px;
	min-width: 0;
	min-height: 54px;
	border-radius: 12px;
	background: var(--daf-tint);
	color: var(--daf-navy);
	font-weight: 700;
	font-size: 0.875rem;
	line-height: 1.1;
	text-decoration: none;
}
.daf-bookbar a.daf-bookbar__book {
	flex-direction: row;
	background: var(--daf-blue);
	color: #fff;
	font-size: 1rem;
}
@media (max-width: 1023px) {
	.daf-bookbar { display: grid; }
	body { padding-bottom: calc(var(--daf-bar-h) + env(safe-area-inset-bottom, 0px)); }
}
/* Hide the bar while the mobile menu overlay is open. */
.has-modal-open .daf-bookbar { display: none; }

/* ---------- Content pages (B5, CAL-849): fees, allied health, find us, about, book, privacy ---------- */
/* Page sources live in clients/vantre/build/daf-pages/ (not in the theme). */

.daf-lede { font-size: inherit; color: inherit; } /* B7: one body size; grey is for meta text only */
.daf-main h2 { margin-top: var(--daf-section); }
.daf-main h2:first-child { margin-top: 0; }

/* Links that sit on their own line in body copy: 44px tall so they pass the tap-target rule. */
.daf-linkrow { margin: 0.5rem 0; }
.daf-linkrow a {
	display: inline-flex;
	align-items: center;
	min-height: var(--daf-tap);
	font-weight: 700;
	color: var(--daf-blue);
	overflow-wrap: anywhere;
	text-underline-offset: 3px;
}
.daf-actions { display: flex; flex-wrap: wrap; gap: 12px; margin: 1.25rem 0; }
.daf-actions .daf-btn { flex: 0 1 auto; max-width: 100%; }
.daf-btn--alt { background: #fff; color: var(--daf-navy); border-color: var(--daf-line); }
.daf-btn--alt:hover { background: var(--daf-tint); color: var(--daf-navy); border-color: var(--daf-line); }

/* Find-us card (Design B), full size */
.daf-find {
	background: var(--daf-navy);
	color: #fff;
	border-radius: 16px;
	padding: clamp(20px, 4vw, 32px);
}
.daf-find h2 { color: #fff; margin: 0 0 12px; }
.daf-find__addr { display: flex; gap: 12px; align-items: flex-start; font-size: 1.125rem; line-height: 1.5; margin: 0; }
.daf-find .daf-btn { background: #fff; color: var(--daf-navy); border-color: #fff; }
.daf-find .daf-btn:hover { background: var(--daf-tint); border-color: var(--daf-tint); color: var(--daf-navy); }
.daf-find .daf-btn--alt { background: transparent; color: #fff; border-color: rgba(255,255,255,.5); }
.daf-find .daf-btn--alt:hover { background: rgba(255,255,255,.12); color: #fff; }
.daf-find .daf-tbc { color: #fff; }

/* Three-step route */
.daf-steps { list-style: none; margin: 1rem 0; padding: 0; display: grid; gap: 14px; counter-reset: daf-step; }
@media (min-width: 900px) { .daf-steps { grid-template-columns: repeat(3, 1fr); } }
.daf-steps li {
	counter-increment: daf-step;
	border: 1px solid var(--daf-line);
	border-radius: 14px;
	padding: 18px;
	background: #fff;
}
.daf-steps li::before {
	content: counter(daf-step);
	display: inline-grid;
	place-items: center;
	width: 34px;
	height: 34px;
	border-radius: 50%;
	background: var(--daf-blue);
	color: #fff;
	font-weight: 800;
	margin-bottom: 8px;
}
.daf-steps h3 { margin: 0 0 6px; font-size: 1.125rem; }
.daf-steps p { margin: 0 0 8px; }

/* Photo route on /contact/ (daf/find-route): photo at the card top, step number over its corner. 2 columns from 600px,
   3 from 900px; the last step (arrival) spans 2 columns with its photo beside the text, so 5 steps fill the grid. */
@media (min-width: 600px) {
	.daf-steps--photos { grid-template-columns: repeat(2, 1fr); }
	.daf-steps--photos li:last-child { grid-column: span 2; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); grid-template-rows: 1fr auto 1fr; padding: 0; }
	/* The arrival card stretches to its row (card 4's height), so its photo fills the full card height, not a 3:2 box. */
	.daf-steps--photos li:last-child .daf-steps__photo { grid-row: 1 / -1; margin: 0; aspect-ratio: auto; height: 100%; min-height: 220px; }
	.daf-steps--photos li:last-child .daf-steps__photo img { object-position: 10% 50%; } /* keep the wall logo in the taller crop */
	.daf-steps--photos li:last-child h3 { grid-column: 2; align-self: end; margin-top: 18px; }
	.daf-steps--photos li:last-child p { grid-column: 2; margin-bottom: 18px; }
}
@media (min-width: 900px) { .daf-steps--photos { grid-template-columns: repeat(3, 1fr); } }
.daf-steps--photos li { position: relative; padding: 0 0 10px; overflow: hidden; }
.daf-steps--photos li::before { position: absolute; top: 12px; left: 12px; margin: 0; box-shadow: 0 2px 8px rgba(0, 0, 0, .3); }
.daf-steps__photo { margin: 0 0 14px; aspect-ratio: 3 / 2; background: var(--daf-tint); }
.daf-steps__photo img { display: block; width: 100%; height: 100%; object-fit: cover; }
.daf-steps--photos h3, .daf-steps--photos p { margin-inline: 18px; }
.daf-steps--photos h3 { font-size: 1.0625rem; }
/* Cards aren't prose: lift the .daf-main p/li 33em / 42em reading cap, which cut the wide arrival card short at 768px. */
.daf-main .daf-steps--photos > li, .daf-main .daf-withtoc__main .daf-steps--photos > li { max-width: none; }
.daf-main .daf-steps-lead { margin: 28px 0 0; }

/* Getting Here on /contact/: tram / car / wheelchair boxes (core Groups, see inc/blocks.php), 3 across from 900px. */
.daf-grid3 { display: grid; gap: 14px; margin: 16px 0 0; }
@media (min-width: 900px) { .daf-grid3 { grid-template-columns: repeat(3, 1fr); } }
.daf-ways .daf-box h3 { margin: 0 0 6px; font-size: 1.0625rem; }
.daf-ways .daf-box p { margin: 0; }
/* Opening Hours: hours card beside the QML box. */
.daf-hours-grid { align-items: start; }
.daf-hours-grid .daf-hours { max-width: none; }
.daf-hours-grid .daf-box h3 { margin: 0 0 6px; font-size: 1.0625rem; }

/* Hours card */
.daf-hours { border: 1px solid var(--daf-line); border-radius: 14px; padding: 6px 18px; background: #fff; max-width: 560px; }
.daf-hours__row { display: grid; grid-template-columns: minmax(110px, 40%) 1fr; gap: 10px; padding: 12px 0; border-bottom: 1px dashed var(--daf-line); align-items: center; }
.daf-hours__row:last-child { border-bottom: 0; }

/* Two-column info grid (contact page) */
.daf-grid2 { display: grid; gap: 24px; }
@media (min-width: 900px) { .daf-grid2 { grid-template-columns: 1fr 1fr; gap: 40px; } }
.daf-box { border: 1px solid var(--daf-line); border-radius: 14px; padding: 18px; background: var(--daf-tint); }
.daf-box > :first-child { margin-top: 0; }
.daf-box > :last-child { margin-bottom: 0; }

/* Fee tables: a normal table on wide screens, stacked rows below 700px */
.daf-table { width: 100%; border-collapse: collapse; margin: 1rem 0 1.5rem; font-size: 1rem; }
.daf-table th, .daf-table td { text-align: left; padding: 10px 12px; border-bottom: 1px solid var(--daf-line); vertical-align: top; }
.daf-table thead th { background: var(--daf-tint); font-weight: 700; }
@media (max-width: 699px) {
	.daf-table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
	.daf-table, .daf-table tbody, .daf-table tr, .daf-table td, .daf-table th { display: block; width: 100%; box-sizing: border-box; }
	.daf-table tr { border: 1px solid var(--daf-line); border-radius: 12px; margin-bottom: 12px; padding: 4px 0; }
	.daf-table th[scope=row] { border-bottom: 1px solid var(--daf-line); font-weight: 700; }
	.daf-table td { display: grid; grid-template-columns: 9.5em 1fr; gap: 8px; border-bottom: 0; padding: 6px 12px; }
	.daf-table td::before { content: attr(data-label); font-weight: 600; color: var(--daf-slate); }
}

/* Allied health roster */
.daf-roster { list-style: none; margin: 1rem 0; padding: 0; display: grid; gap: 14px; }
/* One column (2026-11-01, Josh): View Profile sits beside the name, which needs the full row in the 720px content column. */
.daf-roster li { border: 1px solid var(--daf-line); border-radius: 14px; padding: 18px; background: #fff; }
.daf-roster h3 { margin: 0 0 4px; font-size: 1.125rem; }
.daf-roster p { margin: 0 0 6px; color: var(--daf-slate); }
/* Portraits on the roster (CAL-859): the doctors' circle, left of the name. Rules for .daf-av sit further down. */
.daf-roster li { display: flex; gap: 16px; align-items: flex-start; }
.daf-roster__text { min-width: 0; flex: 1; }
/* From 520px the button takes a right-hand column beside the name and role; under them on a phone. */
@media (min-width: 520px) {
	.daf-roster li { align-items: center; }
	.daf-roster__text { display: grid; grid-template-columns: minmax(0, 1fr) auto; column-gap: 16px; align-items: center; }
	.daf-roster__text > h3, .daf-roster__text > p { grid-column: 1; }
	.daf-roster__link { grid-column: 2; grid-row: 1 / span 2; }
}

/* HotDoc booking widget, embedded straight into the page (tracking spec: no wrapper frame) */
.daf-hotdoc { border: 1px solid var(--daf-line); border-radius: 14px; overflow: hidden; background: #fff; }
.daf-hotdoc iframe { display: block; width: 100%; min-height: 800px; border: 0; }

/* Privacy policy: long legal text */
.daf-legal h2 { font-size: 1.375rem; }
.daf-legal address { font-style: normal; }
/* HotDoc's script injects a "Having trouble? Book directly on HotDoc" fallback link; give it a 44px target. */
.HotDocLink--fallback { padding: 8px 12px; }
.HotDocLink--fallback a { display: inline-flex; align-items: center; min-height: var(--daf-tap); font-weight: 700; color: var(--daf-blue); }
.daf-main .daf-hours { margin-left: 0 !important; }

/* ---------- Doctors (B3, CAL-847): /doctors/ list and /doctors/<slug>/ profiles ---------- */
/* Markup comes from inc/doctors.php. Row = Design B's doctor row; avatar = Direction C's initials circle. */

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

/* Round avatar: initials now, a portrait later. The box is fixed, so a photo drops in with no layout change. */
.daf-av {
	--daf-av: 76px;
	flex: none;
	display: grid;
	place-items: center;
	width: var(--daf-av);
	height: var(--daf-av);
	border-radius: 50%;
	overflow: hidden;
	background: var(--daf-tint);
	color: var(--daf-blue);
	font-weight: 800;
	font-size: calc(var(--daf-av) * 0.3);
	letter-spacing: 0.02em;
	line-height: 1;
}
.daf-av--lg { --daf-av: 112px; }
@media (min-width: 1024px) { .daf-av--lg { --daf-av: 136px; } }
.daf-av img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 18%; display: block; }
/* Theme portraits (assets/images/people/) are already cropped square and face-centred, so nothing is cut. */
/* A hairline ring, so a portrait shot on white (Brady, Carolina) still reads as a circle on a white card. No layout effect. */
.daf-av.has-photo { box-shadow: 0 0 0 1px var(--daf-line); }

/* Filters */
.daf-filter {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	gap: 12px 16px;
	margin: 0 0 8px;
	padding: 16px;
	border: 1px solid var(--daf-line);
	border-radius: 14px;
	background: var(--daf-tint);
}
.daf-filter[hidden] { display: none; }
.daf-filter__field { display: grid; gap: 4px; flex: 1 1 200px; min-width: 0; }
.daf-filter label { font-weight: 700; font-size: 0.9375rem; }
.daf-filter select {
	width: 100%;
	min-height: 50px;
	padding: 0 12px;
	border: 1.5px solid var(--daf-line);
	border-radius: 12px;
	background: #fff;
	color: var(--daf-navy);
	font: inherit;
}
.daf-filter .daf-btn { flex: 0 0 auto; }
.daf-filter__count { margin: 0 0 12px; min-height: 1.5em; color: var(--daf-slate); font-weight: 600; }
.daf-filter__none { padding: 16px; border: 1px dashed var(--daf-line); border-radius: 14px; }
.daf-filter__none[hidden] { display: none; }
.daf-filter__none a { display: inline-flex; align-items: center; min-height: var(--daf-tap); font-weight: 700; color: var(--daf-blue); }

/* Doctor rows */
.daf-drlist { list-style: none; margin: 0; padding: 0; display: grid; gap: 16px; }
@media (min-width: 760px) { .daf-drlist { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1200px) { .daf-drlist { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.daf-dr {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	align-content: start;
	gap: 14px;
	padding: 16px;
	border: 1px solid var(--daf-line);
	border-radius: 14px;
	background: #fff;
}
.daf-dr[hidden] { display: none; }
.daf-dr__name { margin: 0; font-size: 1.1875rem; letter-spacing: -0.01em; }
.daf-dr__meta { margin: 3px 0 0; font-size: 0.875rem; color: var(--daf-slate); }
.daf-tags { list-style: none; display: flex; flex-wrap: wrap; gap: 6px; margin: 8px 0 0; padding: 0; }
.daf-tags li { font-size: 0.78125rem; font-weight: 600; background: var(--daf-tint); border-radius: 999px; padding: 4px 10px; }
.daf-tags--lg li { font-size: 0.9375rem; padding: 6px 12px; }
.daf-dr__acts { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: 8px; align-self: end; }
.daf-dr__acts .daf-btn { flex: 1 1 auto; white-space: normal; text-align: center; padding: 8px 14px; }
.daf-dr__state {
	flex: 1 1 100%;
	margin: 0;
	padding: 9px 12px;
	border-radius: 10px;
	background: #f4f6f8;
	color: var(--daf-slate);
	font-size: 0.875rem;
	font-weight: 600;
}

/* Profile */
.daf-profile__back { margin: 0 0 8px; }
.daf-profile__head { display: flex; gap: 20px; align-items: center; margin-bottom: var(--wp--preset--spacing--30); }
.daf-profile__name { margin: 0; font-size: var(--daf-h1); line-height: 1.1; }
.daf-profile__head .daf-dr__meta { font-size: 1rem; margin-top: 6px; }
@media (max-width: 599px) {
	.daf-profile__head { flex-direction: column; align-items: flex-start; gap: 14px; }
}
.daf-profile__grid { display: grid; gap: 24px; }
@media (min-width: 900px) {
	.daf-profile__grid { grid-template-columns: minmax(0, 1fr) 360px; gap: 48px; align-items: start; }
	.daf-profile__book { grid-column: 2; grid-row: 1; position: sticky; top: 140px; }
	.daf-profile__main { grid-column: 1; grid-row: 1; }
}
.daf-profile__book {
	display: grid;
	gap: 14px;
	padding: 18px;
	border: 1px solid var(--daf-line);
	border-radius: 14px;
	background: #fff;
	box-shadow: 0 10px 30px -22px rgba(11, 42, 60, 0.45);
}
.daf-profile__book p { margin: 0; }
.daf-profile__book .daf-dr__acts .daf-btn { flex-basis: 100%; }
.daf-profile__main h2 { font-size: 1.375rem; }
.daf-profile__main h2:first-child { margin-top: 0; }
.daf-profile__other { margin-top: var(--wp--preset--spacing--40); }
.daf-profile__other h2 { margin-top: 0; font-size: 1.25rem; }

/* ---------- Service pages (B4, CAL-848): /services/ grid and /services/<slug>/ ---------- */
/* Markup comes from inc/services.php. Copy lives in clients/vantre/build/daf-pages/services*. */

/* Text column inside the wide wrapper; the GP list uses the full width. */
.daf-svc > *:not(.daf-svc__gps),
.daf-svc__gps > *:not(.daf-svc-drs) { max-width: 760px; }

.daf-crumbs ol { list-style: none; display: flex; flex-wrap: wrap; align-items: center; margin: 0 0 4px; padding: 0; font-size: 0.875rem; color: var(--daf-slate); }
.daf-crumbs li { display: inline-flex; align-items: center; }
.daf-crumbs li + li::before { content: "›"; padding: 0 8px; }
.daf-crumbs a { display: inline-flex; align-items: center; justify-content: center; min-height: var(--daf-tap); min-width: var(--daf-tap); font-weight: 600; color: var(--daf-blue); text-underline-offset: 3px; }

.daf-svc__title { margin: 0 0 12px; font-size: var(--daf-h1); line-height: 1.1; }
.daf-svc__head p { margin: 0 0 12px; }
.daf-svc__acts { margin: 1.25rem 0 0.5rem; }
.daf-svc__acts .daf-btn { white-space: normal; text-align: center; }
@media (max-width: 599px) { .daf-svc__acts .daf-btn { flex: 1 1 100%; } }
.daf-svc__note { margin: 0; color: var(--daf-slate); font-size: 0.9375rem; }

.daf-svc__fees { margin-top: var(--wp--preset--spacing--40); }
.daf-svc__fees h2, .daf-svc__end h2 { margin-top: 0; font-size: 1.25rem; }
.daf-svc__fees .daf-linkrow { margin-bottom: 0; }

.daf-svc__gps { margin-top: var(--wp--preset--spacing--40); }
.daf-svc__gps h2 { margin-top: 0; }
.daf-svc-drs { list-style: none; margin: 1rem 0; padding: 0; display: grid; gap: 16px; }
@media (min-width: 760px) { .daf-svc-drs { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1200px) { .daf-svc-drs { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.daf-svc-dr {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	align-content: start;
	gap: 14px;
	padding: 16px;
	border: 1px solid var(--daf-line);
	border-radius: 14px;
	background: #fff;
}
.daf-svc-dr .daf-dr__name { font-size: 1.125rem; }
.daf-svc-dr .daf-av { --daf-av: 64px; }

.daf-svc__body { margin-top: var(--wp--preset--spacing--40); }
.daf-svc__body ul { padding-left: 1.25rem; }
.daf-svc__body li { margin-bottom: 4px; }
.daf-svc__end { margin-top: var(--wp--preset--spacing--40); }
.daf-svc__end .daf-actions { margin: 1rem 0 0.25rem; }

/* /services/ grid: each card is one link (tap target is the whole card). */
.daf-svcgrid { list-style: none; margin: 1.5rem 0; padding: 0; display: grid; gap: 14px; }
@media (min-width: 640px) { .daf-svcgrid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1024px) { .daf-svcgrid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.daf-svccard {
	display: flex;
	flex-direction: column;
	gap: 6px;
	height: 100%;
	box-sizing: border-box;
	padding: 18px;
	border: 1px solid var(--daf-line);
	border-radius: 14px;
	background: #fff;
	color: var(--daf-navy);
	text-decoration: none;
}
.daf-svccard:hover { border-color: var(--daf-blue); background: var(--daf-tint); }
.daf-svccard__title { font-weight: 800; font-size: 1.125rem; color: var(--daf-blue); }
.daf-svccard__sum { color: var(--daf-slate); font-size: 0.9375rem; }
.daf-svccard__tag { margin-top: auto; align-self: flex-start; font-size: 0.78125rem; font-weight: 700; border-radius: 999px; padding: 4px 10px; background: var(--daf-tint); }
.daf-svccard__tag--call { background: #f4f6f8; }

/* /services/ hub (2026-10-05): search + topic chips, small group labels, compact cards. */
.daf-svchub { margin: 1.25rem 0 0; }
.daf-svcfind { display: grid; gap: 12px; padding: 16px; border: 1px solid var(--daf-line); border-radius: 16px; background: var(--daf-tint); }
.daf-svcfind__label { font-weight: 700; }
.daf-svcfind__q { width: 100%; max-width: 520px; min-height: 48px; box-sizing: border-box; padding: 0 14px; border: 1px solid var(--daf-line); border-radius: 12px; font: inherit; color: var(--daf-navy); background: #fff; }
.daf-svcfind__q:focus-visible { outline: 3px solid var(--daf-level); outline-offset: 2px; border-color: var(--daf-blue); }
.daf-svcfind__chips { display: flex; flex-wrap: wrap; gap: 8px; }
.daf-svcfind__chips .daf-chip { min-height: 44px; }
.daf-svcfind__count { margin: 12px 0 0; color: var(--daf-slate); font-size: 0.9375rem; min-height: 1.4em; }
.daf-svcfind__none { margin: 1rem 0; padding: 16px; border-radius: 14px; background: var(--daf-tint); }
.daf-svcgroup { margin-top: 1.75rem; }
.daf-main .daf-svcgroup__h { margin: 0 0 10px; font-size: 0.875rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--daf-slate); }
.daf-svcgroup .daf-svcgrid { margin: 0; }
.daf-svccard { padding: 16px 18px; gap: 4px; }
.daf-svccard__tag { margin-top: 8px; }
@media (max-width: 639px) {
	.daf-svcfind { padding: 14px; }
	.daf-svcfind__chips { flex-wrap: nowrap; overflow-x: auto; margin: 0 -14px; padding: 0 14px 4px; scrollbar-width: none; }
	.daf-svcfind__chips .daf-chip { flex: none; }
}

/* Sticky bar on a call-led or walk-in service page: two slots, the main one names the service. */
.daf-bookbar--two { grid-template-columns: 2fr 1fr; }
.daf-bookbar a.daf-bookbar__book { gap: 6px; padding: 0 8px; text-align: center; }

/* ---------- Home page (B2, CAL-846): Design B hero + Direction C's reason chooser ---------- */
/* Markup comes from inc/home.php (the daf/home block on page 5). */

/* B17 (CAL-876) calm hero. Phone: heading, lede, buttons, facts, then the photo as a ~170px strip. Desktop: text left, photo right. */
.daf-home {
	display: grid;
	grid-template-areas: "main" "photo";
	gap: 20px;
	padding: 0 0 var(--wp--preset--spacing--50);
}
.daf-home__main { grid-area: main; min-width: 0; }
.daf-home__photo { grid-area: photo; margin: 0; }
.daf-home__photo img { display: block; width: 100%; height: auto; aspect-ratio: 16 / 10; object-fit: cover; object-position: 40% 55%; border-radius: 16px; }
@media (max-width: 1023px) {
	.daf-home { padding-top: 16px; }
	.daf-home__photo img { aspect-ratio: auto; height: clamp(170px, 34vw, 300px); }
}
@media (min-width: 1024px) {
	.daf-home {
		grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
		grid-template-areas: "main photo";
		align-items: center;
		column-gap: 56px;
		padding-top: var(--wp--preset--spacing--50);
	}
	.daf-home__photo img { aspect-ratio: 49 / 40; border-radius: 20px; }
}

.daf-home__kicker { display: inline-flex; align-items: center; gap: 10px; margin: 0; font-weight: 700; color: var(--daf-navy); }
.daf-home__title { margin: 0; font-size: var(--daf-h1); line-height: 1.1; letter-spacing: -0.02em; }
.daf-home__lede { margin: 8px 0 18px; max-width: 34rem; }

/* Find-us card: B5's navy card, compact. */
.daf-home__find h2 { font-size: 1.25rem; }
.daf-home__find .daf-find__addr { font-size: 1rem; }
.daf-home__park { margin: 12px 0 0; }

/* Reason chooser card */
.daf-ch {
	border: 1px solid var(--daf-line);
	border-radius: 16px;
	padding: 18px 16px 8px;
	background: #fff;
	box-shadow: 0 14px 34px -26px rgba(11, 42, 60, 0.55);
}
@media (min-width: 600px) { .daf-ch { padding: 22px 22px 10px; } }
.daf-main .daf-ch h2.daf-ch__q { margin: 0 0 12px; font-size: 1.125rem; }
.daf-ch__chips { list-style: none; display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 14px; padding: 0; }
.daf-chip {
	display: inline-flex;
	align-items: center;
	min-height: var(--daf-tap);
	padding: 0 16px;
	border: 1.5px solid var(--daf-line);
	border-radius: 999px;
	background: #fff;
	color: var(--daf-navy);
	font-weight: 700;
	font-size: 0.9375rem;
	text-decoration: none;
	cursor: pointer;
}
.daf-chip:hover { border-color: var(--daf-blue); background: var(--daf-tint); color: var(--daf-navy); }
.daf-chip[aria-pressed="true"] { background: var(--daf-navy); border-color: var(--daf-navy); color: #fff; }
.daf-chip--link { border-style: dashed; color: var(--daf-blue); }
.daf-chip:focus-visible { outline: 3px solid var(--daf-level); outline-offset: 2px; }

.daf-ch__panel { border-top: 1px solid var(--daf-line); padding-top: 14px; }
.daf-ch__title { margin: 0 0 6px; font-size: 1rem; }
.daf-ch__tbc, .daf-ch__note { margin: 0 0 8px; }
.daf-ch__note { font-size: 0.9375rem; color: var(--daf-slate); }
.daf-ch__list { list-style: none; margin: 0; padding: 0; }
.daf-ch-dr {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	gap: 4px 12px;
	align-items: center;
	padding: 12px 0;
	border-bottom: 1px solid var(--daf-line);
}
.daf-ch-dr .daf-av--sm { --daf-av: 48px; }
.daf-ch-dr__name { margin: 0; font-weight: 700; line-height: 1.25; }
/* 2026-11-05: name + photo link to the profile and look unchanged (underline on hover/focus only). */
.daf-ch-dr__link { color: inherit; text-decoration: none; }
.daf-ch-dr__link:hover, .daf-ch-dr__link:focus-visible { text-decoration: underline; text-underline-offset: 2px; }
.daf-ch-dr__av { display: block; border-radius: 50%; line-height: 0; }
.daf-ch-dr__meta { margin: 2px 0 0; font-size: 0.875rem; color: var(--daf-slate); }
.daf-ch-dr .daf-dr__acts { align-self: center; }
.daf-ch-dr .daf-dr__acts .daf-btn { min-height: var(--daf-tap); flex: 0 1 auto; }
.daf-ch-dr .daf-dr__state { flex: 0 1 auto; padding: 6px 10px; }
@media (max-width: 479px) {
	/* Phone: the button sits under the name, lined up with it. */
	.daf-ch-dr .daf-dr__acts { grid-column: 2; }
}
@media (min-width: 480px) {
	.daf-ch-dr { grid-template-columns: auto minmax(0, 1fr) auto; }
	.daf-ch-dr .daf-dr__acts { grid-column: auto; justify-content: flex-end; }
}
.daf-ch__foot { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 16px; padding: 12px 0 4px; }
.daf-ch__foot .daf-btn { white-space: normal; text-align: center; }
.daf-ch__foot .daf-linkrow { margin: 0; }

/* ---------- Home page sections below the hero (B2b, CAL-860; tightened by B7, CAL-861) ---------- */
/* Markup comes from inc/home-sections.php. No closing buttons: a "See all" link sits beside each heading. */
.daf-home-more { display: grid; gap: var(--daf-section); padding: 0 0 var(--wp--preset--spacing--50); }
.daf-hs { min-width: 0; }
.daf-hs__head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 0 16px; margin: 0 0 12px; }
.daf-main .daf-hs__head h2 { margin: 0; font-size: clamp(1.5rem, 1.2rem + 1.2vw, 2rem); line-height: 1.15; }
.daf-hs__more { margin: 0; }
.daf-hs > p, .daf-hs__line { max-width: 46rem; margin: 0 0 10px; }
.daf-hs__legend { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 6px; margin: 12px 0 0; font-size: 0.9375rem; color: var(--daf-slate); }
.daf-ico--sm { width: 16px; height: 16px; color: var(--daf-slate); }

/* How booking works: one compact row of 3 steps (stacked tight on a phone). */
.daf-hs__steps { margin: 0; gap: 10px; }
@media (min-width: 700px) { .daf-hs__steps { grid-template-columns: repeat(3, 1fr); } }
.daf-hs__steps li { display: grid; grid-template-columns: auto minmax(0, 1fr); column-gap: 12px; padding: 14px 16px; }
.daf-hs__steps li::before { grid-row: 1 / 3; width: 30px; height: 30px; margin: 0; font-size: 0.9375rem; }
.daf-hs__steps h3 { margin: 2px 0 2px; font-size: 1.0625rem; }
.daf-hs__steps p { margin: 0; }
.daf-hs__steps a { display: inline-flex; align-items: center; min-height: var(--daf-tap); font-weight: 700; color: var(--daf-blue); }
.daf-hs__steps li:last-child p { margin-bottom: -10px; } /* the 44px link line sits on the card's bottom padding */

/* Meet our doctors: one row of portraits, names only. Scrolls sideways on a phone. */
.daf-hs-drs {
	list-style: none;
	margin: 0 0 10px;
	padding: 0 0 6px;
	display: grid;
	grid-auto-flow: column;
	grid-auto-columns: 112px;
	gap: 8px;
	overflow-x: auto;
	scroll-snap-type: x proximity;
	overscroll-behavior-x: contain;
}
@media (min-width: 1100px) { .daf-hs-drs { grid-auto-columns: minmax(0, 1fr); overflow: visible; } }
.daf-hs-drs li { scroll-snap-align: start; }
.daf-hs-dr {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 8px;
	height: 100%;
	box-sizing: border-box;
	padding: 8px 4px;
	border-radius: 14px;
	color: var(--daf-navy);
	text-align: center;
	text-decoration: none;
}
.daf-hs-dr:hover { background: var(--daf-tint); }
.daf-hs-dr .daf-av { --daf-av: 72px; } /* CAL-850: srcset gives the 160px file at 2x, 320px at 3x */
.daf-hs-dr__name { font-weight: 700; font-size: 0.9375rem; line-height: 1.25; color: var(--daf-blue); overflow-wrap: break-word; }

/* Services: plain groups of links; phone-only ones carry a small phone icon. */
.daf-hs-svc { display: grid; gap: 14px 28px; }
@media (min-width: 700px) { .daf-hs-svc { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1100px) { .daf-hs-svc { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.daf-hs-svc h3 { margin: 0 0 2px; font-size: 1.0625rem; }
.daf-hs-svc ul { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--daf-line); }
.daf-hs-svc li { border-bottom: 1px solid var(--daf-line); }
.daf-hs-svc a { display: flex; align-items: center; justify-content: space-between; gap: 10px; min-height: var(--daf-tap); padding: 2px 0; font-weight: 700; color: var(--daf-blue); text-decoration: none; }
.daf-hs-svc a:hover span:first-of-type { text-decoration: underline; }

/* Also at the practice: three short items, no boxes. */
.daf-hs-more { list-style: none; margin: 0; padding: 0; display: grid; gap: 4px 28px; }
@media (min-width: 900px) { .daf-hs-more { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.daf-hs-more li { padding: 8px 0; border-top: 1px solid var(--daf-line); }
.daf-main .daf-hs-more h3 { margin: 0; font-size: 1.0625rem; }
.daf-hs-more h3 a { display: inline-flex; align-items: center; min-height: var(--daf-tap); color: var(--daf-blue); text-underline-offset: 3px; }
.daf-hs-more p { margin: 0; }

/* Common questions */
.daf-faq { max-width: 820px; border-top: 1px solid var(--daf-line); }
.daf-faq__item { border-bottom: 1px solid var(--daf-line); }
.daf-faq__item summary {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	min-height: 56px;
	padding: 8px 0;
	font-weight: 700;
	cursor: pointer;
	list-style: none;
}
.daf-faq__item summary::-webkit-details-marker { display: none; }
.daf-faq__item summary::after { content: "+"; flex: 0 0 auto; font-size: 1.5rem; line-height: 1; color: var(--daf-blue); }
.daf-faq__item[open] summary::after { content: "–"; }
.daf-faq__item summary:focus-visible { outline: 3px solid var(--daf-level); outline-offset: 2px; }
.daf-faq__a { padding: 0 0 14px; }
.daf-faq__a p { margin: 0 0 8px; }
.daf-faq__a .daf-linkrow { margin: 0; }

/* ---------- Design QA polish (B7, CAL-861) ---------- */
/* One H1 size on every page type (home, pages, service pages, profiles). */
.daf-main h1, .daf-main .wp-block-post-title { font-size: var(--daf-h1); line-height: 1.1; }
/* The same section spacing on every page. */
.daf-page-head { padding-bottom: 0 !important; }
.daf-home { padding-bottom: var(--daf-section); }
@media (min-width: 1024px) { .daf-home { padding-top: var(--daf-section); } }
.daf-profile__other, .daf-svc__end { margin-top: var(--daf-section); }
.daf-steps { margin: 0.75rem 0; }

/* Home hero: chooser rows stay one line (portrait, name, a short Book button). */
.daf-ch__title { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; }
.daf-ch__title .daf-tbc { vertical-align: 0; }
.daf-ch-dr { grid-template-columns: auto minmax(0, 1fr) auto; padding: 10px 0; }
.daf-ch-dr .daf-dr__acts { grid-column: auto; justify-content: flex-end; }
.daf-ch-dr .daf-dr__acts .daf-btn { padding: 0 16px; }
@media (max-width: 479px) {
	.daf-ch-dr .daf-dr__acts { grid-column: auto; }
	.daf-ch-dr .daf-av--sm { --daf-av: 44px; }
}

/* Service pages: B's two columns from 1024px. Left: intro, CTA, fees, body. Right: "GPs who … here" as a card. */
.daf-svc > *:not(.daf-svc__gps), .daf-svc__gps > *:not(.daf-svc-drs) { max-width: none; }
.daf-svc__grid { display: grid; gap: var(--daf-section); }
.daf-svc__grid > * { min-width: 0; margin: 0; }
.daf-svc__fees { margin-top: 0; }
.daf-svc__fees h2, .daf-svc__gps h2 { display: block; margin: 0; font-size: 1.25rem; }
.daf-svc__fees .daf-linkrow { margin: 4px 0 -8px; }
.daf-svc__gps { padding: 18px; border: 1px solid var(--daf-line); border-radius: 14px; background: #fff; }
.daf-svc__gps-tbc { margin: 4px 0 0; }
.daf-svc__gps .daf-linkrow { margin: 4px 0 -8px; }
.daf-svc-drs { grid-template-columns: 1fr !important; gap: 0; margin: 8px 0 0; }
.daf-svc-dr { grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 8px 12px; padding: 12px 0; border: 0; border-bottom: 1px solid var(--daf-line); border-radius: 0; }
.daf-svc-dr .daf-av { --daf-av: 48px; }
.daf-svc-dr .daf-dr__name { font-size: 1.0625rem; }
.daf-svc-dr .daf-dr__acts { grid-column: 2; align-self: center; justify-content: flex-start; flex-wrap: wrap; }
.daf-svc-dr .daf-dr__acts .daf-btn { flex: 0 0 auto; min-height: var(--daf-tap); padding: 0 14px; }
.daf-svc-dr .daf-dr__state { flex: 0 1 auto; padding: 6px 10px; font-size: 0.8125rem; }
.daf-svc__body > :first-child { margin-top: 0; }
.daf-svc__body h2 { margin-top: 1.75rem; font-size: 1.375rem; }
@media (min-width: 1024px) {
	.daf-svc__grid {
		grid-template-columns: minmax(0, 1fr) minmax(320px, 400px);
		grid-template-areas: "head gps" "fees gps" "body gps";
		grid-template-rows: auto auto 1fr;
		column-gap: 56px;
		row-gap: var(--wp--preset--spacing--30);
	}
	.daf-svc__head { grid-area: head; }
	.daf-svc__fees { grid-area: fees; }
	.daf-svc__gps { grid-area: gps; align-self: start; position: sticky; top: 150px; }
	.daf-svc__body { grid-area: body; }
}

/* Doctor rows + profile: billing and new patients as one compact line. */
.daf-main .daf-dr__slots { display: block; grid-column: 1 / -1; margin: 0; font-size: 0.875rem; color: var(--daf-slate); }
.daf-profile__book .daf-dr__slots { margin: 0; }
.daf-profile__name .daf-tbc, .daf-profile__main h2 .daf-tbc { vertical-align: 0.35em; }

/* Sticky bar on a call-led or walk-in page: the main slot names the service, but only Book is filled blue. */
.daf-bookbar a.daf-bookbar__main--alt { background: var(--daf-tint); color: var(--daf-navy); }

/* Booking steps on a phone: numbered lines, not cards. */
@media (max-width: 699px) {
	.daf-hs__steps { gap: 0; border-top: 1px solid var(--daf-line); }
	.daf-hs__steps li { padding: 10px 0; border: 0; border-bottom: 1px solid var(--daf-line); border-radius: 0; }
	.daf-hs-svc ul { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 16px; }
	.daf-hs-svc a { line-height: 1.25; }
}
/* Footer links in two columns on a phone. */
@media (max-width: 639px) {
	.daf-footer__links { display: grid; grid-template-columns: 1fr 1fr; column-gap: 16px; }
}

/* ---------- B10 (CAL-864): accessibility, performance and the three UX blocks ---------- */

/* Focus ring: 3px navy on light backgrounds (14:1 on white). The level yellow was 1.6:1 on white, under WCAG 1.4.11's 3:1.
   Yellow stays on the navy footer and address strip, where it's the high-contrast choice. Selects, inputs and iframes get it too. */
a:focus-visible, button:focus-visible, select:focus-visible, input:focus-visible, textarea:focus-visible,
summary:focus-visible, iframe:focus-visible, [tabindex]:focus-visible, .daf-chip:focus-visible, .daf-faq__item summary:focus-visible {
	outline: 3px solid var(--daf-navy);
	outline-offset: 2px;
	box-shadow: 0 0 0 2px #fff; /* white inner ring: the focus stays visible on the navy find-us card too */
}
.daf-footer :focus-visible, .daf-strip:focus-visible { outline-color: var(--daf-level); }

/* Body text at 16px or more for older patients: sentences that were 13–15px. Labels, crumbs and tags stay smaller (14–15px). */
.daf-ch__note, .daf-hs__legend, .daf-svc__note, .daf-svccard__sum, .daf-filter label, .daf-home__park,
.daf-visit__hours, .daf-dr__state, .daf-svc-dr .daf-dr__state, .daf-main .daf-dr__slots, .daf-footer,
.HotDocLink--fallback { font-size: 1rem; }
.daf-dr__meta, .daf-ch-dr__meta { font-size: 0.9375rem; }
.daf-tags li, .daf-svccard__tag { font-size: 0.875rem; }
.daf-footer__base { font-size: 0.875rem; }

/* Line length: prose stops at about 75 characters (it ran to 96 at 720px). Figtree averages ~0.44em a character,
   so 33em, not 65ch: ch is the width of a "0", which is wider than the average letter. */
.daf-main :is(p, li):not([class*="daf-btn"]) { max-width: 33em; }
.daf-main .HotDocLink--fallback, .daf-main .HotDocLink--fallback a { font-size: 1rem !important; } /* HotDoc's injected CSS sets 14px and wins without it */

/* Reduced motion: the theme has no animation today; this keeps it that way for anything added later. */
@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; scroll-behavior: auto !important; }
}

/* /book/: HotDoc's iframe is built only when asked for (inc/perf.php, B15). Until then the box is just the button,
   so it no longer reserves 800px; it grows when the visitor presses it, which is the expected change, not a jump. */
.daf-hotdoc[data-hotdoc-defer]:not(.is-loaded) { background: var(--daf-tint); }
.daf-hotdoc__wait { padding: 16px; }
.daf-hotdoc__wait > * + * { margin-top: 12px; }

/* /book/ layout (2026-10-03). Phones: the "call us to book these" list is a closed row above the widget. From 1024px
   it is an open panel beside the widget and stays in view while the long HotDoc list scrolls. */
.daf-book { display: grid; gap: 20px; margin-top: 1.75rem; }
.daf-book__main { min-width: 0; }
.daf-book__main > h2 { margin: 0 0 14px; }
.daf-book__calls { border: 1px solid var(--daf-line); border-radius: 14px; background: var(--daf-tint); padding: 0 18px; }
.daf-book__calls[open] { padding-bottom: 18px; }
.daf-book__calls summary { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 56px; cursor: pointer; list-style: none; }
.daf-book__calls summary::-webkit-details-marker { display: none; }
.daf-book__calls summary::after { content: "+"; flex: 0 0 auto; font-size: 1.5rem; line-height: 1; color: var(--daf-blue); }
.daf-book__calls[open] summary::after { content: "\2013"; }
.daf-book__calls summary h2 { margin: 0; font-size: 1.125rem; line-height: 1.3; }
.daf-book__calls p { margin: 0 0 10px; }
.daf-book__calls ul { margin: 0 0 12px; padding-left: 1.2em; }
.daf-book__calls li { margin: 2px 0; }
.daf-book__calls .daf-actions { margin: 14px 0 0; }
.daf-book__calls .daf-btn { background: #fff; }
@media (min-width: 1024px) {
	.daf-book { grid-template-columns: minmax(0, 1fr) 340px; gap: 40px; align-items: start; }
	.daf-book__main { grid-column: 1; grid-row: 1; }
	.daf-book__side { grid-column: 2; grid-row: 1; position: sticky; top: calc(var(--wp-admin--admin-bar--height, 0px) + 100px); }
	.daf-book__calls { padding: 4px 22px 22px; }
	.daf-book__calls summary { cursor: default; pointer-events: none; }
	.daf-book__calls summary::after, .daf-book__calls[open] summary::after { content: none; }
	.daf-book__calls summary h2 { font-size: 1.25rem; }
}
.daf-book__cards { display: grid; gap: 16px; margin-top: 2.5rem; }
@media (min-width: 800px) { .daf-book__cards { grid-template-columns: 1fr 1fr; } }
.daf-book__card { border: 1px solid var(--daf-line); border-radius: 14px; padding: 20px; background: #fff; }
.daf-book__card h2 { margin: 0 0 8px; font-size: 1.375rem; line-height: 1.25; }
.daf-book__card > :last-child { margin-bottom: 0; }
.daf-book__more { margin-top: 2rem; }
.daf-book__more summary h2 { margin: 0; font-size: 1.0625rem; line-height: 1.3; }
.daf-book__more .daf-actions { margin: 12px 0 4px; }

/* B29 "Already a patient?" (home + /book/): one short paragraph and one link. */
.daf-hs .daf-existing { margin: 0; } /* home section only; on /book/ it keeps the page's paragraph spacing */
.daf-existing + .daf-linkrow, .daf-existing + .daf-existing__links { margin-top: 4px; }

/* B27: the wheelchair item has no page to link to; match the height of the linked headings beside it. */
.daf-main .daf-hs-more h3.daf-hs-more__plain { display: flex; align-items: center; min-height: var(--daf-tap); }

/* B30: the after-hours line, under the emergency line in the footer on every page. */
.daf-footer .daf-footer__ah { margin-top: 10px; }
/* Fax and ABN are plain text (no tap target), so their rows don't need 44px. The phone row keeps it. */
.daf-footer__row:not(:has(a)) { min-height: 0; padding: 4px 0; }
/* HotDoc's lightbox close button (third party, 30px): a 44px target, like every other control on the site. */
body [data-hotdoc-lightbox] > button.close { width: var(--daf-tap); height: var(--daf-tap); }

/* B11 (CAL-865): related services on service pages, services on doctor profiles. One link per 44px row. */
.daf-rellinks { list-style: none; margin: 0.5rem 0 0; padding: 0; }
.daf-rellinks li { margin: 0; }
.daf-svc__related h2, .daf-profile__svcs h2 { font-size: 1.25rem; }
.daf-profile__svcs, .daf-svc__related { margin-top: var(--daf-section); } /* their h2 is a :first-child, which zeroes its own margin */
/* Footer "000" links (narrower than 44px): keep the 44px box, but centre the text in it and pull the
   box into the spaces either side, so "000" doesn't leave a gap before the next word. */
.daf-footer p a[href="tel:000"] { justify-content: center; margin-inline: -6px; }
.daf-404-more h2 { font-size: 1.25rem; }

/* ---------- B12 (CAL-866): shorter home page on phones. Desktop (700px and up) is unchanged. ---------- */
/* Services: each group heading is a disclosure button on phones (script in daf_home_svc_script()). */
.daf-hs-svc ul[hidden] { display: none; }
@media (max-width: 699px) {
	.daf-hs-svc:has(.daf-hs-svc__toggle) { gap: 0; border-top: 1px solid var(--daf-line); }
	.daf-hs-svc:has(.daf-hs-svc__toggle) .daf-hs-svc__grp { border-bottom: 1px solid var(--daf-line); }
	.daf-hs-svc:has(.daf-hs-svc__toggle) h3 { margin: 0; }
	.daf-hs-svc:has(.daf-hs-svc__toggle) ul { border-top: 0; margin: 0 0 10px; }
	.daf-hs-svc:has(.daf-hs-svc__toggle) li:last-child { border-bottom: 0; }
	.daf-hs-svc__toggle {
		display: flex;
		align-items: center;
		justify-content: space-between;
		gap: 12px;
		width: 100%;
		min-height: 48px;
		padding: 4px 0;
		border: 0;
		background: none;
		font: inherit;
		font-weight: 700;
		color: inherit;
		text-align: left;
		cursor: pointer;
	}
	.daf-hs-svc__toggle::after { content: "+"; flex: 0 0 auto; font-size: 1.5rem; line-height: 1; color: var(--daf-blue); }
	.daf-hs-svc__toggle[aria-expanded="true"]::after { content: "–"; }
}
/* Also at the practice: one compact row of three on phones, a short line under each heading. */
.daf-hs-more__short { display: none; }
@media (max-width: 699px) {
	.daf-hs-more { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0 12px; border-top: 1px solid var(--daf-line); }
	.daf-hs-more li { padding: 4px 0 0; border-top: 0; }
	.daf-main .daf-hs-more h3, .daf-main .daf-hs-more h3.daf-hs-more__plain { font-size: 1rem; line-height: 1.2; }
	.daf-hs-more h3 a, .daf-main .daf-hs-more h3.daf-hs-more__plain { min-height: var(--daf-tap); }
	.daf-hs-more p { font-size: 0.9375rem; line-height: 1.35; color: var(--daf-slate); }
	.daf-hs-more__long { display: none; }
	.daf-hs-more__short { display: inline; }
}
/* Section spacing on phones, home page only: one 24px gap between sections (36px before), and every collapsible
   row (service groups, questions) the same 48px, so the rhythm stays even. */
@media (max-width: 699px) {
	.daf-home, .daf-home-more { --daf-section: 24px; }
	.daf-home-more { padding-bottom: var(--daf-section); }
	.daf-hs__head { margin-bottom: 8px; }
	.daf-hs-drs { margin-bottom: 4px; }
	.daf-home-more .daf-hs > p:last-child, .daf-home-more .daf-hs__line:last-child { margin-bottom: 0; }
	.daf-home-more .daf-faq__item summary { box-sizing: border-box; min-height: 48px; padding: 4px 0; }
}

/* B12: tel: links inside body sentences (/contact/ after-hours and 000). A 44px box like the footer's, without breaking the line. */
.daf-tel-inline { display: inline-flex; align-items: center; min-height: var(--daf-tap); min-width: var(--daf-tap); justify-content: center; margin-block: -10px; font-weight: 700; color: var(--daf-blue); text-underline-offset: 3px; }
.daf-tel-inline[href="tel:000"] { margin-inline: -6px; } /* same fix as the footer 000: no gap before the next word */

/* ---------- B14 (CAL-868): one "Visit us" card on the home page (was "Find us" + "Hours") ---------- */
/* Phones (and up to 1279px): heading, address + parking, hours, actions, stacked. From 1280px: address left, hours right, actions in one row. */
.daf-visit { display: grid; gap: 14px; }
.daf-visit h2 { margin: 0; }
.daf-visit__grid { display: grid; gap: 14px; }
.daf-visit__where { min-width: 0; }
.daf-visit .daf-find__addr { line-height: 1.45; }
.daf-visit .daf-home__park { margin: 10px 0 0; color: rgba(255,255,255,.88); } /* 11.8:1 on the navy */
.daf-visit__hours { width: 100%; border-collapse: collapse; margin: 0; line-height: 1.4; }
.daf-visit__hours th, .daf-visit__hours td { padding: 6px 0; border-bottom: 1px solid rgba(255,255,255,.18); vertical-align: baseline; }
.daf-visit__hours tr:first-child th, .daf-visit__hours tr:first-child td { padding-top: 0; }
.daf-visit__hours tr:last-child th, .daf-visit__hours tr:last-child td { border-bottom: 0; padding-bottom: 0; }
.daf-visit__hours th { text-align: left; font-weight: 700; padding-right: 16px; white-space: nowrap; }
.daf-visit__hours td { text-align: right; white-space: nowrap; }
.daf-visit__acts { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 20px; }
.daf-visit__acts .daf-btn { padding: 0 20px; }
.daf-visit__link { display: inline-flex; align-items: center; min-height: var(--daf-tap); color: #fff; font-weight: 700; text-decoration: underline; text-underline-offset: 3px; }
.daf-visit__link:hover { color: #fff; text-decoration-thickness: 2px; }
/* Stacked up to 1279px: below that the photo column is too narrow for two halves without the address wrapping to 4 lines. */
@media (max-width: 1279px) {
	/* Hours sit under the parking line: a thin rule, not a second card. */
	.daf-visit__hours { border-top: 1px solid rgba(255,255,255,.18); }
	.daf-visit__hours tr:first-child th, .daf-visit__hours tr:first-child td { padding-top: 10px; }
}
@media (min-width: 1024px) {
	.daf-visit { padding: 24px; }
}
@media (min-width: 1280px) {
	.daf-visit__grid { grid-template-columns: minmax(0, 1fr) auto; column-gap: 20px; align-items: start; }
	.daf-visit__hours { width: auto; }
}

/* ---------- B15 (CAL-869): one left edge, phone polish ---------- */
/* Page heads and body copy start on the container edge (templates/page.html: alignwide + left-justified constrained
   layout). Constrained paragraphs are never centred inside an already-narrow column. */
.daf-main .daf-lede { margin-left: 0; } /* other paragraphs get margin-left 0 from the left-justified layout */

/* Phone menu (inc/menu.php): Bulk billing + About and the Book / Call buttons show only in the open panel. */
.daf-nav .daf-nav__more, .daf-nav__ctas { display: none !important; }
.daf-nav .is-menu-open .daf-nav__more { display: flex !important; }
.daf-nav .is-menu-open .daf-nav__ctas { display: flex !important; flex-direction: column; gap: 12px; width: 100%; margin-top: 24px; }
.daf-nav .is-menu-open .daf-nav__ctas .daf-btn { box-sizing: border-box; width: 100%; min-height: 52px; font-size: 1.0625rem; }

/* /doctors/: one rule for every card. Book and Profile stack, full width (long names made some wrap, some not). */
.daf-drlist .daf-dr__acts .daf-btn { flex: 1 1 100%; }

/* Footer: inline links (000, on-call, 13 SICK) were inline-flex with a 44px min-height, which stretched every line
   they sat on. They're inline now; the vertical padding keeps a 44px tap box without changing the line height. */
.daf-footer__emerg p .daf-footer__link { display: inline; padding-block: 13px; }
.daf-footer__emerg p a[href="tel:000"] { padding-inline: 7px; margin-inline: -7px; }

/* Home services legend: icon stays inline with the sentence (it was a flex item and wrapped onto its own line). */
.daf-hs__legend { display: block; }
.daf-hs__legend .daf-ico { display: inline-block; vertical-align: -3px; }

@media (max-width: 699px) {
	/* Home "Also at the practice": stacked on phones (three columns at 375 were cramped), text 15px. */
	.daf-hs-more { grid-template-columns: 1fr; gap: 0; }
	.daf-hs-more li { padding: 2px 0 8px; border-bottom: 1px solid var(--daf-line); }
	.daf-hs-more h3 a, .daf-main .daf-hs-more h3.daf-hs-more__plain { min-height: var(--daf-tap); }
	.daf-hs-more p { font-size: 0.9375rem; }

	/* /fees/ on phones: one compact row per fee. The service name has the first line to itself; the second line has
	   "Fee $A · Rebate $B" small on the left and "You pay $X" bold on the right. Rows keep their table roles (fees.html), so
	   screen readers still hear name, fee, rebate, you pay with their column headers; the visible labels are generated text
	   with empty alt text, so they aren't read twice. */
	.daf-table, .daf-table tbody { display: block; }
	.daf-table tr { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0 6px; margin: 0; padding: 4px 0; line-height: 1.35; border: 0; border-bottom: 1px solid var(--daf-line); border-radius: 0; }
	.daf-table tbody tr:first-child { border-top: 1px solid var(--daf-line); }
	.daf-table th[scope=row] { flex: 0 0 100%; min-width: 0; width: auto; padding: 0 0 1px; border: 0; font-weight: 700; }
	.daf-table td { display: block; width: auto; padding: 0; border: 0; }
	.daf-table td::before { content: none; }
	.daf-table td:nth-of-type(1), .daf-table td:nth-of-type(2) { font-size: 0.875rem; color: var(--daf-slate); }
	.daf-table td:nth-of-type(3) { margin-left: auto; text-align: right; font-weight: 700; }
	.daf-table td:nth-of-type(3)::before { content: "Out of Pocket Fees " / ""; font-weight: 400; font-size: 0.875rem; color: var(--daf-slate); }
	.daf-table td:nth-of-type(1)::before { content: "Fee " / ""; font-weight: 600; }
	.daf-table td:nth-of-type(2)::before { content: "· Rebate " / ""; font-weight: 600; }
	/* Every data cell says "Bulk billed": show the last one only (2026-10-15: also 2-column tables) ("You pay Bulk billed"); Fee and Rebate stay in the table for screen readers. */
	.daf-table tr.daf-table__bb td:not(:last-of-type) { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; }
	.daf-table tr.daf-table__bb { position: relative; }
	/* B17 (CAL-876): and the visible cell reads "Bulk billed" alone, without "You pay". Screen readers still get the "You pay" column header. */
	.daf-table tr.daf-table__bb td:last-of-type::before { content: none; }
}

/* B16 (CAL-875): "Common questions" on service pages, at the end of the body column. Question h3s sit below the 22px h2. */
.daf-svc__body > .daf-svc__faq { margin-top: 1.75rem; }
.daf-svc__body > .daf-svc__faq:first-child { margin-top: 0; }
.daf-svc__faq h3 { margin: 1.25rem 0 0.5rem; font-size: 1.125rem; line-height: 1.3; }
.daf-svc__faq h2 + h3 { margin-top: 0.75rem; }

/* ---------- B17 (CAL-876): one-bar header + calm home hero (option A) ---------- */
/* Header: logo + a small address label on the left. The phone is a light text link; Book online is the only filled button. */
.daf-header__brand { display: flex; align-items: center; gap: 18px; min-width: 0; }
.daf-header__where {
	display: none;
	align-items: center;
	gap: 8px;
	min-height: var(--daf-tap);
	padding-left: 18px;
	border-left: 1px solid var(--daf-line);
	color: var(--daf-slate);
	font-size: 0.875rem;
	font-weight: 600;
	text-decoration: none;
	white-space: nowrap;
}
.daf-header__where .daf-lvl { min-width: 26px; height: 24px; font-size: 12px; }
.daf-header__where:hover { color: var(--daf-blue); text-decoration: underline; }
.daf-header__phone { font-weight: 500; color: var(--daf-slate); }
/* The label fits beside the full nav from 1280px; 1024-1279 keeps the logo, nav, phone and Book only. */
@media (min-width: 1280px) { .daf-header__where { display: inline-flex; } }
/* Phone header: logo, then Menu. Book and the phone stay hidden because the sticky bar carries Book online / Call / Find us (Josh, 2026-10-03: drop the header Book on mobile). */
@media (max-width: 1023px) {
	.daf-header__cta { display: none; }
	.daf-header__actions { gap: 8px; }
}

/* Hero: two actions and one quiet line of facts. */
.daf-home__lede { margin: 12px 0 24px; }
.daf-home__acts { display: flex; flex-wrap: wrap; gap: 12px; }
.daf-home__acts .daf-btn { min-height: 52px; padding: 0 24px; }
.daf-home__facts { list-style: none; display: flex; flex-wrap: wrap; gap: 0 24px; margin: 16px 0 0; padding: 0; color: var(--daf-slate); font-size: 0.9375rem; line-height: 1.35; }
.daf-home__facts li { display: flex; align-items: center; gap: 8px; min-height: var(--daf-tap); }
.daf-home__facts a { display: inline-flex; align-items: center; gap: 8px; min-height: var(--daf-tap); color: var(--daf-slate); text-decoration: none; }
.daf-home__facts a span { text-decoration: underline; text-decoration-color: var(--daf-line); text-underline-offset: 3px; }
.daf-home__facts a:hover { color: var(--daf-blue); }
.daf-home__facts a:hover span { text-decoration-color: currentColor; }
.daf-home__facts .daf-ico { width: 18px; height: 18px; color: var(--daf-blue); }
@media (max-width: 699px) {
	.daf-home__acts .daf-btn { flex: 1 1 100%; box-sizing: border-box; }
	.daf-home__facts { flex-direction: column; margin-top: 10px; }
}

/* The chooser: first section under the hero, full width, same card. */
.daf-home-chooser { padding-bottom: var(--daf-section); }
.daf-main .daf-home-chooser .daf-ch h2.daf-ch__q { font-size: clamp(1.25rem, 1.1rem + 0.6vw, 1.5rem); }
@media (min-width: 1024px) {
	.daf-home-chooser .daf-ch__list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 32px; }
}

/* Visit us card in the sections: it keeps B14's look, at the 760px content width. */
.daf-home-more > .daf-visit { max-width: 760px; box-sizing: border-box; }
@media (min-width: 1024px) {
	.daf-home-more > .daf-visit .daf-visit__grid { grid-template-columns: minmax(0, 1fr) auto; column-gap: 32px; align-items: start; }
	.daf-home-more > .daf-visit .daf-visit__hours { width: auto; border-top: 0; }
	.daf-home-more > .daf-visit .daf-visit__hours tr:first-child th, .daf-home-more > .daf-visit .daf-visit__hours tr:first-child td { padding-top: 0; }
}
.daf-header__book { gap: 0; }
.daf-header__book-more { white-space: pre; } /* keeps the space before "online": the span is a flex item */

/* Phone (B17 target: home ≤ 6.0 screens at 375×812). As in option A's phone frame: the chips are one sideways-scrolling
   row and the chooser drops its card frame, so the first section reads as part of the page. */
@media (max-width: 699px) {
	.daf-home { gap: 16px; }
	.daf-home { padding-bottom: 8px; }
	.daf-home__lede { margin: 8px 0 16px; }
	.daf-home-chooser { padding-bottom: 8px; } /* the block gap (20px) follows */
	.daf-home-chooser .daf-ch-dr { padding: 8px 0; }
	.daf-home__title { line-height: 1.05; }
	.daf-home-more > .daf-visit { padding: 18px; gap: 12px; }
	.daf-home__acts { gap: 10px; }
	.daf-home__acts .daf-btn { min-height: 48px; }
	.daf-home__facts li:not(:has(a)) { min-height: 32px; }
	.daf-home-chooser .daf-ch { padding: 0; border: 0; border-radius: 0; box-shadow: none; }
	.daf-home-chooser .daf-ch__chips {
		flex-wrap: nowrap;
		overflow-x: auto;
		margin: 0 calc(-1 * var(--wp--style--root--padding-right, 16px)) 12px calc(-1 * var(--wp--style--root--padding-left, 16px));
		padding: 0 var(--wp--style--root--padding-right, 16px) 2px var(--wp--style--root--padding-left, 16px);
		scrollbar-width: none;
		scroll-padding-inline: var(--wp--style--root--padding-left, 16px);
	}
	.daf-home-chooser .daf-ch__chips::-webkit-scrollbar { display: none; }
	.daf-home-chooser .daf-ch__chips li { flex: none; }
}

/* 2026-10-05: text pages use the full 1200 container (was a 760px column). Running text keeps its ~75-character cap
   (.daf-main p/li max-width 33em above); headings, tables, boxes and grids now use the width. */
.daf-svcmore { display: grid; gap: 16px; margin: 2.5rem 0 1rem; }
@media (min-width: 800px) { .daf-svcmore { grid-template-columns: 1fr 1fr; } }
.daf-svcmore__box { border: 1px solid var(--daf-line); border-radius: 16px; padding: 20px; background: #fff; }
.daf-main .daf-svcmore__box h2 { margin: 0 0 8px; font-size: 1.25rem; }
.daf-svcmore__box .daf-actions { margin: 14px 0 0; }

/* "On this page" panel (inc/toc.php, 2026-10-05). Desktop only; phones keep the single column. */
.daf-toc { display: none; }
@media (min-width: 1024px) {
	.daf-withtoc { display: grid; grid-template-columns: minmax(0, 1fr) 270px; gap: 48px; align-items: start; }
	/* With the panel beside it, running text can go to ~79 characters (42em at 17px), under the 80-character limit. */
	.daf-main .daf-withtoc__main :is(p, li):not([class*="daf-btn"]) { max-width: 42em; }
	.daf-withtoc__main { min-width: 0; }
	.daf-toc { display: block; position: sticky; top: calc(var(--wp--admin--admin-bar--height, 0px) + 110px); margin-top: 6px; padding: 18px 20px; border: 1px solid var(--daf-line); border-radius: 16px; background: #fff; }
	.daf-toc__h { margin: 0 0 8px; font-size: 0.8125rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--daf-slate); }
	.daf-toc ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 2px; }
	.daf-main .daf-toc li { max-width: none; }
	.daf-toc ul { gap: 0; }
	.daf-toc li a { display: flex; align-items: center; min-height: 44px; padding: 4px 0; box-sizing: border-box; color: var(--daf-navy); font-weight: 600; text-decoration: none; line-height: 1.3; }
	.daf-toc li a:hover { color: var(--daf-blue); text-decoration: underline; }
	.daf-toc__help { margin: 12px 0 0; padding-top: 12px; border-top: 1px solid var(--daf-line); font-size: 0.9375rem; color: var(--daf-slate); }
	.daf-toc__help a { display: inline-flex; align-items: center; min-height: 44px; color: var(--daf-navy); font-weight: 700; white-space: nowrap; }
}

/* Bulk-billing line above the header (inc/bulk-billing.php daf_bb_strip, 2026-10-05). Calm, sentence case, not sticky. */
.daf-bbstrip { background: var(--daf-tint); border-bottom: 1px solid var(--daf-line); color: var(--daf-navy); font-size: 0.875rem; line-height: 1.4; }
.daf-bbstrip__in { display: block; max-width: 1200px; min-height: 44px; margin: 0 auto; padding: 12px var(--wp--style--root--padding-right, 24px) 12px var(--wp--style--root--padding-left, 24px); box-sizing: border-box; color: var(--daf-navy); text-decoration: none; }
.daf-bbstrip__more { color: var(--daf-blue); font-weight: 700; white-space: nowrap; text-decoration: underline; text-underline-offset: 3px; }
.daf-bbstrip__in:hover .daf-bbstrip__more { color: var(--daf-navy); }
.daf-bbstrip__in:focus-visible { outline: 3px solid var(--daf-level); outline-offset: -3px; }
@media (min-width: 1200px) { .daf-bbstrip__in { max-width: calc(1200px + var(--wp--style--root--padding-left, 24px) + var(--wp--style--root--padding-right, 24px)); } }

/* Home hero bulk-billing pill (option A, 2026-10-05). */
.daf-home__facts li.daf-home__bb { flex-basis: 100%; }
.daf-home__facts li.daf-home__bb { margin-top: 6px; }
.daf-home__facts .daf-home__bb a { box-sizing: border-box; min-height: 44px; gap: 10px; padding: 8px 14px 8px 16px; border-radius: 999px; background: var(--daf-tint); color: var(--daf-navy); border: 1px solid var(--daf-line); line-height: 1.3; transition: border-color .15s; }
.daf-home__facts .daf-home__bb a span { text-decoration: none; }
.daf-home__facts .daf-home__bb strong { font-weight: 700; }
.daf-home__facts .daf-home__bb .daf-ico:last-child { width: 16px; height: 16px; margin-left: 2px; transition: transform .15s; }
.daf-home__facts .daf-home__bb a:hover { border-color: var(--daf-blue); color: var(--daf-navy); }
.daf-home__facts .daf-home__bb a:hover .daf-ico:last-child { transform: translateX(2px); }
@media (prefers-reduced-motion: reduce) { .daf-home__facts .daf-home__bb a, .daf-home__facts .daf-home__bb .daf-ico { transition: none; } }
@media (max-width: 699px) { .daf-home__facts .daf-home__bb a { gap: 8px; padding: 8px 12px 8px 14px; font-size: 0.875rem; border-radius: 16px; } }
.daf-bbstrip__short { display: none; }
@media (max-width: 639px) {
	.daf-bbstrip__long { display: none; }
	.daf-bbstrip__short { display: inline; }
	.daf-bbstrip { font-size: 0.8125rem; }
	.daf-bbstrip__in { padding-top: 8px; padding-bottom: 8px; }
}

/* ==========================================================================
   2026-10-08 layout pass (Josh: "improve the layout design/structure on each page").
   Later rules win; earlier blocks are left as they were.
   ========================================================================== */

/* Text pages (fees, contact, about, allied health, privacy): section H2s were nearly H1 size. */
.daf-main .wp-block-post-content > h2.wp-block-heading,
.daf-withtoc__main > h2.wp-block-heading { font-size: clamp(1.5rem, 1.2rem + 1vw, 1.875rem); line-height: 1.2; }
.daf-main .wp-block-post-content > h3.wp-block-heading,
.daf-withtoc__main > h3.wp-block-heading { font-size: 1.1875rem; }
.daf-withtoc__main .daf-find h2 { font-size: clamp(1.5rem, 1.2rem + 1vw, 1.875rem); }

/* Names that link to a profile: heading colour, underline on hover only. */
.daf-dr__name a { color: inherit; text-decoration: none; }
.daf-dr__name a:hover { color: var(--daf-blue); text-decoration: underline; text-underline-offset: 3px; }
.daf-dr__name a:focus-visible { outline: 3px solid var(--daf-level); outline-offset: 2px; border-radius: 4px; }

/* Service pages: GP rows are one compact line (avatar | name + meta | Book). */
.daf-svc-dr { grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 4px 12px; }
.daf-svc-dr .daf-dr__acts { grid-column: 3; justify-content: flex-end; flex-wrap: nowrap; }
.daf-svc-dr .daf-dr__acts .daf-btn { padding: 0 18px; }
.daf-svc-dr .daf-dr__state { white-space: nowrap; }
.daf-svc-dr .daf-dr__meta { margin-top: 2px; }

/* Service FAQs use the home page rows; tighter heading gap. */
.daf-svc__faq .daf-faq { margin-top: 12px; }
.daf-svc__faq .daf-faq__item summary { font-size: 1.0625rem; }

/* Callout (MHCP emergency line). */
.daf-callout { margin: 0 0 1.25rem; padding: 14px 16px; border-left: 4px solid var(--daf-blue); border-radius: 0 12px 12px 0; background: var(--daf-tint); color: var(--daf-navy); font-weight: 600; }

/* Related services: cards. */
.daf-relcards { list-style: none; margin: 12px 0 0; padding: 0; display: grid; gap: 12px; }
@media (min-width: 700px) { .daf-relcards { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.daf-relcard { display: flex; flex-direction: column; gap: 4px; height: 100%; box-sizing: border-box; padding: 14px 16px; border: 1px solid var(--daf-line); border-radius: 14px; background: #fff; color: var(--daf-navy); text-decoration: none; transition: border-color .15s; }
.daf-relcard:hover { border-color: var(--daf-blue); }
.daf-relcard:focus-visible { outline: 3px solid var(--daf-level); outline-offset: 2px; }
.daf-relcard__t { font-weight: 700; color: var(--daf-blue); }
.daf-relcard__t::after { content: " \203A"; }
.daf-relcard__s { font-size: 0.875rem; color: var(--daf-slate); line-height: 1.4; }

/* /doctors/ cards: equal height, actions on the bottom edge, Book and Profile side by side. */
.daf-drlist .daf-dr { grid-template-rows: 1fr auto auto; align-content: stretch; }
.daf-drlist .daf-dr__acts { align-self: end; flex-wrap: nowrap; }
.daf-drlist .daf-dr__acts .daf-btn { flex: 1 1 0; min-height: var(--daf-tap); padding: 0 12px; }
.daf-drlist .daf-dr__acts .daf-dr__state { flex: 1 1 100%; }
.daf-drlist .daf-dr__acts:has(.daf-dr__state) { flex-wrap: wrap; }

/* Doctor profile: service chips; the "Or call" line under Book. */
.daf-svcchips { list-style: none; display: flex; flex-wrap: wrap; gap: 8px; margin: 12px 0 0; padding: 0; }
.daf-svcchips a { display: inline-flex; align-items: center; min-height: var(--daf-tap); box-sizing: border-box; padding: 0 14px; border: 1px solid var(--daf-line); border-radius: 999px; background: #fff; color: var(--daf-blue); font-weight: 600; font-size: 0.9375rem; text-decoration: none; }
.daf-svcchips a:hover { border-color: var(--daf-blue); }
.daf-svcchips a:focus-visible { outline: 3px solid var(--daf-level); outline-offset: 2px; }
.daf-profile__call { flex: 1 1 100%; margin: 4px 0 0; text-align: center; font-size: 0.9375rem; color: var(--daf-slate); }
.daf-profile__call a { display: inline-block; padding-block: 12px; font-weight: 700; }

/* Home: fees beside the Visit us card. */
@media (min-width: 1024px) {
	.daf-home__pair { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 32px; align-items: start; margin-top: var(--daf-section); }
	.daf-home__pair > * { margin-top: 0 !important; max-width: none; }
}

/* /book/: New patients / Already a patient sit under the booking box in the main column, so a direct visit
   (widget not opened yet) has no empty column beside the "Call us to book these" panel. */
.daf-book__main .daf-book__cards { margin-top: 20px; }

/* /bulk-billing/: the answers as cards, two across from 900px (the right half of the page was empty). */
.daf-bb__faq { max-width: none; display: grid; gap: 16px; margin-top: 2rem; }
@media (min-width: 900px) { .daf-bb__faq { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); } }
.daf-bb__faq > section { padding: 20px 22px; border: 1px solid var(--daf-line); border-radius: 14px; background: #fff; }
.daf-bb__faq > section h2 { margin: 0 0 8px; font-size: 1.1875rem; line-height: 1.3; }
.daf-bb__faq > section p { margin: 0 0 10px; }
.daf-bb__faq > section > :last-child { margin-bottom: 0; }

/* Sub-headings inside text pages (contact's Phone / Email / After hours) sit below the section H2 in size. */
.daf-withtoc__main h3.wp-block-heading { font-size: 1.1875rem; line-height: 1.3; }

/* /services/ on phones: title and booking tag on one line, summary under it (cards were ~170px each). */
@media (max-width: 699px) {
	.daf-svccard { display: grid; grid-template-columns: minmax(0, 1fr) auto; column-gap: 10px; row-gap: 2px; align-items: start; padding: 12px 14px; }
	.daf-svccard__title { grid-column: 1; grid-row: 1; font-size: 1.0625rem; }
	.daf-svccard__tag { grid-column: 2; grid-row: 1; margin: 0; font-size: 0.75rem; padding: 3px 8px; white-space: nowrap; }
	.daf-svccard__sum { grid-column: 1 / -1; grid-row: 2; font-size: 0.875rem; line-height: 1.4; }
}
/* Name links: a 44px tap box without changing the row height. */
.daf-dr__name a { display: inline-block; padding-block: 12px; margin-block: -12px; }

/* Home "Meet our doctors": the languages panel (2026-10-08). */
.daf-hs-langs { display: flex; gap: 12px; align-items: flex-start; max-width: 46rem; margin-top: 20px; padding: 14px 16px; border: 1px solid var(--daf-line); border-radius: 14px; background: var(--daf-tint); }
.daf-hs-langs__ico { flex: 0 0 auto; width: 22px; height: 22px; margin-top: 2px; color: var(--daf-blue); }
.daf-hs-langs__body { min-width: 0; }
.daf-main .daf-hs-langs p { margin: 0; max-width: none; }
.daf-hs-langs__lead { font-weight: 700; color: var(--daf-navy); }
.daf-hs-langs__list { list-style: none; display: flex; flex-wrap: wrap; gap: 6px 8px; margin: 8px 0 10px; padding: 0; }
.daf-hs-langs__list a { display: inline-flex; align-items: center; min-height: var(--daf-tap); box-sizing: border-box; padding: 0 14px; border: 1px solid var(--daf-line); border-radius: 999px; background: #fff; color: var(--daf-blue); font-weight: 600; font-size: 0.9375rem; text-decoration: none; }
.daf-hs-langs__list a:hover { border-color: var(--daf-blue); }
.daf-hs-langs__list a:focus-visible { outline: 3px solid var(--daf-level); outline-offset: 2px; }
.daf-hs-langs__note { font-size: 0.9375rem; color: var(--daf-slate); }

/* Home "Common questions": heading + call note on the left, questions on the right from 1024px (2026-10-08). */
.daf-hs-faq__aside { flex: 1 1 100%; margin: 6px 0 0; color: var(--daf-slate); font-size: 0.9375rem; }
.daf-hs-faq__aside a { display: inline-block; padding-block: 12px; margin-block: -12px; font-weight: 700; white-space: nowrap; }
@media (min-width: 1024px) {
	#questions { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); gap: 0 48px; align-items: start; }
	#questions .daf-hs__head { flex-direction: column; align-items: flex-start; margin: 0; }
	#questions .daf-faq { max-width: none; }
}

/* Home hero below 1024px: the photo comes first, above the H1 (Josh, 2026-10-08). Desktop keeps text left, photo right. */
@media (max-width: 1023px) {
	.daf-home { grid-template-areas: "photo" "main"; }
}

/* Phone home hero (Josh 2026-10-08: too many buttons, use the white space better). One filled Book button; Call is a
   plain text link under it (same element and tracking, restyled); facts sit as one quiet group; more air between blocks.
   The sticky bar slides away while the hero's own actions are visible (class set by the script in inc/home.php). */
@media (max-width: 1023px) {
	.daf-hero-acts-on .daf-bookbar { transform: translateY(110%); visibility: hidden; }
	.daf-bookbar { transition: transform .2s ease, visibility .2s; }
}
@media (prefers-reduced-motion: reduce) { .daf-bookbar { transition: none; } }
@media (max-width: 699px) {
	.daf-home { gap: 20px; }
	.daf-home__title { font-size: clamp(1.875rem, 1.3rem + 2.6vw, 2.25rem); line-height: 1.1; }
	.daf-home__lede { margin: 10px 0 20px; font-size: 1.0625rem; line-height: 1.5; color: var(--daf-slate); }
	.daf-home__acts { gap: 2px; }
	.daf-home__acts .daf-btn:not(.daf-btn--alt) { min-height: 52px; font-size: 1.0625rem; }
	.daf-home__acts .daf-btn--alt { min-height: 44px; border: 0; background: none; box-shadow: none; color: var(--daf-blue); text-decoration: underline; text-underline-offset: 3px; font-weight: 700; }
	.daf-home__facts { margin-top: 18px; padding-top: 14px; border-top: 1px solid var(--daf-line); gap: 0; }
	.daf-home__facts li { min-height: 40px; }
	.daf-home__facts li.daf-home__bb { margin-top: 10px; }
}

/* 2026-10-08 (DAF review: the yellow "L1" badge read as a button and they didn't like the colour): the level marker
   is now a plain pin icon in the text colour, everywhere it appears (header, footer, Visit us card, /contact/). */
.daf-lvl { min-width: 0; width: 22px; height: 22px; padding: 0; border-radius: 0; background: none; color: var(--daf-blue); }
.daf-lvl svg { display: block; width: 20px; height: 20px; }
.daf-footer .daf-lvl, .daf-find .daf-lvl, .daf-visit .daf-lvl { color: #fff; }
.daf-header__where .daf-lvl { min-width: 0; width: 18px; height: 18px; }
.daf-header__where .daf-lvl svg { width: 18px; height: 18px; }

/* Medicare Bulk Billing Practice badge + "what we bulk bill" lists (2026-10-08). */
.daf-bbp { display: block; height: auto; max-width: 100%; }
.daf-bblists { display: grid; gap: 20px; margin: 16px 0 8px; padding: 22px; border: 1px solid var(--daf-line); border-radius: 16px; background: #fff; }
@media (min-width: 900px) { .daf-bblists { grid-template-columns: auto minmax(0, 1fr) minmax(0, 1fr); gap: 32px; align-items: start; } }
.daf-bblists h3 { margin: 0 0 8px; font-size: 1.0625rem; line-height: 1.35; }
.daf-bblists ul { margin: 0; padding-left: 1.2em; }
.daf-bblists li { margin: 0 0 6px; }
.daf-bb__what { margin-top: 2rem; }
.daf-bb__what > h2 { margin: 0; font-size: clamp(1.375rem, 1.2rem + 0.8vw, 1.625rem); }
/* Home hero: the badge leads the pill, so the pill becomes a soft card. */
.daf-home__facts .daf-home__bb a { border-radius: 14px; padding: 8px 14px 8px 8px; gap: 12px; }
.daf-home__facts .daf-home__bb .daf-bbp { width: 66px; flex: none; border-radius: 3px; }
/* About: practice information rows (h3 inside summary). */
.daf-practice-info { max-width: none; }
.daf-practice-info summary h3 { margin: 0; font-size: 1.0625rem; line-height: 1.3; }
.daf-practice-info .daf-faq__a ul { margin: 0 0 10px; padding-left: 1.2em; }

/* Home: allied health team strip (2026-10-08). Same strip as the doctors, plus a role line; 6 across from 1100px. */
.daf-hs-dr__role { display: block; margin-top: 2px; font-size: 0.8125rem; font-weight: 500; color: var(--daf-slate); }
.daf-hs-allied { margin-top: 12px; }
#allied .daf-actions { margin-top: 16px; }

/* /news/ and posts (2026-10-08). */
.daf-newslist .wp-block-post-template { gap: 16px; }
.daf-newscard { height: 100%; box-sizing: border-box; gap: 6px; padding: 18px 20px; border: 1px solid var(--daf-line); border-radius: 14px; background: #fff; }
.daf-newscard__title { margin: 0; font-size: 1.1875rem; line-height: 1.3; }
.daf-newscard__title a { color: var(--daf-navy); text-decoration: none; }
.daf-newscard__title a:hover { color: var(--daf-blue); text-decoration: underline; }
.daf-newscard__cat a { font-size: 0.8125rem; font-weight: 700; color: var(--daf-blue); text-decoration: none; text-transform: uppercase; letter-spacing: 0.04em; }
.daf-newscard__date, .daf-post__meta { font-size: 0.875rem; color: var(--daf-slate); }
.daf-post__meta { gap: 12px; margin-top: 8px; }
@media (max-width: 699px) { .daf-newslist .wp-block-post-template { grid-template-columns: 1fr !important; } }
.daf-main .daf-newscard .daf-newscard__title { margin: 0; font-size: 1.1875rem; line-height: 1.3; letter-spacing: 0; }
.daf-main .daf-newscard > * { margin-top: 0; margin-bottom: 0; }
.daf-newslist { padding-bottom: var(--wp--preset--spacing--50); }

/* Home B layout pass (2026-10-08): every block below the hero is a full-width band with the same padding, and the
   bands alternate tint / white: booking (tint), chooser (white), doctors (tint), allied (white), services (tint),
   fees + visit (white), questions (tint). No block gaps between bands, so no white seams. */
.daf-front--b { --b-pad: 56px; }
@media (max-width: 699px) { .daf-front--b { --b-pad: 36px; } }
.daf-front--b .wp-block-post-content > * { margin-block: 0 !important; }
.daf-front--b .daf-home-more { gap: 0; padding: 0; --daf-section: 0px; }
.daf-front--b .daf-home-more > * { position: relative; isolation: isolate; padding-block: var(--b-pad) !important; margin: 0 !important; }
.daf-front--b .daf-home-more > *::before { content: none; }
.daf-front--b .daf-home-more--top > *::before,
.daf-front--b .daf-home-more:not(.daf-home-more--top) > :is(#doctors, #services, #questions)::before { content: ""; position: absolute; inset: 0 calc(50% - 50vw); z-index: -1; background: var(--daf-tint); }
.daf-front--b .daf-home-chooser { padding-block: var(--b-pad); }
.daf-front--b .daf-home__pair { align-items: stretch; }
.daf-front--b .daf-hs__head { margin-bottom: 16px; }
/* Booking steps: equal cards, step text aligned (the inline "How to find us" link made step 3 sit lower). */
.daf-front--b .daf-hs__steps { margin: 0; align-items: stretch; }
.daf-steps p a { display: inline-block; padding-block: 12px; margin-block: -12px; min-height: 0; }
/* Steps: cards stretch to equal height, so pin each card's content to the top (step 3's heading row was growing). */
.daf-hs__steps li { align-content: start; }
.daf-hs__steps li:last-child p { margin-bottom: 0; }

/* Home B fees card (2026-10-09, Josh): white card beside the navy Visit us card, same padding and radius, links at
   the foot. Phones: a gap between the two cards (they were touching). */
.daf-front--b .daf-feescard { display: flex; flex-direction: column; gap: 14px; padding: 24px; border: 1px solid var(--daf-line); border-radius: 16px; background: #fff; box-sizing: border-box; }
.daf-front--b .daf-feescard .daf-hs__head { margin: 0; }
.daf-front--b .daf-feescard .daf-hs__line { margin: 0; }
.daf-front--b .daf-feescard .daf-visit__acts { margin-top: auto; }
.daf-front--b .daf-feescard .daf-btn { background: var(--daf-blue); color: #fff; border-color: var(--daf-blue); }
.daf-front--b .daf-feescard .daf-visit__link, .daf-front--b .daf-feescard .daf-visit__link:hover { color: var(--daf-blue); }
.daf-front--b .daf-home__pair { display: grid; gap: 16px; }
@media (min-width: 1024px) { .daf-front--b .daf-home__pair--visit-first > .daf-feescard { grid-row: 1; grid-column: 1; } } /* fees left on wide screens; phones: Visit us first (2026-10-13) */
@media (max-width: 479px) { .daf-front--b .daf-feescard { padding: 18px; } }
.daf-front--b .daf-home__pair h2, .daf-main .daf-front--b .daf-feescard .daf-hs__head h2 { font-size: 1.5rem; line-height: 1.2; }

/* Languages panel: the full row on wide screens (it sat at 46rem with the right of the row empty). */
.daf-front--b .daf-hs-langs { max-width: none; }
@media (min-width: 1024px) {
	.daf-front--b .daf-hs-langs { align-items: center; padding: 14px 20px; }
	.daf-front--b .daf-hs-langs__ico { margin-top: 0; }
	.daf-front--b .daf-hs-langs__body { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 16px; flex: 1; }
	.daf-front--b .daf-hs-langs__list { margin: 0; }
	.daf-front--b .daf-hs-langs__note { margin-left: auto; }
}

/* Home B/C: the hide-until-scroll header was removed 2026-10-13 (Miro review); the normal sticky header applies. */
.daf-b .daf-main { padding-top: 0; }

/* ---------- Home B / C heroes (2026-10-09, Josh: picked from mockups) ----------
   Shared: the main blue, big white logo, the H1, intro, pill buttons (white Book, outlined Call). */
.daf-hx { --hx-r: 28px; color: #fff; }
.daf-hx .daf-hx__logo { display: block; height: auto; }
.daf-main .daf-hx .daf-hx__title { margin: 0; color: #fff; letter-spacing: -.02em; }
.daf-main .daf-hx .daf-hx__lede { margin: 0; color: rgba(255,255,255,.9); font-size: 1.125rem; line-height: 1.55; max-width: 34rem; }
.daf-hx__acts { display: flex; flex-wrap: wrap; gap: 12px; }
.daf-hx__acts .daf-btn { min-height: 52px; padding: 0 26px; border-radius: 999px; }
.daf-hx__acts .daf-btn:not(.daf-btn--alt) { background: #fff; color: var(--daf-navy); border-color: #fff; }
.daf-hx__acts .daf-btn:not(.daf-btn--alt):hover { background: var(--daf-tint); border-color: var(--daf-tint); }
.daf-hx__acts .daf-btn--alt { background: transparent; color: #fff; border: 1.5px solid rgba(255,255,255,.7); }
.daf-hx__acts .daf-btn--alt:hover { background: rgba(255,255,255,.12); color: #fff; border-color: #fff; }
.daf-hx :focus-visible { outline-color: #fff; }
.daf-hx__photo { margin: 0; overflow: hidden; }
.daf-hx__photo img { display: block; width: 100%; height: 100%; object-fit: cover; }
.daf-hx .daf-ico { width: 18px; height: 18px; flex: none; }
@media (max-width: 1023px) { .daf-hx__acts .daf-btn { flex: 1 1 100%; box-sizing: border-box; } }

/* Bento (Home B): blue panel left (spans both rows), photo top right, QML + bulk billing tiles under it. */
.daf-hx--bento { display: grid; gap: 16px; padding-top: 20px; grid-template-columns: minmax(0, 7fr) minmax(0, 2.5fr) minmax(0, 2.5fr); grid-template-areas: "main photo photo" "main qml bb"; }
.daf-hx__main { grid-area: main; position: relative; isolation: isolate; overflow: hidden; display: flex; flex-direction: column; justify-content: center; gap: 0; padding: 56px; border-radius: var(--hx-r); background: var(--daf-blue); }
.daf-hx__main::after { content: ""; position: absolute; right: -140px; top: -140px; z-index: -1; width: 420px; height: 420px; border-radius: 50%; background: radial-gradient(circle, rgba(255,255,255,.14), transparent 65%); }
.daf-hx--bento .daf-hx__logo { width: min(100%, 340px); margin: 0 0 36px; }
.daf-main .daf-hx--bento .daf-hx__title { font-size: clamp(1.875rem, 1.1rem + 2.2vw, 2.75rem); line-height: 1.06; margin-bottom: 16px; max-width: 34rem; }
.daf-hx--bento .daf-hx__lede { margin-bottom: 28px; }
.daf-hx__meta { list-style: none; display: flex; flex-wrap: wrap; gap: 4px 28px; margin: 24px 0 0; padding: 20px 0 0; border-top: 1px solid rgba(255,255,255,.25); font-size: .9375rem; }
.daf-hx__meta li, .daf-hx__meta a { display: flex; align-items: center; gap: 10px; min-height: var(--daf-tap); color: #fff; }
.daf-hx__meta a span { text-decoration: underline; text-decoration-color: rgba(255,255,255,.5); text-underline-offset: 3px; }
.daf-hx--bento .daf-hx__photo { grid-area: photo; min-height: 300px; border-radius: var(--hx-r); }
.daf-hx--bento .daf-hx__photo img { object-position: 30% 50%; }
.daf-hx__tile { display: flex; flex-direction: column; align-items: flex-start; gap: 6px; padding: 22px 24px; border: 1px solid var(--daf-line); border-radius: 22px; background: #fff; color: var(--daf-navy); text-decoration: none; }
.daf-hx__tile--qml { grid-area: qml; }
.daf-hx__tile--bb { grid-area: bb; transition: border-color .15s; }
.daf-hx__tile--bb:hover { border-color: var(--daf-blue); color: var(--daf-navy); text-decoration: none; }
.daf-main .daf-hx__tile p { margin: 0; max-width: none; }
.daf-hx__qml { width: 92px; height: auto; margin-bottom: 6px; }
.daf-hx__tile .daf-bbp { width: 76px; height: auto; margin-bottom: 6px; }
.daf-hx__t { font-weight: 800; font-size: 1.0625rem; line-height: 1.3; }
.daf-hx__s { color: var(--daf-slate); font-size: .9375rem; line-height: 1.45; }
.daf-hx__links { display: flex; flex-direction: column; gap: 0; margin-top: 4px !important; }
.daf-hx__links a, .daf-hx__more { display: inline-flex; align-items: center; gap: 4px; min-height: 36px; color: var(--daf-blue); font-weight: 700; font-size: .9375rem; text-decoration: none; }
.daf-hx__links a:hover { text-decoration: underline; }
.daf-hx__tile .daf-ico { width: 16px; height: 16px; }
@media (max-width: 1279px) and (min-width: 1024px) { .daf-hx__main { padding: 44px; } .daf-hx__tile { padding: 18px; } }
@media (max-width: 1023px) {
	.daf-hx--bento { grid-template-columns: minmax(0, 1fr); grid-template-areas: "main" "photo" "qml" "bb"; gap: 12px; padding-top: 12px; }
	.daf-hx__main { padding: 32px 24px 24px; border-radius: 22px; }
	.daf-hx--bento .daf-hx__logo { width: min(100%, 240px); margin-bottom: 24px; }
	.daf-hx--bento .daf-hx__lede { font-size: 1.0625rem; margin-bottom: 24px; }
	.daf-hx__meta { flex-direction: column; margin-top: 20px; padding-top: 14px; }
	.daf-hx--bento .daf-hx__photo { min-height: 0; height: 200px; border-radius: 22px; }
	.daf-hx__tile { padding: 18px; border-radius: 18px; }
}
@media (min-width: 700px) and (max-width: 1023px) { .daf-hx--bento { grid-template-columns: 1fr 1fr; grid-template-areas: "main main" "photo photo" "qml bb"; } }

/* Editorial (Home C): full-width blue band; the photo overlaps its foot; facts row on white below. */
.daf-hx--ed { position: relative; isolation: isolate; padding-top: 48px; }
.daf-hx__band::before { content: ""; position: absolute; z-index: -1; top: 0; bottom: var(--hx-cut, 250px); left: calc(50% - 50vw); right: calc(50% - 50vw); background: var(--daf-blue); }
.daf-hx--ed .daf-hx__logo { width: 260px; margin: 0 0 64px; }
.daf-hx__grid { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr); gap: 64px; align-items: end; margin-bottom: 48px; }
.daf-main .daf-hx--ed .daf-hx__title { font-size: clamp(2.375rem, 1rem + 3.6vw, 4.25rem); line-height: 1.02; letter-spacing: -.03em; }
.daf-hx--ed .daf-hx__lede { margin-bottom: 24px; }
.daf-hx--ed .daf-hx__photo { height: clamp(210px, 28vw, 400px); border-radius: 24px; box-shadow: 0 30px 60px -30px rgba(11,42,61,.45); }
.daf-hx--ed .daf-hx__photo img { object-position: 50% 50%; }
.daf-hx__facts { list-style: none; display: flex; flex-wrap: wrap; gap: 4px 32px; margin: 0; padding: 20px 0 4px; color: var(--daf-navy); font-size: .9375rem; font-weight: 600; }
.daf-hx__facts li, .daf-hx__facts a { display: flex; align-items: center; gap: 10px; min-height: var(--daf-tap); color: var(--daf-navy); text-decoration: none; }
.daf-hx__facts a span { text-decoration: underline; text-decoration-color: var(--daf-line); text-underline-offset: 3px; }
.daf-hx__facts a:hover span { text-decoration-color: currentColor; }
.daf-hx__facts .daf-ico { color: var(--daf-blue); }
.daf-hx__facts .daf-bbp { width: 44px; height: auto; }
.daf-hx__facts .daf-hx__qml { width: 58px; margin: 0; }
@media (max-width: 1023px) {
	.daf-hx--ed { padding-top: 28px; --hx-cut: 330px; }
	.daf-hx--ed .daf-hx__logo { width: 200px; margin-bottom: 36px; }
	.daf-hx__grid { grid-template-columns: minmax(0, 1fr); gap: 18px; margin-bottom: 28px; }
	.daf-hx--ed .daf-hx__photo { border-radius: 18px; }
	.daf-hx__facts { flex-direction: column; gap: 0; }
}
@media (min-width: 700px) and (max-width: 1023px) { .daf-hx--ed { --hx-cut: 210px; } .daf-hx__facts { flex-direction: row; gap: 4px 28px; } }

/* Home B/C: the first band under the hero gets breathing room (the hero has no bottom padding of its own). */
.daf-front--b .daf-home-more--top { margin-top: 40px !important; }
@media (max-width: 699px) { .daf-front--b .daf-home-more--top { margin-top: 24px !important; } }
.daf-main .daf-hx .daf-hx__lede { margin-bottom: 28px; }
.daf-main .daf-hx--ed .daf-hx__lede { margin-bottom: 24px; }
.daf-hx__acts .daf-btn--alt { text-decoration: none; } /* the phone hero's "Call as a text link" rule is for Home A */
/* 1024-1279: three columns left the tiles ~190px wide; the panel sits beside the photo and the tiles share a row under them. */
@media (min-width: 1024px) and (max-width: 1279px) {
	.daf-hx--bento { grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); grid-template-areas: "main photo" "qml bb"; }
}

/* ---------- Home B "How can we help?" (2026-10-09, Josh) ----------
   Booking steps + chooser in the tinted band: heading + primary CTA, steps, then "Book by GP or service" with a
   service search, the tabs and the panels in one white card. */
.daf-help__head { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 16px 32px; margin-bottom: 20px; }
.daf-main .daf-help__head h2 { margin: 0 0 6px; font-size: clamp(1.5rem, 1.2rem + 1.2vw, 2rem); line-height: 1.15; }
.daf-main .daf-help__head .daf-hs__line { margin: 0; }
.daf-help__cta .daf-btn { min-height: 52px; padding: 0 26px; border-radius: 999px; }
.daf-help .daf-hs__steps { margin-bottom: 20px; }
.daf-help__ch.daf-ch { background: #fff; border: 1px solid var(--daf-line); border-radius: 22px; padding: 24px; box-shadow: none; }
.daf-main .daf-help__ch h3.daf-ch__q { margin: 0 0 14px; font-size: 1.25rem; }
.daf-help__find { position: relative; max-width: 30rem; margin: 0 0 14px; }
.daf-help__find .daf-ico { position: absolute; left: 14px; top: 50%; width: 20px; height: 20px; transform: translateY(-50%); color: var(--daf-slate); pointer-events: none; }
.daf-help__find input { box-sizing: border-box; width: 100%; min-height: 48px; padding: 0 16px 0 44px; border: 1px solid var(--daf-line); border-radius: 999px; background: var(--daf-tint); color: var(--daf-navy); font: inherit; font-size: 1rem; }
.daf-help__find input:focus-visible { outline: 3px solid var(--daf-level); outline-offset: 2px; background: #fff; }
.daf-help__ch .daf-ch__panel + .daf-ch__panel:not([hidden]) { margin-top: 18px; padding-top: 18px; border-top: 1px solid var(--daf-line); }
.daf-main .daf-help__ch h4.daf-ch__title, .daf-main .daf-help__none .daf-ch__title { margin: 4px 0 8px; font-size: 1rem; font-weight: 800; }
.daf-help__none .daf-ch__foot { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 12px; }
@media (min-width: 900px) { .daf-help__ch .daf-ch__panel[data-panel="all-doctors"] .daf-ch__list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 32px; align-items: start; } }
@media (max-width: 699px) {
	.daf-help__head { align-items: stretch; }
	.daf-help__cta, .daf-help__cta .daf-btn { width: 100%; box-sizing: border-box; }
	.daf-help__ch.daf-ch { padding: 18px 16px; border-radius: 18px; }
	.daf-help__ch .daf-ch__chips { flex-wrap: nowrap; overflow-x: auto; margin-inline: -16px; padding-inline: 16px; scrollbar-width: none; }
	.daf-help__ch .daf-ch__chips li { flex: none; }
}
/* Rows with a state note ("Phone us to book.", "On extended leave."): the note + Profile drop under the name, so the
   name keeps its width (on phones and in the two-column desktop list it was crushed to a letter per line). */
.daf-help__ch .daf-ch-dr:has(.daf-dr__state) { grid-template-columns: auto minmax(0, 1fr); }
.daf-help__ch .daf-ch-dr:has(.daf-dr__state) .daf-dr__acts { grid-column: 2; justify-content: flex-start; flex-wrap: wrap; gap: 8px; }
.daf-help__ch .daf-ch-dr .daf-dr__state { white-space: nowrap; }
/* Home C without Meet our doctors (2026-10-09): chooser (white) is followed by allied, so allied takes the tint. */
.daf-front--c .daf-home-more:not(.daf-home-more--top) > #allied::before { content: ""; position: absolute; inset: 0 calc(50% - 50vw); z-index: -1; background: var(--daf-tint); }
.daf-front--c .daf-home-more:not(.daf-home-more--top) > #services::before { content: none; }
.daf-front--c .daf-home__pair { position: relative; isolation: isolate; }
.daf-front--c .daf-home-more:not(.daf-home-more--top) > .daf-home__pair::before { content: ""; position: absolute; inset: 0 calc(50% - 50vw); z-index: -1; background: var(--daf-tint); }
.daf-front--c .daf-home-more:not(.daf-home-more--top) > #questions::before { content: none; }
/* Languages panel inside the white How can we help card. */
.daf-help__ch .daf-hs-langs { margin-top: 20px; }
/* All doctors: two newspaper columns (A-Z down the left, then the right), no row-height gaps. */
@media (min-width: 900px) {
	.daf-help__ch .daf-ch__panel[data-panel="all-doctors"] .daf-ch__list { display: block; columns: 2; column-gap: 32px; }
	.daf-help__ch .daf-ch__panel[data-panel="all-doctors"] .daf-ch-dr { break-inside: avoid; }
}
.daf-help__ch .daf-ch-dr[hidden] { display: none; }

/* Home B rows (2026-10-09, Josh): Book is secondary (outlined blue), View profile beside it, interest chips under the
   name. "Book the first available GP" stays the only filled button in the card. */
.daf-btn--sec { background: #fff; color: var(--daf-blue); border: 1.5px solid var(--daf-blue); }
.daf-btn--sec:hover { background: var(--daf-blue); color: #fff; border-color: var(--daf-blue); }
.daf-help__ch .daf-dr__acts { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.daf-help__ch .daf-dr__acts .daf-btn { min-height: 44px; padding: 0 16px; border-radius: 999px; }
.daf-help__ch .daf-ch-dr .daf-tags { margin-top: 6px; }
.daf-help__ch .daf-ch-dr .daf-tags li { font-size: 0.8125rem; padding: 3px 10px; }
/* Two top-to-bottom columns from 1100px; one below (rows with chips + two buttons need ~540px). */
@media (min-width: 900px) and (max-width: 1099px) { .daf-help__ch .daf-ch__panel[data-panel="all-doctors"] .daf-ch__list { columns: 1; } }
@media (max-width: 699px) {
	.daf-help__ch .daf-ch-dr { grid-template-columns: auto minmax(0, 1fr); }
	.daf-help__ch .daf-ch-dr .daf-dr__acts { grid-column: 2; justify-content: flex-start; }
}
/* Allied tab: two columns from 700px. View Profile sits beside the name from 480px (2026-11-01, Josh), under it on a phone. */
@media (min-width: 700px) { .daf-help__ch .daf-ch__list--allied { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 32px; } }
.daf-help__ch .daf-ch__list--allied .daf-ch-dr { grid-template-columns: auto minmax(0, 1fr); }
@media (min-width: 480px) {
	.daf-help__ch .daf-ch__list--allied .daf-ch-dr { grid-template-columns: auto minmax(0, 1fr) auto; }
	.daf-help__ch .daf-ch__list--allied .daf-dr__acts { grid-column: auto; justify-content: flex-end; }
}
.daf-help__ch .daf-ch__panel[data-panel="allied-health"] .daf-ch__foot { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 20px; margin-top: 14px; }
.daf-help__ch .daf-ch__list .daf-ch-dr { max-width: none; }
/* Josh 2026-10-09: one column in the How can we help card (two looked messy). */
.daf-help__ch .daf-ch__panel[data-panel="all-doctors"] .daf-ch__list, .daf-help__ch .daf-ch__list--allied { display: block; columns: auto; }
/* From 700px the "On extended leave." / "Phone us to book." note + View profile sit on the right like everyone's Book. */
@media (min-width: 700px) {
	.daf-help__ch .daf-ch-dr:has(.daf-dr__state) { grid-template-columns: auto minmax(0, 1fr) auto; }
	.daf-help__ch .daf-ch-dr:has(.daf-dr__state) .daf-dr__acts { grid-column: auto; justify-content: flex-end; flex-wrap: nowrap; }
}
/* "Also speaks: Farsi" chip: white with a blue outline so it reads apart from the interest chips. */
.daf-tags li.daf-tags__lang { background: #fff; box-shadow: inset 0 0 0 1px var(--daf-line); color: var(--daf-navy); }
.daf-tags li.daf-tags__lang span { color: var(--daf-slate); font-weight: 600; }

/* ---------- Home B booking options + pop-up (2026-10-09, Josh) ---------- */
.daf-bko-grid { list-style: none; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin: 0 0 24px; padding: 0; scroll-margin-top: 90px; }
.daf-bko { position: relative; display: flex; flex-direction: column; gap: 4px; box-sizing: border-box; width: 100%; height: 100%; min-height: 88px; padding: 16px 40px 16px 18px; border: 1px solid var(--daf-line); border-radius: 18px; background: #fff; color: var(--daf-navy); font: inherit; text-align: left; text-decoration: none; cursor: pointer; transition: border-color .15s, box-shadow .15s; }
.daf-bko:hover { border-color: var(--daf-blue); box-shadow: 0 6px 18px -12px rgba(11,42,61,.35); color: var(--daf-navy); text-decoration: none; }
.daf-bko:focus-visible { outline: 3px solid var(--daf-level); outline-offset: 2px; }
.daf-bko__t { font-weight: 800; font-size: 1.0625rem; line-height: 1.25; }
.daf-bko__s { color: var(--daf-slate); font-size: 0.875rem; line-height: 1.35; }
.daf-bko > .daf-ico { position: absolute; right: 14px; top: 50%; width: 18px; height: 18px; transform: translateY(-50%); color: var(--daf-blue); }
/* The two GP cards lead: filled blue. */
.daf-bko--new, .daf-bko--existing { background: var(--daf-blue); border-color: var(--daf-blue); color: #fff; }
.daf-bko--new:hover, .daf-bko--existing:hover { background: var(--daf-navy); border-color: var(--daf-navy); color: #fff; }
.daf-bko--new .daf-bko__s, .daf-bko--existing .daf-bko__s, .daf-bko--new > .daf-ico, .daf-bko--existing > .daf-ico { color: rgba(255,255,255,.9); }
@media (max-width: 1023px) { .daf-bko-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 479px) { .daf-bko-grid { gap: 8px; } .daf-bko { min-height: 76px; padding: 12px 30px 12px 14px; border-radius: 14px; } .daf-bko__t { font-size: 1rem; } .daf-bko > .daf-ico { right: 10px; } }
.daf-bko-list { list-style: none; display: grid; gap: 10px; margin: 0 0 16px; padding: 0; }

/* Pop-up (layout pass 2026-10-09): sized to its content. Info panels (women's health, phone services, QML) are a
   compact 560px card; the HotDoc view is a large, fixed-height window whose iframe fills it. Phones: full screen. */
.daf-bkm { --bkm-pad: 28px; box-sizing: border-box; width: min(560px, calc(100vw - 32px)); max-width: none; max-height: calc(100dvh - 32px); margin: auto; padding: 0; border: 0; border-radius: 22px; background: #fff; color: var(--daf-navy); box-shadow: 0 30px 80px -20px rgba(11,42,61,.5); overflow: hidden; }
.daf-bkm[data-kind="hotdoc"] { width: min(1040px, calc(100vw - 48px)); height: min(880px, calc(100dvh - 48px)); max-height: none; }
.daf-bkm[open] { display: flex; flex-direction: column; }
.daf-bkm::backdrop { background: rgba(11,42,61,.6); backdrop-filter: blur(2px); }
.daf-bkm__bar { flex: none; display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 14px 14px 14px var(--bkm-pad); border-bottom: 1px solid var(--daf-line); }
.daf-main .daf-bkm__h, .daf-bkm__h { margin: 0; font-size: 1.25rem; line-height: 1.25; }
.daf-bkm__close { flex: none; display: inline-flex; align-items: center; gap: 6px; min-height: var(--daf-tap); padding: 0 16px; border: 1px solid var(--daf-line); border-radius: 999px; background: #fff; color: var(--daf-navy); font: inherit; font-weight: 700; cursor: pointer; }
.daf-bkm__close:hover { background: var(--daf-tint); }
.daf-bkm__close .daf-ico { width: 18px; height: 18px; }
.daf-bkm__close:focus-visible { outline: 3px solid var(--daf-level); outline-offset: 2px; }
.daf-bkm__body { flex: 1 1 auto; min-height: 0; overflow: auto; -webkit-overflow-scrolling: touch; }
.daf-bkm__p { padding: var(--bkm-pad); }
.daf-bkm__p > :last-child { margin-bottom: 0; }
.daf-bkm__p--hotdoc { padding: 0; }
.daf-bkm__frame iframe { display: block; width: 100%; height: 640px; border: 0; }
.daf-bkm__fallback { margin: 0; padding: 12px var(--bkm-pad); border-top: 1px solid var(--daf-line); background: var(--daf-tint); color: var(--daf-slate); font-size: .9375rem; max-width: none; }
.daf-main .daf-bkm__lead, .daf-bkm__lead { margin: 0 0 18px; font-size: 1.0625rem; line-height: 1.5; max-width: none; }
.daf-bkm__note { margin: 18px 0 0; color: var(--daf-slate); font-size: .9375rem; line-height: 1.5; }
.daf-bkm .daf-bko-list { gap: 10px; margin: 0; }
.daf-bkm .daf-bko { min-height: 0; padding: 16px 44px 16px 18px; }
.daf-bkm__ticks { list-style: none; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px 20px; margin: 0 0 24px; padding: 0; }
.daf-bkm__ticks li { position: relative; padding-left: 28px; line-height: 1.4; }
.daf-bkm__ticks li::before { content: ""; position: absolute; left: 0; top: 2px; width: 18px; height: 18px; border-radius: 50%; background: var(--daf-tint) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23066aa0' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 12l4 4 8-8'/%3E%3C/svg%3E") center / 12px no-repeat; }
.daf-bkm__acts { display: flex; flex-wrap: wrap; gap: 10px; }
.daf-bkm__acts .daf-btn { min-height: 52px; padding: 0 24px; border-radius: 999px; }
.daf-bkm__hours { display: flex; align-items: flex-start; gap: 10px; margin: 0 0 24px; padding: 14px 16px; border-radius: 14px; background: var(--daf-tint); font-weight: 600; line-height: 1.4; }
.daf-bkm__hours .daf-ico { flex: none; width: 20px; height: 20px; margin-top: 1px; color: var(--daf-blue); }
.daf-bkm .daf-hx__qml { display: block; width: 96px; margin: 0 0 16px; }
@media (max-width: 699px) {
	.daf-bkm, .daf-bkm[data-kind="hotdoc"] { --bkm-pad: 18px; width: 100vw; height: 100dvh; max-height: none; border-radius: 0; }
	.daf-bkm__bar { padding: 10px 10px 10px var(--bkm-pad); }
	.daf-bkm__ticks { grid-template-columns: minmax(0, 1fr); }
	.daf-bkm__acts .daf-btn { flex: 1 1 100%; box-sizing: border-box; }
}
html.daf-bkm-on { overflow: hidden; }
@media (max-width: 699px) {
	.daf-bkm { width: 100vw; height: 100dvh; border-radius: 0; }
	.daf-bkm__p { padding: 18px 16px; }
}
/* Home B order (2026-10-09): booking (tint), fees + Visit us (white), services (white, sits close under the pair), questions (tint). */
.daf-front--b:not(.daf-front--c) .daf-home-more:not(.daf-home-more--top) > #services::before { content: none; }
.daf-front--b:not(.daf-front--c) .daf-home-more:not(.daf-home-more--top) > .daf-home__pair + #services { padding-top: 0 !important; }
.daf-main .daf-bkm__fallback, .daf-main .daf-bkm p.daf-bkm__lead, .daf-main .daf-bkm p.daf-bkm__note { max-width: none; }
.daf-bkm__ticks { grid-template-columns: minmax(0, 1fr); gap: 10px; }
/* The site-wide 33em line length doesn't apply inside the pop-up (it cut the "Times not showing?" bar at 495px). */
.daf-main .daf-bkm .daf-bkm__body :is(p, li) { max-width: none; }
.daf-main .daf-bkm .daf-bkm__p--hotdoc { padding: 0; }
/* Booking options v2 (2026-10-09, Josh): 4 cards with icons. Desktop one row; tablet 2x2; phones one column. */
.daf-bko-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.daf-bko-grid .daf-bko { flex-direction: row; align-items: center; gap: 14px; min-height: 84px; padding: 16px 40px 16px 16px; }
.daf-bko__txt { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.daf-bko__ico { flex: none; display: grid; place-items: center; width: 46px; height: 46px; border-radius: 50%; background: var(--daf-tint); color: var(--daf-blue); }
.daf-bko__ico svg { width: 24px; height: 24px; }
.daf-bko--new .daf-bko__ico, .daf-bko--existing .daf-bko__ico { background: rgba(255,255,255,.16); color: #fff; }
@media (max-width: 1023px) { .daf-bko-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 599px) {
	.daf-bko-grid { grid-template-columns: minmax(0, 1fr); gap: 10px; }
	.daf-bko-grid .daf-bko { min-height: 72px; padding: 14px 40px 14px 14px; }
	.daf-bko__ico { width: 42px; height: 42px; }
}
@media (min-width: 600px) and (max-width: 1179px) { .daf-bko-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* ---------- Home B review pass (2026-10-09, Josh: "yes" to all five) ---------- */
/* Hero: QML tile gone; bulk billing tile spans the row under the photo as a wide card. */
.daf-hx--bento { grid-template-areas: "main photo photo" "main bb bb"; }
.daf-hx__tile--bb { display: grid; grid-template-columns: auto minmax(0, 1fr); column-gap: 18px; align-items: center; align-content: center; }
.daf-hx__tile--bb .daf-bbp { grid-row: 1 / span 3; width: 92px; margin: 0; }
@media (min-width: 1024px) and (max-width: 1279px) { .daf-hx--bento { grid-template-areas: "main photo" "bb bb"; } }
@media (min-width: 700px) and (max-width: 1023px) { .daf-hx--bento { grid-template-areas: "main main" "photo photo" "bb bb"; } }
/* Phones: the blue panel alone on screen 1 (with a compact bulk billing line); photo below the booking options. */
.daf-hx__bbline, .daf-hx__mphoto { display: none; }
@media (max-width: 699px) {
	.daf-hx--bento { grid-template-areas: "main"; }
	.daf-hx--bento .daf-hx__photo, .daf-hx--bento .daf-hx__tile--bb { display: none; }
	.daf-hx__bbline { display: flex; align-items: center; gap: 12px; margin-top: 14px; padding: 10px 12px; border-radius: 14px; background: #fff; color: var(--daf-navy); font-weight: 700; text-decoration: none; }
	.daf-hx__bbline .daf-bbp { width: 48px; height: auto; }
	.daf-hx__bbline .daf-ico { margin-left: auto; width: 18px; height: 18px; color: var(--daf-blue); }
	.daf-hx__bbline:focus-visible { outline: 3px solid var(--daf-level); outline-offset: 2px; }
	.daf-hx__mphoto { display: block; margin: 0; padding-top: 24px; }
	.daf-hx__mphoto img { display: block; width: 100%; height: 200px; object-fit: cover; border-radius: 18px; }
}
/* Phones: Menu button in the blue panel (the header is hidden at the top of Home B); the header shows while the menu is open. */
.daf-hx__main { position: relative; }
.daf-hx__menu { position: absolute; top: 18px; right: 18px; display: inline-flex; align-items: center; gap: 6px; min-height: var(--daf-tap); padding: 0 14px; border: 1.5px solid rgba(255,255,255,.7); border-radius: 999px; background: transparent; color: #fff; font: inherit; font-weight: 700; cursor: pointer; }
.daf-hx__menu .daf-ico { width: 20px; height: 20px; }
.daf-hx__menu:focus-visible { outline: 3px solid #fff; outline-offset: 2px; }
@media (min-width: 1024px) { .daf-hx__menu { display: none !important; } }
/* Doctor rows: chips 14px; on phones only the "Also speaks" chip (interest chips from 600px). */
.daf-help__ch .daf-ch-dr .daf-tags li { font-size: 0.875rem; }
@media (max-width: 599px) { .daf-help__ch .daf-ch-dr .daf-tags li:not(.daf-tags__lang) { display: none; } }
/* Skip to booking: visible when focused, like WordPress's own skip link. */
.daf-skip-book:focus { position: fixed !important; top: 8px; left: 8px; z-index: 100000; width: auto; height: auto; clip: auto; clip-path: none; padding: 12px 18px; border-radius: 10px; background: #fff; color: var(--daf-navy); font-weight: 700; box-shadow: 0 6px 20px rgba(0,0,0,.25); }
/* Booking options v3 (2026-10-09, Josh): "See a GP" card with New patient | Returning patient; QML logo on a white
   bordered tile. Desktop: one row (GP card wider); 600-1179: GP card full width, the other two side by side. */
.daf-bko-grid { grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr) minmax(0, 1fr); }
.daf-bko--gp { cursor: default; background: var(--daf-blue); border-color: var(--daf-blue); color: #fff; }
.daf-bko--gp:hover { box-shadow: none; background: var(--daf-blue); }
.daf-bko--gp .daf-bko__ico { background: rgba(255,255,255,.16); color: #fff; }
.daf-bko--gp.daf-bko { padding-right: 16px; }
.daf-bko__split { display: flex; flex-wrap: wrap; align-items: center; margin: 2px 0 -6px -10px; }
.daf-bko__opt { display: inline-flex; align-items: center; min-height: var(--daf-tap); padding: 0 10px; border-radius: 10px; color: #fff; font-weight: 700; font-size: 0.9375rem; text-decoration: underline; text-decoration-color: rgba(255,255,255,.55); text-underline-offset: 3px; }
.daf-bko__opt:hover { background: rgba(255,255,255,.14); color: #fff; text-decoration-color: #fff; }
.daf-bko__opt:focus-visible { outline: 3px solid #fff; outline-offset: 1px; }
.daf-bko__pipe { width: 1px; height: 18px; margin: 0 2px; background: rgba(255,255,255,.5); }
.daf-bko__ico--logo { background: #fff !important; border: 1px solid var(--daf-line); border-radius: 12px; width: 58px; height: 46px; }
.daf-bko__ico--logo img { width: 44px; height: auto; }
@media (max-width: 1179px) { .daf-bko-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .daf-bko-grid > li:first-child { grid-column: 1 / -1; } }
@media (max-width: 599px) { .daf-bko-grid { grid-template-columns: minmax(0, 1fr); } }
.daf-main .daf-bko-grid > li, .daf-main .daf-bko-grid > li.daf-bko { max-width: none; }
/* 2026-10-09 (Josh): See a GP card white like the others; its two options are blue text links split by a rule. */
.daf-bko--gp, .daf-bko--gp:hover { background: #fff; border-color: var(--daf-line); color: var(--daf-navy); }
.daf-bko--gp .daf-bko__ico { background: var(--daf-tint); color: var(--daf-blue); }
.daf-bko__opt { color: var(--daf-blue); text-decoration-color: rgba(6,104,160,.45); }
.daf-bko__opt:hover { background: var(--daf-tint); color: var(--daf-blue); text-decoration-color: currentColor; }
.daf-bko__opt:focus-visible { outline: 3px solid var(--daf-level); }
.daf-bko__pipe { background: var(--daf-line); }
/* Search + All doctors / Allied health tabs on one row. */
.daf-help__bar { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 16px; margin-bottom: 14px; }
.daf-help__bar .daf-help__find { flex: 1 1 320px; max-width: 30rem; margin: 0; }
.daf-help__bar .daf-ch__chips { margin: 0; }
@media (max-width: 699px) { .daf-help__bar .daf-help__find { max-width: none; } .daf-help__bar .daf-ch__chips { margin-inline: 0; padding-inline: 0; } }

/* Pathology service page: the QML collection centre card in the right column (Miro review 2026-10-13). */
.daf-svc__qml-logo { display: block; width: 112px; height: auto; margin: 0 0 14px; }
.daf-svc__qml-walk { margin: 6px 0 0; padding: 10px 12px; border-radius: 10px; background: var(--daf-tint); font-weight: 600; }
.daf-svc__qml h3 { margin: 18px 0 6px; font-size: 1rem; }
.daf-svc__qml-hours { margin: 0; }
.daf-svc__qml-hours > div { display: flex; justify-content: space-between; gap: 12px; padding: 8px 0; border-bottom: 1px solid var(--daf-line); }
.daf-svc__qml-hours > div:last-child { border-bottom: 0; }
.daf-svc__qml-hours dt { font-weight: 600; }
.daf-svc__qml-hours dd { margin: 0; text-align: right; }
.daf-svc__qml-bring { margin: 0; padding-left: 1.25rem; }
.daf-svc__qml-bring li { margin-bottom: 4px; }

/* Home photo-hero option (2026-10-13, page home-photo; DAF pointed to Southport Doctors' hero). The reception photo
   fills the band; a navy wash keeps the white text above 4.5:1 everywhere on it. */
.daf-hx--photo { position: relative; isolation: isolate; overflow: hidden; display: grid; place-items: center; min-height: clamp(520px, 72vh, 680px); margin-top: 0 !important; padding: 72px 24px; text-align: center; }
.daf-hx--photo .daf-hx__bg { position: absolute; inset: 0; z-index: -2; width: 100%; height: 100%; object-fit: cover; object-position: 50% 45%; }
/* Hero photo B (2026-10-21): the wall logo + tagline sit in the band's lower left. From 1024px anchor the photo to its
   bottom (and a little left) so the logo isn't cut off; phones and tablets use their own portrait crop (below). */
@media (min-width: 1024px) { .daf-hx--photo .daf-hx__bg { object-position: 30% 100%; } }
/* Below 1024px: the portrait crop (daf-hero-m-*), left + bottom so the logo's pulse and "Doctors" stay in view (Josh). */
@media (max-width: 1023px) { .daf-hx--photo .daf-hx__bg { object-position: 0% 100%; } }
/* 2026-10-14 (Miro): wash lighter than the first .72/.80, kept at or above .64 so the intro stays above 4.5:1 on the white wall. */
.daf-hx--photo::before { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, rgba(8,33,49,.64), rgba(8,33,49,.74)); }
.daf-hx--photo .daf-hx__over { display: flex; flex-direction: column; align-items: center; max-width: 60rem; }
.daf-main .daf-hx--photo .daf-hx__title { font-size: clamp(2.125rem, 1.2rem + 3.4vw, 4rem); font-weight: 500; line-height: 1.08; margin: 0 0 20px; text-wrap: balance; }
.daf-hx--photo .daf-hx__lede { margin: 0 auto 32px; text-wrap: balance; }
.daf-hx--photo .daf-hx__acts { justify-content: center; }
.daf-hx--photo .daf-hx__meta { justify-content: center; border-top: 0; margin-top: 20px; padding-top: 0; }
.daf-hx--photo .daf-hx__bbline { margin-top: 16px; }
@media (max-width: 1023px) {
	.daf-hx--photo { min-height: 0; padding: 48px 16px 36px; }
	.daf-hx--photo .daf-hx__acts { width: 100%; }
	.daf-hx--photo .daf-hx__meta { flex-direction: column; align-items: center; }
}
.daf-hx--photo .daf-hx__bbline { display: inline-flex; align-items: center; gap: 12px; padding: 10px 14px; border-radius: 14px; background: #fff; color: var(--daf-navy); font-weight: 700; text-decoration: none; }
.daf-hx--photo .daf-hx__bbline .daf-bbp { width: 48px; height: auto; }
.daf-hx--photo .daf-hx__bbline .daf-ico { width: 18px; height: 18px; color: var(--daf-blue); }
.daf-main .daf-hx--photo { box-sizing: border-box; width: 100vw; max-width: none; margin-left: calc(50% - 50vw); margin-right: calc(50% - 50vw); }
/* Photo option: the tinted "How can we help?" band starts right under the photo, no white strip (Josh 2026-10-13). */
.daf-main .daf-hx--photo ~ .daf-home-more--top { margin-top: 0 !important; }

/* Header menu (2026-10-14, Josh): current page highlighted; Services dropdown (Doctors, Allied health, Bulk billing). */
.daf-nav .is-daf-current > .wp-block-navigation-item__content { color: var(--daf-blue); box-shadow: inset 0 -3px 0 var(--daf-blue); }
.daf-nav .wp-block-navigation__submenu-container .is-daf-current > .wp-block-navigation-item__content { box-shadow: inset 3px 0 0 var(--daf-blue); background: var(--daf-tint); }
.daf-nav .wp-block-navigation-submenu > .wp-block-navigation__submenu-icon { margin-left: 4px; width: 12px; height: 12px; color: var(--daf-navy); }
/* Touch screens (2026-10-31, iPad QA): the 12px arrow keeps its look, with a finger-sized hit area. */
@media (any-pointer: coarse) {
	.daf-nav .wp-block-navigation-submenu > .wp-block-navigation__submenu-icon { position: relative; }
	.daf-nav .wp-block-navigation-submenu > .wp-block-navigation__submenu-icon::after { content: ""; position: absolute; inset: -16px -8px -16px -6px; }
}
.daf-nav .wp-block-navigation__submenu-container {
	min-width: 220px !important; padding: 8px 0 !important; border: 1px solid var(--daf-line) !important; border-radius: 12px;
	background: #fff !important; box-shadow: 0 16px 32px -16px rgba(11,42,61,.35);
}
.daf-nav .wp-block-navigation__submenu-container .wp-block-navigation-item__content { justify-content: flex-start; width: 100%; padding: 6px 18px !important; box-sizing: border-box; }
.daf-nav .wp-block-navigation__submenu-container .wp-block-navigation-item__content:hover { background: var(--daf-tint); }
/* Phone menu: the dropdown links sit indented under Services, slightly smaller; current = a bar on the left. */
.daf-nav .is-menu-open .is-daf-current > .wp-block-navigation-item__content { box-shadow: inset 4px 0 0 var(--daf-blue); padding-left: 14px !important; }
.daf-nav .is-menu-open .wp-block-navigation__submenu-container { border: 0 !important; box-shadow: none; padding: 0 0 8px 16px !important; min-width: 0 !important; }
.daf-nav .is-menu-open .wp-block-navigation__submenu-container .wp-block-navigation-item { border-bottom: 0; }
.daf-nav .is-menu-open .wp-block-navigation__submenu-container .wp-block-navigation-item__content { min-height: 48px; font-size: 1.0625rem; font-weight: 600; padding: 0 0 0 14px !important; }
.daf-nav .is-menu-open .wp-block-navigation-submenu > .wp-block-navigation__submenu-icon { display: none; }
.daf-nav .is-menu-open .wp-block-navigation-submenu { flex-direction: column; align-items: stretch !important; }
.daf-nav .is-menu-open .wp-block-navigation__submenu-container { width: 100%; box-sizing: border-box; align-items: stretch !important; }
.daf-nav .is-menu-open .wp-block-navigation__submenu-container .wp-block-navigation-item { width: 100%; }
.daf-nav .is-menu-open .wp-block-navigation__submenu-container .wp-block-navigation-item__content { justify-content: flex-start; }
.daf-nav .wp-block-navigation-submenu > .wp-block-navigation-item__content { min-width: 0; }

/* Service icons (Miro review 2026-10-13: "diagrammatic" services). Cards: icon tile top left; home lists: small icon. */
.daf-svccard__ico { display: inline-grid; place-items: center; width: 52px; height: 52px; margin-bottom: 8px; border-radius: 14px; background: var(--daf-tint); color: var(--daf-blue); }
.daf-svccard:hover .daf-svccard__ico { background: #fff; }
.daf-svcico { width: 30px; height: 30px; }
.daf-hs-svc a { justify-content: flex-start; }
.daf-hs-svc a > span:first-of-type { flex: 1; }
.daf-svcico--sm { flex: none; width: 22px; height: 22px; color: var(--daf-blue); opacity: .9; }

/* Footer: postal line + accreditation and partner logos on white tiles (Miro review 2026-10-14). */
.daf-footer__accr { margin-top: 32px; padding-top: 24px; border-top: 1px solid rgba(255,255,255,.18); }
.daf-footer__accr ul { list-style: none; display: flex; flex-wrap: wrap; align-items: center; gap: 12px; margin: 10px 0 0; padding: 0; }
.daf-footer__accr a, .daf-footer__accr-tile { display: grid; place-items: center; min-width: 140px; height: 64px; padding: 0 18px; box-sizing: border-box; border-radius: 12px; background: #fff; }
.daf-footer__accr .is-empty .daf-footer__accr-tile { background: transparent; border: 1.5px dashed rgba(255,255,255,.4); }
.daf-footer__accr-ph { font-size: .8125rem; font-weight: 700; line-height: 1.2; text-align: center; color: rgba(255,255,255,.85); }
.daf-footer__accr-ph small { font-weight: 400; opacity: .8; }
.daf-footer__accr img { display: block; width: auto; height: 46px; max-width: 160px; object-fit: contain; }

.daf-footer__accr a:focus-visible { outline: 3px solid var(--daf-level); outline-offset: 2px; }
/* Tamika (Miro 2026-10-20): the heading and logo row centred across the page; the Medicare logo larger in its tile
   (the bbp height is set in the 'evened out' block below: 44px → 60px). */
.daf-footer__accr { text-align: center; }
.daf-footer__accr ul { justify-content: center; }
.daf-find__po { display: inline-block; margin-top: 6px; opacity: .9; }

/* Header row wider than the 1200px content (Miro review 2026-10-14, Josh: logo further left on wide screens). */
.daf-header > .daf-header__row.alignwide { max-width: 1440px !important; }

/* Editable pages (2026-10-15): core Table and Button blocks look like the old hand-written HTML.
   Tables: the figure wrapper takes the table's margins (its overflow stops them collapsing). Buttons: same box as .daf-btn. */
.daf-main .wp-block-table { margin: 1rem 0 1.5rem; }
.daf-main .wp-block-table > .daf-table { margin: 0; }
.daf-main .wp-block-buttons.daf-actions .wp-block-button__link { display: flex; text-align: start; min-height: 54px; padding: 0 1.4rem; border-radius: 12px; font-weight: 700; font-size: 1rem; line-height: inherit; white-space: nowrap; } /* display/text-align: the old .daf-btn was a flex item of .daf-actions (blockified to flex); the core link sits one wrapper deeper (2026-10-15 allied-health dry run) */
/* Long button text wraps on narrow phones instead of running off the screen (2026-10-31, QA at 320px). */
@media (max-width: 400px) {
	.daf-main .wp-block-buttons.daf-actions .wp-block-button__link { white-space: normal; text-align: center; padding-block: 8px; }
}
/* Core table theme styles add a full cell grid and a 3px header rule; keep the original bottom-rule look. */
.wp-block-table .daf-table thead { border-bottom: 0; }
@media (min-width: 700px) { .wp-block-table .daf-table th, .wp-block-table .daf-table td { border: 0; border-bottom: 1px solid var(--daf-line); } }
/* Editable /about/ (2026-10-15): "Practice information" is a Group (.daf-faq .daf-practice-info) of core Details
   blocks; inc/blocks.php gives each the old .daf-faq__item markup. Core's flow layout adds a block gap above every
   row and above the answer: take both out so the rows sit edge to edge on their dividers, as before. */
.daf-faq > .wp-block-details.daf-faq__item { margin-block: 0; }
.wp-block-details.daf-faq__item > .daf-faq__a { margin-block-start: 0; }

/* ---------- Blue header (2026-10-15, Josh's mockup; every page) ----------
   Mockup blue #2292C9 gives white text 3.5:1, so the bar uses #1D7CAA: same hue, 4.65:1 with white (AA for the
   15-16px menu text). White reversed logo, white menu and phone, white Book button with blue text, and the Medicare
   bulk billing tile at the far right (desktop; phones keep logo + Menu, the sticky bar does Book/Call). */
:root { --daf-hblue: #1D7CAA; }
.daf-header { background: var(--daf-hblue); border-bottom: 0; }
.daf-header :focus-visible { outline-color: #fff; }
.daf-header__where { display: none !important; }
.daf-header .daf-nav .wp-block-navigation__responsive-container-open { background: #fff; color: var(--daf-hblue); }
@media (min-width: 1024px) {
	.daf-header .daf-nav > .wp-block-navigation__responsive-container:not(.is-menu-open) .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation-item__content,
	.daf-header .daf-nav .wp-block-navigation-submenu > .wp-block-navigation__submenu-icon { color: #fff; }
	.daf-header .daf-nav .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation-item__content:hover { color: #fff; text-decoration: underline; text-underline-offset: 4px; }
	.daf-header .daf-nav .wp-block-navigation__container > .is-daf-current > .wp-block-navigation-item__content { color: #fff; box-shadow: inset 0 -3px 0 #fff; }
	.daf-header .daf-nav .wp-block-navigation__submenu-container .wp-block-navigation-item__content { color: var(--daf-navy) !important; }
	.daf-header__phone, .daf-header__phone:hover { color: #fff; font-weight: 600; }
	.daf-header .daf-header__book { background: #fff; color: var(--daf-blue); border-color: #fff; }
	.daf-header .daf-header__book:hover { background: var(--daf-tint); border-color: var(--daf-tint); color: var(--daf-navy); }
	.daf-header__bb { display: inline-flex; align-items: center; gap: 8px; height: 56px; padding: 0 12px 0 14px; border-radius: 14px; background: #fff; color: var(--daf-blue); text-decoration: none; }
	.daf-header__bb .daf-bbp { width: 72px; height: auto; } /* Tamika (Miro 2026-10-20): larger; was 52px */
	.daf-header__bb .daf-ico { width: 16px; height: 16px; }
	.daf-header__bb:hover { background: var(--daf-tint); }
}
@media (max-width: 1023px) { .daf-header__bb { display: none; } }

/* ---------- Photo hero = the home page (2026-10-15, Josh's mockup) ----------
   Lighter, neutral wash so the reception shows; the text sits on a soft darker centre so white stays readable.
   Desktop: H1 + intro only (Book, phone and bulk billing are in the blue header). Phones keep Book/Call, address and
   the bulk billing line in the hero, because the phone header is only logo + Menu. */
.daf-hx--photo::before { background: radial-gradient(ellipse 60% 70% at 50% 50%, rgba(12,22,30,.62), rgba(12,22,30,.40) 70%), rgba(12,22,30,.12); }
.daf-hx--photo { min-height: clamp(440px, 62vh, 560px); }
.daf-main .daf-hx--photo .daf-hx__title { text-shadow: 0 2px 18px rgba(0,0,0,.25); }
.daf-hx--photo .daf-hx__lede { font-size: 1.0625rem; color: rgba(255,255,255,.95); text-shadow: 0 1px 10px rgba(0,0,0,.35); }
@media (min-width: 1024px) {
	.daf-hx--photo .daf-hx__acts, .daf-hx--photo .daf-hx__meta, .daf-hx--photo .daf-hx__bbline { display: none !important; }
	.daf-hx--photo .daf-hx__lede { margin-bottom: 0; }
}
/* Josh 2026-10-28: on phones and tablets the Call button matches Book (white fill, navy text), not the outline. */
.daf-hx--photo .daf-hx__acts .daf-btn--alt { background: #fff; color: var(--daf-navy); border-color: #fff; border-width: 2px; text-shadow: none; }
.daf-hx--photo .daf-hx__acts .daf-btn--alt:hover { background: var(--daf-tint); color: var(--daf-navy); border-color: var(--daf-tint); }
@media (max-width: 699px) { .daf-hx--photo .daf-hx__acts .daf-btn--alt { font-size: 1.0625rem; } }
/* Contrast tuning (measured 2026-10-15): darker centre so the intro clears 4.5:1; phones get an even wash (text spans the width). */
/* Hero wash (Josh 2026-10-22, after an ellipse and a hard outline were rejected): one even wash over the whole photo, plus a
   soft, wide text glow (no outline). Contrast measured under the glyphs with the glow kept (work/daf-miro-comments_2026-10-22/glyphcheck.py),
   12 widths 390–2560 pass. The intro line (4.5:1) is what sets the wash; lighter needs a larger/bolder intro. */
.daf-hx--photo::before { background: rgba(12,22,30,.47); }
@media (max-width: 1023px) { .daf-hx--photo::before { background: rgba(12,22,30,.54); } }
.daf-main .daf-hx--photo .daf-hx__title, .daf-main .daf-hx--photo .daf-hx__lede, .daf-hx--photo .daf-hx__meta li, .daf-hx--photo .daf-hx__meta a {
	text-shadow: 0 0 18px rgba(8,16,22,.45), 0 0 40px rgba(8,16,22,.32);
}
.daf-main .daf-hx--photo .daf-hx__lede, .daf-hx--photo .daf-hx__meta li, .daf-hx--photo .daf-hx__meta a { text-shadow: 0 0 14px rgba(8,16,22,.75), 0 0 30px rgba(8,16,22,.56); } /* small text (4.5:1) is what limits the wash */
.daf-hx--photo .daf-hx__bg { filter: brightness(1.25); } /* brighter photo; 1024–1279 is the contrast-tight band (title over the wall logo), so it stays as shot there */
@media (min-width: 1024px) and (max-width: 1279px) { .daf-hx--photo .daf-hx__bg { filter: none; } }
.wp-site-blocks > header.wp-block-template-part { margin-block-start: 0 !important; } /* no white gap under the bulk billing strip above the blue header */

/* Accreditation logos (2026-10-15): the QPA web banner has its own dark background, so its tile has no padding. */
.daf-footer__accr .is-banner a { padding: 0; overflow: hidden; background: #2d3240; }
.daf-footer__accr .is-banner img { height: 64px; max-width: none; }
.daf-footer__accr img { height: 40px; }

/* Service pages without a side card (2026-10-15: GP card removed): one column at reading width. */
@media (min-width: 1024px) {
	.daf-svc__grid--solo { grid-template-columns: minmax(0, 1fr); grid-template-areas: "head" "fees" "body"; max-width: 760px; }
}
@media (min-width: 1024px) { .daf-svc > .daf-svc__grid--solo { max-width: 800px; } }

/* Accreditation logos, evened out (2026-10-15, Josh: Healius looked huge). Every tile is the same 176 x 64 box and
   each logo gets a height tuned to its shape, so the marks read at a similar visual weight. */
.daf-footer__accr a, .daf-footer__accr-tile { width: 176px; min-width: 0; height: 64px; padding: 0 14px; }
.daf-footer__accr img { width: auto; max-width: 100%; height: 36px; }
.daf-footer__accr .accr-racgp img { height: 38px; }
.daf-footer__accr .accr-healius img { height: 22px; }
.daf-footer__accr .accr-bbp img { height: 60px; } /* Tamika (Miro 2026-10-20): larger; was 44px */
.daf-footer__accr .is-banner a { width: 176px; padding: 0; }
.daf-footer__accr .is-banner img { height: 64px; width: 100%; object-fit: cover; }
@media (max-width: 399px) { .daf-footer__accr a, .daf-footer__accr-tile, .daf-footer__accr .is-banner a { width: calc(50vw - 22px); } }
.daf-footer__accr .is-banner img { width: 100%; height: auto; max-height: 64px; object-fit: contain; } .daf-footer__accr .is-banner a { background: #343a48; }

/* Service photos (2026-10-15, Miro items 7 + 27). /services/ cards: the photo runs edge to edge across the top (3:2,
   the files' own shape); below 700px it becomes a 96 x 72 thumbnail on the left so the hub doesn't double in length (booking tag under the summary there,
   so the name gets the full width).
   Service pages: the photo sits under the intro + buttons, 16:9, at the column's width. */
.daf-svccard--photo { overflow: hidden; }
.daf-svccard__media { display: block; aspect-ratio: 3 / 2; margin: -16px -18px 10px; background: var(--daf-tint); }
.daf-svccard__img { display: block; width: 100%; height: 100%; object-fit: cover; }
@media (max-width: 699px) {
	.daf-svccard--photo { grid-template-columns: 88px minmax(0, 1fr); column-gap: 12px; padding: 10px 12px 10px 10px; }
	.daf-svccard--photo .daf-svccard__media { grid-column: 1; grid-row: 1 / span 3; align-self: start; width: 88px; height: 66px; aspect-ratio: auto; margin: 0; border-radius: 10px; overflow: hidden; }
	.daf-svccard--photo .daf-svccard__title { grid-column: 2; grid-row: 1; }
	.daf-svccard--photo .daf-svccard__sum { grid-column: 2; grid-row: 2; }
	.daf-svccard--photo .daf-svccard__tag { grid-column: 2; grid-row: 3; justify-self: start; margin-top: 4px; }
}
.daf-svc__media { margin: 0; aspect-ratio: 16 / 9; border-radius: 14px; overflow: hidden; background: var(--daf-tint); }
.daf-svc__img { display: block; width: 100%; height: 100%; object-fit: cover; }
@media (min-width: 1024px) {
	.daf-svc__grid { grid-template-areas: "head gps" "media gps" "fees gps" "body gps"; grid-template-rows: auto auto auto 1fr; }
	.daf-svc__grid--solo { grid-template-areas: "head" "media" "fees" "body"; grid-template-rows: none; }
	.daf-svc__media { grid-area: media; }
}

/* /services/ search panel, redesigned 2026-10-15 (Josh: "improve the UI of the search box container"). White card with
   a soft shadow instead of the tinted box, a full-width 56px search field with a magnifier, and a small "Or browse by
   topic" label over the chips (it also names the chip group for screen readers). Phones keep the scrolling chip row. */
.daf-svcfind { gap: 0; padding: 24px; border: 1px solid var(--daf-line); border-radius: 20px; background: #fff; box-shadow: 0 1px 2px rgba(16, 42, 67, .04), 0 10px 28px rgba(16, 42, 67, .07); }
.daf-svcfind__label { margin-bottom: 10px; font-size: 1.125rem; font-weight: 800; color: var(--daf-navy); }
.daf-svcfind__q {
	max-width: none; min-height: 56px; padding: 0 16px 0 50px; border: 1.5px solid #c9d6e2; border-radius: 14px; font-size: 1.0625rem;
	background: #f7fafc url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' viewBox='0 0 24 24' fill='none' stroke='%23476077' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='M20 20l-3.5-3.5'/%3E%3C/svg%3E") no-repeat 16px 50%;
	transition: border-color .15s, background-color .15s;
}
.daf-svcfind__q::placeholder { color: #5b6f82; opacity: 1; }
.daf-svcfind__q:hover { border-color: var(--daf-blue); }
.daf-svcfind__q:focus, .daf-svcfind__q:not(:placeholder-shown) { background-color: #fff; border-color: var(--daf-blue); }
.daf-main p.daf-svcfind__topics { max-width: none; margin: 20px 0 10px; padding-top: 18px; border-top: 1px solid var(--daf-line); font-size: 0.8125rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--daf-slate); }
.daf-svcfind__chips { gap: 8px; }
.daf-svcfind__chips .daf-chip { padding-inline: 13px; font-size: 0.9375rem; }
@media (max-width: 639px) {
	.daf-svcfind { padding: 16px; border-radius: 16px; }
	.daf-main p.daf-svcfind__topics { margin-top: 16px; padding-top: 14px; }
	.daf-svcfind__chips { margin: 0 -16px; padding: 0 16px 4px; }
}

/* Service page photo, desktop (2026-10-15, Josh: "improve layout of featured image"): the photo sits beside the heading,
   intro and booking buttons instead of as a full-width block under them, so the fees box and the page content come up a
   screen. Fees and the rest run underneath at the 800px reading width, on the same left edge. Phones keep the stack
   (photo under the buttons). Pathology keeps its QML side card layout. */
@media (min-width: 1024px) {
	.daf-svc > .daf-svc__grid--solo.has-media { max-width: none; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); grid-template-areas: "head media" "fees fees" "body body"; column-gap: 56px; align-items: center; }
	.daf-svc__grid--solo.has-media > .daf-svc__fees, .daf-svc__grid--solo.has-media > .daf-svc__body { max-width: 800px; align-self: start; }
	.daf-svc__grid--solo.has-media > .daf-svc__media { aspect-ratio: 4 / 3; border-radius: 20px; box-shadow: 0 18px 40px -24px rgba(11,42,61,.45); }
	.daf-svc__grid--solo.has-media > .daf-svc__fees { margin-top: 16px; }
}
@media (max-width: 1023px) { .daf-svc__media { aspect-ratio: 16 / 9; border-radius: 16px; } }
@media (min-width: 1024px) { .daf-svc__grid:not(.daf-svc__grid--solo) > .daf-svc__media { aspect-ratio: 2 / 1; border-radius: 20px; } } /* pathology: a shorter photo under the intro, the QML card stays beside it */
@media (max-width: 1023px) { .daf-svc__grid > .daf-svc__media { order: -1; margin-bottom: 4px; } } /* phones/tablets: the photo leads, above the H1 (Josh 2026-10-15) */

/* Header fit 1024–1199px (2026-10-20): the "Our Team" tab (Tamika, Miro) + the larger Medicare tile overflowed the row
   at 1024 and squeezed the logo to nothing. In this band only: tighter gaps, "Book" without "Online", the Medicare
   logo back to its old 52px, and the logo may not shrink. From 1200px the full header shows. */
@media (min-width: 1024px) and (max-width: 1199px) {
	.daf-header__brand { flex-shrink: 0; }
	.daf-header__row { gap: 12px; }
	.daf-nav .wp-block-navigation__container { gap: 4px 13px; }
	.daf-header__cta { gap: 10px; }
	.daf-header__book-more { display: none; }
	.daf-header .daf-header__book { padding-inline: 1rem; }
	.daf-header__bb { padding: 0 8px 0 10px; gap: 4px; }
	.daf-header__bb .daf-bbp { width: 52px; }
}

/* ---------- International Medical Centre (Tamika, Miro 2026-10-26) ---------- */
/* Home booking options: a fourth card after Allied Health. Desktop = one row of four; 600-1179px = two by two
   (See a GP no longer spans the row, which would leave the last card alone); phones = one column. */
.daf-bko-grid { grid-template-columns: minmax(0, 1.4fr) repeat(3, minmax(0, 1fr)); }
@media (max-width: 1179px) { .daf-bko-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .daf-bko-grid > li:first-child { grid-column: auto; } }
@media (max-width: 599px) { .daf-bko-grid { grid-template-columns: minmax(0, 1fr); } }
.daf-bko--imc .daf-bko__ico--logo img { width: auto; height: 38px; }
/* /services/ card: the logo where other cards have a photo, contained on white. */
.daf-svccard--logo .daf-svccard__media { display: grid; place-items: center; background: #fff; border-bottom: 1px solid var(--daf-line); }
.daf-svccard--logo .daf-svccard__img { width: auto; height: 62%; object-fit: contain; }
.daf-svccard__tag--out { background: #f4f6f8; }
@media (max-width: 699px) { .daf-svccard--logo .daf-svccard__media { border: 1px solid var(--daf-line); } .daf-svccard--logo .daf-svccard__img { width: auto; height: 52px; } }
/* Footer partner tile: square logo, so taller than the wide ones. */
.daf-footer__accr .accr-imc img { height: 54px; }
/* IMC pop-up (Josh 2026-10-27): its logo, then hours and phone/SMS like the QML panel. */
.daf-bkm .daf-bkm__logo { display: block; width: auto; height: 72px; margin: 0 0 16px; }
.daf-bkm__contact { list-style: none; margin: -8px 0 16px; padding: 0; display: grid; gap: 0; font-weight: 600; }
.daf-bkm__contact li { display: flex; flex-wrap: wrap; align-items: center; column-gap: 6px; }
.daf-bkm__contact a { display: inline-flex; align-items: center; min-height: var(--daf-tap); color: var(--daf-blue); } /* 44px tap targets */

/* ---------- Header announcement (Josh 2026-10-27; wp-admin > Announcement, inc/admin.php) ---------- */
.daf-announce { background: var(--daf-navy); color: #fff; }
.daf-announce p { max-width: 1200px; margin: 0 auto; padding: 10px 16px; font-size: 0.9375rem; font-weight: 600; line-height: 1.4; text-align: center; }
.daf-announce a { display: inline-flex; align-items: center; min-height: var(--daf-tap); margin: -12px 0; color: #fff; text-decoration: underline; text-underline-offset: 3px; }
.daf-announce a:hover { color: #fff; text-decoration-thickness: 2px; }
.daf-announce a:focus-visible { outline: 3px solid var(--daf-level); outline-offset: 2px; }
