@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-cyrillic-ext-wght-normal.cHuGMAiY.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:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-cyrillic-wght-normal.DwHjdM4S.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-greek-wght-normal.ece1310W.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:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-vietnamese-wght-normal.D-yuW59g.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:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-latin-ext-wght-normal.CxNHBx-q.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:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-latin-wght-normal.D9elroTD.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:"Source Serif 4 Variable";font-style:italic;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-cyrillic-ext-wght-italic.BXuSHrjR.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:"Source Serif 4 Variable";font-style:italic;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-cyrillic-wght-italic.RLIThRd4.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:"Source Serif 4 Variable";font-style:italic;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-greek-wght-italic.F2ziEGcb.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:"Source Serif 4 Variable";font-style:italic;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-vietnamese-wght-italic.C3q834ic.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:"Source Serif 4 Variable";font-style:italic;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-latin-ext-wght-italic.CpkvI5hy.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:"Source Serif 4 Variable";font-style:italic;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-latin-wght-italic.D2yaqPoE.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{--bg:#f6f5f1;--bg2:#ecebe5;--ink:#1c1c1a;--ink2:#4a4943;--ink3:#76746c;--line:#d9d7cf;--accent:oklch(.5 .12 250);--onaccent:#fff;--serif:"Source Serif 4 Variable","Source Serif 4",Georgia,serif;--sans:"IBM Plex Sans",system-ui,sans-serif;--mono:"IBM Plex Mono",ui-monospace,monospace;color-scheme:light}:root[data-theme=dark]{--bg:#141413;--bg2:#1d1d1b;--ink:#ecebe5;--ink2:#b5b3aa;--ink3:#8a887f;--line:#33322e;--accent:oklch(.74 .11 250);--onaccent:#141413;color-scheme:dark}*,*:before,*:after{box-sizing:border-box}[hidden]{display:none!important}html{scroll-behavior:smooth}body{margin:0;min-height:100vh;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:16px;-webkit-font-smoothing:antialiased;transition:background .3s,color .3s}a{color:var(--ink);text-decoration-color:var(--line);text-underline-offset:3px}a:hover{color:var(--accent)}button{font:inherit;color:inherit}img{max-width:100%;display:block}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}body{transition:none}}.skip{position:absolute;left:-9999px}.skip:focus{left:16px;top:12px;z-index:50;background:var(--ink);color:var(--bg);padding:10px 14px}.wrap{max-width:1240px;margin:0 auto;padding-inline:28px}.sec{padding-top:clamp(64px,10vw,112px);scroll-margin-top:72px}.sec-end{padding-bottom:96px}.stack{display:flex;flex-direction:column;gap:var(--g,16px)}.row{display:flex;flex-wrap:wrap;gap:12px;align-items:center}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,var(--min,300px)),1fr));gap:var(--gap,40px)}.head{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));gap:24px;align-items:end;margin-bottom:48px}.rule-t{border-top:1px solid var(--ink)}.line-t{border-top:1px solid var(--line)}.band{border-block:1px solid var(--line)}.panel{background:var(--bg2);padding:28px}.dark{background:var(--ink);color:var(--bg);padding:clamp(32px,6vw,72px)}.dark a{color:var(--bg)}.kicker{font-family:var(--mono);font-size:13px;color:var(--ink3);letter-spacing:.02em}.kicker-a{font-family:var(--mono);font-size:12px;color:var(--accent)}.mono{font-family:var(--mono)}.small{font-family:var(--mono);font-size:12px;color:var(--ink3)}.h1{font-family:var(--serif);font-weight:500;font-size:clamp(40px,5.6vw,72px);line-height:1.02;letter-spacing:-.025em;margin:0;text-wrap:balance}.h1-s{font-size:clamp(36px,4.8vw,60px);line-height:1.05}.h2{font-family:var(--serif);font-weight:500;font-size:clamp(32px,4vw,48px);line-height:1.08;letter-spacing:-.02em;margin:0;text-wrap:balance}.h3{font-family:var(--serif);font-weight:500;font-size:28px;line-height:1.18;letter-spacing:-.01em;margin:0;text-wrap:balance}.lede{margin:0;font-size:19px;line-height:1.6;color:var(--ink2);max-width:560px;text-wrap:pretty}.p{margin:0;color:var(--ink2);line-height:1.6;text-wrap:pretty}.p-l{font-size:17px;line-height:1.65}.dark .p{color:var(--bg);opacity:.8}.btn{display:inline-block;text-decoration:none;background:var(--ink);color:var(--bg);border:1px solid var(--ink);padding:14px 22px;font-weight:500;cursor:pointer;text-align:center}.btn:hover{background:var(--accent);border-color:var(--accent);color:var(--onaccent)}.btn-ghost{background:transparent;color:var(--ink);border-color:var(--line)}.btn-ghost:hover{background:transparent;color:var(--ink);border-color:var(--ink)}.btn-sm{padding:9px 16px;font-size:14px}.dark .btn{background:var(--bg);color:var(--ink);border-color:var(--bg)}.dark .btn:hover{background:var(--accent);border-color:var(--accent);color:var(--onaccent)}.btn:disabled{opacity:.5;cursor:wait}.dot{width:8px;height:8px;border-radius:50%;background:var(--accent);display:inline-block;flex:none}.ph{aspect-ratio:16/10;border:1px solid var(--line);background:repeating-linear-gradient(135deg,var(--bg2) 0 8px,var(--bg) 8px 16px);display:flex;align-items:flex-end;justify-content:space-between;gap:12px;padding:14px;font-family:var(--mono);font-size:11px;color:var(--ink3);margin:0}.ph:after{content:attr(data-fig)}.ph-wide{aspect-ratio:21/9}.links{display:flex;flex-wrap:wrap;gap:8px 20px;font-family:var(--mono);font-size:13px}.shot{margin:0;aspect-ratio:16/10;border:1px solid var(--line);overflow:hidden;background:var(--bg2)}.shot img{width:100%;height:100%;object-fit:cover}.shot img[src$=".svg"]{object-fit:contain;padding:16px;background:var(--bg)}.shot-wide{aspect-ratio:21/9}.prose img{width:100%;height:auto;border:1px solid var(--line)}.list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:6px;font-size:15px;color:var(--ink2)}.list li:before{content:"— "}.stages{display:inline-flex;gap:5px;align-items:center}.stages i{width:8px;height:8px;border-radius:50%;border:1px solid var(--ink3)}.stages i.on{background:var(--accent);border-color:var(--accent)}.stages i.plan,.legend .plan,.stages-l li.plan i{border:1px dashed var(--accent);background:transparent}.legend .plan{width:8px;height:8px;border-radius:50%}.stages-l small{font-size:11px;color:var(--accent)}.stages-l{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px;font-family:var(--mono);font-size:12px;color:var(--ink3)}.stages-l li{display:flex;gap:10px;align-items:center}.stages-l i{width:8px;height:8px;border-radius:50%;border:1px solid var(--ink3)}.stages-l li.on{color:var(--ink)}.stages-l li.on i{background:var(--accent);border-color:var(--accent)}.legend{display:flex;gap:18px;flex-wrap:wrap;font-family:var(--mono);font-size:12px;color:var(--ink3);justify-content:flex-end}.legend span{display:flex;gap:6px;align-items:center}.legend .off{width:8px;height:8px;border-radius:50%;border:1px solid var(--ink3)}.badge{font-family:var(--mono);font-size:11px;border:1px solid var(--line);padding:4px 8px;color:var(--ink2)}.badge[data-rebuild]{border-color:var(--accent);color:var(--accent)}.foot-row{margin-top:auto;padding-top:16px;display:flex;justify-content:space-between;align-items:baseline;gap:12px;font-family:var(--mono);font-size:13px}.card{padding:32px 0;display:flex;flex-direction:column;gap:16px;border-bottom:1px solid var(--line)}.meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr));gap:16px;border-top:1px solid var(--line);padding-top:20px;margin:0}.meta div{display:flex;flex-direction:column;gap:4px}.meta dt{font-family:var(--mono);font-size:11px;color:var(--ink3)}.meta dd{margin:0;font-size:14px}.hero{padding-block:clamp(40px,8vw,96px) 56px;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,440px),1fr));gap:40px 56px;align-items:center}.flow{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));column-gap:32px}.flow>div{padding:24px 0;display:flex;flex-direction:column;gap:6px}.steps{margin:0;padding:0;list-style:none;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:0 32px;border-top:1px solid var(--ink)}.steps li{padding:24px 0;display:flex;flex-direction:column;gap:10px}.steps strong{font-weight:600}.num{font-family:var(--serif);font-size:44px;line-height:1;color:var(--accent)}.portrait{aspect-ratio:4/5;max-width:440px;border:1px solid var(--line);overflow:hidden;background:var(--bg2);margin:0}.portrait img{width:100%;height:100%;object-fit:cover;object-position:50% 25%}.skills{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:16px;border-top:1px solid var(--line);padding-top:20px;font-size:14px}.skills div{display:flex;flex-direction:column;gap:4px}.faq{border-top:1px solid var(--line)}.faq details{border-bottom:1px solid var(--line)}.faq summary{list-style:none;padding:20px 0;display:flex;justify-content:space-between;gap:16px;cursor:pointer;font-size:17px;font-weight:500}.faq summary::-webkit-details-marker{display:none}.faq summary:after{content:"+";font-family:var(--mono);color:var(--ink3)}.faq details[open] summary:after{content:"−"}.faq p{margin:0 0 20px;max-width:620px}.net{margin:0;display:flex;flex-direction:column;gap:12px}.net-box{position:relative;aspect-ratio:1/.86;border:1px solid var(--line);background:var(--bg)}.net canvas{position:absolute;inset:0;width:100%;height:100%;display:block;cursor:crosshair}.net-tag{position:absolute;top:12px;font-family:var(--mono);font-size:11px;color:var(--ink3);pointer-events:none}.net figcaption{font-family:var(--mono);font-size:12px;line-height:1.5;color:var(--ink3);display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap}.net figcaption b{font-weight:400;color:var(--ink)}.pgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,520px),1fr));gap:56px 40px}.pcard{text-decoration:none;color:var(--ink);display:flex;flex-direction:column;gap:18px}.pcard:hover{color:var(--ink)}.pcard:hover .h3{color:var(--accent)}.pcard-meta{display:flex;justify-content:space-between;align-items:center;gap:12px;font-family:var(--mono);font-size:12px;color:var(--ink3)}.pcard-foot{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;font-family:var(--mono);font-size:12px;color:var(--ink3);border-top:1px solid var(--line);padding-top:12px}.pcard-foot span:last-child{color:var(--accent)}.ptabs{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,150px),1fr));gap:12px}.ptabs button{text-align:left;cursor:pointer;padding:16px 16px 14px;background:transparent;border:1px solid var(--line);border-top:3px solid var(--line);display:flex;flex-direction:column;gap:10px;min-height:150px;transition:background .2s,border-color .2s}.ptabs button:hover{border-color:var(--ink3)}.ptabs button[aria-selected=true]{background:var(--bg2);border-color:var(--ink3);border-top-color:var(--accent)}.ptab-meta{display:flex;flex-direction:column;align-items:flex-start;gap:6px;font-family:var(--mono);font-size:11px;color:var(--ink3)}.ptab-st{white-space:nowrap;padding:2px 6px;border:1px solid var(--line)}.ptab-st[data-done]{border-color:var(--accent);color:var(--accent)}.ptab-t{font-family:var(--serif);font-weight:500;font-size:19px;line-height:1.25;color:var(--ink);text-wrap:balance}.ptab-k{margin-top:auto;display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 8px}.ptab-k span{white-space:nowrap;font-family:var(--mono);font-size:20px;color:var(--accent)}.ptab-k small{font-size:12px;color:var(--ink3)}.ppanel{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,460px),1fr));gap:40px 56px;border-top:1px solid var(--line);padding-top:40px}.ppanel .shot img{object-fit:contain;background:#fafbfd}.pdl{margin:0;display:grid;grid-template-columns:110px minmax(0,1fr);gap:14px 20px;line-height:1.6}.pdl dt{font-family:var(--mono);font-size:12px;color:var(--ink3);padding-top:3px}.pdl dd{margin:0;color:var(--ink2);text-wrap:pretty}.pdl dd.strong{color:var(--ink)}@media(max-width:560px){.pdl{grid-template-columns:minmax(0,1fr);gap:4px}.pdl dd{margin-bottom:12px}}.pnav{width:44px;height:44px;border:1px solid var(--line);background:transparent;cursor:pointer}.pnav:hover{border-color:var(--ink)}.chips{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:40px}.chips button{background:none;border:1px solid var(--line);padding:8px 14px;min-height:40px;cursor:pointer;font-family:var(--mono);font-size:12px}.chips button:hover{border-color:var(--ink3)}.chips button[aria-pressed=true]{background:var(--ink);color:var(--bg);border-color:var(--ink)}.case{padding-top:clamp(32px,6vw,64px);display:flex;flex-direction:column;gap:40px}.case-body{display:grid;grid-template-columns:minmax(0,200px) minmax(0,720px);gap:32px 64px;padding-top:24px}.case-side{position:sticky;top:96px;align-self:start}@media(max-width:819px){.case-body{grid-template-columns:minmax(0,1fr)}.case-side{position:static}}.prose{counter-reset:sec fig 1;display:flex;flex-direction:column;gap:20px}.prose h2{font-family:var(--serif);font-weight:500;font-size:clamp(26px,3vw,34px);line-height:1.15;margin:28px 0 0;letter-spacing:-.01em}.prose h2:first-child{margin-top:0}.prose h2:before{counter-increment:sec;content:"0" counter(sec);display:block;font-family:var(--mono);font-size:12px;color:var(--accent);margin-bottom:10px;letter-spacing:0}.prose p{margin:0;color:var(--ink2);font-size:17px;line-height:1.7;text-wrap:pretty}.prose figure{counter-increment:fig}.prose figure:after{content:"Fig. " counter(fig)}.case-nav{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:16px;border-top:1px solid var(--line);padding-top:24px}.case-nav a{text-decoration:none;display:flex;flex-direction:column;gap:6px}.case-nav a:last-child{text-align:right}.case-nav span{font-family:var(--serif);font-size:20px;line-height:1.25}.tl{list-style:none;margin:0;padding:0;border-top:1px solid var(--ink)}.tl li{display:grid;grid-template-columns:minmax(0,150px) minmax(0,1fr);gap:4px 24px;padding:16px 0;border-bottom:1px solid var(--line)}@media(max-width:560px){.tl li{grid-template-columns:minmax(0,1fr)}}.tl .yr{font-family:var(--mono);font-size:13px;color:var(--ink3);padding-top:3px}.tl strong{font-weight:500;display:block}.tl em{font-style:normal;color:var(--ink2);font-size:15px}.field{display:flex;flex-direction:column;gap:6px;font-size:14px;color:var(--ink2)}.field input,.field select,.field textarea{font:inherit;font-size:16px;color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:0;padding:12px 14px;width:100%}.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--accent)}.check{display:flex;gap:10px;align-items:flex-start;font-size:14px;color:var(--ink2);line-height:1.5}.check input{margin-top:3px;accent-color:var(--accent)}.hp{position:absolute;left:-9999px}.cal{width:100%;height:clamp(600px,82vh,760px);border:0;display:block;background:var(--bg)}.kv{display:grid;grid-template-columns:minmax(0,180px) minmax(0,1fr);gap:10px 24px;font-size:16px;margin:0}.kv dt{color:var(--ink3)}.kv dd{margin:0}@media(max-width:560px){.kv{grid-template-columns:minmax(0,1fr);gap:2px}.kv dd{margin-bottom:10px}}.hdr{position:sticky;top:0;z-index:20;background:color-mix(in oklab,var(--bg) 88%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}.hdr-in{display:flex;align-items:center;justify-content:space-between;gap:16px 24px;padding-block:14px}.logo{display:flex;align-items:baseline;gap:5px;text-decoration:none;color:var(--ink)}.logo:hover{color:var(--ink)}.logo-by{font-family:var(--serif);font-style:italic;font-size:19px;color:var(--ink2);line-height:1}.logo-g{font-family:var(--serif);font-weight:600;font-size:23px;letter-spacing:-.035em;line-height:1}.logo-dotbox{display:inline-block;font-size:23px;width:5px;height:5px;transform:translateY(calc(2.5px - var(--lift,.24em)))}.logo-dot{display:block;width:5px;height:5px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 2px var(--bg),0 0 0 2.8px var(--accent);will-change:transform}.hdr-r{display:flex;align-items:center;gap:8px 22px}.nav{display:flex;gap:22px;font-size:15px}.nav a{text-decoration:none;color:var(--ink2);display:flex;align-items:center;gap:7px}.nav a[aria-current]{color:var(--ink)}.nav a[aria-current]:before{content:"";width:5px;height:5px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 2px var(--bg),0 0 0 2.8px var(--accent)}.tools{display:flex;align-items:center;gap:8px}.tool{display:flex;align-items:center;justify-content:center;gap:8px;background:none;border:1px solid var(--line);padding:6px 10px;min-height:32px;cursor:pointer;font-family:var(--mono);font-size:12px;color:var(--ink);list-style:none}.tool:hover{border-color:var(--ink3)}.tool::-webkit-details-marker{display:none}.half{width:10px;height:10px;border-radius:50%;border:1.5px solid var(--ink);background:linear-gradient(90deg,var(--ink) 50%,transparent 50%)}.t-dark,[data-theme=dark] .t-light{display:none}[data-theme=dark] .t-dark{display:inline}.lang{position:relative}.lang summary small{font-size:9px;color:var(--ink3)}.lang-menu{position:absolute;right:0;top:calc(100% + 8px);min-width:220px;background:var(--bg);border:1px solid var(--line);box-shadow:0 12px 32px #00000014;display:flex;flex-direction:column;padding:6px 0;z-index:30}.lang-menu a{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:10px 14px;text-decoration:none;color:var(--ink)}.lang-menu a:hover{background:var(--bg2);color:var(--ink)}.lang-menu .n{display:block;font-size:15px}.lang-menu .s{display:block;font-size:12px;color:var(--ink3)}.lang-menu .c{display:flex;align-items:center;gap:10px;font-family:var(--mono);font-size:11px;color:var(--ink3)}.lang-menu .c i{width:6px;height:6px;border-radius:50%}.lang-menu a[aria-current] .c i{background:var(--accent);box-shadow:0 0 0 2px var(--bg),0 0 0 2.8px var(--accent)}.lang-note{border-top:1px solid var(--line);margin-top:6px;padding:10px 14px 6px;font-size:12px;color:var(--ink3);line-height:1.45}.menu-btn{display:none}.mnav{border-top:1px solid var(--line);padding-block:8px 16px}.mnav[hidden]{display:none}.mnav .big{display:flex;justify-content:space-between;align-items:center;min-height:52px;border-bottom:1px solid var(--line);font-family:var(--serif);font-size:24px;text-decoration:none;color:var(--ink2)}.mnav .big[aria-current]{color:var(--ink)}.mnav .big[aria-current]:after{content:"";width:7px;height:7px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 2.5px var(--bg),0 0 0 3.6px var(--accent)}.mnav-row{display:flex;justify-content:space-between;align-items:center;padding:16px 0;font-family:var(--mono);font-size:13px;color:var(--ink3)}.mnav-langs{display:flex;gap:6px}.mnav-langs a{min-width:44px;height:36px;border:1px solid var(--line);display:flex;align-items:center;justify-content:center;text-decoration:none;font-family:var(--mono);font-size:12px}.mnav-langs a[aria-current]{background:var(--ink);color:var(--bg);border-color:var(--ink)}.mnav .btn{display:block}@media(max-width:819px){.nav,.lang,.hdr-in .btn-sm,.tlabel{display:none}.menu-btn{display:flex}.tools .tool{min-height:44px;min-width:44px}}@media(min-width:820px){.mnav{display:none!important}}.ftr{border-top:1px solid var(--line);margin-top:24px}.ftr-in{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr));gap:32px;padding-block:48px 32px}.ftr-col{display:flex;flex-direction:column;gap:8px;font-size:15px}.ftr-col a{text-decoration:none;color:var(--ink2)}.ftr-col a:hover{color:var(--accent)}.ftr-b{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;padding-block:20px 32px;border-top:1px solid var(--line);font-family:var(--mono);font-size:12px;color:var(--ink3)}.ftr-b a{color:var(--ink3)}:root{--re:cubic-bezier(.16,.84,.3,1);--ry:56px;--rb:8px;--rd:1.1s;--hs:1.07}html[data-mo=low]{--ry:16px;--rb:0px;--rd:.7s;--hs:1.02}html[data-mo=mid]{--ry:30px;--rb:2px;--rd:.9s;--hs:1.04}main,.ftr{position:relative;z-index:1}html[data-mo]:not([data-mo=none]):not(.mo-fail) :is(.hero>.stack>*,.net,.sec>.head,.sec>.stack,.card,.panel,.pcard,.steps li,.portrait,#apropos>.stack,.faq,.dark,.case>:not(.case-body),.prose>*,.case-side,.tl li,[data-reveal]){opacity:0;transform:translateY(var(--ry));filter:blur(var(--rb));transition:opacity var(--rd) var(--re) var(--dl,0ms),transform calc(var(--rd) + .25s) var(--re) var(--dl,0ms),filter var(--rd) var(--re) var(--dl,0ms)}html[data-mo] :is(.hero>.stack>*,.net,.sec>.head,.sec>.stack,.card,.panel,.pcard,.steps li,.portrait,#apropos>.stack,.faq,.dark,.case>:not(.case-body),.prose>*,.case-side,.tl li,[data-reveal]).in{opacity:1!important;transform:none!important;filter:none!important}html[data-mo]:not([data-mo=none]) .band{position:relative}html[data-mo]:not([data-mo=none]) .band:before{content:"";position:absolute;left:0;right:0;top:-1px;height:3px;background:var(--accent);transform-origin:left;transform:scaleX(var(--p,0));z-index:1}html[data-mo]:not([data-mo=none]) .flow>div{opacity:.25;transform:translateY(calc(var(--ry) / 3));transition:opacity .6s,transform .9s var(--re)}html[data-mo]:not([data-mo=none]) .flow>div.on{opacity:1;transform:none}.kpis{display:flex;gap:32px;flex-wrap:wrap}.kpis>div{display:flex;flex-direction:column;gap:2px}.kpi{font-family:var(--mono);font-size:clamp(28px,3vw,38px);line-height:1.1;color:var(--accent);letter-spacing:-.02em;font-variant-numeric:tabular-nums}.pcard .shot{position:relative}.pcard .shot img{object-fit:contain;background:#fafbfd;transition:transform 1s var(--re),filter .6s}html[data-mo]:not([data-mo=none]) .pcard .shot img{filter:grayscale(.8) contrast(.95)}html[data-mo]:not([data-mo=none]) .pcard:hover .shot img{filter:none;transform:scale(var(--hs))}html[data-mo]:not([data-mo=none]) .pcard .shot:after{content:attr(data-cta);position:absolute;left:50%;top:50%;transform:translate(-50%,calc(-50% + 16px));background:var(--ink);color:var(--bg);padding:12px 18px;font-weight:500;white-space:nowrap;opacity:0;transition:opacity .45s,transform .6s var(--re);pointer-events:none}html[data-mo]:not([data-mo=none]) .pcard:hover .shot:after{opacity:1;transform:translate(-50%,-50%)}.mo-bg{display:none;position:fixed;inset:0;width:100vw;height:100vh;pointer-events:none;z-index:0;opacity:0;transition:opacity .4s}html[data-mo]:not([data-mo=none]) .mo-bg{display:block}.mo-sel{position:fixed;left:16px;bottom:16px;z-index:50;display:flex;align-items:center;flex-wrap:wrap;gap:2px;padding:4px;max-width:calc(100vw - 32px);background:var(--bg);border:1px solid var(--line);font-family:var(--mono);font-size:11px;box-shadow:0 8px 28px #00000014}.mo-sel span{padding:0 8px;color:var(--ink3)}.mo-sel button{border:none;background:none;cursor:pointer;padding:8px 10px;font-family:var(--mono);font-size:11px;color:var(--ink2);transition:background .25s,color .25s}.mo-sel button[aria-pressed=true]{background:var(--ink);color:var(--bg)}@media(max-width:819px){.mo-sel button{min-height:44px}}.vt{display:none;position:fixed;inset:0;z-index:9999;background:var(--ink);color:var(--bg);align-items:center;justify-content:center;font-family:var(--mono);font-size:13px;letter-spacing:.04em;pointer-events:none;transform:translateY(100%)}html[data-mo]:not([data-mo=none]) .vt{display:flex}html[data-vt] .vt{animation:vt-in .75s cubic-bezier(.7,0,.2,1) .08s both}@keyframes vt-in{0%{transform:none}to{transform:translateY(-100%)}}.ldr{display:none}html[data-loading]{overflow:hidden}html[data-loading] .ldr{display:flex;position:fixed;inset:0;z-index:10001;background:var(--bg);align-items:center;justify-content:center;overflow:hidden;animation:ldr-out .65s var(--re) 3.9s forwards}.ldr-w{display:flex;align-items:baseline;gap:.26em;font-family:var(--serif);font-size:clamp(30px,7vw,96px);line-height:1;white-space:nowrap;animation:ldr-wout .5s var(--re) 3.75s forwards}.ldr i{font-style:inherit;display:inline-block;white-space:pre;transform-origin:50% 70%}.ldr i:not(.x){animation:ldr-wave .44s ease-in-out calc(2.25s + var(--w) * 80ms)}.ldr-v,.ldr-b{display:inline-block;font-style:italic;color:var(--ink2);font-size:.83em}.ldr-v{animation:ldr-l .95s var(--re) both}.ldr-b{animation:ldr-t .9s cubic-bezier(.3,1.35,.5,1) .38s both}.ldr-n{display:inline-block;font-weight:600;letter-spacing:-.035em;color:var(--ink);animation:ldr-f .6s both}.ldr .x{animation:ldr-x .7s var(--re) calc(1.35s + var(--x) * 14ms) forwards}@media(max-width:479px){.ldr-w{flex-wrap:wrap;justify-content:center;row-gap:.22em;white-space:normal;font-size:min(42px,calc((100vw - 32px) / 9.4))}.ldr-n{flex-basis:100%;text-align:center;white-space:nowrap}}@keyframes ldr-l{0%{transform:translate(-70vw);opacity:0}}@keyframes ldr-t{0%{transform:translateY(-60vh);opacity:0}}@keyframes ldr-f{0%{opacity:0}}@keyframes ldr-x{to{font-size:0;opacity:0}}@keyframes ldr-wave{45%{transform:scale(1.55);color:var(--accent)}}@keyframes ldr-wout{to{transform:translateY(-18px);opacity:0}}@keyframes ldr-out{to{opacity:0;visibility:hidden}}
