@font-face{font-family:Newsreader;src:url('/assets/fonts/newsreader.woff2') format('woff2');font-display:swap;font-weight:300 700}
@font-face{font-family:PlexMono;src:url('/assets/fonts/ibm-plex-mono.woff2') format('woff2');font-display:swap;font-weight:400}
:root{--paper:#f5f6f4;--ink:#171a1d;--slate:#667078;--line:#d9ddda;--blue:#315cff;--white:#fff;--max:1440px;--pad:clamp(1.25rem,4vw,4.5rem)}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--ink);font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:clamp(1rem,.96rem + .18vw,1.125rem);line-height:1.6}
a{color:inherit;text-decoration-thickness:1px;text-underline-offset:.24em}
a:hover{color:var(--blue)}
img{display:block;max-width:100%;height:auto}
button{font:inherit}
.skip-link{position:fixed;left:1rem;top:1rem;z-index:20;padding:.75rem 1rem;background:var(--ink);color:white;transform:translateY(-180%)}
.skip-link:focus{transform:none}
:focus-visible{outline:3px solid var(--blue);outline-offset:3px}
.site-header{max-width:var(--max);margin:auto;padding:1.75rem var(--pad);display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}
.wordmark{font-family:PlexMono,monospace;font-size:.8rem;text-transform:uppercase;letter-spacing:.08em;text-decoration:none}
.site-header nav,.site-footer nav{display:flex;gap:clamp(1rem,3vw,3rem);font-size:.85rem}
.site-header nav a{text-decoration:none}
main{max-width:var(--max);margin:auto;padding-inline:var(--pad)}
.hero{min-height:min(74vh,780px);display:grid;grid-template-columns:repeat(12,1fr);grid-template-rows:auto 1fr auto;gap:1.5rem 1rem;padding-block:clamp(5rem,12vw,11rem) 3rem}
.hero>.eyebrow{grid-column:1/5;align-self:start}
.hero h1{grid-column:2/12;margin:0;align-self:center;font-family:Newsreader,Georgia,serif;font-weight:380;font-size:clamp(3.4rem,8vw,9.25rem);line-height:.88;letter-spacing:-.055em;max-width:13ch}
.hero-intro{grid-column:7/12;margin:0;font-size:clamp(1.2rem,1.7vw,1.65rem);line-height:1.4;max-width:31rem}
.hero-notes{grid-column:2/6;display:flex;flex-direction:column;align-self:end;gap:.35rem;font-family:PlexMono,monospace;font-size:.76rem}
.availability{display:flex;align-items:center;gap:.55rem}.availability i{width:.55rem;height:.55rem;background:var(--blue);border-radius:50%}
.eyebrow{font-family:PlexMono,monospace;color:var(--slate);font-size:.72rem;letter-spacing:.09em;text-transform:uppercase}
.profile-copy{display:grid;grid-template-columns:repeat(12,1fr);padding-block:clamp(4rem,8vw,8rem);border-top:1px solid var(--line)}
.profile-copy>*{grid-column:5/11}
.workbench{position:relative;padding-block:clamp(5rem,10vw,9rem)}
.section-head{display:grid;grid-template-columns:repeat(12,1fr);align-items:end;margin-bottom:5rem}
.section-head .eyebrow{grid-column:1/4}.section-head h2{grid-column:5/12;margin:0;font:400 clamp(2.8rem,5vw,5.7rem)/.98 Newsreader,Georgia,serif;letter-spacing:-.04em}
.bench-line{position:absolute;left:0;right:0;top:22rem;height:1px;background:var(--ink);opacity:.55}
.project-grid{position:relative;display:flex;flex-direction:column;gap:clamp(6rem,12vw,12rem)}
.project-card{display:grid;grid-template-columns:repeat(12,1fr);gap:1rem;align-items:end}
.project-card:nth-child(even) .project-image{grid-column:5/13;order:2}.project-card:nth-child(even) .project-copy{grid-column:1/4;order:1}
.project-image{grid-column:1/8;aspect-ratio:4/3;overflow:hidden;background:#e5e8e5;text-decoration:none}
.project-image picture{display:block;width:100%;height:100%}.project-image img{width:100%;height:100%;object-fit:cover;filter:saturate(.88);transition:transform .7s cubic-bezier(.2,.75,.25,1)}
.project-image:hover img{transform:scale(1.018)}
.image-placeholder{display:grid;place-items:center;width:100%;height:100%;font:300 clamp(5rem,12vw,12rem)/1 Newsreader,serif;color:#bbc0bc}
.project-copy{grid-column:9/13;padding-bottom:1.2rem;background:var(--paper)}
.project-meta{display:flex;flex-wrap:wrap;gap:.35rem 1rem;padding-top:.85rem;border-top:1px solid var(--ink);font:500 .68rem/1.4 PlexMono,monospace;text-transform:uppercase;color:var(--slate)}
.project-copy h3{margin:1.4rem 0 .7rem;font:450 clamp(2.1rem,3.2vw,3.8rem)/1 Newsreader,serif;letter-spacing:-.035em}.project-copy h3 a{text-decoration:none}
.project-copy p{color:#343a3e;max-width:30rem}
.tags{display:flex;flex-wrap:wrap;gap:.4rem .9rem;margin:1.25rem 0 0;padding:0;list-style:none;font:400 .7rem PlexMono,monospace;color:var(--slate)}
.contact-strip{margin-top:4rem;padding-block:clamp(5rem,9vw,9rem);border-top:1px solid var(--line);display:flex;justify-content:space-between;align-items:end;gap:3rem}
.contact-strip h2{margin:0;font:380 clamp(3rem,7vw,7.5rem)/.9 Newsreader,serif;letter-spacing:-.05em;max-width:8ch}
.contact-strip div{display:flex;gap:1.5rem}
.site-footer{max-width:var(--max);margin:auto;padding:2rem var(--pad) 3rem;border-top:1px solid var(--line);display:flex;justify-content:space-between;align-items:start;font:400 .72rem PlexMono,monospace;color:var(--slate)}
.consent-settings{max-width:30rem}.consent-settings summary{cursor:pointer}.consent-settings form{display:flex;gap:.5rem;margin-top:1rem;flex-wrap:wrap}
.consent-settings button,.consent button{border:1px solid var(--ink);background:var(--ink);color:white;padding:.7rem 1rem;cursor:pointer}.consent-settings .quiet,.consent .quiet{background:transparent;color:var(--ink)}
.consent{position:fixed;z-index:10;left:1rem;right:1rem;bottom:1rem;max-width:70rem;margin:auto;padding:1.5rem 1.75rem;background:var(--white);border:1px solid var(--ink);box-shadow:0 18px 60px #171a1d22;display:grid;grid-template-columns:1fr auto;gap:2rem;align-items:end}.consent h2{font:450 1.65rem Newsreader,serif;margin:.25rem 0}.consent p{margin:.25rem 0}.consent form{display:flex;gap:.55rem;flex-wrap:wrap;justify-content:end}
.project-detail{display:grid;grid-template-columns:repeat(12,1fr);gap:1rem;padding-block:clamp(5rem,9vw,9rem)}
.project-title{grid-column:2/10}.project-title h1{margin:.75rem 0;font:380 clamp(4rem,9vw,9rem)/.86 Newsreader,serif;letter-spacing:-.055em}.project-title>p:last-child{max-width:42rem;font-size:1.4rem}
.project-rail{grid-column:10/13;padding-top:2rem}.project-rail dl{border-top:1px solid var(--ink);font:400 .7rem PlexMono,monospace}.project-rail dt{color:var(--slate);margin-top:1rem}.project-rail dd{margin:.2rem 0}.project-rail dd span{display:block}.project-links{display:flex;flex-direction:column;margin-top:2rem}
.project-cover{grid-column:1/13;margin:clamp(4rem,8vw,8rem) 0}.project-cover img{width:100%;max-height:85vh;object-fit:cover}.project-cover figcaption,.gallery figcaption{font:400 .7rem PlexMono,monospace;color:var(--slate);padding-top:.5rem}
.project-body{grid-column:4/10}.prose h2{font:450 clamp(2rem,3.4vw,3.5rem)/1.05 Newsreader,serif;letter-spacing:-.025em;margin:2.5em 0 .6em}.prose h3{font-size:1.25rem;margin-top:2.2em}.prose p,.prose li{max-width:68ch}.prose blockquote{margin:2rem 0;padding-left:1.5rem;border-left:2px solid var(--blue);font:italic 1.35rem Newsreader,serif}.prose pre{overflow:auto;padding:1.25rem;background:var(--ink);color:#f8f8f5}.prose code{font-family:PlexMono,monospace;font-size:.85em}
.gallery{grid-column:1/13;display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-top:6rem}.gallery figure{margin:0}.gallery img{width:100%;aspect-ratio:4/3;object-fit:cover}
.back-link{grid-column:4/10;margin-top:6rem}
.legal{max-width:880px;padding-block:clamp(5rem,10vw,10rem)}.legal h1{font:400 clamp(4rem,9vw,8rem)/.9 Newsreader,serif;letter-spacing:-.05em}
.empty{padding:4rem 0;color:var(--slate)}
@media(max-width:800px){.site-header{padding-block:1.2rem}.hero{min-height:0;display:block;padding-block:5rem 7rem}.hero h1{margin:2rem 0;font-size:clamp(3.4rem,16vw,6rem)}.hero-intro{margin:2.5rem 0}.hero-notes{margin-top:3rem}.profile-copy{display:block}.section-head{display:block}.section-head h2{margin-top:1rem}.bench-line{display:none}.project-grid{gap:6rem}.project-card,.project-card:nth-child(even){display:flex;flex-direction:column;align-items:stretch}.project-card .project-image,.project-card:nth-child(even) .project-image,.project-card .project-copy,.project-card:nth-child(even) .project-copy{order:initial}.project-copy{padding-top:1rem}.contact-strip{display:block}.contact-strip div{margin-top:3rem}.site-footer{flex-wrap:wrap;gap:1.5rem}.consent{grid-template-columns:1fr}.consent form{justify-content:start}.project-detail{display:block}.project-title h1{font-size:clamp(4rem,18vw,7rem)}.project-rail{margin-top:3rem}.project-cover{margin-block:4rem}.project-body{margin-top:4rem}.gallery{grid-template-columns:1fr}.back-link{display:block}.site-header nav{gap:1rem}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.project-image img{transition:none}}
