/*
 * Connected for Good landing page
 * Built from HM's dev hand-off v5 (Oct 30, 2026), with edits from John (Nov 3, 2026)
 * Loaded only on the landing page (see functions.php). Everything is scoped
 * under body.cfg-landing and prefixed cfg- so it cannot leak into the site.
 *
 * Sizing: the desktop design is drawn on a 1024px canvas. --cfg-px is "one
 * canvas pixel" and scales proportionally with the viewport (capped at 1440px).
 * Below 768px the mobile layout takes over and --cfg-px is a real pixel.
 */

@font-face {
  font-family: "Peace Sans";
  src: url("../fonts/PeaceSans.ttf") format("truetype");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Avenir Next";
  src: url("../fonts/AvenirNext-Regular.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Avenir Next";
  src: url("../fonts/AvenirNext-Medium.woff2") format("woff2");
  font-weight: 500;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Avenir Next";
  src: url("../fonts/AvenirNext-Bold.woff2") format("woff2");
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}

body.cfg-landing {
  --cfg-cyan: #19d4f5;
  --cfg-lblue: #8be9f9;
  --cfg-mint: #c5fff0;
  --cfg-mint-btn: #8bffe3;
  --cfg-yellow: #fff877;
  --cfg-navy: #292e54;
  --cfg-black: #000;
  /* The PDF states 3px 4px 12px rgba(0,0,0,.38), but its mockup renders a much darker, tighter shadow (about 60% black at
     the letter edge, gone by ~8px). This value was fitted to the mockup's measured shadow profile. */
  --cfg-shadow: 3px 4px 6px rgba(0, 0, 0, 0.7);
  --cfg-head: "Peace Sans", "Arial Black", Impact, sans-serif;
  --cfg-body: "Avenir Next", Avenir, "Nunito Sans", "Segoe UI", Helvetica, Arial, sans-serif;

  /* Type and fixed element sizes are the hand-off's real pixel values from 1024px up (--cfg-px = 1px).
     Only between 768 and 1024px does the layout shrink with the viewport, so the 1024px composition still fits. */
  --cfg-px: calc(min(100vw, 1024px) / 1024);
  /* side margins: about 2% of the viewport, never below 20px */
  --cfg-m: max(20px, 2vw);
  /* The site's max content width (Kadence: --global-content-width, 1290px), centred like the header and footer.
     Content AND images stay inside it; only each section's background colour runs edge to edge.
       --cfg-edge   = space between the viewport edge and the content box (0 below ~1290px)
       --cfg-gutter = padding inside the content box (the 2% / 20px-min side margin, or Kadence's 24px edge padding)
       --cfg-inset  = viewport edge to text edge (edge + gutter)
     cqw is the row's own width (each .cfg-sec is a size container), so this stays exact when a scrollbar shows. */
  --cfg-edge: max(0px, calc((100cqw - var(--global-content-width, 1290px)) / 2));
  /* below the content width this is the 2% / 20px margin; above it, Kadence's own 24px so text lines up with the header */
  --cfg-gutter: max(calc(var(--cfg-m) - var(--cfg-edge)), min(var(--cfg-m), var(--global-content-edge-padding, 1.5rem)));
  --cfg-inset: calc(var(--cfg-edge) + var(--cfg-gutter));
  /* Helen's scale: one "canvas pixel" of the content box, so she grows with the container up to the content width */
  --cfg-hs: calc(min(100cqw, var(--global-content-width, 1290px)) / 1024);
  --cfg-gap: calc(48 * var(--cfg-px));
  --cfg-pad: calc(60 * var(--cfg-px));
  /* top offset for the sticky bar = height of the (sticky) site header; set by JS */
  --cfg-sticky-top: calc(var(--cfg-header-h, 0px) + var(--wp-admin--admin-bar--height, 0px));
  --cfg-bar-h: calc(77 * var(--cfg-px));
}

/* ------------------------------------------------------------------ base */
.cfg-landing .cfg-sec {
  container-type: inline-size;
  font-family: var(--cfg-body);
  color: var(--cfg-black);
  margin-top: 0;
  margin-bottom: 0;
}
.cfg-landing .cfg-sec > .kt-row-column-wrap {
  box-sizing: border-box;
  max-width: var(--global-content-width, 1290px);
  margin-left: auto;
  margin-right: auto;
  padding-left: var(--cfg-gutter);
  padding-right: var(--cfg-gutter);
  padding-top: 0;
  padding-bottom: 0;
  column-gap: 0;
  row-gap: 0;
}
.cfg-landing .cfg-sec :where(p) {
  margin: 0; /* zero specificity, so the per-section margins below can override it */
}
.cfg-landing .cfg-sec figure.wp-block-image {
  margin: 0 !important; /* the theme adds a bottom margin to figures */
}
.cfg-landing .cfg-sec img {
  display: block;
  max-width: none;
}
.cfg-landing .cfg-sec .kt-inside-inner-col {
  padding: 0;
}
.cfg-landing .cfg-band {
  margin-top: var(--cfg-gap);
}

/* colour fills (also set as row background in the block settings) */
.cfg-landing .cfg-hero,
.cfg-landing .cfg-signup {
  background-color: var(--cfg-cyan);
}
.cfg-landing .cfg-invest-head,
.cfg-landing .cfg-invest-cards,
.cfg-landing .cfg-split--join {
  background-color: var(--cfg-mint);
}
.cfg-landing .cfg-why-head,
.cfg-landing .cfg-why-body,
.cfg-landing .cfg-split--party {
  background-color: var(--cfg-lblue);
}

/* headings */
.cfg-landing .wp-block-kadence-advancedheading.cfg-h-cyan,
.cfg-landing .wp-block-kadence-advancedheading.cfg-h-white,
.cfg-landing .wp-block-kadence-advancedheading.cfg-h1 {
  font-family: var(--cfg-head);
  font-weight: 400;
  text-transform: uppercase;
  margin: 0;
  padding: 0;
  letter-spacing: 0;
}
.cfg-landing .wp-block-kadence-advancedheading.cfg-h-cyan {
  color: var(--cfg-cyan);
  font-size: calc(37.5 * var(--cfg-px));
  line-height: 1.2;
  letter-spacing: -0.012em;
  white-space: nowrap; /* one line on desktop, per the spec; wraps on mobile */
}
.cfg-landing .wp-block-kadence-advancedheading.cfg-h-white,
.cfg-landing .wp-block-kadence-advancedheading.cfg-h1 {
  color: #fff;
  text-shadow: var(--cfg-shadow);
}
.cfg-landing .wp-block-kadence-advancedheading.cfg-h-white {
  font-size: calc(53 * var(--cfg-px));
  line-height: calc(54 / 53);
  letter-spacing: -0.012em;
}

/* ------------------------------------------------------------------ hero */
.cfg-landing .cfg-hero {
  position: relative;
  overflow: hidden;
}
/* Helen stays inside the content width too: she is clipped at the content box's edge (the cyan fills the rest) */
.cfg-landing .cfg-hero > .kt-row-column-wrap {
  overflow: hidden;
}
.cfg-landing .cfg-hero__in > .kt-inside-inner-col {
  position: relative;
  display: block;
  /* the hero grows with the content box (--cfg-hs, capped at the content width), so Helen is never cropped and never
     leaves a gap; 655px at a 1024px viewport, as in the mockup */
  height: calc(655 * var(--cfg-hs));
}
.cfg-landing .wp-block-kadence-advancedheading.cfg-h1 {
  position: absolute;
  top: calc(23.7 * var(--cfg-px));
  left: 0;
  z-index: 3;
  /* narrow enough that "Connected for Good" wraps after "Connected" (a third of a line is ~800px) */
  max-width: calc(700 * var(--cfg-px));
  font-size: calc(96 * var(--cfg-px));
  line-height: calc(89 / 96);
}
.cfg-landing .cfg-hero .cfg-sub {
  position: absolute;
  top: calc(231.7 * var(--cfg-px));
  left: 0;
  z-index: 3;
  max-width: calc(560 * var(--cfg-px));
  font-weight: 700;
  font-size: calc(28 * var(--cfg-px));
  line-height: 1.4;
  text-transform: uppercase;
  color: var(--cfg-black);
}
/* Helen scales with the content box (--cfg-hs, capped at the content width) and the hero grows with her. She stands on the
   hero's bottom edge, 5 canvas-px taller than the hero like the mockup, so there is never a gap under her. */
.cfg-landing .cfg-hero .cfg-hero__portrait {
  position: absolute;
  bottom: 0;
  /* anchored to the content box's right edge: she runs 83px off it, and at 1024px the form box overlaps her arm */
  right: calc(-83 * var(--cfg-hs) - var(--cfg-gutter));
  z-index: 1;
  margin: 0;
}
.cfg-landing .cfg-hero .cfg-hero__portrait img {
  height: calc(660 * var(--cfg-hs));
  width: auto;
  max-width: none;
  filter: drop-shadow(0 6px 14px rgba(0, 0, 0, 0.28));
}

.cfg-landing:not(.is-home) .cfg-hero .kb-buttons-wrap.cfg-from-home { display: none; }
.cfg-landing.is-home .cfg-hero .kb-buttons-wrap.cfg-from-landing { display: none; }

/* Keela placeholders: plain white boxes, no form styling */
.cfg-landing .cfg-embed {
  box-sizing: border-box;
  background: #fff;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: calc(10 * var(--cfg-px));
  padding: calc(20 * var(--cfg-px));
  text-align: center;
}
.cfg-landing .cfg-embed__label {
  font-family: var(--cfg-head);
  font-size: calc(14.5 * var(--cfg-px));
  line-height: 1.15;
  text-transform: uppercase;
  max-width: calc(380 * var(--cfg-px));
}
.cfg-landing .cfg-embed__note {
  font-weight: 700;
  font-size: calc(11.5 * var(--cfg-px));
  text-transform: uppercase;
}
.cfg-landing .cfg-embed--hero {
  position: absolute;
  left: 0;
  bottom: 0;
  z-index: 2;
  width: calc(554 * var(--cfg-px));
  height: calc(306 * var(--cfg-px));
  min-height: calc(306 * var(--cfg-px));
}

/* the hero's donation form scrolls inside the designer's 554 x 306 box instead of spilling out of it */
.cfg-landing .cfg-embed--hero {
  overflow-y: auto;
  overflow-x: hidden;
  justify-content: flex-start;   /* start at the top, so the top of the form can be reached */
}
.cfg-landing .cfg-embed--hero > * {
  flex-shrink: 0;                /* the form keeps its full height and scrolls, instead of being squashed */
}

/* the Keela form fills the hero's white box, edge to edge */
.cfg-landing .cfg-embed--hero {
  padding: 0;
  align-items: stretch;
  justify-content: stretch;
  overflow: hidden;
}
.cfg-landing .cfg-embed--hero .keela-embed-form {
  width: 100%;
  height: 100%;
  flex: 1 1 auto;
}
.cfg-landing .cfg-embed--hero .keela-embed-form iframe {
  display: block;
  width: 100%;
  height: 100% !important;
  border: 0;
}

.cfg-landing .cfg-embed--donate {
  width: calc(484 * var(--cfg-px));
  min-height: calc(419 * var(--cfg-px));
  margin-left: auto;
}

/* the hero's Join button (it replaces the donation form box) */
.cfg-landing .cfg-hero .kb-buttons-wrap {
  position: absolute;
  top: calc(349 * var(--cfg-px));   /* where the form box used to start, 39px under the subhead */
  left: 0;
  z-index: 3;
  margin: 0;
}
@media (max-width: 767px) {
  .cfg-landing .cfg-hero .kb-buttons-wrap {
    position: relative;
    top: auto;
    left: auto;
    order: 4;                        /* after Helen, as the form box was */
    width: 100%;
    margin: 0 0 20px;
  }
}

/* ------------------------------------------------------------ sticky bar */
.cfg-landing .cfg-stickybar {
  /*position: sticky;*/
  /*top: var(--cfg-sticky-top);*/
  /*z-index: 900;*/
  margin-top: var(--cfg-gap);
}
.cfg-landing .cfg-stickybar > .kt-row-column-wrap {
  box-sizing: border-box;
  min-height: var(--cfg-bar-h);
  align-items: center;
  /* (bar height - 53px button) / 2 each side, so the button is vertically centred */
  padding-top: calc((var(--cfg-bar-h) - 53 * var(--cfg-px)) / 2);
  padding-bottom: calc((var(--cfg-bar-h) - 53 * var(--cfg-px)) / 2);
}
.cfg-landing .cfg-stickybar .kb-buttons-wrap,
.cfg-landing .cfg-stickybar .kt-inside-inner-col {
  margin-top: 0;
  margin-bottom: 0;
}
.cfg-landing .cfg-stickybar .kt-inside-inner-col {
  display: flex;
  flex-direction: row;
  justify-content: flex-end;
  align-items: center;
}
.cfg-landing .cfg-stickybar .kb-buttons-wrap {
  margin: 0;
  justify-content: flex-end;
}

/* the Join button inside the Neighbours copy, right-aligned to the content edge */
.cfg-landing .cfg-neigh__b .kb-buttons-wrap {
  margin: 0 0 16px;
  justify-content: flex-end;
}

/* the second Join button is centered on the page */
.cfg-landing .cfg-stickybar.cfg-stickybar-center .kt-inside-inner-col,
.cfg-landing .cfg-stickybar.cfg-stickybar-center .kb-buttons-wrap {
  justify-content: center;
}

/* join / subscribe button (shared look) */
.cfg-landing .cfg-join-btn,
.cfg-landing .cfg-sec .kb-button.cfg-join-btn,
.cfg-landing .cfg-btn {
  box-sizing: border-box;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: calc(53 * var(--cfg-px));
  padding: 0 calc(26 * var(--cfg-px));
  background: var(--cfg-mint-btn);
  color: var(--cfg-black);
  border: 3px solid var(--cfg-black);
  border-radius: calc(14 * var(--cfg-px));
  font-family: var(--cfg-body);
  font-weight: 500;
  font-size: calc(22 * var(--cfg-px));
  line-height: 1;
  text-transform: uppercase;
  text-decoration: none;
  box-shadow: none;
  cursor: pointer;
}
.cfg-landing .cfg-join-btn:hover,
.cfg-landing .cfg-btn:hover,
.cfg-landing .cfg-join-btn:focus-visible,
.cfg-landing .cfg-btn:focus-visible {
  background: #fff;
  color: var(--cfg-black);
}

/* --------------------------------------------------------------- 2. stats */
.cfg-landing .cfg-stats > .kt-row-column-wrap {
  padding-top: var(--cfg-pad);
  align-items: start;
}
.cfg-landing .cfg-stat > .kt-inside-inner-col {
  align-items: center;
  text-align: center;
  padding: 0 calc(10 * var(--cfg-px));
}
.cfg-landing .wp-block-kadence-advancedheading.cfg-stat__num {
  font-family: var(--cfg-head);
  font-weight: 400;
  font-size: calc(61 * var(--cfg-px));
  line-height: 1.1;
  color: var(--cfg-yellow);
  -webkit-text-stroke: calc(5 * var(--cfg-px)) #000;
  paint-order: stroke fill;
  text-align: center;
  margin: 0 0 calc(10 * var(--cfg-px));
}
.cfg-landing .cfg-stat__cap {
  font-size: calc(16 * var(--cfg-px));
  line-height: 1.2;
  text-align: center;
  max-width: calc(215 * var(--cfg-px));
  margin-left: auto;
  margin-right: auto;
}

/* ----------------------------------------------- 3. neighbours supporting */
.cfg-landing .cfg-neigh-head > .kt-row-column-wrap {
  padding-top: var(--cfg-pad);
  padding-bottom: calc(22 * var(--cfg-px));
}
.cfg-landing .cfg-neigh > .kt-row-column-wrap {
  padding-left: 0;
  /* The four people take up about 60% of this photo's width, so the box has to be nearly square (575 x 604, was 480 x 602)
     or the man on the left and the woman on the right are cut off. Flush with the content box's left edge. */
  grid-template-columns: calc(575 * var(--cfg-px)) 1fr;
  align-items: stretch;
}
.cfg-landing .cfg-neigh__a .cfg-neigh__photo img {
  width: 100%;
  height: calc(604 * var(--cfg-px));
  object-fit: cover;
  object-position: 49% 50%; /* centres the group of four */
}
.cfg-landing .cfg-neigh__b > .kt-inside-inner-col {
  height: 100%;
  display: flex;
  flex-direction: column;
  padding-left: calc(19 * var(--cfg-px));
}
.cfg-landing .cfg-neigh__b p {
  font-size: calc(20 * var(--cfg-px));
  line-height: calc(27.8 / 20);
  margin-bottom: calc(27.8 * var(--cfg-px));
}
.cfg-landing .cfg-neigh__b p.cfg-footnote {
  margin: auto 0 0;
  font-size: calc(12 * var(--cfg-px));
  line-height: 1.3;
}
.cfg-landing .cfg-neigh__b p:nth-last-child(2) {
  margin-bottom: 0;
}
.cfg-landing .cfg-neigh__b sup,
.cfg-landing .cfg-stat sup {
  font-size: 0.6em;
}
.cfg-landing .cfg-footnote a {
  color: inherit;
  text-decoration: underline;
}

/* Below 1120px there is not room for a photo this wide beside the copy, so the photo goes full width above it
   (17:10 shows all four people; the mobile block below uses 3:2). */
@media (max-width: 1119px) {
  .cfg-landing .cfg-neigh > .kt-row-column-wrap {
    grid-template-columns: minmax(0, 1fr);
    padding-right: 0;
  }
  .cfg-landing .cfg-neigh__a .cfg-neigh__photo img {
    height: auto;
    aspect-ratio: 17 / 10;
    object-position: 49% 100%; /* keeps the shoes in; trims only empty pavement and building above the heads */
  }
  .cfg-landing .cfg-neigh__b > .kt-inside-inner-col {
    height: auto;
    padding: 28px var(--cfg-gutter) 0;
  }
  .cfg-landing .cfg-neigh__b p.cfg-footnote {
    margin-top: 16px;
  }
  
  /* the Join button inside the Neighbours copy, right-aligned to the content edge */
  .cfg-landing .cfg-neigh__b .kb-buttons-wrap {
    justify-content: center;
  }
}

/* -------------------------------------------------- 4. invest + pillars */
.cfg-landing .cfg-invest-head > .kt-row-column-wrap {
  padding-top: var(--cfg-pad);
}
.cfg-landing .cfg-intro {
  font-size: calc(21 * var(--cfg-px));
  line-height: calc(29.5 / 21);
  margin-top: calc(14 * var(--cfg-px));
}
.cfg-landing .cfg-invest-head .cfg-intro {
  margin-bottom: calc(26 * var(--cfg-px));
}
.cfg-landing .cfg-invest-cards > .kt-row-column-wrap {
  column-gap: calc(54 * var(--cfg-px));
  padding-bottom: var(--cfg-pad);
  align-items: stretch;
}
.cfg-landing .cfg-card > .kt-inside-inner-col {
  height: 100%;
  background: #fff;
  box-shadow: none;
  align-items: stretch;
  padding-bottom: calc(28 * var(--cfg-px));
}
.cfg-landing .cfg-card__img img {
  width: 100%;
  height: calc(277 * var(--cfg-px));
  object-fit: cover;
}
.cfg-landing .wp-block-kadence-advancedheading.cfg-card__title {
  font-family: var(--cfg-head);
  font-weight: 400;
  font-size: calc(23 * var(--cfg-px));
  line-height: 1.2;
  text-transform: uppercase;
  text-align: center;
  color: var(--cfg-black);
  letter-spacing: -0.012em;
  margin: calc(14 * var(--cfg-px)) calc(4 * var(--cfg-px)) calc(10 * var(--cfg-px));
}
.cfg-landing .cfg-card__body {
  font-size: calc(18 * var(--cfg-px));
  line-height: calc(24.6 / 18);
  text-align: center;
  padding: 0 calc(14 * var(--cfg-px));
}

/* ----------------------------------------- 5. that's why + keela embed #2 */
.cfg-landing #donate,
.cfg-landing .cfg-why-head {
  scroll-margin-top: calc(var(--cfg-sticky-top) + 16px);
}
.cfg-landing .cfg-why-head > .kt-row-column-wrap {
  padding-top: var(--cfg-pad);
  padding-bottom: calc(26 * var(--cfg-px));
}
.cfg-landing .cfg-why-body > .kt-row-column-wrap {
  grid-template-columns: 1fr calc(484 * var(--cfg-px) + var(--cfg-m));
  padding-bottom: var(--cfg-pad);
  align-items: start;
}
.cfg-landing .cfg-why__a > .kt-inside-inner-col {
  padding-right: calc(22 * var(--cfg-px));
}
.cfg-landing .cfg-why__a p {
  font-size: calc(18.5 * var(--cfg-px));
  line-height: calc(25.5 / 18.5);
  margin-bottom: calc(25.5 * var(--cfg-px));
}
.cfg-landing .cfg-why__a p.cfg-navy-line {
  font-weight: 700;
  text-transform: uppercase;
  color: var(--cfg-navy);
  margin-bottom: 0;
}

/* -------------------------------------------------------------- photo strip */
.cfg-landing .cfg-strip > .kt-row-column-wrap {
  column-gap: calc(24 * var(--cfg-px));
}
.cfg-landing .cfg-strip__img img {
  width: 100%;
  aspect-ratio: 311 / 308;
  height: auto;
  object-fit: cover;
}

/* --------------------------------------------------------- 6. faces of YECC */
.cfg-landing .cfg-faces-head > .kt-row-column-wrap {
  padding-top: var(--cfg-pad);
  padding-bottom: calc(24 * var(--cfg-px));
}
.cfg-landing .cfg-faces-head .cfg-intro {
  font-size: calc(18 * var(--cfg-px));
  line-height: calc(24.5 / 18);
  margin-top: 0;
}
.cfg-landing .cfg-faces-head .wp-block-kadence-advancedheading + .cfg-intro {
  margin-top: calc(12 * var(--cfg-px));
}
.cfg-landing .cfg-faces-head .cfg-intro + .cfg-intro {
  margin-top: calc(24.5 * var(--cfg-px));
}
.cfg-landing .cfg-face {
  position: relative;
}
/* Kadence puts a <style> tag before every row, so use ~ rather than + */
.cfg-landing .cfg-face ~ .cfg-face {
  margin-top: calc(-32 * var(--cfg-px));
}
.cfg-landing .cfg-face--left > .kt-row-column-wrap {
  grid-template-columns: calc(300 * var(--cfg-px)) 1fr;
}
.cfg-landing .cfg-face--right > .kt-row-column-wrap {
  grid-template-columns: 1fr calc(300 * var(--cfg-px));
}
.cfg-landing .cfg-face > .kt-row-column-wrap {
  align-items: center;
}
.cfg-landing .cfg-face--bottom > .kt-row-column-wrap {
  align-items: end;
  padding-bottom: calc(12 * var(--cfg-px));
}
.cfg-landing .cfg-face__photo > .kt-inside-inner-col {
  position: relative;
}
.cfg-landing .cfg-face__img img {
  width: calc(300 * var(--cfg-px));
  height: calc(400 * var(--cfg-px));
  object-fit: cover;
  object-position: 50% 20%;
}
.cfg-landing .wp-block-kadence-advancedheading.cfg-face__label {
  position: absolute;
  margin: 0;
  font-family: var(--cfg-head);
  font-weight: 400;
  font-size: calc(33 * var(--cfg-px));
  line-height: 0.95;
  text-transform: uppercase;
  color: #fff;
  text-shadow: var(--cfg-shadow);
}
.cfg-landing .cfg-face__label--bl {
  left: calc(14 * var(--cfg-px));
  bottom: calc(14 * var(--cfg-px));
}
.cfg-landing .cfg-face__label--br {
  right: calc(14 * var(--cfg-px));
  bottom: calc(14 * var(--cfg-px));
  text-align: right;
}
.cfg-landing .cfg-face__label--tl {
  left: calc(14 * var(--cfg-px));
  top: calc(14 * var(--cfg-px));
}
.cfg-landing .cfg-face__quote {
  position: relative;
  z-index: 2;
}
.cfg-landing .cfg-face--left .cfg-face__quote {
  margin-left: calc(-48 * var(--cfg-px));
}
.cfg-landing .cfg-face--right .cfg-face__quote {
  margin-right: calc(-48 * var(--cfg-px));
}
.cfg-landing .cfg-face--right .cfg-face__photo > .kt-inside-inner-col {
  display: flex;
  flex-direction: row;
  justify-content: flex-end;
}
.cfg-landing .wp-block-kadence-advancedheading.cfg-quote {
  box-sizing: border-box;
  background: var(--cfg-cyan);
  border: calc(8 * var(--cfg-px)) solid var(--cfg-yellow);
  padding: calc(26 * var(--cfg-px)) calc(22 * var(--cfg-px)) calc(26 * var(--cfg-px)) calc(36 * var(--cfg-px));
  margin: 0;
  font-family: var(--cfg-head);
  font-weight: 400;
  font-size: calc(28 * var(--cfg-px));
  line-height: calc(36 / 28);
  text-transform: uppercase;
  color: #fff;
  text-shadow: var(--cfg-shadow);
}
.cfg-landing .cfg-face--right .wp-block-kadence-advancedheading.cfg-quote {
  padding-left: calc(36 * var(--cfg-px));
  padding-right: calc(26 * var(--cfg-px));
}

/* ------------------------------------------------------------ 7. carousel */
/* the photo is an <img> filling the whole row (the full viewport width); its height is the mockup's 501px, so on wide
   screens it is cropped (object-fit: cover) rather than growing taller */
.cfg-landing .cfg-carousel-band {
  position: relative;
  background-color: var(--cfg-cyan); /* shows only while the photo loads */
}
.cfg-landing .cfg-carousel-band > .kt-row-column-wrap {
  position: static; /* Kadence sets relative; the photo must be positioned against the full-width row, not this box */
  min-height: calc(501 * var(--cfg-px));
  padding-top: var(--cfg-pad);
  padding-bottom: calc(60 * var(--cfg-px));
  align-items: start;
}
/* Kadence makes the column position:relative; undo that so the photo is sized by the row (full width) instead */
.cfg-landing .cfg-carousel-band .cfg-carousel__in,
.cfg-landing .cfg-carousel-band .cfg-carousel__in > .kt-inside-inner-col {
  position: static;
}
.cfg-landing .cfg-carousel-band figure.cfg-carousel__bg {
  position: absolute;
  inset: 0;
  z-index: 0;
}
.cfg-landing .cfg-carousel-band .cfg-carousel__bg img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.cfg-landing .cfg-carousel {
  touch-action: pan-y pinch-zoom; /* vertical scrolling stays with the browser; horizontal swipes go to the carousel */
  position: relative;
  z-index: 1;
  box-sizing: border-box;
  width: calc(836 * var(--cfg-px));
  max-width: 100%;
  margin: 0 auto;
  background: rgba(255, 255, 255, 0.93);
  padding: calc(20 * var(--cfg-px)) calc(36 * var(--cfg-px)) calc(26 * var(--cfg-px));
  text-align: center;
}
.cfg-landing .cfg-carousel__title {
  font-family: var(--cfg-head);
  font-weight: 400;
  font-size: calc(37.5 * var(--cfg-px));
  line-height: 1.2;
  text-transform: uppercase;
  color: var(--cfg-cyan);
  margin: 0 0 calc(16 * var(--cfg-px));
}
.cfg-landing .cfg-carousel__stage {
  display: grid;
  grid-template-columns: calc(36 * var(--cfg-px)) 1fr calc(36 * var(--cfg-px));
  column-gap: calc(24 * var(--cfg-px));
  align-items: center;
}
.cfg-landing .cfg-carousel__slides {
  display: grid;
  overflow: hidden; /* slides slide in and out of this window */
}
.cfg-landing .cfg-slide {
  grid-area: 1 / 1;
  visibility: hidden;
  font-size: calc(19 * var(--cfg-px));
  line-height: calc(27.5 / 19);
  color: var(--cfg-black);
}
.cfg-landing .cfg-slide.is-active,
.cfg-landing .cfg-slide.is-leaving {
  visibility: visible; /* the outgoing slide stays visible until its animation ends */
}
/* direction follows the click: forward (next / swipe left) enters from the right, back enters from the left */
.cfg-landing .cfg-slide.cfg-in-fwd  { animation: cfg-in-fwd  0.45s ease both; }
.cfg-landing .cfg-slide.cfg-out-fwd { animation: cfg-out-fwd 0.45s ease both; }
.cfg-landing .cfg-slide.cfg-in-back  { animation: cfg-in-back  0.45s ease both; }
.cfg-landing .cfg-slide.cfg-out-back { animation: cfg-out-back 0.45s ease both; }
@keyframes cfg-in-fwd   { from { transform: translateX(100%); }  to { transform: translateX(0); } }
@keyframes cfg-out-fwd  { from { transform: translateX(0); }     to { transform: translateX(-100%); } }
@keyframes cfg-in-back  { from { transform: translateX(-100%); } to { transform: translateX(0); } }
@keyframes cfg-out-back { from { transform: translateX(0); }     to { transform: translateX(100%); } }
@media (prefers-reduced-motion: reduce) {
  .cfg-landing .cfg-slide { animation: none !important; }
}
.cfg-landing .cfg-carousel__arrow {
  box-sizing: border-box;
  display: flex;
  align-items: center;
  justify-content: center;
  width: calc(36 * var(--cfg-px));
  height: calc(36 * var(--cfg-px));
  min-width: 28px;
  min-height: 28px;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: var(--cfg-cyan);
  color: #fff;
  cursor: pointer;
}
.cfg-landing .cfg-carousel__arrow:hover {
  background: var(--cfg-navy);
}
.cfg-landing .cfg-carousel__dots {
  display: flex;
  justify-content: center;
  gap: calc(14 * var(--cfg-px));
  margin-top: calc(18 * var(--cfg-px));
}
.cfg-landing .cfg-dot {
  box-sizing: border-box;
  width: calc(19 * var(--cfg-px));
  height: calc(19 * var(--cfg-px));
  min-width: 14px;
  min-height: 14px;
  padding: 0;
  border: 3px solid var(--cfg-cyan);
  border-radius: 50%;
  background: transparent;
  cursor: pointer;
}
.cfg-landing .cfg-dot.is-active {
  background: var(--cfg-cyan);
}
.cfg-landing .cfg-carousel__arrow:focus-visible,
.cfg-landing .cfg-dot:focus-visible {
  outline: 3px solid var(--cfg-navy);
  outline-offset: 2px;
}

/* ------------------------------------------------------- 8. split sections */
.cfg-landing .cfg-split > .kt-row-column-wrap {
  padding-left: 0;
  padding-right: 0;
  /* text takes the rest; the photo is 406px wide, flush with the content box's right edge (the band colour runs full width) */
  grid-template-columns: 1fr calc(406 * var(--cfg-px));
  align-items: stretch;
}
.cfg-landing .cfg-split__text > .kt-inside-inner-col {
  padding: var(--cfg-pad) calc(22 * var(--cfg-px)) var(--cfg-pad) var(--cfg-gutter);
}
.cfg-landing .cfg-split__text .cfg-h-white {
  margin-bottom: calc(14 * var(--cfg-px));
}
.cfg-landing .cfg-split__p {
  font-size: calc(23 * var(--cfg-px));
  line-height: calc(29 / 23);
  margin-bottom: calc(29 * var(--cfg-px));
}
.cfg-landing .cfg-split__p:last-of-type {
  margin-bottom: 0;
}
.cfg-landing .cfg-split__text .cfg-tagline {
  margin-top: calc(24 * var(--cfg-px));
  font-weight: 700;
  font-size: calc(18.7 * var(--cfg-px));
  line-height: 1.3;
  text-transform: uppercase;
  color: var(--cfg-navy);
}
.cfg-landing .cfg-split__photo > .kt-inside-inner-col,
.cfg-landing .cfg-split__photo .cfg-split__img {
  height: 100%;
}
.cfg-landing .cfg-split__img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* ------------------------------------------------------ 9. welcome mural */
/* full viewport width, at the mockup's 520px height (cropped with object-fit: cover, never taller) */
.cfg-landing .cfg-mural > .kt-row-column-wrap {
  max-width: none;
  padding-left: 0;
  padding-right: 0;
}
.cfg-landing .cfg-mural__img img {
  width: 100%;
  height: calc(520 * var(--cfg-px));
  max-height: 520px;
  object-fit: cover;
}

/* ----------------------------------------------------- 10. email sign-up */
.cfg-landing .cfg-signup > .kt-row-column-wrap {
  padding-top: var(--cfg-pad);
  padding-bottom: var(--cfg-pad);
}
.cfg-landing .cfg-signup__lead {
  font-size: calc(23 * var(--cfg-px));
  line-height: 1.3;
  margin-top: calc(6 * var(--cfg-px));
}
.cfg-landing .cfg-form {
  display: grid;
  grid-template-columns: 1.4fr 1.4fr 2fr auto;
  gap: calc(16 * var(--cfg-px));
  margin-top: calc(20 * var(--cfg-px));
}
.cfg-landing .cfg-form input {
  box-sizing: border-box;
  width: 100%;
  height: calc(53 * var(--cfg-px));
  padding: 0 calc(16 * var(--cfg-px));
  background: #fff;
  color: var(--cfg-black);
  border: 3px solid var(--cfg-black);
  border-radius: calc(14 * var(--cfg-px));
  font-family: var(--cfg-body);
  font-size: calc(17 * var(--cfg-px));
}
.cfg-landing .cfg-form input::placeholder {
  color: #6b6b6b;
}
.cfg-landing .cfg-signup__fine {
  margin-top: calc(14 * var(--cfg-px));
  font-size: calc(14 * var(--cfg-px));
  line-height: 1.3;
}
.cfg-landing .cfg-form .screen-reader-text {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}

@media (min-width: 768px) {
  .cfg-landing .cfg-hero .cfg-embed--hero {
    top: calc(349 * var(--cfg-px));   /* starts 39px under the subhead, as in the design */
    bottom: 0;
    height: auto;                     /* the fixed 306px height goes away */
    min-height: calc(306 * var(--cfg-px));
  }
}

/* "That's why we created…": the donation form sits level with the top of the title */
@media (min-width: 1280px) {
  .cfg-landing .cfg-why__b {
    margin-top: calc(-12 * var(--cfg-px));
  }
}

/* "That's why…": one row, two columns: title and copy on the left, the form on the right */
.cfg-landing .cfg-why-body > .kt-row-column-wrap {
  padding-top: var(--cfg-pad);
}
.cfg-landing .cfg-why__a .cfg-h-white {
  margin-bottom: calc(26 * var(--cfg-px));
}
@media (min-width: 768px) {
  .cfg-landing .cfg-why__b > .kt-inside-inner-col {
    padding-top: 6px;               /* lines the form up with the top of the title's letters */
  }
}
@media (min-width: 1280px) {
  .cfg-landing .cfg-why__a .cfg-h-white {
    white-space: nowrap;            /* keeps the designer's two-line title on wide screens */
  }
}

/* ===================================================================
 * Mobile (below 768px): everything stacks into one column.
 * 20px side margins, 32px gaps between bands, 40px section padding.
 * =================================================================== */
@media (max-width: 767px) {
  body.cfg-landing {
    --cfg-px: 1px;
    --cfg-m: 20px;
    --cfg-edge: 0px;
    --cfg-inset: 20px;
    --cfg-gutter: 20px;
    --cfg-gap: 32px;
    --cfg-pad: 40px;
    --cfg-bar-h: 77px;
  }

  .cfg-landing .cfg-sec > .kt-row-column-wrap {
    grid-template-columns: minmax(0, 1fr);
  }

  /* type */
  .cfg-landing .wp-block-kadence-advancedheading.cfg-h-cyan {
    font-size: 30px;
    line-height: 1.15;
    white-space: normal;
  }
  .cfg-landing .wp-block-kadence-advancedheading.cfg-h-white {
    font-size: 36px;
    line-height: 1;
  }
  .cfg-landing .cfg-split .wp-block-kadence-advancedheading.cfg-h-white {
    white-space: normal;
  }
  .cfg-landing .cfg-sec p,
  .cfg-landing .cfg-slide {
    font-size: 16px;
    line-height: 1.5;
  }

  /* hero: H1, subhead, portrait, embed */
  .cfg-landing .cfg-hero__in > .kt-inside-inner-col {
    display: flex;
    flex-direction: column;
    height: auto;
    padding-top: 28px;
  }
  .cfg-landing .wp-block-kadence-advancedheading.cfg-h1 {
    position: static;
    max-width: none;
    font-size: 50px;
    line-height: 0.9;
  }
  .cfg-landing .cfg-hero .cfg-sub {
    position: static;
    max-width: none;
    margin-top: 14px;
    font-size: 19px;
    line-height: 1.4;
  }
  .cfg-landing .cfg-hero .cfg-hero__portrait {
    position: relative;
    top: auto;
    left: auto;
    right: auto;
    bottom: auto;
    align-self: flex-end;
    order: 3; /* portrait stands directly on top of the form box */
    margin-right: calc(-1 * var(--cfg-m));
    margin-top: -6px;
    margin-bottom: 0;
    z-index: 1;
  }
  .cfg-landing .cfg-hero .cfg-hero__portrait img {
    height: 305px;
  }
  .cfg-landing .cfg-embed--hero {
    position: relative;
    order: 4;
    width: 100%;
    height: 300px;
    min-height: 300px;
    margin-bottom: 20px;
  }
  .cfg-landing .cfg-embed__label {
    font-size: 15px;
  }
  .cfg-landing .cfg-embed__note {
    font-size: 12px;
  }
  .cfg-landing .cfg-embed--donate {
    width: 100%;
    min-height: 300px;
    margin: 24px 0 0;
  }

  /* sticky bar: full-width button */
  .cfg-landing .cfg-stickybar .kt-inside-inner-col,
  .cfg-landing .cfg-stickybar .kb-buttons-wrap {
    width: 100%;
  }
  .cfg-landing .cfg-stickybar .kb-buttons-wrap > * {
    width: 100%;
  }
  .cfg-landing .cfg-join-btn,
  .cfg-landing .cfg-sec .kb-button.cfg-join-btn,
  .cfg-landing .cfg-btn {
    width: 100%;
    min-height: 53px;
    font-size: 17px;
    border-radius: 14px;
  }

  /* stats 2 x 2 */
  .cfg-landing .cfg-stats > .kt-row-column-wrap {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: 16px;
    row-gap: 24px;
  }
  .cfg-landing .wp-block-kadence-advancedheading.cfg-stat__num {
    font-size: 48px;
    -webkit-text-stroke-width: 4px;
  }
  .cfg-landing .cfg-stat__cap {
    font-size: 14.5px;
    line-height: 1.2;
    max-width: none;
  }

  /* neighbours: heading, photo, copy */
  .cfg-landing .cfg-neigh-head > .kt-row-column-wrap {
    padding-bottom: 20px;
  }
  .cfg-landing .cfg-neigh > .kt-row-column-wrap {
    padding-left: 0;
    padding-right: 0;
  }
  .cfg-landing .cfg-neigh__a .cfg-neigh__photo img {
    aspect-ratio: 3 / 2; /* the whole photo: 260px tall at 390px wide, and it never crops the people at wider phone sizes */
    object-position: 50% 50%;
  }
  .cfg-landing .cfg-neigh__b > .kt-inside-inner-col {
    padding: 24px var(--cfg-m) 0;
    height: auto;
  }
  .cfg-landing .cfg-neigh__b p {
    margin-bottom: 24px;
  }
  .cfg-landing .cfg-neigh__b p.cfg-footnote {
    margin-top: 16px;
    font-size: 11px;
  }

  /* invest + cards */
  .cfg-landing .cfg-intro,
  .cfg-landing .cfg-faces-head .cfg-intro {
    font-size: 16px;
    line-height: 1.5;
  }
  .cfg-landing .cfg-invest-cards > .kt-row-column-wrap {
    row-gap: 20px;
  }
  .cfg-landing .cfg-card__img img {
    height: 220px;
  }
  .cfg-landing .wp-block-kadence-advancedheading.cfg-card__title {
    font-size: 22px;
    line-height: 26px;
  }
  .cfg-landing .cfg-card__body {
    font-size: 16px;
    line-height: 1.5;
  }

  /* that's why: heading, copy, embed */
  .cfg-landing .cfg-why-body > .kt-row-column-wrap {
    grid-template-columns: minmax(0, 1fr);
  }
  .cfg-landing .cfg-why__a > .kt-inside-inner-col {
    padding-right: 0;
  }
  .cfg-landing .cfg-why__a p {
    font-size: 16px;
    line-height: 1.5;
    margin-bottom: 20px;
  }

  /* photo strip: three stacked, landscape 3:2 like the mobile mockup (350 x 231), not the square used on desktop */
  .cfg-landing .cfg-strip > .kt-row-column-wrap {
    row-gap: 16px;
  }
  .cfg-landing .cfg-strip__img img {
    aspect-ratio: 3 / 2;
  }

  /* faces: photo (260 wide) with the quote card overlapping its bottom */
  .cfg-landing .cfg-face > .kt-row-column-wrap,
  .cfg-landing .cfg-face--left > .kt-row-column-wrap,
  .cfg-landing .cfg-face--right > .kt-row-column-wrap {
    grid-template-columns: minmax(0, 1fr);
    align-items: start;
  }
  .cfg-landing .cfg-face ~ .cfg-face {
    margin-top: 28px;
  }
  .cfg-landing .cfg-face--right .cfg-face__quote {
    order: 2;
    margin-right: 0;
  }
  .cfg-landing .cfg-face--right .cfg-face__photo {
    order: 1;
  }
  .cfg-landing .cfg-face__img img {
    width: 260px;
    height: 347px;
  }
  .cfg-landing .cfg-face--left .cfg-face__quote,
  .cfg-landing .cfg-face--right .cfg-face__quote {
    margin-left: 0;
    margin-top: -40px;
  }
  /* name labels all sit at the top of the photo on mobile */
  .cfg-landing .cfg-face__label--bl,
  .cfg-landing .cfg-face__label--br {
    top: 14px;
    bottom: auto;
  }
  .cfg-landing .cfg-face--left .cfg-face__quote {
    margin-left: 32px;
  }
  .cfg-landing .cfg-face--right .cfg-face__quote {
    margin-right: 32px;
  }
  .cfg-landing .wp-block-kadence-advancedheading.cfg-quote,
  .cfg-landing .cfg-face--right .wp-block-kadence-advancedheading.cfg-quote {
    font-size: 18px;
    line-height: 23px;
    padding: 18px 20px;
    border-width: 6px;
  }
  .cfg-landing .wp-block-kadence-advancedheading.cfg-face__label {
    font-size: 26px;
  }
  .cfg-landing .cfg-face--bottom > .kt-row-column-wrap {
    padding-bottom: 0;
  }
  .cfg-landing .cfg-face--right .cfg-face__photo > .kt-inside-inner-col {
    justify-content: flex-end;
  }

  /* carousel: arrows move under the text, either side of the dots */
  .cfg-landing .cfg-carousel-band > .kt-row-column-wrap {
    min-height: 0;
    padding-top: 32px;
    padding-bottom: 32px;
  }
  .cfg-landing .cfg-carousel {
    width: 100%;
    padding: 18px 18px 20px;
    display: grid;
    grid-template-columns: 36px 1fr 36px;
    column-gap: 12px;
    align-items: center;
  }
  .cfg-landing .cfg-carousel__title {
    grid-column: 1 / -1;
    font-size: 30px;
    margin-bottom: 12px;
  }
  .cfg-landing .cfg-carousel__stage {
    display: contents;
  }
  .cfg-landing .cfg-carousel__slides {
    grid-column: 1 / -1;
    grid-row: 2;
  }
  .cfg-landing .cfg-carousel__arrow--prev {
    grid-column: 1;
    grid-row: 3;
    margin-top: 16px;
  }
  .cfg-landing .cfg-carousel__arrow--next {
    grid-column: 3;
    grid-row: 3;
    margin-top: 16px;
  }
  .cfg-landing .cfg-carousel__dots {
    grid-column: 2;
    grid-row: 3;
    margin-top: 16px;
  }
  .cfg-landing .cfg-slide {
    font-size: 16px;
    line-height: 1.5;
  }

  /* split sections: text first, then full-bleed photo at 340px */
  .cfg-landing .cfg-split > .kt-row-column-wrap {
    grid-template-columns: minmax(0, 1fr);
  }
  .cfg-landing .cfg-split__text > .kt-inside-inner-col {
    padding: 40px var(--cfg-m);
  }
  .cfg-landing .cfg-split__p {
    font-size: 16px;
    line-height: 1.5;
    margin-bottom: 20px;
  }
  .cfg-landing .cfg-split__text .cfg-tagline {
    font-size: 15px;
  }
  .cfg-landing .cfg-split__photo > .kt-inside-inner-col,
  .cfg-landing .cfg-split__photo .cfg-split__img {
    height: 340px;
  }

  /* mural */
  .cfg-landing .cfg-mural__img img {
    height: 260px;
  }

  /* sign-up: fields stack full width */
  .cfg-landing .cfg-form {
    grid-template-columns: minmax(0, 1fr);
    gap: 12px;
  }
  .cfg-landing .cfg-form input {
    height: 53px;
    font-size: 16px;
    border-radius: 14px;
  }
  .cfg-landing .cfg-signup__lead {
    font-size: 17px;
  }
  .cfg-landing .cfg-signup__fine {
    font-size: 12px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .cfg-landing * {
    scroll-behavior: auto !important;
  }
}

.cfg-landing .cfg-embed--hero {
	width: 420px;
	max-width: 420px;
	margin: 0 auto;
}