:root{--bg:#1d1c28;--fg:#ededed;--muted:#5a5a64;--note:#7b7d8a;--rule:rgba(129, 140, 248, 0.28);--indigo:#818cf8;--indigo-deep:#7a78ee;--violet:#a78bfa;--pink:#f472b6;--glow:rgba(122, 120, 238, 0.45);--brand:#7a78ee;--brand-deep:#5e4dd6;--brand-glow:rgba(122, 120, 238, 0.45);--email:#a8a29e;--email-accent:#a78bfa;--d-bg:#292a36;--d-bg-top:#2f3040;--d-bg-bot:#22232e;--d-line:rgba(189, 147, 249, 0.14);--d-fg:#efefe7;--d-comment:#6e78a4;--d-cyan:#95eafb;--d-green:#6dfa8a;--d-orange:#ffc28a;--d-pink:#ff8ac9;--d-purple:#9678e8;--d-red:#ff7373;--d-yellow:#f4f0a3;--d-code-bg:rgba(98, 114, 164, 0.18);--d-pre-bg:rgba(0, 0, 0, 0.32);--copy-btn-bg:rgba(0, 0, 0, 0.25);--journal-hover-bg:rgba(129, 140, 248, 0.04);--article-glow:rgba(193, 163, 250, 0.06);--card-shadow:inset 0 1px 0 rgba(193, 163, 250, 0.10),inset 0 -1px 0 rgba(0, 0, 0, 0.28),0 1px 0 rgba(0, 0, 0, 0.4),0 22px 60px -28px rgba(0, 0, 0, 0.65),0 2px 12px -4px rgba(193, 163, 250, 0.20);--content-w:760px;--post-w:1040px;--prose-font:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI','Helvetica Neue',Helvetica,Arial,system-ui,sans-serif}:root[data-theme=light]{--bg:#fafafa;--fg:#18181b;--muted:#b0b0b8;--note:#52525b;--rule:rgba(79, 70, 229, 0.3);--indigo:#4f46e5;--indigo-deep:#4338ca;--violet:#7c3aed;--pink:#db2777;--glow:rgba(67, 56, 202, 0.22);--brand:#4338ca;--brand-deep:#3730a3;--brand-glow:rgba(67, 56, 202, 0.22);--email:#78716c;--email-accent:#7c3aed;--d-bg:#efeef2;--d-bg-top:#f5f4f8;--d-bg-bot:#e6e5eb;--d-line:rgba(124, 58, 237, 0.18);--d-fg:#1a1a23;--d-comment:#6f6e7d;--d-cyan:#0e7490;--d-green:#15803d;--d-orange:#c2410c;--d-pink:#be185d;--d-purple:#6d28d9;--d-red:#b91c1c;--d-yellow:#b45309;--d-code-bg:rgba(109, 40, 217, 0.10);--d-pre-bg:rgba(15, 15, 30, 0.05);--copy-btn-bg:rgba(255, 255, 255, 0.65);--journal-hover-bg:rgba(79, 70, 229, 0.05);--article-glow:rgba(124, 58, 237, 0.06);--card-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.55),inset 0 -1px 0 rgba(0, 0, 0, 0.04),0 1px 0 rgba(67, 56, 202, 0.06),0 22px 60px -28px rgba(67, 56, 202, 0.22),0 2px 12px -4px rgba(67, 56, 202, 0.10)}@media (prefers-color-scheme:light){:root:not([data-theme]){--bg:#fafafa;--fg:#18181b;--muted:#b0b0b8;--note:#52525b;--rule:rgba(79, 70, 229, 0.3);--indigo:#4f46e5;--indigo-deep:#4338ca;--violet:#7c3aed;--pink:#db2777;--glow:rgba(67, 56, 202, 0.22);--brand:#4338ca;--brand-deep:#3730a3;--brand-glow:rgba(67, 56, 202, 0.22);--email:#78716c;--email-accent:#7c3aed;--d-bg:#efeef2;--d-bg-top:#f5f4f8;--d-bg-bot:#e6e5eb;--d-line:rgba(124, 58, 237, 0.18);--d-fg:#1a1a23;--d-comment:#6f6e7d;--d-cyan:#0e7490;--d-green:#15803d;--d-orange:#c2410c;--d-pink:#be185d;--d-purple:#6d28d9;--d-red:#b91c1c;--d-yellow:#b45309;--d-code-bg:rgba(109, 40, 217, 0.10);--d-pre-bg:rgba(15, 15, 30, 0.05);--copy-btn-bg:rgba(255, 255, 255, 0.65);--journal-hover-bg:rgba(79, 70, 229, 0.05);--article-glow:rgba(124, 58, 237, 0.06);--card-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.55),inset 0 -1px 0 rgba(0, 0, 0, 0.04),0 1px 0 rgba(67, 56, 202, 0.06),0 22px 60px -28px rgba(67, 56, 202, 0.22),0 2px 12px -4px rgba(67, 56, 202, 0.10)}}*,::after,::before{box-sizing:border-box;border-radius:0;box-shadow:none;outline:0}.site-footer,.site-header,main{opacity:0;transition:opacity 90ms}body.fonts-ready .site-footer,body.fonts-ready .site-header,body.fonts-ready main{opacity:1}blockquote,body,figure,h1,h2,h3,h4,html,ol,p,pre,ul{margin:0;padding:0}html{background:var(--bg);scroll-behavior:smooth;scrollbar-gutter:stable;-webkit-text-size-adjust:100%;text-size-adjust:100%}body{background:var(--bg);color:var(--fg);font-family:'Space Mono',ui-monospace,'SF Mono',SFMono-Regular,Menlo,Consolas,monospace;font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;min-height:100svh;display:flex;flex-direction:column}#wave{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:0;view-transition-name:wave-bg}.site-header{position:sticky;top:0;z-index:3;width:100%;max-width:var(--content-w);margin:0 auto;padding:clamp(1.25rem,3vw,2rem) clamp(1.25rem,4vw,2.5rem);display:flex;align-items:center;justify-content:space-between;gap:1.5rem}.site-header::before{content:'';position:absolute;inset:0 calc(50% - 50vw);background:linear-gradient(180deg,var(--bg) 0,var(--bg) 65%,transparent 100%);z-index:-1;pointer-events:none}body.post-page .site-header{max-width:var(--post-w);padding-top:clamp(.9rem,2vw,1.4rem);padding-bottom:clamp(1.6rem,3.4vw,2.1rem)}.brand{font-family:'Press Start 2P','Space Mono',monospace;font-size:14px;color:var(--brand-deep);text-decoration:none;letter-spacing:0;line-height:1;display:inline-block;padding:6px 0;overflow:visible;text-shadow:0 0 6px var(--brand-glow),0 0 14px var(--brand-glow);-webkit-font-smoothing:none;-moz-osx-font-smoothing:unset;transition:opacity 220ms;view-transition-name:site-brand}.brand:hover{opacity:.85}.site-nav{display:flex;gap:clamp(1rem,2.5vw,1.5rem)}.site-nav a{font-size:clamp(.85rem, 2vw, .88rem);letter-spacing:.08em;text-transform:lowercase;color:var(--note);text-decoration:none;transition:color 220ms}.site-nav a:hover,.site-nav a[aria-current=page]{color:var(--fg)}main.container{position:relative;z-index:1;flex:1 1 auto;width:100%;max-width:var(--content-w);margin:0 auto;padding:clamp(.75rem,1.6vw,1.2rem) clamp(1.25rem,4vw,2.5rem) clamp(2rem,4vw,3rem)}main.container.post{max-width:var(--post-w)}main.container.post article{display:block;position:relative;width:100%;max-width:100%;background:linear-gradient(180deg,var(--d-bg-top) 0,var(--d-bg) 55%,var(--d-bg-bot) 100%);border:1px solid var(--d-line);box-shadow:var(--card-shadow);padding:clamp(1rem,1.8vw,1.4rem) clamp(1rem,2vw,1.5rem);color:var(--d-fg);overflow:hidden}body.is-journal main.container.post article{background:0 0;border:none;box-shadow:none;padding:0;overflow:visible}body.is-journal main.container.post article::before{display:none}body.is-journal article .post-header{border-bottom-color:var(--rule)}body.is-journal .posts a{border-color:var(--rule)}body.is-journal .posts a:focus-visible,body.is-journal .posts a:hover{border-color:var(--indigo);background:var(--journal-hover-bg)}body.is-journal .posts a:focus-visible .title,body.is-journal .posts a:hover .title{color:var(--indigo);transform:translateX(4px)}body.is-journal .posts .title,body.is-journal article h1.post-title{color:var(--fg)}body.is-journal .posts .date,body.is-journal .posts .readtime{color:var(--note)}body.is-journal article h1.post-title{text-shadow:0 0 6px var(--bg),0 0 6px var(--bg),0 0 12px var(--bg)}body.is-journal .posts a::before{content:'';position:absolute;left:-1px;top:-1px;bottom:-1px;width:0;background:var(--indigo);transition:width 240ms}body.is-journal .posts a:focus-visible::before,body.is-journal .posts a:hover::before{width:3px}main.container.post article::before{content:'';position:absolute;top:0;left:50%;transform:translateX(-50%);width:70%;height:110px;pointer-events:none;background:radial-gradient(ellipse at top,var(--article-glow),transparent 70%)}.posts{list-style:none;margin:clamp(1.5rem,3vw,2rem) 0 0;padding:0;display:flex;flex-direction:column;gap:clamp(.45rem,1.1vw,.65rem)}.posts a{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:clamp(.9rem,2vw,1.3rem);padding:clamp(.65rem,1.4vw,.8rem) clamp(.9rem,2vw,1.15rem);text-decoration:none;color:var(--d-fg);border:1px solid var(--d-line);background:color-mix(in srgb,var(--bg) 88%,transparent);overflow:hidden;transition:border-color 240ms,color 240ms,background 240ms}.posts a:focus-visible,.posts a:hover{outline:0;border-color:var(--d-purple);background:linear-gradient(rgba(189,147,249,.05),rgba(189,147,249,.05)),color-mix(in srgb,var(--bg) 88%,transparent)}.posts a:focus-visible .title,.posts a:hover .title{color:var(--d-cyan)}.posts .date{font-family:'Space Mono',monospace;font-size:clamp(.78rem, 1.5vw, .8rem);letter-spacing:.05em;color:var(--d-comment);white-space:nowrap;font-feature-settings:'tnum'}.posts .title{font-family:'Space Mono',monospace;font-size:clamp(.92rem, 1.7vw, .98rem);font-weight:500;letter-spacing:0;line-height:1.4;color:var(--d-fg);min-width:0;overflow-wrap:anywhere;transition:color 240ms,transform 240ms}.posts .readtime{font-family:'Space Mono',monospace;font-size:clamp(.78rem, 1.5vw, .8rem);letter-spacing:.05em;color:var(--d-comment);white-space:nowrap}@media (max-width:540px){.posts a{grid-template-columns:1fr auto;gap:.4rem 1rem;row-gap:.3rem}.posts .title{grid-row:1;grid-column:1/-1;font-size:.98rem}.posts .date{grid-row:2;grid-column:1;font-size:.76rem}.posts .readtime{grid-row:2;grid-column:2;font-size:.76rem}}.back-link{display:inline-block;font-size:clamp(.85rem, 1.8vw, .88rem);letter-spacing:.08em;text-transform:lowercase;color:var(--note);text-decoration:none;margin-bottom:clamp(2rem,4vw,2.75rem);transition:color 220ms;text-shadow:0 0 6px var(--bg),0 0 6px var(--bg),0 0 12px var(--bg)}.back-link:hover{color:var(--indigo)}article .post-header{margin-bottom:clamp(1.5rem,2.8vw,2rem);padding-bottom:0;border-bottom:none}article h1.post-title{font-family:'Space Mono',ui-monospace,'SF Mono',SFMono-Regular,Menlo,monospace;font-weight:700;font-size:clamp(1.65rem, 4.4vw, 2.15rem);color:var(--d-fg);letter-spacing:-.015em;line-height:1.18;margin:0 0 .75rem;text-shadow:none;text-wrap:pretty}article .post-meta{font-family:'Space Mono',ui-monospace,monospace;font-size:clamp(.78rem, 1.8vw, .82rem);letter-spacing:.04em;color:var(--d-comment);text-transform:lowercase;margin:0;padding:0;white-space:normal;text-align:left;line-height:1.6;contain:layout style}article .post-meta .sep{color:var(--d-line);margin:0 .45em}article .post-meta .post-tags{font-variant-numeric:tabular-nums}article .post-meta .tag{display:inline-block;white-space:nowrap;color:var(--d-orange);letter-spacing:.02em;opacity:.85;transition:color 240ms,opacity 240ms}article .post-meta .tag:hover{color:var(--d-pink);opacity:1}article .post-meta .post-tags .sep::after{content:'\200B'}article .post-meta .tag::before{content:'#';color:var(--d-comment);margin-right:.05em;opacity:.55}@media (max-width:520px){article .post-meta .sep{margin:0 .3em}}article .post-body{font-size:clamp(.95rem, 1.4vw, .96rem);line-height:1.5;color:var(--d-fg)}article .post-body>*+*{margin-top:.75em}article .post-body blockquote,article .post-body li,article .post-body ol,article .post-body p,article .post-body ul{font-family:var(--prose-font);font-size:clamp(1.02rem, 1.55vw, 1.08rem);line-height:1.5;letter-spacing:-.005em}article .post-body h2{font-family:'Space Mono',ui-monospace,'SF Mono',monospace;font-size:clamp(1.2rem, 2.5vw, 1.32rem);font-weight:700;color:var(--d-purple);margin-top:1.9em;margin-bottom:.6em;letter-spacing:-.01em;position:relative;padding-left:.95rem}article .post-body h2::before{content:'';position:absolute;left:0;top:.12em;bottom:.12em;width:5px;background:var(--d-purple)}article .post-body h3{font-family:'Space Mono',ui-monospace,'SF Mono',monospace;font-size:clamp(1.05rem, 2vw, 1.12rem);font-weight:700;color:var(--d-pink);margin-top:1.5em;margin-bottom:.5em;position:relative;padding-left:.8rem}article .post-body h3::before{content:'';position:absolute;left:0;top:.18em;bottom:.18em;width:4px;background:var(--d-pink)}article .post-body a{color:var(--d-cyan);text-decoration:underline;text-decoration-color:rgba(139,233,253,0.35);text-underline-offset:3px;transition:text-decoration-color 220ms}article .post-body a:hover{text-decoration-color:var(--d-cyan)}article .post-body strong{font-weight:700;color:var(--d-orange)}article .post-body em{font-style:italic;color:var(--d-yellow)}article .post-body code{font-family:'Space Mono',monospace;font-size:.86em;background:var(--d-code-bg);color:var(--d-green);padding:.12em .4em}article .post-body .code-block{position:relative}article .post-body pre{background:var(--d-pre-bg);padding:clamp(.5rem,1.1vw,.7rem) clamp(.7rem,1.4vw,.95rem);padding-right:3.5rem;overflow-x:auto;font-size:clamp(.85rem, 1.8vw, .9rem);line-height:1.5;border-left:2px solid var(--d-purple);color:var(--d-fg);scrollbar-width:thin;scrollbar-color:var(--d-purple) transparent}article .post-body pre::-webkit-scrollbar{height:6px}article .post-body pre::-webkit-scrollbar-track{background:0 0}article .post-body pre::-webkit-scrollbar-thumb{background:var(--d-purple);border-radius:0;opacity:.6}article .post-body pre::-webkit-scrollbar-thumb:hover{background:var(--d-pink)}article .post-body pre code{background:0 0;padding:0;color:var(--d-fg)}.copy-btn{position:absolute;top:.5rem;right:.5rem;padding:.2rem .55rem;font-family:'Space Mono',monospace;font-size:.66rem;letter-spacing:.06em;text-transform:lowercase;color:var(--d-comment);background:var(--copy-btn-bg);border:1px solid var(--d-line);cursor:pointer;opacity:0;transition:opacity .2s,color .2s,border-color .2s}.copy-btn:focus-visible,article .post-body .code-block:focus-within .copy-btn,article .post-body .code-block:hover .copy-btn{opacity:1}.copy-btn:focus-visible,.copy-btn:hover{color:var(--d-cyan);border-color:var(--d-cyan);outline:0}.copy-btn.copied{color:var(--d-green);border-color:var(--d-green)}article .post-body h2,article .post-body h3{scroll-margin-top:4rem}article .post-body .headerlink{margin-left:.45em;text-decoration:none;color:var(--d-comment);font-weight:400;font-size:.7em;letter-spacing:0;opacity:0;transition:opacity .2s,color .2s}article .post-body .headerlink:focus-visible,article .post-body h2:hover .headerlink,article .post-body h3:hover .headerlink{opacity:.55}article .post-body .headerlink:focus-visible,article .post-body .headerlink:hover{opacity:1!important;color:var(--d-cyan);outline:0}article .post-body blockquote{border-left:2px solid var(--d-purple);padding-left:clamp(.9rem,2vw,1.25rem);color:var(--d-comment);font-style:italic}article .post-body ol,article .post-body ul{padding-left:1.5rem}article .post-body li+li{margin-top:.2em}article .post-body ul li::marker{color:var(--d-purple)}article .post-body ol li::marker{color:var(--d-purple)}article .post-body hr{border:0;border-top:1px solid var(--d-line);margin:2.2em 0}article .post-body .table-wrap{overflow-x:auto;scrollbar-width:thin;scrollbar-color:var(--d-purple) transparent;margin:1.2em 0}article .post-body table{width:100%;min-width:360px;border-collapse:collapse;font-family:'Space Mono',monospace;font-size:clamp(.85rem, 1.7vw, .9rem);line-height:1.55;table-layout:fixed}article .post-body thead{background:rgba(150,120,232,.1)}article .post-body th{text-align:left;font-weight:700;padding:.55rem .85rem;color:var(--d-fg);letter-spacing:.02em;border-bottom:1px solid var(--d-purple);white-space:nowrap}article .post-body td{padding:.45rem .85rem;color:var(--d-fg);border-bottom:1px solid var(--d-line);vertical-align:top}article .post-body tbody tr:last-child td{border-bottom:0}article .post-body tbody tr:hover{background:rgba(150,120,232,.05)}article .post-body td code{font-size:.82em}article .post-body figure{margin:1.4em 0}article .post-body figure img,article .post-body figure svg{display:block;width:100%;height:auto;background:var(--d-pre-bg);border-left:2px solid var(--d-purple);padding:clamp(.6rem,1.4vw,.95rem) clamp(.7rem,1.5vw,1rem);box-sizing:border-box}article .post-body figcaption{font-family:'Space Mono',monospace;font-size:clamp(.78rem, 1.5vw, .82rem);letter-spacing:.06em;text-transform:lowercase;color:var(--d-comment);margin-top:.5rem;text-align:center}.post-end{margin-top:clamp(2rem,4vw,3rem);padding-top:clamp(1rem,2vw,1.5rem);border-top:1px solid var(--d-line);display:flex;justify-content:space-between;font-family:'Space Mono',monospace;font-size:clamp(.82rem, 1.7vw, .86rem);letter-spacing:.06em;text-transform:lowercase}.post-end a{color:var(--d-comment);text-decoration:none;transition:color 220ms}.post-end a:hover{color:var(--d-cyan)}.site-footer{position:relative;z-index:1;display:flex;justify-content:center;padding:clamp(1.5rem,3.5vw,2.25rem) clamp(1.25rem,4vw,2.5rem);view-transition-name:site-footer}.site-footer a{font-family:'Space Mono',monospace;font-size:.8rem;letter-spacing:.06em;text-decoration:none;padding:.3rem 0;border-bottom:1px solid transparent;transition:border-color 280ms,opacity 280ms;opacity:.92;color:var(--email-accent);text-shadow:0 0 6px var(--bg),0 0 6px var(--bg),0 0 12px var(--bg)}.site-footer a:hover{border-bottom-color:var(--rule);opacity:1}@media (prefers-reduced-motion:reduce){.back-link,.brand,.post-end a,.posts a,.posts a .title,.site-footer a,.site-nav a,article .post-body a{transition:none!important}html{scroll-behavior:auto}}.brand,.site-footer a,.site-nav a,article *{font-synthesis:none}