:root{--fg:#1f2328;--muted:#59636e;--accent:#0969da;--border:#d1d9e0;--bg:#ffffff}@media (prefers-color-scheme:dark){:root{--fg:#f0f6fc;--muted:#9198a1;--accent:#4493f8;--border:#3d444d;--bg:#0d1117}}*{box-sizing:border-box}html{scroll-behavior:smooth}body,html{margin:0;padding:0}body{background:var(--bg);color:var(--fg);font-family:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;font-size:14px;line-height:1.7}a{color:var(--accent);text-decoration:auto}a:hover{opacity:.75}.container{max-width:860px;margin:0 auto;padding:48px 24px 32px}hr.dashed{border:none;border-top:1px dashed var(--border);margin:16px 0}.site-header{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:8px 16px}.site-title{font-weight:700;color:var(--fg);text-decoration:none}.site-nav a{margin-left:16px}.site-nav a:first-child{margin-left:0}.main{min-height:40vh}.home{display:flex;gap:48px;align-items:flex-start}.post-list-wrap{flex:2;min-width:0}.year-group{position:relative;margin-top:40px;transition:opacity .3s}.year-group:first-child{margin-top:0}.year-watermark{position:absolute;top:-.15em;right:-.03em;z-index:2;font-size:2.8rem;font-weight:700;line-height:1;color:var(--muted);opacity:.1;user-select:none;white-space:nowrap;transition:color .15s,opacity .15s}.year-group:hover .year-watermark{opacity:.18}a.year-watermark{cursor:pointer;text-decoration:none}a.year-watermark:focus-visible,a.year-watermark:hover{color:var(--accent);opacity:.4}a.year-watermark:focus-visible{outline:1px dashed var(--accent);outline-offset:4px}.year-watermark.is-current{cursor:default}.post-list{position:relative;z-index:1;list-style:none;margin:0;padding:0}.post-list li{display:flex;align-items:baseline;gap:16px;padding:3px 0}.post-date{flex:0 0 auto;width:3.5em;color:var(--muted)}.post-title{color:var(--accent);font-size:1.2em}.bio{flex:1;min-width:220px;color:var(--muted)}.bio p{margin:0 0 1em}.avatar{display:block;width:100%;max-width:260px;height:auto;aspect-ratio:1/1;object-fit:cover;margin-bottom:16px;border:1px solid var(--border);background-color:var(--border)}.pagination{display:flex;justify-content:space-between;margin-top:24px;color:var(--muted)}.page-title{color:var(--fg);font-size:1.4em;margin:0 0 4px}.post-meta{color:var(--muted);margin-bottom:24px}.post-back{margin-top:32px}.post-back a{text-decoration:underline}.post-back a+a{margin-left:16px}.markdown-body{font-size:15px}.markdown-body pre code.hljs{padding:0;overflow:visible;background:0 0}.site-footer{color:var(--muted);font-size:.9em}.post-license{margin-top:24px;color:var(--muted);font-size:.9em}.comments{margin-top:32px;padding-top:24px;border-top:1px dashed var(--border)}.post-license a{color:var(--muted);text-decoration:none;border-bottom:1px dashed var(--border)}.post-license a:hover{color:var(--accent);border-bottom-color:var(--accent)}.site-footer a{color:var(--muted);text-decoration:none;border-bottom:1px dashed var(--border)}.site-footer a:hover{color:var(--accent);border-bottom-color:var(--accent)}.site-footer-row{display:flex;justify-content:space-between;align-items:baseline;gap:16px}.links-toggle{display:inline-block;position:relative;margin-left:16px;vertical-align:baseline}.links-toggle summary{cursor:pointer;color:var(--muted)}.links-toggle summary::-webkit-details-marker,.links-toggle summary::marker{content:none;display:none}.links-toggle summary::before{content:'+ '}.links-toggle[open] summary::before{content:'– '}.links-toggle summary:hover{color:var(--accent)}.links-list{position:absolute;top:100%;right:0;z-index:10;margin-top:8px;display:flex;flex-direction:column;align-items:flex-start;gap:6px;min-width:160px;padding:12px 16px;background:var(--bg);border:1px solid var(--border);border-radius:4px;box-shadow:0 4px 16px rgba(0,0,0,.1);white-space:nowrap}.links-hint{color:var(--muted);padding-bottom:6px;margin-bottom:4px;border-bottom:1px dashed var(--border)}@media (max-width:1299px){.page-toc{display:none}}.toc-list{display:flex;flex-direction:column;gap:6px}.page-toc a{color:var(--muted);text-decoration:none;line-height:1.5;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .15s}.page-toc a:hover{opacity:1;color:var(--accent)}.page-toc a.active{color:var(--accent)}@media (max-width:640px){.home{flex-direction:column-reverse;gap:24px}.avatar{width:72px;height:72px;object-fit:cover;margin-bottom:12px}}@media (min-width:1300px){.page-toc{display:block;position:fixed;top:80px;left:24px;z-index:20;width:200px;max-height:calc(100vh - 100px);overflow-y:auto;padding:0 16px 0 0;border-right:1px dashed var(--border);font-size:.8em}}