/*
Theme Name: Pure Heart Cleaning Solutions
Theme URI: https://www.pureheartcleaningsolutions.com/
Author: The Web Guys
Author URI: https://thewebguysdigital.com/
Description: Custom theme for Pure Heart Cleaning Solutions — eco-friendly cleaning and pressure washing in Carrollton, GA. All pages, menus and images are created on activation.
Version: 1.4.3
Requires at least: 6.4
Tested up to: 6.7
Requires PHP: 8.0
License: Proprietary
Text Domain: pure-heart-cleaning-solutions
*/

/* Site-wide type scale. The design build renders at 17px root. */
html { font-size: 17px; }

/* Editor / blog post content inside the designed shell. */
.phcs-prose { font-size: 1.05rem; line-height: 1.75; color: rgb(43 50 68 / 0.8); }
.phcs-prose > * + * { margin-top: 1.25rem; }
.phcs-prose h2 { font-size: 1.8rem; font-weight: 600; letter-spacing: -0.02em; color: #2B3244; margin-top: 2.5rem; }
.phcs-prose h3 { font-size: 1.25rem; font-weight: 600; color: #2B3244; margin-top: 2rem; }
.phcs-prose a { color: #FE4DC2; font-weight: 600; text-decoration: underline; text-underline-offset: 4px; }
.phcs-prose ul { padding-left: 1.25rem; list-style: disc; }
.phcs-prose ol { padding-left: 1.25rem; list-style: decimal; }
.phcs-prose li + li { margin-top: 0.5rem; }
.phcs-prose img { border-radius: 1.5rem; }
.phcs-prose blockquote { border-left: 4px solid #FE4DC2; padding-left: 1.25rem; font-style: italic; }
.phcs-prose table { width: 100%; border-collapse: collapse; }
.phcs-prose th { background: #2B3244; color: #fff; text-align: left; padding: 0.85rem 1.25rem; font-size: 0.85rem; text-transform: uppercase; letter-spacing: 0.03em; }
.phcs-prose td { padding: 0.75rem 1.25rem; border-top: 1px solid rgb(43 50 68 / 0.1); }
.phcs-prose tr:nth-child(even) td { background: #F4F5F7; }

/* Lightbox (vanilla JS port of the design build's React lightbox). */
.phcs-lightbox { position: fixed; inset: 0; z-index: 999; display: flex; align-items: center; justify-content: center; background: rgb(43 50 68 / 0.95); padding: 1rem; }
@media (min-width: 640px) { .phcs-lightbox { padding: 2rem; } }
.phcs-lightbox img { margin: 0 auto; max-height: 78vh; width: auto; max-width: 100%; border-radius: 1rem; object-fit: contain; }
.phcs-lightbox figcaption { margin-top: 1rem; font-size: 0.875rem; color: rgb(255 255 255 / 0.8); text-align: center; }
.phcs-lightbox button { display: flex; align-items: center; justify-content: center; border-radius: 9999px; background: rgb(255 255 255 / 0.1); color: #fff; transition: background-color 0.15s; }
.phcs-lightbox button:hover { background: #FE4DC2; }
.phcs-lightbox .phcs-lb-close { position: absolute; top: 1.25rem; right: 1.25rem; height: 2.75rem; width: 2.75rem; font-size: 1.5rem; line-height: 1; }
.phcs-lightbox .phcs-lb-prev, .phcs-lightbox .phcs-lb-next { position: absolute; height: 3rem; width: 3rem; font-size: 1.25rem; }
.phcs-lightbox .phcs-lb-prev { left: 0.75rem; }
.phcs-lightbox .phcs-lb-next { right: 0.75rem; }
@media (min-width: 640px) { .phcs-lightbox .phcs-lb-prev { left: 2rem; } .phcs-lightbox .phcs-lb-next { right: 2rem; } }
body.phcs-lb-open { overflow: hidden; }

/* Header shadow once the page is scrolled. */
[data-phcs-header].is-scrolled { box-shadow: 0 6px 24px -16px rgb(0 0 0 / 0.5); }

/* --------------------------------------------------------------------------
 * Gravity Forms — white card, brand pink submit button.
 * Scoped to the theme's form slot so nothing else on the site is affected.
 * ---------------------------------------------------------------------- */
.phcs-form-card {
	background: #fff;
	border: 1px solid rgb(43 50 68 / 0.1);
	border-radius: 1.5rem;
	padding: 1.75rem;
	box-shadow: 0 18px 40px -32px rgb(43 50 68 / 0.6);
}
@media (min-width: 768px) { .phcs-form-card { padding: 2.5rem; } }

.phcs-form-card .gform_wrapper,
.phcs-form-card .gform_wrapper form { background: transparent; }
.phcs-form-card .gform_wrapper .gfield_label,
.phcs-form-card .gform_wrapper legend.gfield_label { color: #2B3244; font-weight: 600; }
.phcs-form-card .gform_wrapper .gfield_required { color: #FE4DC2; }
.phcs-form-card .gform_wrapper input[type="text"],
.phcs-form-card .gform_wrapper input[type="email"],
.phcs-form-card .gform_wrapper input[type="tel"],
.phcs-form-card .gform_wrapper input[type="url"],
.phcs-form-card .gform_wrapper input[type="number"],
.phcs-form-card .gform_wrapper select,
.phcs-form-card .gform_wrapper textarea {
	/* background-color only: the shorthand wiped Gravity Forms' select chevron sizing, so on hover the arrow icon tiled across the field. */
	background-color: #fff;
	border: 1px solid rgb(43 50 68 / 0.18);
	border-radius: 0.75rem;
	padding: 0.7rem 0.9rem;
	color: #2B3244;
	box-shadow: none;
}
.phcs-form-card .gform_wrapper select {
	background-repeat: no-repeat;
	/* Gravity Forms Orbital fixes selects at 38px tall with a 38px line-height; our 0.7rem vertical padding pushed the selected value below the visible box (State / bedroom dropdowns looked empty; v1.3.18 adds inc/cache.php so the WPE cache purges itself on a Version bump). Inputs centre their text natively, selects do not. */
	padding-top: 0;
	padding-bottom: 0;
}
.phcs-form-card .gform_wrapper input:focus,
.phcs-form-card .gform_wrapper select:focus,
.phcs-form-card .gform_wrapper textarea:focus {
	border-color: #FE4DC2;
	outline: 2px solid rgb(254 77 194 / 0.35);
	outline-offset: 1px;
}
.phcs-form-card .gform_wrapper .gform_footer,
.phcs-form-card .gform_wrapper .gform_page_footer { margin-top: 1.25rem; }

/* Gravity Forms Orbital theme reads its colors from CSS variables; point the primary set at the brand pink so buttons, focus rings and checked controls match the site. */
.phcs-form-card .gform_wrapper.gform-theme {
	--gf-color-primary: #FE4DC2;
	--gf-color-primary-rgb: 254, 77, 194;
	--gf-color-primary-darker: #E23FAD;
	--gf-color-primary-lighter: #FF9BDD;
	--gf-color-primary-contrast: #fff;
	--gf-ctrl-btn-bg-color-primary: #FE4DC2;
	--gf-ctrl-btn-bg-color-hover-primary: #E23FAD;
	--gf-ctrl-btn-bg-color-focus-primary: #E23FAD;
	--gf-ctrl-btn-border-color-primary: #FE4DC2;
	--gf-ctrl-btn-border-color-hover-primary: #E23FAD;
	--gf-ctrl-btn-border-color-focus-primary: #E23FAD;
	--gf-ctrl-btn-radius: 9999px;
	--gf-ctrl-btn-font-weight: 700;
	--gf-ctrl-btn-padding-x: 1.9rem;
}

/* Submit / next / previous, matching the site's pink pill buttons. */
.phcs-form-card .gform_wrapper input[type="submit"],
.phcs-form-card .gform_wrapper button[type="submit"],
.phcs-form-card .gform_wrapper button.gform_button,
.phcs-form-card .gform_wrapper .gform_next_button,
.phcs-form-card .gform_wrapper .gform_previous_button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	background: #FE4DC2;
	color: #fff;
	border: 0;
	border-radius: 9999px;
	padding: 0.85rem 1.9rem;
	font-weight: 700;
	font-size: 0.95rem;
	line-height: 1;
	cursor: pointer;
	box-shadow: 0 14px 30px -18px rgb(254 77 194 / 0.9);
	transition: background-color 0.15s ease, transform 0.15s ease;
}
.phcs-form-card .gform_wrapper input[type="submit"]:hover,
.phcs-form-card .gform_wrapper button[type="submit"]:hover,
.phcs-form-card .gform_wrapper button.gform_button:hover,
.phcs-form-card .gform_wrapper .gform_next_button:hover,
.phcs-form-card .gform_wrapper .gform_previous_button:hover { background: #E23FAD; }
.phcs-form-card .gform_wrapper input[type="submit"]:focus-visible,
.phcs-form-card .gform_wrapper button[type="submit"]:focus-visible {
	outline: 3px solid rgb(254 77 194 / 0.45);
	outline-offset: 2px;
}
.phcs-form-card .gform_wrapper .gform_previous_button {
	background: transparent;
	color: #FE4DC2;
	border: 2px solid #FE4DC2;
	box-shadow: none;
}
.phcs-form-card .gform_wrapper .gform_previous_button:hover { background: rgb(254 77 194 / 0.08); }
.phcs-form-card .gform_wrapper .gform_validation_errors { border-radius: 1rem; }

/* Footer agency credit line: WG mark sits inline before the text. */
.phcs-credit { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 0.5rem; }
.phcs-credit-mark { display: inline-flex; color: rgb(255 255 255 / 0.5); transition: color 0.15s; }
a.phcs-credit-mark:hover { color: #fff; }
.phcs-credit-mark svg { display: block; height: 11px; width: auto; }

/* --------------------------------------------------------------------------
   Header responsiveness (v1.3.15)
   - 1024-1199px: desktop nav is kept on one line with tighter spacing.
   - 640-1023px: top bar drops the service-footprint so it stays one line.
   - Mobile: 44px tap targets, a Call Now / Request a Quote bar under the
     sticky header (scrolls away with the page), and the drawer scrolls
     inside the viewport instead of overflowing it.
   -------------------------------------------------------------------------- */
.phcs-nav-desktop > *,
.phcs-nav-desktop a,
.phcs-nav-cta a { white-space: nowrap; }
@media (min-width: 1024px) and (max-width: 1199px) {
	.phcs-nav-desktop { gap: 1.1rem; }
	.phcs-nav-desktop a { font-size: 0.86rem; }
	.phcs-nav-cta a { padding-left: 1.3rem; padding-right: 1.3rem; font-size: 0.82rem; }
	[data-phcs-header] > div { gap: 1.25rem; }
}
@media (max-width: 1023px) {
	.phcs-topbar-footprint { display: none; }
}
@media (max-width: 1023px) {
	.phcs-menu-toggle { min-width: 44px; min-height: 44px; display: inline-flex; align-items: center; justify-content: center; }
	.phcs-mobile-drawer { max-height: calc(100vh - 72px); overflow-y: auto; -webkit-overflow-scrolling: touch; overscroll-behavior: contain; }
	.phcs-mobile-drawer nav a,
	.phcs-mobile-drawer nav button { min-height: 44px; display: flex; align-items: center; }
	.phcs-mobile-drawer nav a { justify-content: flex-start; }
	.phcs-mobile-drawer [data-phcs-mobile-group-panel] a { min-height: 40px; }
}
.phcs-mobile-ctabar a { padding-left: 1rem; padding-right: 1rem; white-space: nowrap; }
.phcs-mobile-ctabar a.bg-white { box-shadow: none; }
@media (min-width: 1024px) { .phcs-mobile-ctabar { display: none; } }

/* GP Bookings date/time picker (Book Online page): brand pink instead of the plugin's blue fallback, focus rings included. */
.phcs-form-card .gpb-booking-time-picker {
	--gf-color-primary: #FE4DC2;
	--gf-color-primary-rgb: 254, 77, 194;
	--gf-color-primary-darker: #E23FAD;
	--gpb-fallback-primary: #FE4DC2;
	--gpb-fallback-primary-rgb: 254, 77, 194;
	--gpb-fallback-primary-darker: #E23FAD;
}
.phcs-form-card .gpb-booking-time-picker__slot { border-radius: 9999px; font-weight: 600; }
.phcs-form-card .gpb-booking-time-picker__slot--selected:focus-visible,
.phcs-form-card .gpb-booking-time-picker__back:focus { box-shadow: 0 0 0 2px #fff, 0 0 0 4px #FE4DC2; }
.phcs-form-card .gpb-timezone-indicator { color: rgb(43 50 68 / 0.6); }
.phcs-form-card .phcs-booking-note { font-size: 0.95rem; line-height: 1.6; color: rgb(43 50 68 / 0.75); border-left: 4px solid #FE4DC2; padding-left: 1rem; }
.phcs-form-card .ginput_container_total .ginput_total { font-size: 1.6rem; font-weight: 700; color: #2B3244; }
/* Auto-assigned crew field renders only hidden inputs; hide its label row. */
.phcs-form-card .gfield.phcs-crew-field { display: none; }

/* ---- Stage 14 R1 (v1.4.0) -------------------------------------------- */
/* CLS: metric-matched fallback so text does not reflow when Jost swaps in (board #33). */
@font-face { font-family: "Jost Fallback"; src: local("Arial"), local("Liberation Sans"), local("Helvetica"); size-adjust: 100.1%; ascent-override: 106.89%; descent-override: 37.46%; line-gap-override: 0%; }
:root { --font-sans: "Jost", "Jost Fallback", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif; }
/* A11y: muted grey text 4.3:1 -> 4.6:1 on white (#757A85 -> #6B707C). */
.text-ink\/60, .text-ink\/65 { color: #6B707C; }
/* A11y: slider dots keep their 10px look but get a 24px tap target. */
[data-phcs-slider-dot] { box-sizing: content-box; padding: 7px; background-clip: content-box; }
[data-phcs-slider-dots] { gap: 0; }
/* Home hero eyebrow: drop the last segment on small phones so it stays on one line (board #32). */
@media (max-width: 479px) { .phcs-eyebrow-tail { display: none; } }
/* Blog search box focus ring. */
#phcs-blog-s:focus { border-color: #FE4DC2; }
