:root{--code-bg:#0e1210;--tok-k:#4ade8f;--tok-s:#e8c468;--tok-c:#7a857e;--tok-f:#67d4e8}[data-theme=light]{--code-bg:#f1f1ec;--tok-k:#0b7a48;--tok-s:#8f6a06;--tok-c:#646d66;--tok-f:#0b6b88}:root{--astro-code-foreground:var(--body);--astro-code-background:var(--code-bg);--astro-code-token-constant:var(--tok-s);--astro-code-token-string:var(--tok-s);--astro-code-token-string-expression:var(--tok-s);--astro-code-token-comment:var(--tok-c);--astro-code-token-keyword:var(--tok-k);--astro-code-token-parameter:var(--body);--astro-code-token-function:var(--tok-f);--astro-code-token-punctuation:var(--body);--astro-code-token-link:var(--tok-f)}.post-list{gap:var(--space-5);flex-direction:column;margin-top:30px;display:flex}.blog-title{letter-spacing:-.015em;color:var(--head);font-size:clamp(1.9rem,4.4vw,3rem);font-weight:700;line-height:1.2}.blog-hero .hero-intro a{color:var(--accent);border-bottom:1px solid var(--hair2);text-decoration:none}.blog-hero .hero-intro a:hover{opacity:.75}.post-list .card{max-width:720px;margin:0}.post-card{transition:opacity .25s;position:relative}.post-card:hover{opacity:.78}.post-card h3{margin-top:var(--space-1)}.post-card h3 a{color:inherit;text-decoration:none}.post-card h3 a:after{content:"";position:absolute;inset:0}.post-card-cta{color:var(--accent);margin-top:22px;font-size:.75rem}.post-header-wrap{padding:88px var(--space-8) 0}.post-header-inner,.post-body-wrap{max-width:720px;margin:0 auto}.post-body-wrap{padding:var(--space-7) var(--space-8) var(--space-9);box-sizing:content-box}.post-crumb{color:var(--mut);font-size:.75rem;text-decoration:none}.post-crumb:hover{opacity:.75}.post-tags{flex-wrap:wrap;align-items:center;gap:10px;margin-top:34px;display:flex}.tag-fill,.tag-outline{padding:5px var(--space-3);white-space:nowrap;font-size:.6875rem}.tag-fill{color:var(--on-accent);background:var(--accent)}.tag-outline{color:var(--dim);border:1px solid var(--hair2)}.post-hero-title{letter-spacing:-.015em;color:var(--head);text-wrap:pretty;margin:26px 0 0;font-size:clamp(1.7rem,4.4vw,2.375rem);font-weight:700;line-height:1.25}.post-meta-row{gap:var(--space-5);color:var(--mut);white-space:nowrap;flex-wrap:wrap;align-items:center;margin-top:26px;font-size:.75rem;display:flex}.meta-dot{background:var(--hair2);border-radius:50%;width:3px;height:3px}.post-divider{background:var(--accent);width:56px;height:2px;margin-top:var(--space-6)}.post-poster{border:1px solid var(--hair);width:100%;height:auto;margin-bottom:40px;display:block}.prose{max-width:720px;margin-top:0;font-size:1rem}.prose>*+*{margin-top:1.25em}.prose h2,.prose h3{color:var(--head);margin-top:3.2em;font-weight:500;line-height:1.5}.prose h2 .prose-hdr-mark,.prose h3 .prose-hdr-mark{color:var(--accent)}.prose em{color:var(--head);font-style:italic}.prose a{color:var(--accent);border-bottom:1px solid var(--hair2);text-decoration:none}.prose a:hover{opacity:.75}.prose ul,.prose ol{line-height:var(--leading-body);padding-left:1.4em}.prose li+li{margin-top:.4em}.prose blockquote{border-left:3px solid var(--accent);padding:6px 0 6px var(--space-5);color:var(--dim);margin-top:2.2em;font-size:.94rem;font-style:italic;line-height:1.9}.prose hr{border:none;border-top:1px solid var(--hair);margin-top:2em}.code-card{border:1px solid var(--hair);background:var(--code-bg);margin-top:2em}.code-card-bar{padding:var(--space-3) 20px;border-bottom:1px solid var(--hair);justify-content:space-between;align-items:center;display:flex}.code-card-name{color:var(--mut);font-size:.6875rem}.code-card-copy{font-size:.6875rem;font-family:var(--mono);color:var(--accent);cursor:pointer;background:0 0;border:none;padding:0}.code-card-copy:hover{opacity:.75}.code-card pre.astro-code{padding:var(--space-5) var(--space-5) 26px;font-size:.78rem;line-height:var(--leading-body);margin:0;overflow-x:auto}.prose :not(pre)>code{font-family:var(--mono);background:var(--card);color:var(--head);border:1px solid var(--hair);padding:2px 6px;font-size:.86em}.post-footer-row{justify-content:space-between;align-items:center;gap:var(--space-4);margin-top:var(--space-8);border-top:1px solid var(--hair);flex-wrap:wrap;padding-top:28px;display:flex}.post-footer-tags{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.post-footer-tags-label{color:var(--mut);white-space:nowrap;font-size:.72rem}.post-share{font-family:var(--mono);color:var(--accent);white-space:nowrap;cursor:pointer;background:0 0;border:none;padding:0;font-size:.75rem;text-decoration:none}.post-share:hover{opacity:.75}.post-nav-grid{gap:var(--space-5);grid-template-columns:1fr 1fr;margin-top:40px;display:grid}.post-nav-card,.post-nav-empty{padding:var(--space-5) 28px}.post-nav-card{border:1px solid var(--hair);background:var(--card);text-decoration:none;display:block}.post-nav-empty{border:1px dashed var(--hair2);text-align:right}.post-nav-label{color:var(--mut);font-size:.6875rem}.post-nav-title{color:var(--head);margin-top:10px;font-size:.844rem;font-weight:500;line-height:1.55}.post-nav-empty .post-nav-title{color:var(--mut);font-style:italic;font-weight:400}@media (width<=760px){.post-header-wrap{padding:56px 22px 0}.post-body-wrap{padding:var(--space-6) 22px 56px}.post-nav-grid{grid-template-columns:1fr}.post-nav-empty{text-align:left}}.prose :not(pre)>code{overflow-wrap:anywhere}.prose table{max-width:100%;display:block;overflow-x:auto}.post-contents{padding:var(--space-5);border:1px solid var(--hair);background:var(--card);margin-bottom:40px}.post-contents ol{gap:10px;margin-top:18px;padding-left:1.5em;font-size:.9375rem;display:grid}.post-contents li::marker{color:var(--mut)}.post-contents a{color:var(--body);text-underline-offset:var(--space-1)}.post-contents a:hover{color:var(--accent)}.code-card-copy{min-height:var(--space-6);padding:var(--space-1) var(--space-2)}.blog-hero{padding-bottom:28px}.blog-hero .hero-eyebrow{margin-bottom:28px}.writing-archive{padding-top:var(--space-5);padding-bottom:100px}.archive-heading{margin-bottom:var(--space-5);justify-content:space-between;align-items:center;gap:20px;display:flex}.archive-heading h2{font-weight:400}.post-hero-title{letter-spacing:-.055em;font-size:clamp(2rem,4.5vw,3.15rem);font-weight:500}.post-tags{margin-top:30px}.tag-fill{color:var(--accent);border:1px solid var(--hair2);background:0 0}.post-contents{padding:var(--space-5) 0;background:0 0;border-inline:0}.post-contents .sec-hdr{letter-spacing:.06em}.post-contents ol{font-size:.82rem}.prose h2{letter-spacing:-.035em;font-size:1.4rem}.prose table{border-collapse:collapse;font-size:.82rem}.prose th,.prose td{padding:var(--space-3) var(--space-4);text-align:left;border:1px solid var(--hair)}.prose th{color:var(--head);background:var(--card)}.post-nav-card{background:0 0}.post-nav-card:hover{border-color:var(--hair2)}.post-meta-row{white-space:normal;gap:var(--space-3) 20px}@media (width<=700px){.writing-archive{padding-bottom:var(--space-8)}.post-header-wrap{padding-top:44px}.post-body-wrap{padding-top:30px}.post-hero-title{font-size:2rem}.code-card pre.astro-code{padding:18px}}.architecture-flow{margin-block:var(--space-6);border:1px solid var(--hair2);background:var(--card);padding:clamp(18px,4vw,30px)}.architecture-flow figcaption{color:var(--head);margin-bottom:var(--space-5);font-size:.9rem}.architecture-flow ol{counter-reset:architecture;padding:0;list-style:none}.architecture-flow li{counter-increment:architecture;padding:0 0 var(--space-5) 38px;border-left:1px solid var(--hair2);margin:0;margin-left:var(--space-3);position:relative}.architecture-flow li:last-child{border-left-color:#0000;padding-bottom:0}.architecture-flow li:before{content:counter(architecture);background:var(--card);border:1px solid var(--hair2);width:25px;height:25px;color:var(--accent);text-align:center;font-size:.7rem;line-height:23px;position:absolute;top:0;left:-13px}.architecture-flow strong{color:var(--head);font-size:.9rem;font-weight:500;display:block}.architecture-flow li span{color:var(--dim);margin-top:6px;font-size:.82rem;display:block}.architecture-flow>p{border-top:1px solid var(--hair);margin-top:var(--space-5);color:var(--dim);padding-top:18px;font-size:.78rem}.prose{font-family:var(--sans);font-size:var(--text-body);line-height:1.85}.prose h2,.prose h3{font-family:var(--sans);letter-spacing:-.025em;font-weight:600}.prose h2{font-size:1.65rem}.prose h3{font-size:1.3rem}.prose .prose-hdr-mark{display:none}.prose p{line-height:1.85}.prose table{font-size:1rem}.prose pre,.prose code,.prose .architecture-flow{font-family:var(--mono)}
