/* ============================================================
   WILLOW — Theme 06 · the meadow that keeps names
   Demo organization: Willowmere Natural Burial Ground
   Type: Lora (italic-led serif) · Karla (quiet sans)
   Grammar: organic shapes, soft greens, hand-set asymmetry.
   Motion: gentle, drifting, unhurried.
   ============================================================ */

:root {
  --w-cream: oklch(0.97 0.012 105);
  --w-fern: oklch(0.93 0.025 130);
  --w-moss: oklch(0.34 0.05 145);
  --w-ink: oklch(0.3 0.035 140);
  --w-ink-dim: oklch(0.3 0.035 140 / 0.64);
  --w-clay: oklch(0.6 0.09 50);
  --w-line: oklch(0.3 0.035 140 / 0.16);
  --w-serif: "Lora", Georgia, serif;
  --w-sans: "Karla", system-ui, sans-serif;
  --w-ease: cubic-bezier(0.33, 1, 0.68, 1);

  /* ============================================================
     STUDIO BRIDGE — canonical --ad-* palette for the Parish
     Studio back-office reskin. Derived from willow's own
     primitives above. Willow's public face is already a light,
     warm paper ground, so the studio keeps that comfortable
     register for long sessions: cream paper, raised fern-tinted
     panels, deep moss-ink text, and the warm clay + deep moss
     as the two accents. Contrast: --w-ink on --w-cream reads
     well past AAA for body; --ad-txt-dim stays ≥ 4.5:1; the
     clay accent is used for chrome/affordances, the moss for
     primary actions. No new hues — every value reads off the
     theme's own meadow palette so the back-office feels native.
     ============================================================ */
  --ad-surf:     oklch(0.97 0.012 105);        /* cream — the paper ground (= --w-cream) */
  --ad-surf-2:   oklch(0.985 0.008 105);       /* a brighter cream for raised cards/panels */
  --ad-txt:      oklch(0.3 0.035 140);         /* deep moss ink — primary (= --w-ink) */
  --ad-txt-dim:  oklch(0.3 0.035 140 / 0.66);  /* muted moss ink — secondary */
  --ad-accent:   oklch(0.34 0.05 145);         /* deep moss — primary action accent (= --w-moss) */
  --ad-accent-2: oklch(0.55 0.1 50);           /* clay — warm secondary accent (a touch deeper than --w-clay for AA on cream) */
  --ad-rule:     oklch(0.3 0.035 140 / 0.16);  /* hairline / divider on cream (= --w-line) */
  --ad-display:  "Lora", Georgia, serif;       /* italic-led display serif */
  --ad-sans:     "Karla", system-ui, sans-serif; /* body / UI text */
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }

body {
  margin: 0;
  background: var(--w-cream);
  color: var(--w-ink);
  font-family: var(--w-sans);
  font-size: 17px;
  line-height: 1.7;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}

::selection { background: oklch(0.6 0.09 50 / 0.25); }
img { max-width: 100%; display: block; }

/* ---------- editor hooks ---------- */

main > [data-block] {
  --surf: var(--w-cream);
  --txt: var(--w-ink);
  --txt-dim: var(--w-ink-dim);
  --rule: var(--w-line);
  --accent: var(--w-clay);
  /* generic-block accent tracks the per-surface --accent so universal Stats /
     chips / links recolour with the field (clay on cream/fern, gold on moss) */
  --ab-accent: var(--accent);
  background: var(--surf);
  color: var(--txt);
  padding-block: clamp(56px, 9vw, 130px);
}
main > [data-block][data-surface="b"] { --surf: var(--w-fern); }
main > [data-block][data-surface="c"] {
  --surf: var(--w-moss);
  --txt: oklch(0.95 0.015 110);
  --txt-dim: oklch(0.95 0.015 110 / 0.72);
  --rule: oklch(0.95 0.015 110 / 0.2);
  --accent: oklch(0.82 0.08 80);
}
main > [data-block][data-pad="s"]  { padding-block: clamp(28px, 4vw, 56px); }
main > [data-block][data-pad="m"]  { padding-block: clamp(56px, 9vw, 130px); }
main > [data-block][data-pad="l"]  { padding-block: clamp(84px, 12vw, 180px); }
main > [data-block][data-pad="xl"] { padding-block: clamp(110px, 16vw, 240px); }
main > [data-block][data-align="center"] { text-align: center; }

.w-wrap { width: min(1120px, calc(100% - clamp(36px, 6vw, 96px))); margin-inline: auto; }
.w-wrap--narrow { width: min(700px, calc(100% - clamp(36px, 6vw, 96px))); margin-inline: auto; }

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

.w-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  font: 700 12px/1 var(--w-sans);
  letter-spacing: 0.26em;
  text-transform: uppercase;
  color: var(--accent);
  margin: 0 0 24px;
}
.w-eyebrow::before {
  content: "";
  width: 26px; height: 1.5px;
  background: var(--accent);
  border-radius: 2px;
}
[data-align="center"] .w-eyebrow::before { display: none; }

.w-display {
  font-family: var(--w-serif);
  font-weight: 500;
  font-size: clamp(44px, 6.8vw, 96px);
  line-height: 1.08;
  letter-spacing: -0.01em;
  margin: 0;
  text-wrap: balance;
  text-rendering: optimizeLegibility;
  font-feature-settings: "kern", "liga", "calt";
}
.w-display em, .w-h2 em { font-style: italic; font-weight: 400; color: var(--accent); }

.w-h2 {
  font-family: var(--w-serif);
  font-weight: 500;
  font-size: clamp(32px, 4.2vw, 54px);
  line-height: 1.14;
  margin: 0 0 22px;
  text-wrap: balance;
}

.w-h3 { font-family: var(--w-serif); font-weight: 600; font-size: 23px; margin: 0 0 8px; }

.w-lede {
  font-family: var(--w-serif);
  font-style: italic;
  font-size: clamp(19px, 1.9vw, 24px);
  line-height: 1.55;
  margin: 0;
  text-wrap: pretty;
}

.w-body { color: var(--txt-dim); margin: 0; text-wrap: pretty; }
.w-body + .w-body { margin-top: 1em; }

/* ---------- buttons ---------- */

.w-actions { display: flex; gap: 14px; flex-wrap: wrap; }
[data-align="center"] .w-actions { justify-content: center; }
.w-btn {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font: 700 13px/1 var(--w-sans);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  text-decoration: none;
  color: var(--w-cream);
  background: var(--w-moss);
  padding: 17px 30px;
  border-radius: 60% 40% 55% 45% / 50% 55% 45% 50%;
  transition: border-radius 0.6s var(--w-ease), background 0.3s ease, transform 0.6s var(--w-ease);
}
.w-btn:hover { border-radius: 14px; background: var(--w-clay); transform: translateY(-2px); }
.w-btn--ghost { background: transparent; color: var(--txt); box-shadow: inset 0 0 0 1.5px var(--txt); }
/* ---------- focus (willow idiom: a soft clay ring, never a hard outline
   or a left bar — bubble/ring only) ---------- */
:where(.w-btn, .w-header__navlink, .w-header__signin, .w-header nav a,
  .w-header__authlink, .w-header__dd a, .w-foot nav a, .w-item a, .w-hours a):focus-visible {
  outline: none;
  box-shadow: 0 0 0 2px var(--surf, var(--w-cream)), 0 0 0 4px var(--accent, var(--w-clay));
  border-radius: 12px;
}
.w-btn--ghost:focus-visible { box-shadow: inset 0 0 0 1.5px var(--txt), 0 0 0 2px var(--surf, var(--w-cream)), 0 0 0 4px var(--accent, var(--w-clay)); }
.w-btn--ghost:hover { background: var(--txt); color: var(--surf); }
[data-surface="c"] .w-btn { background: var(--w-cream); color: var(--w-moss); }
[data-surface="c"] .w-btn:hover { background: var(--accent); color: var(--w-moss); }

/* ---------- header ---------- */

.w-header {
  position: fixed;
  inset: 0 0 auto;
  z-index: 900;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 20px clamp(22px, 4vw, 52px);
  transition: background 0.4s ease, box-shadow 0.4s ease;
}
.w-header.scrolled {
  background: oklch(0.97 0.012 105 / 0.88);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  box-shadow: 0 1px 0 var(--w-line);
}
.w-header__mark {
  font-family: var(--w-serif);
  font-style: italic;
  font-size: 24px;
  color: var(--w-ink);
  text-decoration: none;
  display: flex;
  align-items: center;
  gap: 10px;
}
.w-header__mark i {
  font-style: normal;
  width: 14px; height: 14px;
  background: var(--w-moss);
  border-radius: 60% 40% 55% 45% / 45% 60% 40% 55%;
}
.w-header nav { display: flex; gap: clamp(16px, 2.5vw, 32px); align-items: center; }
.w-header nav a {
  font: 700 13px/1 var(--w-sans);
  letter-spacing: 0.06em;
  color: var(--w-ink);
  text-decoration: none;
  opacity: 0.78;
}
.w-header nav a:hover { opacity: 1; color: var(--w-clay); }

/* header — nav dropdown (willow idiom: organic card on a sown stem) */
.w-header__navitem { position: relative; display: flex; align-items: center; }
.w-header__navlink {
  font: 700 13px/1 var(--w-sans);
  letter-spacing: 0.06em;
  color: var(--w-ink);
  text-decoration: none;
  opacity: 0.78;
  background: none;
  border: 0;
  padding: 0;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 7px;
}
.w-header__navlink:hover,
.w-header__navlink[aria-expanded="true"] { opacity: 1; color: var(--w-clay); }
.w-header__navlink i {
  width: 6px; height: 6px;
  background: currentColor;
  border-radius: 60% 40% 55% 45% / 45% 60% 40% 55%;
  transition: transform 0.4s var(--w-ease);
}
.w-header__navlink[aria-expanded="true"] i { transform: scale(1.5) rotate(45deg); }
.w-header__dd {
  position: absolute;
  top: calc(100% + 16px);
  left: 50%;
  transform: translateX(-50%);
  min-width: 190px;
  padding: 10px;
  background: var(--w-cream);
  border: 1px solid var(--w-line);
  border-radius: 26px 26px 22px 24px / 24px 22px 26px 22px;
  box-shadow: 0 18px 40px oklch(0.3 0.035 140 / 0.14);
  display: grid;
  gap: 2px;
  z-index: 950;
}
.w-header__dd a {
  display: block;
  font: 600 14px/1.2 var(--w-serif);
  color: var(--w-ink);
  text-decoration: none;
  padding: 9px 14px;
  border-radius: 16px;
  opacity: 0.86;
  transition: background 0.3s ease, color 0.3s ease, opacity 0.3s ease;
}
.w-header__dd a:hover { background: var(--w-fern); color: var(--w-moss); opacity: 1; }

/* header — auth cluster */
.w-header__right { display: flex; align-items: center; gap: clamp(16px, 2.5vw, 28px); }
.w-header__auth { display: flex; align-items: center; gap: 18px; }
.w-header__authlink {
  font: 700 13px/1 var(--w-sans);
  letter-spacing: 0.06em;
  color: var(--w-ink);
  text-decoration: none;
  opacity: 0.78;
}
.w-header__authlink:hover { opacity: 1; color: var(--w-clay); }
.w-header__signin {
  font: 700 12px/1 var(--w-sans);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  text-decoration: none;
  color: var(--w-cream);
  background: var(--w-moss);
  padding: 12px 22px;
  border-radius: 60% 40% 55% 45% / 50% 55% 45% 50%;
  transition: border-radius 0.6s var(--w-ease), background 0.3s ease, transform 0.6s var(--w-ease);
}
.w-header__signin:hover { border-radius: 12px; background: var(--w-clay); transform: translateY(-2px); }

/* header — mobile (willow's own organic burger + drifting panel) */
.w-header__burger {
  display: none;
  flex-direction: column;
  gap: 5px;
  background: none;
  border: 0;
  padding: 6px;
  cursor: pointer;
}
.w-header__burger i {
  width: 24px; height: 2px;
  background: var(--w-ink);
  border-radius: 2px;
  transition: transform 0.4s var(--w-ease), opacity 0.3s ease;
}
.w-header__burger[aria-expanded="true"] i:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.w-header__burger[aria-expanded="true"] i:nth-child(2) { opacity: 0; }
.w-header__burger[aria-expanded="true"] i:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
.w-header__mobile {
  position: fixed;
  inset: 0;
  z-index: 880;
  background: var(--w-cream);
  display: grid;
  grid-template-rows: auto 1fr auto;
  padding: 96px clamp(22px, 7vw, 52px) 40px;
  overflow-y: auto;
}
.w-header__mobile nav { display: grid; gap: 4px; align-content: start; }
.w-header__mobile nav a {
  font-family: var(--w-serif);
  font-size: clamp(28px, 8vw, 46px);
  line-height: 1.1;
  color: var(--w-ink);
  text-decoration: none;
  padding: 10px 0;
  display: flex;
  align-items: baseline;
  gap: 16px;
}
.w-header__mobile nav a small {
  font: 700 13px/1 var(--w-sans);
  letter-spacing: 0.1em;
  color: var(--w-clay);
  opacity: 0.8;
}
.w-header__mobile nav a:hover { color: var(--w-clay); }
.w-header__mobile .w-header__mobsub {
  font-family: var(--w-serif);
  font-size: clamp(19px, 5vw, 26px);
  padding-left: 36px;
  opacity: 0.82;
}
.w-header__mobauth { display: flex; flex-wrap: wrap; gap: 14px; align-items: center; }
.w-header__mobfoot {
  margin-top: 28px;
  font: 700 11px/1.5 var(--w-sans);
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--w-ink-dim);
  display: flex;
  justify-content: space-between;
}

@media (max-width: 860px) {
  .w-header > nav,
  .w-header__auth { display: none; }
  .w-header__burger { display: flex; }
}

/* ---------- hero ---------- */

.w-hero {
  min-height: 100svh;
  display: grid;
  align-items: center;
  padding-top: 90px !important;
  position: relative;
  overflow: hidden;
}
.w-hero__grid {
  display: grid;
  grid-template-columns: 1.05fr 0.95fr;
  gap: clamp(36px, 6vw, 90px);
  align-items: center;
}
.w-blob {
  position: relative;
  aspect-ratio: 1 / 1.12;
  border-radius: 58% 42% 56% 44% / 48% 55% 45% 52%;
  overflow: hidden;
  background: var(--w-fern);
}
.w-blob img { width: 100%; height: 100%; object-fit: cover; }
.w-blob--sway { animation: none; }
@media (prefers-reduced-motion: no-preference) {
  .w-blob--sway { animation: w-sway 14s ease-in-out infinite alternate; }
}
@keyframes w-sway {
  from { border-radius: 58% 42% 56% 44% / 48% 55% 45% 52%; }
  to { border-radius: 45% 55% 44% 56% / 55% 46% 54% 45%; }
}
.w-blob.img-fallback { display: grid; place-items: center; }
.img-fallback::before {
  content: attr(data-alt);
  font: 700 11px/1.5 var(--w-sans);
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--txt-dim);
}

.w-seedline {
  display: flex;
  align-items: center;
  gap: 9px;
  margin-top: 36px;
  color: var(--w-moss);
}
.w-seedline i {
  width: 7px; height: 7px;
  background: currentColor;
  border-radius: 60% 40% 55% 45% / 45% 60% 40% 55%;
  opacity: 0.5;
}
.w-seedline i:nth-child(2n) { opacity: 0.85; width: 5px; height: 5px; }

/* ---------- practice list ---------- */

.w-list { display: flex; flex-direction: column; }
.w-item {
  display: grid;
  grid-template-columns: 64px 280px 1fr;
  gap: clamp(18px, 3vw, 44px);
  align-items: baseline;
  padding: 30px 4px;
  border-top: 1px solid var(--rule);
}
.w-item:last-child { border-bottom: 1px solid var(--rule); }
.w-item__leaf {
  font-family: var(--w-serif);
  font-style: italic;
  font-size: 22px;
  color: var(--accent);
}
.w-item__name { font-family: var(--w-serif); font-weight: 600; font-size: 22px; }
.w-item p { margin: 0; color: var(--txt-dim); font-size: 16px; }

/* ---------- season cards ---------- */

.w-seasons {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}
.w-season {
  background: var(--w-cream);
  border-radius: 26px 26px 60% 60% / 26px 26px 18% 18%;
  padding: 30px 28px 40px;
  text-align: center;
  transition: transform 0.6s var(--w-ease);
}
.w-season:hover { transform: translateY(-6px); }
[data-surface="c"] .w-season { background: oklch(0.95 0.015 110 / 0.08); }
.w-season__when {
  font: 700 11px/1 var(--w-sans);
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: var(--accent);
  display: block;
  margin-bottom: 12px;
}
.w-season p { font-size: 15px; color: var(--txt-dim); margin: 0; }

/* ---------- quote ---------- */

.w-quote {
  font-family: var(--w-serif);
  font-style: italic;
  font-weight: 400;
  font-size: clamp(26px, 3.8vw, 46px);
  line-height: 1.35;
  margin: 0;
  text-wrap: balance;
}
.w-quote-cite {
  display: block;
  font: 700 12px/1 var(--w-sans);
  letter-spacing: 0.26em;
  text-transform: uppercase;
  color: var(--accent);
  margin-top: 28px;
}

/* ---------- hours board (willow:Hours) ----------
   A hand-set "when you may come" board: hairline rows, a soft leaf marker,
   a Lora day, a named place + one quiet line, and the time set in clay
   inscriptional figures (tabular-nums) at the right margin. Same hairline
   grammar as .w-item / .w-quote-cite; no left-accent bars, figures aligned
   with tabular-nums (no monospace). */

.w-hours { display: flex; flex-direction: column; }
.w-hours__row {
  display: grid;
  grid-template-columns: 16px 150px 1fr auto;
  column-gap: clamp(16px, 2.6vw, 36px);
  row-gap: 4px;
  align-items: baseline;
  padding: 26px 4px;
  border-top: 1px solid var(--rule);
  transition: background 0.5s var(--w-ease);
  border-radius: 18px;
}
.w-hours__row:last-child { border-bottom: 1px solid var(--rule); }
.w-hours__row:hover { background: oklch(0.3 0.035 140 / 0.035); }
[data-surface="c"] .w-hours__row:hover { background: oklch(0.95 0.015 110 / 0.05); }
.w-hours__leaf {
  align-self: center;
  width: 9px; height: 9px;
  background: var(--accent);
  border-radius: 60% 40% 55% 45% / 45% 60% 40% 55%;
  opacity: 0.85;
  transition: transform 0.6s var(--w-ease);
}
.w-hours__row:hover .w-hours__leaf { transform: scale(1.25) rotate(20deg); }
.w-hours__day {
  font: 700 11px/1.3 var(--w-sans);
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--accent);
  align-self: center;
}
.w-hours__name {
  font-family: var(--w-serif);
  font-weight: 600;
  font-size: 22px;
  line-height: 1.2;
  color: var(--txt);
  align-self: center;
}
.w-hours__place {
  grid-column: 3;
  margin: 2px 0 0;
  font-size: 15px;
  line-height: 1.5;
  color: var(--txt-dim);
}
.w-hours__time {
  grid-column: 4;
  grid-row: 1 / span 2;
  align-self: center;
  justify-self: end;
  font-family: var(--w-serif);
  font-style: italic;
  font-weight: 500;
  font-size: clamp(18px, 2vw, 22px);
  line-height: 1;
  color: var(--accent);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

@media (max-width: 920px) {
  .w-hours__row {
    grid-template-columns: 14px 1fr auto;
    column-gap: clamp(14px, 3vw, 22px);
  }
  .w-hours__day { grid-column: 2; }
  .w-hours__name { grid-column: 2; grid-row: 2; }
  .w-hours__place { grid-column: 2; grid-row: 3; }
  .w-hours__time { grid-column: 3; grid-row: 1 / span 3; }
  .w-hours__leaf { grid-row: 1; }
}

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

.w-foot {
  background: var(--w-moss);
  color: oklch(0.95 0.015 110 / 0.85);
  text-align: center;
  padding: clamp(56px, 8vw, 100px) 24px 44px;
  border-radius: 50% 50% 0 0 / 38px 38px 0 0;
}
.w-foot b {
  font-family: var(--w-serif);
  font-style: italic;
  font-weight: 500;
  font-size: 30px;
  color: oklch(0.97 0.012 105);
  display: block;
  margin-bottom: 16px;
}
.w-foot p { font-size: 14.5px; margin: 4px 0; opacity: 0.75; }
.w-foot nav { display: flex; justify-content: center; gap: 28px; margin: 24px 0 0; }
.w-foot nav a {
  font: 700 12px/1 var(--w-sans);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: oklch(0.95 0.015 110);
  text-decoration: none;
}
.w-foot nav a:hover { color: oklch(0.82 0.08 80); }

/* ---------- motion ---------- */

@media (prefers-reduced-motion: no-preference) {
  [data-reveal] {
    opacity: 0;
    transform: translateY(30px);
    transition: opacity 1.4s var(--w-ease), transform 1.4s var(--w-ease);
    transition-delay: calc(var(--rd, 0) * 150ms);
  }
  [data-reveal].in { opacity: 1; transform: none; }
}

/* ---------- responsive ---------- */

@media (max-width: 920px) {
  .w-hero__grid { grid-template-columns: 1fr; }
  .w-blob { max-width: 420px; }
  .w-item { grid-template-columns: 40px 1fr; }
  .w-item p { grid-column: 2; }
  .w-seasons { grid-template-columns: 1fr; max-width: 420px; margin-inline: auto; }
}

/* ---------- universal block adapter ----------
   The 22 generic blocks render off --surf/--txt/--txt-dim/--rule/--accent
   (set per [data-block] above) plus --ab-display / --ab-accent and the six
   swatch tokens --ab-sw-1..6. Left undefined the swatches chain off the
   single clay accent → a flat, monochrome set that reads like a generic
   widget dropped onto the meadow. WILLOW is a warm clay + deep moss duotone
   on cream, so curate the swatch palette by hand: moss, clay, ink, and quiet
   fern/sage tints. This keeps generic Stats / Numbered rows / accent chips /
   dividers native to the organic grammar. Set on `main` (default cream/fern
   surfaces); re-curated on the deep-moss [data-surface="c"] field below so
   the swatches stay legible against the dark ground. */
main {
  --ab-display: var(--w-serif);
  --ab-sw-1: var(--w-moss);                       /* deep moss — primary figure */
  --ab-sw-2: var(--w-clay);                       /* clay — the warm accent */
  --ab-sw-3: oklch(0.5 0.07 145);                 /* mid-meadow green between moss and fern */
  --ab-sw-4: oklch(0.7 0.07 80);                  /* soft gold-olive (the dusk note) */
  --ab-sw-5: var(--w-ink-dim);                    /* quiet ink */
  --ab-sw-6: oklch(0.62 0.06 130);                /* pale sage highlight */
}
/* generic universal headings inherit willow's quiet serif register so a plain
   Heading block sits in the same hand-set voice as the signatures (no caps —
   willow is lowercase-led, unlike the inscriptional themes) */
main > [data-block] :is(.ab-h1, .ab-h2, .ab-h3) {
  font-family: var(--w-serif);
  font-weight: 500;
  letter-spacing: -0.01em;
}
/* generic dividers/rules pick up the hairline weight willow uses everywhere */
main > [data-block] .ab-rule,
main > [data-block] hr { border-color: var(--rule); }
/* generic Stats figures read as willow's own inscriptional numerals — Lora,
   tabular-nums (NO monospace), in the meadow accent — to match the Hours board */
main > [data-block] .ab-stat b {
  font-family: var(--w-serif);
  font-weight: 500;
  font-variant-numeric: tabular-nums;
  color: var(--accent);
  letter-spacing: -0.01em;
}
/* generic eyebrows inherit willow's leaf-rule eyebrow tracking */
main > [data-block] .ab-eyebrow { letter-spacing: 0.26em; color: var(--accent); }
/* on the deep-moss field, lift the swatch palette into the lighter register
   so figures/chips don't go dark-on-dark */
main > [data-block][data-surface="c"] {
  --ab-sw-1: oklch(0.95 0.015 110);               /* cream — primary figure on moss */
  --ab-sw-2: oklch(0.82 0.08 80);                 /* warm gold — the accent on moss */
  --ab-sw-3: oklch(0.78 0.06 130);                /* pale fern */
  --ab-sw-4: oklch(0.86 0.05 95);                 /* pale dusk gold */
  --ab-sw-5: oklch(0.95 0.015 110 / 0.7);         /* quiet cream */
  --ab-sw-6: oklch(0.7 0.07 145);                 /* mid sage */
}

:root { --menu-surf: oklch(0.34 0.05 145 / 0.96); --menu-txt: oklch(0.95 0.015 110); --menu-accent: oklch(0.82 0.08 80); --menu-display: "Lora", serif; }

/* depth pass */
.w-blob { box-shadow: 0 40px 80px -48px oklch(0.3 0.035 140 / 0.5); }
.w-blob::after { content: ""; position: absolute; inset: 0; border-radius: inherit; background: radial-gradient(ellipse 60% 40% at 28% 18%, oklch(1 0 0 / 0.28), transparent 70%); pointer-events: none; }
.w-season { box-shadow: 0 1px 2px oklch(0.3 0.035 140 / 0.05), 0 16px 32px -24px oklch(0.3 0.035 140 / 0.3); }

/* ---- signature style variants ---- */
main > [data-block][data-style="2"] .w-list { border: 0; }
main > [data-block][data-style="2"] .w-item { grid-template-columns: 1fr; gap: 8px; border: 1px solid var(--rule) !important; border-radius: 22px; padding: 26px; margin-bottom: 14px; }
main > [data-block][data-style="3"] .w-item { padding-block: 14px; }
/* Practices · style 4 "Two columns" — pack the list into a two-up grid; the
   per-item track collapses to leaf + stacked name/body so neither half overflows. */
main > [data-block][data-style="4"] .w-list { display: grid; grid-template-columns: 1fr 1fr; gap: 0 clamp(28px, 4vw, 56px); }
main > [data-block][data-style="4"] .w-item { grid-template-columns: 40px 1fr; column-gap: 18px; row-gap: 6px; }
main > [data-block][data-style="4"] .w-item p { grid-column: 2; }
/* the top hairline of the first item in the SECOND column would otherwise be
   missing on the visual row boundary — give every item its own top rule */
main > [data-block][data-style="4"] .w-item:nth-child(2) { border-top: 1px solid var(--rule); }
main > [data-block][data-style="2"] .w-seasons { grid-template-columns: 1fr; max-width: 600px; margin-inline: auto; }
/* Seasons · style 2 "Band" — the overline hung in a fixed left column, the
   title + line stacked in the second. Explicit placement so the three children
   don't auto-flow into the wrong cells. */
main > [data-block][data-style="2"] .w-season { display: grid; grid-template-columns: 150px 1fr; gap: 6px 28px; text-align: left; border-radius: 22px; align-items: baseline; padding: 26px 30px; }
main > [data-block][data-style="2"] .w-season__when { grid-column: 1; grid-row: 1 / span 2; align-self: start; margin-bottom: 0; }
main > [data-block][data-style="2"] .w-season .w-h3 { grid-column: 2; grid-row: 1; }
main > [data-block][data-style="2"] .w-season p { grid-column: 2; grid-row: 2; }
main > [data-block][data-style="3"] .w-season { background: transparent; box-shadow: inset 0 0 0 1.5px var(--rule); }
main > [data-block][data-style="2"] .w-hero__grid > .w-blob { order: -1; }
main > [data-block][data-style="3"] .w-blob { border-radius: 50%; aspect-ratio: 1; }
main > [data-block][data-style="4"] .w-hero__grid { grid-template-columns: 1fr; }
main > [data-block][data-style="4"] .w-blob { max-width: 460px; margin-inline: auto; }
/* Quote · style 2 "Hung" — left-set, with a hand-sown leaf row hung in the
   margin above the line (NEVER a left-accent bar — willow's idiom is an
   organic mark, not a rule). */
main > [data-block][data-style="2"] .w-quote { text-align: left; position: relative; padding-left: clamp(0px, 1vw, 8px); }
main > [data-block][data-style="2"] .w-wrap--narrow:has(.w-quote) { width: min(760px, calc(100% - clamp(36px, 6vw, 96px))); }
main > [data-block][data-style="2"] .w-quote::before {
  content: "";
  display: flex;
  width: 44px; height: 12px;
  margin-bottom: 24px;
  background:
    radial-gradient(circle at 6px 6px, var(--accent) 5px, transparent 5px),
    radial-gradient(circle at 22px 6px, var(--accent) 4px, transparent 4px),
    radial-gradient(circle at 36px 6px, var(--accent) 5px, transparent 5px);
  opacity: 0.85;
}
main > [data-block][data-style="2"] .w-quote-cite { text-align: left; }
/* Quote · style 3 "Mark" — an oversized organic quote-mark leaf above the line */
main > [data-block][data-style="3"] .w-quote { position: relative; padding-top: 8px; }
main > [data-block][data-style="3"] .w-quote::before {
  content: "";
  display: block;
  width: 30px; height: 30px;
  margin: 0 auto 18px;
  background: var(--accent);
  opacity: 0.85;
  border-radius: 60% 40% 55% 45% / 45% 60% 40% 55%;
}
main > [data-block][data-style="3"][data-align="left"] .w-quote::before { margin-inline: 0; }
/* Quote · style 4 "Plate" — the line on a soft inset plate */
main > [data-block][data-style="4"] .w-wrap--narrow:has(.w-quote) {
  background: oklch(0.3 0.035 140 / 0.05);
  border-radius: 28px 28px 60px 28px / 28px 28px 24px 28px;
  padding: clamp(40px, 6vw, 72px) clamp(28px, 5vw, 56px);
}
main > [data-block][data-surface="c"][data-style="4"] .w-wrap--narrow:has(.w-quote) { background: oklch(0.95 0.015 110 / 0.08); }

/* Seasons · style 4 "Soft" — borderless washed tiles, no lift, organic radius only */
main > [data-block][data-style="4"] .w-season {
  background: oklch(0.3 0.035 140 / 0.04);
  box-shadow: none;
  border-radius: 40% 40% 30% 30% / 18% 18% 14% 14%;
  padding-block: 36px 44px;
}
main > [data-block][data-surface="b"][data-style="4"] .w-season { background: oklch(0.34 0.05 145 / 0.06); }
main > [data-block][data-surface="c"][data-style="4"] .w-season { background: oklch(0.95 0.015 110 / 0.06); }
main > [data-block][data-style="4"] .w-season:hover { transform: none; }

/* Passage · style 2 "Indent" — left-hung eyebrow, ragged measure */
main > [data-block][data-style="2"] .w-passage { display: grid; grid-template-columns: minmax(120px, 0.5fr) 1fr; gap: clamp(20px, 4vw, 56px); text-align: left; }
main > [data-block][data-style="2"] .w-passage .w-eyebrow { margin: 6px 0 0; }
main > [data-block][data-style="2"] .w-passage > div:last-child { grid-column: 2; }
/* Passage · style 3 "Lede" — drop the eyebrow rule, scale to a quiet statement */
main > [data-block][data-style="3"] .w-passage .w-eyebrow { display: none; }
main > [data-block][data-style="3"] .w-passage .w-body { font-family: var(--w-serif); font-style: italic; font-size: clamp(19px, 2vw, 26px); line-height: 1.5; color: var(--txt); }

/* Hours · style 2 "Open rows" — drop the hairlines, breathe wider, no hover bubble */
main > [data-block][data-style="2"] .w-hours__row { border: 0 !important; padding-block: 18px; border-radius: 0; }
main > [data-block][data-style="2"] .w-hours__row:hover { background: transparent; }
main > [data-block][data-style="2"] .w-hours { gap: 6px; }
/* Hours · style 3 "Two columns" — pack the board into a fern-washed two-up grid of cards */
main > [data-block][data-style="3"] .w-hours { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
main > [data-block][data-style="3"] .w-hours__row {
  border: 1px solid var(--rule) !important;
  border-radius: 22px 22px 40% 22px / 22px 22px 16% 22px;
  padding: 24px 26px;
  background: oklch(0.3 0.035 140 / 0.03);
}
main > [data-block][data-surface="c"][data-style="3"] .w-hours__row { background: oklch(0.95 0.015 110 / 0.05); }
main > [data-block][data-style="3"] .w-hours__row:hover { transform: translateY(-4px); }
/* Hours · style 4 "Plate" — the whole board on one soft inset plate with organic corners */
main > [data-block][data-style="4"] .w-hours {
  background: oklch(0.3 0.035 140 / 0.05);
  border-radius: 28px 28px 60px 28px / 28px 28px 24px 28px;
  padding: clamp(14px, 3vw, 30px) clamp(22px, 4vw, 44px);
}
main > [data-block][data-surface="c"][data-style="4"] .w-hours { background: oklch(0.95 0.015 110 / 0.07); }
main > [data-block][data-style="4"] .w-hours__row { border-top-color: oklch(0.3 0.035 140 / 0.1); }
main > [data-block][data-surface="c"][data-style="4"] .w-hours__row { border-top-color: oklch(0.95 0.015 110 / 0.14); }

/* CTA · style 2 "Card" — the invitation on a moss plane with organic corners */
main > [data-block][data-style="2"] .w-cta {
  background: var(--w-moss);
  color: oklch(0.95 0.015 110);
  border-radius: 48px 48px 80px 48px / 40px 40px 36px 40px;
  padding: clamp(48px, 7vw, 88px) clamp(32px, 6vw, 72px);
}
main > [data-block][data-style="2"] .w-cta .w-eyebrow,
main > [data-block][data-style="2"] .w-cta .w-h2 em { color: oklch(0.82 0.08 80); }
main > [data-block][data-style="2"] .w-cta .w-body { color: oklch(0.95 0.015 110 / 0.78); }
main > [data-block][data-style="2"] .w-cta .w-btn { background: var(--w-cream); color: var(--w-moss); }
main > [data-block][data-style="2"] .w-cta .w-btn:hover { background: oklch(0.82 0.08 80); }
main > [data-block][data-style="2"] .w-cta .w-btn--ghost { background: transparent; color: oklch(0.95 0.015 110); box-shadow: inset 0 0 0 1.5px oklch(0.95 0.015 110 / 0.5); }
main > [data-block][data-style="2"] .w-cta .w-btn--ghost:hover { background: oklch(0.95 0.015 110); color: var(--w-moss); }
/* CTA · style 3 "Inline" — a left-set hairline-ruled invitation row */
main > [data-block][data-style="3"] .w-cta { text-align: left; border-top: 1px solid var(--rule); padding-top: clamp(34px, 5vw, 56px); }
main > [data-block][data-style="3"] .w-cta .w-actions { justify-content: flex-start; }

@media (max-width: 920px) {
  main > [data-block][data-style="4"] .w-list { grid-template-columns: 1fr; }
  main > [data-block][data-style="2"] .w-season { grid-template-columns: 1fr; }
  main > [data-block][data-style="2"] .w-season__when,
  main > [data-block][data-style="2"] .w-season .w-h3,
  main > [data-block][data-style="2"] .w-season p { grid-column: 1; grid-row: auto; }
  main > [data-block][data-style="2"] .w-season__when { margin-bottom: 10px; }
  main > [data-block][data-style="2"] .w-passage { grid-template-columns: 1fr; }
  main > [data-block][data-style="2"] .w-passage > div:last-child { grid-column: 1; }
  main > [data-block][data-style="3"] .w-hours { grid-template-columns: 1fr; }
}

/* mobile scale guard */
@media (max-width: 640px) { .w-display { font-size: clamp(30px, 9vw, 42px); } .w-blob { max-width: 86vw; } }

/* ============================================================
   EXTENDED SIGNATURES — willow's second harvest of blocks.
   Everything below reads off the theme's own primitives
   (--w-* / --surf / --txt / --txt-dim / --rule / --accent) so
   each block recolours natively on the cream / fern / moss
   surfaces. Organic radii, soft drifting lift, hairline rules,
   sown-leaf marks — never a left-accent bar (willow's idiom is
   an organic mark, not a rule). Figures are Lora tabular-nums,
   never monospace.
   ============================================================ */

/* ---------- shared: the quiet inline link ---------- */
.w-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font: 700 13px/1.4 var(--w-sans);
  letter-spacing: 0.06em;
  color: var(--accent);
  text-decoration: none;
  border-bottom: 1.5px solid transparent;
  transition: border-color 0.4s var(--w-ease), color 0.3s ease, gap 0.4s var(--w-ease);
}
.w-link:hover { border-color: var(--accent); gap: 11px; }
.w-link:focus-visible { outline: none; border-radius: 8px; box-shadow: 0 0 0 2px var(--surf, var(--w-cream)), 0 0 0 4px var(--accent); }

/* ---------- shared: a soft heading row with a side photo (events) ---------- */

/* ============================================================
   CLERGY GRID (willow:ClergyGrid)
   ============================================================ */
.w-clergy {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(28px, 4vw, 52px);
}
.w-clergy__card { text-align: center; display: flex; flex-direction: column; align-items: center; }
.w-clergy__frame {
  width: 100%;
  max-width: 240px;
  aspect-ratio: 1 / 1.08;
  margin-bottom: 22px;
}
.w-clergy__name {
  font-family: var(--w-serif);
  font-weight: 600;
  font-size: 22px;
  color: var(--txt);
  text-decoration: none;
  transition: color 0.3s ease;
}
a.w-clergy__name:hover { color: var(--accent); }
.w-clergy__role {
  font: 700 11px/1 var(--w-sans);
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--accent);
  margin: 7px 0 12px;
}
.w-clergy__line { font-size: 15px; color: var(--txt-dim); margin: 0; max-width: 30ch; }
main > [data-block][data-style="2"] .w-clergy__frame { border-radius: 50%; aspect-ratio: 1; animation: none; }
main > [data-block][data-style="3"] .w-clergy { grid-template-columns: repeat(2, 1fr); gap: clamp(32px, 5vw, 64px); }

/* ============================================================
   MEADOW GALLERY (willow:MeadowGallery)
   ============================================================ */
.w-mosaic {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  grid-auto-rows: 200px;
  gap: 16px;
}
.w-mosaic__tile {
  position: relative;
  overflow: hidden;
  border-radius: 32px 32px 60% 32px / 32px 32px 24% 32px;
  background: var(--w-fern);
  display: block;
  box-shadow: 0 1px 2px oklch(0.3 0.035 140 / 0.05), 0 18px 36px -28px oklch(0.3 0.035 140 / 0.4);
}
.w-mosaic__tile img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s var(--w-ease); }
.w-mosaic__tile:hover img { transform: scale(1.05); }
a.w-mosaic__tile:focus-visible { outline: none; box-shadow: 0 0 0 3px var(--surf, var(--w-cream)), 0 0 0 6px var(--accent); }
.w-mosaic__tile:nth-child(1) { grid-column: span 2; grid-row: span 2; border-radius: 40px 40px 50% 40px / 40px 40px 30% 40px; }
.w-mosaic__tile:nth-child(4) { grid-column: span 2; }
.w-mosaic__tile.img-fallback { display: grid; place-items: center; }
main > [data-block][data-style="2"] .w-mosaic { grid-auto-rows: 220px; }
main > [data-block][data-style="2"] .w-mosaic__tile:nth-child(1),
main > [data-block][data-style="2"] .w-mosaic__tile:nth-child(4) { grid-column: span 1; grid-row: span 1; border-radius: 28px 28px 50% 28px / 28px 28px 22% 28px; }
main > [data-block][data-style="3"] .w-mosaic { grid-template-columns: repeat(5, 1fr); grid-auto-rows: 150px; }
main > [data-block][data-style="3"] .w-mosaic__tile { grid-column: span 1 !important; grid-row: span 1 !important; border-radius: 40% 40% 40% 40% / 40% 40% 40% 40%; }

/* ============================================================
   LEAF SPLIT (willow:LeafSplit)
   ============================================================ */
.w-split {
  display: grid;
  grid-template-columns: 0.95fr 1.05fr;
  gap: clamp(36px, 6vw, 88px);
  align-items: center;
}
.w-split__photo { aspect-ratio: 1 / 1.05; }
main > [data-block][data-style="2"] .w-split__photo { order: 2; }
main > [data-block][data-style="3"] .w-split { grid-template-columns: 1fr; gap: 36px; }
main > [data-block][data-style="3"] .w-split__photo { max-width: 460px; margin-inline: auto; }

/* ============================================================
   MEADOW BANNER (willow:MeadowBanner)
   ============================================================ */
.w-banner {
  position: relative;
  min-height: clamp(440px, 64vh, 660px);
  display: grid;
  place-items: center;
  overflow: hidden;
  border-radius: clamp(28px, 4vw, 56px) clamp(28px, 4vw, 56px) 60% 60% / clamp(28px, 4vw, 56px) clamp(28px, 4vw, 56px) 14% 14%;
  isolation: isolate;
}
.w-banner__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: -2; }
.w-banner::before {
  content: "";
  position: absolute; inset: 0; z-index: -1;
  background:
    linear-gradient(to bottom, oklch(0.97 0.012 105 / 0.18), oklch(0.34 0.05 145 / 0.74)),
    radial-gradient(ellipse 80% 60% at 50% 30%, transparent, oklch(0.3 0.035 140 / 0.35));
}
.w-banner__inner { text-align: center; color: oklch(0.97 0.012 105); padding-block: clamp(40px, 7vw, 88px); }
.w-banner__inner .w-eyebrow { color: oklch(0.86 0.07 92); justify-content: center; }
.w-banner__inner .w-eyebrow::before { display: none; }
.w-banner__inner .w-display { color: oklch(0.98 0.012 105); font-size: clamp(36px, 5.6vw, 76px); }
.w-banner__inner .w-display em { color: oklch(0.88 0.07 90); }
.w-banner__inner .w-lede { color: oklch(0.97 0.012 105 / 0.9); }
.w-banner__inner .w-actions { justify-content: center; }
.w-banner__inner .w-btn { background: var(--w-cream); color: var(--w-moss); }
.w-banner__inner .w-btn:hover { background: oklch(0.86 0.07 92); }
.w-banner__inner .w-btn--ghost { background: transparent; color: oklch(0.97 0.012 105); box-shadow: inset 0 0 0 1.5px oklch(0.97 0.012 105 / 0.55); }
.w-banner__inner .w-btn--ghost:hover { background: oklch(0.97 0.012 105); color: var(--w-moss); }
.w-banner__seed { justify-content: center; color: oklch(0.97 0.012 105 / 0.85); margin-top: 32px; }
.w-banner.img-fallback { background: var(--w-fern); }
main > [data-block][data-style="2"] .w-banner::before { background: linear-gradient(to bottom, oklch(0.34 0.05 145 / 0.4), oklch(0.34 0.05 145 / 0.82)); }
main > [data-block][data-style="3"] .w-banner { min-height: clamp(560px, 82vh, 820px); }

/* ============================================================
   GROWING STORY (willow:GrowingStory)
   ============================================================ */
.w-stem__photo { aspect-ratio: 16 / 9; width: 100%; border-radius: 40px 40px 50% 50% / 40px 40px 16% 16%; }
.w-stem { list-style: none; margin: 0; padding: 0; position: relative; }
.w-stem::before {
  content: "";
  position: absolute;
  left: 7px; top: 10px; bottom: 10px;
  width: 2px;
  background: linear-gradient(to bottom, var(--accent), oklch(0.62 0.06 130));
  opacity: 0.5;
  border-radius: 2px;
}
.w-stem__row {
  position: relative;
  display: grid;
  grid-template-columns: 90px 1fr;
  gap: clamp(16px, 3vw, 36px);
  padding: 22px 0 22px 36px;
  align-items: baseline;
}
.w-stem__seed {
  position: absolute;
  left: 1px; top: 30px;
  width: 14px; height: 14px;
  background: var(--accent);
  border: 3px solid var(--surf);
  border-radius: 60% 40% 55% 45% / 45% 60% 40% 55%;
  transition: transform 0.6s var(--w-ease);
}
.w-stem__row:hover .w-stem__seed { transform: scale(1.3) rotate(25deg); }
.w-stem__year {
  font-family: var(--w-serif);
  font-style: italic;
  font-weight: 500;
  font-size: clamp(24px, 2.6vw, 32px);
  color: var(--accent);
  font-variant-numeric: tabular-nums;
}
.w-stem__body .w-h3 { margin-bottom: 4px; }
.w-stem__body .w-body { font-size: 16px; }
main > [data-block][data-style="2"] .w-stem__row { padding-block: 12px; }

/* ============================================================
   MINISTRIES GRID (willow:MinistriesGrid)
   ============================================================ */
.w-min {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 20px;
}
.w-min__card {
  display: grid;
  grid-template-columns: 96px 1fr;
  gap: 22px;
  align-items: center;
  background: var(--w-cream);
  border-radius: 26px 26px 40% 26px / 26px 26px 30% 26px;
  padding: 22px 26px;
  box-shadow: 0 1px 2px oklch(0.3 0.035 140 / 0.05), 0 16px 32px -26px oklch(0.3 0.035 140 / 0.32);
  transition: transform 0.6s var(--w-ease);
}
.w-min__card:hover { transform: translateY(-5px); }
[data-surface="b"] .w-min__card { background: var(--w-cream); }
[data-surface="c"] .w-min__card { background: oklch(0.95 0.015 110 / 0.08); }
.w-min__photo {
  width: 96px; height: 96px;
  border-radius: 58% 42% 56% 44% / 48% 55% 45% 52%;
  overflow: hidden;
  background: var(--w-fern);
}
.w-min__photo img { width: 100%; height: 100%; object-fit: cover; }
.w-min__photo.img-fallback { display: grid; place-items: center; }
.w-min__text .w-h3 { margin-bottom: 4px; }
.w-min__text .w-body { font-size: 15px; margin: 0 0 8px; }
.w-min__card .w-link { font-size: 12px; }
main > [data-block][data-style="2"] .w-min { grid-template-columns: 1fr; max-width: 640px; margin-inline: auto; }
main > [data-block][data-style="3"] .w-min__card { background: transparent; box-shadow: none; border: 1px solid var(--rule); }
main > [data-block][data-style="3"] .w-min__card:hover { transform: none; background: oklch(0.3 0.035 140 / 0.03); }

/* ============================================================
   GENTLE FAQ (willow:GentleFaq)
   ============================================================ */
.w-faq { display: flex; flex-direction: column; }
.w-faq__row { border-top: 1px solid var(--rule); }
.w-faq__row:last-child { border-bottom: 1px solid var(--rule); }
.w-faq__q {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  padding: 26px 4px;
  cursor: pointer;
  list-style: none;
  font-family: var(--w-serif);
  font-weight: 600;
  font-size: clamp(19px, 2vw, 23px);
  color: var(--txt);
  transition: color 0.3s ease;
}
.w-faq__q::-webkit-details-marker { display: none; }
.w-faq__q:hover { color: var(--accent); }
.w-faq__mark {
  flex: none;
  position: relative;
  width: 14px; height: 14px;
  transition: transform 0.5s var(--w-ease);
}
.w-faq__mark::before, .w-faq__mark::after {
  content: "";
  position: absolute;
  background: var(--accent);
  border-radius: 2px;
}
.w-faq__mark::before { inset: 6px 0; }
.w-faq__mark::after { inset: 0 6px; transition: opacity 0.4s ease; }
.w-faq__row[open] .w-faq__mark { transform: rotate(135deg); }
.w-faq__row[open] .w-faq__mark::after { opacity: 0; }
.w-faq__a {
  margin: 0;
  padding: 0 60px 28px 4px;
  color: var(--txt-dim);
  font-size: 16px;
  line-height: 1.65;
  text-wrap: pretty;
}
main > [data-block][data-style="2"] .w-faq__row {
  border: 1px solid var(--rule);
  border-radius: 22px 22px 30px 22px / 22px 22px 22px 22px;
  margin-bottom: 12px;
  padding-inline: 22px;
}
main > [data-block][data-style="2"] .w-faq__row:last-child { border-bottom: 1px solid var(--rule); }
main > [data-block][data-style="2"] .w-faq__a { padding-right: 40px; }

/* ============================================================
   MEADOW STATS (willow:MeadowStats)
   ============================================================ */
.w-stats {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 10px clamp(20px, 4vw, 56px);
  align-items: end;
}
.w-stats__cell { position: relative; padding-left: 0; }
.w-stats__cell + .w-stats__cell::before {
  content: "";
  position: absolute;
  left: clamp(-28px, -2vw, -10px); top: 8px;
  width: 9px; height: 9px;
  background: var(--accent);
  opacity: 0.65;
  border-radius: 60% 40% 55% 45% / 45% 60% 40% 55%;
}
.w-stats__fig {
  display: block;
  font-family: var(--w-serif);
  font-weight: 500;
  font-size: clamp(40px, 5.4vw, 68px);
  line-height: 1;
  letter-spacing: -0.02em;
  color: var(--accent);
  font-variant-numeric: tabular-nums;
}
.w-stats__label {
  display: block;
  margin-top: 12px;
  font-size: 14.5px;
  line-height: 1.5;
  color: var(--txt-dim);
  max-width: 22ch;
}
main > [data-block][data-style="2"] .w-stats { grid-template-columns: 1fr; gap: 0; max-width: 480px; }
main > [data-block][data-style="2"] .w-stats__cell {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 6px 24px;
  align-items: baseline;
  padding: 22px 4px;
  border-top: 1px solid var(--rule);
}
main > [data-block][data-style="2"] .w-stats__cell:last-child { border-bottom: 1px solid var(--rule); }
main > [data-block][data-style="2"] .w-stats__cell + .w-stats__cell::before { display: none; }
main > [data-block][data-style="2"] .w-stats__fig { font-size: clamp(32px, 4vw, 46px); }
main > [data-block][data-style="2"] .w-stats__label { margin-top: 0; max-width: none; }

/* ============================================================
   GIVING CALL (willow:GivingCall)
   ============================================================ */
.w-give {
  display: grid;
  grid-template-columns: 0.85fr 1.15fr;
  gap: clamp(32px, 5vw, 72px);
  align-items: center;
  background: var(--w-cream);
  border-radius: 40px 40px 70px 40px / 36px 36px 36px 36px;
  padding: clamp(28px, 4vw, 52px);
  box-shadow: 0 1px 2px oklch(0.3 0.035 140 / 0.05), 0 24px 50px -36px oklch(0.3 0.035 140 / 0.4);
}
[data-surface="b"] .w-give { background: oklch(0.985 0.008 105); }
[data-surface="c"] .w-give { background: oklch(0.95 0.015 110 / 0.08); }
.w-give__photo { aspect-ratio: 1 / 1.04; }
main > [data-block][data-style="2"] .w-give { background: var(--w-moss); color: oklch(0.95 0.015 110); }
main > [data-block][data-style="2"] .w-give .w-eyebrow,
main > [data-block][data-style="2"] .w-give .w-h2 em { color: oklch(0.82 0.08 80); }
main > [data-block][data-style="2"] .w-give .w-body { color: oklch(0.95 0.015 110 / 0.78); }
main > [data-block][data-style="2"] .w-give .w-btn { background: var(--w-cream); color: var(--w-moss); }
main > [data-block][data-style="2"] .w-give .w-btn:hover { background: oklch(0.82 0.08 80); }
main > [data-block][data-style="2"] .w-give .w-btn--ghost { background: transparent; color: oklch(0.95 0.015 110); box-shadow: inset 0 0 0 1.5px oklch(0.95 0.015 110 / 0.5); }
main > [data-block][data-style="2"] .w-give .w-btn--ghost:hover { background: oklch(0.95 0.015 110); color: var(--w-moss); }
main > [data-block][data-style="3"] .w-give { background: transparent; box-shadow: none; padding: 0; border-radius: 0; }

/* ============================================================
   VOICES (willow:Voices)
   ============================================================ */
.w-voices {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}
.w-voices__card {
  margin: 0;
  background: var(--w-cream);
  border-radius: 28px 28px 50px 28px / 28px 28px 26px 28px;
  padding: 32px 30px 28px;
  display: flex;
  flex-direction: column;
  gap: 22px;
  box-shadow: 0 1px 2px oklch(0.3 0.035 140 / 0.05), 0 16px 32px -26px oklch(0.3 0.035 140 / 0.3);
  transition: transform 0.6s var(--w-ease);
}
.w-voices__card:hover { transform: translateY(-5px); }
[data-surface="c"] .w-voices__card { background: oklch(0.95 0.015 110 / 0.08); }
.w-voices__quote {
  margin: 0;
  font-family: var(--w-serif);
  font-style: italic;
  font-size: clamp(18px, 1.9vw, 21px);
  line-height: 1.5;
  color: var(--txt);
  text-wrap: pretty;
  flex: 1;
}
.w-voices__who { display: flex; align-items: center; gap: 14px; }
.w-voices__avatar {
  flex: none;
  width: 52px; height: 52px;
  border-radius: 58% 42% 56% 44% / 48% 55% 45% 52%;
  overflow: hidden;
  background: var(--w-fern);
}
.w-voices__avatar img { width: 100%; height: 100%; object-fit: cover; }
.w-voices__avatar.img-fallback::before { content: ""; }
.w-voices__meta { display: flex; flex-direction: column; gap: 2px; }
.w-voices__name { font-family: var(--w-serif); font-weight: 600; font-size: 16px; color: var(--txt); }
.w-voices__role { font: 700 11px/1.2 var(--w-sans); letter-spacing: 0.12em; text-transform: uppercase; color: var(--accent); }
main > [data-block][data-style="2"] .w-voices { grid-template-columns: 1fr; max-width: 680px; margin-inline: auto; }
main > [data-block][data-style="2"] .w-voices__card:nth-child(n+2) { display: none; }
main > [data-block][data-style="2"] .w-voices__quote { font-size: clamp(24px, 3vw, 32px); }
main > [data-block][data-style="3"] .w-voices { grid-template-columns: repeat(2, 1fr); }

/* ============================================================
   FEAST HIGHLIGHT (willow:FeastHighlight)
   ============================================================ */
.w-feast {
  display: grid;
  grid-template-columns: 0.8fr 1.2fr;
  gap: clamp(32px, 5vw, 72px);
  align-items: center;
}
.w-feast__icon { aspect-ratio: 1 / 1.1; }
.w-feast__chip {
  display: inline-block;
  margin: 4px 0 18px;
  font: 700 11px/1 var(--w-sans);
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--accent);
  background: oklch(0.3 0.035 140 / 0.05);
  padding: 8px 16px;
  border-radius: 40px 40px 40px 14px / 40px 40px 40px 40px;
}
[data-surface="c"] .w-feast__chip { background: oklch(0.95 0.015 110 / 0.1); }
main > [data-block][data-style="2"] .w-feast__icon { order: 2; }
main > [data-block][data-style="3"] .w-feast { background: var(--w-moss); color: oklch(0.95 0.015 110); border-radius: 48px 48px 80px 48px / 40px 40px 36px 40px; padding: clamp(28px, 4vw, 52px); }
main > [data-block][data-style="3"] .w-feast .w-eyebrow,
main > [data-block][data-style="3"] .w-feast .w-h2 em { color: oklch(0.82 0.08 80); }
main > [data-block][data-style="3"] .w-feast .w-body { color: oklch(0.95 0.015 110 / 0.8); }
main > [data-block][data-style="3"] .w-feast .w-link { color: oklch(0.82 0.08 80); }
main > [data-block][data-style="3"] .w-feast__chip { background: oklch(0.95 0.015 110 / 0.12); color: oklch(0.86 0.07 90); }

/* ============================================================
   VISIT BAND (willow:VisitBand)
   ============================================================ */
.w-visit {
  display: grid;
  grid-template-columns: 1.05fr 0.95fr;
  gap: clamp(32px, 5vw, 72px);
  align-items: center;
}
.w-visit__map { aspect-ratio: 4 / 3; border-radius: 40px 40px 60px 40px / 36px 36px 36px 36px; }
main > [data-block][data-style="2"] .w-visit__map { order: 2; }
.w-visit__list { margin: 0; display: flex; flex-direction: column; }
.w-visit__pair {
  display: grid;
  grid-template-columns: 130px 1fr;
  gap: clamp(14px, 2vw, 28px);
  padding: 18px 4px;
  border-top: 1px solid var(--rule);
  align-items: baseline;
}
.w-visit__pair:last-child { border-bottom: 1px solid var(--rule); }
.w-visit__label {
  font: 700 11px/1.4 var(--w-sans);
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--accent);
  margin: 0;
}
.w-visit__value { margin: 0; font-size: 16px; color: var(--txt); line-height: 1.5; }

/* ============================================================
   NEWSLETTER (willow:Newsletter)
   ============================================================ */
.w-news {
  text-align: center;
  background: var(--w-cream);
  border-radius: 40px 40px 70px 40px / 36px 36px 32px 36px;
  padding: clamp(40px, 6vw, 72px) clamp(28px, 5vw, 60px);
  box-shadow: 0 1px 2px oklch(0.3 0.035 140 / 0.05), 0 24px 50px -36px oklch(0.3 0.035 140 / 0.36);
}
[data-surface="b"] .w-news { background: oklch(0.985 0.008 105); }
[data-surface="c"] .w-news { background: oklch(0.95 0.015 110 / 0.08); }
.w-news .w-eyebrow { justify-content: center; }
.w-news .w-eyebrow::before { display: none; }
.w-news__form {
  display: flex;
  gap: 10px;
  max-width: 460px;
  margin-inline: auto;
  flex-wrap: wrap;
  justify-content: center;
}
.w-news__input {
  flex: 1 1 240px;
  min-width: 0;
  font: 400 16px/1 var(--w-sans);
  color: var(--txt);
  background: var(--surf);
  border: 1.5px solid var(--rule);
  border-radius: 40px;
  padding: 16px 22px;
  transition: border-color 0.3s ease, box-shadow 0.3s ease;
}
.w-news__input::placeholder { color: var(--txt-dim); }
.w-news__input:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px oklch(0.6 0.09 50 / 0.16); }
.w-news .w-seedline { justify-content: center; margin-top: 30px; }
main > [data-block][data-style="2"] .w-news { background: transparent; box-shadow: none; padding-inline: 0; }
main > [data-block][data-style="3"] .w-news { background: var(--w-moss); color: oklch(0.95 0.015 110); }
main > [data-block][data-style="3"] .w-news .w-eyebrow,
main > [data-block][data-style="3"] .w-news .w-h2 em { color: oklch(0.82 0.08 80); }
main > [data-block][data-style="3"] .w-news .w-lede { color: oklch(0.95 0.015 110 / 0.82); }
main > [data-block][data-style="3"] .w-news__input { background: oklch(0.95 0.015 110 / 0.1); border-color: oklch(0.95 0.015 110 / 0.3); color: oklch(0.97 0.012 105); }
main > [data-block][data-style="3"] .w-news__input::placeholder { color: oklch(0.95 0.015 110 / 0.6); }
main > [data-block][data-style="3"] .w-news .w-btn { background: var(--w-cream); color: var(--w-moss); }
main > [data-block][data-style="3"] .w-news .w-btn:hover { background: oklch(0.82 0.08 80); }

/* ============================================================
   PULL QUOTE (willow:PullQuote)
   ============================================================ */
.w-pull { text-align: center; }
.w-pull__mark {
  display: block;
  width: 48px; height: 13px;
  margin: 0 auto 26px;
  background:
    radial-gradient(circle at 7px 7px, var(--accent) 6px, transparent 6px),
    radial-gradient(circle at 24px 7px, var(--accent) 4.5px, transparent 4.5px),
    radial-gradient(circle at 41px 7px, var(--accent) 6px, transparent 6px);
  opacity: 0.85;
}
.w-pull__quote {
  margin: 0;
  font-family: var(--w-serif);
  font-style: italic;
  font-weight: 400;
  font-size: clamp(24px, 3.4vw, 42px);
  line-height: 1.36;
  color: var(--txt);
  text-wrap: balance;
}
main > [data-block][data-style="2"] .w-pull__quote { color: var(--accent); }
main > [data-block][data-style="3"] .w-pull {
  background: oklch(0.3 0.035 140 / 0.05);
  border-radius: 28px 28px 60px 28px / 28px 28px 24px 28px;
  padding: clamp(40px, 6vw, 72px) clamp(28px, 5vw, 56px);
}
main > [data-block][data-surface="c"][data-style="3"] .w-pull { background: oklch(0.95 0.015 110 / 0.08); }

/* ============================================================
   FEATURE CARDS (willow:FeatureCards)
   ============================================================ */
.w-feat {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}
.w-feat__card {
  display: flex;
  flex-direction: column;
  background: var(--w-cream);
  border-radius: 28px 28px 50px 28px / 28px 28px 24px 28px;
  overflow: hidden;
  text-decoration: none;
  color: inherit;
  box-shadow: 0 1px 2px oklch(0.3 0.035 140 / 0.05), 0 18px 36px -28px oklch(0.3 0.035 140 / 0.34);
  transition: transform 0.6s var(--w-ease);
}
.w-feat__card:hover { transform: translateY(-6px); }
[data-surface="c"] .w-feat__card { background: oklch(0.95 0.015 110 / 0.08); }
.w-feat__photo { display: block; aspect-ratio: 4 / 3; overflow: hidden; background: var(--w-fern); }
.w-feat__photo img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s var(--w-ease); }
.w-feat__card:hover .w-feat__photo img { transform: scale(1.06); }
.w-feat__photo.img-fallback { display: grid; place-items: center; }
.w-feat__body { display: flex; flex-direction: column; gap: 8px; padding: 26px 28px 30px; flex: 1; }
.w-feat__body .w-h3 { margin: 0; }
.w-feat__line { color: var(--txt-dim); font-size: 15.5px; line-height: 1.6; }
.w-feat__body .w-link { margin-top: auto; padding-top: 6px; }
a.w-feat__card:focus-visible { outline: none; box-shadow: 0 0 0 3px var(--surf, var(--w-cream)), 0 0 0 6px var(--accent); }
main > [data-block][data-style="2"] .w-feat { grid-template-columns: repeat(2, 1fr); }
main > [data-block][data-style="3"] .w-feat { grid-template-columns: repeat(4, 1fr); }

/* ============================================================
   SERMON STRIP (willow:SermonStrip)
   ============================================================ */
.w-sermon { display: flex; flex-direction: column; }
.w-sermon__row {
  display: grid;
  grid-template-columns: 92px 1fr auto;
  gap: clamp(16px, 2.6vw, 32px);
  align-items: center;
  padding: 22px 4px;
  border-top: 1px solid var(--rule);
  border-radius: 18px;
  transition: background 0.5s var(--w-ease);
}
.w-sermon__row:last-child { border-bottom: 1px solid var(--rule); }
.w-sermon__row:hover { background: oklch(0.3 0.035 140 / 0.035); }
[data-surface="c"] .w-sermon__row:hover { background: oklch(0.95 0.015 110 / 0.05); }
.w-sermon__thumb {
  width: 92px; height: 68px;
  border-radius: 18px 18px 30% 18px / 18px 18px 24% 18px;
  overflow: hidden;
  background: var(--w-fern);
  display: block;
}
.w-sermon__thumb img { width: 100%; height: 100%; object-fit: cover; }
.w-sermon__thumb.img-fallback { display: grid; place-items: center; }
.w-sermon__text .w-h3 { margin: 0 0 3px; font-size: 20px; }
.w-sermon__meta { font: 700 11px/1.3 var(--w-sans); letter-spacing: 0.12em; text-transform: uppercase; color: var(--txt-dim); }
.w-sermon__play {
  font: 700 12px/1 var(--w-sans);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--accent);
  text-decoration: none;
  white-space: nowrap;
  transition: gap 0.4s var(--w-ease), opacity 0.3s ease;
}
.w-sermon__play:hover { opacity: 0.7; }
main > [data-block][data-style="2"] .w-sermon__row {
  border: 1px solid var(--rule) !important;
  border-radius: 22px 22px 34px 22px / 22px 22px 22px 22px;
  padding: 18px 22px;
  margin-bottom: 12px;
}
main > [data-block][data-style="2"] .w-sermon__row:hover { background: transparent; transform: translateY(-3px); }

/* ============================================================
   SACRAMENT CARDS (willow:SacramentCards)
   ============================================================ */
.w-sac {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 20px;
}
.w-sac__card {
  display: grid;
  grid-template-columns: 84px 1fr;
  gap: 22px;
  align-items: start;
  background: var(--w-cream);
  border-radius: 26px 26px 44px 26px / 26px 26px 28px 26px;
  padding: 26px 28px;
  box-shadow: 0 1px 2px oklch(0.3 0.035 140 / 0.05), 0 16px 32px -26px oklch(0.3 0.035 140 / 0.3);
  transition: transform 0.6s var(--w-ease);
}
.w-sac__card:hover { transform: translateY(-5px); }
[data-surface="c"] .w-sac__card { background: oklch(0.95 0.015 110 / 0.08); }
.w-sac__icon {
  width: 84px; height: 84px;
  border-radius: 58% 42% 56% 44% / 48% 55% 45% 52%;
  overflow: hidden;
  background: var(--w-fern);
  display: block;
}
.w-sac__icon img { width: 100%; height: 100%; object-fit: cover; }
.w-sac__icon.img-fallback { display: grid; place-items: center; }
.w-sac__text .w-h3 { margin: 4px 0 6px; }
.w-sac__text .w-body { font-size: 15px; margin: 0 0 10px; }
.w-sac__card .w-link { font-size: 12px; }
main > [data-block][data-style="2"] .w-sac { grid-template-columns: 1fr; max-width: 640px; margin-inline: auto; }
main > [data-block][data-style="3"] .w-sac__card { background: transparent; box-shadow: none; border: 1px solid var(--rule); }
main > [data-block][data-style="3"] .w-sac__card:hover { transform: none; background: oklch(0.3 0.035 140 / 0.03); }

/* ============================================================
   PRESSED STRIP (willow:PressedStrip) — theme-native showpiece
   ============================================================ */
.w-pressed {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: clamp(18px, 3vw, 36px);
}
.w-pressed__tile {
  text-align: center;
  text-decoration: none;
  color: inherit;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 16px;
}
.w-pressed__disc {
  width: 100%;
  max-width: 150px;
  aspect-ratio: 1;
  border-radius: 50%;
  transition: transform 0.7s var(--w-ease), box-shadow 0.7s var(--w-ease);
}
.w-pressed__tile:hover .w-pressed__disc { transform: translateY(-6px) rotate(-3deg); }
.w-pressed__disc img { width: 100%; height: 100%; object-fit: cover; }
.w-pressed__caption {
  font-family: var(--w-serif);
  font-style: italic;
  font-size: 17px;
  color: var(--txt);
}
a.w-pressed__tile:hover .w-pressed__caption { color: var(--accent); }
a.w-pressed__tile:focus-visible { outline: none; }
a.w-pressed__tile:focus-visible .w-pressed__disc { box-shadow: 0 0 0 3px var(--surf, var(--w-cream)), 0 0 0 6px var(--accent); }
main > [data-block][data-style="2"] .w-pressed { grid-template-columns: repeat(3, 1fr); }
main > [data-block][data-style="2"] .w-pressed__disc { max-width: 230px; }
main > [data-block][data-style="3"] .w-pressed { grid-template-columns: repeat(3, 1fr); }

/* ============================================================
   EVENTS LIST (willow:EventsList)
   ============================================================ */
.w-events__head {
  display: grid;
  grid-template-columns: 1fr 280px;
  gap: clamp(28px, 5vw, 64px);
  align-items: end;
}
.w-events__photo { width: 280px; aspect-ratio: 4 / 3; margin-left: auto; }
.w-events { display: flex; flex-direction: column; }
.w-events__row {
  display: grid;
  grid-template-columns: 74px 1fr auto;
  gap: clamp(16px, 2.6vw, 36px);
  align-items: center;
  padding: 24px 4px;
  border-top: 1px solid var(--rule);
  border-radius: 18px;
  transition: background 0.5s var(--w-ease);
}
.w-events__row:last-child { border-bottom: 1px solid var(--rule); }
.w-events__row:hover { background: oklch(0.3 0.035 140 / 0.035); }
[data-surface="c"] .w-events__row:hover { background: oklch(0.95 0.015 110 / 0.05); }
.w-events__date {
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  line-height: 1;
}
.w-events__mon {
  font: 700 11px/1 var(--w-sans);
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--accent);
  margin-bottom: 6px;
}
.w-events__day {
  font-family: var(--w-serif);
  font-style: italic;
  font-weight: 500;
  font-size: clamp(30px, 3.4vw, 40px);
  color: var(--txt);
  font-variant-numeric: tabular-nums;
}
.w-events__text .w-h3 { margin: 0 0 3px; }
.w-events__meta { margin: 0; font-size: 15px; color: var(--txt-dim); line-height: 1.5; }
.w-events__link {
  font: 700 12px/1 var(--w-sans);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--accent);
  text-decoration: none;
  white-space: nowrap;
  transition: opacity 0.3s ease;
}
.w-events__link:hover { opacity: 0.7; }
main > [data-block][data-style="2"] .w-events { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
main > [data-block][data-style="2"] .w-events__row {
  border: 1px solid var(--rule) !important;
  border-radius: 22px 22px 36% 22px / 22px 22px 18% 22px;
  padding: 22px 24px;
  background: oklch(0.3 0.035 140 / 0.03);
}
main > [data-block][data-surface="c"][data-style="2"] .w-events__row { background: oklch(0.95 0.015 110 / 0.05); }
main > [data-block][data-style="2"] .w-events__row:hover { transform: translateY(-4px); }
main > [data-block][data-style="3"] .w-events {
  background: oklch(0.3 0.035 140 / 0.05);
  border-radius: 28px 28px 60px 28px / 28px 28px 24px 28px;
  padding: clamp(12px, 2.5vw, 26px) clamp(20px, 4vw, 40px);
}
main > [data-block][data-surface="c"][data-style="3"] .w-events { background: oklch(0.95 0.015 110 / 0.07); }

/* ============================================================
   EXTENDED SIGNATURES — responsive
   ============================================================ */
@media (max-width: 920px) {
  .w-clergy { grid-template-columns: 1fr; max-width: 380px; margin-inline: auto; }
  .w-mosaic { grid-template-columns: repeat(2, 1fr); grid-auto-rows: 180px; }
  .w-mosaic__tile:nth-child(1) { grid-column: span 2; }
  .w-mosaic__tile:nth-child(4) { grid-column: span 1; }
  main > [data-block][data-style="3"] .w-mosaic { grid-template-columns: repeat(2, 1fr); }
  .w-split,
  .w-give,
  .w-feast,
  .w-visit,
  .w-events__head { grid-template-columns: 1fr; }
  .w-split__photo,
  .w-give__photo,
  .w-feast__icon,
  .w-visit__map { max-width: 460px; margin-inline: auto; order: -1; }
  main > [data-block][data-style="2"] .w-split__photo,
  main > [data-block][data-style="2"] .w-give .w-give__photo,
  main > [data-block][data-style="2"] .w-feast__icon,
  main > [data-block][data-style="2"] .w-visit__map { order: -1; }
  main > [data-block][data-style="3"] .w-feast { color: oklch(0.95 0.015 110); }
  .w-events__photo { width: 100%; max-width: 460px; margin-inline: auto; order: -1; }
  .w-min,
  .w-sac { grid-template-columns: 1fr; max-width: 560px; margin-inline: auto; }
  .w-voices,
  .w-feat { grid-template-columns: repeat(2, 1fr); }
  main > [data-block][data-style="3"] .w-feat,
  main > [data-block][data-style="2"] .w-feat { grid-template-columns: repeat(2, 1fr); }
  .w-pressed { grid-template-columns: repeat(3, 1fr); }
  .w-stats { grid-template-columns: repeat(2, 1fr); gap: 28px clamp(24px, 5vw, 48px); }
  .w-stats__cell:nth-child(2n+1) + .w-stats__cell::before { display: none; }
  main > [data-block][data-style="2"] .w-events { grid-template-columns: 1fr; }
}

@media (max-width: 560px) {
  .w-mosaic { grid-template-columns: 1fr; grid-auto-rows: 220px; }
  .w-mosaic__tile:nth-child(1) { grid-column: span 1; grid-row: span 1; }
  .w-voices,
  .w-feat { grid-template-columns: 1fr; max-width: 420px; margin-inline: auto; }
  main > [data-block][data-style="3"] .w-feat,
  main > [data-block][data-style="2"] .w-feat { grid-template-columns: 1fr; }
  .w-pressed { grid-template-columns: repeat(2, 1fr); }
  .w-stats { grid-template-columns: 1fr; }
  .w-stats__cell + .w-stats__cell::before { display: none; }
  .w-min__card { grid-template-columns: 1fr; text-align: left; }
  .w-min__photo { margin-bottom: 4px; }
  .w-sac__card { grid-template-columns: 1fr; }
  .w-sermon__row { grid-template-columns: 72px 1fr; }
  .w-sermon__play { grid-column: 2; justify-self: start; padding-top: 4px; }
  .w-events__row { grid-template-columns: 60px 1fr; }
  .w-events__link { grid-column: 2; justify-self: start; padding-top: 4px; }
  .w-visit__pair { grid-template-columns: 1fr; gap: 4px; }
}
