﻿/* ==========================================================================
   Foundation programme project page (analysis 5.3; AB#99013 visitor, AB#99014 content editor)

   Nine bands between the breadcrumb and the footer, rendered by the view components under
   Views/Shared/Components/FoundationProject<Band>/Default.cshtml.

   Every rule is scoped under .brand-foundation, the class masterFoundation.cshtml puts on <body>, so
   nothing here can reach the ASISA, ESD or Academy layouts (site-within-a-site rule, handover
   31 Aug 2026). Loaded after main.css so its scoped overrides win.

   Provenance. Values marked "frame" were measured on
   design/foundation-programme-project/reference.jpg, the HeyGuys frame of 5 August 2026. That file
   states 1440 px at source, so frame pixels are design pixels and the 0.75 conversion that applies to
   the navigation frame must NOT be applied here. The site column is 1150 px inside .container against
   the design's 1200, 4% narrower, so proportional values are expressed as fractions and absolute ones
   (type, radius, corner legs) are kept as designed rather than scaled.

   Values marked ESTIMATE have no frame behind them. That is now the TABLET block and a handful of named
   tokens, and no longer the phone block: a 360 px mobile render arrived on 9 Sep 2026 and is cached at
   design/foundation-programme-project/reference-mobile.png, so the phone values are measured. Read that
   folder's SOURCE.md before trusting one, because the render is the programme sub-home rather than this
   page, and it is usable only for the bands the two share, which is most of them.

   It also settled a question the analysis had left open. The resolved comments [CB42], [CB53] and
   [CB56] all read "Most sections will be stacked with some components to change to a carousel - design
   dependent", and Cathy Harrison said the same of benefits and news in the handover [1:20:04]. She was
   right on both counts: the benefits band swipes on a phone and so does latest news. Benefits is built
   here as a scroll-snap carousel; latest news belongs to AB#99005. Every other band stacks.
   ========================================================================== */

.brand-foundation {
  /* ---- Colour ---------------------------------------------------------- */
  --fnd-project-bg: #FFFFFF;                           /* frame: the page ground */
  --fnd-project-band-bg: #FDF8ED;                      /* frame: the benefits and statistics bands read #FDF8ED to #FBF4E7 */
  --fnd-project-text: #262626;                         /* Grey/100; frame: headings and body read #24 to #28 */
  --fnd-project-muted: #6B6B6B;                        /* frame: the story cards' source line reads #66 to #70 */
  --fnd-project-panel-bg: #FDF8ED;                     /* frame: the reach map sits on the same cream as the bands */
  --fnd-project-rule: #3E5D3A;                         /* frame: the 4 px rule left of the overview articles reads a
                                                          darker tone of the programme green, so it takes the accent */
  --fnd-project-button-bg: #E4E9E1;                    /* frame: the collaboration buttons read #E2E8E0 to #E6EAE2 */
  --fnd-project-button-chevron: #D2DACE;               /* frame: the chevrons inside them are one step darker */
  --fnd-project-placeholder: #F8F5EA;                  /* INFERENCE: the site's cream, so a slow image leaves the
                                                          brand's ground and not a white hole */
  --fnd-project-font: var(--font-family-main, Arial, Helvetica, sans-serif);

  /* ---- Rhythm ---------------------------------------------------------- */
  --fnd-project-band-gap: 72px;                        /* frame: 76 px from the overview articles to the benefits band,
                                                          78 px from the resources columns to the learning heading */
  --fnd-project-band-pad-y: 64px;                      /* frame: the cream bands run 702 px and 366 px tall around
                                                          content of 574 px and 238 px, so 64 px each side */
  --fnd-project-heading-gap: 16px;                     /* frame: 19 px from a band heading's descenders to its intro */
  --fnd-project-header-to-body: 48px;                  /* frame: 52 px from an intro's descenders to the first row */
  --fnd-project-intro-width: 820px;                    /* frame: the project introduction's widest line measures 812 px */

  /* ---- Type ------------------------------------------------------------ */
  --fnd-project-h1-size: 56px;                         /* frame: "Project Header" is 402 px wide at 14 characters with a
                                                          41 px cap height, which is 0.72 em at 56 px */
  --fnd-project-h2-size: 40px;                         /* frame: the band headings run a 29 px cap height */
  --fnd-project-h3-size: 24px;                         /* frame: the overview and impact copy headings, 17 px cap height */
  --fnd-project-card-title-size: 18px;                 /* frame: 13 px cap height on the article and story card titles */
  --fnd-project-body-size: 16px;                       /* Body/Regular; frame: 8 px x-height, 24 px line pitch */
  --fnd-project-small-size: 14px;                      /* Body/Small; frame: the source line and the statistic note */
  --fnd-project-line-height: 1.5;
  --fnd-project-h1-size-tablet: 40px;                  /* ESTIMATE */
  --fnd-project-h1-size-mobile: 34px;                  /* mobile frame: 24 px cap height, 37 px line pitch */
  --fnd-project-h2-size-tablet: 30px;                  /* ESTIMATE */
  --fnd-project-h2-size-mobile: 30px;                  /* mobile frame: 28 px cap-to-descender, 40 px line pitch */

  /* ---- Images ---------------------------------------------------------- */
  /* The corner treatment is the estate's, already measured twice: three corners rounded and the TOP
     RIGHT square, because the accent triangle's corner is a right angle and rounding the box behind it
     clips the tip into a curve. Confirmed again on this frame: every image on it (the overview
     thumbnail, the benefit cards, the story cards, the featured story panel) has an inset of 0 on
     every row of its top right corner and an accent-coloured corner pixel. */
  --fnd-project-radius-sm: 8px;                        /* frame: the 130 px thumbnail's arc reaches the edge 7 to 8 px along */
  --fnd-project-radius-md: 14px;                       /* frame: the 315 to 383 px cards' arcs reach 12 to 14 px along */
  --fnd-project-radius-lg: 24px;                       /* frame: the 587 px panels' arcs, and the same 24 px the gallery measured */
  --fnd-project-corner-sm: 26px;                       /* frame: 26 px legs on the thumbnail */
  --fnd-project-corner-md: 44px;                       /* frame: 44 px legs on the benefit and story cards */
  --fnd-project-corner-lg: 56px;                       /* frame: 57 px legs on the featured story panel, as the gallery's */

  --fnd-project-thumb-size: 130px;                     /* frame: the overview thumbnail is 129 x 130 px */

  /* Phone geometry, read off the 360 px mobile frame. */
  --fnd-project-gutter-phone: 16px;                    /* mobile frame: the content column is x 16..343 */
  --fnd-project-benefit-card-phone: 295px;             /* mobile frame: a benefits card runs x 16..310 */
  --fnd-project-benefit-ratio: 315 / 273;              /* frame: x 52..367, y 1951..2223 */
  --fnd-project-story-card-ratio: 383 / 261;           /* frame: x 113..496, y 6494..6755 */
  --fnd-project-panel-ratio: 587 / 410;                /* frame: the featured story picture, x 725..1312, y 5983..6393 */
  --fnd-project-map-ratio: 656 / 500;                  /* frame: the reach map panel, x 656..1312, y 4893..5390 */

  /* ---- Grid ------------------------------------------------------------ */
  --fnd-project-col-gap: 24px;                         /* frame: 25 px between the 383 px columns of the resources,
                                                          collaboration and story rows */
  --fnd-project-benefits-gap: 20px;                    /* frame: 21 px between the 315 px benefit cards */
  --fnd-project-benefit-number-size: 64px;             /* 5.5 frame: the numeral stands about 60 px, x 246..300, y 2905..2965 */
  --fnd-project-benefit-number-pad: 36px;              /* 5.5 frame: 32 to 40 above the numeral inside a 228 px card */
  --fnd-project-benefits-width: 1320px;                /* frame: the benefits row runs x 52..1372, WIDER than the
                                                          1200 px site column, so this band breaks out of it */
  --fnd-project-overview-split: 44%;                   /* frame: the narrative column runs x 120..640 of a 1200 column */
  /* frame: the media panel occupies x 644..1312 of the 113..1312 content column, so 669 of 1200,
     and with the 56 px gap the copy column is the 475 px that remain. Re-measured by scanning the
     panel's cream fill on design/foundation-programme-project/bands/08-impact-of-programme.jpg; the
     earlier 44% was read off the frame by eye and made the panel 59 px too narrow. */
  --fnd-project-impact-split: 39.5%;
  --fnd-project-rule-width: 4px;                       /* frame: the rule left of the overview articles reads x 696..699 */

  /* ---- Buttons --------------------------------------------------------- */
  --fnd-project-pill-radius: 999px;                    /* frame: fully round ends */
  --fnd-project-pill-pad-x: 22px;                      /* frame: "Read More" is 100 px wide over 56 px of text */
  --fnd-project-pill-pad-y: 9px;                       /* frame: 34 px tall over a 16 px line */
  --fnd-project-pill-border: 1px;                      /* frame: a hairline, one pixel at this scale */
  --fnd-project-collab-height: 108px;                  /* frame: the collaboration buttons run y 4523..4630 */
  --fnd-project-collab-chevrons: 92px;                 /* frame: the chevron block runs x 113..205 inside the button */

  /* ---- The chevron motif ------------------------------------------------ */
  --fnd-project-chevron-w: 58px;                       /* frame: each chevron in the resources bar is about 58 px wide */
  --fnd-project-chevron-h: 44px;                       /* frame: it hangs about 44 px into the 90 px bar */
  --fnd-project-chevron-pair: 116px;                   /* frame: the pair runs about 116 px wide */
}

/* ==========================================================================
   Shared pieces
   ========================================================================== */

/* The estate does not set border-box globally: main.css sets it on four of its own components and
   nowhere else. So a min-height here was adding its padding on top rather than containing it, and
   every boxed piece on this page came out exactly its vertical padding too tall: the resource bar
   at 122 px against the frame's 90, the collaboration button at 140 against 108. Measured on the
   rendered page on 9 September 2026, which is the only way this shows up, because each value looks
   right in the file.

   Scoped to this feature's own classes, and no further. A descendant selector would also change the
   box model of an editor's rich text inside a band, which would then size differently from the same
   markup everywhere else on the site. */
.brand-foundation [class*='fnd-project'] {
  box-sizing: border-box;
}

/* Every band declares the accent on ITSELF, not on body: a custom property resolves where it is
   declared, and the view sets --programme-accent on the section element. Declaring these on
   .brand-foundation instead would leave them resolving against nothing inside the band. */
.brand-foundation .fnd-project-overview,
.brand-foundation .fnd-project-benefits,
.brand-foundation .fnd-project-resources,
.brand-foundation .fnd-project-learning,
.brand-foundation .fnd-project-collaboration,
.brand-foundation .fnd-project-impact,
.brand-foundation .fnd-project-stats,
.brand-foundation .fnd-project-story,
.brand-foundation .fnd-project-stories {
  /* The programme colour, else ASISA Foundation Signature Colour/100. */
  --fnd-project-accent: var(--programme-accent, var(--foundation, #A137B7));
  /* The same colour restricted to what can be read as text on a pale ground. The service emits
     --programme-accent-ink alongside --programme-accent and substitutes the Foundation violet when the
     editor's colour cannot reach 3:1, the WCAG 1.4.11 floor. Text reads this token; the decorative
     corner triangle reads the raw one, because a pale triangle is a design choice and pale text is a
     barrier. */
  --fnd-project-accent-ink: var(--programme-accent-ink, var(--foundation, #A137B7));

  font-family: var(--fnd-project-font);
  color: var(--fnd-project-text);
  font-size: var(--fnd-project-body-size);
  line-height: var(--fnd-project-line-height);
}

/* main.css:333 gives every link inside a p, h1, h2, h3 or li a 2 px bottom border, a 14 px size and
   bold weight. Editor copy in these bands no longer takes it: each rich text wrapper carries
   id="pageBody" so foundation-rich-text.css (AB#99067) governs it, which is bold, no rule and the
   surrounding size. That is the Foundation's own body-copy link, and the point of the id is that a
   link an editor writes here looks like one they write on any other Foundation page.

   What main.css's rule is wrong for is this feature's own links: a card title, a thumbnail, a resource link and a
   button, each of which the frame draws at its own size with no rule under it. So the border is
   cleared on those classes by name, and each sets its own size and weight below.

   Named classes rather than a descendant selector, and this way round on purpose. A band-level
   descendant reset (.brand-foundation .fnd-project-x a) also outranks the single-class rules below
   it, so every element's own size and weight would lose to `inherit`; that silently un-bolded the
   resource links on the first pass. Wrapping that in :where() to drop its weight then loses the border
   reset to main.css, because :where() counts as nothing at all. Two classes beat main.css's two type
   selectors, and touch nothing else. */
.brand-foundation .fnd-project__pill,
.brand-foundation .fnd-project-card__media,
.brand-foundation .fnd-project-card__title-link,
.brand-foundation .fnd-project-resources__link,
.brand-foundation .fnd-project-collaboration__button,
.brand-foundation .fnd-project-stories__media,
.brand-foundation .fnd-project-stories__title-link {
  border-bottom: 0;
}

/* Editor lists keep the programme colour on their markers.

   foundation-rich-text.css replaces the estate's generated bullet with the native list marker, so an
   ordered list numbers itself and a screen reader still hears a list. The native marker takes its
   colour from the list item rather than from the ::before it replaced, so the programme colour has to
   be declared on ::marker or it is silently lost. The five Foundation page views that hold editor copy
   each do this in an inline <style> block with a Razor-computed hex; this feature already carries the
   colour as a custom property on every band root, so here it is one rule.

   The ink token, not the raw accent: a bullet is a small graphical object, so WCAG 1.4.11 wants 3:1
   against the page and the ink token is the value that guarantees it.

   Both halves of the selector sit on the SAME element, with no space: the wrapper that receives the
   editor HTML is the one carrying both the band class and the id, so this cannot reach a list
   anywhere else on the page or the site. */
.brand-foundation [class*='fnd-project']#pageBody ul li::marker,
.brand-foundation [class*='fnd-project']#pageBody ol li::marker {
  color: var(--fnd-project-accent-ink);
}

/* Visible to a screen reader, not on screen. Used to name a repeated button after the thing it acts
   on, and to warn that a link opens in a new tab. */
.brand-foundation .fnd-project__sr {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* The outline pill button. Note that it does NOT take the programme accent: the frame shows the
   Foundation magenta on the WageWise page, on every pill, so the button belongs to the Foundation's
   identity rather than the programme's. */
.brand-foundation .fnd-project__pill {
  display: inline-block;
  padding: var(--fnd-project-pill-pad-y) var(--fnd-project-pill-pad-x);
  border: var(--fnd-project-pill-border) solid var(--foundation, #A137B7);
  border-radius: var(--fnd-project-pill-radius);
  color: var(--foundation, #A137B7);
  font-size: var(--fnd-project-small-size);
  font-weight: 700;
  line-height: 1.2;
  text-decoration: none;
}

.brand-foundation .fnd-project__pill:hover,
.brand-foundation .fnd-project__pill:focus-visible {
  background: var(--foundation, #A137B7);
  color: #FFFFFF;
}

.brand-foundation .fnd-project__pill:focus-visible {
  outline: 2px solid var(--fnd-project-accent-ink);
  outline-offset: 2px;
}

/* The wide picture-or-video panel, shared by the reach map and the featured story. */
.brand-foundation .fnd-project__media {
  position: relative;
  overflow: hidden;                                    /* clips the corner triangle to the rounded box */
  border-radius: var(--fnd-project-radius-lg) 0 var(--fnd-project-radius-lg) var(--fnd-project-radius-lg);
  background: var(--fnd-project-placeholder);
}

.brand-foundation .fnd-project__media-item {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.brand-foundation .fnd-project__media-corner {
  position: absolute;
  top: 0;
  right: 0;
  width: 0;
  height: 0;
  border-top: var(--fnd-project-corner-lg) solid var(--fnd-project-accent);
  border-left: var(--fnd-project-corner-lg) solid transparent;
}

/* ---- The article card, used by the overview row and the learning articles row ---- */

.brand-foundation .fnd-project-card {
  display: flex;
  gap: 20px;                                           /* frame: 22 px from the thumbnail to the title */
  align-items: flex-start;
}

.brand-foundation .fnd-project-card__media {
  position: relative;
  display: block;
  flex: 0 0 var(--fnd-project-thumb-size);
  width: var(--fnd-project-thumb-size);
  height: var(--fnd-project-thumb-size);
  overflow: hidden;
  border-radius: var(--fnd-project-radius-sm) 0 var(--fnd-project-radius-sm) var(--fnd-project-radius-sm);
  background: var(--fnd-project-placeholder);
}

.brand-foundation .fnd-project-card__image {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.brand-foundation .fnd-project-card__corner {
  position: absolute;
  top: 0;
  right: 0;
  width: 0;
  height: 0;
  border-top: var(--fnd-project-corner-sm) solid var(--fnd-project-accent);
  border-left: var(--fnd-project-corner-sm) solid transparent;
}

.brand-foundation .fnd-project-card__body {
  flex: 1 1 auto;
  min-width: 0;                                        /* lets a long title wrap instead of stretching the row */
}

.brand-foundation .fnd-project-card__title {
  color: var(--fnd-project-text);
  margin: 0 0 8px;                                     /* frame: 9 px from the title descenders to the blurb */
  font-size: var(--fnd-project-card-title-size);
  line-height: 1.3;
}

.brand-foundation .fnd-project-card__title-link {
  color: inherit;
  font-size: inherit;
  font-weight: inherit;
  text-decoration: none;
}

.brand-foundation .fnd-project-card__title-link:hover {
  text-decoration: underline;
}

.brand-foundation .fnd-project-card__blurb {
  margin: 0 0 14px;                                    /* frame: 16 px from the blurb to the button */

  /* Held to three lines, which is the most the frame's own blurbs run to, and two of the three end
     in an ellipsis. Without this one long summary turns a three-card row into a column of unequal
     towers: an editor's blurb is free text, and until the central store lands in Sprint 2 a chosen
     article's blurb is whatever its Summary field holds, which on the legacy pages is a whole
     article. Prefixed properties only: the unprefixed line-clamp is not in any shipped browser. */
  display: -webkit-box;
  -webkit-line-clamp: 3;                               /* frame: three lines on the longest card */
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/* ==========================================================================
   Band 2 and 3: overview
   ========================================================================== */

.brand-foundation .fnd-project-overview {
  background: var(--fnd-project-bg);
  padding: var(--fnd-project-band-pad-y) 0 0;
}

.brand-foundation .fnd-project-overview__heading {
  color: var(--fnd-project-text);
  margin: 0 0 var(--fnd-project-heading-gap);
  font-size: var(--fnd-project-h1-size);
  line-height: 1.1;
  text-align: center;
}

.brand-foundation .fnd-project-overview__intro {
  max-width: var(--fnd-project-intro-width);
  margin: 0 auto var(--fnd-project-header-to-body);
  text-align: center;
}

.brand-foundation .fnd-project-overview__intro > :last-child {
  margin-bottom: 0;
}

.brand-foundation .fnd-project-overview__row {
  display: grid;
  grid-template-columns: var(--fnd-project-overview-split) 1fr;
  gap: 56px;                                           /* frame: 56 px from the narrative column to the rule */
  align-items: start;
}

/* No articles: the narrative has the row to itself rather than leaving half of it empty. */
.brand-foundation .fnd-project-overview__row--wide {
  grid-template-columns: 1fr;
}

.brand-foundation .fnd-project-overview__narrative-heading {
  color: var(--fnd-project-text);
  margin: 0 0 16px;
  font-size: var(--fnd-project-h2-size);
  line-height: 1.15;
}

.brand-foundation .fnd-project-overview__narrative-body {
  margin: 0 0 24px;                                    /* frame: 26 px from the text to the button */
}

.brand-foundation .fnd-project-overview__narrative-body > :last-child {
  margin-bottom: 0;
}

/* The rule down the left of the article column, in the programme's colour. */
.brand-foundation .fnd-project-overview__cards {
  margin: 0;
  padding: 0 0 0 20px;
  list-style: none;
  border-left: var(--fnd-project-rule-width) solid var(--fnd-project-accent);
}

.brand-foundation .fnd-project-overview__card + .fnd-project-overview__card {
  margin-top: 24px;                                    /* frame: 26 px between the stacked articles */
}

/* ==========================================================================
   Band 4: benefits
   ========================================================================== */

.brand-foundation .fnd-project-benefits {
  position: relative;
  margin-top: var(--fnd-project-band-gap);
  padding: var(--fnd-project-band-pad-y) 0;
  background: var(--fnd-project-band-bg);
  overflow: hidden;                                    /* keeps the pattern inside the band */
}

/* The Foundation's geometric pattern, drawn rather than uploaded, the same approach the banner takes.
   A repeating tile of two triangles per cell at a low opacity: the frame shows a field of pale
   triangles the width of the band, not a placed graphic. ESTIMATE: the tile size is read off the frame
   at about 96 px, but the frame's pattern is cut off at both edges so the true tile may differ. */
.brand-foundation .fnd-project-benefits__pattern {
  position: absolute;
  inset: 0;
  pointer-events: none;
  background-image:
    linear-gradient(135deg, rgba(200, 190, 160, 0.18) 0 50%, transparent 50% 100%),
    linear-gradient(315deg, rgba(200, 190, 160, 0.12) 0 50%, transparent 50% 100%);
  background-size: 96px 96px, 96px 96px;
  background-position: 0 0, 48px 48px;
}

.brand-foundation .fnd-project-benefits__inner {
  position: relative;                                  /* above the pattern */
  /* The one band that is wider than the site column, per the frame. */
  max-width: var(--fnd-project-benefits-width);
}

.brand-foundation .fnd-project-benefits__heading {
  color: var(--fnd-project-text);
  margin: 0 0 var(--fnd-project-heading-gap);
  font-size: var(--fnd-project-h2-size);
  line-height: 1.15;
  text-align: center;
}

.brand-foundation .fnd-project-benefits__intro {
  max-width: var(--fnd-project-intro-width);
  margin: 0 auto var(--fnd-project-header-to-body);
  text-align: center;
}

.brand-foundation .fnd-project-benefits__grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--fnd-project-benefits-gap);
  margin: 0;
  padding: 0;
  list-style: none;
}

/* A white card whose top corners follow the image's, so the image and the card read as one box. */
.brand-foundation .fnd-project-benefits__card {
  display: flex;
  flex-direction: column;
  overflow: hidden;
  border-radius: var(--fnd-project-radius-md) 0 var(--fnd-project-radius-md) var(--fnd-project-radius-md);
  background: #FFFFFF;
}

.brand-foundation .fnd-project-benefits__media {
  position: relative;
  display: block;
  aspect-ratio: var(--fnd-project-benefit-ratio);
  background: var(--fnd-project-placeholder);
}

.brand-foundation .fnd-project-benefits__image {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.brand-foundation .fnd-project-benefits__corner {
  position: absolute;
  top: 0;
  right: 0;
  width: 0;
  height: 0;
  border-top: var(--fnd-project-corner-md) solid var(--fnd-project-accent);
  border-left: var(--fnd-project-corner-md) solid transparent;
}

.brand-foundation .fnd-project-benefits__body {
  padding: 20px 22px 28px;                             /* frame: 22 px in from the card edge, 20 px under the image */
}

.brand-foundation .fnd-project-benefits__title {
  color: var(--fnd-project-text);
  margin: 0;
  font-size: var(--fnd-project-card-title-size);
  line-height: 1.35;
}

.brand-foundation .fnd-project-benefits__blurb {
  margin: 10px 0 0;
}

/* --------------------------------------------------------------------------
   The NUMBERED form of the same band (AB#100745 / AB#100746).

   The 5.5 frame draws these boxes as a numeral over a line of copy, with no picture, and it inverts
   the 5.3 band's colours: 5.3 puts white cards on a full-bleed cream band carrying the Foundation
   pattern, and 5.5 puts cream cards on plain white. One band, two drawings, chosen by whether the
   boxes carry numbers, which is a reading of the content and not a switch an editor has to
   understand.

   Measured on design/foundation-programme-support/reference.jpg: the four cards run x 120..395,
   428..703, 736..1011 and 1044..1319, so 276 wide with a 32 gutter, and each is 228 tall. The cream
   is the same one the statistics band uses.

   The phone frame of the same page draws these boxes on a full-bleed cream band instead, agreeing
   with 5.3 and not with its own desktop. Built to the desktop frame, which is the work item
   attachment, and recorded as divergence 5 in design/foundation-programme-support/SOURCE.md.
   -------------------------------------------------------------------------- */

.brand-foundation .fnd-project-benefits--numbered {
  background: none;
}

.brand-foundation .fnd-project-benefits--numbered .fnd-project-benefits__grid {
  gap: 32px;                                           /* frame: 32 between the four 276 px cards */
}

.brand-foundation .fnd-project-benefits--numbered .fnd-project-benefits__card {
  background: var(--fnd-project-band-bg);
  text-align: center;
}

.brand-foundation .fnd-project-benefits--numbered .fnd-project-benefits__body {
  padding: 0 24px 32px;                                /* frame: the copy clears the card edge by 24 */
}

/* The numeral takes the picture's place at the top of the card. A block rather than a heading: it
   orders the boxes visually and the list already carries the order for anyone who cannot see it. */
.brand-foundation .fnd-project-benefits__number {
  display: block;
  padding-top: var(--fnd-project-benefit-number-pad);
  color: var(--fnd-project-accent);
  font-size: var(--fnd-project-benefit-number-size);
  font-weight: 700;
  line-height: 1;
  text-align: center;
}

/* The corner triangle belongs to the picture, and a numbered card has none, so it is drawn on the
   card itself. The 5.5 frame keeps it: every box carries the green notch at its top right. */
.brand-foundation .fnd-project-benefits__card--numbered {
  position: relative;
}

.brand-foundation .fnd-project-benefits__card--numbered::after {
  content: "";
  position: absolute;
  top: 0;
  right: 0;
  width: 0;
  height: 0;
  border-top: var(--fnd-project-corner-md) solid var(--fnd-project-accent);
  border-left: var(--fnd-project-corner-md) solid transparent;
}

/* The buttons under the boxes, the 5.5 frame's funding detail strip. They carry the collaboration
   band's own classes, so all this rule adds is the gap above them: the frame measures the two strips
   identically, and one set of rules is what keeps them that way. */
.brand-foundation .fnd-project-benefits__buttons {
  margin-top: 52px;                                    /* frame: 3079 to 3214, less the cards' own padding */
}

/* ==========================================================================
   Bands 5 to 7: resources and tools
   ========================================================================== */

.brand-foundation .fnd-project-resources {
  margin-top: var(--fnd-project-band-gap);
  background: var(--fnd-project-bg);
}

.brand-foundation .fnd-project-resources__heading {
  color: var(--fnd-project-text);
  margin: 0 0 var(--fnd-project-heading-gap);
  font-size: var(--fnd-project-h2-size);
  line-height: 1.15;
  text-align: center;
}

.brand-foundation .fnd-project-resources__intro {
  max-width: var(--fnd-project-intro-width);
  margin: 0 auto var(--fnd-project-header-to-body);
  text-align: center;
}

.brand-foundation .fnd-project-resources__columns {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--fnd-project-col-gap);
  align-items: start;
}

.brand-foundation .fnd-project-resources__column {
  overflow: hidden;
  border-radius: var(--fnd-project-radius-md) 0 var(--fnd-project-radius-md) var(--fnd-project-radius-md);
  background: var(--fnd-project-band-bg);
}

/* The bar in the programme's colour. White text on the accent, which is why the bar reads the raw
   accent and not the ink token: the design chooses the colour and white sits on all eight of them. */
.brand-foundation .fnd-project-resources__bar {
  position: relative;
  display: flex;
  align-items: center;
  gap: 12px;
  min-height: 90px;                                    /* frame: the bar runs y 2715..2804 */
  padding: 16px 22px;
  background: var(--fnd-project-accent);
  color: #FFFFFF;
  overflow: hidden;
}

.brand-foundation .fnd-project-resources__icon {
  display: block;
  width: 28px;                                         /* ESTIMATE: the frame's bars carry no icon */
  height: 28px;
  object-fit: contain;
}

.brand-foundation .fnd-project-resources__category {
  /* White on the accent bar. Set here as well as on the bar, because main.css colours every h3. */
  color: #FFFFFF;
  margin: 0;
  font-size: 22px;                                     /* frame: 16 px cap height on "Credit Management" */
  line-height: 1.2;
}

/* Two chevrons at the right of the bar, in a lighter tone of the accent, hanging from the top edge and
   pointing down. Drawn rather than uploaded: the banner draws the same family of shapes, and adding an
   eighth recoloured SVG to the estate is what that decision avoided.

   Border triangles on two pseudo-elements rather than gradients. A gradient pair can only make the
   diagonal halves of a box, which comes out as an upward peak, and the frame's shapes point down. */
.brand-foundation .fnd-project-resources__chevrons {
  position: absolute;
  top: 0;
  right: 0;
  width: var(--fnd-project-chevron-pair);
  height: 100%;
  overflow: hidden;                                    /* clips a triangle to the bar */
}

.brand-foundation .fnd-project-resources__chevrons::before,
.brand-foundation .fnd-project-resources__chevrons::after {
  content: "";
  position: absolute;
  top: 0;
  width: 0;
  height: 0;
  border-left: calc(var(--fnd-project-chevron-w) / 2) solid transparent;
  border-right: calc(var(--fnd-project-chevron-w) / 2) solid transparent;
  border-top: var(--fnd-project-chevron-h) solid rgba(255, 255, 255, 0.16);
}

.brand-foundation .fnd-project-resources__chevrons::before {
  left: 0;
}

.brand-foundation .fnd-project-resources__chevrons::after {
  left: var(--fnd-project-chevron-w);
}

.brand-foundation .fnd-project-resources__links {
  margin: 0;
  padding: 22px 22px 26px;
  list-style: none;
}

.brand-foundation .fnd-project-resources__item {
  position: relative;
  padding-left: 22px;
}

.brand-foundation .fnd-project-resources__item + .fnd-project-resources__item {
  margin-top: 18px;                                    /* frame: 19 px between links */
}

/* The bullet is a small filled triangle in the accent, drawn on the item so it is never part of the
   link's accessible name. */
.brand-foundation .fnd-project-resources__item::before {
  content: "";
  position: absolute;
  top: 6px;
  left: 0;
  width: 0;
  height: 0;
  border-top: 9px solid var(--fnd-project-accent);
  border-right: 9px solid transparent;
}

.brand-foundation .fnd-project-resources__link {
  color: inherit;
  font-size: var(--fnd-project-small-size);            /* frame: 11 px cap height, bold */
  font-weight: 700;
  line-height: 1.45;
  text-decoration: none;
}

.brand-foundation .fnd-project-resources__link:hover {
  text-decoration: underline;
}

.brand-foundation .fnd-project-resources__link:focus-visible {
  outline: 2px solid var(--fnd-project-accent-ink);
  outline-offset: 2px;
}

/* ==========================================================================
   Band 8: learning articles
   ========================================================================== */

.brand-foundation .fnd-project-learning {
  margin-top: var(--fnd-project-band-gap);
  background: var(--fnd-project-bg);
}

.brand-foundation .fnd-project-learning__heading {
  color: var(--fnd-project-text);
  margin: 0 0 var(--fnd-project-header-to-body);
  font-size: var(--fnd-project-h2-size);
  line-height: 1.15;
  text-align: center;
}

.brand-foundation .fnd-project-learning__intro {
  max-width: var(--fnd-project-intro-width);
  margin: calc(var(--fnd-project-header-to-body) * -1 + var(--fnd-project-heading-gap)) auto var(--fnd-project-header-to-body);
  text-align: center;
}

.brand-foundation .fnd-project-learning__row {
  display: grid;
  grid-template-columns: var(--fnd-project-overview-split) 1fr;
  gap: 56px;
  align-items: start;
}

/* The featured article is the same card in a larger arrangement: its picture is dropped and its
   heading takes the section's h3 size, which is what the frame shows on the left of the row. */
.brand-foundation .fnd-project-learning__featured .fnd-project-card__media {
  display: none;
}

.brand-foundation .fnd-project-learning__featured .fnd-project-card__title {
  margin-bottom: 16px;
  font-size: var(--fnd-project-h3-size);
  line-height: 1.25;
}

.brand-foundation .fnd-project-learning__featured .fnd-project-card__blurb {
  margin-bottom: 24px;
}

.brand-foundation .fnd-project-learning__rest {
  margin: 0;
  padding: 0 0 0 20px;
  list-style: none;
  border-left: var(--fnd-project-rule-width) solid var(--fnd-project-accent);
}

.brand-foundation .fnd-project-learning__item + .fnd-project-learning__item {
  margin-top: 24px;
}

/* ==========================================================================
   Band 12: collaboration options
   ========================================================================== */

.brand-foundation .fnd-project-collaboration {
  margin-top: var(--fnd-project-band-gap);
  background: var(--fnd-project-bg);
}

.brand-foundation .fnd-project-collaboration__row {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--fnd-project-col-gap);
  margin: 0;
  padding: 0;
  list-style: none;
}

/* The button, its chevrons and its arrow are all drawn: there is no image field, by ruling. */
.brand-foundation .fnd-project-collaboration__button {
  position: relative;
  display: flex;
  align-items: center;
  gap: 16px;
  min-height: var(--fnd-project-collab-height);
  padding: 16px 46px 16px calc(var(--fnd-project-collab-chevrons) + 16px);
  border-radius: 0 var(--fnd-project-radius-md) var(--fnd-project-radius-md) 0;
                                                       /* frame: the left edge is square and the right is rounded */
  background: var(--fnd-project-button-bg);
  color: var(--fnd-project-text);
  font-size: var(--fnd-project-body-size);             /* frame: 12 px cap height, bold */
  font-weight: 700;
  line-height: 1.35;
  text-decoration: none;
}

.brand-foundation .fnd-project-collaboration__button:hover {
  background: var(--fnd-project-button-chevron);
}

.brand-foundation .fnd-project-collaboration__button:focus-visible {
  outline: 2px solid var(--fnd-project-accent-ink);
  outline-offset: 2px;
}

/* The same pair of downward chevrons as the resources bar, in the button's own darker tone, at the
   left rather than the right. */
.brand-foundation .fnd-project-collaboration__chevrons {
  position: absolute;
  top: 0;
  left: 0;
  width: var(--fnd-project-collab-chevrons);
  height: 100%;
  overflow: hidden;
}

.brand-foundation .fnd-project-collaboration__chevrons::before,
.brand-foundation .fnd-project-collaboration__chevrons::after {
  content: "";
  position: absolute;
  top: 0;
  width: 0;
  height: 0;
  border-left: 23px solid transparent;
  border-right: 23px solid transparent;
  border-top: 40px solid var(--fnd-project-button-chevron);
                                                       /* frame: 46 px wide, 40 px deep, hanging from the top */
}

.brand-foundation .fnd-project-collaboration__chevrons::before {
  left: 0;
}

.brand-foundation .fnd-project-collaboration__chevrons::after {
  left: 46px;
}

.brand-foundation .fnd-project-collaboration__label {
  flex: 1 1 auto;
}

/* A filled triangle pointing right, in the text colour, at the button's right edge. */
.brand-foundation .fnd-project-collaboration__arrow {
  position: absolute;
  top: 50%;
  right: 22px;
  width: 0;
  height: 0;
  transform: translateY(-50%);
  border-top: 7px solid transparent;
  border-bottom: 7px solid transparent;
  border-left: 10px solid var(--fnd-project-text);
}

/* ==========================================================================
   Bands 13 and 14: impact of the programme
   ========================================================================== */

.brand-foundation .fnd-project-impact {
  margin-top: var(--fnd-project-band-gap);
  background: var(--fnd-project-bg);
}

.brand-foundation .fnd-project-impact__heading {
  color: var(--fnd-project-text);
  margin: 0 0 var(--fnd-project-heading-gap);
  font-size: var(--fnd-project-h2-size);
  line-height: 1.15;
  text-align: center;
}

.brand-foundation .fnd-project-impact__intro {
  max-width: var(--fnd-project-intro-width);
  margin: 0 auto var(--fnd-project-header-to-body);
  text-align: center;
}

/* The copy is centred against the panel rather than sitting at its top. That was the one point of
   disagreement in the handover and Cathy Harrison's reading was taken: with less text under the
   heading it still sits centre on the image. */
.brand-foundation .fnd-project-impact__row {
  display: grid;
  grid-template-columns: var(--fnd-project-impact-split) 1fr;
  gap: 56px;
  align-items: center;
}

.brand-foundation .fnd-project-impact__row--wide {
  grid-template-columns: 1fr;
}

.brand-foundation .fnd-project-impact__copy-heading {
  color: var(--fnd-project-text);
  margin: 0 0 16px;
  font-size: var(--fnd-project-h3-size);
  line-height: 1.25;
}

.brand-foundation .fnd-project-impact__copy-body {
  margin: 0 0 24px;
}

.brand-foundation .fnd-project-impact__copy-body > :last-child {
  margin-bottom: 0;
}

/* The map sits on cream and is shown whole, so it is contained rather than cropped: a map cropped to
   fill would lose a province. */
.brand-foundation .fnd-project-impact__panel {
  aspect-ratio: var(--fnd-project-map-ratio);
  background: var(--fnd-project-panel-bg);
}

.brand-foundation .fnd-project-impact__panel .fnd-project__media-item {
  object-fit: contain;
}

/* The map is a graphic on cream, not a photograph filling a box, so it takes no corner triangle: the
   frame shows none on it. */
.brand-foundation .fnd-project-impact__panel .fnd-project__media-corner {
  display: none;
}

/* ==========================================================================
   Band 15: statistics
   ========================================================================== */

.brand-foundation .fnd-project-stats {
  margin-top: var(--fnd-project-band-gap);
  padding: var(--fnd-project-band-pad-y) 0;
  background: var(--fnd-project-band-bg);
}

.brand-foundation .fnd-project-stats__heading {
  color: var(--fnd-project-text);
  margin: 0 0 var(--fnd-project-header-to-body);
  font-size: var(--fnd-project-h3-size);               /* frame: 20 px cap height, smaller than a band heading */
  line-height: 1.3;
  text-align: center;
}

.brand-foundation .fnd-project-stats__row {
  display: flex;
  gap: 96px;                                           /* frame: the figures' centres are 233 px apart over 106 px of text */
  justify-content: center;
  margin: 0;
}

/* The term is before the description in the markup, as the specification requires, and reversed here
   so the figure still sits above its label. */
.brand-foundation .fnd-project-stats__item {
  display: flex;
  flex-direction: column-reverse;
  align-items: center;
  text-align: center;
}

.brand-foundation .fnd-project-stats__value {
  margin: 0 0 6px;
  color: var(--fnd-project-accent-ink);
  font-size: 60px;                                     /* frame: the figures run a 43 px cap height, 0.72 em at 60 px */
  font-weight: 700;
  line-height: 1;
}

.brand-foundation .fnd-project-stats__label {
  font-size: var(--fnd-project-small-size);
  font-weight: 700;
}

.brand-foundation .fnd-project-stats__note {
  display: block;
  margin-top: 2px;
  font-weight: 400;
}

/* ==========================================================================
   Band 16: the featured impact story
   ========================================================================== */

.brand-foundation .fnd-project-story {
  margin-top: var(--fnd-project-band-gap);
  background: var(--fnd-project-bg);
}

.brand-foundation .fnd-project-story__inner {
  display: grid;
  grid-template-columns: var(--fnd-project-impact-split) 1fr;
  gap: 56px;
  align-items: center;
}

/* The tag is a pill in the programme's colour with white text on it. */
.brand-foundation .fnd-project-story__tag {
  display: inline-block;
  margin: 0 0 20px;
  padding: 6px 14px;
  border-radius: 6px;                                  /* frame: a small radius, not a full pill */
  background: var(--fnd-project-accent);
  color: #FFFFFF;
  font-size: var(--fnd-project-small-size);
  font-weight: 700;
  line-height: 1.2;
}

.brand-foundation .fnd-project-story__heading {
  color: var(--fnd-project-text);
  margin: 0 0 16px;
  font-size: var(--fnd-project-h3-size);
  line-height: 1.25;
}

.brand-foundation .fnd-project-story__body {
  margin: 0 0 24px;
}

.brand-foundation .fnd-project-story__body > :last-child {
  margin-bottom: 0;
}

.brand-foundation .fnd-project-story__panel {
  aspect-ratio: var(--fnd-project-panel-ratio);
}

/* ==========================================================================
   Band 17: the impact stories row
   ========================================================================== */

.brand-foundation .fnd-project-stories {
  margin: var(--fnd-project-band-gap) 0 var(--fnd-project-band-gap);
  background: var(--fnd-project-bg);
}

.brand-foundation .fnd-project-stories__grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--fnd-project-col-gap);
  margin: 0;
  padding: 0;
  list-style: none;
}

.brand-foundation .fnd-project-stories__media {
  position: relative;
  display: block;
  margin: 0 0 18px;                                    /* frame: 19 px from the picture to the source line */
  overflow: hidden;
  border-radius: var(--fnd-project-radius-md) 0 var(--fnd-project-radius-md) var(--fnd-project-radius-md);
  aspect-ratio: var(--fnd-project-story-card-ratio);
  background: var(--fnd-project-placeholder);
}

.brand-foundation .fnd-project-stories__image {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* The tag sits over the picture, top left, in the programme's colour. */
.brand-foundation .fnd-project-stories__tag {
  position: absolute;
  top: 14px;
  left: 14px;
  padding: 5px 12px;
  border-radius: 6px;
  background: var(--fnd-project-accent);
  color: #FFFFFF;
  font-size: 13px;                                     /* frame: 9 px cap height on the overlay tag */
  font-weight: 700;
  line-height: 1.2;
}

/* A card whose article has no picture: the tag has nothing to sit on, so it stands on its own line
   above the source. Same chip, taken out of the overlay. */
.brand-foundation .fnd-project-stories__tag--inline {
  position: static;
  display: inline-block;
  margin: 0 0 14px;                                    /* INFERENCE: the picture's own gap to the source line */
}

.brand-foundation .fnd-project-stories__corner {
  position: absolute;
  top: 0;
  right: 0;
  width: 0;
  height: 0;
  border-top: var(--fnd-project-corner-md) solid var(--fnd-project-accent);
  border-left: var(--fnd-project-corner-md) solid transparent;
}

.brand-foundation .fnd-project-stories__source {
  margin: 0 0 6px;
  color: var(--fnd-project-muted);
  font-size: var(--fnd-project-small-size);
  font-weight: 700;
  text-transform: uppercase;                           /* frame: the source line is set in capitals */
  letter-spacing: 0.02em;
}

.brand-foundation .fnd-project-stories__title {
  color: var(--fnd-project-text);
  margin: 0 0 10px;
  font-size: var(--fnd-project-card-title-size);
  line-height: 1.3;
}

.brand-foundation .fnd-project-stories__title-link {
  color: inherit;
  font-size: inherit;
  font-weight: inherit;
  text-decoration: none;
}

.brand-foundation .fnd-project-stories__title-link:hover {
  text-decoration: underline;
}

.brand-foundation .fnd-project-stories__blurb {
  margin: 0 0 16px;

  /* Four lines, for the reason given on the article card's blurb. The frame's three cards run to
     three, four and four lines, so four is the ceiling it draws rather than a number picked here. */
  display: -webkit-box;
  -webkit-line-clamp: 4;                               /* frame: four lines on the longest card */
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/* ==========================================================================
   Tablet. Every value below is an ESTIMATE: no tablet frame was delivered.
   ========================================================================== */

@media (max-width: 1024px) {
  .brand-foundation .fnd-project-overview__heading {
    font-size: var(--fnd-project-h1-size-tablet);
  }

  .brand-foundation .fnd-project-benefits__heading,
  .brand-foundation .fnd-project-resources__heading,
  .brand-foundation .fnd-project-learning__heading,
  .brand-foundation .fnd-project-impact__heading {
    font-size: var(--fnd-project-h2-size-tablet);
  }

  /* Four benefits do not fit a tablet's width at a readable size, so they go two by two. */
  .brand-foundation .fnd-project-benefits__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .brand-foundation .fnd-project-resources__columns,
  .brand-foundation .fnd-project-collaboration__row,
  .brand-foundation .fnd-project-stories__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .brand-foundation .fnd-project-overview__row,
  .brand-foundation .fnd-project-learning__row,
  .brand-foundation .fnd-project-impact__row,
  .brand-foundation .fnd-project-story__inner {
    gap: 32px;
  }

  .brand-foundation .fnd-project-stats__row {
    gap: 48px;
  }
}

/* ==========================================================================
   Phone. Measured off design/foundation-programme-project/reference-mobile.png, the 360 px phone
   render Michiel supplied on 9 Sep 2026. Read at 1x, so its pixels are design pixels.

   The frame is the WageWise programme SUB-HOME, not the project page, but every band it shares with
   5.3 is the same component, which is the whole point of building them separately: the overview row,
   the benefits band, the resources columns, the learning articles row, the impact band and the
   statistics band all appear on it. Values below are read off that frame where it shows the band, and
   still marked ESTIMATE where it does not.

   The content column is 328 px inside 16 px side padding, on every band.
   ========================================================================== */

@media (max-width: 767px) {
  .brand-foundation {
    --fnd-project-band-gap: 48px;
    --fnd-project-band-pad-y: 40px;
    --fnd-project-header-to-body: 28px;
  }

  /* The gutter. The estate's shared .container has NO side padding at this width, so every band on
     this page ran edge to edge where the frame insets its content by 16 px on both sides. Found on
     9 Sep 2026 by the overflow assertion, once the benefits carousel gave it something to catch:
     the band inners were 375 wide in a 375 viewport, and the frame's content column is 328 in 360.

     Applied to this feature's own inners rather than to .container, which is shared with the ASISA,
     Academy and ESD layouts. */
  .brand-foundation .fnd-project-overview__inner,
  .brand-foundation .fnd-project-benefits__inner,
  .brand-foundation .fnd-project-resources__inner,
  .brand-foundation .fnd-project-learning__inner,
  .brand-foundation .fnd-project-collaboration__inner,
  .brand-foundation .fnd-project-impact__inner,
  .brand-foundation .fnd-project-stats__inner,
  .brand-foundation .fnd-project-story__inner,
  .brand-foundation .fnd-project-stories__inner {
    padding-left: var(--fnd-project-gutter-phone);
    padding-right: var(--fnd-project-gutter-phone);
  }

  .brand-foundation .fnd-project-overview {
    padding-top: 40px;
  }

  .brand-foundation .fnd-project-overview__heading {
    font-size: var(--fnd-project-h1-size-mobile);
  }

  .brand-foundation .fnd-project-benefits__heading,
  .brand-foundation .fnd-project-resources__heading,
  .brand-foundation .fnd-project-learning__heading,
  .brand-foundation .fnd-project-impact__heading {
    font-size: var(--fnd-project-h2-size-mobile);
  }

  .brand-foundation .fnd-project-overview__row,
  .brand-foundation .fnd-project-learning__row,
  .brand-foundation .fnd-project-impact__row,
  .brand-foundation .fnd-project-story__inner,
  .brand-foundation .fnd-project-resources__columns,
  .brand-foundation .fnd-project-collaboration__row,
  .brand-foundation .fnd-project-stories__grid {
    grid-template-columns: 1fr;
    gap: 24px;
  }

  /* The benefits band is the one band that does NOT stack: the phone frame swipes it.
     ------------------------------------------------------------------------------------------
     This is the answer to the question Cathy Harrison left open on 31 August, "on some of the
     elements like benefits and I think news on mobile we flipped to a carousel". The frame settles
     it for benefits: one card at 295 px starting at the 16 px gutter, the next peeking from 335 px,
     and four dots beneath. She was right about the news band too, but that band belongs to AB#99005
     and these rules are written to be reusable by it rather than duplicated there.

     Scroll snap rather than Slick, deliberately. It reproduces the frame's geometry exactly, brings
     native swipe, momentum and keyboard scrolling with it, honours reduced motion without being
     asked, and degrades to a plain scrollable row if anything fails. Slick would have to be given
     its own dotsClass and append containers to escape the shared global carousel rules, which is
     what foundationImageGallery.js spends its length on, and it animates in JavaScript so the
     motion preference has to be handled by hand.

     What is NOT here: the four dots. They need script to track the scroll position, and the news
     band needs the identical thing, so they belong in one place built once. Recorded in
     Documentation/foundation-programme-project.md. Without them the affordance is the visible next
     card plus the swipe, which is the frame's own cue. */
  .brand-foundation .fnd-project-benefits__grid {
    display: flex;
    grid-template-columns: none;
    gap: 25px;                                         /* mobile frame: card ends at 310, next starts at 335 */
    overflow-x: auto;
    scroll-snap-type: x mandatory;

    /* Reaching past the container's gutter so the peeking card runs to the screen edge as the frame
       draws it, then giving the padding back inside the scroller so the last card can still snap
       flush. The scroller clips its own content, so nothing here can push the document sideways. */
    margin-right: calc(var(--fnd-project-gutter-phone) * -1);
    padding-right: var(--fnd-project-gutter-phone);
    scroll-padding-left: 0;

    /* No visible scrollbar: the peeking card is the affordance, and a bar over the cream band reads
       as a defect on a touch screen. Scrolling itself is untouched. */
    scrollbar-width: none;
  }

  .brand-foundation .fnd-project-benefits__grid::-webkit-scrollbar {
    display: none;
  }

  .brand-foundation .fnd-project-benefits__card {
    flex: 0 0 var(--fnd-project-benefit-card-phone);   /* mobile frame: x 16..310 */
    scroll-snap-align: start;
  }

  /* The picture leads on a phone, where the copy column no longer sits beside it. */
  .brand-foundation .fnd-project-impact__row,
  .brand-foundation .fnd-project-story__inner {
    display: flex;
    flex-direction: column;
  }

  .brand-foundation .fnd-project-impact__panel,
  .brand-foundation .fnd-project-story__panel {
    order: -1;

    /* Both panels are landscape on the desktop frame and near square on the phone frame: the story
       picture measures 328 x 326 and the map's panel 374 tall in a 328 column. Keeping the desktop
       ratio here would letterbox the map and crop the story photograph. */
    aspect-ratio: 1 / 1;                               /* mobile frame: story picture x 16..343, y 11706..12031 */
  }

  /* The rule down the article column becomes a rule above it: a vertical rule beside a full-width
     card leaves the text too narrow to read. */
  .brand-foundation .fnd-project-overview__cards,
  .brand-foundation .fnd-project-learning__rest {
    padding: 20px 0 0;
    border-left: 0;
    border-top: var(--fnd-project-rule-width) solid var(--fnd-project-accent);
  }

  /* The thumbnail does NOT shrink on a phone: the mobile frame draws it 130 px square, the same as
     the desktop frame, with the cards stacked 36 px apart. An earlier estimate cut it to 96. */
  .brand-foundation .fnd-project-overview__cards,
  .brand-foundation .fnd-project-learning__rest {
    gap: 36px;                                         /* mobile frame: thumbnails at 1536 and 1701, so 130 + 36 */
  }

  /* The blurb comes off the small card. The mobile frame gives each one its title and its button and
     nothing else, on both the overview row and the learning row: at 328 px of column beside a 130 px
     thumbnail there is not enough width for three lines to read as anything but a wall. The featured
     learning article keeps its body copy, because it has the full width. */
  .brand-foundation .fnd-project-overview__cards .fnd-project-card__blurb,
  .brand-foundation .fnd-project-learning__rest .fnd-project-card__blurb {
    display: none;
  }

  /* Three figures across a phone leave each one a third of the width, so they stack, centred.
     mobile frame: the figures' digits run 11231..11274 and 11371..11414, so 44 px of digit height at a
     140 px pitch, which is a 62 px figure with a 36 px gap under each block. */
  .brand-foundation .fnd-project-stats__row {
    flex-direction: column;
    gap: 36px;
  }

  .brand-foundation .fnd-project-stats__value {
    font-size: 62px;
  }

  /* mobile frame: buttons at 5433..5502, 5527..5596 and 5621..5690, so 70 px tall with a 24 px gap,
     full width, and the chevron block occupying the first 70 px. */
  .brand-foundation .fnd-project-collaboration__button {
    min-height: 70px;
    /* 14 px, not the desktop's 16: the frame's labels wrap to two lines and the button still measures
       70, so two 21 px lines plus 28 px of padding is what it has room for. */
    padding-top: 14px;
    padding-bottom: 14px;
    padding-left: 86px;                                /* the 70 px chevron block plus the 16 px gutter */
  }

  .brand-foundation .fnd-project-collaboration__row {
    gap: 24px;
  }

  .brand-foundation .fnd-project-collaboration__chevrons {
    width: 70px;
    background-size: 35px 100%, 35px 100%;
    background-position: 0 0, 35px 0;
  }
}
