/*
Theme Name: Phil Richmond Builders
Theme URI: https://philrichmondbuilders.co.nz
Author: webaddress
Author URI: https://webaddress.host
Description: Photo-led trade site for Phil Richmond Builders Ltd — experienced builders across Christchurch and Canterbury. Block theme, three surfaces: Home/About, Gallery, Contact.
Requires at least: 6.5
Tested up to: 6.9
Requires PHP: 8.0
Version: 1.0.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: phil-richmond-builders
Tags: block-theme, business, portfolio, one-column, full-width-template, custom-colors, custom-menu

Hanken Grotesk is licensed under the SIL Open Font License 1.1.
*/

/* ---------------------------------------------------------------------------
   Base
   Tokens come from theme.json. Nothing here re-declares a colour or a size
   that a preset already owns.
--------------------------------------------------------------------------- */

*,
*::before,
*::after {
	box-sizing: border-box;
}

body {
	text-wrap: pretty;
	-webkit-font-smoothing: antialiased;
	/*
	 * `clip`, not `hidden`. Both stop sideways overflow, but `hidden` makes
	 * body a scroll container, which silently kills position:sticky on the nav.
	 */
	overflow-x: clip;
}

/*
 * Template-part wrappers must not become the sticky containing block. The
 * header part's div is only as tall as the nav itself, so the nav would stick
 * for exactly its own height and then scroll away with the wrapper.
 */
.wp-block-template-part {
	display: contents;
}

h1,
h2,
h3 {
	text-wrap: balance;
}

::selection {
	background: var(--wp--custom--selection);
}

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

img,
picture {
	max-width: 100%;
}

.prb-pic {
	display: block;
}

.prb-pic img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

/* Radius zero is a design commitment, not a default. */
.wp-block-button__link,
.wp-block-image img,
input,
select,
textarea {
	border-radius: 0;
}

.prb-shell {
	max-width: 1440px;
	margin-inline: auto;
	padding-inline: var(--wp--preset--spacing--70);
}

.prb-section {
	padding-block: var(--wp--preset--spacing--80);
}

.prb-eyebrow {
	font-size: var(--wp--preset--font-size--eyebrow);
	font-weight: 600;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	margin: 0 0 16px;
	color: var(--wp--preset--color--orange-ink);
}

.prb-eyebrow--on-navy {
	color: var(--wp--preset--color--orange-lit);
}

.prb-lede {
	color: var(--wp--preset--color--muted);
	max-width: var(--wp--custom--measure--body);
}

/* Small shared rhythm helpers, replacing what used to be inline nudges. */
.prb-section-head {
	margin: 0 0 26px;
}

.prb-subhead {
	font-size: var(--wp--preset--font-size--subtitle);
}

.prb-mt-lg {
	margin-top: 26px;
}

.prb-measure-tight {
	max-width: 44ch;
}

/* ---------------------------------------------------------------------------
   Buttons
--------------------------------------------------------------------------- */

.prb-btn {
	display: inline-block;
	font-weight: 700;
	font-size: 15.5px;
	line-height: 1.2;
	padding: 14px 26px;
	text-decoration: none;
	white-space: nowrap;
	border: 2px solid transparent;
	transition: background-color 120ms ease, color 120ms ease, border-color 120ms ease;
}

.prb-btn--solid {
	background: var(--wp--preset--color--orange);
	color: var(--wp--preset--color--navy);
}

.prb-btn--solid:hover,
.prb-btn--solid:focus-visible {
	background: var(--wp--custom--orange-hover);
	color: var(--wp--preset--color--navy);
}

.prb-btn--ghost {
	border-color: color-mix(in srgb, var(--wp--preset--color--cream) 60%, transparent);
	color: var(--wp--preset--color--cream);
	padding: 12px 26px;
}

.prb-btn--ghost:hover,
.prb-btn--ghost:focus-visible {
	border-color: var(--wp--preset--color--cream);
	color: var(--wp--preset--color--white);
}

.prb-btn--outline {
	border-color: var(--wp--preset--color--navy);
	color: var(--wp--preset--color--navy);
	padding: 12px 26px;
}

.prb-btn--outline:hover,
.prb-btn--outline:focus-visible {
	background: var(--wp--preset--color--navy);
	color: var(--wp--preset--color--white);
}

.prb-btn-row {
	display: flex;
	gap: 12px;
	flex-wrap: wrap;
}

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

.prb-nav {
	display: flex;
	align-items: center;
	gap: 28px;
	flex-wrap: wrap;
	padding: 12px var(--wp--preset--spacing--70);
	background: var(--wp--preset--color--navy);
	position: sticky;
	top: 0;
	z-index: 20;
}

.prb-nav__logo {
	display: block;
	line-height: 0;
}

.prb-nav__logo img {
	height: 46px;
	width: auto;
	display: block;
}

.prb-nav__spacer {
	flex: 1;
}

.prb-nav__links {
	display: flex;
	align-items: center;
	gap: 28px;
	flex-wrap: wrap;
}

.prb-nav__link {
	font-weight: 600;
	font-size: var(--wp--preset--font-size--small);
	text-decoration: none;
	color: var(--wp--preset--color--cream-soft);
	/* 13 + 19 + 13 = 45px, clearing the 44px touch target. */
	padding: 13px 4px;
	line-height: 19px;
}

.prb-nav__link:hover,
.prb-nav__link:focus-visible {
	color: var(--wp--custom--orange-hover);
}

.prb-nav__link[aria-current="page"] {
	color: var(--wp--preset--color--orange);
}

.prb-nav .prb-btn {
	font-size: var(--wp--preset--font-size--small);
	padding: 11px 22px;
}

@media (max-width: 560px) {
	.prb-nav {
		gap: 14px 18px;
	}

	.prb-nav__links {
		gap: 18px;
	}

	.prb-nav__logo img {
		height: 38px;
	}
}

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

.prb-hero {
	position: relative;
}

.prb-hero__media,
.prb-hero__media img {
	width: 100%;
	height: var(--wp--custom--hero-height);
	object-fit: cover;
	display: block;
}

.prb-hero__scrim {
	position: absolute;
	inset: 0;
	background: var(--wp--custom--scrim);
	pointer-events: none;
}

.prb-hero__body {
	position: absolute;
	left: var(--wp--preset--spacing--70);
	right: var(--wp--preset--spacing--70);
	bottom: clamp(32px, 5vw, 52px);
	color: var(--wp--preset--color--cream);
	max-width: 1440px;
	margin-inline: auto;
}

.prb-hero__body h1 {
	color: var(--wp--preset--color--cream);
	margin: 0;
	max-width: var(--wp--custom--measure--headline);
}

.prb-hero .prb-btn-row {
	margin-top: 28px;
}

/* ---------------------------------------------------------------------------
   Trust strip
--------------------------------------------------------------------------- */

/*
 * Three cells since the unconfirmed fourth was cut. Fixed columns rather than
 * auto-fit: with an odd count, auto-fit orphans the last cell onto its own row
 * at intermediate widths. Three across, then a clean stack.
 */
.prb-trust {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 1px;
	background: var(--wp--preset--color--hairline);
	border-bottom: 1px solid var(--wp--preset--color--hairline);
}

@media (max-width: 700px) {
	.prb-trust {
		grid-template-columns: 1fr;
	}
}

.prb-trust__cell {
	background: var(--wp--preset--color--cream);
	padding: 22px 24px;
}

.prb-trust__cell:first-child {
	padding-inline-start: var(--wp--preset--spacing--70);
}

.prb-trust__cell:last-child {
	padding-inline-end: var(--wp--preset--spacing--70);
}

.prb-trust__lead {
	display: block;
	font-weight: 800;
	font-size: var(--wp--preset--font-size--stat);
	color: var(--wp--preset--color--navy);
	letter-spacing: -0.015em;
}

.prb-trust__sub {
	display: block;
	font-size: var(--wp--preset--font-size--eyebrow);
	color: var(--wp--preset--color--muted);
	margin-top: 2px;
}

/* ---------------------------------------------------------------------------
   Two-column bands
--------------------------------------------------------------------------- */

.prb-split {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
	gap: 36px clamp(32px, 5vw, 72px);
	align-items: center;
}

.prb-about {
	padding-block: var(--wp--preset--spacing--90);
}

.prb-about .prb-pic {
	aspect-ratio: 4 / 3;
}

/* ---------------------------------------------------------------------------
   Service cards
--------------------------------------------------------------------------- */

.prb-band--white {
	background: var(--wp--preset--color--white);
	border-block: 1px solid var(--wp--preset--color--hairline);
}

.prb-cards {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
	gap: var(--wp--preset--spacing--30);
}

/*
 * Borders that bound something clickable use the darker hairline: at 3:1 the
 * card edge is visible to low-vision users, so five links read as five links
 * rather than one block of text. Decorative rules keep the lighter value.
 */
.prb-card {
	background: var(--wp--preset--color--white);
	border: 1px solid var(--wp--preset--color--hairline-ui);
	padding: 24px 22px;
	text-decoration: none;
	display: block;
	transition: background-color 120ms ease;
}

.prb-card:hover,
.prb-card:focus-visible {
	background: var(--wp--preset--color--tint);
}

.prb-card__rule {
	display: block;
	width: 26px;
	height: var(--wp--custom--rule--accent);
	background: var(--wp--preset--color--orange);
	margin-bottom: 14px;
}

.prb-card__title {
	display: block;
	font-weight: 800;
	font-size: 18px;
	margin-bottom: 8px;
	color: var(--wp--preset--color--navy);
	letter-spacing: -0.015em;
}

.prb-card__copy {
	display: block;
	font-size: 14.5px;
	line-height: 1.6;
	color: var(--wp--preset--color--muted);
}

/* ---------------------------------------------------------------------------
   Navy bands
--------------------------------------------------------------------------- */

.prb-band--navy {
	background: var(--wp--preset--color--navy);
	color: var(--wp--preset--color--cream-soft);
}

.prb-band--navy h2,
.prb-band--navy h3 {
	color: var(--wp--preset--color--cream-soft);
}

.prb-band--navy p {
	color: color-mix(in srgb, var(--wp--preset--color--cream-soft) 78%, transparent);
}

.prb-oneoff {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
	align-items: stretch;
	max-width: 1440px;
	margin-inline: auto;
}

.prb-oneoff .prb-pic,
.prb-oneoff .prb-pic img {
	width: 100%;
	height: 100%;
	min-height: 320px;
	object-fit: cover;
}

.prb-oneoff__body {
	padding: clamp(38px, 4.5vw, 60px) var(--wp--preset--spacing--70);
}

.prb-oneoff__body h2 {
	line-height: 1.2;
	max-width: 22ch;
	margin: 0;
}

.prb-oneoff__body p {
	max-width: 48ch;
}

/* ---------------------------------------------------------------------------
   How Phil works
--------------------------------------------------------------------------- */

.prb-steps {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
	gap: var(--wp--preset--spacing--50) clamp(28px, 4vw, 56px);
}

.prb-step {
	border-top: var(--wp--custom--rule--accent) solid var(--wp--preset--color--navy);
	padding-top: 16px;
}

.prb-step h3 {
	margin: 0 0 8px;
}

.prb-step p {
	font-size: var(--wp--preset--font-size--small);
	line-height: 1.65;
	color: var(--wp--preset--color--muted);
	margin: 0;
	max-width: var(--wp--custom--measure--tight);
}

/* ---------------------------------------------------------------------------
   Proof band
--------------------------------------------------------------------------- */

.prb-proof {
	border-top: 1px solid color-mix(in srgb, var(--wp--preset--color--cream-soft) 14%, transparent);
}

.prb-proof__inner {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
	gap: 32px clamp(32px, 5vw, 72px);
	align-items: center;
	padding-block: clamp(48px, 5.5vw, 70px);
}

.prb-proof blockquote {
	margin: 0;
}

.prb-proof blockquote p {
	font-weight: 800;
	font-size: var(--wp--preset--font-size--quote);
	line-height: 1.34;
	letter-spacing: -0.015em;
	margin: 0;
	max-width: var(--wp--custom--measure--quote);
	color: var(--wp--preset--color--cream-soft);
}

.prb-proof blockquote footer {
	font-size: 15.5px;
	margin-top: 22px;
	color: var(--wp--preset--color--orange-lit);
}

.prb-cert {
	display: flex;
	align-items: center;
	gap: 20px;
	padding-inline-start: clamp(0px, 2vw, 28px);
	border-inline-start: var(--wp--custom--rule--accent) solid color-mix(in srgb, var(--wp--preset--color--orange-lit) 50%, transparent);
}

.prb-cert p {
	font-size: var(--wp--preset--font-size--small);
	line-height: 1.65;
	margin: 0;
	max-width: var(--wp--custom--measure--quote);
}

/*
 * The NZCB mark is a third-party trademark reproduced as issued — dark on
 * light. On navy it sits on its own light plate rather than being recoloured.
 */
.prb-cert__badge {
	flex: none;
	background: var(--wp--preset--color--white);
	padding: 10px 12px;
	line-height: 0;
}

/*
 * On a light background the badge needs neither the accent rule nor the white
 * plate that lifts it off navy. A variant, rather than the inline overrides
 * that previously fought these same rules from the markup.
 */
.prb-cert--bare {
	border-inline-start: 0;
	padding-inline-start: 0;
}

.prb-cert--bare .prb-cert__badge {
	background: transparent;
	padding: 0;
}

.prb-cert--bare p {
	color: var(--wp--preset--color--muted);
}

.prb-cert__badge img {
	height: 96px;
	width: auto;
	display: block;
}

/* ---------------------------------------------------------------------------
   Featured projects
--------------------------------------------------------------------------- */

.prb-featured__head {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	gap: var(--wp--preset--spacing--30);
	flex-wrap: wrap;
	margin-bottom: 22px;
}

.prb-featured__head h2 {
	margin: 0;
}

.prb-morelink {
	font-weight: 700;
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--orange-ink);
	text-decoration: none;
}

.prb-morelink:hover,
.prb-morelink:focus-visible {
	text-decoration: underline;
	text-underline-offset: 3px;
}

/*
 * Fixed four, not auto-fit. There are exactly four featured projects, and
 * auto-fit was orphaning the fourth onto a row of its own at intermediate
 * widths. The row is a set, so it breaks 4 → 2 → 1 and never 3 + 1.
 */
.prb-tiles {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 20px var(--wp--preset--spacing--30);
}

@media (max-width: 900px) {
	.prb-tiles {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (max-width: 460px) {
	.prb-tiles {
		grid-template-columns: 1fr;
	}
}

.prb-tile {
	text-decoration: none;
	display: block;
}

.prb-tile .prb-pic {
	aspect-ratio: 4 / 3;
	overflow: hidden;
}

.prb-tile img {
	transition: transform 400ms cubic-bezier(0.2, 0.7, 0.3, 1);
}

.prb-tile:hover img,
.prb-tile:focus-visible img {
	transform: scale(1.03);
}

.prb-tile__name {
	display: block;
	font-weight: 700;
	font-size: 15.5px;
	margin-top: 10px;
	color: var(--wp--preset--color--navy);
}

.prb-tile__cat {
	display: block;
	font-size: var(--wp--preset--font-size--meta);
	color: var(--wp--preset--color--muted);
	margin-top: 2px;
}

@media (prefers-reduced-motion: reduce) {
	.prb-tile img {
		transition: none;
	}

	.prb-tile:hover img,
	.prb-tile:focus-visible img {
		transform: none;
	}
}

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

.prb-cta {
	background: var(--wp--preset--color--white);
	border-top: 1px solid var(--wp--preset--color--hairline);
}

.prb-cta__inner {
	display: flex;
	align-items: center;
	gap: 20px 24px;
	padding-block: clamp(34px, 4vw, 46px);
	flex-wrap: wrap;
}

.prb-cta__copy {
	flex: 1;
	min-width: 280px;
}

.prb-cta__copy p:first-child {
	font-weight: 800;
	font-size: clamp(22px, 2.3vw, 28px);
	letter-spacing: -0.02em;
	margin: 0;
	color: var(--wp--preset--color--navy);
}

.prb-cta__copy p:last-child {
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--muted);
	margin: 6px 0 0;
}

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

.prb-footer {
	background: var(--wp--preset--color--navy);
	color: color-mix(in srgb, var(--wp--preset--color--cream-soft) 72%, transparent);
}

.prb-footer__inner {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 12px 28px;
	flex-wrap: wrap;
	padding-block: 26px;
	font-size: var(--wp--preset--font-size--meta);
}

.prb-footer a {
	color: color-mix(in srgb, var(--wp--preset--color--cream-soft) 72%, transparent);
	text-decoration: none;
}

.prb-footer a:hover,
.prb-footer a:focus-visible {
	color: var(--wp--preset--color--cream);
	text-decoration: underline;
	text-underline-offset: 3px;
}

.prb-footer__mark {
	height: 38px;
	width: auto;
	display: block;
}

/* ---------------------------------------------------------------------------
   Gallery
--------------------------------------------------------------------------- */

.prb-gallery__head {
	padding-block: var(--wp--preset--spacing--80) var(--wp--preset--spacing--50);
}

.prb-gallery__head h1 {
	margin: 0;
	max-width: 24ch;
}

/*
 * The header nav wraps on narrow screens — 70px on desktop, 119px at 430px —
 * so the category bar's offset cannot be a fixed number. gallery-spy.js
 * measures the nav and publishes --prb-nav-h; these fallbacks cover the
 * desktop case if that script never runs.
 */
.prb-catnav {
	position: sticky;
	top: var(--prb-nav-h, 70px);
	z-index: 15;
	background: var(--wp--preset--color--cream);
	border-block: 1px solid var(--wp--preset--color--hairline);
}

.prb-catnav__inner {
	display: flex;
	gap: var(--wp--preset--spacing--10);
	padding-block: 12px;
	overflow-x: auto;
	scrollbar-width: none;
}

.prb-catnav__inner::-webkit-scrollbar {
	display: none;
}

.prb-pill {
	background: var(--wp--preset--color--white);
	color: var(--wp--preset--color--ink);
	border: 1px solid var(--wp--preset--color--hairline-ui);
	padding: 9px 17px;
	white-space: nowrap;
	cursor: pointer;
	font-family: inherit;
	font-weight: 600;
	font-size: 14.5px;
	text-decoration: none;
	transition: background-color 120ms ease, color 120ms ease, border-color 120ms ease;
}

.prb-pill:hover,
.prb-pill:focus-visible {
	background: var(--wp--preset--color--tint);
	color: var(--wp--preset--color--ink);
}

.prb-pill[aria-current="true"] {
	background: var(--wp--preset--color--navy);
	color: var(--wp--preset--color--white);
	border-color: var(--wp--preset--color--navy);
}

.prb-project {
	border-top: var(--wp--custom--rule--accent) solid var(--wp--preset--color--navy);
	padding-block: var(--wp--preset--spacing--50) var(--wp--preset--spacing--80);
	/* Clear both sticky bars, whatever height they currently are. */
	scroll-margin-top: calc(var(--prb-nav-h, 70px) + var(--prb-catnav-h, 52px) + 8px);
}

.prb-project__head {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	gap: var(--wp--preset--spacing--30);
	flex-wrap: wrap;
}

.prb-project__head h2 {
	margin: 0;
}

.prb-project__cat {
	font-size: var(--wp--preset--font-size--pill);
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.1em;
	color: var(--wp--preset--color--orange-ink);
	white-space: nowrap;
}

.prb-project__blurb {
	color: var(--wp--preset--color--muted);
	max-width: var(--wp--custom--measure--blurb);
	margin: 14px 0 22px;
}

.prb-grid {
	display: grid;
	grid-template-columns: repeat(6, 1fr);
	gap: var(--wp--preset--spacing--30);
}

.prb-grid figure {
	margin: 0;
}

.prb-grid .prb-pic {
	width: 100%;
}

/*
 * Spans are assigned in PHP by prb_gallery_spans(). A lead photograph only
 * gets the full-width slot if its source can actually fill 1440px.
 */
.prb-span-6 {
	grid-column: span 6;
}

.prb-span-3 {
	grid-column: span 3;
}

.prb-span-2 {
	grid-column: span 2;
}

@media (max-width: 760px) {
	.prb-grid {
		grid-template-columns: repeat(2, 1fr);
	}

	.prb-grid figure {
		grid-column: span 1 !important;
	}

	.prb-grid .prb-pic {
		aspect-ratio: 4 / 3 !important;
	}
}

@media (max-width: 460px) {
	.prb-grid {
		grid-template-columns: 1fr;
	}
}

/* ---------------------------------------------------------------------------
   Contact
--------------------------------------------------------------------------- */

.prb-contact {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
	gap: 40px clamp(32px, 5vw, 72px);
	align-items: start;
	padding-block: var(--wp--preset--spacing--80);
}

.prb-phone {
	display: inline-block;
	font-size: var(--wp--preset--font-size--phone);
	font-weight: 800;
	letter-spacing: -0.02em;
	color: var(--wp--preset--color--orange-ink);
	text-decoration: none;
	line-height: 1.1;
}

.prb-phone:hover,
.prb-phone:focus-visible {
	text-decoration: underline;
	text-underline-offset: 4px;
}

.prb-contact__email {
	display: inline-block;
	margin-top: 10px;
	font-size: var(--wp--preset--font-size--lead);
	color: var(--wp--preset--color--ink);
}

.prb-contact__note {
	margin-top: 14px;
}

.prb-contact__note--small {
	font-size: var(--wp--preset--font-size--small);
}

.prb-divider {
	border: 0;
	border-top: 1px solid var(--wp--preset--color--hairline);
	margin-block: 28px;
}

.prb-areas {
	list-style: none;
	padding: 0;
	margin: 12px 0 0;
	display: flex;
	flex-wrap: wrap;
	gap: 8px 18px;
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--muted);
}

.prb-form-card {
	background: var(--wp--preset--color--white);
	border: 1px solid var(--wp--preset--color--hairline-ui);
	padding: clamp(22px, 3vw, 32px);
}

.prb-form-card h2 {
	margin-top: 0;
	font-size: var(--wp--preset--font-size--subtitle);
	margin-bottom: 20px;
}

.prb-field {
	margin-bottom: 16px;
}

.prb-field-row {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
	gap: 0 var(--wp--preset--spacing--30);
}

.prb-field label {
	display: block;
	font-size: var(--wp--preset--font-size--eyebrow);
	font-weight: 600;
	color: var(--wp--preset--color--navy);
	margin-bottom: 6px;
}

.prb-field input,
.prb-field select,
.prb-field textarea {
	width: 100%;
	font-family: inherit;
	font-size: var(--wp--preset--font-size--base);
	color: var(--wp--preset--color--ink);
	background: var(--wp--preset--color--white);
	border: 1px solid var(--wp--preset--color--hairline-ui);
	padding: 11px 13px;
	line-height: 1.4;
}

.prb-field input:focus-visible,
.prb-field select:focus-visible,
.prb-field textarea:focus-visible {
	border-color: var(--wp--preset--color--orange);
}

.prb-field textarea {
	resize: vertical;
	min-height: 120px;
}

.prb-form button {
	margin-top: 8px;
	border: 0;
	cursor: pointer;
	font-family: inherit;
}

/* ---------------------------------------------------------------------------
   Contact Form 7
   The plugin owns the markup; these rules make it wear the theme's system.
--------------------------------------------------------------------------- */

.wpcf7-form-control-wrap {
	display: block;
}

.wpcf7 input[type="text"],
.wpcf7 input[type="tel"],
.wpcf7 input[type="email"],
.wpcf7 select,
.wpcf7 textarea {
	width: 100%;
	font-family: inherit;
	font-size: var(--wp--preset--font-size--base);
	color: var(--wp--preset--color--ink);
	background: var(--wp--preset--color--white);
	border: 1px solid var(--wp--preset--color--hairline-ui);
	padding: 11px 13px;
	line-height: 1.4;
	border-radius: 0;
}

.wpcf7 textarea {
	resize: vertical;
	min-height: 120px;
}

.wpcf7 input[type="submit"] {
	border: 0;
	cursor: pointer;
	font-family: inherit;
	margin-top: 8px;
}

/*
 * A field that failed validation. Marked by weight and fill rather than a
 * side tab — the border thickens on all four edges, so the change reads as
 * the field itself changing state. The message underneath and the
 * aria-describedby link already carry the meaning without colour.
 */
.wpcf7 .wpcf7-not-valid {
	border-color: #b3261e;
	border-width: 2px;
	background: #fdf6f5;
}

.wpcf7-not-valid-tip {
	display: block;
	margin-top: 6px;
	font-size: var(--wp--preset--font-size--eyebrow);
	font-weight: 600;
	color: #8c1d18;
}

/*
 * The form-level response. CF7 gives this role="status"/"alert", so the
 * message is announced; these rules only make it visible and legible.
 */
.wpcf7-response-output {
	margin: 20px 0 0;
	padding: 14px 16px;
	border: 1px solid var(--wp--preset--color--hairline-ui);
	font-size: var(--wp--preset--font-size--small);
	line-height: 1.5;
}

.wpcf7 form.sent .wpcf7-response-output {
	border-color: #1e6b3a;
	background: #f1f8f3;
	color: #104826;
}

.wpcf7 form.invalid .wpcf7-response-output,
.wpcf7 form.unaccepted .wpcf7-response-output,
.wpcf7 form.payment-required .wpcf7-response-output {
	border-color: #b3261e;
	background: #fdf6f5;
	color: #8c1d18;
}

.wpcf7 form.failed .wpcf7-response-output,
.wpcf7 form.aborted .wpcf7-response-output {
	border-color: #8a5a00;
	background: #fdf8ee;
	color: #6b4600;
}

/* In-flight: the submit button reads as busy and cannot be pressed twice. */
.wpcf7 form.submitting input[type="submit"] {
	opacity: 0.65;
	cursor: progress;
}

.wpcf7-spinner {
	margin-inline-start: 12px;
}

/*
 * Honeypot. Removed visually, deliberately NOT hidden from assistive
 * technology: its label tells a screen-reader user to leave it empty, which is
 * kinder than an unexplained focusable input they cannot see.
 */
.prb-hp {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
}

/* Sticky mobile call bar */
.prb-callbar {
	display: none;
}

@media (max-width: 759px) {
	.prb-callbar {
		display: flex;
		position: fixed;
		left: 0;
		right: 0;
		bottom: 0;
		z-index: 30;
		gap: 1px;
		box-shadow: var(--wp--custom--call-bar-shadow);
	}

	.prb-callbar a {
		flex: 1;
		text-align: center;
		padding: 15px 12px;
		font-weight: 700;
		font-size: 15.5px;
		text-decoration: none;
	}

	.prb-callbar__call {
		background: var(--wp--preset--color--orange);
		color: var(--wp--preset--color--navy);
	}

	.prb-callbar__mail {
		background: var(--wp--preset--color--navy);
		color: var(--wp--preset--color--cream);
	}

	body {
		padding-bottom: 54px;
	}
}

/* ---------------------------------------------------------------------------
   Utility
--------------------------------------------------------------------------- */

.screen-reader-text {
	border: 0;
	clip-path: inset(50%);
	height: 1px;
	margin: -1px;
	overflow: hidden;
	padding: 0;
	position: absolute;
	width: 1px;
	word-wrap: normal !important;
}

.skip-link:focus {
	background: var(--wp--preset--color--orange);
	color: var(--wp--preset--color--navy);
	clip-path: none;
	height: auto;
	left: 8px;
	padding: 12px 20px;
	top: 8px;
	width: auto;
	z-index: 100000;
	font-weight: 700;
}
