/*
Theme Name: Astra Child
Description: Child theme for Amoveo Group's site. Customizations of the Astra parent theme live here.
Author: Amoveo Group
Template: astra
Version: 1.5.7
Text Domain: astra-child
*/

/* =========================================================
   Amoveo design system — "Dusk & Ember"
   Headings: Jost (geometric, echoes the logo wordmark)
   Body: Lato (unchanged)
   ========================================================= */

/* Color tokens live in palettes/*.css — the active palette is chosen
   in functions.php (AMOVEO_DEFAULT_PALETTE), overridable per-site with
   the amoveo_palette option and per-request with ?palette=. */

:root {
	/* Remap Astra's (all-gray) global palette onto the system.
	   Slot usage observed: 1 = theme/hover, 2 = text, 3 = header button,
	   4 = light bg, 5 = white, 6 = borders, 7/8 = darkest. */
	--ast-global-color-0: var(--amoveo-plum-soft);
	--ast-global-color-1: var(--amoveo-ember-deep);
	--ast-global-color-2: var(--amoveo-ink);
	--ast-global-color-3: var(--amoveo-plum);
	--ast-global-color-4: var(--amoveo-cream);
	--ast-global-color-6: var(--amoveo-sand);
	--ast-global-color-7: var(--amoveo-plum-deep);
	--ast-global-color-8: var(--amoveo-ink);
}

/* ---------- base ---------------------------------------- */

/* Kill the giant photo set as the site-wide body background. */
body,
body.custom-background {
	background-image: none !important;
	background-color: var(--amoveo-cream) !important;
	color: var(--amoveo-ink);
}

/* ---------- typography ---------------------------------- */

/* !important: Spectra blocks embed per-block font families in
   generated CSS; consistency deliberately wins over those. */
h1, h2, h3, h4, h5, h6,
.entry-title,
.site-title,
.uagb-heading-text {
	font-family: "Jost", "Avenir Next", sans-serif !important;
	font-weight: 600;
	letter-spacing: 0.01em;
	color: var(--amoveo-plum);
}

h1, .entry-title { font-size: clamp(2rem, 1.4rem + 2vw, 2.75rem); line-height: 1.15; }
h2 { font-size: clamp(1.6rem, 1.2rem + 1.3vw, 2.125rem); line-height: 1.2; }
h3 { font-size: clamp(1.3rem, 1.1rem + 0.7vw, 1.5rem); line-height: 1.3; }
h4 { font-size: 1.185rem; }

/* Body text is Lato, period — Spectra section templates default to
   Inter and it leaks into labels like "Recent Stories". */
.entry-content p:not(.amoveo-eyebrow):not(.amoveo-eyebrow-dark),
.entry-content li,
.entry-content strong {
	font-family: "Lato", sans-serif !important;
}

/* Comfortable reading size for page prose sections. */
body.page .entry-content :is(.wp-block-media-text__content, .wp-block-columns) p {
	font-size: 1.08rem;
	line-height: 1.65;
}

/* Tracked-out uppercase for small labels — the logo-wordmark move. */
.ast-blog-single-element.ast-taxonomy-container a,
.entry-meta,
.entry-meta a,
.ast-single-post-order,
.cat-links a {
	font-family: "Jost", "Avenir Next", sans-serif;
	text-transform: uppercase;
	letter-spacing: 0.14em;
	font-size: 0.72rem;
	font-weight: 500;
}

/* ---------- links --------------------------------------- */

.entry-content a:not(.wp-block-button__link):not(.ast-button),
.entry-content p a {
	color: var(--amoveo-ember-deep);
	text-decoration: underline;
	text-decoration-color: color-mix(in srgb, var(--amoveo-ember) 45%, transparent);
	text-underline-offset: 3px;
}
.entry-content a:not(.wp-block-button__link):not(.ast-button):hover {
	color: var(--amoveo-ember);
}
a:hover { color: var(--amoveo-ember-deep); }

/* ---------- buttons ------------------------------------- */
/* One CTA style everywhere. !important intentionally beats the
   block-level inline colors (mint newsletter pill, white hero pill). */

.ast-button,
.ast-custom-button,
button[type="submit"],
input[type="submit"],
.wp-block-button__link,
.uagb-buttons-repeater.uagb-button__wrapper a,
.wp-block-uagb-buttons-child .uagb-buttons-repeater {
	font-family: "Jost", "Avenir Next", sans-serif !important;
	background-color: var(--amoveo-ember) !important;
	color: var(--amoveo-on-accent) !important;
	border: 0 !important;
	border-radius: 8px !important;
	font-size: 1.05rem !important;
	font-weight: 500 !important;
	letter-spacing: 0.015em !important;
	text-transform: none !important;
	padding: 13px 30px !important;
	box-shadow: 0 4px 16px color-mix(in srgb, var(--amoveo-ember) 32%, transparent);
	transition: background-color 0.15s ease, transform 0.15s ease, box-shadow 0.15s ease;
}
.ast-button:hover,
.ast-custom-button:hover,
button[type="submit"]:hover,
input[type="submit"]:hover,
.wp-block-button__link:hover,
.uagb-buttons-repeater.uagb-button__wrapper a:hover,
.wp-block-uagb-buttons-child .uagb-buttons-repeater:hover {
	background-color: var(--amoveo-ember-deep) !important;
	color: var(--amoveo-on-accent) !important;
	transform: translateY(-1px);
	box-shadow: 0 7px 22px color-mix(in srgb, var(--amoveo-ember) 42%, transparent);
}

/* ---------- header -------------------------------------- */
/* Same solid header on every page (was transparent over noise). */

.site-header,
.ast-header-break-point .site-header {
	background-color: var(--amoveo-plum-deep) !important;
	background-image: none !important;
}
/* Inner header bars paint their own gray on non-transparent pages;
   clear them so the plum wrapper shows on every page. */
.site-header .main-header-bar,
.site-header .ast-primary-header-bar,
.site-header .site-primary-header-wrap,
.site-header .ast-above-header-bar,
.site-header .ast-below-header-bar {
	background: transparent !important;
}
/* Background bleeds full width; the row's content stays at site width. */
.site-header .ast-builder-grid-row {
	background: transparent !important;
	max-width: 1200px;
	width: 100%;
	margin-left: auto;
	margin-right: auto;
}

.main-header-menu .menu-item > .menu-link,
.ast-builder-menu .main-header-menu .menu-link {
	font-family: "Jost", "Avenir Next", sans-serif;
	font-size: 0.95rem;
	font-weight: 500;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--amoveo-on-dark-muted);
}
.main-header-menu .menu-item > .menu-link:hover,
.main-header-menu .current-menu-item > .menu-link,
.ast-builder-menu .main-header-menu .current-menu-item > .menu-link,
.ast-builder-menu .main-header-menu .current-menu-ancestor > .menu-link,
.site-header .main-header-menu .menu-item.current-menu-item > .menu-link {
	color: #ffffff !important;
}

/* Pages built for Astra's transparent-header mode tuck their hero
   under the header; with the header now solid, give the first
   section room to breathe. */
body.ast-theme-transparent-header .entry-content > *:first-child {
	padding-top: 84px;
}

/* Mobile menu surface + toggle, same dusk treatment. */
.ast-mobile-popup-drawer .ast-mobile-popup-inner { background-color: var(--amoveo-plum-deep); }
.ast-header-break-point .main-header-menu .menu-link { color: var(--amoveo-on-dark-muted); }
.ast-header-break-point .ast-mobile-menu-trigger-minimal,
.ast-header-break-point .ast-button-wrap .ast-mobile-menu-buttons-minimal { color: #ffffff; }

/* ---------- content containers -------------------------- */
/* White cards on warm cream, soft edges, no floating-on-photo look. */

.ast-separate-container .ast-article-post,
.ast-separate-container .ast-article-single,
.ast-separate-container .comments-area {
	background-color: var(--amoveo-paper);
	border-radius: 14px;
	box-shadow: 0 1px 3px rgba(43, 40, 62, 0.06), 0 8px 28px rgba(43, 40, 62, 0.07);
	border: 0;
	background-image: none !important;
}

/* Single-post reading card: generous interior, consistent spacing. */
.ast-separate-container .ast-article-single {
	padding: clamp(2rem, 5vw, 3.75rem);
	border-radius: 16px;
}
.ast-single-post .entry-header { margin-bottom: 1.5rem; }
.ast-single-post .entry-title { margin-bottom: 0.5rem; }
.ast-single-post .entry-content img { border-radius: 10px; }
.ast-single-post .entry-content > p { margin-bottom: 1.3em; }

/* Blog grid: consistent card interiors. */
.ast-article-post .ast-post-format- .entry-header .entry-title,
.blog .entry-title, .archive .entry-title {
	font-size: 1.4rem;
	line-height: 1.3;
}
.blog .entry-title a, .archive .entry-title a { color: var(--amoveo-plum); }
.blog .entry-title a:hover, .archive .entry-title a:hover { color: var(--amoveo-ember-deep); }
.ast-blog-single-element.ast-taxonomy-container a { color: var(--amoveo-ember-deep); }

/* Blog cards: the article element keeps padding as the gutter
   BETWEEN cards; the inner wrapper is the white card, so the image
   bleeds edge-to-edge with rounded top corners and a flat bottom. */
.ast-separate-container .ast-article-post {
	background: transparent;
	box-shadow: none;
	border-radius: 0;
	overflow: visible;
	padding: 0 0.9rem 1.8rem !important;
}
.ast-separate-container .ast-article-post .ast-article-inner {
	background-color: var(--amoveo-paper);
	border-radius: 14px;
	box-shadow: 0 1px 3px rgba(43, 40, 62, 0.06), 0 8px 28px rgba(43, 40, 62, 0.07);
	overflow: hidden;
}
/* Whole card is clickable: stretch the title link over the card;
   category/meta links float above it and stay independently usable. */
.ast-separate-container .ast-article-post .ast-article-inner { position: relative; }
.blog .entry-title a::after,
.archive .entry-title a::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
}
.ast-article-inner .cat-links a,
.ast-article-inner .entry-meta a {
	position: relative;
	z-index: 2;
}

.blog .post-thumb, .archive .post-thumb { margin: 0; }
.blog .post-thumb img, .archive .post-thumb img {
	border-radius: 0;
	aspect-ratio: 16 / 10;
	object-fit: cover;
	width: 100%;
	display: block;
}
.blog .ast-article-post .post-content > *:not(.post-thumb),
.archive .ast-article-post .post-content > *:not(.post-thumb) {
	padding-left: 0.2rem;
	padding-right: 0.2rem;
	margin-top: 0.45rem;
	margin-bottom: 0;
}
.blog .ast-article-post .post-content > .post-thumb + *,
.archive .ast-article-post .post-content > .post-thumb + * {
	margin-top: 0.9rem;
}
.blog .ast-article-post .post-content > *:not(.post-thumb):first-child,
.archive .ast-article-post .post-content > *:not(.post-thumb):first-child {
	padding-top: 0.9rem;
	margin-top: 0;
}
.blog .ast-article-post .post-content > *:last-child,
.archive .ast-article-post .post-content > *:last-child {
	padding-bottom: 1rem;
}
/* Astra stacks its own margins inside these; keep them compact. */
.blog .ast-article-post .entry-title,
.archive .ast-article-post .entry-title { margin-bottom: 0.25rem; }
.blog .ast-article-post .entry-header,
.archive .ast-article-post .entry-header { margin-bottom: 0; }
.blog .ast-article-post .ast-excerpt-container p,
.archive .ast-article-post .ast-excerpt-container p { margin-bottom: 0; }

/* ---------- blockquotes --------------------------------- */

blockquote, .wp-block-quote {
	background: var(--amoveo-cream);
	border-left: 4px solid var(--amoveo-ember);
	border-radius: 0 10px 10px 0;
	padding: 1.2em 1.5em;
	color: var(--amoveo-ink);
	font-style: normal;
}

/* ---------- footer -------------------------------------- */

.site-footer,
.site-footer .ast-builder-grid-row,
.site-footer [data-section] {
	background-color: var(--amoveo-plum-deep) !important;
	color: var(--amoveo-on-dark-muted);
}
.site-footer a { color: #ffffff; }
.site-footer a:hover { color: var(--amoveo-ember); }

/* Readable footer text (copyright was 14px). */
.site-footer,
.site-footer p,
.ast-footer-copyright p {
	font-size: 0.98rem;
	line-height: 1.6;
}

/* Social icons rendered black-on-dark; make them light, ember on hover. */
.site-footer .ast-builder-social-element svg,
.site-footer .footer-social-inner-wrap svg {
	fill: #ffffff;
	opacity: 0.85;
	transition: opacity 0.15s ease, fill 0.15s ease;
}
.site-footer .ast-builder-social-element:hover svg,
.site-footer .footer-social-inner-wrap a:hover svg {
	fill: var(--amoveo-ember);
	opacity: 1;
}

/* One subtle divider above the copyright row, not two stacked lines. */
.site-footer .site-primary-footer-wrap { border-top: 0 !important; }
.site-footer .site-below-footer-wrap {
	border-top: 1px solid rgba(255, 255, 255, 0.14) !important;
}

/* ---------- misc consistency ---------------------------- */

/* Reading measure on single posts: keep lines comfortable. */
.ast-single-post .entry-content > p,
.ast-single-post .entry-content > h2,
.ast-single-post .entry-content > h3 {
	max-width: 46em;
	margin-left: auto;
	margin-right: auto;
}

::selection { background: color-mix(in srgb, var(--amoveo-ember) 30%, transparent); }

/* ---------- homepage building blocks ---------------------
   Content references these classes so pages stay palette-
   agnostic: flipping the palette recolors the homepage too. */

.amoveo-eyebrow {
	font-family: "Jost", "Avenir Next", sans-serif;
	text-transform: uppercase;
	letter-spacing: 0.3em;
	font-size: 0.95rem;
	font-weight: 500;
}

.amoveo-hero { min-height: 72vh; }
.amoveo-hero .wp-block-cover__background,
body.page .entry-content > *:first-child .wp-block-cover__background {
	background: linear-gradient(
		170deg,
		color-mix(in srgb, var(--amoveo-plum-deep) 92%, transparent),
		color-mix(in srgb, var(--amoveo-plum) 76%, transparent) 55%,
		color-mix(in srgb, var(--amoveo-plum-deep) 86%, transparent)
	) !important;
	opacity: 1 !important;
}
/* !important: something in Astra's cascade wins ties on cover
   paragraphs; hero text is white, full stop. */
.amoveo-hero .wp-block-cover__inner-container h1,
.amoveo-hero .wp-block-cover__inner-container p,
body.page .entry-content > *:first-child .wp-block-cover__inner-container :is(h1, h2, h3, p) {
	color: #ffffff !important;
	text-shadow: 0 2px 22px rgba(20, 18, 35, 0.55), 0 1px 3px rgba(20, 18, 35, 0.4);
}
.amoveo-hero p.amoveo-eyebrow { color: #ffffff !important; opacity: 0.88; }
.amoveo-hero h1 { font-size: clamp(2.6rem, 1.8rem + 3.2vw, 4rem); }
.amoveo-hero .wp-block-cover__inner-container { max-width: 780px; margin: 0 auto; }
.amoveo-hero .wp-block-button__link {
	font-size: 1.18rem !important;
	padding: 15px 34px !important;
}
.amoveo-hero p:not(.amoveo-eyebrow) {
	font-size: 1.3rem;
	line-height: 1.55;
	opacity: 1;
	max-width: 40em;
	margin-left: auto;
	margin-right: auto;
}

/* Parallax covers size their photo to the viewport, so a short band
   shows an unrecognizable sliver. Pin the image to the band instead. */
.wp-block-cover .wp-block-cover__image-background.has-parallax {
	background-attachment: scroll !important;
	background-size: cover !important;
	background-position: center !important;
}

/* Shorter hero for interior page headers — a band, not a wall. */
.amoveo-hero-short { min-height: clamp(220px, 30vh, 340px); }
.amoveo-hero-short .wp-block-cover__inner-container { padding: 2rem 0; }

/* Eyebrow on light backgrounds. */
.amoveo-eyebrow-dark {
	font-family: "Jost", "Avenir Next", sans-serif;
	text-transform: uppercase;
	letter-spacing: 0.3em;
	font-size: 0.9rem;
	font-weight: 500;
	color: var(--amoveo-ember-deep);
	margin-bottom: 0.4rem;
}

.amoveo-rounded img { border-radius: 14px; }

.amoveo-newsletter-embed { max-width: 680px; margin: 2rem auto 1.5rem; }
.amoveo-newsletter-embed iframe { border-radius: 12px; }

/* Emphasis box (e.g. the monthly-giving ask on the donate page). */
.amoveo-highlight {
	background: var(--amoveo-plum-deep);
	color: var(--amoveo-on-dark-muted);
	border-radius: 10px;
	padding: 1.1em 1.5em;
	text-align: center;
	margin-top: 1.6rem;
}
.amoveo-highlight strong,
.amoveo-highlight em {
	color: #ffffff;
}

/* Injected above the Zeffy form when a campaign deep-link is active. */
.amoveo-campaign-note {
	background: var(--amoveo-sand);
	border-left: 4px solid var(--amoveo-ember);
	border-radius: 0 10px 10px 0;
	padding: 0.9em 1.2em;
	max-width: 640px;
	margin: 0 auto 1.5rem;
	font-size: 0.98rem;
}

.amoveo-band {
	background-color: var(--amoveo-plum-deep);
	color: var(--amoveo-on-dark-muted);
}
.amoveo-band h2 { color: #ffffff; }

.amoveo-loc-card img {
	aspect-ratio: 4 / 3;
	object-fit: cover;
	width: 100%;
	border-radius: 14px;
}
.amoveo-loc-card h3 { margin-top: 0.9rem; margin-bottom: 0.3rem; }
.amoveo-loc-card p { color: var(--amoveo-plum-soft); }

/* Query-loop story cards reuse the blog card language. */
.amoveo-stories .wp-block-post {
	background: var(--amoveo-paper);
	border-radius: 14px;
	box-shadow: 0 1px 3px rgba(43, 40, 62, 0.06), 0 8px 28px rgba(43, 40, 62, 0.07);
	overflow: hidden;
	position: relative;
}
.amoveo-stories .wp-block-post-title a::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
}
.amoveo-stories .wp-block-post-featured-image { margin: 0; }
.amoveo-stories .wp-block-post-featured-image img {
	aspect-ratio: 16 / 10;
	object-fit: cover;
	width: 100%;
	border-radius: 0;
}
.amoveo-stories .wp-block-post-title,
.amoveo-stories .wp-block-post-date,
.amoveo-stories .wp-block-post-excerpt {
	padding-left: 1.4rem;
	padding-right: 1.4rem;
}
.amoveo-stories .wp-block-post-title { font-size: 1.25rem; margin-top: 1.1rem; }
.amoveo-stories .wp-block-post-title a { color: var(--amoveo-plum); }
.amoveo-stories .wp-block-post-title a:hover { color: var(--amoveo-ember-deep); }
.amoveo-stories .wp-block-post-date {
	font-family: "Jost", "Avenir Next", sans-serif;
	text-transform: uppercase;
	letter-spacing: 0.14em;
	font-size: 0.72rem;
	color: var(--amoveo-plum-soft);
	display: block;
	margin-top: 0.35rem;
}
.amoveo-stories .wp-block-post-excerpt { padding-bottom: 1.4rem; font-size: 0.95rem; }
