/* ============================================================
   ABOUT — the page's own layout. Everything else on it is shared:
   the photographs are photos.css's frames, the services pages.css's
   svc3 cards, the facts its kv grid.
   ============================================================ */

/* ---- the hall, under the headline: one wide frame ---- */
.ab-hero .ph__frame { aspect-ratio: 2 / 1; }
@media (max-width: 700px) { .ab-hero .ph__frame { aspect-ratio: 4 / 3; } }

/* ---- who we are: their sentence beside the team ---- */
.ab-who { align-items: start; }
.ab-who__text { display: grid; gap: clamp(20px, 2.4vw, 32px); align-content: start; }
@media (min-width: 900px) {
  .ab-who { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); column-gap: clamp(40px, 5vw, 96px); }
}

/* ---- vision and mission: two signed sentences ---- */
.ab-pm { display: grid; gap: clamp(28px, 3vw, 48px); }
@media (min-width: 800px) { .ab-pm { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: clamp(32px, 4vw, 72px); } }
.ab-q { margin: 0; display: grid; gap: 16px; align-content: start; padding-top: 18px; border-top: 1px solid var(--rule); }
.ab-q__k {
  font-family: var(--mono); font-size: .6875rem; letter-spacing: .14em; text-transform: uppercase;
  color: var(--link);
}
.ab-q blockquote { margin: 0; }
.ab-q blockquote p {
  font-family: var(--display); font-weight: 600; font-size: var(--fs-h3); line-height: 1.3;
  letter-spacing: -0.015em; color: var(--ink); text-wrap: pretty; max-width: 34ch;
}
.ab-q blockquote p::before { content: "\201C"; }
.ab-q blockquote p::after { content: "\201D"; }
.ab-q figcaption { font-size: var(--fs-sm); color: var(--ink-2); }
.ab-q figcaption b { font-weight: 650; color: var(--ink); }

/* ---- where CFL fits: his two lists, the delivery beside them ---- */
.ab-scope__body { display: grid; gap: clamp(32px, 4vw, 56px); align-items: start; }
@media (min-width: 900px) {
  .ab-scope__body { grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); column-gap: clamp(40px, 5vw, 96px); }
}
.ab-scope__cols { display: grid; gap: clamp(28px, 3vw, 40px); align-content: start; }
@media (min-width: 700px) {
  .ab-scope__cols { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: clamp(28px, 3vw, 48px); }
  .ab-scope__close { grid-column: 1 / -1; }
}
.ab-scope__col { display: grid; gap: 12px; align-content: start; padding-top: 18px; border-top: 1px solid var(--rule); }
.ab-scope__k {
  font-family: var(--mono); font-size: .6875rem; letter-spacing: .14em; text-transform: uppercase;
  color: var(--link);
}
.ab-scope__col--not .ab-scope__k { color: var(--ink-3); }
.ab-scope__lede { font-size: var(--fs-sm); color: var(--ink); line-height: 1.5; }
.ab-list { display: grid; gap: 2px; }
.ab-list li { position: relative; padding: 5px 0 5px 22px; font-size: var(--fs-sm); color: var(--ink); line-height: 1.45; }
.ab-list li::before { content: ""; position: absolute; left: 0; top: 1.05em; width: 12px; height: 1px; background: var(--link); }
.ab-list--not li { color: var(--ink-2); }
.ab-list--not li::before { background: var(--ink-3); }
.ab-scope__close { padding-top: 18px; border-top: 1px dashed var(--rule); }
.ab-scope .ph__frame { aspect-ratio: 4 / 5; }
@media (max-width: 899px) { .ab-scope .ph { max-width: 520px; } }

/* ---- credentials: three of his, three from the current site ---- */
@media (min-width: 1000px) { .kv--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } }

/* ---- where we have worked ---- */
.ab-places { display: flex; flex-wrap: wrap; gap: 8px; }
.ab-places .chip { font-size: .75rem; padding: 7px 12px; }

/* ---- vision and mission, with the portraits: two signed spreads ----
   Each portrait is a cut-out in front of the head office — his own
   photographs of the hall and the building, softened as a lens would and
   graded high key — with the head standing above the frame's top edge.
   The two people are matched in the files themselves: one face size, one
   tone, and the photographs' own grade (photos.css) baked in. The quote is
   the page's one serif, set as a pull quote, and the rows alternate. */
.ab-pm:has(.ab-q--ph) { grid-template-columns: minmax(0, 1fr); row-gap: clamp(72px, 9vw, 136px); }
.ab-q--ph {
  border-top: 0; padding-top: 0; row-gap: 0;
  grid-template-columns: minmax(0, 1fr);
  grid-template-areas: "ph" "k" "q" "cap";
}
.ab-q__ph {
  grid-area: ph; position: relative;
  /* the picture is square and the frame 4:3: a quarter of its width
     stands above the frame, which is the room the head needs */
  aspect-ratio: 4 / 3; margin-top: 25%; max-width: 460px;
  border-radius: var(--radius);
  background: var(--ground-2);
  box-shadow: 0 0 0 1px rgba(14, 21, 19, .07);
}
.ab-q__bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; border-radius: inherit; }
.ab-q__ph > img:not(.ab-q__bg) {
  position: absolute; left: 0; bottom: 0; z-index: 1;
  width: 100%; height: 133.334%;
  border-radius: 0 0 var(--radius) var(--radius);
}
.ab-q--ph .ab-q__k { display: flex; align-items: center; gap: 12px; margin-top: 32px; }
.ab-q--ph .ab-q__k span { color: var(--ink-3); }
.ab-q--ph .ab-q__k::after { content: ""; width: 56px; height: 1px; background: var(--accent-dim); }
.ab-q--ph blockquote { margin-top: 22px; }
.ab-q--ph blockquote::before {
  content: "\201C"; display: block; height: .44em; margin-left: -.04em;
  font-family: 'Source Serif 4', Georgia, serif; font-weight: 600; font-style: normal;
  font-size: clamp(5rem, 3.6rem + 4vw, 8rem); line-height: .9; color: var(--accent);
}
.ab-q--ph blockquote p {
  font-family: 'Source Serif 4', Georgia, 'Times New Roman', serif;
  font-style: italic; font-weight: 400;
  font-size: clamp(1.5rem, 1.1rem + 1.45vw, 2.375rem); line-height: 1.24; letter-spacing: -0.01em;
  max-width: 27ch; color: var(--ink);
}
.ab-q--ph blockquote p::before, .ab-q--ph blockquote p::after { content: none; }
.ab-q--ph figcaption { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 14px; margin-top: 28px; }
.ab-q--ph figcaption::before { content: ""; align-self: center; width: 32px; height: 1px; background: var(--accent); }
.ab-q--ph figcaption b { font-family: var(--display); font-weight: 600; font-size: 1.0625rem; letter-spacing: -0.01em; }
.ab-q--ph figcaption span {
  font-family: var(--mono); font-size: .8125rem; letter-spacing: .1em; text-transform: uppercase; color: var(--ink-3);
}
@media (min-width: 900px) {
  .ab-q--ph {
    grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); column-gap: clamp(48px, 7vw, 128px);
    grid-template-areas: "ph ." "ph k" "ph q" "ph cap" "ph .";
    grid-template-rows: 1fr auto auto auto 1fr;
  }
  .ab-q--ph:nth-child(even) {
    grid-template-columns: minmax(0, 7fr) minmax(0, 5fr);
    grid-template-areas: ". ph" "k ph" "q ph" "cap ph" ". ph";
  }
  .ab-q--ph:nth-child(even) .ab-q__ph { justify-self: end; }
  .ab-q__ph { max-width: none; width: 100%; }
  .ab-q--ph .ab-q__k { margin-top: 0; }
}

/* ---- head office: the building, then its hall ---- */
.ab-hq { display: grid; gap: var(--ph-gap); }
@media (min-width: 760px) { .ab-hq { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.ab-hq .ph__frame { aspect-ratio: 16 / 9; }

/* ---- credentials: each issuer's mark above its name, in the grey the
   home page's strip draws them in; the strip's own sizes, so a wordmark
   runs long and low and a label stands tall ---- */
.kv--marks .kv__row { gap: 10px; }
.kv__mark { display: flex; align-items: center; height: 58px; margin-bottom: 6px; color: color-mix(in srgb, var(--ink-3) 72%, var(--ground)); }
.kv__mark .cred__mark { transform: none; }

/* ---- our approach: his two subsections side by side, each opening on
   the sentence it argues from ---- */
.ab-ap { display: grid; gap: clamp(40px, 4vw, 56px); }
@media (min-width: 900px) { .ab-ap { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: clamp(40px, 5vw, 96px); } }
.ab-ap__c { display: grid; gap: 18px; align-content: start; padding-top: 18px; border-top: 1px solid var(--rule); }
.ab-ap__k {
  display: flex; align-items: center; gap: 12px;
  font-family: var(--mono); font-weight: 500; font-size: .6875rem; line-height: 1.4;
  letter-spacing: .14em; text-transform: uppercase; color: var(--link);
}
.ab-ap__k span { color: var(--ink-3); }
.ab-ap__lead {
  font-family: var(--display); font-weight: 600; font-size: var(--fs-h3); line-height: 1.3;
  letter-spacing: -0.015em; color: var(--ink); text-wrap: pretty; max-width: 30ch;
}

/* ---- direct access: the heading beside his four sentences, on the
   page's centre line, and the line his colon introduces set apart ---- */
@media (min-width: 900px) {
  .ab-split { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); column-gap: clamp(40px, 5vw, 96px); align-items: start; }
}
.ab-split__body { display: grid; gap: clamp(22px, 2.4vw, 32px); }
.ab-close {
  font-family: var(--display); font-weight: 600; font-size: var(--fs-h3); line-height: 1.3;
  letter-spacing: -0.015em; color: var(--ink); text-wrap: pretty; max-width: 34ch;
  padding-left: 20px; border-left: 2px solid var(--accent);
}

/* ---- built for high-value technology: who we are, mirrored — the
   servers on the left, his sentences on the right ---- */
@media (min-width: 900px) { .ab-who--flip > .ph { order: -1; } }
/* balanced, the heading breaks at the hyphen in High-Value */
.ab-who--flip h2 { text-wrap: wrap; }

/* ---- the CFL principle: his one sentence, set as the page's statement
   on a band of its own ---- */
.ab-pr { background: var(--ground-2); border-block: 1px solid var(--rule); }
.ab-pr__in { display: grid; gap: clamp(24px, 3vw, 40px); }
.ab-pr__h { line-height: 1.4; }
.ab-pr__q {
  font-family: var(--display); font-weight: 700; font-size: clamp(2rem, 1.1rem + 3.4vw, 4.25rem);
  line-height: 1.04; letter-spacing: -0.03em; color: var(--ink); text-wrap: balance; max-width: 17ch;
}
@media (min-width: 900px) {
  .ab-pr__in { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); column-gap: clamp(40px, 5vw, 96px); align-items: end; }
  .ab-pr__h { grid-column: 1 / -1; }
}
