*{box-sizing:border-box;margin:0;padding:0}:root{--font-serif:"Source Serif 4","Noto Serif SC",ui-serif,Georgia,"Songti SC",serif;--font-sans:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",system-ui,sans-serif;--font-mono:ui-monospace,"SFMono-Regular","JetBrains Mono",Menlo,Consolas,monospace;--bg:#fff;--bg-soft:#f7f7f5;--text:#1a1a1a;--text-soft:#555;--text-muted:#888;--rule:#e6e6e3;--link:#1a1a1a;--accent:#c44536}@media (prefers-color-scheme:dark){:root{--bg:#131313;--bg-soft:#1c1c1c;--text:#e8e6e1;--text-soft:#a8a59e;--text-muted:#6b6864;--rule:#2a2a28;--link:#e8e6e1;--accent:#e07a6a}}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-serif);color:var(--text);background-color:var(--bg);font-size:17px;line-height:1.7}.paper-grain{display:none}.container{max-width:680px;margin:0 auto;padding:0 24px}.site-header{flex-direction:column;gap:16px;padding:56px 0 24px;display:flex}.site-title{font-weight:400}.site-title a{color:var(--text);text-decoration:none}.site-title a:hover{color:var(--accent)}.site-title-mark{font-family:var(--font-serif);font-size:20px;font-weight:500}.site-title-sub{display:none}.site-nav{font-family:var(--font-sans);flex-wrap:wrap;align-items:center;gap:20px;display:flex}.site-nav a{color:var(--text-soft);font-size:14px;text-decoration:none}.site-nav a:hover{color:var(--text)}.site-nav a.lang-switch{color:var(--text-muted);margin-left:auto}.site-content{min-height:calc(100vh - 280px);padding:40px 0 64px}.site-footer{border-top:1px solid var(--rule);font-family:var(--font-sans);color:var(--text-muted);flex-wrap:wrap;justify-content:space-between;gap:8px;padding:28px 0 36px;font-size:13px;display:flex}.site-footer .seal{display:none}.site-footer p{margin:0}.site-footer a{color:var(--text-soft);text-decoration:none}.site-footer a:hover{color:var(--text)}h1,h2,h3,h4,h5,h6{font-family:var(--font-serif);color:var(--text);font-weight:600;line-height:1.3}h1{margin-bottom:20px;font-size:28px}h2{margin:40px 0 14px;font-size:22px}h3{margin:28px 0 10px;font-size:18px}h4{margin:20px 0 8px;font-size:16px}p{margin-bottom:18px}a{color:var(--link);text-decoration:underline;-webkit-text-decoration-color:var(--rule);text-decoration-color:var(--rule);text-underline-offset:3px;text-decoration-thickness:1px;transition:text-decoration-color .15s}a:hover{-webkit-text-decoration-color:var(--text);text-decoration-color:var(--text)}ul,ol{margin-bottom:18px;padding-left:22px}li{margin-bottom:4px}.intro{margin-bottom:48px}.intro p{color:var(--text-soft);margin:0;font-size:17px}.projects,.recent-posts{margin-bottom:48px}.projects h2,.recent-posts h2{font-family:var(--font-sans);color:var(--text-muted);letter-spacing:0;text-transform:none;margin:0 0 16px;font-size:13px;font-weight:500}.projects-intro{color:var(--text-soft);max-width:56ch;margin:-8px 0 24px;font-size:16px}.projects ul{margin:0;padding:0;list-style:none}.projects li{margin:0}.projects a{color:var(--text);border-bottom:1px solid var(--rule);justify-content:space-between;align-items:baseline;gap:20px;padding:10px 0;text-decoration:none;display:flex}.projects li:last-child a{border-bottom:none}.projects a:hover .project-title{color:var(--accent)}.project-title{font-family:var(--font-serif);color:var(--text);font-size:16px;font-weight:500}.project-desc{font-family:var(--font-sans);color:var(--text-muted);text-align:right;font-size:13px}.recent-posts>a{font-family:var(--font-sans);color:var(--text-soft);text-decoration:underline;-webkit-text-decoration-color:var(--rule);text-decoration-color:var(--rule);margin-top:16px;font-size:13px;display:inline-block}.recent-posts>a:hover{color:var(--text);-webkit-text-decoration-color:var(--text);text-decoration-color:var(--text)}.post-list{margin:0;padding:0;list-style:none}.post-list li{border-bottom:1px solid var(--rule);align-items:baseline;gap:16px;margin:0;padding:10px 0;display:flex}.post-list li:last-child{border-bottom:none}.post-list a{font-family:var(--font-serif);color:var(--text);flex:1;font-size:17px;font-weight:400;text-decoration:none}.post-list li:hover a{color:var(--accent)}.post-date{color:var(--text-muted);font-family:var(--font-sans);white-space:nowrap;flex-shrink:0;font-size:13px}.all-posts>h1,.all-posts>h2,.all-posts>div{margin-bottom:32px}.all-posts h3{font-family:var(--font-sans);color:var(--text-muted);margin:0 0 8px;font-size:13px;font-weight:500}.post{max-width:640px;margin:0 auto}.post-header{margin-bottom:32px}.post-header h1{margin-bottom:8px;font-size:26px}.post-header time,.post-header .post-date{font-family:var(--font-sans);color:var(--text-muted);font-size:13px;display:inline-block}.post-content{color:var(--text);font-size:17px;line-height:1.75}.post-content h1,.post-content h2,.post-content h3,.post-content h4{margin-top:36px;margin-bottom:12px}.post-content a{color:var(--text);text-decoration:underline;-webkit-text-decoration-color:var(--text-muted);text-decoration-color:var(--text-muted);text-underline-offset:3px}.post-content a:hover{-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent);color:var(--accent)}.post-content img{border-radius:2px;max-width:100%;height:auto;margin:24px 0}.post-content pre{background-color:var(--bg-soft);border:1px solid var(--rule);font-family:var(--font-mono);border-radius:4px;margin:20px 0;padding:16px;font-size:13px;line-height:1.6;overflow-x:auto}.post-content code{background-color:var(--bg-soft);font-family:var(--font-mono);border-radius:3px;padding:1px 5px;font-size:.86em}.post-content pre code{background-color:#0000;border:none;padding:0}.post-content blockquote{border-left:2px solid var(--rule);color:var(--text-soft);margin:20px 0;padding-left:16px}.post-content blockquote p:last-child{margin-bottom:0}.post-content hr{border:none;border-top:1px solid var(--rule);margin:32px 0}.post-content ul,.post-content ol{margin-bottom:20px;padding-left:22px}.post-content li{margin-bottom:4px}.draft-badge{font-family:var(--font-sans);vertical-align:middle;color:var(--text-muted);border:1px solid var(--rule);border-radius:2px;margin-left:8px;padding:1px 6px;font-size:11px;font-weight:500;display:inline-block}.page-content{max-width:640px;margin:0 auto;font-size:17px;line-height:1.75}a:focus-visible,button:focus-visible{outline:2px solid var(--text);outline-offset:2px;border-radius:2px}@media (max-width:640px){body{font-size:16px}.container{padding:0 18px}.site-header{padding:36px 0 16px}.site-content{padding:32px 0 48px}.project-desc{display:none}.site-footer{flex-direction:column;align-items:flex-start}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}
