/* =============================================================================
   about.css  —  Styles for the About page (about.html)
   -----------------------------------------------------------------------------
   Loaded only by about.html, on top of styles.css. Uses the warm "story"
   palette tokens (--story-*). The page alternates paper/white/ink backgrounds
   section by section. Sections: 1) Opening, 2) Explainer, 3) Origin,
   3.5) 2025 recap, 4) Who it serves, 5) Where it's going, 6) FAQ (shared
   component), 7) Close. Most rules just set type sizes/colours per section.
   ============================================================================= */

/* Page background (cream). */
main {
  background: var(--story-paper);
}

/* --------------------------------------------------------------------------
   1. Opening  (dark band with the headline + lede, photo band underneath)
   -------------------------------------------------------------------------- */

/* The dark opening band. */
.about-open {
  padding: clamp(4.5rem, 11vw, 8.5rem) 0 clamp(3rem, 6vw, 4.5rem);
  color: var(--story-white);
  background: var(--story-ink);
}

/* The page headline. */
.about-open h1 {
  max-width: 22ch;
  margin: 0;
  font-size: clamp(2.5rem, 6.2vw, 5.4rem);
  font-weight: 700;
  letter-spacing: -0.045em;
  line-height: 0.98;
  text-wrap: balance;
}

/* The intro paragraph. */
.about-open__lede {
  max-width: 46ch;
  margin: 1.75rem 0 0;
  color: rgba(255, 253, 248, 0.72);
  font-size: clamp(1.1rem, 1.7vw, 1.4rem);
  line-height: 1.5;
}

/* Full-bleed photo band, sitting flush against the opening (no gap). */
.about-band {
  margin: 0;
  aspect-ratio: 24 / 9;
  overflow: hidden;
  background: var(--story-ink);
}

.about-band img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 46%;
}

/* --------------------------------------------------------------------------
   2. Explainer  (two-column: heading | body, plus a "stakes" callout)
   -------------------------------------------------------------------------- */

.explainer {
  padding: clamp(5rem, 11vw, 8.5rem) 0;
  background: var(--story-paper);
}

/* Heading on the left, body text on the right. */
.explainer__grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr);
  gap: clamp(2rem, 6vw, 5rem);
  align-items: start;
}

.explainer h2 {
  margin: 0;
  font-size: clamp(2rem, 3.9vw, 3.4rem);
  font-weight: 700;
  letter-spacing: -0.045em;
  line-height: 1;
  text-wrap: balance;
}

/* Body paragraphs. */
.explainer__body p {
  max-width: 56ch;
  margin: 0 0 1.5rem;
  color: var(--story-muted);
  font-size: clamp(1.05rem, 1.3vw, 1.18rem);
  line-height: 1.65;
}

/* The first paragraph is emphasised (a lead-in). */
.explainer__body p:first-child {
  color: var(--story-ink);
  font-size: clamp(1.2rem, 1.7vw, 1.5rem);
  font-weight: 700;
  letter-spacing: -0.02em;
  line-height: 1.4;
}

/* No trailing margin on the last paragraph. */
.explainer__body p:last-child {
  margin-bottom: 0;
}

/* The "stakes" callout: a single emphasised card with a thick left border,
   set apart by weight rather than a tinted box. */
.stakes {
  max-width: 62rem;
  margin: clamp(3.5rem, 7vw, 6rem) auto 0;
  padding: clamp(1.9rem, 4vw, 3.25rem);
  background: var(--story-white);
  border: 1px solid var(--story-line);
  border-left: 4px solid var(--story-ink);
}

/* The small uppercase label atop the callout. */
.stakes__lead {
  margin: 0 0 1.1rem;
  color: var(--story-muted);
  font-size: 0.8rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

/* The callout's main sentence. */
.stakes__copy {
  max-width: 60ch;
  margin: 0;
  color: var(--story-ink);
  font-size: clamp(1.2rem, 1.9vw, 1.6rem);
  letter-spacing: -0.02em;
  line-height: 1.45;
}

/* --------------------------------------------------------------------------
   3. Origin  (photo | copy)
   -------------------------------------------------------------------------- */

.origin {
  padding: clamp(5rem, 11vw, 8.5rem) 0;
  background: var(--story-white);
}

/* Photo and copy side by side. */
.origin__grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: clamp(2.5rem, 6vw, 5rem);
  align-items: center;
}

/* The photo frame. */
.origin__media {
  margin: 0;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  background: #e6ded0;
}

.origin__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.origin__copy h2 {
  margin: 0 0 1.75rem;
  font-size: clamp(2rem, 3.6vw, 3.1rem);
  font-weight: 700;
  letter-spacing: -0.045em;
  line-height: 1;
  text-wrap: balance;
}

.origin__copy p {
  max-width: 50ch;
  margin: 0 0 1.25rem;
  color: var(--story-muted);
  font-size: 1.08rem;
  line-height: 1.65;
}

.origin__copy .quiet-link {
  margin-top: 1.25rem;
}

/* --------------------------------------------------------------------------
   3.5 2025 inaugural conference recap  (copy | photo)
   -------------------------------------------------------------------------- */

.recap {
  padding: clamp(5rem, 11vw, 8.5rem) 0;
  background: var(--story-paper);
}

.recap__grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: clamp(2.5rem, 6vw, 5rem);
  align-items: center;
}

/* Uppercase label above the recap heading. */
.recap__eyebrow {
  margin: 0 0 1.25rem;
  color: var(--story-muted);
  font-size: 0.8rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

.recap__copy h2 {
  margin: 0 0 1.75rem;
  font-size: clamp(2rem, 3.6vw, 3.1rem);
  font-weight: 700;
  letter-spacing: -0.045em;
  line-height: 1;
  text-wrap: balance;
}

.recap__copy p {
  max-width: 50ch;
  margin: 0 0 1.25rem;
  color: var(--story-muted);
  font-size: 1.08rem;
  line-height: 1.65;
}

/* Row of recap links (e.g. photos, video). */
.recap__links {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem 2.5rem;
  margin: 1.75rem 0 0;
  padding: 0;
  list-style: none;
}

/* The recap photo figure. */
.recap__media {
  margin: 0;
}

.recap__media img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  object-position: center 30%;
  background: #e6ded0;
}

/* The photo caption. */
.recap__media figcaption {
  margin-top: 0.85rem;
  color: var(--story-muted);
  font-size: 0.85rem;
  line-height: 1.4;
}

/* Stack the recap on narrow screens. */
@media (max-width: 760px) {
  .recap__grid {
    grid-template-columns: 1fr;
  }
}

/* --------------------------------------------------------------------------
   4. Who it serves  (a dark definition list of six groups)
   -------------------------------------------------------------------------- */

.serves {
  padding: clamp(5rem, 11vw, 8.5rem) 0 0;
  color: var(--story-white);
  background: var(--story-ink);
}

.serves__head {
  margin-bottom: clamp(2.5rem, 5vw, 4rem);
}

.serves__head h2 {
  max-width: 20ch;
  margin: 0;
  font-size: clamp(2rem, 3.9vw, 3.4rem);
  font-weight: 700;
  letter-spacing: -0.045em;
  line-height: 1;
}

.serves__head p {
  max-width: 50ch;
  margin: 1.25rem 0 0;
  color: rgba(255, 253, 248, 0.68);
  font-size: 1.12rem;
  line-height: 1.6;
}

.serves__list {
  margin-block: 0;
}

/* Each entry: term (dt) on the left, definition (dd) on the right, with a
   divider line above. */
.serves__item {
  display: grid;
  grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.4fr);
  gap: clamp(1rem, 5vw, 4rem);
  padding: clamp(1.5rem, 2.5vw, 2.1rem) 0;
  border-top: 1px solid rgba(255, 253, 248, 0.18);
}

/* Add a bottom divider to the last entry too. */
.serves__item:last-child {
  border-bottom: 1px solid rgba(255, 253, 248, 0.18);
}

/* The term. */
.serves__item dt {
  font-size: clamp(1.15rem, 1.8vw, 1.55rem);
  font-weight: 700;
  letter-spacing: -0.03em;
  line-height: 1.15;
  text-wrap: balance;
}

/* The definition. */
.serves__item dd {
  max-width: 60ch;
  margin: 0;
  color: rgba(255, 253, 248, 0.7);
  font-size: 1.02rem;
  line-height: 1.6;
}

/* Inside a scrolly column there's only half the width, so stack term/definition. */
.scrolly .serves__item {
  grid-template-columns: 1fr;
  gap: 0.55rem;
}

/* --------------------------------------------------------------------------
   5. Where it is going  (heading | body + a list of links)
   -------------------------------------------------------------------------- */

.next {
  padding: clamp(5rem, 11vw, 8.5rem) 0;
  background: var(--story-paper);
}

.next__grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr);
  gap: clamp(2rem, 6vw, 5rem);
  align-items: start;
}

.next h2 {
  margin: 0;
  font-size: clamp(2rem, 3.9vw, 3.4rem);
  font-weight: 700;
  letter-spacing: -0.045em;
  line-height: 1;
  text-wrap: balance;
}

.next__body p {
  max-width: 56ch;
  margin: 0 0 1.4rem;
  color: var(--story-muted);
  font-size: clamp(1.05rem, 1.3vw, 1.18rem);
  line-height: 1.65;
}

/* The list of "next" links (dividers between rows). */
.next__links {
  margin: 2.25rem 0 0;
  padding: 0;
  list-style: none;
  border-top: 1px solid var(--story-line);
}

/* Each link: label + arrow, spread apart. */
.next__links a {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 1.05rem 0;
  color: var(--story-ink);
  border-bottom: 1px solid var(--story-line);
  font-size: 1.08rem;
  font-weight: 700;
  letter-spacing: -0.02em;
  text-decoration: none;
  transition: color 260ms var(--ease-out), padding-left 260ms var(--ease-out);
}

/* The arrow glyph. */
.next__links a span {
  transition: transform 260ms var(--ease-out);
}

/* Hover: gold + indent the row a little. */
.next__links a:hover,
.next__links a:focus-visible {
  color: var(--story-gold-deep);
  padding-left: 0.6rem;
}

/* ...and slide the arrow. */
.next__links a:hover span,
.next__links a:focus-visible span {
  transform: translateX(0.35rem);
}

/* Keyboard focus ring. */
.next__links a:focus-visible {
  outline: 3px solid var(--story-gold);
  outline-offset: 3px;
}

/* --------------------------------------------------------------------------
   6. Common questions
   The FAQ component itself is in styles.css. Here we only choose the
   background it sits on (white) so the paper/white/ink alternation holds.
   -------------------------------------------------------------------------- */

.faq {
  background: var(--story-white);
}

/* The footer row under the FAQ (note + link). */
.faq__foot {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.75rem 2rem;
  margin-top: clamp(2.5rem, 5vw, 3.5rem);
}

.faq__foot p {
  margin: 0;
  color: var(--story-muted);
  font-size: 1.05rem;
}

/* --------------------------------------------------------------------------
   7. Close  (dark closing call-to-action)
   -------------------------------------------------------------------------- */

.about-close {
  padding: clamp(4rem, 9vw, 7rem) 0;
  color: var(--story-white);
  background: var(--story-ink);
}

.about-close__inner {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 2rem 3rem;
}

.about-close h2 {
  max-width: 18ch;
  margin: 0;
  font-size: clamp(1.9rem, 3.4vw, 3rem);
  font-weight: 700;
  letter-spacing: -0.045em;
  line-height: 1;
}

.about-close p {
  margin: 1rem 0 0;
  color: rgba(255, 253, 248, 0.72);
  font-size: 1.05rem;
}

/* --------------------------------------------------------------------------
   Responsive
   -------------------------------------------------------------------------- */

/* Narrow: collapse the two-column grids to one column. */
@media (max-width: 900px) {
  .explainer__grid,
  .next__grid,
  .origin__grid {
    grid-template-columns: 1fr;
  }

  .explainer__grid h2,
  .next__grid h2 {
    margin-bottom: 0.5rem;
  }

  .stakes {
    grid-template-columns: 1fr;
    gap: 0.75rem;
  }

  .serves__item {
    grid-template-columns: 1fr;
    gap: 0.6rem;
  }

  .about-band {
    aspect-ratio: 16 / 10;
  }

  .serves__media {
    aspect-ratio: 16 / 10;
  }
}

/* Phone: full-width close button. */
@media (max-width: 760px) {
  .about-close__inner {
    align-items: flex-start;
  }

  /* The button's wrapper is a flex item, so it has to be told to fill the
     row before width:100% on the button itself means anything. */
  .about-close__inner > * {
    flex: 1 1 100%;
  }

  .about-close .cta {
    width: 100%;
    justify-content: center;
  }
}
