/* About page, mirroring bespokelabs.ai/about (Framer).
   The first part holds the pieces the Contact page shares (it loads this file too):
   type presets, Framer's overlay borders, the eyebrow with its growing underline, buttons,
   the office bar and the load/scroll motion. Values are Framer's computed ones.
   Breakpoints: desktop >= 1440px, tablet 810–1439px, phone < 810px. */

:root {
  /* motion's spring with bounce 0 (critically damped), sampled; the duration sets the speed */
  --spring: linear(0, 0.0229, 0.0788, 0.1532, 0.2361, 0.3208, 0.403, 0.4802, 0.5509, 0.6146, 0.6711, 0.7207, 0.7638, 0.801, 0.8329, 0.8601, 0.8832, 0.9027, 0.9191, 0.9329, 0.9445, 0.9541, 0.9621, 0.9688, 0.9743, 0.9789, 0.9827, 0.9858, 0.9884, 0.9905, 0.9922, 0.9936, 0.9948, 0.9958, 0.9965, 0.9972, 0.9977, 0.9981, 0.9985, 0.9988, 1);
  --tween: cubic-bezier(.44, 0, .56, 1);
  --mint: #ced9d0;          /* label text on teal, <mark> highlight */
  --card-teal: #235458;     /* cards and bars on the teal section */
  --inter-ff: "blwf", "cv03", "cv04", "cv09";
}

/* ── type presets ── */
.lead {                    /* Framer "nuinij" */
  font-family: var(--sans); font-feature-settings: var(--inter-ff);
  font-size: 17.6px; line-height: 1.4; letter-spacing: -.01em;
  text-wrap: balance;
}
.body {                    /* "9kidfq" */
  font-family: var(--sans); font-size: 16px; line-height: 1.4; color: var(--teal);
}
.small {                   /* "jhb3yj" */
  font-family: var(--sans); font-feature-settings: var(--inter-ff);
  font-size: 13px; line-height: 1.4; letter-spacing: -.01em; color: rgba(17, 72, 78, .7);
}
.h2 {                      /* "1gjj3sd" */
  font-family: var(--serif); font-weight: 300;
  font-size: 45.28px; line-height: 1; letter-spacing: -.04em; color: var(--teal);
}
.h3 {                      /* "7bvuac" */
  font-family: var(--serif); font-weight: 300;
  font-size: 32px; line-height: 1; letter-spacing: -.02em; color: var(--teal);
  text-wrap: balance;
}
.display {                 /* "1wgd790", the page headline */
  font-family: var(--serif); font-weight: 300;
  font-size: 88px; line-height: .9; letter-spacing: -.04em; color: var(--teal);
  text-align: center;
}
.w { display: inline-block; --i: 0; }
/* word index for the staggered headlines (inline styles are blocked by the CSP) */
.i0 { --i: 0; } .i1 { --i: 1; } .i2 { --i: 2; } .i3 { --i: 3; } .i4 { --i: 4; } .i5 { --i: 5; } .i6 { --i: 6; } .i7 { --i: 7; } .i8 { --i: 8; } .i9 { --i: 9; } .i10 { --i: 10; } .i11 { --i: 11; }
@media (max-width: 1439px) {
  .lead { font-size: 17.28px; }
  .body { font-size: 15px; }
  .h2 { font-size: 40px; }
  .h3 { font-size: 28.8px; }
  .display { font-size: 60.8px; }
}
@media (max-width: 809px) {
  .lead { font-size: 14.4px; }
  .h2 { font-size: 32px; }
  .h3 { font-size: 23.68px; }
  .display { font-size: 46.4px; }
}

/* Framer draws borders as an overlay, so they take no layout space.
   Set --bw (top right bottom left) and --bc on the element. */
.fborder { position: relative; }
.fborder::after {
  content: ""; position: absolute; inset: 0; z-index: 3; pointer-events: none;
  border: solid var(--bc, var(--stone)); border-width: var(--bw, 1px);
}

/* mono eyebrow whose underline grows when it scrolls into view (about.js toggles .on) */
.uline {
  position: relative; display: inline-flex; padding: 4px 0;
  font-family: var(--mono); font-feature-settings: "zero"; font-size: 12px; line-height: 14.4px; letter-spacing: .05em;
  color: var(--muted); white-space: nowrap;
}
.uline::after {
  content: ""; position: absolute; left: -1px; bottom: 2px; z-index: 1;
  width: 1px; height: 1px; background: currentColor; opacity: .5;
  transition: width .9s var(--spring) .2s;
}
.uline.on::after { width: calc(100% + 1px); }

/* label with a red bar, e.g. "Our Mission" */
.tag {
  display: flex; align-items: center; gap: 6px; padding-top: 5px;
  font-family: var(--mono); font-feature-settings: "zero"; font-size: 12px; line-height: 14.4px; letter-spacing: .05em;
  color: var(--mint); white-space: nowrap;
}
.tag-bar { width: 2px; height: 14px; background: var(--red); flex: none; }

/* ── buttons (Framer "Button CTA") ── */
.fbtn {
  position: relative; display: inline-flex; align-items: center; gap: 6px;
  padding: 8px 8px 8px 14px;
  font-family: var(--sans); font-size: 14px; font-weight: 500; line-height: 23.8px; white-space: nowrap;
  transition: opacity .3s var(--spring), background-color .3s var(--spring);
}
.fi-box { display: flex; align-items: center; justify-content: center; width: 24px; height: 24px; flex: none; transform: rotate(-45deg); transition: transform .3s var(--spring); }
.fi { width: 20px; height: 20px; fill: currentColor; }
.fbtn-primary { background: var(--teal); color: var(--white); box-shadow: 0 1px 2px rgba(18, 18, 23, .05); }
.fbtn-secondary { background: var(--cream); color: var(--teal); padding-right: 16px; }
.fbtn-secondary::after { content: ""; position: absolute; inset: 0; border: 1.5px solid var(--teal); pointer-events: none; }
.fbtn-text { gap: 4px; padding: 4px 0; color: var(--teal); }
.fbtn-text .fi { width: 18px; height: 18px; }
@media (min-width: 1440px) {
  .fbtn-primary:hover { opacity: .9; }
  .fbtn-text:hover { opacity: .7; }
  .fbtn-primary:hover .fi-box, .fbtn-text:hover .fi-box { transform: none; }
  .fbtn-secondary:hover { background: #fffefa; }
}

/* ── hiring card + office bar (also on Contact) ── */
.join-card {
  --bw: 1px; background: var(--paper);
  display: flex; align-items: flex-end; gap: 20px; padding: 32px 24px 24px 32px;
}
.join-card-txt { flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; gap: 16px; padding: 0 6px 6px 0; }
.join-card-sub { max-width: 442px; color: var(--teal-mid); text-wrap: balance; }
.office {
  --bw: 0 1px 1px; background: var(--cream);
  display: flex; align-items: flex-end; gap: 24px; padding: 32px;
}
.office-tag {
  --bw: 1px; background: var(--paper);
  display: flex; align-items: center; gap: 2px; padding: 4px; flex: none;
  font-family: var(--mono); font-feature-settings: "zero"; font-size: 12px; line-height: 14.4px; letter-spacing: .05em;
  color: var(--teal); white-space: nowrap;
}
.office-k, .office-v { padding: 9px 12px 7px; }
.office-tag .dot { width: 5px; height: 5px; background: var(--red); flex: none; }
.office-v-short { display: none; }
.office-addr { flex: 1 1 0; min-width: 0; }
@media (max-width: 809px) {
  .join-card { flex-direction: column; align-items: flex-start; gap: 32px; padding: 24px 16px 16px; }
  .join-card-txt { flex: none; width: 100%; }
  .office { flex-direction: column; align-items: flex-start; padding: 24px 16px 16px; }
  .office-addr { flex: none; width: 100%; }
}

/* ── motion ──
   On load: headline words rise in, the hero slides down, copy fades in (pure CSS).
   On scroll: about.js adds .in to .rv / .words-view when half visible. */
@keyframes ab-word { from { opacity: .001; transform: translateY(70px); } }
@keyframes ab-fade { from { opacity: .001; } }
@keyframes ab-slide { from { transform: translateY(-30px); } }
@keyframes ab-show { to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: no-preference) {
  .words-mount .w { animation: ab-word .6s var(--spring) calc(15ms + var(--i) * 15ms) both; }
  .mount-fade { animation: ab-fade .6s var(--tween) .4s both; }
  .mount-slide { animation: ab-slide .3s var(--tween) 15ms both; }
}
@media (scripting: enabled) and (prefers-reduced-motion: no-preference) {
  .rv { transition: opacity .4s var(--spring), transform .4s var(--spring); }
  .rv-late { transition-delay: .1s; }
  .rv:not(.in) { opacity: 0; transform: translateY(10px); }
  .words-view .w { transition: opacity .6s var(--spring), transform .6s var(--spring); transition-delay: calc(15ms + var(--i) * 15ms); }
  .words-view:not(.in) .w { opacity: .001; transform: translateY(70px); }
  /* if about.js never runs, show everything after 3s */
  html:not(.mo) .rv:not(.in), html:not(.mo) .words-view:not(.in) .w { animation: ab-show 0s 3s forwards; }
}

/* ════════════ About page ════════════ */

/* hero */
.ab-hero { position: relative; z-index: 2; display: flex; justify-content: center; padding: 0 40px; }
.ab-hero-in { width: 100%; max-width: 1920px; padding: 80px 20px 120px; }
.ab-hero-stack { display: flex; flex-direction: column; align-items: center; gap: 20px; }
.ab-h1 { width: 100%; }
.ab-h1 .brk { color: var(--red); }
.ab-h1 .i7, .ab-h1 .i8 { padding-right: .09em; } /* live renders the trailing space inside "[ " and "reliable " this wide */
.ab-hero-sub { width: 100%; display: flex; flex-direction: column; align-items: center; gap: 24px; }
.ab-hero-lead { width: 100%; max-width: 754px; color: var(--teal-mid); text-align: center; }
.ab-hero-lead span { color: var(--teal); }
.ab-hero-ctas { display: flex; align-items: center; justify-content: center; gap: 12px; }

/* teal section: mission, vision card, team photo, citations */
.ab-green { position: relative; z-index: 2; overflow: hidden; display: flex; flex-direction: column; align-items: center; }
.ab-wave { position: absolute; left: 0; right: 0; bottom: 0; z-index: 1; width: 100%; max-width: none; height: auto; aspect-ratio: 3.40502; object-fit: cover; }
.ab-green-in { width: 100%; max-width: 1920px; background: var(--teal); padding: 140px 40px 44px; display: flex; flex-direction: column; align-items: center; }

.ab-mission { position: relative; z-index: 2; width: 100%; max-width: 1700px; display: flex; align-items: flex-start; gap: 40px; padding-bottom: 140px; }
.ab-mission-l { flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; align-items: flex-start; gap: 24px; }
.ab-mission-h {
  width: 100%; font-family: var(--serif); font-weight: 300;
  font-size: 64px; line-height: .9; letter-spacing: -.04em; color: var(--paper); text-wrap: balance;
}
.ab-mission-r { flex: 1 1 0; min-width: 0; }
.ab-card { --bc: var(--teal-mid); display: flex; background: var(--card-teal); overflow: hidden; }
.ab-card-txt { position: relative; z-index: 1; flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; gap: 48px; padding: 24px; }
.ab-card-copy { display: flex; flex-direction: column; gap: 16px; }
.ab-card .h3, .ab-card .lead { color: var(--paper); }
.ab-card .lead { text-align: left; }
.ab-card-img { --bc: var(--teal-mid); flex: none; align-self: stretch; width: 266px; overflow: hidden; }
.ab-card-img img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }

.ab-team { position: relative; z-index: 1; width: 100%; display: flex; flex-direction: column; align-items: center; overflow: hidden; }
@media (prefers-reduced-motion: no-preference) { .ab-team { transform: scale(.9); } }
.ab-team-img { --bc: var(--teal-mid); z-index: 2; width: 100%; aspect-ratio: 1.83206; overflow: hidden; }
.ab-team-img img { width: 100%; height: 100%; object-fit: cover; }
.ab-research { position: relative; z-index: 2; width: 100%; display: flex; flex-direction: column; align-items: center; gap: 56px; padding: 140px 0 210px; }
.ab-community {
  width: 100%; max-width: 823px; text-align: center;
  font-family: var(--serif); font-weight: 300; font-size: 45.28px; line-height: 1; letter-spacing: -.04em; color: var(--cream);
}
.ab-cited { display: flex; flex-direction: column; align-items: center; gap: 24px; }
.ab-cited-k { display: flex; align-items: center; gap: 4px; font-family: var(--serif); font-weight: 300; white-space: nowrap; }
.ab-cited-k .brk { font-size: 23.68px; line-height: 1.1; letter-spacing: -.03em; }
.ab-cited-k span:not(.brk) { font-size: 20.8px; line-height: 1.1; letter-spacing: -.01em; color: var(--paper); }
.ab-ticker { display: flex; justify-content: center; }
.ab-bars { display: flex; align-items: center; gap: 24px; }
.ab-bar {
  --bc: var(--teal-mid); flex: none; position: relative; display: flex; align-items: center; gap: 2px;
  padding: 4px 8px 4px 16px; background: var(--card-teal); box-shadow: 0 1px 2px rgba(0, 0, 0, .25);
  font-family: var(--mono); font-feature-settings: "zero"; font-size: 16px; line-height: 1.2; letter-spacing: .05em;
  color: var(--paper); white-space: nowrap;
}
.ab-bar::after { content: ""; position: absolute; inset: 0; border: 1px solid var(--teal-mid); pointer-events: none; }
.ab-bar .dot { width: 5px; height: 5px; background: var(--red); flex: none; }
.ab-bar span:last-child { padding: 9px 12px 7px; }

/* investors */
.ab-backers { width: 100%; max-width: 1920px; margin: 0 auto; padding: 80px 40px 32px; }
.ab-backers-card { --bw: 1px; background: var(--paper); display: flex; flex-direction: column; align-items: center; gap: 24px; padding: 32px; }
.ab-backers-card > .body { width: 100%; }
.ab-backers-card > .ab-angels-k { padding-top: 40px; }
.ab-logos { width: 100%; display: flex; align-items: center; gap: 24px; }
.ab-logo {
  --bw: .5px; flex: 1 1 0; min-width: 0; height: 100px; overflow: hidden;
  display: flex; align-items: center; justify-content: center;
  background: var(--white); mix-blend-mode: multiply;
}
.ab-logos-angels .ab-logo { height: 140px; }
.ab-logo img { height: auto; }
.ab-logos-vc img { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); filter: grayscale(1); }
.lg-8vc { width: 90px; aspect-ratio: 2; object-fit: cover; }
.ab-logos-vc .lg-mayfield { width: 138px; aspect-ratio: 2.9854; object-fit: cover; top: auto; bottom: 17px; transform: translateX(-50%); }
.ab-logos-vc .lg-wing { width: 90px; aspect-ratio: 2.48333; object-fit: fill; top: 53%; left: 48%; }
.lg-house { width: 158px; aspect-ratio: 3.78788; object-fit: fill; }
.lg-anthropic { width: 253px; aspect-ratio: 5.29412; object-fit: fill; }
.lg-meta { width: 203px; aspect-ratio: 3.625; object-fit: cover; }
.lg-deepmind { width: 234px; aspect-ratio: 4.1768; object-fit: fill; }

/* team + advisors */
.ab-people { width: 100%; max-width: 1920px; margin: 0 auto; padding: 80px 40px 40px; display: flex; flex-direction: column; align-items: center; gap: 48px; }
.ab-people-row { width: 100%; display: flex; align-items: flex-start; gap: 32px; }
.ab-people-txt { flex: 1 1 0; min-width: 0; align-self: stretch; display: flex; flex-direction: column; align-items: flex-start; gap: 24px; }
.ab-people-copy { width: 100%; display: flex; flex-direction: column; gap: 20px; }
.ab-people-lead { max-width: 489px; color: var(--teal); }
.ab-people-lead mark { background: var(--mint); color: var(--teal); padding: 0; }
.ab-profiles { flex: 1.5 1 0; min-width: 0; display: flex; align-items: center; gap: 32px; }
.ab-profile { position: relative; flex: 1 1 0; min-width: 0; aspect-ratio: .801255; display: flex; flex-direction: column; justify-content: flex-end; padding: 16px; overflow: hidden; }
.ab-profile-ad { aspect-ratio: .799163; }
.ab-profile > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.ab-profile-ad > img { object-position: 50% 0%; }
.ab-profile-card { position: relative; display: flex; align-items: flex-end; gap: 16px; padding: 12px 16px 14px; background: var(--paper); }
.ab-profile-name { flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.ab-profile-name .small { color: var(--teal-mid); }
.ab-li { position: relative; flex: none; width: 32px; height: 32px; background: var(--teal); transition: opacity .3s var(--spring); }
.ab-li svg { position: absolute; left: 10px; top: 9px; width: 14px; height: 14px; fill: #fffffe; }
@media (min-width: 1440px) { .ab-li:hover { opacity: .7; } }

.ab-advisors { width: 100%; display: flex; flex-direction: column; align-items: flex-start; gap: 24px; }
.ab-adv-list { width: 100%; display: flex; flex-direction: column; }
.ab-adv { --bw: 1px 1px 0; display: flex; align-items: flex-start; gap: 16px; padding: 16px; background: var(--cream); }
.ab-adv:last-child { --bw: 1px; }
.ab-adv-bar { align-self: stretch; width: 2px; background: var(--red); flex: none; }
.ab-adv-name { flex: 2 1 0; min-width: 0; display: flex; flex-direction: column; gap: 4px; padding-right: 6px; }

/* join + office */
.ab-join { width: 100%; max-width: 1920px; margin: 0 auto; padding: 40px 40px 72px; }

/* ── tablet ── */
@media (max-width: 1439px) {
  .ab-mission { flex-direction: column; }
  .ab-mission-l, .ab-mission-r { flex: none; width: 100%; }
  .ab-mission-h { font-size: 49.6px; letter-spacing: -.03em; }
  .ab-community { font-size: 40px; }
  .ab-logos { gap: 20px; }
  .ab-logo, .ab-logos-angels .ab-logo { height: 80px; }
  .lg-8vc { width: 70px; }
  .ab-logos-vc .lg-mayfield { width: 120px; bottom: 12px; }
  .ab-logos-vc .lg-wing { width: 80px; }
  .lg-house { width: 122px; }
  .lg-anthropic { width: 171px; }
  .lg-meta { width: 137px; }
  .lg-deepmind { width: 158px; }
  .ab-people { padding-top: 60px; }
  .ab-people-row { flex-direction: column; }
  .ab-people-txt { align-self: auto; flex: none; width: 100%; gap: 24px; }
  .ab-profiles { flex: none; width: 100%; }
}

/* ── phone ── */
@media (max-width: 809px) {
  .ab-hero { padding: 0; }
  .ab-hero-in { padding: 24px 16px 72px; }
  .ab-hero-ctas { flex-wrap: wrap; width: 100%; }
  .ab-wave { left: 50%; right: auto; width: 300%; transform: translateX(-50%); }
  .ab-green-in { gap: 40px; padding: 60px 16px 120px; }
  .ab-mission { padding-bottom: 16px; }
  .ab-mission-h { font-size: 35.2px; }
  .ab-card { flex-direction: column; }
  .ab-card-txt { order: 1; flex: none; width: 100%; gap: 32px; padding: 16px 14px 24px 16px; }
  .ab-card-img { order: 0; align-self: auto; width: 100%; }
  .ab-card-img img { position: static; height: auto; object-fit: fill; }
  .ab-team { overflow: visible; }
  .ab-team-img { aspect-ratio: auto; height: 179px; }
  .ab-research { padding: 60px 0 16px; }
  .ab-community { font-size: 32px; }
  /* On phones the live site turns the citations into a ticker (about.js), but Framer never
     fades its list in, so visitors see an empty row. Delete this visibility line to show it. */
  .ab-ticker { visibility: hidden; }
  .ab-bars { gap: 12px; }
  .ab-bar { font-size: 14.4px; }

  .ab-backers { padding: 40px 16px 16px; }
  .ab-backers-card { align-items: flex-start; gap: 16px; padding: 16px; }
  .ab-backers-card > .ab-angels-k { padding-top: 20px; }
  .ab-logos-vc { display: grid; grid-template-columns: repeat(2, minmax(50px, 1fr)); gap: 0; }
  .ab-logos-angels { flex-direction: column; gap: 0; }
  .ab-logos .ab-logo { flex: none; width: 100%; height: 56px; }
  .ab-logos-angels .ab-logo { height: 80px; }
  .ab-logos-vc .ab-logo:nth-child(1) { --bw: .5px .5px 0 .5px; }
  .ab-logos-vc .ab-logo:nth-child(2) { --bw: .5px .5px 0 0; }
  .ab-logos-vc .ab-logo:nth-child(4) { --bw: .5px .5px .5px 0; }
  .ab-logos-angels .ab-logo:not(:last-child) { --bw: .5px .5px 0 .5px; }
  .lg-8vc { width: 50px; }
  .ab-logos-vc .lg-mayfield { width: 88px; bottom: 10px; }
  .ab-logos-vc .lg-wing { width: 55px; }
  .lg-house { width: 88px; aspect-ratio: 3.76923; }
  .lg-anthropic { width: 151px; }
  .lg-meta { width: 121px; }
  .lg-deepmind { width: 140px; }

  .ab-people { gap: 56px; padding: 60px 16px 40px; }
  .ab-people-txt { gap: 24px; }
  .ab-profiles { flex-direction: column; gap: 16px; }
  .ab-profile { flex: none; width: 100%; }
  .ab-profile-name { gap: 2px; }

  .ab-join { padding: 16px 16px 32px; }
  .ab-join .office-v-long { display: none; }
  .ab-join .office-v-short { display: inline; }
}
