@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/fraunces-vietnamese-full-normal.7BpKI3vF.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/fraunces-latin-ext-full-normal.YHFkNujK.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/fraunces-latin-full-normal.CFFu7zhK.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fraunces Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/_astro/fraunces-vietnamese-full-italic.BHALq22K.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/_astro/fraunces-latin-ext-full-italic.B8-t4Nou.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/_astro/fraunces-latin-full-italic.D2JnYqd-.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Instrument Sans Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/_astro/instrument-sans-latin-ext-wght-normal.B5bTHO_g.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Instrument Sans Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/_astro/instrument-sans-latin-wght-normal.BbzFLZTg.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-cyrillic-ext-wght-normal.BOeWTOD4.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-cyrillic-wght-normal.DqGufNeO.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-greek-ext-wght-normal.DlzME5K_.woff2) format("woff2-variations");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-greek-wght-normal.CkhJZR-_.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-vietnamese-wght-normal.CBcvBZtf.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-latin-ext-wght-normal.DO1Apj_S.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-latin-wght-normal.Dx4kXJAl.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-cyrillic-ext-400-normal.xuaO2J-f.woff2) format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-ext-400-normal.DMdlQ8Kv.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-cyrillic-400-normal.BSMlKf0J.woff2) format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-400-normal.CEL4l2ZJ.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-vietnamese-400-normal.BulugwFq.woff2) format("woff2"),url(/_astro/ibm-plex-mono-vietnamese-400-normal.DDuiU_S-.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-latin-ext-400-normal.BmRBH3aV.woff2) format("woff2"),url(/_astro/ibm-plex-mono-latin-ext-400-normal.D3D2R8hC.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@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");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-cyrillic-ext-500-normal.BqneJy0T.woff2) format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-ext-500-normal.BIfNGwUT.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-cyrillic-500-normal.Bq9vWWag.woff2) format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-500-normal.Ael50iVv.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-vietnamese-500-normal.DZ4AoWbu.woff2) format("woff2"),url(/_astro/ibm-plex-mono-vietnamese-500-normal.C8zxqsMH.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-latin-ext-500-normal.CAhNIIs5.woff2) format("woff2"),url(/_astro/ibm-plex-mono-latin-ext-500-normal.CZ70TYgx.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@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");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--paper: #F4EFE6;--paper-2: #ECE5D7;--rule: #D9D0BE;--ink: #1F1B16;--ink-2: #2B2722;--muted: #6B6359;--muted-2: #948A7C;--accent: #2A5DA8;--accent-2: #C26B4A;--serif: "Fraunces Variable", "Fraunces", "Times New Roman", serif;--sans: "Instrument Sans Variable", "Instrument Sans", ui-sans-serif, system-ui, sans-serif;--mono: "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace}.prose{font-family:var(--sans);font-size:18px;line-height:1.7;color:var(--ink-2)}.prose p{margin:0 0 1.4em;text-wrap:pretty}.prose>p:first-of-type:first-line{font-family:var(--serif);font-variant-caps:small-caps;font-weight:600;font-size:1.25em;letter-spacing:.08em;color:var(--accent-2)}.prose h2{margin:2.2em 0 .6em;font-family:var(--serif);font-style:normal;font-weight:500;font-size:28px;letter-spacing:-.015em;color:var(--ink)}.prose blockquote{margin:1.6em 0;padding:0 0 0 22px;border-left:2px solid var(--accent-2);font-family:var(--sans);font-weight:380;font-size:20px;line-height:1.45;color:var(--ink)}.prose blockquote p{margin:0}.prose em{font-style:normal}.prose .pullquote{font-family:var(--serif);font-style:normal;font-weight:350;font-size:28px;line-height:1.3;color:var(--ink);letter-spacing:-.01em;text-align:center;max-width:560px;margin:2em auto}.prose .ornament{text-align:center;color:var(--accent-2);font-family:var(--serif);font-style:italic;font-size:22px;letter-spacing:.4em;margin:2.4em 0}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--paper);color:var(--ink-2);font-family:var(--serif);font-size:17px;line-height:1.55;font-variation-settings:"WONK" 0;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}::selection{background:var(--accent);color:var(--paper)}a{color:inherit;text-decoration:none}hr{border:0;border-top:1px solid var(--rule);margin:0}.page{max-width:1080px;margin:0 auto;padding:0 clamp(20px,4vw,64px)}.topbar{position:sticky;top:0;z-index:10;background:var(--paper);display:flex;justify-content:space-between;align-items:center;padding:20px clamp(20px,3vw,40px) 14px}.topbar .wordmark{font-family:var(--serif);font-weight:500;font-size:20px;line-height:1;letter-spacing:.02em;color:var(--accent-2);display:inline-flex;align-items:baseline;gap:10px;transition:color .6s ease}.topbar .wordmark .dot{position:relative;width:7px;height:7px;border-radius:50%;background:currentColor;display:inline-block;align-self:center;transform:translateY(.05em)}.topbar .wordmark .dot:after{content:"";position:absolute;inset:0;border-radius:50%;background:currentColor;animation:dot-pulse 1.9s cubic-bezier(.2,.7,.2,1) infinite;pointer-events:none}@keyframes dot-pulse{0%{transform:scale(1);opacity:.55}to{transform:scale(4.5);opacity:0}}@media(prefers-reduced-motion:reduce){.topbar .wordmark .dot:after{animation:none;opacity:0}}.topbar[data-section=writing] .wordmark{color:var(--accent-2)}.topbar[data-section=projects] .wordmark{color:var(--accent)}.topbar[data-section=about] .wordmark{color:var(--muted)}.topbar .nav{display:flex;gap:clamp(20px,2.5vw,32px)}.topbar .nav a{font-family:var(--mono);font-size:12px;font-weight:400;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);transition:color .2s ease}.topbar .nav a:hover{color:var(--accent)}.topbar[data-section=writing] .nav a:hover{color:var(--accent-2)}#writing{margin-top:clamp(32px,5vh,56px)}.writing{display:flex;flex-direction:column}.post{display:block;padding:18px 0;border-bottom:1px solid var(--rule);transition:padding-left .35s ease}.post:last-child{border-bottom:0}.post .row{display:flex;align-items:baseline;gap:0}.post .ix{font-family:var(--mono);font-size:12px;font-weight:400;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);width:46px;flex-shrink:0;transition:color .3s ease}.post .body{flex:1;display:flex;align-items:baseline;gap:24px;min-width:0}.post .text{flex:1;min-width:0}.post h3{margin:0;font-family:var(--serif);font-weight:400;font-size:24px;line-height:1.2;letter-spacing:-.01em;color:var(--ink);transition:color .3s ease}.post .dek{display:block;margin-top:6px;font-family:var(--sans);font-style:normal;font-weight:380;font-size:14.5px;line-height:1.5;color:var(--muted);max-width:58ch;text-wrap:pretty}.post .date{flex-shrink:0;font-family:var(--mono);font-size:11px;font-weight:400;letter-spacing:.04em;text-transform:uppercase;color:var(--muted-2);white-space:nowrap;opacity:0;transform:translate(8px);transition:opacity .3s ease,transform .3s ease}.post:hover{padding-left:14px}.post:hover .ix,.post:hover h3{color:var(--accent-2)}.post:hover .date{opacity:1;transform:translate(0)}.projects-band{margin-top:clamp(96px,14vh,160px);margin-left:calc(-1*clamp(20px,4vw,64px));margin-right:calc(-1*clamp(20px,4vw,64px));padding:clamp(40px,6vw,64px) clamp(20px,4vw,64px) clamp(48px,7vw,80px);position:relative;overflow:hidden}.projects-band:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:var(--rule)}.projects-band>*{position:relative}.sec-opener{display:grid;grid-template-columns:clamp(40px,5vw,56px) 1fr auto;align-items:center;gap:16px;margin-bottom:clamp(24px,3vw,32px)}.sec-opener .mark{width:clamp(28px,3.4vw,40px);height:clamp(28px,3.4vw,40px);color:var(--accent)}.sec-opener .mark svg{width:100%;height:100%;display:block}.sec-opener .mark.projects .sq{transition:transform .7s cubic-bezier(.2,.7,.2,1);transform-origin:center}.sec-opener .mark.projects .sq.s2{transition-delay:.04s}.sec-opener .mark.projects .sq.s3{transition-delay:.08s}.section.projects:hover .sec-opener .mark.projects .sq.s1{transform:translate(2px,-2px)}.section.projects:hover .sec-opener .mark.projects .sq.s3{transform:translate(-2px,2px)}.sec-opener .eyebrow{font-family:var(--mono);font-size:12px;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);margin:0}.projects-grid{display:grid;grid-template-columns:1.35fr 1fr;grid-template-rows:auto auto;gap:22px}.proj{position:relative;background:var(--paper);border:1px solid var(--rule);padding:24px 26px 22px;border-radius:3px;display:flex;flex-direction:column;overflow:hidden;transition:transform .5s cubic-bezier(.2,.7,.2,1),border-color .3s ease,box-shadow .4s ease}.proj:hover{border-color:var(--ink);box-shadow:0 18px 40px -22px #1f1b162e}.proj-link{position:absolute;inset:0;z-index:1}.proj:has(.proj-link){cursor:pointer}.proj .ix{display:flex;align-items:center;gap:10px;margin-bottom:18px;font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.proj .ix .tag{background:var(--ink);color:var(--paper);padding:3px 8px 2px;border-radius:2px;letter-spacing:.12em;font-weight:500;transition:background .3s ease}.proj:hover .ix .tag{background:var(--accent)}.proj .ix .yr{margin-left:auto;color:var(--muted-2)}.proj .cover{aspect-ratio:16 / 7;margin-bottom:22px;border:1px solid var(--rule);border-radius:2px;position:relative;overflow:hidden;background:var(--paper);transition:transform .6s cubic-bezier(.2,.7,.2,1)}.proj:hover .cover{transform:translateY(-2px)}.proj .cover.a{background:#1e3a2f;display:flex;align-items:center;justify-content:center;padding:0 clamp(20px,4vw,32px);color:#fff}.proj .cover.a .brand{display:flex;align-items:center;gap:clamp(14px,1.6vw,20px)}.proj .cover.a .logo{width:clamp(66px,7.2vw,84px);height:clamp(66px,7.2vw,84px);display:block;flex-shrink:0}.proj .cover.a .wordmark{font-family:Inter Variable,Inter,system-ui,sans-serif;font-weight:500;font-size:51px;letter-spacing:.2em;text-transform:uppercase;color:currentColor;line-height:1;-webkit-font-smoothing:antialiased}.proj .cover.b{background:#0a1f4d;padding:0}.proj .cover.b img{width:100%;height:100%;object-fit:cover;display:block;transform:scale(1.2);transform-origin:center}.proj .cover.c{background:var(--paper);display:flex;align-items:center;justify-content:center}.proj .cover.c .rings{width:70%;aspect-ratio:1;position:relative}.proj .cover.c .rings:before,.proj .cover.c .rings:after,.proj .cover.c .rings .r{content:"";position:absolute;inset:0;border:1px solid var(--accent);border-radius:50%;opacity:.4;transition:transform .8s cubic-bezier(.2,.7,.2,1),opacity .5s ease}.proj .cover.c .rings:after{inset:18%;opacity:.65}.proj .cover.c .rings .r{inset:36%;background:var(--accent);border:0;opacity:1}.proj:hover .cover.c .rings:before{transform:scale(1.06)}.proj:hover .cover.c .rings:after{transform:scale(1.1)}.proj:hover .cover.c .rings .r{transform:scale(.85)}.proj .cover.code{background:var(--paper-2);padding:0;display:flex;flex-direction:column}.proj .cover.code .bar{display:flex;align-items:center;gap:10px;padding:8px 12px;border-bottom:1px solid var(--rule);font-family:var(--mono);font-size:10px;letter-spacing:.04em;color:var(--muted)}.proj .cover.code .bar .dots{display:inline-flex;gap:4px}.proj .cover.code .bar .dots i{width:6px;height:6px;border-radius:50%;background:var(--rule);display:inline-block}.proj .cover.code .bar .file{color:var(--muted)}.proj .cover.code pre{margin:0;padding:12px 14px;flex:1;overflow:hidden;font-family:var(--mono);font-size:11.5px;line-height:1.55;color:var(--ink);white-space:pre}.proj .cover.code .dec{color:var(--accent);font-weight:500;transition:color .25s ease}.proj .cover.code .kw{color:var(--muted);font-weight:500}.proj .cover.code .fn{color:var(--ink)}.proj .cover.code .str{color:var(--muted-2);font-style:italic}.proj:hover .cover.code .dec{color:var(--accent-2)}.proj h4{margin:0;font-family:var(--serif);font-weight:400;font-size:clamp(24px,2.4vw,30px);letter-spacing:-.018em;line-height:1.05;color:var(--ink)}.proj h4 .it{font-style:italic}.proj p{margin:12px 0 0;font-family:var(--sans);font-weight:380;font-size:15px;line-height:1.5;color:var(--ink-2);max-width:40ch;white-space:pre-line}.proj .foot{margin-top:auto;padding-top:22px;display:flex;justify-content:flex-end;align-items:center;font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.proj .foot .cta{color:var(--ink);display:inline-flex;align-items:center;gap:8px}.proj .foot .cta .arrhead{transition:transform .35s cubic-bezier(.2,.7,.2,1),color .25s ease}.proj:hover .foot .cta{color:var(--accent)}.proj:hover .foot .cta .arrhead{transform:translate(8px);color:var(--accent)}.proj.feat{grid-column:1 / 2;grid-row:1 / 3;min-height:460px}.proj.feat .cover{aspect-ratio:16 / 9}.proj.feat h4{font-size:clamp(28px,3.2vw,40px)}.proj.b{grid-column:2 / 3;grid-row:1;transform:translateY(14px)}.proj.c{grid-column:2 / 3;grid-row:2;transform:translateY(-14px)}.proj.b:hover{transform:translateY(10px)}.proj.c:hover{transform:translateY(-18px)}.about{margin-top:clamp(80px,12vh,140px);max-width:640px}.about .eyebrow{font-family:var(--mono);font-size:12px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);display:flex;align-items:center;gap:12px;margin:0 0 20px}.about .eyebrow:before{content:"";display:inline-block;width:24px;height:1px;background:var(--accent)}.about p{margin:0;font-family:var(--serif);font-weight:360;font-size:clamp(20px,2.2vw,26px);line-height:1.45;letter-spacing:-.012em;color:var(--ink);text-wrap:pretty}.about p .acc{color:var(--accent);font-style:italic;font-family:var(--serif)}.site-footer{margin-top:clamp(80px,14vh,140px);padding:28px 0 40px;border-top:1px solid var(--rule);display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:16px}.site-footer .colophon{font-family:var(--mono);font-size:10.5px;font-weight:400;letter-spacing:.04em;text-transform:uppercase;color:var(--muted-2)}.site-footer .colophon .acc{color:var(--accent)}.site-footer .links a{font-family:var(--mono);font-size:11px;font-weight:400;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);transition:color .2s ease}.site-footer .links a:hover{color:var(--accent)}@media(prefers-reduced-motion:no-preference){.rise{opacity:0;transform:translateY(16px);animation:rise .6s ease forwards}.rise.d1{animation-delay:0ms}.rise.d2{animation-delay:80ms}.rise.d3{animation-delay:.16s}.rise.d4{animation-delay:.24s}.rise.d5{animation-delay:.32s}.rise.d6{animation-delay:.4s}@keyframes rise{to{opacity:1;transform:none}}}.post-shell{max-width:760px;margin:0 auto;padding:0 clamp(20px,4vw,32px)}.post-head{margin-top:clamp(40px,8vh,80px);margin-bottom:clamp(40px,6vh,56px)}.post-head .meta{font-family:var(--mono);font-size:11px;font-weight:400;letter-spacing:.04em;text-transform:uppercase;color:var(--muted-2);margin-bottom:20px}.post-head h1{margin:0;font-family:var(--serif);font-weight:400;font-size:clamp(32px,4.5vw,48px);line-height:1.1;letter-spacing:-.02em;color:var(--ink);text-wrap:balance}.post-foot{margin-top:clamp(80px,12vh,120px);padding-top:28px;border-top:1px solid var(--rule);display:flex;justify-content:space-between;align-items:baseline;font-family:var(--mono);font-size:11px;font-weight:400;letter-spacing:.04em;text-transform:uppercase}.post-foot a{color:var(--accent-2);transition:color .2s ease}.post-foot a:hover{color:var(--accent)}@media(max-width:760px){.page,.post-shell{padding:0 20px}.topbar{padding:16px 20px 12px}.topbar .nav{gap:16px}.topbar .nav a{font-size:11px}.topbar .nav a.internal{display:none}.post .row{flex-direction:column;gap:4px;align-items:flex-start}.post .ix{width:auto}.post .body{flex-direction:column;gap:8px;align-items:flex-start}.post .date{opacity:1;transform:none}.projects-grid{grid-template-columns:1fr;grid-template-rows:auto}.proj.feat,.proj.b,.proj.c{grid-column:1;grid-row:auto;transform:none;min-height:0}.proj.feat{min-height:320px}.proj.b:hover,.proj.c:hover{transform:translateY(-2px)}}
