/* ==========================================================================
   FUTURE POWER CAPITAL — PAGE-LEVEL STYLES
   Shared styles for interior pages (about, team, partners, services,
   apply, careers, contact, faq, investor-portal, legal shells).
   Composed on top of tokens/base/components/shell — no overrides of those.
   ========================================================================== */

/* Breadcrumb row above page headers */
.breadcrumb-row {
  padding: var(--space-4) 0 0;
}

/* Generic content prose width on interior pages */
.prose {
  max-width: var(--container-narrow);
}
.prose p { color: var(--color-text-secondary); }
.prose h2 { margin: var(--space-8) 0 var(--space-4); }
.prose h2:first-child { margin-top: 0; }
.prose h3 { margin: var(--space-6) 0 var(--space-3); }
.prose ul, .prose ol { margin: 0 0 var(--space-5); padding-left: var(--space-6); list-style: disc; color: var(--color-text-secondary); }
.prose ol { list-style: decimal; }
.prose li { margin-bottom: var(--space-2); line-height: var(--leading-relaxed); }
.prose li strong { color: var(--color-text-primary); }

/* Two-column layout: main content + side rail (criteria, facts, etc.) */
.split-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 320px;
  gap: var(--space-9);
  align-items: start;
}
@media (max-width: 900px) {
  .split-layout { grid-template-columns: minmax(0, 1fr); }
}

.side-rail {
  padding: var(--space-6);
  background: var(--color-surface);
  border: var(--border-hairline);
  border-radius: var(--radius-md);
  position: sticky;
  top: calc(var(--header-height) + var(--space-6));
}
@media (max-width: 900px) {
  .side-rail { position: static; }
}
.side-rail__heading {
  font-size: var(--text-xs);
  letter-spacing: var(--tracking-wide);
  text-transform: uppercase;
  color: var(--color-text-muted);
  margin-bottom: var(--space-4);
}
.side-rail__list { display: flex; flex-direction: column; gap: var(--space-3); }
.side-rail__list li { font-size: var(--text-sm); color: var(--color-text-secondary); padding-bottom: var(--space-3); border-bottom: var(--border-hairline); }
.side-rail__list li:last-child { border-bottom: none; padding-bottom: 0; }

/* Criteria list with check-style markers (no icons library — CSS only) */
.criteria-list { display: flex; flex-direction: column; gap: var(--space-4); }
.criteria-item { display: flex; gap: var(--space-3); align-items: flex-start; }
.criteria-item__mark {
  flex-shrink: 0;
  width: 22px; height: 22px;
  border-radius: 50%;
  border: 1.5px solid var(--color-accent-strong);
  color: var(--color-accent-strong);
  display: flex; align-items: center; justify-content: center;
  font-size: var(--text-xs);
  font-weight: var(--weight-semibold);
  margin-top: 2px;
}
.criteria-item__text { color: var(--color-text-secondary); line-height: var(--leading-relaxed); }
.criteria-item__text strong { color: var(--color-text-primary); }

/* Partner category cards row */
.partner-empty-slot {
  aspect-ratio: 3 / 1;
  border: 1px dashed var(--color-border-strong);
  border-radius: var(--radius-md);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--color-text-muted);
  font-size: var(--text-xs);
  letter-spacing: var(--tracking-wide);
  text-transform: uppercase;
  text-align: center;
  padding: var(--space-4);
}

/* Governance fact rows (Team / Partners) */
.fact-rows { border-top: var(--border-hairline); }
.fact-row {
  display: grid;
  grid-template-columns: 220px minmax(0, 1fr);
  gap: var(--space-5);
  padding: var(--space-5) 0;
  border-bottom: var(--border-hairline);
}
@media (max-width: 640px) {
  .fact-row { grid-template-columns: minmax(0, 1fr); gap: var(--space-2); }
}
.fact-row__label {
  font-size: var(--text-xs);
  letter-spacing: var(--tracking-wide);
  text-transform: uppercase;
  color: var(--color-text-muted);
}
.fact-row__value { color: var(--color-text-primary); }
.fact-row__value a { color: var(--color-accent-strong); text-decoration: underline; }

/* Multi-step form (Apply For Funding) */
.form-steps {
  display: flex;
  gap: var(--space-2);
  margin-bottom: var(--space-8);
  flex-wrap: wrap;
}
.form-steps__item {
  flex: 1;
  min-width: 120px;
  padding: var(--space-3) var(--space-4);
  border: var(--border-hairline);
  border-bottom: 3px solid var(--color-border);
  font-size: var(--text-xs);
  letter-spacing: var(--tracking-wide);
  text-transform: uppercase;
  color: var(--color-text-muted);
  transition: border-color var(--duration-base) var(--ease-standard), color var(--duration-base) var(--ease-standard);
}
.form-steps__item.is-active {
  border-bottom-color: var(--color-accent-strong);
  color: var(--color-text-primary);
  font-weight: var(--weight-semibold);
}
.form-steps__item.is-complete { color: var(--color-accent-strong); }

.form-step-panel[hidden] { display: none; }

/* Info banner (non-legal informational notes, e.g. "not a commitment") */
.info-note {
  padding: var(--space-4) var(--space-5);
  background: var(--color-surface);
  border-left: 3px solid var(--color-border-strong);
  font-size: var(--text-sm);
  color: var(--color-text-secondary);
  line-height: var(--leading-relaxed);
  border-radius: var(--radius-sm);
}

/* Portal login card */
.portal-card {
  max-width: 440px;
  margin: 0 auto;
  padding: var(--space-8);
  border: var(--border-hairline);
  border-radius: var(--radius-md);
  background: var(--color-surface-raised);
}

/* ---------------------------------------------------------------------
   PORTAL SPACES (Investor / Startup / Dataroom) — access gate,
   room listing, NDA modal. Reuses existing tokens/components only.
   --------------------------------------------------------------------- */

/* Presentation page: three space cards */
.portal-space-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--space-6);
}
@media (max-width: 900px) {
  .portal-space-grid { grid-template-columns: minmax(0, 1fr); }
}
.portal-space-card {
  display: flex;
  flex-direction: column;
  padding: var(--space-7);
  border: var(--border-hairline);
  border-radius: var(--radius-md);
  background: var(--color-surface-raised);
}
.portal-space-card__title { margin-bottom: var(--space-3); }
.portal-space-card__desc { color: var(--color-text-secondary); line-height: var(--leading-relaxed); margin-bottom: var(--space-6); flex-grow: 1; }

/* Access gate (password form) shown before a space's content */
.gate-shell {
  min-height: 60vh;
  display: flex;
  align-items: center;
  padding: var(--space-9) 0;
}
.gate-card {
  max-width: 460px;
  margin: 0 auto;
  padding: var(--space-8);
  border: var(--border-hairline);
  border-radius: var(--radius-md);
  background: var(--color-surface-raised);
  width: 100%;
}
.gate-card__eyebrow { margin-bottom: var(--space-3); }
.gate-card__title { margin-bottom: var(--space-3); }
.gate-card__lede { color: var(--color-text-secondary); margin-bottom: var(--space-6); line-height: var(--leading-relaxed); }
.gate-alert {
  padding: var(--space-3) var(--space-4);
  margin-bottom: var(--space-5);
  font-size: var(--text-sm);
  border-radius: var(--radius-sm);
  background: var(--fpc-error-100);
  color: var(--fpc-error-600);
  border: 1px solid var(--fpc-error-600);
  display: none;
}
.gate-alert.is-visible { display: block; }
.gate-help { margin-top: var(--space-6); font-size: var(--text-xs); color: var(--color-text-muted); }

/* Portal bridge (portal-space/*.html): "portal not reachable" state */
.error-note {
  padding: var(--space-4);
  font-size: var(--text-sm);
  border-radius: var(--radius-sm);
  background: var(--fpc-error-100);
  color: var(--fpc-error-600);
  border: 1px solid var(--fpc-error-600);
  line-height: var(--leading-relaxed);
}

/* Space content, hidden until unlocked */
[data-gate-content] { display: none; }
[data-gate-content].is-unlocked { display: block; }

.space-topbar {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: center;
  gap: var(--space-4);
  padding-bottom: var(--space-5);
  margin-bottom: var(--space-7);
  border-bottom: var(--border-hairline);
}
.space-topbar__meta { font-size: var(--text-xs); color: var(--color-text-muted); letter-spacing: var(--tracking-wide); text-transform: uppercase; }

/* Dataroom room listing */
.dataroom-group { margin-bottom: var(--space-8); }
.dataroom-group__head {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: var(--space-3);
  margin-bottom: var(--space-4);
  padding-bottom: var(--space-2);
  border-bottom: var(--border-hairline);
}
.dataroom-group__count { font-size: var(--text-xs); color: var(--color-text-muted); white-space: nowrap; }
.dataroom-doc-list { display: flex; flex-direction: column; gap: var(--space-3); }
.dataroom-doc {
  display: flex;
  align-items: center;
  gap: var(--space-4);
  padding: var(--space-4) var(--space-5);
  border: var(--border-hairline);
  border-radius: var(--radius-sm);
  background: var(--color-surface-raised);
  transition: border-color var(--duration-base) var(--ease-standard), box-shadow var(--duration-base) var(--ease-standard);
}
.dataroom-doc:hover { border-color: var(--color-border-strong); box-shadow: var(--shadow-sm); }
.dataroom-doc__icon { flex-shrink: 0; color: var(--color-accent-strong); }
.dataroom-doc__main { flex-grow: 1; min-width: 0; }
.dataroom-doc__title { font-family: var(--font-serif); font-size: var(--text-md); color: var(--color-text-primary); margin-bottom: var(--space-1); }
.dataroom-doc__sum { font-size: var(--text-sm); color: var(--color-text-secondary); margin-bottom: var(--space-1); }
.dataroom-doc__meta { font-size: var(--text-xs); color: var(--color-text-muted); }
.dataroom-doc__go { flex-shrink: 0; font-size: var(--text-sm); color: var(--color-accent-strong); white-space: nowrap; }
.dataroom-empty-category {
  padding: var(--space-5);
  border: 1px dashed var(--color-border-strong);
  border-radius: var(--radius-sm);
  color: var(--color-text-muted);
  font-size: var(--text-sm);
  font-style: italic;
}

/* NDA gate (shown before the dataroom document list) */
.nda-card {
  max-width: 620px;
  margin: 0 auto;
  padding: var(--space-8);
  border: var(--border-hairline);
  border-radius: var(--radius-md);
  background: var(--color-surface-raised);
}
.nda-card__title { margin-bottom: var(--space-4); }
.nda-card__body { max-height: 260px; overflow-y: auto; padding: var(--space-5); margin-bottom: var(--space-6); background: var(--color-surface); border: var(--border-hairline); border-radius: var(--radius-sm); font-size: var(--text-sm); color: var(--color-text-secondary); line-height: var(--leading-relaxed); }
.nda-card__body p { margin-bottom: var(--space-4); }
.nda-card__body p:last-child { margin-bottom: 0; }
.nda-summary {
  margin-top: var(--space-6);
  padding: var(--space-5);
  background: var(--color-surface);
  border-left: 3px solid var(--color-accent-strong);
  border-radius: var(--radius-sm);
}
.nda-summary dl { display: grid; grid-template-columns: 160px minmax(0, 1fr); gap: var(--space-2) var(--space-4); margin: 0; }
.nda-summary dt { font-size: var(--text-xs); letter-spacing: var(--tracking-wide); text-transform: uppercase; color: var(--color-text-muted); }
.nda-summary dd { margin: 0; font-size: var(--text-sm); color: var(--color-text-primary); font-family: var(--font-mono); word-break: break-word; }
@media (max-width: 480px) {
  .nda-summary dl { grid-template-columns: minmax(0, 1fr); }
  .dataroom-doc { flex-wrap: wrap; }
}

/* Empty-state block (Careers open roles, etc.) */
.empty-state {
  padding: var(--space-8);
  text-align: center;
  border: 1px dashed var(--color-border-strong);
  border-radius: var(--radius-md);
  color: var(--color-text-secondary);
}
.empty-state h3 { margin-bottom: var(--space-3); }

/* Contact detail list */
.contact-detail-list { display: flex; flex-direction: column; gap: var(--space-5); }
.contact-detail { padding-bottom: var(--space-5); border-bottom: var(--border-hairline); }
.contact-detail:last-child { border-bottom: none; padding-bottom: 0; }
.contact-detail__label { font-size: var(--text-xs); letter-spacing: var(--tracking-wide); text-transform: uppercase; color: var(--color-text-muted); margin-bottom: var(--space-2); }
.contact-detail__value { color: var(--color-text-primary); font-size: var(--text-md); font-family: var(--font-serif); }
.placeholder-value { color: var(--fpc-warning-600); font-family: var(--font-mono); font-size: var(--text-sm); }

/* Contact page info strip (hours + response time) */
.contact-info-strip {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-6);
  padding: var(--space-5) 0;
  border-bottom: var(--border-hairline);
  margin-bottom: var(--space-2);
}
.contact-info-strip__item { display: flex; flex-direction: column; gap: var(--space-1); min-width: 220px; flex: 1; }
.contact-info-strip__label { font-size: var(--text-xs); letter-spacing: var(--tracking-wide); text-transform: uppercase; color: var(--color-text-muted); }
.contact-info-strip__value { color: var(--color-text-primary); font-size: var(--text-sm); }

/* Character counter for textareas with maxlength */
.form-field__footer { display: flex; justify-content: space-between; align-items: baseline; gap: var(--space-3); }
.char-counter { font-size: var(--text-xs); color: var(--color-text-muted); font-family: var(--font-mono); white-space: nowrap; }
.char-counter--near-limit { color: var(--fpc-warning-600); }

/* reCAPTCHA v3 reserved placeholder */
.recaptcha-placeholder {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-4) var(--space-5);
  margin: var(--space-6) 0;
  background: var(--color-surface);
  border: 1px dashed var(--color-border-strong);
  border-radius: var(--radius-sm);
  color: var(--color-text-muted);
  font-size: var(--text-xs);
  line-height: var(--leading-relaxed);
}
.recaptcha-placeholder svg { flex-shrink: 0; color: var(--color-text-muted); }

/* Reference number shown after contact form submission */
.reference-number-block {
  margin-top: var(--space-3);
  font-family: var(--font-mono);
  font-size: var(--text-md);
}
.reference-number-note { font-size: var(--text-xs); color: var(--color-text-muted); margin-top: var(--space-2); }

/* FAQ toolbar: search + result count */
.faq-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  margin-bottom: var(--space-6);
}
.faq-search { position: relative; flex: 1; min-width: 260px; max-width: 480px; }
.faq-search__icon {
  position: absolute;
  left: var(--space-4);
  top: 50%;
  width: 16px;
  height: 16px;
  transform: translateY(-50%);
  color: var(--color-text-muted);
  pointer-events: none;
}
.faq-search__input {
  width: 100%;
  padding: var(--space-3) var(--space-4) var(--space-3) calc(var(--space-4) * 2 + 14px);
  border: var(--border-hairline);
  border-radius: var(--radius-md);
  background: var(--color-surface);
  font-size: var(--text-sm);
  color: var(--color-text-primary);
}
.faq-search__input:focus { outline: none; border-color: var(--color-accent-strong); }
.faq-toolbar__count { font-size: var(--text-xs); color: var(--color-text-muted); white-space: nowrap; }

/* FAQ anchored table of contents / category filter */
.faq-toc {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  margin-bottom: var(--space-8);
  padding-bottom: var(--space-6);
  border-bottom: var(--border-hairline);
}
.faq-toc__link {
  padding: var(--space-2) var(--space-4);
  border: var(--border-hairline);
  border-radius: var(--radius-pill, 999px);
  font-size: var(--text-xs);
  letter-spacing: var(--tracking-wide);
  text-transform: uppercase;
  color: var(--color-text-secondary);
  transition: border-color var(--duration-base) var(--ease-standard), color var(--duration-base) var(--ease-standard), background var(--duration-base) var(--ease-standard);
}
.faq-toc__link:hover { border-color: var(--color-accent-strong); color: var(--color-text-primary); }
.faq-toc__link.is-active { background: var(--color-accent-strong); border-color: var(--color-accent-strong); color: var(--color-text-inverse); }

.faq-category-title { scroll-margin-top: calc(var(--header-height) + var(--space-4)); }
.faq-category-title[hidden] { display: none; }

/* Careers: job listing cards */
.jobs-intro { margin-bottom: var(--space-6); }
.jobs-intro__title { margin-bottom: var(--space-2); }
.jobs-intro__text { color: var(--color-text-secondary); }

.job-list { display: flex; flex-direction: column; gap: var(--space-4); }
.job-card {
  border: var(--border-hairline);
  border-radius: var(--radius-md);
  background: var(--color-surface-raised);
  overflow: hidden;
  scroll-margin-top: calc(var(--header-height) + var(--space-4));
}
.job-card__header {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: flex-start;
  gap: var(--space-4);
  padding: var(--space-6);
  cursor: pointer;
}
.job-card__status {
  display: inline-block;
  font-size: var(--text-xs);
  letter-spacing: var(--tracking-wide);
  text-transform: uppercase;
  color: var(--fpc-success-600);
  border: 1px solid var(--fpc-success-600);
  border-radius: var(--radius-pill, 999px);
  padding: 2px var(--space-3);
  margin-bottom: var(--space-3);
}
.job-card__title { margin-bottom: var(--space-2); }
.job-card__meta { font-size: var(--text-sm); color: var(--color-text-muted); }
.job-card__apply { flex-shrink: 0; white-space: nowrap; }
@media (max-width: 480px) {
  /* Long job titles leave no room for a nowrap apply button on the same
     row at narrow widths; let it wrap onto its own line via the flex-wrap
     already set on .job-card__header. */
  .job-card__apply { white-space: normal; flex-shrink: 1; }
}
.job-card__body {
  max-height: 0;
  overflow: hidden;
  transition: max-height var(--duration-slow, 400ms) var(--ease-standard);
  padding: 0 var(--space-6);
}
.job-card__body h4 { margin: var(--space-5) 0 var(--space-2); font-size: var(--text-sm); letter-spacing: var(--tracking-wide); text-transform: uppercase; color: var(--color-text-muted); }
.job-card__body p, .job-card__body ul { color: var(--color-text-secondary); }
.job-card__body ul { padding-left: var(--space-6); list-style: disc; margin-bottom: var(--space-3); }
.job-card__body li { margin-bottom: var(--space-2); line-height: var(--leading-relaxed); }
.job-card.is-open .job-card__body { max-height: 2000px; padding-bottom: var(--space-6); }

.jobs-provisional-note {
  margin-top: var(--space-6);
  font-size: var(--text-xs);
  color: var(--color-text-muted);
  font-style: italic;
}

.partnership-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--space-5);
}
@media (max-width: 700px) {
  .partnership-grid { grid-template-columns: 1fr; }
}
.partnership-card {
  border: var(--border-hairline);
  border-radius: var(--radius-md);
  background: var(--color-surface-raised);
  padding: var(--space-6);
}
.partnership-card__title { margin-bottom: var(--space-3); }
.partnership-card__text { color: var(--color-text-secondary); }

/* Team: member grid (photo, name, role, short bio, opens full bio on click).
   The page renders two groups (members with a portrait, then members shown
   without one), so a text-only card never sits next to a portrait card in the
   same row. Group markup is built by assets/js/team.js. */
.team-groups {
  display: flex;
  flex-direction: column;
  gap: var(--space-9);
}
.team-group__title {
  font-size: var(--text-sm);
  color: var(--color-text-secondary);
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-wide);
  text-transform: uppercase;
  margin: 0 0 var(--space-5);
  padding-bottom: var(--space-3);
  border-bottom: var(--border-hairline);
}
.team-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--space-5);
  align-items: stretch;
}
@media (max-width: 900px) {
  .team-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 620px) {
  .team-grid { grid-template-columns: minmax(0, 1fr); }
}
/* "Leadership & investors" currently holds two portrait cards. On the
   3-column desktop grid, push the second card into the third column so the
   empty slot sits in the middle (Silas left, Yves right) instead of on the
   right. Tablet (2-col) and mobile (1-col) keep their natural flow. */
@media (min-width: 901px) {
  .team-grid--leadership .team-card:nth-child(2) { grid-column: 3; }
}
.team-card {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  text-align: left;
  height: 100%;
  padding: 0;
  overflow: hidden;
  border: var(--border-hairline);
  border-radius: var(--radius-md);
  background: var(--color-surface-raised);
  font-family: inherit;
  color: inherit;
  cursor: pointer;
  transition: border-color var(--duration-base) var(--ease-standard),
              box-shadow var(--duration-base) var(--ease-standard);
}
.team-card:hover, .team-card:focus-visible {
  border-color: var(--color-border-strong);
  box-shadow: var(--shadow-md);
  outline: none;
}
/* Photo runs the full width at the top of the card, square, cropped to fill.
   Members shown without a portrait get no image block at all (see
   .team-card--nophoto below): no picture, and no initials placeholder. */
.team-card__photo {
  width: 100%;
  aspect-ratio: 1 / 1;
  border-radius: 0;
  overflow: hidden;
  margin: 0 0 var(--space-5);
  flex-shrink: 0;
  background: var(--color-surface);
}
.team-card__photo img { width: 100%; height: 100%; object-fit: cover; object-position: center top; display: block; }
/* Card for a member presented without a portrait: starts straight on the name,
   with a short gold rule on top to keep the visual rhythm of the grid. */
.team-card--nophoto {
  padding-top: var(--space-6);
  min-height: 260px;
  background: var(--color-surface);
}
.team-card--nophoto::before {
  content: "";
  display: block;
  width: 40px;
  height: 2px;
  flex-shrink: 0;
  margin: 0 var(--space-6) var(--space-5);
  background: var(--color-accent);
}
.team-card__name {
  font-size: var(--text-xl);
  line-height: var(--leading-tight, 1.2);
  margin: 0 0 var(--space-2);
  padding: 0 var(--space-6);
}
.team-card__role {
  font-size: var(--text-sm);
  color: var(--color-accent-strong);
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-wide);
  text-transform: uppercase;
  margin: 0 0 var(--space-3);
  padding: 0 var(--space-6);
}
.team-card__bio {
  color: var(--color-text-secondary);
  line-height: var(--leading-relaxed);
  margin: 0 0 var(--space-4);
  padding: 0 var(--space-6);
  flex-grow: 1;
}
.team-card__cue {
  font-size: var(--text-sm);
  color: var(--color-accent-strong);
  text-decoration: underline;
  padding: 0 var(--space-6) var(--space-6);
}

/* Team: bio modal */
.team-modal {
  position: fixed;
  inset: 0;
  z-index: 1000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--space-5);
}
.team-modal[hidden] { display: none; }
.team-modal__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(10, 15, 22, 0.6);
}
.team-modal__panel {
  position: relative;
  z-index: 1;
  max-width: 560px;
  width: 100%;
  max-height: min(80vh, 720px);
  overflow-y: auto;
  background: var(--color-surface-raised);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-xl);
  padding: var(--space-8);
}
@media (max-width: 480px) {
  .team-modal { padding: var(--space-3); }
  .team-modal__panel { padding: var(--space-6); max-height: min(88vh, 720px); }
}
.team-modal__panel:focus { outline: none; }
.team-modal__close {
  position: absolute;
  top: var(--space-4);
  right: var(--space-4);
  width: 32px;
  height: 32px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: var(--radius-pill, 999px);
  color: var(--color-text-secondary);
  background: var(--color-surface);
  border: var(--border-hairline);
}
.team-modal__close:hover { color: var(--color-text-primary); border-color: var(--color-border-strong); }
.team-modal__photo-inner {
  width: 128px;
  height: 128px;
  border-radius: var(--radius-md);
  overflow: hidden;
  margin-bottom: var(--space-5);
}
.team-modal__photo-inner img { width: 100%; height: 100%; object-fit: cover; display: block; }
.team-modal__name { margin: 0 0 var(--space-1); }
.team-modal__role {
  font-size: var(--text-sm);
  color: var(--color-accent-strong);
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-wide);
  text-transform: uppercase;
  margin: 0 0 var(--space-5);
}
.team-modal__links { display: flex; flex-wrap: wrap; gap: var(--space-3); margin-bottom: var(--space-6); }
.team-modal__links:empty { display: none; margin-bottom: 0; }
.team-modal__bio { color: var(--color-text-secondary); line-height: var(--leading-relaxed); }
.team-modal__bio p { margin: 0 0 var(--space-4); }
.team-modal__bio p:last-child { margin-bottom: 0; }

/* Team: organisation-in-progress chart */
.org-chart {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-5);
}
@media (max-width: 720px) {
  .org-chart { grid-template-columns: minmax(0, 1fr); }
}
.org-role {
  min-width: 0;
  padding: var(--space-6);
  border: var(--border-hairline);
  border-radius: var(--radius-md);
  background: var(--color-surface-raised);
  display: flex;
  flex-direction: column;
}
.org-role__header { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: flex-start; gap: var(--space-3); margin-bottom: var(--space-3); }
.org-role__title { font-size: var(--text-lg); margin: 0; min-width: 0; }
.org-role__status {
  flex-shrink: 0;
  font-size: var(--text-xs);
  letter-spacing: var(--tracking-wide);
  text-transform: uppercase;
  color: var(--color-accent-strong);
  border: 1px solid var(--color-accent-strong);
  border-radius: var(--radius-pill, 999px);
  padding: 2px var(--space-3);
  white-space: nowrap;
}
.org-role__scope { color: var(--color-text-secondary); line-height: var(--leading-relaxed); margin-bottom: var(--space-4); flex-grow: 1; }
.org-role__link { font-size: var(--text-sm); color: var(--color-accent-strong); text-decoration: underline; }

/* ---------------------------------------------------------------------
   PARTNERS — logo grid, category filter, detailed profile cards
   --------------------------------------------------------------------- */

.partner-logo-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--space-4);
}
@media (max-width: 900px) {
  .partner-logo-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 640px) {
  .partner-logo-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
.partner-logo-tile {
  aspect-ratio: 3 / 2;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--space-5);
  background: var(--color-surface-raised);
  border: var(--border-hairline);
  border-radius: var(--radius-md);
  min-width: 0;
  overflow: hidden;
  transition: border-color var(--duration-base) var(--ease-standard),
              box-shadow var(--duration-base) var(--ease-standard);
}
.partner-logo-tile:hover {
  border-color: var(--color-border-strong);
  box-shadow: var(--shadow-md);
}
.partner-logo-tile img {
  max-width: 100%;
  max-height: 42px;
  width: auto;
  height: auto;
  object-fit: contain;
}
.partner-logo-tile__pending {
  font-size: var(--text-xs);
  letter-spacing: var(--tracking-wide);
  text-transform: uppercase;
  color: var(--color-text-muted);
  text-align: center;
  line-height: var(--leading-relaxed);
}
.partner-logo-tile:has(.partner-logo-tile__dark-frame) { padding: 0; }
.partner-logo-tile__dark-frame {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  background: var(--color-inverse-surface);
  border-radius: var(--radius-md);
}
.partner-logo-tile__dark-frame img { max-height: 62%; max-width: 62%; }

/* Category filter pills (reuses faq-toc visual language) */
.partner-filter {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  margin-bottom: var(--space-8);
}
.partner-filter__btn {
  padding: var(--space-2) var(--space-4);
  border: var(--border-hairline);
  border-radius: var(--radius-pill, 999px);
  background: var(--color-bg);
  font-size: var(--text-xs);
  letter-spacing: var(--tracking-wide);
  text-transform: uppercase;
  color: var(--color-text-secondary);
  transition: border-color var(--duration-base) var(--ease-standard),
              color var(--duration-base) var(--ease-standard),
              background var(--duration-base) var(--ease-standard);
}
.partner-filter__btn:hover { border-color: var(--color-accent-strong); color: var(--color-text-primary); }
.partner-filter__btn[aria-pressed="true"] {
  background: var(--color-accent-strong);
  border-color: var(--color-accent-strong);
  color: var(--color-text-inverse);
}

/* Detailed partner profile cards */
.partner-profile-list {
  display: flex;
  flex-direction: column;
  gap: var(--space-6);
}
.partner-profile {
  display: grid;
  grid-template-columns: 160px minmax(0, 1fr);
  gap: var(--space-7);
  padding: var(--space-7);
  background: var(--color-surface-raised);
  border: var(--border-hairline);
  border-radius: var(--radius-md);
  scroll-margin-top: calc(var(--header-height) + var(--space-4));
}
@media (max-width: 720px) {
  .partner-profile { grid-template-columns: minmax(0, 1fr); gap: var(--space-5); }
}
.partner-profile__logo {
  display: flex;
  align-items: flex-start;
  justify-content: center;
  padding: var(--space-4);
  height: 96px;
  background: var(--color-surface);
  border: var(--border-hairline);
  border-radius: var(--radius-sm);
}
@media (max-width: 720px) {
  .partner-profile__logo { justify-content: flex-start; height: 72px; }
}
.partner-profile__logo img {
  max-width: 100%;
  max-height: 40px;
  width: auto;
  height: auto;
  object-fit: contain;
  align-self: center;
}
.partner-profile__logo .partner-logo-tile__pending { font-size: 10px; }
.partner-profile__logo.partner-profile__logo--dark {
  background: var(--color-inverse-surface);
  border-color: var(--color-inverse-surface);
  padding: var(--space-2);
}
.partner-profile__logo.partner-profile__logo--dark img { max-height: 100%; max-width: 100%; }
.partner-profile__header {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: var(--space-3);
  margin-bottom: var(--space-3);
}
.partner-profile__name { margin: 0; }
.partner-profile__category {
  font-size: var(--text-xs);
  letter-spacing: var(--tracking-wide);
  text-transform: uppercase;
  color: var(--color-accent-strong);
  border: 1px solid var(--color-accent-strong);
  border-radius: var(--radius-pill, 999px);
  padding: 2px var(--space-3);
  white-space: nowrap;
}
.partner-profile__desc {
  color: var(--color-text-secondary);
  line-height: var(--leading-relaxed);
  margin-bottom: var(--space-4);
}
.partner-profile__link {
  font-size: var(--text-sm);
  color: var(--color-accent-strong);
  text-decoration: underline;
  display: inline-block;
  margin-bottom: var(--space-5);
}

/* Relationship-pending block: intentionally quiet, easy to spot and replace */
.partner-relationship {
  padding: var(--space-4) var(--space-5);
  background: var(--color-surface);
  border: 1px dashed var(--color-border-strong);
  border-radius: var(--radius-sm);
}
.partner-relationship__label {
  font-size: var(--text-xs);
  letter-spacing: var(--tracking-wide);
  text-transform: uppercase;
  color: var(--color-text-muted);
  margin-bottom: var(--space-1);
}
.partner-relationship__text {
  font-size: var(--text-sm);
  font-style: italic;
  color: var(--color-text-muted);
  margin: 0;
}

/* Legal pages: anchored table of contents + fact list */
.legal-toc {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2) var(--space-5);
  padding-bottom: var(--space-6);
  margin-bottom: var(--space-2);
  border-bottom: var(--border-hairline);
}
.legal-toc a { font-size: var(--text-sm); color: var(--color-text-secondary); }
.legal-toc a:hover { color: var(--color-accent-strong); }

.legal-fact-list { border-top: var(--border-hairline); margin: var(--space-5) 0 var(--space-6); }
.legal-fact-list > div {
  display: grid;
  grid-template-columns: 260px minmax(0, 1fr);
  gap: var(--space-5);
  padding: var(--space-4) 0;
  border-bottom: var(--border-hairline);
}
@media (max-width: 640px) {
  .legal-fact-list > div { grid-template-columns: minmax(0, 1fr); gap: var(--space-1); }
}
.legal-fact-list dt { font-size: var(--text-xs); letter-spacing: var(--tracking-wide); text-transform: uppercase; color: var(--color-text-muted); font-family: var(--font-mono); }
.legal-fact-list dd { color: var(--color-text-primary); margin: 0; }

/* ---------------------------------------------------------------------
   DOCUMENTS — featured thesis, filterable document library, access notice
   --------------------------------------------------------------------- */

.doc-feature {
  display: flex;
  gap: var(--space-8);
  padding: var(--space-8);
  background: var(--color-inverse-surface);
  border-radius: var(--radius-md);
}
.doc-feature__cover {
  flex-shrink: 0;
  width: 220px;
  border-radius: var(--radius-sm);
  overflow: hidden;
  box-shadow: var(--shadow-md);
}
.doc-feature__cover img { display: block; width: 100%; height: auto; }
.doc-feature__text { max-width: 640px; }
.doc-feature__title {
  font-family: var(--font-serif);
  font-size: var(--text-2xl);
  color: var(--color-text-inverse);
  margin: var(--space-4) 0 var(--space-3);
}
.doc-feature__desc {
  color: var(--fpc-gray-300, rgba(255,255,255,0.72));
  line-height: var(--leading-relaxed);
  margin-bottom: var(--space-5);
}
.doc-feature__meta {
  display: flex;
  gap: var(--space-2);
  margin-bottom: var(--space-6);
}
.doc-feature .badge--outline { border-color: rgba(255,255,255,0.35); color: var(--fpc-gray-300, rgba(255,255,255,0.72)); }
@media (max-width: 640px) {
  .doc-feature { flex-direction: column; }
  .doc-feature__cover { width: 140px; }
}

.doc-list {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--space-5);
}
@media (max-width: 900px) {
  .doc-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 640px) {
  .doc-list { grid-template-columns: minmax(0, 1fr); }
}
.doc-card {
  display: flex;
  flex-direction: column;
  background: var(--color-surface-raised);
  border: var(--border-hairline);
  border-radius: var(--radius-md);
  overflow: hidden;
  text-decoration: none;
  color: inherit;
  transition: border-color var(--duration-base) var(--ease-standard),
              box-shadow var(--duration-base) var(--ease-standard);
}
.doc-card:hover { border-color: var(--color-border-strong); box-shadow: var(--shadow-md); }
.doc-card__cover {
  position: relative;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  background: var(--color-inverse-surface);
  border-bottom: var(--border-hairline);
}
.doc-card__cover img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: top center; }

/* ---------------------------------------------------------------------
   DOCUMENT COVERS — typographic thumbnails
   The PDF covers used to be near-identical black rectangles, which made the
   library impossible to scan. Each thumbnail is now composed in CSS from the
   document's own title plus a category accent (hue + gold rule + concentric
   motif), so every card is distinct at a glance while staying inside the
   black / gold / white palette and the site's serif typography.
   --------------------------------------------------------------------- */
.doc-cover {
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  height: 100%;
  padding: var(--space-5) var(--space-5) var(--space-5);
  background:
    radial-gradient(120% 90% at 100% 0%, rgba(191, 160, 102, 0.20) 0%, rgba(191, 160, 102, 0) 55%),
    linear-gradient(155deg, var(--doc-cover-tint, #16202c) 0%, var(--fpc-ink-900) 78%);
  overflow: hidden;
  isolation: isolate;
}
/* Concentric ring motif, echoing the roundel of the company mark. Kept light
   and pushed into the bottom-right corner so it never competes with the title. */
.doc-cover::before {
  content: "";
  position: absolute;
  right: -30%;
  bottom: -58%;
  width: 78%;
  aspect-ratio: 1;
  border-radius: 50%;
  border: 1px solid rgba(191, 160, 102, 0.34);
  box-shadow:
    0 0 0 1px rgba(191, 160, 102, 0.10),
    inset 0 0 0 10px rgba(191, 160, 102, 0.05),
    inset 0 0 0 11px rgba(191, 160, 102, 0.16);
  z-index: -1;
}
.doc-cover__top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-3);
}
.doc-cover__category {
  font-family: var(--font-mono);
  font-size: 0.6875rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--fpc-bronze-300);
  white-space: nowrap;
}
.doc-cover__mark { display: block; flex-shrink: 0; opacity: 0.9; }
.doc-cover__body { position: relative; }
.doc-cover__rule {
  display: block;
  width: 38px;
  height: 2px;
  margin-bottom: var(--space-3);
  background: linear-gradient(90deg, var(--fpc-bronze-400), rgba(191, 160, 102, 0));
}
.doc-cover__title {
  margin: 0;
  font-family: var(--font-serif);
  font-size: 1.375rem;
  line-height: 1.22;
  font-weight: var(--weight-semibold, 600);
  color: #ffffff;
  display: -webkit-box;
  -webkit-line-clamp: 4;
  line-clamp: 4;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.doc-cover__format {
  margin: var(--space-3) 0 0;
  font-family: var(--font-mono);
  font-size: 0.625rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.42);
}
.doc-card:hover .doc-cover__title { color: var(--fpc-bronze-200); }

/* Category hues — all deep and sober, differentiated only by tint. */
.doc-cover--scientific   { --doc-cover-tint: #0f2a2e; }
.doc-cover--institutional{ --doc-cover-tint: #16233a; }
.doc-cover--partners     { --doc-cover-tint: #2a2119; }
.doc-cover--services     { --doc-cover-tint: #1b2430; }
.doc-cover--company      { --doc-cover-tint: #241a2b; }
.doc-cover--team         { --doc-cover-tint: #1e2a25; }

/* Featured thesis cover uses the same composition, portrait format. */
.doc-feature__cover .doc-cover {
  aspect-ratio: 220 / 311;
  padding: var(--space-6);
}
.doc-feature__cover .doc-cover__title { font-size: 1.5rem; -webkit-line-clamp: 5; line-clamp: 5; }

@media (max-width: 640px) {
  .doc-cover__title { font-size: 1.25rem; }
}
.doc-card__body {
  display: flex;
  flex-direction: column;
  flex-grow: 1;
  padding: var(--space-5) var(--space-6) var(--space-6);
}
.doc-card__head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--space-3);
  margin-bottom: var(--space-2);
}
.doc-card__title { font-size: var(--text-lg); margin: 0; }
.doc-card__desc {
  color: var(--color-text-secondary);
  line-height: var(--leading-relaxed);
  margin-bottom: var(--space-5);
  flex-grow: 1;
}
.doc-card__link {
  font-size: var(--text-sm);
  color: var(--color-accent-strong);
  text-decoration: underline;
}
.doc-card__access {
  font-size: var(--text-sm);
  color: var(--color-text-muted);
  font-style: italic;
}
