@import url("./icons/style.css");
@import url("./fonts/typefaces.css");
@import url("./templates.css");

/*!
 * Nexpress shared stylesheet - enqueued once by every platform.
 *
 * Two layers: (1) the universal wrapper system every Attributes::build()
 * class can put on ANY block, (2) per-block styling for each template under
 * core/src/Blocks/templates. Every colour, space, radius, font and duration
 * is a var(--fx-*) token compiled by TokenCompiler from
 * shared/presets/tokens.json - nothing here is hardcoded. Mobile-first,
 * no framework, no build step.
 *
 * @package Vts\Nexpress
 */

/* ================= RESET & BASE ================= */

.fx-b, .fx-b *, .fx-b *::before, .fx-b *::after { box-sizing: border-box; }

.fx-b {
	position: relative;
	font-family: var(--fx-font-body);
	font-weight: var(--fx-font-body-weight);
	color: var(--fx-context-text, var(--fx-color-text));
	line-height: var(--fx-leading-normal);
}

.fx-b img, .fx-b video, .fx-b iframe { max-width: 100%; display: block; }
:where(.fx-b) a { color: inherit; }
.fx-b ul, .fx-b ol { margin: 0; padding: 0; list-style: none; }
:where(.fx-b) button { font: inherit; color: inherit; background: none; border: 0; cursor: pointer; }
:where(.fx-b) p { margin: 0 0 var(--fx-space-sm); }
:where(.fx-b) p:last-child { margin-bottom: 0; }

.fx-b :where(h1, h2, h3, h4, h5, h6) {
	font-family: var(--fx-font-heading);
	font-weight: var(--fx-font-heading-weight);
	letter-spacing: var(--fx-font-heading-tracking);
	color: var(--fx-context-heading, var(--fx-color-heading));
	line-height: var(--fx-leading-tight);
	margin: 0 0 var(--fx-space-sm);
}

:where(.fx-b, .fx-b *) :focus-visible, .fx-b:focus-visible { outline: 2px solid var(--fx-color-focus); outline-offset: 2px; }

/* ================= REGIONS ================= */

.fx-region { display: block; container-type: inline-size; container-name: nexpress-page; }
.fx-region--main { min-height: 40vh; }

/* Layout presets must affect real modules, not just unused custom properties.
 * Explicit width/spacing/alignment utilities retain precedence. */
:where(.fx-b--core-section) { padding-block: var(--fx-layout-section-pad-y, var(--fx-space-2xl)); scroll-margin-top: 80px; }
.fx-b--core-section.fx-w-content { max-width: var(--fx-layout-content, var(--fx-w-content)); }
:where(.fx-b--core-heading) .fx-heading { text-align: var(--fx-layout-heading-align, inherit); }
.fx-align-start .fx-heading, .fx-align-center .fx-heading, .fx-align-end .fx-heading { text-align: inherit; }
.fx-cards .fx-cards__grid { gap: var(--fx-layout-grid-gap, var(--fx-space-lg)); }
.fx-cards .fx-cards__item { border-radius: var(--fx-layout-card-radius, var(--fx-radius-md)); }
.fx-editor-placeholder { padding: 24px; min-height: 100px; display: grid; place-content: center; gap: 8px; text-align: center; background: var(--fx-color-surface); border: 1px dashed var(--fx-color-border); border-radius: var(--fx-radius-md); color: var(--fx-color-text); }

/* ================= CROSS-BLOCK UTILITIES ================= */

.fx-sr-only {
	position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
	overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
}

.fx-empty { color: var(--fx-context-muted, var(--fx-color-muted)); font-style: italic; }

.fx-error {
	padding: var(--fx-space-sm); border: 1px dashed var(--fx-color-danger);
	color: var(--fx-color-danger); border-radius: var(--fx-radius-sm);
}

.fx-missing {
	padding: var(--fx-space-sm); border: 1px dashed var(--fx-color-border);
	color: var(--fx-context-muted, var(--fx-color-muted)); border-radius: var(--fx-radius-sm);
}

/* ================= UNIVERSAL WRAPPER: SPACING ================= */

.fx-pad-top-xs   { padding-top: var(--fx-space-xs); }
.fx-pad-top-sm   { padding-top: var(--fx-space-sm); }
.fx-pad-top-md   { padding-top: var(--fx-space-md); }
.fx-pad-top-lg   { padding-top: var(--fx-space-lg); }
.fx-pad-top-xl   { padding-top: var(--fx-space-xl); }
.fx-pad-top-2xl  { padding-top: var(--fx-space-2xl); }
.fx-pad-top-3xl  { padding-top: var(--fx-space-3xl); }
.fx-pad-top-none { padding-top: 0; }

.fx-pad-bottom-xs   { padding-bottom: var(--fx-space-xs); }
.fx-pad-bottom-sm   { padding-bottom: var(--fx-space-sm); }
.fx-pad-bottom-md   { padding-bottom: var(--fx-space-md); }
.fx-pad-bottom-lg   { padding-bottom: var(--fx-space-lg); }
.fx-pad-bottom-xl   { padding-bottom: var(--fx-space-xl); }
.fx-pad-bottom-2xl  { padding-bottom: var(--fx-space-2xl); }
.fx-pad-bottom-3xl  { padding-bottom: var(--fx-space-3xl); }
.fx-pad-bottom-none { padding-bottom: 0; }

.fx-gap-xs   { gap: var(--fx-space-xs); }
.fx-gap-sm   { gap: var(--fx-space-sm); }
.fx-gap-md   { gap: var(--fx-space-md); }
.fx-gap-lg   { gap: var(--fx-space-lg); }
.fx-gap-xl   { gap: var(--fx-space-xl); }
.fx-gap-2xl  { gap: var(--fx-space-2xl); }
.fx-gap-3xl  { gap: var(--fx-space-3xl); }
.fx-gap-none { gap: 0; }

/* ================= UNIVERSAL WRAPPER: WIDTH, ALIGN, COLUMNS ================= */

.fx-w-full    { max-width: var(--fx-w-full); margin-inline: auto; }
.fx-w-wide    { max-width: var(--fx-w-wide); margin-inline: auto; padding-inline: var(--fx-space-md); }
.fx-w-content { max-width: var(--fx-w-content); margin-inline: auto; padding-inline: var(--fx-space-md); }
.fx-w-narrow  { max-width: var(--fx-w-narrow); margin-inline: auto; padding-inline: var(--fx-space-md); }

.fx-align-start   { text-align: start; }
.fx-align-center  { text-align: center; margin-inline: auto; }
.fx-align-end     { text-align: end; }
.fx-align-justify { text-align: justify; }

.fx-cols {
	display: grid;
	grid-template-columns: repeat(var(--fx-cols, 3), minmax(0, 1fr));
	gap: var(--fx-space-lg);
}

/* ================= UNIVERSAL WRAPPER: COLOUR SCHEME ================= */

/* Context tokens inherit through nested blocks without replacing palette tokens. */
.fx-scheme-light, .fx-scheme-muted {
  --fx-context-text: var(--fx-color-text);
  --fx-context-heading: var(--fx-color-heading);
  --fx-context-muted: var(--fx-color-muted);
  --fx-context-link: var(--fx-color-brand);
  --fx-context-accent: var(--fx-color-heading);
  color: var(--fx-context-text); color-scheme: light;
}
.fx-scheme-light { background: var(--fx-color-surface); }
.fx-scheme-muted { background: var(--fx-color-surface-alt); }
.fx-scheme-dark {
  --fx-context-text: var(--fx-color-on-dark);
  --fx-context-heading: var(--fx-color-on-dark);
  --fx-context-muted: var(--fx-color-on-dark);
  --fx-context-link: var(--fx-color-on-dark);
  --fx-context-accent: color-mix(in srgb, var(--fx-color-accent) 55%, var(--fx-color-on-dark));
  background: var(--fx-color-surface-dark); color: var(--fx-color-on-dark); color-scheme: dark;
}
.fx-scheme-brand {
  --fx-context-text: var(--fx-color-on-brand);
  --fx-context-heading: var(--fx-color-on-brand);
  --fx-context-muted: var(--fx-color-on-brand);
  --fx-context-link: var(--fx-color-on-brand);
  --fx-context-accent: var(--fx-color-on-brand);
  background: var(--fx-color-brand); color: var(--fx-color-on-brand); color-scheme: dark;
}

/* ================= UNIVERSAL WRAPPER: BACKGROUND ================= */

.fx-bg { position: relative; isolation: isolate; }
.fx-bg--token, .fx-bg--color { background-color: var(--fx-bg-color, transparent); }
.fx-bg--image {
	background-image: var(--fx-bg-image, none);
	background-position: var(--fx-bg-position, center);
	background-size: cover;
	background-repeat: no-repeat;
}
.fx-bg--fixed { background-attachment: fixed; }
.fx-bg--gradient { background-image: linear-gradient(160deg, var(--fx-color-brand), var(--fx-color-brand-strong)); }
.fx-bg--overlay::before {
	content: ""; position: absolute; inset: 0; background: #000;
	opacity: var(--fx-overlay, 0.4); z-index: 0; pointer-events: none;
}
.fx-bg--overlay > * { position: relative; z-index: 1; }

/* ================= UNIVERSAL WRAPPER: ANIMATION ================= */

.fx-anim.fx-anim--ready,
.fx-anim--ready.fx-anim--group > .fx-section > .fx-anim__child,
.fx-anim--ready.fx-anim--group > .fx-cards > .fx-cards__grid > .fx-anim__child {
	animation-duration: var(--fx-anim-duration, var(--fx-motion-slow));
	animation-timing-function: var(--fx-anim-ease, var(--fx-motion-ease));
	animation-fill-mode: backwards;
	animation-delay: var(--fx-anim-delay, 0ms);
}
/* Visible without JavaScript, without an observer, and throughout editing. */
.fx-anim--ready:not(.fx-anim--in):not(.fx-anim--group),
.fx-anim--ready.fx-anim--group:not(.fx-anim--in) > .fx-section > .fx-anim__child,
.fx-anim--ready.fx-anim--group:not(.fx-anim--in) > .fx-cards > .fx-cards__grid > .fx-anim__child { opacity: 0; }
.fx-anim--ready.fx-anim--in.fx-anim--fade { animation-name: fx-fade; }
.fx-anim--ready.fx-anim--in.fx-anim--rise { animation-name: fx-rise; }
.fx-anim--ready.fx-anim--in.fx-anim--scale { animation-name: fx-scale; }
.fx-anim--ready.fx-anim--in.fx-anim--blur { animation-name: fx-blur; }
.fx-anim--ready.fx-anim--in.fx-anim--slide-left { animation-name: fx-slide-left; }
.fx-anim--ready.fx-anim--in.fx-anim--slide-right { animation-name: fx-slide-right; }
.fx-anim--ready.fx-anim--in.fx-anim--reveal { animation-name: fx-reveal; }
.fx-anim--ready.fx-anim--in.fx-anim--stagger:not(.fx-anim--group) { animation-name: fx-rise; }
.fx-anim--ready.fx-anim--in.fx-anim--group > .fx-section > .fx-anim__child,
.fx-anim--ready.fx-anim--in.fx-anim--group > .fx-cards > .fx-cards__grid > .fx-anim__child {
	animation-name: fx-rise;
	animation-delay: calc(var(--fx-anim-delay, 0ms) + var(--fx-stagger-delay, 0ms));
}

@keyframes fx-fade { from { opacity: 0; } to { opacity: 1; } }
@keyframes fx-rise  { from { opacity: 0; transform: translateY(28px); } to { opacity: 1; transform: translateY(0); } }
@keyframes fx-scale { from { opacity: 0; transform: scale(.92); } to { opacity: 1; transform: scale(1); } }
@keyframes fx-blur { from { opacity: 0; filter: blur(14px); } to { opacity: 1; filter: blur(0); } }
@keyframes fx-slide-left { from { opacity: 0; transform: translateX(36px); } to { opacity: 1; transform: translateX(0); } }
@keyframes fx-slide-right { from { opacity: 0; transform: translateX(-36px); } to { opacity: 1; transform: translateX(0); } }
@keyframes fx-reveal { from { opacity: 0; clip-path: inset(0 0 100% 0); transform: translateY(18px); } to { opacity: 1; clip-path: inset(0); transform: translateY(0); } }

.fx-image__frame { display: block; }
.fx-scroll--active .fx-image__frame { overflow: hidden; border-radius: var(--fx-radius-md); }
.fx-scroll--active .fx-image--radius-none .fx-image__frame { border-radius: 0; }
.fx-scroll--active .fx-image--radius-full .fx-image__frame { border-radius: var(--fx-radius-full); }
.fx-scroll--active .fx-image__img {
	/* Overscan exceeds the drift distance; image scaling is capped below 10%. */
	transform: translateY(var(--fx-scroll-y, 0px)) scale(var(--fx-scroll-scale, 1));
	border-radius: 0;
}

[data-nexpress-editing] .fx-anim,
[data-nexpress-editing] .fx-anim__child,
[data-nexpress-editing] .fx-scroll--active .fx-image__img {
	animation: none !important; opacity: 1 !important; transform: none !important; filter: none !important; clip-path: none !important;
}

.fx-effect { transition: transform var(--fx-motion-base) var(--fx-motion-ease), box-shadow var(--fx-motion-base) var(--fx-motion-ease), filter var(--fx-motion-base) var(--fx-motion-ease); }
.fx-effect--lift:hover { transform: translateY(-6px); box-shadow: var(--fx-shadow-lg, var(--fx-shadow-md)); }
.fx-effect--zoom:hover { transform: scale(1.018); }
.fx-effect--glow:hover { box-shadow: 0 0 0 1px color-mix(in srgb, var(--fx-color-brand) 45%, transparent), 0 18px 50px color-mix(in srgb, var(--fx-color-brand) 20%, transparent); }

/* ================= BLOCK: core/heading ================= */

.fx-b .fx-heading { font-size: var(--fx-heading-size, var(--fx-heading-auto-size)); }
.fx-heading:where(h1) { --fx-heading-auto-size: var(--fx-heading-h1, var(--fx-text-h1)); }
.fx-heading:where(h2) { --fx-heading-auto-size: var(--fx-heading-h2, var(--fx-text-h2)); }
.fx-heading:where(h3) { --fx-heading-auto-size: var(--fx-heading-h3, var(--fx-text-h3)); }
.fx-heading:where(h4) { --fx-heading-auto-size: var(--fx-heading-h4, var(--fx-text-h4)); }
.fx-heading:where(h5) { --fx-heading-auto-size: var(--fx-heading-h5, var(--fx-text-md)); }
.fx-heading:where(h6) { --fx-heading-auto-size: var(--fx-heading-h6, var(--fx-text-sm)); }
/* Template defaults and heading levels remain independent of an explicit size. */
.fx-heading--size-sm { --fx-heading-size: var(--fx-text-md); }
.fx-heading--size-md { --fx-heading-size: var(--fx-text-h3); }
.fx-heading--size-lg { --fx-heading-size: var(--fx-text-h2); }
.fx-heading--size-xl { --fx-heading-size: var(--fx-text-h1); }
.fx-heading--size-display { --fx-heading-size: calc(var(--fx-text-h1) * 1.3); }
.fx-heading--tone-muted { color: var(--fx-context-muted, var(--fx-color-muted)); }
.fx-heading--tone-brand { color: var(--fx-color-brand); }
.fx-heading--tone-accent { color: var(--fx-color-accent); }
.fx-heading--tone-inverse { color: var(--fx-color-on-dark); }
.fx-heading--balance { text-wrap: balance; }

/* ================= BLOCK: core/text ================= */

.fx-b .fx-text { font-size: var(--fx-text-size, var(--fx-text-default-size, var(--fx-text-md))); }
/* Host styles often size paragraphs directly, which would bypass the block control. */
.fx-text :where(p, ul, ol, li, blockquote) { font-size: inherit; line-height: inherit; }
.fx-text--size-sm { --fx-text-size: var(--fx-text-sm); }
.fx-text--size-md { --fx-text-size: var(--fx-text-md); }
.fx-text--size-lg { --fx-text-size: var(--fx-text-lg); }
.fx-text--tone-muted { color: var(--fx-context-muted, var(--fx-color-muted)); }
.fx-text--tone-brand { color: var(--fx-color-brand); }
.fx-text--tone-accent { color: var(--fx-color-accent); }
.fx-text--tone-inverse { color: var(--fx-color-on-dark); }
.fx-text--measure-narrow { max-width: 38ch; }
.fx-text--measure-wide { max-width: 90ch; }
.fx-text--columns-2 { columns: 2; column-gap: var(--fx-space-lg); }
.fx-text a { color: var(--fx-context-link, var(--fx-color-brand)); text-decoration: underline; text-underline-offset: 2px; }

/* ================= BLOCK: core/quote ================= */

.fx-quote { margin: 0; }
.fx-quote__text { margin: 0 0 var(--fx-space-sm); font-family: var(--fx-font-heading); font-size: var(--fx-text-lg); line-height: var(--fx-leading-normal); }
.fx-quote--style-large .fx-quote__text { font-size: var(--fx-text-h3); }
.fx-quote--style-card { padding: var(--fx-space-lg); background: var(--fx-color-surface-alt); border-radius: var(--fx-radius-md); }
.fx-quote__meta { display: flex; align-items: center; gap: var(--fx-space-xs); font-style: normal; }
.fx-quote__avatar { width: 48px; height: 48px; border-radius: var(--fx-radius-full); object-fit: cover; }
.fx-quote__attribution { display: flex; flex-direction: column; }
.fx-quote__cite { font-weight: 600; color: var(--fx-context-heading, var(--fx-color-heading)); }
.fx-quote__role { color: var(--fx-context-muted, var(--fx-color-muted)); font-size: var(--fx-text-sm); }

/* ================= BLOCK: core/badge ================= */

.fx-badge {
	display: inline-flex; align-items: center; gap: .35em;
	padding: .25em .7em; border-radius: var(--fx-radius-full);
	font-size: var(--fx-text-sm); font-weight: 600;
	background: var(--fx-color-surface-alt); color: var(--fx-color-text);
}
.fx-badge--tone-muted { background: var(--fx-color-surface-alt); color: var(--fx-color-text); }
.fx-badge--tone-brand { background: var(--fx-color-brand); color: var(--fx-color-on-brand); }
.fx-badge--tone-accent { background: var(--fx-color-accent); color: var(--fx-color-on-brand); }
.fx-badge--tone-inverse { background: var(--fx-color-on-dark); color: var(--fx-color-surface-dark); }

/* ================= BLOCK: core/list ================= */

.fx-list { display: flex; flex-direction: column; gap: var(--fx-space-xs); }
.fx-list--style-bullet .fx-list__item { padding-inline-start: 1.25em; position: relative; }
.fx-list--style-bullet .fx-list__item::before { content: "\2022"; position: absolute; left: 0; color: var(--fx-color-brand); }
.fx-list--style-number { counter-reset: fx-list; }
.fx-list--style-number .fx-list__item { padding-inline-start: 1.5em; position: relative; counter-increment: fx-list; }
.fx-list--style-number .fx-list__item::before { content: counter(fx-list) "."; position: absolute; left: 0; color: var(--fx-color-brand); font-weight: 600; }
.fx-list--style-check .fx-list__item { padding-inline-start: 1.5em; position: relative; }
.fx-list--style-check .fx-list__item::before { content: "\2713"; position: absolute; left: 0; color: var(--fx-color-success); font-weight: 700; }
.fx-list__icon { margin-inline-end: .5em; color: var(--fx-color-brand); }
.fx-list--columns-2 { columns: 2; column-gap: var(--fx-space-lg); }
.fx-list--columns-3 { columns: 3; column-gap: var(--fx-space-lg); }

/* ================= BLOCK: core/logo ================= */

.fx-logo { display: flex; align-items: center; gap: var(--fx-space-sm); }
.fx-logo__mark { height: var(--fx-logo-height, 40px); width: auto; }
.fx-logo__mark--dark { display: none; }
@media (prefers-color-scheme: dark) { .fx-logo__mark--light { display: none; } .fx-logo__mark--dark { display: block; } }
.fx-logo__wordmark { font-family: var(--fx-font-heading); font-weight: 700; font-size: var(--fx-text-h4); color: var(--fx-context-heading, var(--fx-color-heading)); }
.fx-logo__tagline { font-size: var(--fx-text-sm); color: var(--fx-context-muted, var(--fx-color-muted)); }

/* ================= BLOCK: core/divider ================= */

.fx-divider { border: 0; border-top: 1px solid var(--fx-color-border); margin: 0 auto; }
.fx-divider--width-full { width: 100%; }
.fx-divider--width-half { width: 50%; }
.fx-divider--width-short { width: 4rem; }
.fx-divider--style-dots { border-top: 0; height: 4px; background-image: radial-gradient(circle, var(--fx-color-border) 1.5px, transparent 1.5px); background-size: 10px 4px; }
.fx-divider--style-gradient { border-top: 0; height: 2px; background-image: linear-gradient(90deg, transparent, var(--fx-color-brand), transparent); }

/* ================= BLOCK: core/spacer ================= */

.fx-spacer--size-xs  { height: var(--fx-space-xs); }
.fx-spacer--size-sm  { height: var(--fx-space-sm); }
.fx-spacer--size-md  { height: var(--fx-space-md); }
.fx-spacer--size-lg  { height: var(--fx-space-lg); }
.fx-spacer--size-xl  { height: var(--fx-space-xl); }
.fx-spacer--size-2xl { height: var(--fx-space-2xl); }
.fx-spacer--size-3xl { height: var(--fx-space-3xl); }
.fx-spacer--size-none { height: 0; }

/* ================= BLOCK: core/section, core/columns, core/column ================= */

.fx-section--layout-stack { display: flex; flex-direction: column; gap: var(--fx-section-gap, var(--fx-space-lg)); }
.fx-section--layout-stack.fx-section--content-center { align-items: center; text-align: center; }
.fx-section--layout-stack.fx-section--content-end { align-items: flex-end; }
.fx-section--layout-grid {
	display: grid;
	grid-template-columns: repeat(var(--fx-section-cols, 3), minmax(0, 1fr));
	gap: var(--fx-section-gap, var(--fx-space-lg));
}
.fx-section--layout-row {
	display: flex; flex-wrap: wrap;
	gap: var(--fx-section-gap, var(--fx-space-lg));
}
.fx-section--valign-center { align-items: center; }
.fx-section--valign-end { align-items: flex-end; }
.fx-b--core-section[style*="--fx-section-min-h"] > .fx-section { min-height: var(--fx-section-min-h); }

/* Presentation presets change composition without replacing authored child
   blocks. A visitor gets a finished section while every word remains editable. */
.fx-section--preset-editorial {
	padding: clamp(var(--fx-space-lg), 3vw, var(--fx-space-2xl));
	border: 1px solid color-mix(in srgb, var(--fx-color-border) 72%, transparent);
	border-radius: calc(var(--fx-radius-lg) + 4px);
	background:
		radial-gradient(circle at 92% 12%, color-mix(in srgb, var(--fx-color-brand) 12%, transparent), transparent 32%),
		linear-gradient(135deg, color-mix(in srgb, var(--fx-color-surface) 94%, var(--fx-color-brand) 6%), var(--fx-color-surface));
	box-shadow: var(--fx-shadow-sm);
}
.fx-section--preset-centered { align-items: center; text-align: center; }
.fx-section--preset-centered > * { width: min(100%, 54rem); margin-inline: auto; }
.fx-section--preset-split {
	display: grid;
	grid-template-columns: minmax(0, .8fr) minmax(18rem, 1.2fr);
	align-items: center;
	gap: var(--fx-section-gap, var(--fx-space-xl));
}
.fx-section--preset-split > :last-child { grid-column: 2; grid-row: 1 / span 2; }

@container nexpress-page (max-width: 720px) {
	.fx-section--layout-grid, .fx-section--layout-row, .fx-section--preset-split { grid-template-columns: 1fr; flex-direction: column; }
	.fx-section--preset-split > :last-child { grid-column: auto; grid-row: auto; }
	.fx-bg--fixed { background-attachment: scroll; }
}

.fx-columns {
	display: flex; flex-wrap: nowrap; gap: var(--fx-columns-gap, var(--fx-space-lg));
}
/* Stack only at the requested breakpoint. Wrapping percentage columns here
   makes their gap push the second column onto a new line even on desktop. */
.fx-columns > .fx-b--core-column { flex: 1 1 0; min-width: 0; }
.fx-columns--ratio-wide-left  > .fx-b--core-column:first-child  { flex: 0 1 62%; }
.fx-columns--ratio-wide-left  > .fx-b--core-column:last-child   { flex: 0 1 38%; }
.fx-columns--ratio-wide-right > .fx-b--core-column:first-child  { flex: 0 1 38%; }
.fx-columns--ratio-wide-right > .fx-b--core-column:last-child   { flex: 0 1 62%; }
.fx-columns--ratio-golden > .fx-b--core-column:first-child { flex: 0 1 61.8%; }
.fx-columns--ratio-golden > .fx-b--core-column:last-child  { flex: 0 1 38.2%; }

.fx-column { display: flex; flex-direction: column; min-width: 0; }
.fx-column--valign-center { justify-content: center; }
.fx-column--valign-end { justify-content: flex-end; }
.fx-column[style*="--fx-column-span"] { flex-grow: var(--fx-column-span); }

@container nexpress-page (max-width: 720px) {
	.fx-columns--stack-mobile { flex-direction: column; }
}
@container nexpress-page (max-width: 1024px) {
	.fx-columns--stack-tablet { flex-direction: column; }
}

/* ================= BLOCK: core/accordion ================= */

.fx-accordion__heading { font-weight: 600; margin-bottom: var(--fx-space-sm); }
.fx-accordion__item { border-bottom: 1px solid var(--fx-color-border); }
.fx-accordion__row { margin: 0; }
.fx-accordion__trigger {
	display: flex; align-items: center; justify-content: space-between; gap: var(--fx-space-sm);
	width: 100%; padding: var(--fx-space-sm) 0; text-align: start; font-weight: 600; color: var(--fx-context-heading, var(--fx-color-heading));
}
.fx-accordion__icon { width: .7em; height: .7em; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: rotate(45deg); transition: transform var(--fx-motion-base) var(--fx-motion-ease); flex: none; }
.fx-accordion__trigger[aria-expanded="true"] .fx-accordion__icon { transform: rotate(225deg); }
.fx-accordion__panel { overflow: hidden; }
.fx-accordion__panel[hidden] { display: none; }
.fx-accordion__body { padding-bottom: var(--fx-space-md); color: var(--fx-context-text, var(--fx-color-text)); }

/* ================= BLOCK: core/cards ================= */

.fx-cards__heading { margin-bottom: var(--fx-space-md); }
.fx-cards__grid { display: grid; grid-template-columns: repeat(var(--fx-cards-cols, 3), minmax(0, 1fr)); gap: var(--fx-space-lg); }
.fx-cards__item {
	display: flex; flex-direction: column; gap: var(--fx-space-xs); height: 100%;
	text-decoration: none; color: inherit;
}
.fx-cards__grid--style-card .fx-cards__item { padding: var(--fx-space-lg); background: var(--fx-color-surface); border-radius: var(--fx-radius-md); box-shadow: var(--fx-shadow-sm); transition: box-shadow var(--fx-motion-base) var(--fx-motion-ease), transform var(--fx-motion-base) var(--fx-motion-ease); }
a.fx-cards__item:hover { box-shadow: var(--fx-shadow-md); transform: translateY(-2px); }
.fx-cards__grid--style-outline .fx-cards__item { padding: var(--fx-space-lg); border: 1px solid var(--fx-color-border); border-radius: var(--fx-radius-md); }
.fx-cards__image { border-radius: var(--fx-radius-sm); aspect-ratio: 16 / 10; object-fit: cover; margin-bottom: var(--fx-space-xs); }
.fx-cards__icon { display: inline-flex; align-items: center; justify-content: center; width: 2.75rem; height: 2.75rem; font-size: 1.4rem; color: var(--fx-color-brand); }
.fx-cards__icon--tile { background: var(--fx-color-surface-alt); border-radius: var(--fx-radius-md); }
.fx-cards__title { font-family: var(--fx-font-heading); font-weight: 600; font-size: var(--fx-text-lg); color: var(--fx-context-heading, var(--fx-color-heading)); }
.fx-cards__body { color: var(--fx-context-text, var(--fx-color-text)); flex: 1; }
.fx-cards__cta { font-weight: 600; color: var(--fx-context-link, var(--fx-color-brand)); }
@container nexpress-page (max-width: 720px) { .fx-cards__grid { grid-template-columns: 1fr; } }

/* ================= BLOCK: core/stats ================= */

.fx-stats { display: grid; grid-template-columns: repeat(var(--fx-stats-cols, 4), minmax(0, 1fr)); gap: var(--fx-space-lg); text-align: center; }
.fx-stats__item { display: flex; flex-direction: column; gap: .2em; }
.fx-stats--style-card .fx-stats__item { padding: var(--fx-space-lg); background: var(--fx-color-surface-alt); border-radius: var(--fx-radius-md); }
.fx-stats--style-divided .fx-stats__item { border-inline-start: 1px solid var(--fx-color-border); }
.fx-stats--style-divided .fx-stats__item:first-child { border-inline-start: 0; }
.fx-stats__value { font-family: var(--fx-font-heading); font-size: var(--fx-text-h1); font-weight: 700; color: var(--fx-color-brand); line-height: 1; }
.fx-stats__suffix { font-size: 0.5em; margin-inline-start: .1em; }
.fx-stats__label { color: var(--fx-context-muted, var(--fx-color-muted)); }
@container nexpress-page (max-width: 720px) { .fx-stats { grid-template-columns: repeat(2, 1fr); } }

/* ================= BLOCK: core/table ================= */

.fx-table-wrap { margin: 0; }
.fx-table__heading { font-weight: 600; margin-bottom: var(--fx-space-sm); text-align: start; }
.fx-table__scroll { overflow-x: auto; }
.fx-table { width: 100%; border-collapse: collapse; font-size: var(--fx-text-sm); }
.fx-table th, .fx-table td { padding: var(--fx-space-xs) var(--fx-space-sm); text-align: start; }
.fx-table--align-center { text-align: center; }
.fx-table--align-end { text-align: end; }
.fx-table th { font-weight: 600; color: var(--fx-context-heading, var(--fx-color-heading)); border-bottom: 2px solid var(--fx-color-border); }
.fx-table--style-lined td { border-bottom: 1px solid var(--fx-color-border); }
.fx-table--style-striped tbody tr:nth-child(odd) { background: var(--fx-color-surface-alt); }
.fx-table__note { margin-top: var(--fx-space-xs); font-size: var(--fx-text-sm); color: var(--fx-context-muted, var(--fx-color-muted)); }

/* ================= BLOCK: core/buttons ================= */

.fx-buttons { display: flex; flex-wrap: wrap; gap: var(--fx-space-sm); align-items: center; }
.fx-buttons--stack-mobile { }
@container nexpress-page (max-width: 480px) { .fx-buttons--stack-mobile { flex-direction: column; align-items: stretch; } }
.fx-buttons__item {
	display: inline-flex; align-items: center; justify-content: center; gap: .5em;
	padding: .65em 1.4em; border-radius: var(--fx-radius-sm); font-weight: 600; text-decoration: none;
	transition: transform var(--fx-motion-fast) var(--fx-motion-ease), box-shadow var(--fx-motion-fast) var(--fx-motion-ease), opacity var(--fx-motion-fast) var(--fx-motion-ease);
}
.fx-buttons__item:hover { transform: translateY(-1px); }
.fx-buttons--size-sm .fx-buttons__item { padding: .45em 1em; font-size: var(--fx-text-sm); }
.fx-buttons--size-lg .fx-buttons__item { padding: .85em 1.8em; font-size: var(--fx-text-lg); }
.fx-buttons__item--style-primary { background: var(--fx-color-brand); color: var(--fx-color-on-brand); box-shadow: var(--fx-shadow-sm); }
.fx-buttons__item--style-secondary { background: var(--fx-color-surface-alt); color: var(--fx-color-heading); }
.fx-buttons__item--style-ghost { background: transparent; color: var(--fx-context-link, var(--fx-color-brand)); border: 1px solid currentColor; }
.fx-buttons__item--style-link { background: transparent; color: var(--fx-context-link, var(--fx-color-brand)); padding-inline: 0; text-decoration: underline; text-underline-offset: 3px; }

/* ================= BLOCK: core/image ================= */

.fx-image { margin: 0; }
.fx-image__img { width: 100%; height: auto; border-radius: var(--fx-radius-md); }
.fx-image--radius-none .fx-image__img { border-radius: 0; }
.fx-image--radius-md .fx-image__img { border-radius: var(--fx-radius-md); }
.fx-image--radius-full .fx-image__img { border-radius: var(--fx-radius-full); }
.fx-image--ratio-16-9 .fx-image__img { aspect-ratio: 16 / 9; object-fit: cover; }
.fx-image--ratio-4-3 .fx-image__img  { aspect-ratio: 4 / 3; object-fit: cover; }
.fx-image--ratio-1-1 .fx-image__img  { aspect-ratio: 1 / 1; object-fit: cover; }
.fx-image--ratio-3-4 .fx-image__img  { aspect-ratio: 3 / 4; object-fit: cover; }
.fx-image--fit-contain .fx-image__img { object-fit: contain; }
.fx-image__caption { margin-top: var(--fx-space-xs); font-size: var(--fx-text-sm); color: var(--fx-context-muted, var(--fx-color-muted)); text-align: center; }

/* ================= BLOCK: core/gallery + lightbox ================= */

.fx-gallery { display: grid; grid-template-columns: repeat(var(--fx-gallery-cols, 3), minmax(0, 1fr)); gap: var(--fx-gallery-gap, var(--fx-space-sm)); }
.fx-gallery__item { margin: 0; position: relative; }
.fx-gallery__image { width: 100%; height: 100%; object-fit: cover; border-radius: var(--fx-radius-sm); aspect-ratio: 1 / 1; }
.fx-gallery__item--ratio-16-9 .fx-gallery__image { aspect-ratio: 16 / 9; }
.fx-gallery__item--ratio-4-3 .fx-gallery__image  { aspect-ratio: 4 / 3; }
.fx-gallery__item--ratio-1-1 .fx-gallery__image  { aspect-ratio: 1 / 1; }
.fx-gallery__trigger { display: block; width: 100%; height: 100%; padding: 0; border-radius: var(--fx-radius-sm); overflow: hidden; }
.fx-gallery__trigger:hover .fx-gallery__image { opacity: .88; }
.fx-gallery__caption { margin-top: var(--fx-space-xs); font-size: var(--fx-text-sm); color: var(--fx-context-muted, var(--fx-color-muted)); }
.fx-gallery--preset-cinematic .fx-gallery__image { aspect-ratio: 16 / 9; }
.fx-gallery--preset-cinematic .fx-gallery__item { overflow: hidden; border-radius: var(--fx-radius-md); box-shadow: var(--fx-shadow-sm); }
.fx-gallery--preset-framed .fx-gallery__item { padding: var(--fx-space-xs); border: 1px solid var(--fx-color-border); border-radius: var(--fx-radius-md); background: var(--fx-color-surface); box-shadow: var(--fx-shadow-sm); }
.fx-gallery--preset-framed .fx-gallery__image { border-radius: calc(var(--fx-radius-sm) / 2); }
.fx-gallery--preset-quiet .fx-gallery__image { border-radius: 0; filter: saturate(.88); transition: filter var(--fx-motion-base) var(--fx-motion-ease), opacity var(--fx-motion-base) var(--fx-motion-ease); }
.fx-gallery--preset-quiet .fx-gallery__item:hover .fx-gallery__image { filter: saturate(1); }
@container nexpress-page (max-width: 720px) { .fx-gallery { grid-template-columns: repeat(2, 1fr); } }

.fx-lightbox {
	position: fixed; inset: 0; z-index: 1000; display: flex; align-items: center; justify-content: center;
	background: rgba(0, 0, 0, .92); padding: var(--fx-space-lg);
}
.fx-lightbox[hidden] { display: none; }
.fx-lightbox__figure { max-width: min(92vw, 1100px); max-height: 88vh; margin: 0; display: flex; flex-direction: column; gap: var(--fx-space-xs); }
.fx-lightbox__image { max-height: 80vh; width: auto; margin-inline: auto; border-radius: var(--fx-radius-sm); }
.fx-lightbox__caption { color: #fff; text-align: center; font-size: var(--fx-text-sm); }
.fx-lightbox__close, .fx-lightbox__prev, .fx-lightbox__next {
	position: absolute; color: #fff; font-size: 1.75rem; line-height: 1; padding: .5em .7em; border-radius: var(--fx-radius-full);
}
.fx-lightbox__close:hover, .fx-lightbox__prev:hover, .fx-lightbox__next:hover { background: rgba(255, 255, 255, .15); }
.fx-lightbox__close { top: var(--fx-space-md); right: var(--fx-space-md); }
.fx-lightbox__prev { left: var(--fx-space-md); top: 50%; transform: translateY(-50%); }
.fx-lightbox__next { right: var(--fx-space-md); top: 50%; transform: translateY(-50%); }

/* ================= BLOCK: core/html ================= */

.fx-html { overflow-x: auto; }

/* ================= BLOCK: core/video ================= */

.fx-video { margin: 0; }
.fx-video__native { width: 100%; border-radius: var(--fx-radius-md); background: #000; aspect-ratio: 16 / 9; }
.fx-video--ratio-4-3 .fx-video__native { aspect-ratio: 4 / 3; }
.fx-video--ratio-1-1 .fx-video__native { aspect-ratio: 1 / 1; }
.fx-video__caption { margin-top: var(--fx-space-xs); font-size: var(--fx-text-sm); color: var(--fx-context-muted, var(--fx-color-muted)); text-align: center; }

/* ================= BLOCK: core/embed, core/map, church/live shared embed ================= */

.fx-embed-block { margin: 0; }
.fx-embed-block__caption { margin-top: var(--fx-space-xs); font-size: var(--fx-text-sm); color: var(--fx-context-muted, var(--fx-color-muted)); }
.fx-embed {
	position: relative; display: flex; align-items: center; justify-content: center;
	min-height: var(--fx-embed-height, 320px); aspect-ratio: 16 / 9; background: var(--fx-color-surface-dark) center / cover no-repeat;
	border-radius: var(--fx-radius-md); overflow: hidden;
}
.fx-embed[style*="--fx-embed-height"] { aspect-ratio: auto; }
.fx-embed iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.fx-embed__poster { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.fx-embed__trigger {
	position: relative; z-index: 1; display: flex; flex-direction: column; align-items: center; gap: var(--fx-space-xs);
	color: #fff; padding: var(--fx-space-md); border-radius: var(--fx-radius-md);
	background: rgba(0, 0, 0, .35); transition: background var(--fx-motion-fast) var(--fx-motion-ease);
}
.fx-embed__trigger:hover { background: rgba(0, 0, 0, .5); }
.fx-embed__play, .fx-embed__icon {
	display: block; width: 3.2rem; height: 3.2rem; border-radius: var(--fx-radius-full);
	background: var(--fx-color-brand); position: relative;
}
.fx-embed__play::after {
	content: ""; position: absolute; top: 50%; left: 55%; transform: translate(-50%, -50%);
	border-style: solid; border-width: .55rem 0 .55rem .95rem; border-color: transparent transparent transparent var(--fx-color-on-brand);
}
.fx-embed__label { font-size: var(--fx-text-sm); font-weight: 600; }

.fx-map { display: flex; flex-direction: column; gap: var(--fx-space-sm); }
.fx-map__address { color: var(--fx-context-text, var(--fx-color-text)); }
.fx-map__directions a { font-weight: 600; color: var(--fx-context-link, var(--fx-color-brand)); }

/* ================= BLOCK: core/form (+ shared form parts) ================= */

.fx-form__heading { margin-bottom: var(--fx-space-xs); }
.fx-form__intro { color: var(--fx-context-muted, var(--fx-color-muted)); margin-bottom: var(--fx-space-md); }
.fx-form__honeypot { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.fx-form__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--fx-space-md); }
.fx-form__field { display: flex; flex-direction: column; gap: .35em; grid-column: span 2; }
.fx-form__field--width-half { grid-column: span 1; }
@container nexpress-page (max-width: 560px) { .fx-form__grid { grid-template-columns: 1fr; } .fx-form__field--width-half { grid-column: span 1; } }
.fx-form__label { font-weight: 600; font-size: var(--fx-text-sm); color: var(--fx-context-heading, var(--fx-color-heading)); }
.fx-form__required { color: var(--fx-color-danger); }
.fx-form__control {
	width: 100%; padding: .65em .8em; border: 1px solid var(--fx-color-border); border-radius: var(--fx-radius-sm);
	background: var(--fx-color-surface); color: var(--fx-color-text); font: inherit;
}
.fx-form__control:focus { border-color: var(--fx-color-focus); }
textarea.fx-form__control { resize: vertical; }
.fx-form__checkbox { display: flex; align-items: center; gap: .5em; grid-column: span 2; }
.fx-form__consent { grid-column: 1 / -1; font-size: var(--fx-text-sm); color: var(--fx-context-muted, var(--fx-color-muted)); margin-top: var(--fx-space-sm); }
.fx-form__submit, .fx-give__submit, .fx-newsletter__submit, .fx-prayer-request__submit {
	margin-top: var(--fx-space-md); padding: .75em 1.8em; border-radius: var(--fx-radius-sm);
	background: var(--fx-color-brand); color: var(--fx-color-on-brand); font-weight: 600;
}
.fx-form__status { margin-top: var(--fx-space-sm); font-size: var(--fx-text-sm); min-height: 1.2em; }
.fx-form__status:not(:empty) { color: var(--fx-color-success); }

/* ================= BLOCK: core/posts, core/calendar (share list/grid look) ================= */

.fx-posts__heading, .fx-sermons__heading, .fx-events__heading, .fx-calendar__heading { margin-bottom: var(--fx-space-md); }
.fx-posts__grid, .fx-sermons__grid { display: grid; grid-template-columns: repeat(var(--fx-posts-cols, var(--fx-sermons-cols, 3)), minmax(0, 1fr)); gap: var(--fx-space-lg); }
.fx-posts__cell--feature, .fx-sermons__cell--feature { grid-column: 1 / -1; }
.fx-posts__cell--feature .fx-posts__item, .fx-sermons__cell--feature .fx-sermons__item { display: grid; grid-template-columns: 1.2fr 1fr; gap: var(--fx-space-lg); align-items: center; }
.fx-posts__item, .fx-sermons__item { display: flex; flex-direction: column; gap: .4em; height: 100%; }
.fx-posts__image, .fx-sermons__image { width: 100%; aspect-ratio: 16 / 10; object-fit: cover; border-radius: var(--fx-radius-md); }
.fx-posts__tag, .fx-sermons__series { align-self: flex-start; font-size: var(--fx-text-sm); font-weight: 600; color: var(--fx-color-brand); text-transform: uppercase; letter-spacing: .04em; }
.fx-posts__title a, .fx-sermons__title a, .fx-events__title a, .fx-ministries__title a, .fx-locations__title a { text-decoration: none; color: var(--fx-context-heading, var(--fx-color-heading)); }
.fx-posts__title a:hover, .fx-sermons__title a:hover { text-decoration: underline; }
.fx-posts__date, .fx-sermons__meta { color: var(--fx-context-muted, var(--fx-color-muted)); font-size: var(--fx-text-sm); }
.fx-sermons__meta { display: flex; flex-wrap: wrap; gap: .6em; }
.fx-posts__excerpt, .fx-sermons__excerpt, .fx-ministries__excerpt, .fx-locations__excerpt { color: var(--fx-context-text, var(--fx-color-text)); }
.fx-posts__cta, .fx-sermons__cta, .fx-events__cta, .fx-service-times__cta { margin-top: var(--fx-space-md); font-weight: 600; }
.fx-posts__cta a, .fx-sermons__cta a, .fx-events__cta a, .fx-service-times__cta a { color: var(--fx-context-link, var(--fx-color-brand)); }
@container nexpress-page (max-width: 720px) {
	.fx-posts__grid, .fx-sermons__grid { grid-template-columns: 1fr; }
	.fx-posts__cell--feature .fx-posts__item, .fx-sermons__cell--feature .fx-sermons__item { grid-template-columns: 1fr; }
}

.fx-calendar__grid { width: 100%; border-collapse: collapse; margin-bottom: var(--fx-space-lg); }
.fx-calendar__caption { font-weight: 600; text-align: start; padding-bottom: var(--fx-space-sm); color: var(--fx-context-heading, var(--fx-color-heading)); }
.fx-calendar__grid th { padding: var(--fx-space-xs); font-size: var(--fx-text-sm); color: var(--fx-context-muted, var(--fx-color-muted)); }
.fx-calendar__cell { vertical-align: top; padding: var(--fx-space-xs); border: 1px solid var(--fx-color-border); height: 5.5rem; width: 14.28%; }
.fx-calendar__cell--outside { opacity: .35; }
.fx-calendar__cell--today { background: var(--fx-color-surface-alt); }
.fx-calendar__day-number { font-weight: 600; font-size: var(--fx-text-sm); }
.fx-calendar__event { display: block; font-size: .75rem; color: var(--fx-color-brand); text-decoration: none; margin-top: .2em; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fx-calendar__agenda { display: flex; flex-direction: column; gap: var(--fx-space-sm); }
.fx-calendar__agenda-item { display: flex; gap: var(--fx-space-sm); align-items: baseline; border-bottom: 1px solid var(--fx-color-border); padding-bottom: var(--fx-space-sm); }
.fx-calendar__agenda-date { flex: none; color: var(--fx-context-muted, var(--fx-color-muted)); font-size: var(--fx-text-sm); }
.fx-calendar__agenda-title { font-weight: 600; text-decoration: none; color: var(--fx-context-heading, var(--fx-color-heading)); }
@container nexpress-page (max-width: 640px) { .fx-calendar__cell { height: auto; min-height: 3.5rem; } }

/* ================= BLOCK: core/nav ================= */

.fx-nav__list { display: flex; align-items: center; gap: var(--fx-space-md); }
.fx-nav--layout-column .fx-nav__list { flex-direction: column; align-items: flex-start; }
.fx-nav__link { text-decoration: none; padding: .3em 0; font-weight: 500; }
.fx-nav__link[aria-current="page"] { color: var(--fx-color-brand); font-weight: 700; }
.fx-nav__item--has-children { position: relative; }
.fx-nav__list--sub { padding-inline-start: var(--fx-space-md); flex-direction: column; align-items: flex-start; gap: var(--fx-space-xs); }
.fx-nav__drawer { display: block; }
.fx-nav__toggle { display: none; align-items: center; gap: .5em; padding: .4em; }
.fx-nav__toggle-icon { width: 1.4em; height: 1.1em; position: relative; }
.fx-nav__toggle-icon::before, .fx-nav__toggle-icon::after { content: ""; position: absolute; left: 0; right: 0; height: 2px; background: currentColor; }
.fx-nav__toggle-icon::before { top: 0; box-shadow: 0 .5em 0 currentColor; }
.fx-nav__toggle-icon::after { bottom: 0; }
.fx-nav__close { display: none; align-self: flex-end; font-size: 1.5rem; padding: .3em .6em; }
.fx-nav__scrim { position: fixed; inset: 0; background: rgba(0, 0, 0, .4); z-index: 998; }
.fx-nav__scrim[hidden] { display: none; }

@container nexpress-page (max-width: 860px) {
	.fx-nav--mobile-drawer .fx-nav__toggle { display: inline-flex; }
	.fx-nav--mobile-drawer .fx-nav__close { display: block; }
	.fx-nav--mobile-drawer .fx-nav__drawer {
		position: fixed; top: 0; right: 0; bottom: 0; width: min(84vw, 22rem); z-index: 999;
		background: var(--fx-color-surface); padding: var(--fx-space-lg); overflow-y: auto;
		display: flex; flex-direction: column; gap: var(--fx-space-md);
		transform: translateX(100%); transition: transform var(--fx-motion-base) var(--fx-motion-ease);
	}
	.fx-nav--mobile-drawer .fx-nav__drawer:not([hidden]) { transform: translateX(0); }
	.fx-nav--mobile-drawer .fx-nav__drawer[hidden] { display: flex; visibility: hidden; pointer-events: none; }
	.fx-nav--mobile-drawer .fx-nav__list { flex-direction: column; align-items: flex-start; }
	.fx-nav--mobile-hidden .fx-nav__drawer { display: none; }
}

/* The opt-in mega layout leaves every link visible until behaviour is ready. */
.fx-nav--layout-mega { --fx-nav-panel-radius: 1.25rem; }
.fx-nav--layout-mega .fx-nav__item { min-width: 0; }
.fx-nav--layout-mega .fx-nav__link { display: block; font-size: .9375rem; }
.fx-nav--layout-mega .fx-nav__description { display: block; margin-top: .25rem; color: var(--fx-color-muted); font-size: .8125rem; font-weight: 400; line-height: 1.55; }
.fx-nav__disclosure { display: none; flex: none; align-items: center; justify-content: center; width: 2rem; height: 2rem; border-radius: 50%; }
.fx-nav__disclosure span { width: .4rem; height: .4rem; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: translateY(-.1rem) rotate(45deg); transition: transform var(--fx-motion-fast, 160ms) ease; }
.fx-nav__disclosure[aria-expanded="true"] span { transform: translateY(.1rem) rotate(225deg); }
.fx-nav__disclosure:hover { background: color-mix(in srgb, currentColor 8%, transparent); }
.fx-nav--layout-mega .fx-nav__panel {
	--fx-context-text: var(--fx-color-text); --fx-context-heading: var(--fx-color-heading); --fx-context-muted: var(--fx-color-muted); --fx-context-link: var(--fx-color-brand); --fx-context-accent: var(--fx-color-heading);
	display: grid; grid-template-columns: minmax(0, 1fr); gap: 2rem; padding: 2rem;
	background: var(--fx-color-surface); color: var(--fx-color-text); border: 1px solid var(--fx-color-border);
	border-radius: var(--fx-nav-panel-radius); box-shadow: var(--fx-shadow-lg, 0 24px 64px #0002); text-align: start;
}
.fx-nav--layout-mega .fx-nav__panel:has(> .fx-nav__featured) { grid-template-columns: minmax(0, 1fr) minmax(14rem, .52fr); }
.fx-nav--layout-mega .fx-nav__panel > .fx-nav__list { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 10rem), 1fr)); gap: 1.75rem; align-items: start; padding: 0; }
.fx-nav--layout-mega .fx-nav__panel > .fx-nav__list > .fx-nav__item > .fx-nav__link { font-weight: 700; color: var(--fx-color-heading); margin-bottom: .65rem; }
.fx-nav--layout-mega .fx-nav__group .fx-nav__list { align-items: stretch; gap: .35rem; padding: 0; }
.fx-nav--layout-mega .fx-nav__group .fx-nav__link { padding: .5rem 0; font-weight: 450; color: var(--fx-color-text); transition: color var(--fx-motion-fast, 160ms) ease; }
.fx-nav--layout-mega .fx-nav__link:hover, .fx-nav--layout-mega .fx-nav__featured-link:hover { color: var(--fx-color-brand); }
.fx-nav--layout-mega .fx-nav__featured { padding: 1rem; border-radius: calc(var(--fx-nav-panel-radius) - .5rem); background: var(--fx-color-surface-alt); }
.fx-nav__featured-image { width: 100%; height: 9rem; object-fit: cover; border-radius: .65rem; margin-bottom: 1rem; }
.fx-nav__featured-eyebrow { color: var(--fx-color-muted); font-size: .675rem; letter-spacing: .13em; text-transform: uppercase; }
.fx-nav__featured-title { font-family: var(--fx-font-heading); font-weight: 650; font-size: 1.25rem; line-height: 1.2; color: var(--fx-color-heading); }
.fx-nav__featured-text { font-size: .8125rem; line-height: 1.55; color: var(--fx-color-muted); }
.fx-nav__featured-link { display: inline-flex; gap: .75rem; align-items: center; margin-top: .65rem; color: var(--fx-color-heading); font-size: .8125rem; font-weight: 650; text-decoration: none; }
.fx-nav--layout-mega .fx-nav__panel[hidden], .fx-nav--layout-mega .fx-nav__group[hidden] { display: none; }
.fx-nav--layout-mega.fx-nav--enhanced > .fx-nav__drawer > .fx-nav__list > .fx-nav__item { display: flex; align-items: center; position: static; }
.fx-nav--layout-mega.fx-nav--enhanced > .fx-nav__drawer > .fx-nav__list > .fx-nav__item > .fx-nav__disclosure { display: inline-flex; }
.fx-nav--layout-mega.fx-nav--enhanced:not(.fx-nav--compact) .fx-nav__panel { position: absolute; z-index: 1000; top: calc(100% + .5rem); inset-inline-end: 0; width: min(68rem, calc(100vw - 3rem)); animation: fx-nav-enter 220ms ease both; }
@keyframes fx-nav-enter { from { opacity: 0; transform: translateY(.65rem); } to { opacity: 1; transform: translateY(0); } }
.fx-nav--layout-mega:not(.fx-nav--enhanced) .fx-nav__drawer { position: static; width: auto; transform: none; visibility: visible; padding: 0; }
.fx-nav--layout-mega:not(.fx-nav--enhanced) .fx-nav__toggle, .fx-nav--layout-mega:not(.fx-nav--enhanced) .fx-nav__close { display: none; }
.fx-nav--layout-mega:not(.fx-nav--enhanced) > .fx-nav__drawer > .fx-nav__list { flex-wrap: wrap; align-items: flex-start; }
.fx-nav--layout-mega:not(.fx-nav--enhanced) .fx-nav__panel { margin-block: 1rem; }
@media (max-width: 860px) {
	.fx-nav--layout-mega:not(.fx-nav--enhanced) .fx-nav__panel { display: block; padding: 1rem; }
	.fx-nav--layout-mega:not(.fx-nav--enhanced) .fx-nav__featured { margin-top: 1rem; }
}
.fx-nav--layout-mega.fx-nav--compact .fx-nav__panel { position: static; display: block; width: 100%; padding: .5rem 0 1rem; border: 0; border-radius: 0; box-shadow: none; background: transparent; }
.fx-nav--layout-mega.fx-nav--compact .fx-nav__panel[hidden], .fx-nav--layout-mega.fx-nav--compact .fx-nav__group[hidden] { display: none; }
.fx-nav--layout-mega.fx-nav--compact .fx-nav__list { display: flex; flex-direction: column; align-items: stretch; gap: .35rem; width: 100%; }
.fx-nav--layout-mega.fx-nav--compact .fx-nav__item { width: 100%; }
.fx-nav--layout-mega.fx-nav--compact .fx-nav__item--has-children,
.fx-nav--layout-mega.fx-nav--compact > .fx-nav__drawer > .fx-nav__list > .fx-nav__item { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; }
.fx-nav--layout-mega.fx-nav--compact .fx-nav__disclosure { display: inline-flex; width: 2.75rem; height: 2.75rem; }
.fx-nav--layout-mega.fx-nav--compact .fx-nav__panel, .fx-nav--layout-mega.fx-nav--compact .fx-nav__group { grid-column: 1 / -1; }
.fx-nav--layout-mega.fx-nav--compact > .fx-nav__drawer > .fx-nav__list > .fx-nav__item { padding-block: .5rem; border-bottom: 1px solid var(--fx-color-border); }
.fx-nav--layout-mega.fx-nav--compact > .fx-nav__drawer > .fx-nav__list > .fx-nav__item > .fx-nav__link { font-size: 1.5rem; font-weight: 600; }
.fx-nav--layout-mega.fx-nav--compact .fx-nav__panel > .fx-nav__list > .fx-nav__item > .fx-nav__link { margin: 0; }
.fx-nav--layout-mega.fx-nav--compact .fx-nav__group { padding-inline-start: 1rem; }
.fx-nav--layout-mega.fx-nav--compact .fx-nav__featured { margin-top: 1rem; }
.fx-nav--layout-mega.fx-nav--mobile-drawer.fx-nav--compact .fx-nav__toggle { display: inline-flex; min-height: 2.75rem; }
.fx-nav--layout-mega.fx-nav--mobile-drawer.fx-nav--compact .fx-nav__close { display: block; align-self: flex-end; min-width: 2.75rem; min-height: 2.75rem; }
.fx-nav--layout-mega.fx-nav--mobile-drawer.fx-nav--compact .fx-nav__drawer {
	--fx-context-text: var(--fx-color-text); --fx-context-heading: var(--fx-color-heading); --fx-context-muted: var(--fx-color-muted); --fx-context-link: var(--fx-color-brand); --fx-context-accent: var(--fx-color-heading);
	position: fixed; inset: 0 0 0 auto; width: min(92vw, 26rem); height: 100dvh; z-index: 999;
	display: flex; flex-direction: column; gap: 1.5rem; padding: 1.25rem; overflow-y: auto; overscroll-behavior: contain;
	background: var(--fx-color-surface); color: var(--fx-color-text); transform: none;
	box-shadow: var(--fx-shadow-lg, 0 24px 64px #0002); animation: fx-nav-enter 220ms ease both;
}
.fx-nav--layout-mega.fx-nav--mobile-drawer.fx-nav--compact .fx-nav__drawer[hidden] { display: none; }
.fx-nav--layout-mega.fx-nav--mobile-hidden.fx-nav--compact .fx-nav__drawer { display: none; }
/* Static canvas representation: nested content remains in the menu's fields. */
.fx-nav--layout-mega.fx-nav--preview > .fx-nav__drawer > .fx-nav__list { flex-direction: row; flex-wrap: nowrap; align-items: center; }
.fx-nav--layout-mega.fx-nav--preview .fx-nav__item { display: flex; align-items: center; gap: .8rem; }
.fx-nav__preview-chevron { width: .4rem; height: .4rem; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: translateY(-.1rem) rotate(45deg); margin-inline-end: .45rem; }
@media (prefers-reduced-motion: reduce) {
	.fx-nav--layout-mega .fx-nav__panel, .fx-nav--layout-mega .fx-nav__drawer { animation: none !important; }
	.fx-nav__disclosure span, .fx-nav--layout-mega .fx-nav__link { transition: none !important; }
}

/* ================= BLOCK: core/search ================= */

.fx-search { display: flex; align-items: center; gap: .4em; }
.fx-search__field {
	padding: .5em .8em; border: 1px solid var(--fx-color-border); border-radius: var(--fx-radius-full);
	background: var(--fx-color-surface); color: var(--fx-color-text); font: inherit;
}
.fx-search__submit, .fx-search__toggle { display: inline-flex; align-items: center; justify-content: center; width: 2.2em; height: 2.2em; border-radius: var(--fx-radius-full); }
.fx-search__submit-icon, .fx-search__toggle-icon {
	display: block; width: 1em; height: 1em; border: 2px solid currentColor; border-radius: 50%; position: relative;
}
.fx-search__submit-icon::after, .fx-search__toggle-icon::after {
	content: ""; position: absolute; width: 2px; height: .6em; background: currentColor; left: 100%; top: 90%; transform: rotate(45deg); transform-origin: top left;
}
.fx-search--style-icon .fx-search__field { width: 0; padding: 0; border: 0; opacity: 0; transition: width var(--fx-motion-base) var(--fx-motion-ease), opacity var(--fx-motion-base) var(--fx-motion-ease); }
.fx-search--style-icon.fx-search--open .fx-search__field { width: 14rem; padding: .5em .8em; border: 1px solid var(--fx-color-border); opacity: 1; }

/* ================= BLOCK: core/social ================= */

.fx-social { display: flex; gap: var(--fx-space-sm); flex-wrap: wrap; }
.fx-social__item { display: flex; }
.fx-social__link {
	display: inline-flex; align-items: center; justify-content: center; width: 2.2rem; height: 2.2rem;
	border-radius: var(--fx-radius-full); color: var(--fx-context-heading, var(--fx-color-heading));
	transition: background var(--fx-motion-fast) var(--fx-motion-ease), color var(--fx-motion-fast) var(--fx-motion-ease);
}
.fx-social--style-plain .fx-social__link:hover { color: var(--fx-color-brand); }
.fx-social--style-tile .fx-social__link { background: var(--fx-color-surface-alt); }
.fx-social--style-tile .fx-social__link:hover { background: var(--fx-color-brand); color: var(--fx-color-on-brand); }
.fx-social--style-outline .fx-social__link { border: 1px solid var(--fx-color-border); }
.fx-social--style-outline .fx-social__link:hover { background: var(--fx-color-brand); color: var(--fx-color-on-brand); border-color: var(--fx-color-brand); }
.fx-social--size-sm .fx-social__link { width: 1.8rem; height: 1.8rem; font-size: .85em; }
.fx-social--size-md .fx-social__link { width: 2.2rem; height: 2.2rem; }
.fx-social--size-lg .fx-social__link { width: 2.8rem; height: 2.8rem; font-size: 1.2em; }

/* ================= BLOCK: church/service-times ================= */

.fx-service-times__heading { margin-bottom: var(--fx-space-md); }
.fx-service-times__list--layout-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr)); gap: var(--fx-space-md); }
.fx-service-times__list--layout-list { display: flex; flex-direction: column; gap: var(--fx-space-sm); }
.fx-service-times__list--layout-inline { display: flex; flex-wrap: wrap; gap: var(--fx-space-lg); }
.fx-service-times__item { position: relative; padding: var(--fx-space-md); border-radius: var(--fx-radius-md); background: var(--fx-color-surface-alt); }
.fx-service-times__list--layout-list .fx-service-times__item,
.fx-service-times__list--layout-inline .fx-service-times__item { background: none; padding: 0; }
.fx-service-times__item--next { outline: 2px solid var(--fx-color-brand); }
.fx-service-times__badge { display: inline-block; margin-bottom: .3em; font-size: var(--fx-text-sm); font-weight: 700; color: var(--fx-color-brand); }
.fx-service-times__name { font-weight: 600; color: var(--fx-context-heading, var(--fx-color-heading)); }
.fx-service-times__time { color: var(--fx-context-text, var(--fx-color-text)); }
.fx-service-times__location, .fx-service-times__note { font-size: var(--fx-text-sm); color: var(--fx-context-muted, var(--fx-color-muted)); }

/* ================= BLOCK: church/next-service ================= */

.fx-next-service { display: flex; flex-direction: column; align-items: flex-start; gap: var(--fx-space-sm); }
.fx-next-service--style-bar { flex-direction: row; align-items: center; flex-wrap: wrap; justify-content: space-between; padding: var(--fx-space-md); background: var(--fx-color-surface-alt); border-radius: var(--fx-radius-md); }
.fx-next-service--style-card { padding: var(--fx-space-lg); background: var(--fx-color-surface-alt); border-radius: var(--fx-radius-lg); }
.fx-next-service--style-hero { align-items: center; text-align: center; width: 100%; padding: var(--fx-space-2xl) var(--fx-space-md); }
.fx-next-service__live { display: inline-flex; align-items: center; gap: .5em; font-weight: 700; color: var(--fx-color-danger); }
.fx-next-service__live-dot { width: .6em; height: .6em; border-radius: 50%; background: var(--fx-color-danger); animation: fx-pulse 1.4s infinite; }
@keyframes fx-pulse { 0%, 100% { opacity: 1; } 50% { opacity: .3; } }
.fx-next-service__heading { font-weight: 600; }
.fx-next-service__label { color: var(--fx-context-muted, var(--fx-color-muted)); }
.fx-next-service__countdown { display: flex; gap: var(--fx-space-sm); }
.fx-countdown__unit { display: flex; flex-direction: column; align-items: center; min-width: 2.6em; font-family: var(--fx-font-heading); }
.fx-countdown__unit span { font-size: var(--fx-text-h3); font-weight: 700; color: var(--fx-color-brand); line-height: 1; }
.fx-countdown__unit small { color: var(--fx-context-muted, var(--fx-color-muted)); font-size: var(--fx-text-sm); }
.fx-next-service__cta { font-weight: 600; padding: .6em 1.4em; border-radius: var(--fx-radius-sm); background: var(--fx-color-brand); color: var(--fx-color-on-brand); text-decoration: none; }

/* ================= BLOCK: church/verse ================= */

.fx-verse { margin: 0; text-align: center; }
.fx-verse__text { font-family: var(--fx-font-heading); font-size: var(--fx-text-h3); line-height: var(--fx-leading-normal); margin: 0 0 var(--fx-space-sm); }
.fx-verse--style-card { padding: var(--fx-space-lg); background: var(--fx-color-surface-alt); border-radius: var(--fx-radius-md); }
.fx-verse--style-banner { padding: var(--fx-space-xl); background: var(--fx-color-brand); color: var(--fx-color-on-brand); border-radius: var(--fx-radius-md); }
.fx-verse--style-banner .fx-verse__cite { color: var(--fx-color-on-brand); opacity: .85; }
.fx-verse__cite { color: var(--fx-context-muted, var(--fx-color-muted)); font-weight: 600; }

/* ================= BLOCK: church/sermons extras ================= */

.fx-sermons__speaker::before, .fx-sermons__scripture::before { content: "\00b7"; margin-inline-end: .6em; }
.fx-sermons__audio { width: 100%; margin-top: var(--fx-space-xs); }

/* ================= BLOCK: church/ministries ================= */

.fx-ministries__heading { margin-bottom: var(--fx-space-md); }
.fx-ministries__grid { display: grid; grid-template-columns: repeat(var(--fx-ministries-cols, 3), minmax(0, 1fr)); gap: var(--fx-space-lg); }
.fx-ministries__item { display: flex; flex-direction: column; gap: .3em; }
.fx-ministries__image { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: var(--fx-radius-md); }
.fx-ministries__ages { font-size: var(--fx-text-sm); font-weight: 600; color: var(--fx-color-brand); }
.fx-ministries__leader { font-size: var(--fx-text-sm); color: var(--fx-context-muted, var(--fx-color-muted)); }
@container nexpress-page (max-width: 720px) { .fx-ministries__grid { grid-template-columns: 1fr 1fr; } }
@container nexpress-page (max-width: 480px) { .fx-ministries__grid { grid-template-columns: 1fr; } }

/* ================= BLOCK: church/staff ================= */

.fx-staff__heading { margin-bottom: var(--fx-space-md); }
.fx-staff__grid { display: grid; grid-template-columns: repeat(var(--fx-staff-cols, 4), minmax(0, 1fr)); gap: var(--fx-space-lg); text-align: center; }
.fx-staff__item { display: flex; flex-direction: column; align-items: center; gap: .3em; }
.fx-staff__photo, .fx-staff__photo-placeholder { width: 8rem; height: 8rem; object-fit: cover; background: var(--fx-color-surface-alt); }
.fx-staff__grid--shape-circle .fx-staff__photo, .fx-staff__grid--shape-circle .fx-staff__photo-placeholder { border-radius: var(--fx-radius-full); }
.fx-staff__grid--shape-square .fx-staff__photo, .fx-staff__grid--shape-square .fx-staff__photo-placeholder { border-radius: var(--fx-radius-md); }
.fx-staff__grid--shape-portrait .fx-staff__photo, .fx-staff__grid--shape-portrait .fx-staff__photo-placeholder { width: 7rem; height: 9.5rem; border-radius: var(--fx-radius-md); }
.fx-staff__name { font-weight: 700; color: var(--fx-context-heading, var(--fx-color-heading)); }
.fx-staff__name a { text-decoration: none; }
.fx-staff__role { color: var(--fx-color-brand); font-size: var(--fx-text-sm); }
.fx-staff__bio { color: var(--fx-context-text, var(--fx-color-text)); font-size: var(--fx-text-sm); }
.fx-staff__email a { color: var(--fx-context-muted, var(--fx-color-muted)); font-size: var(--fx-text-sm); }
@container nexpress-page (max-width: 720px) { .fx-staff__grid { grid-template-columns: repeat(2, 1fr); } }

/* ================= BLOCK: church/locations ================= */

.fx-locations__heading { margin-bottom: var(--fx-space-md); }
.fx-locations__grid { display: grid; grid-template-columns: repeat(var(--fx-locations-cols, 2), minmax(0, 1fr)); gap: var(--fx-space-lg); }
.fx-locations__item { display: flex; flex-direction: column; gap: var(--fx-space-xs); padding: var(--fx-space-md); background: var(--fx-color-surface-alt); border-radius: var(--fx-radius-md); }
.fx-locations__times { display: flex; flex-direction: column; gap: .2em; font-size: var(--fx-text-sm); }
.fx-locations__directions a { font-weight: 600; color: var(--fx-color-brand); }
@container nexpress-page (max-width: 720px) { .fx-locations__grid { grid-template-columns: 1fr; } }

/* ================= BLOCK: church/newsletter ================= */

.fx-newsletter__heading { margin-bottom: var(--fx-space-xs); }
.fx-newsletter__intro { color: var(--fx-context-muted, var(--fx-color-muted)); margin-bottom: var(--fx-space-sm); }
.fx-newsletter--style-card .fx-newsletter__form { padding: var(--fx-space-lg); background: var(--fx-color-surface-alt); border-radius: var(--fx-radius-md); }
.fx-newsletter--style-banner { padding: var(--fx-space-lg); background: var(--fx-color-brand); color: var(--fx-color-on-brand); border-radius: var(--fx-radius-md); }
.fx-newsletter--style-banner .fx-newsletter__intro { color: var(--fx-color-on-brand); opacity: .85; }
.fx-newsletter__row { display: flex; flex-wrap: wrap; gap: var(--fx-space-sm); align-items: flex-end; }
.fx-newsletter__row .fx-form__field { flex: 1 1 12rem; }
.fx-newsletter__submit { margin-top: 0; }
.fx-newsletter__consent { margin-top: var(--fx-space-sm); font-size: var(--fx-text-sm); opacity: .85; }

/* ================= BLOCK: church/live ================= */

.fx-live__heading { margin-bottom: var(--fx-space-sm); }
.fx-live--ratio-16-9 .fx-embed { aspect-ratio: 16 / 9; }
.fx-live--ratio-4-3 .fx-embed { aspect-ratio: 4 / 3; }
.fx-live__chat { margin-top: var(--fx-space-sm); }
.fx-live__chat a { font-weight: 600; color: var(--fx-color-brand); }
.fx-live__offline { padding: var(--fx-space-xl); text-align: center; background: var(--fx-color-surface-alt); border-radius: var(--fx-radius-md); }
.fx-live__offline-heading { font-weight: 700; font-size: var(--fx-text-lg); color: var(--fx-context-heading, var(--fx-color-heading)); margin-bottom: .3em; }

/* ================= BLOCK: church/events ================= */

.fx-events__heading { margin-bottom: var(--fx-space-md); }
.fx-events__list { display: flex; flex-direction: column; gap: var(--fx-space-md); }
.fx-events__list--layout-grid { display: grid; grid-template-columns: repeat(var(--fx-events-cols, 2), minmax(0, 1fr)); gap: var(--fx-space-lg); }
.fx-events__item { display: flex; gap: var(--fx-space-md); align-items: flex-start; padding-bottom: var(--fx-space-md); border-bottom: 1px solid var(--fx-color-border); }
.fx-events__list--layout-grid .fx-events__item { flex-direction: column; border-bottom: 0; padding: var(--fx-space-md); background: var(--fx-color-surface-alt); border-radius: var(--fx-radius-md); }
.fx-events__list--layout-agenda .fx-events__item { align-items: baseline; }
.fx-events__image { width: 100%; aspect-ratio: 16 / 9; object-fit: cover; border-radius: var(--fx-radius-sm); }
.fx-events__date { flex: none; text-align: center; min-width: 4rem; padding: .4em; border-radius: var(--fx-radius-sm); background: var(--fx-color-surface-alt); }
.fx-events__date-day { display: block; font-weight: 700; color: var(--fx-color-brand); font-size: var(--fx-text-sm); }
.fx-events__date-time { display: block; font-size: .75rem; color: var(--fx-context-muted, var(--fx-color-muted)); }
.fx-events__location { font-size: var(--fx-text-sm); color: var(--fx-context-muted, var(--fx-color-muted)); }
.fx-events__register { display: inline-block; margin-top: .4em; font-weight: 600; color: var(--fx-color-brand); }
@container nexpress-page (max-width: 720px) { .fx-events__list--layout-grid { grid-template-columns: 1fr; } }

/* ================= BLOCK: church/give ================= */

.fx-give__heading { margin-bottom: var(--fx-space-xs); }
.fx-give--style-card .fx-give__form, .fx-give--style-card { padding: var(--fx-space-lg); background: var(--fx-color-surface-alt); border-radius: var(--fx-radius-lg); }
.fx-give--style-banner { padding: var(--fx-space-lg); background: var(--fx-color-brand); color: var(--fx-color-on-brand); border-radius: var(--fx-radius-md); }
.fx-give--style-split { display: grid; grid-template-columns: 1fr 1fr; gap: var(--fx-space-xl); align-items: start; }
.fx-give__cta { display: inline-block; padding: .75em 1.8em; border-radius: var(--fx-radius-sm); background: var(--fx-color-brand); color: var(--fx-color-on-brand); font-weight: 700; text-decoration: none; }
.fx-give__amounts, .fx-give__frequency { border: 0; padding: 0; margin: 0 0 var(--fx-space-md); display: flex; flex-wrap: wrap; gap: .5em; }
.fx-give__amounts legend, .fx-give__frequency legend { width: 100%; font-weight: 600; font-size: var(--fx-text-sm); margin-bottom: .3em; }
.fx-give__amount { display: inline-flex; align-items: center; gap: .4em; padding: .5em 1em; border: 1px solid var(--fx-color-border); border-radius: var(--fx-radius-full); cursor: pointer; }
.fx-give__amount:has(input:checked) { background: var(--fx-color-brand); color: var(--fx-color-on-brand); border-color: var(--fx-color-brand); }
.fx-give__custom-amount { margin-top: .5em; padding: .5em .8em; border: 1px solid var(--fx-color-border); border-radius: var(--fx-radius-sm); width: 100%; max-width: 12rem; }
.fx-give__note { margin-top: var(--fx-space-sm); font-size: var(--fx-text-sm); color: var(--fx-context-muted, var(--fx-color-muted)); }
@container nexpress-page (max-width: 720px) { .fx-give--style-split { grid-template-columns: 1fr; } }

/* ================= BLOCK: church/prayer-request ================= */

.fx-prayer-request__heading { margin-bottom: var(--fx-space-xs); }
.fx-prayer-request__intro { color: var(--fx-context-muted, var(--fx-color-muted)); margin-bottom: var(--fx-space-md); }
.fx-prayer-request__privacy { margin-top: var(--fx-space-sm); font-size: var(--fx-text-sm); color: var(--fx-context-muted, var(--fx-color-muted)); }

/* ================= RESPONSIVE VISIBILITY ================= */

@container nexpress-page (min-width: 1024px) { .fx-hide-desktop { display: none !important; } }
@container nexpress-page (min-width: 721px) and (max-width: 1023px) { .fx-hide-tablet { display: none !important; } }
@container nexpress-page (max-width: 720px) { .fx-hide-mobile { display: none !important; } }

/* ================= REDUCED MOTION ================= */

@media (prefers-reduced-motion: reduce) {
	.fx-anim, .fx-anim__child, .fx-scroll--active .fx-image__img,
	.fx-next-service__live-dot {
		animation: none !important;
		opacity: 1 !important;
		transform: none !important;
		filter: none !important;
		clip-path: none !important;
	}
	.fx-cards__item, .fx-buttons__item, .fx-nav__drawer, .fx-accordion__icon, .fx-effect {
		transition: none !important;
	}
	.fx-effect--lift:hover, .fx-effect--zoom:hover { transform: none !important; }
	* { scroll-behavior: auto !important; }
}

@media (max-width: 720px), (pointer: coarse) {
	.fx-scroll--active .fx-image__img { transform: none !important; }
}

@media print {
	.fx-anim, .fx-anim__child, .fx-scroll--active .fx-image__img {
		animation: none !important; opacity: 1 !important; transform: none !important; filter: none !important; clip-path: none !important;
	}
}

/* ================= PRINT ================= */

@media print {
	.fx-nav__toggle, .fx-nav__drawer, .fx-nav__scrim,
	.fx-search, .fx-embed__trigger, .fx-lightbox,
	.fx-form__form, .fx-give__form, .fx-newsletter__form, .fx-prayer-request__form {
		display: none !important;
	}
	.fx-b { background: none !important; color: #000 !important; box-shadow: none !important; }
	:where(.fx-b) a { color: #000 !important; text-decoration: underline; }
	.fx-embed, .fx-video__native { display: none !important; }
}

/* ================= COVERAGE COMPLETIONS ================= */
/* Explicit rules for every remaining fx- class a template can emit: named
   defaults a template applies unconditionally (no "skip when default"
   guard), plus block-root containers styled only through their children
   above and thus needing no extra declarations here beyond block layout. */

.fx-badge__icon { font-size: .9em; line-height: 1; }
.fx-badge__text { line-height: 1; }
.fx-badge--tone-default { background: var(--fx-color-surface-alt); color: var(--fx-color-text); }

.fx-buttons__icon { font-size: 1em; line-height: 1; }
.fx-buttons--size-md .fx-buttons__item { padding: .65em 1.4em; font-size: var(--fx-text-md); }
.fx-buttons--stack-never { flex-wrap: nowrap; }

.fx-columns--stack-never { flex-wrap: nowrap; }
.fx-columns--ratio-even > .fx-b--core-column { flex: 1 1 0; }
.fx-column--valign-start { justify-content: flex-start; }

.fx-heading--size-auto { --fx-heading-size: initial; }
.fx-heading--tone-default { }
.fx-text--tone-default { }
.fx-text--measure-normal { max-width: 68ch; }

.fx-quote--style-plain { }
.fx-divider--style-line { border-top: 1px solid var(--fx-color-border); }
.fx-list--style-none .fx-list__item { padding-inline-start: 0; }
.fx-list__text { }

.fx-image--fit-cover .fx-image__img { object-fit: cover; }
.fx-image--radius-inherit .fx-image__img { border-radius: var(--fx-radius-md); }
.fx-image--ratio-auto .fx-image__img { aspect-ratio: auto; }
.fx-image__link { display: block; }
.fx-gallery__item--ratio-auto .fx-gallery__image { aspect-ratio: auto; }

.fx-cards { display: block; }
.fx-cards__cell { list-style: none; }
.fx-cards__grid--style-plain .fx-cards__item { padding: 0; }
.fx-cards__icon--plain { background: none; }
.fx-cards__icon--none { display: none; }

.fx-stats--style-plain { }
.fx-table--style-plain td, .fx-table--style-plain th { border-bottom: 0; }

.fx-accordion { display: block; }
.fx-accordion__title { font-weight: inherit; }

.fx-form, .fx-give, .fx-newsletter, .fx-prayer-request { display: block; }
.fx-give__body, .fx-give__amount--custom { }

.fx-posts, .fx-sermons, .fx-events, .fx-calendar, .fx-ministries, .fx-locations,
.fx-staff, .fx-service-times, .fx-live { display: block; }
.fx-posts__body, .fx-sermons__body, .fx-events__body { display: flex; flex-direction: column; gap: .3em; flex: 1; }
.fx-posts__cell, .fx-sermons__cell, .fx-ministries__cell { list-style: none; }
.fx-posts__image-link, .fx-sermons__image-link { display: block; }
.fx-posts__grid--layout-list, .fx-sermons__grid--layout-list { grid-template-columns: 1fr; }
.fx-posts__grid--layout-list .fx-posts__item, .fx-sermons__grid--layout-list .fx-sermons__item { flex-direction: row; align-items: center; gap: var(--fx-space-md); }
.fx-posts__grid--layout-grid, .fx-sermons__grid--layout-grid { }
.fx-posts__grid--layout-feature, .fx-sermons__grid--layout-feature { }
.fx-events__list--layout-list { }
.fx-events__excerpt { color: var(--fx-context-text, var(--fx-color-text)); }
.fx-locations__address { color: var(--fx-context-text, var(--fx-color-text)); }
.fx-live__offline-body { color: var(--fx-context-text, var(--fx-color-text)); }
.fx-service-times__list { }

.fx-nav { }
.fx-nav--layout-row { }
.fx-nav--mobile-inline { }
.fx-nav__item { }
.fx-nav__toggle-label { }

.fx-newsletter--style-inline { }
.fx-search--style-field { }
.fx-verse--style-quote { }
.fx-video--ratio-16-9 { }
.fx-spacer { display: block; }
.fx-section--valign-start { align-items: flex-start; }
.fx-section--content-start { align-items: flex-start; text-align: start; }

/* Count-aware collection grids. Renderers choose tracks only after their
   visible items are known, and give every direct item an explicit span. */
.fx-balanced-grid {
	display: grid;
	grid-template-columns: repeat(var(--fx-balanced-tracks, 1), minmax(0, 1fr));
}
.fx-balanced-grid > .fx-balanced-grid__item {
	min-width: 0;
	grid-column: span var(--fx-balanced-span, 1);
}
@container nexpress-page (max-width: 720px) {
	.fx-balanced-grid {
		grid-template-columns: repeat(var(--fx-balanced-tracks-compact, var(--fx-balanced-tracks, 1)), minmax(0, 1fr));
	}
	.fx-balanced-grid > .fx-balanced-grid__item {
		grid-column: span var(--fx-balanced-span-compact, var(--fx-balanced-span, 1));
	}
}
@container nexpress-page (max-width: 480px) {
	.fx-balanced-grid {
		grid-template-columns: repeat(var(--fx-balanced-tracks-narrow, var(--fx-balanced-tracks-compact, var(--fx-balanced-tracks, 1))), minmax(0, 1fr));
	}
	.fx-balanced-grid > .fx-balanced-grid__item {
		grid-column: span var(--fx-balanced-span-narrow, var(--fx-balanced-span-compact, var(--fx-balanced-span, 1)));
	}
}

/* Components with their own light surface establish a fresh context. Plain
   cards and nested blocks keep inheriting the nearest explicit section scheme. */
.fx-cards__grid--style-card .fx-cards__item,
.fx-stats--style-card .fx-stats__item {
  --fx-context-text: var(--fx-color-text);
  --fx-context-heading: var(--fx-color-heading);
  --fx-context-muted: var(--fx-color-muted);
  --fx-context-link: var(--fx-color-brand);
  --fx-context-accent: var(--fx-color-heading);
  color: var(--fx-context-text);
}
