article{max-width:100%}.back-link{display:inline-block;margin-bottom:var(--space-6);color:var(--color-text-muted);font-size:var(--font-size-sm);text-transform:uppercase;font-weight:600;border-bottom:none}.back-link:hover{color:var(--color-primary);border-bottom:none}.project-link{margin-top:var(--space-6)}.cta-link{font-family:var(--font-sans);font-weight:700;font-size:var(--font-size-base);color:var(--color-primary);border-bottom:2px solid rgba(45,106,79,.25);transition:var(--transition-fast);text-decoration:none;display:inline-block}.cta-link:hover{color:var(--color-primary-hover);border-bottom-color:var(--color-primary-hover);text-decoration:none}header.post-header{margin-bottom:var(--space-8);padding-bottom:var(--space-4);border-bottom:var(--border-width) solid var(--color-border)}header.post-header h1{font-family:var(--font-serif);font-size:var(--font-size-xxl);line-height:1.15;margin-bottom:var(--space-2)}.post-meta-details{color:var(--color-text-muted);font-size:var(--font-size-sm);font-family:var(--font-mono)}.hero-image{width:100%;height:auto;border:var(--border-width) solid var(--color-border);margin-bottom:var(--space-12);border-radius:var(--border-radius)}.content{font-size:var(--font-size-base);line-height:1.7}.content h2{font-family:var(--font-serif);font-size:var(--font-size-lg);margin-top:var(--space-12);margin-bottom:var(--space-4);font-weight:400;border-left:none;padding-left:0}.content h3{font-family:var(--font-serif);font-size:var(--font-size-md);margin-top:var(--space-8);margin-bottom:var(--space-3);font-weight:400}.content p{margin-bottom:var(--space-6);color:var(--color-text)}.content a{color:var(--color-primary);text-decoration:none;font-weight:600;border-bottom:1.5px solid rgba(45,106,79,.3);transition:var(--transition-fast)}.content a:hover{color:var(--color-primary-hover);border-bottom-color:var(--color-primary-hover)}.content a[href^=http]:not([href*="kevinyen.net"]):not([class*=footnote]):not([href^="#"]):after{content:" ↗";font-size:.8em;display:inline-block;margin-left:.2em}.content ul{list-style-type:none;margin-left:0;padding-left:0;margin-bottom:var(--space-6)}.content ul li{position:relative;padding-left:var(--space-6);margin-bottom:var(--space-2)}.content ul li:before{content:"■";color:var(--color-primary);font-size:.6rem;position:absolute;left:0;top:.2rem}.content ol{margin-left:0;padding-left:var(--space-6);margin-bottom:var(--space-6)}.content ol li{margin-bottom:var(--space-2)}.content blockquote{border-left:3px solid var(--color-primary);padding-left:var(--space-6);font-style:italic;color:var(--color-text-muted);margin:var(--space-8) 0}.content code{font-family:var(--font-mono);background:var(--color-code-bg);color:var(--color-primary);padding:.2em .4em;font-size:.9em;border-radius:3px}.content pre{background-color:var(--color-code-bg)!important;padding:var(--space-4);border:var(--border-width) solid var(--color-border);border-radius:var(--border-radius);overflow-x:auto;margin:var(--space-6) 0}.content pre code{background:none;padding:0;border-radius:0;font-size:.85em}.content hr{border:none;text-align:center;margin:var(--space-12) 0}.content hr:after{content:"· · ·";letter-spacing:.5em;font-size:var(--font-size-md);color:var(--color-text-muted)}.content table{width:100%;border-collapse:collapse;margin:var(--space-8) 0;font-size:var(--font-size-base);max-width:950px}.content th,.content td{padding:var(--space-3) var(--space-4);text-align:left}.content th{border-top:2px solid var(--color-text);border-bottom:1px solid var(--color-text);font-weight:600;background:transparent}.content td{border-bottom:1px solid var(--color-border)}.content tr:last-child td{border-bottom:2px solid var(--color-text)}.content .footnote-ref{font-size:.75rem;vertical-align:super;font-weight:700;color:var(--color-primary);text-decoration:none;border-bottom:none}.content .footnotes{border-top:var(--border-width) solid var(--color-border);margin-top:var(--space-12);padding-top:var(--space-4);font-size:var(--font-size-sm);color:var(--color-text-muted)}.content img{max-width:950px;width:100%;height:auto;border:var(--border-width) solid var(--color-border);border-radius:var(--border-radius);margin:var(--space-8) 0}.content .mermaid{display:flex;justify-content:center;margin:var(--space-8) 0;padding:var(--space-4);border:1px dashed var(--color-border);border-radius:var(--border-radius);max-width:950px;background:transparent}.content .mermaid svg{max-width:100%;height:auto}
