@font-face{font-family:Archivo;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/archivo-latin-400-normal.woff2)format("woff2")}@font-face{font-family:Archivo;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/archivo-latin-500-normal.woff2)format("woff2")}@font-face{font-family:Archivo;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/archivo-latin-600-normal.woff2)format("woff2")}@font-face{font-family:Archivo;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/archivo-latin-700-normal.woff2)format("woff2")}@font-face{font-family:Archivo;font-style:normal;font-weight:800;font-display:swap;src:url(/fonts/archivo-latin-800-normal.woff2)format("woff2")}@font-face{font-family:Archivo;font-style:normal;font-weight:900;font-display:swap;src:url(/fonts/archivo-latin-900-normal.woff2)format("woff2")}@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:200 900;font-display:swap;src:url(/fonts/source-serif-4-latin-wght-normal.woff2)format("woff2-variations")}@font-face{font-family:"Source Serif 4";font-style:italic;font-weight:200 900;font-display:swap;src:url(/fonts/source-serif-4-latin-wght-italic.woff2)format("woff2-variations")}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/jetbrains-mono-latin-400-normal.woff2)format("woff2")}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/jetbrains-mono-latin-500-normal.woff2)format("woff2")}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/jetbrains-mono-latin-600-normal.woff2)format("woff2")}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/jetbrains-mono-latin-700-normal.woff2)format("woff2")}h1,h2,h3,h4,h5,h6{font-family:var(--gw-font-display);font-weight:var(--gw-w-bold);letter-spacing:var(--gw-tracking-display);line-height:var(--gw-leading-snug);color:var(--gw-text)}:root{--gw-ink-900:#161a17;--gw-ink-700:#3a423c;--gw-ink-500:#6b726b;--gw-ink-300:#a8ada6;--gw-paper-000:#fff;--gw-paper-050:#faf7f1;--gw-paper-100:#f2eee6;--gw-paper-200:#e7e2d8;--gw-paper-300:#d8d2c6;--gw-warm-600:#e23a0b;--gw-warm-500:#ff4d14;--gw-warm-300:#ffb59b;--gw-warm-100:#ffe7de;--gw-cool-700:#0f5449;--gw-cool-500:#157a6e;--gw-cool-300:#7fc3b8;--gw-cool-100:#dcf0ec;--gw-spark-500:#d6f25b;--gw-spark-300:#e9f8a8;--gw-black:#0c0e0c;--gw-white:#fff;--gw-bg:var(--gw-paper-000);--gw-bg-reading:var(--gw-paper-050);--gw-surface:var(--gw-paper-000);--gw-surface-raised:var(--gw-paper-100);--gw-surface-sunken:var(--gw-paper-050);--gw-text:var(--gw-ink-900);--gw-text-secondary:var(--gw-ink-700);--gw-text-muted:var(--gw-ink-500);--gw-text-disabled:var(--gw-ink-300);--gw-text-inverse:var(--gw-paper-000);--gw-border:var(--gw-paper-200);--gw-border-strong:var(--gw-paper-300);--gw-hairline:var(--gw-paper-200);--gw-accent:var(--gw-warm-500);--gw-accent-hover:var(--gw-warm-600);--gw-accent-soft:var(--gw-warm-100);--gw-accent-cool:var(--gw-cool-500);--gw-accent-cool-hover:var(--gw-cool-700);--gw-accent-cool-soft:var(--gw-cool-100);--gw-highlight:var(--gw-spark-500);--gw-link:var(--gw-cool-700);--gw-link-hover:var(--gw-warm-500);--gw-success:var(--gw-cool-500);--gw-success-soft:var(--gw-cool-100);--gw-warning:#c77a0a;--gw-warning-soft:#fbeed4;--gw-danger:#c4321a;--gw-danger-soft:#fbe0d9;--gw-focus:var(--gw-cool-500)}[data-theme=dark]{--gw-bg:#121513;--gw-bg-reading:#161a17;--gw-surface:#1a1e1b;--gw-surface-raised:#222724;--gw-surface-sunken:#101312;--gw-text:#eceae3;--gw-text-secondary:#bdc2bb;--gw-text-muted:#8a908a;--gw-text-disabled:#575c57;--gw-text-inverse:#161a17;--gw-border:#2c312d;--gw-border-strong:#3c423d;--gw-hairline:#262b27;--gw-accent:#ff5e29;--gw-accent-hover:#ff784a;--gw-accent-soft:#3a1d12;--gw-accent-cool:#4fb3a3;--gw-accent-cool-hover:#6fc7b8;--gw-accent-cool-soft:#123029;--gw-highlight:#d6f25b;--gw-link:#6fc7b8;--gw-link-hover:#ff784a;--gw-success:#4fb3a3;--gw-success-soft:#123029;--gw-warning:#e0a64a;--gw-warning-soft:#33280f;--gw-danger:#e8674c;--gw-danger-soft:#331610;--gw-focus:#6fc7b8}:root{--gw-space-0:0;--gw-space-1:.25rem;--gw-space-2:.5rem;--gw-space-3:.75rem;--gw-space-4:1rem;--gw-space-5:1.5rem;--gw-space-6:2rem;--gw-space-7:3rem;--gw-space-8:4rem;--gw-space-9:6rem;--gw-space-10:8rem;--gw-radius-none:0;--gw-radius-sm:4px;--gw-radius-md:8px;--gw-radius-lg:14px;--gw-radius-xl:22px;--gw-radius-pill:999px;--gw-border-hairline:1px;--gw-border-regular:1.5px;--gw-border-heavy:2px;--gw-shadow-none:none;--gw-shadow-xs:0 1px 2px #161a170f;--gw-shadow-sm:0 2px 6px #161a1712;--gw-shadow-md:0 6px 20px #161a1717;--gw-shadow-lg:0 18px 48px #161a1724;--gw-shadow-focus:0 0 0 3px var(--gw-cool-100);--gw-ease:cubic-bezier(.22, .61, .36, 1);--gw-ease-in-out:cubic-bezier(.65, 0, .35, 1);--gw-dur-fast:.12s;--gw-dur:.2s;--gw-dur-slow:.38s;--gw-container:1200px;--gw-container-wide:1400px;--gw-reading-width:720px;--gw-gutter:clamp(1.25rem, 4vw, 4rem)}[data-theme=dark]{--gw-shadow-xs:0 1px 2px #0006;--gw-shadow-sm:0 2px 6px #00000073;--gw-shadow-md:0 6px 20px #00000080;--gw-shadow-lg:0 18px 48px #0009;--gw-shadow-focus:0 0 0 3px var(--gw-cool-soft,#123029)}:root{--gw-font-display:"Archivo", "Helvetica Neue", Arial, sans-serif;--gw-font-serif:"Source Serif 4", Georgia, "Times New Roman", serif;--gw-font-mono:"JetBrains Mono", "SFMono-Regular", Menlo, Consolas, monospace;--gw-font-ui:var(--gw-font-display);--gw-w-regular:400;--gw-w-medium:500;--gw-w-semibold:600;--gw-w-bold:700;--gw-w-extrabold:800;--gw-w-black:900;--gw-text-display-xl:clamp(3.25rem, 7vw, 6rem);--gw-text-display-lg:clamp(2.5rem, 5vw, 4rem);--gw-text-display-md:clamp(2rem, 3.5vw, 2.75rem);--gw-text-display-sm:1.5rem;--gw-text-h1:2rem;--gw-text-h2:1.5rem;--gw-text-h3:1.25rem;--gw-text-lead:1.375rem;--gw-text-body:1.1875rem;--gw-text-body-sm:1rem;--gw-text-caption:.875rem;--gw-text-ui-lg:1.0625rem;--gw-text-ui:.9375rem;--gw-text-ui-sm:.8125rem;--gw-text-label:.75rem;--gw-text-code:.9375rem;--gw-text-code-sm:.8125rem;--gw-leading-tight:1.02;--gw-leading-snug:1.15;--gw-leading-ui:1.35;--gw-leading-body:1.65;--gw-leading-relaxed:1.75;--gw-tracking-display:-.02em;--gw-tracking-tight:-.01em;--gw-tracking-normal:0;--gw-tracking-label:.14em;--gw-tracking-wide:.02em;--gw-measure:68ch;--gw-measure-narrow:44ch}.gw-codeblock{background:var(--gw-black);border-radius:var(--gw-radius-md);border:1.5px solid var(--gw-ink-900);overflow:hidden}.gw-code-header{background:#ffffff0d;border-bottom:1px solid #ffffff17;justify-content:space-between;align-items:center;gap:12px;padding:9px 14px;display:flex}.gw-code-header .gw-code-title{min-width:0;font-family:var(--gw-font-mono);font-size:var(--gw-text-code-sm);color:#ffffffb8;align-items:center;gap:8px;display:inline-flex}.gw-code-header .gw-copy-btn[hidden]{display:none}.gw-code-header .gw-copy-btn{cursor:pointer;font-family:var(--gw-font-display);font-size:var(--gw-text-ui-sm);color:#fff9;transition:color var(--gw-dur) var(--gw-ease);background:0 0;border:none;flex-shrink:0;align-items:center;gap:5px;padding:2px 4px;display:inline-flex}.gw-code-header .gw-copy-btn:hover{color:#ffffffd9}.gw-code-header .gw-copy-btn:focus-visible{outline:2px solid var(--gw-spark-500);outline-offset:2px;border-radius:var(--gw-radius-sm)}.gw-code-header .gw-copy-btn.is-copied{color:var(--gw-spark-500)}.gw-code-header .gw-copy-btn .gw-copy-icon{width:14px;height:14px}.gw-code-header .gw-copy-btn .gw-copy-icon-check,.gw-code-header .gw-copy-btn.is-copied .gw-copy-icon-copy{display:none}.gw-code-header .gw-copy-btn.is-copied .gw-copy-icon-check{display:inline}pre.gw-shiki{font-family:var(--gw-font-mono);font-size:var(--gw-text-code);margin:0;padding:16px 18px;line-height:1.7;overflow-x:auto;background:0 0!important}pre.gw-shiki code{background:0 0;font-family:inherit;display:block}pre.gw-shiki .line{min-height:1.7em;display:block}pre.gw-shiki-numbered code{counter-reset:gw-line}pre.gw-shiki-numbered .line:before{counter-increment:gw-line;content:counter(gw-line);text-align:right;color:#ffffff47;user-select:none;width:2.2em;margin-right:1em;display:inline-block}.gw-site-header[data-astro-cid-sa2dohld]{background:var(--gw-surface);border-bottom:1px solid var(--gw-hairline)}.gw-site-header-inner[data-astro-cid-sa2dohld]{max-width:var(--gw-container);padding:var(--gw-space-3) var(--gw-gutter);justify-content:space-between;align-items:center;gap:var(--gw-space-5);margin:0 auto;display:flex}.gw-site-brand[data-astro-cid-sa2dohld]{font-family:var(--gw-font-display);font-weight:var(--gw-w-black);font-size:var(--gw-text-ui-lg);letter-spacing:var(--gw-tracking-tight);color:var(--gw-text);text-decoration:none}.gw-brand-dot[data-astro-cid-sa2dohld]{color:var(--gw-accent)}.gw-site-actions[data-astro-cid-sa2dohld]{align-items:center;gap:var(--gw-space-3);display:flex}.gw-site-nav[data-astro-cid-sa2dohld]{align-items:center;gap:var(--gw-space-1);display:flex}.gw-site-account[data-astro-cid-sa2dohld]{align-items:center;min-height:40px;display:flex}.gw-account,.gw-site-account[data-astro-cid-sa2dohld]>.gw-account-link[data-astro-cid-sa2dohld]{font-size:var(--gw-text-ui-sm);white-space:nowrap;align-items:center;gap:8px;display:inline-flex}.gw-account-link{font-family:var(--gw-font-display);font-weight:var(--gw-w-semibold);color:var(--gw-text-inverse);background:var(--gw-accent);padding:var(--gw-space-2) var(--gw-space-4);border-radius:var(--gw-radius-pill);transition:background var(--gw-dur) var(--gw-ease);text-decoration:none}.gw-account-link:hover{background:var(--gw-accent-hover);text-decoration:none}.gw-account-name{color:var(--gw-text-secondary);text-overflow:ellipsis;max-width:180px;font-weight:500;overflow:hidden}.gw-account-sep{opacity:.4}@media (width<=480px){.gw-site-header-inner[data-astro-cid-sa2dohld]{row-gap:var(--gw-space-2);flex-wrap:wrap}.gw-site-actions[data-astro-cid-sa2dohld]{gap:var(--gw-space-2);flex-wrap:wrap;flex:100%;justify-content:flex-end;min-width:0}.gw-site-nav-link[data-astro-cid-sa2dohld],.gw-account-link{padding:var(--gw-space-1) var(--gw-space-3)}.gw-site-account[data-astro-cid-sa2dohld],.gw-account{min-width:0}.gw-account-name{max-width:72px}}.gw-site-nav-link[data-astro-cid-sa2dohld]{font-family:var(--gw-font-display);font-weight:var(--gw-w-semibold);font-size:var(--gw-text-ui-sm);color:var(--gw-text-secondary);padding:var(--gw-space-2) var(--gw-space-4);border-radius:var(--gw-radius-pill);border:1px solid var(--gw-hairline);background:var(--gw-surface-sunken);white-space:nowrap;transition:color var(--gw-dur) var(--gw-ease), background var(--gw-dur) var(--gw-ease), border-color var(--gw-dur) var(--gw-ease);text-decoration:none}.gw-site-nav-link[data-astro-cid-sa2dohld]:hover{color:var(--gw-text);background:var(--gw-surface-raised);border-color:var(--gw-border-strong)}.gw-site-footer[data-astro-cid-sa2dohld]{border-top:1px solid var(--gw-hairline);background:var(--gw-surface)}.gw-site-footer-inner[data-astro-cid-sa2dohld]{max-width:var(--gw-container);padding:var(--gw-space-5) var(--gw-gutter);font-family:var(--gw-font-serif);font-size:var(--gw-text-caption);color:var(--gw-text-muted);margin:0 auto}
