/*
Theme Name: GFMutual Insurance Association
Theme URI: https://gfmutual.com
Author: Ledger Marketing
Author URI: https://ledgermarketing.com
Description: Custom block theme for GFMutual Insurance Association of Waukon, Iowa — neighbors insuring neighbors since 1870.
Version: 1.0.4
Requires at least: 6.5
Tested up to: 7.0
Requires PHP: 8.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: gfmutual
*/

/* ---------------------------------------------------------------------------
   Layout resets — kill WP block-gap strips between full-width sections
--------------------------------------------------------------------------- */
.wp-site-blocks > * { margin-block: 0; }
.wp-site-blocks main .alignfull { margin-block: 0; }
/* and INSIDE the header/footer parts (topline + logo bar stacked groups) */
.gfm-header > *, .gfm-footer > * { margin-block: 0 !important; }

body { overflow-x: hidden; }

/* ---------------------------------------------------------------------------
   Header
--------------------------------------------------------------------------- */
.gfm-topline {
	background: var(--wp--preset--color--ink);
	color: #fff;
	font-size: 0.85rem;
	letter-spacing: 0.02em;
}
.gfm-topline a { color: var(--wp--preset--color--gold); text-decoration: none; }
.gfm-topline a:hover { color: #fff; }

.gfm-logobar { background: #fff; border-bottom: 3px solid var(--wp--preset--color--brass); }

.gfm-wordmark { text-decoration: none; display: inline-block; line-height: 1; }
.gfm-wordmark .gfm-wordmark-main {
	font-family: var(--wp--preset--font-family--display);
	font-weight: 600;
	font-size: clamp(1.9rem, 4.5vw, 2.6rem);
	color: var(--wp--preset--color--navy);
	display: block;
}
.gfm-wordmark .gfm-wordmark-sub {
	font-family: var(--wp--preset--font-family--sans);
	font-weight: 600;
	font-size: clamp(0.62rem, 1.5vw, 0.82rem);
	letter-spacing: 0.34em;
	color: var(--wp--preset--color--brass);
	display: block;
	margin-top: 0.3rem;
	text-transform: uppercase;
}

/* Desktop nav links — force color over core defaults */
body .gfm-header nav.wp-block-navigation a {
	color: var(--wp--preset--color--navy);
	font-weight: 600;
	font-size: 0.98rem;
	text-decoration: none;
}
body .gfm-header nav.wp-block-navigation a:hover { color: var(--wp--preset--color--brass); }
body .gfm-header nav.wp-block-navigation .current-menu-item > a { color: var(--wp--preset--color--brass); }

/* Header pay button — brass on white header, always visible incl. mobile */
.gfm-paybtn a {
	background: var(--wp--preset--color--brass);
	color: #fff !important;
	font-weight: 700;
	padding: 0.55em 1.15em;
	border-radius: 6px;
	text-decoration: none;
	display: inline-block;
	white-space: nowrap;
	font-size: 0.95rem;
	box-shadow: 0 1px 3px rgba(20, 36, 56, 0.25);
}
.gfm-paybtn a:hover { background: var(--wp--preset--color--navy); color: #fff; }

/* Mobile nav overlay — ink panel, centered, legible white items */
body .gfm-header .wp-block-navigation__responsive-container.is-menu-open {
	background: var(--wp--preset--color--ink) !important;
	padding: 4.5rem 2rem 2rem;
}
body .gfm-header .wp-block-navigation__responsive-container.is-menu-open a {
	color: #fff !important;
	font-size: 1.35rem;
	padding: 0.4em 0;
}
body .gfm-header .wp-block-navigation__responsive-container.is-menu-open a:hover {
	color: var(--wp--preset--color--gold) !important;
}
body .gfm-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item {
	align-items: center;
}
body .gfm-header .wp-block-navigation__responsive-container.is-menu-open ul.wp-block-navigation__container {
	align-items: center !important;
	justify-content: center !important;
}
body .gfm-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content {
	align-items: center;
	justify-content: center;
}
body .gfm-header .wp-block-navigation__responsive-container-close svg,
body .gfm-header .wp-block-navigation__responsive-container-close {
	color: #fff;
}
body .gfm-header .wp-block-navigation__responsive-container-open svg {
	width: 32px; height: 32px;
}

/* ---------------------------------------------------------------------------
   Hero / page bands — force legible text on dark overlays (ALL levels)
--------------------------------------------------------------------------- */
.gfm-hero :where(h1, h2, h3, h4, p, li) { color: #fff; }
.gfm-hero .gfm-eyebrow {
	color: var(--wp--preset--color--gold);
	text-transform: uppercase;
	letter-spacing: 0.28em;
	font-weight: 700;
	font-size: 0.85rem;
}
.gfm-pageband { background: var(--wp--preset--color--navy); }
.gfm-pageband :where(h1, h2, h3, p) { color: #fff; }
.gfm-pageband .gfm-eyebrow {
	color: var(--wp--preset--color--gold);
	text-transform: uppercase;
	letter-spacing: 0.28em;
	font-weight: 700;
	font-size: 0.8rem;
}

/* ---------------------------------------------------------------------------
   Buttons on colored bands — white button, band-colored text
--------------------------------------------------------------------------- */
.gfm-payband { background: linear-gradient(120deg, var(--wp--preset--color--navy), var(--wp--preset--color--ink)); }
.gfm-payband :where(h2, h3, p) { color: #fff; }
.gfm-payband .gfm-pay-lg a,
.gfm-pay-lg .wp-block-button__link {
	background: var(--wp--preset--color--brass);
	color: #fff;
	font-size: 1.15rem;
	font-weight: 700;
	padding: 0.85em 2em;
}
.gfm-payband .gfm-pay-lg a:hover { background: var(--wp--preset--color--gold); color: var(--wp--preset--color--ink); }

/* outline (ghost) button on dark surfaces */
.gfm-btn-ghost .wp-block-button__link {
	background: transparent;
	border: 2px solid #fff;
	color: #fff;
}
.gfm-btn-ghost .wp-block-button__link:hover { background: #fff; color: var(--wp--preset--color--navy); }

/* ---------------------------------------------------------------------------
   Card grids — real CSS grid (never wp-block-columns for many items)
--------------------------------------------------------------------------- */
.gfm-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
	gap: 1.4rem;
}
.gfm-card {
	background: #fff;
	border: 1px solid #E4DCCB;
	border-top: 4px solid var(--wp--preset--color--brass);
	border-radius: 8px;
	padding: 1.5rem 1.4rem;
	box-shadow: 0 2px 10px rgba(20, 36, 56, 0.06);
}
.gfm-card h3 {
	margin: 0 0 0.4rem;
	font-size: 1.45rem;
	color: var(--wp--preset--color--navy);
	font-family: var(--wp--preset--font-family--display);
	font-weight: 500;
	line-height: 1.2;
}
.gfm-card p { margin: 0.2rem 0; font-size: 0.98rem; }
.gfm-card .gfm-card-phone a { color: var(--wp--preset--color--brass); font-weight: 700; text-decoration: none; }
.gfm-card .gfm-card-phone a:hover { text-decoration: underline; }
.gfm-card .gfm-card-town {
	text-transform: uppercase;
	letter-spacing: 0.14em;
	font-size: 0.78rem;
	font-weight: 700;
	color: var(--wp--preset--color--brass);
	margin-bottom: 0.35rem;
}

/* agent search box */
.gfm-agent-search {
	width: 100%;
	max-width: 480px;
	padding: 0.8em 1.1em;
	font-size: 1rem;
	font-family: inherit;
	border: 2px solid var(--wp--preset--color--navy);
	border-radius: 8px;
	background: #fff;
	color: var(--wp--preset--color--body);
}
.gfm-agent-search:focus {
	outline: none;
	border-color: var(--wp--preset--color--brass);
	box-shadow: 0 0 0 3px rgba(184, 134, 43, 0.2);
}

/* ---------------------------------------------------------------------------
   Footer
--------------------------------------------------------------------------- */
.gfm-footer { background: var(--wp--preset--color--ink); color: #D8DEE7; }
.gfm-footer :where(p, li) { color: #D8DEE7; font-size: 0.95rem; }
.gfm-footer h2, .gfm-footer h3 {
	color: #fff;
	font-family: var(--wp--preset--font-family--sans);
	font-size: 0.85rem;
	text-transform: uppercase;
	letter-spacing: 0.22em;
	font-weight: 700;
}
.gfm-footer a { color: var(--wp--preset--color--gold); text-decoration: none; }
.gfm-footer a:hover { color: #fff; text-decoration: underline; }
.gfm-footer .gfm-wordmark .gfm-wordmark-main { color: #fff; }
.gfm-footer .gfm-wordmark .gfm-wordmark-sub { color: var(--wp--preset--color--gold); }
.gfm-footer-legal {
	border-top: 1px solid rgba(255, 255, 255, 0.15);
	font-size: 0.85rem;
}
.gfm-footer-legal p { font-size: 0.85rem; color: #9AA7B8; }
.gfm-chip {
	background: #fff;
	border-radius: 10px;
	padding: 0.9rem;
	display: inline-block;
	line-height: 0;
}
.gfm-chip img { max-width: 110px; height: auto; }
.gfm-chip-caption {
	font-size: 0.78rem;
	text-transform: uppercase;
	letter-spacing: 0.18em;
	color: #9AA7B8;
	margin-top: 0.6rem;
}

/* ---------------------------------------------------------------------------
   Misc components
--------------------------------------------------------------------------- */
.gfm-map {
	display: block;
	width: 100%;
	max-width: 700px;
	height: auto;
	margin: 1.75rem auto 0 !important;
}

.gfm-rule {
	width: 64px; height: 4px;
	background: var(--wp--preset--color--brass);
	border: 0; border-radius: 2px;
}
.gfm-photo-frame img {
	border-radius: 10px;
	box-shadow: 0 8px 30px rgba(20, 36, 56, 0.18);
}
.gfm-caption { font-size: 0.85rem; color: #6B7686; font-style: italic; }

.gfm-timeline { list-style: none; padding-left: 0; margin: 0; }
.gfm-timeline li {
	padding: 0.65rem 0 0.65rem 1.6rem;
	position: relative;
	border-left: 2px solid var(--wp--preset--color--sand);
}
.gfm-timeline li::before {
	content: "";
	position: absolute;
	left: -7px; top: 1.15rem;
	width: 12px; height: 12px;
	border-radius: 50%;
	background: var(--wp--preset--color--brass);
	border: 2px solid var(--wp--preset--color--ivory);
}
.gfm-timeline .gfm-year {
	font-family: var(--wp--preset--font-family--display);
	font-weight: 600;
	font-size: 1.25rem;
	color: var(--wp--preset--color--navy);
	display: block;
}

/* equal-height single cards inside columns without height:100% overflow */
.wp-block-column:has(> .gfm-card:only-child) { display: flex; }
.wp-block-column:has(> .gfm-card:only-child) > .gfm-card { flex: 1 1 auto; height: auto; }

/* interior page content width safety */
.gfm-content { padding-top: 0; }

@media (max-width: 781px) {
	.gfm-topline .gfm-topline-hours { display: none; }
	.gfm-wordmark .gfm-wordmark-sub { letter-spacing: 0.22em; }
}
