/* Magnolia Project V50 — September 16 content and asset integration */

/* Home: longer client copy needs breathing room without shrinking type. */
#p-home .home-section-intro { align-items:start; }
#p-home .home-section-intro .body { max-width:62ch; }
#p-home .home-program { min-height:0; }
#p-home .home-program-copy > p:not(.label) { max-width:58ch; line-height:1.72; }
#p-home .impact-paths { margin-top:clamp(2rem,4vw,3.25rem); }
#p-home .impact-path h3 { font-weight:600; }

/* The supplied illustration is opaque, so it receives an intentional light surface. */
.invite.has-investment-art {
  display:grid;
  grid-template-columns:minmax(0,7fr) minmax(280px,5fr);
  gap:clamp(2rem,5vw,4.5rem);
  align-items:center;
}
.invite.has-investment-art .invite-copy { position:relative; z-index:2; }
.invite.has-investment-art .h1 { max-width:18ch; }
.invite.has-investment-art .investment-art {
  position:relative;
  z-index:2;
  width:100%;
  max-height:none;
  margin:0;
  padding:clamp(.7rem,1.5vw,1.1rem);
  border:1px solid rgba(252,241,212,.3);
  border-radius:22px;
  background:#fff;
  box-shadow:0 24px 55px -42px rgba(0,0,0,.8);
}
.invite.has-investment-art .investment-art img {
  display:block;
  width:100%;
  height:auto;
  max-height:420px;
  object-fit:contain;
}
.invite.has-investment-art .botanical { opacity:.14; }

/* Mission copy and linked history. */
#p-mission .mission-statement { max-width:960px; }
#p-mission .mission-statement .h2 { margin-top:1rem; max-width:30ch; }
#p-mission .mission-timeline__copy a {
  color:inherit;
  text-decoration-color:var(--sky);
  text-decoration-thickness:2px;
  text-underline-offset:.18em;
}

/* Real staff portraits keep the established 3:4 frame and preserve faces. */
#p-team .team-card .portrait { overflow:hidden; padding:0; }
#p-team .team-card .portrait img {
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:50% 28%;
}
#p-team .team-card .portrait-contain img { object-fit:contain; object-position:center; }
#p-team .team-card .portrait-skyler img { object-position:50% 22%; }
#p-team .team-card .portrait-megan img { object-position:50% 20%; }
#p-team .team-card .role { line-height:1.45; }

/* Supporters: preserve grid/hotfix and introduce one editorial quote. */
#p-supporters .supporter-quote {
  margin:clamp(3rem,6vw,5.5rem) 0 0;
  padding:clamp(2rem,5vw,4rem);
  border-left:6px solid var(--sky);
  background:var(--plum-deep);
  color:var(--cream);
  border-radius:0 34px 34px 0;
}
#p-supporters .supporter-quote blockquote {
  margin:0;
  max-width:30ch;
  font-family:var(--serif);
  font-size:clamp(1.7rem,3.5vw,3rem);
  line-height:1.2;
  letter-spacing:-.025em;
}
#p-supporters .supporter-quote figcaption {
  margin-top:1.5rem;
  max-width:62ch;
  color:var(--sky);
  font-size:.78rem;
  font-weight:600;
  line-height:1.6;
  letter-spacing:.08em;
  text-transform:uppercase;
}

/* Model: paragraph-led rather than forcing prose into the former card flow. */
#p-model .model-section { max-width:760px; }
#p-model .review-pending,
.review-pending {
  margin-top:1.25rem;
  padding:1rem 1.1rem;
  max-width:56ch;
  border-left:4px solid var(--tone, var(--sky));
  background:rgba(142,184,224,.1);
  color:var(--ink-soft);
  line-height:1.6;
}
#p-model .model-small-town { position:relative; overflow:hidden; }
#p-model .model-small-town .botanical { opacity:.06; }
#p-model .model-small-town .h1 { max-width:16ch; }
#p-model .model-prose { margin-top:clamp(2rem,4vw,3rem); max-width:72ch; }
#p-model .model-prose p { font-size:clamp(1rem,1.35vw,1.15rem); line-height:1.8; }
#p-model .model-prose p + p { margin-top:1.25rem; }
#p-model .model-ecosystem {
  display:grid;
  grid-template-columns:minmax(280px,5fr) minmax(0,7fr);
  gap:clamp(2rem,5vw,5rem);
  align-items:start;
  margin-top:clamp(2rem,4vw,3rem);
}
#p-model .model-ecosystem .model-prose { margin-top:0; }
#p-model .program-link-list {
  display:flex;
  flex-wrap:wrap;
  gap:.75rem;
  margin-top:2rem;
}
#p-model .program-link-list a {
  padding:.75rem 1rem;
  border:1px solid var(--plum);
  border-radius:999px;
  color:var(--plum);
  font-size:.82rem;
  font-weight:600;
}
#p-model .program-link-list a:hover,
#p-model .program-link-list a:focus-visible { background:var(--plum); color:var(--cream); }

/* Program pages: client-authored What / How / Impact structure. */
.program-detail-grid {
  display:grid;
  grid-template-columns:minmax(0,7fr) minmax(300px,5fr);
  gap:clamp(2rem,5vw,5rem);
  align-items:start;
}
.program-detail-copy { display:grid; gap:0; }
.program-detail-copy section {
  padding:clamp(1.5rem,3vw,2.25rem) 0;
  border-top:1px solid var(--rule);
}
.program-detail-copy section:first-child { padding-top:0; border-top:0; }
.program-detail-copy section p:not(.label) {
  margin-top:.85rem;
  max-width:68ch;
  color:var(--ink-soft);
  font-size:clamp(1rem,1.25vw,1.1rem);
  line-height:1.8;
}
.program-detail-grid > .program-detail-illustration {
  position:sticky;
  top:140px;
  padding:clamp(.75rem,2vw,1.5rem);
  border:1px solid var(--rule);
  border-radius:24px;
  background:#fff;
}
.program-detail-grid > .program-detail-illustration img { width:100%; height:auto; object-fit:contain; }
.program-reach {
  grid-column:1 / -1;
  margin-top:clamp(1rem,3vw,2rem);
  padding:clamp(1.5rem,4vw,3rem);
  border-radius:28px;
  background:var(--plum-deep);
  color:var(--cream);
}
.program-reach > p { max-width:78ch; line-height:1.75; }
.program-reach > p + p { margin-top:1rem; }
.program-reach dl { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1px; margin-top:2rem; background:rgba(252,241,212,.2); }
.program-reach dl > div { padding:clamp(1.25rem,3vw,2rem); background:var(--plum-deep); }
.program-reach dt { color:var(--sky); font-size:clamp(2.5rem,5vw,4rem); }
.program-reach dd { margin-top:.6rem; color:var(--cream); line-height:1.6; }
.program-launch { color:var(--sky); font-weight:600; }
.program-reach .btn { margin-top:1.5rem; }

/* County artwork is tall and label-heavy: contain the whole supplied image. */
.county-map-card img {
  height:auto;
  max-height:760px;
  object-fit:contain;
  background:#fff;
}
.county-map-card figcaption { align-items:flex-start; }
.county-map-heading span { text-align:right; }

@media (max-width:900px) {
  .invite.has-investment-art,
  #p-model .model-ecosystem,
  .program-detail-grid { grid-template-columns:1fr; }
  .program-detail-grid > .program-detail-illustration {
    position:static;
    order:-1;
    max-width:620px;
    margin-inline:auto;
  }
  .program-reach { grid-column:auto; }
}

@media (max-width:640px) {
  .invite.has-investment-art { gap:1.5rem; }
  .invite.has-investment-art .h1 { max-width:none; }
  .program-reach dl { grid-template-columns:1fr; }
  #p-supporters .supporter-quote { border-radius:0 24px 24px 0; }
  #p-team .roster { grid-template-columns:1fr; }
  .county-map-card { padding:1rem; }
  .county-map-card img { max-height:none; }
}

@media (prefers-reduced-motion:reduce) {
  .program-link-list a { transition:none; }
}
