@font-face{font-family:Libre Franklin Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/libre-franklin-cyrillic-ext-wght-normal.BbRulJFC.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:Libre Franklin Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/libre-franklin-cyrillic-wght-normal.se3OnFSl.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Libre Franklin Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/libre-franklin-vietnamese-wght-normal.DTJpi3oK.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:Libre Franklin Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/libre-franklin-latin-ext-wght-normal.CeZZaleV.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:Libre Franklin Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/libre-franklin-latin-wght-normal.CLTz0ja0.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:Libre Franklin Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/_astro/libre-franklin-cyrillic-ext-wght-italic.C-QmXakx.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:Libre Franklin Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/_astro/libre-franklin-cyrillic-wght-italic.BEG-aDmo.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Libre Franklin Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/_astro/libre-franklin-vietnamese-wght-italic.DGTnne2U.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:Libre Franklin Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/_astro/libre-franklin-latin-ext-wght-italic.BDIJUyTX.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:Libre Franklin Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/_astro/libre-franklin-latin-wght-italic.DbMydFnf.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: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 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{--color-primary: #191816;--color-primary-hover: #000000;--color-primary-active: #000000;--color-primary-subtle: rgba(25, 24, 22, .05);--color-primary-border: rgba(25, 24, 22, .14);--color-accent: #fa6400;--color-accent-hover: #d24e00;--color-accent-ink: #c14400;--color-accent-subtle: rgba(250, 100, 0, .08);--color-success: #0a7a3d;--color-bg: #fbfaf7;--color-bg-alt: #f5f3ef;--color-surface: #ffffff;--color-surface-2: #efece7;--color-border: #e4e0d9;--color-border-2: #cbc5ba;--color-text: #15140f;--color-text-2: #33312c;--color-muted: #67635b;--color-muted-2: #6f6a60;--font-display: "Source Serif 4 Variable", Georgia, "Times New Roman", serif;--font-sans: "Libre Franklin Variable", "Helvetica Neue", Arial, sans-serif;--font-prose: "Source Serif 4 Variable", Georgia, "Times New Roman", serif;--font-mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--text-2xs: .6875rem;--text-xs: .75rem;--text-sm: .8125rem;--text-base: .875rem;--text-md: 1.1875rem;--text-lg: 1.25rem;--text-xl: 1.5rem;--text-2xl: 1.875rem;--text-3xl: 2.5rem;--text-4xl: 3.25rem;--leading-tight: 1.06;--leading-snug: 1.28;--leading-normal: 1.5;--leading-prose: 1.68;--tracking-display: -.018em;--tracking-tight: -.01em;--tracking-label: .06em;--weight-normal: 400;--weight-medium: 500;--weight-semibold: 600;--weight-bold: 700;--weight-black: 800;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2rem;--space-7: 3rem;--space-8: 4rem;--space-9: 6rem;--container: 1200px;--measure: 68ch;--measure-wide: 80ch;--max-width: 1200px;--radius-sm: 0;--radius: 0;--radius-lg: 0;--radius-xl: 0;--shadow-sm: 0 1px 2px rgba(25, 24, 22, .05);--shadow-card: 0 1px 2px rgba(25, 24, 22, .05), 0 2px 5px rgba(25, 24, 22, .04);--shadow-card-hover: 0 2px 4px rgba(25, 24, 22, .07), 0 6px 16px rgba(25, 24, 22, .07);--shadow-elevated: 0 10px 30px rgba(25, 24, 22, .16);--color-warning-ink: #b45309;--shadow-edge: rgba(25, 24, 22, .14)}html.dark{--color-warning-ink: #f0a03c;--shadow-edge: rgba(255, 255, 255, .18);--color-primary: #f2f2f2;--color-primary-hover: #ffffff;--color-primary-active: #ffffff;--color-primary-subtle: rgba(255, 255, 255, .06);--color-primary-border: rgba(255, 255, 255, .16);--color-accent: #ff7d2b;--color-accent-hover: #ff9a5c;--color-accent-ink: #ff8f45;--color-accent-subtle: rgba(255, 125, 43, .14);--color-success: #4ec27d;--color-bg: #14130f;--color-bg-alt: #1c1b16;--color-surface: #191814;--color-surface-2: #221f1a;--color-border: #302d26;--color-border-2: #443f36;--color-text: #f3f1ec;--color-text-2: #d5d1c8;--color-muted: #9c968a;--color-muted-2: #8a8377;--shadow-card: 0 1px 2px rgba(0, 0, 0, .4);--shadow-card-hover: 0 4px 14px rgba(0, 0, 0, .5);--shadow-elevated: 0 8px 24px rgba(0, 0, 0, .6)}@media (max-width: 640px){:root{--text-3xl: 1.875rem;--text-4xl: 2.125rem}}:where(a[href],button,input,select,textarea,summary,[tabindex]:not([tabindex="-1"])):focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}html{scroll-padding-top:84px}.page-header{margin-bottom:var(--space-7)}@media (min-width: 900px){.page-header:has(>.hero-image):not(.page-header-stacked){display:grid;grid-template-columns:minmax(0,1fr) minmax(0,420px);column-gap:var(--space-7);row-gap:0;grid-template-rows:repeat(8,min-content);align-content:center;max-width:none}.page-header:has(>.hero-image):not(.page-header-stacked)>*:not(.hero-image){grid-column:1}.page-header:has(>.hero-image):not(.page-header-stacked)>.hero-image{grid-column:2;grid-row:1 / -1;align-self:center;margin-top:0}}.section-label{display:inline-flex;align-items:center;gap:var(--space-2);font-family:var(--font-sans);font-size:var(--text-2xs);font-weight:var(--weight-bold);text-transform:uppercase;letter-spacing:.09em;color:var(--color-accent-ink);margin:0 0 var(--space-3)}.section-label:before{content:none}.section-label--barred:before{content:"";width:3px;height:.85em;background:var(--color-accent);border-radius:0;flex-shrink:0}main h1{font-family:var(--font-display)!important;font-weight:var(--weight-bold)!important;letter-spacing:var(--tracking-display)}.page-header:has(>.hero-image) :is(h1,.page-title){font-size:clamp(1.9rem,2.6vw,2.5rem)!important}main :is(p,li):not([class*=meta]):not([class*=label]):not([class*=chip]):not([class*=card]):not([class*=badge]):not([class*=btn]):not([class*=tag]){font-family:var(--font-prose)}main :is(.stat-label,.section-label,time,small,figcaption){font-family:var(--font-sans)}main h2:not([class*=card]):not([class*=tile]){font-family:var(--font-display)!important}.page-title,.page-header h1{font-family:var(--font-display);font-size:clamp(2.25rem,4vw,3.25rem);font-weight:var(--weight-bold);line-height:var(--leading-tight);letter-spacing:var(--tracking-display);color:var(--color-text);margin:0 0 var(--space-4);text-wrap:balance}.section-title,.prose-editorial h2{position:relative;border-top:1px solid var(--color-text);padding-top:.55em}.section-title:before,.prose-editorial h2:before{content:"";position:absolute;left:0;top:-4px;width:7px;height:7px;background:var(--color-accent);border-radius:50%}.page-deck,.page-subtitle{font-family:var(--font-prose);font-size:var(--text-xl);font-weight:var(--weight-normal);line-height:1.4;letter-spacing:0;color:var(--color-text-2);margin:0 0 var(--space-4);max-width:var(--measure);text-wrap:pretty}.page-lead,.page-desc{font-family:var(--font-prose);font-size:var(--text-md);line-height:var(--leading-prose);color:var(--color-text-2);max-width:var(--measure);margin:0}.callout{--callout-accent: var(--color-accent-ink);position:relative;border:1px solid var(--color-border);border-left:3px solid var(--callout-accent);border-radius:var(--radius);background:var(--color-bg-alt);padding:var(--space-4) var(--space-5);margin:var(--space-6) 0}.callout-title{display:block;font-size:var(--text-2xs);font-weight:var(--weight-bold);text-transform:uppercase;letter-spacing:var(--tracking-label);color:var(--callout-accent);margin-bottom:var(--space-2)}.callout>:last-child{margin-bottom:0}.callout-key{--callout-accent: var(--color-accent-ink)}.callout-warning{--callout-accent: var(--color-warning-ink)}.callout-success{--callout-accent: var(--color-success)}.prose,.prose-block,.prose-editorial,#tutorial-prose{font-family:var(--font-prose)}:is(.prose,.prose-block,.prose-editorial,#tutorial-prose) :is(h1,h2,h3,h4,h5,h6,th,.badge,button,kbd){font-family:var(--font-sans)}:is(.prose,.prose-block,.prose-editorial,#tutorial-prose) :is(code,pre,samp){font-family:var(--font-mono)}.prose-editorial{font-size:var(--text-md);line-height:var(--leading-prose);color:var(--color-text-2)}.prose-editorial>*{max-width:var(--measure)}.prose-editorial h2{font-size:var(--text-xl);font-weight:var(--weight-bold);line-height:var(--leading-tight);letter-spacing:var(--tracking-tight);color:var(--color-text);margin:var(--space-8) 0 var(--space-4)}.prose-editorial h3{font-size:var(--text-lg);font-weight:var(--weight-bold);line-height:var(--leading-snug);color:var(--color-text);margin:var(--space-6) 0 var(--space-3)}.prose-editorial p{margin:0 0 var(--space-5)}.prose-editorial figure,.prose-editorial pre{max-width:var(--measure-wide)}.prose-editorial blockquote{margin:var(--space-6) 0;padding:0 0 0 var(--space-5);border-left:3px solid var(--color-accent);font-size:var(--text-lg);font-weight:var(--weight-medium);line-height:var(--leading-snug);letter-spacing:var(--tracking-tight);color:var(--color-text)}.prose-editorial blockquote p{margin:0}.article-body-md>:is(pre,figure,table,.code-block-wrapper,.datatable-wrap){max-width:var(--measure-wide)}.article-body-md ul{padding-left:1.35em;margin:0 0 var(--space-5);max-width:var(--measure)}.article-body-md :is(ul,ol) :is(ul,ol){margin:var(--space-2) 0 0}.article-body-md li{margin-bottom:var(--space-2);line-height:var(--leading-prose)}.article-body-md li::marker{color:var(--color-accent)}.article-body-md a{color:var(--color-text);text-decoration:underline;text-decoration-color:var(--color-accent);text-underline-offset:3px;text-decoration-thickness:1px}.article-body-md a:hover{color:var(--color-accent-ink);text-decoration-thickness:2px}.article-body-md a:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.article-body-md :not(pre)>code{font-size:.86em;overflow-wrap:anywhere;color:var(--color-text)}.article-body-md table{display:block;overflow-x:auto;width:100%;max-width:var(--measure-wide);border-collapse:collapse;font-family:var(--font-sans);font-size:var(--text-base);margin:0 0 var(--space-5)}.article-body-md th{text-align:left;padding:var(--space-2) var(--space-5) var(--space-2) 0;font-family:var(--font-sans);font-size:var(--text-2xs);font-weight:var(--weight-bold);text-transform:uppercase;letter-spacing:var(--tracking-label);color:var(--color-muted);border-bottom:1px solid var(--color-text);white-space:nowrap}.article-body-md td{padding:var(--space-3) var(--space-5) var(--space-3) 0;border-bottom:1px solid var(--color-border);color:var(--color-text-2);line-height:var(--leading-normal);vertical-align:baseline}.article-body-md tr>:last-child{padding-right:0}.article-body-md :is(img,figure){max-width:100%;height:auto}.article-body-md figure{margin:var(--space-6) 0;max-width:var(--measure-wide)}.article-body-md :is(figure img,p>img){display:block;width:100%;border:1px solid var(--color-border);border-radius:0;box-shadow:none;background:none;padding:0;margin:0}.article-body-md figcaption{font-family:var(--font-sans);font-size:var(--text-xs);line-height:var(--leading-normal);color:var(--color-muted);margin-top:var(--space-2);padding-top:var(--space-2);border-top:1px solid var(--color-border);max-width:none}.article-body-md :is(.katex-display,mjx-container[display]){overflow-x:auto;overflow-y:hidden;padding:var(--space-1) 0;max-width:100%}.article-body-md hr{border:0;border-top:1px solid var(--color-border);margin:var(--space-7) 0}.article-body-md strong{color:var(--color-text);font-weight:var(--weight-semibold)}.taglist{display:flex;flex-wrap:wrap;gap:var(--space-2);list-style:none;padding:0;margin:0;max-width:none}.taglist>li{margin:0;padding:0}.taglist>li:before{content:none}.tag{display:inline-block;font-family:var(--font-sans);font-size:var(--text-xs);font-weight:var(--weight-medium);line-height:var(--leading-normal);letter-spacing:0;text-transform:none;color:var(--color-text-2);background:none;border:1px solid var(--color-border-2);border-radius:0;padding:var(--space-1) var(--space-2);overflow-wrap:anywhere}a.tag:hover,.tag>a:hover{color:var(--color-accent-ink);border-color:var(--color-accent);text-decoration:none}a.tag:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.tag-strong{color:var(--color-text);border-color:var(--color-text);font-weight:var(--weight-semibold)}.u-measure{max-width:var(--measure)}.u-stack-4>*+*{margin-top:var(--space-4)}.u-stack-5>*+*{margin-top:var(--space-5)}.u-stack-6>*+*{margin-top:var(--space-6)}.hidden:not([class*=visually]):not([class*=sr-]){display:none}.article-shell{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-8)}@media (min-width: 1080px){.article-shell{grid-template-columns:minmax(0,1fr) 300px;column-gap:var(--space-8);align-items:start}}.article{min-width:0}.prose-editorial.article>*{max-width:none}.article .article-body>*{max-width:none}.article .article-body :is(p,ul,ol,dl,blockquote,.callout,.keyfacts){max-width:var(--measure)}.article .article-body :is(.u-wide,figure,pre,table,.grid-2,.grid-3,.specimen-grid,.panel-grid,.datatable-wrap,.qa,.ladder){max-width:none}.article .article-body :is(.panel-grid,.grid-2,.grid-3,.u-wide) :is(p,ul,ol,dl){max-width:none}@media (prefers-reduced-motion: no-preference){html:has(.article-shell){scroll-behavior:smooth}}.article .article-section+.article-section{margin-top:var(--space-8)}.article .page-header{margin-bottom:var(--space-7)}.article .page-title{max-width:20ch}@media (max-width: 1079px){.article .page-title{max-width:var(--measure)}}.article .page-deck{font-family:var(--font-prose);font-size:clamp(var(--text-lg),4.4vw,var(--text-2xl));font-weight:var(--weight-normal);line-height:1.32;letter-spacing:0;color:var(--color-text-2);margin:0 0 var(--space-5);max-width:var(--measure)}.article .meta-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2) var(--space-4);list-style:none;margin:0 0 var(--space-6);padding:var(--space-3) 0;border-top:1px solid var(--color-text);border-bottom:1px solid var(--color-border);font-family:var(--font-sans);font-size:var(--text-xs);line-height:var(--leading-normal);color:var(--color-muted);max-width:none}.article .meta-row li{display:block}.article .meta-row li+li:before{content:"";display:inline-block;width:3px;height:3px;margin:0 var(--space-3) 0 0;vertical-align:.25em;background:var(--color-muted-2)}.article .meta-row strong{font-weight:var(--weight-semibold);color:var(--color-text)}.article .meta-row .meta-flag{font-size:var(--text-2xs);font-weight:var(--weight-bold);text-transform:uppercase;letter-spacing:var(--tracking-label);color:var(--color-accent-ink)}.article .article-figure{margin:0 0 var(--space-6);border:1px solid var(--color-border);background:var(--color-surface-2);overflow:hidden;max-width:none}.article .article-figure img{display:block;width:100%;height:auto;max-height:280px;object-fit:cover}.article .page-lead{font-size:var(--text-md);line-height:var(--leading-prose);color:var(--color-text-2);max-width:var(--measure)}.article .section-title{position:relative;font-family:var(--font-display);font-size:var(--text-xl);font-weight:var(--weight-bold);line-height:var(--leading-tight);letter-spacing:var(--tracking-tight);color:var(--color-text);margin:0 0 var(--space-4);padding-top:var(--space-5);border-top:1px solid var(--color-border-2);border-bottom:0;padding-bottom:0;max-width:none;text-wrap:balance}.article .section-title:before{content:"";position:absolute;top:-3px;left:0;width:7px;height:7px;background:var(--color-accent)}.article .section-title-num{display:block;font-family:var(--font-sans);font-size:var(--text-2xs);font-weight:var(--weight-bold);letter-spacing:var(--tracking-label);color:var(--color-muted);font-variant-numeric:tabular-nums;margin-bottom:var(--space-2)}.article .section-note{font-family:var(--font-prose);font-size:1.0625rem;line-height:1.55;color:var(--color-muted);max-width:var(--measure);margin:calc(-1 * var(--space-2)) 0 var(--space-5)}.article .article-body h3{font-family:var(--font-sans);font-size:var(--text-lg);font-weight:var(--weight-bold);line-height:var(--leading-snug);letter-spacing:var(--tracking-tight);color:var(--color-text);margin:var(--space-6) 0 var(--space-3)}.article .keyfacts{background:var(--color-surface);border:1px solid var(--color-border);border-top:3px solid var(--color-accent);box-shadow:var(--shadow-card);padding:var(--space-5);margin:0 0 var(--space-8)}.article .keyfacts-title{font-family:var(--font-sans);font-size:var(--text-2xs);font-weight:var(--weight-bold);text-transform:uppercase;letter-spacing:var(--tracking-label);color:var(--color-accent-ink);margin:0 0 var(--space-4);max-width:none}.article .keyfacts dl{display:grid;gap:0;margin:0;max-width:none}.article .keyfacts dt{font-family:var(--font-sans);font-size:var(--text-2xs);font-weight:var(--weight-bold);text-transform:uppercase;letter-spacing:var(--tracking-label);color:var(--color-muted);padding-top:var(--space-3);border-top:1px solid var(--color-border)}.article .keyfacts dt:first-of-type{border-top:0;padding-top:0}.article .keyfacts dd{font-family:var(--font-prose);font-size:1.0625rem;line-height:var(--leading-snug);color:var(--color-text);margin:var(--space-1) 0 var(--space-3)}.article .keyfacts dd:last-child{margin-bottom:0}@media (min-width: 560px){.article .keyfacts dl{grid-template-columns:9rem minmax(0,1fr);column-gap:var(--space-5)}.article .keyfacts dd{margin:0 0 var(--space-3);padding-top:var(--space-3);border-top:1px solid var(--color-border)}.article .keyfacts dt:first-of-type+dd{border-top:0;padding-top:0}.article .keyfacts dd:last-of-type{margin-bottom:0}}.article .pullquote{margin:var(--space-7) 0;padding:var(--space-1) 0 var(--space-1) var(--space-5);border-left:3px solid var(--color-accent);font-family:var(--font-prose);font-size:var(--text-2xl);font-weight:var(--weight-normal);line-height:1.28;letter-spacing:var(--tracking-tight);color:var(--color-text);max-width:var(--measure);text-wrap:balance}.article .pullquote p{margin:0;max-width:none}.article .article-body .callout{background:var(--color-bg-alt);border:1px solid var(--color-border);border-left:3px solid var(--callout-accent, var(--color-primary));padding:var(--space-5);margin:var(--space-6) 0}.article .article-body .callout-title{font-family:var(--font-sans);font-size:var(--text-2xs);font-weight:var(--weight-bold);text-transform:uppercase;letter-spacing:var(--tracking-label);margin-bottom:var(--space-3)}.article .panel-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-4);margin:0 0 var(--space-5)}@media (min-width: 760px){.article .panel-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.article .panel-grid>:last-child:nth-child(odd){grid-column:1 / -1}}.article .panel{border:1px solid var(--color-border);background:var(--color-surface);box-shadow:var(--shadow-card);padding:var(--space-5);min-width:0}.article .panel .panel-label{font-family:var(--font-sans);font-size:var(--text-2xs);font-weight:var(--weight-bold);text-transform:uppercase;letter-spacing:var(--tracking-label);color:var(--color-accent-ink);line-height:var(--leading-normal);margin:0 0 var(--space-2)}.article .panel h3{font-family:var(--font-sans);font-size:1.0625rem;font-weight:var(--weight-bold);line-height:var(--leading-snug);letter-spacing:var(--tracking-tight);color:var(--color-text);margin:0 0 var(--space-3)}.article .panel p{font-family:var(--font-prose);font-size:1.0625rem;line-height:1.6;color:var(--color-text-2);margin:0 0 var(--space-3)}.article .panel>:last-child{margin-bottom:0}.article .panel ul{list-style:none;margin:0;padding:0}.article .panel ul li{position:relative;padding-left:var(--space-4);font-family:var(--font-prose);font-size:1.0625rem;line-height:1.55;color:var(--color-text-2)}.article .panel ul li+li{margin-top:var(--space-2)}.article .panel ul li:before{content:"";position:absolute;left:0;top:.62em;width:4px;height:4px;background:var(--color-accent)}.article .panel-counter ul li:before{background:var(--color-muted-2)}.article .panel.panel-counter .panel-label{color:var(--color-muted)}.article .ladder{list-style:none;counter-reset:ladder;margin:0 0 var(--space-5);padding:var(--space-1) 0 0 var(--space-7);border-left:1px solid var(--color-border);max-width:var(--measure)}.article .ladder>li{counter-increment:ladder;position:relative;padding:0 0 var(--space-5);max-width:none}.article .ladder>li:last-child{padding-bottom:0}.article .ladder>li:before{content:counter(ladder,decimal-leading-zero);position:absolute;left:calc(-1 * var(--space-7) + var(--space-3));top:.1em;font-family:var(--font-sans);font-size:var(--text-2xs);font-weight:var(--weight-bold);letter-spacing:var(--tracking-label);color:var(--color-accent-ink);font-variant-numeric:tabular-nums}.article .ladder-head{display:block;font-family:var(--font-sans);font-size:1.0625rem;font-weight:var(--weight-bold);line-height:var(--leading-snug);letter-spacing:var(--tracking-tight);color:var(--color-text);margin-bottom:var(--space-1)}.article .ladder-body{display:block;font-family:var(--font-prose);font-size:1.0625rem;line-height:1.6;color:var(--color-text-2)}.article .datatable-wrap{overflow-x:auto;margin:0 0 var(--space-5)}.article .datatable{width:100%;border-collapse:collapse;font-family:var(--font-sans);font-size:var(--text-base)}.article .datatable th{text-align:left;padding:var(--space-2) var(--space-5) var(--space-2) 0;font-family:var(--font-sans);font-size:var(--text-2xs);font-weight:var(--weight-bold);text-transform:uppercase;letter-spacing:var(--tracking-label);color:var(--color-muted);border-bottom:1px solid var(--color-text);white-space:nowrap}.article .datatable td{padding:var(--space-3) var(--space-5) var(--space-3) 0;border-bottom:1px solid var(--color-border);color:var(--color-text-2);line-height:var(--leading-normal);vertical-align:baseline}.article .datatable tr>:last-child{padding-right:0}.article .datatable td:first-child{font-weight:var(--weight-semibold);color:var(--color-text);white-space:nowrap}.article .datatable .num{font-variant-numeric:tabular-nums;color:var(--color-accent-ink);font-weight:var(--weight-semibold);white-space:nowrap}.article .datatable.wrap-first td:first-child{white-space:normal}.article .datatable-wrap{background:linear-gradient(to right,var(--color-bg) 30%,transparent) left / 3rem 100% no-repeat local,linear-gradient(to left,var(--color-bg) 30%,transparent) right / 3rem 100% no-repeat local,radial-gradient(farthest-side at 0 50%,var(--shadow-edge),transparent) left / 1.25rem 100% no-repeat scroll,radial-gradient(farthest-side at 100% 50%,var(--shadow-edge),transparent) right / 1.25rem 100% no-repeat scroll}.article :is(.datatable,.panel h3) a{color:var(--color-text);text-decoration:underline;text-decoration-color:var(--color-accent);text-underline-offset:3px;text-decoration-thickness:1px}.article :is(.datatable,.panel h3) a:hover{color:var(--color-accent-ink);text-decoration-thickness:2px}.article :is(.datatable,.panel h3) a:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.article :not(pre)>code{font-size:.86em;overflow-wrap:anywhere;color:var(--color-text)}.article .sublabel{display:block;margin:0 0 var(--space-1);font-family:var(--font-sans);font-size:var(--text-2xs);font-weight:var(--weight-bold);text-transform:uppercase;letter-spacing:var(--tracking-label);line-height:var(--leading-normal);color:var(--color-muted)}.article .lnote{display:block;margin:var(--space-1) 0 0;font-family:var(--font-sans);font-size:var(--text-xs);line-height:var(--leading-normal);color:var(--color-muted)}.article .filterbar,.filterbar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3) var(--space-4);margin:0 0 var(--space-8);padding-bottom:var(--space-4);border-bottom:1px solid var(--color-border);font-family:var(--font-sans)}.filterbar ul{display:flex;flex-wrap:wrap;gap:var(--space-2);list-style:none;margin:0;padding:0;max-width:none}.filterbar li{margin:0;padding:0}.filterbar li:before{content:none}.article .filterbar :is(.filterbar-label,.filterbar-count),.filterbar :is(.filterbar-label,.filterbar-count){font-family:var(--font-sans);font-size:var(--text-2xs);font-weight:var(--weight-bold);text-transform:uppercase;letter-spacing:var(--tracking-label);color:var(--color-muted);margin:0}.filterbar input{flex:1 1 18rem;max-width:24rem;padding:var(--space-2) var(--space-3);font-family:var(--font-sans);font-size:var(--text-base);color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border-2);border-radius:0}.filterbar input:focus-visible{outline:2px solid var(--color-accent);outline-offset:1px}.filterbar-btn{font-family:var(--font-sans);font-size:var(--text-sm);font-weight:var(--weight-semibold);padding:var(--space-1) var(--space-3);border:1px solid var(--color-border-2);border-radius:0;background:transparent;color:var(--color-text-2);cursor:pointer}.filterbar-btn:hover{border-color:var(--color-accent);color:var(--color-accent-ink)}.filterbar-btn:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.filterbar-btn.is-on{background:var(--color-text);border-color:var(--color-text);color:var(--color-bg)}.article .filter-empty,.filter-empty{padding:var(--space-7) 0}.article .qa{margin:0;border-top:1px solid var(--color-text);max-width:var(--measure)}.article .qa>div{border-bottom:1px solid var(--color-border)}.article .qa dt{font-family:var(--font-sans);font-size:1.0625rem;font-weight:var(--weight-bold);line-height:var(--leading-snug);letter-spacing:var(--tracking-tight);color:var(--color-text);padding:var(--space-5) 0 var(--space-2)}.article .qa dd{font-family:var(--font-prose);font-size:var(--text-md);line-height:var(--leading-prose);color:var(--color-text-2);margin:0;padding:0 0 var(--space-5)}.article .endnote{margin:var(--space-8) 0 0;padding:var(--space-6) 0 0;border-top:3px solid var(--color-text);max-width:var(--measure-wide)}.article .endnote h2{border-top:0;padding-top:0;font-family:var(--font-display);font-size:var(--text-2xl);font-weight:var(--weight-black);line-height:var(--leading-tight);letter-spacing:var(--tracking-display);color:var(--color-text);margin:0 0 var(--space-3)}.article .endnote h2:before{content:none}.article .endnote p{font-family:var(--font-prose);font-size:var(--text-md);line-height:var(--leading-prose);color:var(--color-text-2);margin:0 0 var(--space-5);max-width:var(--measure)}.article .endnote-actions{display:flex;flex-wrap:wrap;gap:var(--space-3)}.btn-editorial,.article .btn-editorial{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-5);background:var(--color-text);color:var(--color-bg);font-family:var(--font-sans);font-size:var(--text-base);font-weight:var(--weight-bold);letter-spacing:var(--tracking-tight);text-decoration:none;border:1px solid var(--color-text);transition:background .14s ease,color .14s ease,border-color .14s ease}.btn-editorial:hover,.article .btn-editorial:hover{background:var(--color-accent-ink);border-color:var(--color-accent-ink);color:var(--color-bg);text-decoration:none}.btn-editorial:focus-visible,.article .btn-editorial:focus-visible{outline:2px solid var(--color-accent);outline-offset:3px}.btn-editorial-lg{padding:var(--space-4) var(--space-5);font-size:var(--text-md);width:100%;justify-content:center}.btn-editorial-ghost,.article .btn-editorial-ghost{background:transparent;color:var(--color-text);border-color:var(--color-border-2)}.article .btn-editorial-ghost:hover{background:transparent;color:var(--color-accent-ink);border-color:var(--color-accent)}.article .article-body :is(p,li,dd,.ladder-body) a{color:var(--color-text);text-decoration:underline;text-decoration-color:var(--color-accent);text-underline-offset:3px;text-decoration-thickness:1px}.article .article-body :is(p,li,dd,.ladder-body) a:hover{color:var(--color-accent-ink);text-decoration-thickness:2px}.article .article-body a:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.linklist{list-style:none;margin:0;padding:0;border-top:1px solid var(--color-text)}.linklist li+li{border-top:1px solid var(--color-border)}.linklist>li:last-child{border-bottom:1px solid var(--color-border)}.article .article-body .linklist a{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:var(--space-2) var(--space-5);padding:var(--space-3) 0;text-decoration:none;color:var(--color-text)}.article .article-body .linklist a:hover{background:var(--color-bg-alt);text-decoration:none}.linklist a:focus-visible{outline:2px solid var(--color-accent);outline-offset:-2px}.article .article-body .linklist-title{font-family:var(--font-prose);font-size:1.0625rem;font-weight:var(--weight-semibold);line-height:var(--leading-snug);letter-spacing:var(--tracking-tight);color:var(--color-text);min-width:0}.linklist a:hover .linklist-title{color:var(--color-accent-ink)}.article .article-body .linklist-meta{font-family:var(--font-sans);font-size:var(--text-xs);color:var(--color-muted);white-space:nowrap;flex-shrink:0}.visually-hidden[data-astro-cid-bfbmamsi]{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.newsletter[data-astro-cid-bfbmamsi]{display:flex;flex-direction:column;gap:1.25rem;padding:1.75rem 2rem;border:1px solid var(--color-border);border-radius:var(--radius-xl);background:linear-gradient(135deg,color-mix(in srgb,var(--color-primary) 7%,transparent) 0%,var(--color-bg-alt) 100%)}@media (min-width: 720px){.newsletter-card[data-astro-cid-bfbmamsi]{flex-direction:row;align-items:center;gap:2rem}.newsletter-card[data-astro-cid-bfbmamsi] .newsletter-text[data-astro-cid-bfbmamsi]{flex:1}}.newsletter-inline[data-astro-cid-bfbmamsi]{padding:1.25rem 1.375rem;background:var(--color-bg-alt)}.newsletter-heading[data-astro-cid-bfbmamsi]{font-size:1.0625rem;font-weight:800;color:var(--color-text);letter-spacing:-.01em;margin:0 0 .375rem}.newsletter-sub[data-astro-cid-bfbmamsi]{font-size:.875rem;color:var(--color-muted);line-height:1.6;margin:0}.newsletter-form[data-astro-cid-bfbmamsi]{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.newsletter-input[data-astro-cid-bfbmamsi]{flex:1;min-width:0;padding:.625rem .875rem;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-bg);color:var(--color-text);font-size:.9375rem;font-family:inherit;min-height:42px}.newsletter-input[data-astro-cid-bfbmamsi]:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--color-primary) 18%,transparent)}.newsletter-submit[data-astro-cid-bfbmamsi]{padding:.625rem 1.125rem;background:var(--color-primary);color:var(--color-bg);border:none;border-radius:var(--radius);font-size:.9375rem;font-weight:700;cursor:pointer;min-height:42px;transition:transform .1s,opacity .15s,box-shadow .15s}.newsletter-submit[data-astro-cid-bfbmamsi]:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 10px color-mix(in srgb,var(--color-primary) 30%,transparent)}.newsletter-submit[data-astro-cid-bfbmamsi]:disabled{opacity:.6;cursor:not-allowed}.newsletter-status[data-astro-cid-bfbmamsi]{flex-basis:100%;margin:.25rem 0 0;font-size:.8125rem;line-height:1.5;min-height:1.2em;color:var(--color-muted)}.newsletter-status[data-astro-cid-bfbmamsi][data-kind=success]{color:#166534;font-weight:600}.newsletter-status[data-astro-cid-bfbmamsi][data-kind=error]{color:#991b1b;font-weight:600}.page-rail[data-astro-cid-5bi5de3g]{display:flex;flex-direction:column;gap:var(--space-5);position:sticky;top:var(--space-5);align-self:start;font-family:var(--font-sans)}.rail-label[data-astro-cid-5bi5de3g]{display:block;font-size:var(--text-2xs);font-weight:var(--weight-bold);text-transform:uppercase;letter-spacing:var(--tracking-label);color:var(--color-muted);margin-bottom:var(--space-2)}.rail-input[data-astro-cid-5bi5de3g]{width:100%;padding:.6rem .7rem;font-family:inherit;font-size:var(--text-base);color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border);border-radius:0}.rail-input[data-astro-cid-5bi5de3g]:focus-visible{outline:2px solid var(--color-accent);outline-offset:1px}.rail-block[data-astro-cid-5bi5de3g]{border-top:2px solid var(--color-text);padding-top:var(--space-3)}.rail-list[data-astro-cid-5bi5de3g]{list-style:none;margin:0;padding:0}.rail-list[data-astro-cid-5bi5de3g] li[data-astro-cid-5bi5de3g]{padding:var(--space-3) 0;border-bottom:1px solid var(--color-border)}.rail-list[data-astro-cid-5bi5de3g] li[data-astro-cid-5bi5de3g]:last-child{border-bottom:0}.rail-link[data-astro-cid-5bi5de3g]{display:block;font-size:var(--text-base);font-weight:var(--weight-semibold);line-height:1.3;color:var(--color-text);text-decoration:none}.rail-link[data-astro-cid-5bi5de3g]:hover{color:var(--color-accent-ink);text-decoration:none}.rail-meta[data-astro-cid-5bi5de3g]{display:block;margin-top:.15rem;font-size:var(--text-xs);color:var(--color-muted)}.rail-ad[data-astro-cid-5bi5de3g]{border-top:1px solid var(--color-border);padding-top:var(--space-3)}.rail-ad-label[data-astro-cid-5bi5de3g]{color:var(--color-muted-2)}.rail-ad-unit[data-astro-cid-5bi5de3g]{background:var(--color-bg-alt)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html.embed-mode .site-nav,html.embed-mode footer,html.embed-mode .skip-link,html.embed-mode .breadcrumb,html.embed-mode .newsletter-wrap,html.embed-mode .cookie-banner,html.embed-mode .embed-hide{display:none!important}html.embed-mode,html.embed-mode body{background:transparent!important}html.embed-mode #main-content{max-width:none!important;margin:0!important;padding:.5rem!important}.skip-link{position:absolute;top:-40px;left:0;padding:.5rem 1rem;background:var(--color-primary);color:var(--color-bg);font-size:.875rem;font-weight:600;z-index:9999;transition:top .2s}.skip-link:focus{top:0}html{scroll-behavior:smooth}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}::selection{background:#ffe0cc;color:#1a1a1a}body{font-family:var(--font-sans);background:var(--color-bg);color:var(--color-text);line-height:1.65;min-height:100vh;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color .2s,color .2s;overflow-x:clip}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px;border-radius:0}:focus:not(:focus-visible){outline:none}h1{letter-spacing:-.03em}h2{letter-spacing:-.02em}h3{letter-spacing:-.015em}.site-nav{position:sticky;top:0;z-index:100;background:var(--color-bg);border-top:3px solid var(--color-accent);border-bottom:2px solid var(--color-text);transition:box-shadow .3s}.site-nav.scrolled{box-shadow:0 1px 0 var(--color-border-2)}html.dark .site-nav.scrolled{box-shadow:0 1px 8px #00000040,0 4px 16px #00000026}.nav-inner{max-width:var(--max-width);margin:0 auto;padding:0 1.5rem;display:flex;align-items:center;justify-content:space-between;height:56px;gap:1.5rem}.nav-logo{display:flex;align-items:center;gap:.5rem;text-decoration:none;flex-shrink:0}.nav-logo:hover{text-decoration:none;opacity:.88}.nav-logo-mark-wrap{position:relative;width:144px;height:56px;flex-shrink:0;display:flex;align-items:center;justify-content:center}.nav-logo-mark{height:56px;width:144px;display:block;overflow:visible}.sig-left,.sig-bar,.sig-right{stroke-linecap:round;stroke-width:2.75;fill:none}.sig-left{stroke:#f33;stroke-dasharray:15;stroke-dashoffset:15;animation:sigLeft 4s ease-in-out infinite}.sig-bar{stroke:#f33;stroke-dasharray:13;stroke-dashoffset:13;animation:sigBar 4s ease-in-out infinite}.sig-right{stroke:#f33;stroke-dasharray:15;stroke-dashoffset:15;animation:sigRight 4s ease-in-out infinite}@keyframes sigLeft{0%{stroke-dashoffset:15;opacity:1}25%{stroke-dashoffset:0;opacity:1}78%{stroke-dashoffset:0;opacity:1}88%{opacity:0}to{stroke-dashoffset:15;opacity:0}}@keyframes sigBar{0%,22%{stroke-dashoffset:13;opacity:0}25%{stroke-dashoffset:13;opacity:1}50%{stroke-dashoffset:0;opacity:1}78%{stroke-dashoffset:0;opacity:1}88%{opacity:0}to{stroke-dashoffset:13;opacity:0}}@keyframes sigRight{0%,48%{stroke-dashoffset:15;opacity:0}50%{stroke-dashoffset:15;opacity:1}75%{stroke-dashoffset:0;opacity:1}85%{opacity:0}to{stroke-dashoffset:15;opacity:0}}.nav-logo-text{font-size:1.1875rem;font-weight:var(--weight-bold);font-family:var(--font-display);color:var(--color-text);letter-spacing:-.02em;white-space:nowrap}.nav-logo .logo-accent{color:var(--color-primary)}.nav-logo .logo-tld{color:var(--color-muted);font-weight:400}.nav-links{display:flex;gap:.125rem;list-style:none;align-items:center}.nav-links a{color:var(--color-text);font-size:var(--text-sm);font-weight:var(--weight-semibold);padding:.5rem .75rem;border-radius:var(--radius-sm);transition:color .15s;white-space:nowrap;position:relative}.nav-links>li>a:after{content:"";position:absolute;bottom:0;left:50%;width:0;height:3px;background:var(--color-accent);border-radius:0;transition:width .2s ease,left .2s ease}.nav-links>li>a:hover:after{width:calc(100% - 1.25rem);left:.625rem}.nav-links a:hover{color:var(--color-accent);background:transparent;text-decoration:none}.nav-links a[aria-current=page]{color:var(--color-primary);font-weight:600}.nav-links>li>a[aria-current=page]:after{width:calc(100% - 1.5rem);left:.75rem;opacity:1}.nav-item-drop{position:relative}.nav-drop-trigger{display:flex;align-items:center;gap:.2rem}.nav-caret{font-size:.6rem;opacity:.6;margin-top:1px}.nav-dropdown{display:none;position:absolute;top:100%;left:0;min-width:210px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);list-style:none;padding-left:0;margin:0;box-shadow:var(--shadow-elevated);padding:.5rem .375rem .375rem;z-index:200;opacity:0;transition:opacity .15s ease}.nav-dropdown:before{content:"";position:absolute;top:-10px;left:0;right:0;height:10px}.nav-item-drop:hover .nav-dropdown,.nav-item-drop:focus-within .nav-dropdown{display:flex;flex-direction:column;opacity:1}.nav-dropdown-wide{display:none;min-width:560px;flex-direction:row!important;flex-wrap:wrap;gap:0;left:auto;right:0}.nav-dropdown-wide .drop-col{flex:1 1 45%;min-width:160px;display:flex;flex-direction:column;padding-bottom:.25rem}.nav-item-drop:hover .nav-dropdown-wide,.nav-item-drop:focus-within .nav-dropdown-wide{display:flex;opacity:1}.drop-item{font-size:.8125rem;font-weight:500;color:var(--color-text-2);padding:.45rem .75rem;border-radius:var(--radius-sm);text-decoration:none;transition:background .1s,color .1s;white-space:nowrap}.drop-item:hover{background:var(--color-primary-subtle);color:var(--color-primary);text-decoration:none}.drop-item-header{font-weight:700;color:var(--color-text);margin-bottom:.125rem}.drop-section-label{display:block;font-size:.6rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--color-muted-2);padding:.5rem .75rem .15rem}@media (max-width: 860px){.nav-hide-sm{display:none}}.nav-hamburger{display:none;background:none;border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-muted);cursor:pointer;width:34px;height:34px;align-items:center;justify-content:center;font-size:1.1rem;flex-shrink:0}@media (max-width: 1023px){.nav-hamburger{display:flex}.nav-logo-text{display:none}.nav-links{display:none;position:absolute;top:100%;left:0;right:0;background:var(--color-surface);border-bottom:1px solid var(--color-border);flex-direction:column;padding:.5rem 1rem 1rem;z-index:200;gap:0}.nav-links.open{display:flex}.nav-links a{padding:.5rem .25rem;font-size:.85rem;width:100%}.nav-dropdown{position:static!important;display:none;box-shadow:none;border:none;padding-left:1rem;background:none}.nav-item-drop.open>.nav-dropdown{display:flex}.nav-dropdown-wide{min-width:unset!important;flex-direction:column!important}.nav-dropdown-wide .drop-col{flex:unset}.nav-drop-trigger{width:100%;justify-content:space-between}}.nav-right{display:flex;align-items:center;gap:.5rem;flex-shrink:0}.nav-search-btn{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:var(--radius-sm);color:var(--color-text-2);text-decoration:none;transition:background .15s,color .15s}.nav-search-btn:hover{background:var(--color-bg-alt);color:var(--color-primary)}.theme-toggle{background:var(--color-bg-alt);border:1px solid var(--color-border);border-radius:50%;color:var(--color-muted);cursor:pointer;width:36px;height:36px;display:flex;align-items:center;justify-content:center;font-size:1.05rem;transition:all .2s;line-height:1}.theme-toggle:hover{background:var(--color-primary-subtle);color:var(--color-primary);border-color:var(--color-primary-border);transform:rotate(15deg)}.icon-sun,.icon-moon{line-height:1;display:flex;align-items:center;justify-content:center}.icon-sun{display:none}.icon-moon,html.dark .icon-sun{display:flex}html.dark .icon-moon{display:none}main{max-width:var(--max-width);margin:0 auto;padding:2.5rem 1.5rem;animation:pageFadeIn .35s ease backwards}.page-grid{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:var(--space-7);align-items:start}@media (max-width: 1080px){.page-grid{grid-template-columns:minmax(0,1fr)}.page-rail{display:none}}main p:not([class*=meta]):not([class*=label]):not([class*=card]):not([class*=chip]):not([class*=badge]):not([class*=note]):not([class*=sub]):not([class*=count]):not([class*=line]){max-width:74ch}main :is(.text-center,[style*="text-align:center"],[style*="text-align: center"]) p{margin-inline:auto}@keyframes pageFadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}footer[aria-label="Site footer"]{background:#15140f;margin-top:6rem}.newsletter-wrap{max-width:var(--max-width);margin:4rem auto 3rem;padding:0 var(--container-pad, 1.25rem)}.footer-stats{background:#0e0d09;border-bottom:1px solid rgba(255,255,255,.06)}.footer-stats-inner{max-width:var(--max-width);margin:0 auto;padding:.875rem 1.5rem;display:flex;align-items:center;flex-wrap:wrap;gap:.5rem 0}.fstat{font-size:.78rem;color:#ffffff73;padding:0 1.125rem}.fstat:first-child{padding-left:0}.fstat strong{color:#ffffffbf;font-weight:600}.fstat-sep{width:1px;height:12px;background:#ffffff1a;flex-shrink:0}@media (max-width: 640px){.fstat-sep{display:none}.fstat{padding:.2rem 0;width:50%}}.footer-inner{max-width:var(--max-width);margin:0 auto;padding:3rem 1.5rem 1.75rem}.footer-cols{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:2.5rem;margin-bottom:2.5rem}@media (max-width: 860px){.footer-cols{grid-template-columns:1fr 1fr;gap:2rem}.footer-brand-col{grid-column:1 / -1}}@media (max-width: 480px){.footer-cols{grid-template-columns:1fr}}.footer-brand-name{font-family:var(--font-display);font-weight:var(--weight-bold);font-size:1.125rem;letter-spacing:-.02em;margin-bottom:.625rem;color:#f7f5f0}.footer-desc{font-size:.8125rem;color:#ffffff73;line-height:1.7;margin-bottom:.625rem}.footer-qz-link{font-size:.78rem;color:#ffffff59;line-height:1.6;margin-bottom:1rem}.footer-qz-link a{color:#ffffff8c;text-decoration:none;font-weight:500}.footer-qz-link a:hover{color:#fff}.footer-col h4{font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:#ffffff4d;margin-bottom:1rem}.footer-col ul{list-style:none;display:flex;flex-direction:column;gap:.5rem}.footer-col a{font-size:.8125rem;color:#ffffff73;transition:color .15s;text-decoration:none}.footer-col a:hover{color:#ffffffd9;text-decoration:none}.footer-bottom{border-top:1px solid rgba(255,255,255,.07);padding-top:1.25rem;display:flex;align-items:center;justify-content:space-between;font-size:.75rem;color:#ffffff40;flex-wrap:wrap;gap:.5rem}.footer-bottom a{color:#ffffff40;text-decoration:none}.footer-bottom a:hover{color:#ffffff80}.footer-amazon-notice{width:100%;font-size:.7rem;color:#fff3;margin:0 0 .25rem}.footer-legal-links ul{display:flex;gap:1.25rem;flex-wrap:wrap;list-style:none;padding:0;margin:0}#back-to-top{position:fixed;bottom:1.5rem;right:1.5rem;width:40px;height:40px;border-radius:50%;background:var(--color-primary);color:var(--color-bg);border:none;font-size:1.375rem;line-height:1;cursor:pointer;opacity:0;visibility:hidden;transition:opacity .2s,visibility .2s,transform .2s;z-index:900;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px #00000040}#back-to-top.visible{opacity:1;visibility:visible}#back-to-top:hover{transform:translateY(-2px)}@media print{#back-to-top,nav,footer[aria-label="Site footer"],.cookie-banner,.skip-link,.theme-toggle,.nav-hamburger{display:none!important}body{background:#fff!important;color:#000!important;font-size:11pt}a{color:inherit;text-decoration:none}a[href^=http]:after{content:" (" attr(href) ")";font-size:.8em;color:#555}h1,h2,h3{page-break-after:avoid}pre,blockquote,table{page-break-inside:avoid}main{max-width:100%!important;padding:0!important}}.cookie-banner{position:fixed;bottom:1rem;left:1rem;width:min(480px,calc(100vw - 2rem));background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-elevated);z-index:999;padding:1rem 1.25rem;animation:slideUp .3s cubic-bezier(.16,1,.3,1)}@keyframes slideUp{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}.cookie-inner{display:flex;align-items:center;gap:1.25rem;flex-wrap:wrap}.cookie-text{font-size:.8rem;color:var(--color-muted);line-height:1.5;flex:1}.cookie-text a{color:var(--color-primary)}.cookie-actions{display:flex;gap:.5rem;flex-shrink:0}.btn-cookie-accept{background:var(--color-primary);color:var(--color-bg);border:none;padding:.5rem 1.125rem;border-radius:var(--radius-sm);font-size:.8rem;font-weight:600;cursor:pointer;transition:background .15s;font-family:var(--font-sans)}.btn-cookie-accept:hover{background:var(--color-primary-hover)}.btn-cookie-decline{background:none;border:1px solid var(--color-border);color:var(--color-muted);padding:.5rem .875rem;border-radius:var(--radius-sm);font-size:.8rem;cursor:pointer;transition:all .15s;font-family:var(--font-sans)}.btn-cookie-decline:hover{border-color:var(--color-border-2);color:var(--color-text)}.btn{display:inline-flex;align-items:center;gap:.375rem;padding:.625rem 1.25rem;border-radius:var(--radius-sm);font-family:var(--font-sans);font-weight:600;font-size:.875rem;letter-spacing:.02em;cursor:pointer;transition:all .18s ease;text-decoration:none;white-space:nowrap;border:none;line-height:1}.btn:hover{text-decoration:none}.btn-primary{background:var(--color-primary);color:var(--color-bg);box-shadow:none}.btn-primary:hover{background:var(--color-primary-hover);box-shadow:none}.btn-primary:active{background:var(--color-primary-active);transform:none}.btn-secondary{background:transparent;border:1px solid var(--color-border);color:var(--color-text-2);box-shadow:none}.btn-secondary:hover{border-color:var(--color-primary-border);background:var(--color-primary-subtle);color:var(--color-primary)}.btn-ghost{background:none;color:var(--color-muted);font-size:.8125rem;font-weight:500;padding:.375rem .75rem}.btn-ghost:hover{color:var(--color-text);background:var(--color-bg-alt);text-decoration:none}.btn-lg{padding:.8rem 1.75rem;font-size:.9375rem;border-radius:var(--radius)}.card{background:var(--color-surface);border:1px solid var(--color-border);box-shadow:var(--shadow-card);transition:border-color .15s ease,box-shadow .15s ease}.card:hover{border-color:var(--color-border-2);box-shadow:var(--shadow-card-hover)}.card-p{padding:1.5rem}.badge{display:inline-flex;align-items:center;padding:.25rem .65rem;border-radius:var(--radius-sm);font-size:.7rem;font-weight:600;letter-spacing:.025em;white-space:nowrap}.badge-coursera{background:#dbeafe;color:#1d4ed8}.badge-edx{background:#fee2e2;color:#b91c1c}.badge-udemy{background:#f3e8ff;color:#7e22ce}.badge-brilliant{background:#ffedd5;color:#c2410c}.badge-own{background:#d1fae5;color:#065f46}html.dark .badge-coursera{background:#1d4ed826;color:#93c5fd}html.dark .badge-edx{background:#b91c1c26;color:#fca5a5}html.dark .badge-udemy{background:#7e22ce26;color:#d8b4fe}html.dark .badge-brilliant{background:#c2410c26;color:#fdba74}html.dark .badge-own{background:#065f4626;color:#6ee7b7}.badge-beginner{background:#eef5f0;color:#0a7a3d}.badge-intermediate{background:#fbeede;color:#a15b00}.badge-advanced{background:#f7eae6;color:#b23b1e}html.dark .badge-beginner{background:#0a7a3d29;color:#4ec27d}html.dark .badge-intermediate{background:#a15b0033;color:#e0a458}html.dark .badge-advanced{background:#b23b1e33;color:#e08a6f}.badge-free{background:#eef5f0;color:#0a7a3d}.badge-paid{background:#f0f0f0;color:#1a1a1a}html.dark .badge-free{background:#0a7a3d29;color:#4ec27d}html.dark .badge-paid{background:#ffffff1a;color:#f2f2f2}.grid-3{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1.25rem;list-style:none;padding:0;margin:0}.grid-3>li{display:contents}.grid-3.ruled-grid{gap:0;border-top:1px solid var(--color-border);border-left:1px solid var(--color-border)}.grid-2{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,360px),1fr));gap:1.25rem;list-style:none;padding:0;margin:0}.grid-2>li{display:contents}.section-title{font-size:var(--text-xl);font-weight:var(--weight-bold);letter-spacing:var(--tracking-tight);color:var(--color-text);margin-bottom:1.25rem}.muted{color:var(--color-muted)}.flex{display:flex}.flex-wrap{flex-wrap:wrap}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.items-center{align-items:center}.justify-between{justify-content:space-between}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.mb-10{margin-bottom:2.5rem}.breadcrumb{display:inline-flex;align-items:center;gap:0;font-size:var(--text-xs);font-weight:500;color:var(--color-muted);width:fit-content}.breadcrumb ol{display:flex;align-items:center;gap:.3rem;list-style:none;padding:0;margin:0}.breadcrumb li{display:flex;align-items:center;gap:.3rem}.breadcrumb li+li:before{content:"/";color:var(--color-muted-2);font-size:.65rem;opacity:.5;margin-right:.1rem}.breadcrumb a{color:var(--color-muted);transition:color .15s;text-decoration:none}.breadcrumb a:hover{color:var(--color-primary);text-decoration:none}.breadcrumb li:last-child{color:var(--color-muted-2);pointer-events:none}.breadcrumb li:last-child a{color:var(--color-muted-2)}.breadcrumb-sep{color:var(--color-border-2);font-size:.6rem;opacity:.7}pre.code-block,.global-code-wrapper pre{background:#0d1117!important;border:none!important;border-radius:0!important;padding:1.125rem 1.375rem!important;overflow-x:auto;margin-bottom:0!important;font-size:.84rem!important;line-height:1.75!important;font-family:IBM Plex Mono,Cascadia Code,Consolas,monospace!important;color:#e6edf3!important}pre.code-block code,.global-code-wrapper pre code{background:none!important;border:none!important;padding:0!important;font-size:inherit!important;font-family:inherit!important;color:inherit!important}.global-code-wrapper{margin-bottom:1.75rem;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-card)}.global-code-header{display:flex;align-items:center;gap:.5rem;padding:.5rem .875rem;background:#161b22;border-bottom:1px solid #30363d}.global-code-dots{display:none}.gcd{width:11px;height:11px;border-radius:50%}.gcd.red{background:#ff5f57}.gcd.yellow{background:#febc2e}.gcd.green{background:#28c840}.global-copy-btn{display:flex;align-items:center;gap:.3rem;padding:.2rem .5rem;background:#ffffff0f;border:1px solid #30363d;border-radius:0;color:#7d8590;cursor:pointer;font-size:.68rem;font-family:IBM Plex Mono,monospace;white-space:nowrap;transition:all .15s}.global-copy-btn:hover{background:#ffffff1f;color:#e6edf3;border-color:#6e7681}.global-copy-btn.copied{color:#3fb950;border-color:#238636;background:#23863626}.global-lang-label{font-size:.68rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:#e6b84a;font-family:IBM Plex Mono,monospace;flex:1}.global-output-label{font-size:.68rem;font-weight:600;letter-spacing:.06em;color:#7d8590;font-family:IBM Plex Mono,monospace;flex:1}.global-output-wrapper .global-code-header{background:#0d1117;border-bottom-color:#21262d}.global-output-wrapper pre{background:#090d12!important}pre.code-notation{background:var(--color-bg-alt)!important;border:1px solid var(--color-border)!important;border-left:3px solid var(--color-primary)!important;border-radius:var(--radius)!important;padding:.875rem 1.125rem!important;margin-bottom:1.5rem!important;color:var(--color-text-2)!important;font-size:.84rem!important;line-height:1!important;letter-spacing:0!important;font-family:DejaVu Sans Mono,Menlo,Consolas,Courier New,monospace!important;box-shadow:none!important;overflow-x:auto}.prose ol{counter-reset:ol-counter;list-style:none;padding-left:0;margin-left:1rem;margin-bottom:1.25rem}.prose ol>li{counter-increment:ol-counter;position:relative;padding-left:2.5rem;margin-bottom:.4rem}.prose ol>li:before{content:counter(ol-counter) ".";position:absolute;left:0;width:2rem;text-align:right;color:var(--color-accent);font-size:.9375rem;font-variant-numeric:tabular-nums}
