/**
 * Structural CSS for Paws on Wheels. Every colour, font, spacing, radius
 * and shadow value below is a `var(--wp--...)` token generated from
 * theme.json — nothing here hard-codes a brand value. This file only adds
 * what theme.json cannot express: flex/grid layout, positioning, and a
 * few interactive states.
 */

/* ---------- Base / utility ---------- */

/* Safety net: nothing on this site should ever cause page-level horizontal
   scroll. Components that legitimately need to scroll sideways (the
   comparison table) keep their own internal overflow-x: auto — this just
   guarantees a flex/grid nesting quirk elsewhere can never bleed out to
   the whole page. Only on `body`, not `html` too — both having
   overflow-x: hidden at once silently breaks `position: sticky` for every
   sticky element on the site (header, sticky bottom bar, FAQ quick-nav) —
   found while building the FAQ page's sticky nav, confirmed the header
   was never actually sticking past ~1 viewport of scroll on any page. */
body { overflow-x: hidden; }

/* WordPress's root block gap (theme.json styles.spacing.blockGap) adds
   margin-block-start to every child of .wp-site-blocks — the header,
   each top-level section, the footer — on top of each section's own
   padding, which showed up as white strips between sections and above
   the footer. Sections already size their own spacing via padding, so
   kill the root gap here instead of removing blockGap globally (which
   would also strip gap from flex/grid blocks that rely on it). */
.wp-site-blocks > * + * { margin-block-start: 0; }
/* Same root-gap bug, one level deeper: inner pages render their blocks
   through <!-- wp:post-content /--> in page.html, which wraps them in
   .wp-block-post-content.is-layout-flow — WordPress adds the same
   margin-block-start: 24px to each of ITS children too, on top of each
   section's own padding. Entry (11) only fixed the top-level gap (Home,
   which uses its own template with sections placed directly), so every
   inner page built from page.html (Services, Why, About, Reviews,
   Contact, FAQ, legal pages) and every blog post still had white strips
   between sections. */
/* Only zero the gap for direct full-width SECTION wrappers (About, Why,
   Reviews etc. are built from raw <section>/wp:group blocks that already
   carry their own padding) — flowing prose (blog articles, legal pages)
   is built from bare <p>/<h2>/<ul> post-content children and needs real
   spacing between them instead, given just below (CHANGELOG entry 14,
   §1.7 — this reset used to apply to every child indiscriminately, which
   flattened article and legal-page spacing to zero). */
.wp-block-post-content.is-layout-flow :is(section, .wp-block-group) { margin-block: 0; }

/* Legal pages nest their whole body one level deeper, inside a single
   wp:group wrapper (so that wrapper itself can be a zero-margin "section"
   per the rule above) — :where() here is depth-agnostic (any nesting) and
   zero-specificity, so it never fights a more specific component rule
   that wants its own spacing. */
.wp-block-post-content.is-layout-flow :where(p, h2, h3, h4, h5, h6, ul, ol, figure, blockquote, table, .pow-article-tip):not(:first-child):not(:is(.pow-story, .pow-mission, .pow-cofounders, .pow-about-card--next) *) { margin-top: 1em; }
.wp-block-post-content.is-layout-flow :where(h2):not(:first-child):not(:is(.pow-story, .pow-mission, .pow-cofounders, .pow-about-card--next) *) { margin-top: 2.5rem; }
.wp-block-post-content.is-layout-flow h2:not(:is(.pow-story, .pow-mission, .pow-cofounders, .pow-about-card--next) *) { margin-bottom: .75rem; }
.wp-block-post-content.is-layout-flow :where(h3):not(:first-child):not(:is(.pow-story, .pow-mission, .pow-cofounders, .pow-about-card--next) *) { margin-top: 2rem; }
.wp-block-post-content.is-layout-flow :where(ul, ol):not(:is(.pow-story, .pow-mission, .pow-cofounders, .pow-about-card--next) *) { padding-left: 1.25em; }
.wp-block-post-content.is-layout-flow :where(ul, ol) > li:not(:first-child):not(:is(.pow-story, .pow-mission, .pow-cofounders, .pow-about-card--next) *) { margin-top: .4em; }
.wp-block-post-content.is-layout-flow :where(figure, .pow-article-tip):not(:is(.pow-story, .pow-mission, .pow-cofounders, .pow-about-card--next) *) { margin: 2rem 0; }

/* Stack/cluster children keep their own heading/paragraph margins by
   default, which stack on top of the flex `gap` (e.g. an H2's default
   top margin, in addition to the 24px gap already separating it from
   the previous sibling). Let `gap` be the only source of spacing inside
   these layout primitives. */
.pow-stack > *, .pow-cluster > * { margin-block: 0; }

.pow-container {
	max-width: var(--wp--style--global--wide-size, 1200px);
	margin-inline: auto;
	padding-inline: var(--wp--custom--gutter--phone);
	box-sizing: border-box;
}
@media (min-width: 600px) {
	.pow-container { padding-inline: var(--wp--custom--gutter--tablet); }
}

.pow-icon { flex-shrink: 0; }

.pow-visually-hidden {
	position: absolute !important;
	width: 1px !important; height: 1px !important;
	margin: -1px !important; padding: 0 !important;
	overflow: hidden !important;
	clip: rect(0 0 0 0);
	white-space: nowrap;
	border: 0;
}

.pow-sample-badge {
	display: inline-flex;
	background: var(--wp--preset--color--yellow-100);
	color: var(--wp--preset--color--warning);
	font-size: 12px;
	font-weight: 700;
	letter-spacing: .04em;
	padding: 2px 8px;
	border-radius: var(--wp--custom--radius--pill);
	line-height: 1.5;
	margin-left: 8px;
	vertical-align: middle;
}

.pow-eyebrow {
	font-size: var(--wp--preset--font-size--eyebrow);
	font-weight: 700;
	letter-spacing: .06em;
	text-transform: uppercase;
	color: var(--wp--preset--color--amber-700);
	margin: 0;
}

.pow-section {
	padding-block: var(--wp--preset--spacing--56);
}
@media (min-width: 900px) {
	.pow-section { padding-block: var(--wp--preset--spacing--88); }
}
.pow-section--cream { background: var(--wp--preset--color--cream); }
.pow-section--tint { background: var(--wp--preset--color--teal-50); }
.pow-section--teal { background: var(--wp--preset--color--teal-600); }

.pow-stack { display: flex; flex-direction: column; }
.pow-cluster { display: flex; flex-wrap: wrap; align-items: center; }
/* WordPress auto-adds is-layout-constrained to any raw div sitting between
   inner-block comments inside a constrained wp:group (seen on the FAQ
   topic groups, the Dog/Cat grooming hero copy, the FAQ-heading blocks,
   and the Packages species tabs) — it clamps and CENTRES each child
   narrower than the column individually, so short elements like a
   breadcrumb, an eyebrow or a heading visibly drift off the left edge.
   Neutralise it everywhere it can land, once, instead of patching each
   section as it's noticed. */
.pow-stack.is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)),
.pow-cluster.is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)) {
	max-width: none;
	margin-left: 0 !important;
	margin-right: 0 !important;
}

/* ---------- Buttons & links ---------- */

.pow-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	min-height: var(--wp--custom--tap--primary);
	padding: 0 24px;
	border-radius: var(--wp--custom--radius--pill);
	font-weight: 700;
	font-size: var(--wp--preset--font-size--body);
	line-height: 1;
	text-decoration: none !important;
	border: 2px solid transparent;
	cursor: pointer;
	box-sizing: border-box;
	white-space: nowrap;
	transition: background-color var(--wp--custom--motion--fast) ease-out;
}
.pow-btn--primary { background: var(--wp--preset--color--yellow-500); color: var(--wp--preset--color--ink) !important; }
.pow-btn--primary:hover { background: var(--wp--preset--color--yellow-600); }
.pow-btn--teal { background: var(--wp--preset--color--teal-600); color: #fff !important; }
.pow-btn--teal:hover { background: var(--wp--preset--color--teal-700); }
.pow-btn--ghost { background: transparent; color: var(--wp--preset--color--teal-600) !important; border-color: var(--wp--preset--color--teal-600); }
.pow-btn--ghost:hover { background: var(--wp--preset--color--teal-50); }
.pow-btn--white { background: #fff; color: var(--wp--preset--color--teal-600) !important; }
.pow-btn--full { width: 100%; }
.pow-btn--lg { min-height: var(--wp--custom--tap--stickybar); }

.pow-link { color: var(--wp--preset--color--teal-600); text-decoration: none; font-weight: 600; }
.pow-link:hover { color: var(--wp--preset--color--teal-700); text-decoration: underline; }
/* Any text link that carries an inline icon (WhatsApp us, Message us,
   Share…): align the icon to the text instead of sitting on the text's
   default inline baseline, which reads as "too high". */
a:has(> svg):not(.pow-btn) { display: inline-flex; align-items: center; gap: 6px; }
a:has(> svg):not(.pow-btn) > svg { flex: none; }

:focus-visible { outline: 3px solid var(--wp--preset--color--teal-600); outline-offset: 2px; }

/* ---------- Form fields (shared by both interactive blocks) ---------- */

.pow-field {
	min-height: var(--wp--custom--tap--primary);
	padding: 0 14px;
	border: 1.5px solid #8A979F;
	border-radius: var(--wp--custom--radius--input);
	color: var(--wp--preset--color--ink);
	font: inherit;
	width: 100%;
	box-sizing: border-box;
	background: #fff;
}
.pow-field--error { border-color: var(--wp--preset--color--error); }
.pow-field-error { color: var(--wp--preset--color--error); font-size: 14px; font-weight: 600; margin: 0; }
textarea.pow-field { min-height: 90px; resize: vertical; padding-block: 10px; }

.pow-pill {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 44px;
	padding: 0 16px;
	border: 1.5px solid var(--wp--preset--color--line);
	border-radius: var(--wp--custom--radius--pill);
	background: #fff;
	font: inherit;
	font-weight: 600;
	color: var(--wp--preset--color--teal-600);
	cursor: pointer;
	text-decoration: none !important;
	line-height: 1;
	white-space: nowrap;
}
.pow-pill.is-selected, .pow-pill[aria-pressed="true"] {
	border: 2px solid var(--wp--preset--color--teal-600);
	background: var(--wp--preset--color--teal-600);
	color: #fff;
}

.pow-result-status { display: flex; gap: 8px; align-items: center; font-weight: 700; margin: 0; }
.pow-result-status--success { color: var(--wp--preset--color--success); }
.pow-result-status--warning { color: var(--wp--preset--color--warning); }
.pow-link-button {
	background: none; border: none; padding: 0; font: inherit;
	font-weight: 700; color: var(--wp--preset--color--teal-600);
	text-decoration: underline; cursor: pointer; min-height: 44px;
}

/* Segmented control (Dog/Cat): a pill-shaped track with one filled,
   sliding-feel active segment — used by the area checker's "Who's
   getting groomed?" step and anywhere else a two-way pet switch is
   shown inline rather than as two separate radio pills. */
.pow-seg { display: inline-flex; padding: 3px; border: 1.5px solid var(--wp--preset--color--teal-600); border-radius: var(--wp--custom--radius--pill); }
.pow-seg__btn {
	display: inline-flex; align-items: center; justify-content: center;
	min-height: 34px; padding: 0 14px; border: none; border-radius: var(--wp--custom--radius--pill);
	background: transparent; color: var(--wp--preset--color--teal-600);
	font-weight: 700; font-size: var(--wp--preset--font-size--body); font-family: inherit;
	cursor: pointer;
}
.pow-seg__btn.is-on { background: var(--wp--preset--color--teal-600); color: #fff; }

.pow-result-icon {
	width: 64px; height: 64px; border-radius: var(--wp--custom--radius--pill);
	background: var(--wp--preset--color--teal-50);
	display: flex; align-items: center; justify-content: center;
	color: var(--wp--preset--color--teal-600);
}

/* ---------- Header ---------- */

.pow-header {
	position: sticky;
	top: 0;
	z-index: 50;
	background: #fff;
	border-bottom: 1px solid var(--wp--preset--color--line);
	transition: transform var(--wp--custom--motion--base) ease-out;
}
.pow-header.is-hidden { transform: translateY(-100%); }

.pow-header__bar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	padding-block: 12px;
}
.pow-header__logo-img { height: 44px; width: auto; display: block; transition: height var(--wp--custom--motion--base); }
.pow-header.is-scrolled .pow-header__logo-img { height: 42px; }

.pow-header__nav { display: none; align-items: center; gap: 28px; }
.pow-header__actions { display: flex; align-items: center; gap: 12px; }
/* Mobile header shows only Logo + Menu, per Home-mobile.html — "Book now"
   moves into the menu sheet and the sticky bottom bar. Without this, the
   button and the menu toggle don't both fit next to the logo and overflow
   past the viewport edge. */
.pow-header__actions > a { display: none; }
.pow-header__menu-btn {
	display: inline-flex; align-items: center; gap: 6px;
	min-width: var(--wp--custom--tap--primary); min-height: var(--wp--custom--tap--primary);
	padding: 0 14px;
	border: 1.5px solid var(--wp--preset--color--teal-600);
	border-radius: var(--wp--custom--radius--pill);
	background: #fff; color: var(--wp--preset--color--teal-600);
	font: inherit; font-weight: 700; cursor: pointer;
}

.pow-header__nav > .pow-link { font-size: 15px; padding-block: 4px; border-bottom: 2px solid transparent; }
.pow-header__nav > .pow-link[aria-current="page"] { color: var(--wp--preset--color--teal-600); border-bottom-color: var(--wp--preset--color--yellow-500); }
.pow-mobile-nav-link[aria-current="page"] { color: var(--wp--preset--color--teal-600); font-weight: 700; text-decoration: underline; text-decoration-color: var(--wp--preset--color--yellow-500); text-decoration-thickness: 2px; text-underline-offset: 4px; }

@media (min-width: 1024px) {
	.pow-header__nav { display: flex; }
	.pow-header__actions > a { display: inline-flex; }
	.pow-header__menu-btn { display: none; }
	.pow-header__logo-img { height: 52px; }
	.pow-header.is-scrolled .pow-header__logo-img { height: 42px; }
}

/* Mobile menu sheet */
.pow-mobile-menu {
	position: fixed; inset: 0; z-index: 60; background: #fff;
	display: flex; flex-direction: column; overflow-y: auto;
	padding-bottom: env(safe-area-inset-bottom, 0);
}
.pow-mobile-menu[hidden] { display: none; }
.pow-mobile-menu__head { display: flex; align-items: center; justify-content: space-between; padding-block: 14px; border-bottom: 1px solid var(--wp--preset--color--line); }
.pow-mobile-menu__close { min-width: 48px; min-height: 48px; border: none; background: none; color: var(--wp--preset--color--teal-600); cursor: pointer; }
.pow-mobile-menu__nav, .pow-mobile-services { display: flex; flex-direction: column; gap: 4px; padding-block: 16px; }
.pow-mobile-nav-link { min-height: var(--wp--custom--tap--primary); display: flex; align-items: center; font-size: 17px; }
.pow-mobile-menu__actions { display: flex; flex-direction: column; gap: 10px; padding-block: 16px; }
.pow-mobile-menu__contact { display: flex; flex-direction: column; gap: 8px; padding-block: 16px; border-top: 1px solid var(--wp--preset--color--line); font-size: 14px; color: var(--wp--preset--color--muted); }

@media (min-width: 1024px) {
	.pow-mobile-menu { display: none !important; }
}

/* ---------- Sticky bottom CTA bar ---------- */

.pow-sticky-cta {
	position: fixed; left: 0; right: 0; bottom: 0; z-index: 55;
	display: grid; grid-template-columns: 1fr 1fr; gap: 10px;
	padding: 10px 16px calc(10px + env(safe-area-inset-bottom, 0));
	background: #fff; border-top: 1px solid var(--wp--preset--color--line);
	box-shadow: var(--wp--preset--shadow--raised);
	transform: translateY(100%);
	transition: transform var(--wp--custom--motion--base) ease-out;
}
.pow-sticky-cta.is-visible { transform: translateY(0); }
.pow-sticky-cta__btn { min-height: var(--wp--custom--tap--stickybar); }
.pow-sticky-cta--single { grid-template-columns: 1fr; }

@media (min-width: 1024px) {
	.pow-sticky-cta { display: none !important; }
}
@media (max-width: 768px) {
	/* The sticky bar is position: fixed and always on screen below 1024px,
	   so it covered the last ~70px of every page, including the footer's
	   "© 2026" line. Reserve that space at the bottom of the document. */
	body { padding-bottom: 88px; }
}

@media (prefers-reduced-motion: reduce) {
	.pow-header, .pow-sticky-cta, * { transition-duration: 0.001ms !important; }
}

/* ---------- Footer ---------- */

.pow-footer { background: var(--wp--preset--color--teal-900); color: var(--wp--preset--color--teal-50); }
.pow-footer a { color: var(--wp--preset--color--teal-50); }
.pow-footer a:hover { color: #fff; }
.pow-footer__top {
	display: flex; flex-wrap: wrap; gap: 40px;
	padding-top: var(--wp--preset--spacing--64); padding-bottom: var(--wp--preset--spacing--48);
}
.pow-footer__brand { flex: 1 1 260px; min-width: 0; display: flex; flex-direction: column; gap: 14px; }
.pow-footer__brand img { align-self: flex-start; }
.pow-footer__contact { display: flex; flex-direction: column; gap: 10px; font-size: 15px; }
.pow-footer__contact-label { margin: 0; font-size: 13px; letter-spacing: .04em; text-transform: uppercase; color: var(--wp--preset--color--yellow-500); }
.pow-footer__contact a, .pow-footer__contact span { display: inline-flex; align-items: center; gap: 8px; }
.pow-footer__contact .pow-icon { color: var(--wp--preset--color--yellow-500); }
.pow-footer__hours { font-size: 15px; }
.pow-footer__col { flex: 1 1 150px; display: flex; flex-direction: column; gap: 10px; font-size: 15px; }
.pow-footer__col h2 { font-family: var(--wp--preset--font-family--body); font-size: 15px; color: #fff; letter-spacing: .04em; text-transform: uppercase; font-weight: 700; margin: 0 0 4px; }
.pow-footer__areas { flex: 1 1 280px; }
.pow-footer__areas-line { font-size: 15px; margin: 0; }
.pow-footer__zones { display: grid; grid-template-columns: 1fr 1fr; gap: 10px 16px; margin-block: 4px; }
.pow-footer__zone { display: flex; flex-direction: column; gap: 2px; font-size: 13px; }
.pow-footer__zone strong { font-size: 13px; color: #fff; }
.pow-footer__zone span { color: var(--wp--preset--color--teal-300); }
.pow-footer__areas-link { font-weight: 700; align-self: flex-start; }
.pow-footer__bottom {
	border-top: 1px solid var(--wp--preset--color--teal-700);
	padding-top: 20px; padding-bottom: 28px;
	display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 12px;
	font-size: 14px;
}
.pow-footer__legal { display: flex; flex-wrap: wrap; align-items: center; gap: 16px; margin-right: 16px; }
.pow-footer__social { display: flex; gap: 16px; margin: 0; }

/* ---------- Cards, chips, placeholders ---------- */

.pow-card {
	background: #fff; border: 1px solid var(--wp--preset--color--line);
	border-radius: var(--wp--custom--radius--card); box-shadow: var(--wp--preset--shadow--card);
	box-sizing: border-box;
}
.pow-chip {
	display: inline-flex; align-items: center; gap: 6px;
	padding: 6px 12px; border-radius: 8px;
	background: var(--wp--preset--color--teal-50); color: var(--wp--preset--color--teal-600);
	font-size: 14px; font-weight: 600; line-height: 1.3;
}
.pow-chip--live { align-self: flex-start; }
.pow-chip__dot { width: 8px; height: 8px; border-radius: 50%; background: var(--wp--preset--color--success); flex-shrink: 0; }
.pow-chip-ph {
	display: inline-flex; padding: 6px 12px; border-radius: 8px;
	background: var(--wp--preset--color--teal-50); color: var(--wp--preset--color--muted);
	font-size: 14px; font-style: italic; border: 1px dashed var(--wp--preset--color--teal-300);
}
.pow-placeholder {
	background: var(--wp--preset--color--teal-50);
	border: 2px dashed var(--wp--preset--color--teal-300);
	border-radius: var(--wp--custom--radius--card);
	display: flex; flex-direction: column; align-items: center; justify-content: center;
	gap: 8px; text-align: center; color: var(--wp--preset--color--teal-600);
	font-size: 14px; font-weight: 600; padding: 16px; box-sizing: border-box;
	min-height: 220px;
}
.pow-placeholder small { font-weight: 500; color: var(--wp--preset--color--slate-600); max-width: 300px; }
.pow-placeholder--button { cursor: pointer; border: 2px dashed var(--wp--preset--color--teal-300); font-family: inherit; width: 100%; }

/* Van-window video placeholder (CHANGELOG entry 9): dark box + play icon,
   swapped for a real <video poster> once the client sends the clip. */
.pow-video-placeholder {
	background: var(--wp--preset--color--teal-900); border: none; color: #fff;
	border-radius: var(--wp--custom--radius--card); min-height: 200px;
	display: flex; align-items: center; justify-content: center;
}
.pow-video-placeholder svg { color: var(--wp--preset--color--yellow-500); }

/* ---------- Areas ---------- */

.pow-area-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 12px; }
/* Only used on Contact's "Where we groom" card. display:grid with
   minmax(240px,1fr) forced one chip per row on any screen narrower than
   ~480px (two 240px columns don't fit) — flex-wrap lets short chips like
   "OMR & Thoraipakkam" sit two or three to a row instead. */
.pow-area-list--chip { display: flex; flex-wrap: wrap; gap: 8px; }
.pow-area-list--card { grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); }
.pow-area-chip {
	display: flex; gap: 10px; align-items: center; padding: 16px 20px;
	border-radius: var(--wp--custom--radius--card); border: 1px solid var(--wp--preset--color--line);
	background: #fff; text-decoration: none !important; color: var(--wp--preset--color--teal-600) !important; font-weight: 700;
	box-shadow: var(--wp--preset--shadow--card);
}
.pow-area-card { border: 1px solid var(--wp--preset--color--line); border-radius: var(--wp--custom--radius--card); background: #fff; padding: 18px 20px; display: flex; flex-direction: column; gap: 8px; box-shadow: var(--wp--preset--shadow--card); }
.pow-area-card__row { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.pow-area-card h3 { font-size: 20px; margin: 0; }
.pow-area-card__days { font-size: 14px; color: var(--wp--preset--color--muted); }

/* ---------- Trust counter ---------- */

.pow-trust-counter { display: flex; flex-direction: column; align-items: center; text-align: center; }
.pow-trust-counter strong { font-family: var(--wp--preset--font-family--heading); color: var(--wp--preset--color--teal-600); font-size: 32px; }
.pow-trust-counter span { font-size: 14px; color: var(--wp--preset--color--muted); }

/* ---------- Consent banner ---------- */

.pow-consent-banner {
	position: fixed; left: 16px; right: 16px; bottom: 16px; z-index: 80;
	max-width: 520px; margin-inline: auto;
	background: var(--wp--preset--color--teal-900); color: #fff;
	border-radius: var(--wp--custom--radius--card);
	box-shadow: var(--wp--preset--shadow--raised);
	padding: 20px; display: flex; flex-direction: column; gap: 14px;
	font-size: 14px;
}
.pow-consent-banner[hidden] { display: none; }
.pow-consent-actions { display: flex; gap: 10px; justify-content: flex-end; }
.pow-consent-actions button {
	min-height: 44px; padding: 0 18px; border-radius: var(--wp--custom--radius--pill);
	font: inherit; font-weight: 700; cursor: pointer; border: 2px solid transparent;
}
.pow-consent-decline { background: transparent; color: #fff; border-color: #fff; }
.pow-consent-accept { background: var(--wp--preset--color--yellow-500); color: var(--wp--preset--color--ink); }

/* ---------- Typography helpers ---------- */

.pow-display { font-size: var(--wp--preset--font-size--display); line-height: 1.1; margin: 0; }
.pow-lead { font-size: var(--wp--preset--font-size--body-lg); line-height: 1.6; margin: 0; max-width: 640px; }
.pow-tbd { color: var(--wp--preset--color--muted); font-style: italic; }
.pow-empty-note { color: var(--wp--preset--color--muted); font-style: italic; }

.pow-tag { display: inline-flex; font-size: 12px; font-weight: 700; padding: 3px 10px; border-radius: var(--wp--custom--radius--pill); }
.pow-tag--yellow { background: var(--wp--preset--color--yellow-500); color: var(--wp--preset--color--ink); }
.pow-tag--teal { background: var(--wp--preset--color--teal-50); color: var(--wp--preset--color--teal-600); }

/* Services "What we do" tiles: 4 equal columns, every image forced to the
   same 4:3 shape regardless of its own crop, equal card heights. */
.pow-services-tiles { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 20px; }
@media (max-width: 900px) { .pow-services-tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.pow-services-tile { display: flex; flex-direction: column; height: 100%; }
.pow-services-tile__img { width: 100%; aspect-ratio: 4 / 3; height: auto; object-fit: cover; display: block; }
.pow-services-tile__body { padding: 16px; display: flex; flex-direction: column; gap: 6px; flex: 1 1 auto; }
@media (max-width: 560px) {
	/* 4 tiles stacked 1-up ran to ~400px each (4:3 image at full phone
	   width, plus title and a 2-line description). Keep 2 columns and
	   square images, and clamp the description to one line, so the row
	   stays compact instead of ballooning taller the narrower it gets. */
	.pow-services-tile__img { aspect-ratio: 1 / 1; }
	.pow-services-tile__body { padding: 12px; gap: 4px; }
	.pow-services-tile__body h3 { font-size: 16px; }
	.pow-services-tile__body p {
		font-size: 13px; overflow: hidden; text-overflow: ellipsis;
		display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical;
	}
}

/* Why page "Six reasons" bento grid: 01 spans 2 rows on the left, 02–05
   fill the remaining 2x2 grid, 06 is a full-width band underneath. */
.pow-why-bento { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
/* 01 spans 2 columns and lays out horizontally (icon left, copy right) —
   it used to span 2 ROWS as a tall vertical tile with the icon stacked
   above empty space, leaving a big empty top half. Row 1 is now 01 (2
   cols) + card 02 (1 col); row 2 is cards 03-05; row 3 is the full-width
   CTA band. The large window icon bottom-right is decorative only. */
.pow-why-bento__hero {
	grid-column: span 2; position: relative; overflow: hidden;
	padding: 28px; border-radius: var(--wp--custom--radius--card);
	background: var(--wp--preset--color--teal-600); color: #fff;
	display: flex; flex-direction: row; align-items: center; gap: 24px;
}
.pow-why-bento__hero > * { position: relative; z-index: 1; }
.pow-why-bento__hero-decor {
	position: absolute; right: -24px; bottom: -24px; z-index: 0;
	color: #fff; opacity: 0.1; pointer-events: none;
}
.pow-why-bento__icon-tile {
	width: 88px; height: 88px; border-radius: var(--wp--custom--radius--card);
	background: var(--wp--preset--color--yellow-500); color: var(--wp--preset--color--ink);
	display: flex; align-items: center; justify-content: center; flex-shrink: 0;
}
.pow-why-bento__card {
	padding: 24px; border-radius: var(--wp--custom--radius--card);
	background: #fff; border: 1px solid var(--wp--preset--color--line); box-shadow: var(--wp--preset--shadow--card);
	display: flex; flex-direction: column; gap: 10px;
}
.pow-why-bento__num { font-family: var(--wp--preset--font-family--heading); font-size: 14px; font-weight: 700; color: var(--wp--preset--color--teal-300); }
.pow-why-bento__cta {
	grid-column: 1 / -1; padding: 28px; border-radius: var(--wp--custom--radius--card);
	background: var(--wp--preset--color--yellow-500); color: var(--wp--preset--color--ink);
	display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 16px;
}
@media (max-width: 900px) { .pow-why-bento { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 560px) {
	.pow-why-bento { grid-template-columns: 1fr; }
	.pow-why-bento__hero { grid-column: span 1; flex-direction: column; align-items: flex-start; }
}

/* Why page "How we handle" / "Clean and hygienic": equal split, image
   half-width, alternating sides. */
.pow-why-split { display: grid; grid-template-columns: 1fr 1fr; gap: 56px; align-items: center; }
.pow-why-split__img { width: 100%; aspect-ratio: 4 / 3; height: auto; object-fit: cover; border-radius: 16px; display: block; }
@media (max-width: 767px) {
	.pow-why-split { grid-template-columns: 1fr; gap: 24px; }
	.pow-why-split__media { order: -1; }
}

.pow-check-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 12px; }
.pow-check-list li { display: flex; gap: 10px; align-items: flex-start; }
.pow-check-list svg { color: var(--wp--preset--color--success); flex-shrink: 0; margin-top: 2px; }

/* ---------- Hero ---------- */

.pow-hero { background: var(--wp--preset--color--cream); padding-block: 48px; }
/* align-items: start (not center): the photo must NOT stretch to match the
   copy column's height, which changes (area checker opens, Dog/Cat switch
   adds/removes a package row) — centring with a stretched photo re-cropped
   the image every time the copy column resized. The photo now has its own
   fixed height, so both columns are sized independently. */
.pow-hero__grid { display: flex; flex-wrap: wrap; gap: 48px; align-items: start; }
.pow-hero__copy { flex: 1 1 460px; min-width: 0; display: flex; flex-direction: column; gap: 24px; }
/* WordPress auto-adds is-layout-constrained to .pow-hero__copy (the group's
   own inner-block layout support), which centres each child narrower than
   the column individually — the breadcrumb and eyebrow visibly drift right
   of the H1. Same bug and same fix as .pow-faq-layout__main. */
.pow-hero__copy.is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)) {
	max-width: none;
	margin-left: 0 !important;
	margin-right: 0 !important;
}
.pow-hero__media { flex: 1 1 420px; min-width: 0; height: 320px; align-self: start; }
.pow-hero__media--photo {
	display: block; border-radius: var(--wp--custom--radius--card);
	overflow: hidden; align-self: start;
}
.pow-hero__media--photo img { display: block; width: 100%; height: 100%; object-fit: cover; }
@media (max-width: 767px) {
	/* Stacked layout: size the photo by its own aspect ratio (the portrait
	   source) instead of a desktop pixel height. Photo comes before the
	   copy/checker on mobile, matching Home-mobile.dc.html. */
	.pow-hero__media { height: auto; aspect-ratio: 4 / 5; order: -1; }
}
@media (min-width: 900px) {
	.pow-hero { padding-block: 72px 80px; }
	.pow-hero__media { height: 520px; }
}

img { max-width: 100%; height: auto; }

/* Hero photo when the class sits on the <img> itself (service, city, area pages) */
img.pow-hero__media--photo {
	height: auto;
	min-height: 0;
	align-self: center;
	aspect-ratio: 4 / 3;
	object-fit: cover;
}

/* Home hero: 16:9 photo in a near-square column; keep the owner, window and dog in view */
@media (min-width: 768px) {
	.pow-hero__media--photo img { object-position: 88% 50%; }
}


/* ---------- Promise strip ---------- */

.pow-promise-strip { background: var(--wp--preset--color--yellow-100); }
.pow-promise-strip__row { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 16px 32px; padding-block: 20px; }
.pow-promise-strip__item { display: flex; gap: 10px; align-items: center; color: var(--wp--preset--color--teal-600); font-weight: 700; }
.pow-promise-strip__item svg { flex-shrink: 0; }

/* ---------- Step row (how it works) ---------- */

/* ---------- How it works (CHANGELOG entry 13, §2) ---------- */

.pow-how-row { display: flex; align-items: stretch; gap: 20px; }
.pow-how-step { flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; gap: 16px; }
.pow-how-step__panel {
	aspect-ratio: 4 / 3; min-height: 220px; border-radius: 20px; overflow: hidden;
	position: relative; display: flex; align-items: flex-start; justify-content: center;
}
.pow-how-step__panel--yellow { background: var(--wp--preset--color--yellow-100); }
.pow-how-step__panel--teal { background: var(--wp--preset--color--teal-50); }
.pow-how-step__panel--photo { padding: 0; align-items: stretch; }
.pow-how-step__img { width: 100%; height: 100%; object-fit: cover; display: block; }
.pow-how-step__body { display: flex; gap: 14px; align-items: flex-start; }
.pow-how-step__num {
	flex-shrink: 0; width: 44px; height: 44px; border-radius: var(--wp--custom--radius--pill);
	background: var(--wp--preset--color--teal-600); color: #fff;
	display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: 18px;
}
.pow-how-step h3 { font-size: 22px; margin: 0; }
.pow-how-step p { margin: 4px 0 0; }
.pow-how-connector {
	flex: 0 0 auto; align-self: center; width: 44px; height: 44px; border-radius: 50%;
	background: var(--wp--preset--color--yellow-500); color: var(--wp--preset--color--teal-600);
	box-shadow: 0 4px 12px rgba(9, 43, 40, .15);
	display: flex; align-items: center; justify-content: center;
}

@media (max-width: 900px) {
	.pow-how-row { flex-direction: column; }
	.pow-how-connector { transform: rotate(90deg); }
}

/* ---------- Inside the van ---------- */

.pow-inside-van { display: flex; flex-wrap: wrap; gap: 48px; align-items: center; }
.pow-inside-van__copy { flex: 1 1 380px; min-width: 0; }
.pow-inside-van__media { flex: 1 1 520px; min-width: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.pow-inside-van__video { grid-column: 1 / -1; min-height: 240px; }
.pow-inside-van__media .pow-placeholder:not(.pow-inside-van__video) { min-height: 160px; }
.pow-inside-van__photo {
	width: 100%; height: auto; min-height: 160px; aspect-ratio: 4 / 3;
	object-fit: cover; border-radius: var(--wp--custom--radius--card); display: block;
}

/* Home "Why pet parents choose us": text 5fr / media 7fr, vertically
   centred — same video-on-top, 2-photos-below media grid as
   .pow-inside-van, just a different column ratio for the outer split. */
.pow-home-why { display: flex; flex-wrap: wrap; gap: 48px; align-items: center; }
.pow-home-why__copy { flex: 5 1 360px; min-width: 0; }
.pow-home-why__copy > .pow-btn { align-self: flex-start; }
.pow-home-why__list { display: flex; flex-direction: column; gap: 16px; }
.pow-home-why__point { display: flex; gap: 14px; align-items: flex-start; }
.pow-home-why__icon {
	flex: 0 0 38px; height: 38px; border-radius: 12px; background: var(--wp--preset--color--teal-50);
	color: var(--wp--preset--color--teal-600); display: flex; align-items: center; justify-content: center;
}
.pow-home-why__point strong { display: block; font-size: 17px; color: var(--wp--preset--color--teal-600); }
.pow-home-why__point p { margin: 2px 0 0; font-size: 15px; }
.pow-home-why__media { flex: 7 1 480px; min-width: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.pow-home-why__video { grid-column: 1 / -1; min-height: 240px; }
.pow-home-why__photo {
	width: 100%; height: auto; min-height: 160px; aspect-ratio: 4 / 3;
	object-fit: cover; border-radius: var(--wp--custom--radius--card); display: block;
}
@media (max-width: 767px) {
	.pow-home-why__media { order: -1; }
}

/* ---------- Package grid ---------- */

.pow-package-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 20px; width: 100%; min-width: 0; }
.pow-package-card { padding: 24px; display: flex; flex-direction: column; gap: 14px; }
.pow-package-card__top { display: flex; justify-content: space-between; align-items: center; }
.pow-package-card__top svg { color: var(--wp--preset--color--teal-600); }
.pow-package-card h3 { font-size: 24px; margin: 0; }
.pow-package-card__price { margin: 0; display: flex; align-items: baseline; gap: 6px; }
.pow-price-from { font-size: 14px; color: var(--wp--preset--color--muted); }
.pow-price { font-family: var(--wp--preset--font-family--heading); font-size: var(--wp--preset--font-size--price); font-weight: 700; color: var(--wp--preset--color--teal-600); }
.pow-package-card__meta { margin: 0; font-size: 14px; color: var(--wp--preset--color--muted); }
.pow-package-card__chips { gap: 8px; margin: 0; }
.pow-package-card__cta { margin-top: auto; }

/* ---------- Services page (CHANGELOG entry 13, §3) ---------- */

.pow-services-switch-wrap {
	position: sticky; top: 73px; z-index: 20; background: #fff;
	border-bottom: 1px solid var(--wp--preset--color--line);
	padding-block: 16px;
}
.pow-services-switch {
	display: flex; gap: 8px; max-width: 720px; margin-inline: auto;
	background: #fff; border: 1.5px solid var(--wp--preset--color--teal-100); border-radius: 20px;
	box-shadow: 0 6px 20px rgba(9, 43, 40, .08);
	padding: 6px;
}
.pow-services-switch__btn {
	flex: 1 1 0; display: flex; align-items: center; gap: 10px; min-width: 0;
	padding: 14px 18px; border-radius: 14px;
	text-decoration: none; color: var(--wp--preset--color--teal-600);
	min-height: var(--wp--custom--tap--primary);
}
.pow-services-switch__icon {
	flex-shrink: 0; width: 52px; height: 52px; display: flex; align-items: center; justify-content: center;
	border-radius: 14px; background: var(--wp--preset--color--teal-50); color: var(--wp--preset--color--teal-600);
}
.pow-services-switch__btn.is-on { background: var(--wp--preset--color--teal-600); color: #fff; }
.pow-services-switch__btn.is-on .pow-services-switch__icon { background: var(--wp--preset--color--yellow-500); color: var(--wp--preset--color--teal-600); }
.pow-services-switch__text { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.pow-services-switch__count { font-size: 13px; opacity: .85; }
@media (max-width: 600px) {
	/* 113px tall on phone made a third of the viewport sticky furniture —
	   bring it to 64px or less: tighter wrap padding, smaller button
	   padding, a 36px icon tile and a 15px label (CHANGELOG entry 14, §3.3). */
	.pow-services-switch-wrap { padding-block: 4px; }
	.pow-services-switch { padding: 4px; }
	.pow-services-switch__btn { padding: 4px 8px; min-height: 0; gap: 8px; }
	.pow-services-switch__count { display: none; }
	.pow-services-switch__icon { width: 36px; height: 36px; border-radius: 10px; }
	.pow-services-switch__text strong { font-size: 15px; }
}

/* Full-bleed image: pull the media out to the card's own edges instead of
   sitting padded/inset like the rest of the card's content (Design-system
   spec — the image's top corners follow the card's own radius). */
.pow-package-card--services { padding-top: 0; overflow: hidden; }
.pow-package-card--services .pow-package-card__media { margin: 0 -24px; aspect-ratio: 4/3; }
.pow-package-card--services .pow-package-card__img { width: 100%; height: 100%; object-fit: cover; display: block; }
.pow-package-card--services .pow-package-card__duration,
.pow-package-card--services .pow-package-card__best-for { margin: 0; font-size: 14px; color: var(--wp--preset--color--muted); }
.pow-package-card--services .pow-package-card__included-label { margin: 0; font-weight: 700; font-size: 14px; }
.pow-chip--yellow { background: var(--wp--preset--color--yellow-100); color: var(--wp--preset--color--amber-700); font-weight: 600; align-self: flex-start; }
.pow-package-card__items { font-size: 14px; }

.pow-package-grid--dog { grid-template-columns: repeat(4, 1fr); }
.pow-package-grid--cat { grid-template-columns: repeat(3, 1fr); }
@media (max-width: 960px) {
	.pow-package-grid--dog, .pow-package-grid--cat { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 600px) {
	.pow-package-grid--dog, .pow-package-grid--cat { grid-template-columns: 1fr; }
}

.pow-services-factor-row {
	display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 16px;
	padding-top: 20px; border-top: 1px solid var(--wp--preset--color--line);
}
.pow-services-factor-row__note { font-weight: 700; }
.pow-services-factor-row .pow-chip { display: inline-flex; flex-direction: row; align-items: center; gap: 6px; white-space: nowrap; }

.pow-addon-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px; }
.pow-addon-card { padding: 20px; display: flex; gap: 14px; align-items: flex-start; }
.pow-addon-card__icon {
	flex-shrink: 0; width: 52px; height: 52px; border-radius: 14px; display: flex; align-items: center; justify-content: center;
	background: var(--wp--preset--color--teal-50); color: var(--wp--preset--color--teal-600);
}
.pow-addon-card__row { margin: 0; display: flex; justify-content: space-between; align-items: baseline; gap: 10px; font-size: 17px; }
.pow-addon-card__price { color: var(--wp--preset--color--teal-600); font-weight: 700; white-space: nowrap; }
.pow-addon-card__desc { margin: 4px 0 0; font-size: 15px; color: var(--wp--preset--color--muted); }
.pow-services-addons__note { font-size: 14px; color: var(--wp--preset--color--muted); margin: 0; }

@media (max-width: 600px) {
	.pow-addon-grid { grid-template-columns: 1fr; }
}

/* Home packages summary, phone: 4 stacked dog cards ran to ~1,800px of
   scroll. design-reference/Home-mobile.html's phone layout shows only the
   first 3 (Essential Bath, Basic Grooming, Full Grooming) and relies on
   the "Compare all dog packages and add-ons" button already below the
   grid to reach Premium Grooming and everything else — so hide the 4th
   card here rather than build a separate swipe-carousel component. Cats
   already have exactly 3, so nothing to hide there. */
@media (max-width: 767px) {
	#packages .pow-species-panel--dog .pow-package-grid > .pow-package-card:nth-child(4) { display: none; }
}

/* ---------- Comparison table ---------- */

/* position: relative so the table's own overflow-x: auto is the actual
   scroll boundary. Without it, an absolutely-positioned descendant (the
   old visually-hidden "No" span) positions itself against whatever
   ancestor IS positioned, which could sit outside this wrapper and widen
   the whole page — the cause of the phone sideways scroll. The hidden
   span is gone now (plain "Yes"/"No" text instead), but the position
   stays as a safety net for anything else absolutely positioned in here. */
.pow-comparison-table__wrap { position: relative; overflow-x: auto; min-width: 0; max-width: 100%; }
@media (max-width: 600px) {
	/* Services "Compare what's included" table: keep the row name visible
	   while scrolling sideways through the package columns, instead of it
	   disappearing off the left edge with everything else. Not applied to
	   .pow-comparison-table--salon (the Why page table), which switches to
	   a stacked-card layout at this width instead of scrolling. */
	.pow-comparison-table:not(.pow-comparison-table--salon) th[scope="row"],
	.pow-comparison-table:not(.pow-comparison-table--salon) thead th:first-child {
		position: sticky; left: 0; background: #fff; z-index: 1;
	}
	.pow-comparison-table:not(.pow-comparison-table--salon) thead th:first-child { background: var(--wp--preset--color--teal-600); }
}
.pow-comparison-table { border-collapse: collapse; width: 100%; min-width: 640px; }
.pow-comparison-table th, .pow-comparison-table td { padding: 14px 16px; text-align: left; border-bottom: 1px solid var(--wp--preset--color--line); font-size: 15px; }
.pow-comparison-table thead th { background: var(--wp--preset--color--teal-600); color: #fff; font-family: var(--wp--preset--font-family--heading); font-size: 17px; }
.pow-comparison-table tbody th { color: var(--wp--preset--color--teal-600); font-weight: 600; }
.pow-comparison-table__yes { color: var(--wp--preset--color--success); font-weight: 700; }
.pow-comparison-table__no { color: var(--wp--preset--color--muted); }

/* Why page "salon vs. us" table, phone: scrolling sideways hid the "With
   Paws on Wheels" column off-screen. Below 600px, turn each row into its
   own small card instead — topic in bold, then "At a salon: …" and "With
   Paws on Wheels: …" in teal, using the data-label attributes on each
   <td> as the visible label via ::before (no JS, no duplicated content). */
@media (max-width: 600px) {
	.pow-comparison-table--salon { min-width: 0; }
	.pow-comparison-table--salon thead { display: none; }
	.pow-comparison-table--salon, .pow-comparison-table--salon tbody,
	.pow-comparison-table--salon tr, .pow-comparison-table--salon th,
	.pow-comparison-table--salon td { display: block; width: 100%; }
	.pow-comparison-table--salon tr { padding: 16px 0; border-bottom: 1px solid var(--wp--preset--color--line); }
	.pow-comparison-table--salon tr:first-child { padding-top: 0; }
	.pow-comparison-table--salon tr:last-child { border-bottom: none; padding-bottom: 0; }
	.pow-comparison-table--salon th[scope="row"] { font-weight: 700; color: var(--wp--preset--color--teal-600); border-bottom: none; padding: 0 0 6px; }
	.pow-comparison-table--salon td { border-bottom: none; padding: 4px 0; }
	.pow-comparison-table--salon td::before { content: attr(data-label) ": "; font-weight: 600; }
	.pow-comparison-table--salon td[data-label="With Paws on Wheels"] { color: var(--wp--preset--color--teal-600); }
}

/* ---------- Page heroes (Design-system "Page heroes" A/B/C) ---------- */

.pow-page-hero { position: relative; display: flex; align-items: center; min-height: 360px; overflow: hidden; background: var(--wp--preset--color--cream); }
.pow-page-hero__media { position: absolute; inset: 0; z-index: 0; }
.pow-page-hero__img { width: 100%; height: 100%; object-fit: cover; display: block; }
/* width:100% keeps this flex item filling its max-width (1200px) box
   instead of shrinking to its content's natural width — without it, a
   short hero title (e.g. the Blog index) renders narrower than a long one
   and the whole auto-centred block visibly drifts off the left edge. */
.pow-page-hero__copy { position: relative; z-index: 2; display: flex; flex-direction: column; gap: 12px; padding-block: 32px; width: 100%; }
.pow-page-hero__cta { align-self: flex-start; margin-top: 8px; }
/* Why page hero: cap the H1 so it doesn't run across the dog's face in the photo. */
.pow-page-hero__copy[data-title-max] h1 { max-width: var(--pow-hero-title-max); }

/* A. Photo with teal shade */
.pow-page-hero--photo-teal { color: #fff; }
.pow-page-hero--photo-teal .pow-page-hero__shade { position: absolute; inset: 0; z-index: 1; background: linear-gradient(to right, var(--wp--preset--color--teal-900) 0%, transparent 92%); }
.pow-page-hero--photo-teal .pow-eyebrow { color: var(--wp--preset--color--yellow-500); }
.pow-page-hero--photo-teal .pow-display, .pow-page-hero--photo-teal .pow-lead { color: #fff; }

/* B. Photo with a cream side (Services, Areas, FAQ) — a cream gradient
   fades over the left of the full-bleed photo (same technique as the
   teal shade above, just light instead of dark), so the copy sits
   directly on the page grid instead of in a floating inset card
   (CHANGELOG entry 14, §3.1 — the floating-card version left the H1 well
   right of the logo's edge instead of lined up with it). */
.pow-page-hero--photo-cream .pow-page-hero__media { inset: 0; }
.pow-page-hero--photo-cream .pow-page-hero__img { object-position: 100% 50%; }
.pow-page-hero--photo-cream::before {
	content: ""; position: absolute; inset: 0; z-index: 1;
	background: linear-gradient(90deg, var(--wp--preset--color--cream) 0%, var(--wp--preset--color--cream) 42%, rgba(255, 251, 242, .75) 50%, rgba(255, 251, 242, 0) 60%);
}
/* Keep the outer copy box on the same centred 1200px grid as every other
   section (it still has the .pow-container class); only cap each child's
   width so the text wraps narrower, next to the photo. Overriding the
   container's own margin/padding here (an earlier version did) pinned the
   text to the raw viewport edge instead of the shared grid edge, so on
   wide screens it sat visibly left of the hero on every other page. */
.pow-page-hero--photo-cream .pow-page-hero__copy > * {
	max-width: 560px;
}

/* C. Line-art band — no photo */
.pow-page-hero--line-art { min-height: 0; padding-block: 48px; background: var(--wp--preset--color--cream); }
.pow-page-hero__lineart { position: absolute; inset: auto 0 0 0; height: 60px; color: var(--wp--preset--color--teal-300); opacity: 0.6; }
.pow-page-hero__lineart svg { width: 100%; height: 100%; display: block; }

@media (min-width: 768px) {
	.pow-page-hero { min-height: 440px; }
}
@media (max-width: 767px) {
	.pow-page-hero--photo-cream { flex-direction: column; }
	.pow-page-hero--photo-cream .pow-page-hero__media { position: relative; height: 240px; }
	.pow-page-hero--photo-cream::before { content: none; }
	.pow-page-hero--photo-cream .pow-page-hero__copy > * { max-width: none; }
}

/* ---------- Contact page hero (chat-mockup, no photo) ---------- */

.pow-contact-hero { position: relative; overflow: hidden; background: var(--wp--preset--color--cream); padding-block: 48px 72px; }
.pow-contact-hero__lineart { position: absolute; left: -40px; bottom: 0; width: 520px; max-width: 60%; color: var(--wp--preset--color--teal-300); opacity: 0.6; }
.pow-contact-hero__lineart svg { width: 100%; height: auto; display: block; }
.pow-contact-hero__grid { position: relative; display: grid; grid-template-columns: 6fr 5fr; gap: 56px; align-items: center; }
.pow-contact-hero__copy { display: flex; flex-direction: column; gap: 18px; min-width: 0; }
.pow-contact-hero__copy h1 { font-size: 52px; line-height: 1.06; }
.pow-contact-hero__copy .pow-lead { max-width: 540px; }
.pow-contact-hero__buttons { display: flex; flex-wrap: wrap; gap: 12px; }
.pow-contact-hero__chips { display: flex; flex-wrap: wrap; gap: 8px; }

.pow-contact-chat {
	margin: 0; border-radius: var(--wp--custom--radius--card); background: var(--wp--preset--color--teal-50);
	padding: 20px; box-shadow: var(--wp--preset--shadow--raised);
	display: flex; flex-direction: column; gap: 10px;
}
.pow-contact-chat__header { display: flex; align-items: center; gap: 12px; padding: 4px 4px 12px; border-bottom: 1px solid var(--wp--preset--color--line); }
.pow-contact-chat__avatar { width: 44px; height: 44px; border-radius: var(--wp--custom--radius--pill); background: var(--wp--preset--color--teal-600); display: flex; align-items: center; justify-content: center; overflow: hidden; flex-shrink: 0; }
.pow-contact-chat__avatar img { width: 100%; height: 100%; display: block; }
.pow-contact-chat__who { display: flex; flex-direction: column; }
.pow-contact-chat__who strong { color: var(--wp--preset--color--teal-600); }
.pow-contact-chat__who span { font-size: 14px; color: var(--wp--preset--color--muted); }
.pow-contact-chat__bubble { max-width: 82%; padding: 10px 14px; border-radius: 16px; font-size: 15px; line-height: 1.45; margin: 0; }
.pow-contact-chat__bubble--me { align-self: flex-end; background: var(--wp--preset--color--teal-100); border-bottom-right-radius: 4px; }
.pow-contact-chat__bubble--us { align-self: flex-start; background: #fff; border: 1px solid var(--wp--preset--color--line); border-bottom-left-radius: 4px; }
.pow-contact-chat__caption { text-align: center; padding-top: 4px; font-size: 14px; color: var(--wp--preset--color--muted); }

@media (max-width: 900px) {
	.pow-contact-hero__grid { grid-template-columns: 1fr; }
	.pow-contact-hero__copy h1 { font-size: 36px; }
}

/* ---------- Contact page: method cards, info cards ---------- */

.pow-contact-methods { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 20px; }
.pow-contact-method { padding: 24px; display: flex; flex-direction: column; gap: 10px; align-items: flex-start; }
.pow-contact-method__icon { width: 48px; height: 48px; border-radius: 14px; background: var(--wp--preset--color--teal-50); display: flex; align-items: center; justify-content: center; color: var(--wp--preset--color--teal-600); }
.pow-contact-method h2 { font-size: 22px; }
.pow-contact-method p { font-size: 15px; }
.pow-contact-method a, .pow-contact-method strong { margin-top: auto; font-weight: 700; color: var(--wp--preset--color--teal-600); }

.pow-contact-info { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; align-items: start; }
.pow-contact-info__card { padding: 28px; display: flex; flex-direction: column; gap: 16px; }
.pow-contact-info__card h2 { font-size: 26px; }
.pow-contact-checklist { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.pow-contact-checklist li { display: flex; gap: 10px; align-items: center; font-size: 15px; }
.pow-contact-checklist__icon { flex: 0 0 36px; height: 36px; border-radius: 10px; background: #fff; display: flex; align-items: center; justify-content: center; color: var(--wp--preset--color--teal-600); }

.pow-contact-faq-strip {
	border-radius: var(--wp--custom--radius--card); background: var(--wp--preset--color--yellow-100);
	padding: 20px 28px; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px;
}

@media (max-width: 900px) {
	.pow-contact-methods { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.pow-contact-info { grid-template-columns: 1fr; }
}
@media (max-width: 600px) {
	.pow-contact-methods { grid-template-columns: 1fr; gap: 0; border: 1px solid var(--wp--preset--color--line); border-radius: var(--wp--custom--radius--card); overflow: hidden; }
	/* Each method card was ~280px tall and mostly empty on phone. Collapse
	   to a compact row instead: icon, label, value, about 64px each,
	   dropping the one-line description (redundant with the label). */
	.pow-contact-method {
		flex-direction: row; align-items: center; gap: 14px;
		min-height: 64px; padding: 12px 20px;
		border: none; border-radius: 0; box-shadow: none;
		border-bottom: 1px solid var(--wp--preset--color--line);
	}
	.pow-contact-methods .pow-contact-method:last-child { border-bottom: none; }
	.pow-contact-method__icon { width: 36px; height: 36px; flex-shrink: 0; }
	.pow-contact-method h2 { font-size: 16px; margin: 0; flex: 1 1 auto; }
	.pow-contact-method p { display: none; }
	.pow-contact-method a, .pow-contact-method strong { margin-top: 0; font-size: 14px; white-space: nowrap; }
	.pow-contact-checklist { grid-template-columns: 1fr; }
}

/* ---------- Add-ons and price factors (Services page) ---------- */

.pow-addon-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
.pow-addon-list__row { display: flex; justify-content: space-between; padding: 12px 0; border-bottom: 1px solid var(--wp--preset--color--line); gap: 12px; }
.pow-addon-list__row:last-child { border-bottom: none; }
.pow-addon-list__note { font-size: 13px; color: var(--wp--preset--color--muted); }

.pow-price-factor-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(90px, 1fr)); gap: 8px; text-align: center; }
.pow-price-factor-grid__item { background: var(--wp--preset--color--teal-50); border-radius: 12px; padding: 12px 6px; }
.pow-price-factor-grid__item strong { color: var(--wp--preset--color--teal-600); font-size: 18px; display: block; }
.pow-price-factor-grid__item p { font-size: 13px; margin: 4px 0 0; }

/* ---------- Review grid ---------- */

.pow-review-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 20px; }
.pow-review-card { overflow: hidden; display: flex; flex-direction: column; }
.pow-review-card__photo { aspect-ratio: 4 / 3; min-height: 0 !important; border-radius: 0 !important; }
.pow-review-card__photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
.pow-review-card__body { padding: 20px; display: flex; flex-direction: column; gap: 12px; flex: 1 1 auto; }
.pow-review-card__stars { letter-spacing: 2px; }
/* Always 5 slots (filled + empty), so a 4-star review doesn't read as
   "only 4 stars exist" — the aria-label on the wrapper already states
   the rating in words, so the empty stars stay aria-hidden-equivalent
   via the wrapper's own label (no per-star label needed). */
.pow-star { color: var(--wp--preset--color--line); }
.pow-star--on { color: var(--wp--preset--color--amber-700); }
.pow-review-card__byline-wrap { margin-top: auto; display: flex; flex-direction: column; gap: 2px; }
.pow-review-card__byline { color: var(--wp--preset--color--teal-600); }
.pow-review-card__meta { font-size: 14px; color: var(--wp--preset--color--muted); }
.pow-review-empty { display: flex; flex-direction: column; gap: 16px; align-items: flex-start; }
.pow-review-empty--none {
	padding: 40px 32px; align-items: center; text-align: center; gap: 14px;
	background: var(--wp--preset--color--teal-50); border-style: dashed;
}
.pow-review-empty--none svg { color: var(--wp--preset--color--amber-700); }
.pow-review-empty--none p { max-width: 520px; }
.pow-review-average { display: flex; align-items: center; gap: 8px; color: var(--wp--preset--color--amber-700); font-weight: 700; margin: 0 0 20px; }
.pow-review-average strong { color: var(--wp--preset--color--teal-600); }

/* ---------- City grid ---------- */

.pow-city-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 16px; }
.pow-city-card { padding: 18px; display: flex; align-items: center; gap: 14px; text-decoration: none !important; }
.pow-city-card--live { border: 2px solid var(--wp--preset--color--teal-600); }
.pow-city-card--soon { border: 2px dashed var(--wp--preset--color--teal-300); box-shadow: none; }
.pow-city-card svg { color: var(--wp--preset--color--teal-600); flex-shrink: 0; }
.pow-city-card span { display: flex; flex-direction: column; }
.pow-city-card strong { font-family: var(--wp--preset--font-family--heading); font-size: 22px; color: var(--wp--preset--color--teal-600); line-height: 1.2; }
.pow-city-card em { font-style: normal; font-size: 13px; color: var(--wp--preset--color--slate-600); }

/* ---------- Areas section (Home) ---------- */

.pow-areas-section { display: flex; flex-direction: column; gap: 32px; }
.pow-areas-section__header { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 16px; }
.pow-areas-section__intro { flex: 1 1 420px; min-width: 0; display: flex; flex-direction: column; gap: 8px; }

.pow-area-list--compact { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
@media (max-width: 960px) { .pow-area-list--compact { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 600px) { .pow-area-list--compact { grid-template-columns: 1fr; } }

/* Pin spans both rows on the left, arrow spans both rows on the right;
   name and "Active · Daily" stack as two lines in the middle column, so a
   long area name never has to compete with the status text on one line
   (that's what made "Nungambakkam & T. Nagar" wrap oddly). width: 100% so
   the card always fills its grid cell, never just its own text width. */
.pow-area-card--compact {
	display: grid; grid-template-columns: auto 1fr auto; grid-template-rows: auto auto;
	column-gap: 12px; row-gap: 2px; align-items: center;
	width: 100%; height: 100%; box-sizing: border-box;
	padding: 16px 18px; border-radius: var(--wp--custom--radius--card);
	border: 1px solid var(--wp--preset--color--line); background: #fff;
	box-shadow: var(--wp--preset--shadow--card);
	text-decoration: none !important; color: var(--wp--preset--color--teal-600) !important;
}
.pow-area-card--compact svg:first-child { grid-row: 1 / 3; }
.pow-area-card--compact__name { grid-column: 2; grid-row: 1; font-weight: 700; min-width: 0; }
.pow-area-card--compact__status { grid-column: 2; grid-row: 2; display: flex; align-items: center; gap: 6px; font-size: 13px; color: var(--wp--preset--color--success); font-weight: 700; white-space: nowrap; }
.pow-area-card--compact__arrow { grid-column: 3; grid-row: 1 / 3; }
.pow-area-card--compact__arrow { flex-shrink: 0; }

.pow-areas-section__more {
	display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 16px;
	padding: 24px; border-radius: var(--wp--custom--radius--card);
	border: 2px dashed var(--wp--preset--color--teal-300);
}
.pow-areas-section__more-text { display: flex; flex-direction: column; gap: 6px; }
.pow-areas-section__more-text p { font-size: 14px; color: var(--wp--preset--color--muted); }

/* ---------- FAQ accordion ---------- */

.pow-faq-accordion { border-top: 1px solid var(--wp--preset--color--line); }
.pow-faq-item { border-bottom: 1px solid var(--wp--preset--color--line); }
.pow-faq-item summary {
	cursor: pointer; list-style: none; padding: 20px 0; font-weight: 700;
	color: var(--wp--preset--color--teal-600); font-size: 18px;
	display: flex; justify-content: space-between; gap: 16px;
}
.pow-faq-item summary::-webkit-details-marker { display: none; }
.pow-faq-item__answer { padding-bottom: 20px; }
.pow-faq-item__answer :where(p) { margin: 0; }

/* FAQ search box, now inside the cream photo hero (CHANGELOG entry 13, §8). */
.pow-faq-search { display: flex; flex-direction: column; gap: 8px; margin-top: 4px; }
.pow-faq-search__label { font-size: 14px; font-weight: 700; color: var(--wp--preset--color--teal-700); }
.pow-faq-search__field { position: relative; max-width: 420px; }
.pow-faq-search__field svg { position: absolute; left: 16px; top: 50%; transform: translateY(-50%); color: var(--wp--preset--color--muted); pointer-events: none; }
.pow-faq-search__field .pow-field { width: 100%; height: 52px; padding-left: 44px; }
.pow-faq-search__count { font-size: 14px; color: var(--wp--preset--color--muted); min-height: 1.2em; }
.pow-faq-hero__help { font-size: 15px; color: var(--wp--preset--color--muted); margin: 0; }
.pow-faq-search__empty { padding: 32px; display: flex; flex-direction: column; align-items: center; text-align: center; gap: 10px; color: var(--wp--preset--color--muted); }
.pow-faq-search__empty svg { color: var(--wp--preset--color--warning); }
/* Hidden by JS while filtering: a whole topic group with no matching
   question, or a question that doesn't match the query. */
[data-pow-faq-groups] [hidden] { display: none; }

/* FAQ page: a sticky "On this page" quick-nav to the same 10 sections on
   every width, shaped for the space available — a horizontal scrolling
   pill strip under the header on mobile/tablet, a right-side sticky
   column on desktop (the page was a single 840px block with nothing
   either side of it on wide screens). Same <a> elements, same scroll-spy
   JS, both breakpoints — only the layout/visual treatment changes. */
.pow-faq-layout { display: flex; flex-direction: column; gap: 0; align-items: flex-start; }
.pow-faq-layout__main { flex: 1 1 auto; min-width: 0; max-width: 840px; width: 100%; order: 2; }
/* .pow-faq-layout__main also carries .pow-stack, so the generic
   is-layout-constrained neutraliser above already covers it. */

.pow-faq-toc {
	order: 1; width: 100%;
	position: sticky; top: 73px; z-index: 10;
	display: flex; flex-direction: row; align-items: center; gap: 8px;
	overflow-x: auto; -webkit-overflow-scrolling: touch;
	padding: 12px var(--wp--custom--gutter--phone);
	margin-inline: calc(var(--wp--custom--gutter--phone) * -1);
	background: #fff; border-bottom: 1px solid var(--wp--preset--color--line);
	margin-bottom: 32px;
}
.pow-faq-toc__label { display: none; }
.pow-faq-toc a {
	flex: 0 0 auto;
	display: inline-flex; align-items: center; min-height: 36px; padding: 0 14px;
	border: 1.5px solid var(--wp--preset--color--line); border-radius: var(--wp--custom--radius--pill);
	color: var(--wp--preset--color--teal-600); font-size: 14px; font-weight: 600; text-decoration: none;
	white-space: nowrap;
}
.pow-faq-toc a.is-active { border-color: var(--wp--preset--color--teal-600); background: var(--wp--preset--color--teal-600); color: #fff; }
.pow-faq-toc a span { font-size: 12px; opacity: .7; margin-left: 4px; }
.pow-faq-toc__whatsapp { display: none; }

@media (min-width: 1024px) {
	.pow-faq-layout { flex-direction: row; gap: 48px; }
	.pow-faq-layout__main { order: 1; }
	.pow-faq-toc {
		order: 2; width: auto;
		flex: 0 0 220px; flex-direction: column; align-items: stretch; gap: 2px;
		position: sticky; top: 96px; z-index: auto;
		overflow-x: visible; padding: 0; margin: 0; background: none; border-bottom: none;
	}
	.pow-faq-toc__label {
		display: block; font-size: 13px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em;
		color: var(--wp--preset--color--muted); margin: 0 0 10px;
	}
	.pow-faq-toc a {
		min-height: 0; padding: 8px 14px; border: none; border-left: 2px solid var(--wp--preset--color--line);
		border-radius: 0; color: var(--wp--preset--color--slate-600); font-weight: 400; background: none;
	}
	.pow-faq-toc a:hover { color: var(--wp--preset--color--teal-600); }
	.pow-faq-toc a.is-active {
		border-left-color: var(--wp--preset--color--teal-600); background: var(--wp--preset--color--teal-50);
		color: var(--wp--preset--color--teal-600); font-weight: 700;
	}
	.pow-faq-toc__whatsapp { display: inline-flex; margin-top: 16px; }
}

/* ---------- CTA band ---------- */

.pow-cta-band__row { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 24px; }

/* ---------- Breadcrumb ---------- */

.pow-breadcrumb { font-size: 14px; }
.pow-breadcrumb a { color: var(--wp--preset--color--teal-600); }
.pow-page-hero--photo-teal .pow-breadcrumb a,
.pow-page-hero--photo-teal .pow-breadcrumb span { color: rgba(255, 255, 255, 0.85); }
.pow-page-hero--photo-cream .pow-breadcrumb a,
.pow-page-hero--photo-cream .pow-breadcrumb span { color: var(--wp--preset--color--teal-600); }

/* ---------- Coverage grid (City page) ---------- */

.pow-coverage-grid { display: flex; flex-wrap: wrap; gap: 24px; align-items: stretch; }
.pow-coverage-grid > .pow-area-list { flex: 1 1 560px; min-width: 0; }
.pow-coverage-grid > .pow-placeholder { flex: 1 1 360px; min-width: 0; }

/* ---------- Pincode checker: inline package list ("covered" result) ----------
   No Book page — once an area is covered, packages load right in the
   checker card and each one hands off straight to WhatsApp. */

.pow-pincode-checker__packages-loading { color: var(--wp--preset--color--muted); font-size: 14px; }
.pow-pincode-checker__packages { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; transition: opacity var(--wp--custom--motion--fast); }
/* Dog/Cat toggle re-fetches that pet's packages — keep showing the
   previous list, dimmed, instead of collapsing to a "Loading…" line and
   back, which visibly resized the result card on every toggle. */
.pow-pincode-checker__packages.is-loading { opacity: .45; pointer-events: none; }
.pow-pincode-checker__package {
	display: flex; align-items: center; justify-content: space-between; gap: 12px;
	padding: 12px 16px; border: 1.5px solid var(--wp--preset--color--line);
	border-radius: var(--wp--custom--radius--card); text-decoration: none !important;
	min-height: var(--wp--custom--tap--primary);
}
.pow-pincode-checker__package:hover,
.pow-pincode-checker__package:focus-visible { border-color: var(--wp--preset--color--teal-600); background: var(--wp--preset--color--teal-50); }
.pow-pincode-checker__package-name { display: flex; align-items: center; gap: 8px; font-weight: 700; color: var(--wp--preset--color--teal-600); }
.pow-pincode-checker__package-price { font-weight: 700; color: var(--wp--preset--color--ink); white-space: nowrap; }
.pow-pincode-checker__skip-wa { font-size: 14px; color: var(--wp--preset--color--muted); align-self: center; min-height: 44px; display: inline-flex; align-items: center; }

/* ---------- Trust counter row ---------- */

.pow-trust-counter-row { display: flex; flex-wrap: wrap; gap: 32px; justify-content: center; padding-block: var(--wp--preset--spacing--48); }

.pow-reviews-hero { display: flex; flex-wrap: wrap; gap: 32px; align-items: flex-end; justify-content: space-between; }
.pow-reviews-write { display: flex; flex-wrap: wrap; gap: 48px; align-items: flex-start; }

/* ---------- Review submission form ---------- */

.pow-review-form { padding: 28px; display: flex; flex-direction: column; gap: 18px; }
.pow-review-form__row { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 16px; }
.pow-review-form__row > div { display: flex; flex-direction: column; gap: 6px; }
.pow-review-form__help { font-size: 14px; color: var(--wp--preset--color--muted); }
.pow-review-form__honeypot { position: absolute !important; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.pow-review-form__consent { display: flex; gap: 10px; align-items: flex-start; font-size: 15px; }
/* Dog/Cat grooming pages, the 4 "Made for dogs/cats" cards: some titles
   wrap to 2 lines ("Large and double-coated breeds") and some don't
   ("Puppies"), so the paragraph below starts at a different height card
   to card. Reserve 2 lines for every title regardless. */
.pow-feature-grid h3 { min-height: 2lh; }

/* ---------- About: founder, facts, cards (CHANGELOG entry 13, §4) ---------- */

/* ---------- About page: Our story, Mission, Co-founders (CHANGELOG entry 23; approved design, 21 Oct 2026) ---------- */
.pow-story, .pow-mission, .pow-cofounders { --pow-radius-card: 24px; }
/* Own spacing: these sections set their margins and list styles themselves (zero-specificity reset). */
:where(.pow-story, .pow-mission, .pow-cofounders) :is(p, ul, ol, blockquote, figure, h2, h3) { margin: 0; }
:where(.pow-story, .pow-mission, .pow-cofounders) :is(ul, ol) { padding: 0; list-style: none; }
/* ---------- Our story ---------- */
.pow-story { background: #fff; padding-block: clamp(56px, 8vw, 96px); }
.pow-story__top { display: grid; grid-template-columns: minmax(0, 6fr) minmax(0, 5fr); gap: clamp(32px, 5vw, 64px); align-items: center; }
.pow-story__intro { display: flex; flex-direction: column; gap: 16px; min-width: 0; }
.pow-story__intro h2 { font-size: clamp(32px, 4.4vw, 44px); }
.pow-story__p1 { font-size: 20px; line-height: 1.55; color: var(--wp--preset--color--ink); font-weight: 500; }
.pow-story__p2 { font-size: 18px; line-height: 1.7; padding-left: 18px; border-left: 3px solid var(--wp--preset--color--yellow-500); }
.pow-story__problem { background: #F3F7F6; border: 1px solid var(--wp--preset--color--teal-50); border-radius: 24px; padding: 28px; display: flex; flex-direction: column; gap: 18px; min-width: 0; }
.pow-story__p3 { font-size: 17px; line-height: 1.6; color: var(--wp--preset--color--ink); }
.pow-story__p3 strong { color: var(--wp--preset--color--teal-600); }
.pow-story__steps { list-style: none; padding: 0; display: flex; flex-direction: column; gap: 0; position: relative; }
.pow-story__steps::before { content: ""; position: absolute; left: 19px; top: 20px; bottom: 20px; border-left: 2px dashed var(--wp--preset--color--teal-300); }
.pow-story__steps li { position: relative; display: flex; align-items: center; gap: 14px; padding: 7px 0; font-weight: 600; color: var(--wp--preset--color--teal-600); font-size: 16px; line-height: 1.4; }
.pow-story__steps .ic { flex: 0 0 40px; height: 40px; border-radius: 50%; background: #fff; border: 2px solid var(--wp--preset--color--teal-100); display: inline-flex; align-items: center; justify-content: center; color: var(--wp--preset--color--teal-600); position: relative; }

.pow-story__turn { margin-top: clamp(40px, 6vw, 64px); background: var(--wp--preset--color--teal-600); color: #fff; border-radius: 24px; padding: clamp(28px, 4vw, 44px); display: flex; flex-direction: column; gap: 16px; position: relative; overflow: hidden; }
.pow-story__turn::after { content: ""; position: absolute; right: -80px; bottom: -120px; width: 320px; height: 320px; border-radius: 50%; background: radial-gradient(closest-side, rgba(252,200,55,.22), rgba(252,200,55,0)); pointer-events: none; }
.pow-story__question { font-family: var(--wp--preset--font-family--heading); font-weight: 700; font-size: clamp(26px, 3.6vw, 38px); line-height: 1.15; color: #fff; max-width: 30ch; text-wrap: balance; position: relative; }
.pow-story__question span { color: var(--wp--preset--color--yellow-500); }
.pow-story__born { display: inline-flex; align-items: center; gap: 10px; font-size: 18px; font-weight: 600; color: var(--wp--preset--color--teal-50); position: relative; }
.pow-story__born svg { color: var(--wp--preset--color--yellow-500); flex: none; }

.pow-story__ends { margin-top: 24px; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; }
.pow-story__ends p { padding: 24px 26px; border-radius: 16px; font-size: 17px; line-height: 1.65; min-width: 0; }
.pow-story__goal { background: var(--wp--preset--color--yellow-100); color: var(--wp--preset--color--ink); }
.pow-story__goal strong { display: block; font-family: var(--wp--preset--font-family--heading); font-size: 22px; color: var(--wp--preset--color--teal-600); margin-bottom: 4px; }
.pow-story__start { background: var(--wp--preset--color--cream); border: 1px solid var(--wp--preset--color--line); }

/* ---------- Mission statement ---------- */
.pow-mission { background: var(--wp--preset--color--teal-900); color: var(--wp--preset--color--teal-50); padding-block: clamp(56px, 8vw, 96px); }
.pow-mission__head { display: flex; flex-direction: column; gap: 14px; max-width: 760px; }
.pow-mission .pow-eyebrow { color: var(--wp--preset--color--yellow-500); }
.pow-mission h2 { color: #fff; font-size: clamp(30px, 4.2vw, 44px); }
.pow-mission .lead { font-size: 19px; line-height: 1.6; color: var(--wp--preset--color--teal-50); }
.pow-mission__combine-label { margin-top: 40px; font-weight: 700; font-size: 14px; letter-spacing: .07em; text-transform: uppercase; color: var(--wp--preset--color--teal-300); }
.pow-mission__combine { list-style: none; padding: 0; margin-top: 14px; display: grid; grid-template-columns: repeat(4, max-content); justify-content: start; column-gap: 40px; row-gap: 12px; }
.pow-mission__combine li {
  position: relative; display: flex; align-items: center; gap: 12px; min-height: 64px;
  padding: 10px 18px 10px 10px; border-radius: 14px; background: rgba(255,255,255,.06); border: 1px solid rgba(160,187,185,.30);
  font-family: var(--wp--preset--font-family--heading); font-size: 18px; font-weight: 700; line-height: 1.2; color: #fff; min-width: 0;
}
.pow-mission__combine .ic { flex: 0 0 44px; width: 44px; height: 44px; border-radius: 12px; background: var(--wp--preset--color--yellow-500); color: var(--wp--preset--color--teal-900); display: inline-flex; align-items: center; justify-content: center; }
.pow-mission__combine .ic svg { width: 24px; height: 24px; }
.pow-mission__combine li + li::before {
  content: "+"; position: absolute; left: -32px; top: 50%; transform: translateY(-50%);
  width: 24px; height: 24px; border-radius: 50%; background: var(--wp--preset--color--teal-600); color: var(--wp--preset--color--yellow-500);
  font-family: var(--wp--preset--font-family--body); font-size: 18px; font-weight: 700; line-height: 24px; text-align: center;
}
.pow-mission__close { margin-top: 36px; font-family: var(--wp--preset--font-family--heading); font-size: clamp(22px, 2.6vw, 28px); font-weight: 600; line-height: 1.25; color: var(--wp--preset--color--yellow-500); max-width: 34ch; }
/* ================================================================
   CO-FOUNDERS (the redesigned section)
   ================================================================ */
.pow-cofounders { background: var(--wp--preset--color--cream); padding-block: clamp(56px, 8vw, 96px); position: relative; overflow: hidden; }
.pow-cofounders::before { /* soft yellow glow behind the cards */
  content: ""; position: absolute; width: 720px; height: 720px; border-radius: 50%;
  right: -260px; top: -260px; background: radial-gradient(closest-side, rgba(252,200,55,.20), rgba(252,200,55,0));
  pointer-events: none;
}
.pow-cofounders__intro { position: relative; display: flex; flex-direction: column; gap: 12px; max-width: 640px; margin-bottom: clamp(32px, 5vw, 52px); }
.pow-cofounders__intro h2 { font-size: clamp(32px, 4.4vw, 44px); }
.pow-cofounders__intro p.lead { font-size: 18px; line-height: 1.6; }
.pow-cofounders__intro .pow-eyebrow { display: inline-flex; align-items: center; gap: 8px; }
.pow-cofounders__intro .pow-eyebrow svg { color: var(--wp--preset--color--amber-700); }

/* Desktop: one grid, 5 shared rows (head, highlight, facts, lede, more). Each card spans all
   5 rows and uses subgrid, so both cards are the same height and every part lines up. */
.pow-cofounders__grid {
  --card-pad: 28px;
  position: relative; display: grid;
  grid-template-columns: minmax(0, 1fr) 72px minmax(0, 1fr);
  grid-template-rows: repeat(4, auto);
  row-gap: 20px;
}

/* --- one co-founder card --- */
.pow-cofounder {
  background: #fff; border: 1px solid var(--wp--preset--color--line); border-radius: 24px; box-shadow: 0 1px 2px rgba(9,43,40,.06), 0 12px 32px rgba(9,43,40,.10);
  overflow: hidden; min-width: 0; font-size: 17px; line-height: 1.7;
  grid-row: 1 / span 4; display: grid; grid-template-rows: subgrid;
}
.pow-cofounder:first-of-type { grid-column: 1; }
.pow-cofounder:last-of-type { grid-column: 3; }
.pow-cofounder > :not(.pow-cofounder__head) { margin-inline: var(--card-pad); min-width: 0; }
.pow-cofounder > .pow-cofounder__highlight { margin-top: 10px; }
.pow-cofounder > .pow-cofounder__facts { align-self: start; }
.pow-cofounder > .pow-cofounder__lede { align-self: start; margin-bottom: var(--card-pad); }
.pow-cofounder__head {
  position: relative; background: var(--wp--preset--color--teal-600); color: #fff;
  display: grid; grid-template-columns: 140px minmax(0, 1fr); gap: 22px; align-items: center;
  padding: 28px 28px 30px;
  background-image:
    radial-gradient(circle at 100% 0%, rgba(252,200,55,.18) 0, rgba(252,200,55,0) 46%),
    radial-gradient(circle at 0% 100%, rgba(46,183,173,.22) 0, rgba(46,183,173,0) 50%);
}
.pow-cofounder__figure { position: relative; width: 140px; max-width: 100%; aspect-ratio: 1; }
.pow-cofounder__ring { width: 100%; height: 100%; border-radius: 50%; padding: 5px; background: var(--wp--preset--color--yellow-500); box-shadow: 0 10px 24px rgba(9,43,40,.35); }
.pow-cofounder__photo { width: 100%; height: 100%; border-radius: 50%; object-fit: cover; display: block; border: 4px solid #fff; background: #fff; }
.pow-cofounder__label {
  position: absolute; left: 50%; bottom: -10px; transform: translateX(-50%);
  display: inline-flex; align-items: center; gap: 5px; white-space: nowrap;
  background: #fff; color: var(--wp--preset--color--teal-600); border: 2px solid var(--wp--preset--color--yellow-500);
  font-size: 12px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase;
  padding: 3px 10px 3px 8px; border-radius: 999px; line-height: 1.4;
}
.pow-cofounder__label svg { color: var(--wp--preset--color--teal-600); }
.pow-cofounder__titles { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.pow-cofounder__titles h3 { color: #fff; font-size: clamp(24px, 2.4vw, 28px); line-height: 1.12; text-wrap: wrap; }
.pow-cofounder__byline { display: flex; flex-direction: column; gap: 0; font-size: 15px; line-height: 1.45; color: var(--wp--preset--color--teal-100); }
.pow-cofounder__byline strong { color: var(--wp--preset--color--yellow-500); font-weight: 700; font-size: 16px; }
.pow-cofounder__titles .pow-eyebrow { color: var(--wp--preset--color--yellow-500); } /* editor only: the label above the heading */

.pow-cofounder__highlight {
  position: relative; display: flex; align-items: center; padding: 18px 20px 18px 56px; border-radius: 16px; background: var(--wp--preset--color--yellow-100);
  font-family: var(--wp--preset--font-family--heading); font-weight: 600; color: var(--wp--preset--color--teal-600); font-size: 21px; line-height: 1.3;
}
.pow-cofounder__highlight::before {
  content: "\201C"; position: absolute; left: 14px; top: 6px;
  font-family: var(--wp--preset--font-family--heading); font-size: 64px; line-height: 1; color: var(--wp--preset--color--yellow-600); font-weight: 800;
}
.pow-cofounder__highlight p { margin: 0; }

.pow-cofounder__facts { list-style: none; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.pow-cofounder__facts li {
  display: inline-flex; align-items: center; gap: 8px; padding: 7px 12px 7px 8px; border-radius: 10px;
  background: #F3F7F6; border: 1px solid var(--wp--preset--color--teal-50); color: var(--wp--preset--color--teal-600); font-size: 14px; font-weight: 600; line-height: 1.35;
}
.pow-cofounder__facts li span.ic { flex: 0 0 26px; height: 26px; border-radius: 8px; background: #fff; display: inline-flex; align-items: center; justify-content: center; color: var(--wp--preset--color--teal-600); }

.pow-cofounder__lede { color: var(--wp--preset--color--slate-600); }

/* --- full stories: exclusive accordions in their own row under the cards ---
   Cards above never change height. Closed: one button under each card.
   Open: that story spans the full row as a reading panel; the other stays a button. */
.pow-founder-story { align-self: start; margin-top: 4px; }
.pow-founder-story--a { grid-column: 1; }
.pow-founder-story--b { grid-column: 3; }
.pow-founder-story[open] { grid-column: 1 / -1; }
.pow-founder-story > summary {
  list-style: none; cursor: pointer; display: flex; align-items: center; justify-content: space-between; gap: 12px;
  min-height: 52px; padding: 0 18px 0 22px; border-radius: 999px;
  border: 2px solid var(--wp--preset--color--teal-600); background: #fff; color: var(--wp--preset--color--teal-600);
  font-weight: 700; font-size: 16px; line-height: 1.25;
  transition: background-color .2s ease, color .2s ease;
}
.pow-founder-story > summary::-webkit-details-marker { display: none; }
.pow-founder-story > summary::marker { content: ""; }
.pow-founder-story > summary:hover { background: var(--wp--preset--color--teal-50); }
.pow-founder-story > summary .chev { flex: none; transition: transform .25s ease; }
.pow-founder-story .when-open { display: none; }
.pow-founder-story[open] .when-open { display: inline; }
.pow-founder-story[open] .when-closed { display: none; }
.pow-founder-story[open] {
  background: #fff; border: 1px solid var(--wp--preset--color--line); border-radius: 24px;
  box-shadow: 0 1px 2px rgba(9,43,40,.06), 0 12px 32px rgba(9,43,40,.10); padding: 14px;
}
.pow-founder-story[open] > summary { display: inline-flex; background: var(--wp--preset--color--teal-600); color: #fff; border-color: var(--wp--preset--color--teal-600); }
.pow-founder-story[open] > summary:hover { background: var(--wp--preset--color--teal-700); }
.pow-founder-story[open] > summary .chev { transform: rotate(180deg); }
.pow-founder-story__panel {
  display: grid; grid-template-columns: 220px minmax(0, 70ch); gap: 40px;
  padding: 26px 18px 18px;
}
.pow-founder-story__aside { display: flex; flex-direction: column; gap: 6px; padding-top: 4px; border-top: 4px solid var(--wp--preset--color--yellow-500); }
.pow-founder-story__aside .pow-eyebrow { margin-top: 12px; }
.pow-founder-story__aside h3 { font-size: 28px; color: var(--wp--preset--color--teal-600); }
.pow-founder-story__role { font-size: 15px; color: var(--wp--preset--color--muted); }
.pow-founder-story__text { display: flex; flex-direction: column; gap: 18px; font-size: 17px; line-height: 1.75; min-width: 0; }

@media (prefers-reduced-motion: no-preference) {
  .pow-founder-story[open] .pow-founder-story__panel { animation: pow-story-in .32s ease-out; }
  @keyframes pow-story-in { from { opacity: 0; transform: translateY(-8px); } to { opacity: 1; transform: none; } }
}

/* --- decorative paw divider between the two cards (no text) --- */
.pow-cofounders__divider {
  grid-column: 2; grid-row: 1; align-self: center; justify-self: stretch;
  position: relative; display: flex; align-items: center; justify-content: center; height: 56px;
}
.pow-cofounders__divider::before { /* dashed line joining the two card headers */
  content: ""; position: absolute; top: 50%; left: -2px; right: -2px; border-top: 3px dashed var(--wp--preset--color--yellow-600); transform: translateY(-1.5px);
}
.pow-cofounders__paw {
  position: relative; width: 52px; height: 52px; border-radius: 50%; background: var(--wp--preset--color--yellow-500); color: var(--wp--preset--color--teal-600);
  display: flex; align-items: center; justify-content: center; border: 4px solid var(--wp--preset--color--cream);
  box-shadow: 0 6px 16px rgba(9,43,40,.16);
}

/* responsive */
@media (max-width: 1080px) {
  .pow-cofounder__head { grid-template-columns: 116px minmax(0, 1fr); gap: 18px; padding: 24px 22px 26px; }
  .pow-cofounder__figure { width: 116px; }
  .pow-cofounders__grid { --card-pad: 22px; grid-template-columns: minmax(0, 1fr) 60px minmax(0, 1fr); }
  .pow-founder-story__panel { grid-template-columns: 180px minmax(0, 1fr); gap: 28px; }
  .pow-mission__combine { grid-template-columns: repeat(2, minmax(0, 260px)); gap: 12px; }
  .pow-mission__combine li + li::before { display: none; }
}
@media (max-width: 900px) {
  .pow-story__top { grid-template-columns: minmax(0, 1fr); }
  .pow-story__ends { grid-template-columns: minmax(0, 1fr); gap: 16px; }
}
@media (max-width: 860px) {
  /* Phones and small tablets: stacked cards, each a simple column. */
  .pow-cofounders__grid { display: flex; flex-direction: column; max-width: 620px; }
  .pow-cofounder { display: flex; flex-direction: column; gap: 20px; }
  .pow-cofounder > .pow-cofounder__facts, .pow-cofounder > .pow-cofounder__lede { align-self: stretch; }
  .pow-founder-story--a, .pow-founder-story--b, .pow-founder-story[open] { grid-column: 1; }
  .pow-founder-story__panel { grid-template-columns: minmax(0, 1fr); gap: 20px; padding: 22px 8px 10px; }
  .pow-cofounders__divider { height: 96px; justify-content: center; }
  .pow-cofounders__divider::before { top: 0; bottom: 0; left: 50%; right: auto; border-top: 0; border-left: 3px dashed var(--wp--preset--color--yellow-600); transform: translateX(-1.5px); }
}
@media (max-width: 460px) {
  .pow-cofounder__head { grid-template-columns: 1fr; justify-items: start; gap: 22px; padding: 24px 20px 24px; }
  .pow-cofounder__figure { width: 128px; }
  .pow-cofounders__grid { --card-pad: 20px; }
  .pow-cofounder { font-size: 16px; }
  .pow-cofounder__highlight { font-size: 19px; padding: 16px 16px 16px 48px; }
  .pow-cofounder__highlight::before { left: 10px; font-size: 56px; }
  .pow-story__problem { padding: 22px 18px; }
  .pow-story__ends p { padding: 20px; }
  .pow-mission__combine { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
  .pow-mission__combine li { padding: 8px 12px 8px 8px; gap: 10px; font-size: 16px; }
  .pow-mission__combine .ic { flex-basis: 40px; width: 40px; height: 40px; }
}

@media (prefers-reduced-motion: reduce) {
	.pow-founder-story[open] .pow-founder-story__panel { animation: none; }
	.pow-founder-story > summary, .pow-founder-story > summary .chev { transition: none; }
}

/* What's next card: icon, copy and button in one row (replaces the two-card layout) */
.pow-about-cards:has(> .pow-about-card--next:only-child) { grid-template-columns: minmax(0, 1fr); }
.pow-about-card.pow-about-card--next { display: grid; grid-template-columns: 64px minmax(0, 1fr) auto; gap: 24px; align-items: center; }
.pow-about-card--next .pow-about-card__copy :is(h2, p) { margin: 0; }
.pow-about-card--next .pow-about-card__icon { width: 64px; height: 64px; border-radius: 18px; background: var(--wp--preset--color--yellow-100); color: var(--wp--preset--color--teal-600); display: flex; align-items: center; justify-content: center; }
.pow-about-card--next .pow-about-card__copy { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.pow-about-card--next .pow-about-card__copy p:not(.pow-eyebrow) { max-width: 70ch; margin: 0; }
@media (max-width: 900px) {
	.pow-about-card.pow-about-card--next { grid-template-columns: minmax(0, 1fr); gap: 16px; justify-items: start; }
	.pow-about-card--next .pow-btn { justify-self: start; }
}


.pow-about-facts { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 20px; }
.pow-about-fact { padding: 24px; display: flex; gap: 16px; align-items: center; }
.pow-about-fact__icon {
	flex: 0 0 52px; height: 52px; border-radius: 14px; background: var(--wp--preset--color--teal-50);
	display: flex; align-items: center; justify-content: center; color: var(--wp--preset--color--teal-600);
}
.pow-about-fact__text { display: flex; flex-direction: column; }
.pow-about-fact strong { display: block; font-family: var(--wp--preset--font-family--heading); font-size: 30px; line-height: 1.1; color: var(--wp--preset--color--teal-600); }
.pow-about-fact p { margin: 0; font-size: 15px; }

.pow-about-cards { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; align-items: stretch; }
.pow-about-card { padding: 32px; display: flex; flex-direction: column; gap: 14px; }
.pow-about-card h2 { font-size: 28px; }
.pow-about-card--next { background: var(--wp--preset--color--cream); }

@media (max-width: 900px) {
	.pow-about-cards { grid-template-columns: 1fr; }
}

/* ---------- Areas page (CHANGELOG entry 13, §6.3) ---------- */

/* align-items: start, not center — the checker's own card grows and
   shrinks as its result state changes (covered, loading, waitlist form),
   and centering against that height made the decorative art visibly
   shift position on every state change. Top-aligning it keeps it fixed. */
.pow-areas-hero__grid { display: grid; grid-template-columns: 6fr 5fr; gap: 48px; align-items: start; width: 100%; padding-top: 8px; }
.pow-areas-hero .pow-page-hero__copy { gap: 16px; }
@media (max-width: 767px) {
	/* The grid's 1fr track defaults to auto-sizing against its content's
	   min-content width — the checker form inside .pow-page-hero__copy is
	   wider than the 390px column, so the track (and the whole hero) grew
	   past the viewport instead of wrapping. minmax(0, 1fr) lets the track
	   shrink below that; width:auto/max-width:100% stop the copy box
	   itself re-asserting a fixed width inside it. */
	.pow-areas-hero__grid { grid-template-columns: minmax(0, 1fr); }
	.pow-areas-hero .pow-page-hero__copy { width: auto; max-width: 100%; }
}
.pow-areas-hero__art { color: var(--wp--preset--color--teal-300); }
.pow-areas-hero__art svg { width: 100%; height: auto; display: block; }

.pow-areas-zones { columns: 3; column-gap: 20px; }
.pow-areas-zone { break-inside: avoid; margin-bottom: 20px; padding: 24px; display: block; }
.pow-areas-zone__head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 16px; }
.pow-areas-zone__head h2 { font-size: 20px; margin: 0; }
.pow-areas-zone__list { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.pow-areas-pill {
	display: inline-flex; align-items: center; gap: 6px; padding: 8px 14px;
	border: 1.5px solid var(--wp--preset--color--teal-100); border-radius: var(--wp--custom--radius--pill);
	font-size: 14px; font-weight: 600; color: var(--wp--preset--color--teal-600); text-decoration: none;
}
.pow-areas-pill:hover { background: var(--wp--preset--color--teal-50); }
.pow-areas-pill svg { color: var(--wp--preset--color--teal-600); flex-shrink: 0; }

.pow-areas-outside {
	display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 16px;
	background: var(--wp--preset--color--yellow-100); border-radius: var(--wp--custom--radius--card);
	padding: 24px 28px;
}
.pow-areas-outside strong { display: block; font-size: 18px; color: var(--wp--preset--color--teal-700); }
.pow-areas-outside p { margin: 4px 0 0; }

@media (max-width: 960px) { .pow-areas-zones { columns: 2; } }
@media (max-width: 600px) { .pow-areas-zones { columns: 1; } }
@media (max-width: 900px) { .pow-areas-hero__grid { grid-template-columns: minmax(0, 1fr); } .pow-areas-hero__art { display: none; } }

/* ---------- Legal pages: compact header + pill tabs (CHANGELOG entry 13, §9) ---------- */

.pow-legal-header { background: var(--wp--preset--color--cream); border-bottom: 1px solid var(--wp--preset--color--line); padding-block: 40px; }
.pow-legal-header__row { display: flex; align-items: center; gap: 20px; }
.pow-legal-header__tile {
	flex-shrink: 0; width: 64px; height: 64px; border-radius: 18px; background: var(--wp--preset--color--teal-600);
	color: var(--wp--preset--color--yellow-500); display: flex; align-items: center; justify-content: center;
}
.pow-legal-header__meta { margin: 6px 0 0; color: var(--wp--preset--color--muted); font-size: 15px; }
.pow-legal-tabs { display: flex; flex-wrap: wrap; gap: 10px; }
.pow-legal-tabs__tab {
	display: inline-flex; align-items: center; gap: 8px; padding: 10px 16px;
	border: 1.5px solid var(--wp--preset--color--teal-100); border-radius: var(--wp--custom--radius--pill);
	color: var(--wp--preset--color--teal-600); font-weight: 700; font-size: 15px; text-decoration: none; background: #fff;
}
.pow-legal-tabs__tab.is-on { background: var(--wp--preset--color--teal-600); border-color: var(--wp--preset--color--teal-600); color: #fff; }

@media (max-width: 600px) {
	.pow-legal-header__row { align-items: flex-start; }
	.pow-legal-header__tile { width: 48px; height: 48px; border-radius: 14px; }
}

.pow-file-upload { position: relative; display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.pow-file-upload__name { font-size: 14px; color: var(--wp--preset--color--muted); }
/* The real file input is visually hidden; show a focus ring on the
   styled label that stands in for it when it's the keyboard focus
   (accessibility release gate: visible focus, CLAUDE.md rule 8). */
.pow-file-upload:has(input:focus-visible) label { outline: 3px solid var(--wp--preset--color--teal-600); outline-offset: 2px; }
.pow-review-form__consent input { width: 22px; height: 22px; margin-top: 2px; accent-color: var(--wp--preset--color--teal-600); flex-shrink: 0; }
.pow-review-form textarea.pow-field { padding-block: 12px; }
.pow-review-form input[type="file"] { font: inherit; margin-top: 4px; width: 100%; max-width: 100%; box-sizing: border-box; }
.pow-review-form__success { margin-top: 20px; padding: 28px; display: flex; flex-direction: column; align-items: center; text-align: center; gap: 8px; }
.pow-review-form__success svg { color: var(--wp--preset--color--success); }

.pow-radio-pill { position: relative; cursor: pointer; }
.pow-radio-pill input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.pow-radio-pill span {
	display: inline-flex; align-items: center; min-height: 44px; padding: 0 18px;
	border: 1.5px solid var(--wp--preset--color--line); border-radius: var(--wp--custom--radius--pill);
	font-weight: 600; color: var(--wp--preset--color--teal-600);
}
.pow-radio-pill input:checked ~ span { border: 2px solid var(--wp--preset--color--teal-600); background: var(--wp--preset--color--teal-600); color: #fff; }
.pow-radio-pill input:focus-visible ~ span { outline: 3px solid var(--wp--preset--color--teal-600); outline-offset: 2px; }

/* Review form "Dog or cat?" and star rating sit in a <fieldset> for a11y
   grouping, but the browser's default fieldset border/padding made them
   look boxed — reset it, same pattern as the segmented controls elsewhere. */
.pow-form__field { border: none; padding: 0; margin: 0; }
.pow-seg-radio { display: inline-flex; padding: 3px; border: 1.5px solid var(--wp--preset--color--teal-600); border-radius: var(--wp--custom--radius--pill); }
.pow-seg-radio label { position: relative; cursor: pointer; }
.pow-seg-radio input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.pow-seg-radio span {
	display: flex; align-items: center; justify-content: center; min-height: 40px; padding: 0 22px;
	border-radius: var(--wp--custom--radius--pill); font-weight: 700; color: var(--wp--preset--color--teal-600);
}
.pow-seg-radio input:checked ~ span { background: var(--wp--preset--color--teal-600); color: #fff; }
.pow-seg-radio input:focus-visible ~ span { outline: 3px solid var(--wp--preset--color--teal-600); outline-offset: 2px; }

.pow-star-rating { display: inline-flex; flex-direction: row-reverse; gap: 2px; justify-content: flex-end; }
.pow-star-rating input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.pow-star-rating label { font-size: 32px; line-height: 1; color: var(--wp--preset--color--line); cursor: pointer; padding: 2px; }
.pow-star-rating input:checked ~ label,
.pow-star-rating label:hover,
.pow-star-rating label:hover ~ label { color: var(--wp--preset--color--amber-700); }
.pow-star-rating input:focus-visible ~ label { outline: 3px solid var(--wp--preset--color--teal-600); outline-offset: 2px; }

/* ---------- Species tabs (Packages page: Dog / Cat) ----------
   CSS-only — both panels are server-rendered up front (cheap: 3-4 package
   rows each), toggled with :has() so switching is instant with no reload
   and no extra script. Degrades to showing both panels stacked if :has()
   isn't supported, never to a broken/empty page. */

/* WordPress auto-adds is-layout-constrained to .pow-species-panel (it sits
   between block comments inside the enclosing wp:group's constrained
   layout), which clamps and centers its children to the 680px content
   size. Not a layout we asked for here — override it back to full width. */
.pow-species-panel.is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)) {
	max-width: none;
	margin-left: 0 !important;
	margin-right: 0 !important;
}

.pow-species-tabs__switch { display: flex; gap: 10px; margin-bottom: 28px; }
.pow-species-panel--cat { display: none; }
/* Matched on the radio's value, not a hard-coded id, so every
   .pow-species-tabs instance on a page (e.g. Services' package toggle AND
   its separate price-factor toggle) toggles independently and correctly,
   however its two radios happen to be named. */
.pow-species-tabs:has(input[value="cat"]:checked) .pow-species-panel--dog { display: none; }
.pow-species-tabs:has(input[value="cat"]:checked) .pow-species-panel--cat { display: block; }

.pow-packages-compare { flex-direction: column; align-items: center; gap: 10px; text-align: center; padding-top: 24px; }
.pow-packages-compare__help { font-size: 14px; color: var(--wp--preset--color--muted); }
/* Higher specificity than the generic .pow-species-panel--dog/--cat
   show/hide rules above, so the compare block's "shown" state is flex
   (it needs to centre a button + help text) instead of their plain
   block, while still hiding/showing at the same breakpoint they do. */
.pow-species-panel--dog.pow-packages-compare { display: flex; }
.pow-species-tabs:has(input[value="cat"]:checked) .pow-species-panel--dog.pow-packages-compare { display: none; }
.pow-species-tabs:has(input[value="cat"]:checked) .pow-species-panel--cat.pow-packages-compare { display: flex; }

/* ---------- Blog ---------- */

.pow-blog-pills { display: flex; flex-wrap: wrap; gap: 8px; }
.pow-blog-pills .pow-pill.is-selected { border: 2px solid var(--wp--preset--color--teal-600); background: var(--wp--preset--color--teal-600); color: #fff; }

.pow-blog-grid-wrap { display: flex; flex-direction: column; gap: 32px; }
.pow-blog-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 24px; }
.pow-blog-card { overflow: hidden; display: flex; flex-direction: column; text-decoration: none !important; color: inherit !important; }
.pow-blog-card:hover h3 { text-decoration: underline; }
.pow-blog-card__media { aspect-ratio: 3 / 2; min-height: 0 !important; border-radius: 0 !important; }
.pow-blog-card__media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.pow-blog-card__body { padding: 20px; display: flex; flex-direction: column; gap: 8px; }
.pow-blog-card__cat { font-size: 12px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; color: var(--wp--preset--color--amber-700); }
.pow-blog-card__meta { font-size: 13px; color: var(--wp--preset--color--muted); margin: 0; }
.pow-blog-card h3 { font-size: 20px; margin: 0; }
.pow-blog-card--text { border: 1px solid var(--wp--preset--color--line); border-radius: var(--wp--custom--radius--card); }
.pow-blog-grid--text { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 16px; }

.pow-blog-featured .pow-blog-card { flex-direction: row; flex-wrap: wrap; }
.pow-blog-featured .pow-blog-card__media { flex: 1 1 420px; aspect-ratio: auto; min-height: 280px !important; }
.pow-blog-featured .pow-blog-card__body { flex: 1 1 360px; justify-content: center; padding: 32px; }
.pow-blog-featured .pow-blog-card h3 { font-size: 28px; }
.pow-blog-card__cta { margin-top: 8px; align-self: flex-start; pointer-events: none; }

.pow-blog-empty {
	padding: 40px 32px; display: flex; flex-direction: column; align-items: center; text-align: center; gap: 12px;
	background: var(--wp--preset--color--teal-50); border-style: dashed;
}
.pow-blog-empty svg { color: var(--wp--preset--color--teal-600); }

/* Article body ("prose") — the 720px column inside .pow-article-grid.
   Kept as its own class (not reusing .pow-container) since its max-width
   is narrower than the site's 1200px content width. */
.pow-article { max-width: 720px; min-width: 0; display: flex; flex-direction: column; gap: 18px; font-size: 18px; line-height: 1.7; }
.pow-article h2 { font-size: 30px; margin-top: 20px; }
/* WordPress's core table block defaults to a 1px border in the body text
   colour on every cell, which read as plain black grid lines. Match the
   site's own comparison-table look: light row dividers, teal header. */
.pow-article table { border-collapse: collapse; width: 100%; font-size: 16px; }
.pow-article table th, .pow-article table td { padding: 12px 14px; text-align: left; border: none; border-bottom: 1px solid var(--wp--preset--color--line); }
.pow-article table thead th { background: var(--wp--preset--color--teal-600); color: #fff; font-family: var(--wp--preset--font-family--heading); font-weight: 700; }
.pow-article ul, .pow-article ol { margin: 0; padding-left: 24px; display: flex; flex-direction: column; gap: 8px; }
.pow-article-image { width: 100%; height: auto; border-radius: var(--wp--custom--radius--card); display: block; }
.pow-article-tip { padding: 20px 24px; background: var(--wp--preset--color--yellow-100); border: 1px solid #F3E2B0; border-radius: var(--wp--custom--radius--card); display: flex; flex-direction: column; gap: 8px; }
.pow-article-cta { padding: 24px; flex-direction: row; flex-wrap: wrap; gap: 16px; align-items: center; justify-content: space-between; border: 2px solid var(--wp--preset--color--teal-600); margin-top: 12px; }
.pow-article-share { display: flex; gap: 16px; align-items: center; font-size: 15px; border-top: 1px solid var(--wp--preset--color--line); padding-top: 20px; margin-top: 12px; }
.pow-article-share a { font-weight: 700; }

/* Checklist ticks: force the svg and the text onto one baseline-aligned
   row regardless of how many lines the text wraps to — flex-start on its
   own left the icon sitting slightly high against multi-line text. */
.pow-check-list li { display: flex; gap: 10px; align-items: center; }
.pow-check-list svg { margin-top: 0; }

/* Split hero (About/Blog article): copy left, photo right, both on cream,
   collapsing to a fixed-height photo-on-top layout on phones. */
.pow-article-hero { background: var(--wp--preset--color--cream); padding-block: 40px 56px; }
.pow-article-hero__grid { display: grid; grid-template-columns: 7fr 5fr; gap: 48px; align-items: center; }
.pow-article-hero__copy { display: flex; flex-direction: column; gap: 16px; min-width: 0; }
/* H1/excerpt default margins stacked on top of the 16px flex gap, same
   bug as .pow-stack elsewhere — let gap be the only source of spacing.
   The category chip is a flex item too, so it stretched to the full
   column width by default; pin it to its own content width instead. */
.pow-article-hero__copy > * { margin-block: 0; }
.pow-article-hero__copy .pow-chip { align-self: flex-start; }
.pow-article-hero__img, .pow-article-hero__img img { width: 100%; aspect-ratio: 4 / 3; height: auto; object-fit: cover; border-radius: 20px; display: block; box-shadow: var(--wp--preset--shadow--raised); margin: 0; }
.pow-article-hero__meta { display: flex; flex-wrap: wrap; align-items: center; row-gap: 8px; column-gap: 10px; font-size: 15px; color: var(--wp--preset--color--muted); }
/* A literal "·" span between each meta item could wrap onto its own new
   line independently of the text around it (flex-wrap wraps each item
   separately), landing as a stray dot. A ::before on each item (skipping
   the first) always travels with its own item's text instead. */
.pow-article-hero__meta-item { display: flex; align-items: center; }
.pow-article-hero__meta-item:not(:first-child)::before { content: "\00b7"; margin-right: 10px; }
.pow-article-hero__author { display: flex; align-items: center; gap: 10px; }
.pow-article-hero__avatar { width: 36px; height: 36px; border-radius: var(--wp--custom--radius--pill); background: var(--wp--preset--color--teal-600); display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.pow-article-hero__author strong { color: var(--wp--preset--color--teal-600); }
@media (max-width: 760px) {
	.pow-article-hero__grid { grid-template-columns: 1fr; }
	.pow-article-hero__img { aspect-ratio: auto; height: 240px; border-radius: 16px; box-shadow: none; }
}

/* Article grid: 720px prose column + 260px "On this page" sidebar. The
   "Book a groom" button sits in the aside AFTER the nav, in normal flow.
   Making only the nav sticky left the button in its un-stuck scroll
   position, which drifted up underneath the pinned nav as the page
   scrolled (nav visually "stuck" at top:96 while the button kept
   scrolling with the page). Make the whole aside sticky instead, and the
   nav inside it static, so the nav and button scroll together as one
   unit and never overlap. The FAQ page's own .pow-faq-toc (not inside
   .pow-article-grid) keeps its own sticky behaviour, set elsewhere. */
.pow-article-grid { display: grid; grid-template-columns: minmax(0, 720px) 260px; gap: 64px; justify-content: space-between; align-items: start; padding-block: 56px 64px; }
.pow-article-grid > aside { position: sticky; top: 96px; align-self: start; max-height: calc(100vh - 120px); overflow: auto; }
.pow-article-grid .pow-faq-toc { position: static; }
.pow-article-toc__cta { width: 100%; margin-top: 24px; }
@media (max-width: 960px) {
	.pow-article-grid { grid-template-columns: minmax(0, 720px); justify-content: start; }
	.pow-article-grid > aside { display: none; }
	.pow-article-toc-mobile { display: block; }
}
@media (min-width: 961px) { .pow-article-toc-mobile { display: none; } }
.pow-article-toc-mobile { margin-bottom: 24px; }
.pow-article-toc-mobile summary { cursor: pointer; font-weight: 700; color: var(--wp--preset--color--teal-600); padding: 12px 16px; border: 1px solid var(--wp--preset--color--line); border-radius: var(--wp--custom--radius--card); list-style: none; }
.pow-article-toc-mobile summary::-webkit-details-marker { display: none; }
.pow-article-toc-mobile[open] summary { border-radius: var(--wp--custom--radius--card) var(--wp--custom--radius--card) 0 0; }
.pow-article-toc-mobile nav { display: flex; flex-direction: column; border: 1px solid var(--wp--preset--color--line); border-top: none; border-radius: 0 0 var(--wp--custom--radius--card) var(--wp--custom--radius--card); padding: 8px 16px; }
.pow-article-toc-mobile nav a { padding: 8px 0; color: var(--wp--preset--color--slate-600); text-decoration: none; }
.pow-article-toc-mobile nav a:hover { color: var(--wp--preset--color--teal-600); }

/* "More from the blog" teal fallback card, when fewer than 3 other posts
   exist yet to show there (Design-system Blog-post). */
.pow-blog-fallback-card {
	padding: 28px; display: flex; flex-direction: column; justify-content: center; gap: 12px;
	text-decoration: none !important; background: var(--wp--preset--color--teal-600); border: none;
}
.pow-blog-fallback-card__icon { width: 52px; height: 52px; border-radius: 14px; background: var(--wp--preset--color--yellow-500); display: flex; align-items: center; justify-content: center; color: var(--wp--preset--color--teal-600); }
.pow-blog-fallback-card strong { font-family: var(--wp--preset--font-family--heading); font-size: 24px; color: #fff; line-height: 1.2; }
.pow-blog-fallback-card__sub { color: var(--wp--preset--color--teal-50); }
.pow-blog-fallback-card__cta { color: var(--wp--preset--color--yellow-500); font-weight: 700; display: inline-flex; gap: 6px; align-items: center; }

/* ---------- Block editor only (never matches on the front end) ---------- */

/* pow/nav-group (header/footer navs) renders its InnerBlocks children
   wrapped in Gutenberg's own .block-editor-inner-blocks >
   .block-editor-block-list__layout divs inside the editor canvas — those
   classes don't exist in the real front-end markup at all, so this never
   affects the live site. Without this, that wrapper's default `display:
   block` makes every site-link stack vertically in the Site Editor canvas
   regardless of the real <nav>'s own flex layout, because flex only
   affects direct children and the wrapper sits between the two. Mirror
   each nav's real display/flex-direction here so the canvas preview
   matches the live site. */
.pow-header__nav .block-editor-block-list__layout {
	display: flex; flex-wrap: wrap; gap: 28px; align-items: center;
}
.pow-footer__legal .block-editor-block-list__layout {
	display: flex; flex-wrap: wrap; gap: 16px; align-items: center;
}
.pow-mobile-menu__nav .block-editor-block-list__layout {
	display: flex; flex-direction: column; gap: 4px;
}
.pow-footer__col .block-editor-block-list__layout {
	display: flex; flex-direction: column; gap: 10px;
}

/* Same bug, same fix, for every other real block whose InnerBlocks children
   are meant to sit in a row or grid rather than stack (session: converting
   the remaining Custom HTML blocks across the site introduced many more of
   these). Two generic rules cover the reusable `.pow-cluster`/`.pow-stack`
   layout primitives wherever they're used as a block's own wrapper class;
   the rest are one-off selectors matching each block's real CSS exactly. */
.pow-cluster .block-editor-block-list__layout {
	display: flex; flex-direction: row; flex-wrap: wrap; align-items: center;
}
.pow-stack .block-editor-block-list__layout {
	display: flex; flex-direction: column;
}
/* These selectors have the same specificity as the two generic rules above
   (one class + this shared suffix), so when a row/grid block happens to be
   nested inside a `.pow-stack` ancestor (e.g. the "How it works" row sits
   inside the section's own outer `.pow-stack`), the generic rule's explicit
   `flex-direction: column` would otherwise silently win since these rules
   didn't declare that property at all — not a specificity loss, just
   nothing here to contest it. Every rule below sets `flex-direction`
   (or `display: grid`, immune to this particular collision) explicitly so
   none of them can inherit the wrong value from a `.pow-stack` ancestor. */
.pow-how-row .block-editor-block-list__layout {
	display: flex; flex-direction: row; align-items: stretch; gap: 20px;
}
.pow-home-why .block-editor-block-list__layout {
	display: flex; flex-direction: row; flex-wrap: wrap; gap: 48px; align-items: center;
}
.pow-home-why__media .block-editor-block-list__layout {
	display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px;
}
.pow-hero__grid .block-editor-block-list__layout {
	display: flex; flex-direction: row; flex-wrap: wrap; gap: 48px; align-items: start;
}
.pow-article-grid .block-editor-block-list__layout {
	display: grid; grid-template-columns: minmax(0, 720px) 260px; gap: 64px; justify-content: space-between; align-items: start;
}
.pow-article-hero__grid .block-editor-block-list__layout {
	display: grid; grid-template-columns: 7fr 5fr; gap: 48px; align-items: center;
}
.pow-about-cards .block-editor-block-list__layout {
	display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; align-items: stretch;
}
.pow-faq-layout .block-editor-block-list__layout {
	display: flex; flex-direction: row; gap: 48px; align-items: flex-start;
}
.pow-reviews-write .block-editor-block-list__layout {
	display: flex; flex-direction: row; flex-wrap: wrap; gap: 48px; align-items: flex-start;
}
.pow-article-hero__meta .block-editor-block-list__layout {
	display: flex; flex-direction: row; flex-wrap: wrap; align-items: center; row-gap: 8px; column-gap: 10px;
}
.pow-article-share .block-editor-block-list__layout {
	display: flex; flex-direction: row; gap: 16px; align-items: center;
}
.pow-sticky-cta .block-editor-block-list__layout {
	display: grid; grid-template-columns: 1fr 1fr; gap: 10px;
}
