@font-face{font-family:Cormorant Garamond Variable;font-style:normal;font-weight:300 700;font-display:swap;src:url(/fonts/cormorant-normal.woff2) format("woff2")}@font-face{font-family:Cormorant Garamond Variable;font-style:italic;font-weight:300 700;font-display:swap;src:url(/fonts/cormorant-italic.woff2) format("woff2")}@font-face{font-family:Manrope Variable;font-style:normal;font-weight:200 800;font-display:swap;src:url(/fonts/manrope.woff2) format("woff2")}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246/0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246/0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }
/*
! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com
*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.visible{visibility:visible}.static{position:static}.block{display:block}.grid{display:grid}.hidden{display:none}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.resize{resize:both}.blur{--tw-blur:blur(8px)}.blur,.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}:root{--paper:#f7f5ef;--ink:#242622;--muted:#4e544b;--line:#d9d8ce;--panel:#efede5;--accent:#baa182;--olive:#626848;--contrast:#fff;--serif:"Cormorant Garamond Variable",Georgia,serif;--sans:"Manrope Variable","PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans CJK SC",sans-serif;color-scheme:light;--text-body:1.0625rem;--text-detail:.875rem;--text-label:.8125rem}:root[data-theme=dark]{--paper:#1b201c;--ink:#f1eee6;--muted:#c7cbbf;--line:#3f463b;--panel:#242b24;--olive:#c4cbaa;--contrast:#1b201c;color-scheme:dark}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:30px}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:var(--text-body);line-height:1.8;-webkit-font-smoothing:antialiased;font-weight:450}::-moz-selection{background:#d7c9b6;color:#242622}::selection{background:#d7c9b6;color:#242622}a{text-decoration:none}a,button{color:inherit}button{font:inherit}a,button{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible,summary:focus-visible{outline:2px solid var(--olive);outline-offset:6px;border-radius:2px}button{cursor:pointer}img{display:block;max-width:100%;height:auto}h1,h2,h3,p{margin:0}h1,h2,h3{font-weight:500}.display,h1,h2{font-family:var(--serif);line-height:1.04;letter-spacing:-.04em}p{max-width:66ch}svg{max-width:100%}section[id]{scroll-margin-top:35px}.shell{width:min(1264px,calc(100% - 112px));margin:auto}.skip-link{position:absolute;top:-100px;left:20px;background:var(--ink);color:var(--paper);padding:12px;z-index:5}.skip-link:focus{top:10px}.site-header{height:104px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.wordmark{font-family:var(--serif);font-size:34px;line-height:1;letter-spacing:-1.2px}.wordmark span{color:var(--accent)}.nav{display:flex;gap:33px;align-items:center;font-size:var(--text-detail)}.nav>a{padding:9px 0;transition:color .2s}.nav>a:hover{color:var(--olive)}.header-tools{display:flex;align-items:center;gap:17px;border-left:1px solid var(--line);padding-left:25px}.language-toggle{font-size:var(--text-detail)}.theme-toggle{display:grid;place-items:center;width:24px;height:28px;border:0;padding:0;background:none}.theme-toggle svg{width:17px;height:17px}.hero{padding:78px 0 52px}.eyebrow,.micro{font-size:var(--text-label);letter-spacing:.17em;text-transform:uppercase;font-weight:600}.eyebrow{color:var(--muted)}.hero-heading-row{display:flex;align-items:flex-end;justify-content:space-between;margin:33px 0 31px}.hero h1{font-size:clamp(62px,7.8vw,112px);font-weight:500;line-height:.99;letter-spacing:-.045em}.hero h1 em{font-weight:400;color:var(--olive)}.margin-note{writing-mode:vertical-rl;text-transform:uppercase;font-size:var(--text-label);letter-spacing:.17em;display:flex;align-items:center;gap:20px;color:var(--muted);padding-right:10px}.margin-note:before{content:"";width:1px;height:60px;background:var(--accent)}.hero-description{font-size:var(--text-body);max-width:530px;line-height:1.8;color:var(--muted)}.hero-bottom{justify-content:space-between;margin-top:38px;gap:24px}.availability,.hero-bottom{display:flex;align-items:center}.availability{gap:9px;font-size:var(--text-detail);color:var(--muted)}.status-dot{width:6px;height:6px;border-radius:100%;background:var(--olive);flex-shrink:0}.hero-links{display:flex;gap:24px;flex-wrap:wrap}.text-link{display:inline-flex;align-items:center;gap:12px;font-size:var(--text-detail);line-height:1.5;border-bottom:1px solid var(--line);padding:5px 0 7px;transition:gap .2s}.text-link:hover{gap:18px;border-color:var(--olive)}.arrow{font-family:var(--sans);font-size:18px;font-weight:400;line-height:1}.section{padding-top:65px;padding-bottom:72px;border-top:1px solid var(--line)}.section-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:31px}.section-index{color:var(--muted);font-size:var(--text-label);font-weight:600;letter-spacing:.15em;text-transform:uppercase}.section-index span{color:var(--olive);margin-right:18px}.section-side-note{font-size:var(--text-label);color:var(--muted)}.feature-grid{display:grid;grid-template-columns:1.12fr .88fr;gap:60px;margin-bottom:32px;align-items:end}.feature-title{font-size:64px}.feature-title-row{display:flex;align-items:baseline;gap:20px;flex-wrap:wrap;row-gap:8px}.feature-subtitle{font-family:var(--serif);font-size:28px;letter-spacing:-.02em;color:var(--muted);margin-top:9px}.feature-copy{color:var(--muted);font-size:var(--text-body);line-height:1.8;margin-bottom:14px}.feature-role{color:var(--muted);font-size:var(--text-detail);margin-top:13px}.feature-screenshot{position:relative;display:block;padding:25px 25px 0;background:#e8e8df;overflow:hidden;transition:background .2s}.feature-screenshot img{width:100%}.browser-topbar,.feature-screenshot img{border:1px solid #d4d2c9;border-bottom:0}.browser-topbar{height:24px;background:#faf9f6;display:flex;align-items:center;justify-content:space-between;padding:0 12px;font-size:.6875rem;color:#69695f}.browser-dots{display:flex;gap:4px}.browser-dots i{width:4px;height:4px;border:1px solid #bbb9ae;border-radius:100%}.screenshot-link{position:absolute;right:39px;bottom:22px;background:var(--paper);color:var(--ink);border:1px solid var(--line);height:41px;width:41px;border-radius:100%;display:grid;place-items:center}.image-caption{display:flex;justify-content:space-between;gap:20px;color:var(--muted);font-size:var(--text-label);padding-top:12px;flex-wrap:wrap}.project-grid{display:grid;grid-template-columns:1fr 1fr;gap:32px;margin-top:55px}.project-card{border-top:1px solid var(--line);padding-top:21px}.project-meta{display:flex;justify-content:space-between;font-size:var(--text-label);color:var(--muted);letter-spacing:.09em;text-transform:uppercase;margin-bottom:18px;flex-wrap:wrap}.project-card h3{font-family:var(--serif);font-size:34px;letter-spacing:-.025em;line-height:1.1;margin:20px 0 12px}.project-card p{font-size:var(--text-body);color:var(--muted);line-height:1.8}.project-visual{height:253px;background:var(--panel);display:grid;align-items:center;padding:30px;overflow:hidden}.diagram-svg{width:100%;height:auto}.diagram-svg text{font-family:var(--sans);fill:var(--ink);font-size:11px}.diagram-svg .muted{fill:var(--muted);font-size:9px}.diagram-svg rect{fill:var(--paper);stroke:var(--line)}.diagram-svg line,.diagram-svg path{stroke:var(--accent);fill:none}.diagram-svg .central{stroke:var(--olive)}.diagram-svg .node-title{font-weight:600}.tags{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:var(--text-label);color:var(--muted);margin-top:16px}.pinball-art{height:253px;background:#303e48;display:grid;place-items:center;position:relative;overflow:hidden}.pinball-art svg{height:224px;width:190px}.placeholder-note{position:absolute;left:16px;bottom:13px;font-size:var(--text-label);color:#f7f5ef;letter-spacing:.07em;text-transform:uppercase}.project-card details{margin-top:16px}.project-card summary{font-size:var(--text-detail);cursor:pointer;width:-moz-fit-content;width:fit-content;color:var(--muted)}.project-card details p{font-size:var(--text-body);padding-top:8px}.experience-row{display:grid;grid-template-columns:1fr 2fr;gap:50px;padding:32px 0;border-top:1px solid var(--line)}.experience-row:first-of-type{border-top:0;padding-top:0}.experience-row h3{font-family:var(--serif);font-size:34px;line-height:1.1;letter-spacing:-.02em}.experience-period{font-size:var(--text-detail);color:var(--muted);margin-top:9px}.experience-role{font-size:1.125rem;margin-bottom:14px;font-weight:600}.experience-row ul{padding-left:16px;margin:0;color:var(--muted);font-size:var(--text-body);line-height:1.8}.experience-row li{padding-bottom:6px}.also{display:flex;gap:30px;border-top:1px solid var(--line);padding-top:22px;font-size:var(--text-body);color:var(--muted)}.also .micro{color:var(--ink);font-size:var(--text-label)}.about-grid{display:grid;grid-template-columns:1fr 1fr;gap:100px}.about-grid h2{font-size:49px;margin-bottom:22px}.about-grid p{font-size:var(--text-body);color:var(--muted);line-height:1.8}.education-meta{font-size:var(--text-detail);color:var(--muted);margin:12px 0 20px}.off-hours{border-top:1px solid var(--line);padding-top:20px;margin-top:25px}.off-hours span{display:block;margin-bottom:9px}.blotter{position:relative;background:var(--panel);padding:38px 42px 38px 56px;clip-path:polygon(16px 0,100% 0,100% 100%,16px 100%,0 50%)}.blotter:before{content:"";position:absolute;top:32px;bottom:32px;left:34px;border-left:1px solid var(--accent)}.blotter .micro{color:var(--muted);margin-bottom:18px}.blotter h3{font-family:var(--serif);font-size:32px;line-height:1.2;letter-spacing:-.02em}.blotter p{font-size:var(--text-body);margin-top:15px}.contact-section{padding:60px 0 67px}.contact-row{display:flex;justify-content:space-between;gap:50px;align-items:end}.contact-row h2{font-size:75px;margin:25px 0 17px}.contact-row p{color:var(--muted);font-size:var(--text-body);max-width:430px}.contact-links{display:flex;flex-direction:column;align-items:start;gap:15px;min-width:210px}.email-button{border:0;border-bottom:1px solid var(--line);background:none;padding:5px 0 7px;text-align:left;display:inline-flex;gap:12px;align-items:center;font-size:var(--text-detail);cursor:pointer}.site-footer{border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:25px 0 34px;font-size:var(--text-label);color:var(--muted)}.footer-right{display:flex;gap:25px}.case-hero{padding:58px 0 45px}.back-link{font-size:var(--text-detail);color:var(--muted);display:inline-flex;gap:12px;margin-bottom:45px}.case-hero h1{font-size:108px;margin:17px 0}.case-hero .lead{font-family:var(--serif);font-size:34px;line-height:1.3;letter-spacing:-.025em;max-width:690px}.case-intro{display:grid;grid-template-columns:2fr 1fr;gap:65px;align-items:end}.case-facts{border-left:1px solid var(--line);padding-left:30px}.case-facts p{font-size:var(--text-detail);color:var(--muted);margin-top:10px}.case-facts strong{font-weight:500;color:var(--ink)}.case-section{display:grid;grid-template-columns:1fr 2.3fr;gap:60px;border-top:1px solid var(--line);padding:51px 0}.case-section h2{font-size:39px;line-height:1.14;max-width:260px;margin-top:18px}.case-section p{font-size:var(--text-body);color:var(--muted);line-height:1.8}.case-section .case-text p+p{margin-top:17px}.case-section ul{padding-left:17px;color:var(--muted);font-size:var(--text-body);line-height:1.8;margin-top:0}.case-section li{padding-bottom:7px}.case-section .architecture{background:var(--panel);padding:25px;margin:24px 0}.stat-number{font-family:var(--serif);font-size:86px;letter-spacing:-.04em;line-height:1.1}.stat-label{color:var(--muted);font-size:var(--text-detail);margin-top:8px}.stat-note{font-size:var(--text-detail)!important;margin-top:20px}.case-mobile-pair{display:grid;grid-template-columns:.8fr 1.2fr;gap:50px;align-items:center;padding:40px;background:var(--panel);margin-top:30px}.case-mobile-pair img{max-height:430px;width:auto;margin:auto;box-shadow:0 8px 25px #00000009}.case-end{padding:40px 0 70px;display:flex;justify-content:space-between;gap:25px}.not-found{min-height:68vh;display:flex;flex-direction:column;justify-content:center}.not-found h1{font-size:100px;margin:20px 0}.not-found p{color:var(--muted);margin-bottom:25px}[lang=zh-CN] .feature-subtitle,[lang=zh-CN] .lead,[lang=zh-CN] h1,[lang=zh-CN] h2,[lang=zh-CN] h3{font-family:var(--sans);letter-spacing:-.04em;font-weight:400}[lang=zh-CN] .hero h1{font-size:clamp(48px,6vw,80px);line-height:1.25}[lang=zh-CN] .hero h1 em{font-style:normal}[lang=zh-CN] .case-hero h1,[lang=zh-CN] .feature-title{font-family:var(--serif)}[lang=zh-CN] .about-grid h2{font-size:35px;line-height:1.35}[lang=zh-CN] .blotter h3{font-size:25px;line-height:1.45}[lang=zh-CN] .contact-row h2{font-size:54px}[lang=zh-CN] .project-card h3{font-size:27px}[lang=zh-CN] .case-section h2{font-size:28px}[lang=zh-CN] .case-hero .lead{font-size:27px;line-height:1.6}@media(min-width:1600px){.hero h1{font-size:118px}}@media(max-width:1000px){.shell{width:calc(100% - 64px)}.nav{gap:22px}.feature-grid{gap:35px}.project-visual{padding:15px}.about-grid{gap:45px}.case-section{grid-template-columns:1fr 2fr;gap:35px}.hero h1{font-size:84px}.feature-title{font-size:58px}.contact-row h2{font-size:64px}}@media(max-width:700px){.shell{width:calc(100% - 40px)}.site-header{height:81px}.wordmark{font-size:29px}.nav{gap:15px}.nav-primary{display:none}.header-tools{border-left:0;padding-left:0;gap:18px}.hero{padding:53px 0 40px}.eyebrow{font-size:var(--text-label);letter-spacing:.12em}.hero-heading-row{margin:30px 0 25px}.hero h1{font-size:clamp(49px,11.4vw,79px);line-height:1.02;letter-spacing:-.04em}.margin-note{display:none}.hero-description{font-size:var(--text-body);line-height:1.8;max-width:100%}.hero-bottom{align-items:start;flex-direction:column;margin-top:25px;gap:24px}.availability{font-size:var(--text-detail);line-height:1.6}.hero-links{gap:22px;flex-wrap:wrap}.text-link{font-size:var(--text-detail)}.section{padding-top:39px;padding-bottom:43px}.section-heading{margin-bottom:26px}.section-index{font-size:var(--text-label);letter-spacing:.1em}.section-index span{margin-right:10px}.section-side-note{font-size:var(--text-label)}.feature-grid{grid-template-columns:1fr;gap:21px;margin-bottom:25px}.feature-title{font-size:53px}.feature-subtitle{font-size:28px;margin-top:8px}.feature-role{font-size:var(--text-detail)}.feature-copy{font-size:var(--text-body);margin-bottom:12px}.feature-screenshot{padding:11px 11px 0}.browser-topbar{height:19px;font-size:.6875rem;padding:0 8px}.feature-screenshot img{width:100%}.screenshot-link{height:30px;width:30px;right:20px;bottom:14px}.image-caption{font-size:var(--text-label);gap:12px;align-items:start;flex-wrap:wrap}.project-grid{grid-template-columns:1fr;gap:34px;margin-top:35px}.project-card{padding-top:16px}.project-meta{font-size:var(--text-label);margin-bottom:14px;flex-wrap:wrap}.pinball-art,.project-visual{height:224px}.project-visual{padding:20px 12px}.pinball-art svg{height:195px}.project-card h3{font-size:32px;margin-top:19px}.experience-row{grid-template-columns:1fr;gap:20px;padding:27px 0}.experience-row h3{font-size:31px}.experience-period{font-size:var(--text-detail);margin-top:7px}.experience-role{font-size:1.125rem;margin-bottom:10px}.experience-row ul{padding-left:15px}.also,.experience-row ul{font-size:var(--text-body)}.also{gap:17px}.about-grid{grid-template-columns:1fr;gap:32px}.about-grid h2{font-size:40px;line-height:1.13;margin-bottom:16px}.about-grid p{font-size:var(--text-body)}.education-meta{font-size:var(--text-detail)}.blotter{padding:29px 25px 29px 45px}.blotter:before{left:28px;top:26px;bottom:26px}.blotter h3{font-size:29px}.contact-section{padding:42px 0}.contact-row{align-items:start;flex-direction:column;gap:29px}.contact-row h2{font-size:59px;margin-top:20px}.contact-row p{font-size:var(--text-body)}.contact-links{gap:12px}.site-footer{align-items:start;gap:18px;flex-direction:column;font-size:var(--text-label);padding:22px 0}.footer-right{gap:23px}.case-hero{padding:35px 0}.back-link{margin-bottom:30px}.case-hero h1{font-size:82px;margin:17px 0}.case-hero .lead{font-size:29px;line-height:1.25}.case-intro{grid-template-columns:1fr;gap:25px}.case-facts{border-left:0;border-top:1px solid var(--line);padding:17px 0 0;display:flex;flex-wrap:wrap;gap:10px 22px}.case-facts p{font-size:var(--text-detail);margin:0}.case-section{grid-template-columns:1fr;gap:25px;padding:33px 0}.case-section h2{font-size:34px;max-width:none;margin-top:12px}.case-section p,.case-section ul{font-size:var(--text-body)}.case-section .architecture{padding:12px;margin:20px 0}.case-mobile-pair{grid-template-columns:1fr;gap:28px;padding:26px}.case-mobile-pair img{max-height:350px}.case-end{flex-direction:column;align-items:start;padding:30px 0 45px}.not-found h1,.stat-number{font-size:75px}[lang=zh-CN] .hero h1{font-size:clamp(38px,9.4vw,62px);line-height:1.35}[lang=zh-CN] .hero-heading-row{margin:25px 0 21px}[lang=zh-CN] .about-grid h2{font-size:29px}[lang=zh-CN] .blotter h3{font-size:23px}[lang=zh-CN] .contact-row h2{font-size:41px}[lang=zh-CN] .case-hero .lead{font-size:24px}[lang=zh-CN] .project-card h3{font-size:26px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:after,:before{animation:none!important;transition:none!important}}.generic-project{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:18px;color:var(--olive)}.generic-project .display{font-size:48px}.generic-project .micro{font-size:11px}.generic-project strong{font-family:var(--serif);font-size:35px;font-weight:400}.generic-project>span{font-size:11px;letter-spacing:.15em}@media(max-width:700px){.also,.experience-row ul,.project-card details p{font-size:var(--text-body)}.contact-links .text-link,.education-meta,.email-button,.feature-role,.project-card summary{font-size:var(--text-detail)}.tags{font-size:var(--text-label)}.about-grid p,.contact-row p,.hero-description,.project-card p{font-size:var(--text-body)}.feature-role{line-height:1.7}}.pinball-preview{position:relative;display:flex;height:253px;align-items:center;justify-content:center;background:#0d0221;overflow:hidden}.pinball-preview img{height:100%;width:auto;max-width:100%;-o-object-fit:contain;object-fit:contain}.pinball-preview-label{position:absolute;bottom:12px;left:15px;max-width:calc(100% - 30px);font-size:var(--text-label);color:#fff;background:#0d0221e8;padding:5px 8px}.pinball-preview:hover img{opacity:.9}.project-card>.text-link{margin-top:14px}@media(max-width:700px){.pinball-preview{height:224px}.pinball-preview-label{font-size:var(--text-label);bottom:8px;left:10px}}.about-grid{align-items:start}.coursework{margin:0 0 22px}.coursework .micro{margin-bottom:8px}.background-grid{display:grid;grid-template-columns:1fr 1fr;gap:100px;border-top:1px solid var(--line);margin-top:36px;padding-top:30px}.background-group>.micro{margin-bottom:18px}.skills-list{margin:0}.skills-list>div+div{margin-top:15px}.skills-list dt{font-size:var(--text-detail);font-weight:600;margin-bottom:4px}.skills-list dd{margin:0;color:var(--muted);font-size:var(--text-body);line-height:1.8;overflow-wrap:anywhere}.recognition{border-top:1px solid var(--line);margin-top:27px;padding-top:23px}.recognition ul{margin:0;padding-left:16px;color:var(--muted);font-size:var(--text-body);line-height:1.8}.recognition li+li{margin-top:8px}.leadership-item+.leadership-item{border-top:1px solid var(--line);margin-top:24px;padding-top:22px}.leadership-item h4{font-size:1.125rem;font-weight:500;line-height:1.5;margin:0 0 7px}.leadership-item p{font-size:var(--text-body);color:var(--muted);line-height:1.8}.leadership-item .leadership-role{font-size:var(--text-detail);margin-bottom:12px}@media(max-width:1000px){.background-grid{gap:45px}}@media(max-width:700px){.background-grid{grid-template-columns:1fr;gap:32px;margin-top:30px;padding-top:26px}.background-group>.micro{font-size:var(--text-label)}.skills-list dt{font-size:var(--text-detail)}.leadership-item p,.recognition ul,.skills-list dd{font-size:var(--text-body)}.leadership-item .leadership-role{font-size:var(--text-detail)}}.case-section p,.experience-row li,.feature-copy,.hero-description,.leadership-item p,.project-card p,.recognition li{text-wrap:pretty}.case-section ul,.experience-row ul,.recognition ul{max-width:66ch}.nav{font-weight:500}.eyebrow,.micro,.section-index{letter-spacing:.1em}.project-meta{letter-spacing:.04em}.feature-role{line-height:1.7}.feature-title-row>.micro{line-height:1.5}.theme-toggle{width:40px;height:40px}.email-button,.project-card summary,.text-link{min-height:40px}.case-facts{line-height:1.7}@media(max-width:700px){.hero-links{gap:14px 24px}.hero h1{overflow-wrap:normal}.image-caption{row-gap:8px}.project-meta{gap:8px 16px}.experience-row{gap:18px}.experience-row li{padding-bottom:12px}.section-heading{gap:20px;align-items:start}.section-side-note{text-align:right}}.case-section h2,.hero h1,.leadership-item h4{text-wrap:balance}.feature-actions{display:flex;align-items:center;flex-wrap:wrap;gap:12px 24px}.case-preview-pair{display:grid;gap:24px;padding:32px;background:var(--panel);margin-top:30px}.case-preview-pair img{width:100%;height:auto;border:1px solid var(--line)}@media(max-width:700px){.case-preview-pair{gap:20px;padding:16px}}html{scroll-padding-top:0}section[id]{scroll-margin-top:104px}.site-header{position:sticky;top:0;z-index:20;background:var(--paper)}.skip-link{z-index:30}.nav-primary[aria-current=location]{border-bottom:1px solid var(--olive);color:var(--olive)}.about-grid{grid-template-columns:1.2fr .8fr;gap:90px}@media(max-width:1000px){.about-grid{gap:45px}}@media(max-width:700px){section[id]{scroll-margin-top:81px}.about-grid{grid-template-columns:1fr;gap:30px}.about-grid>div{grid-row:2}[lang=zh-CN] .hero h1 em{display:block;text-wrap:balance}}