:root{--ink:#0b0e17;--ink-2:#10141f;--paper:#e9e9e2;--paper-dim:#9a9daa;--accent:#8b9bff;--accent-dim:#8b9bff66;--hairline:#ffffff1a;--font-display:"Spectral", georgia, serif;--font-body:"Inter", system-ui, sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, monospace;--gutter:clamp(1.25rem, 4vw, 4rem);--measure:34em}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{background:var(--ink);color:var(--paper);font-family:var(--font-body);-webkit-font-smoothing:antialiased;font-size:1rem;line-height:1.6}img{max-width:100%;display:block}a{color:inherit}::selection{background:var(--accent);color:var(--ink)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.site-header{z-index:10;padding:1rem var(--gutter);-webkit-backdrop-filter:blur(8px);background:linear-gradient(#0b0e17eb,#0b0e178c);justify-content:space-between;align-items:center;display:flex;position:fixed;inset:0 0 auto}.wordmark{display:block}.wordmark img{opacity:.92;width:auto;height:1.9rem;transition:opacity .15s;display:block}.wordmark:hover img{opacity:1}.site-nav{gap:1.75rem;display:flex}.site-nav a{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;opacity:.7;font-size:.72rem;text-decoration:none;transition:opacity .15s}.site-nav a:hover{opacity:1}.hero{place-items:center;min-height:100svh;display:grid;position:relative;overflow:hidden}.hero canvas{width:100%;height:100%;position:absolute;inset:0}.hero-inner{text-align:center;padding:0 var(--gutter);position:relative}.hero h1{font-family:var(--font-display);letter-spacing:-.01em;font-size:clamp(2.6rem,7.5vw,6rem);font-weight:200;line-height:1.05}.hero h1 em{color:var(--accent);font-style:italic}.hero p{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--paper-dim);margin-top:1.5rem;font-size:clamp(.72rem,1.4vw,.85rem)}.hero .scroll-cue{font-family:var(--font-mono);letter-spacing:.2em;color:var(--paper-dim);font-size:.7rem;text-decoration:none;position:absolute;bottom:2rem;left:50%;translate:-50%}.section{padding:clamp(4rem, 10vh, 8rem) var(--gutter)}.section-head{border-top:1px solid var(--hairline);align-items:baseline;gap:1.5rem;margin-bottom:clamp(2.5rem,6vh,5rem);padding-top:1rem;display:flex}.section-head h2{font-family:var(--font-mono);letter-spacing:.22em;text-transform:uppercase;color:var(--paper-dim);font-size:.75rem;font-weight:500}.project{grid-template-columns:minmax(0,3fr) minmax(0,2fr);align-items:start;gap:clamp(1.5rem,4vw,4rem);margin-bottom:clamp(5rem,14vh,10rem);display:grid}.project:nth-of-type(2n) .project-media{order:2}.project-media img,.project-media video{aspect-ratio:16/10;object-fit:cover;border-radius:2px;width:100%;display:block}.project-media video{aspect-ratio:16/9}.project-media iframe{aspect-ratio:16/9;border:0;border-radius:2px;width:100%;display:block}.project-media .media-pending{aspect-ratio:16/10;border:1px solid var(--hairline);background:radial-gradient(ellipse at 30% 40%, #8b9bff14, transparent 60%), var(--ink-2);border-radius:2px;place-items:center;display:grid}.project-media .media-pending span{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--paper-dim);font-size:.72rem}.project-media .thumbs{grid-template-columns:repeat(3,1fr);gap:.5rem;margin-top:.5rem;display:grid}.project-media .thumbs img{aspect-ratio:4/3}.project-info{position:sticky;top:5rem}.project-info .years{font-family:var(--font-mono);letter-spacing:.16em;color:var(--accent);font-size:.72rem}.project-info h3{font-family:var(--font-display);margin-top:.75rem;font-size:clamp(1.6rem,3vw,2.4rem);font-weight:300;line-height:1.15}.project-info .description{max-width:var(--measure);color:var(--paper-dim);margin-top:1.25rem;font-size:.95rem}.project-meta{font-family:var(--font-mono);border-top:1px solid var(--hairline);grid-template-columns:max-content 1fr;column-gap:1.5rem;margin-top:1.75rem;padding-top:1rem;font-size:.75rem;line-height:2;display:grid}.project-meta dt{color:var(--paper-dim);letter-spacing:.1em;text-transform:uppercase}.project-meta dd{color:var(--paper)}.project-meta a{color:var(--accent);text-decoration-color:var(--accent-dim);text-underline-offset:3px}.about-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(2rem,5vw,5rem);display:grid}.about-grid .lede{font-family:var(--font-display);font-size:clamp(1.4rem,2.6vw,2rem);font-weight:300;line-height:1.35}.about-grid .body{color:var(--paper-dim);max-width:var(--measure);gap:1rem;display:grid}.contact{text-align:center;padding-bottom:clamp(5rem,12vh,9rem)}.contact .mail{font-family:var(--font-display);color:var(--accent);border-bottom:1px solid var(--accent-dim);margin-top:1.5rem;font-size:clamp(1.6rem,4vw,3rem);font-style:italic;font-weight:300;text-decoration:none;transition:border-color .15s;display:inline-block}.contact .mail:hover{border-color:var(--accent)}.site-footer{padding:1.25rem var(--gutter);border-top:1px solid var(--hairline);font-family:var(--font-mono);letter-spacing:.12em;color:var(--paper-dim);justify-content:space-between;font-size:.7rem;display:flex}@media (prefers-reduced-motion:no-preference){html.js .reveal{opacity:0;transition:opacity 1.4s cubic-bezier(.2,.6,.2,1),translate 1.4s cubic-bezier(.2,.6,.2,1);transition-delay:var(--reveal-delay,0s);translate:0 90px}html.js .reveal.is-visible{opacity:1;translate:0}@supports (animation-timeline:view()){html.js .reveal,html.js .reveal.is-visible{opacity:1;transition:none;animation:cubic-bezier(.2,.6,.2,1) both reveal-in view();animation-range:entry cover 42%;translate:none}}@keyframes reveal-in{0%{opacity:0;translate:0 132px}to{opacity:1;translate:0}}}@media (width<=800px){.site-nav{gap:1rem}.project,.about-grid{grid-template-columns:1fr}.project:nth-of-type(2n) .project-media{order:0}}
