/* ============================================================
   ABOUT PAGE · page-specific styles.
   All selectors scoped ab-* (D32). Reuses the shared design
   system: tokens, bloom, eyebrow, sec-intro, reveal/rise,
   header/footer, final-cta.
   ============================================================ */

/* ---------- 01 · hero convergence visual ---------- */
.page-hero{padding:170px 0 90px;position:relative;overflow:hidden;text-align:center}
.page-hero-inner{position:relative}
.page-hero .h-hero{font-size:clamp(40px,4.6vw,62px);max-width:1020px;margin:0 auto}
.page-hero .hero-sub{margin:26px auto 0;max-width:660px}
.page-hero .hero-cta{justify-content:center}

.ab-conv{max-width:960px;margin:64px auto 0}
.ab-conv > svg{width:100%;height:auto;display:block;overflow:visible}
.ab-conv .src rect{fill:rgba(12,29,51,.85);stroke:rgba(34,55,80,1);stroke-width:1.3}
.ab-conv .src text{fill:#B8C2CF;font-size:13px;font-weight:800;letter-spacing:.14em;text-anchor:middle;font-family:inherit}
.ab-conv .src .plus{fill:#5E7A99;font-size:16px;font-weight:800;text-anchor:middle}
.ab-conv .lane{fill:none;stroke:rgba(34,55,80,1);stroke-width:1.6}
.ab-conv .pulse{fill:none;stroke:var(--cyan);stroke-width:2.2;stroke-linecap:round;stroke-dasharray:12 88;stroke-dashoffset:112;opacity:0}
.ab-conv .core rect{fill:rgba(5,8,13,.55);stroke:rgba(25,198,244,.45);stroke-width:1.4}
.ab-conv .core .t1{fill:var(--white);font-size:20px;font-weight:800;letter-spacing:.05em;text-anchor:middle;font-family:inherit}
.ab-conv .core .t2{fill:#8FA6C9;font-size:9px;font-weight:800;letter-spacing:.2em;text-anchor:middle;font-family:inherit}
.ab-conv .rail rect{fill:rgba(12,29,51,.85);stroke:rgba(34,55,80,1);stroke-width:1.2}
.ab-conv .rail text{fill:#8FA3BB;font-size:10.5px;font-weight:800;letter-spacing:.12em;text-anchor:middle;font-family:inherit}
.ab-conv .rail .arw{stroke:#3B587A;stroke-width:1.6;fill:none;stroke-linecap:round;stroke-linejoin:round}
.ab-conv .rail .rev rect{stroke:rgba(255,213,31,.55)}
.ab-conv .rail .rev text{fill:var(--yellow)}
.ab-conv .cap{fill:#5E6E85;font-size:9px;font-weight:800;letter-spacing:.16em;text-anchor:middle;font-family:inherit}
/* one-time sequence on load (hero uses .rise timing, not the reveal observer) */
.ab-conv .pulse{animation:abPulse 1.1s ease-in-out .7s forwards}
.ab-conv .pulse.p2{animation-delay:.9s}
.ab-conv .pulse.p3{animation-delay:1.1s}
.ab-conv .pulse.pd{animation-delay:1.7s}
@keyframes abPulse{0%{opacity:1;stroke-dashoffset:112}88%{opacity:1}100%{opacity:0;stroke-dashoffset:-12}}
.ab-conv .core rect{stroke:rgba(34,55,80,1);transition:none;animation:abCore .5s ease 1.5s forwards}
@keyframes abCore{to{stroke:rgba(25,198,244,.55)}}
.ab-conv .rail g.st{opacity:.45;animation:abSt .4s ease forwards}
.ab-conv .rail g.s1{animation-delay:1.9s}
.ab-conv .rail g.s2{animation-delay:2.1s}
.ab-conv .rail g.s3{animation-delay:2.3s}
.ab-conv .rail g.s4{animation-delay:2.5s}
.ab-conv .rail g.s5{animation-delay:2.7s}
@keyframes abSt{to{opacity:1}}
.ab-conv-m{display:none}

/* ---------- 02 · story + timeline ---------- */
.ab-story{display:grid;grid-template-columns:minmax(0,6fr) minmax(0,6fr);gap:56px;align-items:start;margin-top:8px}
.ab-story p{font-size:15.5px;line-height:1.7;color:#46566A}
.ab-story p+p{margin-top:14px}
/* transition statement bridging the story into the evolution timeline */
.ab-bridge{margin:44px 0 0;max-width:860px;padding-left:22px;position:relative;
  font-size:18px;line-height:1.6;font-weight:600;color:#13233A;letter-spacing:-0.005em}
.ab-bridge::before{content:"";position:absolute;left:0;top:4px;bottom:4px;width:3px;border-radius:3px;
  background:linear-gradient(180deg,var(--blue),var(--cyan))}

.ab-tl{margin-top:56px}
.ab-tl-rail{display:flex;align-items:flex-start;gap:0;position:relative}
/* evolution signal: gradient progress line + traveling dot (one-time, ~5.6s) */
.ab-tl-prog{position:absolute;top:5px;left:8.333%;width:83.334%;height:2px;border-radius:2px;
  background:linear-gradient(90deg,#1677FF 0%,#19C6F4 55%,#FFD51F 100%);
  transform:scaleX(0);transform-origin:left center}
.ab-tl.reveal.in .ab-tl-prog{animation:abProg 5s linear .6s forwards}
@keyframes abProg{to{transform:scaleX(1)}}
.ab-tl-dot{position:absolute;top:0;left:8.333%;width:11px;height:11px;margin-left:-5.5px;border-radius:50%;
  background:#1677FF;box-shadow:0 0 12px rgba(22,119,255,.5);opacity:0;z-index:2}
.ab-tl.reveal.in .ab-tl-dot{animation:abDot 5s linear .6s forwards}
@keyframes abDot{
  0%{opacity:1;left:8.333%;background:#1677FF;box-shadow:0 0 12px rgba(22,119,255,.5)}
  50%{background:#19C6F4;box-shadow:0 0 12px rgba(25,198,244,.5)}
  80%{background:#19C6F4;box-shadow:0 0 12px rgba(25,198,244,.5)}
  96%{opacity:1}
  100%{opacity:0;left:91.667%;background:#FFD51F;box-shadow:0 0 12px rgba(255,213,31,.55)}
}
.ab-tl-node{flex:1;position:relative;text-align:center;padding:26px 8px 0}
.ab-tl-node::before{content:"";position:absolute;top:5px;left:0;right:0;height:2px;background:#D0D9E4}
.ab-tl-node.first::before{left:50%}
.ab-tl-node.last::before{right:50%}
.ab-tl-node::after{content:"";position:absolute;top:0;left:50%;transform:translateX(-50%);width:12px;height:12px;border-radius:50%;background:#EEF2F6;border:2px solid #9FB0C5}
.ab-tl-node b{display:block;font-size:12px;font-weight:800;letter-spacing:.1em;color:#182536}
.ab-tl-node i{display:block;font-style:normal;margin-top:5px;font-size:11px;font-weight:700;letter-spacing:.04em;color:#5E7A99;line-height:1.45}
.ab-tl-node .yr{display:block;font-size:19px;font-weight:800;letter-spacing:-.01em;color:var(--blue);margin-bottom:3px}
/* nodes fade in quickly, then activate as the signal arrives */
.ab-tl.reveal .ab-tl-node{opacity:0;transform:translateY(8px)}
.ab-tl.reveal.in .ab-tl-node{animation:abTl .4s cubic-bezier(.2,.7,.3,1) forwards}
@keyframes abTl{to{opacity:1;transform:none}}
.ab-tl-node b,.ab-tl-node::after{transition:none}
.ab-tl.reveal.in .ab-tl-node:nth-child(4)::after{animation:abNodeB .45s ease 1.6s forwards}
.ab-tl.reveal.in .ab-tl-node:nth-child(5)::after{animation:abNodeB .45s ease 2.6s forwards}
.ab-tl.reveal.in .ab-tl-node:nth-child(6)::after{animation:abNodeC .45s ease 3.6s forwards}
.ab-tl.reveal.in .ab-tl-node:nth-child(7)::after{animation:abNodeC .45s ease 4.6s forwards}
.ab-tl.reveal.in .ab-tl-node:nth-child(8)::after{animation:abNodeY .5s ease 5.6s forwards}
.ab-tl.reveal.in .ab-tl-node:nth-child(4) b{animation:abTxt .45s ease 1.6s forwards}
.ab-tl.reveal.in .ab-tl-node:nth-child(5) b{animation:abTxt .45s ease 2.6s forwards}
.ab-tl.reveal.in .ab-tl-node:nth-child(6) b{animation:abTxt .45s ease 3.6s forwards}
.ab-tl.reveal.in .ab-tl-node:nth-child(7) b{animation:abTxt .45s ease 4.6s forwards}
.ab-tl.reveal.in .ab-tl-node:nth-child(8) b{animation:abTxtY .5s ease 5.6s forwards}
@keyframes abNodeB{0%{transform:translateX(-50%) scale(1)}45%{transform:translateX(-50%) scale(1.3)}100%{transform:translateX(-50%) scale(1);border-color:var(--blue);background:#D6E6FF}}
@keyframes abNodeC{0%{transform:translateX(-50%) scale(1)}45%{transform:translateX(-50%) scale(1.3)}100%{transform:translateX(-50%) scale(1);border-color:var(--cyan);background:#D6F5FD}}
@keyframes abNodeY{0%{transform:translateX(-50%) scale(1)}45%{transform:translateX(-50%) scale(1.35)}100%{transform:translateX(-50%) scale(1);border-color:#E2B400;background:var(--yellow)}}
@keyframes abTxt{to{color:#0B1524}}
@keyframes abTxtY{to{color:#0B1524}}
.ab-tl-node.first::after{border-color:var(--blue);background:var(--blue)}

/* ---------- 03 · principles ---------- */
.ab-prin{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin-top:54px}
.ab-prin .bloom{padding:28px 28px 26px}
.ab-prin .num{font-size:11px;font-weight:800;letter-spacing:.16em;color:var(--cyan)}
.ab-prin h3{font-size:19px;color:var(--white);margin:10px 0 8px;letter-spacing:-0.01em}
.ab-prin p{font-size:14.5px;line-height:1.65;color:var(--light-gray)}

/* ---------- 04 · leadership ---------- */
.ab-founders{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin-top:54px;max-width:920px;margin-left:auto;margin-right:auto}
.ab-fcard{padding:0;overflow:hidden;display:flex;flex-direction:column}
.ab-fcard>img{width:100%;aspect-ratio:1/1.02;object-fit:cover;display:block;filter:contrast(1.05) saturate(.94)}
.ab-fcard .fbody{padding:22px 24px 24px;border-top:1px solid #D0D9E4}
.ab-fcard .fname{font-size:19px;font-weight:800;color:#182536;letter-spacing:-0.01em}
.ab-fcard .frole{margin-top:4px;font-size:11px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--blue)}
.ab-fcard .fbio{margin-top:12px;font-size:14px;line-height:1.65;color:#46566A}
.ab-fcard .fquote-wrap{margin-top:auto;padding-top:18px}
.ab-fcard .fquote-wrap::before{content:"";display:block;height:1px;margin-bottom:16px;
  background:linear-gradient(90deg,#D0D9E4 0%,#D0D9E4 55%,transparent 100%)}
.ab-fcard .fquote{position:relative;font-size:16.5px;line-height:1.5;font-weight:700;color:#13233A;letter-spacing:-0.005em}
.ab-fcard .fsig-img{display:block;margin-top:16px;width:200px;max-width:70%;height:auto;
  opacity:0;transform:translateY(6px)}
.ab-fcard.reveal.in .fsig-img{animation:abSigIn .55s ease .5s forwards}
@keyframes abSigIn{to{opacity:1;transform:none}}

/* ---------- 05 · operating model ---------- */
.ab-os{margin-top:56px;border-radius:var(--r-lg);padding:38px 34px 30px;position:relative;overflow:hidden;
  background:
    repeating-linear-gradient(0deg,rgba(22,119,255,.05) 0 1px,transparent 1px 44px),
    repeating-linear-gradient(90deg,rgba(22,119,255,.05) 0 1px,transparent 1px 44px),
    linear-gradient(168deg,#0C1D33 0%,#071426 100%);
  border:1px solid #223750;box-shadow:0 16px 44px rgba(8,24,45,.25)}
.ab-os-rail{display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:nowrap}
.ab-os-st{flex:none;padding:13px 18px;border-radius:9px;background:rgba(12,29,51,.85);border:1px solid rgba(34,55,80,1);
  font-size:11.5px;font-weight:800;letter-spacing:.1em;color:#B8C2CF;white-space:nowrap}
.ab-os-st.rev{border-color:rgba(255,213,31,.5);color:var(--yellow)}
.ab-os-arr{flex:none;width:20px;height:2px;position:relative;background:rgba(94,122,153,.6)}
.ab-os-arr::after{content:"";position:absolute;right:-1px;top:-3px;width:8px;height:8px;border-top:2px solid rgba(94,122,153,.8);border-right:2px solid rgba(94,122,153,.8);transform:rotate(45deg) scale(.6)}
.ab-os.reveal.in .ab-os-st{animation:abOsOn .45s ease forwards}
.ab-os .ab-os-st{opacity:.5}
.ab-os.reveal.in .ab-os-st:nth-of-type(1){animation-delay:.1s}
.ab-os.reveal.in .ab-os-st:nth-of-type(3){animation-delay:.28s}
.ab-os.reveal.in .ab-os-st:nth-of-type(5){animation-delay:.46s}
.ab-os.reveal.in .ab-os-st:nth-of-type(7){animation-delay:.64s}
.ab-os.reveal.in .ab-os-st:nth-of-type(9){animation-delay:.82s}
@keyframes abOsOn{to{opacity:1}}
.ab-os-pi{margin:26px auto 0;max-width:560px;position:relative;text-align:center;
  padding:12px 18px;border-radius:9px;border:1px dashed rgba(25,198,244,.45);
  font-size:10.5px;font-weight:800;letter-spacing:.16em;color:var(--cyan)}
.ab-os-loop{margin-top:12px;text-align:center;font-size:10px;font-weight:800;letter-spacing:.14em;color:#5E7A99}
.ab-os-loop .up{display:inline-block;margin-right:8px;color:rgba(25,198,244,.8)}
.ab-os-copy{margin:34px auto 0;max-width:760px;text-align:center;font-size:15.5px;line-height:1.7;color:var(--light-gray)}
.ab-os-cta{margin-top:30px;text-align:center}

/* ---------- 06 · selective ---------- */
.ab-sel{display:grid;grid-template-columns:minmax(0,6fr) minmax(0,6fr);gap:56px;align-items:start;margin-top:8px}
.ab-sel p{font-size:15.5px;line-height:1.7;color:#46566A}
.ab-sel p+p{margin-top:14px}
.ab-selgrid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:22px;margin-top:44px}
.ab-selgrid .bloom{padding:24px 24px 22px}
.ab-selgrid h3{font-size:16.5px;color:#182536;margin:0 0 8px;letter-spacing:-0.01em}
.ab-selgrid p{font-size:13.5px;line-height:1.6;color:#46566A}
.ab-sel-cta{margin-top:38px}
.section.light .tlink{color:#134A9E}

/* ---------- 07 · snapshot ---------- */
.ab-snap{padding:96px 0}
.ab-snapwrap{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:22px;margin-top:50px}
.ab-flag{padding:40px 40px 34px;display:flex;flex-direction:column;justify-content:center}
.ab-flag .fv{font-size:clamp(52px,5.4vw,72px);font-weight:800;letter-spacing:-0.03em;color:var(--white);line-height:1}
.ab-flag .fv .plus{background:linear-gradient(120deg,var(--blue),var(--cyan));-webkit-background-clip:text;background-clip:text;color:transparent}
.ab-flag .fk{margin-top:14px;font-size:13px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:#B8C2CF}
.ab-flag .fk2{margin-top:4px;font-size:11px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:#5E7A99}
.ab-flag-link{margin-top:22px;font-size:14px}
.ab-supp{display:grid;gap:22px}
.ab-sm{padding:22px 24px 20px}
.ab-sm .v{font-size:26px;font-weight:800;letter-spacing:-0.02em;color:var(--white)}
.ab-sm .k{margin-top:5px;font-size:10.5px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:#8FA3BB}
.ab-snapnote{margin-top:24px;font-size:12px;line-height:1.65;color:var(--muted-gray);max-width:750px}
/* restrained operating footprint line */
.ab-foot{margin-top:40px;display:flex;align-items:center;flex-wrap:wrap;gap:10px}
.ab-foot .fnode{position:relative;padding-left:16px;font-size:10px;font-weight:800;letter-spacing:.14em;color:#8FA3BB;white-space:nowrap}
.ab-foot .fnode::before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:7px;height:7px;border-radius:50%;border:1.6px solid rgba(25,198,244,.7)}
.ab-foot i{flex:1;min-width:18px;height:1px;background:linear-gradient(90deg,rgba(34,55,80,1),rgba(25,198,244,.4))}
.ab-foot{opacity:0;transform:translateY(8px)}
.ab-foot.reveal.in{opacity:1;transform:none;transition:opacity .55s ease .25s,transform .55s ease .25s}

/* ---------- final CTA buttons row ---------- */
.ab-final-btns{display:flex;flex-wrap:wrap;gap:16px;justify-content:center;margin-top:40px}
.ab-final-btns .btn{margin-top:0}

/* ---------- reduced motion ---------- */
@media (prefers-reduced-motion:reduce){
  .ab-conv .pulse{animation:none;display:none}
  .ab-conv .core rect{animation:none;stroke:rgba(25,198,244,.55)}
  .ab-conv .rail g.st{animation:none;opacity:1}
  .ab-tl.reveal .ab-tl-node,.ab-tl.reveal.in .ab-tl-node{animation:none;opacity:1;transform:none}
  .ab-tl-prog,.ab-tl.reveal.in .ab-tl-prog{animation:none;transform:none}
  .ab-tl-dot,.ab-tl.reveal.in .ab-tl-dot{animation:none;display:none}
  .ab-tl.reveal.in .ab-tl-node::after,.ab-tl-node::after{animation:none}
  .ab-tl-node:nth-child(4)::after,.ab-tl-node:nth-child(5)::after{border-color:var(--blue);background:#D6E6FF}
  .ab-tl-node:nth-child(6)::after,.ab-tl-node:nth-child(7)::after{border-color:var(--cyan);background:#D6F5FD}
  .ab-tl-node:nth-child(8)::after{border-color:#E2B400;background:var(--yellow)}
  .ab-tl-node b{color:#0B1524}
  .ab-fcard .fsig-img,.ab-fcard.reveal.in .fsig-img{animation:none;opacity:1;transform:none}
  .ab-foot,.ab-foot.reveal.in{opacity:1;transform:none;transition:none}
  .ab-os .ab-os-st,.ab-os.reveal.in .ab-os-st{animation:none;opacity:1}
}

/* ---------- responsive ---------- */
@media (max-width:1180px){
  .ab-story,.ab-sel{grid-template-columns:1fr;gap:26px}
  .ab-snapwrap{grid-template-columns:1fr}
  .ab-supp{grid-template-columns:1fr 1fr 1fr}
}
@media (max-width:1024px){
  .ab-os-rail{flex-wrap:wrap;gap:10px 8px}
}
@media (max-width:880px){
  .ab-conv > svg{display:none}
  .ab-conv{margin-top:44px}
  .ab-conv-m{display:block;max-width:340px;margin:0 auto}
  .ab-conv-m .srcs{display:grid;gap:8px}
  .ab-conv-m .srcs span{padding:11px 14px;border-radius:9px;background:rgba(12,29,51,.85);border:1px solid rgba(34,55,80,1);font-size:11.5px;font-weight:800;letter-spacing:.12em;color:#B8C2CF;text-align:center}
  .ab-conv-m .dn{width:10px;height:10px;margin:12px auto;border-right:1.6px solid rgba(25,198,244,.8);border-bottom:1.6px solid rgba(25,198,244,.8);transform:rotate(45deg)}
  .ab-conv-m .core{padding:16px;border-radius:var(--r-card);background:rgba(5,8,13,.5);border:1px solid rgba(25,198,244,.45);text-align:center}
  .ab-conv-m .core b{display:block;font-size:14px;font-weight:800;letter-spacing:.06em;color:var(--white)}
  .ab-conv-m .core span{display:block;margin-top:4px;font-size:8.5px;font-weight:800;letter-spacing:.16em;color:#8FA6C9}
  .ab-conv-m .rail{display:grid;gap:8px}
  .ab-conv-m .rail span{padding:10px 14px;border-radius:9px;background:rgba(12,29,51,.85);border:1px solid rgba(34,55,80,1);font-size:10.5px;font-weight:800;letter-spacing:.12em;color:#8FA3BB;text-align:center}
  .ab-conv-m .rail span.rev{border-color:rgba(255,213,31,.5);color:var(--yellow)}
  .ab-prin{grid-template-columns:1fr}
  .ab-founders{grid-template-columns:1fr;max-width:440px}
  /* vertical timeline */
  .ab-tl-rail{flex-direction:column;gap:0;max-width:380px;margin:0 auto}
  .ab-tl-node{flex:none;width:100%;text-align:left;padding:0 0 26px 30px}
  .ab-tl-node::before{top:5px;bottom:-5px;left:5px;right:auto;width:2px;height:auto}
  .ab-tl-node.first::before{left:5px;top:5px}
  .ab-tl-node.last::before{display:none}
  .ab-tl-node::after{left:0;top:0;transform:none}
  /* vertical signal: same blue -> cyan -> yellow progression, top to bottom */
  .ab-tl-prog{left:5px;top:5px;width:2px;height:calc(100% - 82px);
    background:linear-gradient(180deg,#1677FF 0%,#19C6F4 55%,#FFD51F 100%);
    transform:scaleY(0);transform-origin:center top}
  .ab-tl.reveal.in .ab-tl-prog{animation:abProgV 5s linear .6s forwards}
  @keyframes abProgV{to{transform:scaleY(1)}}
  .ab-tl-dot{left:.5px;margin-left:0;top:0}
  .ab-tl.reveal.in .ab-tl-dot{animation:abDotV 5s linear .6s forwards}
  @keyframes abDotV{
    0%{opacity:1;top:0;background:#1677FF;box-shadow:0 0 12px rgba(22,119,255,.5)}
    50%{background:#19C6F4;box-shadow:0 0 12px rgba(25,198,244,.5)}
    80%{background:#19C6F4;box-shadow:0 0 12px rgba(25,198,244,.5)}
    96%{opacity:1}
    100%{opacity:0;top:calc(100% - 82px);background:#FFD51F;box-shadow:0 0 12px rgba(255,213,31,.55)}
  }
  /* node activation without the desktop translateX centering */
  @keyframes abNodeB{0%{transform:scale(1)}45%{transform:scale(1.3)}100%{transform:scale(1);border-color:var(--blue);background:#D6E6FF}}
  @keyframes abNodeC{0%{transform:scale(1)}45%{transform:scale(1.3)}100%{transform:scale(1);border-color:var(--cyan);background:#D6F5FD}}
  @keyframes abNodeY{0%{transform:scale(1)}45%{transform:scale(1.35)}100%{transform:scale(1);border-color:#E2B400;background:var(--yellow)}}
  .ab-selgrid{grid-template-columns:1fr}
}
@media (max-width:720px){
  .page-hero{padding:148px 0 68px}
  .ab-os{padding:26px 18px 24px}
  .ab-os-rail{flex-direction:column;gap:8px}
  .ab-os-arr{width:2px;height:16px}
  .ab-os-arr::after{right:-3px;top:auto;bottom:-1px;transform:rotate(135deg) scale(.6)}
  .ab-supp{grid-template-columns:1fr;gap:14px}
  .ab-flag{padding:28px 22px 26px}
  .ab-foot{gap:8px}
  .ab-foot .fnode{white-space:normal}
  .ab-final-btns .btn{width:100%;max-width:360px}
}
