.uploadthing-link{color:inherit;text-decoration:underline;text-underline-offset:3px}.uploadthing-link:hover .thing{color:#b91c1c}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes fade-out{0%{opacity:1}to{opacity:0}}::view-transition-old(root){animation:.15s ease-in fade-out}::view-transition-new(root){animation:.2s ease-out fade-in}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}::selection{background:#6b72801f;color:var(--text)}.scroll-progress-bar{position:fixed;top:0;left:0;height:2px;background:var(--text-muted);width:0%;z-index:1000;transition:width .1s ease-out;opacity:.4}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:var(--border-faint);margin:4px 0}::-webkit-scrollbar-thumb{background:var(--text-muted);border-radius:3px;transition:background .2s}::-webkit-scrollbar-thumb:hover{background:var(--text)}:root{--bg: #faf9f6;--text: #2b3035;--text-muted: #6b7280;--text-faint: #9ca3af;--border: #e5e7eb;--border-faint: #f3f4f6;--link-underline: rgba(43, 48, 53, .25);--font-inter: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-newsreader: "Newsreader", "Times New Roman", serif;--font-jetbrains-mono: "JetBrains Mono", "Fira Code", "SF Mono", monospace;--font-sans: var(--font-inter), Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-serif: var(--font-newsreader), Newsreader, "Times New Roman", serif;--font-mono: var(--font-jetbrains-mono), "JetBrains Mono", "Fira Code", "SF Mono", monospace;--size-body: 15px;--size-small: 13px;--sidebar-w: 180px}html{font-size:16px;scroll-behavior:smooth}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:var(--size-body);line-height:1.75;letter-spacing:.1px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:inherit;text-decoration:none}.back-link.back-link{display:inline-flex;align-items:center;gap:8px;line-height:1}.back-link-icon{font-size:13px;width:1em;height:1em;flex-shrink:0;transform:translateY(1px)}.layout{display:flex;min-height:100vh}.sidebar{width:var(--sidebar-w);flex-shrink:0;position:fixed;top:0;left:0;height:100vh;padding:52px 40px;display:flex;flex-direction:column;z-index:100;border-right:1px solid var(--border)}.sidebar-name{font-family:var(--font-sans);font-size:14px;letter-spacing:.06em;text-transform:lowercase}.sidebar-name a{text-decoration:none;color:inherit;transition:opacity .15s}.sidebar-name a:hover{opacity:.5}.sidebar-nav{display:flex;flex-direction:column;gap:2px}.sidebar-link{font-family:var(--font-sans);font-size:14px;font-weight:400;color:var(--text-muted);text-decoration:none;padding:6px 0;line-height:1.4;letter-spacing:.01em;transition:color .15s,font-weight 0s}.sidebar-link:hover{color:var(--text)}.sidebar-link.active{color:var(--text);font-weight:500;text-decoration:underline;text-decoration-color:var(--link-underline);text-underline-offset:3px}.sidebar-link.active:hover{text-decoration-color:var(--text)}.sidebar-socials{margin-top:auto;padding-top:40px;display:flex;gap:12px}.sidebar-socials a{color:var(--text-faint);opacity:.5;transition:opacity .15s,color .15s;display:flex;align-items:center}.sidebar-socials a:hover{opacity:1;color:var(--text)}.sidebar-socials a[aria-label=GitHub]:hover{color:#24292f}.sidebar-socials a[aria-label=Twitter]:hover{color:#1d9bf0}.sidebar-socials a[aria-label=LinkedIn]:hover{color:#0a66c2}.sidebar-socials a[aria-label=Email]:hover{color:#ea4335}.sidebar-socials ion-icon{font-size:18px}.main-content{margin-left:var(--sidebar-w);flex:1;padding:48px 72px 96px 56px;max-width:calc(var(--sidebar-w) + 680px)}.prose{color:var(--text);font-size:var(--size-body);line-height:1.75;letter-spacing:.1px}.prose h1{font-size:22px;font-weight:600;line-height:1.3;margin-top:2.5rem;margin-bottom:.75rem;letter-spacing:-.01em}.prose h2{font-size:18px;font-weight:600;line-height:1.4;margin-top:2.25rem;margin-bottom:.6rem;letter-spacing:-.005em}.prose h3{font-size:16px;font-weight:600;line-height:1.4;margin-top:2rem;margin-bottom:.4rem}.prose p{margin-bottom:1.25rem;color:var(--text)}.prose ul,.prose ol{padding-left:1.4rem;margin-bottom:1.25rem}.prose li{margin-bottom:.3rem;line-height:1.75}.prose strong{font-weight:600}.prose em{font-style:italic}.prose a{color:var(--text);text-decoration:underline;text-decoration-color:var(--link-underline);text-underline-offset:3px;transition:text-decoration-color .15s}.prose a:hover{text-decoration-color:var(--text)}.prose blockquote{border-left:2px solid var(--border);margin:1.5rem 0;padding:0 0 0 1.25rem;color:var(--text-muted);font-family:var(--font-serif);font-style:italic;font-size:17px;line-height:1.7}.prose hr{border:none;border-top:1px solid var(--border);margin:2rem 0}.prose img{max-width:100%;height:auto;border-radius:6px;margin:1.75rem 0;border:1px solid var(--border);display:block;cursor:zoom-in}.prose div[style*="display:flex"],.prose div[style*="display: flex"]{display:flex!important;gap:12px;margin:1.75rem 0}.prose div[style*="display:flex"]>p,.prose div[style*="display: flex"]>p{flex:1;min-width:0;margin:0}.prose div[style*="display:flex"]>p>img,.prose div[style*="display: flex"]>p>img{width:100%;min-width:0;margin:0;object-fit:cover}.prose table{width:100%;border-collapse:collapse;margin:1.75rem 0;font-size:14.5px;line-height:1.6;overflow-x:auto;display:block}.prose thead tr{border-bottom:2px solid var(--border)}.prose th{text-align:left;font-weight:600;font-size:13px;letter-spacing:.04em;color:var(--text-muted);padding:8px 16px 8px 0}.prose td{padding:9px 16px 9px 0;color:var(--text);border-bottom:1px solid var(--border-faint);vertical-align:top}.prose tr:last-child td{border-bottom:none}.prose td code,.prose th code{font-size:12.5px}.prose :not(pre)>code{font-family:var(--font-mono);font-size:13px;background:var(--border-faint);color:var(--text);padding:2px 5px;border-radius:4px;border:1px solid var(--border)}.prose [data-rehype-pretty-code-figure]{margin:1.75rem 0;border-radius:8px;border:1px solid var(--border);overflow:hidden}.prose [data-rehype-pretty-code-title]{background:var(--border-faint);color:var(--text-faint);font-family:var(--font-mono);font-size:11.5px;padding:7px 16px;border-bottom:1px solid var(--border);letter-spacing:.03em;user-select:none}.prose pre{background:var(--border-faint);font-family:var(--font-mono);font-size:13.5px;line-height:1.7;padding:18px 20px;overflow-x:auto;tab-size:2;letter-spacing:0;margin:0;border-radius:0;border:none;scrollbar-width:thin}.prose pre::-webkit-scrollbar{height:3px}.prose pre::-webkit-scrollbar-track{background:transparent}.prose pre::-webkit-scrollbar-thumb{background:var(--text-faint);border-radius:2px}.prose [data-rehype-pretty-code-figure]>pre:first-child{border-radius:8px 8px 0 0}.prose pre code{background:none;border:none;padding:0;font-size:inherit;color:inherit}.prose pre [data-highlighted-line]{background:#005ac80f;margin:0 -20px;padding:0 20px;display:block;border-left:2px solid #0969da}.divider{height:1px;background:var(--border);margin:2rem 0}.mobile-header{display:none;position:fixed;top:0;left:0;right:0;height:48px;background:var(--bg);border-bottom:1px solid var(--border);z-index:200;padding:0 20px;align-items:center;justify-content:space-between}.mobile-name{font-size:13px;font-weight:500;color:var(--text);text-decoration:none;letter-spacing:.06em}.mobile-nav-inline{display:flex;align-items:center;gap:20px}.mobile-nav-link{font-size:13px;font-weight:400;color:var(--text-muted);text-decoration:none;transition:color .15s}.mobile-nav-link:hover,.mobile-nav-link.active{color:var(--text);font-weight:500}@media(max-width:768px){.sidebar{display:none}.mobile-header{display:flex}.main-content{margin-left:0;padding:72px 16px 48px;max-width:100%}.prose{font-size:15px}.prose h1{font-size:20px}.prose h2{font-size:17px}.prose h3,.prose blockquote{font-size:15px}.prose pre{font-size:12px;padding:14px 12px;margin:0 -16px;border-radius:0;border-left:none;border-right:none}.prose [data-rehype-pretty-code-figure]{margin:1.5rem -16px;border-radius:0;border-left:none;border-right:none}.prose [data-rehype-pretty-code-figure]>pre:first-child{border-radius:0}.prose table{font-size:13px;display:block;overflow-x:auto}.prose th,.prose td{padding:8px 12px 8px 0}.prose :not(pre)>code{font-size:12px}.prose [data-rehype-pretty-code-title]{font-size:11px;padding:6px 12px}.prose div[style*="display:flex"],.prose div[style*="display: flex"]{flex-direction:column;gap:8px}}.astro-route-announcer{position:absolute;left:0;top:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;white-space:nowrap;width:1px;height:1px}@keyframes astroFadeInOut{0%{opacity:1}to{opacity:0}}@keyframes astroFadeIn{0%{opacity:0;mix-blend-mode:plus-lighter}to{opacity:1;mix-blend-mode:plus-lighter}}@keyframes astroFadeOut{0%{opacity:1;mix-blend-mode:plus-lighter}to{opacity:0;mix-blend-mode:plus-lighter}}@keyframes astroSlideFromRight{0%{transform:translate(100%)}}@keyframes astroSlideFromLeft{0%{transform:translate(-100%)}}@keyframes astroSlideToRight{to{transform:translate(100%)}}@keyframes astroSlideToLeft{to{transform:translate(-100%)}}@media(prefers-reduced-motion){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}[data-astro-transition-scope]{animation:none!important}}
