.skip{position:absolute;left:-9999px;top:0;z-index:100}.skip:focus{left:12px;top:12px;padding:10px 16px;border-radius:8px;background:#9c3712;color:#fbfaf7;font:500 14px/1 IBM Plex Sans,system-ui,sans-serif}html .nav .menu,html .mflow{display:none}html .march{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}html .if-touch{display:none}@media(hover:none){html .if-hover{display:none}html .if-touch{display:inline}}@media(max-width:899px){html .wrap>div[style*="grid-template-columns:minmax(0,1fr) auto"]{grid-template-columns:minmax(0,1fr)!important;gap:30px!important}}@media(max-width:719px){html{-webkit-text-size-adjust:100%}html body{-webkit-tap-highlight-color:transparent}html .nav{position:relative;height:64px;padding:0 var(--gutter,0px);flex-wrap:nowrap}html .nav>ul{display:none}html .nav .menu{display:block}html .menu>summary{list-style:none;display:flex;align-items:center;gap:10px;min-height:44px;padding:0 0 0 12px;cursor:pointer;font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink2)}html .menu>summary::-webkit-details-marker{display:none}html .menu .ico{position:relative;width:18px;height:10px}html .menu .ico i{position:absolute;left:0;right:0;top:0;height:1.5px;border-radius:1px;background:var(--ink);transition:transform .24s var(--enter),top .24s var(--enter)}html .menu .ico i+i{top:8.5px}html .menu[open] .ico i{top:4.25px;transform:rotate(45deg)}html .menu[open] .ico i+i{transform:rotate(-45deg)}html .menu .sheet{position:absolute;left:var(--gutter,0px);right:var(--gutter,0px);top:calc(100% - 6px);z-index:40;display:block;list-style:none;margin:0;padding:6px 18px;background:var(--paper2);border:1px solid var(--hair);border-radius:16px;box-shadow:0 26px 50px -26px #28241e80;animation:m-sheet .26s var(--enter) both}html .menu .sheet li+li{border-top:1px solid var(--hair)}html .menu .sheet a{display:flex;align-items:center;justify-content:space-between;min-height:58px;font-family:var(--serif);font-size:27px;letter-spacing:-.015em;color:var(--ink);text-decoration:none}html .menu .sheet a:after{content:"→";font-family:var(--sans);font-size:17px;color:var(--ink3)}html .menu .sheet a[aria-current]{color:var(--accent)}@keyframes m-sheet{0%{opacity:0;transform:translateY(-10px)}}html:root:has(.spine){--content-x:20px;--gutter:20px}html .spine,html .snode{display:none}html .hero{gap:30px;padding:30px 0 6px}html .hero h1{font-size:clamp(46px,13.6vw,60px);margin-top:14px}html .tw{font-size:17px}html .hero .facts{flex-direction:column;gap:9px}html .cluster{width:100%;aspect-ratio:auto;margin:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(34px,1fr));gap:7px}html .cluster .tile{position:static;width:auto;margin:0;aspect-ratio:1;animation:none}html .cluster .tile .br{width:44%;height:44%}html .way{flex-wrap:wrap}html .way small{flex-basis:100%;margin:-8px 0 4px 52px}html .compose{padding:18px 16px}html .send{width:100%;justify-content:center;min-height:50px;border-radius:25px}html .filters{gap:8px;flex-wrap:wrap}html .filters .label{flex-basis:100%;margin-bottom:2px}html .filters label{min-height:38px;padding:0 15px;border:1px solid var(--hair);border-radius:19px;color:var(--ink2)}html .reg:has(#f-all:checked) .filters label[for=f-all],html .reg:has(#f-delivered:checked) .filters label[for=f-delivered],html .reg:has(#f-built:checked) .filters label[for=f-built]{text-decoration:none;background:var(--accent);border-color:var(--accent);color:var(--on-accent)}html .ghead{gap:12px;padding:10px 0}html .ghead .ring{width:34px;height:34px}html .ghead .ring svg{width:17px;height:17px}html .ghead h2{font-size:21px;line-height:1.15}html .ghead .n{font-size:10px;white-space:nowrap}html .row{grid-template-columns:14px minmax(0,1fr);gap:6px 12px;padding:18px 0}html .row .line{font-size:14px;line-height:1.5}html .row .name{font-size:16.5px}html .stage.sec .strip{display:block;margin-top:28px;padding:0;border:0;border-radius:0;background:none;overflow:visible}html .stage.sec .strip .wf{display:none}html .stage.sec .strip .cap{position:static;margin:0;line-height:1.65}html .stage.sec .strip .cap.r{margin:4px 0 0}html .under .log,html .under .hint{display:none}html .mflow{display:block;list-style:none;margin:18px 0 0;padding:0}html .mflow li{position:relative;display:grid;grid-template-columns:36px minmax(0,1fr);column-gap:14px;padding-bottom:16px}html .mflow li.step:before{content:"";position:absolute;left:17px;top:38px;bottom:2px;width:2px;border-radius:1px;background:var(--accent);transform-origin:top}html .mflow li.fan{margin-left:28px}html .mflow li.fan:after{content:"";position:absolute;left:-11px;top:-16px;width:11px;height:35px;border:solid var(--accent);border-width:0 0 2px 2px;border-bottom-left-radius:10px}html .mflow li.fan:not(:last-child):before{content:"";position:absolute;left:-11px;top:8px;bottom:16px;width:2px;background:var(--accent)}html .mf-ico{width:36px;height:36px;border-radius:9px;display:grid;place-items:center;border:1.5px solid var(--accent);background:var(--wash);color:var(--accent)}html .mf-ico svg{fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}html .mf-t b{display:block;padding-top:8px;font-weight:500;font-size:15px;line-height:1.3;color:var(--ink)}html .mf-t i{display:block;margin-top:3px;font-style:normal;font-family:var(--mono);font-size:11px;line-height:1.45;color:var(--ink3)}html .under{margin-top:4px}html .rail{margin-top:18px!important}html .minibox{height:104px}html .minibox.none{height:46px}html .cats.path li{display:grid;grid-template-columns:44px minmax(0,1fr);column-gap:14px;row-gap:3px;align-items:start;padding:14px 0}html .cats.path .ring{grid-row:1 / span 3}html .cats.path b{margin:3px 0 0;font-size:15px}html .cats.path i{margin:0;font-size:11px;line-height:1.45}html .cats.path .sys{margin-top:3px}html .figs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px 12px;margin-top:30px}html .figs b{font-size:34px}html .arch-track{display:none}html .march{display:block;position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal;margin-top:6px}html .ma-cap{display:flex;align-items:center;gap:10px;margin:26px 0 10px;font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink3)}html .ma-cap:before{content:"";width:7px;height:7px;border-radius:50%;background:var(--accent)}html .ma-src{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;list-style:none;margin:0;padding:0}html .ma-src li{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--hair);border-radius:12px;background:var(--paper2);font-size:12.5px;line-height:1.3;color:var(--ink)}html .ma-src .ma-extra{grid-column:1 / -1;border-style:dashed;background:transparent;font-family:var(--mono);font-size:10.5px;color:var(--ink3)}html .ma-ico{flex:none;display:grid;place-items:center;width:30px;height:30px;border-radius:50%;border:1.5px solid var(--accent);background:var(--wash);color:var(--accent)}html .ma-ico svg{width:16px;height:16px;fill:currentColor}html .ma-ico.st svg{fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}html .ma-ico.dash{border-style:dashed;border-color:var(--ink3);background:transparent}html .ma-node{padding:16px 18px 10px;border:1.5px solid var(--accent);border-radius:14px;background:var(--paper2)}html .ma-node b{display:block;font-weight:600;font-size:16px;color:var(--ink)}html .ma-node>i{display:block;margin-top:2px;font-style:normal;font-size:13px;color:var(--ink2)}html .ma-node ol,html .ma-node ul{list-style:none;margin:12px 0 0;padding:0;counter-reset:ma}html .ma-node li{padding:7px 0;border-top:1px solid var(--hair);font-family:var(--mono);font-size:11.5px;line-height:1.45;color:var(--ink2)}html .ma-node ol li{counter-increment:ma}html .ma-node ol li:before{content:counter(ma,decimal-leading-zero);display:inline-block;width:28px;color:var(--accent)}html .ma-fam{list-style:none;margin:0;padding:0}html .ma-fam li{display:flex;align-items:flex-start;gap:12px;padding:10px 0;border-bottom:1px solid var(--hair)}html .ma-fam b{display:block;padding-top:3px;font-weight:500;font-size:14.5px;color:var(--ink)}html .ma-fam i{display:block;margin-top:2px;font-style:normal;font-family:var(--mono);font-size:11px;color:var(--ink3)}html .dash .thead,html .dash .tr{grid-template-columns:44px minmax(0,1fr) 56px;gap:14px;width:auto;padding:0 16px}html .dash .thead>:nth-child(n+4),html .dash .tr>:nth-child(n+4){display:none}html .dash .bar{padding:0 16px}html section.run div[style*="text-align:right"]{text-align:left!important;margin-top:40px!important}html .tnode{perspective:none}html .tnode .faces{transform:none!important;transform-style:flat;transition:none}html .tnode .face{backface-visibility:visible;-webkit-backface-visibility:visible}html .tnode .face.back{display:none}html .tnode:is(:hover,:focus,:focus-within) .face:not(.back){border-color:var(--accent);color:var(--accent)}html .tnode:is(:hover,:focus,:focus-within) .face.back{display:flex;position:fixed;z-index:60;inset:auto auto calc(18px + env(safe-area-inset-bottom)) 50%;width:max-content;min-width:0;max-width:calc(100vw - 40px);height:44px;padding:0 18px;border-radius:22px;transform:translate(-50%);font-size:12px;box-shadow:0 16px 32px -14px #28241e99;animation:m-toast .22s var(--enter) both}@keyframes m-toast{0%{opacity:0;transform:translate(-50%,10px)}}}@supports (animation-timeline: view()){@media(max-width:719px)and (prefers-reduced-motion:no-preference){html .mf-ico{animation:m-unlit linear both;animation-timeline:view();animation-range:entry 100% cover 42%}html .mflow li.step:before{animation:m-draw linear both;animation-timeline:view();animation-range:cover 30% cover 55%}html .ma-ico{animation:m-unlit linear both;animation-timeline:view();animation-range:entry 100% cover 38%}@keyframes m-unlit{0%{border-color:var(--hair);background:var(--paper2);color:var(--ink3)}}@keyframes m-draw{0%{transform:scaleY(0)}}}}html:root{--mo-ease:cubic-bezier(.16,1,.3,1);--mo-lift:44px;--mo-card-lift:92px;--mo-tilt:9deg}@media(max-width:719px){html:root{--mo-lift:28px;--mo-card-lift:52px;--mo-tilt:0deg}}@media print{html *,html *:before,html *:after{animation:none!important}}@media(prefers-reduced-motion:no-preference){html .wsplit .w{display:inline-block;overflow:hidden;vertical-align:top;padding:0 .08em .16em;margin:0 -.08em -.16em}html .wsplit .w>span{display:inline-block}@keyframes mo-in-word{0%{translate:0 108%}}@keyframes mo-in-rise{0%{opacity:0;translate:0 26px}}@keyframes mo-in-fade{0%{opacity:0}}@keyframes mo-in-wipe{0%{clip-path:inset(0 100% 0 0)}}html .wload .w>span{animation:mo-in-word 1s var(--mo-ease) both;animation-delay:calc(var(--boot-at, 0ms) + .16s + var(--i) * 60ms)}html :is(.body-run>.wrap,.first .panel>.wrap,.first .panel)>p.label:first-child,html .stage>p.label:first-child{animation:mo-in-fade .7s var(--mo-ease) calc(var(--boot-at, 0ms) + 60ms) both}html .reg-head{animation:mo-in-rise 1s var(--mo-ease) calc(var(--boot-at, 0ms) + .42s) both}html .filters{animation:mo-in-rise 1s var(--mo-ease) calc(var(--boot-at, 0ms) + .54s) both}html .sec-head .lede{animation:mo-in-rise 1s var(--mo-ease) calc(var(--boot-at, 0ms) + .38s) both}html .sec-head .facts{animation:mo-in-rise 1s var(--mo-ease) calc(var(--boot-at, 0ms) + .48s) both}html .stage.sec .strip{animation:mo-in-rise 1.1s var(--mo-ease) calc(var(--boot-at, 0ms) + .56s) both}html .stage.sec .under{animation:mo-in-fade .9s var(--mo-ease) calc(var(--boot-at, 0ms) + .82s) both}html :is(.body-run>.wrap,.first .panel>.wrap)>div>div>p.body{animation:mo-in-rise 1s var(--mo-ease) calc(var(--boot-at, 0ms) + .4s) both}html :is(.body-run>.wrap,.first .panel>.wrap)>div>div>p.label-m{animation:mo-in-rise 1s var(--mo-ease) calc(var(--boot-at, 0ms) + .48s) both}html .figs>div{animation:mo-in-rise 1s var(--mo-ease) both;animation-delay:calc(var(--boot-at, 0ms) + .56s + var(--k, 0) * 70ms)}html .figs>div:nth-child(2){--k:1}html .figs>div:nth-child(3){--k:2}html .figs>div:nth-child(4){--k:3}html .figs>div:nth-child(5){--k:4}html :is(.body-run>.wrap,.first .panel>.wrap)>div>div+div{animation:mo-in-rise 1.1s var(--mo-ease) calc(var(--boot-at, 0ms) + .64s) both}html :is(.body-run>.wrap,.first .panel>.wrap)>div>div+div .mini{clip-path:inset(0);animation:mo-in-wipe 1.4s var(--mo-ease) calc(var(--boot-at, 0ms) + .9s) both}}@media(prefers-reduced-motion:no-preference)and (min-width:720px){html .cluster .tile{animation-name:pop}}@supports (animation-timeline: view()){@media(prefers-reduced-motion:no-preference){html .rv{animation:none}@keyframes mo-drift{0%{translate:0 -6%}to{translate:0 6%}}@keyframes mo-hero-copy{to{translate:0 -11vh;opacity:.12}}@keyframes mo-hero-cluster{to{translate:0 -17vh;scale:1.12;opacity:0}}@keyframes mo-progress{0%{scale:0 1}to{scale:1 1}}html body:before{content:"";position:fixed;left:0;right:0;top:0;height:2px;z-index:70;pointer-events:none;background:var(--accent);transform-origin:0 50%;animation:mo-progress linear both;animation-timeline:scroll(root)}html .hero{view-timeline:--mo-hero block}html .hero>div:first-child{animation:mo-hero-copy linear both;animation-timeline:--mo-hero;animation-range:exit 0% exit 100%}html .hero>.cluster{animation:mo-hero-cluster linear both;animation-timeline:--mo-hero;animation-range:exit 0% exit 100%}html .sect{view-timeline:--mo-sect block}html .sect .sect-photo{animation:mo-drift linear both;animation-timeline:--mo-sect;animation-range:cover 0% cover 100%}}@media(max-width:719px)and (prefers-reduced-motion:no-preference){html .hero>div:first-child{animation-name:mo-hero-copy-sm}html .hero>.cluster{animation:none}@keyframes mo-hero-copy-sm{to{translate:0 -6vh}}}}html .track,html .scene,html .panel{display:contents}@supports (animation-timeline: view()){@media(prefers-reduced-motion:no-preference)and (min-width:1024px)and (min-height:620px){html .first.t-home{display:block;position:relative;height:calc(200svh - 160px)}html .first.t-home>.scene{display:block;position:sticky;top:80px;height:calc(100svh - 80px)}html .first.t-home>.scene>.panel{display:block;position:relative;height:100%}html .first.t-home>.scene>.panel:after{content:"";position:absolute;top:0;bottom:0;left:calc(50% - 50vw);right:calc(50% - 50vw);z-index:40;pointer-events:none;background:var(--ink);opacity:0;animation:s-dim linear both;animation-timeline:scroll(root);animation-range:0px calc(100svh - 80px)}@keyframes s-dim{to{opacity:.3}}html .first.t-home+.own{display:block;position:relative;margin-top:calc(80px - 100svh);margin-inline:calc(-1 * var(--bl)) calc(-1 * var(--br));padding-inline:var(--bl) var(--br);background:var(--paper) url(/specks.svg) 0 0/1200px 1200px;border-radius:28px 28px 0 0;box-shadow:0 -22px 50px -18px #1b1b1947}html .first.t-home .hero h1{position:relative;z-index:41}html .first.t-home .hero>div:first-child,html .first.t-home .hero>.cluster{animation:none}}@media(prefers-reduced-motion:no-preference){html .track.t-home{--bl:calc((100vw - min(1080px,100vw)) / 2 + var(--edge));--br:var(--bl)}html .it{view-timeline:--it block;--p0:calc(var(--col,0) * var(--cs,5vh));--pw:var(--fw,28vh)}html .it.k-a,html .it.k-d{--fw:34vh}html .it.k-b,html .row.it{--fw:26vh}html .it.k-t{--fw:24vh}html .xp li.it{view-timeline-name:--it,--row;view-timeline-axis:block,block}html .sect.it{view-timeline-name:--it,--mo-sect;view-timeline-axis:block,block}@keyframes s-card{0%{opacity:0;translate:0 64px}}@keyframes s-tile{0%{opacity:0;translate:0 18px;scale:.92}}@keyframes s-in{0%{opacity:0;translate:-22px 0}}@keyframes s-rise{0%{opacity:0;translate:0 26px}}@keyframes s-slide{0%{opacity:0;translate:-26px 0}}@keyframes s-fade-x{0%{opacity:0;translate:-14px 0}}@keyframes s-draw-x{0%{scale:0 1}}html :is(.lab,.slabel,.ghead,.wsplit:not(.wload)){view-timeline:--hd block}html .lab>span{display:inline-block;animation:s-slide linear both;animation-timeline:--hd;animation-range:entry 0vh entry 15vh}html .lab:after{transform-origin:0 50%;animation:s-draw-x linear both;animation-timeline:--hd;animation-range:entry 2vh entry 24vh}html .slabel{animation:s-slide linear both;animation-timeline:--hd;animation-range:entry 0vh entry 17vh}html .ghead :is(.ring,.n){animation:s-slide linear both;animation-timeline:--hd;animation-range:entry 0vh entry 17vh}html .wsplit:not(.wload){animation:s-rise linear both;animation-timeline:--hd;animation-timing-function:cubic-bezier(.22,.7,.3,1);animation-range:entry 0vh entry 22vh}html .it.k-a.k-a{animation:s-card linear both;animation-timeline:--it;animation-timing-function:cubic-bezier(.22,.7,.3,1);animation-range:entry var(--p0) entry calc(var(--p0) + var(--pw))}html .it.k-b{animation:s-tile linear both;animation-timeline:--it;animation-timing-function:cubic-bezier(.22,.7,.3,1);animation-range:entry var(--p0) entry calc(var(--p0) + var(--pw))}html :is(.row.it,.it.k-c:is(li,.way,.gh),.limits>li.it){animation:s-in linear both;animation-timeline:--it;animation-timing-function:cubic-bezier(.22,.7,.3,1);animation-range:entry var(--p0) entry calc(var(--p0) + var(--pw))}html .it.k-d.k-d{animation:s-card linear both;animation-timeline:--it;animation-timing-function:cubic-bezier(.22,.7,.3,1);animation-range:entry var(--p0) entry calc(var(--p0) + var(--pw))}html .sect.it{clip-path:none}html .it.k-t{animation:s-rise linear both;animation-timeline:--it;animation-timing-function:cubic-bezier(.22,.7,.3,1);animation-range:entry var(--p0) entry calc(var(--p0) + var(--pw))}html .inv.it{animation:s-rise linear both;animation-timeline:--it;animation-range:entry var(--p0) entry calc(var(--p0) + var(--pw) * .4)}html .inv.it>span{transform-origin:0 50%;animation:s-draw-x linear both;animation-timeline:--it;animation-range:entry calc(var(--p0) + var(--pw) * (.1 + var(--k,0) * .07)) entry calc(var(--p0) + var(--pw) * (.36 + var(--k,0) * .07))}html .inv>span:nth-child(2){--k:1}html .inv>span:nth-child(3){--k:2}html .inv>span:nth-child(4){--k:3}html .inv>span:nth-child(5){--k:4}html .inv>span:nth-child(6){--k:5}html .inv>span:nth-child(7){--k:6}html .inv>span:nth-child(8){--k:7}html .inv>span:nth-child(n+9){--k:8}}@media(prefers-reduced-motion:no-preference)and (min-width:720px){html .sects>.it:nth-child(3n+2){--col:1}html .sects>.it:nth-child(3n+3){--col:2}html .icards>.it:nth-child(2n){--col:1}html .tools>.it{--cs:.8vh;--col:mod(var(--i),10)}}@media(prefers-reduced-motion:no-preference)and (min-width:720px)and (max-width:1000px){html .sects>.it:nth-child(n){--col:0}html .sects>.it:nth-child(2n){--col:1}}@media(prefers-reduced-motion:no-preference)and (min-width:900px){html main:has(.body-run){padding-bottom:max(0px,calc(40vh - 240px))}html .guards>.it:nth-child(2n){--col:1}html .gates>.it:nth-child(4n+2){--col:1}html .gates>.it:nth-child(4n+3){--col:2}html .gates>.it:nth-child(4n+4){--col:3}html .cats>.it{--cs:3vh}html .cats>.it:nth-child(2){--col:1}html .cats>.it:nth-child(3){--col:2}html .cats>.it:nth-child(4){--col:3}html .cats>.it:nth-child(5){--col:4}html .cats>.it:nth-child(6){--col:5}html .cats>.it:nth-child(n+7){--col:6}html .icards>.it:nth-child(n){--col:0}html .icards>.it:nth-child(3n+2){--col:1}html .icards>.it:nth-child(3n+3){--col:2}}@media(prefers-reduced-motion:no-preference)and (min-width:1150px){html .icards>.it:nth-child(n){--col:0}html .icards>.it:nth-child(4n+2){--col:1}html .icards>.it:nth-child(4n+3){--col:2}html .icards>.it:nth-child(4n+4){--col:3}}@media(prefers-reduced-motion:no-preference)and (max-width:899px){html .fs{animation:s-in linear both;animation-timeline:view();animation-range:entry 0% entry 26vh}}}html{--navh:72px}@media(max-width:899px){html{--navh:64px}}html:has(.navname){--navh:80px}@media(max-width:719px){html:has(.navname){--navh:64px}}html body .nav{position:sticky;top:0;z-index:60}html body .ghead{top:var(--navh)}html body .stage{top:var(--navh);height:calc(100vh - var(--navh))}html body .arch-stage{top:var(--navh);min-height:calc(100vh - var(--navh))}@media(min-width:900px){html body .arch-stage .arch{max-height:calc(100vh - 48px - var(--navh))}}html body .flow{--ti:max(var(--navh),calc(50vh + var(--navh) / 2 - var(--sh) / 2))}html .nav:before{content:"";position:absolute;z-index:-1;top:0;bottom:0;left:calc(50% - 50vw);right:calc(50% - 50vw);pointer-events:none;background:var(--paper);box-shadow:0 1px 0 var(--hair)}html .navname{display:none}html .hero h1 .hn{display:block;font-weight:inherit}html :is(.sec,main){scroll-margin-top:var(--navh)}@supports (animation-timeline: scroll()){@media(prefers-reduced-motion:no-preference){html .nav:before{opacity:0;animation:nb-bar linear both;animation-timeline:scroll(root);animation-range:0px 40px}@keyframes nb-bar{to{opacity:1}}html .nav .mark{position:relative}html .navname{display:block;position:absolute;left:calc(100% + 14px);top:calc(50% - .48em);white-space:nowrap;font-family:var(--serif);font-style:italic;font-weight:400;font-size:18px;line-height:.96;letter-spacing:-.03em;color:var(--ink);font-optical-sizing:none;font-variation-settings:"opsz" 72}html{timeline-scope:--hname}html .hero h1{view-timeline:--hname block;view-timeline-inset:80px 0px}html .hero h1 .hn{transform-origin:0 50%;animation:nb-out linear both;animation-timeline:view(block 80px 0px);animation-range:exit -20% exit 80%}@keyframes nb-out{to{opacity:0;scale:.82;translate:0 -10px}}html .navname{animation:nb-in linear both;animation-timeline:--hname;animation-range:exit 15% exit 50%}@keyframes nb-in{0%{opacity:0;translate:0 6px}to{opacity:1;translate:none}}}@media(prefers-reduced-motion:no-preference)and (max-width:719px){html .hero h1{view-timeline-inset:64px 0px}html .hero h1 .hn{animation-timeline:view(block 64px 0px)}html .navname{font-size:16px;left:calc(100% + 10px)}}@media(prefers-reduced-motion:no-preference)and (max-width:359px){html .navname{display:none}}@media(prefers-reduced-motion:no-preference)and (min-width:1024px)and (min-height:620px){html:root{--nb-F:clamp(48px,7.2vw,104px);--nb-f:calc(var(--nb-F) * .2115);--nb-S: calc(100svh - 80px) ;--nb-pt:clamp(8px,2vw,24px);--nb-pb:clamp(36px,5vw,64px);--nb-mt:clamp(18px,2.4vw,30px);--nb-copy:calc(18.7px + var(--nb-mt) + 2.88 * var(--nb-F) + clamp(22px,2.8vw,34px) + 2.68 * clamp(18px,2.3vw,26px) + clamp(22px,2.6vw,32px) + 47px);--nb-top:calc(80px + var(--nb-pt) + max(0px, (100svh - 80px - var(--nb-pt) - var(--nb-pb) - var(--nb-copy)) / 2) + 18.7px + var(--nb-mt));--nb-x:103px;--nb-y:calc(40px - .48 * var(--nb-f))}html:has(.navname) .nav:before{animation-range:calc(var(--nb-S) * .6) calc(var(--nb-S) * .9)}html .first.t-home .panel{overflow:visible}html .navname{font-size:var(--nb-f);animation:nb-show linear both;animation-timeline:scroll(root);animation-range:calc(var(--nb-S) * .52) calc(var(--nb-S) * .56)}@keyframes nb-show{0%{opacity:0}to{opacity:1}}html .hero h1 .hn{transform-origin:0 0;animation:nb-m1 cubic-bezier(.55,0,.25,1) both,nb-hide linear both;animation-timeline:scroll(root),scroll(root);animation-range:0px calc(var(--nb-S) * .52),calc(var(--nb-S) * .54) calc(var(--nb-S) * .58)}html .hero h1 .hn2{animation-name:nb-m2,nb-hide}html .hero h1 .hn3{animation-name:nb-m3,nb-hide}html .hero .eb{animation:nb-lift linear both;animation-timeline:scroll(root);animation-range:0px calc(var(--nb-S) * .08)}@keyframes nb-lift{to{opacity:0;translate:0 -8px}}@keyframes nb-hide{to{opacity:0}}@keyframes nb-m1{70%,to{scale:.2115;translate:var(--nb-x) calc(var(--nb-y) - var(--nb-top))}}@keyframes nb-m2{70%{scale:.2115;translate:var(--nb-x) calc(var(--nb-y) - var(--nb-top) - .96 * var(--nb-F) + .96 * var(--nb-f));transform:translate(0);animation-timing-function:cubic-bezier(.3,.6,.3,1)}84%{translate:var(--nb-x) calc(var(--nb-y) - var(--nb-top) - .96 * var(--nb-F) + .96 * var(--nb-f));animation-timing-function:cubic-bezier(.5,0,.3,1)}86%{transform:translate(3.376em)}to{scale:.2115;translate:var(--nb-x) calc(var(--nb-y) - var(--nb-top) - .96 * var(--nb-F));transform:translate(3.376em)}}@keyframes nb-m3{70%{scale:.2115;translate:var(--nb-x) calc(var(--nb-y) - var(--nb-top) - 1.92 * var(--nb-F) + 1.92 * var(--nb-f));transform:translate(0);animation-timing-function:cubic-bezier(.3,.6,.3,1)}84%{translate:var(--nb-x) calc(var(--nb-y) - var(--nb-top) - 1.92 * var(--nb-F) + 1.92 * var(--nb-f));animation-timing-function:cubic-bezier(.5,0,.3,1)}86%{transform:translate(6.572em)}to{scale:.2115;translate:var(--nb-x) calc(var(--nb-y) - var(--nb-top) - 1.92 * var(--nb-F));transform:translate(6.572em)}}}}@property --bm{syntax:"<percentage>";inherits:false;initial-value:0%}html .boot{display:none}@media print{html .boot{display:none!important}}@media(prefers-reduced-motion:no-preference){@supports (width: calc(1cqw*cos(0deg))) and (translate:1px){html:not(:has(:target:not(.pile-at),:focus-visible)){--boot-at:2.7s}html:not(:has(:target:not(.pile-at),:focus-visible)) .boot{display:block;animation:boot-done 1ms linear 3.4s forwards}@keyframes boot-done{0%,to{visibility:hidden}}html .boot-ground{position:fixed;inset:0;z-index:-1;background:var(--paper)}html .boot-field{position:fixed;inset:0;z-index:-1;overflow:hidden;pointer-events:none;container-type:size;--R:300px;--u:.3333}@media(max-width:1023px),(max-height:759px){html .boot-field{--R:240px;--u:.4167}}@media(max-width:719px){html .boot-field{--R:150px;--u:.6667}}html .boot-field i{position:absolute;display:block;left:calc(var(--x) * 1px);top:calc(var(--y) * 1px);width:calc(var(--w) * 1px);height:calc(var(--h) * 1px);background:url(/specks-lit.svg) calc(var(--x) * -1px) calc(var(--y) * -1px)/1200px 1200px;--dx:calc((var(--x) + var(--w) / 2) * 1px - 50cqw);--dy:calc((var(--y) + var(--h) / 2) * 1px - 50cqh);--rho:min(1.2,max(tan(atan2(max(var(--dx),-1 * var(--dx)),50cqw)),tan(atan2(max(var(--dy),-1 * var(--dy)),50cqh))));--r:calc(var(--R) * .94 * sqrt(var(--rho)));--tx:calc(var(--r) * cos(atan2(var(--dy),var(--dx))) - var(--dx));--ty:calc(var(--r) * sin(atan2(var(--dy),var(--dx))) - var(--dy));animation:boot-in .85s cubic-bezier(.6,0,.3,1) calc(.35s + var(--j) * 1ms) both,boot-out 1s var(--enter) 2.35s forwards}@keyframes boot-in{0%{translate:0 0;scale:1;opacity:var(--rest)}16%{opacity:1}82%{opacity:1}to{translate:var(--tx) var(--ty);scale:.6;opacity:0}}@keyframes boot-out{0%{translate:var(--tx) var(--ty);scale:.6;opacity:0}18%{opacity:1}50%{opacity:1}to{translate:0 0;scale:1;opacity:var(--rest)}}@media(max-width:400px){html .boot-field :is(.bx1,.bx2,.bx3,.bx4,.bx5,.bx6){display:none}}@media(max-width:768px){html .boot-field :is(.bx2,.bx3,.bx4,.bx5,.bx6){display:none}}@media(max-width:1024px){html .boot-field :is(.bx3,.bx4,.bx5,.bx6){display:none}}@media(max-width:1280px){html .boot-field :is(.bx4,.bx5,.bx6){display:none}}@media(max-width:1600px){html .boot-field :is(.bx5,.bx6){display:none}}@media(max-width:1920px){html .boot-field .bx6{display:none}}@media(max-height:700px){html .boot-field :is(.by1,.by2,.by3){display:none}}@media(max-height:900px){html .boot-field :is(.by2,.by3){display:none}}@media(max-height:1100px){html .boot-field .by3{display:none}}html .boot-net{position:absolute;left:50%;top:50%;width:calc(2 * var(--R));height:calc(2 * var(--R));margin:calc(-1 * var(--R)) 0 0 calc(-1 * var(--R));animation:boot-turn 1.7s cubic-bezier(.45,0,.55,1) 1.05s both,boot-net 1.7s 1.05s both}html .boot-net svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}@keyframes boot-turn{0%{rotate:0deg}to{rotate:110deg}}@keyframes boot-net{0%{opacity:0;scale:.9;animation-timing-function:cubic-bezier(.16,1,.3,1)}24%{opacity:1;scale:1}76%{opacity:1;scale:1;animation-timing-function:cubic-bezier(.5,0,.7,.4)}to{opacity:0;scale:1.16}}html .bn-edges path{fill:none;stroke:var(--accent);stroke-opacity:.5;stroke-width:1;vector-effect:non-scaling-stroke}html .bn-nodes path{fill:none;stroke:var(--accent);stroke-width:3.2;stroke-linecap:round;vector-effect:non-scaling-stroke}html .bn-nodes .bn-hub{stroke-width:8}html .bn-nodes .bn-ring{fill:none;stroke:var(--accent);stroke-width:1;vector-effect:non-scaling-stroke;transform-box:fill-box;transform-origin:center;animation:boot-pulse .64s cubic-bezier(.16,1,.3,1) 1.65s both}@keyframes boot-pulse{0%{scale:1;opacity:1}to{scale:5;opacity:0}}html .bn-edges{-webkit-mask-image:radial-gradient(closest-side,#000 calc(var(--bm) - 14%),transparent var(--bm));mask-image:radial-gradient(closest-side,#000 calc(var(--bm) - 14%),transparent var(--bm));animation:boot-connect .45s cubic-bezier(.4,0,.2,1) 1.25s both,boot-flash .62s ease-out 1.76s both}html .bn-nodes{animation:boot-flash .62s ease-out 1.76s both}@keyframes boot-connect{0%{--bm:0%}to{--bm:118%}}@keyframes boot-flash{0%,to{opacity:.7}32%{opacity:1}}html .bn-bolts path{fill:none;stroke:var(--accent);stroke-linecap:round;stroke-linejoin:round;animation:boot-run .44s linear calc(1.7s + var(--b) * 15ms) both}html .bn-bolts .gl{stroke-width:calc(5 * var(--u));stroke-opacity:.14;stroke-dasharray:.34 3;--o0:.35;--o1:-1.01}html .bn-bolts .tr{stroke-width:calc(1.5 * var(--u));stroke-opacity:.5;stroke-dasharray:.34 3;--o0:.35;--o1:-1.01}html .bn-bolts .hd{stroke-width:calc(2.4 * var(--u));stroke-dasharray:.08 3;--o0:.09;--o1:-1.27}@keyframes boot-run{0%{stroke-dashoffset:var(--o0)}to{stroke-dashoffset:var(--o1)}}html .bn-bolts .tip{fill:none;stroke:var(--accent);stroke-width:1;vector-effect:non-scaling-stroke;opacity:0;transform-box:fill-box;transform-origin:center;animation:boot-tip .52s cubic-bezier(.16,1,.3,1) calc(2.02s + var(--b) * 15ms) both}@keyframes boot-tip{0%{opacity:0;scale:.5}12%{opacity:1}to{opacity:0;scale:3.4}}@supports (animation-timeline:scroll()){html .boot-ground,html .boot-field{animation:boot-away linear both;animation-timeline:scroll(root);animation-range:0px 120px}@keyframes boot-away{to{opacity:0}}}html:not(:has(:target:not(.pile-at),:focus-visible)) body>:not(.boot):not(.skip){animation:boot-page .7s var(--enter) 2.7s backwards}@keyframes boot-page{0%{opacity:0}}@keyframes boot-rise{0%{opacity:0;transform:translateY(14px)}}html{container-type:scroll-state}@container scroll-state(scrollable:top){html:not(:has(:target:not(.pile-at),:focus-visible)) body>:not(.boot):not(.skip){opacity:1!important}}html:not(:has(:target:not(.pile-at),:focus-visible)) .nav .mark{animation:boot-rise .62s var(--enter) var(--boot-at) both}html:not(:has(:target:not(.pile-at),:focus-visible)) .nav>ul>li{animation:boot-rise .56s var(--enter) both;animation-delay:calc(var(--boot-at) + 60ms + var(--n, 0) * 55ms)}html:not(:has(:target:not(.pile-at),:focus-visible)) .nav>ul>li:nth-child(2){--n:1}html:not(:has(:target:not(.pile-at),:focus-visible)) .nav>ul>li:nth-child(3){--n:2}html:not(:has(:target:not(.pile-at),:focus-visible)) .nav>ul>li:nth-child(4){--n:3}html:not(:has(:target:not(.pile-at),:focus-visible)) .nav>ul>li:nth-child(5){--n:4}html:not(:has(:target:not(.pile-at),:focus-visible)) .nav>ul>li:nth-child(6){--n:5}html:not(:has(:target:not(.pile-at),:focus-visible)) .nav .menu{animation:boot-rise .56s var(--enter) calc(var(--boot-at) + 80ms) both}html:not(:has(:target:not(.pile-at),:focus-visible)) .hero .eyebrow{animation-delay:calc(var(--boot-at) + .12s)}html:not(:has(:target:not(.pile-at),:focus-visible)) .hero h1 span:nth-child(1){animation-delay:calc(var(--boot-at) + .19s)}html:not(:has(:target:not(.pile-at),:focus-visible)) .hero h1 span:nth-child(2){animation-delay:calc(var(--boot-at) + .27s)}html:not(:has(:target:not(.pile-at),:focus-visible)) .hero h1 span:nth-child(3){animation-delay:calc(var(--boot-at) + .35s)}html:not(:has(:target:not(.pile-at),:focus-visible)) .hero .tw{animation-delay:calc(var(--boot-at) + .45s)}html:not(:has(:target:not(.pile-at),:focus-visible)) .tw :is(.t,.c){animation-delay:calc(var(--boot-at) + .9s)}html:not(:has(:target:not(.pile-at),:focus-visible)) .hero .facts{animation-delay:calc(var(--boot-at) + .53s)}html:not(:has(:target:not(.pile-at),:focus-visible)) .cluster .tile{animation-delay:calc(var(--k) * 42ms + .3s + var(--boot-at)),calc(var(--k) * 42ms + .86s + var(--boot-at))}html:not(:has(:target:not(.pile-at),:focus-visible)) :is(.wf .w1,.log .l1){animation-delay:calc(var(--boot-at) + .12s)}html:not(:has(:target:not(.pile-at),:focus-visible)) :is(.wf .w2,.log .l2){animation-delay:calc(var(--boot-at) + .42s)}html:not(:has(:target:not(.pile-at),:focus-visible)) .wf .n2 :is(.lit,.glyph){animation-delay:calc(var(--boot-at) + .56s)}html:not(:has(:target:not(.pile-at),:focus-visible)) .wf .n3 :is(.lit,.glyph){animation-delay:calc(var(--boot-at) + .86s)}@media(max-width:719px){html:not(:has(:target:not(.pile-at),:focus-visible)) .cluster .tile{animation:boot-rise .52s var(--enter) calc(var(--boot-at) + .56s + var(--k) * 24ms) both}}}}html .nav .mark{--mk:48px;--mo:7px;display:flex;align-items:center;gap:0}@media(max-width:719px){html .nav .mark{--mk:42px;--mo:6px}}html .nav .mark .em{width:var(--mk);height:var(--mk);display:block;flex:none}html .nav .mark .me{width:var(--mk);height:var(--mk);margin-left:calc(-1 * var(--mo));border-radius:50%;display:block;flex:none;position:relative;object-fit:cover;box-shadow:0 0 0 2.5px var(--paper)}html:root{color-scheme:light;--paper:#FAF9F6;--paper2:#FFFFFF;--hair:#DAD7D0;--ink:#1B1B19;--ink2:#3A3A37;--ink3:#55554F;--accent:#9C3712;--accent-2:#7C2A0C;--wash:#F4E7E0;--on-accent:#FBFAF7;--maroon:var(--accent);--maroon-ink:var(--accent-2);--screen:#1F1F1C;--screen2:#36352F;--bone:#F2F1EC;--bone-dim:#A9A8A0;--rose:#E07A4F;--viz1:var(--ink);--viz2:#6F6E68;--viz3:#A2A19A;--pic-1:#8F9C86;--pic-2:#C07C5E;--pic-3:#47536E;--pic-4:#CAA467;--pic-5:#46453F;--pic-6:#677C7A}html:root{background:var(--paper) url(/specks.svg) 0 0/1200px 1200px repeat}html body{background:transparent}html .ghead{background:var(--paper)}html .tnode .face,html .minibox,html .cats .ring,html .gh .ring,html .strip,html .canvas,html .snode{background:var(--paper2)}html .gates .ring,html .ghead .ring,html .guards .ring{background:var(--wash)}html .wf .plate,html .arch .ring{fill:var(--paper2)}html .snode:before{background:var(--wash)}@media(prefers-reduced-motion:reduce){html .cats .ring{background:var(--wash)}}@supports not (animation-timeline: view()){html .cats .ring{background:var(--wash)}}html .skill:hover{box-shadow:0 18px 34px -22px #302c246b}html .cluster .tile{color:var(--brand,var(--ink2))}html .cluster .tile:hover{color:var(--brand,var(--accent))}html .tnode .face:not(.back) .br{fill:var(--brand,currentColor)}html .icard .mark,html .icard .bt .br{color:var(--brand,var(--ink2))}html .icard.custom .mark,html .icard.custom .bt .sy{color:var(--accent)}html ::selection{background:var(--accent);color:var(--on-accent)}html .chips input:checked+label,html .send,html .send:hover,html .send .sy{color:var(--on-accent)}html .tnode .face.back{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}html .tnode .face.back .br{fill:var(--on-accent)}html .mini path{stroke:var(--accent)}html .mini rect{fill:var(--wash);stroke:var(--accent)}html :is(.inv span,.invkey i)[style*="#F4F4F4" i]{background:var(--viz1)!important}html :is(.inv span,.invkey i)[style*="#CBD5E1" i]{background:var(--viz2)!important}html :is(.inv span,.invkey i)[style*="#94A3B8" i]{background:var(--viz3)!important}html :is(.inv span,.invkey i)[style*="#22D3EE" i]{background:var(--accent)!important}html :is(.inv span,.invkey i)[style*="#26304A" i]{background:var(--hair)!important}
