
/* Cyphaira — shared chrome and reading pages (extends scrollcraft.css + cyphaira.css tokens)
   Taste redesign 2026-09-17: preserve brand; upgrade type/CTA/chrome (dials 5/4/4). */
.nav{position:fixed;inset:0 0 auto 0;z-index:50;display:flex;align-items:center;justify-content:space-between;padding:.85rem var(--sc-gutter,1.5rem);background:color-mix(in oklab,var(--sc-canvas) 72%,transparent);backdrop-filter:blur(16px) saturate(1.15);-webkit-backdrop-filter:blur(16px) saturate(1.15);border-bottom:1px solid color-mix(in oklab,var(--sc-ink) 8%,transparent);box-shadow:0 1px 0 color-mix(in oklab,var(--sc-ink) 4%,transparent) inset}
.nav__brand img{display:block;height:16px;width:auto}
.nav__menu{display:flex;gap:1.5rem;align-items:center}
.nav__menu a{font-size:var(--sc-t-sm);color:var(--sc-ink-soft);text-decoration:none;letter-spacing:.01em;transition:color 240ms var(--sc-ease-spring,cubic-bezier(0.32,0.72,0,1))}
.nav__menu a:hover{color:var(--sc-ink)}
.nav__menu a[aria-current=page]{color:var(--sc-ink)}
.nav__menu .nav__cta{color:var(--sc-ink);border:1px solid var(--sc-hairline-strong);padding:.42rem .95rem;min-height:44px;display:inline-flex;align-items:center;border-radius:999px;box-shadow:inset 0 1px 0 color-mix(in oklab,var(--sc-ink) 8%,transparent);transition:background-color 240ms var(--sc-ease-spring,cubic-bezier(0.32,0.72,0,1)),border-color 240ms var(--sc-ease-spring,cubic-bezier(0.32,0.72,0,1)),transform 240ms var(--sc-ease-spring,cubic-bezier(0.32,0.72,0,1))}
.nav__menu .nav__cta:hover{background:var(--cy-blue);border-color:var(--cy-blue);transform:translateY(-1px)}
.nav__menu .nav__cta:active{transform:scale(0.96)}
.nav__toggle{display:none;background:none;border:0;width:44px;height:44px;position:relative;cursor:pointer}
.nav__toggle span{position:absolute;left:12px;right:12px;height:2px;background:var(--sc-ink);top:17px;transition:transform 280ms var(--sc-ease-spring,cubic-bezier(0.32,0.72,0,1)),opacity 200ms}
.nav__toggle span+span{top:25px}
.nav__toggle[aria-expanded=true] span{top:21px;transform:rotate(45deg)}
.nav__toggle[aria-expanded=true] span+span{top:21px;transform:rotate(-45deg)}
@media (max-width:860px){
  .nav__toggle{display:block}
  .nav__menu{display:none;position:fixed;inset:60px 0 auto 0;flex-direction:column;align-items:flex-start;gap:0;background:color-mix(in oklab,var(--sc-canvas) 94%,transparent);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);border-bottom:1px solid var(--sc-hairline);padding:.5rem 0 1rem}
  .nav__menu.is-open{display:flex}
  .nav__menu a{padding:.8rem var(--sc-gutter,1.5rem);width:100%;font-size:var(--sc-t-base)}
  .nav__menu .nav__cta{border:0;border-radius:0;box-shadow:none}
}
.eyebrow{font-size:var(--sc-t-xs);letter-spacing:.18em;text-transform:uppercase;color:var(--sc-accent);margin:0 0 .8rem;font-weight:500}
.tag{display:inline-block;font-size:11px;letter-spacing:.08em;text-transform:uppercase;padding:.15em .5em;border:1px solid var(--sc-hairline-strong);border-radius:4px;color:var(--sc-ink-soft);vertical-align:middle;margin-right:.35em}
.steps,.stats,.suites,.panels,.people{display:grid;gap:1.1rem;width:100%}
.steps>div,.suites>div,.stats>div{padding:1.2rem 1.3rem;border:1px solid color-mix(in oklab,var(--sc-ink) 9%,transparent);border-radius:14px;background:linear-gradient(180deg,color-mix(in oklab,var(--sc-ink) 4%,transparent),transparent 40%),color-mix(in oklab,var(--sc-surface) 72%,transparent);box-shadow:inset 0 1px 0 color-mix(in oklab,var(--sc-ink) 9%,transparent),0 8px 24px -12px hsl(222 45% 3% / .45);font-size:var(--sc-t-sm);color:var(--sc-ink-soft);line-height:1.55;transition:border-color 240ms var(--sc-ease-spring,cubic-bezier(0.32,0.72,0,1)),transform 240ms var(--sc-ease-spring,cubic-bezier(0.32,0.72,0,1))}
@media (hover:hover) and (pointer:fine){.steps>div:hover,.suites>div:hover,.stats>div:hover{border-color:color-mix(in oklab,var(--sc-accent) 35%,transparent);transform:translateY(-1px)}}
.steps>div b,.suites>div b{display:block;color:var(--sc-ink);font-weight:600;margin-bottom:.3rem;font-size:var(--sc-t-base);letter-spacing:-.01em}
.stats>div b{display:block;color:var(--sc-ink);font-weight:500;font-size:var(--sc-t-2xl);letter-spacing:-.025em;line-height:1.08;margin-bottom:.25rem;font-variant-numeric:tabular-nums}
.stats>div b+b{display:inline;font-size:var(--sc-t-2xl)}
.basis{font-size:var(--sc-t-xs);color:var(--sc-ink-soft);margin-top:1rem}
.side--info .steps,.side--info .stats{text-align:left}
.cta-secondary{margin-left:1.2rem}
/* reading pages */
.page{padding-top:64px;background:var(--sc-canvas);color:var(--sc-ink);min-height:100dvh}
.page-hero{padding:clamp(4.5rem,11vw,9rem) var(--sc-gutter,1.5rem) clamp(2.25rem,5.5vw,4.5rem);max-width:64rem;margin:0 auto}
.page-hero h1{max-width:18ch;margin:0;text-wrap:balance;letter-spacing:-.03em}
.lede{font-size:var(--sc-t-lg);color:var(--sc-ink);max-width:58ch;line-height:1.52;text-wrap:pretty}
.prose{max-width:64rem;margin:0 auto;padding:0 var(--sc-gutter,1.5rem) clamp(4.5rem,11vw,9rem);font-size:var(--sc-t-base);color:var(--sc-ink-soft)}
.prose p{max-width:62ch;text-wrap:pretty}
.prose h2{font-family:var(--sc-font-display);font-weight:500;letter-spacing:-.025em;font-size:var(--sc-t-xl);color:var(--sc-ink);margin:2.8rem 0 .85rem;text-wrap:balance}
.prose a{color:var(--sc-ink);text-decoration-color:var(--sc-hairline-strong);transition:text-decoration-color 220ms var(--sc-ease-spring,cubic-bezier(0.32,0.72,0,1))}
.prose a:hover{text-decoration-color:var(--sc-accent)}
.prose blockquote{border-left:2px solid var(--sc-accent);margin:1.5rem 0;padding:.25rem 0 .25rem 1.25rem;color:var(--sc-ink);font-size:var(--sc-t-lg);line-height:1.42;max-width:58ch}
.pull{font-family:var(--sc-font-display);font-size:var(--sc-t-2xl);color:var(--sc-ink);letter-spacing:-.028em;line-height:1.12;margin:2.2rem 0;text-wrap:balance}
.steps--page,.suites{grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));margin:1.5rem 0}
.stats--page{grid-template-columns:repeat(auto-fit,minmax(10rem,1fr));margin:1.5rem 0}
.panels{grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));margin:1.5rem 0}
.panels a{display:block;padding:1.25rem 1.35rem;border:1px solid color-mix(in oklab,var(--sc-ink) 9%,transparent);border-radius:14px;text-decoration:none;color:var(--sc-ink-soft);font-size:var(--sc-t-sm);background:linear-gradient(180deg,color-mix(in oklab,var(--sc-ink) 4%,transparent),transparent 42%),color-mix(in oklab,var(--sc-surface) 72%,transparent);box-shadow:inset 0 1px 0 color-mix(in oklab,var(--sc-ink) 8%,transparent);transition:border-color 240ms var(--sc-ease-spring,cubic-bezier(0.32,0.72,0,1)),transform 240ms var(--sc-ease-spring,cubic-bezier(0.32,0.72,0,1)),color 240ms}
.panels a b{display:block;color:var(--sc-ink);font-weight:600;margin-bottom:.3rem;font-size:var(--sc-t-base);letter-spacing:-.01em}
.panels a:hover{border-color:color-mix(in oklab,var(--sc-accent) 45%,transparent);transform:translateY(-1px);color:var(--sc-ink)}
.ticker{margin:1.5rem 0;padding:1.05rem 1.25rem;border:1px solid color-mix(in oklab,var(--sc-ink) 9%,transparent);border-radius:14px;color:var(--sc-ink);box-shadow:inset 0 1px 0 color-mix(in oklab,var(--sc-ink) 8%,transparent)}
.ticker .note{display:block;font-size:var(--sc-t-xs);color:var(--sc-ink-soft);margin-top:.3rem}
.commit{padding-left:1.2rem}.commit li{margin:.5rem 0;max-width:66ch}
.people{grid-template-columns:repeat(auto-fit,minmax(16rem,1fr));margin:1rem 0 2rem}
.person{padding:1.4rem;border:1px solid color-mix(in oklab,var(--sc-ink) 9%,transparent);border-radius:16px;background:color-mix(in oklab,var(--sc-surface) 55%,transparent);box-shadow:inset 0 1px 0 color-mix(in oklab,var(--sc-ink) 8%,transparent)}
.person h2{margin:0 0 .2rem;font-size:var(--sc-t-lg);letter-spacing:-.015em}.person .role{color:var(--sc-accent);font-size:var(--sc-t-xs);letter-spacing:.12em;text-transform:uppercase;margin:0 0 .85rem;font-weight:500}
.person p{font-size:var(--sc-t-sm)}
.faq{border-top:1px solid var(--sc-hairline)}.faq:last-child{border-bottom:1px solid var(--sc-hairline)}
.faq__q{width:100%;text-align:left;background:none;border:0;color:var(--sc-ink);font:inherit;font-family:var(--sc-font-display);font-weight:500;font-size:var(--sc-t-lg);padding:1.25rem 2.5rem 1.25rem 0;cursor:pointer;position:relative;letter-spacing:-.015em;transition:color 200ms}
.faq__q::after{content:"+";position:absolute;right:.2rem;top:50%;transform:translateY(-50%);color:var(--sc-accent);font-weight:400;transition:transform 240ms var(--sc-ease-spring,cubic-bezier(0.32,0.72,0,1))}
.faq__q[aria-expanded="true"]::after{content:"–"}
.faq__a{padding:0 0 1.45rem;max-width:62ch;text-wrap:pretty}
.form{display:grid;gap:1.05rem;max-width:34rem;margin:1rem 0 2rem}
.form label{display:grid;gap:.35rem;font-size:var(--sc-t-sm);color:var(--sc-ink-soft)}
.form input,.form textarea,.form select{font:inherit;color:var(--sc-ink);background:var(--sc-surface);border:1px solid var(--sc-hairline-strong);border-radius:10px;padding:.75rem .85rem;box-shadow:inset 0 1px 0 color-mix(in oklab,var(--sc-ink) 5%,transparent);transition:border-color 220ms,box-shadow 220ms}
.form input:focus,.form textarea:focus,.form select:focus{outline:2px solid var(--sc-accent);outline-offset:1px;border-color:color-mix(in oklab,var(--sc-accent) 40%,transparent)}
.form .cta{justify-self:start}
.form .help{font-size:var(--sc-t-xs);color:var(--sc-ink-soft);opacity:.85;line-height:1.45}
.form .opt{font-size:var(--sc-t-xs);opacity:.7;margin-left:.35em}
.form .checks{border:1px solid var(--sc-hairline);border-radius:12px;padding:.85rem 1.05rem;display:grid;gap:.5rem;margin:0;background:color-mix(in oklab,var(--sc-surface) 40%,transparent)}
.form .checks legend{font-size:var(--sc-t-sm);color:var(--sc-ink-soft);padding:0 .3rem}
.form .checks label{display:flex;gap:.6rem;align-items:center;color:var(--sc-ink);min-height:44px;padding:.15rem 0;cursor:pointer}
.form .checks input{accent-color:var(--cy-blue);width:1.05rem;height:1.05rem}
.form .form__note{margin:0;max-width:34rem}
.form .form__err{margin:0;color:#ff8a8a}
.cta-row--tight{margin-top:1rem}
.close-cta{margin-top:3.25rem;padding:1.75rem 1.6rem;border:1px solid color-mix(in oklab,var(--sc-ink) 9%,transparent);border-radius:18px;background:linear-gradient(145deg,color-mix(in oklab,var(--cy-blue) 10%,transparent),transparent 55%),color-mix(in oklab,var(--sc-surface) 70%,transparent);box-shadow:inset 0 1px 0 color-mix(in oklab,var(--sc-ink) 10%,transparent),0 16px 40px -20px hsl(222 55% 12% / .55)}
.close-cta h2{margin-top:0;letter-spacing:-.02em}.close-cta p{margin:.55rem 0 0;max-width:48ch}
.tablewrap{overflow-x:auto;margin:1rem 0 2rem}
.cmp{width:100%;border-collapse:collapse;font-size:var(--sc-t-sm);line-height:1.5}
.cmp th,.cmp td{text-align:left;vertical-align:top;padding:.8rem .9rem;border-top:1px solid var(--sc-hairline)}
.cmp th{color:var(--sc-ink-soft);font-weight:500;font-size:var(--sc-t-xs);letter-spacing:.08em;text-transform:uppercase}
.cmp td{color:var(--sc-ink-soft)}.cmp td b{color:var(--sc-ink);font-weight:500}
.cmp td:first-child{min-width:11rem}.cmp td:nth-child(2){min-width:14rem}
@media (max-width:760px){.cmp{min-width:44rem}}
.muted{font-size:var(--sc-t-sm);color:var(--sc-ink-soft)}
.cta-row{margin-top:2.5rem}
.list{margin:1rem 0}
/* home: keep the divider chrome clear of the fixed nav — 44px was short of the real nav height */
body.is-home .divider__label{top:calc(var(--bar-h,0px) + 6.35rem)}
body.is-home .divider__mark{top:calc(var(--bar-h,0px) + 6.35rem + 1.5rem + var(--cy-page,0) * (100vh - 8.5rem - var(--bar-h,0px)))}
body.is-home .nav__brand{visibility:hidden}
/* home auto-play control */
.story-play{position:fixed;right:max(1.25rem,env(safe-area-inset-right));bottom:max(1.25rem,env(safe-area-inset-bottom));z-index:60;display:inline-flex;align-items:center;gap:.5rem;min-height:44px;padding:.55rem 1rem;border-radius:999px;border:1px solid var(--sc-hairline-strong);background:color-mix(in oklab,var(--sc-canvas) 78%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);color:var(--sc-ink);font:inherit;font-size:var(--sc-t-sm);letter-spacing:.01em;cursor:pointer;box-shadow:inset 0 1px 0 color-mix(in oklab,var(--sc-ink) 8%,transparent),0 8px 28px -6px hsl(222 45% 3% / .55);transition:border-color 240ms var(--sc-ease-spring,cubic-bezier(0.32,0.72,0,1)),transform 240ms var(--sc-ease-spring,cubic-bezier(0.32,0.72,0,1))}
.story-play:hover{border-color:var(--sc-accent);transform:translateY(-1px)}
.story-play:active{transform:scale(0.96)}
.story-play:focus-visible{outline:2px solid var(--sc-accent);outline-offset:2px}
.story-play__ic{position:relative;display:inline-block;width:14px;height:14px;flex-shrink:0}
.story-play__ic svg{position:absolute;inset:0;transition:opacity 300ms cubic-bezier(0.2,0,0,1),transform 300ms cubic-bezier(0.2,0,0,1),filter 300ms cubic-bezier(0.2,0,0,1);transform-origin:center}
.story-play .ic-play{opacity:1;transform:scale(1);filter:blur(0)}
.story-play .ic-pause{opacity:0;transform:scale(0.25);filter:blur(4px)}
.story-play.is-playing .ic-play{opacity:0;transform:scale(0.25);filter:blur(4px)}
.story-play.is-playing .ic-pause{opacity:1;transform:scale(1);filter:blur(0)}
@media (prefers-reduced-motion:reduce){.story-play{display:none}}

/* brand fly-in (home) */
.brand-fly{position:fixed;z-index:61;display:none;align-items:center;gap:.75rem;pointer-events:none;transform:translateY(-50%);will-change:left,top}
.brand-fly img{display:block;width:auto}
.nav__brand{display:flex;align-items:center;gap:.5rem}
.nav__brand img{display:block;height:22px;width:auto}
.nav__brand img+img{height:9px}

body.is-home .peak .copy--intel{top:calc(var(--bar-h,0px) + 8.75rem)} /* clear INTELLIGENCE divider label */
body.is-home .peak .copy--close{top:auto}
@media (max-width:860px){ body.is-home .divider{top:calc(var(--bar-h,0px) + 3.5rem)} body.is-home .divider__label{top:calc(var(--bar-h,0px) + 3.95rem)} body.is-home .peak .copy--intel{top:calc(var(--bar-h,0px) + 7rem)} body.is-home .peak .copy--close{top:calc(var(--bar-h,0px) + 13rem)} body.is-home .hero .side--info .side__in{padding-top:calc(var(--bar-h,0px) + 4.1rem);padding-bottom:1.35rem} body.is-home .hero .side--intel .side__in{padding-top:1.35rem;padding-bottom:1.75rem} body.is-home .who .side__in{padding-top:calc(var(--bar-h,0px) + 5.5rem)} }
/* footer */
table.ls th[scope=row]{font-weight:600;text-align:left;width:50%;text-transform:none;letter-spacing:0;font-size:var(--sc-t-sm);color:var(--sc-ink)}table.ls th[scope=row] .muted{display:block;font-weight:400;font-size:var(--sc-t-xs);margin-top:.3rem;text-transform:none;letter-spacing:0;line-height:1.45}table.ls td{vertical-align:top}.ls-pill{display:inline-flex;align-items:center;gap:.4rem;padding:.28rem .7rem .28rem .55rem;border-radius:999px;font-size:var(--sc-t-xs);font-weight:600;letter-spacing:.02em;white-space:nowrap;border:1px solid transparent}.ls-pill svg{flex:none}.ls-pill--met{color:#0A0F1C;background:#00D4B8;border-color:#00D4B8}.ls-pill--progress{color:#FFC466;background:rgba(255,196,102,.12);border-color:rgba(255,196,102,.45)}.ls-pill--pending{color:var(--sc-ink-soft);background:rgba(136,151,166,.10);border-color:rgba(136,151,166,.35)}.ls-note{display:block;margin-top:.45rem;font-size:var(--sc-t-sm);line-height:1.45}.ls-basis{display:block;margin-top:.2rem;font-size:var(--sc-t-xs);color:var(--sc-ink-soft)}tr.ls-met th[scope=row]{border-left:3px solid #00D4B8;padding-left:.75rem}.ls-tally{font-size:var(--sc-t-sm);color:var(--sc-ink-soft);margin:-.25rem 0 .75rem}.ls-tally b{color:var(--sc-ink);font-weight:600}
.form--mini{max-width:34rem}.checklist{list-style:none;counter-reset:ck;padding:0;margin:1.5rem 0 2.5rem}.checklist li{counter-increment:ck;position:relative;padding:1.1rem 0 1.1rem 3.2rem;border-top:1px solid var(--sc-hairline)}.checklist li:last-child{border-bottom:1px solid var(--sc-hairline)}.checklist li::before{content:counter(ck,decimal-leading-zero);position:absolute;left:0;top:1.15rem;font-size:var(--sc-t-xs);letter-spacing:.12em;color:#00C2FF;font-weight:600}.checklist b{display:block;color:var(--sc-ink);font-weight:600}.checklist span{display:block;color:var(--sc-ink-soft);font-size:var(--sc-t-sm);margin:.25rem 0 .4rem}.checklist a{font-size:var(--sc-t-sm);color:#00C2FF;text-decoration:none}.checklist a:hover{text-decoration:underline}
.bar[hidden]{display:none}.bar{position:fixed;top:0;left:0;right:0;z-index:60;display:flex;align-items:center;gap:1rem;padding:.55rem var(--sc-gutter,1.5rem);background:#0E1B2D;color:var(--sc-ink);border-bottom:1px solid rgba(0,194,255,.35);font-size:var(--sc-t-sm);line-height:1.4}.bar p{margin:0;flex:1;text-align:center}.bar a{color:#00C2FF;text-decoration:none;font-weight:500;white-space:nowrap}.bar a:hover{text-decoration:underline}.bar__close{flex:none;background:none;border:0;color:var(--sc-ink-soft);font-size:1.4rem;line-height:1;cursor:pointer;padding:0 .25rem}.bar__close:hover{color:var(--sc-ink)}.nav{top:var(--bar-h,0px)}.page{padding-top:calc(64px + var(--bar-h,0px))}.bar__short{display:none}@media (max-width:640px){.bar{font-size:var(--sc-t-xs)}.bar p{text-align:left}.bar__long{display:none}.bar__short{display:inline}}
.site-foot{background:var(--sc-surface);color:var(--sc-ink-soft);border-top:1px solid var(--sc-hairline);padding:3.25rem var(--sc-gutter,1.5rem) 2.25rem;font-size:var(--sc-t-sm)}
.site-foot__row{display:grid;grid-template-columns:1.2fr 1fr;gap:2rem;max-width:72rem;margin:0 auto}
.site-foot__id img{height:19px;width:auto;margin-bottom:1rem}
.site-foot__id p{margin:.2rem 0;max-width:40ch}.site-foot__tag{color:var(--sc-ink)}
.site-foot__nav{display:grid;grid-template-columns:1fr;gap:1.5rem;max-width:18rem}
.site-foot__nav b{display:block;color:var(--sc-ink);font-weight:600;margin-bottom:.5rem}
.site-foot__nav a{display:block;color:var(--sc-ink-soft);text-decoration:none;padding:.2rem 0;transition:color 220ms}.site-foot__nav a:hover{color:var(--sc-ink)}
.site-foot__legal{max-width:72rem;margin:2.5rem auto 0;padding-top:1.5rem;border-top:1px solid var(--sc-hairline);font-size:var(--sc-t-xs)}
.site-foot__legal p{margin:.5rem 0;max-width:90ch}.site-foot__legal a{color:inherit}
@media (max-width:860px){.site-foot__row{grid-template-columns:1fr}}
/* the home peak footer sits above the site footer; hide site footer link duplication on home is fine */


/* ===== Core Web Vitals: layout-shift fixes (added 2026-10-01) =============
   1. scrollcraft.js sets `height: <span*100>vh` on every pinned act AFTER first
      paint (scrollcraft.js:558; span parsed at :327, default 1.5 when absent).
      Nothing in CSS declared those heights, so each pinned section was unsized
      until the engine ran — the real source of the shift. Declaring the same
      values makes the first paint final. All three are specificity 0,1,0, so
      the span rules MUST follow the act rule to win on source order.
      Markup today: data-sc-act="pin" x2, data-sc-span="2.4" x1, "4.8" x1.
   2. dvh tracks the CURRENT viewport, so it reflows every time mobile browser
      chrome collapses or returns. svh is the stable floor. Scoped to the mobile
      breakpoint on purpose: above 860px dvh == svh == lvh and the swap would be
      a no-op. `.split` is deliberately min-height:auto below 860px
      (cyphaira.css:341) and is left alone. */
[data-sc-act="pin"]{height:150vh}
[data-sc-span="2.4"]{height:240vh}
[data-sc-span="4.8"]{height:480vh}
@media (max-width:860px){
  .peak .split{min-height:100svh}
  .page{min-height:100svh}
}
