@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-cyrillic-ext-wght-normal.DjL33-gN.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-cyrillic-wght-normal.BEAKL7Jp.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-vietnamese-wght-normal.6IgcOCM7.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-latin-ext-wght-normal.DC-KSUi6.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-latin-wght-normal.BgDaEnEv.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-cyrillic-ext-wght-normal.X_5orZeX.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-cyrillic-wght-normal.DiZS0aHC.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-symbols2-wght-normal.CO5SzqOn.woff2)format("woff2-variations");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-vietnamese-wght-normal.DadHysG0.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-latin-ext-wght-normal.Bwz-egvJ.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-latin-wght-normal.XN7g48iV.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Instrument Serif;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/instrument-serif-latin-ext-400-normal.C2je3j2s.woff2)format("woff2"),url(/_astro/instrument-serif-latin-ext-400-normal.CFCUzsTy.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Instrument Serif;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/instrument-serif-latin-400-normal.DnYpCC2O.woff2)format("woff2"),url(/_astro/instrument-serif-latin-400-normal.BVbkICAY.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Instrument Serif;font-style:italic;font-display:swap;font-weight:400;src:url(/_astro/instrument-serif-latin-ext-400-italic.C9HzH3YL.woff2)format("woff2"),url(/_astro/instrument-serif-latin-ext-400-italic.D7-lnxEk.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Instrument Serif;font-style:italic;font-display:swap;font-weight:400;src:url(/_astro/instrument-serif-latin-400-italic.DKMiL14s.woff2)format("woff2"),url(/_astro/instrument-serif-latin-400-italic.u__WvvIK.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--canvas:#f4f0e8;--paper:#f8f5ef;--ink:#161412;--muted:#625d56;--hairline:#d7d0c4;--accent:#bf5700;--accent-soft:#ead7c5;--sans:"Geist Variable", "Geist", system-ui, sans-serif;--serif:"Instrument Serif", Georgia, serif;--mono:"Geist Mono Variable", "Geist Mono", ui-monospace, monospace;--frame-width:92rem;--section-space:clamp(5rem, 9vw, 9rem);--gutter:clamp(1.25rem, 4vw, 4.5rem)}*,:before,:after{box-sizing:border-box}html{background:var(--canvas);color:var(--ink);font-family:var(--sans);scroll-behavior:auto;scroll-padding-top:6rem}body{overflow-wrap:break-word;background:var(--canvas);min-width:20rem;min-height:100vh;color:var(--ink);text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;margin:0;padding:clamp(.5rem,1.6vw,1.5rem);font-size:1rem;line-height:1.55}body,button,input,textarea,select{font-family:var(--sans)}img,svg{max-width:100%;display:block}a{color:inherit;text-underline-offset:.18em;text-decoration-thickness:.08em}a:hover{text-decoration-color:var(--accent)}:focus-visible{outline:3px solid var(--accent);outline-offset:4px}::selection{background:var(--accent);color:var(--paper)}.skip-link{z-index:1000;background:var(--ink);color:var(--paper);font-family:var(--mono);text-transform:uppercase;padding:.75rem 1rem;font-size:.75rem;position:fixed;top:.75rem;left:.75rem;transform:translateY(-180%)}.skip-link:focus{transform:translateY(0)}.site-frame{width:min(100%, var(--frame-width));border:1px solid var(--ink);background:var(--paper);min-height:calc(100vh - clamp(1rem,3.2vw,3rem));margin-inline:auto;overflow:clip}.site-header{z-index:100;border-bottom:1px solid var(--hairline);background:var(--paper);min-height:5.25rem;box-shadow:0 -1px 0 var(--ink);grid-template-columns:minmax(12rem,.8fr) minmax(25rem,1.6fr) auto;align-items:center;display:grid;position:sticky;top:0}.identity{border-right:1px solid var(--hairline);align-self:stretch;align-items:center;gap:.75rem;padding-inline:clamp(1rem,2.4vw,2.25rem);text-decoration:none;display:flex}.identity__portrait,.identity__monogram{border:1px solid var(--ink);border-radius:50%;flex:none;width:2.75rem;height:2.75rem}.identity__portrait{object-fit:cover}.identity__monogram{background:var(--ink);color:var(--paper);font-family:var(--mono);letter-spacing:-.05em;place-items:center;font-size:.68rem;display:grid}.identity__copy{gap:.05rem;min-width:0;display:grid}.identity__copy strong{font-size:.92rem;font-weight:600;line-height:1.1}.identity__copy span{color:var(--muted);font-family:var(--mono);letter-spacing:.04em;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap;font-size:.61rem;overflow:hidden}.primary-nav{justify-content:center;align-self:stretch;align-items:center;gap:clamp(.2rem,1.4vw,1.6rem);padding-inline:1rem;display:flex}.primary-nav a,.primary-nav button{min-height:2.25rem;color:var(--muted);cursor:pointer;font-family:var(--mono);letter-spacing:.04em;text-transform:uppercase;background:0 0;border:0;place-items:center;padding:.35rem .65rem;font-size:.68rem;text-decoration:none;display:grid}.primary-nav a:hover,.primary-nav button:hover,.primary-nav a[aria-current],.primary-nav button[aria-current]{background:var(--accent-soft);color:var(--ink)}.primary-nav a[aria-current]:before,.primary-nav button[aria-current]:before{background:var(--accent);content:"";width:.3rem;height:.3rem;margin-bottom:.14rem}.header-contact{border:0;border-left:1px solid var(--hairline);background:var(--ink);color:var(--paper);cursor:pointer;align-self:stretch;align-items:center;gap:1.25rem;padding-inline:clamp(1rem,2.5vw,2.5rem);font-size:.84rem;font-weight:600;text-decoration:none;display:flex}.header-contact:hover{color:var(--canvas);text-decoration:underline;text-decoration-color:var(--accent)}.eyebrow{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;margin:0;font-size:clamp(.65rem,.8vw,.76rem);font-weight:500}.hero{grid-template-columns:minmax(0,1.65fr) minmax(20rem,.8fr);min-height:min(54rem,100svh - 7.75rem);display:grid}.hero__copy{min-width:0;padding:clamp(3rem, 7vw, 7.5rem) var(--gutter) clamp(2rem, 4vw, 4rem);flex-direction:column;justify-content:space-between;display:flex}.hero h1,.page-intro h1,.case-study__header h1,.resume-header h1,.not-found h1{letter-spacing:-.067em;max-width:12ch;margin:clamp(2rem,5vw,5.5rem) 0 2rem;font-size:clamp(3.6rem,7.1vw,7.5rem);font-weight:470;line-height:.86}.hero h1 em{color:var(--accent);font-family:var(--serif);font-weight:400}.hero__intro{max-width:39rem;color:var(--muted);margin:0 0 2rem;font-size:clamp(1.05rem,1.5vw,1.35rem);line-height:1.5}.hero__actions,.case-study__actions,.not-found__actions{flex-wrap:wrap;gap:.75rem;display:flex}.button{border:1px solid var(--ink);cursor:pointer;background:0 0;justify-content:space-between;align-items:center;gap:2rem;min-height:3.15rem;padding:.8rem 1rem;font-size:.82rem;font-weight:600;text-decoration:none;display:inline-flex}.button--dark{background:var(--ink);color:var(--paper)}.contact-dialog{border:1px solid var(--ink);background:var(--paper);width:min(100% - 2rem,48rem);max-height:min(46rem,100dvh - 2rem);color:var(--ink);margin:auto;padding:0;overflow:auto}.contact-dialog::backdrop{background:#161412b8}.contact-dialog__header,.contact-dialog__footer{justify-content:space-between;align-items:center;gap:1rem;padding:1.25rem clamp(1.25rem,4vw,2.5rem);display:flex}.contact-dialog__header{border-bottom:1px solid var(--hairline)}.contact-dialog__close{color:var(--ink);cursor:pointer;font-family:var(--mono);letter-spacing:.05em;text-transform:uppercase;background:0 0;border:0;gap:.75rem;padding:.5rem;font-size:.68rem;display:inline-flex}.contact-dialog__body{grid-template-columns:minmax(0,1.05fr) minmax(16rem,.95fr);gap:clamp(2rem,6vw,5rem);padding:clamp(2rem,6vw,4.5rem) clamp(1.25rem,4vw,2.5rem);display:grid}.contact-dialog__kicker{color:var(--muted);font-family:var(--mono);letter-spacing:.05em;text-transform:uppercase;margin:0 0 1rem;font-size:.65rem}.contact-dialog h2{font-family:var(--serif);letter-spacing:-.045em;margin:0 0 1.5rem;font-size:clamp(3.5rem,8vw,6.5rem);font-weight:400;line-height:.85}.contact-dialog__body>div>p:last-child{max-width:28rem;color:var(--muted);margin:0}.contact-details{border-top:1px solid var(--ink);margin:0}.contact-details>div{border-bottom:1px solid var(--hairline);padding-block:1rem}.contact-details dt{color:var(--muted);font-family:var(--mono);letter-spacing:.05em;text-transform:uppercase;margin-bottom:.35rem;font-size:.62rem}.contact-details dd{margin:0;font-size:.92rem}.contact-details__links{flex-wrap:wrap;gap:1rem;display:flex}.contact-dialog__footer{border-top:1px solid var(--hairline);justify-content:flex-end}body:has(.contact-dialog[open]){overflow:hidden}.button--dark:hover{text-decoration:underline;text-decoration-color:var(--accent)}.button--plain{border-color:#0000;border-bottom-color:var(--ink)}.button--outline:hover,.button--plain:hover{background:var(--accent-soft)}.hero__facts{border-top:1px solid var(--hairline);grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;margin:clamp(3rem,8vw,7rem) 0 0;padding:1.25rem 0 0;display:grid}.hero__facts div{min-width:0}.hero__facts dt,.case-study__facts dt{color:var(--muted);font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;margin-bottom:.25rem;font-size:.63rem}.hero__facts dd,.case-study__facts dd{margin:0;font-size:.85rem;font-weight:550}.hero-portrait{border-left:1px solid var(--hairline);background:var(--accent-soft);min-width:0;margin:0;position:relative;overflow:hidden}.hero-portrait>img,.portrait-fallback{object-fit:cover;width:100%;height:100%;min-height:38rem}.portrait-fallback{background:var(--accent-soft);place-items:center;display:grid;position:relative;overflow:hidden}.portrait-fallback:before,.portrait-fallback:after{background:var(--ink);content:"";position:absolute}.portrait-fallback:before{width:1px;height:120%;rotate:34deg}.portrait-fallback:after{width:120%;height:1px;rotate:-34deg}.portrait-fallback__initials{z-index:1;aspect-ratio:1;border:1px solid var(--ink);background:var(--paper);width:clamp(8rem,17vw,13rem);font-family:var(--serif);border-radius:50%;place-items:center;font-size:clamp(3rem,7vw,6rem);font-style:italic;display:grid;position:relative}.portrait-fallback__note{z-index:2;background:var(--ink);color:var(--paper);font-family:var(--mono);letter-spacing:.05em;text-transform:uppercase;padding:.35rem .5rem;font-size:.62rem;position:absolute;bottom:3.25rem;right:1rem}.hero-portrait figcaption{border-top:1px solid var(--ink);background:var(--paper);font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;justify-content:space-between;padding:.8rem 1rem;font-size:.63rem;display:flex;position:absolute;bottom:0;left:0;right:0}.home-section,.project-index-section,.archive-section{padding:var(--section-space) var(--gutter);border-top:1px solid var(--ink);scroll-margin-top:.5rem}.section-heading{grid-template-columns:minmax(10rem,1fr) minmax(0,2.15fr);gap:clamp(2rem,6vw,7rem);margin-bottom:clamp(4rem,8vw,8rem);display:grid}.section-heading__index,.contact-section__index{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;border-top:1px solid;justify-content:space-between;align-self:start;gap:1rem;padding-top:.7rem;font-size:.66rem;display:flex}.section-heading__copy h2,.index-heading h2{letter-spacing:-.055em;max-width:15ch;margin:0;font-size:clamp(2.7rem,5.2vw,5.4rem);font-weight:470;line-height:.95}.section-heading__copy>p{max-width:42rem;color:var(--muted);margin:1.5rem 0 0;font-size:clamp(1rem,1.3vw,1.2rem)}.about-grid{grid-template-columns:minmax(0,1.15fr) minmax(18rem,.85fr);gap:clamp(3rem,8vw,9rem);display:grid}.about-lead{max-width:23ch;font-family:var(--serif);margin:0;font-size:clamp(2.3rem,4.2vw,4.5rem);line-height:.98}.about-copy{max-width:38rem;color:var(--muted);align-self:end;font-size:clamp(1rem,1.2vw,1.16rem)}.about-copy p{margin:0}.about-copy p+p{margin-top:1.5rem}.project-features{border-bottom:1px solid var(--ink)}.project-feature{border-top:1px solid var(--ink);grid-template-columns:minmax(0,1.4fr) minmax(19rem,.85fr);min-height:34rem;display:grid}.project-feature__media{background:var(--canvas);min-width:0;text-decoration:none;display:grid;overflow:hidden}.project-feature__media img{object-fit:cover;width:100%;height:100%}.project-feature__copy{border-left:1px solid var(--ink);flex-direction:column;min-width:0;padding:clamp(1.5rem,3vw,3rem);display:flex}.project-feature:nth-child(2n){grid-template-columns:minmax(19rem,.85fr) minmax(0,1.4fr)}.project-feature:nth-child(2n) .project-feature__media{order:2}.project-feature:nth-child(2n) .project-feature__copy{border-right:1px solid var(--ink);border-left:0;order:1}.project-feature__meta{color:var(--muted);font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;justify-content:space-between;gap:1rem;font-size:.64rem;display:flex}.project-feature h3{letter-spacing:-.05em;max-width:10ch;margin:auto 0 1.2rem;font-size:clamp(2.15rem,3.2vw,3.7rem);font-weight:480;line-height:.95}.project-feature h3 a{text-decoration:none}.project-feature__copy>p{color:var(--muted);margin:0 0 1.5rem}.tag-list{flex-wrap:wrap;gap:.35rem 0;margin:0;padding:0;list-style:none;display:flex}.tag-list li{color:var(--muted);font-family:var(--mono);letter-spacing:.04em;text-transform:uppercase;font-size:.64rem}.tag-list li:not(:last-child):after{color:var(--accent);content:"/";margin-inline:.5rem}.project-feature__actions{flex-wrap:wrap;gap:1.25rem;margin-top:2.25rem;display:flex}.text-link{width:fit-content;font-size:.82rem;font-weight:600}.text-link--muted{color:var(--muted)}.section-tail{justify-content:flex-end;padding-top:2rem;display:flex}.capability-grid{border-top:1px solid var(--ink);border-bottom:1px solid var(--ink);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.capability{flex-direction:column;min-height:28rem;padding:1.5rem;display:flex}.capability+.capability{border-left:1px solid var(--ink)}.capability__number{color:var(--ink);font-family:var(--mono);margin:0;font-size:.66rem}.capability h3{font-family:var(--serif);margin:auto 0 1.2rem;font-size:clamp(2.3rem,4vw,4rem);font-weight:400;line-height:1}.capability>p:not(.capability__number){min-height:7.5rem;color:var(--muted);margin:0}.capability ul{border-top:1px solid var(--hairline);margin:1.5rem 0 0;padding:1rem 0 0;list-style:none}.capability li{font-family:var(--mono);letter-spacing:.04em;text-transform:uppercase;padding-block:.22rem;font-size:.67rem}.timeline{border-top:1px solid var(--ink);margin:0;padding:0;list-style:none}.timeline__item{border-bottom:1px solid var(--hairline);grid-template-columns:4.5rem minmax(10rem,.65fr) minmax(0,1.8fr);display:grid}.timeline__marker{border-right:1px solid var(--hairline);place-items:start center;padding-top:1.65rem;display:grid}.timeline__marker span{border:1px solid var(--ink);width:1.9rem;height:1.9rem;font-family:var(--mono);border-radius:50%;place-items:center;font-size:.58rem;display:grid}.timeline__period{color:var(--muted);font-family:var(--mono);letter-spacing:.05em;text-transform:uppercase;margin:0;padding:1.8rem clamp(1.25rem,3vw,3rem);font-size:.65rem}.timeline__copy{border-left:1px solid var(--hairline);grid-template-columns:minmax(12rem,.8fr) minmax(15rem,1fr);gap:2rem;padding:1.5rem 0 1.5rem clamp(1.5rem,3vw,3rem);display:grid}.timeline h3{letter-spacing:-.025em;margin:0;font-size:clamp(1.25rem,1.8vw,1.65rem);font-weight:560}.timeline__meta{color:var(--muted);font-family:var(--mono);letter-spacing:.05em;text-transform:uppercase;margin:.35rem 0 0;font-size:.64rem}.timeline__meta:before{background:var(--accent);content:"";width:.45rem;height:.45rem;margin-right:.5rem;display:inline-block}.timeline__copy>p{color:var(--muted);margin:0;padding-right:1.5rem}.resume-section--compact{padding-block:clamp(2.5rem,5vw,4.5rem)}.resume-compact__heading{grid-template-columns:minmax(10rem,1fr) minmax(0,2.15fr);gap:clamp(2rem,6vw,7rem);margin-bottom:2rem;display:grid}.resume-compact__heading h2{letter-spacing:-.055em;margin:.5rem 0 0;font-size:clamp(2.5rem,5vw,4.5rem);font-weight:480;line-height:.9}.resume-compact__body{border-top:1px solid var(--ink);border-bottom:1px solid var(--ink);grid-template-columns:minmax(18rem,1.15fr) minmax(17rem,1fr) auto;align-items:center;gap:clamp(1.5rem,4vw,4rem);padding-block:1.5rem;display:grid}.resume-compact__body>p,.resume-compact__facts{margin:0}.resume-compact__body>p{color:var(--muted)}.resume-compact__facts{gap:.8rem;display:grid}.resume-compact__facts div{grid-template-columns:5rem 1fr;gap:1rem;display:grid}.resume-compact__facts dt{color:var(--muted);font-family:var(--mono);letter-spacing:.04em;text-transform:uppercase;font-size:.62rem}.resume-compact__facts dd{margin:0;font-size:.82rem}.resume-compact__actions{justify-items:start;gap:1rem;display:grid}.contact-section{padding:var(--section-space) var(--gutter);background:var(--ink);color:var(--paper);grid-template-columns:minmax(10rem,1fr) minmax(0,2.15fr);gap:clamp(2rem,6vw,7rem);scroll-margin-top:.5rem;display:grid}.contact-section__copy>p{color:#c6bfb4;margin:0 0 1rem}.contact-section h2{max-width:10ch;font-family:var(--serif);margin:0 0 3rem;font-size:clamp(4rem,8vw,8.5rem);font-weight:400;line-height:.87}.contact-email{border-top:1px solid #5b554e;border-bottom:1px solid #5b554e;justify-content:space-between;gap:1rem;max-width:44rem;padding-block:1rem;font-size:clamp(1.1rem,2vw,1.75rem);text-decoration:none;display:flex}.contact-email:hover{color:var(--accent-soft)}.contact-links{font-family:var(--mono);letter-spacing:.05em;text-transform:uppercase;gap:2rem;margin-top:2rem;font-size:.7rem;display:flex}.site-footer{padding:2rem var(--gutter);border-top:1px solid var(--ink);color:var(--muted);font-family:var(--mono);letter-spacing:.03em;text-transform:uppercase;grid-template-columns:1fr 1.4fr .7fr auto;gap:2rem;font-size:.65rem;display:grid}.site-footer p{margin:0}.footer-name{color:var(--ink);font-weight:650}.footer-contact,.footer-links{flex-wrap:wrap;gap:.45rem 1.25rem;display:flex}.site-footer a{text-transform:none}.footer-meta{text-align:right}.page-intro,.resume-header{min-height:38rem;padding:clamp(4rem, 9vw, 9rem) var(--gutter) clamp(3rem, 6vw, 6rem);grid-template-columns:minmax(0,1.45fr) minmax(18rem,.55fr);align-items:end;gap:3rem;display:grid}.page-intro .eyebrow,.resume-header .eyebrow{grid-column:1/-1;align-self:start}.page-intro h1,.resume-header h1{max-width:11ch;margin:0}.page-intro>p:last-child,.resume-header>div:first-child>p:last-child{max-width:33rem;color:var(--muted);margin:0;font-size:1.1rem}.index-heading{grid-template-columns:minmax(10rem,1fr) minmax(0,2.15fr);gap:clamp(2rem,6vw,7rem);margin-bottom:4rem;display:grid}.index-heading>p{border-top:1px solid var(--ink);font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;margin:0;padding-top:.7rem;font-size:.66rem}.archive-list{border-top:1px solid var(--ink)}.archive-item{border-bottom:1px solid var(--hairline);grid-template-columns:7rem minmax(0,1fr) auto;gap:2rem;padding:2rem 0;display:grid}.archive-item>p{color:var(--muted);font-family:var(--mono);text-transform:uppercase;margin:0;font-size:.67rem}.archive-item h3{margin:0 0 .5rem;font-size:1.6rem}.archive-item div>p{max-width:48rem;color:var(--muted);margin:0 0 1rem}.case-study__header{min-height:40rem;padding:clamp(3rem, 7vw, 7rem) var(--gutter)}.back-link{font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;margin-bottom:clamp(4rem,8vw,8rem);font-size:.68rem;display:inline-block}.case-study__header h1{max-width:12ch;margin:1.5rem 0 2rem}.case-study__summary{max-width:48rem;color:var(--muted);margin:0;font-size:clamp(1.1rem,1.8vw,1.5rem)}.case-study__actions{margin-top:2rem}.case-study__cover{border-top:1px solid var(--ink);border-bottom:1px solid var(--ink);background:var(--canvas);margin:0}.case-study__cover img{object-fit:cover;width:100%;max-height:58rem}.project-gallery{padding:0 var(--gutter) var(--section-space)}.project-gallery__heading{border-top:1px solid var(--ink);grid-template-columns:minmax(10rem,1fr) minmax(0,2.15fr);gap:clamp(2rem,6vw,7rem);padding-block:2rem;display:grid}.project-gallery__heading h2{letter-spacing:-.045em;max-width:15ch;margin:0;font-size:clamp(2rem,3.6vw,3.75rem);font-weight:480;line-height:.95}.project-gallery__grid{border:1px solid var(--ink);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.project-gallery__grid--single{grid-template-columns:1fr}.project-gallery figure{min-width:0;margin:0}.project-gallery figure+figure{border-left:1px solid var(--ink)}.project-gallery img{aspect-ratio:8/5;object-fit:cover;width:100%}.project-gallery figcaption{border-top:1px solid var(--hairline);color:var(--muted);font-family:var(--mono);letter-spacing:.04em;text-transform:uppercase;padding:.75rem 1rem;font-size:.62rem}.case-study__body-wrap{padding:var(--section-space) var(--gutter);grid-template-columns:minmax(15rem,.72fr) minmax(0,1.7fr);gap:clamp(3rem,8vw,9rem);display:grid}.case-study__facts{border-top:1px solid var(--ink);align-self:start}.case-study__facts dl{margin:0}.case-study__facts dl>div{border-bottom:1px solid var(--hairline);padding-block:1rem}.prose{min-width:0;max-width:45rem}.prose h2{letter-spacing:-.045em;margin:4rem 0 1.25rem;font-size:clamp(2rem,3.5vw,3.5rem);font-weight:500;line-height:1}.prose h2:first-child{margin-top:0}.prose p,.prose li{color:#3f3a35;font-size:1.05rem;line-height:1.75}.prose p{margin:0 0 1.3rem}.prose ol,.prose ul{margin:1.4rem 0 1.8rem;padding-left:1.3rem}.prose li+li{margin-top:.6rem}.prose code{border:1px solid var(--hairline);background:var(--canvas);font-family:var(--mono);padding:.08rem .3rem;font-size:.88em}.next-project{padding:clamp(3rem, 6vw, 6rem) var(--gutter);border-top:1px solid var(--ink);grid-template-columns:1fr 2.15fr;gap:clamp(2rem,6vw,7rem);display:grid}.next-project p{font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;margin:0;font-size:.67rem}.next-project a{font-family:var(--serif);justify-content:space-between;gap:1rem;font-size:clamp(2.5rem,5vw,5rem);line-height:.95;text-decoration:none;display:flex}.resume-header{grid-template-columns:minmax(0,1fr) minmax(16rem,.38fr);min-height:26rem;padding-top:clamp(3rem,6vw,6rem);padding-bottom:clamp(2.5rem,5vw,4.5rem)}.resume-header>div:first-child .eyebrow{margin-bottom:3rem}.resume-header__actions{justify-items:start;gap:1.25rem;display:grid}.asset-note{border-top:1px solid var(--hairline);border-bottom:1px solid var(--hairline);max-width:20rem;color:var(--muted);font-family:var(--mono);text-transform:uppercase;margin:0;padding:.8rem 0;font-size:.66rem;line-height:1.5}.resume-document{padding:0 var(--gutter) var(--section-space)}.resume-block{border-top:1px solid var(--ink);grid-template-columns:minmax(12rem,.45fr) minmax(0,1fr);gap:clamp(2rem,6vw,7rem);padding-block:clamp(2.5rem,5vw,4.5rem);display:grid}.resume-block>h2{font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;margin:0;font-size:.69rem}.resume-entry-list{display:grid}.resume-entry{grid-template-columns:minmax(0,1fr) auto;gap:2rem;display:grid}.resume-entry+.resume-entry{border-top:1px solid var(--hairline);margin-top:2rem;padding-top:2rem}.resume-entry h3,.resume-entry p{margin:0}.resume-entry h3{margin-bottom:.4rem;font-size:1.25rem}.resume-entry>p,.resume-entry__meta{color:var(--muted);font-family:var(--mono);letter-spacing:.04em;text-transform:uppercase;font-size:.66rem}.resume-entry div>p:last-child:not(.resume-entry__meta){max-width:47rem;color:var(--muted);margin-top:.65rem}.resume-entry ul{max-width:47rem;color:var(--muted);margin:.7rem 0 0;padding-left:1.1rem}.resume-entry li+li{margin-top:.4rem}.resume-skills{grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;display:grid}.resume-skills>div{border:1px solid var(--hairline);padding:1rem}.resume-skills h3,.resume-skills p{margin:0}.resume-skills h3{font-family:var(--serif);margin-bottom:1rem;font-size:1.7rem;font-weight:400}.resume-skills p{color:var(--muted);font-family:var(--mono);text-transform:uppercase;font-size:.65rem;line-height:1.7}.resume-contact>div{flex-wrap:wrap;gap:.75rem 2rem;display:flex}.not-found{min-height:calc(100svh - 7.75rem);padding:var(--gutter);align-content:center;display:grid}.not-found__number{color:var(--accent-soft);font-family:var(--serif);margin:2rem 0 -4rem;font-size:clamp(10rem,30vw,28rem);line-height:.7}.not-found h1{max-width:10ch;margin:0 0 1.5rem;position:relative}.not-found>p:not(.eyebrow,.not-found__number){max-width:30rem;color:var(--muted);margin:0 0 2rem}@media (width<=68rem){.site-header{grid-template-columns:minmax(11rem,.7fr) minmax(24rem,1.3fr)}.header-contact{display:none}.hero{grid-template-columns:minmax(0,1.35fr) minmax(18rem,.75fr)}.timeline__copy{grid-template-columns:1fr;gap:1rem}.site-footer{grid-template-columns:repeat(2,1fr)}.footer-meta{text-align:left}}@media (width<=52rem){html{scroll-padding-top:7.75rem}body{padding:.65rem}.site-header{grid-template-columns:1fr;top:0}.home-section,.project-index-section,.archive-section,.contact-section{scroll-margin-top:.5rem}.identity{border-right:0;border-bottom:1px solid var(--hairline);min-height:4.25rem}.primary-nav{justify-content:space-between;min-width:0;min-height:3rem;padding-inline:.65rem}.primary-nav a,.primary-nav button{min-width:0;padding-inline:.4rem;font-size:.59rem}.primary-nav a[aria-current]:before,.primary-nav button[aria-current]:before{display:none}.hero{grid-template-columns:1fr;min-height:0}.hero__copy{min-height:min(47rem,100svh - 8rem)}.hero-portrait{border-top:1px solid var(--ink);border-left:0;min-height:min(42rem,110vw)}.hero-portrait>img,.portrait-fallback{min-height:min(42rem,110vw)}.section-heading,.index-heading,.contact-section,.next-project,.resume-block{grid-template-columns:1fr}.section-heading,.index-heading{gap:2rem}.about-grid{grid-template-columns:1fr;gap:3rem}.project-feature,.project-feature:nth-child(2n){grid-template-columns:1fr;min-height:0}.project-feature__media,.project-feature:nth-child(2n) .project-feature__media{border-bottom:1px solid var(--ink);order:1;min-height:18rem}.project-feature__copy,.project-feature:nth-child(2n) .project-feature__copy{border-left:0;border-right:0;order:2;min-height:27rem}.capability-grid{grid-template-columns:1fr}.capability{min-height:24rem}.capability+.capability{border-top:1px solid var(--ink);border-left:0}.timeline__item{grid-template-columns:3.5rem minmax(0,1fr)}.timeline__period{padding-bottom:0}.timeline__copy{border-left:0;grid-column:2;padding:1rem 1rem 1.75rem}.timeline__marker{grid-row:1/span 2}.resume-compact__heading,.resume-compact__body,.contact-dialog__body,.project-gallery__heading{grid-template-columns:1fr}.resume-compact__body{align-items:start}.project-gallery__grid{grid-template-columns:1fr}.project-gallery figure+figure{border-top:1px solid var(--ink);border-left:0}.contact-section{gap:4rem}.page-intro,.resume-header{grid-template-columns:1fr;min-height:35rem}.resume-header{min-height:0;padding-block:3rem}.page-intro .eyebrow,.resume-header .eyebrow{grid-column:1}.case-study__body-wrap{grid-template-columns:1fr}.case-study__facts{position:static}.next-project{gap:2rem}.archive-item{grid-template-columns:4rem minmax(0,1fr);gap:1rem}.archive-item__status{grid-column:2}.resume-skills{grid-template-columns:1fr}}@media (width<=31rem){:root{--gutter:1rem;--section-space:4.5rem}body{padding:.35rem}.site-header{top:0}.identity{padding-inline:.75rem}.identity__copy span{display:none}.primary-nav{gap:0;padding-inline:.2rem}.primary-nav a,.primary-nav button{letter-spacing:0;padding-inline:.28rem}.hero__copy{min-height:41rem;padding-top:3rem}.hero h1,.page-intro h1,.case-study__header h1,.resume-header h1,.not-found h1{font-size:clamp(3rem,15vw,4.5rem)}.hero__facts{grid-template-columns:1fr;gap:.75rem}.hero__facts div{grid-template-columns:6.5rem 1fr;display:grid}.button{width:100%}.contact-dialog{width:calc(100% - .75rem);max-height:calc(100dvh - .75rem)}.contact-dialog__footer .button{width:100%}.project-feature__media,.project-feature:nth-child(2n) .project-feature__media{min-height:13rem}.project-feature__copy,.project-feature:nth-child(2n) .project-feature__copy{min-height:25rem}.timeline__period{padding-left:1rem;padding-right:.5rem}.contact-email{align-items:flex-start;font-size:1rem}.site-footer{grid-template-columns:1fr;gap:1.25rem}.resume-entry{grid-template-columns:1fr;gap:.75rem}}@media print{body{color:#000;background:#fff;padding:0}.site-frame{background:#fff;border:0}.site-header,.site-footer,.resume-header__actions{display:none}.resume-header{min-height:0;padding:1.5rem 0 2rem}.resume-document{padding:0}.resume-block{break-inside:avoid;padding-block:1.25rem}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important}}
