/*
Theme Name: Executive Fix
Description: Block theme for Executive Fix — veteran-owned commercial cleaning and facility services. Built to the Executive Fix Brand Standards v1.0.
Version: 1.9.2
Requires at least: 6.6
Tested up to: 7.1
Requires PHP: 7.4
Text Domain: executive-fix
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
*/

/*
 * Most styling lives in theme.json. This file only covers what theme.json
 * can't express: button sizing, dark-section variants, brand accents,
 * focus states and motion.
 */

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

.wp-element-button,
.wp-block-button__link {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 50px;
	transition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}

.wp-block-button.is-style-outline > .wp-block-button__link:hover,
.wp-block-button.is-style-outline > .wp-block-button__link:focus-visible {
	background-color: var(--wp--preset--color--black);
	border-color: var(--wp--preset--color--black);
	color: var(--wp--preset--color--white);
}

/* Secondary button on dark sections. */
.has-black-background-color .wp-block-button.is-style-outline > .wp-block-button__link {
	border-color: var(--wp--preset--color--white);
	color: var(--wp--preset--color--white);
}

.has-black-background-color .wp-block-button.is-style-outline > .wp-block-button__link:hover,
.has-black-background-color .wp-block-button.is-style-outline > .wp-block-button__link:focus-visible {
	background-color: var(--wp--preset--color--white);
	border-color: var(--wp--preset--color--white);
	color: var(--wp--preset--color--black);
}

/* Focus ---------------------------------------------------------------- */

:where(a, button, input, select, textarea, .wp-element-button):focus-visible {
	outline: 2px solid var(--wp--preset--color--blue);
	outline-offset: 3px;
}

.has-black-background-color :where(a, button, .wp-element-button):focus-visible {
	outline-color: var(--wp--preset--color--white);
}

/* Dark sections -------------------------------------------------------- */

.has-black-background-color :where(h1, h2, h3, h4, h5, h6) {
	color: var(--wp--preset--color--white);
}

.has-black-background-color :where(p, li) {
	color: var(--wp--preset--color--muted);
}

.has-black-background-color a:where(:not(.wp-element-button)) {
	color: var(--wp--preset--color--white);
}

/* Core forces nav links to inherit, so hovers need the doubled class. */
.wp-block-navigation .wp-block-navigation-item__content.wp-block-navigation-item__content:hover {
	color: var(--wp--preset--color--red);
}

.has-black-background-color .wp-block-navigation .wp-block-navigation-item__content.wp-block-navigation-item__content:hover {
	color: var(--wp--preset--color--white);
	text-decoration: underline;
	text-decoration-color: var(--wp--preset--color--red);
	text-decoration-thickness: 2px;
	text-underline-offset: 6px;
}

/* Label paragraph style (registered in functions.php). ----------------- */

.is-style-label {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.12em;
	line-height: 1.33;
	text-transform: uppercase;
	color: var(--wp--preset--color--red);
}

/* Red fails contrast at 12px on black, so labels go white there. */
.has-black-background-color .is-style-label {
	color: var(--wp--preset--color--white);
}

/* Accent bar separator style: short red directional line. ------------- */

.wp-block-separator.is-style-accent-bar {
	width: 48px;
	height: 4px;
	margin-left: 0;
	border: 0;
	background: var(--wp--preset--color--red);
	opacity: 1;
}

.wp-block-separator.is-style-accent-bar.aligncenter {
	margin-left: auto;
	margin-right: auto;
}

/* Card style for groups: square, bordered, with a top color bar. -------- */

.is-style-card {
	background: var(--wp--preset--color--white);
	border: 1px solid var(--wp--preset--color--line);
	border-top: 4px solid var(--wp--preset--color--black);
}

/* Add "accent-red" or "accent-blue" under Advanced → Additional CSS class. */
.is-style-card.accent-red { border-top-color: var(--wp--preset--color--red); }
.is-style-card.accent-blue { border-top-color: var(--wp--preset--color--blue); }

/* Service-area city links ---------------------------------------------- */

.service-area-list .wp-block-post-title {
	margin: 0;
	font-size: 15px;
	font-weight: 600;
	letter-spacing: 0;
}

.service-area-list .wp-block-post-title a {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 0.5rem;
	padding: 0.9rem 1rem;
	background: var(--wp--preset--color--white);
	border: 1px solid var(--wp--preset--color--line);
	border-left: 4px solid var(--wp--preset--color--blue);
	color: var(--wp--preset--color--black);
	text-decoration: none;
	transition: border-color 0.15s ease;
}

.service-area-list .wp-block-post-title a::after {
	content: "→";
	color: var(--wp--preset--color--blue);
}

.service-area-list .wp-block-post-title a:hover {
	border-color: var(--wp--preset--color--blue);
}

/* Service pages ---------------------------------------------------------- */

/* Numbered process steps: 01–05 over a black rule. */
.ef-step {
	padding-top: var(--wp--preset--spacing--30);
	border-top: 2px solid var(--wp--preset--color--black);
}

.ef-step-number {
	margin: 0;
	font-family: var(--wp--preset--font-family--heading);
	font-size: 40px;
	font-weight: 700;
	line-height: 1;
	color: var(--wp--preset--color--red);
}

/* Text cards on black sections: red top bar, no box. */
.ef-dark-card {
	padding-top: var(--wp--preset--spacing--30);
	border-top: 4px solid var(--wp--preset--color--red);
}

/* Small reassurance line under CTA buttons. */
.ef-microcopy {
	font-size: 14px;
	color: var(--wp--preset--color--body-gray);
}

.has-black-background-color .ef-microcopy {
	color: var(--wp--preset--color--muted);
}

/* Testimonials ----------------------------------------------------------- */

.ef-testimonial-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(18rem, 100%), 1fr));
	gap: var(--wp--preset--spacing--40);
	margin: 0;
	padding: 0;
	list-style: none;
}

.ef-testimonial-card {
	height: 100%;
	margin: 0;
	padding: var(--wp--preset--spacing--40);
	background: var(--wp--preset--color--white);
	border: 1px solid var(--wp--preset--color--line);
	border-top: 4px solid var(--wp--preset--color--red);
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	gap: var(--wp--preset--spacing--40);
}

.ef-testimonial-card blockquote,
.ef-testimonial-quote {
	margin: 0;
	padding: 0;
	border: 0;
	font-size: var(--wp--preset--font-size--large);
	line-height: 1.55;
	color: var(--wp--preset--color--black);
}

.ef-testimonial-card blockquote p,
.ef-testimonial-quote p {
	margin: 0;
}

.ef-testimonial-card figcaption,
.ef-testimonial-byline {
	display: flex;
	flex-direction: column;
	gap: 0.15rem;
	padding-top: var(--wp--preset--spacing--30);
	border-top: 1px solid var(--wp--preset--color--line);
	font-size: 14px;
}

.ef-testimonial-card figcaption strong,
.ef-testimonial-name {
	margin: 0;
	font-family: var(--wp--preset--font-family--heading);
	font-size: 15px;
	font-weight: 700;
	letter-spacing: 0;
	text-transform: none;
	color: var(--wp--preset--color--black);
}

.ef-testimonial-byline p {
	margin: 0;
}

/* Editor-only preview while no testimonials are published. */
.ef-testimonial-card.is-placeholder {
	border-style: dashed;
	border-top-style: solid;
	border-top-color: var(--wp--preset--color--line);
}

.ef-testimonial-card.is-placeholder blockquote {
	color: var(--wp--preset--color--body-gray);
	font-style: italic;
}

.ef-testimonials-notice {
	margin: 0 0 var(--wp--preset--spacing--40);
	padding: 0.75rem 1rem;
	border-left: 4px solid var(--wp--preset--color--blue);
	background: var(--wp--preset--color--surface);
	font-size: 14px;
}

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

.site-header .wp-block-site-logo img {
	height: auto;
}

/* On phones the hero carries the CTA, so the header keeps logo + menu. */
@media (max-width: 600px) {
	.site-header .wp-block-buttons {
		display: none;
	}
}

/* Full-width sections sit flush against the footer. */
.wp-site-blocks > footer {
	margin-block-start: 0;
}

/* Motion --------------------------------------------------------------- */

@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		transition-duration: 0.01ms !important;
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		scroll-behavior: auto !important;
	}
}

/* Linked card headings stay black; underline on hover. */
.is-style-card :where(h2, h3) a {
	color: inherit;
	text-decoration: none;
}

.is-style-card :where(h2, h3) a:hover {
	text-decoration: underline;
	text-decoration-color: var(--wp--preset--color--red);
	text-decoration-thickness: 2px;
	text-underline-offset: 4px;
}

/* Walkthrough form --------------------------------------------------------- */

.ef-form {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--40);
}

.ef-fieldset {
	margin: 0;
	padding: 0;
	border: 0;
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--30);
}

.ef-fieldset legend {
	margin-bottom: var(--wp--preset--spacing--30);
	padding: 0;
	font-family: var(--wp--preset--font-family--heading);
	font-size: 14px;
	font-weight: 700;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--wp--preset--color--black);
}

.ef-row {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(15rem, 100%), 1fr));
	gap: var(--wp--preset--spacing--30);
}

.ef-field {
	display: flex;
	flex-direction: column;
	gap: 0.35rem;
}

.ef-field label {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 13px;
	font-weight: 600;
	color: var(--wp--preset--color--black);
}

.ef-req {
	color: var(--wp--preset--color--red);
}

.ef-optional,
.ef-hint {
	font-family: var(--wp--preset--font-family--body);
	font-size: 13px;
	font-weight: 400;
	letter-spacing: 0;
	text-transform: none;
	color: var(--wp--preset--color--body-gray);
}

.ef-hint {
	margin: -0.5rem 0 0;
}

.ef-form :where(input[type="text"], input[type="email"], input[type="tel"], select, textarea) {
	width: 100%;
	min-height: 48px;
	padding: 0.7rem 0.85rem;
	font: inherit;
	font-size: 16px; /* 16px stops iOS zooming on focus */
	color: var(--wp--preset--color--black);
	background: var(--wp--preset--color--white);
	border: 1px solid #9AA1AC;
	border-radius: 0;
	box-sizing: border-box;
}

.ef-form textarea {
	min-height: 8rem;
	resize: vertical;
}

.ef-form :where(input, select, textarea):focus-visible {
	outline: 2px solid var(--wp--preset--color--blue);
	outline-offset: 0;
	border-color: var(--wp--preset--color--blue);
}

.ef-field.has-error :where(input, select, textarea) {
	border-color: var(--wp--preset--color--red-dk);
	border-width: 2px;
}

.ef-error {
	margin: 0;
	font-size: 14px;
	font-weight: 600;
	color: var(--wp--preset--color--red-dk);
}

.ef-checks {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(15rem, 100%), 1fr));
	gap: 0.5rem var(--wp--preset--spacing--30);
}

.ef-check {
	display: flex;
	align-items: center;
	gap: 0.6rem;
	min-height: 44px;
	padding: 0 0.85rem;
	border: 1px solid var(--wp--preset--color--line);
	background: var(--wp--preset--color--white);
	cursor: pointer;
	font-size: 15px;
}

.ef-check input {
	width: 18px;
	height: 18px;
	margin: 0;
	accent-color: var(--wp--preset--color--blue);
}

.ef-check:has(input:checked) {
	border-color: var(--wp--preset--color--blue);
}

/* Honeypot: off-screen, not display:none (some bots skip hidden fields). */
.ef-hp {
	position: absolute;
	left: -9999px;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

.ef-submit {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 0.75rem;
	padding-top: var(--wp--preset--spacing--30);
	border-top: 1px solid var(--wp--preset--color--line);
}

.ef-submit button {
	cursor: pointer;
}

.ef-form-errors {
	padding: var(--wp--preset--spacing--30) var(--wp--preset--spacing--40);
	border-left: 4px solid var(--wp--preset--color--red-dk);
	background: #FDF2F4;
}

.ef-form-errors p,
.ef-form-errors ul {
	margin: 0;
}

.ef-form-errors ul {
	margin-top: 0.5rem;
	padding-left: 1.2rem;
}

.ef-form-errors a {
	color: var(--wp--preset--color--red-dk);
}

.ef-form-success {
	padding: var(--wp--preset--spacing--50) var(--wp--preset--spacing--40);
	border: 1px solid var(--wp--preset--color--line);
	border-top: 4px solid var(--wp--preset--color--blue);
	background: var(--wp--preset--color--white);
}

.ef-form-success h2 {
	margin-top: 0;
}

.ef-contact {
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 600;
}

/* Checklists (service pages) ------------------------------------------------ */

.ef-checklist {
	list-style: none;
	/* Top margin comes from the block gap. */
	margin-right: 0;
	margin-bottom: 0;
	margin-left: 0;
	padding: 0;
	columns: 2 16rem;
	column-gap: var(--wp--preset--spacing--40);
}

.ef-checklist li {
	position: relative;
	break-inside: avoid;
	margin: 0 0 0.6rem;
	padding-left: 1.75rem;
}

.ef-checklist li::before {
	content: "";
	position: absolute;
	left: 0.15rem;
	top: 0.35em;
	width: 0.45rem;
	height: 0.8rem;
	border: solid var(--wp--preset--color--blue);
	border-width: 0 2px 2px 0;
	transform: rotate(45deg);
}

.has-black-background-color .ef-checklist li::before {
	border-color: var(--wp--preset--color--red);
}

/* Single-column variant for side-by-side lists. */
.ef-checklist.is-single {
	columns: 1;
}

/* FAQ (Details blocks) ------------------------------------------------------ */

.ef-faq .wp-block-details {
	margin: 0;
	border-bottom: 1px solid var(--wp--preset--color--line);
}

.ef-faq .wp-block-details:first-child {
	border-top: 1px solid var(--wp--preset--color--line);
}

.ef-faq .wp-block-details summary {
	position: relative;
	padding: 1.1rem 2.5rem 1.1rem 0;
	font-family: var(--wp--preset--font-family--heading);
	font-size: 17px;
	font-weight: 600;
	color: var(--wp--preset--color--black);
	cursor: pointer;
	list-style: none;
}

.ef-faq .wp-block-details summary::-webkit-details-marker {
	display: none;
}

.ef-faq .wp-block-details summary::after {
	content: "+";
	position: absolute;
	right: 0.25rem;
	top: 50%;
	transform: translateY(-50%);
	font-size: 24px;
	font-weight: 400;
	color: var(--wp--preset--color--red);
}

.ef-faq .wp-block-details[open] summary::after {
	content: "−";
}

.ef-faq .wp-block-details > :not(summary) {
	margin-top: 0;
	padding-bottom: 1.1rem;
	max-width: 70ch;
}

/* Navigation dropdowns ------------------------------------------------------ */

/* Header: Services dropdown on Executive Black. */
.site-header .wp-block-navigation .wp-block-navigation__submenu-container {
	min-width: 17rem;
	padding: 0.5rem 0;
	border: 1px solid var(--wp--preset--color--graphite);
	border-top: 3px solid var(--wp--preset--color--red);
	background: var(--wp--preset--color--black);
	box-shadow: none;
}

.site-header .wp-block-navigation .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
	padding: 0.7rem 1.1rem;
	text-transform: none;
	letter-spacing: 0;
	font-size: 14px;
}

.site-header .wp-block-navigation .wp-block-navigation__submenu-container .wp-block-navigation-item__content:hover {
	background: var(--wp--preset--color--graphite);
	text-decoration: none;
}

/* Core sets min-width:200px on hover/focus with a more specific selector; match it. */
.site-header .wp-block-navigation .has-child:is(:hover, :focus-within) > .wp-block-navigation__submenu-container,
.site-header .wp-block-navigation .has-child > .wp-block-navigation__submenu-container[aria-hidden="false"] {
	min-width: 17rem;
}

.site-header .wp-block-navigation .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
	white-space: nowrap;
}

/* Small gap between the menu label and its dropdown arrow. */
.site-header .wp-block-navigation .wp-block-navigation__submenu-icon {
	margin-left: 0.3rem;
}

/* Mobile overlay menu: show service links indented under Services. */
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container {
	border: 0;
	padding: 0.5rem 0 0 1rem;
}

/* Footer: the same menu, with service links always visible as an indented list. */
.site-footer-nav.wp-block-navigation .has-child .wp-block-navigation__submenu-container {
	position: static;
	visibility: visible;
	opacity: 1;
	width: auto;
	height: auto;
	min-width: 0;
	overflow: visible;
	margin-top: 0.4rem;
	padding: 0 0 0 0.9rem;
	border: 0;
	border-left: 2px solid var(--wp--preset--color--graphite);
	background: transparent;
	gap: 0.4rem;
}

.site-footer-nav.wp-block-navigation .has-child .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
	padding: 0;
	text-transform: none;
	letter-spacing: 0;
	font-size: 14px;
	color: var(--wp--preset--color--muted);
}

.site-footer-nav.wp-block-navigation .has-child {
	flex-direction: column;
	align-items: flex-start;
}

/* Mobile overlay: left-align (the desktop menu is right-justified, which core carries into the overlay). */
.site-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content,
.site-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__container,
.site-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation-item {
	align-items: flex-start;
	justify-content: flex-start;
}

.site-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__container {
	gap: 1.25rem;
}

.site-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__submenu-container {
	gap: 0.9rem;
	margin-top: 0.9rem;
	padding: 0 0 0 1rem;
	border: 0;
	border-left: 2px solid var(--wp--preset--color--red);
}

.site-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
	padding: 0;
	font-size: 16px;
}

/* Process steps: one aligned row on desktop, even rows below. -------------- */
/* Overrides the grid block's auto-fill columns (class "ef-steps ef-steps-N"). */

.wp-block-group.ef-steps {
	grid-template-columns: minmax(0, 1fr);
	gap: var(--wp--preset--spacing--40) var(--wp--preset--spacing--30);
}

@media (min-width: 600px) {
	.wp-block-group.ef-steps {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

@media (min-width: 1100px) {
	.wp-block-group.ef-steps-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
	.wp-block-group.ef-steps-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }

	.ef-steps .ef-step-number {
		font-size: 34px;
	}

	.ef-steps .ef-step h3 {
		font-size: 18px;
		line-height: 1.3;
	}

	.ef-steps .ef-step p:not(.ef-step-number) {
		font-size: 15px;
		line-height: 1.55;
	}
}

/* Excluded-items list: a muted ✕ instead of the check mark. */
.ef-checklist.is-excluded li::before {
	content: "✕";
	top: 0;
	width: auto;
	height: auto;
	border: 0;
	transform: none;
	font-size: 0.85em;
	line-height: 1.9;
	color: var(--wp--preset--color--body-gray);
}

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

/* Cards: image flush to the card edges, text padded. */
.ef-post-card {
	padding: 0;
	overflow: hidden;
}

.ef-post-card .wp-block-post-featured-image {
	margin: 0;
}

.ef-post-card .wp-block-post-featured-image img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.ef-post-card-body {
	flex: 1;
	padding: var(--wp--preset--spacing--40);
}

.ef-post-card .wp-block-post-title {
	margin: 0;
	line-height: 1.3;
}

.ef-post-card .wp-block-post-title a {
	color: var(--wp--preset--color--black);
	text-decoration: none;
}

.ef-post-card .wp-block-post-title a:hover {
	text-decoration: underline;
	text-decoration-color: var(--wp--preset--color--red);
	text-decoration-thickness: 2px;
	text-underline-offset: 4px;
}

.ef-post-card .wp-block-post-excerpt__more-link {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 13px;
	font-weight: 700;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	text-decoration: none;
}

/* Category labels render as links; keep them label-styled. */
.is-style-label a,
.wp-block-post-terms.is-style-label a {
	color: inherit;
	text-decoration: none;
}

.ef-post-date {
	margin-top: auto;
	color: var(--wp--preset--color--body-gray);
}

.has-black-background-color .ef-post-date {
	color: var(--wp--preset--color--muted);
}

/* Pagination */
.wp-block-query-pagination {
	gap: 0.5rem;
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 600;
	font-size: 14px;
}

.wp-block-query-pagination .page-numbers,
.wp-block-query-pagination-previous,
.wp-block-query-pagination-next {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 44px;
	min-height: 44px;
	padding: 0 0.75rem;
	border: 1px solid var(--wp--preset--color--line);
	color: var(--wp--preset--color--black);
	text-decoration: none;
}

.wp-block-query-pagination .page-numbers.current {
	background: var(--wp--preset--color--black);
	border-color: var(--wp--preset--color--black);
	color: var(--wp--preset--color--white);
}

/* Article body: comfortable reading rhythm. */
.ef-article .wp-block-post-content {
	font-size: 17px;
	line-height: 1.7;
}

.ef-article .wp-block-post-content :where(h2) {
	margin-top: var(--wp--preset--spacing--50);
	font-size: 28px;
}

.ef-article .wp-block-post-content :where(h3) {
	margin-top: var(--wp--preset--spacing--40);
}

.ef-article .wp-block-post-content :where(ul, ol) {
	padding-left: 1.25rem;
}

.ef-article .wp-block-post-content :where(li) {
	margin-bottom: 0.4rem;
}

.ef-article .wp-block-post-featured-image {
	margin-bottom: var(--wp--preset--spacing--50);
}

/* Header: use the ☰ menu up to 1199px (core only collapses below 600px),
   so tablets and small laptops never wrap the header items onto two lines. */
@media (min-width: 600px) and (max-width: 1199px) {
	.site-header .wp-block-navigation__responsive-container-open:not(.always-shown) {
		display: flex;
	}

	.site-header .wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open) {
		display: none;
	}

	.site-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-close {
		display: flex;
	}
}

/* Footer certification line: red bar marker so it reads as a credential. */
.ef-footer-cert {
	padding-left: 0.75rem;
	border-left: 3px solid var(--wp--preset--color--red);
	line-height: 1.5;
}

/* "At a glance" fact rows (About → Certification). */
.ef-facts {
	list-style: none;
	margin: 0;
	padding: 0;
}

.ef-facts li {
	display: flex;
	flex-direction: column;
	gap: 0.15rem;
	padding: 0.75rem 0;
	border-bottom: 1px solid var(--wp--preset--color--line);
	font-size: 15px;
	color: var(--wp--preset--color--black);
}

.ef-facts li:first-child {
	padding-top: 0;
}

.ef-facts strong {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--wp--preset--color--body-gray);
}

/* Homepage split hero ------------------------------------------------------ */
/* Text on Executive Black (left), square-edged photo (right). No overlay or
   gradient: the brand kit rules out gradients, and text never sits on the photo. */

.ef-hero-columns {
	align-items: stretch;
}

.ef-hero-media {
	display: flex;
}

.ef-hero-photo {
	position: relative;
	flex: 1;
	margin: 0;
	min-height: 520px;
}

.ef-hero-photo img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	/* Keep the person and the glass in frame; crops the left edge of the source. */
	object-position: 58% 40%;
	display: block;
}

/* Brand accent: short red bar anchored to the photo's bottom-left corner. */
.ef-hero-photo::after {
	content: "";
	position: absolute;
	left: 0;
	bottom: 0;
	width: 72px;
	height: 6px;
	background: var(--wp--preset--color--red);
}

/* Stacked layout (core columns stack below 782px): photo below the text. */
@media (max-width: 781px) {
	.ef-hero-photo {
		min-height: 0;
		aspect-ratio: 4 / 3;
	}

	.ef-hero-photo img {
		object-position: 100% 35%;
	}
}

/* NAICS cards: the code reads as the headline number. */
.ef-naics-code {
	margin: 0;
	font-family: var(--wp--preset--font-family--heading);
	font-size: 28px;
	font-weight: 700;
	letter-spacing: 0.02em;
	line-height: 1;
	color: var(--wp--preset--color--red);
}

.ef-naics h3 {
	font-size: 17px;
	line-height: 1.35;
}

/* Cards that link somewhere: border turns blue on hover so the card reads as clickable. */
.is-style-card:has(a) {
	transition: border-color 0.15s ease;
}

/* Sides and bottom only, so red or black accent bars on top keep their color. */
.is-style-card:has(a):hover {
	border-right-color: var(--wp--preset--color--blue);
	border-bottom-color: var(--wp--preset--color--blue);
	border-left-color: var(--wp--preset--color--blue);
}

.is-style-card .wp-block-image a {
	display: inline-block;
	text-decoration: none;
}

/* Industries page -------------------------------------------------------- */

/* "View details" link at the foot of a card. */
.ef-more-link {
	margin-top: auto;
	font-family: var(--wp--preset--font-family--heading);
	font-size: 13px;
	font-weight: 700;
	letter-spacing: 0.06em;
	text-transform: uppercase;
}

.ef-more-link a {
	text-decoration: none;
}

.ef-more-link a::after {
	content: " →";
}

/* Recommended services: outlined chips linking to service pages. */
.ef-service-links {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.ef-service-links a {
	display: inline-flex;
	align-items: center;
	min-height: 40px;
	padding: 0 0.9rem;
	border: 1px solid var(--wp--preset--color--blue);
	font-family: var(--wp--preset--font-family--heading);
	font-size: 13px;
	font-weight: 600;
	color: var(--wp--preset--color--blue);
	text-decoration: none;
	transition: background-color 0.15s ease, color 0.15s ease;
}

.ef-service-links a:hover,
.ef-service-links a:focus-visible {
	background: var(--wp--preset--color--blue);
	color: var(--wp--preset--color--white);
}

/* In-page jumps land with a little breathing room. */
[id] {
	scroll-margin-top: 1rem;
}

/* Contact page: method cards (phone, email, office). */
.ef-contact-cards {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--30);
}

.ef-contact-card {
	padding-bottom: var(--wp--preset--spacing--30);
	border-bottom: 1px solid var(--wp--preset--color--line);
}

.ef-contact-card p {
	margin: 0;
}

.ef-contact-value {
	margin-top: 0.3rem;
	font-family: var(--wp--preset--font-family--heading);
	font-size: 18px;
	font-weight: 600;
	color: var(--wp--preset--color--black);
}

.ef-contact-value a {
	color: inherit;
	text-decoration: none;
}

.ef-contact-value a:hover {
	color: var(--wp--preset--color--blue);
	text-decoration: underline;
}

/* Footer social icons ------------------------------------------------------ */
.ef-social {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	margin: var(--wp--preset--spacing--30) 0 0;
	padding: 0;
	list-style: none;
}

.ef-social a {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	border: 1px solid var(--wp--preset--color--graphite);
	color: var(--wp--preset--color--muted);
	transition: color 0.15s ease, border-color 0.15s ease;
}

.ef-social a:hover,
.ef-social a:focus-visible {
	border-color: var(--wp--preset--color--white);
	color: var(--wp--preset--color--white);
}
