@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/fraunces-vietnamese-wght-normal.CnvboYUG.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/fraunces-latin-ext-wght-normal.Ca2vKHc0.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/fraunces-latin-wght-normal.ukD16Tqj.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fraunces Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/_astro/fraunces-vietnamese-wght-italic.BicUS2cM.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/_astro/fraunces-latin-ext-wght-italic.BfTTTDIL.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/_astro/fraunces-latin-wght-italic.Py8at3oI.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Mono;font-style:normal;font-display:swap;font-weight:300;src:url(/_astro/dm-mono-latin-300-normal.CNmLoeDX.woff2) format("woff2"),url(/_astro/dm-mono-latin-300-normal.CT8u5j2n.woff) format("woff")}@font-face{font-family:DM Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/dm-mono-latin-400-normal.4GdczIuU.woff2) format("woff2"),url(/_astro/dm-mono-latin-400-normal.-0xN8mdc.woff) format("woff")}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #f5f2ed;--ink: #1a1814;--muted: #5c5956;--accent: #2f6f9f;--project-subtitle: #204f78;--rule: #dedad4;--card-bg: #efece7;--card-hover: #e8e4de}html{font-size:16px;scroll-behavior:smooth}body{background:var(--bg);color:var(--ink);font-family:DM Mono,monospace;font-weight:300;line-height:1.7;min-height:100vh;display:flex;flex-direction:column}body.modal-open{overflow:hidden}main{flex:1}body:before{content:"";position:fixed;inset:0;pointer-events:none;z-index:9999;opacity:.032;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='300' height='300' filter='url(%23n)'/%3E%3C/svg%3E");background-size:300px}.scroll-nav{position:fixed;top:1.25rem;left:50%;transform:translate(-50%) translateY(-140%);z-index:100;opacity:0;transition:transform .35s cubic-bezier(.16,1,.3,1),opacity .3s ease;pointer-events:none}.scroll-nav--visible{transform:translate(-50%) translateY(0);opacity:1;pointer-events:auto}.scroll-nav__bar{display:flex;align-items:center;background:var(--card-bg);border:1px solid var(--rule);box-shadow:0 4px 24px #1a181414;padding:.3rem .4rem;gap:.1rem;white-space:nowrap}.scroll-nav__item{background:none;border:none;cursor:pointer;font-family:DM Mono,monospace;font-size:.62rem;font-weight:300;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);padding:.4rem .85rem;position:relative;transition:color .2s}.scroll-nav__item:after{content:"";position:absolute;bottom:0;left:.85rem;right:.85rem;height:1px;background:var(--accent);transform:scaleX(0);transition:transform .2s ease}.scroll-nav__item:hover,.scroll-nav__item--active{color:var(--ink)}.scroll-nav__item--active:after{transform:scaleX(1)}.scroll-nav__divider{display:block;width:1px;height:12px;background:var(--rule);margin:0 .3rem;align-self:center;flex-shrink:0}.scroll-nav__link{text-decoration:none}@keyframes fadeUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.hero{max-width:980px;margin:0 auto;padding:5rem 3rem 4rem}.hero-identity{display:flex;align-items:center;justify-content:space-between;margin-bottom:2.5rem;padding-bottom:2rem;border-bottom:1px solid var(--rule);animation:fadeUp .5s ease both}.hero-identity-left{display:flex;flex-direction:row;align-items:center;gap:.8rem}.hero-nav{display:flex;gap:2rem}.hero-nav a{font-size:.72rem;text-transform:uppercase;letter-spacing:.14em;color:var(--muted);text-decoration:none;transition:color .2s}.hero-nav a:hover{color:var(--accent)}.menu-btn{display:none}.hero-name{font-family:Fraunces Variable,serif;font-weight:300;font-style:italic;font-size:2.4rem;color:var(--ink);letter-spacing:-.01em}.hero-sep{color:var(--rule);font-size:.9rem}.hero-role{font-size:.65rem;text-transform:uppercase;letter-spacing:.18em;color:#fff;background:var(--accent);padding:.25em .65em}.hero-body{display:grid;grid-template-columns:240px 1fr;gap:3rem;align-items:stretch}.hero-photo-wrap{width:240px;overflow:hidden;border-radius:20px;border:1px solid var(--rule);box-shadow:0 4px 20px #1a18141a}.hero-photo{width:100%;height:100%;object-fit:cover;object-position:center 8%;display:block}.hero-content h1{font-family:Fraunces Variable,serif;font-size:clamp(2.2rem,5vw,3.8rem);font-weight:300;line-height:1.08;letter-spacing:-.02em;margin-bottom:1.25rem}.hero-content h1 .h1-line{display:block;opacity:0;animation:fadeUp .65s ease forwards}.hero-content h1 .h1-line:nth-child(1){animation-delay:.15s}.hero-content h1 .h1-line:nth-child(2){animation-delay:.35s}.hero-content h1 em{font-style:italic;color:var(--accent)}.hero .tagline{font-size:.9rem;color:var(--muted);max-width:480px;margin-bottom:2.5rem;line-height:1.9}.hero .tagline a{color:var(--ink);text-decoration:none;border-bottom:1px solid var(--accent);padding-bottom:1px;transition:color .2s}.hero .tagline a:hover{color:var(--accent)}.hero .cta-row{display:flex;gap:1rem;flex-wrap:wrap}.snapshot-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;max-width:580px;margin-top:2.25rem;background:var(--rule);border:1px solid var(--rule)}.snapshot-item{background:var(--bg);padding:.9rem 1rem}.snapshot-item span{display:block;font-family:Fraunces Variable,serif;font-size:1.25rem;line-height:1.1;color:var(--ink);margin-bottom:.4rem}.snapshot-item p{font-size:.58rem;line-height:1.45;letter-spacing:.11em;text-transform:uppercase;color:var(--muted)}.btn{display:inline-block;padding:.6rem 1.4rem;font-family:DM Mono,monospace;font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;text-decoration:none;border:1px solid var(--ink);color:var(--ink);transition:background .2s,color .2s,border-color .2s}.btn:hover,.btn.filled{background:var(--ink);color:var(--bg)}.btn.filled:hover{background:var(--accent);border-color:var(--accent)}section{max-width:980px;margin:0 auto;padding:4rem 3rem;border-top:1px solid var(--rule)}section .section-label{display:flex;align-items:center;gap:.7rem;font-size:.62rem;text-transform:uppercase;letter-spacing:.22em;color:var(--muted);margin-bottom:2.5rem}section .section-label .num{color:var(--ink);letter-spacing:.1em}.section-subtitle{max-width:620px;margin:-.6rem 0 1.35rem;font-size:.92rem;font-weight:400;line-height:1.85;color:var(--ink)}.section-subtitle a{color:inherit;text-decoration:none;border-bottom:1px solid var(--accent);padding-bottom:1px;transition:color .2s}.section-subtitle a:hover{color:var(--accent)}.section-heading{display:grid;grid-template-columns:220px 1fr;gap:2rem;align-items:start;margin-bottom:2.4rem}.section-heading .section-label{margin-bottom:0}.section-heading p{max-width:560px;font-size:.86rem;line-height:1.8;color:var(--muted)}.about-text p{font-size:.92rem;color:var(--ink);margin-bottom:1.2rem;max-width:620px;line-height:1.85}.about-text a{color:inherit;text-decoration:none;border-bottom:1px solid var(--accent);padding-bottom:1px;transition:color .2s}.about-text a:hover{color:var(--accent)}.work-group{margin-top:2.5rem}.section-heading+.work-group{margin-top:0}.work-group.compact{margin-top:3.25rem}.work-group-header{display:grid;grid-template-columns:220px 1fr;gap:2rem;align-items:baseline;padding:0 0 1rem;border-bottom:1px solid var(--rule);margin-bottom:1rem}.work-group-header span{font-family:Fraunces Variable,serif;font-size:1.25rem;line-height:1.2;letter-spacing:-.01em}.work-group-header p{font-size:.72rem;line-height:1.7;color:var(--muted)}.work-grid{display:flex;flex-direction:column;gap:16px}.work-card{background:var(--card-bg);padding:2.2rem;border-top:2px solid transparent;transition:border-color .2s,background .2s}.work-card:hover{border-top-color:var(--accent);background:var(--card-hover)}.card-header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:.6rem}.work-card h3,.project-card h3{font-family:Fraunces Variable,serif;font-size:1.1rem;font-weight:400;letter-spacing:-.01em}.card-index{font-size:.6rem;letter-spacing:.18em;color:var(--muted);flex-shrink:0}.card-tag{font-size:.6rem;text-transform:uppercase;letter-spacing:.14em;padding:.2em .6em;border:1px solid var(--rule);color:var(--muted);flex-shrink:0}.work-card p,.project-card p{font-size:.84rem;color:var(--muted);line-height:1.75}.work-card .card-links,.project-card .card-links{margin-top:1.1rem;display:flex;gap:1.4rem;flex-wrap:wrap}.work-card .card-links a,.project-card .card-links a{font-size:.68rem;text-transform:uppercase;letter-spacing:.1em;color:var(--ink);text-decoration:none;border-bottom:1px solid var(--accent);padding-bottom:1px;transition:color .2s}.work-card .card-links a:hover,.project-card .card-links a:hover{color:var(--accent)}.project-grid{display:flex;flex-direction:column;gap:18px}.project-card{display:grid;grid-template-columns:minmax(280px,42%) 1fr;gap:0;background:var(--card-bg);border:1px solid transparent;border-top:2px solid transparent;cursor:pointer;transition:border-color .2s,background .2s,transform .2s}.project-card:hover{border-top-color:var(--accent);background:var(--card-hover);transform:translateY(-2px)}.project-card:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.project-media{min-height:100%;padding:1rem;border-right:1px solid var(--rule)}.project-media img{display:block;width:100%;height:100%;min-height:260px;object-fit:contain;border:1px solid var(--rule);background:var(--bg)}.project-body{padding:2rem}.project-role{display:block;margin-bottom:.25rem;font-size:.58rem;line-height:1.4;letter-spacing:.14em;text-transform:uppercase;color:var(--project-subtitle)}.project-points{display:grid;gap:.55rem;margin:1rem 0 0;padding:0;list-style:none}.project-points li{position:relative;padding-left:1rem;font-size:.76rem;line-height:1.65;color:var(--muted)}.project-points li:before{content:"";position:absolute;left:0;top:.72em;width:5px;height:5px;background:var(--accent)}.project-stack{display:flex;flex-wrap:wrap;gap:.45rem;margin-top:1.1rem}.project-stack span{padding:.3rem .55rem;border:1px solid var(--rule);background:#f5f2ed94;font-size:.58rem;line-height:1;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.detail-trigger{margin-top:1.2rem;background:none;border:0;border-bottom:1px solid var(--accent);padding:0 0 1px;color:var(--ink);cursor:pointer;font-family:DM Mono,monospace;font-size:.68rem;letter-spacing:.1em;line-height:1.4;text-transform:uppercase}.detail-trigger:hover,.detail-trigger:focus-visible{color:var(--accent);outline:none}.project-modal-backdrop{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;padding:1rem;background:#1a181494;backdrop-filter:blur(4px)}.project-modal{width:min(1120px,calc(100vw - 2rem));max-height:calc(100vh - 2rem);color:var(--ink);background:var(--bg);border:1px solid var(--rule);box-shadow:0 24px 80px #1a181447}.project-modal-shell{position:relative;display:grid;grid-template-columns:minmax(0,1.25fr) minmax(340px,.75fr);max-height:calc(100vh - 2rem);overflow:auto}.modal-close{position:absolute;top:1rem;right:1rem;z-index:2;background:var(--ink);border:1px solid var(--ink);color:var(--bg);cursor:pointer;font-family:DM Mono,monospace;font-size:.62rem;letter-spacing:.12em;padding:.45rem .7rem;text-transform:uppercase}.modal-close:hover,.modal-close:focus-visible{background:var(--accent);border-color:var(--accent);outline:none}.modal-image-wrap{display:flex;align-items:center;min-height:560px;padding:1.25rem;background:#e7e2db;border-right:1px solid var(--rule)}.modal-image-wrap img{display:block;width:100%;max-height:calc(100vh - 4.5rem);object-fit:contain;border:1px solid var(--rule);background:var(--bg)}.modal-content{display:flex;flex-direction:column;justify-content:center;gap:1.4rem;padding:4.75rem 2rem 2.25rem}.modal-kicker{display:flex;flex-wrap:wrap;gap:.55rem}.modal-kicker span,.modal-label{display:inline-block;font-size:.58rem;letter-spacing:.14em;line-height:1.5;text-transform:uppercase}.modal-kicker span{color:var(--project-subtitle)}.modal-label{color:var(--accent)}.modal-kicker span{border:1px solid var(--rule);padding:.25rem .5rem}.modal-content h3{font-family:Fraunces Variable,serif;font-size:clamp(1.9rem,4vw,3.2rem);font-weight:300;letter-spacing:-.02em;line-height:1.05}.modal-summary{color:var(--muted);font-size:.9rem;line-height:1.85}.modal-detail-grid{display:grid;gap:1.6rem;padding-top:.6rem;border-top:1px solid var(--rule)}.modal-points{display:grid;gap:.85rem;margin-top:.85rem;padding:0;list-style:none}.modal-points li{position:relative;padding-left:1rem;color:var(--ink);font-size:.82rem;line-height:1.75}.modal-points li:before{content:"";position:absolute;left:0;top:.78em;width:5px;height:5px;background:var(--accent)}.modal-stack{margin-top:.85rem}.modal-links{display:flex;flex-wrap:wrap;gap:1.4rem;margin-top:1.35rem}.modal-links a{font-size:.68rem;text-transform:uppercase;letter-spacing:.1em;color:var(--ink);text-decoration:none;border-bottom:1px solid var(--accent);padding-bottom:1px;transition:color .2s}.modal-links a:hover{color:var(--accent)}.elsewhere-row{display:flex;flex-wrap:wrap;align-items:center;gap:0}.elsewhere-row a{font-family:Fraunces Variable,serif;font-style:italic;font-weight:300;font-size:1.05rem;color:var(--ink);text-decoration:none;padding:0 .9rem;transition:color .2s}.elsewhere-row a:first-child{padding-left:0}.elsewhere-row a:hover{color:var(--accent)}.elsewhere-sep{color:var(--rule);font-size:.9rem;line-height:1;user-select:none}.contact-hero{padding-top:3rem}.contact-eyebrow{font-size:.62rem;text-transform:uppercase;letter-spacing:.22em;color:var(--accent);margin-bottom:1rem}.contact-h1{font-family:Fraunces Variable,serif;font-size:clamp(2.4rem,6vw,4rem);font-weight:300;line-height:1.08;letter-spacing:-.02em;margin-bottom:1.25rem}.contact-h1 em{font-style:italic;color:var(--accent)}.contact-tagline{font-size:.9rem;color:var(--muted);max-width:480px;line-height:1.9}.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.contact-card{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;background:var(--card-bg);text-decoration:none;color:var(--ink);border-top:2px solid transparent;transition:border-color .2s,background .2s}.contact-card:hover{border-top-color:var(--accent);background:var(--card-hover)}.contact-icon{width:18px;height:18px;flex-shrink:0;color:var(--accent)}.contact-card-label{font-size:.56rem;text-transform:uppercase;letter-spacing:.16em;color:var(--muted);margin-bottom:.15rem}.contact-card-value{font-family:DM Mono,monospace;font-size:.82rem;font-weight:300;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}a.contact-card .contact-card-value{width:fit-content;border-bottom:1px solid var(--accent);padding-bottom:1px}.copy-btn{flex-shrink:0;display:flex;align-items:center;background:none;border:none;padding:.25rem;cursor:pointer;color:var(--muted);transition:color .2s}.copy-btn:hover{color:var(--ink)}.copy-btn:focus-visible{outline:1px solid var(--accent);outline-offset:2px}.copy-icon{width:16px;height:16px}.contact-card-value{user-select:text}.contact-card-text{flex:1;min-width:0}.contact-card-value{user-select:text;transition:color .15s}.contact-card-value.copied-text{color:var(--accent);font-family:DM Mono,monospace;font-style:normal;font-size:.75rem;letter-spacing:.06em}@media (max-width: 640px){.contact-grid{grid-template-columns:1fr}}footer{border-top:1px solid var(--rule);width:100%}.footer-inner{max-width:980px;margin:0 auto;padding:1.75rem 3rem;display:flex;justify-content:space-between;align-items:center}footer span{font-size:.65rem;color:var(--muted);letter-spacing:.1em;text-transform:uppercase}.not-found{max-width:980px;margin:0 auto;padding:8rem 3rem}.not-found .eyebrow{font-size:.68rem;text-transform:uppercase;letter-spacing:.18em;color:var(--accent);margin-bottom:1.5rem}.not-found h1{font-family:Fraunces Variable,serif;font-size:clamp(2.8rem,6vw,4.5rem);font-weight:300;line-height:1.1;letter-spacing:-.02em;margin-bottom:1.5rem}.not-found p{font-size:.92rem;color:var(--muted);margin-bottom:2.5rem}@media (max-width: 640px){.hero,section,.footer-inner,.not-found{padding-left:1.25rem;padding-right:1.25rem}.hero{padding-top:1.5rem;padding-bottom:2.5rem}section{padding-top:2.5rem;padding-bottom:2.5rem}.hero-identity{margin-bottom:1.5rem;padding-bottom:1.25rem}.hero-name{font-size:1.9rem;white-space:nowrap}.hero-role{font-size:.6rem;letter-spacing:.12em;white-space:nowrap}.hero-nav{display:none}.hero-identity-left{gap:.5rem}.hero-body{grid-template-columns:1fr;gap:1.75rem}.hero-photo-wrap{width:75%;aspect-ratio:1;border-radius:14px;margin:0 auto}.hero-content h1{font-size:clamp(2rem,8vw,3rem)}.hero-content{display:flex;flex-direction:column}.hero .tagline{margin-bottom:0}.hero .cta-row{order:2}.snapshot-grid{grid-template-columns:1fr;max-width:none}.snapshot-grid{order:1;margin-top:1.4rem;margin-bottom:1.75rem}.section-heading,.work-group-header{grid-template-columns:1fr;gap:.8rem}.project-card{grid-template-columns:1fr}.project-media{border-right:0;border-bottom:1px solid var(--rule)}.project-media img{min-height:190px}.project-body{padding:1.35rem}.project-modal{width:calc(100vw - 1rem);max-height:calc(100vh - 1rem)}.project-modal-shell{grid-template-columns:1fr;max-height:calc(100vh - 1rem)}.modal-image-wrap{min-height:auto;padding:.75rem;border-right:0;border-bottom:1px solid var(--rule)}.modal-image-wrap img{max-height:42vh}.modal-content{padding:4.25rem 1.15rem 1.35rem}.card-header{align-items:flex-start;gap:1rem}}@media (max-width: 375px){.hero-name{font-size:1.8rem}.hero-role{font-size:.55;letter-spacing:.08em;padding:.2em .5em}}
