@font-face{font-family:Archivo;src:url(/_astro/Archivo.DuIT1y7V.ttf)format("truetype");font-weight:100 900;font-stretch:62% 125%;font-display:swap}@font-face{font-family:JetBrains Mono;src:url(/_astro/JetBrainsMono.DtE349c2.ttf)format("truetype");font-weight:100 800;font-display:swap}:root{--bg:oklch(96.5% .006 85);--bg2:oklch(93.5% .008 85);--ink:oklch(16% .01 60);--ink2:oklch(40% .012 60);--mute:oklch(56% .01 60);--rule:oklch(84% .01 70);--card:#fff;--acc:oklch(55% .17 35);--acc2:oklch(50% .17 262);--ok:oklch(55% .14 150)}@media (prefers-color-scheme:dark){:root{--bg:oklch(13% .008 60);--bg2:oklch(16.5% .008 60);--ink:oklch(96% .008 80);--ink2:oklch(78% .01 80);--mute:oklch(58% .01 80);--rule:oklch(30% .01 70);--card:oklch(20% .01 60);--acc:oklch(72% .15 42);--acc2:oklch(72% .14 255);--ok:oklch(72% .14 150)}}body.labs{--acc:oklch(55% .17 35);--acc2:oklch(50% .17 262)}body.orch{--acc:oklch(50% .17 262)}@media (prefers-color-scheme:dark){body.labs{--acc:oklch(72% .15 42);--acc2:oklch(72% .14 255)}body.orch{--acc:oklch(72% .14 255)}}*{box-sizing:border-box}html{scroll-behavior:smooth}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}body{background:var(--bg);color:var(--ink);font-variation-settings:"wdth" 100;-webkit-font-smoothing:antialiased;margin:0;font-family:Archivo,system-ui,sans-serif;line-height:1.5}html.zh body,html.zh .h1,html.zh .h2,html.zh .h3{font-variation-settings:normal;font-family:PingFang SC,Hiragino Sans GB,Microsoft YaHei,Noto Sans SC,sans-serif}a{color:inherit;text-decoration:none}a:hover{color:var(--acc)}.mono{letter-spacing:.14em;text-transform:uppercase;font-family:JetBrains Mono,ui-monospace,monospace;font-size:11px}.wrap{padding-left:max(24px,4vw);padding-right:max(24px,4vw)}.h1{font-variation-settings:"wdth" 118;letter-spacing:-.03em;text-wrap:balance;margin:0;font-size:clamp(40px,5.4vw,92px);font-weight:700;line-height:.9}.h1 em,.h2 em{color:var(--acc);font-variation-settings:"wdth" 75;letter-spacing:0;font-style:normal;font-weight:500}html.zh .h1{letter-spacing:.01em;font-size:clamp(36px,4.8vw,80px);font-weight:700;line-height:1.08}html.zh .h1 em,html.zh .h2 em{font-weight:500}.h2{font-variation-settings:"wdth" 112;letter-spacing:-.025em;text-wrap:balance;margin:0;font-size:clamp(32px,3.8vw,58px);font-weight:700;line-height:.95}html.zh .h2{letter-spacing:.01em;font-size:clamp(28px,3.4vw,50px);line-height:1.15}.h3{font-variation-settings:"wdth" 110;letter-spacing:-.02em;margin:0;font-size:24px;font-weight:600;line-height:1.1}.lead{color:var(--ink2);max-width:46ch;margin:0;font-size:clamp(15px,1.15vw,18px);line-height:1.55}.k{color:var(--acc);margin-bottom:12px;display:block}.p{color:var(--ink2);margin:12px 0 0}.w{opacity:0;display:inline-block}.btn{background:var(--ink);color:var(--bg);letter-spacing:.14em;text-transform:uppercase;padding:13px 20px;font-family:JetBrains Mono,monospace;font-size:11px;display:inline-block}.btn:hover{color:var(--bg);background:var(--acc)}.btn.ghost{color:var(--ink);border:1px solid var(--rule);background:0 0;padding:12px 20px}.btn.ghost:hover{border-color:var(--acc);color:var(--acc)}.brand{align-items:center;gap:10px;display:flex}.brand b{font-variation-settings:"wdth" 125;letter-spacing:-.02em;font-size:19px;font-weight:800}.lang{color:var(--mute);cursor:pointer;letter-spacing:.12em;background:0 0;border:0;align-items:center;gap:6px;padding:6px 0;font-family:JetBrains Mono,monospace;font-size:11px;display:flex}.lang [data-lang-btn]{cursor:pointer}.lang .on{color:var(--ink)}.hero{height:520vh;position:relative}.hero .stage{height:100vh;position:sticky;top:0;overflow:hidden}.hero canvas{width:100%;height:100%;display:block;position:absolute;inset:0}.hero .veil{pointer-events:none;background:linear-gradient(0deg,color-mix(in oklch,var(--bg) 88%,transparent) 0%,color-mix(in oklch,var(--bg) 40%,transparent) 42%,transparent 70%);position:absolute;inset:0}.hero .copy{z-index:3;width:min(46ch,40vw);position:absolute;bottom:max(40px,9vh);left:max(24px,4vw)}.hero .ctas{flex-wrap:wrap;align-items:center;gap:12px;margin-top:28px;display:flex}.hero .lead{margin-top:24px}section.band{border-top:1px solid var(--rule);padding-top:120px;padding-bottom:120px}.head{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);align-items:end;gap:40px;margin-bottom:64px;display:grid}@media (width<=900px){.head{grid-template-columns:1fr}}.tiles{background:var(--rule);border:1px solid var(--rule);grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;display:grid}.tiles .t{background:var(--bg);flex-direction:column;justify-content:flex-start;gap:28px;min-height:200px;padding:26px 24px 28px;display:flex}.tiles .t .h3{font-size:22px}.tiles .t .p{margin:0;font-size:14px}@media (width<=900px){.tiles{grid-template-columns:1fr 1fr}}@media (width<=560px){.tiles{grid-template-columns:1fr}}.cta{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:40px;display:grid}@media (width<=900px){.cta{grid-template-columns:1fr}}footer{border-top:1px solid var(--rule);color:var(--mute);flex-wrap:wrap;justify-content:space-between;gap:16px 32px;padding-top:48px;padding-bottom:48px;display:flex}footer .cols{flex-wrap:wrap;gap:32px;display:flex}footer a:hover{color:var(--ink)}@media (width<=900px){.hero .copy{width:auto;max-width:60ch;bottom:24px;left:20px;right:20px}}@media (prefers-reduced-motion:reduce){.w{opacity:1;transform:none}}body.labs{--rail:200px}.rail{width:var(--rail);z-index:20;border-right:1px solid var(--rule);background:color-mix(in srgb,var(--bg) 88%,transparent);flex-direction:column;justify-content:space-between;padding:26px 28px 24px;display:flex;position:fixed;top:0;bottom:0;left:0}.rail .brand{align-items:center;gap:10px;line-height:1;display:flex}.rail .brand .mono{color:var(--mute)}.rail nav{letter-spacing:.14em;gap:14px;font-size:11px;display:grid}.rail nav a{color:var(--mute);padding-left:18px;transition:color .3s;position:relative}.rail nav a:before{content:"";background:var(--rule);border-radius:50%;width:6px;height:6px;margin-top:-3px;transition:background .3s,transform .3s;position:absolute;top:50%;left:0}.rail nav a.on{color:var(--ink)}.rail nav a.on:before{background:var(--acc);transform:scale(1.3)}.rail nav a:hover{color:var(--ink)}.rail .foot{color:var(--mute);gap:12px;display:grid}.rail .foot .lang{gap:8px;display:flex}.rail .foot [data-lang-btn]{cursor:pointer}.rail .foot .on{color:var(--ink)}.rail .foot a{color:var(--ink);border-bottom:1px solid var(--rule);width:max-content;padding-bottom:2px}.rail .foot a:hover{color:var(--acc);border-color:var(--acc)}.dim{color:var(--mute)}.page{margin-left:var(--rail)}.page .band{border-top:1px solid var(--rule);max-width:1180px;padding:112px clamp(24px,6vw,96px)}.page .band .head{margin-bottom:48px}.page footer{margin:0;padding:40px clamp(24px,6vw,96px)}.hero .copy{width:min(44ch,38vw);left:clamp(24px,6vw,96px)}.creed{border-top:1px solid var(--rule);margin:40px 0 0;padding:0;list-style:none}.creed li{border-bottom:1px solid var(--rule);grid-template-columns:120px 1fr;gap:32px;padding:40px 0;display:grid}.creed .num{font-variation-settings:"wdth" 75;color:var(--acc);letter-spacing:-.02em;font-size:clamp(40px,5vw,72px);font-weight:500;line-height:.9}.creed .h3{max-width:28ch;font-size:clamp(22px,2.2vw,32px)}.creed .p{max-width:64ch;font-size:16px}.projects{grid-template-columns:1fr 1fr;gap:24px;display:grid}.proj{border:1px solid var(--rule);background:var(--card);border-radius:8px;grid-template-rows:260px auto;transition:border-color .3s;display:grid;position:relative;overflow:hidden}.proj .spec{background:var(--bg2);width:100%;height:260px;display:block}.proj .txt{align-content:start;gap:14px;padding:26px 28px 28px;display:grid}.proj.mem:hover{border-color:var(--acc)}.proj.orch:hover{border-color:var(--acc2)}.proj .k{margin:0}.proj.orch .k,.proj.orch .go{color:var(--acc2)}.proj.mem .go{color:var(--acc)}.proj .h2{font-size:clamp(24px,2.2vw,34px)}.proj .p{max-width:44ch;font-size:15px}.proj .go{cursor:pointer;margin-top:6px}.proj .go:hover{text-decoration:underline}@media (width<=1000px){.projects{grid-template-columns:1fr}}.repos{background:var(--rule);border:1px solid var(--rule);gap:1px;display:grid}.repo{background:var(--bg);flex-wrap:wrap;justify-content:space-between;gap:16px;padding:20px 22px;display:flex}.repo:hover{background:var(--bg2);color:inherit}@media (width<=900px){body.labs{--rail:0px}.rail{border-right:0;border-bottom:1px solid var(--rule);flex-direction:row;align-items:center;width:auto;height:52px;padding:0 16px;position:fixed;top:0;bottom:auto;right:0}.rail nav{scrollbar-width:none;gap:14px;margin:0 14px;display:flex;overflow-x:auto}.rail nav a{white-space:nowrap;padding-left:0}.rail nav a:before{display:none}.rail nav a.on{color:var(--acc)}.rail .foot{grid-auto-flow:column;gap:14px}.rail .foot a{border:0}.page .band{padding:72px 20px}.hero .copy{width:auto;left:20px;right:20px}.creed li{grid-template-columns:1fr;gap:10px}}.questions{gap:0;margin:0;padding:0;list-style:none;display:grid}.questions li{grid-template-columns:64px 1fr;align-items:start;gap:24px;padding:36px 0 40px;display:grid;position:relative}.questions li:nth-child(2n){padding-left:clamp(0px,8vw,120px)}.questions li .mono{color:var(--acc);padding-top:12px}.questions li:nth-child(n+3) .mono{color:var(--acc2)}.questions h3{font-variation-settings:"wdth" 108;letter-spacing:-.025em;text-wrap:balance;max-width:24ch;margin:0;font-size:clamp(26px,3.4vw,46px);font-weight:600;line-height:1.02}.questions .p{grid-column:2;max-width:56ch;margin-top:12px;font-size:15px}.questions li i{background:var(--rule);transform-origin:0;height:1px;position:absolute;bottom:0;left:0;right:0;transform:scaleX(0)}.roster{border-top:1px solid var(--rule);margin:0;padding:0;list-style:none}.roster li{border-bottom:1px solid var(--rule);grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);align-items:start;gap:32px;padding:30px 0;transition:padding-left .4s cubic-bezier(.16,1,.3,1);display:grid}.roster li:hover{padding-left:16px}.roster b{font-variation-settings:"wdth" 118;letter-spacing:-.035em;font-size:clamp(40px,5.2vw,72px);font-weight:700;line-height:.95;transition:color .3s}.roster li:hover b{color:var(--acc)}.roster .who{gap:10px;display:grid}.roster .who a{width:max-content}.roster .mono{color:var(--mute)}.roster .p{max-width:46ch;margin-top:10px;font-size:16px}.roster a{color:var(--ink2);border-bottom:1px solid var(--rule)}.roster a:hover{color:var(--acc);border-color:var(--acc)}@media (width<=900px){.questions li{grid-template-columns:44px 1fr;padding:26px 0 30px}.questions li:nth-child(2n){padding-left:0}.questions h3{font-size:24px}.questions .p{font-size:14px}.roster li{grid-template-columns:1fr;gap:10px;padding:22px 0}.roster b{font-size:36px}.roster li:hover{padding-left:0}}@media (width<=1200px){body.labs{--rail:150px}.rail{padding:22px 18px}}.questions li{cursor:pointer}.questions .p{opacity:0;max-height:0;margin-top:0;transition:max-height .5s cubic-bezier(.16,1,.3,1),opacity .4s,margin-top .4s;overflow:hidden}.questions li.open .p{opacity:1;max-height:12em;margin-top:12px}.questions li.open h3{color:var(--acc)}.questions li:nth-child(n+3).open h3{color:var(--acc2)}.questions li:after{content:"+";color:var(--mute);font-family:JetBrains Mono,monospace;transition:transform .4s;position:absolute;top:36px;right:0}.questions li.open:after{color:var(--ink);transform:rotate(45deg)}.creed li{cursor:pointer;transition:background .3s}.creed li:hover{background:color-mix(in srgb,var(--ink) 3%,transparent)}.creed li .num{transition:transform .5s cubic-bezier(.16,1,.3,1),color .3s}.creed li:hover .num{transform:translate(8px)}.proj .spec{transition:transform .6s cubic-bezier(.16,1,.3,1)}.proj:hover .spec{transform:scale(1.04)}.proj .go{align-items:center;gap:8px;display:inline-flex}.proj .go:after{content:"→";transition:transform .3s}.proj:hover .go:after{transform:translate(6px)}.roster b{cursor:pointer;position:relative}.toast{z-index:30;background:var(--ink);width:max-content;color:var(--bg);letter-spacing:.12em;text-transform:uppercase;opacity:0;pointer-events:none;border-radius:3px;margin-inline:auto;padding:10px 16px;font-family:JetBrains Mono,monospace;font-size:11px;position:fixed;bottom:28px;left:0;right:0;transform:translateY(20px)}.rail nav a{cursor:pointer}@media (width<=900px){.questions li:after{top:26px}}.creed li.dim{opacity:.45!important}
