:root{--pink-400:#f472b6;--pink-500:#ec4899;--pink-600:#db2777;--gray-50:#f9fafb;--gray-100:#f3f4f6;--gray-200:#e5e7eb;--gray-300:#d1d5db;--gray-400:#9ca3af;--gray-500:#6b7280;--gray-600:#4b5563;--gray-700:#374151;--gray-800:#1f2937;--gray-900:#111827;--gray-950:#030712;--indigo-500:#6366f1;--bg:#fff;--fg:#000;--muted:var(--gray-500);--rule:var(--gray-200);--heading:var(--gray-900);--prose:var(--gray-700);--code-inline:var(--indigo-500);--link-hover:var(--pink-600);--sidebar-bg:var(--gray-50);--sidebar-shadow:rgb(0 0 0 / 0.1);--bullet:var(--gray-300)}.dark{--bg:var(--gray-950);--fg:#fff;--muted:var(--gray-400);--rule:var(--gray-700);--heading:var(--gray-100);--prose:var(--gray-300);--code-inline:var(--pink-400);--link-hover:var(--pink-400);--sidebar-bg:rgb(17 24 39 / 0.7);--sidebar-shadow:rgb(31 41 55 / 0.4);--bullet:var(--gray-700)}*,*::before,*::after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}.scroll-smooth{scroll-behavior:smooth}body{margin:0;background-color:var(--bg);color:var(--fg);font-family:space grotesk,ui-sans-serif,system-ui,-apple-system,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.5}img{max-width:100%;height:auto}dl,dt,dd,figure,blockquote,p,pre,h1,h2,h3,h4,h5,h6{margin:0}a{color:inherit;text-decoration:none}button{background:0 0;border:0;padding:0;cursor:pointer;color:inherit;font:inherit}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}[hidden]{display:none!important}.section-container{margin-inline:auto;max-width:48rem;padding-inline:1rem}.page-wrap{display:flex;min-height:100vh;flex-direction:column;justify-content:space-between}.main{margin-bottom:auto}@media(min-width:640px){.section-container{padding-inline:1.5rem}}@media(min-width:1280px){.section-container{max-width:64rem;padding-inline:0}}.divide-y>*+*{border-top:1px solid var(--rule)}.py-12{padding-block:3rem}.py-5{padding-block:1.25rem}.site-header{display:flex;align-items:center;justify-content:space-between;padding-block:2.5rem}.brand{display:flex;align-items:center}.brand-logo{margin-right:.75rem;display:inline-flex}.brand-logo img{display:block}.brand-title{display:none;font-size:1.5rem;line-height:2rem;font-weight:600}.header-right{display:flex;align-items:center;gap:1rem;line-height:1.25rem}.nav-links{display:none;align-items:center;gap:1rem}.nav-links a{font-weight:500;color:var(--heading)}#theme-toggle svg,#nav-toggle svg{height:1.5rem;width:1.5rem;color:var(--heading)}#nav-toggle svg{display:block}#theme-toggle .icon-sun{display:none}#theme-toggle .icon-moon{display:block}.dark #theme-toggle .icon-sun{display:block}.dark #theme-toggle .icon-moon{display:none}.mobile-nav{display:flex;flex-direction:column;gap:.75rem;padding-bottom:1.5rem;font-weight:500;color:var(--heading)}@media(min-width:640px){.brand-title{display:block}.nav-links{display:flex;gap:1.5rem}.header-right{gap:1.5rem}#nav-toggle,.mobile-nav{display:none}}.site-footer .footer-inner{margin-top:4rem;display:flex;flex-direction:column;align-items:center}.footer-social{margin-bottom:.75rem;display:flex;gap:1rem}.footer-social svg{height:1.5rem;width:1.5rem;color:var(--gray-700);transition:color .15s ease;display:block}.dark .footer-social svg{color:var(--gray-200)}.footer-social a:hover svg{color:var(--pink-500)}.dark .footer-social a:hover svg{color:var(--pink-400)}.footer-meta{margin-bottom:2rem;display:flex;gap:.5rem;font-size:.875rem;line-height:1.25rem;color:var(--muted)}.page-title{margin:0;font-size:1.875rem;line-height:2.25rem;font-weight:800;letter-spacing:-.025em;color:var(--heading)}@media(min-width:640px){.page-title{font-size:2.25rem;line-height:2.5rem}}@media(min-width:768px){.page-title{line-height:3.5rem}.post-header .page-title{font-size:3rem}.tags-index .page-title{font-size:3.75rem}}.post-date{margin:0;font-size:1rem;line-height:1.5rem;font-weight:500;color:var(--muted)}.post-heading{margin:0;font-size:1.5rem;line-height:2rem;font-weight:700;letter-spacing:-.025em}.post-heading a{color:var(--heading)}.post-summary{color:var(--muted);max-width:none}.tag-row{display:flex;flex-wrap:wrap}.tag{margin-right:.75rem;font-size:.875rem;line-height:1.25rem;font-weight:500;text-transform:uppercase;color:var(--pink-500)}.tag:hover{color:var(--link-hover)}.read-more,.all-posts{font-size:1rem;line-height:1.5rem;font-weight:500}.read-more a,.all-posts a{color:var(--pink-500)}.read-more a:hover,.all-posts a:hover{color:var(--link-hover)}.all-posts{display:flex;justify-content:flex-end}.home-intro{padding-top:1.5rem;padding-bottom:2rem;display:flex;flex-direction:column;gap:.5rem}.home-tagline{margin:0;font-size:1.125rem;line-height:1.75rem;color:var(--muted)}.post-list{list-style:none;margin:0;padding:0}.post-row{display:flex;flex-direction:column;gap:.5rem}.post-row dl{margin:0}.post-row-body{display:flex;flex-direction:column;gap:1.25rem}.post-row-main{display:flex;flex-direction:column;gap:1.5rem}@media(min-width:768px){.home-intro{gap:1.25rem}}@media(min-width:1280px){.post-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));align-items:baseline;gap:0}.post-row-body{grid-column:span 3/span 3}}.list-head{padding-block:1.5rem}.list-layout{display:flex}.tag-sidebar{display:none}.list-main{min-width:0}.list-main ul{list-style:none;margin:0;padding:0}.list-entry{display:flex;flex-direction:column;gap:.5rem}.list-entry dl{margin:0}.list-entry-body{display:flex;flex-direction:column;gap:.75rem}@media(min-width:640px){.list-title-mobile{display:none}.list-layout{gap:6rem}.tag-sidebar{display:flex;flex-wrap:wrap;max-height:100vh;min-width:280px;max-width:280px;overflow:auto;padding-top:1.25rem;border-radius:.25rem;background-color:var(--sidebar-bg);box-shadow:0 4px 6px -1px var(--sidebar-shadow),0 2px 4px -2px var(--sidebar-shadow)}}.tag-sidebar-inner{padding:1rem 1.5rem}.tag-sidebar-inner ul{list-style:none;margin:0;padding:0}.tag-sidebar-inner li{margin-block:.75rem}.tag-sidebar-current,.tag-sidebar-link{margin:0;font-weight:700;text-transform:uppercase;font-size:1rem}.tag-sidebar-current{color:var(--pink-500)}.tag-sidebar-link{color:var(--gray-700)}.dark .tag-sidebar-link{color:var(--gray-300)}.tag-sidebar-link:hover{color:var(--pink-500)}.tag-sidebar-active{margin:0;display:inline;padding:.5rem .75rem;text-transform:uppercase;font-size:.875rem;font-weight:700;color:var(--pink-500)}.tag-sidebar-item{display:inline-block;padding:.5rem .75rem;text-transform:uppercase;font-size:.875rem;font-weight:500;color:var(--gray-500)}.dark .tag-sidebar-item{color:var(--gray-300)}.tag-sidebar-item:hover{color:var(--pink-500)}.tags-index{display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start}.tags-index>*+*{border-top:1px solid var(--rule)}.tags-index-title{padding-top:1.5rem;padding-bottom:2rem}.tags-index-list{display:flex;max-width:32rem;flex-wrap:wrap}.tags-index-item{margin:.5rem 1.25rem .5rem 0}.tag-count{margin-left:-.5rem;font-size:.875rem;font-weight:600;text-transform:uppercase;color:var(--gray-600)}.dark .tag-count{color:var(--gray-300)}@media(min-width:768px){.tags-index{margin-top:6rem;flex-direction:row;align-items:center;justify-content:center;gap:1.5rem}.tags-index>*+*{border-top:0}.tags-index-title{border-right:2px solid var(--rule);padding-inline:1.5rem}}.post-header{padding-top:1.5rem;text-align:center}.post-header dl{margin:0 0 .25rem}.post-grid{padding-bottom:2rem}.post-grid>*+*{border-top:1px solid var(--rule)}.author-block{margin:0;padding-block:1.5rem 2.5rem}.author-list{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;justify-content:center;gap:1rem}.author-list li{display:flex;align-items:center;gap:.5rem}.author-avatar{height:2.5rem;width:2.5rem;border-radius:50%;object-fit:cover}.author-meta{margin:0;white-space:nowrap;font-size:.875rem;line-height:1.25rem;font-weight:500}.author-meta dd{margin:0}.author-name{color:var(--heading)}.author-meta a{color:var(--pink-500)}.author-meta a:hover{color:var(--link-hover)}.post-main>*+*{border-top:1px solid var(--rule)}.post-main .prose{padding-top:2.5rem;padding-bottom:2rem}.post-links{padding-block:1.5rem;font-size:.875rem;color:var(--prose)}.post-links a{color:var(--pink-500)}.post-links a:hover{color:var(--link-hover)}.post-footer-meta{font-size:.875rem;line-height:1.25rem;font-weight:500}.post-footer-block{padding-block:1rem}.post-footer-heading{margin:0;font-size:.75rem;line-height:1rem;text-transform:uppercase;letter-spacing:.025em;font-weight:400;color:var(--muted)}.post-nav{display:flex;justify-content:space-between}.post-nav-link a{color:var(--pink-500)}.post-nav-link a:hover{color:var(--link-hover)}.back-to-blog{padding-top:1rem}.back-to-blog a{color:var(--pink-500)}.back-to-blog a:hover{color:var(--link-hover)}@media(min-width:1280px){.post-header{padding-bottom:1.5rem}.post-divide>*+*{border-top:1px solid var(--rule)}.post-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:auto 1fr;column-gap:1.5rem}.post-grid>*+*{border-top:0}.author-block{border-bottom:1px solid var(--rule);padding-top:2.75rem}.author-list{display:block}.author-list li+li{margin-top:2rem}.post-main{grid-column:span 3/span 3;grid-row:span 2/span 2;padding-bottom:0}.post-grid>footer{grid-column-start:1;grid-row-start:2}.post-footer-meta>*+*{border-top:1px solid var(--rule)}.post-footer-block{padding-block:2rem}.post-nav{display:block}.post-nav>*+*{margin-top:2rem}.back-to-blog{padding-top:2rem}}.simple-page .prose{padding-bottom:2rem}#search-input{width:100%;padding:.75rem 1rem;margin-bottom:1rem;font:inherit;color:var(--fg);background-color:var(--bg);border:1px solid var(--rule);border-radius:.375rem}#search-input:focus{outline:2px solid var(--pink-500);outline-offset:2px}.avatar{width:192px;height:192px;border-radius:50%;object-fit:cover}.about-head{padding-top:1.5rem;padding-bottom:2rem}.about-grid{align-items:start}.author-card{display:flex;flex-direction:column;align-items:center;padding-top:2rem;text-align:center}.author-card .avatar{margin:0}.author-card-name{margin:0;padding-top:1rem;padding-bottom:.5rem;font-size:1.5rem;line-height:2rem;font-weight:700;letter-spacing:-.025em;color:var(--heading)}.author-card-meta{color:var(--muted)}.author-social{display:flex;gap:.75rem;padding-top:1.5rem}.author-social svg{height:2rem;width:2rem;color:var(--gray-700);transition:color .15s ease;display:block}.dark .author-social svg{color:var(--gray-200)}.author-social a:hover svg{color:var(--pink-500)}.dark .author-social a:hover svg{color:var(--pink-400)}.about-prose{padding-block:2rem}@media(min-width:768px){.about-page .page-title{font-size:3.75rem}}@media(min-width:1280px){.about-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));column-gap:2rem}.about-prose{grid-column:span 2/span 2}}.prose{max-width:none;color:var(--prose);font-size:1rem;line-height:1.75}.prose p{margin-block:1.25em}.prose>:first-child{margin-top:0}.prose>:last-child{margin-bottom:0}.prose a{color:var(--pink-500);text-decoration:underline;font-weight:500}.prose a:hover{color:var(--link-hover)}.prose a code{color:var(--pink-400)}.prose h1,.prose h2,.prose h3,.prose h4{color:var(--heading)}.prose h1,.prose h2{font-weight:700;letter-spacing:-.025em}.prose h1{font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose h2{font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose h3{font-size:1.25em;font-weight:600;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose h4{font-size:1em;font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose li::marker{color:var(--bullet)}.prose strong{color:var(--heading);font-weight:600}.prose ul,.prose ol{padding-left:1.625em;margin-block:1.25em}.prose li{margin-block:.5em;padding-left:.375em}.prose blockquote{margin:1.6em 0;padding-left:1em;border-left:.25rem solid var(--rule);font-style:italic;color:var(--heading)}.prose hr{margin-block:3em;border:0;border-top:1px solid var(--rule)}.prose img{margin-block:2em;border-radius:.375rem}.prose table{width:100%;border-collapse:collapse;font-size:.875em;margin-block:2em;display:block;overflow-x:auto}.prose th,.prose td{border-bottom:1px solid var(--rule);padding:.5em .75em;text-align:left}.prose th{color:var(--heading);font-weight:600}.prose :not(pre)>code{color:var(--code-inline);font-size:.875em;font-weight:600}.prose :not(pre)>code::before,.prose :not(pre)>code::after{content:'`'}.prose code,.prose pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,liberation mono,courier new,monospace}.prose pre,.prose .highlight{margin-block:1.7em}.prose pre{background-color:#222440;color:#d6deeb;border-radius:.5rem;padding:1rem;overflow-x:auto;font-size:.875em;line-height:1.7}.prose pre code{background:0 0;color:inherit;font-size:inherit;font-weight:400;padding:0}.chroma .c,.chroma .ch,.chroma .cm,.chroma .cp,.chroma .cpf,.chroma .c1,.chroma .cs{color:#637777;font-style:italic}.chroma .k,.chroma .kd,.chroma .kn,.chroma .kp,.chroma .kr,.chroma .nt,.chroma .o,.chroma .ow{color:#7fdbca}.chroma .kc{color:#ff5874}.chroma .kt,.chroma .nc,.chroma .at{color:#ffcb8b}.chroma .p{color:#c792ea}.chroma .nf,.chroma .fm,.chroma .nb,.chroma .bp,.chroma .no{color:#82aaff}.chroma .na{color:#addb67;font-style:italic}.chroma .l,.chroma .ld,.chroma .s,.chroma .sa,.chroma .sb,.chroma .sc,.chroma .dl,.chroma .sd,.chroma .s1,.chroma .s2,.chroma .sh,.chroma .si,.chroma .ss,.chroma .sx{color:#addb67}.chroma .se{color:#ffcb8b}.chroma .sr,.chroma .nv,.chroma .vc,.chroma .vg,.chroma .vi,.chroma .n,.chroma .nx{color:#d6deeb}.chroma .m,.chroma .mb,.chroma .mf,.chroma .mh,.chroma .mi,.chroma .il,.chroma .mo{color:#f78c6c}.chroma .gd{color:rgb(239 83 80/.56);font-style:italic}.chroma .gi{color:#addb67;font-style:italic}.chroma .ge{font-style:italic}.chroma .gs{font-weight:700}