/*
Theme Name: Blue Prophecy
Theme URI: https://example.com/blue-prophecy
Author: Blue Prophecy
Author URI: https://example.com
Description: A clean, fast, mobile-first WordPress block theme for home service businesses (HVAC, plumbing, lawn care, landscaping, roofing, electrical, cleaning, pest control, pressure washing, handyman, and general contractors). Built for lead generation, local SEO, and easy client editing through the Site Editor. Plugin-compatible, not plugin-dependent.
Version: 1.3.0
Requires at least: 6.4
Tested up to: 6.6
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: blue-prophecy
Tags: block-theme, full-site-editing, business, blog, one-column, two-columns, custom-colors, custom-logo, custom-menu, featured-images, threaded-comments, translation-ready, wide-blocks, block-styles, block-patterns
*/

/* Skip link for accessibility */
.skip-link.screen-reader-text {
	background-color: #ffffff;
	color: #0a2540;
	left: 0.5rem;
	padding: 0.75rem 1rem;
	position: absolute;
	top: -100px;
	z-index: 100000;
	text-decoration: underline;
	border-radius: 4px;
	box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
}
.skip-link.screen-reader-text:focus { top: 0.5rem; }

/* ---------------------------------------------------------------------
   COVER BLOCK CONTRAST GUARANTEE
   Issue: Cover blocks set with dimRatio 0 leave the background gradient
   span at opacity 0, which collapses to white and hides white text.
   This forces any cover block that has a custom gradient or background
   image to keep that visible — even if the editor was set to "0 dim".
   ------------------------------------------------------------------- */
.wp-block-cover .wp-block-cover__background.has-background-gradient,
.wp-block-cover .wp-block-cover__gradient-background {
	opacity: 1 !important;
}
/* If a cover has no gradient and no image, but text is white, paint a
   safe navy fallback so the user never sees white-on-white. */
.wp-block-cover.is-light .has-white-color { color: #ffffff !important; }

/* Click-to-call buttons: prevent line breaks on phone numbers */
.wp-block-button.is-style-call-button a { white-space: nowrap; }

/* Cards with subtle hover lift */
.bp-card { transition: transform 0.18s ease, box-shadow 0.18s ease; }
.bp-card:hover {
	transform: translateY(-2px);
	box-shadow: 0 8px 24px rgba(10, 37, 64, 0.10);
}

/* Trust bar dividers on desktop */
@media (min-width: 782px) {
	.bp-trust-bar .wp-block-column + .wp-block-column {
		border-left: 1px solid rgba(10, 37, 64, 0.12);
	}
}

/* ---------------------------------------------------------------------
   FULL-WIDTH BLEED FIX
   Make alignfull blocks reliably stretch to viewport edges, even when
   nested deeper than the immediate has-global-padding container.
   ------------------------------------------------------------------- */
.wp-site-blocks .alignfull {
	margin-left: calc(var(--wp--style--root--padding-left, 0) * -1);
	margin-right: calc(var(--wp--style--root--padding-right, 0) * -1);
}
main > .alignfull,
.wp-block-post-content > .alignfull,
.entry-content > .alignfull {
	margin-left: calc(var(--wp--style--root--padding-left, 1.5rem) * -1) !important;
	margin-right: calc(var(--wp--style--root--padding-right, 1.5rem) * -1) !important;
	max-width: calc(100% + var(--wp--style--root--padding-left, 1.5rem) + var(--wp--style--root--padding-right, 1.5rem));
	width: calc(100% + var(--wp--style--root--padding-left, 1.5rem) + var(--wp--style--root--padding-right, 1.5rem));
}

/* ---------------------------------------------------------------------
   POST TITLE BLOCK
   The page templates do not include a Post Title block, but if a user
   adds one back in, hide on the static front page only so "Home" never
   appears as a giant heading on the homepage.
   ------------------------------------------------------------------- */
body.home .wp-block-post-title,
body.page-template-front-page .wp-block-post-title {
	display: none;
}

/* ---------------------------------------------------------------------
   HEADER NAVIGATION
   Prevent the menu from wrapping into multiple ugly rows on desktop.
   Keep labels clean and on a single line.
   ------------------------------------------------------------------- */
.site-header .wp-block-navigation {
	flex-wrap: nowrap;
}
.site-header .wp-block-navigation .wp-block-navigation-item__content {
	white-space: nowrap;
}
.site-header .wp-block-navigation .wp-block-navigation__container {
	gap: 1.5rem;
	row-gap: 0.5rem;
}
.site-header .wp-block-navigation a {
	color: var(--wp--preset--color--navy);
	font-weight: 600;
}
.site-header .wp-block-navigation a:hover,
.site-header .wp-block-navigation a:focus {
	color: var(--wp--preset--color--blue-deep);
}

/* Header CTA shortcode */
.bp-header-cta {
	display: inline-flex;
	gap: 10px;
	flex-wrap: wrap;
	align-items: center;
}
.bp-header-cta a {
	display: inline-flex;
	align-items: center;
	padding: 0.65rem 1.1rem;
	border-radius: 8px;
	text-decoration: none;
	font-weight: 700;
	font-size: 0.95rem;
	white-space: nowrap;
	line-height: 1;
}
.bp-header-cta .bp-call {
	background: var(--wp--preset--color--navy, #0A2540);
	color: #fff;
}
.bp-header-cta .bp-quote {
	background: var(--wp--preset--color--orange, #F57C00);
	color: #fff;
}
.bp-header-cta a:hover,
.bp-header-cta a:focus {
	filter: brightness(1.08);
}

/* ---------------------------------------------------------------------
   FOOTER
   ------------------------------------------------------------------- */
.site-footer .wp-block-site-title a,
.site-footer .wp-block-site-title,
.site-footer h1, .site-footer h2, .site-footer h3, .site-footer h4 {
	color: #ffffff !important;
}
.site-footer a { color: #ffffff; text-decoration: none; }
.site-footer a:hover, .site-footer a:focus { text-decoration: underline; }
.site-footer .bp-footer-contact { font-size: 0.95rem; line-height: 1.6; }
.site-footer .bp-footer-contact h4 {
	font-size: 1rem;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	margin: 0 0 0.5rem;
}
.site-footer .bp-footer-contact strong { color: #ffffff; }
.site-footer .bp-footer-contact .bp-row + .bp-row { margin-top: 0.35rem; }

/* Images never overflow */
img { max-width: 100%; height: auto; }

/* Better default focus ring */
a:focus-visible,
button:focus-visible,
.wp-block-button__link:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible {
	outline: 3px solid #1e88e5;
	outline-offset: 2px;
}

/* Print: hide nav, footer CTAs */
@media print {
	header.wp-block-template-part,
	footer.wp-block-template-part,
	.wp-block-button {
		display: none !important;
	}
}

/* -----------------------------------------------------------------
   Social icon row (footer) — rendered by [blue_prophecy_socials]
   ----------------------------------------------------------------- */
.bp-socials {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	justify-content: center;
	margin: 1.25rem 0;
}
.bp-socials .bp-social {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 40px;
	height: 40px;
	border-radius: 999px;
	background: rgba(255, 255, 255, 0.08);
	border: 1px solid rgba(255, 255, 255, 0.18);
	color: #ffffff;
	text-decoration: none;
	transition: background-color 0.15s ease, transform 0.15s ease, border-color 0.15s ease;
}
.bp-socials .bp-social:hover,
.bp-socials .bp-social:focus-visible {
	background: rgba(255, 255, 255, 0.18);
	border-color: rgba(255, 255, 255, 0.4);
	transform: translateY(-1px);
	text-decoration: none;
}
.bp-socials .bp-social svg {
	width: var(--bp-soc-size, 20px);
	height: var(--bp-soc-size, 20px);
	display: block;
}

/* -----------------------------------------------------------------
   Front-end contact form — rendered by [blue_prophecy_contact_form]
   ----------------------------------------------------------------- */
.bp-contact-form {
	display: grid;
	gap: 14px;
	width: 100%;
	max-width: 100%;
	margin: 0;
}
.bp-form-title {
	margin: 0 0 0.75rem;
	font-size: 1.35rem;
	color: #0f172a;
}
.bp-contact-form .bp-field { display: grid; gap: 6px; }
.bp-contact-form label {
	font-weight: 600;
	font-size: 0.95rem;
	color: #1e293b;
}
.bp-contact-form .bp-required { color: #b91c1c; margin-left: 2px; }
.bp-contact-form input[type="text"],
.bp-contact-form input[type="email"],
.bp-contact-form input[type="tel"],
.bp-contact-form textarea {
	width: 100%;
	padding: 11px 13px;
	border: 1px solid #cbd5e1;
	border-radius: 10px;
	font: inherit;
	background: #ffffff;
	color: #0f172a;
	transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.bp-contact-form input:focus,
.bp-contact-form textarea:focus {
	outline: none;
	border-color: #1e88e5;
	box-shadow: 0 0 0 3px rgba(30, 136, 229, 0.18);
}
.bp-contact-form textarea { min-height: 140px; resize: vertical; }
.bp-contact-form .bp-honeypot {
	position: absolute !important;
	left: -10000px !important;
	width: 1px !important;
	height: 1px !important;
	overflow: hidden !important;
}
.bp-contact-form button[type="submit"] {
	justify-self: stretch;
	width: 100%;
	background: #ea7c1f;
	color: #ffffff;
	border: none;
	padding: 13px 24px;
	border-radius: 10px;
	font-weight: 700;
	font-size: 1rem;
	cursor: pointer;
	transition: background-color 0.15s ease, transform 0.15s ease;
	margin-top: 4px;
}
.bp-contact-form button[type="submit"]:hover,
.bp-contact-form button[type="submit"]:focus-visible {
	background: #d56a10;
	transform: translateY(-1px);
}
.bp-form-message {
	padding: 14px 16px;
	border-radius: 10px;
	margin-bottom: 16px;
	font-size: 0.97rem;
}
.bp-form-message.bp-ok {
	background: #ecfdf5;
	color: #065f46;
	border: 1px solid #6ee7b7;
}
.bp-form-message.bp-err {
	background: #fef2f2;
	color: #991b1b;
	border: 1px solid #fca5a5;
}
