@font-face{font-family:"Source Sans 3";font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/source-sans-3-latin-400-normal.DQi5PRDE.woff2)format("woff2"),url(/_astro/source-sans-3-latin-400-normal.RR2C27NP.woff)format("woff")}@font-face{font-family:"Source Sans 3";font-style:italic;font-display:swap;font-weight:400;src:url(/_astro/source-sans-3-latin-400-italic.bFKvakRX.woff2)format("woff2"),url(/_astro/source-sans-3-latin-400-italic.V6AhVXnr.woff)format("woff")}@font-face{font-family:"Source Sans 3";font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/source-sans-3-latin-600-normal.DeckBYAU.woff2)format("woff2"),url(/_astro/source-sans-3-latin-600-normal.Ck0n4g8U.woff)format("woff")}@font-face{font-family:"Source Serif 4";font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/source-serif-4-latin-500-normal.CUHe9xxf.woff2)format("woff2"),url(/_astro/source-serif-4-latin-500-normal.D4bPw0i_.woff)format("woff")}@font-face{font-family:"Source Serif 4";font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/source-serif-4-latin-600-normal.DouSKlru.woff2)format("woff2"),url(/_astro/source-serif-4-latin-600-normal.DeJomR3S.woff)format("woff")}@font-face{font-family:"Source Serif 4";font-style:italic;font-display:swap;font-weight:500;src:url(/_astro/source-serif-4-latin-500-italic.D3FJhX-J.woff2)format("woff2"),url(/_astro/source-serif-4-latin-500-italic.ChAd9c84.woff)format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-latin-400-normal.DMJ8VG8y.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-400-normal.CvHOgSBP.woff)format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-latin-500-normal.DSY6xOcd.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-500-normal.CB9ihrfo.woff)format("woff")}:root{--bg:#eceae4;--surface:#f7f6f2;--ink:#14171c;--ink-soft:#2a2e33;--muted:#3e433c;--line:#c4c0b4;--signal:#d2f03c;--serif:"Source Serif 4", "Iowan Old Style", Palatino, "Palatino Linotype", serif;--sans:"Source Sans 3", "Segoe UI", sans-serif;--mono:"IBM Plex Mono", ui-monospace, monospace;color-scheme:light}*{box-sizing:border-box}html{background:var(--bg);scroll-behavior:smooth}body{background:var(--bg);min-height:100dvh;color:var(--ink);font-family:var(--sans);text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;flex-direction:column;margin:0;font-size:1.125rem;line-height:1.6;display:flex}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.button{transition:none}}img{max-width:100%}:focus-visible{outline:2px solid var(--ink);outline-offset:3px}::selection{background:var(--signal);color:var(--ink)}.skip{z-index:40;background:var(--signal);color:var(--ink);padding:.5rem .75rem;font-weight:600;text-decoration:none;position:absolute;top:-4rem;left:1rem}.skip:focus{top:.5rem}.wrap{width:min(1120px,100% - 2.5rem);margin-inline:auto}h1,h2,h3{font-family:var(--serif);letter-spacing:-.03em;color:var(--ink);font-weight:600;line-height:1.05}h1,h2,h3,p{margin-top:0}p{margin-bottom:1rem}p:last-child{margin-bottom:0}a{color:inherit}.kicker,.num,.meta-line,.label{font-family:var(--mono);letter-spacing:.07em;text-transform:uppercase;font-size:.75rem}.kicker{color:var(--muted);margin:.35rem 0 0}.block>.kicker{letter-spacing:.04em;font-size:1.125rem;line-height:1.35}.num{color:var(--muted);margin:.3rem 0 .45rem}.mark{background-color:var(--signal);-webkit-box-decoration-break:clone;box-decoration-break:clone;padding:0 .06em}.button{background:var(--ink);min-height:2.85rem;color:var(--bg);border:1px solid var(--ink);justify-content:center;align-items:center;padding:.55rem 1.05rem;font-weight:600;text-decoration:none;transition:background-color .12s linear,color .12s linear,border-color .12s linear;display:inline-flex}.button:hover{background:var(--signal);color:var(--ink)}.text-link{text-underline-offset:.2em;font-weight:600}.site-header{z-index:20;background:var(--bg);border-bottom:1px solid var(--line);position:sticky;top:0}.signal-bar{background:var(--signal);height:4px}.bar{justify-content:space-between;align-items:center;gap:1rem;min-height:4.25rem;display:flex}.logo{font-family:var(--serif);letter-spacing:-.03em;color:var(--ink);flex:none;font-size:1.35rem;font-weight:600;line-height:1;text-decoration:none}.logo span{font-style:italic;font-weight:500}.primary-nav{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.35rem 1.1rem;display:flex}.primary-nav a{color:var(--ink);padding:.35rem .1rem;font-weight:600;text-decoration:none}.primary-nav a[aria-current=page]{text-underline-offset:.25em;text-decoration:underline}@media (width<=720px){.bar{flex-direction:column;align-items:stretch;padding-block:.85rem}.primary-nav{flex-shrink:0;justify-content:flex-start;width:100%}}main{flex:1 0 auto}main:focus{outline:none}.hero{padding-block:clamp(2.75rem,7vw,5.25rem) clamp(2.5rem,6vw,4.25rem)}.hero h1{letter-spacing:-.035em;margin-bottom:1.15rem;font-size:clamp(2.8rem,6vw,4.7rem);line-height:.96}.lede{max-width:38rem;color:var(--ink-soft);font-size:1.28rem;line-height:1.5}.actions{flex-wrap:wrap;align-items:center;gap:.8rem 1.15rem;margin-top:1.6rem;display:flex}.meta-line{color:var(--muted);flex-wrap:wrap;gap:.35rem 0;margin:1.75rem 0 0;display:flex}.meta-line span:not(:last-child):after{content:"·";margin-inline:.7rem}.block p,.block li{max-width:42rem}.block{border-top:1px solid var(--line);grid-template-columns:11rem minmax(0,1fr);gap:1rem 2.5rem;padding-block:clamp(2.6rem,6vw,4.4rem);scroll-margin-top:8rem;display:grid}.page-head{border-top:0;padding-top:clamp(2.4rem,5vw,3.8rem)}.block h2,.page-head h1{text-wrap:balance;max-width:22ch;margin-bottom:1rem;font-size:clamp(2.15rem,4vw,3.15rem)}.hero h1{text-wrap:auto;max-width:none}.rows article{border-top:1px solid var(--line);grid-template-columns:3.2rem minmax(9rem,13rem) minmax(0,1fr);gap:.75rem 1.25rem;padding-block:1.2rem;display:grid}.rows article:last-child{border-bottom:1px solid var(--line)}.rows h3,.steps h3,.service h3,.timeline h3{margin-bottom:.35rem;font-size:1.45rem}.points{margin:1.2rem 0 0;padding:0;list-style:none}.points li{max-width:40rem;margin-bottom:.75rem;padding-left:1.2rem;position:relative}.points li:before{content:"";background:var(--ink);width:.42rem;height:.42rem;position:absolute;top:.55rem;left:0}.aside{background:var(--surface);border-left:4px solid var(--signal);max-width:40rem;margin-top:1.4rem;padding:.95rem 1.05rem}.steps{grid-template-columns:repeat(4,minmax(0,1fr));gap:1.25rem;margin:1.8rem 0 0;padding:0;list-style:none;display:grid}.steps li{border-top:2px solid var(--ink);padding-top:.8rem}.note{max-width:40rem;color:var(--ink-soft);margin-top:1.4rem}.portrait{object-fit:cover;object-position:center;border:1px solid var(--ink);background:#ddd;width:9.5rem;height:9.5rem;display:block}.portrait-large{width:min(100%,18rem);height:22rem;box-shadow:8px 8px 0 var(--ink);margin:0 8px 8px 0}.portrait-small{width:9.5rem;height:9.5rem;box-shadow:5px 5px 0 var(--ink);margin:0 5px 5px 0}.about-intro{grid-template-columns:minmax(11rem,18rem) minmax(0,1fr);align-items:start;gap:1.25rem 2rem;display:grid}.about-intro h1{max-width:none}.timeline,.start-list{margin:0;padding:0;list-style:none}.timeline li,.service,.start-list li{border-top:1px solid var(--line);padding-block:1.15rem}.timeline li:last-child,.service:last-child,.start-list li:last-child{border-bottom:1px solid var(--line)}.when,.deliverable span,.start-list .num{display:block}.deliverable{margin-top:.8rem}.deliverable span{color:var(--muted);margin-bottom:.2rem}.stack{gap:.9rem;margin:0;display:grid}.stack div{border-top:1px solid var(--line);grid-template-columns:9rem minmax(0,1fr);gap:.75rem 1.25rem;padding-top:.85rem;display:grid}.stack dt{font-family:var(--mono);letter-spacing:.07em;text-transform:uppercase;color:var(--muted);font-size:.75rem}.stack dd{margin:0}.big-link{font-family:var(--serif);letter-spacing:-.03em;overflow-wrap:anywhere;text-underline-offset:.12em;font-size:clamp(1.7rem,4vw,2.7rem);font-weight:600;line-height:1.15}.nowrap{white-space:nowrap}.cta-band{background:var(--ink);color:var(--bg);border-top:4px solid var(--signal)}.cta-band :focus-visible{outline-color:var(--signal)}.cta-inner{grid-template-columns:minmax(0,1.4fr) minmax(12rem,.7fr);align-items:end;gap:1.5rem 2rem;padding-block:3.5rem;display:grid}.cta-band h2{color:var(--bg);max-width:16ch;margin-bottom:.8rem;font-size:clamp(2.1rem,4vw,3rem)}.cta-band p{color:#e4e0d6;max-width:36rem}.cta-band .button{background:var(--signal);color:var(--ink);border-color:var(--signal)}.cta-band .button:hover{color:var(--signal);border-color:var(--signal);background:0 0}.cta-actions{flex-direction:column;align-items:flex-start;gap:.8rem;display:flex}.cta-band .text-link{color:var(--bg)}.site-footer{background:var(--ink);color:#e7e2d6;padding-block:3rem 1.5rem}.site-footer :focus-visible{outline-color:var(--signal)}.footer-grid{grid-template-columns:1fr auto;align-items:start;gap:2rem;display:grid}.site-footer .logo{color:var(--bg);justify-self:start;display:inline-block}.site-footer .logo span{color:var(--signal)}.site-footer a{color:inherit}.site-footer a:hover{color:var(--signal)}.footer-contact{text-align:right;flex-direction:column;align-items:flex-end;gap:.35rem;display:flex}.footer-contact a{text-underline-offset:.18em}.footer-base{color:#b7b2a6;border-top:1px solid #2c3036;margin-top:2.5rem;padding-top:1rem;font-size:.95rem}.cv-kicker{margin-top:clamp(2.4rem,5vw,3.8rem)}.cv{max-width:46rem;padding-bottom:4.5rem}.cv h1{max-width:none;margin:2.25rem 0 .8rem;font-size:clamp(1.8rem,3vw,2.4rem)}.cv h1:first-child{margin-top:1.5rem}.cv h3{margin:1.6rem 0 .45rem;font-size:1.2rem;line-height:1.3}.cv p,.cv li{max-width:46rem}.cv a{text-underline-offset:.15em}.cv blockquote{border-left:3px solid var(--line);margin:.4rem 0;padding-left:1rem}.cv ul{margin:.35rem 0 1rem;padding-left:1.15rem}.cv li{margin-bottom:.45rem}.cv-edu{margin:.4rem 0 0;padding:0;list-style:none}.cv-edu li{border-top:1px solid var(--line);grid-template-columns:7.5rem minmax(0,1fr);align-items:baseline;gap:.35rem 1.25rem;margin:0;padding-block:.85rem;display:grid}.cv-edu li:last-child{border-bottom:1px solid var(--line)}.cv-edu li span:first-child{font-family:var(--mono);letter-spacing:.03em;color:var(--muted);font-size:.82rem}@media (width<=900px){.cta-inner,.footer-grid,.about-intro,.steps{grid-template-columns:1fr 1fr}.cta-inner,.footer-grid,.about-intro{grid-template-columns:1fr}.footer-contact{text-align:left;align-items:flex-start}.steps{grid-template-columns:1fr 1fr}}@media (width<=720px){.block,.rows article,.stack div{grid-template-columns:1fr}}@media (width<=560px){.steps{grid-template-columns:1fr}}
