:root{--font: Georgia, "Times New Roman", serif;--font-mono: "SFMono-Regular", Consolas, monospace;--text: #1a1a1a;--muted: #666;--blue: #1a56db;--blue-light: #e8f0fe;--border: #ccc}*,*:before,*:after{box-sizing:border-box}body{margin:0;font-family:var(--font);font-size:1.05rem;line-height:1.7;color:var(--text);background:#fff;-webkit-font-smoothing:antialiased}a{color:var(--blue);text-decoration:none}a:hover{text-decoration:underline}.app{max-width:580px;margin:0 auto;padding:3.5rem 1.5rem 0;text-align:center;min-height:100vh;display:flex;flex-direction:column}.main-content{flex:1}.site-header{margin-bottom:0}.site-header-top{display:flex;align-items:baseline;justify-content:space-between}.site-logo{font-size:2.25rem;font-weight:700;color:var(--text);letter-spacing:-.01em}.site-logo:hover{color:var(--blue);text-decoration:none}.portfolio-btn{font-size:.82rem;color:var(--blue);border:1px solid var(--blue);border-radius:4px;padding:.2rem .65rem;text-decoration:none}.portfolio-btn:hover{background:var(--blue-light);text-decoration:none}.site-divider{border:none;border-top:1px solid var(--border);margin:1.25rem 0 0}.home-intro{margin:1.5rem 0 2.5rem;font-size:.95rem;color:var(--muted);line-height:1.75}.post-list{list-style:none;margin:0;padding:0}.post-list-item{padding:.75rem 0;border-bottom:1px solid #eee}.post-list-item:first-child{border-top:1px solid #eee}.post-item-title{display:block;font-size:1.05rem;color:var(--blue);margin-bottom:.2rem}.post-item-meta{font-size:.82rem;color:var(--muted);display:flex;justify-content:center;flex-wrap:wrap;gap:.35rem .6rem}.tag-badge{color:var(--blue);font-size:.78rem}.tag-badge:before{content:"#"}.subscribe-section{margin-top:3rem;font-size:.9rem}.subscribe-section h2{font-size:1rem;font-weight:700;margin:0 0 .2rem}.subscribe-section p{color:var(--muted);font-size:.88rem;margin:0 0 .85rem}.subscribe-form{display:flex;gap:.5rem;justify-content:center;flex-wrap:wrap}.subscribe-input{flex:1;min-width:180px;max-width:280px;padding:.45rem .75rem;font-size:.9rem;font-family:var(--font);border:1px solid var(--border);border-radius:4px;outline:none;color:var(--text)}.subscribe-input:focus{border-color:var(--blue);outline:2px solid var(--blue-light)}.subscribe-btn{padding:.45rem 1rem;font-size:.88rem;font-family:var(--font);color:#fff;background:var(--blue);border:none;border-radius:4px;cursor:pointer}.subscribe-btn:hover{opacity:.85}.subscribe-btn:disabled{opacity:.45;cursor:not-allowed}.subscribe-msg{margin-top:.4rem;font-size:.84rem}.subscribe-msg.ok{color:#1a7a3f}.subscribe-msg.err{color:#c00}.post-back{display:inline-block;font-size:.85rem;color:var(--muted);margin-bottom:2rem}.post-back:hover{color:var(--blue)}.post-header{margin-bottom:1.5rem}.post-title{font-size:clamp(1.5rem,4vw,2rem);font-weight:700;line-height:1.25;margin:0 0 .5rem}.post-meta{font-size:.82rem;color:var(--muted);display:flex;justify-content:center;flex-wrap:wrap;gap:.4rem .75rem}.post-divider{border:none;border-top:1px solid var(--border);margin:1.5rem 0 2rem}.prose{text-align:left;font-size:1rem;line-height:1.8}.prose h1,.prose h2,.prose h3,.prose h4{font-weight:700;line-height:1.3;margin:2em 0 .5em}.prose h1{font-size:1.4rem}.prose h2{font-size:1.2rem}.prose h3{font-size:1rem}.prose p{margin:0 0 1em}.prose a{color:var(--blue);text-decoration:underline;text-underline-offset:2px}.prose ul,.prose ol{padding-left:1.4rem;margin:0 0 1em}.prose li{margin-bottom:.25em}.prose blockquote{border-left:3px solid var(--border);margin:1.5em 0;padding:.25em 1em;color:var(--muted);font-style:italic}.prose blockquote p{margin:0}.prose code{font-family:var(--font-mono);font-size:.86em;background:#f4f4f4;padding:.1em .35em;border-radius:3px}.prose pre{background:#1e1e1e;color:#d4d4d4;padding:1rem 1.25rem;border-radius:6px;overflow-x:auto;margin:1.25em 0;font-size:.87rem;line-height:1.6}.prose pre code{background:none;padding:0;font-size:inherit;color:inherit}.prose img{max-width:100%}.prose hr{border:none;border-top:1px solid var(--border);margin:2em 0}.spinner-wrap{padding:2rem 0;color:var(--muted);font-size:.9rem;font-style:italic}.error-msg{color:var(--muted);font-size:.9rem;padding:2rem 0}.site-footer{margin-top:4rem;padding:1.25rem 0 2.5rem;border-top:1px solid #eee;font-size:.82rem;color:var(--muted)}.site-footer p{margin:0}
