@font-face{font-family:Newsreader Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/newsreader-vietnamese-wght-normal.Czsa-EzN.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:Newsreader Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/newsreader-latin-ext-wght-normal.C-3rgBeH.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:Newsreader Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/newsreader-latin-wght-normal.CCVVNp6i.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:Newsreader Variable;font-style:italic;font-display:swap;font-weight:200 800;src:url(/_astro/newsreader-vietnamese-wght-italic.xAqemagA.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:Newsreader Variable;font-style:italic;font-display:swap;font-weight:200 800;src:url(/_astro/newsreader-latin-ext-wght-italic.DFS986qL.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:Newsreader Variable;font-style:italic;font-display:swap;font-weight:200 800;src:url(/_astro/newsreader-latin-wght-italic.Bxi8ein9.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(/_astro/ibm-plex-sans-cyrillic-ext-400-normal.g30qAdWV.woff2) format("woff2"),url(/_astro/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(/_astro/ibm-plex-sans-cyrillic-400-normal.DZqxrq2p.woff2) format("woff2"),url(/_astro/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(/_astro/ibm-plex-sans-greek-400-normal._efipK4i.woff2) format("woff2"),url(/_astro/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(/_astro/ibm-plex-sans-vietnamese-400-normal.DG4YqDda.woff2) format("woff2"),url(/_astro/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(/_astro/ibm-plex-sans-latin-ext-400-normal.C5H60-Va.woff2) format("woff2"),url(/_astro/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(/_astro/ibm-plex-sans-latin-400-normal.CDDApCn2.woff2) format("woff2"),url(/_astro/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:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-sans-cyrillic-ext-500-normal.Cs5J6C77.woff2) format("woff2"),url(/_astro/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(/_astro/ibm-plex-sans-cyrillic-500-normal.CocWQlwt.woff2) format("woff2"),url(/_astro/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(/_astro/ibm-plex-sans-greek-500-normal.JMMifIXV.woff2) format("woff2"),url(/_astro/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(/_astro/ibm-plex-sans-vietnamese-500-normal.e4dixQRQ.woff2) format("woff2"),url(/_astro/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(/_astro/ibm-plex-sans-latin-ext-500-normal.DakdToA3.woff2) format("woff2"),url(/_astro/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(/_astro/ibm-plex-sans-latin-500-normal.6ng42L7E.woff2) format("woff2"),url(/_astro/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(/_astro/ibm-plex-sans-cyrillic-ext-600-normal.DUMzJB7m.woff2) format("woff2"),url(/_astro/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(/_astro/ibm-plex-sans-cyrillic-600-normal.71GNu3SW.woff2) format("woff2"),url(/_astro/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(/_astro/ibm-plex-sans-greek-600-normal.DzTrcv_p.woff2) format("woff2"),url(/_astro/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(/_astro/ibm-plex-sans-vietnamese-600-normal.DpPYBSTl.woff2) format("woff2"),url(/_astro/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(/_astro/ibm-plex-sans-latin-ext-600-normal.DOrvGEcy.woff2) format("woff2"),url(/_astro/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(/_astro/ibm-plex-sans-latin-600-normal.CuJfVYMP.woff2) format("woff2"),url(/_astro/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(/_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{--white: #f0f0f0;--violet: #583cfe;--bg: var(--white);--ink: #15132b;--ink-2: #4a4860;--ink-3: #696780;--line: #d6d5dc;--line-2: #bebcc8;--violet-ink: #4128e6;--violet-wash: #e4e0ff;--serif: "Newsreader Variable", "Iowan Old Style", Georgia, serif;--sans: "IBM Plex Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--mono: "IBM Plex Mono", ui-monospace, Menlo, monospace;--side: 300px;--pad: clamp(20px, 4.5vw, 64px);--pad-r: max(var(--pad), calc(100% - 1040px - var(--pad)));color-scheme:light}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:17px;line-height:1.65;-webkit-font-smoothing:antialiased;overflow-x:hidden}img,svg{display:block;max-width:100%}a{color:inherit;text-decoration-color:var(--line-2);text-decoration-thickness:1px;text-underline-offset:3px;transition:color .15s,text-decoration-color .15s}a:hover{color:var(--violet-ink);text-decoration-color:var(--violet)}:focus-visible{outline:2px solid var(--violet);outline-offset:3px}::selection{background:var(--violet);color:var(--white)}h1,h2,h3,h4,p,ul,ol,dl,dd{margin:0;padding:0}h1,h2,h3{font-family:var(--serif);font-weight:400;letter-spacing:-.015em;line-height:1.1}em{font-family:var(--serif);font-style:italic;color:var(--violet-ink)}.label{font-family:var(--mono);font-size:12px;font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3)}.skip{position:absolute;left:-9999px;top:8px;background:var(--violet);color:var(--white);padding:8px 12px;z-index:100}.skip:focus{left:8px}.shell{display:grid;grid-template-columns:var(--side) minmax(0,1fr);min-height:100vh}.content{border-left:1px solid var(--line);min-width:0}.block{padding:clamp(48px,7vw,88px) var(--pad-r) clamp(48px,7vw,88px) var(--pad);border-bottom:1px solid var(--line)}.block-head{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:8px 16px;margin-bottom:36px}.block-head h2{font-size:clamp(30px,3.6vw,42px)}@media(max-width:960px){.shell{grid-template-columns:1fr}.content{border-left:0}}.intro{padding:clamp(56px,9vw,120px) var(--pad-r) clamp(40px,6vw,72px) var(--pad);border-bottom:1px solid var(--line)}.intro .label{display:block;margin-bottom:22px}.intro h1{font-size:clamp(44px,6.4vw,88px);line-height:1.02;letter-spacing:-.025em;max-width:14ch}.intro p{margin-top:26px;font-size:clamp(18px,1.9vw,21px);color:var(--ink-2);max-width:56ch}.btn{display:inline-flex;align-items:center;gap:10px;padding:12px 20px;font-size:15px;font-weight:500;text-decoration:none;border:1px solid var(--ink);border-radius:999px;color:var(--ink);background:transparent;transition:background .15s,color .15s,border-color .15s}.btn:hover{background:var(--ink);color:var(--white)}.btn-violet{background:var(--violet);border-color:var(--violet);color:#fff}.btn-violet:hover{background:var(--ink);border-color:var(--ink);color:#fff}.more{display:inline-flex;gap:8px;font-size:15px;font-weight:500;text-decoration:none;color:var(--violet-ink)}.more:hover{text-decoration:underline}.tags{display:flex;flex-wrap:wrap;gap:4px 18px;list-style:none}.tags li{font-family:var(--mono);font-size:12.5px;color:var(--ink-2);white-space:nowrap}.tags li:before{content:"";display:inline-block;width:5px;height:5px;margin-right:7px;vertical-align:middle;background:var(--violet)}.rows{list-style:none;border-top:1px solid var(--ink)}.row{border-bottom:1px solid var(--line)}.row a{display:grid;grid-template-columns:48px minmax(0,1fr) 190px 28px;gap:20px;align-items:baseline;padding:28px 0;text-decoration:none;color:var(--ink)}.row-num{font-family:var(--mono);font-size:12.5px;color:var(--ink-3)}.row-name{font-family:var(--serif);font-size:clamp(32px,3.4vw,46px);line-height:1;letter-spacing:-.02em;transition:color .15s}.row-name small{font-family:var(--mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--violet-ink);border:1px solid currentColor;border-radius:999px;padding:2px 8px;margin-left:12px;vertical-align:middle;position:relative;top:-4px;white-space:nowrap}.row-desc{display:block;margin-top:12px;color:var(--ink-2);font-size:15.5px;max-width:58ch}.row-meta{font-size:14px;color:var(--ink-2);display:flex;flex-direction:column;gap:2px}.row-meta span:first-child{color:var(--ink);font-weight:500}.row-arrow{font-size:20px;color:var(--ink-3);transition:transform .2s,color .15s}.row a:hover .row-name,.row a:hover .row-arrow{color:var(--violet-ink)}.row a:hover .row-arrow{transform:translate(4px)}@media(max-width:720px){.row a{grid-template-columns:30px minmax(0,1fr);gap:10px 10px}.row-meta{grid-column:2;flex-direction:row;flex-wrap:wrap;gap:2px 12px}.row-arrow{display:none}}.repos{list-style:none;border-top:1px solid var(--ink)}.repo{display:grid;grid-template-columns:210px minmax(0,1fr) 120px;gap:24px;padding:24px 0;border-bottom:1px solid var(--line)}.repo-name{font-family:var(--mono);font-size:14.5px;font-weight:500;word-break:break-word}.repo-body{display:flex;flex-direction:column;gap:10px}.repo-body p{color:var(--ink-2);font-size:15.5px;max-width:64ch}.repo-meta{font-family:var(--mono);font-size:12px;color:var(--ink-3);display:flex;flex-direction:column;gap:2px;text-align:right}@media(max-width:820px){.repo{grid-template-columns:1fr;gap:8px}.repo-meta{flex-direction:row;gap:14px;text-align:left}}.facts{display:grid;grid-template-columns:170px minmax(0,1fr);border-top:1px solid var(--line)}.facts dt,.facts dd{padding:14px 0;border-bottom:1px solid var(--line)}.facts dt{font-family:var(--mono);font-size:12px;font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);padding-top:17px}@media(max-width:560px){.facts{grid-template-columns:1fr}.facts dt{border-bottom:0;padding-bottom:0}}.prose{display:flex;flex-direction:column;gap:1.1em;max-width:62ch;font-size:18px}.prose a{text-decoration-color:var(--violet)}.band{background:var(--violet);color:#fff;padding:clamp(48px,7vw,88px) var(--pad-r) clamp(48px,7vw,88px) var(--pad)}.band .label{color:#ffffffbf}.band h2{font-size:clamp(34px,4.6vw,58px);margin-top:16px;max-width:16ch}.band em{color:#fff}.band p{margin-top:18px;font-size:18px;max-width:52ch;color:#ffffffe6}.band .btn{margin-top:28px;border-color:#fff;color:#fff}.band .btn:hover{background:#fff;color:var(--violet-ink)}.band a:not(.btn){color:#fff;text-decoration-color:#fff9}.foot{padding:28px var(--pad-r) 28px var(--pad);display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px;font-size:13.5px;color:var(--ink-3)}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}.side[data-astro-cid-ssfzsv2f]{position:relative}.side-inner[data-astro-cid-ssfzsv2f]{position:sticky;top:0;height:100vh;min-height:560px;display:flex;flex-direction:column;justify-content:space-between;gap:40px;padding:40px 32px 36px 40px}.side-name[data-astro-cid-ssfzsv2f]{font-family:var(--serif);font-size:30px;letter-spacing:-.02em;line-height:1;text-decoration:none;color:var(--ink)}.side-name[data-astro-cid-ssfzsv2f]:hover{color:var(--violet-ink)}.side-role[data-astro-cid-ssfzsv2f]{margin-top:12px;font-size:14.5px;color:var(--ink-2);line-height:1.5}.side-nav[data-astro-cid-ssfzsv2f]{list-style:none;display:flex;flex-direction:column;border-top:1px solid var(--line)}.side-nav[data-astro-cid-ssfzsv2f] a[data-astro-cid-ssfzsv2f]{display:flex;align-items:baseline;gap:14px;padding:9px 0;border-bottom:1px solid var(--line);text-decoration:none;font-size:15.5px;color:var(--ink-2)}.side-nav[data-astro-cid-ssfzsv2f] .n[data-astro-cid-ssfzsv2f]{font-family:var(--mono);font-size:11.5px;color:var(--ink-3)}.side-nav[data-astro-cid-ssfzsv2f] a[data-astro-cid-ssfzsv2f]:hover{color:var(--ink)}.side-nav[data-astro-cid-ssfzsv2f] a[data-astro-cid-ssfzsv2f][aria-current=page]{color:var(--violet-ink);font-weight:500}.side-nav[data-astro-cid-ssfzsv2f] a[data-astro-cid-ssfzsv2f][aria-current=page] .n[data-astro-cid-ssfzsv2f]{color:var(--violet-ink)}.side-contact[data-astro-cid-ssfzsv2f]{display:flex;flex-direction:column;gap:8px}.side-mail[data-astro-cid-ssfzsv2f]{font-weight:500;font-size:15px;color:var(--ink);text-decoration-color:var(--violet);word-break:break-all}.side-contact[data-astro-cid-ssfzsv2f] ul[data-astro-cid-ssfzsv2f]{list-style:none;display:flex;flex-wrap:wrap;gap:2px 14px;margin-top:4px}.side-contact[data-astro-cid-ssfzsv2f] ul[data-astro-cid-ssfzsv2f] a[data-astro-cid-ssfzsv2f]{font-size:13.5px;color:var(--ink-2);text-decoration:none}.side-contact[data-astro-cid-ssfzsv2f] ul[data-astro-cid-ssfzsv2f] a[data-astro-cid-ssfzsv2f]:hover{color:var(--violet-ink)}.topbar[data-astro-cid-ssfzsv2f]{display:none}@media(max-width:960px){.side[data-astro-cid-ssfzsv2f]{display:none}.topbar[data-astro-cid-ssfzsv2f]{display:flex;align-items:flex-start;justify-content:space-between;position:sticky;top:0;z-index:50;background:var(--bg);border-bottom:1px solid var(--line);padding:16px var(--pad)}.topbar[data-astro-cid-ssfzsv2f] .side-name[data-astro-cid-ssfzsv2f]{font-size:24px;padding-top:4px}.menu[data-astro-cid-ssfzsv2f] summary[data-astro-cid-ssfzsv2f]{list-style:none;cursor:pointer;font-size:14px;font-weight:500;padding:7px 14px;border:1px solid var(--ink);border-radius:999px}.menu[data-astro-cid-ssfzsv2f] summary[data-astro-cid-ssfzsv2f]::-webkit-details-marker{display:none}.menu[data-astro-cid-ssfzsv2f][open] summary[data-astro-cid-ssfzsv2f]{background:var(--ink);color:var(--white)}.menu[data-astro-cid-ssfzsv2f] nav[data-astro-cid-ssfzsv2f]{position:absolute;left:0;right:0;top:100%;background:var(--bg);border-bottom:1px solid var(--line);padding:8px var(--pad) 24px}.menu[data-astro-cid-ssfzsv2f] .side-nav[data-astro-cid-ssfzsv2f] a[data-astro-cid-ssfzsv2f]{font-size:20px;padding:12px 0}.menu[data-astro-cid-ssfzsv2f] .side-mail[data-astro-cid-ssfzsv2f]{display:inline-block;margin-top:18px}}
