:root{--night: #15120f;--night-lift: #1c1815;--cream: #ece4d5;--cream-mid: #8b8275;--cream-faint: rgba(236,228,213,.18);--cream-hair: rgba(236,228,213,.09);--ipe: #b58660;--masp: #ef3340;--bone: var(--night);--slate: var(--cream);--slate-mid: var(--cream-mid);--slate-faint: var(--cream-faint);--slate-hair: var(--cream-hair);--serif: "Fraunces", "Cormorant Garamond", Georgia, serif;--serif-body: "Source Serif 4", "Source Serif Pro", Georgia, serif;--sans: "Bricolage Grotesque", "Helvetica Neue", Helvetica, sans-serif;--mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;--gutter: clamp(20px, 4vw, 48px);--rule-thick: 1.5px;--beam-thick: 18px;--line: 1.5}*,*:before,*:after{box-sizing:border-box}html{-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}body{margin:0}a{color:inherit;text-decoration:none}button{font:inherit;background:none;border:0;color:inherit;cursor:pointer;padding:0}ol,ul{list-style:none;padding:0;margin:0}img{display:block;max-width:100%}body{background:var(--bone);color:var(--slate);font-family:var(--sans);font-size:17px;line-height:var(--line);font-variation-settings:"opsz" 14;min-height:100vh;position:relative;overflow-x:hidden;padding-top:var(--beam-thick);hanging-punctuation:first last}body:before{content:"";position:fixed;inset:0;z-index:1000;pointer-events:none;opacity:.14;mix-blend-mode:screen;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='240' height='240'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0.92  0 0 0 0 0.89  0 0 0 0 0.83  0 0 0 0.6 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>")}.beam{position:fixed;top:0;left:0;right:0;height:var(--beam-thick);background:var(--masp);z-index:6}.container{max-width:1180px;margin:0 auto;padding:0 var(--gutter)}@media(min-width:1100px){body{padding-right:260px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important}}a:focus-visible,button:focus-visible{outline:2px solid var(--masp);outline-offset:3px;border-radius:0}.masthead{display:grid;grid-template-columns:1fr auto;align-items:end;gap:24px;padding-top:clamp(28px,3.5vw,48px);padding-bottom:clamp(18px,2vw,28px)}.name{font-family:var(--sans);font-weight:600;font-variation-settings:"opsz" 24;font-size:clamp(22px,2.6vw,28px);letter-spacing:-.01em;line-height:1.05}.role{font-family:var(--mono);font-size:13px;color:var(--slate-mid);margin-top:8px;letter-spacing:.02em}.lang{font-family:var(--mono);font-size:13px;display:inline-flex;align-items:baseline;gap:8px;color:var(--slate-mid);white-space:nowrap}.lang a{padding:4px 2px;letter-spacing:.08em}.lang a[aria-current=true]{color:var(--slate);font-weight:600}.lang a:hover{color:var(--ipe)}.lang-divider{color:var(--slate-faint)}.nav-wrap{border-top:var(--rule-thick) solid var(--slate);padding-top:16px;padding-bottom:clamp(32px,4vw,56px)}.primary-nav{display:flex;flex-wrap:wrap;gap:18px 36px;font-family:var(--sans);font-size:clamp(16px,1.6vw,18px);font-weight:500;letter-spacing:-.005em;color:var(--slate);font-variation-settings:"opsz" 18}.primary-nav a{position:relative;padding:2px 0;transition:color .12s ease}.primary-nav a:hover{color:var(--ipe)}.primary-nav a[aria-current=page]{color:var(--slate);font-weight:700}.section{padding-bottom:clamp(32px,3.6vw,56px)}.section-label{font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--slate-mid);margin:0 0 clamp(16px,1.8vw,24px) 0}.entries{display:flex;flex-direction:column;border-bottom:1px solid var(--cream-hair);counter-reset:entry}.entry{display:grid;grid-template-columns:132px 1fr;gap:4px 28px;align-items:start;padding:clamp(14px,1.5vw,20px) 0 clamp(16px,1.7vw,22px);border-top:1px solid var(--cream-hair);counter-increment:entry}.entry time,.entry .tag{font-family:var(--mono);font-size:12px;letter-spacing:.04em;color:var(--slate-mid);line-height:1.2}.entry time{font-variant-numeric:tabular-nums}.entry .meta{display:flex;flex-direction:column;gap:4px;padding-top:.2em}.section--projects .entry .meta:before{content:counter(entry,decimal-leading-zero);font-family:var(--mono);font-size:16px;font-variant-numeric:tabular-nums;letter-spacing:.06em;color:var(--cream);line-height:1;margin-bottom:4px}.entry .tag:before{content:"["}.entry .tag:after{content:"]"}.entry .body{min-width:0}.entry--writing .title{font-family:var(--serif);font-weight:500;font-variation-settings:"opsz" 32,"SOFT" 20;font-size:clamp(18px,2.2vw,26px);line-height:1.18;letter-spacing:-.008em;margin:0}.entry--project .title{font-family:var(--sans);font-weight:700;font-variation-settings:"opsz" 48;font-size:clamp(18px,2.1vw,24px);line-height:1.18;letter-spacing:-.02em;margin:0;display:flex;align-items:center;gap:18px}.entry--project .title:after{content:"";flex:1 1 0;height:1px;background:var(--cream-hair)}.section--projects .entries{position:relative}.section--projects .entries:before{content:"";position:absolute;top:0;bottom:0;left:152px;width:1px;background:var(--ipe)}.section--projects .entry{gap:4px 40px}.entry--project .meta{align-items:flex-end;text-align:right;padding-top:0}.entry .dek{font-family:var(--sans);font-weight:400;font-size:14px;line-height:1.5;color:var(--cream-mid);margin:6px 0 0;max-width:56ch}.entry .title a{background-image:linear-gradient(var(--slate-faint),var(--slate-faint));background-position:0 calc(100% + 2px);background-repeat:no-repeat;background-size:0% 1px;transition:background-size .22s ease,color .12s ease}.entry .title a:hover{background-size:100% 1px;color:var(--ipe)}.entry .flag{display:inline-block;margin-left:10px;font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--slate-mid);border:1px solid var(--slate-faint);padding:1px 6px 2px;vertical-align:middle;transform:translateY(-4px)}.all-link{display:inline-block;margin-top:clamp(16px,1.8vw,24px);margin-left:160px;font-family:var(--mono);font-size:12px;letter-spacing:.04em;color:var(--slate-mid);border-bottom:1px solid var(--slate-faint);padding-bottom:2px;transition:color .12s ease,border-color .12s ease}.section--projects .all-link{margin-left:172px}.all-link:hover{color:var(--ipe);border-color:var(--ipe)}.post{padding-bottom:clamp(44px,5vw,72px)}.post-header{border-top:1px solid var(--cream-hair);padding-top:clamp(14px,1.6vw,22px);margin-bottom:clamp(24px,2.6vw,36px);display:grid;grid-template-columns:132px 1fr;gap:4px 28px;align-items:start}.post-date{font-family:var(--mono);font-size:12px;letter-spacing:.04em;color:var(--slate-mid);font-variant-numeric:tabular-nums;padding-top:.35em}.post-title{font-family:var(--serif);font-weight:500;font-variation-settings:"opsz" 48,"SOFT" 20;font-size:clamp(24px,3.4vw,38px);line-height:1.12;letter-spacing:-.012em;color:var(--slate);margin:0;max-width:22ch}.prose{grid-column:2;max-width:64ch;margin-left:160px;font-family:var(--serif-body);font-weight:400;font-variation-settings:"opsz" 14;font-feature-settings:"kern","liga","onum";font-size:clamp(17px,1.6vw,19px);line-height:1.65;color:var(--slate);text-rendering:optimizeLegibility;text-wrap:pretty;hanging-punctuation:first last}.prose>*+*{margin-top:1.6em}.prose p{margin:0}.prose h2,.prose h3{font-family:var(--sans);font-weight:600;font-variation-settings:"opsz" 24;font-feature-settings:"kern","liga";letter-spacing:-.01em;margin-top:2.6em;color:var(--slate);text-wrap:balance}.prose h2+*,.prose h3+*{margin-top:.7em}.prose h2{font-size:clamp(18px,2vw,22px)}.prose h3{font-size:clamp(16px,1.6vw,18px)}.prose em{font-style:italic}.prose strong{font-weight:600}.prose a{color:var(--slate);background-image:linear-gradient(var(--slate-faint),var(--slate-faint));background-position:0 calc(100% + 2px);background-repeat:no-repeat;background-size:100% 1px;transition:background-size .22s ease,color .12s ease}.prose a:hover{color:var(--masp)}.prose blockquote{border-left:1px solid var(--cream-hair);padding-left:1.1em;color:var(--cream-mid);font-style:italic}.prose ul,.prose ol{padding-left:1.4em}.prose li+li{margin-top:.4em}.prose code{font-family:var(--mono);font-size:.88em;background:var(--night-lift);padding:1px 5px;border-radius:2px}.prose pre{font-family:var(--mono);font-size:13px;line-height:1.55;background:var(--night-lift);border:1px solid var(--cream-hair);padding:clamp(12px,1.4vw,18px);overflow-x:auto}.prose pre code{background:transparent;padding:0;border-radius:0;font-size:inherit}.prose hr{border:0;border-top:1px solid var(--cream-hair);margin:2em 0}.post--project .post-title{font-family:var(--sans);font-weight:700;font-variation-settings:"opsz" 48;font-size:clamp(24px,3.1vw,34px);line-height:1.12;letter-spacing:-.02em;max-width:22ch}.post--project .post-header .post-meta{display:flex;flex-direction:column;gap:6px;padding-top:.35em}.post-tag{font-family:var(--mono);font-size:12px;letter-spacing:.04em;color:var(--slate-mid);line-height:1.2}.post-tag:before{content:"["}.post-tag:after{content:"]"}.post-flag{display:inline-block;font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--slate-mid);border:1px solid var(--slate-faint);padding:1px 6px 2px;width:fit-content}.post-headline{display:flex;flex-direction:column;gap:10px}.post-dek{font-family:var(--sans);font-weight:400;font-size:clamp(14px,1.3vw,15px);line-height:1.5;color:var(--cream-mid);margin:0;max-width:56ch}.post-cta{margin:clamp(28px,3vw,44px) 0 0 160px;font-family:var(--mono);font-size:13px;letter-spacing:.02em}.post-cta a{color:var(--slate);border-bottom:1px solid var(--slate-faint);padding-bottom:2px;transition:color .12s ease,border-color .12s ease}.post-cta a:hover{color:var(--masp);border-color:var(--masp)}@media(max-width:720px){.post-header{grid-template-columns:1fr;gap:6px}.post-date{padding-top:0}.post--project .post-header .post-meta{flex-direction:row;align-items:baseline;gap:12px;padding-top:0;flex-wrap:wrap}.prose{margin-left:0;grid-column:1}.post-cta{margin-left:0}}.now-rail{border-top:var(--rule-thick) solid var(--slate-faint);padding:clamp(28px,3.5vw,40px) 0 clamp(20px,2.5vw,32px);margin-top:clamp(28px,3vw,40px)}.now-rail .section-label{color:var(--slate-mid)}.now-content{display:flex;flex-direction:column;gap:clamp(14px,1.6vw,22px)}.now-item{display:grid;grid-template-columns:90px 1fr;gap:4px 18px;align-items:baseline;margin:0}.now-label{font-family:var(--mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--slate-mid)}.now-value{font-family:var(--sans);font-weight:500;font-size:16px;line-height:1.35;color:var(--slate);font-variation-settings:"opsz" 16}.now-value em{font-style:italic;font-weight:400}.now-footer{display:flex;align-items:baseline;justify-content:space-between;gap:16px;margin-top:clamp(20px,2.4vw,32px);font-family:var(--mono);font-size:12px;color:var(--slate-mid)}.now-footer time{font-variant-numeric:tabular-nums}.now-link{color:var(--slate);border-bottom:1px solid var(--slate-faint);padding-bottom:2px;transition:color .12s ease,border-color .12s ease}.now-link:hover{color:var(--ipe);border-color:var(--ipe)}@media(min-width:1100px){.now-rail{position:fixed;top:var(--beam-thick);right:0;bottom:0;width:260px;background:var(--masp);color:var(--cream);padding:clamp(32px,3.6vw,48px) clamp(22px,2.4vw,28px) clamp(32px,3.6vw,48px) clamp(34px,3.2vw,44px);margin:0;border-top:0;z-index:5;display:flex;flex-direction:column;overflow-y:auto}.now-rail>.section-label{position:absolute;top:clamp(32px,3.6vw,48px);left:clamp(14px,1.5vw,18px);margin:0;writing-mode:vertical-rl;letter-spacing:.28em;font-size:13px;color:#ece4d5c7}.now-rail .now-item{grid-template-columns:1fr;gap:4px}.now-label{color:#ece4d5b8}.now-value{color:var(--cream)}.now-footer{color:#ece4d5b8;margin-top:auto;padding-top:clamp(40px,5vw,64px)}.now-link{color:var(--cream);border-bottom-color:#ece4d559}.now-link:hover{color:var(--cream);border-bottom-color:var(--cream)}}footer{border-top:var(--rule-thick) solid var(--slate);padding:20px 0 28px;display:flex;flex-wrap:wrap;gap:14px 32px;align-items:baseline;justify-content:space-between;font-family:var(--mono);font-size:13px;color:var(--slate-mid)}footer a{color:var(--slate);transition:color .12s ease}footer a:hover{color:var(--ipe)}.footer-links{display:flex;gap:28px}.footer-meta{letter-spacing:.04em}.about-grid{display:grid;grid-template-columns:220px 1fr;column-gap:clamp(28px,3vw,44px);row-gap:0;align-items:start;border-top:1px solid var(--cream-hair);padding-top:clamp(14px,1.6vw,22px)}.about-figure{margin:0;max-width:220px}.about-figure img{display:block;width:100%;height:auto}.about-figure .about-meta{margin-top:clamp(12px,1.2vw,16px);font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--slate-mid);line-height:1.5}.about-body{max-width:56ch;font-family:var(--serif-body);font-weight:400;font-variation-settings:"opsz" 14;font-feature-settings:"kern","liga","onum";font-size:clamp(17px,1.6vw,19px);line-height:1.65;color:var(--slate);text-rendering:optimizeLegibility;text-wrap:pretty;hanging-punctuation:first last;padding-top:.1em}.about-body p{margin:0}.about-body p+p{margin-top:1.4em}.about-body a{color:var(--slate);background-image:linear-gradient(var(--slate-faint),var(--slate-faint));background-position:0 calc(100% + 2px);background-repeat:no-repeat;background-size:100% 1px;transition:background-size .22s ease,color .12s ease}.about-body a:hover{color:var(--masp)}.about-contact{display:grid;grid-template-columns:220px 1fr;column-gap:clamp(28px,3vw,44px);row-gap:14px;margin:clamp(28px,3vw,44px) 0 0;border-top:1px solid var(--cream-hair);padding-top:clamp(18px,2vw,28px)}.about-contact dt{margin:0;font-family:var(--mono);font-size:12px;letter-spacing:.04em;color:var(--slate-mid);line-height:1.5;padding-top:.15em}.about-contact dd{margin:0;font-family:var(--sans);font-size:17px;color:var(--slate);line-height:1.4}.about-contact dd a{color:var(--slate);transition:color .12s ease}.about-contact dd a:hover{color:var(--ipe)}@media(max-width:720px){.entry{grid-template-columns:1fr;gap:4px}.entry .meta{flex-direction:row;gap:12px;padding-top:0}.section--projects .entries:before{display:none}.section--projects .entry{gap:4px}.entry--project .meta{align-items:baseline;text-align:left}.section--projects .entry .meta:before{font-size:13px;margin-bottom:0}.all-link,.section--projects .all-link{margin-left:0}.masthead{grid-template-columns:1fr;align-items:start}.lang{justify-content:flex-start}.about-grid{grid-template-columns:1fr;row-gap:22px}.about-figure{max-width:180px}.about-contact{grid-template-columns:96px 1fr;column-gap:18px;row-gap:12px}}
