/* ============================================================
   BIO — her trajectory. Asymmetric editorial: treated portrait +
   narrative prose, then a ledger band (milestone timeline + facts
   rail). Namespace: bio-. Scoped only; no token/global overrides.
   ============================================================ */

.bio__head { margin-bottom: clamp(2.5rem, 5vw, 4rem); }
.bio__title { max-width: 18ch; }

/* ---- Top band: portrait | narrative (asymmetric) ---- */
.bio__body { display: grid; gap: clamp(2rem, 5vw, 3.5rem); }
.bio__portrait, .bio__prose { min-width: 0; }

@media (min-width: 60rem) {
  .bio__body {
    grid-template-columns: minmax(0, 0.82fr) minmax(0, 1.18fr);
    gap: clamp(2.5rem, 5vw, 5rem);
    align-items: start;
  }
}

/* Portrait — full-bleed treated image with a molten baseline tick.
   Image is oversized (120% tall, offset -16%) so the parallax
   (img yPercent 0->12 ≈ 14.4% of the frame) never uncovers an edge,
   and it still fully covers with no JS / reduced motion. */
.bio__portrait { margin: 0; }
.bio__media { aspect-ratio: 4 / 5; }
.bio__media img {
  position: absolute;
  left: 0;
  top: -16%;
  width: 100%;
  height: 120%;
  object-fit: cover;
  object-position: 50% 26%;
}
.bio__rule {
  position: relative;
  display: block;
  height: 1px;
  margin-top: clamp(0.9rem, 1.6vw, 1.3rem);
  background: var(--hairline);
}
.bio__rule::before {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  width: 3.25rem;
  height: 2px;
  background: var(--vermelho);
}

/* Narrative */
.bio__lead {
  margin-bottom: clamp(1.4rem, 3vw, 2.1rem);
  text-wrap: balance;
}
.bio__text { color: var(--bone-dim); }
.bio__text p { overflow-wrap: break-word; }
.bio__text p + p { margin-top: 1.05em; }

/* ---- Ledger band: timeline | facts ---- */
.bio__ledger {
  margin-top: clamp(3.5rem, 8vw, 6.5rem);
  padding-top: clamp(2.5rem, 5vw, 4rem);
  border-top: 1px solid var(--hairline);
  display: grid;
  gap: clamp(2.5rem, 6vw, 4rem);
}
.bio__timeline, .bio__facts { min-width: 0; }

@media (min-width: 60rem) {
  .bio__ledger {
    grid-template-columns: minmax(0, 1.35fr) minmax(0, 0.65fr);
    gap: clamp(3rem, 5vw, 5rem);
  }
}

/* Milestone timeline — years are a genuine ordinal sequence, so the
   molten-red year is the marker. Min size held ≥ 28.8px (1.8rem) so
   --vermelho is unambiguously large-display type (WCAG AA large). */
.bio__timeline { display: grid; max-width: 58rem; }
.bio__mile {
  display: grid;
  grid-template-columns: clamp(5rem, 12vw, 6.75rem) 1fr;
  gap: clamp(1rem, 3vw, 2rem);
  align-items: baseline;
  padding-block: clamp(1rem, 2vw, 1.5rem);
  border-top: 1px solid var(--hairline-soft);
}
.bio__mile:first-child { border-top: 0; padding-top: 0; }
.bio__year {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: clamp(1.8rem, 3.4vw, 2.4rem);
  line-height: 0.9;
  letter-spacing: var(--track-display);
  text-transform: uppercase;
  color: var(--vermelho);
  white-space: nowrap;
}
.bio__event {
  color: var(--bone-dim);
  font-size: var(--fs-body);
  line-height: 1.45;
  overflow-wrap: break-word;
}

/* Facts rail — compact spec sidebar, hairline-separated (not cards) */
.bio__facts { display: grid; align-content: start; }
.bio__fact {
  display: grid;
  gap: 0.35rem;
  padding-block: clamp(0.85rem, 1.6vw, 1.15rem);
  border-top: 1px solid var(--hairline-soft);
}
.bio__fact:first-child { border-top: 0; padding-top: 0; }
.bio__fact-label {
  font-family: var(--font-text);
  font-size: var(--fs-label);
  font-weight: 600;
  letter-spacing: var(--track-label);
  text-transform: uppercase;
  color: var(--muted);
  line-height: 1.2;
}
.bio__fact-value {
  color: var(--bone);
  font-size: var(--fs-sm);
  line-height: 1.45;
  overflow-wrap: break-word;
}

/* ---- Aside column: portrait + name ledgers ---- */
.bio__aside { min-width: 0; }

.bio__names { margin-top: clamp(1.6rem, 3vw, 2.4rem); }
.bio__name-group {
  padding-block: clamp(0.9rem, 1.8vw, 1.2rem);
  border-top: 1px solid var(--hairline-soft);
}
.bio__name-group:first-child { border-top: 0; padding-top: 0; }
.bio__names-label {
  font-family: var(--font-text);
  font-size: var(--fs-label);
  font-weight: 600;
  letter-spacing: var(--track-label);
  text-transform: uppercase;
  color: var(--muted);
  line-height: 1.2;
  margin-bottom: 0.55rem;
}
.bio__name-list {
  color: var(--bone-dim);
  font-size: var(--fs-sm);
  line-height: 1.7;
  overflow-wrap: break-word;
}

/* ---- Endorsement pull-quote (Mateo Feijoo) ---- */
.bio__quote { margin-block: clamp(1.8rem, 3.4vw, 2.6rem); max-width: 30ch; }
.bio__quote::before {
  content: "";
  display: block;
  width: clamp(2.4rem, 6vw, 4rem);
  height: 2px;
  background: var(--vermelho);
  margin-bottom: clamp(0.9rem, 1.8vw, 1.3rem);
}
.bio__quote-text {
  font-family: var(--font-display);
  font-weight: 600;
  font-size: clamp(1.45rem, 2.8vw, 2.05rem);
  line-height: 1.02;
  letter-spacing: -0.01em;
  color: var(--bone);
  text-wrap: balance;
}
.bio__quote cite {
  display: block;
  margin-top: 0.75rem;
  font-family: var(--font-text);
  font-style: normal;
  font-weight: 600;
  font-size: var(--fs-label);
  letter-spacing: var(--track-label);
  text-transform: uppercase;
  color: var(--muted);
}

/* ---- External link (Aarder) ---- */
.bio__links {
  display: flex;
  flex-wrap: wrap;
  gap: clamp(1.25rem, 3vw, 2rem);
  margin-top: clamp(1.4rem, 2.6vw, 2rem);
  font-weight: 600;
  font-size: var(--fs-sm);
}
