html.flow-page{--u:1;--gutter:max(20px, 6vw);--header:max(64px, calc(var(--u) * 78px));scroll-behavior:auto}html.flow-page body{overflow-x:hidden}.f-display{font:600 max(40px, calc(var(--u) * 116px))/1 var(--f-display);letter-spacing:-.045em;margin:0}.f-h2{font:600 max(28px, calc(var(--u) * 66px))/1.04 var(--f-display);letter-spacing:-.04em;text-wrap:balance;margin:0}.f-h3x{font:600 max(24px, calc(var(--u) * 48px))/1.06 var(--f-display);letter-spacing:-.035em;text-wrap:balance;margin:0}.f-h3{font:600 max(19px, calc(var(--u) * 28px))/1.15 var(--f-display);letter-spacing:-.02em;text-wrap:balance;margin:0}.f-body{font-size:max(16px, calc(var(--u) * 19px));color:#d9dee5;max-width:34em;margin:0;line-height:1.6}.f-lede{font-size:max(16px, calc(var(--u) * 21px));color:#dfe4ea;max-width:30em;margin:0;line-height:1.55}.f-small{font-size:max(14px, calc(var(--u) * 15px));color:var(--muted);margin:0;line-height:1.55}html.flow-page .sp-label{font-size:max(11px, calc(var(--u) * 12.5px))}html.flow-page .sp-points{font-size:max(13px, calc(var(--u) * 15.5px))}html.flow-page .sp-button{min-height:max(44px, calc(var(--u) * 52px));padding:0 max(20px, calc(var(--u) * 26px));font-size:max(15px, calc(var(--u) * 16px))}html.flow-page .sp-button.small{min-height:max(38px, calc(var(--u) * 44px));font-size:max(14px, calc(var(--u) * 15px))}html.flow-page .sp-link{font-size:max(15px, calc(var(--u) * 16px));min-height:max(44px, calc(var(--u) * 48px))}html.flow-page .chevron{width:max(14px, calc(var(--u) * 16px))}html.flow-page .chips .chevron{width:max(11px, calc(var(--u) * 13px))}.sep{opacity:.5;margin:0 2px}html.flow-page .sp-header{height:var(--header)}html.flow-page .sp-logo img{height:max(24px, calc(var(--u) * 34px))}html.flow-page .sp-header>nav{gap:max(20px, calc(var(--u) * 36px))}html.flow-page .sp-header>nav a:not(.sp-nav-panel a){font-size:max(14px, calc(var(--u) * 15.5px))}.flow{position:relative}.flow-canvas{z-index:1;pointer-events:none;width:100%;height:100%;display:block;position:fixed;inset:0}.stop{top:var(--header);z-index:2;visibility:hidden;pointer-events:none;will-change:opacity, transform;position:fixed;bottom:0;left:0;right:0}.stop.is-on{visibility:visible}.stop-img{display:none}.stop .panel{justify-content:center;align-items:flex-start;gap:max(12px, calc(var(--u) * 22px));pointer-events:auto;transform:translateY(calc(var(--d,0) * -70px * var(--u)));flex-direction:column;display:flex;position:absolute;top:0;bottom:0}.stop[data-text=left] .panel{left:var(--gutter);width:40vw}.stop[data-text=right] .panel{right:var(--gutter);width:38vw}.stop[data-text=wide] .panel{left:var(--gutter);right:var(--gutter)}.stop[data-kind=full] .panel{width:46vw}.stop[data-kind=full]:before{content:"";inset:calc(var(--header) * -1) 0 0 0;pointer-events:none;background:linear-gradient(90deg,#07090de0 0%,#07090d8c 40%,#0000 70%);position:absolute}.kicker{color:var(--muted)}.model-points{color:var(--muted);font-size:max(13px, calc(var(--u) * 15.5px));gap:6px;margin:0;padding:0;list-style:none;display:grid}.model-points li:first-child{color:var(--text)}.hero-key{gap:max(20px, calc(var(--u) * 40px));margin:max(16px, calc(var(--u) * 40px)) 0 0;padding:0;list-style:none;display:flex}.hero-key li{color:var(--hue);font:500 max(11px, calc(var(--u) * 12.5px))/1 var(--f-mono);letter-spacing:.14em;text-transform:uppercase;align-items:center;gap:10px;display:flex}html.flow-page .sp-people-tags li{font-size:max(11px, calc(var(--u) * 12px))}.stop[data-kind=none][data-text=wide] .panel{max-width:none}#build .sp-ways{width:100%;max-width:calc(var(--u) * 1400px)}#build .sp-way{gap:max(10px, calc(var(--u) * 18px));padding:max(20px, calc(var(--u) * 40px));background:#0c1016b8}.stop[data-group] .panel{padding-top:max(84px, calc(var(--u) * 150px));padding-bottom:max(90px, calc(var(--u) * 120px))}.group-head{z-index:3;top:calc(var(--header) + max(14px, calc(var(--u) * 28px)));bottom:max(14px, calc(var(--u) * 28px));pointer-events:none;opacity:0;visibility:hidden;flex-direction:column;display:flex;position:fixed}.group-head.is-on{visibility:visible}.group-head[data-text=left]{left:var(--gutter);width:40vw}.group-head[data-text=right]{right:var(--gutter);width:38vw}.group-head .sp-label{margin-bottom:max(6px, calc(var(--u) * 12px))}.group-title{font-size:max(24px, calc(var(--u) * 44px))}.group-index{pointer-events:auto;grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;gap:6px;margin:auto 0 0;padding:0;list-style:none;display:grid}.group-index button{border:0;border-top:2px solid var(--line-2);width:100%;color:var(--muted);text-align:left;cursor:pointer;background:0 0;flex-direction:column;gap:6px;padding:10px 0 0;transition:color .35s,border-color .35s;display:flex}.group-index button:hover{color:var(--text)}.group-index button.active{color:var(--text);border-top-color:#fff}.group-index .n{font:500 max(10px, calc(var(--u) * 11px))/1 var(--f-mono);letter-spacing:.1em}.group-index .t{font-size:max(12px, calc(var(--u) * 13px));-webkit-line-clamp:3;-webkit-box-orient:vertical;line-height:1.3;display:-webkit-box;overflow:hidden}.panel.closing{justify-content:center;gap:max(20px, calc(var(--u) * 56px));align-items:stretch}.panel.closing .sp-footer-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:24px;display:flex}.panel.closing nav{gap:max(16px, calc(var(--u) * 28px));flex-wrap:wrap;display:flex}.panel.closing nav a{font-size:max(14px, calc(var(--u) * 15px));color:#cfd5dd;text-decoration:none}.panel.closing .sp-wordmark{padding:0}.panel.closing .closing-tag{margin-bottom:calc(max(20px, calc(var(--u) * 56px)) * -.6)}.panel.closing .sp-wordmark img{object-fit:contain;object-position:left center;width:100%;max-height:32vh}.panel.closing .fine{border-top:1px solid var(--line);font:500 max(10px, calc(var(--u) * 11px))/1.4 var(--f-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);padding-top:20px}.panel.closing .fine p{margin:0}@media (height<=640px) and (width>=861px){.stop[data-group=solutions] .sp-points,.model-points,.sp-people-tags,.hero-key,#build .sp-way .f-small{display:none}}@media (width>=861px) and (width<=1199px){.group-index{grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-flow:row;row-gap:12px}.stop[data-group] .panel{padding-bottom:max(150px, calc(var(--u) * 190px))}}@media (width>=861px) and (width<=1199px) and (height<=760px){.stop[data-group] .sp-points{display:none}}@media (width>=861px) and (width<=1199px) and (height<=640px){.group-index{grid-template-columns:none;grid-auto-flow:column}.group-index .t{display:none}.stop[data-group] .panel{padding-bottom:70px}}@media (width<=860px){.stop[data-text] .panel{left:var(--gutter);right:var(--gutter);justify-content:flex-end;width:auto;top:auto;bottom:20px}.stop[data-kind=full] .panel{width:auto}.stop[data-kind=full]:before{background:linear-gradient(#07090d33 0%,#07090dbf 50%,#07090df2 100%)}.stop[data-group] .panel{padding:0}.group-head{bottom:auto}.group-head[data-text]{left:var(--gutter);right:var(--gutter);width:auto}.group-head{transform:translateY(calc(var(--ho,0) * 28px))}.group-head .sp-label{color:var(--hue);margin-bottom:6px}.group-head .group-title{margin-bottom:12px;font-size:24px;line-height:1.1;display:block}.group-index{pointer-events:auto;gap:4px;margin:0}.group-index button{border-top:3px solid var(--line-2);touch-action:manipulation;border-radius:2px;padding:0;position:relative}.group-index button:after{content:"";position:absolute;inset:-14px 0 -22px}.group-index button.done{border-top-color:color-mix(in srgb, var(--hue) 45%, transparent)}.group-index button.active{border-top-color:var(--hue)}.group-index .n,.group-index .t{display:none}.sp-ways{grid-template-columns:1fr;gap:12px}#build .sp-way .f-small,.model-points,.sp-people-tags,.stop .sp-points{display:none}.stop[data-kind=none] .panel{justify-content:flex-start;padding-top:24px;top:0;bottom:auto}#closing .panel{justify-content:center;top:0;bottom:0}.stop[data-kind=card] .panel{top:var(--m-top,auto);justify-content:flex-start;bottom:auto}}@media (width<=860px) and (height<=600px){html:not(.static) .stop[data-group] .panel>.sp-label{display:none}}@media (width<=860px) and (height<=440px){.group-head .group-title,.stop[data-group] .disciplines{display:none}}html.static .flow{height:auto!important}html.static .flow-canvas,html.static .group-head{display:none}html.static .stop{top:auto;visibility:visible;min-height:calc(100svh - var(--header));padding:max(48px, calc(var(--u) * 80px)) var(--gutter);pointer-events:auto;grid-template-columns:1.1fr 1fr;align-items:center;gap:5vw;display:grid;position:relative;inset:auto;opacity:1!important;transform:none!important}html.static .stop:first-child{margin-top:var(--header)}html.static .stop .panel{position:static;transform:none;width:auto!important;padding:0!important}html.static .stop[data-text=left] .stop-img,html.static .stop[data-kind=full] .stop-img{order:2}html.static .stop-img{aspect-ratio:4/3;object-fit:cover;border:1px solid var(--line);border-radius:10px;width:100%;display:block}html.static .stop[data-kind=none]{grid-template-columns:1fr}html.static .stop[data-kind=full]:before{display:none}@media (width<=860px){html.static .stop{grid-template-columns:1fr}html.static .stop-img{order:0!important}}.disciplines{gap:max(8px, calc(var(--u) * 12px));flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.disciplines li{padding:max(5px, calc(var(--u) * 7px)) max(10px, calc(var(--u) * 14px));border:1px solid color-mix(in srgb, var(--hue) 45%, transparent);background:color-mix(in srgb, var(--hue) 9%, transparent);color:var(--hue);font:500 max(10px, calc(var(--u) * 11.5px))/1 var(--f-mono);letter-spacing:.12em;text-transform:uppercase;border-radius:999px;align-items:center;gap:8px;display:inline-flex}.snap-points{pointer-events:none;position:absolute;inset:0}.snap-points i{width:1px;height:1px;position:absolute;left:0}@media (pointer:coarse) and (width<=860px){html.flow-page:not(.static){scroll-snap-type:y mandatory;scroll-padding-top:0}html.flow-page:not(.static) .snap-points i{scroll-snap-align:start;scroll-snap-stop:always}}html.static .snap-points{display:none}.skills-ticker{z-index:2;pointer-events:auto;align-items:center;gap:max(12px, calc(var(--u) * 20px));padding:max(8px, calc(var(--u) * 11px)) var(--gutter);backdrop-filter:blur(8px);background:#070c16b8;border-bottom:1px solid #ffffff1a;display:flex;position:absolute;top:0;left:0;right:0}.ticker-count{display:none}.ticker-live{font:500 max(10px, calc(var(--u) * 11px))/1 var(--f-mono);letter-spacing:.1em;color:var(--muted);flex:none;order:2;align-items:center;gap:8px;display:flex}.ticker-live>i{background:var(--green-text);width:6px;height:6px;box-shadow:0 0 8px var(--green-text);border-radius:50%}.skills-ticker.is-holding .ticker-live>i{background:var(--muted);box-shadow:none}.ticker-groups{flex:1;order:1;min-width:0;margin:0;padding:0;list-style:none;display:grid}.ticker-group{opacity:0;visibility:hidden;grid-area:1/1;min-width:0;transition:opacity .45s cubic-bezier(.2,.75,.25,1),transform .45s cubic-bezier(.2,.75,.25,1),visibility 0s .45s;transform:translateY(4px)}.ticker-group.is-active{opacity:1;visibility:visible;transition-delay:0s;transform:none}.ticker-group a{color:inherit;flex-direction:column;align-items:flex-start;gap:1px;text-decoration:none;display:flex}.ticker-label{font:500 max(12px, calc(var(--u) * 12px))/1.5 var(--f-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--cool-text);white-space:nowrap}.ticker-terms{font-size:max(14px, calc(var(--u) * 15px));color:#e6eaf0;line-height:1.45}.ticker-group a:hover .ticker-terms{color:#fff;text-underline-offset:3px;text-decoration:underline #fff6}.ticker-controls{flex:none;order:3;align-items:center;gap:3px;display:flex}.ticker-seg{cursor:pointer;background:0 0;border:0;place-items:center;width:24px;height:24px;padding:0;display:grid}.ticker-seg i{background:var(--line-2);border-radius:2px;width:18px;height:2px;transition:background .35s;display:block}.ticker-seg:hover i{background:#fff}.ticker-seg.is-active i{background:var(--cool-text)}.ticker-pause{cursor:pointer;background:0 0;border:0;place-items:center;width:24px;height:24px;margin-left:6px;padding:0;display:grid}.ticker-pause i{border:solid var(--muted);border-width:0 2px;width:8px;height:10px;display:block}.ticker-pause:hover i{border-color:#fff}.ticker-pause[aria-pressed=true] i{border-style:solid;border-width:5px 0 5px 8px;border-color:transparent transparent transparent var(--cool-text);width:0;height:0}.stop-hero .panel{padding-top:var(--ticker-h,0px)}@media (width>=861px){.stop-hero:before{background:linear-gradient(90deg,#07090de6 0%,#07090da8 42%,#07090d47 62%,#0000 78%)}.stop-hero h1{width:max-content;max-width:calc(100vw - 2 * var(--gutter))}}@media (width<=860px){.skills-ticker{padding-top:8px;padding-bottom:12px;display:block}.ticker-live{display:none}.ticker-label{max-width:calc(100% - 40px);display:block}.ticker-controls{left:var(--gutter);right:var(--gutter);pointer-events:none;align-items:flex-end;gap:3px;position:absolute;top:0;bottom:5px}.ticker-seg{flex:1;width:auto;height:2px}.ticker-seg i{width:100%}.ticker-pause{pointer-events:auto;width:44px;height:44px;margin:0;position:absolute;top:0;right:-12px}.stop-hero .panel{padding-top:0}.stop-hero .hero-key{margin-top:0}}@media (width<=860px) and (height<=720px){.stop-hero .hero-key{display:none}.stop-hero .f-display{font-size:44px}}@media (width<=860px) and (height<=600px){.stop-hero .f-display{font-size:36px}.stop-hero .sp-label{display:none}.ticker-terms{font-size:12px;line-height:1.35}.stop-hero .panel{gap:10px;bottom:12px}}@media (width<=860px) and (height<=440px){.skills-ticker{display:none}.stop-hero .f-display{font-size:32px}.stop-hero .f-lede{font-size:14px}}html.static .skills-ticker{backdrop-filter:none;background:0 0;border:0;grid-column:1/-1;padding:0;display:block;position:static}html.static .ticker-live,html.static .ticker-controls{display:none}html.static .ticker-groups{gap:10px;display:grid}html.static .ticker-group{opacity:1;visibility:visible;grid-area:auto;transform:none}html.static .stop-hero h1{width:auto}@media (width>=861px){html:not(.static) .stop[data-group] .panel>.sp-label{display:none}}@media (width<=860px){html:not(.static) .stop[data-group=expertise] .panel>.sp-label{display:none}}html.flow-page .panel>.sp-label,html.flow-page .group-head .sp-label{font-size:max(12px, calc(var(--u) * 13px))}.disciplines li{font-size:max(11.5px, calc(var(--u) * 12px))}html.flow-page .sp-button.small{min-height:max(44px, calc(var(--u) * 48px))}.panel.closing .fine{font-size:max(12px, calc(var(--u) * 12px))}.panel.closing nav a{align-items:center;min-height:24px;display:inline-flex}@media (pointer:coarse){.panel.closing nav a{min-height:44px}}.panel.closing>.closing-tag{order:1;margin-bottom:0}.panel.closing>.sp-wordmark{order:2}.panel.closing>.sp-footer-row:not(.fine){order:3}.panel.closing>.fine{order:4}html.flow-page .sp-pos-n{font-size:max(12px, calc(var(--u) * 13px))}html.flow-page .sp-pos button{width:max(32px, calc(var(--u) * 34px));height:max(32px, calc(var(--u) * 34px))}html.static .sp-pos{display:none}@media (width<=370px){.sp-logo img,html.flow-page .sp-logo img{height:20px}}html.static .stop picture{display:contents}@media (width>=861px) and (width<=1000px){html.flow-page .sp-header>nav{gap:8px}}@media (width<=860px){#hardware.stop[data-kind=full]:before{background:linear-gradient(#0000 40%,#07090d40 48%,#07090de6 56%,#07090df5 100%)}}