@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 Sans;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/ibm-plex-sans-cyrillic-ext-700-normal.BmRLXWpJ.woff2) format("woff2"),url(/_astro/ibm-plex-sans-cyrillic-ext-700-normal.DCQwxkRk.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:700;src:url(/_astro/ibm-plex-sans-cyrillic-700-normal.D_uavGvn.woff2) format("woff2"),url(/_astro/ibm-plex-sans-cyrillic-700-normal.RFb1v-CK.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:700;src:url(/_astro/ibm-plex-sans-greek-700-normal.wyJ6jzdA.woff2) format("woff2"),url(/_astro/ibm-plex-sans-greek-700-normal.CkZN0sRy.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:700;src:url(/_astro/ibm-plex-sans-vietnamese-700-normal.CkEo6LDy.woff2) format("woff2"),url(/_astro/ibm-plex-sans-vietnamese-700-normal.BV5B8Are.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:700;src:url(/_astro/ibm-plex-sans-latin-ext-700-normal.aMgXseD4.woff2) format("woff2"),url(/_astro/ibm-plex-sans-latin-ext-700-normal.DZH6Xh-4.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:700;src:url(/_astro/ibm-plex-sans-latin-700-normal.Bxkt5Cjx.woff2) format("woff2"),url(/_astro/ibm-plex-sans-latin-700-normal.Bth3BMcD.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}@font-face{font-family:Apostrophe;src:local("Helvetica Neue"),local("HelveticaNeue"),local("Helvetica"),local("Arial"),local("ArialMT"),local("Roboto"),local("Roboto-Regular"),local("Segoe UI"),local("Noto Sans"),local("NotoSans-Regular"),local("DejaVu Sans"),local("Liberation Sans");unicode-range:U+02BC}:root{--bg: #0e1014;--bg-deep: #0b0d10;--surface: #12151a;--surface-warm: #1a1513;--tip: #1f1714;--line: #22262e;--line-strong: #2c313a;--line-button: #3a404a;--text: #ecedef;--text-2: #b5bac2;--text-3: #8c929b;--accent: #e8492f;--accent-hover: #ff7a5c;--on-accent: #0e1014;--ok: #7fd1a4;--warn: #ff9b82;--grid-line: rgba(255, 255, 255, .035);--band: rgba(14, 16, 20, .7);--header: rgba(14, 16, 20, .88);--code-text: #c9cdd3;--chip-active: #1b1f26;--muted-sep: #5a606a;--shadow: 0 40px 80px rgba(0, 0, 0, .5);--ink-bg: #262b33;--ink-bg-hover: #313740;--ink-text: #f3f4f6;color-scheme:dark;--sans: "Apostrophe", "IBM Plex Sans", system-ui, -apple-system, sans-serif;--mono: "IBM Plex Mono", ui-monospace, "SF Mono", monospace;--wrap: 1200px;--gutter: 24px;--grid: 80px}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:88px}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{margin:0;background-color:var(--bg);background-image:linear-gradient(var(--grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--grid-line) 1px,transparent 1px);background-size:var(--grid) var(--grid);color:var(--text);font-family:var(--sans);font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased;border-left:6px solid var(--accent);min-height:100vh}@media(max-width:640px){body{border-left-width:4px}}a{color:var(--text);text-decoration:none}a:hover{color:var(--accent-hover)}a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:3px}code,pre,kbd{font-family:var(--mono)}img{max-width:100%;height:auto;display:block}.skip{position:absolute;left:-9999px}.skip:focus{left:16px;top:12px;z-index:100;background:var(--accent);color:var(--on-accent);padding:10px 14px}.wrap{max-width:var(--wrap);margin:0 auto;padding-left:var(--gutter);padding-right:var(--gutter)}.band{border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--band)}.band+.band{border-top:0}.section{padding-top:112px;padding-bottom:112px}.section--tight{padding-top:72px;padding-bottom:72px}@media(max-width:720px){.section{padding-top:72px;padding-bottom:72px}}.eyebrow{font-family:var(--mono);font-size:13px;letter-spacing:.22em;text-transform:uppercase;color:var(--accent);margin:0}.eyebrow--muted{color:var(--text-2)}.crumbs{font-family:var(--mono);font-size:13px;letter-spacing:.18em;text-transform:uppercase;color:var(--text-3);margin:0}.crumbs a{color:var(--text-3)}.crumbs a:hover{color:var(--accent-hover)}.h1{margin:0;font-size:clamp(36px,6vw,76px);line-height:1.04;letter-spacing:-.03em;font-weight:700;overflow-wrap:break-word}.h1--hero{font-size:clamp(34px,4.6vw,60px);line-height:1.06}.h2{overflow-wrap:break-word}.h1--page{font-size:clamp(38px,5.4vw,68px)}.h2{margin:0;font-size:clamp(32px,4vw,52px);line-height:1.05;letter-spacing:-.025em;font-weight:700}.h2--sm{font-size:clamp(28px,3.4vw,40px);line-height:1.1;letter-spacing:-.02em}.lead{margin:0;font-size:19px;line-height:1.6;color:var(--text-2);max-width:640px}.muted{color:var(--text-2)}.label{font-family:var(--mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--text-3)}.split{display:flex;flex-wrap:wrap;gap:56px;align-items:center}.split>*{flex:1 1 440px;min-width:0}.stack{display:flex;flex-direction:column;gap:22px}.stack--sm{gap:12px}.head-row{display:flex;flex-wrap:wrap;gap:16px 48px;align-items:end;justify-content:space-between;margin-bottom:36px}.grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(min(var(--min, 260px),100%),1fr))}.grid--seams{gap:1px;background:var(--line);border:1px solid var(--line)}.btn{display:inline-flex;align-items:center;gap:10px;min-height:48px;padding:13px 20px;font-weight:500;font-size:16px;border:1px solid var(--line-button);color:var(--text)}.btn:hover{border-color:var(--accent);color:var(--text)}.btn--primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent);font-weight:600}.btn--primary:hover{background:var(--accent-hover);border-color:var(--accent-hover);color:var(--on-accent)}.btns{display:flex;flex-wrap:wrap;gap:12px}.more{display:inline-flex;align-items:center;gap:8px;color:var(--accent);font-weight:500;padding:10px 0;min-height:44px}.more svg{transition:transform .15s}.more svg.logo{width:18px;height:18px;flex:none;transition:none}.more:hover svg.logo{transform:none}.more:hover svg{transform:translate(3px)}.chips{display:flex;flex-wrap:wrap;gap:10px;margin:0;padding:0;list-style:none}.chips li{font-family:var(--mono);font-size:12px;letter-spacing:.14em;color:var(--text-2);border:1px solid var(--line-strong);padding:9px 12px;text-transform:uppercase}.card{border:1px solid var(--line-strong);background:var(--surface);padding:24px;display:flex;flex-direction:column;gap:12px}.card--accent{border-color:var(--accent);background:var(--surface-warm)}.card--flat{background:var(--bg);padding:30px;border:0}.card__tag{font-family:var(--mono);font-size:12px;letter-spacing:.16em;color:var(--accent);text-transform:uppercase}.card__title{font-size:18px;font-weight:600;margin:0}.card__text{color:var(--text-2);font-size:15px;line-height:1.6;margin:0}.card code.list{font-size:13px;line-height:1.9;color:var(--text-2)}.card a.card__link{margin-top:auto}a.card:hover{border-color:var(--accent);color:var(--text)}.stat{background:var(--surface);padding:28px;display:flex;flex-direction:column;gap:8px}.stat b{font-size:44px;font-weight:600;letter-spacing:-.02em;line-height:1}.stat span{color:var(--text-2);font-size:15px}.codefig{margin:0;background:var(--surface);border:1px solid var(--line-strong)}.codefig figcaption{display:flex;justify-content:space-between;gap:12px;padding:12px 18px;border-bottom:1px solid var(--line-strong);font-family:var(--mono);font-size:12px;color:var(--text-3)}.codefig pre{margin:0;padding:22px 20px;font-size:13.5px;line-height:1.75;color:var(--code-text);overflow-x:auto}.c-dim{color:var(--text-3)}.c-ok{color:var(--ok)}.c-warn{color:var(--warn)}.table-box{overflow-x:auto}.table{width:100%;min-width:520px;border-collapse:collapse;font-size:15px}.table th{font-family:var(--mono);font-size:11px;letter-spacing:.16em;color:var(--text-3);text-align:left;font-weight:500;padding:0 12px 14px 0;text-transform:uppercase}.table td{padding:14px 12px 14px 0;border-top:1px solid var(--line);vertical-align:top}.bar{display:flex;align-items:center;gap:10px}.bar span{height:6px;background:var(--accent)}.bar code{font-size:12px}.tip{background:var(--tip);border:1px solid var(--accent);padding:16px 18px;display:flex;flex-direction:column;gap:8px}.tip b{font-size:15px;font-weight:600}.tip span{font-size:14px;color:var(--text-2);line-height:1.55}.steps{list-style:none;margin:0;padding:0;counter-reset:s}.steps>li{display:flex;gap:22px;padding:22px 0;border-top:1px solid var(--line-strong)}.steps>li:last-child{border-bottom:1px solid var(--line-strong)}.steps>li:before{counter-increment:s;content:counter(s,decimal-leading-zero);font-family:var(--mono);font-size:14px;color:var(--accent);padding-top:3px}.steps b{font-size:17px;font-weight:600;display:block;margin-bottom:6px}.steps p{margin:0;color:var(--text-2);font-size:15px;line-height:1.6}.prompt{display:block;color:var(--text);font-size:14px;background:var(--bg);border:1px solid var(--line-strong);padding:10px 12px;margin-top:8px;white-space:pre-wrap;overflow-wrap:anywhere}.timeline{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));border-top:2px solid var(--line-strong)}.timeline li{padding:22px 22px 0 0;display:flex;flex-direction:column;gap:10px}.timeline li:first-child{border-top:2px solid var(--accent);margin-top:-2px}.timeline code{font-size:13px;color:var(--text-3)}.timeline li:first-child code{color:var(--accent)}.timeline b{font-size:17px;font-weight:600}.timeline span{color:var(--text-2);font-size:14.5px;line-height:1.55}@media(max-width:720px){.timeline li{padding-bottom:20px}}.mock{background:#f7f6f3;color:#24262b;box-shadow:var(--shadow);border:1px solid var(--line-strong)}.mock__bar{display:flex;align-items:center;gap:8px;padding:12px 14px;background:#ecebe7;border-bottom:1px solid #dddbd5}.mock__dot{width:11px;height:11px;border-radius:50%;background:#d9d6cf}.mock__url{margin-left:10px;flex:1;font-family:var(--mono);font-size:12px;color:#5f6269;background:#f7f6f3;border:1px solid #dddbd5;padding:4px 10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mock__body{padding:24px;display:flex;flex-direction:column;gap:18px}.mock__label{font-family:var(--mono);font-size:11px;letter-spacing:.16em;color:#5f6269}.mock__list{border:1px solid #e3e1db;background:#fff}.mock__row{display:flex;gap:12px;align-items:baseline;padding:11px 14px;border-top:1px solid #eeece7;font-size:14px}.mock__row:first-child{border-top:0}.mock__row code{font-size:12px;color:#5f6269;width:44px;flex:none}.mock__row span{flex:1}.mock__row b{font-weight:600}.mock__row em{font-style:normal;font-family:var(--mono);font-size:12px;color:#2e7d4f}.mock__row--gap{background:#fff6f2}.mock__row--gap em{color:#b4361d}.mock__stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.mock__stat{background:#fff;border:1px solid #e3e1db;padding:12px 14px;display:flex;flex-direction:column;gap:4px}.mock__stat span{display:flex;align-items:center;gap:8px;font-size:13px;color:#4a4d54}.mock__stat i{width:9px;height:9px;border-radius:50%;display:inline-block}.mock__stat b{font-size:26px;font-weight:600}.site-header{position:sticky;top:0;z-index:20;background:var(--header);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}.nav{display:flex;flex-wrap:wrap;align-items:center;gap:8px 28px;padding-top:12px;padding-bottom:12px}.brand{display:flex;align-items:center;gap:10px;font-weight:600;font-size:16px;margin-right:auto;min-height:44px}.nav__links{display:flex;flex-wrap:wrap;gap:0 22px;font-size:14px;margin:0;padding:0;list-style:none}.nav__links a{color:var(--text-2);display:inline-block;padding:12px 0;border-bottom:2px solid transparent}.nav__links a:hover{color:var(--text)}.nav__links a[aria-current=page]{color:var(--text);border-bottom-color:var(--accent)}.nav__tools{display:flex;align-items:center;gap:10px}.lang{display:flex;border:1px solid var(--line-strong);font-family:var(--mono);font-size:12px}.lang a{padding:12px 11px;color:var(--text-3)}.lang a[aria-current=true]{background:var(--chip-active);color:var(--text)}.gh{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line-strong);padding:11px 14px;font-size:14px}.menu-btn{display:none}@media(max-width:1100px){.menu-btn{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;background:transparent;border:1px solid var(--line-strong);color:var(--text);cursor:pointer}.nav__links{display:none;width:100%;flex-direction:column;order:3;padding-bottom:8px}.nav__links a{padding:12px 0;width:100%;border-bottom:1px solid var(--line)}.nav[data-open=true] .nav__links{display:flex}.gh span{display:none}}.site-footer{border-top:1px solid var(--line);background:var(--bg-deep)}.footer{display:flex;flex-wrap:wrap;gap:32px 64px;justify-content:space-between;padding-top:56px;padding-bottom:56px}.footer__about{display:flex;flex-direction:column;gap:12px;max-width:380px}.footer__about span{color:var(--text-3);font-size:14px;line-height:1.6}.footer__cols{display:flex;flex-wrap:wrap;gap:40px;font-size:14px}.footer__col{display:flex;flex-direction:column;gap:0}.footer__col a{padding:12px 0}.footer__col .label{padding-bottom:6px}.footer__col a{color:var(--text-2)}.page-hero{border-bottom:1px solid var(--line)}.page-hero__in{display:flex;flex-wrap:wrap;gap:48px;align-items:end;padding-top:72px;padding-bottom:64px}.page-hero__text{flex:1 1 560px;min-width:0;display:flex;flex-direction:column;gap:18px}.facts{flex:0 1 380px;margin:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line)}.facts div{background:var(--surface);padding:16px 18px}.facts dt{font-family:var(--mono);font-size:11px;letter-spacing:.14em;color:var(--text-3);text-transform:uppercase}.facts dd{margin:6px 0 0;font-size:15px}.page-body{display:flex;flex-wrap:wrap;gap:48px;align-items:flex-start;padding-top:56px;padding-bottom:112px}.toc{flex:1 1 220px;position:sticky;top:88px;display:block;font-size:14px}.toc a{padding:11px 12px;border-left:2px solid var(--line-strong);color:var(--text-2)}.toc a:hover,.toc a.is-active{border-left-color:var(--accent);color:var(--text)}.toc__links{display:flex;flex-direction:column;gap:2px}.toc__sum{display:block;padding-bottom:10px;list-style:none;pointer-events:none}.toc__sum::-webkit-details-marker{display:none}@media(max-width:960px){.toc{position:static}}@media(max-width:700px){.toc{flex-basis:100%;border:1px solid var(--line-strong);background:var(--surface)}.toc__sum{pointer-events:auto;cursor:pointer;display:flex;align-items:center;justify-content:space-between;min-height:48px;padding:0 16px}.toc__sum:after{content:"+";font-size:18px;color:var(--accent);letter-spacing:0}.toc[open] .toc__sum:after{content:"−"}.toc__links{padding:0 8px 10px}}.page-main{flex:999 1 640px;min-width:0;display:flex;flex-direction:column;gap:56px}.prose{font-size:17px;line-height:1.7;color:var(--text-2)}.prose>*+*{margin-top:1.1em}.prose h2{color:var(--text);font-size:32px;line-height:1.15;letter-spacing:-.02em;margin:2.2em 0 0}.prose h2:first-child{margin-top:0}.prose h3{color:var(--text);font-size:20px;margin:1.8em 0 0}.prose p,.prose ul,.prose ol{margin-bottom:0}.prose strong{color:var(--text);font-weight:600}.prose a{color:var(--accent);text-decoration:underline;text-underline-offset:3px}.prose a:hover{color:var(--accent-hover)}.prose li+li{margin-top:.4em}.prose code{font-size:.88em;color:var(--text);background:var(--surface);border:1px solid var(--line-strong);padding:1px 6px}.prose pre{background:var(--surface)!important;border:1px solid var(--line-strong);padding:20px;overflow-x:auto;font-size:13.5px;line-height:1.7}.prose pre code{background:none;border:0;padding:0;font-size:inherit}@media(max-width:700px){.prose pre:not(.pre--nowrap){white-space:pre-wrap;overflow-wrap:anywhere}.prose .codefig pre{white-space:pre;overflow-wrap:normal}}.prose .codefig pre{border:0;margin:0}.prose table{width:100%;border-collapse:collapse;font-size:15px;display:block;overflow-x:auto}.prose th{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-3);text-align:left;font-weight:500;padding:0 16px 12px 0;white-space:nowrap}.prose td{padding:12px 16px 12px 0;border-top:1px solid var(--line);vertical-align:top}.prose td:first-child{color:var(--text)}.prose blockquote{margin-left:0;padding:16px 20px;border:1px solid var(--accent);background:var(--surface-warm);color:var(--text)}.prose blockquote p{margin:0}.prose img{border:1px solid var(--line-strong)}.prose .grid{margin-top:24px}.prose .card p{margin:0}.prose hr{border:0;border-top:1px solid var(--line);margin:2.5em 0}.docs-cta{border:1px solid var(--line-strong);background:var(--surface);padding:24px 26px;display:flex;flex-wrap:wrap;gap:16px 32px;align-items:center;justify-content:space-between}.docs-cta b{font-size:17px;font-weight:600;display:block;margin-bottom:4px}.pager{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px}.pager a{border:1px solid var(--line-strong);padding:20px 22px;display:flex;flex-direction:column;gap:6px}.pager a:hover{border-color:var(--accent);color:var(--text)}.pager a.next{text-align:right}.pager b{font-weight:600}.filters{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:28px}.filter{font:500 14px var(--sans);padding:12px 16px;min-height:44px;border:1px solid var(--line-strong);background:transparent;color:var(--text-2);cursor:pointer}.filter:hover{border-color:var(--accent);color:var(--text)}.filter[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.skill{border:1px solid var(--line-strong);background:var(--surface);padding:24px;display:flex;flex-direction:column;gap:14px}.skill[hidden]{display:none}.skill__head{display:flex;justify-content:space-between;align-items:center;gap:12px}.skill__name{font-family:var(--mono);font-size:15px;font-weight:500;margin:0}.skill__group{font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;color:var(--text-3);border:1px solid var(--line-strong);padding:4px 8px;text-transform:uppercase;white-space:nowrap}.skill__what{margin:0;color:var(--text-2);font-size:15px;line-height:1.6;flex:1}.skill__say{border-top:1px solid var(--line);padding-top:14px;display:flex;flex-direction:column;gap:6px;font-size:14px}.skill__meta{display:flex;flex-wrap:wrap;gap:8px;font-family:var(--mono);font-size:12px}.skill__meta .when{color:var(--accent)}.skill__meta .sep{color:var(--text-3)}.skill__meta .out{color:var(--text-2)}.shot figcaption{padding:12px 16px;font-size:14px;color:var(--text-3);border-top:1px solid var(--line-strong)}.prose .card h3,.prose .card .card__title{margin-top:0}@media(max-width:480px){.gh{display:none}.brand{font-size:15px}.nav{gap:8px 12px}}.levels{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));margin-top:24px}.level{border:1px solid var(--line-strong);background:var(--surface);padding:22px 24px;display:flex;flex-direction:column;gap:10px}.level--must{border-color:var(--accent);background:var(--surface-warm)}.level__n{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent)}.prose .level h3,.prose .level p{margin:0}.checklist{list-style:none;padding:0;display:flex;flex-direction:column;gap:0;border:1px solid var(--line-strong)}.prose .checklist li+li{margin-top:0}.checklist li{position:relative;padding:16px 18px 16px 52px;border-top:1px solid var(--line)}.checklist li:first-child{border-top:0}.checklist li:before{content:"";position:absolute;left:18px;top:19px;width:16px;height:16px;border:1.5px solid var(--accent)}.checklist b{color:var(--text)}kbd{font-family:var(--mono);font-size:.82em;color:var(--text);border:1px solid var(--line-button);border-bottom-width:2px;padding:1px 6px;background:var(--surface)}.prose h3+p strong:first-child,.prose p>strong:first-child{color:var(--text)}.code-wrap{display:flex;flex-direction:column;border:1px solid var(--line-strong);background:var(--surface)}.prose .code-wrap pre{border:0;margin:0}.code-wrap__bar{display:flex;justify-content:flex-end;border-bottom:1px solid var(--line);padding:4px}.copy{font:500 12px var(--mono);color:var(--text-2);background:transparent;border:1px solid transparent;padding:6px 12px;cursor:pointer;min-height:36px;min-width:44px}.copy:hover{color:var(--text);border-color:var(--accent)}.copy[data-done=true]{color:var(--ok);border-color:var(--ok)}html[data-theme=light]{--bg: #f6f5f1;--bg-deep: #efede7;--surface: #ffffff;--surface-warm: #fdf2ee;--tip: #fdf2ee;--line: #e2dfd8;--line-strong: #d6d2c9;--line-button: #bdb8ae;--text: #16181d;--text-2: #464a52;--text-3: #686c74;--accent: #c93a20;--accent-hover: #a52e18;--on-accent: #ffffff;--ok: #1d7a4b;--warn: #b4361d;--grid-line: rgba(20, 22, 28, .045);--band: rgba(255, 255, 255, .55);--header: rgba(246, 245, 241, .9);--code-text: #2b2f36;--chip-active: #e9e6df;--muted-sep: #a6a29a;--shadow: 0 30px 60px rgba(40, 30, 20, .14);--ink-bg: #1c1f25;--ink-bg-hover: #2e323a;--ink-text: #ffffff;color-scheme:light}html[data-theme=light] .btn--primary:hover{color:var(--on-accent)}html[data-theme=dark] .astro-code,html[data-theme=dark] .astro-code span{color:var(--shiki-dark)!important}.theme-btn{display:inline-flex;align-items:center;justify-content:center;width:44px;height:42px;background:transparent;border:1px solid var(--line-strong);color:var(--text-2);cursor:pointer}.theme-btn:hover{color:var(--text);border-color:var(--accent)}.theme-btn .i-sun{display:none}html[data-theme=dark] .theme-btn .i-sun{display:block}html[data-theme=dark] .theme-btn .i-moon{display:none}.brand__emoji{font-size:22px;line-height:1}.btn svg.logo{width:18px;height:18px;flex:none}.mock-caption{margin:12px 0 0;font-size:13px;color:var(--text-3)}.prose a.btn{color:var(--text);text-decoration:none}.prose a.btn--primary,.prose a.btn--primary:hover{color:var(--on-accent)}.lang a{min-width:44px;min-height:44px;display:inline-flex;align-items:center;justify-content:center;padding:0 10px}.theme-btn{width:44px;height:44px}.nav__lang-mobile{display:none}.facts dt,.facts dd,.docs-cta .btn code{overflow-wrap:anywhere}.db-note{color:var(--text-3);font-size:13px;line-height:1.45}@media(max-width:520px){.nav__tools .lang{display:none}.nav__lang-mobile{display:block}.nav__lang-mobile .lang{display:inline-flex;margin:10px 0}.nav__lang-mobile .lang a{border-bottom:0;width:auto;padding:0 14px}.docs-cta .btn code{display:none}.docs-cta .btn{width:100%;justify-content:center}.brand{font-size:15px}}@media(max-width:360px){.facts{grid-template-columns:1fr}}.skill__group{white-space:normal;text-align:right;max-width:55%}.skill__name{overflow-wrap:anywhere}@media(max-width:480px){.nav{column-gap:12px}.nav__tools{gap:6px}}@media(max-width:400px){:root{--gutter: 16px}}.nav__links{order:1}.nav__tools{order:2}@media(max-width:1100px){.nav__links{order:3}}.btn--ink{background:var(--ink-bg);border-color:var(--ink-bg);color:var(--ink-text);font-weight:600}.btn--ink:hover{background:var(--ink-bg-hover);border-color:var(--accent);color:var(--ink-text)}.prose a.btn--ink,.prose a.btn--ink:hover{color:var(--ink-text)}.run{display:inline-block;padding:1px 7px;border:1px solid var(--line-strong);font-family:var(--mono);font-size:11px;line-height:18px;color:var(--text-2);white-space:nowrap}.skill__meta .run{margin-left:auto}.run--mac{border-color:var(--accent);color:var(--accent)}.run--local{border-color:var(--text-3);color:var(--text)}.run--either{border-style:dashed}.run--cloud{color:var(--ok);border-color:color-mix(in srgb,var(--ok) 55%,transparent)}.runs{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(250px,100%),1fr));gap:12px;margin:0}.runs__item{border:1px solid var(--line);background:var(--surface);padding:14px 16px}.runs__item dt{display:flex;align-items:center;gap:8px;margin-bottom:8px}.runs__n{font-family:var(--mono);font-size:12px;color:var(--text-3)}.runs__item dd{margin:0;font-size:14px;line-height:1.5;color:var(--text-2)}.fn{color:var(--accent);text-decoration:none;font-weight:600}.smallprint{font-size:13px;line-height:1.55;color:var(--text-3);max-width:640px}.smallprint a{color:var(--text-2)}.shots{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(320px,100%),1fr));gap:24px}.shot{margin:0;border:1px solid var(--line-strong);background:var(--surface);display:flex;flex-direction:column}.shot__img{flex:1;background:#fff}.shot__bar{display:flex;align-items:center;gap:6px;padding:9px 12px;border-bottom:1px solid var(--line);font-family:var(--mono);font-size:11px;color:var(--text-3);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.shot__bar i{width:9px;height:9px;border-radius:50%;background:var(--line-strong);flex:none}.shot__bar span{margin-left:6px;overflow:hidden;text-overflow:ellipsis}.shot img{display:block;width:100%;height:auto;background:#fff}.shot figcaption{min-height:5.4em;box-sizing:border-box;padding:12px 14px;font-size:14px;line-height:1.5;color:var(--text-2);border-top:1px solid var(--line)}.shot figcaption b{color:var(--text);font-weight:600}.consent{position:fixed;left:16px;right:16px;bottom:16px;z-index:50;max-width:560px;display:flex;flex-wrap:wrap;align-items:center;gap:12px 16px;padding:14px 16px;background:var(--surface, #12151a);color:var(--text, #ecedef);border:1px solid var(--line-strong, #2c313a);border-left:3px solid var(--accent, #e8492f);font:14px/1.45 var(--sans, system-ui, sans-serif);box-shadow:0 12px 32px #00000059}.consent[hidden]{display:none}.consent p{margin:0;flex:1 1 260px}.consent__btns{display:flex;gap:8px}.consent button{font:inherit;cursor:pointer;padding:8px 14px;color:var(--text, #ecedef);background:transparent;border:1px solid var(--line-button, #3a404a)}.consent button[data-consent=granted]{background:var(--accent, #e8492f);color:var(--on-accent, #0e1014);border-color:var(--accent, #e8492f)}.consent button:focus-visible{outline:2px solid var(--accent, #e8492f);outline-offset:2px}
