/*
 * Wiggin Means Precast — section styles.
 *
 * Tokens come from theme.json as --wp--preset--* variables; the aliases below use the
 * design-system names (design_handoff/tokens.json). Values the design system pins that
 * theme.json has no preset for (rule size, header height, gallery row) live here.
 * Square by default: only buttons round (3px). No drop shadows on content.
 */

:root {
	--w-green: var(--wp--preset--color--green);
	--w-green-strong: var(--wp--preset--color--green-strong);
	--w-green-light: var(--wp--preset--color--green-light);
	--w-on-green: var(--wp--preset--color--on-green);
	--w-logo-green: var(--wp--preset--color--logo-green);
	--w-ink: var(--wp--preset--color--ink);
	--w-text: var(--wp--preset--color--text);
	--w-muted: var(--wp--preset--color--muted);
	--w-line: var(--wp--preset--color--line);
	--w-surface: var(--wp--preset--color--surface);
	--w-surface-card: var(--wp--preset--color--surface-card);
	--w-surface-chip: #f5f5f5;
	--w-footer: var(--wp--preset--color--footer);
	--w-display: var(--wp--preset--font-family--display);
	--w-rule-w: 60px;
	--w-rule-h: 3px;
	--w-header-h: 90px;
	--w-gallery-row: 150px;
	--w-focus: 0 0 0 2px #ffffff, 0 0 0 4px #155433;
}

/* Header, band, main, call bar and footer butt together. */
.wp-site-blocks > * { margin-block: 0; }

:where(a, button, input, .wp-block-search__button):focus-visible {
	outline: none;
	box-shadow: var(--w-focus);
}

/* ── Top bar ──────────────────────────────────────────────────────────── */
.wiggin-topbar { padding-top: 10px; padding-bottom: 0; }
.wiggin-topbar__list {
	display: flex;
	flex-wrap: wrap;
	gap: 5px 20px;
	margin: 0;
	padding: 0;
	list-style: none;
	font-size: 13px;
	line-height: 26px;
}
.wiggin-topbar__list a { color: var(--w-text); text-decoration: none; }
.wiggin-topbar__list a:hover { color: var(--w-green-strong); }
.wiggin-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 20px;
	height: 20px;
	margin-right: 8px;
	vertical-align: -5px;
	border-radius: 2px;
	background: var(--w-green);
	color: var(--w-on-green);
}

/* ── Header row: logo left, nav + search right ────────────────────────── */
.wiggin-header { padding-top: 6px; padding-bottom: 6px; border-bottom: 1px solid var(--w-line); }
.wiggin-header__row { min-height: calc(var(--w-header-h) - 12px); align-items: center; gap: 20px; }
.wiggin-header__home { display: inline-block; line-height: 0; }
.wiggin-header__logo { display: block; width: 236px; height: auto; }
.wiggin-header__nav { align-items: center; gap: 10px; }
.wiggin-nav .wp-block-navigation-item__content {
	padding: 20px 15px;
	font-family: var(--w-display);
	font-size: 13px;
	font-weight: 700;
	line-height: 20px;
	text-transform: uppercase;
	color: var(--w-ink);
	text-decoration: none;
}
.wiggin-nav .wp-block-navigation-item__content:hover,
.wiggin-nav .current-menu-item > .wp-block-navigation-item__content { color: var(--w-green-strong); }
.wiggin-nav .wp-block-navigation__responsive-container-open { color: var(--w-ink); border: 1px solid var(--w-line); border-radius: 4px; padding: 6px; }
.wiggin-search .wp-block-search__button { background: transparent; color: var(--w-ink); padding: 8px; border: 0; }
.wiggin-search .wp-block-search__button svg { width: 18px; height: 18px; }
.wiggin-search .wp-block-search__input { border: 2px solid #e1e1e1; border-radius: 0; font-size: 14px; color: #555; }
@media (max-width: 600px) {
	.wiggin-header__logo { width: 177px; }
	.wiggin-nav .wp-block-navigation-item__content { padding: 12px 0; font-size: 16px; }
}

/* ── Hero (front page) ────────────────────────────────────────────────── */
.wiggin-hero .wiggin-hero__title {
	margin: 0;
	font-size: var(--wp--preset--font-size--hero-title);
	font-weight: 500;
	line-height: 1;
	color: var(--w-on-green);
	text-shadow: 0 2px 4px rgba(0, 0, 0, 0.5);
}
.wiggin-hero .wiggin-hero__tagline {
	margin-top: 15px;
	color: var(--w-on-green);
	text-shadow: 0 2px 4px rgba(0, 0, 0, 0.5);
}
.wiggin-hero .wp-block-buttons { margin-top: 20px; }
.wiggin-hero__cta .wp-block-button__link::after { content: "\203A"; margin-left: 10px; font-size: 18px; line-height: 0; }
@media (max-width: 600px) {
	.wiggin-hero { min-height: 420px !important; }
}

/* ── Green page-title band (inner pages) ──────────────────────────────── */
.wiggin-band {
	padding-top: 18px;
	padding-bottom: 18px;
	background: var(--w-green);
}
.wiggin-band h1,
.wiggin-band .wp-block-post-title,
.wiggin-band .wp-block-query-title {
	margin: 0;
	font-size: var(--wp--preset--font-size--page-title);
	line-height: 27.5px;
	text-transform: uppercase;
	color: var(--w-on-green);
}

/* ── Main content ─────────────────────────────────────────────────────── */
.wiggin-main {
	padding-top: var(--wp--preset--spacing--60);
	padding-bottom: var(--wp--preset--spacing--60);
}
.wiggin-main > * { margin-block-start: 0; }

/* The signature 60x3 green rule under section headings and card titles. */
.wiggin-main .wp-block-post-content > h2.wp-block-heading,
.wiggin-card__title {
	padding-bottom: 20px;
	background: linear-gradient(var(--w-green), var(--w-green)) left bottom / var(--w-rule-w) var(--w-rule-h) no-repeat;
}
/* Home page's big section head: section-title size, no rule (as on the 2016 site). */
.wiggin-main .wp-block-post-content > h2.wiggin-section-title {
	margin-bottom: 20px;
	padding-bottom: 0;
	font-size: var(--wp--preset--font-size--section-title);
	line-height: 39.6px;
	background: none;
}
.wiggin-main .wp-block-post-content > h2.wp-block-heading { margin-top: 40px; margin-bottom: 30px; }
.wiggin-main .wp-block-post-content > h2.wp-block-heading:first-child { margin-top: 0; }
.wiggin-main .wp-block-post-content > h3.wp-block-heading { margin-top: 30px; font-size: 20px; }
.wiggin-main ul.wp-block-list:not(.wiggin-specs) li { margin-bottom: 0; }

/* ── Products: card grid (Query Loop over child pages) ────────────────── */
.wiggin-grid .wp-block-post-template {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 30px;
	margin: 0;
	padding: 0;
	list-style: none;
}
.wiggin-grid .wp-block-post { margin: 0; }
.wiggin-grid .wp-block-post-featured-image { margin: 0; aspect-ratio: 4 / 3; overflow: hidden; }
.wiggin-grid .wp-block-post-featured-image img { width: 100%; height: 100%; object-fit: cover; }
.wiggin-card__body { padding: 20px; background: var(--w-surface-card); }
.wiggin-card__title {
	margin: 0;
	font-size: var(--wp--preset--font-size--card-title);
	line-height: 19.8px;
	text-transform: uppercase;
}
.wiggin-card__title a { color: var(--w-ink); text-decoration: none; }
.wiggin-card__title a:hover { color: var(--w-green-strong); }
@media (max-width: 900px) { .wiggin-grid .wp-block-post-template { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 600px) { .wiggin-grid .wp-block-post-template { grid-template-columns: 1fr; } }

/* ── Spec-sheet list: square bordered rows in three columns ───────────── */
.wiggin-main ul.wiggin-specs {
	columns: 3 280px;
	column-gap: 30px;
	margin: 0;
	padding: 0;
	list-style: none;
}
.wiggin-specs li {
	break-inside: avoid;
	margin: 0 0 -1px;
	padding: 12px 14px;
	border: 1px solid var(--w-line);
}
.wiggin-specs a { text-decoration: none; }
.wiggin-specs a:hover { text-decoration: underline; }

/* ── Photo galleries: justified 150px rows, photos keep their ratio ───── */
.wiggin-main .wp-block-gallery.wiggin-gallery {
	display: flex;
	flex-wrap: wrap;
	gap: 5px;
}
.wiggin-main .wp-block-gallery.wiggin-gallery > .wp-block-image {
	flex: 1 1 auto;
	width: auto !important;
	max-width: 100%;
	height: var(--w-gallery-row);
	margin: 0;
}
/* A short last row would otherwise stretch its photos to full width and crop them hard;
 * this spacer soaks up the leftover space so they keep their natural width. */
.wiggin-main .wp-block-gallery.wiggin-gallery::after { content: ""; flex: 999 1 auto; }
.wiggin-main .wp-block-gallery.wiggin-gallery > .wp-block-image img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}
@media (max-width: 600px) {
	.wiggin-main .wp-block-gallery.wiggin-gallery > .wp-block-image { flex-basis: calc(50% - 5px); height: 120px; }
}

/* ── Contact Us ───────────────────────────────────────────────────────── */
/* Map sits flush under the green band, as on the 2016 site; the constrained layout's
 * first-child reset out-specifies a bare class, hence the extra selector. */
.wiggin-main .wp-block-post-content > .wiggin-map { margin-top: calc(-1 * var(--wp--preset--spacing--60)); margin-bottom: var(--wp--preset--spacing--60); line-height: 0; }
.wiggin-map iframe { display: block; width: 100%; height: 450px; border: 0; }
.wiggin-contact-info strong { color: var(--w-ink); }
.wiggin-contact-info h2 { margin-top: 0; }
.wiggin-form-fallback { font-size: 18px; }
.wiggin-main .gform_wrapper input[type="text"],
.wiggin-main .gform_wrapper input[type="tel"],
.wiggin-main .gform_wrapper input[type="email"],
.wiggin-main .gform_wrapper textarea {
	padding: 6px 12px;
	border: 2px solid #e1e1e1;
	border-radius: 0;
	font-size: 14px;
	color: #555;
}
.wiggin-main .gform_wrapper input:focus,
.wiggin-main .gform_wrapper textarea:focus { border-color: var(--w-green-strong); outline: none; }

/* ── Search results / 404 ─────────────────────────────────────────────── */
.wiggin-search-page { max-width: 560px; margin-bottom: 30px; }
.wiggin-search-page .wp-block-search__input { border: 2px solid #e1e1e1; border-radius: 0; }
.wiggin-results .wp-block-post { padding: 20px 0; border-bottom: 1px solid var(--w-line); }
.wiggin-results .wp-block-post-title { margin: 0 0 8px; font-size: 20px; }
.wiggin-results .wp-block-post-title a { color: var(--w-ink); text-decoration: none; }

/* ── Call Now bar ─────────────────────────────────────────────────────── */
.wiggin-callbar { padding-top: 20px; padding-bottom: 20px; background: var(--w-green-strong); }
.wiggin-callbar p {
	margin: 0;
	font-family: var(--w-display);
	font-size: 18px;
	font-weight: 700;
	line-height: 19.8px;
	color: var(--w-on-green);
}
.wiggin-callbar a { color: var(--w-on-green); text-decoration: none; }
.wiggin-callbar a:hover { text-decoration: underline; }

/* ── Footer ───────────────────────────────────────────────────────────── */
.wiggin-footer { padding-top: 60px; padding-bottom: 30px; background: var(--w-footer); color: var(--w-muted); }
.wiggin-footer a { color: var(--w-green-light); text-decoration: none; }
.wiggin-footer a:hover { text-decoration: underline; }
.wiggin-footer__grid {
	display: grid;
	grid-template-columns: 1fr 3fr 3fr;
	gap: 30px;
	align-items: start;
}
.wiggin-footer__brand img { display: block; width: 59px; height: auto; }
.wiggin-footer__partners {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 15px;
	margin: 0;
	padding: 0;
	list-style: none;
	text-align: center;
}
.wiggin-footer__partners a { display: inline-flex; flex-direction: column; align-items: center; gap: 8px; }
.wiggin-footer__partners img { display: block; width: auto; height: 76px; }
.wiggin-footer__heading {
	margin: 0 0 20px;
	padding-bottom: 15px;
	font-size: 20px;
	line-height: 22px;
	text-transform: uppercase;
	color: var(--w-on-green);
	background:
		linear-gradient(var(--w-green), var(--w-green)) left bottom / var(--w-rule-w) var(--w-rule-h) no-repeat,
		linear-gradient(#3a3a3a, #3a3a3a) left bottom / 100% 1px no-repeat;
}
.wiggin-footer__contact p { margin: 0 0 12px; }
.wiggin-footer__bottom { margin-top: 30px; padding-top: 25px; border-top: 1px solid #3a3a3a; }
.wiggin-footer__links { display: flex; flex-wrap: wrap; gap: 8px; }
.wiggin-footer__links span { color: var(--w-muted); }
.wiggin-footer__legal { margin: 15px 0 0; font-size: var(--wp--preset--font-size--legal); line-height: 18px; color: var(--w-muted); }
@media (max-width: 900px) {
	.wiggin-footer__grid { grid-template-columns: 1fr; }
	.wiggin-footer__partners { max-width: 420px; }
}

/* ── Photo lightbox (core image lightbox, used by every gallery) ──────────
 * Grey, see-through backdrop so the page shows faintly behind the photo (Joe,
 * 2026-10-29). Core paints the scrim with an inline background-color (the theme's
 * white), hence !important. Close / prev / next get white fills to read on grey. */
.wp-lightbox-overlay .scrim { background-color: rgba(48, 48, 48, 0.88) !important; }
.wp-lightbox-overlay .close-button,
.wp-lightbox-overlay .wp-lightbox-navigation-button { fill: #ffffff !important; color: #ffffff; }

/* ── Contact form (Gravity Forms, basic theme) ────────────────────────────
 * The 2016 form: placeholder-only fields, a modest message box and a green SEND
 * MESSAGE button on the right. GF's own sizes need its full selector to override. */
.wiggin-main .gform_wrapper.gravity-theme .gfield textarea.large { height: 160px; }
.wiggin-main .gform_wrapper.gravity-theme input,
.wiggin-main .gform_wrapper.gravity-theme textarea { font-family: inherit; }
.wiggin-main .gform_wrapper.gravity-theme .gform_fields { row-gap: 20px; }
.wiggin-main .gform_wrapper.gravity-theme .gform_footer { justify-content: flex-end; padding-top: 10px; }
.wiggin-main .gform_wrapper.gravity-theme .gform_footer .gform_button {
	padding: 16px 25px;
	border: 0;
	border-radius: 3px;
	background: var(--w-green-strong);
	color: var(--w-on-green);
	font-family: var(--w-display);
	font-size: 13px;
	font-weight: 700;
	line-height: 18.57px;
	text-transform: uppercase;
	cursor: pointer;
}
.wiggin-main .gform_wrapper.gravity-theme .gform_footer .gform_button:hover { background: var(--w-logo-green); }
