@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/inter-latin-400-normal.C38fXH4l.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/inter-latin-500-normal.Cerq10X2.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/inter-latin-600-normal.LgqL8muc.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/inter-latin-ext-400-normal.C1nco2VV.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/inter-latin-ext-500-normal.CV4jyFjo.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/inter-latin-ext-600-normal.D2bJ5OIk.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,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-latin-500-normal.DSY6xOcd.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,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:600;src:url(/_astro/ibm-plex-mono-latin-600-normal.BgSNZQsw.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,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-latin-ext-400-normal.BmRBH3aV.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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-ext-500-normal.CAhNIIs5.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:600;src:url(/_astro/ibm-plex-mono-latin-ext-600-normal.D38SheWl.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Inter Tight;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-tight-latin-ext-wght-normal.B4u9PlvR.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Inter Tight;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-tight-latin-wght-normal.DX-nOvPD.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Poppins;font-style:normal;font-display:block;font-weight:700;src:url(/_astro/poppins-700-wordmark.CSIRvIK7.woff2)format("woff2")}@font-face{font-family:Poppins Fallback;font-weight:700;src:local(Arial Bold),local(Arial-BoldMT),local(Liberation Sans Bold),local(Helvetica Bold);size-adjust:110.5%;ascent-override:95%;descent-override:31.7%;line-gap-override:9%}@font-face{font-family:Inter Fallback;font-weight:100 450;src:local(Arial),local(ArialMT),local(Liberation Sans),local(Helvetica);size-adjust:107.2%;ascent-override:90.4%;descent-override:22.5%;line-gap-override:0%;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD,U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,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:Inter Fallback;font-weight:451 599;src:local(Arial),local(ArialMT),local(Liberation Sans),local(Helvetica);size-adjust:108.6%;ascent-override:89.2%;descent-override:22.2%;line-gap-override:0%;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD,U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,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:Inter Fallback;font-weight:600 900;src:local(Arial Bold),local(Arial-BoldMT),local(Liberation Sans Bold),local(Helvetica Bold);size-adjust:101.3%;ascent-override:95.6%;descent-override:23.8%;line-gap-override:0%;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD,U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,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:Inter Tight Fallback;font-weight:100 599;src:local(Arial),local(ArialMT),local(Liberation Sans),local(Helvetica);size-adjust:98.6%;ascent-override:98.2%;descent-override:24.4%;line-gap-override:0%;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD,U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,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:Inter Tight Fallback;font-weight:600 900;src:local(Arial Bold),local(Arial-BoldMT),local(Liberation Sans Bold),local(Helvetica Bold);size-adjust:95.8%;ascent-override:101.1%;descent-override:25.2%;line-gap-override:0%;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD,U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,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 Fallback;font-weight:100 900;src:local(Courier New),local(CourierNewPSMT),local(Liberation Mono);size-adjust:100%;ascent-override:102.5%;descent-override:27.5%;line-gap-override:0%;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD,U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,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}:root,[data-theme]{--hero-pad:168px;--on-image:#fff;--image-overlay:#000000b3;--image-base:#0b0b14;--font-display:"Inter Tight", "Inter Tight Fallback", "Inter", system-ui, sans-serif;--font-wordmark:"Poppins", "Poppins Fallback", "Inter Tight", system-ui, sans-serif;--wordmark-size:22.4px;--wordmark-size-header:26.88px;--font-body:"Inter", "Inter Fallback", system-ui, sans-serif;--font-mono:"IBM Plex Mono", "IBM Plex Mono Fallback", ui-monospace, Consolas, monospace;--radius-s:6px;--radius-m:10px;--radius-l:16px;--measure:35em;--header-h:88px;--anchor-offset:112px;--list-gap-top:24px;--font-sans:var(--font-body);--color-bg:var(--bg);--color-surface:var(--surface);--color-surface-2:var(--surface-2);--color-text:var(--text);--color-text-muted:var(--muted);--color-border:var(--border);--color-accent:var(--accent);--color-accent-2:var(--accent-2);--color-accent-contrast:var(--btn-text);--color-link:var(--accent);--color-focus:var(--focus);--color-code-bg:var(--inset);--color-success:var(--pos);--color-warning:var(--warning);--color-danger:var(--neg)}:root,[data-theme=light]{color-scheme:light;--bg:#fff;--surface:#fff;--surface-2:#f2f5fa;--inset:#f6f7f1;--text:#3e484d;--heading:#47008d;--strong:#1f242e;--muted:#5f6670;--accent:#2563c9;--accent-2:#6b2bd9;--accent-soft:#eaf1fc;--btn-bg:#4a626d;--btn-text:#fff;--border:#e5e7de;--border-strong:#868f98;--focus:#2563c9;--band:linear-gradient(125deg, #06021d 0%, #3e484d 100%);--band-text:#fff;--brand-gradient:linear-gradient(110deg, #36c5fb 0%, #47008d 100%);--glow:none;--head-glow:none;--hero-tint:#f5f8fc;--s1:#2563c9;--s2:#d9541e;--pos:#1b7f4b;--neg:#b3261e;--warning:#9a5b00;--footer-bg:#06021d;--footer-text:#e6e8f0;--footer-heading:#fff;--footer-muted:#a3a8bc;--footer-border:#2a2550;--footer-neg:#ff8a80;--footer-pos:#4cc38a}[data-theme=dark]{color-scheme:dark;--bg:#06021d;--surface:#110c2e;--surface-2:#17123a;--inset:#030112;--text:#e6e8f0;--heading:#36c5fb;--strong:#c9b6ff;--muted:#a3a8bc;--accent:#5aa2ff;--accent-2:#a98bff;--accent-soft:#16204a;--btn-bg:#5bc0de;--btn-text:#06021d;--border:#2a2550;--border-strong:#6a64a3;--focus:#5aa2ff;--band:linear-gradient(125deg, #110c2e 0%, #2a3036 100%);--band-text:#fff;--brand-gradient:linear-gradient(110deg, #36c5fb 0%, #7b3fe4 100%);--brand-gradient-band:linear-gradient(110deg, #36c5fb 0%, #8b5aed 100%);--glow:none;--head-glow:none;--hero-tint:#0d0828;--s1:#4c8fe8;--s2:#d2662c;--pos:#4cc38a;--neg:#ff8a80;--warning:#f2b33d;--footer-bg:var(--inset);--footer-text:var(--text);--footer-heading:var(--heading);--footer-muted:var(--muted);--footer-border:var(--border)}[data-theme=cyberpunk]{color-scheme:dark;--bg:#110d2b;--surface:#171236;--surface-2:#1c1340;--inset:#0c0920;--text:#fff4ff;--heading:#f787f8;--h6c:var(--heading);--strong:#7cf5d2;--muted:#d9c6f5;--accent:#3bb8f8;--accent-2:#f787f8;--accent-soft:#1e1a48;--btn-bg:#3bb8f8;--btn-text:#110d2b;--border:#3a2466;--border-strong:#a86be0;--focus:#3bb8f8;--band:linear-gradient(125deg, #1c1340 0%, #2e1650 100%);--band-text:#fff4ff;--brand-gradient:linear-gradient(110deg, #3bb8f8 0%, #f787f8 100%);--glow:0 0 16px #3bb8f873;--head-glow:0 0 22px #f787f859;--hero-tint:#161038;--s1:#2e9be0;--s2:#d9608e;--pos:#5ee3a1;--neg:#ff8fa3;--warning:#ffc266;--footer-bg:var(--inset);--footer-text:var(--text);--footer-heading:var(--heading);--footer-muted:var(--muted);--footer-border:var(--border)}*,:before,:after{box-sizing:border-box}html{background:var(--bg);-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--text);font:400 18px/1.7 var(--font-body);-webkit-font-smoothing:antialiased;margin:0}:target,[id]{scroll-margin-top:var(--anchor-offset)}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);color:var(--heading);text-shadow:var(--head-glow);margin:0}h1{letter-spacing:-.025em;font-size:64px;font-weight:700;line-height:1.05}h2{letter-spacing:-.02em;font-size:44px;font-weight:700;line-height:1.1}h3{letter-spacing:-.015em;font-size:32px;font-weight:650;line-height:1.2}h4{letter-spacing:-.01em;font-size:24px;font-weight:650;line-height:1.3}h5{font-size:20px;font-weight:650;line-height:1.35}.bn{text-transform:none}h6,.h6{font:600 14px/1.4 var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--h6c,var(--accent))}p{margin:0}a{color:var(--accent);text-underline-offset:3px;text-decoration:underline 1px}.vh{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}a.ext:after{content:"⁠";content:"⁠" / "";background:currentColor;padding-inline-start:1em;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M4 2h6v6M10 2 3 9' fill='none' stroke='currentColor' stroke-width='1.5'/%3E%3C/svg%3E") 100%/.75em .75em no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M4 2h6v6M10 2 3 9' fill='none' stroke='currentColor' stroke-width='1.5'/%3E%3C/svg%3E") 100%/.75em .75em no-repeat}@media (forced-colors:active){a.ext:after{forced-color-adjust:none;background:linktext}}:focus-visible{outline:3px solid var(--focus);outline-offset:3px;border-radius:2px}::selection{background:var(--accent-soft);color:var(--heading)}.lead{color:var(--text);max-width:760px;font-size:22px;line-height:1.6}.muted{color:var(--muted)}.small{font-size:15px;line-height:1.6}.mono{font-family:var(--font-mono)}.eyebrow{font:500 13px/1.2 var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--accent)}.gradient-text{background:var(--brand-gradient);color:#0000;text-shadow:none;-webkit-background-clip:text;background-clip:text}.prose{max-width:var(--measure);flex-direction:column;display:flex}.prose>*+*{margin-top:24px}.prose>h2{margin-top:123px}.prose>h3{margin-top:99px}.prose>h4{margin-top:83px}.prose>h5,.prose>h6{margin-top:75px}.prose>h1+*{margin-top:32px}.prose>h2+*,.prose>h3+*,.prose>h4+*,.prose>h5+*,.prose>h6+*{margin-top:20px}.prose>:first-child{margin-top:0}.prose>:is(p,h2,h3,h4,h5,h6,figure,picture,div)+:is(ul,ol){margin-top:var(--list-gap-top)}.prose ol{padding-left:2.25em}.prose ul{flex-direction:column;gap:8px;margin-block-end:0;padding-left:22px;display:flex}.reading{max-width:720px;margin:0 auto;font-size:19px;line-height:1.75}.reading>h2{margin-top:12px}.reading p{color:var(--text)}.btn{border-radius:var(--radius-s);min-height:48px;font:600 16px/1.25 var(--font-body);cursor:pointer;border:1px solid #0000;align-items:center;gap:10px;padding:12px 22px;text-decoration:none;display:inline-flex}.btn-primary{background:var(--btn-bg);color:var(--btn-text);box-shadow:var(--glow)}.btn-secondary{color:var(--heading);border-color:var(--border-strong);background:0 0}.btn-ghost{color:var(--accent);background:0 0;padding:0 4px}.btn-s{min-height:40px;padding:9px 16px;font-size:15px}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}.ai-fig{max-width:100%;display:block;position:relative}.ai-fig>img{display:block}.dg{margin:2.2em 0}.dg .dg-box{max-width:100%}.dg .dg-scroll{overflow-x:auto}.dg svg{width:100%;height:auto;font-family:var(--font-body);margin-inline:auto;display:block}.dg text{fill:currentColor;color:var(--heading);letter-spacing:.02em;text-shadow:none;font-size:16px;font-weight:600}.dg .dg-sm{letter-spacing:.03em;font-size:13px;font-weight:500}.dg .dg-lg{font-size:20px;font-weight:650}.dg .dg-xl{font-size:26px;font-weight:700;font-family:var(--font-display)}.dg .dg-mute{color:var(--muted);font-weight:500}.dg .dg-acc{color:var(--accent)}.dg .dg-on-hub{color:var(--btn-text)}.dg .dg-num{font-family:var(--font-mono);color:var(--accent);font-weight:600}.dg .dg-block{fill:var(--surface-2);stroke:var(--border-strong);stroke-width:1.5px}.dg .dg-open{fill:var(--surface);stroke:var(--border-strong);stroke-width:1.5px}.dg .dg-on{fill:var(--accent-soft);stroke:var(--accent);stroke-width:2px}.dg .dg-hub{fill:var(--btn-bg);stroke:none}.dg .dg-line{fill:none;stroke:var(--border-strong);stroke-width:2px;stroke-linecap:round}.dg .dg-thin{fill:none;stroke:var(--border);stroke-width:1.5px}.dg .dg-dash{stroke-dasharray:6 6}.dg .dg-hot{fill:none;stroke:var(--s2);stroke-width:3px;stroke-linecap:round}.dg .dg-hotfill{fill:var(--s2);stroke:none}.dg .dg-badge{fill:color-mix(in srgb, var(--s2) 78%, var(--text));stroke:none}.dg .dg-dot{fill:var(--heading);stroke:none}.dg .dg-head{fill:var(--border-strong);stroke:none}.dg .dg-sector{fill:var(--surface-2);stroke:var(--border-strong);stroke-width:1.5px}.dg .dg-sector.alt{fill:var(--accent-soft)}.dg .dg-ring{fill:none;stroke:var(--border);stroke-width:1.5px}.dg figcaption{color:var(--muted);text-align:center;margin-top:.6em;font-size:14px;line-height:1.5}.en-badge{vertical-align:.12em;font:600 .62em/1.1 var(--font-mono);letter-spacing:.06em;text-transform:none;text-shadow:none;color:inherit;white-space:nowrap;border:1px solid;border-radius:4px;margin-inline-start:.4em;padding:.12em .38em;text-decoration:none;display:inline-block}a[hreflang=en]{position:relative}:is(.prose,.mk-wide,.mk-md,.article-body) ul.tech-logos{grid-template-columns:repeat(5,minmax(0,1fr));gap:16px;max-width:none;margin:32px 0;padding:0;list-style:none;display:grid}.tech-logos li{text-align:center;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-m);min-height:112px;font:500 14px/1.3 var(--font-body);color:var(--text);flex-direction:column;justify-content:center;align-items:center;gap:12px;margin:0;padding:16px 12px;display:flex}.tech-logos svg{width:36px;height:36px;color:var(--heading);flex:none}.tech-logos li::marker{content:none}@media (width<=640px){:is(.prose,.mk-wide,.mk-md,.article-body) ul.tech-logos{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}}.wrap{max-width:1240px;margin:0 auto;padding:0 64px}.narrow{max-width:880px;margin:0 auto;padding:0 64px}.stack{flex-direction:column;gap:16px;display:flex}.stack-l{flex-direction:column;gap:32px;display:flex}.row{flex-wrap:wrap;align-items:center;gap:16px;display:flex}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr));gap:32px;display:grid}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;display:grid}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr));gap:24px;display:grid}.split{grid-template-columns:minmax(0,5fr) minmax(0,7fr);align-items:start;gap:64px;display:grid}.spec{font:500 12px/1.3 var(--font-mono);color:var(--muted);letter-spacing:.04em}.num-r{text-align:right;font-family:var(--font-mono);font-variant-numeric:tabular-nums}@media (width<=960px){.wrap,.narrow{padding:0 24px}.grid-3,.grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}.split{grid-template-columns:minmax(0,1fr);gap:32px}}@media (width<=640px){.grid-2,.grid-3,.grid-4{grid-template-columns:minmax(0,1fr)}}@media (width<=760px){h1{font-size:44px}h2{font-size:34px}h3{font-size:26px}.lead{font-size:19px}.prose>h2{margin-top:64px}.prose>h3{margin-top:48px}}.lang-btn{anchor-name:--lang-btn;border:1px solid var(--border-strong);height:40px;color:var(--text);font:500 13px/1 var(--font-mono);cursor:pointer;background:0 0;border-radius:999px;align-items:center;gap:6px;padding:0 12px;display:inline-flex}.lang-pop{background:var(--surface);min-width:160px;color:var(--text);border:1px solid var(--border-strong);border-radius:var(--radius-m);box-shadow:var(--glow);margin:0;padding:6px;position:fixed;inset:80px 48px auto auto}@media (width<=1199px){.lang-pop{top:120px;left:20px;right:auto}}@supports (position-anchor:--lang-btn){.lang-pop{position-anchor:--lang-btn;top:calc(anchor(bottom) + 8px);right:anchor(right);position-try-fallbacks:flip-block;left:auto}@media (width<=1199px){.lang-pop{right:auto;left:anchor(left)}}}.lang-pop ul{margin:0;padding:0;list-style:none}.lang-pop a{border-radius:var(--radius-s);color:var(--text);font:500 15px/1.2 var(--font-body);padding:10px 12px;text-decoration:none;display:block}.lang-pop a:hover{background:var(--accent-soft)}.lang-pop a[aria-current=page]{color:var(--accent);font-weight:600}.theme-switcher{border:1px solid var(--border-strong);border-radius:999px;gap:2px;padding:3px;display:inline-flex}.seg-opt{margin:0;display:block;position:relative}.seg-opt input{opacity:0;cursor:pointer;width:100%;height:100%;margin:0;position:absolute;inset:0}.seg-ico{width:32px;height:32px;color:var(--muted);border-radius:999px;justify-content:center;align-items:center;display:inline-flex}.seg-opt input:checked+.seg-ico{background:var(--btn-bg);color:var(--btn-text);box-shadow:var(--glow)}.seg-opt input:focus-visible+.seg-ico{outline:3px solid var(--focus);outline-offset:2px}.ai-note{z-index:1;border:1px solid var(--border);border-radius:var(--radius-s);background:var(--surface);color:var(--text);font:500 11px/1.5 var(--font-mono);letter-spacing:.04em;pointer-events:none;padding:1px 6px;position:absolute;top:8px;left:8px}.kdk-h{z-index:50;background:var(--bg);border-bottom:1px solid var(--border);position:sticky;top:0;& a{text-decoration:none}& .nav-list a{color:var(--text)}& .bar{width:100%;height:var(--header-h);align-items:center;gap:clamp(14px,1.8vw,28px);padding:0 clamp(24px,3.3vw,48px);display:flex}& .logo{font:700 var(--wordmark-size-header)/1 var(--font-wordmark);letter-spacing:-.03em;background:var(--brand-gradient);color:#0000;white-space:nowrap;-webkit-background-clip:text;background-clip:text;padding:8px 0}& .menu-toggle{border:1px solid var(--border-strong);height:44px;color:var(--text);font:500 14px/1 var(--font-body);cursor:pointer;background:0 0;border-radius:999px;align-items:center;gap:10px;padding:0 16px;display:none}& .burger{flex-direction:column;gap:4px;display:inline-flex}& .burger i{background:currentColor;width:18px;height:2px;display:block}& .panel-top,& .nav-list>.only-m{display:none}& ul{margin:0;padding:0;list-style:none}& .nav-list>li{position:relative}& summary{cursor:pointer;color:var(--muted);justify-content:center;align-items:center;list-style:none;display:flex}& summary::-webkit-details-marker{display:none}& summary:after{content:"";border:2px solid;border-width:0 2px 2px 0;width:6px;height:6px;transform:translateY(-2px)rotate(45deg)}& summary:hover{color:var(--accent)}& .tools{align-items:center;gap:16px;display:flex}}@media (width<=1199px){.kdk-h{--header-h:64px;& .bar{justify-content:space-between;gap:16px;padding:0 clamp(20px,5vw,32px)}& .menu-toggle{display:inline-flex}& .panel:not(:popover-open){display:none}}@supports not selector(:popover-open){.kdk-h{& .menu-toggle{display:none}& .bar{flex-wrap:wrap;height:auto}& .panel{flex-basis:100%}}}}@media (width>=1200px){.kdk-h{& .panel{display:contents}& .logo{font-size:clamp(var(--wordmark-size),3.1vw - 24px,var(--wordmark-size-header))}& .panel>nav{flex:1;align-self:stretch;display:flex}& .nav-list{align-items:stretch;gap:clamp(0px,.5vw,10px);display:flex}& .nav-list>li{align-items:center;display:flex}& .nav-list>li>a{font:500 15px/1.2 var(--font-body);white-space:nowrap;border-bottom:2px solid #0000;padding:6px}& .nav-list>li>a[aria-current=page]{color:var(--accent);border-bottom-color:var(--accent)}& summary{width:26px;height:36px;margin-left:-4px}& .tools{gap:12px}& .tools .btn{white-space:nowrap}}}@media (width>=1200px) and (width<=1499px){.kdk-h{& .bar{gap:8px;padding:0 16px}& .tools,& .logo{flex:none}& .nav-list{flex:1;justify-content:space-evenly;gap:0}& .nav-list>li>a{padding:6px 2px;font-size:14px}& .seg-ico{width:30px}& summary{width:24px}& .tools{gap:6px}& .tools .btn{padding:0 8px;font-size:14px}}html:not([lang=en]) .kdk-h{& .panel>nav,& .nav-list{min-width:0}& .bar{gap:6px;padding:0 12px}& .nav-list{gap:0}& .nav-list>li>a{white-space:normal;text-wrap:balance;padding:6px 1px;font-size:13px;line-height:1.15}& .nav-list>li>a .en-badge{margin-inline-start:.25em;padding:.08em .28em;font-size:.62em}& summary{width:24px;margin-left:0}& .tools,& .logo{flex:none}}}@media (pointer:coarse) and (width>=1200px){.kdk-h{& summary{height:44px}& .nav-list>li>a{align-items:center;min-height:44px;display:flex}& .seg-ico{height:40px}}}.tbd-marker[data-astro-cid-krbmevqe]{border:1px dashed var(--warning);border-radius:var(--radius-s);color:var(--warning);background:var(--bg);font-family:var(--font-mono);letter-spacing:.04em;vertical-align:baseline;padding:0 .4em;font-size:.8em;font-weight:700;line-height:1.5;display:inline-block}.tbd-sr[data-astro-cid-krbmevqe]{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.nl-w{container-type:inline-size}.grecaptcha-badge{visibility:hidden}.nl{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-l);color:var(--text);grid-template-columns:5fr 6fr;align-items:start;gap:24px 40px;padding:32px;display:grid;position:relative;overflow:hidden}.nl:before{content:"";background:var(--brand-gradient);height:4px;position:absolute;inset:0 0 auto}.nl h2{font-size:26px;line-height:1.2}.nl p{margin:0;font-size:16px;line-height:1.6}.nl .nl-lead{margin-top:8px}.nl form,.nl .nl-done{flex-direction:column;gap:10px;min-width:0;display:flex}.nl label{font:600 13px/1.3 var(--font-mono);color:var(--heading)}.nl .nl-row{gap:16px;display:flex}.nl input{border-radius:var(--radius-m);border:1px solid var(--border-strong);background:var(--bg);min-width:0;height:56px;color:var(--text);font:16px var(--font-body);flex:auto;padding:0 16px}.nl input[aria-invalid]{border:2px solid var(--neg)}.nl .btn{border-radius:var(--radius-m);justify-content:center;height:56px}.nl .nl-hp{position:absolute;left:-9999px}.nl .nl-fine{color:var(--muted);font-size:13.5px}.nl .nl-msg{gap:10px;font-size:15px;display:flex}.nl svg{flex:none;margin-top:2px}.nl .nl-err{color:var(--neg)}.nl .nl-ok{color:var(--pos)}@container (width<=720px){.nl{grid-template-columns:1fr;padding:26px 22px}.nl .nl-row{flex-direction:column}}.kdk-f{background:var(--footer-bg);border-top:1px solid var(--footer-border);color:var(--footer-text);font:400 15px/1.6 var(--font-body)}.kdk-f .in{grid-template-columns:minmax(0,2fr) repeat(4,minmax(0,1fr));gap:40px;max-width:1312px;margin:0 auto;padding:72px 64px 40px;display:grid}.kdk-f .intro{flex-direction:column;gap:14px;display:flex}.kdk-f .wordmark{font:700 var(--wordmark-size)/1 var(--font-wordmark);color:var(--footer-heading);letter-spacing:-.03em;text-shadow:var(--head-glow)}.kdk-f .tagline{color:var(--footer-muted);max-width:400px;margin:0}.kdk-f .intro{gap:14px}.kdk-f h2{font:600 12px/1.2 var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--footer-muted);text-shadow:none;margin:0 0 14px}.kdk-f ul{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.kdk-f a{color:var(--footer-text);text-decoration:none}.kdk-f a:hover{text-underline-offset:3px;text-decoration:underline}.kdk-f .muted-item{color:var(--footer-muted)}.kdk-f .soon{font:500 11px/1 var(--font-mono);color:var(--footer-muted)}.kdk-f .base{border-top:1px solid var(--footer-border);max-width:1312px;color:var(--footer-muted);justify-content:space-between;gap:16px;margin:0 auto;padding:20px 64px 32px;font-size:13px;display:flex}.kdk-f .base a{color:var(--footer-muted);text-underline-offset:3px;text-decoration:underline}@media (width<=1100px){.kdk-f .in{grid-template-columns:repeat(2,minmax(0,1fr))}.kdk-f .intro{grid-column:1/-1}}@media (width<=640px){.kdk-f .in{grid-template-columns:minmax(0,1fr);padding:48px 24px 24px}.kdk-f .base{flex-direction:column;padding:20px 24px 32px}}.skip-link{z-index:100;background:var(--btn-bg);color:var(--btn-text);border-radius:var(--radius-s);font:600 16px/1 var(--font-body);padding:12px 18px;text-decoration:none;position:absolute;top:-100px;left:16px}.skip-link:focus{top:12px}.draft-banner{text-align:center;background:var(--accent-soft);color:var(--text);border-bottom:1px solid var(--border-strong);font:500 14px/1.4 var(--font-body);padding:10px 20px}main:focus{outline:none}.photo{isolation:isolate;background:var(--image-base);color:var(--on-image);position:relative;overflow:hidden}.hero-bg{z-index:-1;position:absolute;inset:0}.photo .hero-bg img{object-fit:cover;width:100%;max-width:none;height:100%;display:block}.hero-bg:after{content:"";background:linear-gradient(var(--image-overlay),var(--image-overlay));position:absolute;inset:0}.photo>span.ai-note{inset:auto 12px 12px auto}.photo :is(h1,h2,h3,p,li,dd,dt,.lead,.eyebrow,.muted,.meta-row,.crumbs,.crumbs *,.tag.tag.tag):not(:is(.card,.mk-answer,.answer) *){color:var(--on-image)}.photo a:not(.btn):not(:is(.card,.mk-answer,.answer) *){color:var(--on-image);text-decoration:underline}.photo :is(.card,.mk-answer,.answer){color:var(--text)}.photo :is(.mk-answer,.answer){background:color-mix(in srgb,var(--accent-soft) 80%,transparent)}:root:not([data-theme=dark]):not([data-theme=cyberpunk]) .photo :is(.mk-answer,.answer) :is(.eyebrow,a){color:var(--heading)}
