:root{--black:#000;--white:#fff;--blue:#0062ff;--ash:#4d4d4d;--smoke:gray;--fog:#999;--mist:#c6c6c6;--line:#ffffff2e;--line-strong:#ffffff61;--surface:#050505c7;--ease:cubic-bezier(.16,1,.3,1);--ui:"IBM Plex Sans","Noto Sans SC","PingFang SC","Microsoft YaHei",sans-serif;--display:var(--ui);--reading-scale:1.15;--micro-size:calc(12px * var(--reading-scale));--header-control-height:30px}html[data-font-size=small]{--reading-scale:1}html[data-font-size=medium]{--reading-scale:1.15}html[data-font-size=large]{--reading-scale:1.32}*{box-sizing:border-box}html,body{background:var(--black);width:100%;min-height:100%;color:var(--white);margin:0}html{scroll-behavior:smooth}body{font-family:var(--ui);font-size:calc(12px * var(--reading-scale));font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased}button,a{font:inherit;color:inherit}button{appearance:none}.chrome{transition:opacity .4s}body.ui-idle .chrome{opacity:.18}body.panel-open .chrome{opacity:.08;pointer-events:none}.site-header{z-index:10;grid-template-columns:1fr auto;align-items:center;width:100%;padding:20px 24px;display:grid;position:fixed;top:0;left:0}.identity{width:max-content;height:var(--header-control-height);color:#fff;align-items:center;text-decoration:none;transition:opacity .28s;display:flex}.site-header.is-heading-collision .identity{opacity:0;pointer-events:none}.identity-wordmark{opacity:.92;width:92px;height:auto;transition:opacity .25s;display:block}.identity:hover .identity-wordmark,.identity:focus-visible .identity-wordmark{opacity:1}.identity:focus-visible{outline:1px solid var(--white);outline-offset:6px}.header-tools{justify-self:end;align-items:center;gap:6px;display:flex}.ghost-nav{order:1;align-items:center;gap:4px;display:flex}.ghost-nav button,.ghost-nav a,.panel-close{height:var(--header-control-height);border:1px solid var(--line);color:var(--mist);font-size:var(--micro-size);white-space:nowrap;cursor:pointer;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:background .25s ease,color .25s ease,border-color .25s ease,transform .35s var(--ease);background:#00000094;border-radius:999px;justify-content:center;align-items:center;padding:0 11px;line-height:1;text-decoration:none;display:inline-flex}.ghost-nav .info-button,.reading-tools button{width:var(--header-control-height);min-width:var(--header-control-height);height:var(--header-control-height);color:#fff;font-size:var(--micro-size);cursor:pointer;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:background .22s ease,border-color .22s ease,transform .35s var(--ease);background:#00000094;border:1px solid #ffffff57;border-radius:50%;justify-content:center;align-items:center;padding:0;font-weight:400;line-height:1;display:inline-flex}.info-button svg{fill:none;stroke:currentColor;stroke-width:1.5px;stroke-linecap:round;opacity:1;width:14px;height:14px;display:block}.info-button svg circle{fill:currentColor;stroke:none}.panel-close{width:var(--header-control-height);min-width:var(--header-control-height);aspect-ratio:1;flex:0 0 var(--header-control-height);border-radius:50%;padding:0;position:relative}.panel-close:before,.panel-close:after{content:"";transform-origin:50%;background:currentColor;border-radius:999px;width:10px;height:1.5px;position:absolute;top:50%;left:50%}.panel-close:before{transform:translate(-50%,-50%)rotate(45deg)}.panel-close:after{transform:translate(-50%,-50%)rotate(-45deg)}.ghost-nav button:hover,.ghost-nav button:focus-visible,.ghost-nav a:hover,.ghost-nav a:focus-visible,.panel-close:hover,.panel-close:focus-visible{color:#fff;background:#ffffff14;border-color:#ffffff8f;outline:none}.reading-tools{height:var(--header-control-height);color:var(--fog);order:2;align-items:center;gap:6px;display:flex}.reading-tools button:hover,.reading-tools button:focus-visible{color:#fff;background:#ffffff14;border-color:#ffffff8f;outline:none}.reading-tools .language-toggle{color:#fff;place-items:center;display:grid}.language-toggle>span{line-height:1;display:block;transform:translateY(-.04em)}.font-cycle span{font-size:13px;line-height:1;transition:font-size .2s;display:block}html[data-font-size=small] .font-cycle span{font-size:12px}html[data-font-size=medium] .font-cycle span{font-size:13px}html[data-font-size=large] .font-cycle span{font-size:15px}.page{z-index:1;background:0 0;min-height:100svh;position:relative}.stage{height:100svh;overflow:hidden}.mark-stage{z-index:2;aspect-ratio:1;isolation:isolate;pointer-events:none;touch-action:none;cursor:default;-webkit-user-select:none;user-select:none;will-change:transform,opacity;place-items:center;width:min(44vw,500px);display:grid;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}.mark-stage.is-interactive{pointer-events:auto;cursor:grab}.mark-stage.is-interactive.is-dragging{cursor:grabbing}.crystal-mark{z-index:2;pointer-events:none;position:absolute;inset:0}.specimen-canvas{opacity:0;width:100%;height:100%;transition:opacity .22s ease-out;display:block;position:absolute;inset:0}.crystal-mark.is-webgl-ready .specimen-canvas{opacity:1}.render-progress{--render-progress:0%;z-index:5;color:var(--fog);font-size:var(--micro-size);letter-spacing:.1em;pointer-events:none;gap:8px;transition:opacity .55s,transform .55s cubic-bezier(.16,1,.3,1);display:grid;position:absolute;bottom:-32px;left:10%;right:10%}.render-progress>div{justify-content:space-between;align-items:center;display:flex}.render-progress output{color:var(--white);font:inherit;font-variant-numeric:tabular-nums}.render-track{background:#ffffff29;height:2px;display:block;overflow:hidden}.render-track i{width:var(--render-progress);background:var(--blue);height:100%;transition:width 80ms linear;display:block;box-shadow:0 0 10px #0062ffb3}.render-progress.is-complete{opacity:0;transform:translateY(8px)}.statement{opacity:var(--statement-opacity,1);transform:translateY(var(--statement-shift,0));will-change:opacity,transform;position:absolute;bottom:22px;left:24px}.statement p{font-family:var(--display);font-size:calc(16px * var(--reading-scale));letter-spacing:-.025em;margin:0;font-weight:400;line-height:1.2}.statement span{color:var(--fog);font-size:var(--micro-size);letter-spacing:.07em}.scroll-cue{z-index:6;opacity:0;pointer-events:none;width:24px;height:28px;transition:opacity .65s,transform .65s cubic-bezier(.16,1,.3,1);position:absolute;bottom:22px;left:50%;transform:translate(-50%,8px)}.scroll-cue.is-visible{opacity:.48;transform:translate(-50%)}.scroll-cue-glyph{width:24px;height:28px;display:block;position:relative}.scroll-cue-glyph i{border-bottom:1px solid #ffffffd1;border-right:1px solid #ffffffd1;width:8px;height:8px;animation:2.4s cubic-bezier(.45,0,.2,1) infinite scroll-cue-descend;position:absolute;left:50%;transform:translate(-50%)rotate(45deg)}.scroll-cue-glyph i:first-child{top:3px}.scroll-cue-glyph i:last-child{border-color:var(--blue);animation-delay:.18s;top:11px}@keyframes scroll-cue-descend{0%,15%{opacity:0;translate:0 -2px}42%{opacity:.9}78%{opacity:.22}to{opacity:0;translate:0 5px}}.content-page{grid-template-columns:minmax(190px,1fr) minmax(0,3fr);gap:48px;padding:92px 24px 64px;display:grid}.page-heading,.work-grid,.social-list{opacity:var(--exit-opacity,1);transform:translateY(var(--exit-shift,0));will-change:opacity,transform}.page-heading h1{font-family:var(--display);letter-spacing:-.055em;margin:0 0 14px;font-size:clamp(42px,5vw,68px);font-weight:400;line-height:.88}.page-heading p{max-width:calc(320px * var(--reading-scale));color:var(--mist);font-family:var(--display);font-size:calc(16px * var(--reading-scale));letter-spacing:-.015em;text-wrap:pretty;margin:0;line-height:1.72}html[lang^=zh] .page-heading h1{letter-spacing:-.035em}html[lang=en] .work-page .page-heading p,html[lang=en] .social-page .page-heading p{white-space:nowrap;max-width:none}.work-grid{z-index:3;grid-template-columns:repeat(3,minmax(0,1fr));align-self:center;gap:12px;display:grid;position:relative}.work-card{border:1px solid var(--line);background:linear-gradient(180deg,#ffffff07,transparent 30%),var(--surface);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:12px;flex-direction:column;min-width:0;padding:12px;display:flex;box-shadow:inset 0 1px #ffffff06,0 22px 70px #0000002e}.work-card-link{color:inherit;transition:border-color .25s ease,transform .4s var(--ease),box-shadow .4s ease;text-decoration:none}.work-card-link:hover,.work-card-link:focus-visible{border-color:var(--line-strong);outline:none;transform:translateY(-2px);box-shadow:inset 0 1px #ffffff0d,0 24px 70px #00000047}.work-card-link:focus-visible{box-shadow:0 0 0 2px #0062ff73,0 24px 70px #00000047}.work-visual{aspect-ratio:4/5;background:linear-gradient(145deg,#ffffff05,#0000 38%),#030303e0;border:1px solid #ffffff09;border-radius:8px;margin-bottom:14px;position:relative;overflow:hidden}.project-preview{flex-direction:column;justify-content:space-between;padding:18px;display:flex}.project-preview span,.project-preview small{z-index:2;font-size:calc(8px * var(--reading-scale));letter-spacing:.08em;font-style:normal;position:relative}.project-preview small{align-self:flex-end}.icon-preview img{z-index:1;aspect-ratio:1;object-fit:cover;width:64%;height:auto;transition:transform .55s var(--ease),filter .4s ease;border-radius:22%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 18px 48px #0006}.work-card-link:hover .icon-preview img,.work-card-link:focus-visible .icon-preview img{filter:brightness(1.025);transform:translate(-50%,-50%)scale(1.02)}.work-meta{color:var(--fog);font-size:calc(8px * var(--reading-scale));letter-spacing:.05em;justify-content:space-between;gap:10px;display:flex}.work-meta span:last-child{text-align:right}.work-card h2{font-size:calc(14px * var(--reading-scale));letter-spacing:-.01em;margin:14px 0 6px}.work-card>p{color:var(--mist);font-family:var(--display);font-size:calc(14px * var(--reading-scale));letter-spacing:-.015em;text-wrap:pretty;margin:0;line-height:1.58}@media (width<=1100px){.work-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.work-card:first-child{grid-column:1/-1}.work-card:first-child .work-visual{aspect-ratio:16/7}.content-page{align-items:start}.work-page{min-height:auto}.work-card>p{min-height:3em}}.social-page{align-items:start}.social-list{z-index:3;border-top:1px solid var(--line);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#000000a8;align-self:center;position:relative}.social-list>a,.social-list>div{border-bottom:1px solid var(--line);min-height:84px;color:inherit;grid-template-columns:48px 1fr minmax(210px,1.5fr) 104px;align-items:center;gap:18px;text-decoration:none;display:grid}.social-list span{color:var(--fog);font-size:var(--micro-size);letter-spacing:.06em;font-weight:400}.social-list strong{font-size:calc(14px * var(--reading-scale));transition:transform .35s var(--ease),color .25s ease}.social-list em{color:var(--mist);font-family:var(--display);font-size:calc(16px * var(--reading-scale));letter-spacing:-.015em;font-style:normal}.social-owner{color:#ffffff61;font-size:calc(10px * var(--reading-scale));letter-spacing:.055em;white-space:nowrap;justify-self:end;font-weight:400;line-height:1}.social-owner.owner-labs{color:#ffffff61}.social-list a{transition:background .3s}.social-list a:hover,.social-list a:focus-visible{background:linear-gradient(90deg,#0062ff17,#0062ff00 62%);outline:none}.social-list a:hover strong,.social-list a:focus-visible strong{color:#fff;transform:translate(4px)}.site-footer{z-index:4;background:var(--black);min-height:120px;color:var(--fog);font-size:var(--micro-size);letter-spacing:.08em;justify-content:flex-end;align-items:flex-end;padding:24px;display:flex;position:relative}.overlay-panel{z-index:30;opacity:0;visibility:hidden;border:1px solid var(--line);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);width:min(520px,100vw - 48px);height:auto;max-height:calc(100vh - 96px);transition:opacity .4s ease,transform .4s var(--ease),visibility .4s ease;background:#000000b3;border-radius:12px;grid-template-rows:auto 1fr;display:grid;position:fixed;top:50%;right:24px;transform:translate(24px,-50%);box-shadow:0 30px 100px #00000080,inset 0 1px #ffffff06}.overlay-panel.is-open{opacity:1;visibility:visible;transform:translateY(-50%)}.panel-header{color:var(--fog);font-size:var(--micro-size);letter-spacing:.06em;border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:16px 18px;display:flex}.panel-content{scrollbar-width:thin;scrollbar-color:var(--ash) transparent;padding:48px 28px;overflow:auto}.panel-content::-webkit-scrollbar{width:5px}.panel-content::-webkit-scrollbar-track{background:0 0}.panel-content::-webkit-scrollbar-thumb{background:var(--ash);border-radius:5px}.profile-copy{max-width:430px;font-family:var(--display);font-size:calc(15px * var(--reading-scale));letter-spacing:-.012em;text-wrap:pretty;line-height:1.72}.profile-copy p{color:var(--mist);margin:0}.profile-copy p+p{border-top:1px solid #ffffff1a;margin-top:1.45em;padding-top:1.45em}.profile-copy .profile-motto{color:var(--mist);font-size:calc(17px * var(--reading-scale));letter-spacing:-.02em;gap:.25em;line-height:1.45;display:grid}.profile-email{min-height:62px;color:var(--white);border-block:1px solid #ffffff29;grid-template-columns:24px 1fr;align-items:center;gap:13px;margin-top:1.65em;padding:0 2px;text-decoration:none;transition:border-color .3s;display:grid;position:relative;overflow:hidden}.profile-email:before{content:"";background:var(--blue);transform-origin:0;height:1px;transition:transform .45s var(--ease);position:absolute;bottom:-1px;left:0;right:0;transform:scaleX(0)}.profile-email-icon{width:24px;height:24px;color:var(--mist);transition:color .3s ease,transform .4s var(--ease);place-items:center;display:grid}.profile-email-icon svg{fill:none;stroke:currentColor;stroke-width:1.2px;stroke-linecap:round;stroke-linejoin:round;width:17px;height:17px}.profile-email>span:nth-child(2){font-size:calc(15px * var(--reading-scale));font-variant-numeric:tabular-nums;letter-spacing:.015em;transition:transform .4s var(--ease)}.profile-email:hover,.profile-email:focus-visible{border-color:#ffffff52;outline:none}.profile-email:hover:before,.profile-email:focus-visible:before{transform:scaleX(1)}.profile-email:hover .profile-email-icon,.profile-email:focus-visible .profile-email-icon{color:#fff}.profile-email:hover>span:nth-child(2),.profile-email:focus-visible>span:nth-child(2){transform:translate(3px)}.panel-scrim{z-index:20;opacity:0;visibility:hidden;cursor:default;background:#0000004d;border:0;width:100%;height:100%;transition:opacity .4s,visibility .4s;position:fixed;inset:0}body.panel-open .panel-scrim{opacity:1;visibility:visible}@media (width<=700px){:root{--header-control-height:28px}.site-header{grid-template-columns:1fr auto;padding:16px}.identity-wordmark{width:74px}.header-tools{gap:6px}.ghost-nav{gap:4px}.ghost-nav button,.ghost-nav a{font-size:calc(9px * var(--reading-scale));padding-inline:8px}.ghost-nav .info-button{padding:0}.mark-stage{width:min(76vw,330px)}.render-progress{bottom:-28px;left:8%;right:8%}.statement{bottom:18px;left:16px}.statement p{max-width:270px}.statement span{max-width:210px;line-height:1.5;display:block}.scroll-cue{bottom:18px}.content-page{padding:98px 16px 56px;display:block}.page-heading{margin-bottom:36px}.page-heading p{max-width:280px}html[lang=en] .work-page .page-heading p{white-space:normal}.work-grid{grid-template-columns:1fr;gap:14px}.work-card:first-child{grid-column:auto}.work-card:first-child .work-visual,.work-visual{aspect-ratio:4/3}.work-card>p{min-height:0;font-size:calc(14px * var(--reading-scale))}.social-list>a,.social-list>div{grid-template-columns:30px minmax(0,1fr) auto;gap:10px;min-height:70px}.social-list em{display:none}.social-owner{font-size:calc(8px * var(--reading-scale))}.site-footer{min-height:96px;padding:20px 16px}.overlay-panel{width:calc(100vw - 24px);height:auto;max-height:calc(100vh - 140px);top:70px;right:12px;transform:translateY(20px)}.overlay-panel.is-open{transform:none}.panel-content{padding:36px 20px}}@media (prefers-reduced-motion:reduce){.render-progress{display:none}.scroll-cue-glyph i{opacity:.65;animation:none}.page-heading,.work-grid,.social-list{will-change:auto;opacity:1!important;transform:none!important}.chrome,.scroll-cue,.overlay-panel,.panel-scrim,.specimen-canvas{transition-duration:.01ms!important}}.doumu-symbol{aspect-ratio:1;background:#000;border-radius:22%;width:64%;transition:transform .6s cubic-bezier(.16,1,.3,1);top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 14px 34px #0000007a;z-index:1!important;position:absolute!important}.doumu-symbol:before,.doumu-symbol:after{content:"";border-radius:22%;width:54%;height:54%;position:absolute}.doumu-symbol:before{background:linear-gradient(145deg,#3f9260,#245135);top:18%;left:18%;box-shadow:0 12px 28px #00000061}.doumu-symbol:after{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#080e0de0;border:1px solid #ffffff57;bottom:18%;right:18%;box-shadow:0 14px 30px #0000006b}.work-card-link:hover .doumu-symbol,.work-card-link:focus-visible .doumu-symbol{transform:translate(-50%,-50%)scale(1.035)}.development-toast{z-index:50;border:1px solid var(--ash);min-height:34px;color:var(--mist);font-size:var(--micro-size);letter-spacing:.1em;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);opacity:0;visibility:hidden;pointer-events:none;background:#000000d6;border-radius:3px;align-items:center;gap:9px;padding:0 13px;transition:opacity .28s,transform .36s cubic-bezier(.16,1,.3,1),visibility .28s;display:flex;position:fixed;bottom:28px;left:50%;transform:translate(-50%,8px)}.development-toast:before{content:"";background:var(--blue);border-radius:50%;width:5px;height:5px;box-shadow:0 0 10px #0062ff73}.development-toast.is-visible{opacity:1;visibility:visible;transform:translate(-50%)}@media (width<=700px){.development-toast{bottom:18px}html[lang=en] .social-page .page-heading p{white-space:normal}}@media (prefers-reduced-motion:reduce){.development-toast{transition-duration:.01ms}}.work-title-row{justify-content:space-between;align-items:baseline;gap:12px;margin:0 0 6px;display:flex}.work-title-row h2{min-width:0;margin:0}.work-title-row>span{color:var(--fog);font-size:var(--micro-size);letter-spacing:.08em;text-align:right;flex:none;font-weight:400}.project-preview span,.project-preview small,.work-meta{font-size:var(--micro-size)}@media (width<=700px){.ghost-nav button,.ghost-nav a{font-size:var(--micro-size)}}
