@layer reset{*,:before,:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%}body{-webkit-font-smoothing:antialiased}img,picture,video,canvas,svg{max-width:100%;display:block}input,button,textarea,select{font:inherit;color:inherit}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}ul[class],ol[class]{padding:0;list-style:none}a{color:inherit}[hidden]{display:none!important}}@layer tokens{:root{--n-50:#fafafa;--n-100:#f5f5f5;--n-200:#e5e5e5;--n-300:#d4d4d4;--n-400:#a3a3a3;--n-500:#737373;--n-600:#525252;--n-700:#404040;--n-800:#262626;--n-900:#171717;--n-950:#0a0a0a;--indigo-200:#c7d2fe;--indigo-400:#818cf8;--indigo-500:#6366f1;--sky-100:#e0f2fe;--sky-300:#7dd3fc;--sky-400:#38bdf8;--sky-600:#0284c7;--violet-200:#ddd6fe;--violet-300:#c4b5fd;--violet-400:#a78bfa;--violet-500:#8b5cf6;--violet-600:#7c3aed;--purple-400:#c084fc;--purple-500:#a855f7;--fuchsia-300:#f0abfc;--brand-ts:#3178c6;--brand-go:#00add8;--brand-java:#b07219;--brand-rs:#dea584;--brand-sc:#c22d40;--brand-rx:#61dafb;--brand-sv:#ff3e00;--brand-nd:#5fa04e;--brand-so:#2c4f7c;--brand-vu:#41b883;--brand-py:#3776ab;--mark-yes:#16a34a;--mark-no:#dc2626;--mark-part:#d97706;--mark-yes-dark:#4ade80;--mark-no-dark:#f87171;--mark-part-dark:#fbbf24;--surface:#fff;--surface-sunken:var(--n-50);--surface-raised:#fff;--border:var(--n-200);--border-strong:var(--n-300);--ink:var(--n-900);--ink-body:#374151;--ink-muted:var(--n-500);--ink-faint:var(--n-400);--code-bg:#24292e;--code-ring:transparent;--code-fg:#e1e4e8;--code-inline-bg:#f3f3f0;--code-inline-fg:var(--n-900);--color-primary:var(--brand-ts);--primary-ink:#fff;--surface-hover:var(--n-50);--action-bg:var(--n-800);--action-hover:var(--n-700);--action-ink:#fff;--accent-soft:color-mix(in srgb, var(--color-primary) 12%, var(--surface));--accent-ink:color-mix(in srgb, var(--color-primary) 55%, var(--ink));--success-ink:#2d7a52;--warning-ink:#a86c19;--danger-ink:#b65d46;--danger:var(--danger-ink);--selection-bg:color-mix(in srgb, var(--color-primary) 28%, var(--surface));--header-bg:#000;--header-ink:#fff;--header-muted:var(--n-400);--header-hover:#ffffff1a;--code-muted:#959da5;--code-border:#ffffff1a;--code-hover:#ffffff14;--code-shadow:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--panel-bg:linear-gradient(135deg, color-mix(in srgb, var(--indigo-500) 6%, var(--surface)), color-mix(in srgb, var(--sky-600) 5%, var(--surface)));--badge-pattern:color-mix(in srgb, var(--indigo-500) 75%, var(--ink));--badge-pattern-bg:color-mix(in srgb, var(--indigo-500) 15%, transparent);--badge-architecture:color-mix(in srgb, var(--sky-600) 78%, var(--ink));--badge-architecture-bg:color-mix(in srgb, var(--sky-600) 16%, transparent);--badge-technique:color-mix(in srgb, #0891b2 75%, var(--ink));--badge-technique-bg:#0891b229;--badge-structure:color-mix(in srgb, var(--sky-600) 75%, var(--ink));--badge-structure-bg:color-mix(in srgb, var(--sky-600) 12%, var(--surface));--badge-concept:#0f766e;--badge-concept-bg:#f0fdfa;--badge-choice:#92400e;--badge-choice-bg:#fffbeb;--hero-gradient:linear-gradient(to right, var(--indigo-500), var(--sky-600), var(--indigo-400))}[data-lang=ts]{--color-primary:var(--brand-ts);--primary-ink:#fff}[data-lang=go]{--color-primary:var(--brand-go);--primary-ink:#04222a}[data-lang=java]{--color-primary:var(--brand-java);--primary-ink:#fff}[data-lang=rust]{--color-primary:var(--brand-rs);--primary-ink:#2a1a12}[data-lang=scala]{--color-primary:var(--brand-sc);--primary-ink:#fff}[data-lang=python]{--color-primary:var(--brand-py);--primary-ink:#fff}:root[data-theme=dark]{--surface:#191919;--surface-sunken:#191919;--surface-raised:#1f1f1f;--border:var(--n-800);--border-strong:#333;--ink:#fff;--ink-body:var(--n-300);--ink-muted:var(--n-400);--ink-faint:var(--n-500);--code-bg:#24292e;--code-ring:#d4d4d81a;--code-inline-bg:#282a36;--code-inline-fg:#fff;--surface-hover:var(--n-800);--action-bg:var(--n-100);--action-hover:#fff;--action-ink:var(--n-900);--accent-ink:color-mix(in srgb, var(--color-primary) 75%, var(--ink));--success-ink:#6fc79a;--warning-ink:#d9a35a;--danger-ink:#d97575;--danger:var(--danger-ink);--header-bg:var(--n-900);--code-shadow:inset 0 0 0 1px var(--code-ring);--badge-pattern:var(--indigo-200);--badge-architecture:var(--sky-300);--badge-technique:#67e8f9;--badge-structure:var(--sky-300);--badge-concept:#5eead4;--badge-concept-bg:#16312e;--badge-choice:#fcd34d;--badge-choice-bg:#332a1d;--hero-gradient:linear-gradient(to right, var(--indigo-200), var(--sky-400), var(--indigo-200))}:root{--font-display:"Lexend Variable", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-body:"Inter Variable", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;--text-2xs:.6875rem;--text-xs:.75rem;--text-sm:.8125rem;--text-base:.875rem;--text-md:1rem;--text-lg:1.125rem;--text-xl:1.25rem;--text-2xl:1.5rem;--text-3xl:1.875rem;--leading-tight:1.2;--leading-snug:1.45;--leading-body:1.6;--leading-prose:1.75;--tracking-tight:-.02em;--tracking-hero:-.035em;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-7:1.75rem;--space-8:2rem;--space-9:2.25rem;--space-10:2.5rem;--space-12:3rem;--space-16:4rem;--space-20:5rem;--space-24:6rem;--shell-max:88rem;--measure:44rem;--rail-w:16rem;--rail-w-xl:18rem;--header-h:3.5rem;--radius-xs:.25rem;--radius-sm:.375rem;--radius-md:.5rem;--radius-lg:.75rem;--radius-xl:1rem;--radius-pill:9999px;--hairline:1px;--dur-instant:.1s;--dur-fast:.15s;--dur-base:.25s;--dur-slow:.5s;--ease-out:cubic-bezier(.2, .8, .2, 1);--ease-standard:ease-in-out}@media (prefers-reduced-motion:reduce){:root{--dur-instant:0s;--dur-fast:0s;--dur-base:0s;--dur-slow:0s}}:root{--z-below:-1;--z-base:0;--z-raised:1;--z-sticky:20;--z-header:50;--z-dropdown:60;--z-overlay:80;--viz-primary:var(--accent-ink);--viz-secondary:#7c3aed;--viz-tertiary:#0f766e;--viz-grid:var(--border);--viz-edge:#929292;--viz-call-1:var(--accent-ink);--viz-call-2:var(--brand-java);--viz-call-3:var(--viz-tertiary);--viz-call-4:var(--viz-secondary);--viz-call-5:var(--sky-600);--viz-call-6:var(--warning-ink);--viz-call-7:var(--danger-ink)}:root[data-theme=dark]{--viz-secondary:#c4b5fd;--viz-tertiary:#5eead4;--viz-edge:#737373;--viz-call-2:var(--brand-rs);--viz-call-5:var(--sky-300)}:root{--film-bg:#f6f8fc;--film-panel:#edf2f9;--film-label-bg:#fff;--film-label-border:#d7e3f4;--film-ink:#203752;--film-muted:#596f8a;--film-accent:#356db4;--film-change:#805f2b;--film-route:#9db7d6;--film-transfer:#6d9fdc;--film-item-1:#7b9dc7;--film-item-2:#5595dd;--film-item-3:#4c7bc9;--film-item-4:#7e86d5;--film-progress:#6aa4ec;--film-play:#3977c9;--film-play-hover:#2764b6;--film-play-ink:#fff;--film-play-shadow:#3977c930;--film-step:#6e9fdd;--film-dot:#5b98e6;--film-dot-halo:#5b98e612;--film-shadow:#102542;--film-panel-shadow:#1e47723b;--film-window-dot-1:#8ea7c7;--film-window-dot-2:#a6b7cd;--film-window-dot-3:#c0ccdc}:root[data-theme=dark]{--film-bg:#222a35;--film-panel:#27303d;--film-label-bg:#2b3543;--film-label-border:#3f4f64;--film-ink:#e3efff;--film-muted:#91a9c7;--film-accent:#90b8ee;--film-change:#dfc182;--film-route:#527295}:root[data-site=primerian]{--brand-haskell:#8f74b5;--primerian-emerald-700:#047857;--primerian-teal-700:#0f766e;--primerian-green-700:#15803d;--primerian-emerald-200:#a7f3d0;--primerian-emerald-300:#6ee7b7;--primerian-teal-300:#5eead4;--primerian-lime-300:#bef264;--color-primary:var(--primerian-emerald-700);--hero-gradient:linear-gradient(to right, var(--primerian-emerald-700), var(--primerian-teal-700), var(--primerian-green-700));--panel-bg:linear-gradient(135deg, color-mix(in srgb, var(--color-primary) 6%, var(--surface)), color-mix(in srgb, var(--primerian-teal-700) 5%, var(--surface)))}:root[data-site=primerian][data-theme=dark]{--color-primary:var(--primerian-emerald-300);--hero-gradient:linear-gradient(to right, var(--primerian-emerald-200), var(--primerian-teal-300), var(--primerian-lime-300))}}@layer base{html{font-feature-settings:"ss01";scroll-behavior:smooth;scroll-padding-top:calc(var(--header-h) + var(--space-8));--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;background:var(--surface)}html[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}body{background:var(--surface);min-width:320px;color:var(--ink-body);font-family:var(--font-body);font-size:var(--text-md);line-height:var(--leading-body)}h1,h2,h3,h4{font-family:var(--font-display);color:var(--ink);font-weight:500;line-height:var(--leading-tight)}code,kbd,samp,pre{font-family:var(--font-mono)}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button:not(:disabled),summary{cursor:pointer}button:disabled{cursor:not-allowed}::selection{background:var(--selection-bg);color:var(--ink)}:focus-visible{outline:2px solid var(--accent-ink);outline-offset:4px}@media (width<=48rem){html{scroll-padding-top:8rem}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}}@layer components{.icon-button.svelte-jtqxrb{border-radius:var(--radius-pill);width:2.75rem;height:2.75rem;color:var(--ink-body);background:0 0;border:0;flex:none;place-items:center;padding:0;display:grid}.icon-button.svelte-jtqxrb>svg{width:1.15rem;height:1.15rem}.icon-button.svelte-jtqxrb:hover:enabled{background:var(--surface-hover)}.icon-button[data-tone=header].svelte-jtqxrb{color:var(--header-ink)}.icon-button[data-tone=header].svelte-jtqxrb:hover:enabled{background:var(--header-hover)}.icon-button[data-tone=header].svelte-jtqxrb:focus-visible{outline-color:var(--header-ink)}.icon-button.svelte-jtqxrb:disabled{opacity:.4}.skip-link.svelte-1ik5frs{top:var(--space-3);left:var(--space-3);z-index:var(--z-overlay);background:var(--action-bg);color:var(--action-ink);padding:var(--space-3) var(--space-5);border-radius:var(--radius-md);position:fixed;transform:translateY(-200%)}.skip-link.svelte-1ik5frs:focus{transform:translateY(0)}main.svelte-1ik5frs:focus{outline:none}}@layer utilities{.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./inter-cyrillic-ext-wght-normal.BOeWTOD4.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./inter-cyrillic-wght-normal.DqGufNeO.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./inter-greek-ext-wght-normal.DlzME5K_.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./inter-greek-wght-normal.CkhJZR-_.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./inter-vietnamese-wght-normal.CBcvBZtf.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./inter-latin-ext-wght-normal.DO1Apj_S.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 Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./inter-latin-wght-normal.Dx4kXJAl.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:Lexend Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./lexend-vietnamese-wght-normal.RvljkFvg.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Lexend Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./lexend-latin-ext-wght-normal.B6JQhE1e.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:Lexend Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./lexend-latin-wght-normal.ci0D1wrL.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}.site-footer.svelte-103wd8v{border-top:var(--hairline) solid var(--border);margin-top:var(--space-20);padding-block:var(--space-8)}.inner.svelte-103wd8v{justify-content:space-between;gap:var(--space-4);color:var(--ink-muted);font-size:var(--text-base);flex-wrap:wrap;display:flex}p.svelte-103wd8v{max-width:36rem}nav.svelte-103wd8v{gap:var(--space-5);flex-wrap:wrap;display:flex}a.svelte-103wd8v{color:var(--ink);text-decoration:none}a.svelte-103wd8v:hover{color:var(--accent-ink)}.brand-mark.svelte-3wdkl3{color:var(--color-primary);flex:none;display:block}.site-header.svelte-1t3llih{z-index:var(--z-header);background:var(--header-bg);color:var(--header-ink);border-bottom:var(--hairline) solid var(--header-hover);position:sticky;top:0}.inner.svelte-1t3llih{align-items:center;gap:var(--space-4);min-height:var(--header-h);display:flex}.brand.svelte-1t3llih{min-height:44px;font-family:var(--font-display);font-weight:600;font-size:var(--text-lg);letter-spacing:var(--tracking-tight);white-space:nowrap;color:var(--header-ink);align-items:center;gap:.45rem;text-decoration:none;display:inline-flex}.wordmark.svelte-1t3llih{align-items:baseline;display:inline-flex}.dot.svelte-1t3llih{color:var(--color-primary)}.thin.svelte-1t3llih{color:var(--header-muted);font-weight:300}nav.svelte-1t3llih{justify-content:flex-end;align-items:center;gap:var(--space-4);flex:1;display:flex}nav.svelte-1t3llih a:where(.svelte-1t3llih),.sign-in.svelte-1t3llih{padding-block:var(--space-3);color:var(--header-ink);font-size:var(--text-base);text-decoration:none}nav.svelte-1t3llih a:where(.svelte-1t3llih):hover,.sign-in.svelte-1t3llih:hover{color:var(--header-muted)}nav.svelte-1t3llih a[aria-current=page]:where(.svelte-1t3llih){text-underline-offset:5px;text-decoration:underline;-webkit-text-decoration-color:var(--color-primary);text-decoration-color:var(--color-primary)}a.svelte-1t3llih:focus-visible,summary.svelte-1t3llih:focus-visible{outline-color:var(--header-ink)}.end.svelte-1t3llih{align-items:center;gap:var(--space-2);display:flex}.account.svelte-1t3llih{position:relative}.account.svelte-1t3llih summary:where(.svelte-1t3llih){cursor:pointer;list-style:none}.account.svelte-1t3llih summary:where(.svelte-1t3llih)::-webkit-details-marker{display:none}.avatar.svelte-1t3llih{border-radius:var(--radius-pill);background:var(--color-primary);width:2rem;height:2rem;color:var(--surface);font-weight:600;font-size:var(--text-sm);place-items:center;display:grid}.menu.svelte-1t3llih{right:0;top:calc(100% + var(--space-2));gap:var(--space-1);min-width:15rem;padding:var(--space-3);border:var(--hairline) solid var(--border);border-radius:var(--radius-md);background:var(--surface-raised);color:var(--ink-body);display:grid;position:absolute;box-shadow:0 10px 30px #00000026}.menu.svelte-1t3llih p:where(.svelte-1t3llih){padding:var(--space-2);font-size:var(--text-sm);display:grid}.menu.svelte-1t3llih p:where(.svelte-1t3llih) span:where(.svelte-1t3llih){color:var(--ink-muted);font-size:var(--text-xs)}.menu.svelte-1t3llih button:where(.svelte-1t3llih){width:100%;padding:var(--space-2);border-radius:var(--radius-sm);color:var(--ink);text-align:left;font:inherit;font-size:var(--text-sm);background:0 0;border:0}.menu.svelte-1t3llih button:where(.svelte-1t3llih):hover{background:var(--surface-hover)}@media (width<=63.99rem){.inner.svelte-1t3llih{justify-content:space-between;gap:0 var(--space-3);flex-wrap:wrap}nav.svelte-1t3llih{justify-content:space-between;gap:var(--space-2);border-top:var(--hairline) solid var(--header-hover);flex-wrap:wrap;flex-basis:100%;order:1}nav.svelte-1t3llih a:where(.svelte-1t3llih){font-size:var(--text-xs)}}
