.language-switcher[data-astro-cid-mrbav5rf]{display:flex;gap:var(--space-2);list-style:none;margin:0;padding:0}.language-switcher[data-astro-cid-mrbav5rf] a[data-astro-cid-mrbav5rf]{display:inline-block;font-family:var(--font-family-mono);font-size:var(--font-size-meta);text-transform:uppercase;letter-spacing:.06em;text-decoration:none;color:var(--color-text-muted);padding:var(--space-2) var(--space-3);border:1px solid var(--color-rule);border-radius:var(--radius-medium);transition:color var(--motion-duration-fast) var(--motion-easing),border-color var(--motion-duration-fast) var(--motion-easing)}@media(hover:hover){.language-switcher[data-astro-cid-mrbav5rf] a[data-astro-cid-mrbav5rf]:hover{color:var(--color-ink);border-color:var(--color-ink)}}.theme-toggle[data-astro-cid-64uwkzkh]{display:inline-grid;place-items:center;width:2.25rem;height:2.25rem;padding:0;border:1px solid var(--color-rule);border-radius:var(--radius-medium);background:transparent;color:var(--color-ink);cursor:pointer;transition:border-color var(--motion-duration-fast) var(--motion-easing),background var(--motion-duration-fast) var(--motion-easing)}@media(hover:hover){.theme-toggle[data-astro-cid-64uwkzkh]:hover{border-color:var(--color-ink);background:var(--color-accent);color:var(--color-accent-ink)}}.theme-toggle[data-astro-cid-64uwkzkh] svg[data-astro-cid-64uwkzkh]{grid-area:1 / 1}.icon-moon[data-astro-cid-64uwkzkh],[data-theme=dark] .icon-sun[data-astro-cid-64uwkzkh]{display:none}[data-theme=dark] .icon-moon[data-astro-cid-64uwkzkh]{display:block}.logo[data-astro-cid-av5tec4r]{display:block;flex-shrink:0}.logo-surface[data-astro-cid-av5tec4r]{fill:var(--color-ink)}.logo-letter[data-astro-cid-av5tec4r]{fill:none;stroke:var(--color-paper);stroke-width:8;stroke-linecap:round;stroke-linejoin:round}.logo-baseline[data-astro-cid-av5tec4r]{fill:var(--color-accent)}[data-theme=dark] .logo-baseline[data-astro-cid-av5tec4r]{fill:var(--color-paper)}.site-header[data-astro-cid-5rz5afgx]{position:sticky;top:0;z-index:10;background:color-mix(in srgb,var(--color-paper) 85%,transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--color-rule)}.bar[data-astro-cid-5rz5afgx]{display:flex;align-items:center;gap:var(--space-6);max-width:var(--content-width-wide);margin-inline:auto;padding:var(--space-4) var(--space-6)}.brand[data-astro-cid-5rz5afgx]{display:inline-flex;align-items:center;gap:var(--space-3);text-decoration:none;font-family:var(--font-family-display);font-weight:700}.brand-name[data-astro-cid-5rz5afgx]{font-size:var(--font-size-base)}.primary[data-astro-cid-5rz5afgx]{margin-inline-start:auto}.primary[data-astro-cid-5rz5afgx] ul[data-astro-cid-5rz5afgx]{display:flex;gap:var(--space-6);list-style:none;padding:0}.primary[data-astro-cid-5rz5afgx] a[data-astro-cid-5rz5afgx]{font-family:var(--font-family-display);font-size:var(--font-size-base);font-weight:500;text-decoration:none;color:var(--color-text-soft);padding-bottom:2px;transition:color var(--motion-duration-fast) var(--motion-easing)}@media(hover:hover){.primary[data-astro-cid-5rz5afgx] a[data-astro-cid-5rz5afgx]:hover{color:var(--color-ink)}}.primary[data-astro-cid-5rz5afgx] a[data-astro-cid-5rz5afgx].current{color:var(--color-accent-ink);background:var(--color-accent);padding:.3em .7em;border-radius:var(--radius-medium)}.actions[data-astro-cid-5rz5afgx]{display:flex;align-items:center;gap:var(--space-3)}@media(max-width:640px){.bar[data-astro-cid-5rz5afgx]{flex-wrap:wrap;gap:var(--space-3) var(--space-4)}.brand-name[data-astro-cid-5rz5afgx]{display:none}.primary[data-astro-cid-5rz5afgx]{order:3;width:100%;margin-inline-start:0}.primary[data-astro-cid-5rz5afgx] ul[data-astro-cid-5rz5afgx]{gap:var(--space-4);flex-wrap:wrap}}.social-links[data-astro-cid-zxdypode]{display:flex;flex-wrap:wrap;gap:var(--space-3);list-style:none;margin:0;padding:0}.social-links[data-astro-cid-zxdypode] a[data-astro-cid-zxdypode]{display:inline-grid;place-items:center;width:2.75rem;height:2.75rem;border:1px solid var(--color-rule);border-radius:var(--radius-medium);color:var(--color-ink);transition:color var(--motion-duration-fast) var(--motion-easing),background var(--motion-duration-fast) var(--motion-easing),border-color var(--motion-duration-fast) var(--motion-easing),transform var(--motion-duration-fast) var(--motion-easing)}@media(hover:hover){.social-links[data-astro-cid-zxdypode] a[data-astro-cid-zxdypode]:hover{color:var(--color-accent-ink);background:var(--color-accent);border-color:var(--color-accent);transform:translateY(-2px)}}.site-footer[data-astro-cid-mtxgg6pp]{border-top:1px solid var(--color-rule);margin-top:var(--space-24)}.bar[data-astro-cid-mtxgg6pp]{display:flex;align-items:center;gap:var(--space-3);max-width:var(--content-width-wide);margin-inline:auto;padding:var(--space-8) var(--space-6)}.bar[data-astro-cid-mtxgg6pp] p[data-astro-cid-mtxgg6pp]{font-family:var(--font-family-mono);font-size:var(--font-size-meta);color:var(--color-text-muted)}.social[data-astro-cid-mtxgg6pp]{margin-inline-start:auto}@media(max-width:540px){.bar[data-astro-cid-mtxgg6pp]{flex-wrap:wrap}.social[data-astro-cid-mtxgg6pp]{margin-inline-start:0;width:100%}}@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/_astro/space-grotesk-vietnamese-wght-normal.D0rl6rjA.woff2) format("woff2-variations");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:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/_astro/space-grotesk-latin-ext-wght-normal.D9tNdqV9.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/_astro/space-grotesk-latin-wght-normal.BhU9QXUp.woff2) format("woff2-variations");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+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-cyrillic-ext-wght-normal.BOeWTOD4.woff2) format("woff2-variations");unicode-range:U+0460-052F,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(/_astro/inter-cyrillic-wght-normal.DqGufNeO.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-greek-ext-wght-normal.DlzME5K_.woff2) format("woff2-variations");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-greek-wght-normal.CkhJZR-_.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-vietnamese-wght-normal.CBcvBZtf.woff2) format("woff2-variations");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:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-latin-ext-wght-normal.DO1Apj_S.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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(/_astro/inter-latin-wght-normal.Dx4kXJAl.woff2) format("woff2-variations");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+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-cyrillic-ext-400-normal.xuaO2J-f.woff2) format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-ext-400-normal.DMdlQ8Kv.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-cyrillic-400-normal.BSMlKf0J.woff2) format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-400-normal.CEL4l2ZJ.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-vietnamese-400-normal.BulugwFq.woff2) format("woff2"),url(/_astro/ibm-plex-mono-vietnamese-400-normal.DDuiU_S-.woff) format("woff");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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-latin-ext-400-normal.BmRBH3aV.woff2) format("woff2"),url(/_astro/ibm-plex-mono-latin-ext-400-normal.D3D2R8hC.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-latin-400-normal.DMJ8VG8y.woff2) format("woff2"),url(/_astro/ibm-plex-mono-latin-400-normal.CvHOgSBP.woff) format("woff");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+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-cyrillic-ext-500-normal.BqneJy0T.woff2) format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-ext-500-normal.BIfNGwUT.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-cyrillic-500-normal.Bq9vWWag.woff2) format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-500-normal.Ael50iVv.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-vietnamese-500-normal.DZ4AoWbu.woff2) format("woff2"),url(/_astro/ibm-plex-mono-vietnamese-500-normal.C8zxqsMH.woff) format("woff");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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-latin-ext-500-normal.CAhNIIs5.woff2) format("woff2"),url(/_astro/ibm-plex-mono-latin-ext-500-normal.CZ70TYgx.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-latin-500-normal.DSY6xOcd.woff2) format("woff2"),url(/_astro/ibm-plex-mono-latin-500-normal.CB9ihrfo.woff) format("woff");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+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--font-family-display: "Space Grotesk Variable", system-ui, sans-serif;--font-family-body: "Inter Variable", system-ui, sans-serif;--font-family-mono: "IBM Plex Mono", ui-monospace, monospace;--font-size-meta: .75rem;--font-size-small: .875rem;--font-size-base: 1.125rem;--font-size-lead: 1.1875rem;--font-size-heading-3: 1.4375rem;--font-size-heading-2: 1.75rem;--font-size-heading-1: 2.625rem;--font-size-display: 3.875rem;--line-height-body: 1.8;--line-height-heading: 1.2;--line-height-tight: 1.05;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-6: 1.5rem;--space-8: 2rem;--space-12: 3rem;--space-16: 4rem;--space-24: 6rem;--radius-small: 5px;--radius-medium: 10px;--radius-large: 14px;--motion-duration-fast: .2s;--motion-duration-base: .35s;--motion-easing: cubic-bezier(.2, .7, .2, 1);--content-width-reading: 42rem;--content-width-wide: 68rem;--color-paper: #ffffff;--color-ink: #0a0a0a;--color-accent: #d8ff3e;--color-accent-ink: #0a0a0a;--color-text-soft: #555555;--color-text-muted: #8a8a8a;--color-rule: #e6e6e6;--color-invert-surface: #0a0a0a;--color-invert-text: #ffffff;--color-invert-muted: #9a9a9a}:root[data-theme=dark]{--color-paper: #0c0c0d;--color-ink: #f2f2f2;--color-accent: #d8ff3e;--color-accent-ink: #0a0a0a;--color-text-soft: #b5b5b5;--color-text-muted: #8a8a8a;--color-rule: #242424;--color-invert-surface: #f2f2f2;--color-invert-text: #0c0c0d;--color-invert-muted: #6a6a6a}*,*:before,*:after{box-sizing:border-box}*{margin:0}html{font-size:106.25%;-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{min-height:100dvh;display:flex;flex-direction:column;background:var(--color-paper);color:var(--color-ink);font-family:var(--font-family-body);font-size:var(--font-size-base);line-height:var(--line-height-body);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;transition:background var(--motion-duration-base) var(--motion-easing),color var(--motion-duration-base) var(--motion-easing)}::selection{background:var(--color-accent);color:var(--color-accent-ink)}img,picture,svg{display:block;max-width:100%}a{color:inherit;text-decoration-color:var(--color-rule);text-underline-offset:.2em}@media(hover:hover){a:hover{text-decoration-color:var(--color-accent)}}:focus-visible{outline:2px solid var(--color-ink);outline-offset:3px;border-radius:2px}main{flex:1;width:100%;max-width:var(--content-width-wide);margin-inline:auto;padding:var(--space-16) var(--space-6) var(--space-24)}main>section+section{margin-top:var(--space-16)}h1,h2,h3{font-family:var(--font-family-display);font-weight:700;line-height:var(--line-height-heading);letter-spacing:-.025em;text-wrap:balance}h1{font-size:var(--font-size-heading-1)}h2{font-size:var(--font-size-heading-2)}h3{font-size:var(--font-size-heading-3)}p{text-wrap:pretty}.lead{font-size:var(--font-size-lead);color:var(--color-text-soft);max-width:var(--content-width-reading)}.lead+.lead{margin-top:var(--space-4)}.label{font-family:var(--font-family-mono);font-size:var(--font-size-meta);letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-muted)}.prose{max-width:var(--content-width-wide)}.prose>*+*{margin-top:var(--space-4)}.prose img{max-width:100%;height:auto}.prose h2{margin-top:var(--space-12);font-size:var(--font-size-heading-2)}.prose h3{margin-top:var(--space-8)}.prose a{text-decoration:underline;text-decoration-color:var(--color-accent);text-decoration-thickness:2px}.prose ul,.prose ol{padding-left:var(--space-6)}.prose li+li{margin-top:var(--space-2)}.prose blockquote{border-left:4px solid var(--color-accent);padding-left:var(--space-4);font-size:var(--font-size-lead);color:var(--color-text-soft)}.prose code{font-family:var(--font-family-mono);font-size:.9em;background:color-mix(in srgb,var(--color-ink) 8%,transparent);padding:.15em .4em;border-radius:var(--radius-small)}.prose pre{font-family:var(--font-family-mono);background:color-mix(in srgb,var(--color-ink) 6%,transparent);border:1px solid var(--color-rule);border-radius:var(--radius-medium);padding:var(--space-4);overflow-x:auto;line-height:1.6}.prose pre code{background:none;padding:0}.intro h1{font-size:clamp(2.5rem,6vw,var(--font-size-display));line-height:var(--line-height-tight)}.intro h1+.lead{margin-top:var(--space-6)}.intro .portrait{width:11rem;height:11rem;border-radius:50%;object-fit:cover;border:1px solid var(--color-rule)}.about-hero{display:flex;align-items:center;gap:var(--space-8);flex-wrap:wrap}.about-hero .portrait{flex-shrink:0}.about-hero-text{flex:1 1 24rem}.intro .lead+.social-links{margin-top:var(--space-8)}.post-list{list-style:none;padding:0;display:grid;gap:var(--space-4)}.principles{list-style:none;padding:0;margin-top:var(--space-6);display:grid;gap:var(--space-3)}.principles li{font-family:var(--font-family-display);font-size:var(--font-size-heading-3);font-weight:500;padding-left:var(--space-4);border-left:3px solid var(--color-accent)}.stack{margin-top:var(--space-6);display:grid;gap:var(--space-6);grid-template-columns:repeat(auto-fit,minmax(15rem,1fr))}.stack dt{font-family:var(--font-family-mono);font-size:var(--font-size-meta);text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-muted);margin-bottom:var(--space-2)}.stack dd{margin:0;color:var(--color-text-soft)}.work-now{display:inline-flex;align-items:center;gap:var(--space-4);margin-top:var(--space-6);text-decoration:none}.work-now-text{display:grid;gap:var(--space-1)}.work-now-company{font-family:var(--font-family-display);font-size:var(--font-size-heading-3);font-weight:700}@media(hover:hover){.work-now:hover .work-now-company{box-shadow:inset 0 -.4em 0 var(--color-accent)}}.work-now-body{margin-top:var(--space-6)}.timeline{list-style:none;padding:0;margin-top:var(--space-8)}.breadcrumb{font-family:var(--font-family-mono);font-size:var(--font-size-meta);color:var(--color-text-muted);margin-bottom:var(--space-6)}.breadcrumb a{text-decoration:none}@media(hover:hover){.breadcrumb a:hover{color:var(--color-ink)}}.article-header{margin-bottom:var(--space-12)}.article-header h1{margin-bottom:var(--space-4)}.js .reveal{opacity:0;transform:translateY(18px);transition:opacity var(--motion-duration-base) var(--motion-easing),transform var(--motion-duration-base) var(--motion-easing)}.js .reveal.is-visible{opacity:1;transform:none}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.js .reveal{opacity:1;transform:none}}
