@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/jetbrains-mono-latin-400-normal.V6pRDFza.woff2) format("woff2"),url(/_astro/jetbrains-mono-latin-400-normal.6-qcROiO.woff) format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/jetbrains-mono-latin-500-normal.BWZEU5yA.woff2) format("woff2"),url(/_astro/jetbrains-mono-latin-500-normal.CJOVTJB7.woff) format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/jetbrains-mono-latin-600-normal.C8RAYTDA.woff2) format("woff2"),url(/_astro/jetbrains-mono-latin-600-normal.BfsvjouI.woff) format("woff")}:root{--bg-primary: #0d1117;--bg-surface: #161b22;--bg-code: #1c2129;--text-primary: #e6edf3;--text-secondary: #8b949e;--accent: #58a6ff;--accent-strong: #1f6feb;--border-subtle: #21262d;--border-muted: #30363d;--font-mono: "JetBrains Mono", "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-text-size-adjust:100%}body{background-color:var(--bg-primary);background-image:radial-gradient(1200px 500px at 50% -220px,rgba(88,166,255,.08),transparent 70%),radial-gradient(700px 300px at 5% 10%,rgba(63,185,80,.04),transparent 75%);background-repeat:no-repeat;color:var(--text-primary);font-family:var(--font-mono);font-size:.938rem;line-height:1.75;font-variant-ligatures:none;font-feature-settings:"liga" 0,"calt" 0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::selection{background:#58a6ff47;color:var(--text-primary)}a:focus-visible,button:focus-visible,input:focus-visible{outline:2px solid rgba(88,166,255,.6);outline-offset:2px;border-radius:4px}.container{max-width:660px;margin:0 auto;padding:4rem 1.5rem 6rem}hr{border:0;border-top:1px solid var(--border-muted);margin:2.25rem 0}hr.cta-separator{border:0;height:1px;background:#30363d;margin:2.5rem 0 2rem}.site-header{margin-bottom:3rem;padding-bottom:.4rem}.site-header h1,.post-header h1{visibility:hidden}.site-header h1.split-flap,.post-header h1.split-flap,.site-header h1.no-anim,.post-header h1.no-anim{visibility:visible}.site-header h1{font-size:1.25rem;font-weight:600;letter-spacing:-.01em;color:var(--text-primary)}.wave-emoji{font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif;font-size:.95em;vertical-align:-.02em}.site-header h1 a{color:inherit;text-decoration:none}.site-header h1 a:hover{color:var(--accent)}.site-bio{margin-top:.75rem;color:var(--text-secondary);font-size:.875rem;line-height:1.7;display:flex;flex-direction:column;gap:.65rem}.site-bio .bio-line{display:block}.site-bio a{color:var(--text-primary);text-decoration:underline;text-decoration-color:#e6edf38c}.site-bio a:hover{color:var(--text-primary);text-decoration-color:#e6edf3cc}.newsletter{background:linear-gradient(180deg,#161b22fa,#161b22eb);border:1px solid var(--border-subtle);border-radius:6px;padding:2rem;margin-bottom:3rem;box-shadow:inset 0 0 0 1px #ffffff05}.newsletter p{color:var(--text-secondary);font-size:.875rem;margin-bottom:1rem;line-height:1.6}.newsletter-form{display:flex;gap:.5rem}.newsletter-form input[type=email]{flex:1;background:var(--bg-primary);border:1px solid var(--border-muted);border-radius:4px;padding:.625rem .75rem;color:var(--text-primary);font-family:var(--font-mono);font-size:.8125rem;outline:none;transition:border-color .2s ease}.newsletter-form input[type=email]::placeholder{color:var(--text-secondary);opacity:.6}.newsletter-form input[type=email]:focus{border-color:var(--accent-strong)}.newsletter-form button{background:var(--accent-strong);color:var(--text-primary);border:none;border-radius:4px;padding:.625rem 1.25rem;font-family:var(--font-mono);font-size:.8125rem;font-weight:500;cursor:pointer;white-space:nowrap;transition:background .2s ease,opacity .2s ease,transform .12s ease,box-shadow .12s ease}.newsletter-form button:hover{background:#388bfd;box-shadow:0 0 0 1px #388bfd59}.newsletter-form button:active{opacity:.92;transform:translateY(1px) scale(.992)}.newsletter-form button:disabled{opacity:.5;cursor:not-allowed}.newsletter-msg{font-size:.8125rem;margin-top:.75rem;line-height:1.5}.newsletter-msg.success{color:#3fb950;animation:success-pop .38s ease}.newsletter-msg.error{color:#f85149}.newsletter.newsletter-success{border-color:#3fb95073;box-shadow:inset 0 0 0 1px #3fb9502e,0 0 0 1px #3fb95014}@keyframes success-pop{0%{transform:translateY(2px);opacity:.7}to{transform:translateY(0);opacity:1}}.posts-heading{font-size:.82rem;text-transform:uppercase;letter-spacing:.08em;color:#6e7681;margin:0 0 .65rem}.post-list{list-style:none}.post-list li{border-bottom:1px solid var(--border-subtle)}.post-list li:last-child{border-bottom:none}.post-list a{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;padding:.875rem .625rem;margin:0 -.625rem;border-radius:6px;color:var(--text-primary);text-decoration:none;transition:color .15s ease,background .15s ease,transform .15s ease}.post-list a:hover{color:var(--accent);background:#8b949e14;transform:translate(2px)}.post-main{min-width:0}.post-title{display:block}.post-excerpt{display:block;margin-top:.2rem;color:#8b949e;font-size:.78rem;line-height:1.45}.post-right{display:flex;flex-direction:column;align-items:flex-end;gap:.35rem;flex-shrink:0}.post-list .post-date{color:var(--text-secondary);font-size:.8125rem;flex-shrink:0}.post-badge{font-size:.66rem;letter-spacing:.04em;color:#3fb950;border:1px solid rgba(63,185,80,.4);background:#3fb9501f;border-radius:999px;padding:.05rem .4rem}.posts-endcap{margin-top:1.4rem;display:flex;align-items:center;gap:.55rem;opacity:.78}.posts-endcap-line{flex:1;height:1px;background:linear-gradient(90deg,transparent,#30363d,transparent)}.posts-endcap-text{font-size:.72rem;color:#6e7681;letter-spacing:.04em;white-space:nowrap}.post-header{margin-bottom:2.5rem}.home-link-top{display:inline-block;margin-bottom:.85rem;color:var(--text-secondary);text-decoration:none;font-size:.8rem;transition:color .15s ease,transform .15s ease}.home-link-top:hover{color:var(--accent);transform:translate(-2px)}.post-header h1{font-size:1.5rem;font-weight:600;letter-spacing:-.02em;line-height:1.35;color:var(--text-primary);margin-bottom:.5rem}.post-header .post-date{color:var(--text-secondary);font-size:.8125rem}.post-header .post-meta{color:#6e7681}.post-body h2{font-size:1.125rem;font-weight:600;color:var(--text-primary);margin-top:2.5rem;margin-bottom:1rem;letter-spacing:-.01em;position:relative}.post-body .heading-anchor{margin-left:.5rem;color:#6e7681;text-decoration:none;opacity:0;transition:opacity .15s ease,color .15s ease}.post-body h2:hover .heading-anchor,.post-body .heading-anchor:focus-visible{opacity:1}.post-body .heading-anchor:hover{color:var(--accent)}.post-body p{margin-bottom:1.25rem;color:var(--text-primary)}.post-body a{color:var(--accent);text-decoration:none;transition:color .15s ease}.post-body a:hover{text-decoration:underline}.post-body strong{font-weight:600;color:var(--text-primary)}.post-body em{font-style:italic}.post-body ul{list-style:none;margin-bottom:1.25rem;padding-left:0}.post-body ul li{position:relative;padding-left:1.25rem;margin-bottom:.375rem}.post-body ul li:before{content:"–";position:absolute;left:0;color:var(--text-secondary)}.post-body pre{position:relative;background:var(--bg-code)!important;border-left:3px solid var(--accent-strong);border-radius:4px;padding:1rem 1.25rem;margin-bottom:1.25rem;overflow-x:auto;font-size:.8125rem;line-height:1.65;-webkit-overflow-scrolling:touch;scrollbar-color:var(--border-muted) var(--bg-code);scrollbar-width:thin}.post-body pre:before,.demo-card:before,.terminal-demo:before{content:"";position:absolute;inset:0;pointer-events:none;background-image:repeating-linear-gradient(to bottom,rgba(255,255,255,.025) 0px,rgba(255,255,255,.025) 1px,transparent 2px,transparent 4px);opacity:.18}.post-body pre code{background:none!important;padding:0;border-radius:0;font-size:inherit;color:var(--text-primary)}.post-body code{background:var(--bg-code);padding:.15em .4em;border-radius:3px;font-size:.875em;color:#e6edf3;font-family:var(--font-mono)}.back-link{display:inline-block;margin-top:2rem;color:var(--text-secondary);text-decoration:none;font-size:.875rem;transition:color .15s ease,transform .15s ease}.back-link:hover{color:var(--accent);transform:translate(-2px)}.site-footer{margin-top:2.25rem;padding-top:.9rem;border-top:1px solid rgba(48,54,61,.55);color:#6e7681;font-size:.72rem;letter-spacing:.03em}.footer-blink{display:inline-block;color:#3fb950;animation:cursor-blink 1s step-end infinite}@keyframes cursor-blink{0%,to{opacity:1}50%{opacity:0}}.footer-rss{color:#6e7681;text-decoration:underline;text-decoration-color:#6e768166;transition:color .15s ease,text-decoration-color .15s ease}.footer-rss:hover{color:var(--accent);text-decoration-color:var(--accent)}.split-flap{perspective:700px}.split-flap-char{display:inline-block;min-width:.42ch;transform-origin:50% 50%;transform:rotateX(-90deg);opacity:0;animation:split-flap-in .2s cubic-bezier(.2,.7,.2,1) forwards;backface-visibility:hidden}.split-flap-space{min-width:.34ch}@keyframes split-flap-in{0%{transform:rotateX(-90deg);opacity:0}60%{transform:rotateX(10deg);opacity:1}to{transform:rotateX(0);opacity:1}}.reveal-init{opacity:0;transform:translateY(6px)}.reveal-init.reveal-in{opacity:1;transform:translateY(0);transition:opacity .45s ease,transform .45s ease}.reading-progress{position:fixed;top:0;left:0;width:100%;height:2px;background:linear-gradient(90deg,#2ea043,#3fb950);transform-origin:left;transform:scaleX(0);z-index:9999;pointer-events:none}.reveal-block{opacity:0;transform:translateY(8px);transition:opacity .45s ease,transform .45s ease}.reveal-block.seen{opacity:1;transform:translateY(0)}.post-body pre.code-ready{position:relative;transition:border-color .2s ease,box-shadow .2s ease}.post-body pre.code-ready:hover{border-left-color:#58a6ff;box-shadow:0 0 0 1px #58a6ff29}.post-body pre.code-ready:after{content:"click to copy";position:absolute;right:10px;top:8px;color:var(--text-secondary);font-size:.68rem;letter-spacing:.02em;opacity:0;transition:opacity .15s ease}.post-body pre.code-ready:hover:after{opacity:.85}.post-body pre.code-ready.copied:after{content:"copied";opacity:1;color:#3fb950}.post-body pre.code-ready.copy-failed:after{content:"copy failed";opacity:1;color:#f85149}.post-body pre::-webkit-scrollbar,.terminal-screen::-webkit-scrollbar{height:10px;width:10px}.post-body pre::-webkit-scrollbar-track,.terminal-screen::-webkit-scrollbar-track{background:var(--bg-code);border-radius:999px}.post-body pre::-webkit-scrollbar-thumb,.terminal-screen::-webkit-scrollbar-thumb{background:var(--border-muted);border-radius:999px;border:2px solid var(--bg-code)}.post-body pre::-webkit-scrollbar-thumb:hover,.terminal-screen::-webkit-scrollbar-thumb:hover{background:#484f58}.demo-card{position:relative;overflow:hidden;background:linear-gradient(180deg,#161b22f2,#161b22d1);border:1px solid var(--border-subtle);border-radius:8px;padding:.9rem;margin:1.2rem 0 1.6rem;box-shadow:inset 0 0 0 1px #ffffff05}.demo-card h3{font-size:.78rem;font-weight:600;color:var(--text-secondary);margin-bottom:.55rem;letter-spacing:.03em;text-transform:uppercase}.demo-canvas{width:100%;height:auto;display:block;border:1px solid var(--border-subtle);border-radius:4px;background:var(--bg-primary)}.terminal-demo{position:relative;overflow:hidden;background:var(--bg-code);border-left:3px solid var(--accent-strong);border-radius:4px;padding:.75rem .9rem;margin:1rem 0 1.25rem}.terminal-demo-title{font-size:.72rem;color:var(--text-secondary);margin-bottom:.45rem;letter-spacing:.02em}.terminal-screen{margin:0;font-size:.76rem;line-height:1.35;color:#c9d1d9;white-space:pre;overflow-x:auto}@media(max-width:600px){.container{padding:2.5rem 1.25rem 4rem}.post-header h1{font-size:1.25rem}.newsletter{padding:1.5rem}.newsletter-form{flex-direction:column}.newsletter-form button{width:100%}.post-list a{flex-direction:column;gap:.35rem}.post-right{flex-direction:row;align-items:center;gap:.5rem}.post-body pre{font-size:.75rem;padding:.875rem 1rem}.terminal-demo{padding:.65rem}.terminal-screen{font-size:.68rem;line-height:1.28}}
