@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-vietnamese-wght-normal-CnvboYUG.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(/assets/fraunces-latin-ext-wght-normal-Ca2vKHc0.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(/assets/fraunces-latin-wght-normal-ukD16Tqj.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(/assets/fraunces-vietnamese-wght-italic-BicUS2cM.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(/assets/fraunces-latin-ext-wght-italic-BfTTTDIL.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(/assets/fraunces-latin-wght-italic-Py8at3oI.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 Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-cyrillic-ext-400-normal-g30qAdWV.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-ext-400-normal-Dsrv2Tcn.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 Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-cyrillic-400-normal-DZqxrq2p.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-400-normal-BTotfTJu.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-greek-400-normal-_efipK4i.woff2) format("woff2"),url(/assets/ibm-plex-sans-greek-400-normal-D9ESIMu3.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-vietnamese-400-normal-DG4YqDda.woff2) format("woff2"),url(/assets/ibm-plex-sans-vietnamese-400-normal-fK1oJ5dG.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 Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-latin-ext-400-normal-C5H60-Va.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-ext-400-normal-RBey6euL.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 Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.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 Sans;font-style:italic;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-cyrillic-ext-400-italic-BELOEI8R.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-ext-400-italic-CfSXsIbO.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 Sans;font-style:italic;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-cyrillic-400-italic-D9J6q4_O.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-400-italic-Bf1n82Tb.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:italic;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-greek-400-italic-BEZwmy7D.woff2) format("woff2"),url(/assets/ibm-plex-sans-greek-400-italic-CTYLy0lX.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:IBM Plex Sans;font-style:italic;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-vietnamese-400-italic-BbRnwouv.woff2) format("woff2"),url(/assets/ibm-plex-sans-vietnamese-400-italic-78jqtfZH.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 Sans;font-style:italic;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-latin-ext-400-italic-Du9zzoL2.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-ext-400-italic-V_9i1P_m.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 Sans;font-style:italic;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-latin-400-italic-CZTNEAuW.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-400-italic-CsGl1sm0.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 Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-cyrillic-ext-500-normal-Cs5J6C77.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-ext-500-normal-DB5PtV2g.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 Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-cyrillic-500-normal-CocWQlwt.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-500-normal-ByOcLdNv.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-greek-500-normal-JMMifIXV.woff2) format("woff2"),url(/assets/ibm-plex-sans-greek-500-normal-CuWXN6rf.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-vietnamese-500-normal-e4dixQRQ.woff2) format("woff2"),url(/assets/ibm-plex-sans-vietnamese-500-normal-BEb3_waV.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 Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-latin-ext-500-normal-DakdToA3.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-ext-500-normal-D0aIdm-b.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 Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-latin-500-normal-6ng42L7E.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-500-normal-BgVn5rGT.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 Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-cyrillic-ext-600-normal-DUMzJB7m.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-ext-600-normal-Bz0x94Yp.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 Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-cyrillic-600-normal-71GNu3SW.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-600-normal-BGq0mW3O.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-greek-600-normal-DzTrcv_p.woff2) format("woff2"),url(/assets/ibm-plex-sans-greek-600-normal-D-CqTdkO.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-vietnamese-600-normal-DpPYBSTl.woff2) format("woff2"),url(/assets/ibm-plex-sans-vietnamese-600-normal-DgdngZtN.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 Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-latin-ext-600-normal-DOrvGEcy.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-ext-600-normal-DIrixKbi.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 Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-600-normal-Cu4Hd6ag.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:400;src:url(/assets/ibm-plex-mono-cyrillic-ext-400-normal-xuaO2J-f.woff2) format("woff2"),url(/assets/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(/assets/ibm-plex-mono-cyrillic-400-normal-BSMlKf0J.woff2) format("woff2"),url(/assets/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(/assets/ibm-plex-mono-vietnamese-400-normal-BulugwFq.woff2) format("woff2"),url(/assets/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(/assets/ibm-plex-mono-latin-ext-400-normal-BmRBH3aV.woff2) format("woff2"),url(/assets/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(/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2) format("woff2"),url(/assets/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(/assets/ibm-plex-mono-cyrillic-ext-500-normal-BqneJy0T.woff2) format("woff2"),url(/assets/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(/assets/ibm-plex-mono-cyrillic-500-normal-Bq9vWWag.woff2) format("woff2"),url(/assets/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(/assets/ibm-plex-mono-vietnamese-500-normal-DZ4AoWbu.woff2) format("woff2"),url(/assets/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(/assets/ibm-plex-mono-latin-ext-500-normal-CAhNIIs5.woff2) format("woff2"),url(/assets/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(/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2) format("woff2"),url(/assets/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{color-scheme:light;--bg: #f7f4ee;--bg-raised: #efeae1;--ink: #211d19;--ink-2: #5f594f;--accent: #a8442a;--accent-strong: #7f3218;--rule: #ddd6c9;--rule-strong: #c9c0af;--code-bg: #efe9dd;--font-display: "Fraunces Variable", Georgia, serif;--font-body: "IBM Plex Sans", system-ui, sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, monospace;--container: 1080px;--measure: 65ch;--space-1: .5rem;--space-2: 1rem;--space-3: 1.75rem;--space-4: 3rem;--space-5: 5rem}:root[data-theme=dark]{color-scheme:dark;--bg: #191613;--bg-raised: #211d18;--ink: #ebe5da;--ink-2: #a89f92;--accent: #e0754f;--accent-strong: #ef9a7c;--rule: #322c25;--rule-strong: #453e33;--code-bg: #241f19}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font-body);font-size:1.0625rem;line-height:1.65;font-kerning:normal;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}img,svg{max-width:100%;height:auto}h1,h2,h3,h4{font-family:var(--font-display);font-weight:560;line-height:1.12;letter-spacing:-.01em;margin:0;text-wrap:balance}p{margin:0 0 1em}a{color:var(--ink);text-decoration:underline;text-decoration-color:var(--rule-strong);text-decoration-thickness:1px;text-underline-offset:.2em;transition:color .12s ease,text-decoration-color .12s ease}a:hover{color:var(--accent);text-decoration-color:var(--accent)}::selection{background:var(--accent);color:var(--bg)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:1px}code{font-family:var(--font-mono);font-size:.86em;background:var(--code-bg);padding:.1em .35em;border-radius:3px;overflow-wrap:anywhere}main:focus{outline:none}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.container{max-width:var(--container);margin:0 auto;padding:0 clamp(1.25rem,4vw,2.5rem)}.section{padding:var(--space-4) 0;border-top:1px solid var(--rule);scroll-margin-top:1rem}@media(max-width:720px){.section{padding:var(--space-3) 0}}.section-label{font-family:var(--font-mono);font-size:.72rem;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2);margin:0 0 var(--space-2)}.kicker{font-family:var(--font-mono);font-size:.72rem;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2)}.measure{max-width:var(--measure)}.muted{color:var(--ink-2)}.mono{font-family:var(--font-mono)}.site-header{display:grid;grid-template-columns:auto 1fr auto;grid-template-areas:"brand nav toggle";align-items:center;column-gap:clamp(1rem,2.5vw,1.75rem);padding:var(--space-3) 0}.site-header .wordmark{grid-area:brand}.site-header .site-nav{grid-area:nav;justify-self:end}.site-header .theme-toggle{grid-area:toggle}.wordmark{white-space:nowrap;font-family:var(--font-display);font-size:1.25rem;font-weight:600;text-decoration:none;letter-spacing:-.01em}.site-nav{display:flex;align-items:baseline;gap:clamp(.9rem,2.5vw,1.6rem)}.site-nav a{white-space:nowrap}.site-nav a{font-family:var(--font-mono);font-size:.8rem;letter-spacing:.06em;text-transform:uppercase;text-decoration:none;color:var(--ink-2)}.site-nav a:hover,.site-nav a[aria-current=page]{color:var(--accent)}.site-nav a[aria-current=page]{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.35em}.theme-toggle{display:inline-grid;place-items:center;width:2.5rem;height:2.5rem;padding:0;border:1px solid var(--rule-strong);border-radius:50%;background:transparent;color:var(--ink-2);cursor:pointer;transition:color .12s ease,border-color .12s ease,background .12s ease}.theme-toggle svg{width:1.1rem;height:1.1rem}.theme-toggle:hover{color:var(--accent);border-color:var(--accent)}.site-footer{border-top:1px solid var(--rule);margin-top:var(--space-5);padding:var(--space-3) 0 var(--space-4);display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--space-2);font-size:.9rem;color:var(--ink-2)}.social-links{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.5rem 1.25rem}.social-links a{display:inline-flex;align-items:center;gap:.45em;white-space:nowrap}.social-icon{flex:none;width:1em;height:1em}.footer-links a{color:var(--ink-2)}.contact-links{gap:0 1.5rem}.contact-links li:first-child{flex-basis:100%}.contact-links a{min-height:2.75rem}.contact-links .social-icon{width:1.1em;height:1.1em}.hero{padding:clamp(var(--space-4),9vh,7rem) 0 var(--space-4)}.hero h1{font-size:clamp(2.3rem,6.5vw,4.4rem);font-weight:540;max-width:20ch}.hero h1 em{font-style:italic;font-weight:480;color:var(--accent)}.hero-intro{margin-top:var(--space-3);font-size:clamp(1.05rem,1.6vw,1.2rem);max-width:56ch}.now-strip{border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);padding:var(--space-3) 0}.now-strip .pulse{display:inline-block;width:.5em;height:.5em;border-radius:50%;background:var(--accent);margin-right:.5em;vertical-align:middle;transform:translateY(-.05em)}.now-strip+.section{border-top:none}.work-list{list-style:none;margin:0;padding:0}.work-list li{border-bottom:1px solid var(--rule)}.work-list li:last-child{border-bottom:none}.work-link{display:grid;grid-template-columns:1fr auto;align-items:baseline;gap:.25rem 1.5rem;padding:1.35rem 0;text-decoration:none}.work-list li:first-child .work-link{padding-top:.45rem}@media(max-width:720px){.work-link{grid-template-columns:1fr;gap:.15rem}}.work-link .work-title{font-family:var(--font-display);font-size:clamp(1.4rem,2.6vw,1.9rem);font-weight:540;letter-spacing:-.01em;transition:color .12s ease}.work-link:hover .work-title{color:var(--accent)}.work-link .work-year{font-family:var(--font-mono);font-size:.8rem;color:var(--ink-2)}.work-link .work-blurb{grid-column:1 / -1;color:var(--ink-2);max-width:60ch;margin:0}.xp-item{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:baseline;gap:.15rem 1.5rem;padding:0 0 var(--space-3)}.xp-item:last-child{padding-bottom:0}.xp-role{font-weight:600}.xp-dates{font-family:var(--font-mono);font-size:.8rem;color:var(--ink-2);white-space:nowrap;text-align:right}.xp-item p{grid-column:1 / -1;color:var(--ink-2);max-width:60ch;margin:0}.prose{max-width:var(--measure)}.prose h2{font-size:1.55rem;margin:var(--space-4) 0 var(--space-2)}.prose h3{font-size:1.15rem;margin:var(--space-3) 0 var(--space-1)}.prose ul,.prose ol{padding-left:1.4rem;margin:0 0 1em}.prose li{margin-bottom:.35em}.prose blockquote{margin:var(--space-3) 0;padding:.25rem 0 .25rem 1.25rem;border-left:2px solid var(--accent);color:var(--ink-2);font-style:italic}.prose pre{background:var(--code-bg);border:1px solid var(--rule);border-radius:4px;padding:1rem 1.25rem;overflow-x:auto;font-size:.86rem;line-height:1.55}.prose pre code{background:none;padding:0;font-size:inherit}.prose table{border-collapse:collapse;width:100%;margin:var(--space-3) 0;font-size:.92rem;font-variant-numeric:tabular-nums}.prose th{font-family:var(--font-mono);font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2);font-weight:500;text-align:left}.prose th,.prose td{border-bottom:1px solid var(--rule);padding:.55rem 1.25rem .55rem 0}.prose hr{border:none;border-top:1px solid var(--rule);margin:var(--space-4) 0}.prose strong{font-weight:600}.log-list{list-style:none;margin:0;padding:0}.log-list li{border-bottom:1px solid var(--rule)}.log-row{display:grid;grid-template-columns:5.5rem 1fr auto;align-items:baseline;gap:.25rem 1.25rem;padding:1.1rem 0;text-decoration:none}@media(max-width:720px){.log-row{grid-template-columns:5.5rem 1fr}.log-row .log-date{display:none}}.log-row .log-day{font-family:var(--font-mono);font-size:.8rem;color:var(--accent)}.log-row .log-title{font-family:var(--font-display);font-size:1.25rem;font-weight:540;transition:color .12s ease}.log-row:hover .log-title{color:var(--accent)}.log-row .log-date{font-family:var(--font-mono);font-size:.8rem;color:var(--ink-2)}.log-row .log-summary{grid-column:2 / -1;color:var(--ink-2);margin:0;max-width:58ch}.entry-header{padding:var(--space-4) 0 var(--space-3);border-bottom:1px solid var(--rule);margin-bottom:var(--space-3)}.entry-header h1{font-size:clamp(1.9rem,4.5vw,2.9rem);margin:.4rem 0 .75rem}.entry-meta{font-family:var(--font-mono);font-size:.8rem;color:var(--ink-2);display:flex;flex-wrap:wrap;gap:1.25rem}.entry-nav{display:flex;justify-content:space-between;gap:var(--space-2);border-top:1px solid var(--rule);margin-top:var(--space-4);padding-top:var(--space-3);font-size:.95rem}main{container-type:inline-size}.project-page{--text-col: 41.5rem;max-width:var(--text-col);margin-inline:auto}.project-page .prose{max-width:none}.project-page .breakout{margin-left:calc((100% - 100cqi)/2);margin-right:calc((100% - 100cqi)/2)}.project-page .breakout>figcaption{max-width:none;padding-inline:max(0px,(100% - var(--text-col)) / 2)}.project-header{padding:var(--space-4) 0 var(--space-3)}.project-header h1{font-size:clamp(2.1rem,5.5vw,3.6rem);margin:.4rem 0 1rem}.project-header .dek{font-size:clamp(1.05rem,1.6vw,1.2rem);color:var(--ink-2);max-width:52ch}.project-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(8.5rem,100%),1fr));gap:var(--space-2) 1.5rem;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);padding:var(--space-2) 0;margin:var(--space-3) 0 var(--space-4);font-size:.92rem}.project-facts dt{font-family:var(--font-mono);font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2);margin-bottom:.25rem}.project-facts dd{margin:0}.figure{margin:var(--space-4) 0;overflow-x:auto}.figure .diagram{min-width:680px}.figure figcaption{font-family:var(--font-mono);font-size:.78rem;color:var(--ink-2);margin-top:.75rem;max-width:60ch}.diagram{border:1px solid var(--rule);border-radius:4px;background:var(--bg-raised);padding:clamp(.5rem,2vw,1.5rem)}.diagram rect{fill:var(--bg);stroke:var(--rule-strong)}.diagram rect.box-accent{stroke:var(--accent)}.diagram text{font-family:var(--font-mono);font-size:11px;fill:var(--ink-2)}.diagram text.dt{font-size:13px;fill:var(--ink)}.diagram line{stroke:var(--ink-2)}.diagram marker path{fill:var(--ink-2)}.backlink{font-family:var(--font-mono);font-size:.8rem;letter-spacing:.06em;text-transform:uppercase;text-decoration:none;color:var(--ink-2)}.backlink:hover{color:var(--accent)}h1.page-title{font-size:clamp(2.1rem,5.5vw,3.4rem);margin:.4rem 0 1rem}.page-intro{color:var(--ink-2);max-width:58ch;font-size:1.05rem}:root{--radius: 10px;--shadow: 0 1px 2px rgb(33 29 25 / .06), 0 8px 24px -12px rgb(33 29 25 / .18);--shadow-hover: 0 2px 4px rgb(33 29 25 / .08), 0 18px 40px -16px rgb(33 29 25 / .28)}:root[data-theme=dark]{--shadow: 0 1px 2px rgb(0 0 0 / .3), 0 8px 24px -12px rgb(0 0 0 / .6);--shadow-hover: 0 2px 4px rgb(0 0 0 / .35), 0 18px 40px -16px rgb(0 0 0 / .75)}.hero .kicker{margin-bottom:var(--space-2)}.hero--portrait{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"copy portrait";align-items:center;column-gap:clamp(2rem,5vw,4.5rem)}.hero-copy{grid-area:copy;min-width:0}.hero-portrait{grid-area:portrait;display:block;width:clamp(11rem,22vw,17rem);height:auto;aspect-ratio:1;border-radius:50%;object-fit:cover;background:var(--bg-raised);box-shadow:0 0 0 1px var(--rule),var(--shadow)}@media(max-width:720px){.hero--portrait{padding-top:var(--space-3);grid-template-columns:minmax(0,1fr);grid-template-areas:"portrait" "copy";row-gap:var(--space-3);justify-items:start}.hero-portrait{width:5.5rem}}.hero-actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:var(--space-3)}.button{display:inline-flex;align-items:center;min-height:2.75rem;padding:0 1.15rem;border:1px solid var(--rule-strong);border-radius:999px;font-family:var(--font-mono);font-size:.8rem;letter-spacing:.04em;text-decoration:none;color:var(--ink);background:transparent;transition:background .15s ease,color .15s ease,border-color .15s ease,transform .15s ease}.button:hover{border-color:var(--accent);color:var(--accent)}.button--primary{background:var(--ink);border-color:var(--ink);color:var(--bg)}.button--primary:hover{background:var(--accent);border-color:var(--accent);color:var(--bg)}.button:active{transform:translateY(1px)}.work-section{border-top:1px solid var(--rule);padding:var(--space-4) 0;scroll-margin-top:1rem}.work-head{display:grid;grid-template-columns:minmax(0,1fr);justify-items:start;margin-bottom:var(--space-3)}.tabs{display:flex;gap:.4rem;padding:.3rem;border:1px solid var(--rule);border-radius:999px;background:var(--bg-raised);overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none;max-width:100%;min-width:0}.tabs::-webkit-scrollbar{display:none}.tab{flex:none;display:inline-flex;align-items:center;gap:.45rem;min-height:2.4rem;padding:0 .95rem;border:none;border-radius:999px;background:transparent;color:var(--ink-2);font-family:var(--font-mono);font-size:.78rem;letter-spacing:.04em;cursor:pointer;transition:background .15s ease,color .15s ease}.tab:hover{color:var(--ink)}.tab[aria-selected=true]{background:var(--bg);color:var(--ink);box-shadow:var(--shadow)}.tab-count{font-size:.7rem;min-width:1.4rem;padding:.05rem .4rem;border-radius:999px;background:var(--rule);color:var(--ink-2);text-align:center}.tab[aria-selected=true] .tab-count{background:var(--accent);color:var(--bg)}#work-panel:focus-visible{outline-offset:8px}.track-intro{color:var(--ink-2);max-width:60ch;margin:0 0 var(--space-3)}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(17.5rem,100%),1fr));gap:var(--space-3) 1.5rem}.card{display:flex;flex-direction:column;min-width:0;overflow-wrap:break-word;border:1px solid var(--rule);border-radius:var(--radius);background:var(--bg);overflow:hidden;box-shadow:var(--shadow);transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease;animation:card-in .32s ease both}.card-grid .card:nth-child(2){animation-delay:40ms}.card-grid .card:nth-child(3){animation-delay:80ms}.card-grid .card:nth-child(4){animation-delay:.12s}.card-grid .card:nth-child(n+5){animation-delay:.16s}@keyframes card-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.card--link:hover{transform:translateY(-3px);box-shadow:var(--shadow-hover);border-color:var(--rule-strong)}.card-link{display:flex;flex-direction:column;flex:1;text-decoration:none;color:inherit}.card-link:hover{color:inherit}.card-link:focus-visible{outline-offset:-3px}.card .media{margin:0;border-bottom:1px solid var(--rule)}.card .media-frame{border-radius:0;border:none}.card-body{display:flex;flex-direction:column;gap:.4rem;padding:1.1rem 1.2rem 1.25rem;flex:1}.card-meta{font-family:var(--font-mono);font-size:.72rem;letter-spacing:.06em;color:var(--ink-2)}.card-title{font-size:1.35rem;transition:color .15s ease}.card--link:hover .card-title{color:var(--accent)}.card-blurb{color:var(--ink-2);font-size:.95rem;line-height:1.55;margin:0}.tag-list{list-style:none;display:flex;flex-wrap:wrap;gap:.35rem;margin:auto 0 0;padding:.6rem 0 0}.tag-list li{font-family:var(--font-mono);font-size:.68rem;padding:.2rem .55rem;border-radius:999px;border:1px solid var(--rule);color:var(--ink-2)}.media{margin:0}.media-frame{position:relative;overflow:hidden;border-radius:var(--radius);border:1px solid var(--rule);background:var(--bg-raised)}.media-frame img,.media-frame video{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;display:block}.media-placeholder{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:1rem;text-align:center;color:var(--ink-2);font-size:.72rem;background-image:repeating-linear-gradient(-45deg,transparent 0 12px,color-mix(in srgb,var(--rule) 55%,transparent) 12px 13px)}.media figcaption{font-family:var(--font-mono);font-size:.75rem;color:var(--ink-2);margin-top:.6rem}.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(11rem,100%),1fr));gap:1.25rem;margin:var(--space-3) 0 var(--space-4)}.gallery--wide{grid-template-columns:1fr}.project-hero-media{margin:0 0 var(--space-4)}.timeline{--tl-pad: 1.25rem;--tl-dot: 9px;list-style:none;max-width:var(--measure);margin:0;padding:0 0 0 var(--tl-pad);border-left:1px solid var(--rule-strong)}.timeline .xp-item{position:relative}.timeline .xp-item:before{content:"";position:absolute;left:calc(-1 * var(--tl-pad) - .5px - var(--tl-dot) / 2);top:calc(1.65em / 2 - var(--tl-dot) / 2);top:calc(.5lh - var(--tl-dot) / 2);width:var(--tl-dot);height:var(--tl-dot);border-radius:50%;background:var(--bg);border:1px solid var(--accent)}.timeline .xp-item:first-child:before{background:var(--accent)}.skills{display:grid;grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));gap:var(--space-2) var(--space-3);margin:0}.skills dt{font-family:var(--font-mono);font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--accent);margin-bottom:.3rem}.skills dd{margin:0;color:var(--ink-2);font-size:.95rem}@media(max-width:720px){.xp-item{grid-template-columns:minmax(0,1fr);gap:.1rem}.xp-dates{text-align:left}.xp-item p{margin-top:.35rem}}@media(prefers-reduced-motion:reduce){.card,.card--link:hover,.button:active{animation:none;transform:none;transition:none}}@media(max-width:720px){.site-header{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"brand toggle" "nav nav";row-gap:.75rem}.site-header .site-nav{justify-self:start;flex-wrap:wrap;gap:.4rem .9rem;min-width:0}.tabs{-webkit-mask-image:linear-gradient(to right,#000 85%,transparent);mask-image:linear-gradient(to right,#000 85%,transparent)}}.gallery--phones{grid-template-columns:repeat(4,minmax(0,1fr))}@media(max-width:560px){.gallery--phones{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}}.gallery--landscape{grid-template-columns:repeat(auto-fill,minmax(min(16rem,100%),1fr))}.media-frame video{background:#000}.prose .split{display:grid;grid-template-columns:minmax(12rem,16rem) minmax(0,1fr);gap:var(--space-3);align-items:start}.prose .split h2:first-child{margin-top:0}@media(max-width:720px){.prose .split{grid-template-columns:1fr}.prose .split .split-media{max-width:18rem}}.prose .control-list{margin:var(--space-2) 0 var(--space-3);display:grid;gap:0;border-top:1px solid var(--rule)}.prose .control-list>div{padding:.9rem 0;border-bottom:1px solid var(--rule)}.prose .control-list dt{font-weight:600;margin-bottom:.2rem}.prose .control-list dd{margin:0;color:var(--ink-2)}
