@import "https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=Inter:wght@300;400;500;600&family=JetBrains+Mono:wght@400;500&family=Fira+Code:wght@400;500&display=swap";
:root[data-theme=hackerstack],.theme-hackerstack{--velo-bg:#010208;--velo-surface-low:#01040e;--velo-surface:#020614;--velo-surface-high:#040a1b;--velo-surface-highest:#071023;--velo-fg:#e5eff3;--velo-muted-fg:#6e8998;--velo-subtle-fg:#4d616c;--velo-border:#091225;--velo-border-subtle:#040a17;--velo-accent:#5dff90;--velo-accent-dim:#1bc461;--velo-accent-container:#5dff9014;--velo-on-accent:#010208;--velo-amber:#f4a81c;--velo-amber-dim:#be810a;--velo-amber-container:#f4a81c1a;--velo-code-string:#4cabfd;--velo-code-comment:#4d616c;--velo-code-keyword:#f4a81c;--velo-error:#c1133a;--velo-warning:#f4a81c;--velo-success:#5dff90;--velo-footer-bg:#000104;--velo-footer-fg:#6e8998;--velo-footer-muted:#37444d;--velo-heading-font:"IBM Plex Mono", "Courier New", monospace;--velo-body-font:"Inter", system-ui, -apple-system, sans-serif;--velo-mono-font:"JetBrains Mono", "Fira Code", "Courier New", monospace;--velo-code-font:"Fira Code", "JetBrains Mono", "Courier New", monospace;--velo-type-display-size:52px;--velo-type-display-weight:600;--velo-type-display-line:1.15;--velo-type-display-tracking:-.02em;--velo-type-headline-lg-size:36px;--velo-type-headline-lg-weight:600;--velo-type-headline-lg-line:1.2;--velo-type-headline-lg-tracking:-.015em;--velo-type-headline-md-size:24px;--velo-type-headline-md-weight:600;--velo-type-headline-md-line:1.3;--velo-type-headline-md-tracking:-.01em;--velo-type-headline-sm-size:18px;--velo-type-headline-sm-weight:500;--velo-type-headline-sm-line:1.4;--velo-type-headline-sm-tracking:-.005em;--velo-type-body-lg-size:16px;--velo-type-body-lg-weight:400;--velo-type-body-lg-line:1.75;--velo-type-body-md-size:15px;--velo-type-body-md-weight:400;--velo-type-body-md-line:1.7;--velo-type-label-caps-size:11px;--velo-type-label-caps-weight:400;--velo-type-label-caps-tracking:.1em;--velo-type-tag-size:10px;--velo-type-tag-weight:400;--velo-type-tag-tracking:.08em;--velo-space-unit:8px;--velo-space-gutter:24px;--velo-container-max:1200px;--velo-content-max:760px;--velo-space-section-gap:80px;--velo-space-card-gap:16px;--velo-space-margin-edge:clamp(16px, 4vw, 48px);--hs-code-border:1px solid #091225;--hs-code-filename-bg:#f4a81c1a;--hs-code-filename-fg:#f4a81c;--hs-code-line-height:1.65;--hs-headline-underline:3px solid #5dff90;--hs-callout-info:3px solid #5dff90;--hs-callout-warn:3px solid #f4a81c;--hs-callout-error:3px solid #c1133a;--vb-color-bg:#010208;--vb-color-fg:#e5eff3;--vb-color-heading:#e5eff3;--vb-color-muted:#6e8998;--vb-color-border:#091225;--vb-color-primary:#5dff90;--vb-color-primary-fg:#010208;--vb-color-secondary:#f4a81c;--vb-color-secondary-fg:#010208;--vb-color-success:#5dff90;--vb-color-success-bg:#5dff9014;--vb-color-danger:#c1133a;--vb-color-danger-bg:#c1133a1a;--vb-color-surface:#020614;--vb-heading-font:"IBM Plex Mono", monospace;--vb-body-font:"Inter", system-ui, sans-serif}@supports (color:lab(0% 0 0)){:root[data-theme=hackerstack],.theme-hackerstack{--velo-bg:lab(.594002% .283264 -2.49586);--velo-surface-low:lab(1.06281% .491343 -4.39414);--velo-surface:lab(1.6932% .721984 -6.71521);--velo-surface-high:lab(2.87529% 1.02603 -10.3726);--velo-surface-highest:lab(4.58852% 1.402 -13.8221);--velo-fg:lab(93.6804% -2.81307 -3.24092);--velo-muted-fg:lab(55.4502% -7.28089 -11.2129);--velo-subtle-fg:lab(39.7443% -5.28207 -9.18936);--velo-border:lab(5.44589% 1.41411 -14.3884);--velo-border-subtle:lab(2.62783% .627168 -7.89222);--velo-accent:lab(90.1395% -70.8973 46.0426);--velo-accent-dim:lab(69.8924% -58.0927 37.7579);--velo-accent-container:lab(90.1395% -70.8973 46.0426/.08);--velo-on-accent:lab(.594002% .283264 -2.49586);--velo-amber:lab(74.8887% 21.7133 73.8363);--velo-amber-dim:lab(59.2486% 18.4331 62.9743);--velo-amber-container:lab(74.8887% 21.7133 73.8363/.1);--velo-code-string:lab(66.9883% -8.56626 -50.0439);--velo-code-comment:lab(39.7443% -5.28207 -9.18936);--velo-code-keyword:lab(74.8887% 21.7133 73.8363);--velo-error:lab(42.1379% 64.4476 28.241);--velo-warning:lab(74.8887% 21.7133 73.8363);--velo-success:lab(90.1395% -70.8973 46.0426);--velo-footer-bg:lab(.266695% .107758 -1.02918);--velo-footer-fg:lab(55.4502% -7.28089 -11.2129);--velo-footer-muted:lab(28.1283% -3.8988 -6.74903);--hs-code-border:1px solid lab(5.44589% 1.41411 -14.3884);--hs-code-filename-bg:lab(74.8887% 21.7133 73.8363/.1);--hs-code-filename-fg:lab(74.8887% 21.7133 73.8363);--hs-headline-underline:3px solid lab(90.1395% -70.8973 46.0426);--hs-callout-info:3px solid lab(90.1395% -70.8973 46.0426);--hs-callout-warn:3px solid lab(74.8887% 21.7133 73.8363);--hs-callout-error:3px solid lab(42.1379% 64.4476 28.241);--vb-color-bg:lab(.594002% .283264 -2.49586);--vb-color-fg:lab(93.6804% -2.81307 -3.24092);--vb-color-heading:lab(93.6804% -2.81307 -3.24092);--vb-color-muted:lab(55.4502% -7.28089 -11.2129);--vb-color-border:lab(5.44589% 1.41411 -14.3884);--vb-color-primary:lab(90.1395% -70.8973 46.0426);--vb-color-primary-fg:lab(.594002% .283264 -2.49586);--vb-color-secondary:lab(74.8887% 21.7133 73.8363);--vb-color-secondary-fg:lab(.594002% .283264 -2.49586);--vb-color-success:lab(90.1395% -70.8973 46.0426);--vb-color-success-bg:lab(90.1395% -70.8973 46.0426/.08);--vb-color-danger:lab(42.1379% 64.4476 28.241);--vb-color-danger-bg:lab(42.1379% 64.4476 28.241/.1);--vb-color-surface:lab(1.6932% .721984 -6.71521)}}.theme-hackerstack .hs-label{font-family:IBM Plex Mono,monospace;font-size:var(--velo-type-label-caps-size);font-weight:var(--velo-type-label-caps-weight);letter-spacing:var(--velo-type-label-caps-tracking);text-transform:uppercase;color:#6e8998;color:lab(55.4502% -7.28089 -11.2129)}.theme-hackerstack .hs-tag{font-family:IBM Plex Mono,monospace;font-size:var(--velo-type-tag-size);font-weight:var(--velo-type-tag-weight);letter-spacing:var(--velo-type-tag-tracking);text-transform:uppercase;color:#5dff90;color:lab(90.1395% -70.8973 46.0426);background:#5dff900d;background:lab(90.1395% -70.8973 46.0426/.05);border:1px solid #5dff9066;border:1px solid lab(90.1395% -70.8973 46.0426/.4);border-radius:2px;padding:2px 8px}.theme-hackerstack .hs-stack-badge{letter-spacing:.05em;color:#f4a81c;color:lab(74.8887% 21.7133 73.8363);background:#f4a81c0f;background:lab(74.8887% 21.7133 73.8363/.06);border:1px solid #f4a81c59;border:1px solid lab(74.8887% 21.7133 73.8363/.35);border-radius:2px;padding:3px 10px;font-family:IBM Plex Mono,monospace;font-size:11px;font-weight:400}.theme-hackerstack .hs-post-card{background:#020614;background:lab(1.6932% .721984 -6.71521);border:1px solid #091225;border:1px solid lab(5.44589% 1.41411 -14.3884);transition:border-color .18s ease-out,box-shadow .18s ease-out}.theme-hackerstack .hs-post-card:hover{border-color:#5dff9099;border-color:lab(90.1395% -70.8973 46.0426/.6);box-shadow:0 0 0 1px #5dff9026;box-shadow:0 0 0 1px lab(90.1395% -70.8973 46.0426/.15)}.theme-hackerstack .hs-prose code:not(pre code){color:#f4a81c;color:lab(74.8887% 21.7133 73.8363);background:#f4a81c1f;background:lab(74.8887% 21.7133 73.8363/.12);border:1px solid #f4a81c33;border:1px solid lab(74.8887% 21.7133 73.8363/.2);border-radius:3px;padding:1px 6px;font-family:JetBrains Mono,monospace;font-size:13px}.theme-hackerstack .hs-prose pre{font-family:Fira Code,JetBrains Mono,monospace;font-size:13.5px;line-height:var(--hs-code-line-height);color:#e5eff3;color:lab(93.6804% -2.81307 -3.24092);border:var(--hs-code-border);font-variant-ligatures:contextual;background:#000104;background:lab(.266695% .107758 -1.02918);border-radius:6px;margin:1.75em 0;position:relative;overflow-x:auto}.theme-hackerstack .hs-code-filename{letter-spacing:.04em;color:var(--hs-code-filename-fg);background:var(--hs-code-filename-bg);border-bottom:1px solid #f4a81c33;border-bottom:1px solid lab(74.8887% 21.7133 73.8363/.2);border-radius:6px 6px 0 0;justify-content:flex-end;align-items:center;padding:6px 14px;font-family:IBM Plex Mono,monospace;font-size:11px;font-weight:400;display:flex}.theme-hackerstack .hs-prose pre code{font-size:inherit;color:inherit;background:0 0;padding:20px 24px;display:block}.theme-hackerstack .hs-callout{border-radius:4px;margin:1.5em 0;padding:14px 18px;font-family:Inter,sans-serif;font-size:14px;line-height:1.65}.theme-hackerstack .hs-callout-info{border-left:var(--hs-callout-info);color:#5dff90e6;color:lab(90.1395% -70.8973 46.0426/.9);background:#5dff900d;background:lab(90.1395% -70.8973 46.0426/.05)}.theme-hackerstack .hs-callout-warn{border-left:var(--hs-callout-warn);color:#f4a81ce6;color:lab(74.8887% 21.7133 73.8363/.9);background:#f4a81c0f;background:lab(74.8887% 21.7133 73.8363/.06)}.theme-hackerstack .hs-callout-error{border-left:var(--hs-callout-error);color:#c1133ae6;color:lab(42.1379% 64.4476 28.241/.9);background:#c1133a0f;background:lab(42.1379% 64.4476 28.241/.06)}.theme-hackerstack .hs-prose{font-family:Inter,system-ui,sans-serif;font-size:var(--velo-type-body-lg-size);font-weight:400;line-height:var(--velo-type-body-lg-line);color:#e5eff3;color:lab(93.6804% -2.81307 -3.24092)}.theme-hackerstack .hs-prose h1{font-family:IBM Plex Mono,monospace;font-size:var(--velo-type-display-size);font-weight:var(--velo-type-display-weight);line-height:var(--velo-type-display-line);letter-spacing:var(--velo-type-display-tracking);color:#e5eff3;color:lab(93.6804% -2.81307 -3.24092);border-bottom:var(--hs-headline-underline);margin-bottom:1em;padding-bottom:10px}.theme-hackerstack .hs-prose h2{font-family:IBM Plex Mono,monospace;font-size:var(--velo-type-headline-lg-size);font-weight:var(--velo-type-headline-lg-weight);line-height:var(--velo-type-headline-lg-line);letter-spacing:var(--velo-type-headline-lg-tracking);color:#e5eff3;color:lab(93.6804% -2.81307 -3.24092);margin-top:2.5em;margin-bottom:.75em}.theme-hackerstack .hs-prose h3{font-family:IBM Plex Mono,monospace;font-size:var(--velo-type-headline-md-size);font-weight:var(--velo-type-headline-md-weight);line-height:var(--velo-type-headline-md-line);letter-spacing:var(--velo-type-headline-md-tracking);color:#e5eff3;color:lab(93.6804% -2.81307 -3.24092);margin-top:2em;margin-bottom:.5em}.theme-hackerstack .hs-prose h4{color:#e5eff3;color:lab(93.6804% -2.81307 -3.24092);margin-top:1.75em;margin-bottom:.5em;font-family:IBM Plex Mono,monospace;font-size:16px;font-weight:500}.theme-hackerstack .hs-prose p{margin-bottom:1.4em}.theme-hackerstack .hs-prose a{color:#5dff90;color:lab(90.1395% -70.8973 46.0426);text-underline-offset:3px;text-decoration-thickness:1px;transition:opacity .15s ease-out}.theme-hackerstack .hs-prose a:hover{opacity:.8}.theme-hackerstack .hs-prose blockquote{color:#6e8998;color:lab(55.4502% -7.28089 -11.2129);background:0 0;border-left:3px solid #5dff90;border-left:3px solid lab(90.1395% -70.8973 46.0426);margin:2em 0;padding:12px 0 12px 24px;font-family:Inter,sans-serif;font-size:17px;font-style:italic}.theme-hackerstack .hs-prose ul,.theme-hackerstack .hs-prose ol{margin-bottom:1.4em;padding-left:1.5em}.theme-hackerstack .hs-prose li{margin-bottom:.4em;line-height:1.65}.theme-hackerstack .hs-prose hr{border:none;border-top:1px solid oklch(18.5% .042 264);margin:2.5em 0}.theme-hackerstack .hs-prose table{border-collapse:collapse;width:100%;margin-bottom:1.5em;font-size:14px}.theme-hackerstack .hs-prose th{letter-spacing:.08em;text-transform:uppercase;color:#6e8998;color:lab(55.4502% -7.28089 -11.2129);text-align:left;border-bottom:1px solid #091225;border-bottom:1px solid lab(5.44589% 1.41411 -14.3884);padding:10px 14px;font-family:IBM Plex Mono,monospace;font-size:11px}.theme-hackerstack .hs-prose td{color:#e5eff3;color:lab(93.6804% -2.81307 -3.24092);border-bottom:1px solid #040a17;border-bottom:1px solid lab(2.62783% .627168 -7.89222);padding:10px 14px}.theme-hackerstack .hs-prose tr:last-child td{border-bottom:none}.theme-hackerstack .hs-headline-link{color:#e5eff3;color:lab(93.6804% -2.81307 -3.24092);text-decoration:none;transition:color .15s ease-out}.theme-hackerstack .hs-headline-link:hover{color:#5dff90;color:lab(90.1395% -70.8973 46.0426)}.theme-hackerstack .hs-post-title{letter-spacing:-.02em;border-bottom:var(--hs-headline-underline);padding-bottom:12px;font-family:IBM Plex Mono,monospace;font-weight:600;display:inline-block}.theme-hackerstack .hs-nav-link{color:#6e8998;color:lab(55.4502% -7.28089 -11.2129);letter-spacing:.01em;font-family:Inter,sans-serif;font-size:13px;font-weight:400;text-decoration:none;transition:color .15s ease-out}.theme-hackerstack .hs-nav-link:hover{color:#e5eff3;color:lab(93.6804% -2.81307 -3.24092)}.theme-hackerstack .hs-btn-outline{letter-spacing:.04em;color:#5dff90;color:lab(90.1395% -70.8973 46.0426);cursor:pointer;background:0 0;border:1px solid #5dff9080;border:1px solid lab(90.1395% -70.8973 46.0426/.5);border-radius:3px;align-items:center;padding:6px 16px;font-family:IBM Plex Mono,monospace;font-size:12px;font-weight:500;text-decoration:none;transition:background .15s ease-out,border-color .15s ease-out;display:inline-flex}.theme-hackerstack .hs-btn-outline:hover{background:#5dff9014;background:lab(90.1395% -70.8973 46.0426/.08);border-color:#5dff90cc;border-color:lab(90.1395% -70.8973 46.0426/.8)}.theme-hackerstack .hs-hairline{background-color:#091225;background-color:lab(5.44589% 1.41411 -14.3884);border:none;height:1px}