:root{--night:#15120f;--night-lift:#1c1815;--cream:#ece4d5;--cream-mid:#8b8275;--cream-faint:#ece4d52e;--cream-hair:#ece4d517;--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:11px;--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;color:inherit;cursor:pointer;background:0 0;border:0;padding:0}ol,ul{margin:0;padding:0;list-style:none}img{max-width:100%;display:block}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;padding-top:var(--beam-thick);hanging-punctuation:first last;position:relative;overflow-x:hidden}body:before{content:"";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>");position:fixed;inset:0}.beam{height:var(--beam-thick);background:var(--masp);z-index:6;position:fixed;top:0;left:0;right:0}.container{max-width:1180px;padding:0 var(--gutter);margin:0 auto}@media (width>=1100px){body{padding-right:320px}}@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{grid-template-columns:1fr auto;align-items:end;gap:24px;padding-top:clamp(28px,3.5vw,48px);padding-bottom:clamp(18px,2vw,28px);display:grid}.name{font-family:var(--sans);font-variation-settings:"opsz" 24;letter-spacing:-.01em;font-size:clamp(22px,2.6vw,28px);font-weight:600;line-height:1.05}.role{font-family:var(--mono);color:var(--slate-mid);letter-spacing:.02em;margin-top:8px;font-size:13px}.lang{font-family:var(--mono);color:var(--slate-mid);white-space:nowrap;align-items:baseline;gap:8px;font-size:13px;display:inline-flex}.lang a{letter-spacing:.08em;padding:4px 2px}.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{font-family:var(--sans);letter-spacing:-.005em;color:var(--slate);font-variation-settings:"opsz" 18;flex-wrap:wrap;gap:18px 36px;font-size:clamp(16px,1.6vw,18px);font-weight:500;display:flex}.primary-nav a{padding:2px 0;transition:color .12s;position:relative}.primary-nav a:hover{color:var(--ipe)}.primary-nav a[aria-current=page]{color:var(--slate);font-weight:700}.section{padding-bottom:clamp(44px,5vw,72px)}.section-label{font-family:var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--slate-mid);margin:0 0 clamp(16px,1.8vw,24px);font-size:11px}.entries{border-bottom:1px solid var(--cream-hair);counter-reset:entry;flex-direction:column;display:flex}.entry{border-top:1px solid var(--cream-hair);counter-increment:entry;grid-template-columns:132px 1fr;align-items:start;gap:4px 28px;padding:clamp(14px,1.5vw,20px) 0 clamp(16px,1.7vw,22px);display:grid}.entry time,.entry .tag{font-family:var(--mono);letter-spacing:.04em;color:var(--slate-mid);font-size:12px;line-height:1.2}.entry time{font-variant-numeric:tabular-nums}.entry .meta{flex-direction:column;gap:4px;padding-top:.2em;display:flex}.section--projects .entry .meta:before{content:counter(entry, decimal-leading-zero);font-family:var(--mono);font-variant-numeric:tabular-nums;letter-spacing:.06em;color:var(--cream);margin-bottom:4px;font-size:16px;line-height:1}.entry .tag:before{content:"["}.entry .tag:after{content:"]"}.entry .body{min-width:0}.entry--writing .title{font-family:var(--serif);font-variation-settings:"opsz" 32, "SOFT" 20;letter-spacing:-.008em;margin:0;font-size:clamp(18px,2.2vw,26px);font-weight:500;line-height:1.18}.entry--project .title{font-family:var(--sans);font-variation-settings:"opsz" 48;letter-spacing:-.02em;align-items:center;gap:18px;margin:0;font-size:clamp(18px,2.1vw,24px);font-weight:700;line-height:1.18;display:flex}.entry--project .title:after{content:"";background:var(--cream-hair);flex:1 1 0;height:1px}.section--projects .entries{position:relative}.section--projects .entries:before{content:"";background:var(--ipe);width:1px;position:absolute;top:0;bottom:0;left:152px}.section--projects .entry{gap:4px 40px}.entry--project .meta{text-align:right;align-items:flex-end;padding-top:0}.entry--project .dek{font-family:var(--sans);color:var(--cream-mid);max-width:56ch;margin:6px 0 0;font-size:14px;font-weight:400;line-height:1.5}.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,color .12s}.entry .title a:hover{color:var(--ipe);background-size:100% 1px}.entry .flag{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--slate-mid);border:1px solid var(--slate-faint);vertical-align:middle;margin-left:10px;padding:1px 6px 2px;font-size:11px;display:inline-block;transform:translateY(-4px)}.all-link{font-family:var(--mono);letter-spacing:.04em;color:var(--slate-mid);border-bottom:1px solid var(--slate-faint);margin-top:clamp(16px,1.8vw,24px);padding-bottom:2px;font-size:12px;transition:color .12s,border-color .12s;display:inline-block}.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);grid-template-columns:132px 1fr;align-items:start;gap:4px 28px;margin-bottom:clamp(24px,2.6vw,36px);padding-top:clamp(14px,1.6vw,22px);display:grid}.post-date{font-family:var(--mono);letter-spacing:.04em;color:var(--slate-mid);font-variant-numeric:tabular-nums;padding-top:.35em;font-size:12px}.post-title{font-family:var(--serif);font-variation-settings:"opsz" 48, "SOFT" 20;letter-spacing:-.012em;color:var(--slate);max-width:22ch;margin:0;font-size:clamp(24px,3.4vw,38px);font-weight:500;line-height:1.12}.prose{max-width:64ch;font-family:var(--serif-body);font-variation-settings:"opsz" 14;font-feature-settings:"kern", "liga", "onum";color:var(--slate);text-rendering:optimizelegibility;text-wrap:pretty;hanging-punctuation:first last;grid-column:2;margin-left:160px;font-size:clamp(17px,1.6vw,19px);font-weight:400;line-height:1.65}.prose>*+*{margin-top:1.6em}.prose p{margin:0}.prose h2,.prose h3{font-family:var(--sans);font-variation-settings:"opsz" 24;font-feature-settings:"kern", "liga";letter-spacing:-.01em;color:var(--slate);text-wrap:balance;margin-top:2.6em;font-weight:600}.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,color .12s}.prose a:hover{color:var(--masp)}.prose blockquote{border-left:1px solid var(--cream-hair);color:var(--cream-mid);padding-left:1.1em;font-style:italic}.prose ul,.prose ol{padding-left:1.4em}.prose li+li{margin-top:.4em}.prose code{font-family:var(--mono);background:var(--night-lift);border-radius:2px;padding:1px 5px;font-size:.88em}.prose pre{font-family:var(--mono);background:var(--night-lift);border:1px solid var(--cream-hair);padding:clamp(12px,1.4vw,18px);font-size:13px;line-height:1.55;overflow-x:auto}.prose pre code{font-size:inherit;background:0 0;border-radius:0;padding:0}.prose hr{border:0;border-top:1px solid var(--cream-hair);margin:2em 0}.post--project .post-title{font-family:var(--sans);font-variation-settings:"opsz" 48;letter-spacing:-.02em;max-width:22ch;font-size:clamp(24px,3.1vw,34px);font-weight:700;line-height:1.12}.post--project .post-header .post-meta{flex-direction:column;gap:6px;padding-top:.35em;display:flex}.post-tag{font-family:var(--mono);letter-spacing:.04em;color:var(--slate-mid);font-size:12px;line-height:1.2}.post-tag:before{content:"["}.post-tag:after{content:"]"}.post-flag{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--slate-mid);border:1px solid var(--slate-faint);width:fit-content;padding:1px 6px 2px;font-size:11px;display:inline-block}.post-headline{flex-direction:column;gap:10px;display:flex}.post-dek{font-family:var(--sans);color:var(--cream-mid);max-width:56ch;margin:0;font-size:clamp(14px,1.3vw,15px);font-weight:400;line-height:1.5}.post-cta{font-family:var(--mono);letter-spacing:.02em;margin:clamp(28px,3vw,44px) 0 0 160px;font-size:13px}.post-cta a{color:var(--slate);border-bottom:1px solid var(--slate-faint);padding-bottom:2px;transition:color .12s,border-color .12s}.post-cta a:hover{color:var(--masp);border-color:var(--masp)}@media (width<=720px){.post-header{grid-template-columns:1fr;gap:6px}.post-date{padding-top:0}.post--project .post-header .post-meta{flex-flow:wrap;align-items:baseline;gap:12px;padding-top:0}.prose{grid-column:1;margin-left:0}.post-cta{margin-left:0}}.now-rail{border-top:var(--rule-thick) solid var(--slate-faint);margin-top:clamp(28px,3vw,40px);padding:clamp(28px,3.5vw,40px) 0 clamp(20px,2.5vw,32px)}.now-rail .section-label{color:var(--slate-mid)}.now-content{flex-direction:column;gap:clamp(14px,1.6vw,22px);display:flex}.now-item{grid-template-columns:90px 1fr;align-items:baseline;gap:4px 18px;margin:0;display:grid}.now-label{font-family:var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--slate-mid);font-size:11px}.now-value{font-family:var(--sans);color:var(--slate);font-variation-settings:"opsz" 16;font-size:16px;font-weight:500;line-height:1.35}.now-value em{font-style:italic;font-weight:400}.now-footer{font-family:var(--mono);color:var(--slate-mid);justify-content:space-between;align-items:baseline;gap:16px;margin-top:clamp(20px,2.4vw,32px);font-size:12px;display:flex}.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,border-color .12s}.now-link:hover{color:var(--ipe);border-color:var(--ipe)}@media (width>=1100px){.now-rail{top:var(--beam-thick);background:var(--masp);width:320px;color:var(--cream);z-index:5;border-top:0;flex-direction:column;margin:0;padding:clamp(40px,4.5vw,64px) clamp(28px,3vw,36px) clamp(40px,4.5vw,64px) clamp(44px,4vw,56px);display:flex;position:fixed;bottom:0;right:0;overflow-y:auto}.now-rail>.section-label{writing-mode:vertical-rl;letter-spacing:.32em;color:#ece4d58c;margin:0;font-size:10px;position:absolute;top:clamp(40px,4.5vw,64px);left:clamp(14px,1.5vw,18px)}.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);font-family:var(--mono);color:var(--slate-mid);flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:14px 32px;padding:20px 0 28px;font-size:13px;display:flex}footer a{color:var(--slate);transition:color .12s}footer a:hover{color:var(--ipe)}.footer-links{gap:28px;display:flex}.footer-meta{letter-spacing:.04em}@media (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{text-align:left;align-items:baseline}.section--projects .entry .meta:before{margin-bottom:0;font-size:13px}.masthead{grid-template-columns:1fr;align-items:start}.lang{justify-content:flex-start}}
