@font-face{font-family:Cormorant;src:url('/assets/cormorant-regular.ttf') format('truetype');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:Cormorant;src:url('/assets/cormorant-medium.ttf') format('truetype');font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:Cormorant;src:url('/assets/cormorant-italic.ttf') format('truetype');font-weight:400;font-style:italic;font-display:swap}
:root{font-size:clamp(13px,1vw,16px);--paper:#f6f1ed;--ink:#493f53;--accent:#917daa;--muted:#81718d;--line:#d8cdd9;--soft:#eee7f0;--serif:Cormorant,'Noto Serif SC','Songti SC',SimSun,serif}
*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--serif);font-size:1.5625rem;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}h1,h2,h3,h4,p{margin:0}button,a{-webkit-tap-highlight-color:transparent}a:focus-visible{outline:2px solid var(--accent);outline-offset:6px;border-radius:5px}::selection{background:#d8cbe4;color:var(--ink)}
.panel{position:relative;isolation:isolate;display:flex;flex-direction:column;min-height:max(100svh,56.25rem);padding:3.125rem 6% 2.25rem;overflow:hidden;overflow:clip}
.panel-header,.panel-footer{position:relative;z-index:2}.brand{font-size:1.25rem;line-height:1.625rem;letter-spacing:.225rem;display:inline-block}.panel-header{height:1.625rem;flex-shrink:0}.panel-footer{margin-top:auto;border-top:1px solid var(--line);padding-top:.875rem;min-height:3.75rem;display:flex;align-items:flex-start;justify-content:space-between}.footer-blog{font-size:1.125rem;color:var(--muted);padding:.375rem 0}
.art{position:absolute;inset:0;z-index:-1;pointer-events:none}.art img{position:absolute;max-width:none}.hero-art .wash{left:-16.25rem;top:-10.9375rem;width:51.25rem;height:51.875rem}.hero-art .inner{left:-14.5rem;top:-4.8125rem;width:38.9375rem;height:37.9375rem}.hero-art .outer{left:-15.375rem;top:-9.8125rem;width:44.875rem;height:44.5625rem}
.hero-columns{display:grid;grid-template-columns:minmax(0,782fr) minmax(0,514fr);gap:7rem;align-items:center;flex:1;min-height:37.5rem;margin:4.625rem 0 3.375rem}.identity{display:flex;flex-direction:column;gap:4.75rem}.identity-copy{display:flex;flex-direction:column;gap:1.125rem}.eyebrow{font-size:.75rem;line-height:1.125rem;text-transform:uppercase;letter-spacing:.1625rem}h1{font-size:11.25rem;font-weight:500;line-height:1.025;letter-spacing:-.5625rem}.specialism{font-size:3.125rem;font-style:italic;line-height:1.24;white-space:nowrap}.actions{display:flex;align-items:center;gap:2.5rem;flex-wrap:wrap}
.capsule{height:3.625rem;min-width:11.75rem;display:inline-flex;align-items:center;justify-content:space-between;gap:1rem;padding:.625rem .625rem .625rem 1.5rem;border:1px solid var(--line);border-radius:3rem;background:var(--soft);font-size:1.625rem;line-height:2.125rem;font-weight:500;transition:transform 150ms ease-out,background 150ms,box-shadow 150ms}.capsule>span:first-child{flex:1;text-align:center}.arrow-circle{display:grid;place-items:center;flex-shrink:0;width:2.25rem;height:2.25rem;border-radius:50%;background:var(--line);transition:background 150ms}.arrow-circle img{width:24px;height:24px}.text-link{display:inline-flex;align-items:center;gap:.625rem;border-bottom:1px solid var(--line);font-size:1.625rem;line-height:2.125rem;padding-bottom:.1875rem;transition:transform 150ms ease-out,border-color 150ms}.text-link img{flex-shrink:0;width:24px;height:24px}.text-link.small{font-size:1.25rem;line-height:1.75rem;gap:.5rem}.project-button{min-width:13.5rem}
.work-nav h2{font-size:2.75rem;font-weight:400;font-style:italic;line-height:3.5rem;padding-left:5.5rem;margin-bottom:1.125rem;white-space:nowrap}.work-links{position:relative}.work-links:before{content:'';position:absolute;left:1.71875rem;top:0;bottom:0;width:1px;background:linear-gradient(transparent,var(--line) 6%,var(--line) 94%,transparent)}.work-link{position:relative;display:flex;align-items:center;min-height:10.5rem;padding-left:5.5rem;padding-right:2.5rem}.work-copy{display:flex;flex-direction:column;gap:.375rem;transition:transform 150ms ease-out;transform-origin:left center}.work-title{font-size:2.25rem;line-height:2.75rem;letter-spacing:-.0375rem}.work-description{font-size:1.5625rem;line-height:2rem;color:var(--muted)}.marker{position:absolute;left:1.75rem;top:50%;width:0;height:0;pointer-events:none}.point{position:absolute;left:-12px;top:-12px;width:24px;height:24px;border-radius:50%;background:var(--accent);filter:blur(1.2px);opacity:0;transition:opacity 180ms}.halo{position:absolute;left:-92px;top:-92px;width:184px;height:184px;border-radius:50%;background:radial-gradient(circle,rgba(145,125,170,.35),rgba(145,125,170,.16) 35%,transparent 70%);opacity:0;transform:scale(.065)}.work-arrow{position:absolute;right:0;opacity:0;transform:translateY(-5px);transition:opacity 150ms,transform 150ms}
@keyframes bloom{0%{transform:scale(.065);opacity:0}12%{transform:scale(.3);opacity:.54}38%{transform:scale(.63);opacity:.16}100%{transform:scale(1);opacity:0}}
@media(hover:hover){.capsule:hover{transform:translateY(-3px) scale(1.03);background:#e7dded;box-shadow:0 6px 14px #735c8f20}.capsule:hover .arrow-circle{background:var(--accent)}.capsule:hover .arrow-circle img{filter:brightness(0) invert(1)}.text-link:hover{transform:translateY(-3px);border-color:var(--accent)}.work-link:hover .work-copy{transform:translateY(-3px) scale(1.02)}.work-link:hover .point{opacity:.65}.work-link:hover .halo{animation:bloom 1.41s ease-out both}.work-link:hover .work-arrow{opacity:1;transform:translateY(0)}.repository-card:hover{transform:translateY(-4px);border-color:var(--accent);box-shadow:0 8px 28px #917daa1f}}
.capsule:active,.text-link:active{transform:scale(.98);transition-duration:80ms}.capsule:active{background:#ddcfe6;box-shadow:0 1px 3px #735c8f12}.work-link:active .work-copy{transform:scale(.98);transition-duration:80ms}.work-link:focus-visible .point{opacity:.65}.work-link:focus-visible .work-arrow{opacity:1;transform:none}
.resume-art .wash{left:-14.7875rem;top:-8.46875rem;width:33.825rem;height:34.2375rem}.resume-art .inner{left:-13.6325rem;top:-4.42625rem;width:25.69875rem;height:25.03875rem}.resume-art .outer{left:-14.21rem;top:-7.72625rem;width:29.6175rem;height:29.41125rem}.resume-art .top-one{right:-2rem;top:-4.375rem}.resume-art .top-two{right:-3rem;top:-3.75rem}.resume-art .bottom-one{left:-5.625rem;bottom:5.3rem}.resume-art .bottom-two{left:-5.625rem;bottom:5.3rem}.resume-art .top-point{right:7%;top:27%}.resume-art .bottom-point{left:7.8%;bottom:25%}
.resume-body{margin:3.0625rem auto 3.5rem;width:min(100%,47rem)}.section-title{text-align:center;margin-bottom:3.5rem}.section-title h2{font-size:4.75rem;font-weight:400;font-style:italic;line-height:1.2}.title-rule{position:relative;margin:1rem auto 0;width:18.75rem;height:1px;background:var(--line)}.title-rule img{position:absolute;top:-3px;left:calc(50% - 3.5px)}.timeline{display:flex;flex-direction:column;gap:2.4rem}.timeline-section h3{display:flex;align-items:center;gap:1.625rem;margin:0 0 1.2rem 13.125rem;font-size:2rem;font-weight:500}.timeline-section h3:after{content:'';height:1px;background:var(--line);flex:1}.timeline ol{list-style:none;margin:0;padding:0}.timeline li{display:grid;grid-template-columns:10.75rem 1fr;gap:2.375rem;min-height:6.8rem}.dates{text-align:right;font-size:1.125rem;line-height:1.875rem;color:var(--muted);white-space:nowrap}.dates em{display:block;font-size:1rem}.entry{border-left:1px solid var(--line);position:relative;padding:0 0 1.3rem 2.8125rem}.entry:before{content:'';position:absolute;left:-5px;top:.75rem;width:9px;height:9px;border-radius:50%;background:var(--accent);opacity:.8}.entry h4{font-size:1.6rem;line-height:2.25rem;font-weight:500;letter-spacing:.025rem}.entry p{font-size:1.25rem;line-height:1.9;color:var(--muted)}.entry .entry-note{font-size:1.05rem}
.iris-content{position:relative;display:grid;grid-template-columns:45% 55%;align-items:center;flex:1;min-height:42rem;margin:1rem 0 2rem}.iris-copy{position:relative;z-index:1}.short-rule{display:block;width:4.625rem;height:1px;background:var(--accent);margin-bottom:1.25rem}.iris-copy .eyebrow{color:var(--accent);font-size:.875rem;letter-spacing:.1875rem}.iris-copy h2{font-size:11.25rem;line-height:1.2;font-weight:500;margin:.8rem 0}.iris-description{font-size:2.625rem;line-height:1.3;white-space:nowrap}.principles{font-size:.8125rem;color:var(--accent);letter-spacing:.1375rem;text-transform:uppercase;margin-top:2.1rem}.iris-copy .actions{margin-top:3.5rem;gap:1.625rem}.iris-visual{position:relative;height:42rem;min-width:0}.construction-grid{position:absolute;left:-2rem;top:0;opacity:1}.flower-wrap{position:absolute;left:1rem;top:5rem;width:min(67%,29.375rem)}.iris-flower{width:100%;height:auto;display:block}.terminal{position:absolute;right:-2.25rem;top:19.1rem;width:34.375rem;max-width:85%;border:1px solid #917daa80;border-radius:1rem;overflow:hidden;background:#f6f1edf7;box-shadow:0 12px 35px #493f5314;font-family:'Cascadia Code','Courier New',monospace;font-size:.875rem}.terminal-bar{height:2.75rem;padding:0 1.25rem;display:flex;align-items:center;justify-content:space-between;background:#eee7f0a6;color:var(--muted)}.terminal-controls{display:flex;gap:9px}.terminal-controls img{width:9px;height:9px}.terminal-controls img:nth-child(2){opacity:.65}.terminal-controls img:nth-child(3){opacity:.36}.terminal-body{padding:1.5rem 1.75rem 1.75rem;overflow-x:auto}.terminal pre{margin:0 0 1.5rem;line-height:1.9;font:inherit;line-height:1.9}.terminal code{font:inherit}.terminal p{white-space:nowrap;color:var(--accent)}.terminal strong{font-weight:500;margin-right:.5rem}
.repository-art .left-one{left:-5.625rem;top:4.0625rem}.repository-art .left-two{left:-4.0625rem;top:3.4375rem}.repository-art .right-one{right:-6.875rem;top:-7.8125rem}.repository-art .right-two{right:-8.75rem;top:-7.8125rem}.repositories{flex:1;margin:2.25rem auto 4rem;width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3.5rem}.repositories h2{font-size:4.25rem;font-weight:400;line-height:1.25}.repositories h2 em{font-weight:400;color:var(--accent)}.repository-grid{display:grid;grid-template-columns:repeat(2,17.875rem);gap:1.75rem}.repository-card{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1.375rem;min-height:13.5rem;border:1px solid var(--line);border-radius:2rem;background:var(--paper);font-size:1.625rem;transition:transform 180ms ease-out,box-shadow 180ms,border-color 180ms,background 80ms}.repository-card>img{width:44px;height:44px;object-fit:contain}.repository-card:active{transform:scale(.98);transition-duration:80ms;background:var(--soft);box-shadow:none}.zl-icon{border-radius:9px}
.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:fixed;left:1rem;top:-5rem;z-index:10;background:var(--paper);padding:.5rem 1rem}.skip-link:focus{top:1rem}
[data-reveal]{--duration:600ms;--delay:0ms}.motion-ready [data-reveal]:not(.revealed){opacity:0;transform:translateY(22px)}.motion-ready [data-reveal]{transition:opacity var(--duration) ease-out var(--delay),transform var(--duration) ease-out var(--delay)}.motion-ready [data-reveal].revealed{opacity:1;transform:translateY(0)}.motion-ready .art{transform:translateY(var(--drift,0px))}
@media(min-width:1800px){.panel{padding-left:max(6%,calc((100% - 1408px)/2));padding-right:max(6%,calc((100% - 1408px)/2))}}
@media(max-width:1050px){.hero-columns{gap:3rem;grid-template-columns:1.35fr 1fr}.work-nav h2{padding-left:3.5rem;font-size:2.4rem}.work-link{padding-left:3.5rem}.work-title{font-size:2rem}.work-description{font-size:1.4rem}.actions{gap:1.8rem}h1{font-size:10rem}.specialism{font-size:2.8rem}.iris-content{grid-template-columns:48% 52%}.iris-description{font-size:2.2rem;white-space:normal}.terminal{max-width:100%;top:21rem;right:-1rem}.flower-wrap{left:0;top:4rem;width:90%}}
@media(max-width:760px){:root{font-size:14px}.panel{padding:28px 7% 24px;min-height:100svh}.panel-header{height:30px}.hero-columns{grid-template-columns:1fr;gap:4rem;margin:5rem 0 3rem;min-height:0}.identity{gap:2.75rem}h1{font-size:clamp(88px,20vw,140px);letter-spacing:-.045em}.specialism{font-size:clamp(28px,6.8vw,42px);white-space:normal}.eyebrow{font-size:11px}.actions{gap:1.6rem}.capsule{min-width:145px;height:48px;padding:7px 8px 7px 16px;font-size:22px}.arrow-circle{width:32px;height:32px}.text-link{font-size:22px}.work-nav{width:100%}.work-nav h2{padding-left:4rem;font-size:34px;margin-bottom:.5rem}.work-link{min-height:125px;padding-left:4rem}.work-title{font-size:29px;line-height:1.25}.work-description{font-size:21px}.panel-footer{margin-top:auto;min-height:52px;padding-top:10px}.hero-art{opacity:.8}.hero-art .wash{left:-380px;top:-240px}.hero-art .inner,.hero-art .outer{left:-350px}.resume-body{margin:3rem auto}.section-title{margin-bottom:3rem}.section-title h2{font-size:62px}.timeline{gap:2rem}.timeline-section h3{margin-left:0;font-size:29px}.timeline li{grid-template-columns:1fr;gap:0;position:relative;border-left:1px solid var(--line);margin-left:4px;padding-left:24px}.dates{text-align:left;font-size:15px;line-height:26px}.dates em{display:inline;margin-left:6px;font-size:13px}.entry{border:0;padding:4px 0 28px}.entry:before{left:-29px;top:14px}.entry h4{font-size:23px}.entry p{font-size:17px}.resume-art .top-one,.resume-art .top-two{right:-180px;opacity:.5}.resume-art .bottom-one,.resume-art .bottom-two{opacity:.35}.iris-content{grid-template-columns:1fr;margin-top:4rem;margin-bottom:3rem;min-height:0}.iris-copy h2{font-size:125px;line-height:1.1}.iris-description{font-size:32px;white-space:normal}.principles{font-size:11px;letter-spacing:1.1px}.iris-copy .actions{margin-top:2.5rem}.iris-visual{height:490px;margin-top:3rem}.construction-grid{left:-120px;top:-20px;max-width:none;opacity:.8}.flower-wrap{left:2%;top:0;width:min(75%,340px)}.terminal{width:400px;max-width:98%;right:-2%;top:210px;font-size:clamp(10px,2.5vw,13px)}.terminal-body{padding:20px 16px}.repositories{margin:4rem auto;gap:3rem}.repositories h2{font-size:42px;text-align:center}.repository-grid{width:100%;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.repository-card{min-height:165px;border-radius:25px;font-size:24px;gap:20px}.repository-card>img{width:40px;height:40px}.repository-art{opacity:.6}.footer-blog{display:none}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.motion-ready [data-reveal]:not(.revealed){opacity:1;transform:none}.motion-ready .art{transform:none}.capsule:hover,.text-link:hover,.repository-card:hover,.work-link:hover .work-copy{transform:none}}
