:root{--p-white:#fff;--p-n-50:#f6f6f4;--p-n-100:#ebebe7;--p-n-200:#e0e0db;--p-n-300:#c7c7c0;--p-ink:#1b1b19;--p-ink-muted:#5c5c56;--p-accent:#2a5fb8;--p-accent-strong:#1b4f9c;--p-accent-contrast:#fff;--p-accent-tint:#eaf0fb;--p-note:#475569;--p-note-tint:#eef1f4;--p-tip:#1b4f9c;--p-tip-tint:#eaf0fb;--p-warn:#8a5a00;--p-warn-tint:#fdf3e3;--p-danger:#b42318;--p-danger-tint:#fdecec;--p-success:#1f7a46;--p-success-tint:#e8f6ee;--p-cat-1:#1b4f9c;--p-cat-2:#8a6d00;--p-cat-3:#1f7a46;--p-cat-4:#b4246e;--p-font-sans:"Public Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--p-font-mono:"Source Code Pro", ui-monospace, "SF Mono", Menlo, monospace;--p-fs-100:.694rem;--p-fs-200:.833rem;--p-fs-300:1rem;--p-fs-400:1.2rem;--p-fs-500:1.44rem;--p-fs-600:1.728rem;--p-fs-700:2.074rem;--p-fs-800:2.488rem;--p-lh-tight:1.15;--p-lh-snug:1.3;--p-lh-base:1.65;--p-fw-regular:400;--p-fw-medium:500;--p-fw-semibold:600;--p-fw-bold:700;--p-tracking-display:-.02em;--p-tracking-body:0em;--p-sp-1:.25rem;--p-sp-2:.5rem;--p-sp-3:.75rem;--p-sp-4:1rem;--p-sp-5:1.5rem;--p-sp-6:2rem;--p-sp-7:3rem;--p-sp-8:4rem;--p-sp-9:6rem;--p-radius-sm:3px;--p-radius-md:5px;--p-radius-lg:8px;--p-shadow-1:0 1px 2px #1b1b190d;--p-shadow-2:0 8px 28px -6px #1b1b1924;--p-measure:72ch;--p-container:88rem;--p-sidebar-w:17rem;--p-toc-w:15rem;--p-ad-inline-min-h:250px;--p-ad-rail-w:300px;--p-ad-rail-h:600px;--p-bp-mobile:48rem;--p-bp-tablet:64rem;--p-bp-desktop:80rem;--p-bp-wide:100rem;--p-motion-fast:.12s;--p-motion-base:.2s;--p-ease:cubic-bezier(.2, 0, 0, 1);--c-bg:var(--p-white);--c-surface:var(--p-n-50);--c-surface-2:var(--p-n-100);--c-border:var(--p-n-200);--c-border-strong:var(--p-n-300);--c-text:var(--p-ink);--c-text-muted:var(--p-ink-muted);--c-accent:var(--p-accent);--c-accent-strong:var(--p-accent-strong);--c-accent-contrast:var(--p-accent-contrast);--c-accent-tint:var(--p-accent-tint);--c-note:var(--p-note);--c-note-tint:var(--p-note-tint);--c-tip:var(--p-tip);--c-tip-tint:var(--p-tip-tint);--c-warn:var(--p-warn);--c-warn-tint:var(--p-warn-tint);--c-danger:var(--p-danger);--c-danger-tint:var(--p-danger-tint);--c-success:var(--p-success);--c-success-tint:var(--p-success-tint);--c-cat-1:var(--p-cat-1);--c-cat-2:var(--p-cat-2);--c-cat-3:var(--p-cat-3);--c-cat-4:var(--p-cat-4);color-scheme:light;--font-sans:var(--p-font-sans);--font-mono:var(--p-font-mono);--fs-100:var(--p-fs-100);--fs-200:var(--p-fs-200);--fs-300:var(--p-fs-300);--fs-400:var(--p-fs-400);--fs-500:var(--p-fs-500);--fs-600:var(--p-fs-600);--fs-700:var(--p-fs-700);--fs-800:var(--p-fs-800);--lh-tight:var(--p-lh-tight);--lh-snug:var(--p-lh-snug);--lh-base:var(--p-lh-base);--fw-regular:var(--p-fw-regular);--fw-medium:var(--p-fw-medium);--fw-semibold:var(--p-fw-semibold);--fw-bold:var(--p-fw-bold);--tracking-display:var(--p-tracking-display);--tracking-body:var(--p-tracking-body);--sp-1:var(--p-sp-1);--sp-2:var(--p-sp-2);--sp-3:var(--p-sp-3);--sp-4:var(--p-sp-4);--sp-5:var(--p-sp-5);--sp-6:var(--p-sp-6);--sp-7:var(--p-sp-7);--sp-8:var(--p-sp-8);--sp-9:var(--p-sp-9);--radius-sm:var(--p-radius-sm);--radius-md:var(--p-radius-md);--radius-lg:var(--p-radius-lg);--shadow-1:var(--p-shadow-1);--shadow-2:var(--p-shadow-2);--measure:var(--p-measure);--container:var(--p-container);--sidebar-w:var(--p-sidebar-w);--toc-w:var(--p-toc-w);--ad-inline-min-h:var(--p-ad-inline-min-h);--ad-rail-w:var(--p-ad-rail-w);--ad-rail-h:var(--p-ad-rail-h);--bp-mobile:var(--p-bp-mobile);--bp-tablet:var(--p-bp-tablet);--bp-desktop:var(--p-bp-desktop);--bp-wide:var(--p-bp-wide);--motion-fast:var(--p-motion-fast);--motion-base:var(--p-motion-base);--ease:var(--p-ease)}@font-face{font-family:Public Sans;font-style:normal;font-display:swap;font-weight:100 900;src:url(/fonts/public-sans-latin-var.woff2)format("woff2")}@font-face{font-family:Public Sans;font-style:italic;font-display:swap;font-weight:100 900;src:url(/fonts/public-sans-latin-var-italic.woff2)format("woff2")}@font-face{font-family:Source Code Pro;font-style:normal;font-display:swap;font-weight:200 900;src:url(/fonts/source-code-pro-latin-var.woff2)format("woff2")}*,:before,:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;font-size:106.25%}body{background:var(--c-bg);color:var(--c-text);font-family:var(--font-sans);font-size:var(--fs-300);line-height:var(--lh-base);letter-spacing:var(--tracking-body);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;font-variant-ligatures:common-ligatures;min-height:100vh}img,svg,video{max-width:100%;height:auto;display:block}h1,h2,h3,h4{font-weight:var(--fw-semibold);line-height:var(--lh-tight);letter-spacing:var(--tracking-display);text-wrap:balance;color:var(--c-text)}h1{font-size:var(--fs-700);font-weight:var(--fw-bold)}h2{font-size:var(--fs-600);line-height:var(--lh-snug)}h3{font-size:var(--fs-500);line-height:var(--lh-snug)}h4{font-size:var(--fs-400)}p,ul,ol{max-width:var(--measure)}p{text-wrap:pretty}a{color:var(--c-accent-strong);text-underline-offset:.15em;text-decoration-thickness:from-font}a:hover{text-decoration-thickness:.1em}code,kbd,samp{font-family:var(--font-mono);font-size:.9em}:not(pre)>code{background:var(--c-surface-2);border-radius:var(--radius-sm);border:1px solid var(--c-border);padding:.12em .4em}pre.astro-code{padding:var(--sp-4);border-radius:var(--radius-md);border:1px solid var(--c-border);font-size:var(--fs-200);tab-size:2;line-height:1.6;overflow-x:auto}.skip-link{left:var(--sp-3);z-index:1000;background:var(--c-accent-strong);color:var(--c-accent-contrast);padding:var(--sp-2) var(--sp-4);border-radius:var(--radius-md);transition:top var(--motion-fast) var(--ease);position:absolute;top:-3rem}.skip-link:focus{top:var(--sp-3)}:where(a,button,input,select,textarea,summary,[tabindex]):focus-visible{outline:2px solid var(--c-accent);outline-offset:2px;border-radius:var(--radius-sm)}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}::selection{background:var(--c-accent-tint)}
