@import"https://fonts.googleapis.com/css2?family=DM+Mono:wght@300;400;500&family=Noto+Sans+SC:wght@300;400;500;600&family=Playfair+Display:ital,wght@0,500;0,700;0,800;1,600;1,700;1,800&display=swap";:root{font-family:Playfair Display,Times New Roman,serif;color:#f0f0ed;background:#080808;font-synthesis:none;text-rendering:geometricPrecision;--black: #080808;--white: #f0f0ed;--paper: #e9e8e2;--gray: #888884;--accent: #ffff00;--mono: "DM Mono", "Courier New", monospace;--cn: "Noto Sans SC", sans-serif;--line-dark: rgba(255,255,255,.16);--line-light: rgba(8,8,8,.18)}*{box-sizing:border-box}html{background:var(--black)}html.lenis,html.lenis body{height:auto}.lenis.lenis-smooth{scroll-behavior:auto!important}.lenis.lenis-stopped{overflow:hidden}body{margin:0;min-width:320px;min-height:100vh;color:var(--white);background:var(--black);overflow-x:hidden;-webkit-font-smoothing:antialiased}body:before{content:"";position:fixed;z-index:-1;inset:0;pointer-events:none;background-image:linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px);background-size:40px 40px}a{color:inherit;text-decoration:none}img{display:block;max-width:100%}::selection{color:#000;background:var(--accent)}.site-shell{overflow:clip}.has-custom-cursor body,.has-custom-cursor a{cursor:none!important}.orbit-cursor{position:fixed;z-index:9999;top:0;left:0;width:100px;height:100px;opacity:0;mix-blend-mode:difference;pointer-events:none;will-change:transform;transition:opacity .2s ease}.orbit-cursor.is-visible{opacity:1}.orbit-cursor__letters{position:absolute;inset:0;animation:cursor-spin 10s linear infinite;transition:transform .3s cubic-bezier(.175,.885,.32,1.275)}.orbit-cursor__letters span{position:absolute;top:50%;left:50%;color:#ffffff7a;font:500 8px/1 var(--mono);transform:translate(-50%,-50%) rotate(calc(var(--letter-index) * 360deg / var(--letter-count))) translateY(-38px);transform-origin:center;transition:color .3s,opacity .3s}.orbit-cursor__core{position:absolute;top:50%;left:50%;width:34px;height:34px;display:grid;place-items:center;border-radius:50%;color:#080808;background:#8d8d89;transform:translate(-50%,-50%);transition:width .3s cubic-bezier(.175,.885,.32,1.275),height .3s cubic-bezier(.175,.885,.32,1.275),color .3s,background .3s}.orbit-cursor__core:after{font:500 6px/1 var(--mono);letter-spacing:.05em}.orbit-cursor[data-mode=open] .orbit-cursor__letters,.orbit-cursor[data-mode=view] .orbit-cursor__letters{transform:scale(1.34)}.orbit-cursor[data-mode=open] .orbit-cursor__letters span,.orbit-cursor[data-mode=view] .orbit-cursor__letters span{color:var(--accent);opacity:1}.orbit-cursor[data-mode=open] .orbit-cursor__core,.orbit-cursor[data-mode=view] .orbit-cursor__core{width:42px;height:42px;color:#000;background:var(--accent)}.orbit-cursor[data-mode=open] svg,.orbit-cursor[data-mode=view] svg{display:none}.orbit-cursor[data-mode=open] .orbit-cursor__core:after{content:"OPEN"}.orbit-cursor[data-mode=view] .orbit-cursor__core:after{content:"VIEW"}.orbit-cursor.is-pressed .orbit-cursor__core{width:29px;height:29px}@keyframes cursor-spin{to{transform:rotate(360deg)}}.fixed-logo{position:fixed;z-index:100;top:38px;left:4%;color:#fff;mix-blend-mode:difference;font-size:15px;font-weight:800;letter-spacing:-.025em}.side-nav{position:fixed;z-index:100;top:50%;right:4%;display:flex;flex-direction:column;gap:20px;mix-blend-mode:difference;transform:translateY(-50%)}.side-nav a{position:relative;padding-right:20px;color:#fff;opacity:.38;text-align:right;font:400 10px/1 var(--mono);letter-spacing:.1em;transition:opacity .3s,color .3s,transform .3s}.side-nav a:after{content:"";position:absolute;top:50%;right:0;width:6px;height:6px;border-radius:50%;background:var(--accent);transform:translateY(-50%) scale(0);transition:transform .3s}.side-nav a:hover,.side-nav a.active{color:var(--accent);opacity:1;transform:translate(-5px)}.side-nav a.active:after{transform:translateY(-50%) scale(1)}.hero{min-height:100svh;padding:108px 4% 48px;display:flex;flex-direction:column;justify-content:center}.hero-meta{position:absolute;z-index:2;top:60px;right:5%;color:#898985;text-align:right;font:400 10px/1.5 var(--mono);letter-spacing:.06em}.hero-3d-scene{perspective:1500px;-webkit-user-select:none;user-select:none}.hero-3d-text{transform-style:preserve-3d;will-change:transform}.hero-line{display:block;margin-bottom:-.1em;white-space:nowrap;font-size:clamp(3.5rem,13vw,12rem);font-style:italic;font-weight:800;line-height:.9;letter-spacing:-.055em;text-transform:uppercase}.hero-line.outline{color:transparent;-webkit-text-stroke:1px rgba(240,240,237,.62)}.hero-char-wrap{display:inline-block;transform-style:preserve-3d}.hero-char{display:inline-block;backface-visibility:hidden;transform-origin:50% 100%;will-change:transform,opacity,filter}.anim-line{width:100%;height:1px;margin:30px 0;background:var(--accent);transform-origin:left center}.hero-bottom{display:flex;align-items:flex-end;justify-content:space-between;gap:40px}.hero-bottom a{display:flex;align-items:center;gap:20px;color:#81817d;font:400 10px/1.4 var(--mono)}.hero-bottom a:hover{color:var(--accent)}.hero-bottom p{max-width:500px;margin:0;color:#ccc;font-family:var(--cn);font-size:14px;font-weight:300;line-height:1.8}.capabilities{padding:140px 4%;background:#080808}.capabilities>header{display:flex;justify-content:space-between;margin-bottom:40px}.capabilities>header span,.capabilities>header h2,.chapter-heading>span,.statement-section span,.laboratory header>span{margin:0;color:#888;font:400 10px/1.4 var(--mono);letter-spacing:.06em}.capability-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;border-top:1px solid #333;background:#222}.capability-grid article{min-height:320px;padding:58px 40px;display:flex;flex-direction:column;justify-content:space-between;background:#080808;transition:background .35s}.capability-grid article:hover{background:#111}.capability-grid article>span{color:var(--accent);font:500 10px/1 var(--mono)}.capability-grid h3{margin:auto 0 25px;font-size:clamp(28px,3vw,43px);font-weight:500;line-height:1.08;letter-spacing:-.035em}.capability-grid p{max-width:340px;margin:0;color:#888;font-family:var(--cn);font-size:12px;font-weight:300;line-height:1.8}.statement-section{width:100%;height:100svh;padding:0;display:flex;align-items:center;justify-content:center;perspective:1000px;background:#050505;overflow:hidden}.statement-wrapper{position:relative;width:100%;height:100%;display:flex;align-items:center;justify-content:center;transform-style:preserve-3d}.bg-scroll-text{position:absolute;z-index:1;top:50%;left:0;color:#111;white-space:nowrap;pointer-events:none;font-size:20vw;font-weight:900;line-height:.8;transform:translateY(-50%);will-change:transform}.statement-portal{position:absolute;z-index:2;top:50%;left:50%;width:40vw;height:40vw;border:2px solid var(--accent);border-radius:50%;opacity:.5;pointer-events:none;transform:translate(-50%,-50%) scale(0);will-change:transform,opacity}.statement-portal:before{content:"";position:absolute;top:50%;left:50%;width:140%;height:140%;border:1px solid rgba(255,255,0,.3);border-radius:50%;transform:translate(-50%,-50%)}.fg-static-text{position:relative;z-index:10;max-width:820px;padding:0 5%;text-align:center;will-change:transform,opacity}.fg-static-text h2{margin:22px 0 24px;font-size:clamp(40px,6vw,82px);font-weight:700;line-height:1.04;letter-spacing:-.04em}.fg-static-text p{max-width:480px;margin:0 auto;color:#888;font:300 12px/1.9 var(--cn)}.gallery-container{position:relative;width:100%;height:100svh;overflow:hidden}.gallery-track{width:fit-content;height:100%;display:flex;will-change:transform}.gallery-panel{position:relative;flex-shrink:0;width:100vw;height:100svh;display:flex;align-items:flex-end;background:#000;overflow:hidden}.gallery-panel--geod{background:#0b1018}.gallery-panel--wechat-dialog{background:#dcebe4}.gallery-panel--codedrobe{background:#160f17}.gallery-kicker{position:absolute;z-index:12;top:38px;left:4%;right:4%;display:flex;justify-content:space-between;color:#ddd;mix-blend-mode:difference;font:400 9px/1 var(--mono);letter-spacing:.08em}.gallery-img-wrap{position:absolute;z-index:0;inset:76px 5% 210px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.15);border-radius:4px;background:#15191f;overflow:hidden;box-shadow:0 24px 80px #00000047}.gallery-panel--wechat-dialog .gallery-img-wrap{border-color:#0a46281f;background:#eff9f3;box-shadow:0 24px 80px #20573e26}.gallery-panel--codedrobe .gallery-img-wrap{border-color:#ffffff29;background:#211522}.gallery-image-motion{width:104%;height:100%;will-change:transform}.gallery-image-motion>img,.gallery-image-motion>.codedrobe-visual{width:100%;height:100%;object-fit:cover;object-position:center;filter:grayscale(.55) brightness(.74);transition:filter .6s}.gallery-panel:hover .gallery-image-motion>img,.gallery-panel:hover .gallery-image-motion>.codedrobe-visual{filter:grayscale(0) brightness(.96)}.gallery-info{position:relative;z-index:10;width:100%;min-height:180px;padding:22px 5% 36px;display:grid;grid-template-columns:clamp(90px,10vw,150px) minmax(260px,1fr) auto;gap:28px;align-items:end;color:#fff;pointer-events:none}.gallery-panel--wechat-dialog .gallery-info{color:#10251b}.gallery-num{display:block;color:transparent;-webkit-text-stroke:1px currentColor;opacity:.32;font-size:clamp(5rem,9vw,8rem);font-weight:900;line-height:.68}.gallery-info h3{margin:0;font-family:var(--cn);font-size:clamp(2.3rem,4.5vw,5rem);font-weight:600;line-height:.9;letter-spacing:-.06em}.gallery-meta{display:flex;align-items:center;gap:22px;color:#bbb;font:400 9px/1.3 var(--mono)}.gallery-panel--wechat-dialog .gallery-meta{color:#53665d}.gallery-meta a{padding:10px 24px;display:flex;align-items:center;gap:7px;border:1px solid rgba(255,255,255,.5);border-radius:50px;color:#fff;pointer-events:auto;transition:color .3s,border-color .3s,background .3s}.gallery-meta a:hover{color:#000;border-color:var(--accent);background:var(--accent)}.codedrobe-visual{position:relative;overflow:hidden}.codedrobe-visual>img{width:100%;height:100%;object-fit:cover;filter:saturate(.75) brightness(.75)}.codedrobe-visual__veil{position:absolute;inset:0;background:linear-gradient(90deg,#0e0a0fe0,#0e0a0f14 62%)}.codedrobe-visual__caption{position:absolute;left:8%;bottom:11%}.codedrobe-visual__caption span{color:#b790b9;font:400 9px/1 var(--mono)}.codedrobe-visual__caption strong{display:block;margin-top:12px;font-size:clamp(36px,5vw,70px);font-weight:600;line-height:.84;letter-spacing:-.06em}.codedrobe-visual__window{position:absolute;top:12%;right:7%;width:min(36%,450px);height:54%;padding:25px;display:flex;flex-direction:column;justify-content:flex-end;border:1px solid rgba(255,255,255,.23);background:#181319c2;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.codedrobe-visual__window>div{position:absolute;top:20px;left:20px;right:20px;display:flex;gap:6px}.codedrobe-visual__window i{width:6px;height:6px;border-radius:50%;background:#777}.codedrobe-visual__window div span{margin-left:auto;color:#777;font:400 7px/1 var(--mono)}.codedrobe-visual__window strong{font-size:clamp(20px,2.5vw,34px);font-weight:500}.codedrobe-visual__window small{margin-top:8px;color:#777;font:400 7px/1 var(--mono)}.laboratory{padding:clamp(110px,13vw,190px) 4%;background:var(--black)}.laboratory>header{margin-bottom:80px;display:flex;justify-content:space-between;align-items:flex-start}.laboratory>header h2{margin:0;font-size:clamp(50px,8vw,120px);font-style:italic;font-weight:700;line-height:.9;letter-spacing:-.06em}.minor-works{display:grid;grid-template-columns:repeat(2,1fr);border-top:1px solid var(--line-dark)}.minor-works>a{min-height:280px;padding:28px 32px 30px 0;display:grid;grid-template-columns:55px 1fr auto;align-items:end;border-bottom:1px solid var(--line-dark);transition:padding .4s,color .4s,background .4s}.minor-works>a:first-child{border-right:1px solid var(--line-dark)}.minor-works>a:nth-child(2){padding-left:32px}.minor-works>a:hover{padding-inline:32px;color:#111;background:var(--accent)}.minor-works>a>span,.minor-works small{align-self:start;color:#777;font:400 9px/1 var(--mono)}.minor-works h3{margin:12px 0 8px;font-size:34px;font-weight:600;letter-spacing:-.04em}.minor-works p{margin:0;color:#777;font:300 11px/1.7 var(--cn)}.minor-works>a:hover p,.minor-works>a:hover span,.minor-works>a:hover small{color:#333}.chapter-heading{margin-bottom:clamp(95px,12vw,180px);display:grid;grid-template-columns:.42fr 1.25fr .5fr;align-items:end;gap:40px}.chapter-heading h2{margin:0;font-size:clamp(54px,10vw,154px);font-style:italic;font-weight:800;line-height:.75;letter-spacing:-.07em}.chapter-heading p{margin:0;color:#747470;font:300 11px/1.8 var(--cn)}.opensource{padding:clamp(105px,13vw,190px) 4%;color:#111;background:var(--paper)}.chapter-heading--dark>span,.chapter-heading--dark p{color:#73736f}.project-groups{border-top:1px solid var(--line-light)}.project-group{padding:40px 0 85px;border-bottom:1px solid var(--line-light)}.project-group>header{display:grid;grid-template-columns:60px .55fr 1fr;gap:20px;margin-bottom:40px}.project-group>header span{font:400 9px/1 var(--mono)}.project-group>header h3{margin:0;font-size:clamp(26px,3vw,42px);font-weight:600;letter-spacing:-.04em}.project-group>header p{width:min(430px,100%);margin:0 0 0 auto;color:#6f6f6a;font:300 11px/1.8 var(--cn)}.project-list{border-top:1px solid var(--line-light)}.project-list>a{min-height:105px;padding:18px 0;display:grid;grid-template-columns:46px 48px 1fr minmax(210px,.5fr) 24px;gap:16px;align-items:center;border-bottom:1px solid var(--line-light);transition:padding .35s,color .35s,background .35s}.project-list>a:hover{padding-inline:20px;color:#111;background:var(--accent)}.project-index{color:#888883;font:400 8px/1 var(--mono)}.project-mark{--project-accent: #555;width:38px;height:38px;display:grid;place-items:center;border:1px solid rgba(0,0,0,.16);border-radius:50%;color:var(--project-accent);font:500 9px/1 var(--mono)}.project-list h4{margin:0 0 5px;font-family:var(--cn);font-size:17px;font-weight:500}.project-list p{margin:0;color:#6e6e69;font:300 10px/1.6 var(--cn)}.project-tags{color:#777772;font:400 7px/1.5 var(--mono)}.control-room{padding:clamp(100px,13vw,190px) 4%;color:#111;background:#d8d7d1}.control-list{border-top:1px solid var(--line-light)}.control-list>a{min-height:92px;padding:18px 0;display:grid;grid-template-columns:55px .8fr 1fr 90px 22px;gap:20px;align-items:center;border-bottom:1px solid var(--line-light);transition:padding .35s,color .35s,background .35s}.control-list>a:hover{padding-inline:20px;color:#111;background:var(--accent)}.control-list>a>span{color:#777772;font:400 8px/1 var(--mono)}.control-list strong{font:500 14px/1 var(--cn)}.control-list small{color:#6f6f6a;font:300 10px/1.5 var(--cn)}.control-list em{display:flex;align-items:center;gap:6px;color:#777772;font:normal 400 7px/1 var(--mono)}.site-footer{min-height:82svh;padding:100px 5% 42px;display:flex;flex-direction:column;justify-content:space-between;border-top:1px solid #222;background:#000}.site-footer>span{color:#777;font:400 10px/1 var(--mono)}.site-footer h2{margin:60px 0;font-size:clamp(56px,11vw,170px);font-style:italic;font-weight:800;line-height:.82;letter-spacing:-.07em}.site-footer h2 em{color:var(--accent);font-weight:inherit}.site-footer__meta{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:24px;color:#666;font:400 9px/1 var(--mono)}.site-footer__meta>a:last-child{justify-self:end}.site-footer a{display:flex;align-items:center;gap:6px}.site-footer a:hover{color:var(--accent)}[data-reveal]{opacity:0}@media(max-width:900px){.fixed-logo{top:24px;left:5%}.side-nav{inset:auto auto 24px 50%;width:max-content;max-width:92%;padding:12px 20px;flex-direction:row;gap:16px;mix-blend-mode:normal;border:1px solid rgba(255,255,255,.18);border-radius:50px;background:#121212db;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transform:translate(-50%)}.side-nav a{padding:0;font-size:8px}.side-nav a:after{inset:auto auto -6px 50%;transform:translate(-50%) scale(0)}.side-nav a:hover,.side-nav a.active{transform:none}.side-nav a.active:after{transform:translate(-50%) scale(1)}.hero-meta{position:relative;top:auto;right:auto;margin-bottom:40px;text-align:left}.hero{justify-content:flex-start;padding-top:100px}.hero-line{font-size:clamp(3rem,14vw,8rem)}.capability-grid{grid-template-columns:1fr}.capability-grid article{min-height:250px;padding:42px 22px}.chapter-heading{grid-template-columns:1fr;gap:24px}.project-list>a{grid-template-columns:42px 48px 1fr 24px}.project-tags{display:none}}@media(max-width:680px){.orbit-cursor{display:none}.has-custom-cursor body,.has-custom-cursor a{cursor:auto!important}.hero{padding-inline:20px}.hero-line{font-size:clamp(43px,15vw,74px);line-height:.94}.hero-bottom{align-items:flex-start;flex-direction:column-reverse}.hero-bottom p{font-size:12px}.capabilities{padding:90px 20px}.statement-portal{width:80vw;height:80vw}.bg-scroll-text{opacity:.5;font-size:40vw}.fg-static-text p br{display:none}.gallery-panel{min-height:720px;height:100svh}.gallery-kicker{top:24px;left:20px;right:20px}.gallery-img-wrap{inset:43% 20px auto;height:auto;transform:translateY(-50%)}.gallery-panel--geod .gallery-img-wrap{aspect-ratio:14 / 9}.gallery-panel--wechat-dialog .gallery-img-wrap{aspect-ratio:40 / 21}.gallery-panel--codedrobe .gallery-img-wrap{aspect-ratio:16 / 9}.gallery-info{min-height:230px;padding:28px 20px 92px;grid-template-columns:72px 1fr;gap:14px}.gallery-info h3{font-size:clamp(42px,13vw,65px)}.gallery-meta{grid-column:2;align-items:flex-start;flex-wrap:wrap;gap:9px 14px}.gallery-num{align-self:start;font-size:22vw}.codedrobe-visual__window{display:none}.laboratory{padding:90px 20px}.laboratory>header{flex-direction:column;gap:30px}.minor-works{grid-template-columns:1fr}.minor-works>a:first-child{border-right:0}.minor-works>a:nth-child(2){padding-left:0}.opensource,.control-room{padding:90px 20px}.project-group>header{grid-template-columns:42px 1fr}.project-group>header p{grid-column:2;margin:0}.project-list>a{grid-template-columns:34px 40px 1fr 20px;gap:10px}.project-list p{display:none}.control-list>a{grid-template-columns:35px 1fr 20px;gap:10px}.control-list small,.control-list em{display:none}.site-footer{padding-bottom:115px}.site-footer__meta{grid-template-columns:1fr auto;row-gap:16px}.site-footer__meta>a:first-of-type{grid-column:1 / -1;grid-row:1;justify-self:start}.site-footer__meta>span{grid-column:1;grid-row:2}.site-footer__meta>a:last-child{grid-column:2;grid-row:2}}
