:root{--text:#9ca3af;--text-h:#f3f4f6;--bg:#16171d;--border:#9e7cff33;--code-bg:#1f2028;--accent:#9e7cff;--accent-yellow:#f6ce3a;--accent-bg:#9e7cff26;--accent-border:#9e7cff80;--social-bg:#2f303a80;--shadow:#0006 0 10px 15px -3px, #00000040 0 4px 6px -2px;--sans:system-ui, "Segoe UI", Roboto, sans-serif;--heading:system-ui, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, Consolas, monospace;font:18px/145% var(--sans);letter-spacing:.18px;color-scheme:dark;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%}html,body{max-width:100%;overflow-x:clip}*,:before,:after{box-sizing:border-box;min-width:0}img,video,svg{max-width:100%}a,button,[role=button],select,label[for]{cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation}[data-theme=light]{--text:#7a6fae;--text-h:#08060d;--bg:#eae3f7;--border:#7a6fae4d;--code-bg:#ffffffa6;--accent:#9e7cff;--accent-yellow:#f6ce3a;--accent-bg:#9e7cff1f;--accent-border:#9e7cff80;--social-bg:#ffffff73;--shadow:#7a6fae33 0 10px 15px -3px, #7a6fae1a 0 4px 6px -2px;color-scheme:light}[data-theme=dark]{--text:#9ca3af;--text-h:#f3f4f6;--bg:#16171d;--border:#9e7cff33;--code-bg:#1f2028;--accent:#9e7cff;--accent-yellow:#f6ce3a;--accent-bg:#9e7cff26;--accent-border:#9e7cff80;--social-bg:#2f303a80;--shadow:#0006 0 10px 15px -3px, #00000040 0 4px 6px -2px;color-scheme:dark}.shell{z-index:1;text-align:center;border-inline:1px solid var(--border);box-sizing:border-box;flex-direction:column;align-items:center;gap:14px;width:1280px;max-width:100%;min-height:100dvh;margin:0 auto;padding:24px;display:flex;position:relative;overflow-x:clip}@media (width<=640px){:root{font-size:15px}.shell{border-inline:none;gap:12px;padding:16px 14px 24px}}.crosshair{font-family:var(--mono);color:var(--text);opacity:.7;pointer-events:none;font-size:18px;line-height:1;position:absolute}.crosshair-tl{top:10px;left:0;transform:translate(-50%)}.crosshair-tr{top:10px;right:0;transform:translate(50%)}.crosshair-bl{bottom:10px;left:0;transform:translate(-50%)}.crosshair-br{bottom:10px;right:0;transform:translate(50%)}@media (width<=640px){.crosshair{opacity:.5;font-size:14px}.crosshair-tl{top:6px;left:6px;transform:none}.crosshair-tr{top:6px;right:6px;transform:none}.crosshair-bl{bottom:6px;left:6px;transform:none}.crosshair-br{bottom:6px;right:6px;transform:none}}body{color:var(--text);background:0 0;margin:0}h1,h2{font-family:var(--heading);color:var(--text-h);font-weight:500}h1{letter-spacing:-1.68px;margin:32px 0;font-size:56px}@media (width<=1024px){h1{margin:20px 0;font-size:36px}}@media (width<=640px){h1{letter-spacing:-.8px;overflow-wrap:break-word;text-wrap:balance;margin:16px 0;font-size:28px;line-height:1.15}}@media (width<=380px){h1{font-size:24px}}h2{letter-spacing:-.24px;margin:0 0 8px;font-size:24px;line-height:118%}@media (width<=1024px){h2{font-size:20px}}@media (width<=640px){h2{font-size:18px;line-height:1.3}}p{margin:0}code,.counter{font-family:var(--mono);color:var(--text-h);border-radius:4px}.counter{display:inline-flex}code{background:var(--code-bg);overflow-wrap:break-word;word-break:break-word;-webkit-box-decoration-break:clone;box-decoration-break:clone;padding:4px 8px;font-size:15px;line-height:135%;display:inline}@media (width<=640px){code{padding:3px 6px;font-size:13.5px}}.blob-container{pointer-events:none;z-index:-1;position:fixed;inset:0;overflow:hidden}.blob{will-change:transform, border-radius;border-radius:50%;position:absolute}.blob-purple{filter:blur(64px);opacity:.6;background:radial-gradient(circle at 40% 40%,#9e7cff 0%,#9e7cff66 55%,#0000 80%);width:65vmin;height:65vmin;animation:14s ease-in-out infinite blob-drift-purple;top:-18vmin;left:-18vmin}.blob-yellow{filter:blur(64px);opacity:.5;background:radial-gradient(circle at 60% 60%,#f6ce3a 0%,#f6ce3a66 55%,#0000 80%);width:52vmin;height:52vmin;animation:18s ease-in-out infinite blob-drift-yellow;bottom:-14vmin;right:-14vmin}@keyframes blob-drift-purple{0%,to{border-radius:62% 38% 46% 54%/60% 44% 56% 40%;transform:translate(0)scale(1)}25%{border-radius:40% 60% 54% 46%/48% 60% 40% 52%;transform:translate(6vw,8vh)scale(1.06)}50%{border-radius:54% 46% 38% 62%/44% 54% 46% 56%;transform:translate(10vw,16vh)scale(.96)}75%{border-radius:46% 54% 62% 38%/56% 40% 60% 44%;transform:translate(-4vw,8vh)scale(1.03)}}@keyframes blob-drift-yellow{0%,to{border-radius:44% 56% 62% 38%/56% 42% 58% 44%;transform:translate(0)scale(1)}30%{border-radius:60% 40% 46% 54%/42% 58% 44% 56%;transform:translate(-8vw,-6vh)scale(1.05)}60%{border-radius:38% 62% 54% 46%/58% 44% 56% 42%;transform:translate(-13vw,-13vh)scale(.95)}}@media (prefers-reduced-motion:reduce){.blob-purple,.blob-yellow{animation:none}}@media (width<=640px){.blob-purple,.blob-yellow{filter:blur(48px)}.blob-purple{width:52vmin;height:52vmin}.blob-yellow{width:42vmin;height:42vmin}}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}.blob-purple{opacity:.35}.blob-yellow{opacity:.25}[data-theme=dark] .blob-purple{opacity:.35}[data-theme=dark] .blob-yellow{opacity:.25}[data-theme=light] .blob-purple{opacity:.6}[data-theme=light] .blob-yellow{opacity:.5}.theme-toggle{z-index:100;background:var(--social-bg);border:1px solid var(--border);width:40px;height:40px;color:var(--accent);-webkit-backdrop-filter:blur(12px);border-radius:0;justify-content:center;align-items:center;padding:0;transition:border-color .15s,background .15s;display:flex;position:fixed;top:16px;right:16px}.theme-toggle:hover{border-color:var(--accent);background:var(--accent-bg)}@media (width<=640px){.theme-toggle{width:44px;height:44px;top:calc(10px + env(safe-area-inset-top,0px));right:calc(10px + env(safe-area-inset-right,0px))}}.site-title{font-family:var(--mono);letter-spacing:-1px;margin:0 0 4px;font-size:46px;font-weight:700}.site-title a{color:inherit;text-decoration:none}.site-title-link{color:inherit;align-items:baseline;gap:10px;line-height:1;text-decoration:none;display:inline-flex}.site-logo{flex-shrink:0;align-self:baseline;display:block;overflow:visible}.logo-text{letter-spacing:-1px;color:var(--text-h);overflow-wrap:break-word;align-items:baseline;line-height:1;display:inline-flex}.site-title:after{content:"";background:var(--accent);width:56px;height:8px;box-shadow:60px 0 0 var(--accent-yellow);margin:26px auto 0;display:block;transform:translate(-30px)}@media (width<=640px){.site-title{letter-spacing:-.5px;max-width:100%;padding-inline:52px;font-size:32px}.site-title-link{gap:8px;max-width:100%}.site-logo{width:26px;height:21px}.logo-text{letter-spacing:-.5px}.site-title:after{width:44px;height:6px;box-shadow:48px 0 0 var(--accent-yellow);margin:18px auto 0;transform:translate(-24px)}}@media (width<=380px){.site-title{padding-inline:48px;font-size:28px}}.kicker{font-family:var(--mono);letter-spacing:3px;text-transform:uppercase;color:var(--accent);overflow-wrap:break-word;max-width:100%;font-size:12px;font-weight:600;line-height:1.6}@media (width<=640px){.kicker{letter-spacing:2px;padding-inline:8px;font-size:11px}}.kicker:before{content:"// ";opacity:.6}.post-list{flex-direction:column;gap:14px;width:min(860px,100%);margin:12px 0 0;padding:0;list-style:none;display:flex}.post-card{text-align:left;font-family:var(--mono);color:var(--text-h);background:var(--code-bg);border:1px solid var(--border);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(12px)saturate(1.4);border-radius:0;padding:14px 16px;text-decoration:none;transition:border-color .15s,box-shadow .15s;display:block}.post-card:hover{border-color:var(--accent-border)}.post-card:focus-visible{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-bg);outline:none}.post-card h2{font-family:var(--mono);margin:0 0 6px;font-size:18px}.post-card p{color:var(--text);font-size:14px}.post-meta{font-family:var(--mono);letter-spacing:1px;color:var(--accent);text-transform:uppercase;overflow-wrap:break-word;flex-wrap:wrap;align-items:center;gap:6px 8px;margin-bottom:8px;font-size:12px;display:flex}@media (width<=640px){.post-list{gap:10px;margin-top:8px}.post-card{padding:16px 14px}.post-card h2{overflow-wrap:break-word;font-size:16px;line-height:1.35}.post-card p{overflow-wrap:break-word;font-size:13.5px;line-height:1.55}.post-meta{letter-spacing:.5px;font-size:11px}}.btn-primary{width:min(520px,100%);font-family:var(--mono);letter-spacing:1.5px;text-transform:uppercase;text-align:center;box-sizing:border-box;color:#fff;background:var(--accent);border:1px solid var(--accent);border-radius:0;padding:14px 20px;font-size:14px;font-weight:600;text-decoration:none;transition:background .15s,border-color .15s;display:inline-block}.btn-primary:hover{background:#7c5ce0;border-color:#7c5ce0}.btn-primary:active{transform:translate(1px,1px)}.btn-secondary{font-family:var(--mono);letter-spacing:1.5px;text-transform:uppercase;color:var(--text-h);background:var(--social-bg);border:1px solid var(--border);-webkit-backdrop-filter:blur(12px)saturate(1.4);border-radius:0;padding:9px 28px;font-size:13px;font-weight:600;text-decoration:none;transition:border-color .15s,color .15s,background .15s;display:inline-block}.btn-secondary:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-bg)}.btn-primary:focus-visible,.btn-secondary:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (width<=640px){.btn-primary,.btn-secondary{justify-content:center;align-items:center;min-height:44px;display:inline-flex}.btn-primary{width:100%;padding:13px 16px;font-size:13px}.btn-secondary{letter-spacing:1px;padding:10px 16px;font-size:12px}}.tag-list{flex-wrap:wrap;justify-content:center;gap:8px;margin:8px 0 0;padding:0;list-style:none;display:flex}.tag-pill{font-family:var(--mono);letter-spacing:1.5px;text-transform:uppercase;color:var(--text-h);border:1px solid var(--border);background:var(--social-bg);-webkit-backdrop-filter:blur(12px)saturate(1.4);padding:6px 12px;font-size:12px;text-decoration:none;transition:border-color .15s,color .15s,background .15s}.tag-pill:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-bg)}@media (width<=640px){.tag-list{gap:8px}.tag-pill{align-items:center;min-height:36px;padding:8px 14px;font-size:11px;display:inline-flex}}.prose{box-sizing:border-box;text-align:left;width:min(860px,100%);color:var(--text-h);background:var(--code-bg);border:1px solid var(--border);border-left:4px solid var(--accent-yellow);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(12px)saturate(1.4);border-radius:0;padding:24px 26px;font-size:17px;line-height:1.65}.prose h2,.prose h3,.prose h4{font-family:var(--mono);color:var(--text-h);margin:1.6em 0 .6em}.prose p{color:var(--text-h);overflow-wrap:break-word;margin:0 0 1em}.prose a{color:var(--accent);overflow-wrap:anywhere;word-break:break-word}.prose ul,.prose ol{margin:0 0 1em;padding-left:1.4em}.prose li{overflow-wrap:break-word;margin:.35em 0}.prose li::marker{color:var(--accent)}.prose blockquote{border-left:4px solid var(--accent);background:var(--accent-bg);color:var(--text-h);overflow-wrap:break-word;margin:0 0 1em;padding:12px 18px}.prose table{-webkit-overflow-scrolling:touch;border-collapse:collapse;width:100%;max-width:100%;margin:0 0 1.2em;font-size:.88em;line-height:1.55;display:block;overflow-x:auto}.prose thead,.prose tbody,.prose tr{max-width:100%}.prose th,.prose td{border:1px solid var(--border);text-align:left;vertical-align:top;overflow-wrap:break-word;padding:8px 10px}.prose th{font-family:var(--mono);letter-spacing:1px;text-transform:uppercase;color:var(--text-h);background:var(--accent-bg);white-space:nowrap;font-size:.85em}.prose tr:nth-child(2n) td{background:var(--social-bg)}.prose code{font-size:.9em;display:inline}.prose pre{-webkit-overflow-scrolling:touch;background:var(--bg);border:1px solid var(--border);tab-size:2;border-radius:0;max-width:100%;padding:16px;font-size:14px;line-height:1.5;overflow-x:auto}.prose pre code{overflow-wrap:normal;word-break:normal;white-space:pre;background:0 0;min-width:max-content;padding:0;display:block}@media (width<=640px){.prose{border-left-width:3px;padding:18px 15px;font-size:16px;line-height:1.7}.prose h2{overflow-wrap:break-word;font-size:19px;line-height:1.35}.prose h3{overflow-wrap:break-word;font-size:17px;line-height:1.4}.prose h4{overflow-wrap:break-word;font-size:15px}.prose ul,.prose ol{padding-left:1.2em}.prose blockquote{padding:10px 12px}.prose pre{border-inline:none;border-radius:0;margin-inline:-15px;padding:12px;font-size:12.5px;line-height:1.55}.prose table{font-size:13px}.prose th,.prose td{padding:6px 8px}}@media (width<=380px){.prose{padding:16px 12px;font-size:15px}.prose pre{margin-inline:-12px}}html[data-theme=dark] .astro-code,html[data-theme=dark] .astro-code span,html:not([data-theme]) .astro-code,html:not([data-theme]) .astro-code span{color:var(--shiki-dark)!important;background-color:var(--shiki-dark-bg)!important;font-style:var(--shiki-dark-font-style)!important;font-weight:var(--shiki-dark-font-weight)!important;text-decoration:var(--shiki-dark-text-decoration)!important}.prose img{border:1px solid var(--border);cursor:zoom-in;max-width:100%;height:auto;transition:filter .15s,border-color .15s;display:block}.prose img:hover{border-color:var(--accent-border);filter:brightness(1.02)}.img-figure{margin:0 0 1em}.img-figure img{margin:0}.img-caption{font-family:var(--mono);letter-spacing:1px;text-transform:uppercase;color:var(--text);text-align:center;opacity:.9;margin-top:8px;font-size:12px}.lightbox-figure{flex-direction:column;align-items:center;gap:10px;max-width:min(92vw,1400px);margin:0;display:flex}.lightbox-caption{font-family:var(--mono);letter-spacing:1px;text-transform:uppercase;color:#ffffffd9;text-align:center;font-size:12px}.github-link{color:var(--text-h);justify-content:center;align-items:center;margin:.5em 0 0;text-decoration:none;display:flex}.github-link:hover{color:var(--accent)}.github-link svg{display:block}.prose hr{border:none;border-top:1px solid var(--border);margin:2em 0}.shell{padding-bottom:48px}.site-nav{flex-wrap:wrap;justify-content:center;gap:10px;max-width:100%;margin-top:8px;display:flex}@media (width<=640px){.shell{padding-bottom:32px}.site-nav{width:100%;margin-top:4px}.site-nav .btn-secondary{flex:auto;max-width:100%}}.site-footer{border-top:1px solid var(--border);width:min(860px,100%);font-family:var(--mono);letter-spacing:1px;text-transform:uppercase;color:var(--text);flex-wrap:wrap;justify-content:center;align-items:center;gap:8px 16px;margin-top:auto;padding-top:16px;font-size:12px;display:flex}.foot-links{align-items:center;gap:8px;display:inline-flex}.site-footer a{color:var(--text);text-decoration:none}.site-footer a:hover{color:var(--accent)}@media (width<=640px){.site-footer{text-align:center;flex-direction:column;gap:10px;padding-top:14px;font-size:11px}.foot-links{gap:12px}.site-footer a{margin:-6px -8px;padding:6px 8px}}.post-nav{justify-content:space-between;gap:10px;width:min(860px,100%);margin-top:6px;display:flex}.post-nav>span{flex:1 1 0}@media (width<=640px){.post-nav{gap:8px}.post-nav .btn-secondary{white-space:nowrap;text-overflow:ellipsis;flex:1 1 0;min-width:0;overflow:hidden}}.lightbox{z-index:200;-webkit-backdrop-filter:blur(8px);cursor:zoom-out;background:#08080ee0;justify-content:center;align-items:center;padding:24px;display:none;position:fixed;inset:0;overflow:auto}.lightbox.open{display:flex}.lightbox img{object-fit:contain;cursor:zoom-in;transform-origin:50%;border:1px solid #ffffff1f;width:auto;max-width:min(92vw,1400px);height:auto;max-height:92vh;transition:transform .2s;box-shadow:0 24px 64px #0009}.lightbox-close{color:#fff;cursor:pointer;background:#ffffff14;border:1px solid #ffffff2e;justify-content:center;align-items:center;width:40px;height:40px;font-size:28px;line-height:1;display:flex;position:fixed;top:16px;right:16px}.lightbox-close:hover{background:#ffffff24}.lightbox-hint{font-family:var(--mono);letter-spacing:1px;text-transform:uppercase;color:#ffffffb3;pointer-events:none;white-space:nowrap;text-overflow:ellipsis;background:#0006;border:1px solid #ffffff1f;max-width:calc(100vw - 32px);padding:6px 10px;font-size:11px;position:fixed;bottom:16px;left:50%;overflow:hidden;transform:translate(-50%)}@media (width<=640px){.lightbox{padding:12px}.lightbox-figure{gap:8px;max-width:94vw}.lightbox img{max-width:94vw;max-height:82dvh}.lightbox-close{width:44px;height:44px;top:calc(10px + env(safe-area-inset-top,0px));right:calc(10px + env(safe-area-inset-right,0px))}.lightbox-hint{bottom:calc(12px + env(safe-area-inset-bottom,0px));font-size:10px}}
