@font-face{font-family:InterVariable;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/inter/InterVariable.woff2) format("woff2")}@font-face{font-family:InterVariable;font-style:italic;font-weight:100 900;font-display:swap;src:url(/fonts/inter/InterVariable-Italic.woff2) format("woff2")}@font-face{font-family:Inter;font-style:normal;font-weight:100;font-display:swap;src:url(/fonts/inter/Inter-Thin.woff2) format("woff2")}@font-face{font-family:Inter;font-style:italic;font-weight:100;font-display:swap;src:url(/fonts/inter/Inter-ThinItalic.woff2) format("woff2")}@font-face{font-family:Inter;font-style:normal;font-weight:200;font-display:swap;src:url(/fonts/inter/Inter-ExtraLight.woff2) format("woff2")}@font-face{font-family:Inter;font-style:italic;font-weight:200;font-display:swap;src:url(/fonts/inter/Inter-ExtraLightItalic.woff2) format("woff2")}@font-face{font-family:Inter;font-style:normal;font-weight:300;font-display:swap;src:url(/fonts/inter/Inter-Light.woff2) format("woff2")}@font-face{font-family:Inter;font-style:italic;font-weight:300;font-display:swap;src:url(/fonts/inter/Inter-LightItalic.woff2) format("woff2")}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/inter/Inter-Regular.woff2) format("woff2")}@font-face{font-family:Inter;font-style:italic;font-weight:400;font-display:swap;src:url(/fonts/inter/Inter-Italic.woff2) format("woff2")}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/inter/Inter-Medium.woff2) format("woff2")}@font-face{font-family:Inter;font-style:italic;font-weight:500;font-display:swap;src:url(/fonts/inter/Inter-MediumItalic.woff2) format("woff2")}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/inter/Inter-SemiBold.woff2) format("woff2")}@font-face{font-family:Inter;font-style:italic;font-weight:600;font-display:swap;src:url(/fonts/inter/Inter-SemiBoldItalic.woff2) format("woff2")}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/inter/Inter-Bold.woff2) format("woff2")}@font-face{font-family:Inter;font-style:italic;font-weight:700;font-display:swap;src:url(/fonts/inter/Inter-BoldItalic.woff2) format("woff2")}@font-face{font-family:Inter;font-style:normal;font-weight:800;font-display:swap;src:url(/fonts/inter/Inter-ExtraBold.woff2) format("woff2")}@font-face{font-family:Inter;font-style:italic;font-weight:800;font-display:swap;src:url(/fonts/inter/Inter-ExtraBoldItalic.woff2) format("woff2")}@font-face{font-family:Inter;font-style:normal;font-weight:900;font-display:swap;src:url(/fonts/inter/Inter-Black.woff2) format("woff2")}@font-face{font-family:Inter;font-style:italic;font-weight:900;font-display:swap;src:url(/fonts/inter/Inter-BlackItalic.woff2) format("woff2")}@font-feature-values InterVariable{@character-variant{cv01:1;cv02:2;cv03:3;cv04:4;cv05:5;cv06:6;cv07:7;cv08:8;cv09:9;cv10:10;cv11:11;cv12:12;cv13:13;alt-1:1;alt-3:9;open-4:2;open-6:3;open-9:4;lc-l-with-tail:5;simplified-u:6;alt-double-s:7;uc-i-with-serif:8;uc-g-with-spur:10;single-story-a:11;compact-lc-f:12;compact-lc-t:13}@styleset{ss01:1;ss02:2;ss03:3;ss04:4;ss05:5;ss06:6;ss07:7;ss08:8;open-digits:1;disambiguation:2;disambiguation-except-zero:4;round-quotes-and-commas:3;square-punctuation:7;square-quotes:8;circled-characters:5;squared-characters:6}}@font-feature-values Inter{@character-variant{cv01:1;cv02:2;cv03:3;cv04:4;cv05:5;cv06:6;cv07:7;cv08:8;cv09:9;cv10:10;cv11:11;cv12:12;cv13:13;alt-1:1;alt-3:9;open-4:2;open-6:3;open-9:4;lc-l-with-tail:5;simplified-u:6;alt-double-s:7;uc-i-with-serif:8;uc-g-with-spur:10;single-story-a:11;compact-lc-f:12;compact-lc-t:13}@styleset{ss01:1;ss02:2;ss03:3;ss04:4;ss05:5;ss06:6;ss07:7;ss08:8;open-digits:1;disambiguation:2;disambiguation-except-zero:4;round-quotes-and-commas:3;square-punctuation:7;square-quotes:8;circled-characters:5;squared-characters:6}}@font-feature-values InterDisplay{@character-variant{cv01:1;cv02:2;cv03:3;cv04:4;cv05:5;cv06:6;cv07:7;cv08:8;cv09:9;cv10:10;cv11:11;cv12:12;cv13:13;alt-1:1;alt-3:9;open-4:2;open-6:3;open-9:4;lc-l-with-tail:5;simplified-u:6;alt-double-s:7;uc-i-with-serif:8;uc-g-with-spur:10;single-story-a:11;compact-lc-f:12;compact-lc-t:13}@styleset{ss01:1;ss02:2;ss03:3;ss04:4;ss05:5;ss06:6;ss07:7;ss08:8;open-digits:1;disambiguation:2;disambiguation-except-zero:4;round-quotes-and-commas:3;square-punctuation:7;square-quotes:8;circled-characters:5;squared-characters:6}}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:local("IBM Plex Mono"),local("IBMPlexMono"),url(/fonts/ibm-plex-mono/IBMPlexMono-Regular-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/plus-jakarta-sans/plus-jakarta-sans-cyrillic-ext-400-normal.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/plus-jakarta-sans/plus-jakarta-sans-cyrillic-ext-500-normal.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/plus-jakarta-sans/plus-jakarta-sans-cyrillic-ext-600-normal.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/plus-jakarta-sans/plus-jakarta-sans-cyrillic-ext-700-normal.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:800;font-display:swap;src:url(/fonts/plus-jakarta-sans/plus-jakarta-sans-cyrillic-ext-800-normal.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/plus-jakarta-sans/plus-jakarta-sans-vietnamese-400-normal.woff2) format("woff2");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:Plus Jakarta Sans;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/plus-jakarta-sans/plus-jakarta-sans-vietnamese-500-normal.woff2) format("woff2");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:Plus Jakarta Sans;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/plus-jakarta-sans/plus-jakarta-sans-vietnamese-600-normal.woff2) format("woff2");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:Plus Jakarta Sans;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/plus-jakarta-sans/plus-jakarta-sans-vietnamese-700-normal.woff2) format("woff2");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:Plus Jakarta Sans;font-style:normal;font-weight:800;font-display:swap;src:url(/fonts/plus-jakarta-sans/plus-jakarta-sans-vietnamese-800-normal.woff2) format("woff2");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:Plus Jakarta Sans;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/plus-jakarta-sans/plus-jakarta-sans-latin-ext-400-normal.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,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:Plus Jakarta Sans;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/plus-jakarta-sans/plus-jakarta-sans-latin-ext-500-normal.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,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:Plus Jakarta Sans;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/plus-jakarta-sans/plus-jakarta-sans-latin-ext-600-normal.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,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:Plus Jakarta Sans;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/plus-jakarta-sans/plus-jakarta-sans-latin-ext-700-normal.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,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:Plus Jakarta Sans;font-style:normal;font-weight:800;font-display:swap;src:url(/fonts/plus-jakarta-sans/plus-jakarta-sans-latin-ext-800-normal.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,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:Plus Jakarta Sans;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/plus-jakarta-sans/plus-jakarta-sans-latin-400-normal.woff2) format("woff2");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+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/plus-jakarta-sans/plus-jakarta-sans-latin-500-normal.woff2) format("woff2");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+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/plus-jakarta-sans/plus-jakarta-sans-latin-600-normal.woff2) format("woff2");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+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/plus-jakarta-sans/plus-jakarta-sans-latin-700-normal.woff2) format("woff2");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+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:800;font-display:swap;src:url(/fonts/plus-jakarta-sans/plus-jakarta-sans-latin-800-normal.woff2) format("woff2");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+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--color-bg-page: oklch(96.6% .005 106.5);--color-bg-primary: #fff;--color-bg-button: #efefef;--color-bg-platform-icon: oklch(.97 .003 264);--color-primary: oklch(.41 .13 258);--color-primary-muted: oklch(.35 .13 258);--color-success: oklch(.59 .18 161);--color-text-primary: oklch(.13 .042 265);--color-text-secondary: oklch(.28 .042 260);--color-text-muted: oklch(.37 .042 257);--color-text-tertiary: oklch(.5 .02 257);--color-text-inverse: hsla(0, 0%, 100%);--color-border: #000;--color-border-strong: #000;--color-divider: rgba(0, 0, 0, .14);--color-surface: rgba(0, 0, 0, .02);--color-surface-raised: rgba(0, 0, 0, .04);--color-overlay: rgba(255, 255, 255, .06);--color-overlay-border: rgba(255, 255, 255, .15);--color-overlay-divider: rgba(255, 255, 255, .2);--color-overlay-separator: rgba(255, 255, 255, .4);--color-overlay-muted: rgba(255, 255, 255, .7);--color-blue: oklch(.41 .13 258);--color-blue-dim: oklch(96.7% .003 264.542);--color-blue-border: oklch(.41 .13 258 / .25);--color-green: oklch(.59 .18 161);--color-button-primary: var(--color-success);--color-button-primary-text: #fff;--color-button-secondary: oklch(.43 .17 258);--color-button-secondary-text: #fff;--spacing-xs: .25rem;--spacing-sm: .5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 9px;--radius-xl: 16px;--radius-full: 999px;--shadow-btn: 0 1px 2px rgba(0, 0, 0, .08), 0 1px 4px rgba(0, 0, 0, .05);--shadow-elevated: 0 8px 30px rgba(0, 0, 0, .12), 0 2px 6px rgba(0, 0, 0, .06);--shadow-image: 0 1px 4px rgba(0, 0, 0, .16);--header-height: 3.5rem;--max-width: 70rem;--transition-base: .2s cubic-bezier(.2, 0, 0, 1);--transition-menu: .4s cubic-bezier(.52, .16, .04, 1);--bg-pattern: url(/plus-pattern-white.webp);--bg-pattern-size: var(--spacing-md);--color-header-bg: var(--color-primary);--color-header-border: transparent;--color-header-text: var(--color-text-inverse);--color-footer-bg: var(--color-primary);--color-footer-text: var(--color-text-inverse);--header-backdrop: none;--color-card-bg: #fff;--color-card-border: #e1e2e3;--shadow-card: 0 1px 5px -4px #242424b3, 0 4px 8px #2424240d}@media(prefers-color-scheme:dark){:root{--color-bg-page: #0E1117;--color-bg-primary: transparent;--color-bg-button: rgba(255, 255, 255, .06);--color-bg-platform-icon: rgba(255, 255, 255, .08);--color-primary: oklch(80.9% .105 251.813);--color-primary-muted: oklch(80.9% .105 251.813 / .7);--color-success: rgb(74, 222, 128);--color-text-primary: #fff;--color-text-secondary: #b5b6c8;--color-text-muted: #8b8ca0;--color-text-tertiary: #6b6c80;--color-text-inverse: #fff;--color-border: rgba(255, 255, 255, .08);--color-border-strong: rgba(255, 255, 255, .15);--color-divider: rgba(255, 255, 255, .08);--color-surface: rgba(255, 255, 255, .03);--color-surface-raised: rgba(255, 255, 255, .05);--color-overlay: rgba(255, 255, 255, .06);--color-overlay-border: rgba(255, 255, 255, .15);--color-overlay-divider: rgba(255, 255, 255, .2);--color-overlay-separator: rgba(255, 255, 255, .4);--color-overlay-muted: rgba(255, 255, 255, .7);--color-blue: oklch(80.9% .105 251.813);--color-blue-dim: oklch(80.9% .105 251.813 / .15);--color-blue-border: oklch(80.9% .105 251.813 / .3);--color-green: rgb(74, 222, 128);--color-button-primary: var(--color-primary);--color-button-primary-text: #000;--color-button-secondary: rgba(255, 255, 255, .08);--radius-sm: .5rem;--radius-md: .75rem;--radius-lg: 1rem;--radius-full: 9999px;--radius-xl: 1.25rem;--shadow-btn: none;--shadow-elevated: 0 8px 30px rgba(0, 0, 0, .4);--shadow-image: 0 4px 20px rgba(0, 0, 0, .3);--bg-pattern: linear-gradient(#c5c5c511 1px, transparent 1px), linear-gradient(to right, #c5c5c511 1px, transparent 1px);--bg-pattern-size: 32px 32px;--color-header-bg: transparent;--color-header-border: var(--color-border-strong);--color-header-text: #fff;--color-footer-bg: transparent;--color-footer-text: #fff;--header-backdrop: blur(16px);--color-card-bg: rgba(255, 255, 255, .05);--color-card-border: rgba(255, 255, 255, .1);--shadow-card: none}}:root{--font-size-12: .75rem;--font-size-13: .8125rem;--font-size-14: .875rem;--font-size-15: .9375rem;--font-size-base: 1rem;--font-size-xl: 1.125rem;--font-size-2xl: 1.25rem;--line-height-base: 1.5rem;--line-height-relaxed: 1.6em;--font-heading: "Plus Jakarta Sans", Avenir, Montserrat, Corbel, "URW Gothic", source-sans-pro, sans-serif;--font-mono: "IBM Plex Mono", "SF Mono", ui-monospace, "Cascadia Code", "Source Code Pro", Menlo, Consolas, "DejaVu Sans Mono", monospace}*,*:before,*:after{box-sizing:border-box}*{margin:0}img,picture,video,canvas,svg{display:block;max-width:100%}input,button,textarea,select{font:inherit}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}p{text-wrap:pretty}h1,h2,h3,h4,h5,h6{text-wrap:balance}:root{font-family:Inter,Roboto,Helvetica Neue,Arial Nova,Nimbus Sans,Arial,sans-serif;font-feature-settings:"liga" 1,"calt" 1;font-variation-settings:"opsz" 24}@supports (font-variation-settings: normal){:root{font-family:InterVariable,Roboto,Helvetica Neue,Arial Nova,Nimbus Sans,Arial,sans-serif}}html,body{min-height:100vh;margin:0;padding:0;line-height:1.5}@media(prefers-color-scheme:dark){html,body{-webkit-font-smoothing:antialiased}}body{background:var(--color-bg-page);color:var(--color-text-primary)}@media(prefers-color-scheme:dark){body{background:linear-gradient(to bottom,var(--color-bg-page) 0%,#2A3147 85%,#374358 100%)}}body :target{scroll-margin-top:calc(var(--header-height) + 1rem)}h1,h2,h3,h4,h5,h6{text-wrap:balance;margin-bottom:.5em;line-height:1.3}p{font-variation-settings:"opsz" 22;line-height:var(--line-height-base);margin-bottom:1em}p:last-child{margin-bottom:0}ul,ol{margin-bottom:1em;padding-left:1.5em}hr{border:none;border-top:1px solid var(--color-divider);margin:var(--spacing-lg) 0}a{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px;color:var(--color-primary-muted)}@media(prefers-color-scheme:dark){a{color:var(--color-primary)}}code{font-family:var(--font-mono)}.hidden{display:none}.heading{display:flex;padding:var(--spacing-sm) 0;justify-content:center;height:var(--header-height);position:sticky;top:0;z-index:100;background:var(--color-header-bg);border-bottom:1px solid var(--color-header-border);backdrop-filter:var(--header-backdrop);-webkit-backdrop-filter:var(--header-backdrop)}.heading__inner{width:calc(var(--max-width) + 8rem);padding:0 var(--spacing-lg);display:flex;align-items:center;gap:var(--spacing-sm)}@media(max-width:82rem){.heading__inner{width:100%}}@media(max-width:48rem){.heading__inner{padding:0 var(--spacing-md)}}.heading__branding-link{text-decoration:none}.heading__branding{margin:.3rem 0;display:flex;align-items:center;gap:var(--spacing-xs)}.heading__logo{height:var(--spacing-lg);width:var(--spacing-lg);color:var(--color-header-text)}.heading__wordmark{height:var(--spacing-md);width:auto;fill:var(--color-header-text)}.heading__left{display:flex;gap:var(--spacing-md);align-items:center}.heading__github-badge.btn{align-items:stretch;border:1px solid var(--color-overlay-border);overflow:hidden;font-size:var(--font-size-12);line-height:1;border-radius:10px;padding:0;background:transparent;box-shadow:none;gap:0}.heading__github-badge.btn:hover{border-color:var(--color-overlay-separator);background:transparent}.heading__github-badge.btn:active{background:transparent}.heading__github-badge-label{display:inline-flex;align-items:center;gap:.35em;padding:.75em;background:var(--color-overlay);color:var(--color-header-text);font-weight:500;white-space:nowrap}.heading__github-badge-label svg{fill:currentColor;height:.875rem;width:auto}.heading__github-badge-stars{display:inline-flex;align-items:center;padding:.75em;background:#ffffff1f;color:var(--color-header-text);font-weight:500;white-space:nowrap}@media(max-width:48rem){.heading__github-badge-label span{display:none}}.heading__nav{margin-left:auto}.heading__nav-list{list-style:none;display:flex;align-items:center;gap:var(--spacing-xs);padding:0;height:100%;margin-bottom:0}.heading__nav-link{color:var(--color-header-text);text-decoration:none;padding:.375rem .75rem;border-radius:var(--radius-sm);transition:opacity var(--transition-base),background var(--transition-base)}.heading__nav-link:hover{text-decoration:underline}.heading__nav-link svg{fill:currentColor;height:var(--spacing-lg);width:auto}.heading__nav-divider{width:1px;height:var(--spacing-md);background:var(--color-overlay-separator);margin:0 var(--spacing-xs)}.heading__nav-list-social{display:flex;align-items:center;gap:1.25rem}@media(prefers-color-scheme:light){.heading__cta.btn{background:var(--color-overlay);border:1px solid var(--color-overlay-border);box-shadow:none}.heading__cta.btn:hover{background:var(--color-overlay);border-color:var(--color-overlay-separator)}.heading__cta.btn:active{background:#ffffff1a}}@media(max-width:40rem){.heading__cta{display:none!important}}.heading__mega-trigger{display:inline-flex;align-items:center;gap:.25rem;background:none;border:none;cursor:pointer;color:var(--color-header-text)}.heading__mega-trigger-arrow{transition:transform .2s;height:1.25em!important;width:auto!important}.heading:has(.mega-menu:popover-open) .heading__mega-trigger-arrow{transform:rotate(180deg)}.heading__hamburger{display:none;flex-direction:column;background:transparent;border:none;padding:0;cursor:pointer;position:relative;width:1.25rem;height:1.25rem}@media(max-width:40rem){.heading__nav{display:none}.heading__hamburger{display:flex;margin-left:auto}}.heading__hamburger-line{width:1.25rem;height:.125rem;background:var(--color-header-text);transition:top .2s,transform .2s;position:absolute;left:0}.heading__hamburger-line:nth-child(1){top:.3125rem}.heading__hamburger-line:nth-child(2){top:.8125rem}.heading__hamburger[aria-expanded=true] .heading__hamburger-line:nth-child(1){top:.5625rem;transform:rotate(45deg)}.heading__hamburger[aria-expanded=true] .heading__hamburger-line:nth-child(2){top:.5625rem;transform:rotate(-45deg)}.mobile-menu{position:fixed;top:var(--header-height);left:0;right:0;bottom:0;background:var(--color-primary);transform:translateY(-150%);transition:transform var(--transition-menu);z-index:90;overflow-y:auto}@media(prefers-color-scheme:dark){.mobile-menu{background:var(--color-bg-page)}}.mobile-menu--open{transform:translateY(0)}.mobile-menu__nav{padding:var(--spacing-xl) var(--spacing-lg)}.mobile-menu__list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:var(--spacing-lg)}.mobile-menu__list .mobile-menu__list{margin-top:var(--spacing-xs);gap:.75rem}.mobile-menu__link{color:var(--color-text-inverse);text-decoration:none;font-size:var(--font-size-2xl);font-weight:500;display:block}.mobile-menu__link:hover{text-decoration:underline}.mobile-menu__group-title{font-size:var(--font-size-12);font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--color-overlay-muted);margin-bottom:var(--spacing-sm)}.mobile-menu__social{display:flex;gap:var(--spacing-lg);margin-top:var(--spacing-xl);padding-top:var(--spacing-xl);border-top:1px solid var(--color-overlay-divider)}.mobile-menu__social-link{color:var(--color-text-inverse);display:flex;align-items:center;justify-content:center}.mobile-menu__social-link svg{fill:currentColor;height:1.75rem;width:auto}.mega-menu{position:fixed;top:var(--header-height);left:0;right:0;margin:0;padding:0 var(--spacing-lg);border:none;background:transparent;overflow:visible;opacity:1;transform:translateY(0);transition:opacity .2s,transform .2s,display .2s allow-discrete;position-area:bottom;inset:1rem}.mega-menu:popover-open{opacity:1;transform:translateY(0)}@starting-style{.mega-menu:popover-open{opacity:0;transform:translateY(-.5rem)}}.mega-menu__inner{display:grid;grid-template-columns:1fr auto;gap:var(--spacing-lg);padding:var(--spacing-lg);border-radius:var(--radius-xl);margin-top:var(--spacing-sm);max-width:40rem;margin-left:auto;margin-right:auto;background:var(--color-card-bg);border:1px solid var(--color-card-border);box-shadow:var(--shadow-elevated)}@media(prefers-color-scheme:dark){.mega-menu__inner{background:#1a1d27;border-color:var(--color-border-strong);box-shadow:var(--shadow-elevated)}}@media(max-width:40rem){.mega-menu{display:none}}.mega-menu__group+.mega-menu__group{border-left:1px solid var(--color-divider);padding-left:var(--spacing-lg)}.mega-menu__group-title{font-family:var(--font-heading);font-size:var(--font-size-12);text-transform:uppercase;letter-spacing:.1em;color:var(--color-text-muted);font-weight:500;margin-bottom:var(--spacing-md)}.mega-menu__list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:var(--spacing-xs)}.mega-menu__link{display:flex;align-items:flex-start;gap:var(--spacing-md);padding:var(--spacing-sm) var(--spacing-md);border-radius:12px;text-decoration:none;transition:background var(--transition-base)}.mega-menu__link:hover{background:var(--color-surface-raised);text-decoration:none}.mega-menu__icon{flex-shrink:0;width:2rem;height:2rem;display:flex;align-items:center;justify-content:center;margin-top:.125rem}.mega-menu__icon svg{width:1.5rem;height:1.5rem;color:var(--color-primary)}.mega-menu__text{display:flex;flex-direction:column;gap:.125rem}.mega-menu__name{font-size:var(--font-size-15);font-weight:600;color:var(--color-text-primary)}.mega-menu__desc{font-size:var(--font-size-13);color:var(--color-text-muted);line-height:1.4}.mega-menu__social-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:var(--spacing-xs)}.mega-menu__social-link{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-xs) var(--spacing-sm);border-radius:12px;text-decoration:none;font-size:var(--font-size-14);color:var(--color-text-secondary);transition:background var(--transition-base),color var(--transition-base)}.mega-menu__social-link:hover{background:var(--color-surface-raised);color:var(--color-text-primary);text-decoration:none}.mega-menu__social-link svg{fill:currentColor;width:1rem;height:1rem;flex-shrink:0}.page-bg{min-height:100vh;background-image:var(--bg-pattern);background-repeat:repeat;background-size:var(--bg-pattern-size);background-position:center}.primary-container{max-width:var(--max-width);margin:var(--spacing-sm) auto}@media(prefers-color-scheme:dark){.primary-container{margin:0 auto}}@media(max-width:80rem)and (prefers-color-scheme:dark){.primary-container{max-width:100%;margin:0;border:0}}@media(max-width:60rem){.primary-container{margin:0;border:0}}.content{padding:var(--spacing-md) var(--spacing-lg);overflow-x:clip}@media(max-width:48rem){.content{padding:0 var(--spacing-md)}}.footer{padding:3rem var(--spacing-lg);font-size:var(--font-size-14);color:var(--color-footer-text);background:var(--color-footer-bg)}@media(prefers-color-scheme:dark){.footer{background:#ffffff08;border-top:1px solid var(--color-card-border);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}}@media(max-width:48rem){.footer{padding:var(--spacing-xl) var(--spacing-md)}}.footer__inner{display:flex;flex-direction:column;gap:2rem;max-width:var(--max-width);margin:0 auto}.footer__top{display:flex;justify-content:space-between;align-items:flex-start;gap:2rem}@media(max-width:48rem){.footer__top{flex-direction:column}}.footer__brand{display:flex;flex-direction:column;gap:.75rem;max-width:16rem}.footer__brand-logo{display:flex;align-items:center;gap:var(--spacing-xs)}.footer__brand-wordmark{height:.875rem;width:auto;fill:var(--color-footer-text)}.footer__brand-tagline{color:var(--color-overlay-muted);font-size:var(--font-size-13);line-height:1.5}@media(prefers-color-scheme:dark){.footer__brand-tagline{color:var(--color-text-secondary)}}.footer__columns{display:flex;gap:3rem}@media(max-width:48rem){.footer__columns{flex-wrap:wrap;gap:2rem}}.footer__column-title{font-size:var(--font-size-12);font-weight:600;text-transform:uppercase;letter-spacing:.05em;margin-bottom:.75rem;color:var(--color-overlay-muted)}@media(prefers-color-scheme:dark){.footer__column-title{color:var(--color-text-muted)}}.footer__nav-list{list-style:none;padding:0;margin:0}.footer__nav-list-item{margin-bottom:.375rem}.footer__nav-list-link{text-decoration:none;font-size:var(--font-size-13);color:var(--color-text-inverse)}@media(prefers-color-scheme:dark){.footer__nav-list-link{color:var(--color-text-secondary)}}.footer__nav-list-link:hover{text-decoration:underline}@media(prefers-color-scheme:dark){.footer__nav-list-link:hover{color:#fff;text-decoration:none}}.footer__bottom{display:flex;justify-content:space-between;align-items:center;padding-top:var(--spacing-lg);border-top:1px solid var(--color-overlay-divider)}@media(prefers-color-scheme:dark){.footer__bottom{border-top-color:var(--color-divider)}}@media(max-width:48rem){.footer__bottom{flex-direction:column;align-items:flex-start;gap:var(--spacing-sm)}}.footer__copyright{font-size:var(--font-size-13);margin:0;color:var(--color-overlay-muted)}@media(prefers-color-scheme:dark){.footer__copyright{color:var(--color-text-secondary)}}.footer__social{display:flex;gap:var(--spacing-md);align-items:center}.footer__social-link{text-decoration:none;font-size:var(--font-size-13);color:var(--color-text-inverse)}@media(prefers-color-scheme:dark){.footer__social-link{color:var(--color-text-secondary)}}.footer__social-link:hover{text-decoration:underline}@media(prefers-color-scheme:dark){.footer__social-link:hover{color:#fff;text-decoration:none}}article.page{line-height:var(--line-height-relaxed);font-variation-settings:"opsz" 18}article.page p{line-height:var(--line-height-relaxed)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;font-size:var(--font-size-base);padding:.5rem 1rem;border:1px solid var(--color-border);border-radius:12px;background:var(--color-bg-button);color:var(--color-text-primary);text-decoration:none;cursor:pointer;user-select:none;white-space:nowrap;appearance:none;box-shadow:inset 0 1px #ffffff29,var(--shadow-btn);font-weight:425;transition:background var(--transition-base),box-shadow var(--transition-base),border var(--transition-base)}@media(prefers-color-scheme:dark){.btn{box-shadow:inset 0 1px #ffffff14}}.btn:hover{background:color-mix(in oklch,var(--color-bg-button) 90%,black)}.btn:active{background:color-mix(in oklch,var(--color-bg-button) 80%,black);box-shadow:inset 0 1px #00000014}.btn--primary{background:var(--color-button-primary);color:var(--color-button-primary-text);border-color:transparent}.btn--primary:hover{background:color-mix(in oklch,var(--color-button-primary) 90%,black)}.btn--primary:active{background:color-mix(in oklch,var(--color-button-primary) 80%,black)}.btn--secondary{background:var(--color-button-secondary);color:var(--color-button-secondary-text);border-color:transparent}.btn--secondary:hover{background:color-mix(in oklch,var(--color-button-secondary) 90%,black)}.btn--secondary:active{background:color-mix(in oklch,var(--color-button-secondary) 80%,black)}.btn--sm{font-size:var(--font-size-14);padding:.375rem .875rem;border-radius:10px}.btn--full{width:100%}.newsletter-signup{display:flex;flex-direction:column;gap:var(--spacing-sm)}.newsletter-signup__field{display:flex;flex-direction:column;gap:var(--spacing-xs);flex:1}.newsletter-signup__input{width:100%;border:1px solid var(--color-card-border);border-radius:8px;padding:.5rem .75rem;font-size:var(--font-size-base);background:var(--color-bg-primary);color:var(--color-text-primary);transition:border-color var(--transition-base)}@media(prefers-color-scheme:dark){.newsletter-signup__input{background:#ffffff0d;border-color:#ffffff1a}}.newsletter-signup__input:focus{outline:2px solid var(--color-primary);outline-offset:1px}.newsletter-signup__submit{align-self:flex-start}@media(min-width:40rem){.newsletter-signup--inline{flex-direction:row;align-items:flex-end}}@media(max-width:39.9375rem){.newsletter-signup__submit{width:100%}}.card{background:var(--color-card-bg);border:1px solid var(--color-card-border);border-radius:var(--radius-xl);box-shadow:var(--shadow-card)}@media(prefers-color-scheme:dark){.card{background-color:#ffffff0d;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}}.hero-tag{display:inline-flex;align-items:center;gap:.5rem;border:1px solid var(--color-card-border);border-radius:var(--radius-full);padding:.3rem .875rem;font-size:var(--font-size-12);font-weight:400;line-height:1.4;color:var(--color-text-secondary);background:var(--color-card-bg);box-shadow:var(--shadow-card)}.section{padding:4rem 0}@media(max-width:48rem){.section{padding:2.5rem 0}}.section__header{text-align:center;max-width:40rem;margin:0 auto 2.5rem}.section__label{font-size:var(--font-size-12);text-transform:uppercase;letter-spacing:.1em;color:var(--color-text-muted);margin-bottom:var(--spacing-sm);display:block}.section__title{font-size:1.75rem;font-weight:600;line-height:1.3;color:var(--color-text-primary);margin-bottom:var(--spacing-md);font-family:var(--font-heading)}.section__subtitle{font-size:var(--font-size-base);color:var(--color-text-secondary);line-height:1.6}.faq-list{max-width:42rem;margin:0 auto;display:flex;flex-direction:column;gap:var(--spacing-sm)}.faq-item{border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden;background:var(--color-bg-primary)}@media(prefers-color-scheme:dark){.faq-item{background:var(--color-surface)}}.faq-item__question{font-size:var(--font-size-15);font-weight:500;color:var(--color-text-primary);cursor:pointer;padding:var(--spacing-md) var(--spacing-lg);list-style:none;display:flex;justify-content:space-between;align-items:center}.faq-item__question::-webkit-details-marker{display:none}.faq-item__question:after{content:"+";font-size:1.25rem;font-weight:300;flex-shrink:0;margin-left:var(--spacing-md);transition:transform .2s}.faq-item[open] .faq-item__question:after{content:"\2212"}.faq-item__answer{padding:0 var(--spacing-lg) var(--spacing-lg)}.faq-item__answer p{font-size:var(--font-size-14);color:var(--color-text-secondary);line-height:1.6}.features-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--spacing-md)}@media(max-width:64rem){.features-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:36rem){.features-grid{grid-template-columns:1fr}}.feature-card{padding:var(--spacing-lg);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-primary)}@media(prefers-color-scheme:dark){.feature-card{background:var(--color-surface)}}.feature-card__icon{width:2rem;height:2rem;margin-bottom:var(--spacing-md)}.feature-card__title{font-size:var(--font-size-base);font-weight:600;color:var(--color-text-primary);margin-bottom:var(--spacing-sm)}.feature-card__text{font-size:var(--font-size-14);color:var(--color-text-secondary);line-height:1.6}
