@import"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@300;400;500;700&family=Inter:wght@400;500&display=swap";*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--color-bg: #0d0d12;--color-bg-alt: #12121a;--color-surface: rgba(13, 13, 20, .82);--color-surface-solid: #13131e;--color-text: #d8d8e8;--color-text-secondary: #8888a8;--color-text-muted: #50506a;--color-accent: #7ab3c8;--color-accent-hover: #9dcce0;--color-accent-dim: rgba(122, 179, 200, .15);--color-border: rgba(255, 255, 255, .08);--color-border-accent: rgba(122, 179, 200, .25);--color-tag-bg: rgba(122, 179, 200, .1);--color-tag-text: #7ab3c8;--blur: blur(8px);--shadow-sm: 0 1px 3px rgba(0, 0, 0, .5);--shadow-md: 0 4px 16px rgba(0, 0, 0, .6);--header-bg: rgba(13, 13, 20, .75)}html[data-theme=light]{--color-bg: #f3ede4;--color-bg-alt: #ece6dd;--color-surface: rgba(243, 237, 228, .8);--color-surface-solid: #ede7de;--color-text: #1c1c2a;--color-text-secondary: #404058;--color-text-muted: #787898;--color-accent: #3d6e88;--color-accent-hover: #2d5e78;--color-accent-dim: rgba(61, 110, 136, .1);--color-border: rgba(28, 28, 42, .12);--color-border-accent: rgba(61, 110, 136, .22);--color-tag-bg: rgba(61, 110, 136, .08);--color-tag-text: #3d6e88;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .08);--shadow-md: 0 4px 16px rgba(0, 0, 0, .12);--header-bg: rgba(243, 237, 228, .82)}html[data-theme=light] body{background:#f3ede4}html[data-theme=light] .col,html[data-theme=light] .col--wide{background:#f3ede4ad}html[data-theme=light] .prose blockquote{background:#3d6e880d}html[data-theme=light] .prose code{background:#0000000f;color:var(--color-accent)}html[data-theme=light] .prose pre{background:#0000000d}html[data-theme=light] .prose pre code{background:none}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:JetBrains Mono,Fira Code,Courier New,monospace;background:var(--color-bg);color:var(--color-text);line-height:1.7}a{color:var(--color-accent);text-decoration:none;transition:color .15s ease}a:hover{color:var(--color-accent-hover)}img{max-width:100%;height:auto;display:block}h1,h2,h3,h4{font-family:JetBrains Mono,monospace;font-weight:700;line-height:1.2;color:var(--color-text);letter-spacing:-.01em}h1{font-size:1.75rem}h2{font-size:1.25rem}h3{font-size:1.05rem}.t-heading:before{content:"// ";color:var(--color-accent);font-weight:300}.prose{font-size:.95rem;line-height:1.85;color:var(--color-text)}.prose h1,.prose h2,.prose h3,.prose h4{margin-top:2em;margin-bottom:.75em}.prose p{margin-bottom:1.25em}.prose ul,.prose ol{margin-bottom:1.25em;padding-left:1.5em}.prose li{margin-bottom:.35em}.prose blockquote{border-left:2px solid var(--color-accent);padding:.5em 1em;margin:1.5em 0;color:var(--color-text-secondary);background:#7ab3c80d}.prose code{background:#ffffff0f;padding:.15em .4em;border-radius:2px;font-size:.9em;color:var(--color-accent-hover)}.prose pre{background:#0006;border:1px solid var(--color-border);padding:1em;border-radius:2px;overflow-x:auto;margin-bottom:1.25em}.prose pre code{background:none;padding:0;color:var(--color-text)}.prose a{text-decoration:underline;text-underline-offset:3px}.prose img{margin:1.5em 0}.prose hr{border:none;border-top:1px solid var(--color-border);margin:2.5em 0}.panel{background:var(--color-surface);backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);border:1px solid var(--color-border)}.col{max-width:740px;margin:0 auto;padding:2rem;background:#0d0d1494;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid var(--color-border)}.col--wide{max-width:960px;margin:0 auto;padding:2rem;background:#0d0d1494;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid var(--color-border)}.tag{display:inline-block;font-size:.72rem;padding:.15rem .5rem;background:var(--color-tag-bg);color:var(--color-tag-text);border:1px solid var(--color-border-accent);letter-spacing:.02em}.tag:before{content:"["}.tag:after{content:"]"}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.cursor-blink{animation:blink 1.4s step-start infinite}.fade-in-up{animation:fadeInUp .35s ease forwards}
