.prose{max-width:none;color:hsl(var(--foreground))}.prose h1,.prose h2,.prose h3,.prose h4{scroll-margin-top:6rem;font-weight:700}.prose h1{margin-bottom:2rem;margin-top:3rem;font-size:2.25rem;line-height:2.5rem}.prose h1:first-child{margin-top:0}@media (min-width:768px){.prose h1{font-size:3rem;line-height:1}}.prose h2{margin-bottom:1.5rem;margin-top:2.5rem;font-size:1.875rem;line-height:2.25rem}@media (min-width:768px){.prose h2{font-size:2.25rem;line-height:2.5rem}}.prose h3{margin-bottom:1rem;margin-top:2rem;font-size:1.5rem;line-height:2rem}@media (min-width:768px){.prose h3{font-size:1.875rem;line-height:2.25rem}}.prose h4{margin-bottom:1rem;margin-top:1.5rem;font-size:1.25rem;line-height:1.75rem}@media (min-width:768px){.prose h4{font-size:1.5rem;line-height:2rem}}.prose p{margin-bottom:1.5rem;font-size:1rem;line-height:1.5rem;line-height:1.625;color:hsl(var(--foreground)/.9)}@media (min-width:768px){.prose p{font-size:1.125rem;line-height:1.75rem}}.prose a{color:hsl(var(--primary));text-underline-offset:4px;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.prose a:hover{color:hsl(var(--primary)/.8)}.prose strong{font-weight:600;color:hsl(var(--foreground))}.prose em{font-style:italic}.prose blockquote{margin-top:2rem;margin-bottom:2rem;border-top-right-radius:var(--radius);border-bottom-right-radius:var(--radius);border-left-width:4px;border-color:hsl(var(--primary)/.3);background-color:hsl(var(--muted)/.3);padding-top:.5rem;padding-bottom:.5rem;padding-left:1.5rem;font-style:italic;color:hsl(var(--foreground)/.8)}.prose blockquote p{margin-bottom:0}.prose ol,.prose ul{margin-top:1.5rem;margin-bottom:1.5rem;margin-left:1.5rem}.prose ol>:not([hidden])~:not([hidden]),.prose ul>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.prose ul{list-style-type:disc}.prose ol{list-style-type:decimal}.prose li{font-size:1rem;line-height:1.5rem;line-height:1.625;color:hsl(var(--foreground)/.9)}@media (min-width:768px){.prose li{font-size:1.125rem;line-height:1.75rem}}.prose li>p{margin-bottom:.5rem}.prose code{border-radius:calc(var(--radius) - 2px);background-color:hsl(var(--muted));padding:.125rem .375rem;font-family:var(--font-mono),JetBrains Mono,monospace;font-size:.875rem;line-height:1.25rem;color:hsl(var(--foreground))}.prose code:after,.prose code:before{--tw-content:"";content:var(--tw-content)}.prose pre{margin-top:2rem;margin-bottom:2rem;overflow-x:auto;border-radius:var(--radius);border-width:1px;border-color:hsl(var(--border)/.1);--tw-bg-opacity:1;background-color:rgb(13 17 23/var(--tw-bg-opacity,1));padding:1.5rem}.prose pre code{background-color:transparent;padding:0;font-size:.875rem;line-height:1.25rem;line-height:1.625}.prose img{height:auto;width:100%;border-radius:var(--radius);--tw-shadow:0 10px 15px -3px rgb(0 0 0/0.1),0 4px 6px -4px rgb(0 0 0/0.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.prose figure,.prose img{margin-top:2rem;margin-bottom:2rem}.prose figcaption{margin-top:1rem;text-align:center;font-size:.875rem;line-height:1.25rem;color:hsl(var(--muted-foreground))}.prose table{margin-top:2rem;margin-bottom:2rem;width:100%;overflow:hidden;border-radius:var(--radius);border-width:1px;border-color:hsl(var(--border))}.prose th{background-color:hsl(var(--muted));padding:.75rem 1rem;text-align:left;font-weight:600;color:hsl(var(--foreground))}.prose td{border-top-width:1px;border-color:hsl(var(--border));padding:.75rem 1rem}.prose tbody tr:hover{background-color:hsl(var(--muted)/.5)}.prose hr{margin-top:3rem;margin-bottom:3rem;border-color:hsl(var(--border))}.prose pre[data-theme]{position:relative}.prose pre[data-language]:before{right:.5rem}.prose pre[data-theme=github-dark]{background-color:#0d1117!important}.article-card{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.article-card:hover{--tw-translate-y:-0.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-shadow:0 20px 25px -5px rgb(0 0 0/0.1),0 8px 10px -6px rgb(0 0 0/0.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.reading-progress{position:fixed;left:0;top:0;z-index:50;height:.25rem;width:100%;background-color:hsl(var(--primary)/.2)}.reading-progress-bar{height:100%;background-color:hsl(var(--primary));transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-timing-function:cubic-bezier(0,0,.2,1)}.toc-link{display:block;padding-top:.5rem;padding-bottom:.5rem;font-size:.875rem;line-height:1.25rem;color:hsl(var(--muted-foreground));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.toc-link:hover{color:hsl(var(--foreground))}.toc-link.active{font-weight:500;color:hsl(var(--primary))}.feature-image-container{position:relative;overflow:hidden;border-radius:.75rem;--tw-shadow:0 25px 50px -12px rgb(0 0 0/0.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.feature-image-overlay{position:absolute;inset:0;background-image:linear-gradient(to top,var(--tw-gradient-stops));--tw-gradient-from:hsl(var(--background)/0.9) var(--tw-gradient-from-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to);--tw-gradient-to:hsl(var(--background)/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),hsl(var(--background)/0.2) var(--tw-gradient-via-position),var(--tw-gradient-to);--tw-gradient-to:transparent var(--tw-gradient-to-position)}.blog-tag{display:inline-flex;align-items:center;border-radius:9999px;background-color:hsl(var(--muted));padding:.25rem .75rem;font-size:.875rem;line-height:1.25rem;font-weight:500;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.blog-tag:hover{background-color:hsl(var(--muted)/.8)}.category-badge{display:inline-flex;align-items:center;border-radius:calc(var(--radius) - 2px);background-color:hsl(var(--primary)/.1);padding:.125rem .625rem;font-size:.75rem;line-height:1rem;font-weight:600;color:hsl(var(--primary))}.author-bio{display:flex;align-items:center;gap:1rem;border-radius:var(--radius);border-width:1px;border-color:hsl(var(--border));background-color:hsl(var(--muted)/.5);padding:1.5rem}.share-button{border-radius:var(--radius);background-color:hsl(var(--muted));padding:.5rem;color:hsl(var(--foreground));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.share-button:hover{background-color:hsl(var(--muted)/.8)}@media (max-width:768px){.prose{font-size:1rem;line-height:1.5rem}.prose h1{font-size:1.875rem;line-height:2.25rem}.prose h2{font-size:1.5rem;line-height:2rem}.prose h3{font-size:1.25rem;line-height:1.75rem}.prose h4{font-size:1.125rem;line-height:1.75rem}}.dark .prose pre{--tw-border-opacity:1;border-color:rgb(31 41 55/var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(13 17 23/var(--tw-bg-opacity,1))}.dark .prose code{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.dark .prose blockquote{border-color:hsl(var(--primary)/.5);background-color:rgb(31 41 55/.3)}@media print{.reading-progress,.related-posts,.share-buttons,.toc{display:none}.prose{max-width:100%}}.prose pre{padding:0!important}.prose .relative.group,.prose pre{position:relative!important}.prose pre code{display:block;overflow-x:auto!important;padding:1.25rem!important}.prose pre[data-language]:before{content:attr(data-language);position:absolute;right:3rem;top:.5rem;font-family:var(--font-mono),JetBrains Mono,monospace;font-size:.75rem;line-height:1rem;--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}