/* United Way of Rhode Island — interior pages.
   Loaded after styles.v2.css + mobile.css. Interior pages are built almost
   entirely from the landing-page components (.uw-hero, .uw-pillars, .uw-stats,
   .uw-statcirc, .uw-workcard, .uw-join, .uw-article, .uw-footer …). This file
   only adds: the breadcrumb, a min-height trim for the component-free hero,
   a long-form prose block in the same type system, and a couple of guards for
   components that assume a specific neighbour on the landing page. */

/* ── breadcrumb ───────────────────────────────────────────────────────── */
.uw-crumb {
  background: #fff;
  border-bottom: 1px solid rgba(33, 41, 107, .1);
}
.uw-crumb__in {
  max-width: var(--uw-max);
  margin: 0 auto;
  padding: 14px var(--uw-gut);
  font-family: var(--uw-body);
  font-size: clamp(12px, .95vw, 14px);
  font-weight: 700;
  letter-spacing: .01em;
  text-transform: uppercase;
}
.uw-crumb__in a { color: var(--uw-blue); text-decoration: none; }
.uw-crumb__in a:hover { text-decoration: underline; }
.uw-crumb__in span { color: rgba(33, 41, 107, .55); }
.uw-crumb__in b { color: var(--uw-navy); font-weight: 700; }

/* ── hero without the collage ─────────────────────────────────────────── */
.uw-hero--sub .uw-hero__grid {
  min-height: 0;
  padding: clamp(34px, 3.4vw, 58px) 0 clamp(28px, 3vw, 46px);
  grid-template-columns: 1fr;          /* no empty right column */
}
.uw-hero--sub .uw-hero__text { max-width: 62rem; }
.uw-hero--sub .uw-hero p { margin: clamp(16px, 1.8vw, 26px) 0 clamp(16px, 1.8vw, 24px); max-width: 56ch; }
/* the landing h1 is sized off a container query and pinned to one nowrap line
   per span — right for a two-word headline, wrong for "Building Economic
   Security". Interior titles get a smaller clamp and may wrap. */
.uw-hero--sub .uw-hero__text { container-type: normal; }
.uw-hero--sub h1 {
  font-size: clamp(34px, 6.6vw, 68px);
  line-height: .98;
}
.uw-hero--sub h1 span { white-space: normal; }
@supports not (width: 1cqw) { .uw-hero--sub h1 { font-size: clamp(34px, 6.6vw, 68px); } }
.uw-hero--sub .uw-hero__eyebrow {
  font-family: var(--uw-display);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .06em;
  font-size: clamp(13px, 1.05vw, 18px);
  color: var(--uw-blue);
  margin-bottom: clamp(14px, 1.4vw, 20px);
}
.uw-hero--sub .uw-hero__cta { display: flex; flex-wrap: wrap; gap: 14px; }
@media (max-width: 900px) {
  .uw-hero--sub .uw-hero__grid { grid-template-columns: 1fr; }
}

/* ── long-form prose, in the brand type system ───────────────────────── */
.uw-rich { background: #fff; padding: clamp(38px, 3.8vw, 60px) 0; }
.uw-rich .uw-wrap { max-width: min(var(--uw-max), 1180px); }
.uw-rich__col { max-width: 62rem; }
.uw-rich h2 {
  font-family: var(--uw-display);
  font-weight: 700;
  text-transform: uppercase;
  color: var(--uw-navy);
  font-size: clamp(26px, 3vw, 44px);
  line-height: .98;
  margin: clamp(26px, 2.6vw, 40px) 0 clamp(12px, 1.2vw, 18px);
}
.uw-rich h2:first-child { margin-top: 0; }
.uw-rich h3 {
  font-family: var(--uw-display);
  font-weight: 700;
  text-transform: uppercase;
  color: var(--uw-navy);
  font-size: clamp(19px, 1.7vw, 25px);
  line-height: 1.05;
  margin: clamp(20px, 2vw, 30px) 0 clamp(10px, 1vw, 14px);
}
.uw-rich p,
.uw-rich li {
  font-family: var(--uw-body);
  font-weight: 400;
  font-size: clamp(16px, 1.12vw, 19px);
  line-height: 1.62;
  color: var(--uw-ink);
}
.uw-rich p + p { margin-top: 1em; }
.uw-rich ul, .uw-rich ol { margin: 1em 0 0; padding-left: 1.3em; }
.uw-rich li + li { margin-top: .5em; }
.uw-rich strong { color: var(--uw-navy); }
.uw-rich a { color: var(--uw-blue); text-underline-offset: 3px; }
.uw-rich__note {
  margin-top: clamp(32px, 4vw, 56px);
  padding-top: clamp(18px, 2vw, 26px);
  border-top: 1px solid rgba(33, 41, 107, .16);
  font-size: clamp(12px, .95vw, 14px);
  line-height: 1.5;
  color: rgba(35, 31, 32, .62);
}
.uw-rich__note a { color: var(--uw-blue); }
.uw-rich code { font-family: ui-monospace, Menlo, Consolas, monospace; font-size: .92em; background: var(--uw-grey); padding: 1px 5px; border-radius: 4px; }

/* newsletter form, in the give-panel input idiom */
.uw-nlform { display: grid; gap: 14px; max-width: 460px; margin-top: clamp(20px, 2.4vw, 32px); }
.uw-nlform label { font-family: var(--uw-body); font-weight: 700; font-size: 14px; color: var(--uw-navy); margin-top: 4px; }
.uw-nlform label:first-of-type { margin-top: 0; }
.uw-nlform input:not([type="hidden"]):not([type="submit"]) {
  width: 100%; padding: 14px 16px; margin: 0;
  border: 2px solid rgba(33, 41, 107, .3); border-radius: 10px;
  font: inherit; color: var(--uw-ink); background: #fff;
  -webkit-appearance: none; appearance: none;
}
.uw-nlform input:not([type="hidden"]):not([type="submit"]):focus-visible {
  outline: 3px solid var(--uw-gold); outline-offset: 2px; border-color: var(--uw-blue);
}
.uw-nlform .uw-btn { justify-self: start; margin-top: 8px; }
.uw-nlform__note { margin: 0; font-size: 13px; color: rgba(35,31,32,.6); }
.uw-nlform__req { color: var(--uw-red); font-weight: 700; }

/* ── section heading used above a component grid on an interior page ──── */
.uw-sechead { background: #fff; padding: clamp(34px, 3.6vw, 56px) 0 0; text-align: center; }
.uw-sechead h2 {
  font-family: var(--uw-display); font-weight: 700; text-transform: uppercase;
  color: var(--uw-navy); font-size: clamp(30px, 3.6vw, 52px); line-height: .96;
  margin: 0 auto; max-width: 18ch;
}
.uw-sechead p {
  margin: clamp(12px, 1.4vw, 20px) auto 0; max-width: 54ch;
  font-family: var(--uw-body); font-weight: 700;
  font-size: clamp(15px, 1.15vw, 18px); line-height: 1.5; color: var(--uw-navy);
}
.uw-sechead + .uw-cards { padding-top: clamp(20px, 2.4vw, 36px); }

/* ── workcard grid reused as a hub-link grid ─────────────────────────── */
.uw-cards { background: #fff; padding: clamp(30px, 3.4vw, 52px) 0 clamp(38px, 4vw, 64px); }
.uw-cards--tint { background: var(--uw-blue-pale); }
.uw-cards__grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(16px, 2vw, 34px);
}
.uw-cards__grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.uw-cards .uw-workcard { background: #fff; box-shadow: 0 16px 30px rgba(33, 41, 107, .12); }
.uw-cards .uw-workcard__body { display: flex; flex-direction: column; gap: clamp(12px, 1.4vw, 18px); }
.uw-cards .uw-workcard__body p { margin: 0; flex: 1; }
@media (max-width: 980px) { .uw-cards__grid { grid-template-columns: 1fr; } .uw-cards__grid--2 { grid-template-columns: 1fr; } }

/* ── closing CTA band — takes .uw-news's role as the pale-blue band the
   footer wave rises out of, with the same tall bottom padding so the wave
   and the overhanging footer portrait clear the content ── */
.uw-closing {
  background: var(--uw-blue-pale);
  padding: clamp(52px, 5.4vw, 88px) 0 clamp(230px, 19vw, 320px);
  text-align: center;
  position: relative;
  z-index: 1;
}
.uw-closing h2 {
  font-family: var(--uw-display); font-weight: 700; text-transform: uppercase;
  color: var(--uw-navy); font-size: clamp(34px, 4.4vw, 64px); line-height: .96;
  margin: 0 auto; max-width: 18ch;
}
.uw-closing p {
  margin: clamp(16px, 1.8vw, 26px) auto clamp(26px, 2.8vw, 38px);
  max-width: 46ch; color: var(--uw-navy);
  font-family: var(--uw-body); font-weight: 700;
  font-size: clamp(15px, 1.2vw, 19px); line-height: 1.5;
}
.uw-closing__cta { display: flex; flex-wrap: wrap; gap: 14px; justify-content: center; }

/* ── guards for components that assume a landing-page neighbour ───────── */
/* .uw-stats curves into the grey donor band above it on the homepage; on an
   interior page it follows white, so drop the curve/'-92px grey shadow'. */
.uw-page .uw-stats {
  border-radius: 0;
  box-shadow: none;
  margin-top: 0;
  min-height: 0;
  padding: clamp(56px, 5.6vw, 96px) 0;
}
.uw-page .uw-stats__grid { max-width: min(94vw, 1120px); }
/* .uw-pillars is a first-section hero on the homepage; here it sits mid-page. */
.uw-page .uw-pillars { padding-top: clamp(6px, .8vw, 12px); }
.uw-page .uw-pillars h2 { margin-bottom: clamp(28px, 3.4vw, 52px); }
.uw-page .uw-rich + .uw-cards,
.uw-page .uw-rich + .uw-stats,
.uw-page .uw-stats + .uw-rich,
.uw-page .uw-cards + .uw-rich { padding-top: clamp(8px, 1vw, 16px); }
/* .uw-article is sized for the homogeneous homepage grid; let interior lists breathe. */
.uw-page .uw-article { height: auto; min-height: 0; }
.uw-page .uw-newsband { background: #fff; padding: clamp(48px, 5vw, 88px) 0; }
.uw-page .uw-newsband .uw-news__grid { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: clamp(20px, 2.1vw, 36px); }
@media (max-width: 980px) { .uw-page .uw-newsband .uw-news__grid { grid-template-columns: 1fr; } }

/* ═══════════════════════════════════════════════════════════════════════════
   INTERIOR PAGE MAKEOVER — borrow the landing page's depth: a branded navy
   hero, curved "punch-out" seams between sections, headline accents, card
   lift, and scroll-reveal. All additive; nothing here is required for the
   page to read correctly with CSS/JS disabled.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── breadcrumb rides on navy and reads as the top of the hero ─────────── */
.uw-page .uw-crumb {
  background: var(--uw-navy-deep);
  border-bottom: 0;
}
.uw-page .uw-crumb__in { color: rgba(255, 255, 255, .58); }
.uw-page .uw-crumb__in a { color: #fff; }
.uw-page .uw-crumb__in a:hover { color: var(--uw-gold); text-decoration: none; }
.uw-page .uw-crumb__in b { color: var(--uw-gold); }
.uw-page .uw-crumb__in span { color: rgba(255, 255, 255, .3); }

/* ── the sub-hero: navy, dimensional, with a ghost of the 211 ring disc ── */
.uw-hero--sub {
  position: relative;
  overflow: hidden;
  background:
    radial-gradient(120% 150% at 84% -10%, #2c3792 0%, rgba(44, 55, 146, 0) 55%),
    linear-gradient(168deg, var(--uw-navy-deep) 0%, var(--uw-navy) 58%, #1b2360 100%);
}
.uw-hero--sub::after {
  content: "";
  position: absolute; z-index: 0; pointer-events: none;
  width: clamp(440px, 48vw, 820px); aspect-ratio: 1;
  right: clamp(-320px, -16vw, -180px); top: 50%; transform: translateY(-50%);
  border-radius: 50%;
  background: radial-gradient(circle at 50% 50%,
    transparent 0 44%,
    rgba(255, 255, 255, .09) 44% 58%,
    transparent 58% 69%,
    rgba(160, 190, 255, .10) 69% 83%,
    transparent 83%);
}
.uw-hero--sub .uw-hero__grid {
  position: relative; z-index: 2;
  padding: clamp(40px, 4.4vw, 76px) 0 clamp(64px, 7vw, 118px);
}
.uw-hero--sub h1 { color: #fff; }
.uw-hero--sub .uw-hero__text > p { color: rgba(255, 255, 255, .82); }
.uw-hero--sub .uw-hero__eyebrow { color: var(--uw-gold); }
.uw-hero--sub .uw-btn--navy {
  background: rgba(255, 255, 255, .12); color: #fff;
  box-shadow: inset 0 0 0 2px rgba(255, 255, 255, .5);
}
.uw-hero--sub .uw-btn--navy:hover { background: #fff; color: var(--uw-navy); box-shadow: none; }
@media (max-width: 700px) { .uw-hero--sub::after { display: none; } }

/* ── first white section nests up under the hero with rounded shoulders ── */
.uw-hero--sub + .uw-rich,
.uw-hero--sub + .uw-sechead,
.uw-hero--sub + .uw-cards {
  position: relative; z-index: 3;
  margin-top: clamp(-56px, -5vw, -30px);
  border-radius: clamp(28px, 4vw, 56px) clamp(28px, 4vw, 56px) 0 0;
}
.uw-hero--sub + .uw-sechead { background: #fff; }

/* ── navy stats band rises into the white prose around it, homepage-style ─ */
.uw-page .uw-rich + .uw-stats {
  position: relative; z-index: 1;
  margin-top: clamp(-64px, -5vw, -34px);
  border-radius: clamp(40px, 6vw, 96px) clamp(40px, 6vw, 96px) 0 0;
}
.uw-page .uw-stats + .uw-rich,
.uw-page .uw-stats + .uw-sechead {
  position: relative; z-index: 2;
  margin-top: clamp(-56px, -5vw, -30px);
  border-radius: clamp(32px, 4.5vw, 64px) clamp(32px, 4.5vw, 64px) 0 0;
  background: #fff;
}
/* keep the very tall bottom padding on a stats band that sits last */
.uw-page .uw-stats:last-of-type { padding-bottom: clamp(64px, 6.4vw, 110px); }

/* ── prose headings get the gold tick the landing page uses ────────────── */
.uw-rich h2 {
  position: relative;
  padding-top: clamp(16px, 1.8vw, 24px);
}
.uw-rich h2::before {
  content: "";
  position: absolute; left: 0; top: 0;
  width: clamp(46px, 5vw, 68px); height: 4px; border-radius: 2px;
  background: var(--uw-gold);
}
.uw-rich .uw-rich__col > h2:first-child { margin-top: 0; }

/* ── hub cards lift on hover like the landing nonprofit cards ──────────── */
.uw-cards .uw-workcard {
  transition: transform .42s cubic-bezier(.22, 1, .36, 1), box-shadow .42s ease;
}
.uw-cards .uw-workcard:hover {
  transform: translateY(-7px);
  box-shadow: 0 28px 50px rgba(33, 41, 107, .2);
}

/* ── pillars mid-page: tighten and let the tiles lift ─────────────────── */
.uw-page .uw-pillars { padding: clamp(40px, 4.4vw, 72px) 0 clamp(48px, 5vw, 84px); }
.uw-page .uw-pillar { transition: transform .42s cubic-bezier(.22, 1, .36, 1); }
.uw-page .uw-pillar:hover { transform: translateY(-6px); }

/* ── closing band: same ghost ring for continuity with the hero ───────── */
.uw-page .uw-closing { overflow: hidden; }
.uw-page .uw-closing::after {
  content: "";
  position: absolute; z-index: 0; pointer-events: none;
  width: clamp(420px, 44vw, 720px); aspect-ratio: 1;
  left: clamp(-320px, -18vw, -200px); top: clamp(-160px, -12vw, -90px);
  border-radius: 50%;
  background: radial-gradient(circle at 50% 50%,
    transparent 0 46%,
    rgba(33, 41, 107, .07) 46% 60%,
    transparent 60% 72%,
    rgba(33, 41, 107, .05) 72% 84%,
    transparent 84%);
}
.uw-page .uw-closing .uw-wrap { position: relative; z-index: 1; }

/* ── scroll reveal (only when the FOOT script adds .uw-js) ─────────────── */
.uw-js .uw-anim {
  opacity: 0;
  transform: translateY(22px);
  transition: opacity .6s ease, transform .6s cubic-bezier(.22, 1, .36, 1);
  transition-delay: var(--d, 0ms);
}
.uw-js .uw-anim.is-in { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
  .uw-js .uw-anim { opacity: 1 !important; transform: none !important; }
}

/* ── mobile: relax the negative seams so nothing collides ─────────────── */
@media (max-width: 640px) {
  .uw-hero--sub + .uw-rich,
  .uw-hero--sub + .uw-sechead,
  .uw-hero--sub + .uw-cards,
  .uw-page .uw-rich + .uw-stats,
  .uw-page .uw-stats + .uw-rich,
  .uw-page .uw-stats + .uw-sechead { margin-top: 0; border-radius: 0; }
}

/* four hub cards across on a wide screen, then 2 and 1 */
.uw-cards__grid--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
@media (max-width: 1180px) { .uw-cards__grid--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 620px)  { .uw-cards__grid--4 { grid-template-columns: 1fr; } }

/* ═══════════════════════════════════════════════════════════════════════════
   END-OF-PAGE CALL TO ACTION  (.uw-endcta, replaces the flat .uw-closing)
   The band itself stays pale blue, because the footer wave rises out of it and
   needs that ground to read against. The drama sits in a navy panel floating
   on top: a spinning gold coin, a dashed orbit, and the headline beside it.
   ═══════════════════════════════════════════════════════════════════════════ */
.uw-endcta {
  position: relative;
  /* has to out-rank the section above it: pages.css lifts the first white
     block to z-index 3, which would otherwise paint over the curved shoulder */
  z-index: 4;
  overflow: hidden;
  /* the whole band carries the treatment, not a card sitting on a plain one */
  background:
    linear-gradient(180deg, rgba(255, 255, 255, .11) 0%, rgba(255, 255, 255, 0) clamp(120px, 14vw, 240px)),
    radial-gradient(90% 130% at 86% -10%, #3A47B6 0%, rgba(58, 71, 182, 0) 58%),
    linear-gradient(152deg, #2C3792 0%, #21296B 54%, #161D50 100%);
  /* default: stand clear of a white section above (invisible gap there) */
  margin-top: clamp(32px, 4vw, 64px);
  border-radius: clamp(36px, 5vw, 80px) clamp(36px, 5vw, 80px) 0 0;
  padding: clamp(56px, 6vw, 104px) 0 clamp(230px, 19vw, 320px);
}
.uw-endcta::before {                      /* a soft light off the top corner */
  content: "";
  position: absolute; z-index: 0; pointer-events: none;
  inset: -30% -14% auto auto;
  width: clamp(320px, 40vw, 680px); aspect-ratio: 1; border-radius: 50%;
  background: radial-gradient(circle, rgba(80, 130, 240, .34), transparent 68%);
}
.uw-endcta::after {                       /* the 211 ring ghost, as elsewhere */
  content: "";
  position: absolute; z-index: 0; pointer-events: none;
  width: clamp(460px, 50vw, 860px); aspect-ratio: 1;
  left: clamp(-360px, -20vw, -220px); bottom: clamp(-300px, -22vw, -160px);
  border-radius: 50%;
  background: radial-gradient(circle at 50% 50%,
    transparent 0 46%,
    rgba(255, 255, 255, .08) 46% 60%,
    transparent 60% 72%,
    rgba(167, 210, 255, .07) 72% 84%,
    transparent 84%);
}
.uw-endcta > .uw-wrap { position: relative; z-index: 1; }
/* the newsroom carousel band is blue; let the navy CTA rise into it so the
   two grounds meet with no white gap, the way the homepage bands do */
.uwn-band + .uw-endcta { margin-top: clamp(-140px, -12vw, -72px); }
.uwn-band { position: relative; z-index: 3; }
.uwn-band + .uw-endcta { z-index: 2; }
/* the "United is the Way" band is navy too; rather than leave a dead navy strip
   below its card and a white seam before the CTA, let the section above run
   behind and the CTA rise out of it — its rounded shoulder shows the navy
   through, so the two grounds meet with no step */
.uw-join + .uw-endcta {
  margin-top: clamp(-120px, -11vw, -64px);
  z-index: 2;
}
.uw-join:has(+ .uw-endcta) { position: relative; z-index: 1; }
/* .uw-endcta sits at z-index 4 to clear the section above; the footer wave has
   to rise out of it, so the footer is lifted higher still */
.uw-page .uw-footer { position: relative; z-index: 6; }

.uw-endcta__panel {
  max-width: 64rem;
  margin: 0 auto;
  text-align: center;
}


/* ── the copy ─────────────────────────────────────────────────── */
.uw-endcta__body { position: relative; z-index: 2; }
.uw-endcta__kicker {
  display: inline-flex; align-items: center; gap: 9px;
  margin: 0 0 clamp(10px, 1.2vw, 16px);
  font-family: var(--uw-display); font-weight: 600; text-transform: uppercase;
  letter-spacing: .07em; font-size: clamp(11px, .95vw, 14px);
  color: var(--uw-gold);
}
.uw-endcta__kicker::before { content: ""; width: 28px; height: 3px; border-radius: 2px; background: var(--uw-gold); }
.uw-endcta h2 {
  font-family: var(--uw-display); font-weight: 700; text-transform: uppercase;
  color: #fff;
  font-size: clamp(40px, 6.4vw, 104px); line-height: 1.04;
  margin: 0 auto clamp(14px, 1.7vw, 26px);
  max-width: 16ch;
}
/* the figure counts down from $100 to $1 the first time the band is seen */
.uw-endcta__count {
  display: inline-block;
  color: var(--uw-gold); font-weight: inherit;
  text-align: center;
  transition: min-width .45s cubic-bezier(.22, 1, .36, 1);
}
.uw-endcta__count.is-landed { animation: uw-count-land .55s cubic-bezier(.22, 1, .36, 1); }
@keyframes uw-count-land {
  0%   { transform: scale(1); text-shadow: none; }
  45%  { transform: scale(1.13); text-shadow: 0 0 34px rgba(255, 186, 0, .7); }
  100% { transform: scale(1); text-shadow: none; }
}
.uw-endcta__body > p:not([class]) {
  margin: 0 auto clamp(22px, 2.6vw, 36px);
  max-width: 46ch;
  font-family: var(--uw-body); font-weight: 700;
  font-size: clamp(15px, 1.15vw, 19px); line-height: 1.5;
  color: rgba(255, 255, 255, .84);
}
.uw-endcta__cta { display: flex; flex-wrap: wrap; gap: 14px; justify-content: center; }
.uw-endcta__ghost {
  background: transparent; color: #fff;
  box-shadow: inset 0 0 0 2px rgba(255, 255, 255, .55);
}
.uw-endcta__ghost:hover { background: #fff; color: var(--uw-navy); box-shadow: none; }
.uw-endcta__trust {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 8px 22px;
  margin: calc(clamp(48px, 5.2vw, 78px) + 5px) auto 0;
  max-width: 44rem;
  padding-top: clamp(18px, 2vw, 26px);
  border-top: 1px solid rgba(255, 255, 255, .16);
  font-size: 13px; font-weight: 700; letter-spacing: .01em;
  color: rgba(255, 255, 255, .58);
}
.uw-endcta__trust span { display: inline-flex; align-items: center; gap: 7px; }
.uw-endcta__trust span::before {
  content: ""; width: 7px; height: 7px; border-radius: 50%; background: var(--uw-gold);
}

@media (max-width: 820px) {
  .uw-endcta { margin-top: 0; border-radius: 0; }
  .uw-endcta h2 { max-width: none; }
}
@media (prefers-reduced-motion: reduce) {
  .uw-endcta__count, .uw-endcta__count.is-landed { transition: none; animation: none; }
}

/* interior footer fits its content — the tall min-height in styles.v3.css
   is for the homepage composition and leaves a gap under the legal bar
   on every .uw-page */
.uw-page .uw-footer { min-height: 0; }

/* ── even card heights in the hub grids ───────────────────────────────────
   The workcards sit in a grid, so a row is only as tidy as its tallest card.
   Stretching them and pushing the link to the bottom keeps every call to
   action on one line rather than stepping up and down across the row. */
.uw-cards__grid > .uw-workcard { display: flex; flex-direction: column; }
.uw-cards__grid > .uw-workcard .uw-workcard__body {
  display: flex; flex-direction: column; flex: 1 1 auto;
}
.uw-cards__grid > .uw-workcard .uw-workcard__body > a { margin-top: auto; }
