.c9 .vz-ico{background:var(--neutral);width:clamp(26px,2.4vw,34px);height:clamp(26px,2.4vw,34px);color:var(--dark);border-radius:9px;flex:none;justify-content:center;align-items:center;display:inline-flex}.c9 .vz-ico svg{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:55%;height:55%}.c9 .sw9-win{background:#fff;border-radius:20px;overflow:hidden;box-shadow:0 1px 2px #2e2e380d,0 24px 56px -24px #2e2e3847}.c9 .sw9-win .hd{border-bottom:1px solid var(--line);align-items:center;gap:12px;padding:16px 18px;display:flex}.c9 .sw9-win .hd .vz-ico{background:var(--dark);color:#fff;border-radius:10px;place-items:center;width:32px;height:32px;display:grid}.c9 .sw9-win .hd .vz-ico svg{width:18px;height:18px}.c9 .sw9-win .hd b{font-family:var(--font-display);font-weight:500;font-size:var(--t-ui);color:var(--dark)}.c9 .sw9-win .hd .tag{color:var(--gray);margin-left:auto;font-size:12px}.c9 .sw9-row{font-family:var(--font-display);font-weight:500;font-size:var(--t-ui);color:var(--dark);align-items:center;gap:12px;display:flex}.c9 .sw9-row .vz-ico{width:30px;height:30px;color:var(--green-ink);background:#7ebbae3d;border-radius:9px;place-items:center;display:grid}.c9 .sw9-row .vz-ico svg{width:16px;height:16px}.c9 .sw9-row .ok{background:var(--green-ink);color:#fff;border-radius:50%;flex:none;place-items:center;width:20px;height:20px;margin-left:auto;display:grid}.c9 .sw9-row .ok svg{fill:none;stroke:currentColor;stroke-width:2.4px;stroke-linecap:round;stroke-linejoin:round;width:12px;height:12px}.c9 .k2-intro{padding:calc(var(--header) + clamp(14px,1.6vw,20px)) 0 var(--s-section-m)}.c9 .k2-intro .display{grid-column:1/-1;max-width:none;margin-top:clamp(56px,8vw,120px)}.c9 .k2-intro-text{margin-top:clamp(40px,4.6vw,64px)}.c9 .k2-intro-text .lead{max-width:560px}.c9 .k2-intro .cta-group{margin-top:36px}@media (min-width:640px){.c9 .k2-intro .cta-group{flex-flow:row}.c9 .k2-intro .cta{width:auto}}@media (min-width:1024px){.c9 .k2-intro .display{grid-column:1/11}.c9 .k2-intro-text{grid-column:1/8}}.c9 .ki-head{align-items:start;row-gap:24px}.c9 .ki-head .txt .body{max-width:560px}.c9 .ki-head .txt-acts{margin-top:28px}@media (min-width:1024px){.c9 .ki-head>.h1{grid-column:1/7}.c9 .ki-head>.txt{grid-column:7/13}}.c9{--lav:#957dba;--lav-tint:#957dba29;--lav-ink:#6e5a93;--lav-solid:#e3dfe9}.c9 .k2-intro{padding-bottom:var(--s-section-s)}@media (min-width:1024px){.c9 .k2-intro .grid{align-items:center}.c9 .k2-left{grid-column:1/7}.c9 .k2-left .display{margin-top:clamp(40px,5vw,72px)}}.c9 .k2-left .k2-intro-text{margin-top:clamp(28px,3.2vw,44px)}.c9 .hm-ks{background:var(--ink);color:#fff;padding:var(--s-section-m) 0}.c9 .hm-ks-grid{align-items:start;row-gap:40px}.c9 .hm-ks-head,.c9 .hm-ks-q{grid-column:1/-1}.c9 .hm-ks-head .h1{color:#fff}.c9 .hm-ks-head .h1 em{color:var(--lav);font-style:normal}.c9 .hm-ks-rating{margin-top:28px}.c9 .hm-ks-rating b,.c9 .hm-ks-rating>span:not(.stars){color:var(--on-dark)}.c9 .hm-ks-q{margin:0}.c9 .hm-ks-panel{transition:transform .5s var(--ease),opacity .5s var(--ease)}.c9 .hm-ks-panel.off-l{opacity:0;transform:translate(-40px)}.c9 .hm-ks-panel.off-r{opacity:0;transform:translate(40px)}.c9 .hm-ks-panel.instant{transition:none}.c9 .hm-ks-q blockquote{font-family:var(--font-display);color:#fff;margin:0;font-weight:500}.c9 .hm-ks-q .q-xl{letter-spacing:-.025em;font-size:clamp(28px,3vw,42px);line-height:1.15}.c9 .hm-ks-q .q-l{letter-spacing:-.02em;font-size:clamp(23px,2.4vw,34px);line-height:1.22}.c9 .hm-ks-q .q-m{letter-spacing:-.01em;font-size:clamp(19px,1.8vw,24px);line-height:1.42}.c9 .hm-ks-who{flex-direction:column;gap:2px;margin-top:28px;display:flex}.c9 .hm-ks-who b{font-weight:500;font-size:var(--t-ui);color:#fff}.c9 .hm-ks-who span{font-size:var(--t-small);color:var(--on-dark-muted)}.c9 .hm-ks-nav{border-top:1px solid #ffffff24;align-items:center;gap:8px;margin-top:40px;padding-top:24px;display:flex}.c9 .hm-ks-nav .q-count{color:var(--on-dark-muted)}.c9 .hm-ks .ic.sm{border-color:#ffffffb3}.c9 .hm-ks .ic.sm svg{color:#fff}.c9 .hm-ks .ic.sm.go:hover{background:#fff;border-color:#fff}.c9 .hm-ks .ic.sm.go:hover svg{color:var(--ink)}@media (min-width:1024px){.c9 .hm-ks-head{grid-column:1/5}.c9 .hm-ks-q{grid-column:6/13}}@media (prefers-reduced-motion:reduce){.c9 .hm-ks-panel{transition:none}.c9 .hm-ks-panel.off-l,.c9 .hm-ks-panel.off-r{opacity:1;transform:none}}.c9 .ue-intro .k2-left,.c9 .ue-intro .k2-intro-text{grid-column:1/-1}.c9 .ue-intro .display{max-width:16ch}.c9 .ue-facts{border-top:1px solid var(--line);border-bottom:1px solid var(--line);grid-template-columns:repeat(2,minmax(0,1fr));row-gap:20px;margin:clamp(48px,5vw,72px) 0 0;padding:0 0 20px;list-style:none;display:grid}.c9 .ue-facts li{flex-direction:column;gap:4px;padding-top:20px;display:flex}.c9 .ue-facts span{color:var(--gray);font-size:13px}.c9 .ue-facts b{font-family:var(--font-display);color:var(--dark);letter-spacing:-.01em;font-size:clamp(18px,1.5vw,21px);font-weight:500}@media (min-width:900px){.c9 .ue-facts{grid-template-columns:repeat(4,minmax(0,1fr))}.c9 .ue-facts li+li{border-left:1px solid var(--line);margin-top:20px;padding-top:0;padding-left:24px}.c9 .ue-facts li:first-child{margin-top:20px;padding-top:0}}.c9 .ue-mono{width:100%;height:100%;font-family:var(--font-display);letter-spacing:-.02em;color:var(--lav-ink);background:var(--lav-solid);place-items:center;font-size:clamp(44px,4vw,60px);font-weight:500;display:grid}.c9 .ue-role{font-size:var(--t-small);color:var(--gray);margin-top:6px;line-height:1.45}.c9 .ue-tags{flex-wrap:wrap;gap:6px;margin:16px 0 0;padding:0;list-style:none;display:flex}.c9 .ue-tags li{color:var(--dark);background:#fff;border-radius:999px;padding:7px 10px;font-size:12px;line-height:1}.c9 .ue-kind{letter-spacing:.06em;text-transform:uppercase;color:var(--gray);font-size:12px}.c9 .be-flow{--bleed:8px;padding:0}@media (min-width:640px){.c9 .be-flow{--bleed:12px}}@media (min-width:1024px){.c9 .be-flow{--bleed:20px}}.c9 .be-flow-surf{background:var(--flow-bg,var(--neutral));margin:0 var(--bleed);border-radius:var(--r-l,28px);padding:clamp(72px,9vw,136px) 0}.c9 .bmk{--e:cubic-bezier(.22,1,.36,1);--d:0s;width:100%;max-width:290px}.c9 .bmk .hd{gap:10px;padding:12px 14px}.c9 .bmk .hd .vz-ico{border-radius:9px;width:28px;height:28px}.c9 .bmk .hd .vz-ico svg{width:16px;height:16px}.c9 .bmk .hd b{font-size:15px}.c9 .bmk .bd{padding:12px 14px 14px}.c9 .bmk ul{gap:8px;margin:0;padding:0;list-style:none;display:grid}.c9 .bmk li.sw9-row{gap:10px;font-size:14px}.c9 .bmk li.sw9-row .vz-ico{border-radius:8px;width:26px;height:26px}.c9 .bmk li.sw9-row .vz-ico svg{width:14px;height:14px}.c9 .bmk li.sw9-row .ok{width:18px;height:18px}@media (prefers-reduced-motion:no-preference){.c9 .pk9js .bmk:not(.go){opacity:0}.c9 .bmk.go{animation:bkUp .55s var(--e) var(--d) both}.c9 .bmk.go .ok{animation:.4s cubic-bezier(.3,1.5,.5,1) both bkPop}.c9 .bmk.go .c0 .ok{animation-delay:calc(var(--d) + .45s)}.c9 .bmk.go .c1 .ok{animation-delay:calc(var(--d) + .75s)}.c9 .bmk.go .c2 .ok{animation-delay:calc(var(--d) + 1.05s)}}@keyframes bkUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@keyframes bkPop{0%{opacity:0;transform:scale(.6)}to{opacity:1;transform:none}}.c9 .ue-page .vz-ico{background:var(--neutral);color:var(--dark);border-radius:9px;flex:none;justify-content:center;align-items:center;display:inline-flex}.c9 .ue-page .vz-ico svg{fill:none;stroke:currentColor;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;width:55%;height:55%}.c9 .ue-page .sw9-win{background:#fff;border-radius:20px;overflow:hidden;box-shadow:0 1px 2px #2e2e380d,0 24px 56px -24px #2e2e3847}.c9 .ue-page .sw9-win .hd{border-bottom:1px solid var(--line);align-items:center;gap:12px;padding:16px 18px;display:flex}.c9 .ue-page .sw9-win .hd .vz-ico{background:var(--dark);color:#fff;place-items:center;display:grid}.c9 .ue-page .sw9-win .hd b{font-family:var(--font-display);font-weight:500;font-size:var(--t-ui);color:var(--dark)}.c9 .ue-page .sw9-row{font-family:var(--font-display);font-weight:500;font-size:var(--t-ui);color:var(--dark);align-items:center;gap:12px;display:flex}.c9 .ue-page .sw9-row .vz-ico{color:var(--green-ink);background:#7ebbae3d;place-items:center;display:grid}.c9 .ue-page .sw9-row .ok{background:var(--green-ink);color:#fff;border-radius:50%;flex:none;place-items:center;width:20px;height:20px;margin-left:auto;display:grid}.c9 .ue-page .sw9-row .ok svg{fill:none;stroke:currentColor;stroke-width:2.4px;stroke-linecap:round;stroke-linejoin:round;width:12px;height:12px}.c9 .ue-page .txt .txt-acts{margin-top:20px}.c9 .ue-page{scroll-margin-top:40px}.c9 .ue-team2{padding:var(--s-section-m) 0;scroll-margin-top:40px}.c9 .ue-roster{margin-top:var(--s-head,clamp(48px,6vw,88px));align-items:start;row-gap:32px}.c9 .ue-roster-l,.c9 .ue-stage{grid-column:1/-1}.c9 .ue-tabs{border-top:1px solid var(--line-strong);margin:0;padding:0;list-style:none}.c9 .ue-tab{all:unset;box-sizing:border-box;border-bottom:1px solid var(--line);cursor:pointer;grid-template-columns:44px 1fr;column-gap:8px;width:100%;padding:20px 0;display:grid}.c9 .ue-tab:focus-visible{outline:2px solid var(--dark);outline-offset:4px}.c9 .ue-tab-n{color:var(--gray);font-variant-numeric:tabular-nums;grid-row:1/3;padding-top:10px;font-size:12px}.c9 .ue-tab-name{font-family:var(--font-display);letter-spacing:-.02em;color:#b5b5bb;transition:color .3s var(--ease),transform .3s var(--ease);font-size:clamp(26px,2.6vw,38px);font-weight:500;line-height:1.12}.c9 .ue-tab-role{font-size:var(--t-small);color:var(--gray);opacity:0;max-height:0;transition:max-height .35s var(--ease),opacity .3s var(--ease);margin-top:6px;overflow:hidden}.c9 .ue-tab:hover .ue-tab-name,.c9 .ue-tab[aria-selected=true] .ue-tab-name{color:var(--dark)}.c9 .ue-tab[aria-selected=true] .ue-tab-n{color:var(--green-ink)}.c9 .ue-tab[aria-selected=true] .ue-tab-role{opacity:1;max-height:3em}.c9 .ue-roster-note{font-size:var(--t-small);color:var(--gray);max-width:36ch;margin-top:28px}.c9 .ue-roster-l>.act{margin-top:14px}.c9 .ue-stage{display:grid;position:relative}.c9 .ue-panel{border-radius:var(--r-l);background:var(--neutral);opacity:0;visibility:hidden;transition:opacity .35s var(--ease),visibility 0s linear .35s;grid-area:1/1;grid-template-columns:1fr;gap:0;padding:10px;scroll-margin-top:110px;display:grid}.c9 .ue-panel.on{opacity:1;visibility:visible;transition:opacity .35s var(--ease)}.c9 .ue-ph{aspect-ratio:4/5;border-radius:calc(var(--r-l) - 6px);background:#e6e6e6;overflow:hidden}.c9 .ue-ph img{object-fit:cover;object-position:50% 30%;width:100%;height:100%;transition:transform .7s var(--ease);display:block;transform:scale(1.04)}.c9 .ue-panel.on .ue-ph img{transform:none}.c9 .ue-pt{flex-direction:column;padding:clamp(20px,2vw,32px) clamp(14px,1.6vw,24px) clamp(16px,1.6vw,22px);display:flex}.c9 .ue-pn{font-family:var(--font-display);letter-spacing:-.015em;color:var(--dark);font-size:clamp(24px,2vw,28px);font-weight:500}.c9 .ue-pt .body{color:var(--ink);margin-top:16px}.c9 .ue-pt .ue-tags{margin-top:20px}.c9 .ue-pt>.act{margin-top:auto;padding-top:24px}@media (min-width:1024px){.c9 .ue-roster-l{top:calc(var(--header) + 32px);grid-column:1/6;position:sticky}.c9 .ue-stage{grid-column:7/-1}.c9 .ue-panel{grid-template-columns:minmax(0,5fr) minmax(0,6fr)}.c9 .ue-ph{aspect-ratio:auto;min-height:440px}.c9 .ue-pn{display:none}.c9 .ue-pt{padding:clamp(24px,2.4vw,36px) clamp(20px,2vw,30px)}}@media (max-width:1023px){.c9 .ue-tabs,.c9 .ue-roster-note{display:none}.c9 .ue-roster-l{order:2}.c9 .ue-stage{scroll-snap-type:x mandatory;scrollbar-width:none;gap:12px;margin:0 -20px;padding:0 20px;scroll-padding-left:20px;display:flex;overflow-x:auto}.c9 .ue-stage::-webkit-scrollbar{display:none}.c9 .ue-panel{opacity:1;visibility:visible;scroll-snap-align:start;flex:0 0 min(84%,420px)}.c9 .ue-ph img{transform:none}}@media (prefers-reduced-motion:reduce){.c9 .ue-panel,.c9 .ue-ph img,.c9 .ue-tab-name,.c9 .ue-tab-role{transition:none}}.c9 .ue-work{padding:var(--s-section-m) 0}.c9 .ue-work .txt .txt-acts,.c9 .ue-built2 .txt .txt-acts{margin-top:20px}.c9 .ue-work-cards{margin:var(--s-head,clamp(48px,6vw,88px)) 0 0;grid-template-columns:1fr;gap:clamp(14px,1.4vw,20px);padding:0;list-style:none;display:grid}@media (min-width:900px){.c9 .ue-work-cards{grid-template-columns:repeat(3,minmax(0,1fr))}}.c9 .ue-work-cards>li{border-radius:var(--r-m);background:var(--neutral);padding:clamp(24px,2.2vw,32px)}.c9 .ue-vis{justify-content:center;align-items:center;min-height:220px;margin-bottom:28px;display:flex}.c9 .ue-vis .bmk{max-width:280px}.c9 .ue-work-cards .body-s{color:var(--ink);margin-top:10px}.c9 .ue-av{object-fit:cover;border-radius:50%;flex:none;width:26px;height:26px}.c9 .bmk .hd .ue-av{width:28px;height:28px}.c9 .ue-ph-l{flex:1}.c9 .bmk li.sw9-row{background:var(--neutral);border-radius:10px;padding:8px 10px}.c9 .ue-ap{color:var(--gray);font-size:11px;font-family:var(--font-body);flex:none;width:46px;font-weight:400}.c9 .ue-ap+span{flex:1}.c9 .ue-fp,.c9 .ue-mit{color:var(--green-ink);background:#7ebbae3d;border-radius:999px;margin-left:auto;padding:4px 9px;font-size:11px;font-style:normal;font-weight:600}.c9 .ue-repo{flex:1;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;font-weight:400}.c9 .ue-gh{fill:currentColor;stroke:none;width:16px;height:16px}.c9 .ue-page .bmk .hd .vz-ico .ue-gh{fill:#fff;width:16px;height:16px}@media (prefers-reduced-motion:no-preference){.c9 .pk9js .bmk:not(.go) .sw9-row{opacity:0}.c9 .bmk.go .sw9-row{animation:bkUp .5s var(--e) both}.c9 .bmk.go .c1{animation-delay:.15s}.c9 .bmk.go .c2{animation-delay:.3s}.c9 .bmk.go .ue-fp{animation:.4s cubic-bezier(.3,1.5,.5,1) .9s both bkPop}}.c9 .ue-built2{scroll-margin-top:40px}.c9 .ue-prods,.c9 .ue-repos{grid-template-columns:1fr;gap:clamp(14px,1.4vw,20px);margin:0;padding:0;list-style:none;display:grid}.c9 .ue-prods{margin-top:var(--s-head,clamp(48px,6vw,88px))}.c9 .ue-repos{margin-top:clamp(14px,1.4vw,20px)}@media (min-width:800px){.c9 .ue-prods,.c9 .ue-repos{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1100px){.c9 .ue-repos{grid-template-columns:repeat(3,minmax(0,1fr))}}.c9 .ue-prod-a,.c9 .ue-repo-c>a{border-radius:var(--r-m);height:100%;color:inherit;transition:box-shadow .3s var(--ease),transform .3s var(--ease);background:#fff;flex-direction:column;text-decoration:none;display:flex}.c9 .ue-prod-a:hover,.c9 .ue-repo-c>a:hover{box-shadow:0 22px 44px -30px #2e2e3859}.c9 .ue-prod-a{padding:10px 10px clamp(22px,2vw,28px)}.c9 .ue-shot{aspect-ratio:16/10;border-radius:calc(var(--r-m) - 6px);background:var(--neutral);display:block;overflow:hidden}.c9 .ue-shot img{object-fit:cover;object-position:top left;width:100%;height:100%;transition:transform .6s var(--ease);display:block}.c9 .ue-prod-a:hover .ue-shot img{transform:scale(1.02)}.c9 .ue-prod-a>.ue-kind,.c9 .ue-prod-a>.ue-prod-t,.c9 .ue-prod-a>.body-s,.c9 .ue-prod-a>.act{padding:0 clamp(12px,1.4vw,18px)}.c9 .ue-prod-a>.ue-kind{margin-top:22px}.c9 .ue-prod-t{font-family:var(--font-display);letter-spacing:-.015em;color:var(--dark);margin-top:8px;font-size:clamp(24px,2vw,28px);font-weight:500;display:block}.c9 .ue-prod-a>.body-s,.c9 .ue-repo-c .body-s{color:var(--ink);max-width:52ch;margin-top:10px;display:block}.c9 .ue-prod-a>.act,.c9 .ue-repo-c .act{margin-top:auto;padding-top:22px}.c9 .ue-repo-c>a{padding:clamp(20px,1.8vw,26px)}.c9 .ue-repo-hd{color:var(--gray);align-items:center;gap:8px;min-width:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;display:flex}.c9 .ue-repo-hd>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.c9 .ue-repo-hd b{color:var(--dark);font-weight:500}.c9 .ue-repo-hd .ue-gh{color:var(--dark)}.c9 .ue-repo-t{font-family:var(--font-display);font-weight:500;font-size:var(--t-card,20px);color:var(--dark);margin-top:18px;display:block}.c9 .ue-repo-c .ue-tags{flex-wrap:wrap;gap:6px;margin-top:16px;display:flex}.c9 .ue-repo-c .ue-tags i{background:var(--neutral);color:var(--dark);border-radius:999px;padding:7px 10px;font-size:12px;font-style:normal;line-height:1}.c9 .ue-repo-c .ue-tags i.mit{color:var(--green-ink);background:#7ebbae3d;font-weight:600}.c9 .ue-built2+.cta-sec,.c9 .ue-page+.cta-sec{margin-top:var(--s-section-s)}@media (min-width:640px) and (max-width:1023px){.c9 .ue-stage{margin:0 -32px;padding:0 32px;scroll-padding-left:32px}}.c9 .ue-stage,.c9 .ue-roster-l,.c9 .ue-repos>li,.c9 .ue-prods>li,.c9 .ue-repo-c>a{min-width:0}.c9 .ue-stack .txt{max-width:640px;margin-top:clamp(20px,2vw,28px)}.c9 .ue-stack .h1{max-width:18ch}.c9 .ue-ph img,.c9 .ue-av{filter:grayscale()}.c9 .ue-pn{line-height:1.6}
