/* =========================================================
   JUNETEENTH PBC — HOMEPAGE

   Depends on:
   - style.css for design tokens, fonts, global typography,
     buttons, layout utilities and accessibility
   - components/header.css
   - components/footer.css

   The stylesheet is scoped with WordPress's native `body.home`
   class. Homepage sections remain top-level Elementor siblings.
   ========================================================= */

body.home {
	width: 100%;
	max-width: 100%;
	margin: 0;
	padding: 0;
	overflow-x: clip;
}

body.home :where(h1, h2, h3, h4, p, figure, blockquote) {
	margin: 0;
}

/*
 * Keep Elementor's page/root containers fluid. CloneWebX imports can put
 * the same max-width on these wrappers that belongs on `.jpbc-shell`, which
 * boxes section backgrounds and makes `width: 100%` resolve to the shell.
 *
 * Limit this reset to top-level page containers so nested layout containers
 * retain their Elementor sizing.
 */
body.home .elementor[data-elementor-type="wp-page"] {
	width: 100% !important;
	max-width: none !important;
}

body.home .elementor[data-elementor-type="wp-page"] > .e-con {
	--width: 100%;
	--content-width: 100%;
	position: relative;
	left: auto;
	width: 100% !important;
	max-width: none !important;
	margin-inline: 0 !important;
	padding: 0 !important;
	translate: none;
}

/*
 * Homepage layout contract:
 *   page root > section = full-width visual/background layer
 *   section > first container = centered 1280px content layer
 *
 * This also covers imported sections whose first container did not receive
 * the project `.jpbc-shell` class.
 */
body.home .elementor[data-elementor-type="wp-page"] > .e-con > .e-con {
	--width: min(100%, var(--jpbc-content-width));
	width: min(100%, var(--jpbc-content-width)) !important;
	min-width: 0 !important;
	max-width: var(--jpbc-content-width) !important;
	margin-inline: auto !important;
	padding-inline: var(--jpbc-content-gutter) !important;
	align-self: center !important;
}

/*
 * Full-bleed section wrappers.
 *
 * These are direct children of the now-fluid page root, so they can fill
 * that root without negative viewport margins. Width restriction belongs
 * only on the first inner container carrying `.jpbc-shell`.
 */
body.home :where(
	.jpbc-section,
	.jpbc-hero,
	.jpbc-featured-festival,
	.jpbc-quote,
	.jpbc-newsletter,
	.jpbc-donate-cta
) {
	--width: 100%;
	width: 100% !important;
	max-width: none !important;
	margin-inline: 0 !important;
	padding: 0 !important;
	flex: 0 0 auto !important;
	align-self: stretch !important;
}

body.home .jpbc-shell {
	--width: min(
		calc(100% - (var(--jpbc-content-gutter) * 2)),
		var(--jpbc-content-width)
	);
	width: min(
		calc(100% - (var(--jpbc-content-gutter) * 2)),
		var(--jpbc-content-width)
	) !important;
	min-width: 0 !important;
	max-width: var(--jpbc-content-width) !important;
	margin-right: auto !important;
	margin-left: auto !important;
	flex: 0 1 auto !important;
	align-self: center !important;
}

/* The hero media and content share this imported wrapper. Let that wrapper
 * touch both viewport edges; `.jpbc-hero__content` keeps the copy narrow. */
body.home .elementor[data-elementor-type="wp-page"] > .jpbc-hero > .jpbc-shell {
	--width: 100%;
	width: 100% !important;
	height: 100%;
	min-height: 100%;
	max-width: none !important;
	margin-inline: 0 !important;
	padding-block: 0 !important;
}

/*
 * CloneWebX attached several section backgrounds to `.jpbc-shell`. Mirror
 * those colors on the full-width semantic section so the shell controls
 * content width only, never the visual background width.
 */
body.home .jpbc-section:has(.jpbc-quick-actions__grid),
body.home .jpbc-section:has(.jpbc-festival-numbers__grid),
body.home .jpbc-section:has(.jpbc-logo-grid) {
	background-color: var(--jpbc-offwhite);
}

body.home .jpbc-section:has(.jpbc-impact-grid),
body.home .jpbc-newsletter {
	background-color: var(--jpbc-crystal);
}

body.home .jpbc-featured-festival {
	color: var(--jpbc-white);
	background-color: var(--jpbc-charcoal);
}

/*
 * CloneWebX stores some background settings on the inner Elementor
 * container. Paint the corresponding page section itself so its background
 * reaches both viewport edges while `.jpbc-shell` stays at 1280px.
 */
body.home .elementor[data-elementor-type="wp-page"] > [data-id="77cf096"],
body.home .elementor[data-elementor-type="wp-page"] > [data-id="e548042"],
body.home .elementor[data-elementor-type="wp-page"] > [data-id="c66b114"],
body.home .elementor[data-elementor-type="wp-page"] > [data-id="99597bc"] {
	background-color: var(--jpbc-offwhite) !important;
}

body.home .elementor[data-elementor-type="wp-page"] > [data-id="c422911"],
body.home .elementor[data-elementor-type="wp-page"] > [data-id="4280136"] {
	background-color: var(--jpbc-crystal) !important;
}

body.home .elementor[data-elementor-type="wp-page"] > [data-id="4eb0759"],
body.home .elementor[data-elementor-type="wp-page"] > [data-id="5937ce3"] {
	color: var(--jpbc-white);
	background-color: var(--jpbc-charcoal) !important;
}

body.home .elementor[data-elementor-type="wp-page"] > [data-id="c66b114"] {
	background-color: var(--jpbc-white) !important;
}

body.home .elementor[data-elementor-type="wp-page"] [data-id="b0988d2"] {
	background-color: transparent !important;
}

/*
 * Preserve the backgrounds imported on the 1280px containers and extend
 * their color horizontally. The clip-path prevents the large spread from
 * bleeding into the sections above or below.
 */
body.home .elementor[data-elementor-type="wp-page"] :where(
	[data-id="b7f9f85"],
	[data-id="5ae1dcb"],
	[data-id="7fbc1c3"]
) {
	box-shadow: 0 0 0 100vmax var(--jpbc-offwhite);
	clip-path: inset(0 -100vmax);
}

body.home .elementor[data-elementor-type="wp-page"] :where(
	[data-id="83188ef"],
	[data-id="219d172"]
) {
	box-shadow: 0 0 0 100vmax var(--jpbc-crystal);
	clip-path: inset(0 -100vmax);
}

body.home .elementor[data-elementor-type="wp-page"] :where(
	[data-id="8cba2d6"],
	[data-id="662023a"]
) {
	box-shadow: 0 0 0 100vmax var(--jpbc-charcoal);
	clip-path: inset(0 -100vmax);
}

/*
 * Elementor containers default to flex. These classes intentionally turn
 * their assigned containers into CSS Grid and neutralize Elementor widths
 * on the direct grid items.
 */
body.home :where(
	.jpbc-quick-actions__grid,
	.jpbc-intro__grid,
	.jpbc-values-grid,
	.jpbc-impact-grid,
	.jpbc-festival-numbers__grid,
	.jpbc-pillars-grid,
	.jpbc-featured-festival__grid,
	.jpbc-countdown,
	.jpbc-media-grid,
	.jpbc-logo-grid,
	.jpbc-testimonials-grid,
	.jpbc-gallery-grid
) {
	display: grid !important;
	width: 100% !important;
	min-width: 0 !important;
	max-width: none !important;
	flex-direction: initial !important;
	flex-wrap: initial !important;
}

body.home :where(
	.jpbc-quick-actions__grid,
	.jpbc-intro__grid,
	.jpbc-values-grid,
	.jpbc-impact-grid,
	.jpbc-festival-numbers__grid,
	.jpbc-pillars-grid,
	.jpbc-featured-festival__grid,
	.jpbc-countdown,
	.jpbc-media-grid,
	.jpbc-logo-grid,
	.jpbc-testimonials-grid,
	.jpbc-gallery-grid
) > .elementor-element {
	width: auto !important;
	min-width: 0 !important;
	max-width: none !important;
	flex: initial !important;
	align-self: stretch !important;
}

/* =========================================================
   HOMEPAGE TYPOGRAPHY
   ========================================================= */

.jpbc-section-title {
	max-width: 780px;
	margin-top: 16px;
	font-size: clamp(36px, 4vw, 48px);
	font-weight: 700;
	line-height: 1;
	letter-spacing: -0.03em;
}

.jpbc-section-title--large {
	font-size: clamp(40px, 5vw, 60px);
	line-height: 1.05;
}

.jpbc-lead {
	color: var(--jpbc-muted-text);
	font-size: 18px;
	line-height: 1.625;
}

.jpbc-bg-charcoal .jpbc-lead {
	color: rgba(255, 255, 255, 0.75);
}

/* =========================================================
   HERO
   ========================================================= */

.jpbc-hero {
	position: relative;
	display: flex;
	align-items: center;
	width: 100%;
	max-width: none;
	height: 100vh;
	height: 100svh;
	min-height: 100vh;
	min-height: 100svh;
	margin: 0;
	padding: 0;
	overflow: hidden;
	isolation: isolate;
	color: var(--jpbc-white);
	background: var(--jpbc-charcoal);
}

.jpbc-hero__media,
.jpbc-hero__media > .elementor-widget-container,
.jpbc-hero__media .elementor-image,
.jpbc-hero__media img,
.jpbc-hero > .elementor-background-overlay {
	position: absolute;
	inset: 0;
	display: block;
	width: 100% !important;
	height: 100% !important;
	min-height: 100% !important;
	max-height: none !important;
	margin: 0 !important;
	padding: 0 !important;
	line-height: 0;
}

body.home .elementor .jpbc-hero__media {
	z-index: -3;
	left: calc(50% - 50vw) !important;
	right: auto !important;
	width: 100vw !important;
	max-width: none !important;
	margin: 0 !important;
	transform: none !important;
}

.jpbc-hero__media img {
	object-fit: cover;
	object-position: center;
}

.jpbc-hero::before {
	content: "";
	position: absolute;
	z-index: -2;
	inset: 0;
	width: 100%;
	height: 100%;
	margin: 0;
	padding: 0;
	background: linear-gradient(
		90deg,
		rgba(31, 31, 31, 0.95) 0%,
		rgba(31, 31, 31, 0.72) 48%,
		rgba(31, 31, 31, 0.12) 100%
	);
}

.jpbc-hero::after {
	content: "";
	position: absolute;
	z-index: -1;
	left: 33%;
	bottom: -96px;
	width: 448px;
	aspect-ratio: 1;
	border-radius: 50%;
	background: var(--jpbc-gradient-brand);
	opacity: 0.25;
	filter: blur(64px);
	animation: jpbc-float 7s ease-in-out infinite;
}

.jpbc-hero__content {
	width: min(
		calc(100% - (var(--jpbc-content-gutter) * 2)),
		var(--jpbc-content-width)
	) !important;
	max-width: var(--jpbc-content-width) !important;
	margin-inline: auto !important;
	margin-block: 0 !important;
	padding-block: 0 !important;
}

.jpbc-hero__title {
	max-width: 896px;
	margin-top: 24px;
	color: var(--jpbc-white);
	font-size: clamp(48px, 7.1vw, 96px);
	font-weight: 800;
	line-height: 0.95;
	letter-spacing: -0.03em;
}

.jpbc-hero__title-accent { color: var(--jpbc-lemon); }

.jpbc-hero__copy {
	max-width: 576px;
	margin-top: 28px;
	color: rgba(255, 255, 255, 0.8);
	font-size: 18px;
	line-height: 1.5556;
}

.jpbc-hero__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 16px;
	margin-top: 32px;
}

.jpbc-scroll-cue {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	margin-top: 56px;
	color: var(--jpbc-lemon) !important;
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 0.24em;
	text-transform: uppercase;
}

/* =========================================================
   QUICK ACTIONS
   ========================================================= */

.jpbc-quick-actions__grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	align-items: stretch;
	gap: 24px;
	width: 100%;
	min-width: 0;
}

.jpbc-action-card {
	position: relative;
	display: block;
	width: 100%;
	min-width: 0;
	height: 100%;
	min-height: 0;
	padding: 0;
	overflow: visible;
	border-radius: 34px;
	background: transparent;
	transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.jpbc-action-card > .elementor-widget-container,
.jpbc-action-card .softlite-dynamic-card-box {
	overflow: hidden;
	border-radius: inherit;
	background: transparent;
}

.jpbc-action-card > .elementor-widget-container,
.jpbc-action-card .softlite-dynamic-card-box,
.jpbc-action-card .softlite-dynamic-card-box > a {
	height: 100%;
}

.jpbc-action-card .softlite-dynamic-card-box > a {
	display: flex;
	min-height: 266px;
	flex-direction: column;
	overflow: hidden;
	border-radius: 16px;
}

.jpbc-action-card:hover {
	transform: translateY(-8px);
	box-shadow: var(--jpbc-shadow-lift);
}

.jpbc-action-card--pink .softlite-dynamic-card-box > a,
.jpbc-action-card--violet .softlite-dynamic-card-box > a { color: var(--jpbc-white); }
.jpbc-action-card--pink .softlite-dynamic-card-box > a { background: var(--jpbc-pink); }
.jpbc-action-card--violet .softlite-dynamic-card-box > a { background: var(--jpbc-violet); }
.jpbc-action-card--lime .softlite-dynamic-card-box > a {
	color: var(--jpbc-charcoal);
	background: var(--jpbc-lime);
}

.jpbc-action-card__icon {
	display: grid;
	width: 48px;
	height: 48px;
	place-items: center;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.18);
}

.jpbc-action-card__title {
	margin-top: 24px;
	font-size: 24px;
	font-weight: 700;
	line-height: 1.333;
	letter-spacing: -0.03em;
}

.jpbc-action-card__copy { margin-top: 12px; opacity: 0.85; }
.jpbc-action-card__link { margin-top: auto; padding-top: 24px; font-weight: 600; }

/* =========================================================
   WHO WE ARE / VALUES
   ========================================================= */

.jpbc-intro__grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	align-items: start;
	gap: 64px;
	padding-inline: 0 !important;
}

.jpbc-intro__copy {
	display: block;
	margin-top: 0;
}

.jpbc-intro__copy .softlite-dynamic-card-box-text-4 {
	margin-top: 16px !important;
}

.jpbc-values-grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	align-self: start !important;
	gap: 20px;
}

body.home .jpbc-intro__grid > .jpbc-values-grid {
	height: auto !important;
	align-self: start !important;
}

body.home .jpbc-values-grid > .jpbc-value-card {
	height: auto !important;
	align-self: start !important;
}

.jpbc-value-card {
	min-height: 0;
	padding: 0 !important;
	border-radius: 0;
	color: inherit;
	background: transparent !important;
}

.jpbc-value-card > .elementor-widget-container,
.jpbc-value-card .softlite-dynamic-card-box,
.jpbc-value-card .softlite-dynamic-card-box > div {
	width: 100% !important;
	height: auto !important;
}

/* Let the longest card determine each row's height, with room below the copy. */
body.home .elementor .jpbc-values-grid {
 gap: 20px;
 padding: 0 !important;
 margin: 0;
}
body.home .elementor .jpbc-values-grid > .jpbc-value-card {
 align-self: stretch !important;
 display: flex;
}
body.home .elementor .jpbc-value-card > .elementor-widget-container,
body.home .elementor .jpbc-value-card .softlite-dynamic-card-box {
 display: flex;
 flex: 1;
}
body.home .elementor .jpbc-value-card .softlite-dynamic-card-box > div {
 padding: 24px !important;
 border-radius: 24px;
}
body.home .elementor .jpbc-value-card h3 {
 margin: 0;
 line-height: 1.3;
}
body.home .elementor .jpbc-value-card p {
 margin: 12px 0 0;
 line-height: 1.5;
}
@media (max-width: 767px) {
 body.home .elementor .jpbc-intro__grid {
  grid-template-columns: minmax(0, 1fr);
  gap: 32px;
 }
 body.home .elementor .jpbc-values-grid {
  grid-template-columns: minmax(0, 1fr);
  gap: 16px;
 }
 body.home .elementor .jpbc-value-card .softlite-dynamic-card-box > div {
  padding: 20px !important;
 }
}

.jpbc-value-card__title {
	font-size: 20px;
	font-weight: 700;
	line-height: 1.4;
	letter-spacing: -0.03em;
}

.jpbc-value-card__copy { margin-top: 12px; font-size: 14px; opacity: 0.85; }

/* =========================================================
   CAMPAIGNS
   ========================================================= */

/* =========================================================
   GIVEWP CAMPAIGN GRID — LAYOUT
   ========================================================= */

/*
 * Outer Elementor container.
 * This must remain a single-column flex wrapper.
 */
body.home .jpbc-campaign-grid {
	--width: 100%;
	--container-widget-width: 100%;
	--container-widget-flex-grow: 1;

	display: flex !important;
	width: 100% !important;
	min-width: 0 !important;
	max-width: none !important;

	align-self: stretch !important;
	flex: 1 1 100% !important;
	flex-direction: column !important;

	margin: 0 !important;
	padding: 0 !important;
}

/* Account for Elementor's optional inner container. */
body.home .jpbc-campaign-grid > .e-con-inner {
	display: flex !important;
	width: 100% !important;
	min-width: 0 !important;
	max-width: none !important;

	align-items: stretch !important;
	flex-direction: column !important;

	margin: 0 !important;
	padding: 0 !important;
}

/* Shortcode widget must fill the Elementor container. */
body.home .jpbc-campaign-grid .elementor-widget-shortcode,
body.home .jpbc-campaign-grid .elementor-widget-container,
body.home .jpbc-campaign-grid .elementor-shortcode {
	display: block !important;
	width: 100% !important;
	min-width: 0 !important;
	max-width: none !important;

	align-self: stretch !important;
	flex: 1 1 100% !important;

	margin: 0 !important;
	padding: 0 !important;
}

/*
 * GiveWP-generated grid.
 * This is the only element that should create the three columns.
 */
body.home .jpbc-campaign-grid .givewp-campaign-grid {
	display: grid !important;
	grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
	align-items: stretch !important;
	gap: 24px !important;

	width: 100% !important;
	min-width: 0 !important;
	max-width: none !important;

	margin: 0 !important;
	padding: 0 !important;
	box-sizing: border-box !important;
}

/* Each campaign occupies one full GiveWP grid cell. */
body.home .jpbc-campaign-grid .give-campaigns-component-campaign {
	width: 100% !important;
	min-width: 0 !important;
	max-width: none !important;
	height: 100% !important;

	margin: 0 !important;
	box-sizing: border-box !important;
}

/* =========================================================
   GIVEWP CAMPAIGN GRID — RESPONSIVE LAYOUT
   ========================================================= */

@media (max-width: 1024px) {
	body.home .jpbc-campaign-grid .givewp-campaign-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
		gap: 24px !important;
	}
}

@media (max-width: 767px) {
	body.home .jpbc-campaign-grid .givewp-campaign-grid {
		grid-template-columns: minmax(0, 1fr) !important;
		gap: 24px !important;
	}
}

.jpbc-section-heading-row {
	display: flex;
	align-items: end;
	justify-content: space-between;
	gap: 32px;
	margin-bottom: 48px;
}

.jpbc-campaign-card {
	display: flex;
	min-height: 570px;
	flex-direction: column;
	overflow: hidden;
	border: 1px solid rgba(255, 255, 255, 0.1);
	border-radius: 32px;
	background: rgba(255, 255, 255, 0.05);
	isolation: isolate;
	transition: transform 0.3s ease, border-color 0.3s ease;
}

.jpbc-campaign-card:hover {
	transform: translateY(-8px);
	border-color: rgba(249, 190, 61, 0.5);
}

.jpbc-campaign-card__image {
	display: block;
	width: 100%;
	height: 240px;
	object-fit: cover;
	transform: scale(1);
	transform-origin: center;
	transition: transform 0.45s ease;
	will-change: transform;
}

.jpbc-campaign-card:hover .jpbc-campaign-card__image {
	transform: scale(1.045);
}

.jpbc-campaign-card__body {
	display: flex;
	flex: 1;
	flex-direction: column;
	padding: 28px;
}

.jpbc-campaign-card__title {
	font-size: 20px;
	font-weight: 700;
	line-height: 1.4;
	letter-spacing: -0.03em;
}

.jpbc-campaign-card__copy {
	flex: 1;
	margin-top: 12px;
	color: rgba(255, 255, 255, 0.7);
	font-size: 14px;
	line-height: 1.43;
}

.jpbc-progress {
	height: 8px;
	margin-top: 24px;
	overflow: hidden;
	border-radius: 99px;
	background: rgba(255, 255, 255, 0.12);
}

.jpbc-progress__bar {
	height: 100%;
	border-radius: inherit;
	background: var(--jpbc-gradient-brand);
}

/* =========================================================
   IMPACT STATS
   ========================================================= */

.jpbc-impact-grid {
	display: grid;
	grid-template-columns: repeat(6, minmax(0, 1fr));
	align-items: start;
	column-gap: 0;
	row-gap: 24px;
	margin-top: 48px;
}

.jpbc-impact-grid > .e-con-inner {
	display: grid !important;
	grid-template-columns: repeat(6, minmax(0, 1fr));
	align-items: start;
	column-gap: 0;
	row-gap: 24px;
	width: 100% !important;
	max-width: none !important;
}

.jpbc-impact-stat {
	display: flex !important;
	width: 100% !important;
	min-width: 0 !important;
	flex-direction: column !important;
	align-items: center !important;
	justify-content: flex-start !important;
	text-align: center !important;
}

.jpbc-impact-stat :where(.elementor-widget-container, .elementor-heading-title, p) {
	width: 100%;
	text-align: center !important;
}

.jpbc-impact-stat dt {
	margin: 0;
	width: 100%;
	text-align: center;
}

.jpbc-impact-stat__number {
	font-variant-numeric: tabular-nums;
	font-family: var(--jpbc-font-display);
	font-size: clamp(40px, 4vw, 60px);
	font-weight: 800;
	line-height: 1;
	letter-spacing: -0.03em;
}

.jpbc-impact-stat__label {
	margin: 12px 0 0;
	width: 100%;
	text-align: center;
	color: rgba(31, 31, 31, 0.7);
	font-size: 14px;
	line-height: 1.43;
}

/* =========================================================
   FESTIVAL IN NUMBERS
   ========================================================= */

.jpbc-festival-numbers__grid {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	align-items: stretch;
	gap: 16px;
	width: 100%;
	min-width: 0;
	margin-top: 64px;
}

.jpbc-festival-number {
	width: 100%;
	min-width: 0;
	height: auto !important;
}

.jpbc-festival-number > .elementor-widget-container,
.jpbc-festival-number .softlite-dynamic-card-box,
.jpbc-festival-number .softlite-dynamic-card-box > * {
	height: auto !important;
}

.jpbc-festival-number article {
	display: grid !important;
	grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
	overflow: hidden !important;
	border-radius: 32px !important;
}

.jpbc-festival-number article > div {
	display: flex !important;
	justify-content: center;
	min-width: 0;
	flex-direction: column !important;
	padding: 56px !important;
}

.jpbc-festival-number article > figure {
	width: 100% !important;
	height: auto !important;
	aspect-ratio: 4 / 3;
	margin: 0 !important;
	overflow: hidden !important;
}

.jpbc-festival-number:nth-child(1) article > figure {
	aspect-ratio: 16 / 9;
}

.jpbc-festival-number article > figure img {
	display: block;
	width: 100% !important;
	height: 100% !important;
	object-fit: cover !important;
	transition: transform 0.7s ease;
}

.jpbc-festival-number:hover article > figure img {
	transform: scale(1.05);
}

.jpbc-festival-number:nth-child(even) article > figure {
	order: -1;
}

.jpbc-festival-number:nth-child(1) article { color: var(--jpbc-charcoal); background: var(--jpbc-orange) !important; }
.jpbc-festival-number:nth-child(2) article { color: var(--jpbc-charcoal); background: var(--jpbc-lime) !important; }
.jpbc-festival-number:nth-child(3) article { color: var(--jpbc-white); background: var(--jpbc-violet) !important; }
.jpbc-festival-number:nth-child(4) article { color: var(--jpbc-white); background: var(--jpbc-pink) !important; }

.jpbc-festival-number .softlite-dynamic-card-box-text-1 {
	font-family: var(--jpbc-font-display) !important;
	font-size: clamp(52px, 5vw, 72px) !important;
	font-weight: 800 !important;
	line-height: 1 !important;
	letter-spacing: -0.03em !important;
}

.jpbc-festival-number .softlite-dynamic-card-box-text-2 {
	margin-top: 16px !important;
	font-size: 24px !important;
	font-weight: 700 !important;
	line-height: 1.3 !important;
}

.jpbc-festival-number .softlite-dynamic-card-box-text-3 {
	max-width: 448px;
	margin-top: 12px !important;
	font-size: 16px !important;
	line-height: 1.5 !important;
	opacity: 0.85;
}

/* =========================================================
   FOUR KEY AREAS
   ========================================================= */

.jpbc-pillars-grid {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 24px;
	margin-top: 48px;
}

.jpbc-pillar {
	min-height: 0;
	padding: 0 !important;
	border: 0;
	border-radius: 0;
	background: transparent;
	transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.jpbc-pillar:hover { transform: translateY(-6px); box-shadow: var(--jpbc-shadow-soft); }

.jpbc-pillar__title {
	margin-top: 28px;
	font-size: 24px;
	font-weight: 700;
	line-height: 1.333;
	letter-spacing: -0.03em;
}

.jpbc-pillar__copy { margin-top: 12px; color: var(--jpbc-muted-text); }

/* =========================================================
   FEATURED FESTIVAL
   ========================================================= */

.jpbc-featured-festival { overflow: hidden; isolation: isolate; }

.jpbc-featured-festival::before {
	content: "";
	position: absolute;
	z-index: -1;
	top: -160px;
	right: -96px;
	width: 420px;
	aspect-ratio: 1;
	border-radius: 50%;
	background: var(--jpbc-gradient-cool);
	opacity: 0.2;
	filter: blur(70px);
}

.jpbc-featured-festival__grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	align-items: center;
	gap: 56px;
	padding-inline: 0 !important;
}

.jpbc-featured-festival .jpbc-section-title--large,
.jpbc-featured-festival .jpbc-section-title--large .elementor-heading-title {
	font-size: 48px !important;
	line-height: 1 !important;
}

.jpbc-featured-festival .jpbc-lead {
	font-size: 16px;
	line-height: 1.5;
}

.jpbc-countdown {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 12px;
	margin-top: 32px;
}

.jpbc-countdown__item {
	padding: 0;
	border: 1px solid rgba(255, 255, 255, 0.15);
	border-radius: 12px;
	background: rgba(255, 255, 255, 0.06);
	text-align: center;
}

/* The outer tile owns the surface; imported inner cards must not draw
 * a second, differently rounded border/background inside it. */
body.home .elementor .jpbc-countdown__item {
 overflow: hidden;
 border-radius: 12px;
}
body.home .elementor .jpbc-countdown__item > .elementor-widget-container {
 border-radius: inherit;
}
body.home .elementor .jpbc-countdown__item .softlite-dynamic-card-box {
 border: 0;
 border-radius: inherit;
 background: transparent;
 backdrop-filter: none;
 -webkit-backdrop-filter: none;
}

.jpbc-countdown__number {
	font-family: var(--jpbc-font-display);
	font-size: 30px;
	font-weight: 700;
	line-height: 1;
}

.jpbc-countdown__label {
	margin-top: 8px;
	color: rgba(255, 255, 255, 0.7);
	font-size: 12px;
	text-transform: uppercase;
}

.jpbc-featured-festival__media {
	position: relative !important;
	display: block !important;
	overflow: hidden;
	border-radius: 20px;
	box-shadow: var(--jpbc-shadow-lift);
}

.jpbc-featured-festival__media > [data-id="cee3791"],
.jpbc-featured-festival__media > [data-id="cee3791"] .elementor-widget-container,
.jpbc-featured-festival__media > [data-id="cee3791"] .elementor-image {
	width: 100%;
	height: 100%;
}

.jpbc-featured-festival__media img {
	display: block;
	width: 100%;
	height: 100%;
	min-height: 520px;
	object-fit: cover;
}

/* Center the media play control over the image instead of allowing the
 * Elementor button widget to participate in the surrounding flex layout. */
.jpbc-featured-festival__media > [data-id="cc2525d"] {
	position: absolute !important;
	z-index: 2;
	inset: auto !important;
	top: 50% !important;
	right: auto !important;
	bottom: auto !important;
	left: 50% !important;
	width: 72px !important;
	height: 72px !important;
	margin: 0 !important;
	padding: 0 !important;
	border: 0 !important;
	box-sizing: border-box;
	translate: none !important;
	transform: translate(-50%, -50%) !important;
}

.jpbc-featured-festival__media > [data-id="cc2525d"] .elementor-button {
	display: grid;
	width: 72px !important;
	height: 72px !important;
	min-height: 0;
	place-items: center;
	padding: 0 !important;
	border: 0 !important;
	border-radius: 50%;
	color: var(--jpbc-charcoal);
	background: var(--jpbc-lemon);
	box-sizing: border-box;
}

.jpbc-featured-festival__media > [data-id="cc2525d"] svg {
	width: 30px;
	height: 30px;
}

/* Featured-festival CTAs share one compact row and one baseline. */
body.home [data-id="45d2acc"] {
	display: flex !important;
	width: 100% !important;
	align-items: center;
	justify-content: flex-start;
	flex-direction: row !important;
	flex-wrap: wrap;
	gap: 16px !important;
	margin-top: 36px;
}

body.home [data-id="45d2acc"] > .jpbc-button {
	width: auto !important;
	min-width: 0 !important;
	min-height: 0;
	flex: 0 0 auto !important;
	padding: 0 !important;
	background: transparent;
}

body.home [data-id="45d2acc"] > .jpbc-button .elementor-button {
	min-height: 48px;
	padding: 12px 24px;
	white-space: nowrap;
}

/* =========================================================
   MEDIA / PRESS
   ========================================================= */

.jpbc-filter-row {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	margin-top: 36px;
}

body.home [data-id="3d287f2"] {
	display: flex !important;
	width: 100% !important;
	align-items: center;
	justify-content: flex-start;
	flex-direction: row !important;
	flex-wrap: wrap;
	gap: 10px !important;
}

.jpbc-filter-button {
	width: auto !important;
	min-width: 0 !important;
	min-height: 0;
	flex: 0 0 auto !important;
	padding: 0 !important;
	border: 0 !important;
	border-radius: 0;
	background: transparent !important;
	box-shadow: none !important;
	cursor: pointer;
}

.jpbc-filter-button .elementor-button {
	min-height: 42px;
	padding: 10px 18px !important;
	border: 0 !important;
	border-radius: 999px !important;
	color: var(--jpbc-charcoal) !important;
	background: #eeeeee !important;
	box-shadow: none !important;
	font: 600 14px/1.4 var(--jpbc-font-body);
	white-space: nowrap;
}

.jpbc-filter-button:hover .elementor-button,
.jpbc-filter-button.is-active .elementor-button {
	color: var(--jpbc-white) !important;
	background: var(--jpbc-charcoal) !important;
}

.jpbc-filter-button:hover .elementor-button-text,
.jpbc-filter-button.is-active .elementor-button-text {
	color: var(--jpbc-white) !important;
}

.jpbc-media-grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 24px;
	margin-top: 22px;
}

.jpbc-media-card {
	overflow: hidden;
	padding: 0 !important;
	border: 1px solid var(--jpbc-border) !important;
	border-radius: 24px;
	background: var(--jpbc-white);
	box-shadow: none;
	transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.jpbc-media-card > .e-con {
	width: 100% !important;
	height: 100%;
	border: 0 !important;
	border-radius: 0 !important;
	background: var(--jpbc-white) !important;
	box-shadow: none !important;
}

.jpbc-media-card:hover { transform: translateY(-5px); box-shadow: var(--jpbc-shadow-soft); }

.jpbc-media-card__meta {
	display: flex;
	flex-wrap: wrap;
	gap: 8px 18px;
	color: var(--jpbc-muted-text);
	font-size: 13px;
}

.jpbc-media-card__title {
	margin-top: 20px;
	font-size: 24px;
	font-weight: 700;
	line-height: 1.333;
	letter-spacing: -0.03em;
}

.jpbc-media-card__copy { margin-top: 12px; color: var(--jpbc-muted-text); }

/* =========================================================
   PARTNERS / TESTIMONIALS
   ========================================================= */

.jpbc-logo-grid {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 16px;
	margin-top: 28px;
}

.jpbc-logo-tile {
	display: grid;
	min-height: 112px;
	place-items: center;
	padding: 20px;
	border: 1px solid var(--jpbc-border);
	border-radius: 12px;
	background: var(--jpbc-white);
	font-weight: 600;
	text-align: center;
}

/* The enterprise names are emitted inside a SoftLite list widget. The grid
 * belongs on that generated list, not on the Elementor widget wrapper. */
body.home [data-id="b3fdc06"].jpbc-logo-grid {
	display: block !important;
}

body.home [data-id="b3fdc06"] :is(.softlite-wrapper, .softlite-dynamic-list) {
	width: 100% !important;
	max-width: none !important;
}

body.home [data-id="b3fdc06"] .softlite-dynamic-list {
	display: grid !important;
	grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
	gap: 16px !important;
}

body.home [data-id="b3fdc06"] .softlite-dynamic-list-item {
	display: flex !important;
	width: auto !important;
	min-width: 0 !important;
	height: 96px !important;
	align-items: center;
	justify-content: center;
	padding-inline: 16px !important;
	border: 1px solid var(--jpbc-border) !important;
	border-radius: 22px !important;
	background: var(--jpbc-white) !important;
	font-family: var(--jpbc-font-display);
	font-size: 14px;
	font-weight: 700;
	line-height: 20px;
	text-align: center;
}

/* Small-business colors are already attached to the inner text widgets.
 * Remove the extra white Elementor card so the color tile fills each cell. */
body.home [data-id="a6d18a4"].jpbc-logo-grid {
	margin-top: 24px;
}

body.home [data-id="a6d18a4"] > .jpbc-logo-tile {
	min-height: 112px;
	padding: 0 !important;
	border: 0 !important;
	border-radius: 0;
	background: transparent !important;
}

body.home [data-id="a6d18a4"] > .jpbc-logo-tile > .elementor-widget {
	width: 100% !important;
	height: 112px !important;
	max-width: none !important;
}

body.home .jpbc-testimonials-grid {
	display: block !important;
	gap: 24px;
	margin-top: 56px;
	padding: 0 !important;
}

.jpbc-testimonials-grid > .e-con-inner > .elementor-element > .elementor-widget {
	margin-top: 0 !important;
}

.jpbc-testimonial .softlite-dynamic-card-box > :not(:first-child) {
	display: none !important;
}

.jpbc-testimonial .elementor-widget-container > .softlite-dynamic-card-box {
	display: block !important;
}

.jpbc-testimonial .elementor-widget-container > .softlite-dynamic-card-box > div:first-child,
.jpbc-testimonial .elementor-widget-container > .softlite-dynamic-card-box > div:first-child > figure {
	width: 100% !important;
	max-width: none !important;
	flex: 0 0 100% !important;
}

/* Elementor inserts an `.e-con-inner` wrapper for this boxed container. */
.jpbc-testimonials-grid > .e-con-inner {
	display: grid !important;
	grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
	align-items: stretch;
	gap: 24px !important;
	width: 100% !important;
	max-width: none !important;
	margin: 0 !important;
	padding: 0 !important;
}

.jpbc-testimonials-grid > .e-con-inner > .elementor-element {
	width: auto !important;
	min-width: 0 !important;
	max-width: none !important;
}

.jpbc-testimonial {
	padding: 0 !important;
	border-radius: 0;
	background: transparent;
	box-shadow: none;
}

.jpbc-testimonial blockquote {
	margin-top: 16px !important;
	font-family: var(--jpbc-font-body);
	font-size: 18px;
	font-weight: 500;
	line-height: 1.625;
	letter-spacing: -0.02em;
}

.jpbc-testimonial figure.softlite-dynamic-card-box-background-color-1 {
	min-height: 238px;
	border: 1px solid var(--jpbc-border) !important;
}

/* Imported heading rows already sit above grids with their own top margin.
 * Remove only the duplicated spacing on those sections. */
body.home [data-id="e548042"] .jpbc-section-heading-row,
body.home [data-id="99597bc"] .jpbc-section-heading-row {
	margin-bottom: 0 !important;
}

body.home [data-id="80df478"] .jpbc-section-heading-row {
	margin-bottom: 14px !important;
	padding-inline: 0 !important;
}

body.home [data-id="88858f5"] .jpbc-section-heading-row {
	margin-bottom: 6px !important;
}

.jpbc-testimonial figcaption {
	margin-top: 24px;
	color: var(--jpbc-muted-text);
	font-size: 14px;
}

/* =========================================================
   GALLERY
   ========================================================= */

.jpbc-gallery-grid {
	display: grid;
	grid-template-columns: repeat(12, minmax(0, 1fr)) !important;
	grid-auto-rows: 220px !important;
	gap: 16px;
	margin-top: 6px;
}

.jpbc-gallery-item {
	--width: auto !important;
	width: auto !important;
	min-width: 0 !important;
	max-width: none !important;
	height: auto !important;
	overflow: hidden;
	border-radius: 16px;
}

.jpbc-gallery-item:nth-child(1) { grid-column: span 3 !important; grid-row: span 2 !important; }
.jpbc-gallery-item:nth-child(2) { grid-column: span 3 !important; }
.jpbc-gallery-item:nth-child(3) { grid-column: span 3 !important; }
.jpbc-gallery-item:nth-child(4) { grid-column: span 6 !important; }
.jpbc-gallery-item:nth-child(5) { grid-column: span 3 !important; }

.jpbc-gallery-item img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 0.6s ease, filter 0.6s ease;
}

.jpbc-gallery-item:hover img { transform: scale(1.05); filter: saturate(1.08); }

/* =========================================================
   QUOTE / NEWSLETTER / DONATION CTA
   ========================================================= */

.jpbc-quote {
	position: relative;
	padding-block: 128px;
	overflow: hidden;
	isolation: isolate;
	color: var(--jpbc-white);
	text-align: center;
}

.jpbc-quote__image,
.jpbc-quote::before {
	position: absolute;
	z-index: -2;
	inset: 0;
	width: 100%;
	height: 100%;
}

.jpbc-quote__image { object-fit: cover; }

.jpbc-quote::before {
	content: "";
	z-index: -1;
	background: rgba(31, 31, 31, 0.75);
}

.jpbc-quote blockquote {
	max-width: 896px;
	margin-inline: auto;
	font-family: var(--jpbc-font-display);
	font-size: clamp(36px, 5vw, 60px);
	font-weight: 700;
	line-height: 1.05;
	letter-spacing: -0.03em;
}

.jpbc-quote__source {
	margin-top: 28px;
	color: var(--jpbc-lemon);
	font-size: 14px;
	font-weight: 600;
	letter-spacing: 0.24em;
	text-transform: uppercase;
}

/* The imported quote card is nested in `.jpbc-shell`; its image layer is
 * section artwork and must break out while its internal copy stays narrow. */
.jpbc-quote > .jpbc-shell > .elementor-widget {
	position: relative;
	left: calc(50% - 50vw);
	width: 100vw !important;
	max-width: none !important;
	margin-inline: 0 !important;
}

.jpbc-newsletter { text-align: center; }
.jpbc-newsletter .jpbc-section-title { margin-inline: auto; }
.jpbc-newsletter .jpbc-lead { max-width: 672px; margin: 20px auto 0; color: rgba(31, 31, 31, 0.7); }

.jpbc-newsletter__form {
	display: flex;
	max-width: 640px;
	margin: 32px auto 0;
}

.jpbc-newsletter__form input[type="email"] {
	flex: 1;
	min-width: 0;
	height: 54px;
	padding: 14px 18px;
	border: 1px solid rgba(31, 31, 31, 0.18);
	border-radius: 8px 0 0 8px;
	color: var(--jpbc-charcoal);
	background: var(--jpbc-white);
	font: 400 16px/1.5 var(--jpbc-font-body);
}

.jpbc-newsletter__form input[type="email"]:focus {
	outline: 3px solid rgba(238, 76, 162, 0.2);
	border-color: var(--jpbc-pink);
}

.jpbc-newsletter__form button,
.jpbc-newsletter__form input[type="submit"] {
	height: 54px;
	padding-inline: 24px;
	border: 0;
	border-radius: 0 8px 8px 0;
	color: var(--jpbc-white);
	background: var(--jpbc-pink);
	font: 600 16px/1 var(--jpbc-font-body);
	cursor: pointer;
}

.jpbc-donate-cta {
	position: relative;
	overflow: hidden;
	isolation: isolate;
	text-align: center;
}

.jpbc-donate-cta::before,
.jpbc-donate-cta::after {
	content: "";
	position: absolute;
	z-index: -1;
	width: 384px;
	aspect-ratio: 1;
	border-radius: 50%;
	filter: blur(64px);
}

.jpbc-donate-cta::before {
	top: -128px;
	right: -96px;
	background: var(--jpbc-gradient-brand);
	opacity: 0.3;
}

.jpbc-donate-cta::after {
	bottom: -160px;
	left: -96px;
	background: var(--jpbc-gradient-cool);
	opacity: 0.25;
}

.jpbc-donate-cta .jpbc-section-title,
.jpbc-donate-cta .jpbc-lead { margin-inline: auto; }
.jpbc-donate-cta .jpbc-lead { max-width: 640px; margin-top: 24px; }
.jpbc-donate-cta .jpbc-button { margin-top: 32px; }

@keyframes jpbc-float {
	0%, 100% { transform: translate3d(0, 0, 0); }
	50% { transform: translate3d(0, -18px, 0); }
}

/* =========================================================
   TABLET
   ========================================================= */

@media (max-width: 1024px) {
	.jpbc-hero { height: 100svh; min-height: 100svh; padding: 0; }
	.jpbc-hero__title { font-size: clamp(64px, 9vw, 72px); }
	.jpbc-impact-grid,
	.jpbc-impact-grid > .e-con-inner {
		grid-template-columns: repeat(3, minmax(0, 1fr));
		row-gap: 40px;
	}
	.jpbc-festival-numbers__grid { grid-template-columns: minmax(0, 1fr); }
	.jpbc-pillars-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.jpbc-logo-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

/* =========================================================
   MOBILE
   ========================================================= */

@media (max-width: 767px) {
	.jpbc-section-title { font-size: 36px; line-height: 1.1; }
	.jpbc-section-title--large { font-size: 40px; }
	.jpbc-lead { font-size: 17px; }

	.jpbc-hero { height: 100svh; min-height: 100svh; padding: 0; }
	.jpbc-hero::before {
		background: linear-gradient(90deg, rgba(31, 31, 31, 0.94), rgba(31, 31, 31, 0.55));
	}
	.jpbc-hero::after { left: 15%; width: 320px; }
	.jpbc-hero__title { font-size: 48px; }
	.jpbc-hero__copy { font-size: 17px; }
	.jpbc-hero__actions { flex-direction: column; align-items: stretch; }
	.jpbc-hero__actions .jpbc-button { width: 100%; }
	.jpbc-scroll-cue { margin-top: 40px; }

	.jpbc-quick-actions__grid,
	.jpbc-intro__grid,
	.jpbc-featured-festival__grid,
	.jpbc-media-grid,
	.jpbc-testimonials-grid,
	.jpbc-testimonials-grid > .e-con-inner {
		grid-template-columns: 1fr;
	}

	.jpbc-values-grid { grid-template-columns: 1fr; }
	.jpbc-section-heading-row { align-items: start; flex-direction: column; margin-bottom: 36px; }
	.jpbc-campaign-card { min-height: 0; }
	.jpbc-campaign-card__image { height: 220px; }
	.jpbc-impact-grid,
	.jpbc-impact-grid > .e-con-inner {
		grid-template-columns: minmax(0, 1fr);
		gap: 40px;
	}
	.jpbc-festival-numbers__grid { grid-template-columns: 1fr; }
	.jpbc-festival-number article { grid-template-columns: 1fr !important; }
	.jpbc-festival-number article > div { padding: 40px !important; }
	.jpbc-festival-number article > figure { min-height: 300px; order: initial !important; }
	.jpbc-pillars-grid { grid-template-columns: 1fr; }
	.jpbc-countdown { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.jpbc-featured-festival__media img { min-height: 360px; }
	.jpbc-logo-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	body.home [data-id="b3fdc06"] .softlite-dynamic-list {
		grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
	}
	.jpbc-gallery-grid { grid-template-columns: 1fr; grid-auto-rows: 260px; }
	.jpbc-gallery-item:nth-child(n) { grid-column: auto; grid-row: auto; }
	.jpbc-quote { padding-block: 88px; }
	.jpbc-newsletter__form { flex-direction: column; gap: 12px; }
	.jpbc-newsletter__form input[type="email"],
	.jpbc-newsletter__form button,
	.jpbc-newsletter__form input[type="submit"] { width: 100%; border-radius: 8px; }
}

@media (max-width: 430px) {
	.jpbc-hero__title { font-size: 42px; }
	.jpbc-section-title { font-size: 34px; }
	.jpbc-logo-grid { grid-template-columns: 1fr; }
	body.home [data-id="b3fdc06"] .softlite-dynamic-list {
		grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
	}
	body.home [data-id="a6d18a4"].jpbc-logo-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}




/* ==================================================
   JPBC GIVEWP CAMPAIGN GRID
   ================================================== */

body.home .jpbc-campaign-grid {
    --jpbc-card-bg: #3d3d3d;
    --jpbc-card-border: rgba(255, 255, 255, 0.1);
    --jpbc-card-title: #ffffff;
    --jpbc-card-text: #c7c7c7;
    --jpbc-track: #606060;
    --jpbc-pink: #eb3f9d;
}

/* ==================================================
   INDIVIDUAL CAMPAIGN CARD
   ================================================== */

.jpbc-campaign-grid .give-campaigns-component-campaign {
    --jpbc-progress-color: #eb3f9d;

    display: flex !important;
    flex-direction: column !important;
    width: 100% !important;
    min-width: 0 !important;
    min-height: 100% !important;

    padding: 0 0 26px !important;
    overflow: hidden !important;

    background: var(--jpbc-card-bg) !important;
    border: 1px solid var(--jpbc-card-border) !important;
    border-radius: 38px !important;
    box-shadow: none !important;

    color: var(--jpbc-card-text) !important;
    cursor: pointer;

    transition:
        transform 0.3s ease,
        border-color 0.3s ease,
        box-shadow 0.3s ease;
}

.jpbc-campaign-grid .give-campaigns-component-campaign:hover {
    transform: translateY(-6px);
    border-color: rgba(235, 63, 157, 0.5) !important;
    box-shadow: 0 18px 45px rgba(0, 0, 0, 0.22) !important;
}

/* ==================================================
   FEATURED IMAGE
   ================================================== */

.jpbc-campaign-grid
.give-campaigns-component-campaign-image {
    width: 100% !important;
    aspect-ratio: 4 / 3;
    min-height: 0 !important;

    background-size: cover !important;
    background-position: center !important;
    background-repeat: no-repeat !important;

    border-radius: 37px 37px 0 0 !important;
}

/* ==================================================
   CAMPAIGN TITLE
   ================================================== */

.jpbc-campaign-grid
.give-campaigns-component-campaign-title {
    margin: 0 !important;
    padding: 28px 32px 0 !important;

    color: var(--jpbc-card-title) !important;
    font-family: "Outfit", Arial, sans-serif !important;
    font-size: clamp(21px, 1.45vw, 27px) !important;
    font-weight: 500 !important;
    line-height: 1.2 !important;
    letter-spacing: -0.025em !important;
}

/* ==================================================
   DESCRIPTION
   ================================================== */

.jpbc-campaign-grid
.give-campaigns-component-campaign-description {
    margin: 0 !important;
    padding: 16px 32px 24px !important;

    color: var(--jpbc-card-text) !important;
    font-family: "Manrope", Arial, sans-serif !important;
    font-size: clamp(15px, 1.05vw, 18px) !important;
    font-weight: 400 !important;
    line-height: 1.5 !important;
}

/* ==================================================
   GOAL AREA
   ================================================== */

.jpbc-campaign-grid
.give-campaigns-component-campaign__goal {
    display: flex !important;
    flex-direction: column !important;
    width: auto !important;

    margin: auto 32px 0 !important;
    padding: 0 !important;
}

/* Progress wrapper */
.jpbc-campaign-grid
.give-campaigns-component-campaign__goal-progress {
    width: 100% !important;
    margin: 0 0 16px !important;
}

/* Grey progress track */
.jpbc-campaign-grid
.give-campaigns-component-campaign__goal-progress-container {
    width: 100% !important;
    height: 10px !important;
    overflow: hidden !important;

    background-color: var(--jpbc-track) !important;
    border-radius: 999px !important;
}

/* Filled progress bar */
.jpbc-campaign-grid
.give-campaigns-component-campaign__goal-progress-bar {
    height: 100% !important;
    min-height: 10px !important;

    background-color: var(--jpbc-progress-color) !important;
    border-radius: 999px !important;

    transition: width 0.8s cubic-bezier(0.22, 1, 0.36, 1) !important;
}

/* Raised and goal information */
.jpbc-campaign-grid
.give-campaigns-component-campaign__goal-container {
    display: flex !important;
    align-items: flex-end !important;
    justify-content: space-between !important;
    gap: 20px !important;

    width: 100% !important;
    margin: 0 !important;
}

/* Individual raised/goal column */
.jpbc-campaign-grid
.give-campaigns-component-campaign__goal-container-item {
    display: flex !important;
    flex-direction: column !important;
    gap: 5px !important;

    color: var(--jpbc-card-text) !important;
    font-family: "Manrope", Arial, sans-serif !important;
}

.jpbc-campaign-grid
.give-campaigns-component-campaign__goal-container-item:last-child {
    align-items: flex-end !important;
    text-align: right !important;
}

/* Amount Raised / Our Goal labels */
.jpbc-campaign-grid
.give-campaigns-component-campaign__goal-container-item span {
    color: var(--jpbc-card-text) !important;
    font-family: "Manrope", Arial, sans-serif !important;
    font-size: 12px !important;
    font-weight: 700 !important;
    line-height: 1.2 !important;
    letter-spacing: 0.08em !important;
    text-transform: uppercase !important;
}

/* Dollar values */
.jpbc-campaign-grid
.give-campaigns-component-campaign__goal-container-item strong {
    color: #ffffff !important;
    font-family: "Manrope", Arial, sans-serif !important;
    font-size: clamp(16px, 1.15vw, 20px) !important;
    font-weight: 700 !important;
    line-height: 1.2 !important;
}

/* ==================================================
   INDIVIDUAL PROGRESS COLORS
   ================================================== */

.jpbc-campaign-grid
.give-campaigns-component-campaign:nth-child(1) {
    --jpbc-progress-color: #d8df32;
}

.jpbc-campaign-grid
.give-campaigns-component-campaign:nth-child(2) {
    --jpbc-progress-color: #ff982f;
}

.jpbc-campaign-grid
.give-campaigns-component-campaign:nth-child(3) {
    --jpbc-progress-color: #7d87ff;
}

/* ==================================================
   TABLET
   ================================================== */

@media (max-width: 1024px) {
    .jpbc-campaign-grid
    .give-campaigns-component-campaign {
        border-radius: 30px !important;
    }

    .jpbc-campaign-grid
    .give-campaigns-component-campaign-image {
        border-radius: 29px 29px 0 0 !important;
    }

    .jpbc-campaign-grid
    .give-campaigns-component-campaign-title {
        padding: 24px 24px 0 !important;
    }

    .jpbc-campaign-grid
    .give-campaigns-component-campaign-description {
        padding: 14px 24px 22px !important;
    }

    .jpbc-campaign-grid
    .give-campaigns-component-campaign__goal {
        margin-inline: 24px !important;
    }

}

/* ==================================================
   MOBILE
   ================================================== */

@media (max-width: 767px) {
    .jpbc-campaign-grid
    .give-campaigns-component-campaign {
        width: 100% !important;
        border-radius: 26px !important;
    }

    .jpbc-campaign-grid
    .give-campaigns-component-campaign-image {
        aspect-ratio: 16 / 11;
        border-radius: 25px 25px 0 0 !important;
    }

    .jpbc-campaign-grid
    .give-campaigns-component-campaign-title {
        padding: 22px 22px 0 !important;
    }

    .jpbc-campaign-grid
    .give-campaigns-component-campaign-description {
        padding: 12px 22px 22px !important;
    }

    .jpbc-campaign-grid
    .give-campaigns-component-campaign__goal {
        margin-inline: 22px !important;
    }

}

/* =========================================================
   GIVEWP CAMPAIGN GRID — FINAL REFINEMENTS
   ========================================================= */

/* Reduce the overall card height. */
body.home .jpbc-campaign-grid .give-campaigns-component-campaign {
	min-height: 0 !important;
	padding-bottom: 22px !important;
}

/* Let the featured image grow fluidly without changing its crop behavior. */
body.home .jpbc-campaign-grid .give-campaigns-component-campaign-image {
	width: 100% !important;
	height: clamp(240px, 18vw, 300px) !important;
	min-height: 240px !important;
	aspect-ratio: auto !important;

	background-position: center !important;
	background-size: cover !important;
}

@media (max-width: 1024px) {
	body.home .jpbc-campaign-grid .give-campaigns-component-campaign-image {
		height: 260px !important;
		min-height: 260px !important;
	}
}

@media (max-width: 767px) {
	body.home .jpbc-campaign-grid .give-campaigns-component-campaign-image {
		height: 240px !important;
		min-height: 240px !important;
	}
}

/* Slightly reduce internal spacing. */
body.home .jpbc-campaign-grid .give-campaigns-component-campaign-title {
	padding: 24px 28px 0 !important;
}

body.home .jpbc-campaign-grid .give-campaigns-component-campaign-description {
	padding: 12px 28px 22px !important;
}

/* Keep progress information anchored toward the bottom. */
body.home .jpbc-campaign-grid .give-campaigns-component-campaign__goal {
	margin: auto 28px 0 !important;
}

/*
 * JavaScript creates the single-line summary.
 * Hide GiveWP's original two-column amount display visually.
 */
body.home
.jpbc-campaign-grid
.give-campaigns-component-campaign__goal-container.is-jpbc-enhanced {
	display: none !important;
}

/* $0 raised of $100,000 · 0% */
body.home .jpbc-campaign-grid .jpbc-campaign-goal-summary {
	margin: 0 !important;
	color: var(--jpbc-card-text) !important;
	font-family: "Manrope", Arial, sans-serif !important;
	font-size: clamp(14px, 1vw, 17px) !important;
	font-weight: 400 !important;
	line-height: 1.4 !important;
}

body.home .jpbc-campaign-grid .jpbc-campaign-goal-summary strong {
	color: #ffffff !important;
	font: inherit !important;
	font-weight: 700 !important;
}

/* Ensure the retired CSS-generated Donate control cannot reappear. */
body.home .jpbc-campaign-grid .give-campaigns-component-campaign::after {
	content: none !important;
	display: none !important;
}

/* Accessible keyboard focus. */
body.home .jpbc-campaign-grid .give-campaigns-component-campaign:focus-visible {
	border-color: var(--jpbc-pink) !important;
	outline: 3px solid rgba(235, 63, 157, 0.38) !important;
	outline-offset: 5px !important;
}

/* =========================================================
   SCROLL REVEAL
   ========================================================= */

body.home .jpbc-reveal {
	opacity: 0;
	transform: translate3d(0, 28px, 0);
	transition:
		opacity 0.7s ease,
		transform 0.7s cubic-bezier(0.22, 1, 0.36, 1);
	transition-delay: var(--jpbc-reveal-delay, 0ms);
	will-change: opacity, transform;
}

body.home .jpbc-reveal.is-visible {
	opacity: 1;
	transform: translate3d(0, 0, 0);
}

/* Prevent animation from hiding content when JavaScript is unavailable. */
body.home:not(.jpbc-reveal-ready) .jpbc-reveal {
	opacity: 1;
	transform: none;
}

/* Respect the visitor's accessibility settings. */
@media (prefers-reduced-motion: reduce) {
	body.home .jpbc-reveal,
	body.home .jpbc-reveal.is-visible {
		opacity: 1 !important;
		transform: none !important;
		transition: none !important;
	}

	body.home .jpbc-campaign-grid .give-campaigns-component-campaign:hover {
		transform: none !important;
	}
}

/* ==================================================
   CAMPAIGN CARD HOVER
   ================================================== */

body.home .jpbc-campaign-grid .givewp-campaign-grid {
	padding-top: 10px !important;
}

body.home .jpbc-campaign-grid .give-campaigns-component-campaign {
	position: relative;
	overflow: hidden !important;
	transition:
		transform 0.35s ease,
		border-color 0.35s ease,
		box-shadow 0.35s ease !important;
}

body.home .jpbc-campaign-grid .give-campaigns-component-campaign:hover {
	transform: translateY(-8px);
	border-color: rgba(235, 63, 157, 0.45) !important;
	box-shadow: 0 20px 45px rgba(0, 0, 0, 0.28) !important;
}

/* Featured-image viewport. */
body.home .jpbc-campaign-grid .give-campaigns-component-campaign-image {
	overflow: hidden !important;
	background-size: 100% auto !important;
	transition:
		background-size 0.55s cubic-bezier(0.22, 1, 0.36, 1),
		filter 0.4s ease !important;
}

/* Zoom the background image without enlarging its container. */
body.home
.jpbc-campaign-grid
.give-campaigns-component-campaign:hover
.give-campaigns-component-campaign-image {
	background-size: 108% auto !important;
	filter: saturate(1.05);
}

/* Keyboard-accessible equivalent. */
body.home .jpbc-campaign-grid .give-campaigns-component-campaign:focus-visible {
	transform: translateY(-8px);
	border-color: var(--jpbc-pink) !important;
	box-shadow:
		0 20px 45px rgba(0, 0, 0, 0.28),
		0 0 0 3px rgba(235, 63, 157, 0.3) !important;
	outline: none;
}

/* Disable movement for touch devices. */
@media (hover: none) {
	body.home .jpbc-campaign-grid .give-campaigns-component-campaign:hover {
		transform: none;
	}

	body.home
	.jpbc-campaign-grid
	.give-campaigns-component-campaign:hover
	.give-campaigns-component-campaign-image {
		background-size: cover !important;
		filter: none;
	}
}

/* Respect reduced-motion preferences. */
@media (prefers-reduced-motion: reduce) {
	body.home .jpbc-campaign-grid .give-campaigns-component-campaign,
	body.home .jpbc-campaign-grid .give-campaigns-component-campaign-image {
		transition: none !important;
	}

	body.home .jpbc-campaign-grid .give-campaigns-component-campaign:hover {
		transform: none;
	}
}

/* ==================================================
   CAMPAIGN INFORMATION LINK
   ================================================== */

body.home .jpbc-campaign-grid .jpbc-campaign-donate {
	position: relative;
	z-index: 3;
	display: inline-flex;
	width: auto;
	min-height: 58px;
	align-items: center;
	justify-content: center;

	margin: 26px 32px 0;
	padding: 0 24px;

	border: 0;
	border-radius: 999px;
	background-color: var(--jpbc-pink);
	color: #ffffff;

	font-family: "Manrope", Arial, sans-serif;
	font-size: 17px;
	font-weight: 700;
	line-height: 1;
	cursor: pointer;

	transition:
		background-color 0.25s ease,
		transform 0.25s ease;
}

body.home .jpbc-campaign-grid .jpbc-campaign-donate:hover {
	background-color: #d92f8c;
	transform: translateY(-2px);
}

body.home .jpbc-campaign-grid .jpbc-campaign-donate:focus-visible {
	outline: 3px solid rgba(235, 63, 157, 0.4);
	outline-offset: 4px;
}

body.home .jpbc-campaign-grid .jpbc-campaign-learn {
	position: relative;
	z-index: 3;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	align-self: center;
	order: 1;
	gap: 8px;

	margin: 16px 32px 0;
	padding: 4px;

	color: rgba(255, 255, 255, 0.78);
	font-family: "Manrope", Arial, sans-serif;
	font-size: 14px;
	font-weight: 600;
	line-height: 1.4;
	text-align: center;
	text-decoration: none;

	transition:
		color 0.2s ease,
		transform 0.2s ease;
}

body.home .jpbc-campaign-grid .jpbc-campaign-learn::after {
	content: "→";
	transition: transform 0.2s ease;
}

body.home .jpbc-campaign-grid .jpbc-campaign-learn:hover {
	color: #ffffff;
}

body.home .jpbc-campaign-grid .jpbc-campaign-learn:hover::after {
	transform: translateX(4px);
}

body.home .jpbc-campaign-grid .jpbc-campaign-learn:focus-visible {
	border-radius: 4px;
	color: #ffffff;
	outline: 2px solid var(--jpbc-pink);
	outline-offset: 4px;
}

@media (max-width: 767px) {
	body.home .jpbc-campaign-grid .jpbc-campaign-donate {
		min-height: 54px;
		margin-inline: 22px;
	}

	body.home .jpbc-campaign-grid .jpbc-campaign-learn {
		margin-inline: 22px;
	}
}

@media (min-width: 768px) and (max-width: 1024px) {
	body.home .jpbc-campaign-grid .jpbc-campaign-donate {
		margin-inline: 24px;
	}
}

/*
 * Keep GiveWP initialized while moving duplicate modal launchers offscreen.
 * Do not hide the launcher container itself.
 */
body.home .jpbc-modal-launcher .give-btn,
body.home .jpbc-modal-launcher .givewp-donation-form-modal__open {
	position: absolute !important;
	left: -10000px !important;
	width: 1px !important;
	height: 1px !important;
	overflow: hidden !important;
	opacity: 0 !important;
	pointer-events: none !important;
}

/* =========================================================
   GIVEWP DONATION MODAL
   Outside the GiveWP iframe
   ========================================================= */

/* Dark page overlay. */
body.home .givewp-donation-form-modal {
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	padding: clamp(16px, 3vw, 40px) !important;
	background-color: rgba(12, 12, 12, 0.82) !important;
	backdrop-filter: blur(8px);
	-webkit-backdrop-filter: blur(8px);
}

/* Main modal window. */
body.home .givewp-donation-form-modal__dialog {
	position: relative !important;
	width: min(92vw, 860px) !important;
	max-width: 860px !important;
	max-height: calc(100dvh - 48px) !important;
	margin: auto !important;
	padding: 0 !important;
	overflow: hidden !important;
	border: 1px solid rgba(255, 255, 255, 0.12) !important;
	border-radius: 28px !important;
	background-color: #ffffff !important;
	box-shadow:
		0 30px 80px rgba(0, 0, 0, 0.45),
		0 8px 24px rgba(0, 0, 0, 0.22) !important;
}

/* GiveWP iframe. */
body.home .givewp-donation-form-modal__dialog iframe {
	display: block !important;
	width: 100% !important;
	max-width: none !important;
	margin: 0 !important;
	padding: 0 !important;
	border: 0 !important;
	background: transparent !important;
}

/* Modal close button. */
body.home .givewp-donation-form-modal__close {
	position: absolute !important;
	z-index: 20 !important;
	top: 16px !important;
	right: 16px !important;
	display: grid !important;
	width: 42px !important;
	height: 42px !important;
	place-items: center !important;
	margin: 0 !important;
	padding: 0 !important;
	border: 1px solid rgba(31, 31, 31, 0.12) !important;
	border-radius: 50% !important;
	background-color: rgba(255, 255, 255, 0.92) !important;
	color: #1f1f1f !important;
	box-shadow: 0 5px 18px rgba(0, 0, 0, 0.16) !important;
	cursor: pointer;
	transition:
		background-color 0.2s ease,
		transform 0.2s ease !important;
}

body.home .givewp-donation-form-modal__close:hover {
	background-color: #ffffff !important;
	transform: scale(1.06);
}

/* Prevent the page from shifting horizontally. */
html:has(.givewp-donation-form-modal),
body:has(.givewp-donation-form-modal) {
	overflow-x: hidden;
}

@media (max-width: 767px) {
	body.home .givewp-donation-form-modal {
		align-items: flex-end !important;
		padding: 12px !important;
	}

	body.home .givewp-donation-form-modal__dialog {
		width: 100% !important;
		max-width: none !important;
		max-height: calc(100dvh - 24px) !important;
		border-radius: 24px 24px 18px 18px !important;
	}

	body.home .givewp-donation-form-modal__close {
		position: fixed !important;
		top: 20px !important;
		right: 20px !important;
		width: 40px !important;
		height: 40px !important;
	}
}

/* Mobile Lovable layout: override typography on the actual Elementor text,
 * not just its widget wrapper. Keep the hero tall enough for all its content. */
@media (max-width: 767px) {
 body.home .elementor .jpbc-hero {
  height: auto;
  min-height: 100svh;
 }
 body.home .elementor[data-elementor-type="wp-page"] > .jpbc-hero > .jpbc-shell {
  height: auto;
  min-height: 100svh;
  padding-inline: 24px !important;
 }
 body.home .elementor .jpbc-hero__content {
  width: 100% !important;
  padding: 128px 0 28px !important;
 }
 body.home .elementor .jpbc-hero__content > .elementor-element {
  width: 100%;
  min-width: 0;
 }
 body.home .elementor .jpbc-hero__eyebrow {
  font-size: clamp(10px, 3.2vw, 12px);
  line-height: 20px;
  letter-spacing: 0.32em;
  margin: 0;
 }
 body.home .elementor .jpbc-hero__title {
  margin: 24px 0 0;
 }
 body.home .elementor .jpbc-hero__title .elementor-heading-title,
 body.home .elementor .jpbc-hero__title .elementor-heading-title span {
  font-size: clamp(40px, 13.83vw, 52px);
  line-height: 0.95;
  letter-spacing: -0.03em;
  word-break: normal;
  overflow-wrap: normal;
 }
 body.home .elementor .jpbc-hero__copy {
  margin: 32px 0 0;
  font-size: 18px;
  line-height: 30px;
 }
 body.home .elementor .jpbc-hero__actions {
  flex-direction: column;
  align-items: flex-start;
  gap: 16px;
  margin: 40px 0 0;
  padding: 0;
 }
 body.home .elementor .jpbc-hero__actions > .elementor-element {
  width: auto;
  max-width: 100%;
 }
 body.home .elementor .jpbc-hero__actions .elementor-button {
  width: auto;
  min-height: 52px;
  padding: 14px 32px;
  font-size: 16px;
  line-height: 20px;
  border-radius: 999px;
 }
 body.home .elementor .jpbc-hero__actions svg {
  width: 20px;
  height: 20px;
 }
 body.home .elementor .jpbc-scroll-cue {
  margin: 64px 0 0;
 }
 body.home .elementor .jpbc-scroll-cue .elementor-button {
  padding: 0;
  font-size: 12px;
  line-height: 20px;
  letter-spacing: 0.24em;
 }
}

/* Animate only the cue's arrow so its label remains steady. */
body.home .elementor .jpbc-scroll-cue.elementor-widget svg {
 animation: jpbc-scroll-bounce 1.6s ease-in-out infinite;
}
@keyframes jpbc-scroll-bounce {
 0%, 100% { transform: translateY(0); }
 50% { transform: translateY(5px); }
}
@media (prefers-reduced-motion: reduce) {
 body.home .elementor .jpbc-scroll-cue.elementor-widget svg { animation: none; }
}

/* Keep the partners heading, lists, and testimonials on one content edge. */
@media (max-width: 767px) {
 body.home .elementor[data-elementor-type="wp-page"] > [data-id="99597bc"] > .jpbc-shell {
  padding-inline: 20px !important;
 }
 body.home .elementor [data-id="99597bc"] .jpbc-section-heading-row {
  width: 100% !important;
  padding-inline: 0 !important;
  margin-inline: 0 !important;
 }
 body.home .elementor [data-id="1074931"],
 body.home .elementor [data-id="b3fdc06"] {
  width: 100% !important;
  max-width: 100% !important;
  margin-inline: 0 !important;
  padding-inline: 0 !important;
 }
 body.home .elementor .jpbc-testimonials-grid > .e-con-inner {
  grid-template-columns: minmax(0, 1fr) !important;
  gap: 24px !important;
 }
 body.home .elementor .jpbc-testimonial figure {
  padding: 32px !important;
  text-align: left;
 }
 body.home .elementor .jpbc-testimonial figure > span {
  display: block;
  text-align: left;
 }
 body.home .elementor .jpbc-testimonial figcaption {
  font-style: normal;
 }
}

/* Center names inside the colored small-business tiles. */
body.home .elementor [data-id="a6d18a4"] > .jpbc-logo-tile > .elementor-widget {
 display: flex;
 align-items: center;
 justify-content: center;
 padding: 16px !important;
 text-align: center;
}
body.home .elementor [data-id="a6d18a4"] > .jpbc-logo-tile > .elementor-widget > .elementor-widget-container {
 width: 100%;
 text-align: center;
}
body.home .elementor [data-id="a6d18a4"] p {
 margin: 0;
 text-align: center;
}
@media (max-width: 767px) {
 body.home .elementor [data-id="a6d18a4"].jpbc-logo-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  gap: 16px;
 }
}

@media (max-width: 767px) {
 body.home .elementor[data-elementor-type="wp-page"] > .jpbc-newsletter > .jpbc-shell {
  padding-inline: 24px !important;
 }
 body.home .elementor .jpbc-newsletter .jpbc-narrow {
  width: 100% !important;
  max-width: 100% !important;
  padding-inline: 0 !important;
 }
 body.home .elementor .jpbc-newsletter [data-id="b47179e"],
 body.home .elementor .jpbc-newsletter .jpbc-newsletter__form {
  width: 100% !important;
  max-width: none;
  margin-inline: 0;
 }
 body.home .elementor .jpbc-newsletter .jpbc-section-title .elementor-heading-title {
  font-size: clamp(26px, 7vw, 36px);
  line-height: 1.15;
 }
 body.home .elementor .jpbc-newsletter .jpbc-lead {
  margin-top: 20px;
  font-size: 18px;
  line-height: 1.6;
 }
 body.home .elementor .jpbc-newsletter__form {
  flex-direction: column;
  gap: 12px;
 }
 body.home .elementor .jpbc-newsletter__form input[type="email"],
 body.home .elementor .jpbc-newsletter__form button {
  width: 100%;
  min-height: 48px;
  border-radius: 999px;
  padding: 12px 24px;
  font-size: 16px;
 }
}
/* Imported placeholder copy is not newsletter content. */
body.home .jpbc-newsletter [data-id="55e9278"] { display: none; }
@media (max-width: 767px) {
 body.home .elementor .jpbc-newsletter form.jpbc-newsletter__form {
  padding: 0 !important;
  border: 0;
  background: transparent;
 }
}

/* The homepage now uses the testimonial shortcode, without an e-con-inner wrapper. */
body.home .jpbc-testimonials-section .jpbc-testimonials-grid {
 display: grid !important;
 grid-template-columns: repeat(2, minmax(0, 1fr));
 align-items: stretch;
 gap: 24px;
}
@media (max-width: 767px) {
 body.home .jpbc-testimonials-section .jpbc-testimonials-grid {
  grid-template-columns: minmax(0, 1fr);
 }
}

/* Override the imported widget's 512px cap so mobile signup aligns with its heading. */
@media (max-width: 767px) {
 body.home .elementor .jpbc-newsletter [data-id="b47179e"] {
  max-width: 100% !important;
  margin-inline: auto !important;
  align-self: center;
 }
 body.home .elementor .jpbc-newsletter .jpbc-newsletter__form {
  margin-inline: auto;
 }
}

/* Mobile hero: fill the available content width and keep both actions together. */
@media (max-width: 767px) {
 body.home .elementor .jpbc-hero__title,
 body.home .elementor .jpbc-hero__copy { max-width: 100%; }
 body.home .elementor .jpbc-hero__title .elementor-heading-title,
 body.home .elementor .jpbc-hero__title .elementor-heading-title span {
  font-size: clamp(44px, 14.5vw, 96px);
  line-height: 1;
 }
 body.home .elementor .jpbc-hero__copy {
  font-size: clamp(19px, 4.9vw, 22px);
  line-height: 1.65;
 }
 body.home .elementor .jpbc-hero__actions {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  align-items: stretch;
  gap: 12px;
 }
 body.home .elementor .jpbc-hero__actions > .elementor-element { width: 100%; min-width: 0; }
 body.home .elementor .jpbc-hero__actions .elementor-button {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  padding-inline: 8px;
  font-size: clamp(14px, 3.8vw, 16px);
  white-space: nowrap;
  gap: 6px;
 }
 body.home .elementor .jpbc-hero__actions svg { flex-shrink: 0; width: 18px; height: 18px; }
}

/* Hero actions share hover/focus feedback at every viewport size. */
body.home .elementor .jpbc-hero__actions .elementor-button {
 transition: transform 220ms ease, box-shadow 220ms ease, background-color 220ms ease, color 220ms ease, border-color 220ms ease;
}
body.home .elementor .jpbc-hero__actions .elementor-button:is(:hover, :focus-visible) {
 transform: translateY(-4px);
 box-shadow: 0 10px 24px rgba(0, 0, 0, .2);
}
body.home .elementor .jpbc-hero__actions .elementor-button:focus-visible {
 outline: 2px solid #fff;
 outline-offset: 4px;
}
body.home .elementor .jpbc-hero__actions [data-id="0ecdb30"] .elementor-button:is(:hover, :focus-visible) {
 background-color: #F9DE3B;
 border-color: #F9DE3B;
 color: #1F1F1F;
}
@media (prefers-reduced-motion: reduce) {
 body.home .elementor .jpbc-hero__actions .elementor-button { transition: none; }
 body.home .elementor .jpbc-hero__actions .elementor-button:is(:hover, :focus-visible) { transform: none; }
}
