@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);scrollbar-gutter:stable;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:0;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)}.visually-hidden{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.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{background:var(--paper);border:0;width:100%;min-height:100vh;margin-inline:auto;overflow:clip}@media (width>=100rem){body{padding:0 clamp(.5rem,1.6vw,1.5rem) clamp(.5rem,1.6vw,1.5rem)}.site-frame{width:min(100%, var(--frame-width));border:1px solid var(--ink);border-top:0;min-height:calc(100vh - clamp(.5rem,1.6vw,1.5rem))}}.site-header{z-index:100;border-bottom:1px solid var(--hairline);background:var(--paper);min-height:4.25rem;box-shadow:0 -1px 0 var(--ink);grid-template-columns:minmax(0,1fr) auto;align-items:center;display:grid;position:sticky;top:0}.primary-nav{justify-content:flex-start;align-self:stretch;align-items:center;gap:clamp(.2rem,1.4vw,1.2rem);padding-inline:clamp(.75rem,2vw,1.75rem);display:flex}.primary-nav a,.primary-nav button{white-space:nowrap;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;position:relative}.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;position:absolute;top:.28rem;left:50%;transform:translate(-50%)}.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,.case-study__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__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{border-bottom:1px solid var(--hairline);justify-content:space-between;align-items:center;gap:1rem;padding:1.25rem clamp(1.25rem,4vw,2.5rem);display:flex}.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}.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}.page-section{padding:clamp(2.25rem, 3.5vw, 3.5rem) var(--gutter);border-top:1px solid var(--ink);scroll-margin-top:.5rem}.section-label{color:var(--muted);font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;margin:0 0 clamp(1.5rem,3vw,2.5rem);font-size:.66rem;font-weight:500}.entry-rows{border-bottom:1px solid var(--ink)}.entry-row{border-top:1px solid var(--ink);grid-template-columns:minmax(9rem,.5fr) minmax(0,2.5fr);gap:clamp(1.25rem,4vw,4rem);padding:clamp(1.75rem,3vw,2.75rem) 0;display:grid}.entry-row__meta{min-width:0;color:var(--muted);font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;flex-direction:column;align-self:start;gap:.3rem;font-size:.64rem;display:flex}.entry-row__copy{min-width:0}.entry-row h3{letter-spacing:-.05em;max-width:18ch;margin:0 0 .9rem;font-size:clamp(1.9rem,3vw,3rem);font-weight:480;line-height:.95}.entry-row h3 a{text-decoration:none}.entry-row__credit{color:var(--muted);font-family:var(--mono);letter-spacing:.05em;text-transform:uppercase;margin:-.35rem 0 .7rem;font-size:.64rem}.entry-row__credit:before{background:var(--accent);content:"";width:.45rem;height:.45rem;margin-right:.5rem;display:inline-block}.entry-row__copy>p{max-width:52rem;color:var(--muted);margin:0 0 1.1rem}.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}.entry-row__actions{flex-wrap:wrap;gap:1.25rem;margin-top:1.4rem;display:flex}.entry-row__status{color:var(--muted);font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;margin:0;font-size:.64rem}.text-link{align-items:baseline;gap:.35em;width:fit-content;font-size:.82rem;font-weight:600;display:inline-flex}.text-link--muted{color:var(--muted)}.section-tail{justify-content:flex-end;padding-top:1.5rem;display:flex}.skill-grid{border-top:1px solid var(--ink);border-bottom:1px solid var(--ink);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.skill{flex-direction:column;min-height:21rem;padding:1.25rem 1.5rem;display:flex}.skill:nth-child(2n){border-left:1px solid var(--ink)}.skill:nth-child(n+3){border-top:1px solid var(--ink)}.skill__number{color:var(--ink);font-family:var(--mono);margin:0;font-size:.66rem}.skill h3{font-family:var(--serif);margin:auto 0 .9rem;font-size:clamp(2.3rem,4vw,4rem);font-weight:400;line-height:1}.skill>p:not(.skill__number){min-height:6rem;color:var(--muted);margin:0}.skill ul{border-top:1px solid var(--hairline);margin:1.1rem 0 0;padding:.85rem 0 0;list-style:none}.skill li{font-family:var(--mono);letter-spacing:.04em;text-transform:uppercase;padding-block:.22rem;font-size:.67rem}.timeline{overscroll-behavior-inline:contain;scrollbar-color:var(--ink) var(--hairline);scroll-snap-type:inline proximity;grid-template-columns:repeat(4,minmax(14rem,1fr));width:100%;max-width:100%;margin:0;padding:0;list-style:none;display:grid;position:relative;overflow-x:auto}.timeline-hint{color:var(--muted);font-family:var(--mono);letter-spacing:.05em;text-align:right;text-transform:uppercase;margin:0 0 1rem;font-size:.62rem;display:none}.timeline__item{scroll-snap-align:start;grid-template-rows:3.25rem 2.5rem 1fr;min-width:0;display:grid}.timeline__item:not(:last-child) .timeline__copy{border-right:1px solid var(--hairline)}.timeline__marker{place-items:center;display:grid;position:relative}.timeline__marker:before{background:var(--ink);content:"";height:1px;position:absolute;left:0;right:0}.timeline__item:first-child .timeline__marker:before{left:50%}.timeline__item:last-child .timeline__marker:before{right:50%}.timeline__marker span{z-index:1;border:1px solid var(--ink);background:var(--paper);width:2rem;height:2rem;font-family:var(--mono);border-radius:50%;place-items:center;font-size:.58rem;display:grid;position:relative}.timeline__item:last-child .timeline__marker span{background:var(--ink);color:var(--paper);box-shadow:0 0 0 .2rem var(--paper), 0 0 0 .28rem var(--accent)}.timeline__period{color:var(--muted);font-family:var(--mono);letter-spacing:.05em;text-align:center;text-transform:uppercase;margin:0;padding:0 1.25rem;font-size:.65rem}.timeline__copy{border-top:1px solid var(--hairline);border-bottom:1px solid var(--ink);padding:1.5rem clamp(1rem,2vw,1.75rem) 2rem}.timeline h3 a{text-decoration-color:var(--hairline)}.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:1.25rem 0 0}.timeline__actions{flex-wrap:wrap;gap:.4rem 1rem;margin-top:1.1rem;display:flex}.timeline__source{margin:0;font-size:.75rem}.timeline__source--private{color:var(--muted);font-family:var(--mono);letter-spacing:.05em;text-transform:uppercase;font-size:.62rem}.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;flex-wrap:wrap;justify-content:center;align-items:baseline;gap:.75rem clamp(1.25rem,3vw,2.75rem);font-size:.65rem;display:flex}.site-footer p{margin:0}.footer-name{color:var(--ink);font-weight:650}.footer-email{min-width:0}.footer-links{flex-wrap:wrap;gap:.45rem 1.25rem;display:flex}.site-footer a{text-transform:none}.footer-meta{text-align:center}.resume-header{padding:clamp(1.25rem, 2.5vw, 1.9rem) var(--gutter) clamp(1rem, 2vw, 1.4rem);grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:1.5rem 2rem;display:grid}.resume-header .eyebrow{margin-bottom:.5rem}.resume-header h1{letter-spacing:-.045em;max-width:16ch;margin:0;font-size:clamp(2rem,3.4vw,3rem);font-weight:470;line-height:1}.resume-header>div:first-child>p:last-child{max-width:40rem;color:var(--muted);margin:.35rem 0 0;font-size:.95rem}.case-study__header{padding:clamp(3rem, 7vw, 7rem) var(--gutter);border-bottom:1px solid var(--ink)}.case-study__header--with-media{grid-template-columns:minmax(0,1.6fr) minmax(15rem,1fr);align-items:start;gap:clamp(1.5rem,3vw,3.5rem);display:grid}.case-study__intro{min-width:0}@media (width<=75rem){.case-study__header--with-media{grid-template-columns:1fr}.case-study__media{max-width:32rem}}.back-link{font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;margin-bottom:clamp(2.5rem,5vw,4.5rem);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}.media-panel{min-width:0}.media-panel__label{color:var(--muted);font-family:var(--mono);letter-spacing:.07em;text-transform:uppercase;margin:0 0 .75rem;font-size:.62rem;font-weight:500}.media-panel__figure{border:1px solid var(--ink);background:var(--canvas);min-width:0;margin:0}.media-panel__figure+.media-panel__figure{margin-top:1.25rem}.media-panel img{width:100%;height:auto}.media-panel figcaption{border-top:1px solid var(--hairline);color:var(--muted);font-family:var(--mono);letter-spacing:.04em;text-transform:uppercase;padding:.6rem .85rem;font-size:.6rem}.media-panel__figure--terminal{border-color:var(--ink);background:var(--ink);container-type:inline-size}.media-panel__figure--terminal pre{color:var(--paper);font-family:var(--mono);tab-size:4;margin:0;padding:clamp(.6rem,3cqw,1.1rem) clamp(.5rem,2.6cqw,1rem);font-size:clamp(.56rem,2.2cqw,.72rem);line-height:1.45;overflow-x:auto}.media-panel__figure--terminal figcaption{border-top-color:var(--muted);color:var(--hairline)}.case-study__body-wrap{padding:var(--section-space) var(--gutter);grid-template-columns:minmax(15rem,.72fr) minmax(0,1.7fr);grid-template-areas:"facts prose";gap:clamp(3rem,8vw,9rem);display:grid}.case-study__facts{grid-area:facts}.case-study__body-wrap>.prose{grid-area:prose}.case-study__media{align-self:start;min-width:0}.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__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) clamp(1.25rem, 2.5vw, 2rem)}.resume-block{border-top:1px solid var(--ink);grid-template-columns:minmax(6.5rem,.13fr) minmax(0,1fr);gap:clamp(1rem,2vw,2rem);padding-block:clamp(.9rem,1.5vw,1.15rem);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:1.5rem;display:grid}.resume-entry+.resume-entry{border-top:1px solid var(--hairline);margin-top:.6rem;padding-top:.6rem}.resume-entry h3,.resume-entry p{margin:0}.resume-entry h3{margin-bottom:.15rem;font-size:1rem;line-height:1.2}.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:66rem;color:var(--muted);margin-top:.25rem;font-size:.875rem;line-height:1.4}.resume-entry ul{max-width:66rem;color:var(--muted);margin:.3rem 0 0;padding-left:1rem;font-size:.875rem;line-height:1.4}.resume-entry li+li{margin-top:.15rem}.resume-skills{grid-template-columns:repeat(3,minmax(0,1fr));gap:.75rem;display:grid}.resume-skills>div{border:1px solid var(--hairline);padding:.6rem .75rem}.resume-skills h3,.resume-skills p{margin:0}.resume-skills h3{font-family:var(--serif);margin-bottom:.25rem;font-size:1.05rem;font-weight:400}.resume-skills p{color:var(--muted);font-family:var(--mono);text-transform:uppercase;font-size:.62rem;line-height:1.55}.resume-contact>div{flex-wrap:wrap;gap:.4rem 1.75rem;font-size:.9rem;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){.hero{grid-template-columns:minmax(0,1.35fr) minmax(18rem,.75fr)}}@media (width<=52rem){html{scroll-padding-top:4.5rem}.site-header{grid-template-columns:minmax(0,1fr) auto;top:0}.page-section{scroll-margin-top:.5rem}.header-contact{padding-inline:1rem}.primary-nav{overscroll-behavior-inline:contain;scrollbar-width:none;gap:.1rem;min-width:0;min-height:3.25rem;padding-inline:.4rem;overflow-x:auto}.primary-nav::-webkit-scrollbar{display:none}.primary-nav a,.primary-nav button{min-width:0;padding-inline:.3rem;font-size:.55rem}.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)}.next-project,.resume-block{grid-template-columns:1fr}.entry-row{grid-template-columns:1fr;gap:1rem}.skill-grid{grid-template-columns:1fr}.skill{min-height:19rem}.skill+.skill{border-top:1px solid var(--ink);border-left:0}.timeline-hint{display:block}.contact-dialog__body{grid-template-columns:1fr}.resume-header{grid-template-columns:1fr;gap:1.25rem}.resume-header .eyebrow{grid-column:1}.case-study__body-wrap{grid-template-columns:1fr;grid-template-areas:"facts""prose"}.case-study__facts{position:static}.next-project{gap:2rem}.resume-skills{grid-template-columns:1fr}}@media (width<=31rem){:root{--gutter:1rem;--section-space:4.5rem}.site-header{top:0}.primary-nav{gap:0;padding-inline:.15rem}.primary-nav a,.primary-nav button{letter-spacing:0;padding-inline:.22rem;font-size:.52rem}.header-contact{padding-inline:.75rem;font-size:.7rem}.hero__copy{min-height:41rem;padding-top:3rem}.hero h1,.case-study__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)}.site-footer{gap:.5rem 1rem}.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}}
