:root{--bg: #fdfdfc;--fg: #1b1b1b;--muted: #757571;--border: #e8e8e4;--accent: #2383e2;--serif: Georgia, "Times New Roman", "Noto Serif SC", "Source Han Serif SC", "Songti SC", serif;--sans: -apple-system, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0 auto;max-width:40rem;padding:2.6rem 1.25rem 3rem;min-height:100dvh;display:flex;flex-direction:column;background:var(--bg);color:var(--fg);font-family:var(--sans);font-size:16px;line-height:1.85}::selection{background:#2383e229}a{color:var(--fg);text-decoration:none}a:hover{color:var(--accent)}header{display:flex;justify-content:space-between;align-items:center}header .logo{display:inline-flex;line-height:0}header .logo svg{display:block;border-radius:7px}header nav a{margin-left:1.15rem;font-size:.93rem;color:var(--muted)}header nav a:hover{color:var(--fg)}header nav a.active{color:var(--fg)}main{flex:1}.hero{margin:3.2rem 0 0}.hero h1{font-family:var(--serif);font-weight:600;letter-spacing:.01em;font-size:clamp(1.9rem,4.5vw,2.35rem);line-height:1.35;margin:0}.hero .tagline{margin:.7rem 0 0;font-size:1.04rem;color:var(--muted)}.hero .bio{margin:1.1rem 0 0}h2.section{font-family:var(--serif);font-weight:600;font-size:1.22rem;margin:3.2rem 0 1rem;letter-spacing:.01em}.year-label{font-family:var(--serif);font-size:.95rem;color:var(--muted);margin:1.9rem 0 .4rem}.post-row{display:flex;align-items:baseline;gap:1rem;padding:.5rem 0}.post-row .date{color:var(--muted);font-size:.85rem;white-space:nowrap;font-variant-numeric:tabular-nums;min-width:3.4rem}.post-row a{font-size:1rem}.post-row a:hover{color:var(--accent)}.more-link{display:inline-block;margin-top:.9rem;font-size:.93rem;color:var(--muted)}.more-link:hover{color:var(--accent)}.page-title{font-family:var(--serif);font-weight:600;letter-spacing:.01em;font-size:clamp(1.7rem,4vw,2.1rem);margin:2.6rem 0 .6rem}.page-desc{margin:0 0 1.8rem;color:var(--muted)}.back{display:inline-block;margin-top:2.2rem;font-size:.88rem;color:var(--muted)}.back:hover{color:var(--accent)}.post-title{font-family:var(--serif);font-weight:600;letter-spacing:.01em;font-size:clamp(1.6rem,4vw,2rem);line-height:1.4;margin:2.4rem 0 .5rem}.post-meta{display:flex;flex-wrap:wrap;align-items:baseline;gap:.6rem;font-size:.85rem;color:var(--muted)}.post-meta a{color:var(--muted)}.post-meta a:hover{color:var(--accent)}.post-meta .sep{color:var(--border)}.prose{margin-top:1.6rem}.prose h2{font-family:var(--serif);font-size:1.3rem;margin:2.4rem 0 .9rem;scroll-margin-top:2rem}.prose h3{font-size:1.1rem;margin:1.9rem 0 .7rem}.prose p{margin:.95rem 0}.prose ul,.prose ol{padding-left:1.4rem;margin:.95rem 0}.prose li{margin:.4rem 0}.prose li::marker{color:var(--muted)}.prose a{text-decoration:underline;text-decoration-color:var(--border);text-underline-offset:4px}.prose code{font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:.88em;background:#f4f4f1;border-radius:4px;padding:.12em .4em}.prose pre{background:#f7f7f4;border:1px solid var(--border);border-radius:8px;padding:1rem 1.1rem;overflow-x:auto}.prose pre code{background:none;padding:0;font-size:.85em}.prose blockquote{margin:1.3rem 0;padding:.1rem 0 .1rem 1.1rem;border-left:3px solid var(--border);color:var(--muted)}.prose hr{border:none;border-top:1px solid var(--border);margin:2.2rem 0}.prose img{max-width:100%;border-radius:6px}.prose table{border-collapse:collapse;margin:1.2rem 0;font-size:.92rem}.prose th,.prose td{border:1px solid var(--border);padding:.45rem .75rem}.series-nav{display:flex;justify-content:space-between;gap:1rem;margin-top:3rem;padding-top:1.2rem;border-top:1px solid var(--border);font-size:.92rem}.series-nav a{color:var(--muted)}.series-nav a:hover{color:var(--accent)}.series-nav .mid{color:var(--muted);font-size:.85rem}.comments{margin-top:3.4rem}.product-list{list-style:none;padding:0;margin:0}.product-list li{padding:.65rem 0;border-bottom:1px solid var(--border);display:flex;flex-wrap:wrap;gap:.35rem 1rem;align-items:baseline}.product-list li:last-child{border-bottom:none}.product-list .name{font-family:var(--serif);font-weight:600}.product-list .desc{color:var(--muted);font-size:.92rem;flex:1;min-width:12rem}.product-list .status{font-size:.8rem;color:var(--muted);white-space:nowrap}.muted{color:var(--muted)}code,pre{font-family:ui-monospace,Cascadia Code,Consolas,monospace}footer{margin-top:4rem;padding-top:1.2rem;border-top:1px solid var(--border);display:flex;justify-content:space-between;flex-wrap:wrap;gap:.4rem 1rem;font-size:.8rem;color:var(--muted)}footer a{color:var(--muted)}footer a:hover{color:var(--accent)}@media(max-width:480px){.post-row{flex-direction:row}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}.astro-route-announcer{position:absolute;left:0;top:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;white-space:nowrap;width:1px;height:1px}
